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 if (!Activate(S, PC))
11 return false;
12#if USE_TAILCALLS
13 MUSTTAIL return InterpNext(S, PC);
14#else
15 return true;
16#endif
17}
18#endif
19#ifdef GET_DISASM
20case OP_Activate:
21 Text.Op = PrintName("Activate");
22 break;
23#endif
24#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25bool emitActivate(SourceInfo);
26#endif
27#ifdef GET_LINK_IMPL
28bool ByteCodeEmitter::emitActivate(SourceInfo L) {
29 return emitOp<>(OP_Activate, L);
30}
31#endif
32#ifdef GET_EVAL_IMPL
33bool EvalEmitter::emitActivate(SourceInfo L) {
34 if (!isActive()) return true;
35 CurrentSource = L;
36 return Activate(S, OpPC);
37}
38#endif
39#ifdef GET_OPCODE_NAMES
40OP_ActivateThisField,
41#endif
42#ifdef GET_INTERPFN_LIST
43&Interp_ActivateThisField,
44#endif
45#ifdef GET_INTERPFN_DISPATCHERS
46PRESERVE_NONE
47static bool Interp_ActivateThisField(InterpState &S, CodePtr &PC) {
48 {
49 CodePtr OpPC = PC;
50 const auto V0 = ReadArg<uint32_t>(S, PC);
51 if (!ActivateThisField(S, OpPC, V0))
52 return false;
53 }
54#if USE_TAILCALLS
55 MUSTTAIL return InterpNext(S, PC);
56#else
57 return true;
58#endif
59}
60#endif
61#ifdef GET_DISASM
62case OP_ActivateThisField:
63 Text.Op = PrintName("ActivateThisField");
64 Text.Args.push_back(printArg<uint32_t>(P, PC));
65 break;
66#endif
67#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
68bool emitActivateThisField( uint32_t , SourceInfo);
69#endif
70#ifdef GET_LINK_IMPL
71bool ByteCodeEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
72 return emitOp<uint32_t>(OP_ActivateThisField, A0, L);
73}
74#endif
75#ifdef GET_EVAL_IMPL
76bool EvalEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
77 if (!isActive()) return true;
78 CurrentSource = L;
79 return ActivateThisField(S, OpPC, A0);
80}
81#endif
82#ifdef GET_OPCODE_NAMES
83OP_AddSint8,
84OP_AddUint8,
85OP_AddSint16,
86OP_AddUint16,
87OP_AddSint32,
88OP_AddUint32,
89OP_AddSint64,
90OP_AddUint64,
91OP_AddIntAP,
92OP_AddIntAPS,
93OP_AddBool,
94OP_AddFixedPoint,
95#endif
96#ifdef GET_INTERPFN_LIST
97&Interp_AddSint8,
98&Interp_AddUint8,
99&Interp_AddSint16,
100&Interp_AddUint16,
101&Interp_AddSint32,
102&Interp_AddUint32,
103&Interp_AddSint64,
104&Interp_AddUint64,
105&Interp_AddIntAP,
106&Interp_AddIntAPS,
107&Interp_AddBool,
108&Interp_AddFixedPoint,
109#endif
110#ifdef GET_INTERPFN_DISPATCHERS
111PRESERVE_NONE
112static bool Interp_AddSint8(InterpState &S, CodePtr &PC) {
113 if (!Add<PT_Sint8>(S, PC))
114 return false;
115#if USE_TAILCALLS
116 MUSTTAIL return InterpNext(S, PC);
117#else
118 return true;
119#endif
120}
121PRESERVE_NONE
122static bool Interp_AddUint8(InterpState &S, CodePtr &PC) {
123 if (!Add<PT_Uint8>(S, PC))
124 return false;
125#if USE_TAILCALLS
126 MUSTTAIL return InterpNext(S, PC);
127#else
128 return true;
129#endif
130}
131PRESERVE_NONE
132static bool Interp_AddSint16(InterpState &S, CodePtr &PC) {
133 if (!Add<PT_Sint16>(S, PC))
134 return false;
135#if USE_TAILCALLS
136 MUSTTAIL return InterpNext(S, PC);
137#else
138 return true;
139#endif
140}
141PRESERVE_NONE
142static bool Interp_AddUint16(InterpState &S, CodePtr &PC) {
143 if (!Add<PT_Uint16>(S, PC))
144 return false;
145#if USE_TAILCALLS
146 MUSTTAIL return InterpNext(S, PC);
147#else
148 return true;
149#endif
150}
151PRESERVE_NONE
152static bool Interp_AddSint32(InterpState &S, CodePtr &PC) {
153 if (!Add<PT_Sint32>(S, PC))
154 return false;
155#if USE_TAILCALLS
156 MUSTTAIL return InterpNext(S, PC);
157#else
158 return true;
159#endif
160}
161PRESERVE_NONE
162static bool Interp_AddUint32(InterpState &S, CodePtr &PC) {
163 if (!Add<PT_Uint32>(S, PC))
164 return false;
165#if USE_TAILCALLS
166 MUSTTAIL return InterpNext(S, PC);
167#else
168 return true;
169#endif
170}
171PRESERVE_NONE
172static bool Interp_AddSint64(InterpState &S, CodePtr &PC) {
173 if (!Add<PT_Sint64>(S, PC))
174 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_AddUint64(InterpState &S, CodePtr &PC) {
183 if (!Add<PT_Uint64>(S, PC))
184 return false;
185#if USE_TAILCALLS
186 MUSTTAIL return InterpNext(S, PC);
187#else
188 return true;
189#endif
190}
191PRESERVE_NONE
192static bool Interp_AddIntAP(InterpState &S, CodePtr &PC) {
193 if (!Add<PT_IntAP>(S, PC))
194 return false;
195#if USE_TAILCALLS
196 MUSTTAIL return InterpNext(S, PC);
197#else
198 return true;
199#endif
200}
201PRESERVE_NONE
202static bool Interp_AddIntAPS(InterpState &S, CodePtr &PC) {
203 if (!Add<PT_IntAPS>(S, PC))
204 return false;
205#if USE_TAILCALLS
206 MUSTTAIL return InterpNext(S, PC);
207#else
208 return true;
209#endif
210}
211PRESERVE_NONE
212static bool Interp_AddBool(InterpState &S, CodePtr &PC) {
213 if (!Add<PT_Bool>(S, PC))
214 return false;
215#if USE_TAILCALLS
216 MUSTTAIL return InterpNext(S, PC);
217#else
218 return true;
219#endif
220}
221PRESERVE_NONE
222static bool Interp_AddFixedPoint(InterpState &S, CodePtr &PC) {
223 if (!Add<PT_FixedPoint>(S, PC))
224 return false;
225#if USE_TAILCALLS
226 MUSTTAIL return InterpNext(S, PC);
227#else
228 return true;
229#endif
230}
231#endif
232#ifdef GET_DISASM
233case OP_AddSint8:
234 Text.Op = PrintName("AddSint8");
235 break;
236case OP_AddUint8:
237 Text.Op = PrintName("AddUint8");
238 break;
239case OP_AddSint16:
240 Text.Op = PrintName("AddSint16");
241 break;
242case OP_AddUint16:
243 Text.Op = PrintName("AddUint16");
244 break;
245case OP_AddSint32:
246 Text.Op = PrintName("AddSint32");
247 break;
248case OP_AddUint32:
249 Text.Op = PrintName("AddUint32");
250 break;
251case OP_AddSint64:
252 Text.Op = PrintName("AddSint64");
253 break;
254case OP_AddUint64:
255 Text.Op = PrintName("AddUint64");
256 break;
257case OP_AddIntAP:
258 Text.Op = PrintName("AddIntAP");
259 break;
260case OP_AddIntAPS:
261 Text.Op = PrintName("AddIntAPS");
262 break;
263case OP_AddBool:
264 Text.Op = PrintName("AddBool");
265 break;
266case OP_AddFixedPoint:
267 Text.Op = PrintName("AddFixedPoint");
268 break;
269#endif
270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
271bool emitAddSint8(SourceInfo);
272bool emitAddUint8(SourceInfo);
273bool emitAddSint16(SourceInfo);
274bool emitAddUint16(SourceInfo);
275bool emitAddSint32(SourceInfo);
276bool emitAddUint32(SourceInfo);
277bool emitAddSint64(SourceInfo);
278bool emitAddUint64(SourceInfo);
279bool emitAddIntAP(SourceInfo);
280bool emitAddIntAPS(SourceInfo);
281bool emitAddBool(SourceInfo);
282bool emitAddFixedPoint(SourceInfo);
283#endif
284#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
285[[nodiscard]] bool emitAdd(PrimType, SourceInfo I);
286#endif
287#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
288bool
289#if defined(GET_EVAL_IMPL)
290EvalEmitter
291#else
292ByteCodeEmitter
293#endif
294::emitAdd(PrimType T0, SourceInfo I) {
295 switch (T0) {
296 case PT_Sint8:
297 return emitAddSint8(I);
298 case PT_Uint8:
299 return emitAddUint8(I);
300 case PT_Sint16:
301 return emitAddSint16(I);
302 case PT_Uint16:
303 return emitAddUint16(I);
304 case PT_Sint32:
305 return emitAddSint32(I);
306 case PT_Uint32:
307 return emitAddUint32(I);
308 case PT_Sint64:
309 return emitAddSint64(I);
310 case PT_Uint64:
311 return emitAddUint64(I);
312 case PT_IntAP:
313 return emitAddIntAP(I);
314 case PT_IntAPS:
315 return emitAddIntAPS(I);
316 case PT_Bool:
317 return emitAddBool(I);
318 case PT_FixedPoint:
319 return emitAddFixedPoint(I);
320 default: llvm_unreachable("invalid type: emitAdd");
321 }
322 llvm_unreachable("invalid enum value");
323}
324#endif
325#ifdef GET_LINK_IMPL
326bool ByteCodeEmitter::emitAddSint8(SourceInfo L) {
327 return emitOp<>(OP_AddSint8, L);
328}
329bool ByteCodeEmitter::emitAddUint8(SourceInfo L) {
330 return emitOp<>(OP_AddUint8, L);
331}
332bool ByteCodeEmitter::emitAddSint16(SourceInfo L) {
333 return emitOp<>(OP_AddSint16, L);
334}
335bool ByteCodeEmitter::emitAddUint16(SourceInfo L) {
336 return emitOp<>(OP_AddUint16, L);
337}
338bool ByteCodeEmitter::emitAddSint32(SourceInfo L) {
339 return emitOp<>(OP_AddSint32, L);
340}
341bool ByteCodeEmitter::emitAddUint32(SourceInfo L) {
342 return emitOp<>(OP_AddUint32, L);
343}
344bool ByteCodeEmitter::emitAddSint64(SourceInfo L) {
345 return emitOp<>(OP_AddSint64, L);
346}
347bool ByteCodeEmitter::emitAddUint64(SourceInfo L) {
348 return emitOp<>(OP_AddUint64, L);
349}
350bool ByteCodeEmitter::emitAddIntAP(SourceInfo L) {
351 return emitOp<>(OP_AddIntAP, L);
352}
353bool ByteCodeEmitter::emitAddIntAPS(SourceInfo L) {
354 return emitOp<>(OP_AddIntAPS, L);
355}
356bool ByteCodeEmitter::emitAddBool(SourceInfo L) {
357 return emitOp<>(OP_AddBool, L);
358}
359bool ByteCodeEmitter::emitAddFixedPoint(SourceInfo L) {
360 return emitOp<>(OP_AddFixedPoint, L);
361}
362#endif
363#ifdef GET_EVAL_IMPL
364bool EvalEmitter::emitAddSint8(SourceInfo L) {
365 if (!isActive()) return true;
366 CurrentSource = L;
367 return Add<PT_Sint8>(S, OpPC);
368}
369bool EvalEmitter::emitAddUint8(SourceInfo L) {
370 if (!isActive()) return true;
371 CurrentSource = L;
372 return Add<PT_Uint8>(S, OpPC);
373}
374bool EvalEmitter::emitAddSint16(SourceInfo L) {
375 if (!isActive()) return true;
376 CurrentSource = L;
377 return Add<PT_Sint16>(S, OpPC);
378}
379bool EvalEmitter::emitAddUint16(SourceInfo L) {
380 if (!isActive()) return true;
381 CurrentSource = L;
382 return Add<PT_Uint16>(S, OpPC);
383}
384bool EvalEmitter::emitAddSint32(SourceInfo L) {
385 if (!isActive()) return true;
386 CurrentSource = L;
387 return Add<PT_Sint32>(S, OpPC);
388}
389bool EvalEmitter::emitAddUint32(SourceInfo L) {
390 if (!isActive()) return true;
391 CurrentSource = L;
392 return Add<PT_Uint32>(S, OpPC);
393}
394bool EvalEmitter::emitAddSint64(SourceInfo L) {
395 if (!isActive()) return true;
396 CurrentSource = L;
397 return Add<PT_Sint64>(S, OpPC);
398}
399bool EvalEmitter::emitAddUint64(SourceInfo L) {
400 if (!isActive()) return true;
401 CurrentSource = L;
402 return Add<PT_Uint64>(S, OpPC);
403}
404bool EvalEmitter::emitAddIntAP(SourceInfo L) {
405 if (!isActive()) return true;
406 CurrentSource = L;
407 return Add<PT_IntAP>(S, OpPC);
408}
409bool EvalEmitter::emitAddIntAPS(SourceInfo L) {
410 if (!isActive()) return true;
411 CurrentSource = L;
412 return Add<PT_IntAPS>(S, OpPC);
413}
414bool EvalEmitter::emitAddBool(SourceInfo L) {
415 if (!isActive()) return true;
416 CurrentSource = L;
417 return Add<PT_Bool>(S, OpPC);
418}
419bool EvalEmitter::emitAddFixedPoint(SourceInfo L) {
420 if (!isActive()) return true;
421 CurrentSource = L;
422 return Add<PT_FixedPoint>(S, OpPC);
423}
424#endif
425#ifdef GET_OPCODE_NAMES
426OP_AddOffsetSint8,
427OP_AddOffsetUint8,
428OP_AddOffsetSint16,
429OP_AddOffsetUint16,
430OP_AddOffsetSint32,
431OP_AddOffsetUint32,
432OP_AddOffsetSint64,
433OP_AddOffsetUint64,
434OP_AddOffsetIntAP,
435OP_AddOffsetIntAPS,
436OP_AddOffsetBool,
437#endif
438#ifdef GET_INTERPFN_LIST
439&Interp_AddOffsetSint8,
440&Interp_AddOffsetUint8,
441&Interp_AddOffsetSint16,
442&Interp_AddOffsetUint16,
443&Interp_AddOffsetSint32,
444&Interp_AddOffsetUint32,
445&Interp_AddOffsetSint64,
446&Interp_AddOffsetUint64,
447&Interp_AddOffsetIntAP,
448&Interp_AddOffsetIntAPS,
449&Interp_AddOffsetBool,
450#endif
451#ifdef GET_INTERPFN_DISPATCHERS
452PRESERVE_NONE
453static bool Interp_AddOffsetSint8(InterpState &S, CodePtr &PC) {
454 if (!AddOffset<PT_Sint8>(S, PC))
455 return false;
456#if USE_TAILCALLS
457 MUSTTAIL return InterpNext(S, PC);
458#else
459 return true;
460#endif
461}
462PRESERVE_NONE
463static bool Interp_AddOffsetUint8(InterpState &S, CodePtr &PC) {
464 if (!AddOffset<PT_Uint8>(S, PC))
465 return false;
466#if USE_TAILCALLS
467 MUSTTAIL return InterpNext(S, PC);
468#else
469 return true;
470#endif
471}
472PRESERVE_NONE
473static bool Interp_AddOffsetSint16(InterpState &S, CodePtr &PC) {
474 if (!AddOffset<PT_Sint16>(S, PC))
475 return false;
476#if USE_TAILCALLS
477 MUSTTAIL return InterpNext(S, PC);
478#else
479 return true;
480#endif
481}
482PRESERVE_NONE
483static bool Interp_AddOffsetUint16(InterpState &S, CodePtr &PC) {
484 if (!AddOffset<PT_Uint16>(S, PC))
485 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_AddOffsetSint32(InterpState &S, CodePtr &PC) {
494 if (!AddOffset<PT_Sint32>(S, PC))
495 return false;
496#if USE_TAILCALLS
497 MUSTTAIL return InterpNext(S, PC);
498#else
499 return true;
500#endif
501}
502PRESERVE_NONE
503static bool Interp_AddOffsetUint32(InterpState &S, CodePtr &PC) {
504 if (!AddOffset<PT_Uint32>(S, PC))
505 return false;
506#if USE_TAILCALLS
507 MUSTTAIL return InterpNext(S, PC);
508#else
509 return true;
510#endif
511}
512PRESERVE_NONE
513static bool Interp_AddOffsetSint64(InterpState &S, CodePtr &PC) {
514 if (!AddOffset<PT_Sint64>(S, PC))
515 return false;
516#if USE_TAILCALLS
517 MUSTTAIL return InterpNext(S, PC);
518#else
519 return true;
520#endif
521}
522PRESERVE_NONE
523static bool Interp_AddOffsetUint64(InterpState &S, CodePtr &PC) {
524 if (!AddOffset<PT_Uint64>(S, PC))
525 return false;
526#if USE_TAILCALLS
527 MUSTTAIL return InterpNext(S, PC);
528#else
529 return true;
530#endif
531}
532PRESERVE_NONE
533static bool Interp_AddOffsetIntAP(InterpState &S, CodePtr &PC) {
534 if (!AddOffset<PT_IntAP>(S, PC))
535 return false;
536#if USE_TAILCALLS
537 MUSTTAIL return InterpNext(S, PC);
538#else
539 return true;
540#endif
541}
542PRESERVE_NONE
543static bool Interp_AddOffsetIntAPS(InterpState &S, CodePtr &PC) {
544 if (!AddOffset<PT_IntAPS>(S, PC))
545 return false;
546#if USE_TAILCALLS
547 MUSTTAIL return InterpNext(S, PC);
548#else
549 return true;
550#endif
551}
552PRESERVE_NONE
553static bool Interp_AddOffsetBool(InterpState &S, CodePtr &PC) {
554 if (!AddOffset<PT_Bool>(S, PC))
555 return false;
556#if USE_TAILCALLS
557 MUSTTAIL return InterpNext(S, PC);
558#else
559 return true;
560#endif
561}
562#endif
563#ifdef GET_DISASM
564case OP_AddOffsetSint8:
565 Text.Op = PrintName("AddOffsetSint8");
566 break;
567case OP_AddOffsetUint8:
568 Text.Op = PrintName("AddOffsetUint8");
569 break;
570case OP_AddOffsetSint16:
571 Text.Op = PrintName("AddOffsetSint16");
572 break;
573case OP_AddOffsetUint16:
574 Text.Op = PrintName("AddOffsetUint16");
575 break;
576case OP_AddOffsetSint32:
577 Text.Op = PrintName("AddOffsetSint32");
578 break;
579case OP_AddOffsetUint32:
580 Text.Op = PrintName("AddOffsetUint32");
581 break;
582case OP_AddOffsetSint64:
583 Text.Op = PrintName("AddOffsetSint64");
584 break;
585case OP_AddOffsetUint64:
586 Text.Op = PrintName("AddOffsetUint64");
587 break;
588case OP_AddOffsetIntAP:
589 Text.Op = PrintName("AddOffsetIntAP");
590 break;
591case OP_AddOffsetIntAPS:
592 Text.Op = PrintName("AddOffsetIntAPS");
593 break;
594case OP_AddOffsetBool:
595 Text.Op = PrintName("AddOffsetBool");
596 break;
597#endif
598#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
599bool emitAddOffsetSint8(SourceInfo);
600bool emitAddOffsetUint8(SourceInfo);
601bool emitAddOffsetSint16(SourceInfo);
602bool emitAddOffsetUint16(SourceInfo);
603bool emitAddOffsetSint32(SourceInfo);
604bool emitAddOffsetUint32(SourceInfo);
605bool emitAddOffsetSint64(SourceInfo);
606bool emitAddOffsetUint64(SourceInfo);
607bool emitAddOffsetIntAP(SourceInfo);
608bool emitAddOffsetIntAPS(SourceInfo);
609bool emitAddOffsetBool(SourceInfo);
610#endif
611#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
612[[nodiscard]] bool emitAddOffset(PrimType, SourceInfo I);
613#endif
614#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
615bool
616#if defined(GET_EVAL_IMPL)
617EvalEmitter
618#else
619ByteCodeEmitter
620#endif
621::emitAddOffset(PrimType T0, SourceInfo I) {
622 switch (T0) {
623 case PT_Sint8:
624 return emitAddOffsetSint8(I);
625 case PT_Uint8:
626 return emitAddOffsetUint8(I);
627 case PT_Sint16:
628 return emitAddOffsetSint16(I);
629 case PT_Uint16:
630 return emitAddOffsetUint16(I);
631 case PT_Sint32:
632 return emitAddOffsetSint32(I);
633 case PT_Uint32:
634 return emitAddOffsetUint32(I);
635 case PT_Sint64:
636 return emitAddOffsetSint64(I);
637 case PT_Uint64:
638 return emitAddOffsetUint64(I);
639 case PT_IntAP:
640 return emitAddOffsetIntAP(I);
641 case PT_IntAPS:
642 return emitAddOffsetIntAPS(I);
643 case PT_Bool:
644 return emitAddOffsetBool(I);
645 default: llvm_unreachable("invalid type: emitAddOffset");
646 }
647 llvm_unreachable("invalid enum value");
648}
649#endif
650#ifdef GET_LINK_IMPL
651bool ByteCodeEmitter::emitAddOffsetSint8(SourceInfo L) {
652 return emitOp<>(OP_AddOffsetSint8, L);
653}
654bool ByteCodeEmitter::emitAddOffsetUint8(SourceInfo L) {
655 return emitOp<>(OP_AddOffsetUint8, L);
656}
657bool ByteCodeEmitter::emitAddOffsetSint16(SourceInfo L) {
658 return emitOp<>(OP_AddOffsetSint16, L);
659}
660bool ByteCodeEmitter::emitAddOffsetUint16(SourceInfo L) {
661 return emitOp<>(OP_AddOffsetUint16, L);
662}
663bool ByteCodeEmitter::emitAddOffsetSint32(SourceInfo L) {
664 return emitOp<>(OP_AddOffsetSint32, L);
665}
666bool ByteCodeEmitter::emitAddOffsetUint32(SourceInfo L) {
667 return emitOp<>(OP_AddOffsetUint32, L);
668}
669bool ByteCodeEmitter::emitAddOffsetSint64(SourceInfo L) {
670 return emitOp<>(OP_AddOffsetSint64, L);
671}
672bool ByteCodeEmitter::emitAddOffsetUint64(SourceInfo L) {
673 return emitOp<>(OP_AddOffsetUint64, L);
674}
675bool ByteCodeEmitter::emitAddOffsetIntAP(SourceInfo L) {
676 return emitOp<>(OP_AddOffsetIntAP, L);
677}
678bool ByteCodeEmitter::emitAddOffsetIntAPS(SourceInfo L) {
679 return emitOp<>(OP_AddOffsetIntAPS, L);
680}
681bool ByteCodeEmitter::emitAddOffsetBool(SourceInfo L) {
682 return emitOp<>(OP_AddOffsetBool, L);
683}
684#endif
685#ifdef GET_EVAL_IMPL
686bool EvalEmitter::emitAddOffsetSint8(SourceInfo L) {
687 if (!isActive()) return true;
688 CurrentSource = L;
689 return AddOffset<PT_Sint8>(S, OpPC);
690}
691bool EvalEmitter::emitAddOffsetUint8(SourceInfo L) {
692 if (!isActive()) return true;
693 CurrentSource = L;
694 return AddOffset<PT_Uint8>(S, OpPC);
695}
696bool EvalEmitter::emitAddOffsetSint16(SourceInfo L) {
697 if (!isActive()) return true;
698 CurrentSource = L;
699 return AddOffset<PT_Sint16>(S, OpPC);
700}
701bool EvalEmitter::emitAddOffsetUint16(SourceInfo L) {
702 if (!isActive()) return true;
703 CurrentSource = L;
704 return AddOffset<PT_Uint16>(S, OpPC);
705}
706bool EvalEmitter::emitAddOffsetSint32(SourceInfo L) {
707 if (!isActive()) return true;
708 CurrentSource = L;
709 return AddOffset<PT_Sint32>(S, OpPC);
710}
711bool EvalEmitter::emitAddOffsetUint32(SourceInfo L) {
712 if (!isActive()) return true;
713 CurrentSource = L;
714 return AddOffset<PT_Uint32>(S, OpPC);
715}
716bool EvalEmitter::emitAddOffsetSint64(SourceInfo L) {
717 if (!isActive()) return true;
718 CurrentSource = L;
719 return AddOffset<PT_Sint64>(S, OpPC);
720}
721bool EvalEmitter::emitAddOffsetUint64(SourceInfo L) {
722 if (!isActive()) return true;
723 CurrentSource = L;
724 return AddOffset<PT_Uint64>(S, OpPC);
725}
726bool EvalEmitter::emitAddOffsetIntAP(SourceInfo L) {
727 if (!isActive()) return true;
728 CurrentSource = L;
729 return AddOffset<PT_IntAP>(S, OpPC);
730}
731bool EvalEmitter::emitAddOffsetIntAPS(SourceInfo L) {
732 if (!isActive()) return true;
733 CurrentSource = L;
734 return AddOffset<PT_IntAPS>(S, OpPC);
735}
736bool EvalEmitter::emitAddOffsetBool(SourceInfo L) {
737 if (!isActive()) return true;
738 CurrentSource = L;
739 return AddOffset<PT_Bool>(S, OpPC);
740}
741#endif
742#ifdef GET_OPCODE_NAMES
743OP_Addf,
744#endif
745#ifdef GET_INTERPFN_LIST
746&Interp_Addf,
747#endif
748#ifdef GET_INTERPFN_DISPATCHERS
749PRESERVE_NONE
750static bool Interp_Addf(InterpState &S, CodePtr &PC) {
751 {
752 CodePtr OpPC = PC;
753 const auto V0 = ReadArg<uint32_t>(S, PC);
754 if (!Addf(S, OpPC, V0))
755 return false;
756 }
757#if USE_TAILCALLS
758 MUSTTAIL return InterpNext(S, PC);
759#else
760 return true;
761#endif
762}
763#endif
764#ifdef GET_DISASM
765case OP_Addf:
766 Text.Op = PrintName("Addf");
767 Text.Args.push_back(printArg<uint32_t>(P, PC));
768 break;
769#endif
770#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
771bool emitAddf( uint32_t , SourceInfo);
772#endif
773#ifdef GET_LINK_IMPL
774bool ByteCodeEmitter::emitAddf( uint32_t A0, SourceInfo L) {
775 return emitOp<uint32_t>(OP_Addf, A0, L);
776}
777#endif
778#ifdef GET_EVAL_IMPL
779bool EvalEmitter::emitAddf( uint32_t A0, SourceInfo L) {
780 if (!isActive()) return true;
781 CurrentSource = L;
782 return Addf(S, OpPC, A0);
783}
784#endif
785#ifdef GET_OPCODE_NAMES
786OP_Alloc,
787#endif
788#ifdef GET_INTERPFN_LIST
789&Interp_Alloc,
790#endif
791#ifdef GET_INTERPFN_DISPATCHERS
792PRESERVE_NONE
793static bool Interp_Alloc(InterpState &S, CodePtr &PC) {
794 {
795 CodePtr OpPC = PC;
796 const auto V0 = ReadArg<const Descriptor *>(S, PC);
797 if (!Alloc(S, OpPC, V0))
798 return false;
799 }
800#if USE_TAILCALLS
801 MUSTTAIL return InterpNext(S, PC);
802#else
803 return true;
804#endif
805}
806#endif
807#ifdef GET_DISASM
808case OP_Alloc:
809 Text.Op = PrintName("Alloc");
810 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
811 break;
812#endif
813#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
814bool emitAlloc( const Descriptor * , SourceInfo);
815#endif
816#ifdef GET_LINK_IMPL
817bool ByteCodeEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
818 return emitOp<const Descriptor *>(OP_Alloc, A0, L);
819}
820#endif
821#ifdef GET_EVAL_IMPL
822bool EvalEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
823 if (!isActive()) return true;
824 CurrentSource = L;
825 return Alloc(S, OpPC, A0);
826}
827#endif
828#ifdef GET_OPCODE_NAMES
829OP_AllocCNSint8,
830OP_AllocCNUint8,
831OP_AllocCNSint16,
832OP_AllocCNUint16,
833OP_AllocCNSint32,
834OP_AllocCNUint32,
835OP_AllocCNSint64,
836OP_AllocCNUint64,
837OP_AllocCNIntAP,
838OP_AllocCNIntAPS,
839OP_AllocCNBool,
840#endif
841#ifdef GET_INTERPFN_LIST
842&Interp_AllocCNSint8,
843&Interp_AllocCNUint8,
844&Interp_AllocCNSint16,
845&Interp_AllocCNUint16,
846&Interp_AllocCNSint32,
847&Interp_AllocCNUint32,
848&Interp_AllocCNSint64,
849&Interp_AllocCNUint64,
850&Interp_AllocCNIntAP,
851&Interp_AllocCNIntAPS,
852&Interp_AllocCNBool,
853#endif
854#ifdef GET_INTERPFN_DISPATCHERS
855PRESERVE_NONE
856static bool Interp_AllocCNSint8(InterpState &S, CodePtr &PC) {
857 {
858 CodePtr OpPC = PC;
859 const auto V0 = ReadArg<const Descriptor *>(S, PC);
860 const auto V1 = ReadArg<bool>(S, PC);
861 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1))
862 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_AllocCNUint8(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_Uint8>(S, OpPC, V0, V1))
877 return false;
878 }
879#if USE_TAILCALLS
880 MUSTTAIL return InterpNext(S, PC);
881#else
882 return true;
883#endif
884}
885PRESERVE_NONE
886static bool Interp_AllocCNSint16(InterpState &S, CodePtr &PC) {
887 {
888 CodePtr OpPC = PC;
889 const auto V0 = ReadArg<const Descriptor *>(S, PC);
890 const auto V1 = ReadArg<bool>(S, PC);
891 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1))
892 return false;
893 }
894#if USE_TAILCALLS
895 MUSTTAIL return InterpNext(S, PC);
896#else
897 return true;
898#endif
899}
900PRESERVE_NONE
901static bool Interp_AllocCNUint16(InterpState &S, CodePtr &PC) {
902 {
903 CodePtr OpPC = PC;
904 const auto V0 = ReadArg<const Descriptor *>(S, PC);
905 const auto V1 = ReadArg<bool>(S, PC);
906 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1))
907 return false;
908 }
909#if USE_TAILCALLS
910 MUSTTAIL return InterpNext(S, PC);
911#else
912 return true;
913#endif
914}
915PRESERVE_NONE
916static bool Interp_AllocCNSint32(InterpState &S, CodePtr &PC) {
917 {
918 CodePtr OpPC = PC;
919 const auto V0 = ReadArg<const Descriptor *>(S, PC);
920 const auto V1 = ReadArg<bool>(S, PC);
921 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1))
922 return false;
923 }
924#if USE_TAILCALLS
925 MUSTTAIL return InterpNext(S, PC);
926#else
927 return true;
928#endif
929}
930PRESERVE_NONE
931static bool Interp_AllocCNUint32(InterpState &S, CodePtr &PC) {
932 {
933 CodePtr OpPC = PC;
934 const auto V0 = ReadArg<const Descriptor *>(S, PC);
935 const auto V1 = ReadArg<bool>(S, PC);
936 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1))
937 return false;
938 }
939#if USE_TAILCALLS
940 MUSTTAIL return InterpNext(S, PC);
941#else
942 return true;
943#endif
944}
945PRESERVE_NONE
946static bool Interp_AllocCNSint64(InterpState &S, CodePtr &PC) {
947 {
948 CodePtr OpPC = PC;
949 const auto V0 = ReadArg<const Descriptor *>(S, PC);
950 const auto V1 = ReadArg<bool>(S, PC);
951 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1))
952 return false;
953 }
954#if USE_TAILCALLS
955 MUSTTAIL return InterpNext(S, PC);
956#else
957 return true;
958#endif
959}
960PRESERVE_NONE
961static bool Interp_AllocCNUint64(InterpState &S, CodePtr &PC) {
962 {
963 CodePtr OpPC = PC;
964 const auto V0 = ReadArg<const Descriptor *>(S, PC);
965 const auto V1 = ReadArg<bool>(S, PC);
966 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1))
967 return false;
968 }
969#if USE_TAILCALLS
970 MUSTTAIL return InterpNext(S, PC);
971#else
972 return true;
973#endif
974}
975PRESERVE_NONE
976static bool Interp_AllocCNIntAP(InterpState &S, CodePtr &PC) {
977 {
978 CodePtr OpPC = PC;
979 const auto V0 = ReadArg<const Descriptor *>(S, PC);
980 const auto V1 = ReadArg<bool>(S, PC);
981 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1))
982 return false;
983 }
984#if USE_TAILCALLS
985 MUSTTAIL return InterpNext(S, PC);
986#else
987 return true;
988#endif
989}
990PRESERVE_NONE
991static bool Interp_AllocCNIntAPS(InterpState &S, CodePtr &PC) {
992 {
993 CodePtr OpPC = PC;
994 const auto V0 = ReadArg<const Descriptor *>(S, PC);
995 const auto V1 = ReadArg<bool>(S, PC);
996 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1))
997 return false;
998 }
999#if USE_TAILCALLS
1000 MUSTTAIL return InterpNext(S, PC);
1001#else
1002 return true;
1003#endif
1004}
1005PRESERVE_NONE
1006static bool Interp_AllocCNBool(InterpState &S, CodePtr &PC) {
1007 {
1008 CodePtr OpPC = PC;
1009 const auto V0 = ReadArg<const Descriptor *>(S, PC);
1010 const auto V1 = ReadArg<bool>(S, PC);
1011 if (!AllocCN<PT_Bool>(S, OpPC, V0, V1))
1012 return false;
1013 }
1014#if USE_TAILCALLS
1015 MUSTTAIL return InterpNext(S, PC);
1016#else
1017 return true;
1018#endif
1019}
1020#endif
1021#ifdef GET_DISASM
1022case OP_AllocCNSint8:
1023 Text.Op = PrintName("AllocCNSint8");
1024 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1025 Text.Args.push_back(printArg<bool>(P, PC));
1026 break;
1027case OP_AllocCNUint8:
1028 Text.Op = PrintName("AllocCNUint8");
1029 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1030 Text.Args.push_back(printArg<bool>(P, PC));
1031 break;
1032case OP_AllocCNSint16:
1033 Text.Op = PrintName("AllocCNSint16");
1034 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1035 Text.Args.push_back(printArg<bool>(P, PC));
1036 break;
1037case OP_AllocCNUint16:
1038 Text.Op = PrintName("AllocCNUint16");
1039 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1040 Text.Args.push_back(printArg<bool>(P, PC));
1041 break;
1042case OP_AllocCNSint32:
1043 Text.Op = PrintName("AllocCNSint32");
1044 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1045 Text.Args.push_back(printArg<bool>(P, PC));
1046 break;
1047case OP_AllocCNUint32:
1048 Text.Op = PrintName("AllocCNUint32");
1049 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1050 Text.Args.push_back(printArg<bool>(P, PC));
1051 break;
1052case OP_AllocCNSint64:
1053 Text.Op = PrintName("AllocCNSint64");
1054 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1055 Text.Args.push_back(printArg<bool>(P, PC));
1056 break;
1057case OP_AllocCNUint64:
1058 Text.Op = PrintName("AllocCNUint64");
1059 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1060 Text.Args.push_back(printArg<bool>(P, PC));
1061 break;
1062case OP_AllocCNIntAP:
1063 Text.Op = PrintName("AllocCNIntAP");
1064 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1065 Text.Args.push_back(printArg<bool>(P, PC));
1066 break;
1067case OP_AllocCNIntAPS:
1068 Text.Op = PrintName("AllocCNIntAPS");
1069 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1070 Text.Args.push_back(printArg<bool>(P, PC));
1071 break;
1072case OP_AllocCNBool:
1073 Text.Op = PrintName("AllocCNBool");
1074 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1075 Text.Args.push_back(printArg<bool>(P, PC));
1076 break;
1077#endif
1078#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1079bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
1080bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
1081bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
1082bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
1083bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
1084bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
1085bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
1086bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
1087bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
1088bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
1089bool emitAllocCNBool( const Descriptor * , bool , SourceInfo);
1090#endif
1091#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1092[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
1093#endif
1094#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1095bool
1096#if defined(GET_EVAL_IMPL)
1097EvalEmitter
1098#else
1099ByteCodeEmitter
1100#endif
1101::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
1102 switch (T0) {
1103 case PT_Sint8:
1104 return emitAllocCNSint8(A0, A1, I);
1105 case PT_Uint8:
1106 return emitAllocCNUint8(A0, A1, I);
1107 case PT_Sint16:
1108 return emitAllocCNSint16(A0, A1, I);
1109 case PT_Uint16:
1110 return emitAllocCNUint16(A0, A1, I);
1111 case PT_Sint32:
1112 return emitAllocCNSint32(A0, A1, I);
1113 case PT_Uint32:
1114 return emitAllocCNUint32(A0, A1, I);
1115 case PT_Sint64:
1116 return emitAllocCNSint64(A0, A1, I);
1117 case PT_Uint64:
1118 return emitAllocCNUint64(A0, A1, I);
1119 case PT_IntAP:
1120 return emitAllocCNIntAP(A0, A1, I);
1121 case PT_IntAPS:
1122 return emitAllocCNIntAPS(A0, A1, I);
1123 case PT_Bool:
1124 return emitAllocCNBool(A0, A1, I);
1125 default: llvm_unreachable("invalid type: emitAllocCN");
1126 }
1127 llvm_unreachable("invalid enum value");
1128}
1129#endif
1130#ifdef GET_LINK_IMPL
1131bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1132 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
1133}
1134bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1135 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
1136}
1137bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1138 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
1139}
1140bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1141 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
1142}
1143bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1144 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
1145}
1146bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1147 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
1148}
1149bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1150 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
1151}
1152bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1153 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
1154}
1155bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1156 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
1157}
1158bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1159 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
1160}
1161bool ByteCodeEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1162 return emitOp<const Descriptor *, bool>(OP_AllocCNBool, A0, A1, L);
1163}
1164#endif
1165#ifdef GET_EVAL_IMPL
1166bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1167 if (!isActive()) return true;
1168 CurrentSource = L;
1169 return AllocCN<PT_Sint8>(S, OpPC, A0, A1);
1170}
1171bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1172 if (!isActive()) return true;
1173 CurrentSource = L;
1174 return AllocCN<PT_Uint8>(S, OpPC, A0, A1);
1175}
1176bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1177 if (!isActive()) return true;
1178 CurrentSource = L;
1179 return AllocCN<PT_Sint16>(S, OpPC, A0, A1);
1180}
1181bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1182 if (!isActive()) return true;
1183 CurrentSource = L;
1184 return AllocCN<PT_Uint16>(S, OpPC, A0, A1);
1185}
1186bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1187 if (!isActive()) return true;
1188 CurrentSource = L;
1189 return AllocCN<PT_Sint32>(S, OpPC, A0, A1);
1190}
1191bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1192 if (!isActive()) return true;
1193 CurrentSource = L;
1194 return AllocCN<PT_Uint32>(S, OpPC, A0, A1);
1195}
1196bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1197 if (!isActive()) return true;
1198 CurrentSource = L;
1199 return AllocCN<PT_Sint64>(S, OpPC, A0, A1);
1200}
1201bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1202 if (!isActive()) return true;
1203 CurrentSource = L;
1204 return AllocCN<PT_Uint64>(S, OpPC, A0, A1);
1205}
1206bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1207 if (!isActive()) return true;
1208 CurrentSource = L;
1209 return AllocCN<PT_IntAP>(S, OpPC, A0, A1);
1210}
1211bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1212 if (!isActive()) return true;
1213 CurrentSource = L;
1214 return AllocCN<PT_IntAPS>(S, OpPC, A0, A1);
1215}
1216bool EvalEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1217 if (!isActive()) return true;
1218 CurrentSource = L;
1219 return AllocCN<PT_Bool>(S, OpPC, A0, A1);
1220}
1221#endif
1222#ifdef GET_OPCODE_NAMES
1223OP_AllocNSint8,
1224OP_AllocNUint8,
1225OP_AllocNSint16,
1226OP_AllocNUint16,
1227OP_AllocNSint32,
1228OP_AllocNUint32,
1229OP_AllocNSint64,
1230OP_AllocNUint64,
1231OP_AllocNIntAP,
1232OP_AllocNIntAPS,
1233OP_AllocNBool,
1234#endif
1235#ifdef GET_INTERPFN_LIST
1236&Interp_AllocNSint8,
1237&Interp_AllocNUint8,
1238&Interp_AllocNSint16,
1239&Interp_AllocNUint16,
1240&Interp_AllocNSint32,
1241&Interp_AllocNUint32,
1242&Interp_AllocNSint64,
1243&Interp_AllocNUint64,
1244&Interp_AllocNIntAP,
1245&Interp_AllocNIntAPS,
1246&Interp_AllocNBool,
1247#endif
1248#ifdef GET_INTERPFN_DISPATCHERS
1249PRESERVE_NONE
1250static bool Interp_AllocNSint8(InterpState &S, CodePtr &PC) {
1251 {
1252 CodePtr OpPC = PC;
1253 const auto V0 = ReadArg<PrimType>(S, PC);
1254 const auto V1 = ReadArg<const Expr *>(S, PC);
1255 const auto V2 = ReadArg<bool>(S, PC);
1256 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2))
1257 return false;
1258 }
1259#if USE_TAILCALLS
1260 MUSTTAIL return InterpNext(S, PC);
1261#else
1262 return true;
1263#endif
1264}
1265PRESERVE_NONE
1266static bool Interp_AllocNUint8(InterpState &S, CodePtr &PC) {
1267 {
1268 CodePtr OpPC = PC;
1269 const auto V0 = ReadArg<PrimType>(S, PC);
1270 const auto V1 = ReadArg<const Expr *>(S, PC);
1271 const auto V2 = ReadArg<bool>(S, PC);
1272 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2))
1273 return false;
1274 }
1275#if USE_TAILCALLS
1276 MUSTTAIL return InterpNext(S, PC);
1277#else
1278 return true;
1279#endif
1280}
1281PRESERVE_NONE
1282static bool Interp_AllocNSint16(InterpState &S, CodePtr &PC) {
1283 {
1284 CodePtr OpPC = PC;
1285 const auto V0 = ReadArg<PrimType>(S, PC);
1286 const auto V1 = ReadArg<const Expr *>(S, PC);
1287 const auto V2 = ReadArg<bool>(S, PC);
1288 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2))
1289 return false;
1290 }
1291#if USE_TAILCALLS
1292 MUSTTAIL return InterpNext(S, PC);
1293#else
1294 return true;
1295#endif
1296}
1297PRESERVE_NONE
1298static bool Interp_AllocNUint16(InterpState &S, CodePtr &PC) {
1299 {
1300 CodePtr OpPC = PC;
1301 const auto V0 = ReadArg<PrimType>(S, PC);
1302 const auto V1 = ReadArg<const Expr *>(S, PC);
1303 const auto V2 = ReadArg<bool>(S, PC);
1304 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2))
1305 return false;
1306 }
1307#if USE_TAILCALLS
1308 MUSTTAIL return InterpNext(S, PC);
1309#else
1310 return true;
1311#endif
1312}
1313PRESERVE_NONE
1314static bool Interp_AllocNSint32(InterpState &S, CodePtr &PC) {
1315 {
1316 CodePtr OpPC = PC;
1317 const auto V0 = ReadArg<PrimType>(S, PC);
1318 const auto V1 = ReadArg<const Expr *>(S, PC);
1319 const auto V2 = ReadArg<bool>(S, PC);
1320 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2))
1321 return false;
1322 }
1323#if USE_TAILCALLS
1324 MUSTTAIL return InterpNext(S, PC);
1325#else
1326 return true;
1327#endif
1328}
1329PRESERVE_NONE
1330static bool Interp_AllocNUint32(InterpState &S, CodePtr &PC) {
1331 {
1332 CodePtr OpPC = PC;
1333 const auto V0 = ReadArg<PrimType>(S, PC);
1334 const auto V1 = ReadArg<const Expr *>(S, PC);
1335 const auto V2 = ReadArg<bool>(S, PC);
1336 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2))
1337 return false;
1338 }
1339#if USE_TAILCALLS
1340 MUSTTAIL return InterpNext(S, PC);
1341#else
1342 return true;
1343#endif
1344}
1345PRESERVE_NONE
1346static bool Interp_AllocNSint64(InterpState &S, CodePtr &PC) {
1347 {
1348 CodePtr OpPC = PC;
1349 const auto V0 = ReadArg<PrimType>(S, PC);
1350 const auto V1 = ReadArg<const Expr *>(S, PC);
1351 const auto V2 = ReadArg<bool>(S, PC);
1352 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2))
1353 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_AllocNUint64(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_Uint64>(S, OpPC, V0, V1, V2))
1369 return false;
1370 }
1371#if USE_TAILCALLS
1372 MUSTTAIL return InterpNext(S, PC);
1373#else
1374 return true;
1375#endif
1376}
1377PRESERVE_NONE
1378static bool Interp_AllocNIntAP(InterpState &S, CodePtr &PC) {
1379 {
1380 CodePtr OpPC = PC;
1381 const auto V0 = ReadArg<PrimType>(S, PC);
1382 const auto V1 = ReadArg<const Expr *>(S, PC);
1383 const auto V2 = ReadArg<bool>(S, PC);
1384 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2))
1385 return false;
1386 }
1387#if USE_TAILCALLS
1388 MUSTTAIL return InterpNext(S, PC);
1389#else
1390 return true;
1391#endif
1392}
1393PRESERVE_NONE
1394static bool Interp_AllocNIntAPS(InterpState &S, CodePtr &PC) {
1395 {
1396 CodePtr OpPC = PC;
1397 const auto V0 = ReadArg<PrimType>(S, PC);
1398 const auto V1 = ReadArg<const Expr *>(S, PC);
1399 const auto V2 = ReadArg<bool>(S, PC);
1400 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2))
1401 return false;
1402 }
1403#if USE_TAILCALLS
1404 MUSTTAIL return InterpNext(S, PC);
1405#else
1406 return true;
1407#endif
1408}
1409PRESERVE_NONE
1410static bool Interp_AllocNBool(InterpState &S, CodePtr &PC) {
1411 {
1412 CodePtr OpPC = PC;
1413 const auto V0 = ReadArg<PrimType>(S, PC);
1414 const auto V1 = ReadArg<const Expr *>(S, PC);
1415 const auto V2 = ReadArg<bool>(S, PC);
1416 if (!AllocN<PT_Bool>(S, OpPC, V0, V1, V2))
1417 return false;
1418 }
1419#if USE_TAILCALLS
1420 MUSTTAIL return InterpNext(S, PC);
1421#else
1422 return true;
1423#endif
1424}
1425#endif
1426#ifdef GET_DISASM
1427case OP_AllocNSint8:
1428 Text.Op = PrintName("AllocNSint8");
1429 Text.Args.push_back(printArg<PrimType>(P, PC));
1430 Text.Args.push_back(printArg<const Expr *>(P, PC));
1431 Text.Args.push_back(printArg<bool>(P, PC));
1432 break;
1433case OP_AllocNUint8:
1434 Text.Op = PrintName("AllocNUint8");
1435 Text.Args.push_back(printArg<PrimType>(P, PC));
1436 Text.Args.push_back(printArg<const Expr *>(P, PC));
1437 Text.Args.push_back(printArg<bool>(P, PC));
1438 break;
1439case OP_AllocNSint16:
1440 Text.Op = PrintName("AllocNSint16");
1441 Text.Args.push_back(printArg<PrimType>(P, PC));
1442 Text.Args.push_back(printArg<const Expr *>(P, PC));
1443 Text.Args.push_back(printArg<bool>(P, PC));
1444 break;
1445case OP_AllocNUint16:
1446 Text.Op = PrintName("AllocNUint16");
1447 Text.Args.push_back(printArg<PrimType>(P, PC));
1448 Text.Args.push_back(printArg<const Expr *>(P, PC));
1449 Text.Args.push_back(printArg<bool>(P, PC));
1450 break;
1451case OP_AllocNSint32:
1452 Text.Op = PrintName("AllocNSint32");
1453 Text.Args.push_back(printArg<PrimType>(P, PC));
1454 Text.Args.push_back(printArg<const Expr *>(P, PC));
1455 Text.Args.push_back(printArg<bool>(P, PC));
1456 break;
1457case OP_AllocNUint32:
1458 Text.Op = PrintName("AllocNUint32");
1459 Text.Args.push_back(printArg<PrimType>(P, PC));
1460 Text.Args.push_back(printArg<const Expr *>(P, PC));
1461 Text.Args.push_back(printArg<bool>(P, PC));
1462 break;
1463case OP_AllocNSint64:
1464 Text.Op = PrintName("AllocNSint64");
1465 Text.Args.push_back(printArg<PrimType>(P, PC));
1466 Text.Args.push_back(printArg<const Expr *>(P, PC));
1467 Text.Args.push_back(printArg<bool>(P, PC));
1468 break;
1469case OP_AllocNUint64:
1470 Text.Op = PrintName("AllocNUint64");
1471 Text.Args.push_back(printArg<PrimType>(P, PC));
1472 Text.Args.push_back(printArg<const Expr *>(P, PC));
1473 Text.Args.push_back(printArg<bool>(P, PC));
1474 break;
1475case OP_AllocNIntAP:
1476 Text.Op = PrintName("AllocNIntAP");
1477 Text.Args.push_back(printArg<PrimType>(P, PC));
1478 Text.Args.push_back(printArg<const Expr *>(P, PC));
1479 Text.Args.push_back(printArg<bool>(P, PC));
1480 break;
1481case OP_AllocNIntAPS:
1482 Text.Op = PrintName("AllocNIntAPS");
1483 Text.Args.push_back(printArg<PrimType>(P, PC));
1484 Text.Args.push_back(printArg<const Expr *>(P, PC));
1485 Text.Args.push_back(printArg<bool>(P, PC));
1486 break;
1487case OP_AllocNBool:
1488 Text.Op = PrintName("AllocNBool");
1489 Text.Args.push_back(printArg<PrimType>(P, PC));
1490 Text.Args.push_back(printArg<const Expr *>(P, PC));
1491 Text.Args.push_back(printArg<bool>(P, PC));
1492 break;
1493#endif
1494#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1495bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1496bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1497bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1498bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1499bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1500bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1501bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1502bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1503bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1504bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1505bool emitAllocNBool( PrimType , const Expr * , bool , SourceInfo);
1506#endif
1507#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1508[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1509#endif
1510#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1511bool
1512#if defined(GET_EVAL_IMPL)
1513EvalEmitter
1514#else
1515ByteCodeEmitter
1516#endif
1517::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1518 switch (T0) {
1519 case PT_Sint8:
1520 return emitAllocNSint8(A0, A1, A2, I);
1521 case PT_Uint8:
1522 return emitAllocNUint8(A0, A1, A2, I);
1523 case PT_Sint16:
1524 return emitAllocNSint16(A0, A1, A2, I);
1525 case PT_Uint16:
1526 return emitAllocNUint16(A0, A1, A2, I);
1527 case PT_Sint32:
1528 return emitAllocNSint32(A0, A1, A2, I);
1529 case PT_Uint32:
1530 return emitAllocNUint32(A0, A1, A2, I);
1531 case PT_Sint64:
1532 return emitAllocNSint64(A0, A1, A2, I);
1533 case PT_Uint64:
1534 return emitAllocNUint64(A0, A1, A2, I);
1535 case PT_IntAP:
1536 return emitAllocNIntAP(A0, A1, A2, I);
1537 case PT_IntAPS:
1538 return emitAllocNIntAPS(A0, A1, A2, I);
1539 case PT_Bool:
1540 return emitAllocNBool(A0, A1, A2, I);
1541 default: llvm_unreachable("invalid type: emitAllocN");
1542 }
1543 llvm_unreachable("invalid enum value");
1544}
1545#endif
1546#ifdef GET_LINK_IMPL
1547bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1548 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1549}
1550bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1551 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1552}
1553bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1554 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1555}
1556bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1557 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1558}
1559bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1560 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1561}
1562bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1563 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1564}
1565bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1566 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1567}
1568bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1569 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1570}
1571bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1572 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1573}
1574bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1575 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1576}
1577bool ByteCodeEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1578 return emitOp<PrimType, const Expr *, bool>(OP_AllocNBool, A0, A1, A2, L);
1579}
1580#endif
1581#ifdef GET_EVAL_IMPL
1582bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1583 if (!isActive()) return true;
1584 CurrentSource = L;
1585 return AllocN<PT_Sint8>(S, OpPC, A0, A1, A2);
1586}
1587bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1588 if (!isActive()) return true;
1589 CurrentSource = L;
1590 return AllocN<PT_Uint8>(S, OpPC, A0, A1, A2);
1591}
1592bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1593 if (!isActive()) return true;
1594 CurrentSource = L;
1595 return AllocN<PT_Sint16>(S, OpPC, A0, A1, A2);
1596}
1597bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1598 if (!isActive()) return true;
1599 CurrentSource = L;
1600 return AllocN<PT_Uint16>(S, OpPC, A0, A1, A2);
1601}
1602bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1603 if (!isActive()) return true;
1604 CurrentSource = L;
1605 return AllocN<PT_Sint32>(S, OpPC, A0, A1, A2);
1606}
1607bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1608 if (!isActive()) return true;
1609 CurrentSource = L;
1610 return AllocN<PT_Uint32>(S, OpPC, A0, A1, A2);
1611}
1612bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1613 if (!isActive()) return true;
1614 CurrentSource = L;
1615 return AllocN<PT_Sint64>(S, OpPC, A0, A1, A2);
1616}
1617bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1618 if (!isActive()) return true;
1619 CurrentSource = L;
1620 return AllocN<PT_Uint64>(S, OpPC, A0, A1, A2);
1621}
1622bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1623 if (!isActive()) return true;
1624 CurrentSource = L;
1625 return AllocN<PT_IntAP>(S, OpPC, A0, A1, A2);
1626}
1627bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1628 if (!isActive()) return true;
1629 CurrentSource = L;
1630 return AllocN<PT_IntAPS>(S, OpPC, A0, A1, A2);
1631}
1632bool EvalEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1633 if (!isActive()) return true;
1634 CurrentSource = L;
1635 return AllocN<PT_Bool>(S, OpPC, A0, A1, A2);
1636}
1637#endif
1638#ifdef GET_OPCODE_NAMES
1639OP_ArrayDecay,
1640#endif
1641#ifdef GET_INTERPFN_LIST
1642&Interp_ArrayDecay,
1643#endif
1644#ifdef GET_INTERPFN_DISPATCHERS
1645PRESERVE_NONE
1646static bool Interp_ArrayDecay(InterpState &S, CodePtr &PC) {
1647 if (!ArrayDecay(S, PC))
1648 return false;
1649#if USE_TAILCALLS
1650 MUSTTAIL return InterpNext(S, PC);
1651#else
1652 return true;
1653#endif
1654}
1655#endif
1656#ifdef GET_DISASM
1657case OP_ArrayDecay:
1658 Text.Op = PrintName("ArrayDecay");
1659 break;
1660#endif
1661#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1662bool emitArrayDecay(SourceInfo);
1663#endif
1664#ifdef GET_LINK_IMPL
1665bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1666 return emitOp<>(OP_ArrayDecay, L);
1667}
1668#endif
1669#ifdef GET_EVAL_IMPL
1670bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1671 if (!isActive()) return true;
1672 CurrentSource = L;
1673 return ArrayDecay(S, OpPC);
1674}
1675#endif
1676#ifdef GET_OPCODE_NAMES
1677OP_ArrayElemSint8,
1678OP_ArrayElemUint8,
1679OP_ArrayElemSint16,
1680OP_ArrayElemUint16,
1681OP_ArrayElemSint32,
1682OP_ArrayElemUint32,
1683OP_ArrayElemSint64,
1684OP_ArrayElemUint64,
1685OP_ArrayElemIntAP,
1686OP_ArrayElemIntAPS,
1687OP_ArrayElemBool,
1688OP_ArrayElemFixedPoint,
1689OP_ArrayElemPtr,
1690OP_ArrayElemMemberPtr,
1691OP_ArrayElemFloat,
1692#endif
1693#ifdef GET_INTERPFN_LIST
1694&Interp_ArrayElemSint8,
1695&Interp_ArrayElemUint8,
1696&Interp_ArrayElemSint16,
1697&Interp_ArrayElemUint16,
1698&Interp_ArrayElemSint32,
1699&Interp_ArrayElemUint32,
1700&Interp_ArrayElemSint64,
1701&Interp_ArrayElemUint64,
1702&Interp_ArrayElemIntAP,
1703&Interp_ArrayElemIntAPS,
1704&Interp_ArrayElemBool,
1705&Interp_ArrayElemFixedPoint,
1706&Interp_ArrayElemPtr,
1707&Interp_ArrayElemMemberPtr,
1708&Interp_ArrayElemFloat,
1709#endif
1710#ifdef GET_INTERPFN_DISPATCHERS
1711PRESERVE_NONE
1712static bool Interp_ArrayElemSint8(InterpState &S, CodePtr &PC) {
1713 {
1714 CodePtr OpPC = PC;
1715 const auto V0 = ReadArg<uint32_t>(S, PC);
1716 if (!ArrayElem<PT_Sint8>(S, OpPC, V0))
1717 return false;
1718 }
1719#if USE_TAILCALLS
1720 MUSTTAIL return InterpNext(S, PC);
1721#else
1722 return true;
1723#endif
1724}
1725PRESERVE_NONE
1726static bool Interp_ArrayElemUint8(InterpState &S, CodePtr &PC) {
1727 {
1728 CodePtr OpPC = PC;
1729 const auto V0 = ReadArg<uint32_t>(S, PC);
1730 if (!ArrayElem<PT_Uint8>(S, OpPC, V0))
1731 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_ArrayElemSint16(InterpState &S, CodePtr &PC) {
1741 {
1742 CodePtr OpPC = PC;
1743 const auto V0 = ReadArg<uint32_t>(S, PC);
1744 if (!ArrayElem<PT_Sint16>(S, OpPC, V0))
1745 return false;
1746 }
1747#if USE_TAILCALLS
1748 MUSTTAIL return InterpNext(S, PC);
1749#else
1750 return true;
1751#endif
1752}
1753PRESERVE_NONE
1754static bool Interp_ArrayElemUint16(InterpState &S, CodePtr &PC) {
1755 {
1756 CodePtr OpPC = PC;
1757 const auto V0 = ReadArg<uint32_t>(S, PC);
1758 if (!ArrayElem<PT_Uint16>(S, OpPC, V0))
1759 return false;
1760 }
1761#if USE_TAILCALLS
1762 MUSTTAIL return InterpNext(S, PC);
1763#else
1764 return true;
1765#endif
1766}
1767PRESERVE_NONE
1768static bool Interp_ArrayElemSint32(InterpState &S, CodePtr &PC) {
1769 {
1770 CodePtr OpPC = PC;
1771 const auto V0 = ReadArg<uint32_t>(S, PC);
1772 if (!ArrayElem<PT_Sint32>(S, OpPC, V0))
1773 return false;
1774 }
1775#if USE_TAILCALLS
1776 MUSTTAIL return InterpNext(S, PC);
1777#else
1778 return true;
1779#endif
1780}
1781PRESERVE_NONE
1782static bool Interp_ArrayElemUint32(InterpState &S, CodePtr &PC) {
1783 {
1784 CodePtr OpPC = PC;
1785 const auto V0 = ReadArg<uint32_t>(S, PC);
1786 if (!ArrayElem<PT_Uint32>(S, OpPC, V0))
1787 return false;
1788 }
1789#if USE_TAILCALLS
1790 MUSTTAIL return InterpNext(S, PC);
1791#else
1792 return true;
1793#endif
1794}
1795PRESERVE_NONE
1796static bool Interp_ArrayElemSint64(InterpState &S, CodePtr &PC) {
1797 {
1798 CodePtr OpPC = PC;
1799 const auto V0 = ReadArg<uint32_t>(S, PC);
1800 if (!ArrayElem<PT_Sint64>(S, OpPC, V0))
1801 return false;
1802 }
1803#if USE_TAILCALLS
1804 MUSTTAIL return InterpNext(S, PC);
1805#else
1806 return true;
1807#endif
1808}
1809PRESERVE_NONE
1810static bool Interp_ArrayElemUint64(InterpState &S, CodePtr &PC) {
1811 {
1812 CodePtr OpPC = PC;
1813 const auto V0 = ReadArg<uint32_t>(S, PC);
1814 if (!ArrayElem<PT_Uint64>(S, OpPC, V0))
1815 return false;
1816 }
1817#if USE_TAILCALLS
1818 MUSTTAIL return InterpNext(S, PC);
1819#else
1820 return true;
1821#endif
1822}
1823PRESERVE_NONE
1824static bool Interp_ArrayElemIntAP(InterpState &S, CodePtr &PC) {
1825 {
1826 CodePtr OpPC = PC;
1827 const auto V0 = ReadArg<uint32_t>(S, PC);
1828 if (!ArrayElem<PT_IntAP>(S, OpPC, V0))
1829 return false;
1830 }
1831#if USE_TAILCALLS
1832 MUSTTAIL return InterpNext(S, PC);
1833#else
1834 return true;
1835#endif
1836}
1837PRESERVE_NONE
1838static bool Interp_ArrayElemIntAPS(InterpState &S, CodePtr &PC) {
1839 {
1840 CodePtr OpPC = PC;
1841 const auto V0 = ReadArg<uint32_t>(S, PC);
1842 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0))
1843 return false;
1844 }
1845#if USE_TAILCALLS
1846 MUSTTAIL return InterpNext(S, PC);
1847#else
1848 return true;
1849#endif
1850}
1851PRESERVE_NONE
1852static bool Interp_ArrayElemBool(InterpState &S, CodePtr &PC) {
1853 {
1854 CodePtr OpPC = PC;
1855 const auto V0 = ReadArg<uint32_t>(S, PC);
1856 if (!ArrayElem<PT_Bool>(S, OpPC, V0))
1857 return false;
1858 }
1859#if USE_TAILCALLS
1860 MUSTTAIL return InterpNext(S, PC);
1861#else
1862 return true;
1863#endif
1864}
1865PRESERVE_NONE
1866static bool Interp_ArrayElemFixedPoint(InterpState &S, CodePtr &PC) {
1867 {
1868 CodePtr OpPC = PC;
1869 const auto V0 = ReadArg<uint32_t>(S, PC);
1870 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0))
1871 return false;
1872 }
1873#if USE_TAILCALLS
1874 MUSTTAIL return InterpNext(S, PC);
1875#else
1876 return true;
1877#endif
1878}
1879PRESERVE_NONE
1880static bool Interp_ArrayElemPtr(InterpState &S, CodePtr &PC) {
1881 {
1882 CodePtr OpPC = PC;
1883 const auto V0 = ReadArg<uint32_t>(S, PC);
1884 if (!ArrayElem<PT_Ptr>(S, OpPC, V0))
1885 return false;
1886 }
1887#if USE_TAILCALLS
1888 MUSTTAIL return InterpNext(S, PC);
1889#else
1890 return true;
1891#endif
1892}
1893PRESERVE_NONE
1894static bool Interp_ArrayElemMemberPtr(InterpState &S, CodePtr &PC) {
1895 {
1896 CodePtr OpPC = PC;
1897 const auto V0 = ReadArg<uint32_t>(S, PC);
1898 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0))
1899 return false;
1900 }
1901#if USE_TAILCALLS
1902 MUSTTAIL return InterpNext(S, PC);
1903#else
1904 return true;
1905#endif
1906}
1907PRESERVE_NONE
1908static bool Interp_ArrayElemFloat(InterpState &S, CodePtr &PC) {
1909 {
1910 CodePtr OpPC = PC;
1911 const auto V0 = ReadArg<uint32_t>(S, PC);
1912 if (!ArrayElem<PT_Float>(S, OpPC, V0))
1913 return false;
1914 }
1915#if USE_TAILCALLS
1916 MUSTTAIL return InterpNext(S, PC);
1917#else
1918 return true;
1919#endif
1920}
1921#endif
1922#ifdef GET_DISASM
1923case OP_ArrayElemSint8:
1924 Text.Op = PrintName("ArrayElemSint8");
1925 Text.Args.push_back(printArg<uint32_t>(P, PC));
1926 break;
1927case OP_ArrayElemUint8:
1928 Text.Op = PrintName("ArrayElemUint8");
1929 Text.Args.push_back(printArg<uint32_t>(P, PC));
1930 break;
1931case OP_ArrayElemSint16:
1932 Text.Op = PrintName("ArrayElemSint16");
1933 Text.Args.push_back(printArg<uint32_t>(P, PC));
1934 break;
1935case OP_ArrayElemUint16:
1936 Text.Op = PrintName("ArrayElemUint16");
1937 Text.Args.push_back(printArg<uint32_t>(P, PC));
1938 break;
1939case OP_ArrayElemSint32:
1940 Text.Op = PrintName("ArrayElemSint32");
1941 Text.Args.push_back(printArg<uint32_t>(P, PC));
1942 break;
1943case OP_ArrayElemUint32:
1944 Text.Op = PrintName("ArrayElemUint32");
1945 Text.Args.push_back(printArg<uint32_t>(P, PC));
1946 break;
1947case OP_ArrayElemSint64:
1948 Text.Op = PrintName("ArrayElemSint64");
1949 Text.Args.push_back(printArg<uint32_t>(P, PC));
1950 break;
1951case OP_ArrayElemUint64:
1952 Text.Op = PrintName("ArrayElemUint64");
1953 Text.Args.push_back(printArg<uint32_t>(P, PC));
1954 break;
1955case OP_ArrayElemIntAP:
1956 Text.Op = PrintName("ArrayElemIntAP");
1957 Text.Args.push_back(printArg<uint32_t>(P, PC));
1958 break;
1959case OP_ArrayElemIntAPS:
1960 Text.Op = PrintName("ArrayElemIntAPS");
1961 Text.Args.push_back(printArg<uint32_t>(P, PC));
1962 break;
1963case OP_ArrayElemBool:
1964 Text.Op = PrintName("ArrayElemBool");
1965 Text.Args.push_back(printArg<uint32_t>(P, PC));
1966 break;
1967case OP_ArrayElemFixedPoint:
1968 Text.Op = PrintName("ArrayElemFixedPoint");
1969 Text.Args.push_back(printArg<uint32_t>(P, PC));
1970 break;
1971case OP_ArrayElemPtr:
1972 Text.Op = PrintName("ArrayElemPtr");
1973 Text.Args.push_back(printArg<uint32_t>(P, PC));
1974 break;
1975case OP_ArrayElemMemberPtr:
1976 Text.Op = PrintName("ArrayElemMemberPtr");
1977 Text.Args.push_back(printArg<uint32_t>(P, PC));
1978 break;
1979case OP_ArrayElemFloat:
1980 Text.Op = PrintName("ArrayElemFloat");
1981 Text.Args.push_back(printArg<uint32_t>(P, PC));
1982 break;
1983#endif
1984#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1985bool emitArrayElemSint8( uint32_t , SourceInfo);
1986bool emitArrayElemUint8( uint32_t , SourceInfo);
1987bool emitArrayElemSint16( uint32_t , SourceInfo);
1988bool emitArrayElemUint16( uint32_t , SourceInfo);
1989bool emitArrayElemSint32( uint32_t , SourceInfo);
1990bool emitArrayElemUint32( uint32_t , SourceInfo);
1991bool emitArrayElemSint64( uint32_t , SourceInfo);
1992bool emitArrayElemUint64( uint32_t , SourceInfo);
1993bool emitArrayElemIntAP( uint32_t , SourceInfo);
1994bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1995bool emitArrayElemBool( uint32_t , SourceInfo);
1996bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1997bool emitArrayElemPtr( uint32_t , SourceInfo);
1998bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1999bool emitArrayElemFloat( uint32_t , SourceInfo);
2000#endif
2001#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2002[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
2003#endif
2004#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2005bool
2006#if defined(GET_EVAL_IMPL)
2007EvalEmitter
2008#else
2009ByteCodeEmitter
2010#endif
2011::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
2012 switch (T0) {
2013 case PT_Sint8:
2014 return emitArrayElemSint8(A0, I);
2015 case PT_Uint8:
2016 return emitArrayElemUint8(A0, I);
2017 case PT_Sint16:
2018 return emitArrayElemSint16(A0, I);
2019 case PT_Uint16:
2020 return emitArrayElemUint16(A0, I);
2021 case PT_Sint32:
2022 return emitArrayElemSint32(A0, I);
2023 case PT_Uint32:
2024 return emitArrayElemUint32(A0, I);
2025 case PT_Sint64:
2026 return emitArrayElemSint64(A0, I);
2027 case PT_Uint64:
2028 return emitArrayElemUint64(A0, I);
2029 case PT_IntAP:
2030 return emitArrayElemIntAP(A0, I);
2031 case PT_IntAPS:
2032 return emitArrayElemIntAPS(A0, I);
2033 case PT_Bool:
2034 return emitArrayElemBool(A0, I);
2035 case PT_FixedPoint:
2036 return emitArrayElemFixedPoint(A0, I);
2037 case PT_Ptr:
2038 return emitArrayElemPtr(A0, I);
2039 case PT_MemberPtr:
2040 return emitArrayElemMemberPtr(A0, I);
2041 case PT_Float:
2042 return emitArrayElemFloat(A0, I);
2043 }
2044 llvm_unreachable("invalid enum value");
2045}
2046#endif
2047#ifdef GET_LINK_IMPL
2048bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2049 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
2050}
2051bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2052 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
2053}
2054bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2055 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
2056}
2057bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2058 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
2059}
2060bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2061 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
2062}
2063bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2064 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
2065}
2066bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2067 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
2068}
2069bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2070 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
2071}
2072bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2073 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
2074}
2075bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2076 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
2077}
2078bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2079 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
2080}
2081bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2082 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
2083}
2084bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2085 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
2086}
2087bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2088 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
2089}
2090bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2091 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
2092}
2093#endif
2094#ifdef GET_EVAL_IMPL
2095bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2096 if (!isActive()) return true;
2097 CurrentSource = L;
2098 return ArrayElem<PT_Sint8>(S, OpPC, A0);
2099}
2100bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2101 if (!isActive()) return true;
2102 CurrentSource = L;
2103 return ArrayElem<PT_Uint8>(S, OpPC, A0);
2104}
2105bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2106 if (!isActive()) return true;
2107 CurrentSource = L;
2108 return ArrayElem<PT_Sint16>(S, OpPC, A0);
2109}
2110bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2111 if (!isActive()) return true;
2112 CurrentSource = L;
2113 return ArrayElem<PT_Uint16>(S, OpPC, A0);
2114}
2115bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2116 if (!isActive()) return true;
2117 CurrentSource = L;
2118 return ArrayElem<PT_Sint32>(S, OpPC, A0);
2119}
2120bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2121 if (!isActive()) return true;
2122 CurrentSource = L;
2123 return ArrayElem<PT_Uint32>(S, OpPC, A0);
2124}
2125bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2126 if (!isActive()) return true;
2127 CurrentSource = L;
2128 return ArrayElem<PT_Sint64>(S, OpPC, A0);
2129}
2130bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2131 if (!isActive()) return true;
2132 CurrentSource = L;
2133 return ArrayElem<PT_Uint64>(S, OpPC, A0);
2134}
2135bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2136 if (!isActive()) return true;
2137 CurrentSource = L;
2138 return ArrayElem<PT_IntAP>(S, OpPC, A0);
2139}
2140bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2141 if (!isActive()) return true;
2142 CurrentSource = L;
2143 return ArrayElem<PT_IntAPS>(S, OpPC, A0);
2144}
2145bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2146 if (!isActive()) return true;
2147 CurrentSource = L;
2148 return ArrayElem<PT_Bool>(S, OpPC, A0);
2149}
2150bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2151 if (!isActive()) return true;
2152 CurrentSource = L;
2153 return ArrayElem<PT_FixedPoint>(S, OpPC, A0);
2154}
2155bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2156 if (!isActive()) return true;
2157 CurrentSource = L;
2158 return ArrayElem<PT_Ptr>(S, OpPC, A0);
2159}
2160bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2161 if (!isActive()) return true;
2162 CurrentSource = L;
2163 return ArrayElem<PT_MemberPtr>(S, OpPC, A0);
2164}
2165bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2166 if (!isActive()) return true;
2167 CurrentSource = L;
2168 return ArrayElem<PT_Float>(S, OpPC, A0);
2169}
2170#endif
2171#ifdef GET_OPCODE_NAMES
2172OP_ArrayElemPopSint8,
2173OP_ArrayElemPopUint8,
2174OP_ArrayElemPopSint16,
2175OP_ArrayElemPopUint16,
2176OP_ArrayElemPopSint32,
2177OP_ArrayElemPopUint32,
2178OP_ArrayElemPopSint64,
2179OP_ArrayElemPopUint64,
2180OP_ArrayElemPopIntAP,
2181OP_ArrayElemPopIntAPS,
2182OP_ArrayElemPopBool,
2183OP_ArrayElemPopFixedPoint,
2184OP_ArrayElemPopPtr,
2185OP_ArrayElemPopMemberPtr,
2186OP_ArrayElemPopFloat,
2187#endif
2188#ifdef GET_INTERPFN_LIST
2189&Interp_ArrayElemPopSint8,
2190&Interp_ArrayElemPopUint8,
2191&Interp_ArrayElemPopSint16,
2192&Interp_ArrayElemPopUint16,
2193&Interp_ArrayElemPopSint32,
2194&Interp_ArrayElemPopUint32,
2195&Interp_ArrayElemPopSint64,
2196&Interp_ArrayElemPopUint64,
2197&Interp_ArrayElemPopIntAP,
2198&Interp_ArrayElemPopIntAPS,
2199&Interp_ArrayElemPopBool,
2200&Interp_ArrayElemPopFixedPoint,
2201&Interp_ArrayElemPopPtr,
2202&Interp_ArrayElemPopMemberPtr,
2203&Interp_ArrayElemPopFloat,
2204#endif
2205#ifdef GET_INTERPFN_DISPATCHERS
2206PRESERVE_NONE
2207static bool Interp_ArrayElemPopSint8(InterpState &S, CodePtr &PC) {
2208 {
2209 CodePtr OpPC = PC;
2210 const auto V0 = ReadArg<uint32_t>(S, PC);
2211 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0))
2212 return false;
2213 }
2214#if USE_TAILCALLS
2215 MUSTTAIL return InterpNext(S, PC);
2216#else
2217 return true;
2218#endif
2219}
2220PRESERVE_NONE
2221static bool Interp_ArrayElemPopUint8(InterpState &S, CodePtr &PC) {
2222 {
2223 CodePtr OpPC = PC;
2224 const auto V0 = ReadArg<uint32_t>(S, PC);
2225 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0))
2226 return false;
2227 }
2228#if USE_TAILCALLS
2229 MUSTTAIL return InterpNext(S, PC);
2230#else
2231 return true;
2232#endif
2233}
2234PRESERVE_NONE
2235static bool Interp_ArrayElemPopSint16(InterpState &S, CodePtr &PC) {
2236 {
2237 CodePtr OpPC = PC;
2238 const auto V0 = ReadArg<uint32_t>(S, PC);
2239 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0))
2240 return false;
2241 }
2242#if USE_TAILCALLS
2243 MUSTTAIL return InterpNext(S, PC);
2244#else
2245 return true;
2246#endif
2247}
2248PRESERVE_NONE
2249static bool Interp_ArrayElemPopUint16(InterpState &S, CodePtr &PC) {
2250 {
2251 CodePtr OpPC = PC;
2252 const auto V0 = ReadArg<uint32_t>(S, PC);
2253 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0))
2254 return false;
2255 }
2256#if USE_TAILCALLS
2257 MUSTTAIL return InterpNext(S, PC);
2258#else
2259 return true;
2260#endif
2261}
2262PRESERVE_NONE
2263static bool Interp_ArrayElemPopSint32(InterpState &S, CodePtr &PC) {
2264 {
2265 CodePtr OpPC = PC;
2266 const auto V0 = ReadArg<uint32_t>(S, PC);
2267 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0))
2268 return false;
2269 }
2270#if USE_TAILCALLS
2271 MUSTTAIL return InterpNext(S, PC);
2272#else
2273 return true;
2274#endif
2275}
2276PRESERVE_NONE
2277static bool Interp_ArrayElemPopUint32(InterpState &S, CodePtr &PC) {
2278 {
2279 CodePtr OpPC = PC;
2280 const auto V0 = ReadArg<uint32_t>(S, PC);
2281 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0))
2282 return false;
2283 }
2284#if USE_TAILCALLS
2285 MUSTTAIL return InterpNext(S, PC);
2286#else
2287 return true;
2288#endif
2289}
2290PRESERVE_NONE
2291static bool Interp_ArrayElemPopSint64(InterpState &S, CodePtr &PC) {
2292 {
2293 CodePtr OpPC = PC;
2294 const auto V0 = ReadArg<uint32_t>(S, PC);
2295 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0))
2296 return false;
2297 }
2298#if USE_TAILCALLS
2299 MUSTTAIL return InterpNext(S, PC);
2300#else
2301 return true;
2302#endif
2303}
2304PRESERVE_NONE
2305static bool Interp_ArrayElemPopUint64(InterpState &S, CodePtr &PC) {
2306 {
2307 CodePtr OpPC = PC;
2308 const auto V0 = ReadArg<uint32_t>(S, PC);
2309 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0))
2310 return false;
2311 }
2312#if USE_TAILCALLS
2313 MUSTTAIL return InterpNext(S, PC);
2314#else
2315 return true;
2316#endif
2317}
2318PRESERVE_NONE
2319static bool Interp_ArrayElemPopIntAP(InterpState &S, CodePtr &PC) {
2320 {
2321 CodePtr OpPC = PC;
2322 const auto V0 = ReadArg<uint32_t>(S, PC);
2323 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0))
2324 return false;
2325 }
2326#if USE_TAILCALLS
2327 MUSTTAIL return InterpNext(S, PC);
2328#else
2329 return true;
2330#endif
2331}
2332PRESERVE_NONE
2333static bool Interp_ArrayElemPopIntAPS(InterpState &S, CodePtr &PC) {
2334 {
2335 CodePtr OpPC = PC;
2336 const auto V0 = ReadArg<uint32_t>(S, PC);
2337 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0))
2338 return false;
2339 }
2340#if USE_TAILCALLS
2341 MUSTTAIL return InterpNext(S, PC);
2342#else
2343 return true;
2344#endif
2345}
2346PRESERVE_NONE
2347static bool Interp_ArrayElemPopBool(InterpState &S, CodePtr &PC) {
2348 {
2349 CodePtr OpPC = PC;
2350 const auto V0 = ReadArg<uint32_t>(S, PC);
2351 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0))
2352 return false;
2353 }
2354#if USE_TAILCALLS
2355 MUSTTAIL return InterpNext(S, PC);
2356#else
2357 return true;
2358#endif
2359}
2360PRESERVE_NONE
2361static bool Interp_ArrayElemPopFixedPoint(InterpState &S, CodePtr &PC) {
2362 {
2363 CodePtr OpPC = PC;
2364 const auto V0 = ReadArg<uint32_t>(S, PC);
2365 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0))
2366 return false;
2367 }
2368#if USE_TAILCALLS
2369 MUSTTAIL return InterpNext(S, PC);
2370#else
2371 return true;
2372#endif
2373}
2374PRESERVE_NONE
2375static bool Interp_ArrayElemPopPtr(InterpState &S, CodePtr &PC) {
2376 {
2377 CodePtr OpPC = PC;
2378 const auto V0 = ReadArg<uint32_t>(S, PC);
2379 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0))
2380 return false;
2381 }
2382#if USE_TAILCALLS
2383 MUSTTAIL return InterpNext(S, PC);
2384#else
2385 return true;
2386#endif
2387}
2388PRESERVE_NONE
2389static bool Interp_ArrayElemPopMemberPtr(InterpState &S, CodePtr &PC) {
2390 {
2391 CodePtr OpPC = PC;
2392 const auto V0 = ReadArg<uint32_t>(S, PC);
2393 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0))
2394 return false;
2395 }
2396#if USE_TAILCALLS
2397 MUSTTAIL return InterpNext(S, PC);
2398#else
2399 return true;
2400#endif
2401}
2402PRESERVE_NONE
2403static bool Interp_ArrayElemPopFloat(InterpState &S, CodePtr &PC) {
2404 {
2405 CodePtr OpPC = PC;
2406 const auto V0 = ReadArg<uint32_t>(S, PC);
2407 if (!ArrayElemPop<PT_Float>(S, OpPC, V0))
2408 return false;
2409 }
2410#if USE_TAILCALLS
2411 MUSTTAIL return InterpNext(S, PC);
2412#else
2413 return true;
2414#endif
2415}
2416#endif
2417#ifdef GET_DISASM
2418case OP_ArrayElemPopSint8:
2419 Text.Op = PrintName("ArrayElemPopSint8");
2420 Text.Args.push_back(printArg<uint32_t>(P, PC));
2421 break;
2422case OP_ArrayElemPopUint8:
2423 Text.Op = PrintName("ArrayElemPopUint8");
2424 Text.Args.push_back(printArg<uint32_t>(P, PC));
2425 break;
2426case OP_ArrayElemPopSint16:
2427 Text.Op = PrintName("ArrayElemPopSint16");
2428 Text.Args.push_back(printArg<uint32_t>(P, PC));
2429 break;
2430case OP_ArrayElemPopUint16:
2431 Text.Op = PrintName("ArrayElemPopUint16");
2432 Text.Args.push_back(printArg<uint32_t>(P, PC));
2433 break;
2434case OP_ArrayElemPopSint32:
2435 Text.Op = PrintName("ArrayElemPopSint32");
2436 Text.Args.push_back(printArg<uint32_t>(P, PC));
2437 break;
2438case OP_ArrayElemPopUint32:
2439 Text.Op = PrintName("ArrayElemPopUint32");
2440 Text.Args.push_back(printArg<uint32_t>(P, PC));
2441 break;
2442case OP_ArrayElemPopSint64:
2443 Text.Op = PrintName("ArrayElemPopSint64");
2444 Text.Args.push_back(printArg<uint32_t>(P, PC));
2445 break;
2446case OP_ArrayElemPopUint64:
2447 Text.Op = PrintName("ArrayElemPopUint64");
2448 Text.Args.push_back(printArg<uint32_t>(P, PC));
2449 break;
2450case OP_ArrayElemPopIntAP:
2451 Text.Op = PrintName("ArrayElemPopIntAP");
2452 Text.Args.push_back(printArg<uint32_t>(P, PC));
2453 break;
2454case OP_ArrayElemPopIntAPS:
2455 Text.Op = PrintName("ArrayElemPopIntAPS");
2456 Text.Args.push_back(printArg<uint32_t>(P, PC));
2457 break;
2458case OP_ArrayElemPopBool:
2459 Text.Op = PrintName("ArrayElemPopBool");
2460 Text.Args.push_back(printArg<uint32_t>(P, PC));
2461 break;
2462case OP_ArrayElemPopFixedPoint:
2463 Text.Op = PrintName("ArrayElemPopFixedPoint");
2464 Text.Args.push_back(printArg<uint32_t>(P, PC));
2465 break;
2466case OP_ArrayElemPopPtr:
2467 Text.Op = PrintName("ArrayElemPopPtr");
2468 Text.Args.push_back(printArg<uint32_t>(P, PC));
2469 break;
2470case OP_ArrayElemPopMemberPtr:
2471 Text.Op = PrintName("ArrayElemPopMemberPtr");
2472 Text.Args.push_back(printArg<uint32_t>(P, PC));
2473 break;
2474case OP_ArrayElemPopFloat:
2475 Text.Op = PrintName("ArrayElemPopFloat");
2476 Text.Args.push_back(printArg<uint32_t>(P, PC));
2477 break;
2478#endif
2479#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2480bool emitArrayElemPopSint8( uint32_t , SourceInfo);
2481bool emitArrayElemPopUint8( uint32_t , SourceInfo);
2482bool emitArrayElemPopSint16( uint32_t , SourceInfo);
2483bool emitArrayElemPopUint16( uint32_t , SourceInfo);
2484bool emitArrayElemPopSint32( uint32_t , SourceInfo);
2485bool emitArrayElemPopUint32( uint32_t , SourceInfo);
2486bool emitArrayElemPopSint64( uint32_t , SourceInfo);
2487bool emitArrayElemPopUint64( uint32_t , SourceInfo);
2488bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
2489bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
2490bool emitArrayElemPopBool( uint32_t , SourceInfo);
2491bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
2492bool emitArrayElemPopPtr( uint32_t , SourceInfo);
2493bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
2494bool emitArrayElemPopFloat( uint32_t , SourceInfo);
2495#endif
2496#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2497[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
2498#endif
2499#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2500bool
2501#if defined(GET_EVAL_IMPL)
2502EvalEmitter
2503#else
2504ByteCodeEmitter
2505#endif
2506::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
2507 switch (T0) {
2508 case PT_Sint8:
2509 return emitArrayElemPopSint8(A0, I);
2510 case PT_Uint8:
2511 return emitArrayElemPopUint8(A0, I);
2512 case PT_Sint16:
2513 return emitArrayElemPopSint16(A0, I);
2514 case PT_Uint16:
2515 return emitArrayElemPopUint16(A0, I);
2516 case PT_Sint32:
2517 return emitArrayElemPopSint32(A0, I);
2518 case PT_Uint32:
2519 return emitArrayElemPopUint32(A0, I);
2520 case PT_Sint64:
2521 return emitArrayElemPopSint64(A0, I);
2522 case PT_Uint64:
2523 return emitArrayElemPopUint64(A0, I);
2524 case PT_IntAP:
2525 return emitArrayElemPopIntAP(A0, I);
2526 case PT_IntAPS:
2527 return emitArrayElemPopIntAPS(A0, I);
2528 case PT_Bool:
2529 return emitArrayElemPopBool(A0, I);
2530 case PT_FixedPoint:
2531 return emitArrayElemPopFixedPoint(A0, I);
2532 case PT_Ptr:
2533 return emitArrayElemPopPtr(A0, I);
2534 case PT_MemberPtr:
2535 return emitArrayElemPopMemberPtr(A0, I);
2536 case PT_Float:
2537 return emitArrayElemPopFloat(A0, I);
2538 }
2539 llvm_unreachable("invalid enum value");
2540}
2541#endif
2542#ifdef GET_LINK_IMPL
2543bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2544 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
2545}
2546bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2547 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
2548}
2549bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2550 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
2551}
2552bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2553 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
2554}
2555bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2556 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
2557}
2558bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2559 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
2560}
2561bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2562 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
2563}
2564bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2565 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
2566}
2567bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2568 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
2569}
2570bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2571 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
2572}
2573bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2574 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
2575}
2576bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2577 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
2578}
2579bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2580 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
2581}
2582bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2583 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
2584}
2585bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2586 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
2587}
2588#endif
2589#ifdef GET_EVAL_IMPL
2590bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2591 if (!isActive()) return true;
2592 CurrentSource = L;
2593 return ArrayElemPop<PT_Sint8>(S, OpPC, A0);
2594}
2595bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2596 if (!isActive()) return true;
2597 CurrentSource = L;
2598 return ArrayElemPop<PT_Uint8>(S, OpPC, A0);
2599}
2600bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2601 if (!isActive()) return true;
2602 CurrentSource = L;
2603 return ArrayElemPop<PT_Sint16>(S, OpPC, A0);
2604}
2605bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2606 if (!isActive()) return true;
2607 CurrentSource = L;
2608 return ArrayElemPop<PT_Uint16>(S, OpPC, A0);
2609}
2610bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2611 if (!isActive()) return true;
2612 CurrentSource = L;
2613 return ArrayElemPop<PT_Sint32>(S, OpPC, A0);
2614}
2615bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2616 if (!isActive()) return true;
2617 CurrentSource = L;
2618 return ArrayElemPop<PT_Uint32>(S, OpPC, A0);
2619}
2620bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2621 if (!isActive()) return true;
2622 CurrentSource = L;
2623 return ArrayElemPop<PT_Sint64>(S, OpPC, A0);
2624}
2625bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2626 if (!isActive()) return true;
2627 CurrentSource = L;
2628 return ArrayElemPop<PT_Uint64>(S, OpPC, A0);
2629}
2630bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2631 if (!isActive()) return true;
2632 CurrentSource = L;
2633 return ArrayElemPop<PT_IntAP>(S, OpPC, A0);
2634}
2635bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2636 if (!isActive()) return true;
2637 CurrentSource = L;
2638 return ArrayElemPop<PT_IntAPS>(S, OpPC, A0);
2639}
2640bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2641 if (!isActive()) return true;
2642 CurrentSource = L;
2643 return ArrayElemPop<PT_Bool>(S, OpPC, A0);
2644}
2645bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2646 if (!isActive()) return true;
2647 CurrentSource = L;
2648 return ArrayElemPop<PT_FixedPoint>(S, OpPC, A0);
2649}
2650bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2651 if (!isActive()) return true;
2652 CurrentSource = L;
2653 return ArrayElemPop<PT_Ptr>(S, OpPC, A0);
2654}
2655bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2656 if (!isActive()) return true;
2657 CurrentSource = L;
2658 return ArrayElemPop<PT_MemberPtr>(S, OpPC, A0);
2659}
2660bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2661 if (!isActive()) return true;
2662 CurrentSource = L;
2663 return ArrayElemPop<PT_Float>(S, OpPC, A0);
2664}
2665#endif
2666#ifdef GET_OPCODE_NAMES
2667OP_ArrayElemPtrSint8,
2668OP_ArrayElemPtrUint8,
2669OP_ArrayElemPtrSint16,
2670OP_ArrayElemPtrUint16,
2671OP_ArrayElemPtrSint32,
2672OP_ArrayElemPtrUint32,
2673OP_ArrayElemPtrSint64,
2674OP_ArrayElemPtrUint64,
2675OP_ArrayElemPtrIntAP,
2676OP_ArrayElemPtrIntAPS,
2677OP_ArrayElemPtrBool,
2678#endif
2679#ifdef GET_INTERPFN_LIST
2680&Interp_ArrayElemPtrSint8,
2681&Interp_ArrayElemPtrUint8,
2682&Interp_ArrayElemPtrSint16,
2683&Interp_ArrayElemPtrUint16,
2684&Interp_ArrayElemPtrSint32,
2685&Interp_ArrayElemPtrUint32,
2686&Interp_ArrayElemPtrSint64,
2687&Interp_ArrayElemPtrUint64,
2688&Interp_ArrayElemPtrIntAP,
2689&Interp_ArrayElemPtrIntAPS,
2690&Interp_ArrayElemPtrBool,
2691#endif
2692#ifdef GET_INTERPFN_DISPATCHERS
2693PRESERVE_NONE
2694static bool Interp_ArrayElemPtrSint8(InterpState &S, CodePtr &PC) {
2695 if (!ArrayElemPtr<PT_Sint8>(S, PC))
2696 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_ArrayElemPtrUint8(InterpState &S, CodePtr &PC) {
2705 if (!ArrayElemPtr<PT_Uint8>(S, PC))
2706 return false;
2707#if USE_TAILCALLS
2708 MUSTTAIL return InterpNext(S, PC);
2709#else
2710 return true;
2711#endif
2712}
2713PRESERVE_NONE
2714static bool Interp_ArrayElemPtrSint16(InterpState &S, CodePtr &PC) {
2715 if (!ArrayElemPtr<PT_Sint16>(S, PC))
2716 return false;
2717#if USE_TAILCALLS
2718 MUSTTAIL return InterpNext(S, PC);
2719#else
2720 return true;
2721#endif
2722}
2723PRESERVE_NONE
2724static bool Interp_ArrayElemPtrUint16(InterpState &S, CodePtr &PC) {
2725 if (!ArrayElemPtr<PT_Uint16>(S, PC))
2726 return false;
2727#if USE_TAILCALLS
2728 MUSTTAIL return InterpNext(S, PC);
2729#else
2730 return true;
2731#endif
2732}
2733PRESERVE_NONE
2734static bool Interp_ArrayElemPtrSint32(InterpState &S, CodePtr &PC) {
2735 if (!ArrayElemPtr<PT_Sint32>(S, PC))
2736 return false;
2737#if USE_TAILCALLS
2738 MUSTTAIL return InterpNext(S, PC);
2739#else
2740 return true;
2741#endif
2742}
2743PRESERVE_NONE
2744static bool Interp_ArrayElemPtrUint32(InterpState &S, CodePtr &PC) {
2745 if (!ArrayElemPtr<PT_Uint32>(S, PC))
2746 return false;
2747#if USE_TAILCALLS
2748 MUSTTAIL return InterpNext(S, PC);
2749#else
2750 return true;
2751#endif
2752}
2753PRESERVE_NONE
2754static bool Interp_ArrayElemPtrSint64(InterpState &S, CodePtr &PC) {
2755 if (!ArrayElemPtr<PT_Sint64>(S, PC))
2756 return false;
2757#if USE_TAILCALLS
2758 MUSTTAIL return InterpNext(S, PC);
2759#else
2760 return true;
2761#endif
2762}
2763PRESERVE_NONE
2764static bool Interp_ArrayElemPtrUint64(InterpState &S, CodePtr &PC) {
2765 if (!ArrayElemPtr<PT_Uint64>(S, PC))
2766 return false;
2767#if USE_TAILCALLS
2768 MUSTTAIL return InterpNext(S, PC);
2769#else
2770 return true;
2771#endif
2772}
2773PRESERVE_NONE
2774static bool Interp_ArrayElemPtrIntAP(InterpState &S, CodePtr &PC) {
2775 if (!ArrayElemPtr<PT_IntAP>(S, PC))
2776 return false;
2777#if USE_TAILCALLS
2778 MUSTTAIL return InterpNext(S, PC);
2779#else
2780 return true;
2781#endif
2782}
2783PRESERVE_NONE
2784static bool Interp_ArrayElemPtrIntAPS(InterpState &S, CodePtr &PC) {
2785 if (!ArrayElemPtr<PT_IntAPS>(S, PC))
2786 return false;
2787#if USE_TAILCALLS
2788 MUSTTAIL return InterpNext(S, PC);
2789#else
2790 return true;
2791#endif
2792}
2793PRESERVE_NONE
2794static bool Interp_ArrayElemPtrBool(InterpState &S, CodePtr &PC) {
2795 if (!ArrayElemPtr<PT_Bool>(S, PC))
2796 return false;
2797#if USE_TAILCALLS
2798 MUSTTAIL return InterpNext(S, PC);
2799#else
2800 return true;
2801#endif
2802}
2803#endif
2804#ifdef GET_DISASM
2805case OP_ArrayElemPtrSint8:
2806 Text.Op = PrintName("ArrayElemPtrSint8");
2807 break;
2808case OP_ArrayElemPtrUint8:
2809 Text.Op = PrintName("ArrayElemPtrUint8");
2810 break;
2811case OP_ArrayElemPtrSint16:
2812 Text.Op = PrintName("ArrayElemPtrSint16");
2813 break;
2814case OP_ArrayElemPtrUint16:
2815 Text.Op = PrintName("ArrayElemPtrUint16");
2816 break;
2817case OP_ArrayElemPtrSint32:
2818 Text.Op = PrintName("ArrayElemPtrSint32");
2819 break;
2820case OP_ArrayElemPtrUint32:
2821 Text.Op = PrintName("ArrayElemPtrUint32");
2822 break;
2823case OP_ArrayElemPtrSint64:
2824 Text.Op = PrintName("ArrayElemPtrSint64");
2825 break;
2826case OP_ArrayElemPtrUint64:
2827 Text.Op = PrintName("ArrayElemPtrUint64");
2828 break;
2829case OP_ArrayElemPtrIntAP:
2830 Text.Op = PrintName("ArrayElemPtrIntAP");
2831 break;
2832case OP_ArrayElemPtrIntAPS:
2833 Text.Op = PrintName("ArrayElemPtrIntAPS");
2834 break;
2835case OP_ArrayElemPtrBool:
2836 Text.Op = PrintName("ArrayElemPtrBool");
2837 break;
2838#endif
2839#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2840bool emitArrayElemPtrSint8(SourceInfo);
2841bool emitArrayElemPtrUint8(SourceInfo);
2842bool emitArrayElemPtrSint16(SourceInfo);
2843bool emitArrayElemPtrUint16(SourceInfo);
2844bool emitArrayElemPtrSint32(SourceInfo);
2845bool emitArrayElemPtrUint32(SourceInfo);
2846bool emitArrayElemPtrSint64(SourceInfo);
2847bool emitArrayElemPtrUint64(SourceInfo);
2848bool emitArrayElemPtrIntAP(SourceInfo);
2849bool emitArrayElemPtrIntAPS(SourceInfo);
2850bool emitArrayElemPtrBool(SourceInfo);
2851#endif
2852#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2853[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2854#endif
2855#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2856bool
2857#if defined(GET_EVAL_IMPL)
2858EvalEmitter
2859#else
2860ByteCodeEmitter
2861#endif
2862::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2863 switch (T0) {
2864 case PT_Sint8:
2865 return emitArrayElemPtrSint8(I);
2866 case PT_Uint8:
2867 return emitArrayElemPtrUint8(I);
2868 case PT_Sint16:
2869 return emitArrayElemPtrSint16(I);
2870 case PT_Uint16:
2871 return emitArrayElemPtrUint16(I);
2872 case PT_Sint32:
2873 return emitArrayElemPtrSint32(I);
2874 case PT_Uint32:
2875 return emitArrayElemPtrUint32(I);
2876 case PT_Sint64:
2877 return emitArrayElemPtrSint64(I);
2878 case PT_Uint64:
2879 return emitArrayElemPtrUint64(I);
2880 case PT_IntAP:
2881 return emitArrayElemPtrIntAP(I);
2882 case PT_IntAPS:
2883 return emitArrayElemPtrIntAPS(I);
2884 case PT_Bool:
2885 return emitArrayElemPtrBool(I);
2886 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2887 }
2888 llvm_unreachable("invalid enum value");
2889}
2890#endif
2891#ifdef GET_LINK_IMPL
2892bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2893 return emitOp<>(OP_ArrayElemPtrSint8, L);
2894}
2895bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2896 return emitOp<>(OP_ArrayElemPtrUint8, L);
2897}
2898bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2899 return emitOp<>(OP_ArrayElemPtrSint16, L);
2900}
2901bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2902 return emitOp<>(OP_ArrayElemPtrUint16, L);
2903}
2904bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2905 return emitOp<>(OP_ArrayElemPtrSint32, L);
2906}
2907bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2908 return emitOp<>(OP_ArrayElemPtrUint32, L);
2909}
2910bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2911 return emitOp<>(OP_ArrayElemPtrSint64, L);
2912}
2913bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2914 return emitOp<>(OP_ArrayElemPtrUint64, L);
2915}
2916bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2917 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2918}
2919bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2920 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2921}
2922bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2923 return emitOp<>(OP_ArrayElemPtrBool, L);
2924}
2925#endif
2926#ifdef GET_EVAL_IMPL
2927bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2928 if (!isActive()) return true;
2929 CurrentSource = L;
2930 return ArrayElemPtr<PT_Sint8>(S, OpPC);
2931}
2932bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2933 if (!isActive()) return true;
2934 CurrentSource = L;
2935 return ArrayElemPtr<PT_Uint8>(S, OpPC);
2936}
2937bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2938 if (!isActive()) return true;
2939 CurrentSource = L;
2940 return ArrayElemPtr<PT_Sint16>(S, OpPC);
2941}
2942bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2943 if (!isActive()) return true;
2944 CurrentSource = L;
2945 return ArrayElemPtr<PT_Uint16>(S, OpPC);
2946}
2947bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2948 if (!isActive()) return true;
2949 CurrentSource = L;
2950 return ArrayElemPtr<PT_Sint32>(S, OpPC);
2951}
2952bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2953 if (!isActive()) return true;
2954 CurrentSource = L;
2955 return ArrayElemPtr<PT_Uint32>(S, OpPC);
2956}
2957bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2958 if (!isActive()) return true;
2959 CurrentSource = L;
2960 return ArrayElemPtr<PT_Sint64>(S, OpPC);
2961}
2962bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2963 if (!isActive()) return true;
2964 CurrentSource = L;
2965 return ArrayElemPtr<PT_Uint64>(S, OpPC);
2966}
2967bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2968 if (!isActive()) return true;
2969 CurrentSource = L;
2970 return ArrayElemPtr<PT_IntAP>(S, OpPC);
2971}
2972bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2973 if (!isActive()) return true;
2974 CurrentSource = L;
2975 return ArrayElemPtr<PT_IntAPS>(S, OpPC);
2976}
2977bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2978 if (!isActive()) return true;
2979 CurrentSource = L;
2980 return ArrayElemPtr<PT_Bool>(S, OpPC);
2981}
2982#endif
2983#ifdef GET_OPCODE_NAMES
2984OP_ArrayElemPtrPopSint8,
2985OP_ArrayElemPtrPopUint8,
2986OP_ArrayElemPtrPopSint16,
2987OP_ArrayElemPtrPopUint16,
2988OP_ArrayElemPtrPopSint32,
2989OP_ArrayElemPtrPopUint32,
2990OP_ArrayElemPtrPopSint64,
2991OP_ArrayElemPtrPopUint64,
2992OP_ArrayElemPtrPopIntAP,
2993OP_ArrayElemPtrPopIntAPS,
2994OP_ArrayElemPtrPopBool,
2995#endif
2996#ifdef GET_INTERPFN_LIST
2997&Interp_ArrayElemPtrPopSint8,
2998&Interp_ArrayElemPtrPopUint8,
2999&Interp_ArrayElemPtrPopSint16,
3000&Interp_ArrayElemPtrPopUint16,
3001&Interp_ArrayElemPtrPopSint32,
3002&Interp_ArrayElemPtrPopUint32,
3003&Interp_ArrayElemPtrPopSint64,
3004&Interp_ArrayElemPtrPopUint64,
3005&Interp_ArrayElemPtrPopIntAP,
3006&Interp_ArrayElemPtrPopIntAPS,
3007&Interp_ArrayElemPtrPopBool,
3008#endif
3009#ifdef GET_INTERPFN_DISPATCHERS
3010PRESERVE_NONE
3011static bool Interp_ArrayElemPtrPopSint8(InterpState &S, CodePtr &PC) {
3012 if (!ArrayElemPtrPop<PT_Sint8>(S, PC))
3013 return false;
3014#if USE_TAILCALLS
3015 MUSTTAIL return InterpNext(S, PC);
3016#else
3017 return true;
3018#endif
3019}
3020PRESERVE_NONE
3021static bool Interp_ArrayElemPtrPopUint8(InterpState &S, CodePtr &PC) {
3022 if (!ArrayElemPtrPop<PT_Uint8>(S, PC))
3023 return false;
3024#if USE_TAILCALLS
3025 MUSTTAIL return InterpNext(S, PC);
3026#else
3027 return true;
3028#endif
3029}
3030PRESERVE_NONE
3031static bool Interp_ArrayElemPtrPopSint16(InterpState &S, CodePtr &PC) {
3032 if (!ArrayElemPtrPop<PT_Sint16>(S, PC))
3033 return false;
3034#if USE_TAILCALLS
3035 MUSTTAIL return InterpNext(S, PC);
3036#else
3037 return true;
3038#endif
3039}
3040PRESERVE_NONE
3041static bool Interp_ArrayElemPtrPopUint16(InterpState &S, CodePtr &PC) {
3042 if (!ArrayElemPtrPop<PT_Uint16>(S, PC))
3043 return false;
3044#if USE_TAILCALLS
3045 MUSTTAIL return InterpNext(S, PC);
3046#else
3047 return true;
3048#endif
3049}
3050PRESERVE_NONE
3051static bool Interp_ArrayElemPtrPopSint32(InterpState &S, CodePtr &PC) {
3052 if (!ArrayElemPtrPop<PT_Sint32>(S, PC))
3053 return false;
3054#if USE_TAILCALLS
3055 MUSTTAIL return InterpNext(S, PC);
3056#else
3057 return true;
3058#endif
3059}
3060PRESERVE_NONE
3061static bool Interp_ArrayElemPtrPopUint32(InterpState &S, CodePtr &PC) {
3062 if (!ArrayElemPtrPop<PT_Uint32>(S, PC))
3063 return false;
3064#if USE_TAILCALLS
3065 MUSTTAIL return InterpNext(S, PC);
3066#else
3067 return true;
3068#endif
3069}
3070PRESERVE_NONE
3071static bool Interp_ArrayElemPtrPopSint64(InterpState &S, CodePtr &PC) {
3072 if (!ArrayElemPtrPop<PT_Sint64>(S, PC))
3073 return false;
3074#if USE_TAILCALLS
3075 MUSTTAIL return InterpNext(S, PC);
3076#else
3077 return true;
3078#endif
3079}
3080PRESERVE_NONE
3081static bool Interp_ArrayElemPtrPopUint64(InterpState &S, CodePtr &PC) {
3082 if (!ArrayElemPtrPop<PT_Uint64>(S, PC))
3083 return false;
3084#if USE_TAILCALLS
3085 MUSTTAIL return InterpNext(S, PC);
3086#else
3087 return true;
3088#endif
3089}
3090PRESERVE_NONE
3091static bool Interp_ArrayElemPtrPopIntAP(InterpState &S, CodePtr &PC) {
3092 if (!ArrayElemPtrPop<PT_IntAP>(S, PC))
3093 return false;
3094#if USE_TAILCALLS
3095 MUSTTAIL return InterpNext(S, PC);
3096#else
3097 return true;
3098#endif
3099}
3100PRESERVE_NONE
3101static bool Interp_ArrayElemPtrPopIntAPS(InterpState &S, CodePtr &PC) {
3102 if (!ArrayElemPtrPop<PT_IntAPS>(S, PC))
3103 return false;
3104#if USE_TAILCALLS
3105 MUSTTAIL return InterpNext(S, PC);
3106#else
3107 return true;
3108#endif
3109}
3110PRESERVE_NONE
3111static bool Interp_ArrayElemPtrPopBool(InterpState &S, CodePtr &PC) {
3112 if (!ArrayElemPtrPop<PT_Bool>(S, PC))
3113 return false;
3114#if USE_TAILCALLS
3115 MUSTTAIL return InterpNext(S, PC);
3116#else
3117 return true;
3118#endif
3119}
3120#endif
3121#ifdef GET_DISASM
3122case OP_ArrayElemPtrPopSint8:
3123 Text.Op = PrintName("ArrayElemPtrPopSint8");
3124 break;
3125case OP_ArrayElemPtrPopUint8:
3126 Text.Op = PrintName("ArrayElemPtrPopUint8");
3127 break;
3128case OP_ArrayElemPtrPopSint16:
3129 Text.Op = PrintName("ArrayElemPtrPopSint16");
3130 break;
3131case OP_ArrayElemPtrPopUint16:
3132 Text.Op = PrintName("ArrayElemPtrPopUint16");
3133 break;
3134case OP_ArrayElemPtrPopSint32:
3135 Text.Op = PrintName("ArrayElemPtrPopSint32");
3136 break;
3137case OP_ArrayElemPtrPopUint32:
3138 Text.Op = PrintName("ArrayElemPtrPopUint32");
3139 break;
3140case OP_ArrayElemPtrPopSint64:
3141 Text.Op = PrintName("ArrayElemPtrPopSint64");
3142 break;
3143case OP_ArrayElemPtrPopUint64:
3144 Text.Op = PrintName("ArrayElemPtrPopUint64");
3145 break;
3146case OP_ArrayElemPtrPopIntAP:
3147 Text.Op = PrintName("ArrayElemPtrPopIntAP");
3148 break;
3149case OP_ArrayElemPtrPopIntAPS:
3150 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
3151 break;
3152case OP_ArrayElemPtrPopBool:
3153 Text.Op = PrintName("ArrayElemPtrPopBool");
3154 break;
3155#endif
3156#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3157bool emitArrayElemPtrPopSint8(SourceInfo);
3158bool emitArrayElemPtrPopUint8(SourceInfo);
3159bool emitArrayElemPtrPopSint16(SourceInfo);
3160bool emitArrayElemPtrPopUint16(SourceInfo);
3161bool emitArrayElemPtrPopSint32(SourceInfo);
3162bool emitArrayElemPtrPopUint32(SourceInfo);
3163bool emitArrayElemPtrPopSint64(SourceInfo);
3164bool emitArrayElemPtrPopUint64(SourceInfo);
3165bool emitArrayElemPtrPopIntAP(SourceInfo);
3166bool emitArrayElemPtrPopIntAPS(SourceInfo);
3167bool emitArrayElemPtrPopBool(SourceInfo);
3168#endif
3169#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3170[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
3171#endif
3172#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3173bool
3174#if defined(GET_EVAL_IMPL)
3175EvalEmitter
3176#else
3177ByteCodeEmitter
3178#endif
3179::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
3180 switch (T0) {
3181 case PT_Sint8:
3182 return emitArrayElemPtrPopSint8(I);
3183 case PT_Uint8:
3184 return emitArrayElemPtrPopUint8(I);
3185 case PT_Sint16:
3186 return emitArrayElemPtrPopSint16(I);
3187 case PT_Uint16:
3188 return emitArrayElemPtrPopUint16(I);
3189 case PT_Sint32:
3190 return emitArrayElemPtrPopSint32(I);
3191 case PT_Uint32:
3192 return emitArrayElemPtrPopUint32(I);
3193 case PT_Sint64:
3194 return emitArrayElemPtrPopSint64(I);
3195 case PT_Uint64:
3196 return emitArrayElemPtrPopUint64(I);
3197 case PT_IntAP:
3198 return emitArrayElemPtrPopIntAP(I);
3199 case PT_IntAPS:
3200 return emitArrayElemPtrPopIntAPS(I);
3201 case PT_Bool:
3202 return emitArrayElemPtrPopBool(I);
3203 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
3204 }
3205 llvm_unreachable("invalid enum value");
3206}
3207#endif
3208#ifdef GET_LINK_IMPL
3209bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3210 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
3211}
3212bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3213 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
3214}
3215bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3216 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
3217}
3218bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3219 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
3220}
3221bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3222 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
3223}
3224bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3225 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
3226}
3227bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3228 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
3229}
3230bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3231 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
3232}
3233bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3234 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
3235}
3236bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3237 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
3238}
3239bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3240 return emitOp<>(OP_ArrayElemPtrPopBool, L);
3241}
3242#endif
3243#ifdef GET_EVAL_IMPL
3244bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3245 if (!isActive()) return true;
3246 CurrentSource = L;
3247 return ArrayElemPtrPop<PT_Sint8>(S, OpPC);
3248}
3249bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3250 if (!isActive()) return true;
3251 CurrentSource = L;
3252 return ArrayElemPtrPop<PT_Uint8>(S, OpPC);
3253}
3254bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3255 if (!isActive()) return true;
3256 CurrentSource = L;
3257 return ArrayElemPtrPop<PT_Sint16>(S, OpPC);
3258}
3259bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3260 if (!isActive()) return true;
3261 CurrentSource = L;
3262 return ArrayElemPtrPop<PT_Uint16>(S, OpPC);
3263}
3264bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3265 if (!isActive()) return true;
3266 CurrentSource = L;
3267 return ArrayElemPtrPop<PT_Sint32>(S, OpPC);
3268}
3269bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3270 if (!isActive()) return true;
3271 CurrentSource = L;
3272 return ArrayElemPtrPop<PT_Uint32>(S, OpPC);
3273}
3274bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3275 if (!isActive()) return true;
3276 CurrentSource = L;
3277 return ArrayElemPtrPop<PT_Sint64>(S, OpPC);
3278}
3279bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3280 if (!isActive()) return true;
3281 CurrentSource = L;
3282 return ArrayElemPtrPop<PT_Uint64>(S, OpPC);
3283}
3284bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3285 if (!isActive()) return true;
3286 CurrentSource = L;
3287 return ArrayElemPtrPop<PT_IntAP>(S, OpPC);
3288}
3289bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3290 if (!isActive()) return true;
3291 CurrentSource = L;
3292 return ArrayElemPtrPop<PT_IntAPS>(S, OpPC);
3293}
3294bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3295 if (!isActive()) return true;
3296 CurrentSource = L;
3297 return ArrayElemPtrPop<PT_Bool>(S, OpPC);
3298}
3299#endif
3300#ifdef GET_OPCODE_NAMES
3301OP_Assume,
3302#endif
3303#ifdef GET_INTERPFN_LIST
3304&Interp_Assume,
3305#endif
3306#ifdef GET_INTERPFN_DISPATCHERS
3307PRESERVE_NONE
3308static bool Interp_Assume(InterpState &S, CodePtr &PC) {
3309 if (!Assume(S, PC))
3310 return false;
3311#if USE_TAILCALLS
3312 MUSTTAIL return InterpNext(S, PC);
3313#else
3314 return true;
3315#endif
3316}
3317#endif
3318#ifdef GET_DISASM
3319case OP_Assume:
3320 Text.Op = PrintName("Assume");
3321 break;
3322#endif
3323#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3324bool emitAssume(SourceInfo);
3325#endif
3326#ifdef GET_LINK_IMPL
3327bool ByteCodeEmitter::emitAssume(SourceInfo L) {
3328 return emitOp<>(OP_Assume, L);
3329}
3330#endif
3331#ifdef GET_EVAL_IMPL
3332bool EvalEmitter::emitAssume(SourceInfo L) {
3333 if (!isActive()) return true;
3334 CurrentSource = L;
3335 return Assume(S, OpPC);
3336}
3337#endif
3338#ifdef GET_OPCODE_NAMES
3339OP_BCP,
3340#endif
3341#ifdef GET_INTERPFN_LIST
3342&Interp_BCP,
3343#endif
3344#ifdef GET_INTERPFN_DISPATCHERS
3345PRESERVE_NONE
3346static bool Interp_BCP(InterpState &S, CodePtr &PC) {
3347 {
3348 const auto V0 = ReadArg<int32_t>(S, PC);
3349 const auto V1 = ReadArg<PrimType>(S, PC);
3350 if (!BCP(S, PC, V0, V1))
3351 return false;
3352 }
3353#if USE_TAILCALLS
3354 MUSTTAIL return InterpNext(S, PC);
3355#else
3356 return true;
3357#endif
3358}
3359#endif
3360#ifdef GET_DISASM
3361case OP_BCP:
3362 Text.Op = PrintName("BCP");
3363 Text.Args.push_back(printArg<int32_t>(P, PC));
3364 Text.Args.push_back(printArg<PrimType>(P, PC));
3365 break;
3366#endif
3367#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3368bool emitBCP( int32_t , PrimType , SourceInfo);
3369#endif
3370#ifdef GET_LINK_IMPL
3371bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
3372 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
3373}
3374#endif
3375#ifdef GET_OPCODE_NAMES
3376OP_BitAndSint8,
3377OP_BitAndUint8,
3378OP_BitAndSint16,
3379OP_BitAndUint16,
3380OP_BitAndSint32,
3381OP_BitAndUint32,
3382OP_BitAndSint64,
3383OP_BitAndUint64,
3384OP_BitAndIntAP,
3385OP_BitAndIntAPS,
3386OP_BitAndFixedPoint,
3387#endif
3388#ifdef GET_INTERPFN_LIST
3389&Interp_BitAndSint8,
3390&Interp_BitAndUint8,
3391&Interp_BitAndSint16,
3392&Interp_BitAndUint16,
3393&Interp_BitAndSint32,
3394&Interp_BitAndUint32,
3395&Interp_BitAndSint64,
3396&Interp_BitAndUint64,
3397&Interp_BitAndIntAP,
3398&Interp_BitAndIntAPS,
3399&Interp_BitAndFixedPoint,
3400#endif
3401#ifdef GET_INTERPFN_DISPATCHERS
3402PRESERVE_NONE
3403static bool Interp_BitAndSint8(InterpState &S, CodePtr &PC) {
3404 if (!BitAnd<PT_Sint8>(S, PC))
3405 return false;
3406#if USE_TAILCALLS
3407 MUSTTAIL return InterpNext(S, PC);
3408#else
3409 return true;
3410#endif
3411}
3412PRESERVE_NONE
3413static bool Interp_BitAndUint8(InterpState &S, CodePtr &PC) {
3414 if (!BitAnd<PT_Uint8>(S, PC))
3415 return false;
3416#if USE_TAILCALLS
3417 MUSTTAIL return InterpNext(S, PC);
3418#else
3419 return true;
3420#endif
3421}
3422PRESERVE_NONE
3423static bool Interp_BitAndSint16(InterpState &S, CodePtr &PC) {
3424 if (!BitAnd<PT_Sint16>(S, PC))
3425 return false;
3426#if USE_TAILCALLS
3427 MUSTTAIL return InterpNext(S, PC);
3428#else
3429 return true;
3430#endif
3431}
3432PRESERVE_NONE
3433static bool Interp_BitAndUint16(InterpState &S, CodePtr &PC) {
3434 if (!BitAnd<PT_Uint16>(S, PC))
3435 return false;
3436#if USE_TAILCALLS
3437 MUSTTAIL return InterpNext(S, PC);
3438#else
3439 return true;
3440#endif
3441}
3442PRESERVE_NONE
3443static bool Interp_BitAndSint32(InterpState &S, CodePtr &PC) {
3444 if (!BitAnd<PT_Sint32>(S, PC))
3445 return false;
3446#if USE_TAILCALLS
3447 MUSTTAIL return InterpNext(S, PC);
3448#else
3449 return true;
3450#endif
3451}
3452PRESERVE_NONE
3453static bool Interp_BitAndUint32(InterpState &S, CodePtr &PC) {
3454 if (!BitAnd<PT_Uint32>(S, PC))
3455 return false;
3456#if USE_TAILCALLS
3457 MUSTTAIL return InterpNext(S, PC);
3458#else
3459 return true;
3460#endif
3461}
3462PRESERVE_NONE
3463static bool Interp_BitAndSint64(InterpState &S, CodePtr &PC) {
3464 if (!BitAnd<PT_Sint64>(S, PC))
3465 return false;
3466#if USE_TAILCALLS
3467 MUSTTAIL return InterpNext(S, PC);
3468#else
3469 return true;
3470#endif
3471}
3472PRESERVE_NONE
3473static bool Interp_BitAndUint64(InterpState &S, CodePtr &PC) {
3474 if (!BitAnd<PT_Uint64>(S, PC))
3475 return false;
3476#if USE_TAILCALLS
3477 MUSTTAIL return InterpNext(S, PC);
3478#else
3479 return true;
3480#endif
3481}
3482PRESERVE_NONE
3483static bool Interp_BitAndIntAP(InterpState &S, CodePtr &PC) {
3484 if (!BitAnd<PT_IntAP>(S, PC))
3485 return false;
3486#if USE_TAILCALLS
3487 MUSTTAIL return InterpNext(S, PC);
3488#else
3489 return true;
3490#endif
3491}
3492PRESERVE_NONE
3493static bool Interp_BitAndIntAPS(InterpState &S, CodePtr &PC) {
3494 if (!BitAnd<PT_IntAPS>(S, PC))
3495 return false;
3496#if USE_TAILCALLS
3497 MUSTTAIL return InterpNext(S, PC);
3498#else
3499 return true;
3500#endif
3501}
3502PRESERVE_NONE
3503static bool Interp_BitAndFixedPoint(InterpState &S, CodePtr &PC) {
3504 if (!BitAnd<PT_FixedPoint>(S, PC))
3505 return false;
3506#if USE_TAILCALLS
3507 MUSTTAIL return InterpNext(S, PC);
3508#else
3509 return true;
3510#endif
3511}
3512#endif
3513#ifdef GET_DISASM
3514case OP_BitAndSint8:
3515 Text.Op = PrintName("BitAndSint8");
3516 break;
3517case OP_BitAndUint8:
3518 Text.Op = PrintName("BitAndUint8");
3519 break;
3520case OP_BitAndSint16:
3521 Text.Op = PrintName("BitAndSint16");
3522 break;
3523case OP_BitAndUint16:
3524 Text.Op = PrintName("BitAndUint16");
3525 break;
3526case OP_BitAndSint32:
3527 Text.Op = PrintName("BitAndSint32");
3528 break;
3529case OP_BitAndUint32:
3530 Text.Op = PrintName("BitAndUint32");
3531 break;
3532case OP_BitAndSint64:
3533 Text.Op = PrintName("BitAndSint64");
3534 break;
3535case OP_BitAndUint64:
3536 Text.Op = PrintName("BitAndUint64");
3537 break;
3538case OP_BitAndIntAP:
3539 Text.Op = PrintName("BitAndIntAP");
3540 break;
3541case OP_BitAndIntAPS:
3542 Text.Op = PrintName("BitAndIntAPS");
3543 break;
3544case OP_BitAndFixedPoint:
3545 Text.Op = PrintName("BitAndFixedPoint");
3546 break;
3547#endif
3548#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3549bool emitBitAndSint8(SourceInfo);
3550bool emitBitAndUint8(SourceInfo);
3551bool emitBitAndSint16(SourceInfo);
3552bool emitBitAndUint16(SourceInfo);
3553bool emitBitAndSint32(SourceInfo);
3554bool emitBitAndUint32(SourceInfo);
3555bool emitBitAndSint64(SourceInfo);
3556bool emitBitAndUint64(SourceInfo);
3557bool emitBitAndIntAP(SourceInfo);
3558bool emitBitAndIntAPS(SourceInfo);
3559bool emitBitAndFixedPoint(SourceInfo);
3560#endif
3561#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3562[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
3563#endif
3564#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3565bool
3566#if defined(GET_EVAL_IMPL)
3567EvalEmitter
3568#else
3569ByteCodeEmitter
3570#endif
3571::emitBitAnd(PrimType T0, SourceInfo I) {
3572 switch (T0) {
3573 case PT_Sint8:
3574 return emitBitAndSint8(I);
3575 case PT_Uint8:
3576 return emitBitAndUint8(I);
3577 case PT_Sint16:
3578 return emitBitAndSint16(I);
3579 case PT_Uint16:
3580 return emitBitAndUint16(I);
3581 case PT_Sint32:
3582 return emitBitAndSint32(I);
3583 case PT_Uint32:
3584 return emitBitAndUint32(I);
3585 case PT_Sint64:
3586 return emitBitAndSint64(I);
3587 case PT_Uint64:
3588 return emitBitAndUint64(I);
3589 case PT_IntAP:
3590 return emitBitAndIntAP(I);
3591 case PT_IntAPS:
3592 return emitBitAndIntAPS(I);
3593 case PT_FixedPoint:
3594 return emitBitAndFixedPoint(I);
3595 default: llvm_unreachable("invalid type: emitBitAnd");
3596 }
3597 llvm_unreachable("invalid enum value");
3598}
3599#endif
3600#ifdef GET_LINK_IMPL
3601bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
3602 return emitOp<>(OP_BitAndSint8, L);
3603}
3604bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
3605 return emitOp<>(OP_BitAndUint8, L);
3606}
3607bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
3608 return emitOp<>(OP_BitAndSint16, L);
3609}
3610bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
3611 return emitOp<>(OP_BitAndUint16, L);
3612}
3613bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
3614 return emitOp<>(OP_BitAndSint32, L);
3615}
3616bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
3617 return emitOp<>(OP_BitAndUint32, L);
3618}
3619bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
3620 return emitOp<>(OP_BitAndSint64, L);
3621}
3622bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
3623 return emitOp<>(OP_BitAndUint64, L);
3624}
3625bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
3626 return emitOp<>(OP_BitAndIntAP, L);
3627}
3628bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
3629 return emitOp<>(OP_BitAndIntAPS, L);
3630}
3631bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
3632 return emitOp<>(OP_BitAndFixedPoint, L);
3633}
3634#endif
3635#ifdef GET_EVAL_IMPL
3636bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
3637 if (!isActive()) return true;
3638 CurrentSource = L;
3639 return BitAnd<PT_Sint8>(S, OpPC);
3640}
3641bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
3642 if (!isActive()) return true;
3643 CurrentSource = L;
3644 return BitAnd<PT_Uint8>(S, OpPC);
3645}
3646bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
3647 if (!isActive()) return true;
3648 CurrentSource = L;
3649 return BitAnd<PT_Sint16>(S, OpPC);
3650}
3651bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
3652 if (!isActive()) return true;
3653 CurrentSource = L;
3654 return BitAnd<PT_Uint16>(S, OpPC);
3655}
3656bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
3657 if (!isActive()) return true;
3658 CurrentSource = L;
3659 return BitAnd<PT_Sint32>(S, OpPC);
3660}
3661bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
3662 if (!isActive()) return true;
3663 CurrentSource = L;
3664 return BitAnd<PT_Uint32>(S, OpPC);
3665}
3666bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
3667 if (!isActive()) return true;
3668 CurrentSource = L;
3669 return BitAnd<PT_Sint64>(S, OpPC);
3670}
3671bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
3672 if (!isActive()) return true;
3673 CurrentSource = L;
3674 return BitAnd<PT_Uint64>(S, OpPC);
3675}
3676bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
3677 if (!isActive()) return true;
3678 CurrentSource = L;
3679 return BitAnd<PT_IntAP>(S, OpPC);
3680}
3681bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
3682 if (!isActive()) return true;
3683 CurrentSource = L;
3684 return BitAnd<PT_IntAPS>(S, OpPC);
3685}
3686bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
3687 if (!isActive()) return true;
3688 CurrentSource = L;
3689 return BitAnd<PT_FixedPoint>(S, OpPC);
3690}
3691#endif
3692#ifdef GET_OPCODE_NAMES
3693OP_BitCast,
3694#endif
3695#ifdef GET_INTERPFN_LIST
3696&Interp_BitCast,
3697#endif
3698#ifdef GET_INTERPFN_DISPATCHERS
3699PRESERVE_NONE
3700static bool Interp_BitCast(InterpState &S, CodePtr &PC) {
3701 if (!BitCast(S, PC))
3702 return false;
3703#if USE_TAILCALLS
3704 MUSTTAIL return InterpNext(S, PC);
3705#else
3706 return true;
3707#endif
3708}
3709#endif
3710#ifdef GET_DISASM
3711case OP_BitCast:
3712 Text.Op = PrintName("BitCast");
3713 break;
3714#endif
3715#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3716bool emitBitCast(SourceInfo);
3717#endif
3718#ifdef GET_LINK_IMPL
3719bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
3720 return emitOp<>(OP_BitCast, L);
3721}
3722#endif
3723#ifdef GET_EVAL_IMPL
3724bool EvalEmitter::emitBitCast(SourceInfo L) {
3725 if (!isActive()) return true;
3726 CurrentSource = L;
3727 return BitCast(S, OpPC);
3728}
3729#endif
3730#ifdef GET_OPCODE_NAMES
3731OP_BitCastPrimUint8,
3732OP_BitCastPrimSint8,
3733OP_BitCastPrimUint16,
3734OP_BitCastPrimSint16,
3735OP_BitCastPrimUint32,
3736OP_BitCastPrimSint32,
3737OP_BitCastPrimUint64,
3738OP_BitCastPrimSint64,
3739OP_BitCastPrimIntAP,
3740OP_BitCastPrimIntAPS,
3741OP_BitCastPrimBool,
3742OP_BitCastPrimFloat,
3743OP_BitCastPrimPtr,
3744OP_BitCastPrimMemberPtr,
3745#endif
3746#ifdef GET_INTERPFN_LIST
3747&Interp_BitCastPrimUint8,
3748&Interp_BitCastPrimSint8,
3749&Interp_BitCastPrimUint16,
3750&Interp_BitCastPrimSint16,
3751&Interp_BitCastPrimUint32,
3752&Interp_BitCastPrimSint32,
3753&Interp_BitCastPrimUint64,
3754&Interp_BitCastPrimSint64,
3755&Interp_BitCastPrimIntAP,
3756&Interp_BitCastPrimIntAPS,
3757&Interp_BitCastPrimBool,
3758&Interp_BitCastPrimFloat,
3759&Interp_BitCastPrimPtr,
3760&Interp_BitCastPrimMemberPtr,
3761#endif
3762#ifdef GET_INTERPFN_DISPATCHERS
3763PRESERVE_NONE
3764static bool Interp_BitCastPrimUint8(InterpState &S, CodePtr &PC) {
3765 {
3766 CodePtr OpPC = PC;
3767 const auto V0 = ReadArg<bool>(S, PC);
3768 const auto V1 = ReadArg<uint32_t>(S, PC);
3769 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3770 const auto V3 = ReadArg<const Type *>(S, PC);
3771 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3))
3772 return false;
3773 }
3774#if USE_TAILCALLS
3775 MUSTTAIL return InterpNext(S, PC);
3776#else
3777 return true;
3778#endif
3779}
3780PRESERVE_NONE
3781static bool Interp_BitCastPrimSint8(InterpState &S, CodePtr &PC) {
3782 {
3783 CodePtr OpPC = PC;
3784 const auto V0 = ReadArg<bool>(S, PC);
3785 const auto V1 = ReadArg<uint32_t>(S, PC);
3786 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3787 const auto V3 = ReadArg<const Type *>(S, PC);
3788 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3))
3789 return false;
3790 }
3791#if USE_TAILCALLS
3792 MUSTTAIL return InterpNext(S, PC);
3793#else
3794 return true;
3795#endif
3796}
3797PRESERVE_NONE
3798static bool Interp_BitCastPrimUint16(InterpState &S, CodePtr &PC) {
3799 {
3800 CodePtr OpPC = PC;
3801 const auto V0 = ReadArg<bool>(S, PC);
3802 const auto V1 = ReadArg<uint32_t>(S, PC);
3803 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3804 const auto V3 = ReadArg<const Type *>(S, PC);
3805 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3))
3806 return false;
3807 }
3808#if USE_TAILCALLS
3809 MUSTTAIL return InterpNext(S, PC);
3810#else
3811 return true;
3812#endif
3813}
3814PRESERVE_NONE
3815static bool Interp_BitCastPrimSint16(InterpState &S, CodePtr &PC) {
3816 {
3817 CodePtr OpPC = PC;
3818 const auto V0 = ReadArg<bool>(S, PC);
3819 const auto V1 = ReadArg<uint32_t>(S, PC);
3820 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3821 const auto V3 = ReadArg<const Type *>(S, PC);
3822 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3))
3823 return false;
3824 }
3825#if USE_TAILCALLS
3826 MUSTTAIL return InterpNext(S, PC);
3827#else
3828 return true;
3829#endif
3830}
3831PRESERVE_NONE
3832static bool Interp_BitCastPrimUint32(InterpState &S, CodePtr &PC) {
3833 {
3834 CodePtr OpPC = PC;
3835 const auto V0 = ReadArg<bool>(S, PC);
3836 const auto V1 = ReadArg<uint32_t>(S, PC);
3837 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3838 const auto V3 = ReadArg<const Type *>(S, PC);
3839 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3))
3840 return false;
3841 }
3842#if USE_TAILCALLS
3843 MUSTTAIL return InterpNext(S, PC);
3844#else
3845 return true;
3846#endif
3847}
3848PRESERVE_NONE
3849static bool Interp_BitCastPrimSint32(InterpState &S, CodePtr &PC) {
3850 {
3851 CodePtr OpPC = PC;
3852 const auto V0 = ReadArg<bool>(S, PC);
3853 const auto V1 = ReadArg<uint32_t>(S, PC);
3854 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3855 const auto V3 = ReadArg<const Type *>(S, PC);
3856 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3))
3857 return false;
3858 }
3859#if USE_TAILCALLS
3860 MUSTTAIL return InterpNext(S, PC);
3861#else
3862 return true;
3863#endif
3864}
3865PRESERVE_NONE
3866static bool Interp_BitCastPrimUint64(InterpState &S, CodePtr &PC) {
3867 {
3868 CodePtr OpPC = PC;
3869 const auto V0 = ReadArg<bool>(S, PC);
3870 const auto V1 = ReadArg<uint32_t>(S, PC);
3871 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3872 const auto V3 = ReadArg<const Type *>(S, PC);
3873 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3))
3874 return false;
3875 }
3876#if USE_TAILCALLS
3877 MUSTTAIL return InterpNext(S, PC);
3878#else
3879 return true;
3880#endif
3881}
3882PRESERVE_NONE
3883static bool Interp_BitCastPrimSint64(InterpState &S, CodePtr &PC) {
3884 {
3885 CodePtr OpPC = PC;
3886 const auto V0 = ReadArg<bool>(S, PC);
3887 const auto V1 = ReadArg<uint32_t>(S, PC);
3888 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3889 const auto V3 = ReadArg<const Type *>(S, PC);
3890 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3))
3891 return false;
3892 }
3893#if USE_TAILCALLS
3894 MUSTTAIL return InterpNext(S, PC);
3895#else
3896 return true;
3897#endif
3898}
3899PRESERVE_NONE
3900static bool Interp_BitCastPrimIntAP(InterpState &S, CodePtr &PC) {
3901 {
3902 CodePtr OpPC = PC;
3903 const auto V0 = ReadArg<bool>(S, PC);
3904 const auto V1 = ReadArg<uint32_t>(S, PC);
3905 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3906 const auto V3 = ReadArg<const Type *>(S, PC);
3907 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3))
3908 return false;
3909 }
3910#if USE_TAILCALLS
3911 MUSTTAIL return InterpNext(S, PC);
3912#else
3913 return true;
3914#endif
3915}
3916PRESERVE_NONE
3917static bool Interp_BitCastPrimIntAPS(InterpState &S, CodePtr &PC) {
3918 {
3919 CodePtr OpPC = PC;
3920 const auto V0 = ReadArg<bool>(S, PC);
3921 const auto V1 = ReadArg<uint32_t>(S, PC);
3922 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3923 const auto V3 = ReadArg<const Type *>(S, PC);
3924 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3))
3925 return false;
3926 }
3927#if USE_TAILCALLS
3928 MUSTTAIL return InterpNext(S, PC);
3929#else
3930 return true;
3931#endif
3932}
3933PRESERVE_NONE
3934static bool Interp_BitCastPrimBool(InterpState &S, CodePtr &PC) {
3935 {
3936 CodePtr OpPC = PC;
3937 const auto V0 = ReadArg<bool>(S, PC);
3938 const auto V1 = ReadArg<uint32_t>(S, PC);
3939 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3940 const auto V3 = ReadArg<const Type *>(S, PC);
3941 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3))
3942 return false;
3943 }
3944#if USE_TAILCALLS
3945 MUSTTAIL return InterpNext(S, PC);
3946#else
3947 return true;
3948#endif
3949}
3950PRESERVE_NONE
3951static bool Interp_BitCastPrimFloat(InterpState &S, CodePtr &PC) {
3952 {
3953 CodePtr OpPC = PC;
3954 const auto V0 = ReadArg<bool>(S, PC);
3955 const auto V1 = ReadArg<uint32_t>(S, PC);
3956 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3957 const auto V3 = ReadArg<const Type *>(S, PC);
3958 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3))
3959 return false;
3960 }
3961#if USE_TAILCALLS
3962 MUSTTAIL return InterpNext(S, PC);
3963#else
3964 return true;
3965#endif
3966}
3967PRESERVE_NONE
3968static bool Interp_BitCastPrimPtr(InterpState &S, CodePtr &PC) {
3969 {
3970 CodePtr OpPC = PC;
3971 const auto V0 = ReadArg<bool>(S, PC);
3972 const auto V1 = ReadArg<uint32_t>(S, PC);
3973 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3974 const auto V3 = ReadArg<const Type *>(S, PC);
3975 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3))
3976 return false;
3977 }
3978#if USE_TAILCALLS
3979 MUSTTAIL return InterpNext(S, PC);
3980#else
3981 return true;
3982#endif
3983}
3984PRESERVE_NONE
3985static bool Interp_BitCastPrimMemberPtr(InterpState &S, CodePtr &PC) {
3986 {
3987 CodePtr OpPC = PC;
3988 const auto V0 = ReadArg<bool>(S, PC);
3989 const auto V1 = ReadArg<uint32_t>(S, PC);
3990 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3991 const auto V3 = ReadArg<const Type *>(S, PC);
3992 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3))
3993 return false;
3994 }
3995#if USE_TAILCALLS
3996 MUSTTAIL return InterpNext(S, PC);
3997#else
3998 return true;
3999#endif
4000}
4001#endif
4002#ifdef GET_DISASM
4003case OP_BitCastPrimUint8:
4004 Text.Op = PrintName("BitCastPrimUint8");
4005 Text.Args.push_back(printArg<bool>(P, PC));
4006 Text.Args.push_back(printArg<uint32_t>(P, PC));
4007 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4008 Text.Args.push_back(printArg<const Type *>(P, PC));
4009 break;
4010case OP_BitCastPrimSint8:
4011 Text.Op = PrintName("BitCastPrimSint8");
4012 Text.Args.push_back(printArg<bool>(P, PC));
4013 Text.Args.push_back(printArg<uint32_t>(P, PC));
4014 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4015 Text.Args.push_back(printArg<const Type *>(P, PC));
4016 break;
4017case OP_BitCastPrimUint16:
4018 Text.Op = PrintName("BitCastPrimUint16");
4019 Text.Args.push_back(printArg<bool>(P, PC));
4020 Text.Args.push_back(printArg<uint32_t>(P, PC));
4021 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4022 Text.Args.push_back(printArg<const Type *>(P, PC));
4023 break;
4024case OP_BitCastPrimSint16:
4025 Text.Op = PrintName("BitCastPrimSint16");
4026 Text.Args.push_back(printArg<bool>(P, PC));
4027 Text.Args.push_back(printArg<uint32_t>(P, PC));
4028 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4029 Text.Args.push_back(printArg<const Type *>(P, PC));
4030 break;
4031case OP_BitCastPrimUint32:
4032 Text.Op = PrintName("BitCastPrimUint32");
4033 Text.Args.push_back(printArg<bool>(P, PC));
4034 Text.Args.push_back(printArg<uint32_t>(P, PC));
4035 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4036 Text.Args.push_back(printArg<const Type *>(P, PC));
4037 break;
4038case OP_BitCastPrimSint32:
4039 Text.Op = PrintName("BitCastPrimSint32");
4040 Text.Args.push_back(printArg<bool>(P, PC));
4041 Text.Args.push_back(printArg<uint32_t>(P, PC));
4042 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4043 Text.Args.push_back(printArg<const Type *>(P, PC));
4044 break;
4045case OP_BitCastPrimUint64:
4046 Text.Op = PrintName("BitCastPrimUint64");
4047 Text.Args.push_back(printArg<bool>(P, PC));
4048 Text.Args.push_back(printArg<uint32_t>(P, PC));
4049 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4050 Text.Args.push_back(printArg<const Type *>(P, PC));
4051 break;
4052case OP_BitCastPrimSint64:
4053 Text.Op = PrintName("BitCastPrimSint64");
4054 Text.Args.push_back(printArg<bool>(P, PC));
4055 Text.Args.push_back(printArg<uint32_t>(P, PC));
4056 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4057 Text.Args.push_back(printArg<const Type *>(P, PC));
4058 break;
4059case OP_BitCastPrimIntAP:
4060 Text.Op = PrintName("BitCastPrimIntAP");
4061 Text.Args.push_back(printArg<bool>(P, PC));
4062 Text.Args.push_back(printArg<uint32_t>(P, PC));
4063 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4064 Text.Args.push_back(printArg<const Type *>(P, PC));
4065 break;
4066case OP_BitCastPrimIntAPS:
4067 Text.Op = PrintName("BitCastPrimIntAPS");
4068 Text.Args.push_back(printArg<bool>(P, PC));
4069 Text.Args.push_back(printArg<uint32_t>(P, PC));
4070 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4071 Text.Args.push_back(printArg<const Type *>(P, PC));
4072 break;
4073case OP_BitCastPrimBool:
4074 Text.Op = PrintName("BitCastPrimBool");
4075 Text.Args.push_back(printArg<bool>(P, PC));
4076 Text.Args.push_back(printArg<uint32_t>(P, PC));
4077 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4078 Text.Args.push_back(printArg<const Type *>(P, PC));
4079 break;
4080case OP_BitCastPrimFloat:
4081 Text.Op = PrintName("BitCastPrimFloat");
4082 Text.Args.push_back(printArg<bool>(P, PC));
4083 Text.Args.push_back(printArg<uint32_t>(P, PC));
4084 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4085 Text.Args.push_back(printArg<const Type *>(P, PC));
4086 break;
4087case OP_BitCastPrimPtr:
4088 Text.Op = PrintName("BitCastPrimPtr");
4089 Text.Args.push_back(printArg<bool>(P, PC));
4090 Text.Args.push_back(printArg<uint32_t>(P, PC));
4091 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4092 Text.Args.push_back(printArg<const Type *>(P, PC));
4093 break;
4094case OP_BitCastPrimMemberPtr:
4095 Text.Op = PrintName("BitCastPrimMemberPtr");
4096 Text.Args.push_back(printArg<bool>(P, PC));
4097 Text.Args.push_back(printArg<uint32_t>(P, PC));
4098 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
4099 Text.Args.push_back(printArg<const Type *>(P, PC));
4100 break;
4101#endif
4102#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4103bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4104bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4105bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4106bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4107bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4108bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4109bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4110bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4111bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4112bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4113bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4114bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4115bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4116bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4117#endif
4118#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4119[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
4120#endif
4121#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4122bool
4123#if defined(GET_EVAL_IMPL)
4124EvalEmitter
4125#else
4126ByteCodeEmitter
4127#endif
4128::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
4129 switch (T0) {
4130 case PT_Uint8:
4131 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
4132 case PT_Sint8:
4133 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
4134 case PT_Uint16:
4135 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
4136 case PT_Sint16:
4137 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
4138 case PT_Uint32:
4139 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
4140 case PT_Sint32:
4141 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
4142 case PT_Uint64:
4143 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
4144 case PT_Sint64:
4145 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
4146 case PT_IntAP:
4147 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
4148 case PT_IntAPS:
4149 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
4150 case PT_Bool:
4151 return emitBitCastPrimBool(A0, A1, A2, A3, I);
4152 case PT_Float:
4153 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
4154 case PT_Ptr:
4155 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
4156 case PT_MemberPtr:
4157 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
4158 default: llvm_unreachable("invalid type: emitBitCastPrim");
4159 }
4160 llvm_unreachable("invalid enum value");
4161}
4162#endif
4163#ifdef GET_LINK_IMPL
4164bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4165 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
4166}
4167bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4168 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
4169}
4170bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4171 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
4172}
4173bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4174 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
4175}
4176bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4177 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
4178}
4179bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4180 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
4181}
4182bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4183 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
4184}
4185bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4186 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
4187}
4188bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4189 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
4190}
4191bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4192 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
4193}
4194bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4195 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
4196}
4197bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4198 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
4199}
4200bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4201 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
4202}
4203bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4204 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
4205}
4206#endif
4207#ifdef GET_EVAL_IMPL
4208bool EvalEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4209 if (!isActive()) return true;
4210 CurrentSource = L;
4211 return BitCastPrim<PT_Uint8>(S, OpPC, A0, A1, A2, A3);
4212}
4213bool EvalEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4214 if (!isActive()) return true;
4215 CurrentSource = L;
4216 return BitCastPrim<PT_Sint8>(S, OpPC, A0, A1, A2, A3);
4217}
4218bool EvalEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4219 if (!isActive()) return true;
4220 CurrentSource = L;
4221 return BitCastPrim<PT_Uint16>(S, OpPC, A0, A1, A2, A3);
4222}
4223bool EvalEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4224 if (!isActive()) return true;
4225 CurrentSource = L;
4226 return BitCastPrim<PT_Sint16>(S, OpPC, A0, A1, A2, A3);
4227}
4228bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4229 if (!isActive()) return true;
4230 CurrentSource = L;
4231 return BitCastPrim<PT_Uint32>(S, OpPC, A0, A1, A2, A3);
4232}
4233bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4234 if (!isActive()) return true;
4235 CurrentSource = L;
4236 return BitCastPrim<PT_Sint32>(S, OpPC, A0, A1, A2, A3);
4237}
4238bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4239 if (!isActive()) return true;
4240 CurrentSource = L;
4241 return BitCastPrim<PT_Uint64>(S, OpPC, A0, A1, A2, A3);
4242}
4243bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4244 if (!isActive()) return true;
4245 CurrentSource = L;
4246 return BitCastPrim<PT_Sint64>(S, OpPC, A0, A1, A2, A3);
4247}
4248bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4249 if (!isActive()) return true;
4250 CurrentSource = L;
4251 return BitCastPrim<PT_IntAP>(S, OpPC, A0, A1, A2, A3);
4252}
4253bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4254 if (!isActive()) return true;
4255 CurrentSource = L;
4256 return BitCastPrim<PT_IntAPS>(S, OpPC, A0, A1, A2, A3);
4257}
4258bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4259 if (!isActive()) return true;
4260 CurrentSource = L;
4261 return BitCastPrim<PT_Bool>(S, OpPC, A0, A1, A2, A3);
4262}
4263bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4264 if (!isActive()) return true;
4265 CurrentSource = L;
4266 return BitCastPrim<PT_Float>(S, OpPC, A0, A1, A2, A3);
4267}
4268bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4269 if (!isActive()) return true;
4270 CurrentSource = L;
4271 return BitCastPrim<PT_Ptr>(S, OpPC, A0, A1, A2, A3);
4272}
4273bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4274 if (!isActive()) return true;
4275 CurrentSource = L;
4276 return BitCastPrim<PT_MemberPtr>(S, OpPC, A0, A1, A2, A3);
4277}
4278#endif
4279#ifdef GET_OPCODE_NAMES
4280OP_BitOrSint8,
4281OP_BitOrUint8,
4282OP_BitOrSint16,
4283OP_BitOrUint16,
4284OP_BitOrSint32,
4285OP_BitOrUint32,
4286OP_BitOrSint64,
4287OP_BitOrUint64,
4288OP_BitOrIntAP,
4289OP_BitOrIntAPS,
4290OP_BitOrFixedPoint,
4291#endif
4292#ifdef GET_INTERPFN_LIST
4293&Interp_BitOrSint8,
4294&Interp_BitOrUint8,
4295&Interp_BitOrSint16,
4296&Interp_BitOrUint16,
4297&Interp_BitOrSint32,
4298&Interp_BitOrUint32,
4299&Interp_BitOrSint64,
4300&Interp_BitOrUint64,
4301&Interp_BitOrIntAP,
4302&Interp_BitOrIntAPS,
4303&Interp_BitOrFixedPoint,
4304#endif
4305#ifdef GET_INTERPFN_DISPATCHERS
4306PRESERVE_NONE
4307static bool Interp_BitOrSint8(InterpState &S, CodePtr &PC) {
4308 if (!BitOr<PT_Sint8>(S, PC))
4309 return false;
4310#if USE_TAILCALLS
4311 MUSTTAIL return InterpNext(S, PC);
4312#else
4313 return true;
4314#endif
4315}
4316PRESERVE_NONE
4317static bool Interp_BitOrUint8(InterpState &S, CodePtr &PC) {
4318 if (!BitOr<PT_Uint8>(S, PC))
4319 return false;
4320#if USE_TAILCALLS
4321 MUSTTAIL return InterpNext(S, PC);
4322#else
4323 return true;
4324#endif
4325}
4326PRESERVE_NONE
4327static bool Interp_BitOrSint16(InterpState &S, CodePtr &PC) {
4328 if (!BitOr<PT_Sint16>(S, PC))
4329 return false;
4330#if USE_TAILCALLS
4331 MUSTTAIL return InterpNext(S, PC);
4332#else
4333 return true;
4334#endif
4335}
4336PRESERVE_NONE
4337static bool Interp_BitOrUint16(InterpState &S, CodePtr &PC) {
4338 if (!BitOr<PT_Uint16>(S, PC))
4339 return false;
4340#if USE_TAILCALLS
4341 MUSTTAIL return InterpNext(S, PC);
4342#else
4343 return true;
4344#endif
4345}
4346PRESERVE_NONE
4347static bool Interp_BitOrSint32(InterpState &S, CodePtr &PC) {
4348 if (!BitOr<PT_Sint32>(S, PC))
4349 return false;
4350#if USE_TAILCALLS
4351 MUSTTAIL return InterpNext(S, PC);
4352#else
4353 return true;
4354#endif
4355}
4356PRESERVE_NONE
4357static bool Interp_BitOrUint32(InterpState &S, CodePtr &PC) {
4358 if (!BitOr<PT_Uint32>(S, PC))
4359 return false;
4360#if USE_TAILCALLS
4361 MUSTTAIL return InterpNext(S, PC);
4362#else
4363 return true;
4364#endif
4365}
4366PRESERVE_NONE
4367static bool Interp_BitOrSint64(InterpState &S, CodePtr &PC) {
4368 if (!BitOr<PT_Sint64>(S, PC))
4369 return false;
4370#if USE_TAILCALLS
4371 MUSTTAIL return InterpNext(S, PC);
4372#else
4373 return true;
4374#endif
4375}
4376PRESERVE_NONE
4377static bool Interp_BitOrUint64(InterpState &S, CodePtr &PC) {
4378 if (!BitOr<PT_Uint64>(S, PC))
4379 return false;
4380#if USE_TAILCALLS
4381 MUSTTAIL return InterpNext(S, PC);
4382#else
4383 return true;
4384#endif
4385}
4386PRESERVE_NONE
4387static bool Interp_BitOrIntAP(InterpState &S, CodePtr &PC) {
4388 if (!BitOr<PT_IntAP>(S, PC))
4389 return false;
4390#if USE_TAILCALLS
4391 MUSTTAIL return InterpNext(S, PC);
4392#else
4393 return true;
4394#endif
4395}
4396PRESERVE_NONE
4397static bool Interp_BitOrIntAPS(InterpState &S, CodePtr &PC) {
4398 if (!BitOr<PT_IntAPS>(S, PC))
4399 return false;
4400#if USE_TAILCALLS
4401 MUSTTAIL return InterpNext(S, PC);
4402#else
4403 return true;
4404#endif
4405}
4406PRESERVE_NONE
4407static bool Interp_BitOrFixedPoint(InterpState &S, CodePtr &PC) {
4408 if (!BitOr<PT_FixedPoint>(S, PC))
4409 return false;
4410#if USE_TAILCALLS
4411 MUSTTAIL return InterpNext(S, PC);
4412#else
4413 return true;
4414#endif
4415}
4416#endif
4417#ifdef GET_DISASM
4418case OP_BitOrSint8:
4419 Text.Op = PrintName("BitOrSint8");
4420 break;
4421case OP_BitOrUint8:
4422 Text.Op = PrintName("BitOrUint8");
4423 break;
4424case OP_BitOrSint16:
4425 Text.Op = PrintName("BitOrSint16");
4426 break;
4427case OP_BitOrUint16:
4428 Text.Op = PrintName("BitOrUint16");
4429 break;
4430case OP_BitOrSint32:
4431 Text.Op = PrintName("BitOrSint32");
4432 break;
4433case OP_BitOrUint32:
4434 Text.Op = PrintName("BitOrUint32");
4435 break;
4436case OP_BitOrSint64:
4437 Text.Op = PrintName("BitOrSint64");
4438 break;
4439case OP_BitOrUint64:
4440 Text.Op = PrintName("BitOrUint64");
4441 break;
4442case OP_BitOrIntAP:
4443 Text.Op = PrintName("BitOrIntAP");
4444 break;
4445case OP_BitOrIntAPS:
4446 Text.Op = PrintName("BitOrIntAPS");
4447 break;
4448case OP_BitOrFixedPoint:
4449 Text.Op = PrintName("BitOrFixedPoint");
4450 break;
4451#endif
4452#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4453bool emitBitOrSint8(SourceInfo);
4454bool emitBitOrUint8(SourceInfo);
4455bool emitBitOrSint16(SourceInfo);
4456bool emitBitOrUint16(SourceInfo);
4457bool emitBitOrSint32(SourceInfo);
4458bool emitBitOrUint32(SourceInfo);
4459bool emitBitOrSint64(SourceInfo);
4460bool emitBitOrUint64(SourceInfo);
4461bool emitBitOrIntAP(SourceInfo);
4462bool emitBitOrIntAPS(SourceInfo);
4463bool emitBitOrFixedPoint(SourceInfo);
4464#endif
4465#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4466[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
4467#endif
4468#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4469bool
4470#if defined(GET_EVAL_IMPL)
4471EvalEmitter
4472#else
4473ByteCodeEmitter
4474#endif
4475::emitBitOr(PrimType T0, SourceInfo I) {
4476 switch (T0) {
4477 case PT_Sint8:
4478 return emitBitOrSint8(I);
4479 case PT_Uint8:
4480 return emitBitOrUint8(I);
4481 case PT_Sint16:
4482 return emitBitOrSint16(I);
4483 case PT_Uint16:
4484 return emitBitOrUint16(I);
4485 case PT_Sint32:
4486 return emitBitOrSint32(I);
4487 case PT_Uint32:
4488 return emitBitOrUint32(I);
4489 case PT_Sint64:
4490 return emitBitOrSint64(I);
4491 case PT_Uint64:
4492 return emitBitOrUint64(I);
4493 case PT_IntAP:
4494 return emitBitOrIntAP(I);
4495 case PT_IntAPS:
4496 return emitBitOrIntAPS(I);
4497 case PT_FixedPoint:
4498 return emitBitOrFixedPoint(I);
4499 default: llvm_unreachable("invalid type: emitBitOr");
4500 }
4501 llvm_unreachable("invalid enum value");
4502}
4503#endif
4504#ifdef GET_LINK_IMPL
4505bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
4506 return emitOp<>(OP_BitOrSint8, L);
4507}
4508bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
4509 return emitOp<>(OP_BitOrUint8, L);
4510}
4511bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
4512 return emitOp<>(OP_BitOrSint16, L);
4513}
4514bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
4515 return emitOp<>(OP_BitOrUint16, L);
4516}
4517bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
4518 return emitOp<>(OP_BitOrSint32, L);
4519}
4520bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
4521 return emitOp<>(OP_BitOrUint32, L);
4522}
4523bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
4524 return emitOp<>(OP_BitOrSint64, L);
4525}
4526bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
4527 return emitOp<>(OP_BitOrUint64, L);
4528}
4529bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
4530 return emitOp<>(OP_BitOrIntAP, L);
4531}
4532bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
4533 return emitOp<>(OP_BitOrIntAPS, L);
4534}
4535bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
4536 return emitOp<>(OP_BitOrFixedPoint, L);
4537}
4538#endif
4539#ifdef GET_EVAL_IMPL
4540bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
4541 if (!isActive()) return true;
4542 CurrentSource = L;
4543 return BitOr<PT_Sint8>(S, OpPC);
4544}
4545bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
4546 if (!isActive()) return true;
4547 CurrentSource = L;
4548 return BitOr<PT_Uint8>(S, OpPC);
4549}
4550bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
4551 if (!isActive()) return true;
4552 CurrentSource = L;
4553 return BitOr<PT_Sint16>(S, OpPC);
4554}
4555bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
4556 if (!isActive()) return true;
4557 CurrentSource = L;
4558 return BitOr<PT_Uint16>(S, OpPC);
4559}
4560bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
4561 if (!isActive()) return true;
4562 CurrentSource = L;
4563 return BitOr<PT_Sint32>(S, OpPC);
4564}
4565bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
4566 if (!isActive()) return true;
4567 CurrentSource = L;
4568 return BitOr<PT_Uint32>(S, OpPC);
4569}
4570bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
4571 if (!isActive()) return true;
4572 CurrentSource = L;
4573 return BitOr<PT_Sint64>(S, OpPC);
4574}
4575bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
4576 if (!isActive()) return true;
4577 CurrentSource = L;
4578 return BitOr<PT_Uint64>(S, OpPC);
4579}
4580bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
4581 if (!isActive()) return true;
4582 CurrentSource = L;
4583 return BitOr<PT_IntAP>(S, OpPC);
4584}
4585bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
4586 if (!isActive()) return true;
4587 CurrentSource = L;
4588 return BitOr<PT_IntAPS>(S, OpPC);
4589}
4590bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
4591 if (!isActive()) return true;
4592 CurrentSource = L;
4593 return BitOr<PT_FixedPoint>(S, OpPC);
4594}
4595#endif
4596#ifdef GET_OPCODE_NAMES
4597OP_BitXorSint8,
4598OP_BitXorUint8,
4599OP_BitXorSint16,
4600OP_BitXorUint16,
4601OP_BitXorSint32,
4602OP_BitXorUint32,
4603OP_BitXorSint64,
4604OP_BitXorUint64,
4605OP_BitXorIntAP,
4606OP_BitXorIntAPS,
4607OP_BitXorFixedPoint,
4608#endif
4609#ifdef GET_INTERPFN_LIST
4610&Interp_BitXorSint8,
4611&Interp_BitXorUint8,
4612&Interp_BitXorSint16,
4613&Interp_BitXorUint16,
4614&Interp_BitXorSint32,
4615&Interp_BitXorUint32,
4616&Interp_BitXorSint64,
4617&Interp_BitXorUint64,
4618&Interp_BitXorIntAP,
4619&Interp_BitXorIntAPS,
4620&Interp_BitXorFixedPoint,
4621#endif
4622#ifdef GET_INTERPFN_DISPATCHERS
4623PRESERVE_NONE
4624static bool Interp_BitXorSint8(InterpState &S, CodePtr &PC) {
4625 if (!BitXor<PT_Sint8>(S, PC))
4626 return false;
4627#if USE_TAILCALLS
4628 MUSTTAIL return InterpNext(S, PC);
4629#else
4630 return true;
4631#endif
4632}
4633PRESERVE_NONE
4634static bool Interp_BitXorUint8(InterpState &S, CodePtr &PC) {
4635 if (!BitXor<PT_Uint8>(S, PC))
4636 return false;
4637#if USE_TAILCALLS
4638 MUSTTAIL return InterpNext(S, PC);
4639#else
4640 return true;
4641#endif
4642}
4643PRESERVE_NONE
4644static bool Interp_BitXorSint16(InterpState &S, CodePtr &PC) {
4645 if (!BitXor<PT_Sint16>(S, PC))
4646 return false;
4647#if USE_TAILCALLS
4648 MUSTTAIL return InterpNext(S, PC);
4649#else
4650 return true;
4651#endif
4652}
4653PRESERVE_NONE
4654static bool Interp_BitXorUint16(InterpState &S, CodePtr &PC) {
4655 if (!BitXor<PT_Uint16>(S, PC))
4656 return false;
4657#if USE_TAILCALLS
4658 MUSTTAIL return InterpNext(S, PC);
4659#else
4660 return true;
4661#endif
4662}
4663PRESERVE_NONE
4664static bool Interp_BitXorSint32(InterpState &S, CodePtr &PC) {
4665 if (!BitXor<PT_Sint32>(S, PC))
4666 return false;
4667#if USE_TAILCALLS
4668 MUSTTAIL return InterpNext(S, PC);
4669#else
4670 return true;
4671#endif
4672}
4673PRESERVE_NONE
4674static bool Interp_BitXorUint32(InterpState &S, CodePtr &PC) {
4675 if (!BitXor<PT_Uint32>(S, PC))
4676 return false;
4677#if USE_TAILCALLS
4678 MUSTTAIL return InterpNext(S, PC);
4679#else
4680 return true;
4681#endif
4682}
4683PRESERVE_NONE
4684static bool Interp_BitXorSint64(InterpState &S, CodePtr &PC) {
4685 if (!BitXor<PT_Sint64>(S, PC))
4686 return false;
4687#if USE_TAILCALLS
4688 MUSTTAIL return InterpNext(S, PC);
4689#else
4690 return true;
4691#endif
4692}
4693PRESERVE_NONE
4694static bool Interp_BitXorUint64(InterpState &S, CodePtr &PC) {
4695 if (!BitXor<PT_Uint64>(S, PC))
4696 return false;
4697#if USE_TAILCALLS
4698 MUSTTAIL return InterpNext(S, PC);
4699#else
4700 return true;
4701#endif
4702}
4703PRESERVE_NONE
4704static bool Interp_BitXorIntAP(InterpState &S, CodePtr &PC) {
4705 if (!BitXor<PT_IntAP>(S, PC))
4706 return false;
4707#if USE_TAILCALLS
4708 MUSTTAIL return InterpNext(S, PC);
4709#else
4710 return true;
4711#endif
4712}
4713PRESERVE_NONE
4714static bool Interp_BitXorIntAPS(InterpState &S, CodePtr &PC) {
4715 if (!BitXor<PT_IntAPS>(S, PC))
4716 return false;
4717#if USE_TAILCALLS
4718 MUSTTAIL return InterpNext(S, PC);
4719#else
4720 return true;
4721#endif
4722}
4723PRESERVE_NONE
4724static bool Interp_BitXorFixedPoint(InterpState &S, CodePtr &PC) {
4725 if (!BitXor<PT_FixedPoint>(S, PC))
4726 return false;
4727#if USE_TAILCALLS
4728 MUSTTAIL return InterpNext(S, PC);
4729#else
4730 return true;
4731#endif
4732}
4733#endif
4734#ifdef GET_DISASM
4735case OP_BitXorSint8:
4736 Text.Op = PrintName("BitXorSint8");
4737 break;
4738case OP_BitXorUint8:
4739 Text.Op = PrintName("BitXorUint8");
4740 break;
4741case OP_BitXorSint16:
4742 Text.Op = PrintName("BitXorSint16");
4743 break;
4744case OP_BitXorUint16:
4745 Text.Op = PrintName("BitXorUint16");
4746 break;
4747case OP_BitXorSint32:
4748 Text.Op = PrintName("BitXorSint32");
4749 break;
4750case OP_BitXorUint32:
4751 Text.Op = PrintName("BitXorUint32");
4752 break;
4753case OP_BitXorSint64:
4754 Text.Op = PrintName("BitXorSint64");
4755 break;
4756case OP_BitXorUint64:
4757 Text.Op = PrintName("BitXorUint64");
4758 break;
4759case OP_BitXorIntAP:
4760 Text.Op = PrintName("BitXorIntAP");
4761 break;
4762case OP_BitXorIntAPS:
4763 Text.Op = PrintName("BitXorIntAPS");
4764 break;
4765case OP_BitXorFixedPoint:
4766 Text.Op = PrintName("BitXorFixedPoint");
4767 break;
4768#endif
4769#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4770bool emitBitXorSint8(SourceInfo);
4771bool emitBitXorUint8(SourceInfo);
4772bool emitBitXorSint16(SourceInfo);
4773bool emitBitXorUint16(SourceInfo);
4774bool emitBitXorSint32(SourceInfo);
4775bool emitBitXorUint32(SourceInfo);
4776bool emitBitXorSint64(SourceInfo);
4777bool emitBitXorUint64(SourceInfo);
4778bool emitBitXorIntAP(SourceInfo);
4779bool emitBitXorIntAPS(SourceInfo);
4780bool emitBitXorFixedPoint(SourceInfo);
4781#endif
4782#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4783[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
4784#endif
4785#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4786bool
4787#if defined(GET_EVAL_IMPL)
4788EvalEmitter
4789#else
4790ByteCodeEmitter
4791#endif
4792::emitBitXor(PrimType T0, SourceInfo I) {
4793 switch (T0) {
4794 case PT_Sint8:
4795 return emitBitXorSint8(I);
4796 case PT_Uint8:
4797 return emitBitXorUint8(I);
4798 case PT_Sint16:
4799 return emitBitXorSint16(I);
4800 case PT_Uint16:
4801 return emitBitXorUint16(I);
4802 case PT_Sint32:
4803 return emitBitXorSint32(I);
4804 case PT_Uint32:
4805 return emitBitXorUint32(I);
4806 case PT_Sint64:
4807 return emitBitXorSint64(I);
4808 case PT_Uint64:
4809 return emitBitXorUint64(I);
4810 case PT_IntAP:
4811 return emitBitXorIntAP(I);
4812 case PT_IntAPS:
4813 return emitBitXorIntAPS(I);
4814 case PT_FixedPoint:
4815 return emitBitXorFixedPoint(I);
4816 default: llvm_unreachable("invalid type: emitBitXor");
4817 }
4818 llvm_unreachable("invalid enum value");
4819}
4820#endif
4821#ifdef GET_LINK_IMPL
4822bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
4823 return emitOp<>(OP_BitXorSint8, L);
4824}
4825bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
4826 return emitOp<>(OP_BitXorUint8, L);
4827}
4828bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
4829 return emitOp<>(OP_BitXorSint16, L);
4830}
4831bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
4832 return emitOp<>(OP_BitXorUint16, L);
4833}
4834bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
4835 return emitOp<>(OP_BitXorSint32, L);
4836}
4837bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
4838 return emitOp<>(OP_BitXorUint32, L);
4839}
4840bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
4841 return emitOp<>(OP_BitXorSint64, L);
4842}
4843bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
4844 return emitOp<>(OP_BitXorUint64, L);
4845}
4846bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
4847 return emitOp<>(OP_BitXorIntAP, L);
4848}
4849bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
4850 return emitOp<>(OP_BitXorIntAPS, L);
4851}
4852bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
4853 return emitOp<>(OP_BitXorFixedPoint, L);
4854}
4855#endif
4856#ifdef GET_EVAL_IMPL
4857bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
4858 if (!isActive()) return true;
4859 CurrentSource = L;
4860 return BitXor<PT_Sint8>(S, OpPC);
4861}
4862bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
4863 if (!isActive()) return true;
4864 CurrentSource = L;
4865 return BitXor<PT_Uint8>(S, OpPC);
4866}
4867bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
4868 if (!isActive()) return true;
4869 CurrentSource = L;
4870 return BitXor<PT_Sint16>(S, OpPC);
4871}
4872bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
4873 if (!isActive()) return true;
4874 CurrentSource = L;
4875 return BitXor<PT_Uint16>(S, OpPC);
4876}
4877bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
4878 if (!isActive()) return true;
4879 CurrentSource = L;
4880 return BitXor<PT_Sint32>(S, OpPC);
4881}
4882bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
4883 if (!isActive()) return true;
4884 CurrentSource = L;
4885 return BitXor<PT_Uint32>(S, OpPC);
4886}
4887bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
4888 if (!isActive()) return true;
4889 CurrentSource = L;
4890 return BitXor<PT_Sint64>(S, OpPC);
4891}
4892bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
4893 if (!isActive()) return true;
4894 CurrentSource = L;
4895 return BitXor<PT_Uint64>(S, OpPC);
4896}
4897bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
4898 if (!isActive()) return true;
4899 CurrentSource = L;
4900 return BitXor<PT_IntAP>(S, OpPC);
4901}
4902bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
4903 if (!isActive()) return true;
4904 CurrentSource = L;
4905 return BitXor<PT_IntAPS>(S, OpPC);
4906}
4907bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
4908 if (!isActive()) return true;
4909 CurrentSource = L;
4910 return BitXor<PT_FixedPoint>(S, OpPC);
4911}
4912#endif
4913#ifdef GET_OPCODE_NAMES
4914OP_CMP3Sint8,
4915OP_CMP3Uint8,
4916OP_CMP3Sint16,
4917OP_CMP3Uint16,
4918OP_CMP3Sint32,
4919OP_CMP3Uint32,
4920OP_CMP3Sint64,
4921OP_CMP3Uint64,
4922OP_CMP3IntAP,
4923OP_CMP3IntAPS,
4924OP_CMP3Bool,
4925OP_CMP3FixedPoint,
4926OP_CMP3Ptr,
4927OP_CMP3Float,
4928#endif
4929#ifdef GET_INTERPFN_LIST
4930&Interp_CMP3Sint8,
4931&Interp_CMP3Uint8,
4932&Interp_CMP3Sint16,
4933&Interp_CMP3Uint16,
4934&Interp_CMP3Sint32,
4935&Interp_CMP3Uint32,
4936&Interp_CMP3Sint64,
4937&Interp_CMP3Uint64,
4938&Interp_CMP3IntAP,
4939&Interp_CMP3IntAPS,
4940&Interp_CMP3Bool,
4941&Interp_CMP3FixedPoint,
4942&Interp_CMP3Ptr,
4943&Interp_CMP3Float,
4944#endif
4945#ifdef GET_INTERPFN_DISPATCHERS
4946PRESERVE_NONE
4947static bool Interp_CMP3Sint8(InterpState &S, CodePtr &PC) {
4948 {
4949 CodePtr OpPC = PC;
4950 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4951 if (!CMP3<PT_Sint8>(S, OpPC, V0))
4952 return false;
4953 }
4954#if USE_TAILCALLS
4955 MUSTTAIL return InterpNext(S, PC);
4956#else
4957 return true;
4958#endif
4959}
4960PRESERVE_NONE
4961static bool Interp_CMP3Uint8(InterpState &S, CodePtr &PC) {
4962 {
4963 CodePtr OpPC = PC;
4964 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4965 if (!CMP3<PT_Uint8>(S, OpPC, V0))
4966 return false;
4967 }
4968#if USE_TAILCALLS
4969 MUSTTAIL return InterpNext(S, PC);
4970#else
4971 return true;
4972#endif
4973}
4974PRESERVE_NONE
4975static bool Interp_CMP3Sint16(InterpState &S, CodePtr &PC) {
4976 {
4977 CodePtr OpPC = PC;
4978 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4979 if (!CMP3<PT_Sint16>(S, OpPC, V0))
4980 return false;
4981 }
4982#if USE_TAILCALLS
4983 MUSTTAIL return InterpNext(S, PC);
4984#else
4985 return true;
4986#endif
4987}
4988PRESERVE_NONE
4989static bool Interp_CMP3Uint16(InterpState &S, CodePtr &PC) {
4990 {
4991 CodePtr OpPC = PC;
4992 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4993 if (!CMP3<PT_Uint16>(S, OpPC, V0))
4994 return false;
4995 }
4996#if USE_TAILCALLS
4997 MUSTTAIL return InterpNext(S, PC);
4998#else
4999 return true;
5000#endif
5001}
5002PRESERVE_NONE
5003static bool Interp_CMP3Sint32(InterpState &S, CodePtr &PC) {
5004 {
5005 CodePtr OpPC = PC;
5006 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5007 if (!CMP3<PT_Sint32>(S, OpPC, V0))
5008 return false;
5009 }
5010#if USE_TAILCALLS
5011 MUSTTAIL return InterpNext(S, PC);
5012#else
5013 return true;
5014#endif
5015}
5016PRESERVE_NONE
5017static bool Interp_CMP3Uint32(InterpState &S, CodePtr &PC) {
5018 {
5019 CodePtr OpPC = PC;
5020 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5021 if (!CMP3<PT_Uint32>(S, OpPC, V0))
5022 return false;
5023 }
5024#if USE_TAILCALLS
5025 MUSTTAIL return InterpNext(S, PC);
5026#else
5027 return true;
5028#endif
5029}
5030PRESERVE_NONE
5031static bool Interp_CMP3Sint64(InterpState &S, CodePtr &PC) {
5032 {
5033 CodePtr OpPC = PC;
5034 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5035 if (!CMP3<PT_Sint64>(S, OpPC, V0))
5036 return false;
5037 }
5038#if USE_TAILCALLS
5039 MUSTTAIL return InterpNext(S, PC);
5040#else
5041 return true;
5042#endif
5043}
5044PRESERVE_NONE
5045static bool Interp_CMP3Uint64(InterpState &S, CodePtr &PC) {
5046 {
5047 CodePtr OpPC = PC;
5048 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5049 if (!CMP3<PT_Uint64>(S, OpPC, V0))
5050 return false;
5051 }
5052#if USE_TAILCALLS
5053 MUSTTAIL return InterpNext(S, PC);
5054#else
5055 return true;
5056#endif
5057}
5058PRESERVE_NONE
5059static bool Interp_CMP3IntAP(InterpState &S, CodePtr &PC) {
5060 {
5061 CodePtr OpPC = PC;
5062 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5063 if (!CMP3<PT_IntAP>(S, OpPC, V0))
5064 return false;
5065 }
5066#if USE_TAILCALLS
5067 MUSTTAIL return InterpNext(S, PC);
5068#else
5069 return true;
5070#endif
5071}
5072PRESERVE_NONE
5073static bool Interp_CMP3IntAPS(InterpState &S, CodePtr &PC) {
5074 {
5075 CodePtr OpPC = PC;
5076 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5077 if (!CMP3<PT_IntAPS>(S, OpPC, V0))
5078 return false;
5079 }
5080#if USE_TAILCALLS
5081 MUSTTAIL return InterpNext(S, PC);
5082#else
5083 return true;
5084#endif
5085}
5086PRESERVE_NONE
5087static bool Interp_CMP3Bool(InterpState &S, CodePtr &PC) {
5088 {
5089 CodePtr OpPC = PC;
5090 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5091 if (!CMP3<PT_Bool>(S, OpPC, V0))
5092 return false;
5093 }
5094#if USE_TAILCALLS
5095 MUSTTAIL return InterpNext(S, PC);
5096#else
5097 return true;
5098#endif
5099}
5100PRESERVE_NONE
5101static bool Interp_CMP3FixedPoint(InterpState &S, CodePtr &PC) {
5102 {
5103 CodePtr OpPC = PC;
5104 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5105 if (!CMP3<PT_FixedPoint>(S, OpPC, V0))
5106 return false;
5107 }
5108#if USE_TAILCALLS
5109 MUSTTAIL return InterpNext(S, PC);
5110#else
5111 return true;
5112#endif
5113}
5114PRESERVE_NONE
5115static bool Interp_CMP3Ptr(InterpState &S, CodePtr &PC) {
5116 {
5117 CodePtr OpPC = PC;
5118 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5119 if (!CMP3<PT_Ptr>(S, OpPC, V0))
5120 return false;
5121 }
5122#if USE_TAILCALLS
5123 MUSTTAIL return InterpNext(S, PC);
5124#else
5125 return true;
5126#endif
5127}
5128PRESERVE_NONE
5129static bool Interp_CMP3Float(InterpState &S, CodePtr &PC) {
5130 {
5131 CodePtr OpPC = PC;
5132 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
5133 if (!CMP3<PT_Float>(S, OpPC, V0))
5134 return false;
5135 }
5136#if USE_TAILCALLS
5137 MUSTTAIL return InterpNext(S, PC);
5138#else
5139 return true;
5140#endif
5141}
5142#endif
5143#ifdef GET_DISASM
5144case OP_CMP3Sint8:
5145 Text.Op = PrintName("CMP3Sint8");
5146 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5147 break;
5148case OP_CMP3Uint8:
5149 Text.Op = PrintName("CMP3Uint8");
5150 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5151 break;
5152case OP_CMP3Sint16:
5153 Text.Op = PrintName("CMP3Sint16");
5154 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5155 break;
5156case OP_CMP3Uint16:
5157 Text.Op = PrintName("CMP3Uint16");
5158 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5159 break;
5160case OP_CMP3Sint32:
5161 Text.Op = PrintName("CMP3Sint32");
5162 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5163 break;
5164case OP_CMP3Uint32:
5165 Text.Op = PrintName("CMP3Uint32");
5166 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5167 break;
5168case OP_CMP3Sint64:
5169 Text.Op = PrintName("CMP3Sint64");
5170 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5171 break;
5172case OP_CMP3Uint64:
5173 Text.Op = PrintName("CMP3Uint64");
5174 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5175 break;
5176case OP_CMP3IntAP:
5177 Text.Op = PrintName("CMP3IntAP");
5178 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5179 break;
5180case OP_CMP3IntAPS:
5181 Text.Op = PrintName("CMP3IntAPS");
5182 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5183 break;
5184case OP_CMP3Bool:
5185 Text.Op = PrintName("CMP3Bool");
5186 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5187 break;
5188case OP_CMP3FixedPoint:
5189 Text.Op = PrintName("CMP3FixedPoint");
5190 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5191 break;
5192case OP_CMP3Ptr:
5193 Text.Op = PrintName("CMP3Ptr");
5194 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5195 break;
5196case OP_CMP3Float:
5197 Text.Op = PrintName("CMP3Float");
5198 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5199 break;
5200#endif
5201#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5202bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
5203bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
5204bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
5205bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
5206bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
5207bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
5208bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
5209bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
5210bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
5211bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
5212bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
5213bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
5214bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
5215bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
5216#endif
5217#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5218[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
5219#endif
5220#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5221bool
5222#if defined(GET_EVAL_IMPL)
5223EvalEmitter
5224#else
5225ByteCodeEmitter
5226#endif
5227::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
5228 switch (T0) {
5229 case PT_Sint8:
5230 return emitCMP3Sint8(A0, I);
5231 case PT_Uint8:
5232 return emitCMP3Uint8(A0, I);
5233 case PT_Sint16:
5234 return emitCMP3Sint16(A0, I);
5235 case PT_Uint16:
5236 return emitCMP3Uint16(A0, I);
5237 case PT_Sint32:
5238 return emitCMP3Sint32(A0, I);
5239 case PT_Uint32:
5240 return emitCMP3Uint32(A0, I);
5241 case PT_Sint64:
5242 return emitCMP3Sint64(A0, I);
5243 case PT_Uint64:
5244 return emitCMP3Uint64(A0, I);
5245 case PT_IntAP:
5246 return emitCMP3IntAP(A0, I);
5247 case PT_IntAPS:
5248 return emitCMP3IntAPS(A0, I);
5249 case PT_Bool:
5250 return emitCMP3Bool(A0, I);
5251 case PT_FixedPoint:
5252 return emitCMP3FixedPoint(A0, I);
5253 case PT_Ptr:
5254 return emitCMP3Ptr(A0, I);
5255 case PT_Float:
5256 return emitCMP3Float(A0, I);
5257 default: llvm_unreachable("invalid type: emitCMP3");
5258 }
5259 llvm_unreachable("invalid enum value");
5260}
5261#endif
5262#ifdef GET_LINK_IMPL
5263bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5264 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
5265}
5266bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5267 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
5268}
5269bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5270 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
5271}
5272bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5273 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
5274}
5275bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5276 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
5277}
5278bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5279 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
5280}
5281bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5282 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
5283}
5284bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5285 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
5286}
5287bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5288 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
5289}
5290bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5291 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
5292}
5293bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5294 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
5295}
5296bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5297 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
5298}
5299bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5300 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
5301}
5302bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5303 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
5304}
5305#endif
5306#ifdef GET_EVAL_IMPL
5307bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5308 if (!isActive()) return true;
5309 CurrentSource = L;
5310 return CMP3<PT_Sint8>(S, OpPC, A0);
5311}
5312bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5313 if (!isActive()) return true;
5314 CurrentSource = L;
5315 return CMP3<PT_Uint8>(S, OpPC, A0);
5316}
5317bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5318 if (!isActive()) return true;
5319 CurrentSource = L;
5320 return CMP3<PT_Sint16>(S, OpPC, A0);
5321}
5322bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5323 if (!isActive()) return true;
5324 CurrentSource = L;
5325 return CMP3<PT_Uint16>(S, OpPC, A0);
5326}
5327bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5328 if (!isActive()) return true;
5329 CurrentSource = L;
5330 return CMP3<PT_Sint32>(S, OpPC, A0);
5331}
5332bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5333 if (!isActive()) return true;
5334 CurrentSource = L;
5335 return CMP3<PT_Uint32>(S, OpPC, A0);
5336}
5337bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5338 if (!isActive()) return true;
5339 CurrentSource = L;
5340 return CMP3<PT_Sint64>(S, OpPC, A0);
5341}
5342bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5343 if (!isActive()) return true;
5344 CurrentSource = L;
5345 return CMP3<PT_Uint64>(S, OpPC, A0);
5346}
5347bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5348 if (!isActive()) return true;
5349 CurrentSource = L;
5350 return CMP3<PT_IntAP>(S, OpPC, A0);
5351}
5352bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5353 if (!isActive()) return true;
5354 CurrentSource = L;
5355 return CMP3<PT_IntAPS>(S, OpPC, A0);
5356}
5357bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5358 if (!isActive()) return true;
5359 CurrentSource = L;
5360 return CMP3<PT_Bool>(S, OpPC, A0);
5361}
5362bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5363 if (!isActive()) return true;
5364 CurrentSource = L;
5365 return CMP3<PT_FixedPoint>(S, OpPC, A0);
5366}
5367bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5368 if (!isActive()) return true;
5369 CurrentSource = L;
5370 return CMP3<PT_Ptr>(S, OpPC, A0);
5371}
5372bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5373 if (!isActive()) return true;
5374 CurrentSource = L;
5375 return CMP3<PT_Float>(S, OpPC, A0);
5376}
5377#endif
5378#ifdef GET_OPCODE_NAMES
5379OP_Call,
5380#endif
5381#ifdef GET_INTERPFN_LIST
5382&Interp_Call,
5383#endif
5384#ifdef GET_INTERPFN_DISPATCHERS
5385PRESERVE_NONE
5386static bool Interp_Call(InterpState &S, CodePtr &PC) {
5387 {
5388 CodePtr OpPC = PC;
5389 const auto V0 = ReadArg<const Function *>(S, PC);
5390 const auto V1 = ReadArg<uint32_t>(S, PC);
5391 if (!Call(S, OpPC, V0, V1))
5392 return false;
5393 }
5394#if USE_TAILCALLS
5395 MUSTTAIL return InterpNext(S, PC);
5396#else
5397 return true;
5398#endif
5399}
5400#endif
5401#ifdef GET_DISASM
5402case OP_Call:
5403 Text.Op = PrintName("Call");
5404 Text.Args.push_back(printArg<const Function *>(P, PC));
5405 Text.Args.push_back(printArg<uint32_t>(P, PC));
5406 break;
5407#endif
5408#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5409bool emitCall( const Function * , uint32_t , SourceInfo);
5410#endif
5411#ifdef GET_LINK_IMPL
5412bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5413 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
5414}
5415#endif
5416#ifdef GET_EVAL_IMPL
5417bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5418 if (!isActive()) return true;
5419 CurrentSource = L;
5420 return Call(S, OpPC, A0, A1);
5421}
5422#endif
5423#ifdef GET_OPCODE_NAMES
5424OP_CallBI,
5425#endif
5426#ifdef GET_INTERPFN_LIST
5427&Interp_CallBI,
5428#endif
5429#ifdef GET_INTERPFN_DISPATCHERS
5430PRESERVE_NONE
5431static bool Interp_CallBI(InterpState &S, CodePtr &PC) {
5432 {
5433 CodePtr OpPC = PC;
5434 const auto V0 = ReadArg<const CallExpr *>(S, PC);
5435 const auto V1 = ReadArg<uint32_t>(S, PC);
5436 if (!CallBI(S, OpPC, V0, V1))
5437 return false;
5438 }
5439#if USE_TAILCALLS
5440 MUSTTAIL return InterpNext(S, PC);
5441#else
5442 return true;
5443#endif
5444}
5445#endif
5446#ifdef GET_DISASM
5447case OP_CallBI:
5448 Text.Op = PrintName("CallBI");
5449 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
5450 Text.Args.push_back(printArg<uint32_t>(P, PC));
5451 break;
5452#endif
5453#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5454bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
5455#endif
5456#ifdef GET_LINK_IMPL
5457bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5458 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
5459}
5460#endif
5461#ifdef GET_EVAL_IMPL
5462bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5463 if (!isActive()) return true;
5464 CurrentSource = L;
5465 return CallBI(S, OpPC, A0, A1);
5466}
5467#endif
5468#ifdef GET_OPCODE_NAMES
5469OP_CallPtr,
5470#endif
5471#ifdef GET_INTERPFN_LIST
5472&Interp_CallPtr,
5473#endif
5474#ifdef GET_INTERPFN_DISPATCHERS
5475PRESERVE_NONE
5476static bool Interp_CallPtr(InterpState &S, CodePtr &PC) {
5477 {
5478 CodePtr OpPC = PC;
5479 const auto V0 = ReadArg<uint32_t>(S, PC);
5480 const auto V1 = ReadArg<const CallExpr *>(S, PC);
5481 if (!CallPtr(S, OpPC, V0, V1))
5482 return false;
5483 }
5484#if USE_TAILCALLS
5485 MUSTTAIL return InterpNext(S, PC);
5486#else
5487 return true;
5488#endif
5489}
5490#endif
5491#ifdef GET_DISASM
5492case OP_CallPtr:
5493 Text.Op = PrintName("CallPtr");
5494 Text.Args.push_back(printArg<uint32_t>(P, PC));
5495 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
5496 break;
5497#endif
5498#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5499bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
5500#endif
5501#ifdef GET_LINK_IMPL
5502bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5503 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
5504}
5505#endif
5506#ifdef GET_EVAL_IMPL
5507bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5508 if (!isActive()) return true;
5509 CurrentSource = L;
5510 return CallPtr(S, OpPC, A0, A1);
5511}
5512#endif
5513#ifdef GET_OPCODE_NAMES
5514OP_CallVar,
5515#endif
5516#ifdef GET_INTERPFN_LIST
5517&Interp_CallVar,
5518#endif
5519#ifdef GET_INTERPFN_DISPATCHERS
5520PRESERVE_NONE
5521static bool Interp_CallVar(InterpState &S, CodePtr &PC) {
5522 {
5523 CodePtr OpPC = PC;
5524 const auto V0 = ReadArg<const Function *>(S, PC);
5525 const auto V1 = ReadArg<uint32_t>(S, PC);
5526 if (!CallVar(S, OpPC, V0, V1))
5527 return false;
5528 }
5529#if USE_TAILCALLS
5530 MUSTTAIL return InterpNext(S, PC);
5531#else
5532 return true;
5533#endif
5534}
5535#endif
5536#ifdef GET_DISASM
5537case OP_CallVar:
5538 Text.Op = PrintName("CallVar");
5539 Text.Args.push_back(printArg<const Function *>(P, PC));
5540 Text.Args.push_back(printArg<uint32_t>(P, PC));
5541 break;
5542#endif
5543#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5544bool emitCallVar( const Function * , uint32_t , SourceInfo);
5545#endif
5546#ifdef GET_LINK_IMPL
5547bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5548 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
5549}
5550#endif
5551#ifdef GET_EVAL_IMPL
5552bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5553 if (!isActive()) return true;
5554 CurrentSource = L;
5555 return CallVar(S, OpPC, A0, A1);
5556}
5557#endif
5558#ifdef GET_OPCODE_NAMES
5559OP_CallVirt,
5560#endif
5561#ifdef GET_INTERPFN_LIST
5562&Interp_CallVirt,
5563#endif
5564#ifdef GET_INTERPFN_DISPATCHERS
5565PRESERVE_NONE
5566static bool Interp_CallVirt(InterpState &S, CodePtr &PC) {
5567 {
5568 CodePtr OpPC = PC;
5569 const auto V0 = ReadArg<const Function *>(S, PC);
5570 const auto V1 = ReadArg<uint32_t>(S, PC);
5571 if (!CallVirt(S, OpPC, V0, V1))
5572 return false;
5573 }
5574#if USE_TAILCALLS
5575 MUSTTAIL return InterpNext(S, PC);
5576#else
5577 return true;
5578#endif
5579}
5580#endif
5581#ifdef GET_DISASM
5582case OP_CallVirt:
5583 Text.Op = PrintName("CallVirt");
5584 Text.Args.push_back(printArg<const Function *>(P, PC));
5585 Text.Args.push_back(printArg<uint32_t>(P, PC));
5586 break;
5587#endif
5588#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5589bool emitCallVirt( const Function * , uint32_t , SourceInfo);
5590#endif
5591#ifdef GET_LINK_IMPL
5592bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5593 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
5594}
5595#endif
5596#ifdef GET_EVAL_IMPL
5597bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5598 if (!isActive()) return true;
5599 CurrentSource = L;
5600 return CallVirt(S, OpPC, A0, A1);
5601}
5602#endif
5603#ifdef GET_OPCODE_NAMES
5604OP_CastUint8Uint8,
5605OP_CastUint8Sint8,
5606OP_CastUint8Uint16,
5607OP_CastUint8Sint16,
5608OP_CastUint8Uint32,
5609OP_CastUint8Sint32,
5610OP_CastUint8Uint64,
5611OP_CastUint8Sint64,
5612OP_CastUint8Bool,
5613OP_CastSint8Uint8,
5614OP_CastSint8Sint8,
5615OP_CastSint8Uint16,
5616OP_CastSint8Sint16,
5617OP_CastSint8Uint32,
5618OP_CastSint8Sint32,
5619OP_CastSint8Uint64,
5620OP_CastSint8Sint64,
5621OP_CastSint8Bool,
5622OP_CastUint16Uint8,
5623OP_CastUint16Sint8,
5624OP_CastUint16Uint16,
5625OP_CastUint16Sint16,
5626OP_CastUint16Uint32,
5627OP_CastUint16Sint32,
5628OP_CastUint16Uint64,
5629OP_CastUint16Sint64,
5630OP_CastUint16Bool,
5631OP_CastSint16Uint8,
5632OP_CastSint16Sint8,
5633OP_CastSint16Uint16,
5634OP_CastSint16Sint16,
5635OP_CastSint16Uint32,
5636OP_CastSint16Sint32,
5637OP_CastSint16Uint64,
5638OP_CastSint16Sint64,
5639OP_CastSint16Bool,
5640OP_CastUint32Uint8,
5641OP_CastUint32Sint8,
5642OP_CastUint32Uint16,
5643OP_CastUint32Sint16,
5644OP_CastUint32Uint32,
5645OP_CastUint32Sint32,
5646OP_CastUint32Uint64,
5647OP_CastUint32Sint64,
5648OP_CastUint32Bool,
5649OP_CastSint32Uint8,
5650OP_CastSint32Sint8,
5651OP_CastSint32Uint16,
5652OP_CastSint32Sint16,
5653OP_CastSint32Uint32,
5654OP_CastSint32Sint32,
5655OP_CastSint32Uint64,
5656OP_CastSint32Sint64,
5657OP_CastSint32Bool,
5658OP_CastUint64Uint8,
5659OP_CastUint64Sint8,
5660OP_CastUint64Uint16,
5661OP_CastUint64Sint16,
5662OP_CastUint64Uint32,
5663OP_CastUint64Sint32,
5664OP_CastUint64Uint64,
5665OP_CastUint64Sint64,
5666OP_CastUint64Bool,
5667OP_CastSint64Uint8,
5668OP_CastSint64Sint8,
5669OP_CastSint64Uint16,
5670OP_CastSint64Sint16,
5671OP_CastSint64Uint32,
5672OP_CastSint64Sint32,
5673OP_CastSint64Uint64,
5674OP_CastSint64Sint64,
5675OP_CastSint64Bool,
5676OP_CastBoolUint8,
5677OP_CastBoolSint8,
5678OP_CastBoolUint16,
5679OP_CastBoolSint16,
5680OP_CastBoolUint32,
5681OP_CastBoolSint32,
5682OP_CastBoolUint64,
5683OP_CastBoolSint64,
5684OP_CastBoolBool,
5685OP_CastIntAPUint8,
5686OP_CastIntAPSint8,
5687OP_CastIntAPUint16,
5688OP_CastIntAPSint16,
5689OP_CastIntAPUint32,
5690OP_CastIntAPSint32,
5691OP_CastIntAPUint64,
5692OP_CastIntAPSint64,
5693OP_CastIntAPBool,
5694OP_CastIntAPSUint8,
5695OP_CastIntAPSSint8,
5696OP_CastIntAPSUint16,
5697OP_CastIntAPSSint16,
5698OP_CastIntAPSUint32,
5699OP_CastIntAPSSint32,
5700OP_CastIntAPSUint64,
5701OP_CastIntAPSSint64,
5702OP_CastIntAPSBool,
5703OP_CastFixedPointUint8,
5704OP_CastFixedPointSint8,
5705OP_CastFixedPointUint16,
5706OP_CastFixedPointSint16,
5707OP_CastFixedPointUint32,
5708OP_CastFixedPointSint32,
5709OP_CastFixedPointUint64,
5710OP_CastFixedPointSint64,
5711OP_CastFixedPointBool,
5712#endif
5713#ifdef GET_INTERPFN_LIST
5714&Interp_CastUint8Uint8,
5715&Interp_CastUint8Sint8,
5716&Interp_CastUint8Uint16,
5717&Interp_CastUint8Sint16,
5718&Interp_CastUint8Uint32,
5719&Interp_CastUint8Sint32,
5720&Interp_CastUint8Uint64,
5721&Interp_CastUint8Sint64,
5722&Interp_CastUint8Bool,
5723&Interp_CastSint8Uint8,
5724&Interp_CastSint8Sint8,
5725&Interp_CastSint8Uint16,
5726&Interp_CastSint8Sint16,
5727&Interp_CastSint8Uint32,
5728&Interp_CastSint8Sint32,
5729&Interp_CastSint8Uint64,
5730&Interp_CastSint8Sint64,
5731&Interp_CastSint8Bool,
5732&Interp_CastUint16Uint8,
5733&Interp_CastUint16Sint8,
5734&Interp_CastUint16Uint16,
5735&Interp_CastUint16Sint16,
5736&Interp_CastUint16Uint32,
5737&Interp_CastUint16Sint32,
5738&Interp_CastUint16Uint64,
5739&Interp_CastUint16Sint64,
5740&Interp_CastUint16Bool,
5741&Interp_CastSint16Uint8,
5742&Interp_CastSint16Sint8,
5743&Interp_CastSint16Uint16,
5744&Interp_CastSint16Sint16,
5745&Interp_CastSint16Uint32,
5746&Interp_CastSint16Sint32,
5747&Interp_CastSint16Uint64,
5748&Interp_CastSint16Sint64,
5749&Interp_CastSint16Bool,
5750&Interp_CastUint32Uint8,
5751&Interp_CastUint32Sint8,
5752&Interp_CastUint32Uint16,
5753&Interp_CastUint32Sint16,
5754&Interp_CastUint32Uint32,
5755&Interp_CastUint32Sint32,
5756&Interp_CastUint32Uint64,
5757&Interp_CastUint32Sint64,
5758&Interp_CastUint32Bool,
5759&Interp_CastSint32Uint8,
5760&Interp_CastSint32Sint8,
5761&Interp_CastSint32Uint16,
5762&Interp_CastSint32Sint16,
5763&Interp_CastSint32Uint32,
5764&Interp_CastSint32Sint32,
5765&Interp_CastSint32Uint64,
5766&Interp_CastSint32Sint64,
5767&Interp_CastSint32Bool,
5768&Interp_CastUint64Uint8,
5769&Interp_CastUint64Sint8,
5770&Interp_CastUint64Uint16,
5771&Interp_CastUint64Sint16,
5772&Interp_CastUint64Uint32,
5773&Interp_CastUint64Sint32,
5774&Interp_CastUint64Uint64,
5775&Interp_CastUint64Sint64,
5776&Interp_CastUint64Bool,
5777&Interp_CastSint64Uint8,
5778&Interp_CastSint64Sint8,
5779&Interp_CastSint64Uint16,
5780&Interp_CastSint64Sint16,
5781&Interp_CastSint64Uint32,
5782&Interp_CastSint64Sint32,
5783&Interp_CastSint64Uint64,
5784&Interp_CastSint64Sint64,
5785&Interp_CastSint64Bool,
5786&Interp_CastBoolUint8,
5787&Interp_CastBoolSint8,
5788&Interp_CastBoolUint16,
5789&Interp_CastBoolSint16,
5790&Interp_CastBoolUint32,
5791&Interp_CastBoolSint32,
5792&Interp_CastBoolUint64,
5793&Interp_CastBoolSint64,
5794&Interp_CastBoolBool,
5795&Interp_CastIntAPUint8,
5796&Interp_CastIntAPSint8,
5797&Interp_CastIntAPUint16,
5798&Interp_CastIntAPSint16,
5799&Interp_CastIntAPUint32,
5800&Interp_CastIntAPSint32,
5801&Interp_CastIntAPUint64,
5802&Interp_CastIntAPSint64,
5803&Interp_CastIntAPBool,
5804&Interp_CastIntAPSUint8,
5805&Interp_CastIntAPSSint8,
5806&Interp_CastIntAPSUint16,
5807&Interp_CastIntAPSSint16,
5808&Interp_CastIntAPSUint32,
5809&Interp_CastIntAPSSint32,
5810&Interp_CastIntAPSUint64,
5811&Interp_CastIntAPSSint64,
5812&Interp_CastIntAPSBool,
5813&Interp_CastFixedPointUint8,
5814&Interp_CastFixedPointSint8,
5815&Interp_CastFixedPointUint16,
5816&Interp_CastFixedPointSint16,
5817&Interp_CastFixedPointUint32,
5818&Interp_CastFixedPointSint32,
5819&Interp_CastFixedPointUint64,
5820&Interp_CastFixedPointSint64,
5821&Interp_CastFixedPointBool,
5822#endif
5823#ifdef GET_INTERPFN_DISPATCHERS
5824PRESERVE_NONE
5825static bool Interp_CastUint8Uint8(InterpState &S, CodePtr &PC) {
5826 if (!Cast<PT_Uint8, PT_Uint8>(S, PC))
5827 return false;
5828#if USE_TAILCALLS
5829 MUSTTAIL return InterpNext(S, PC);
5830#else
5831 return true;
5832#endif
5833}
5834PRESERVE_NONE
5835static bool Interp_CastUint8Sint8(InterpState &S, CodePtr &PC) {
5836 if (!Cast<PT_Uint8, PT_Sint8>(S, PC))
5837 return false;
5838#if USE_TAILCALLS
5839 MUSTTAIL return InterpNext(S, PC);
5840#else
5841 return true;
5842#endif
5843}
5844PRESERVE_NONE
5845static bool Interp_CastUint8Uint16(InterpState &S, CodePtr &PC) {
5846 if (!Cast<PT_Uint8, PT_Uint16>(S, PC))
5847 return false;
5848#if USE_TAILCALLS
5849 MUSTTAIL return InterpNext(S, PC);
5850#else
5851 return true;
5852#endif
5853}
5854PRESERVE_NONE
5855static bool Interp_CastUint8Sint16(InterpState &S, CodePtr &PC) {
5856 if (!Cast<PT_Uint8, PT_Sint16>(S, PC))
5857 return false;
5858#if USE_TAILCALLS
5859 MUSTTAIL return InterpNext(S, PC);
5860#else
5861 return true;
5862#endif
5863}
5864PRESERVE_NONE
5865static bool Interp_CastUint8Uint32(InterpState &S, CodePtr &PC) {
5866 if (!Cast<PT_Uint8, PT_Uint32>(S, PC))
5867 return false;
5868#if USE_TAILCALLS
5869 MUSTTAIL return InterpNext(S, PC);
5870#else
5871 return true;
5872#endif
5873}
5874PRESERVE_NONE
5875static bool Interp_CastUint8Sint32(InterpState &S, CodePtr &PC) {
5876 if (!Cast<PT_Uint8, PT_Sint32>(S, PC))
5877 return false;
5878#if USE_TAILCALLS
5879 MUSTTAIL return InterpNext(S, PC);
5880#else
5881 return true;
5882#endif
5883}
5884PRESERVE_NONE
5885static bool Interp_CastUint8Uint64(InterpState &S, CodePtr &PC) {
5886 if (!Cast<PT_Uint8, PT_Uint64>(S, PC))
5887 return false;
5888#if USE_TAILCALLS
5889 MUSTTAIL return InterpNext(S, PC);
5890#else
5891 return true;
5892#endif
5893}
5894PRESERVE_NONE
5895static bool Interp_CastUint8Sint64(InterpState &S, CodePtr &PC) {
5896 if (!Cast<PT_Uint8, PT_Sint64>(S, PC))
5897 return false;
5898#if USE_TAILCALLS
5899 MUSTTAIL return InterpNext(S, PC);
5900#else
5901 return true;
5902#endif
5903}
5904PRESERVE_NONE
5905static bool Interp_CastUint8Bool(InterpState &S, CodePtr &PC) {
5906 if (!Cast<PT_Uint8, PT_Bool>(S, PC))
5907 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_CastSint8Uint8(InterpState &S, CodePtr &PC) {
5916 if (!Cast<PT_Sint8, PT_Uint8>(S, PC))
5917 return false;
5918#if USE_TAILCALLS
5919 MUSTTAIL return InterpNext(S, PC);
5920#else
5921 return true;
5922#endif
5923}
5924PRESERVE_NONE
5925static bool Interp_CastSint8Sint8(InterpState &S, CodePtr &PC) {
5926 if (!Cast<PT_Sint8, PT_Sint8>(S, PC))
5927 return false;
5928#if USE_TAILCALLS
5929 MUSTTAIL return InterpNext(S, PC);
5930#else
5931 return true;
5932#endif
5933}
5934PRESERVE_NONE
5935static bool Interp_CastSint8Uint16(InterpState &S, CodePtr &PC) {
5936 if (!Cast<PT_Sint8, PT_Uint16>(S, PC))
5937 return false;
5938#if USE_TAILCALLS
5939 MUSTTAIL return InterpNext(S, PC);
5940#else
5941 return true;
5942#endif
5943}
5944PRESERVE_NONE
5945static bool Interp_CastSint8Sint16(InterpState &S, CodePtr &PC) {
5946 if (!Cast<PT_Sint8, PT_Sint16>(S, PC))
5947 return false;
5948#if USE_TAILCALLS
5949 MUSTTAIL return InterpNext(S, PC);
5950#else
5951 return true;
5952#endif
5953}
5954PRESERVE_NONE
5955static bool Interp_CastSint8Uint32(InterpState &S, CodePtr &PC) {
5956 if (!Cast<PT_Sint8, PT_Uint32>(S, PC))
5957 return false;
5958#if USE_TAILCALLS
5959 MUSTTAIL return InterpNext(S, PC);
5960#else
5961 return true;
5962#endif
5963}
5964PRESERVE_NONE
5965static bool Interp_CastSint8Sint32(InterpState &S, CodePtr &PC) {
5966 if (!Cast<PT_Sint8, PT_Sint32>(S, PC))
5967 return false;
5968#if USE_TAILCALLS
5969 MUSTTAIL return InterpNext(S, PC);
5970#else
5971 return true;
5972#endif
5973}
5974PRESERVE_NONE
5975static bool Interp_CastSint8Uint64(InterpState &S, CodePtr &PC) {
5976 if (!Cast<PT_Sint8, PT_Uint64>(S, PC))
5977 return false;
5978#if USE_TAILCALLS
5979 MUSTTAIL return InterpNext(S, PC);
5980#else
5981 return true;
5982#endif
5983}
5984PRESERVE_NONE
5985static bool Interp_CastSint8Sint64(InterpState &S, CodePtr &PC) {
5986 if (!Cast<PT_Sint8, PT_Sint64>(S, PC))
5987 return false;
5988#if USE_TAILCALLS
5989 MUSTTAIL return InterpNext(S, PC);
5990#else
5991 return true;
5992#endif
5993}
5994PRESERVE_NONE
5995static bool Interp_CastSint8Bool(InterpState &S, CodePtr &PC) {
5996 if (!Cast<PT_Sint8, PT_Bool>(S, PC))
5997 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_CastUint16Uint8(InterpState &S, CodePtr &PC) {
6006 if (!Cast<PT_Uint16, PT_Uint8>(S, PC))
6007 return false;
6008#if USE_TAILCALLS
6009 MUSTTAIL return InterpNext(S, PC);
6010#else
6011 return true;
6012#endif
6013}
6014PRESERVE_NONE
6015static bool Interp_CastUint16Sint8(InterpState &S, CodePtr &PC) {
6016 if (!Cast<PT_Uint16, PT_Sint8>(S, PC))
6017 return false;
6018#if USE_TAILCALLS
6019 MUSTTAIL return InterpNext(S, PC);
6020#else
6021 return true;
6022#endif
6023}
6024PRESERVE_NONE
6025static bool Interp_CastUint16Uint16(InterpState &S, CodePtr &PC) {
6026 if (!Cast<PT_Uint16, PT_Uint16>(S, PC))
6027 return false;
6028#if USE_TAILCALLS
6029 MUSTTAIL return InterpNext(S, PC);
6030#else
6031 return true;
6032#endif
6033}
6034PRESERVE_NONE
6035static bool Interp_CastUint16Sint16(InterpState &S, CodePtr &PC) {
6036 if (!Cast<PT_Uint16, PT_Sint16>(S, PC))
6037 return false;
6038#if USE_TAILCALLS
6039 MUSTTAIL return InterpNext(S, PC);
6040#else
6041 return true;
6042#endif
6043}
6044PRESERVE_NONE
6045static bool Interp_CastUint16Uint32(InterpState &S, CodePtr &PC) {
6046 if (!Cast<PT_Uint16, PT_Uint32>(S, PC))
6047 return false;
6048#if USE_TAILCALLS
6049 MUSTTAIL return InterpNext(S, PC);
6050#else
6051 return true;
6052#endif
6053}
6054PRESERVE_NONE
6055static bool Interp_CastUint16Sint32(InterpState &S, CodePtr &PC) {
6056 if (!Cast<PT_Uint16, PT_Sint32>(S, PC))
6057 return false;
6058#if USE_TAILCALLS
6059 MUSTTAIL return InterpNext(S, PC);
6060#else
6061 return true;
6062#endif
6063}
6064PRESERVE_NONE
6065static bool Interp_CastUint16Uint64(InterpState &S, CodePtr &PC) {
6066 if (!Cast<PT_Uint16, PT_Uint64>(S, PC))
6067 return false;
6068#if USE_TAILCALLS
6069 MUSTTAIL return InterpNext(S, PC);
6070#else
6071 return true;
6072#endif
6073}
6074PRESERVE_NONE
6075static bool Interp_CastUint16Sint64(InterpState &S, CodePtr &PC) {
6076 if (!Cast<PT_Uint16, PT_Sint64>(S, PC))
6077 return false;
6078#if USE_TAILCALLS
6079 MUSTTAIL return InterpNext(S, PC);
6080#else
6081 return true;
6082#endif
6083}
6084PRESERVE_NONE
6085static bool Interp_CastUint16Bool(InterpState &S, CodePtr &PC) {
6086 if (!Cast<PT_Uint16, PT_Bool>(S, PC))
6087 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_CastSint16Uint8(InterpState &S, CodePtr &PC) {
6096 if (!Cast<PT_Sint16, PT_Uint8>(S, PC))
6097 return false;
6098#if USE_TAILCALLS
6099 MUSTTAIL return InterpNext(S, PC);
6100#else
6101 return true;
6102#endif
6103}
6104PRESERVE_NONE
6105static bool Interp_CastSint16Sint8(InterpState &S, CodePtr &PC) {
6106 if (!Cast<PT_Sint16, PT_Sint8>(S, PC))
6107 return false;
6108#if USE_TAILCALLS
6109 MUSTTAIL return InterpNext(S, PC);
6110#else
6111 return true;
6112#endif
6113}
6114PRESERVE_NONE
6115static bool Interp_CastSint16Uint16(InterpState &S, CodePtr &PC) {
6116 if (!Cast<PT_Sint16, PT_Uint16>(S, PC))
6117 return false;
6118#if USE_TAILCALLS
6119 MUSTTAIL return InterpNext(S, PC);
6120#else
6121 return true;
6122#endif
6123}
6124PRESERVE_NONE
6125static bool Interp_CastSint16Sint16(InterpState &S, CodePtr &PC) {
6126 if (!Cast<PT_Sint16, PT_Sint16>(S, PC))
6127 return false;
6128#if USE_TAILCALLS
6129 MUSTTAIL return InterpNext(S, PC);
6130#else
6131 return true;
6132#endif
6133}
6134PRESERVE_NONE
6135static bool Interp_CastSint16Uint32(InterpState &S, CodePtr &PC) {
6136 if (!Cast<PT_Sint16, PT_Uint32>(S, PC))
6137 return false;
6138#if USE_TAILCALLS
6139 MUSTTAIL return InterpNext(S, PC);
6140#else
6141 return true;
6142#endif
6143}
6144PRESERVE_NONE
6145static bool Interp_CastSint16Sint32(InterpState &S, CodePtr &PC) {
6146 if (!Cast<PT_Sint16, PT_Sint32>(S, PC))
6147 return false;
6148#if USE_TAILCALLS
6149 MUSTTAIL return InterpNext(S, PC);
6150#else
6151 return true;
6152#endif
6153}
6154PRESERVE_NONE
6155static bool Interp_CastSint16Uint64(InterpState &S, CodePtr &PC) {
6156 if (!Cast<PT_Sint16, PT_Uint64>(S, PC))
6157 return false;
6158#if USE_TAILCALLS
6159 MUSTTAIL return InterpNext(S, PC);
6160#else
6161 return true;
6162#endif
6163}
6164PRESERVE_NONE
6165static bool Interp_CastSint16Sint64(InterpState &S, CodePtr &PC) {
6166 if (!Cast<PT_Sint16, PT_Sint64>(S, PC))
6167 return false;
6168#if USE_TAILCALLS
6169 MUSTTAIL return InterpNext(S, PC);
6170#else
6171 return true;
6172#endif
6173}
6174PRESERVE_NONE
6175static bool Interp_CastSint16Bool(InterpState &S, CodePtr &PC) {
6176 if (!Cast<PT_Sint16, PT_Bool>(S, PC))
6177 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_CastUint32Uint8(InterpState &S, CodePtr &PC) {
6186 if (!Cast<PT_Uint32, PT_Uint8>(S, PC))
6187 return false;
6188#if USE_TAILCALLS
6189 MUSTTAIL return InterpNext(S, PC);
6190#else
6191 return true;
6192#endif
6193}
6194PRESERVE_NONE
6195static bool Interp_CastUint32Sint8(InterpState &S, CodePtr &PC) {
6196 if (!Cast<PT_Uint32, PT_Sint8>(S, PC))
6197 return false;
6198#if USE_TAILCALLS
6199 MUSTTAIL return InterpNext(S, PC);
6200#else
6201 return true;
6202#endif
6203}
6204PRESERVE_NONE
6205static bool Interp_CastUint32Uint16(InterpState &S, CodePtr &PC) {
6206 if (!Cast<PT_Uint32, PT_Uint16>(S, PC))
6207 return false;
6208#if USE_TAILCALLS
6209 MUSTTAIL return InterpNext(S, PC);
6210#else
6211 return true;
6212#endif
6213}
6214PRESERVE_NONE
6215static bool Interp_CastUint32Sint16(InterpState &S, CodePtr &PC) {
6216 if (!Cast<PT_Uint32, PT_Sint16>(S, PC))
6217 return false;
6218#if USE_TAILCALLS
6219 MUSTTAIL return InterpNext(S, PC);
6220#else
6221 return true;
6222#endif
6223}
6224PRESERVE_NONE
6225static bool Interp_CastUint32Uint32(InterpState &S, CodePtr &PC) {
6226 if (!Cast<PT_Uint32, PT_Uint32>(S, PC))
6227 return false;
6228#if USE_TAILCALLS
6229 MUSTTAIL return InterpNext(S, PC);
6230#else
6231 return true;
6232#endif
6233}
6234PRESERVE_NONE
6235static bool Interp_CastUint32Sint32(InterpState &S, CodePtr &PC) {
6236 if (!Cast<PT_Uint32, PT_Sint32>(S, PC))
6237 return false;
6238#if USE_TAILCALLS
6239 MUSTTAIL return InterpNext(S, PC);
6240#else
6241 return true;
6242#endif
6243}
6244PRESERVE_NONE
6245static bool Interp_CastUint32Uint64(InterpState &S, CodePtr &PC) {
6246 if (!Cast<PT_Uint32, PT_Uint64>(S, PC))
6247 return false;
6248#if USE_TAILCALLS
6249 MUSTTAIL return InterpNext(S, PC);
6250#else
6251 return true;
6252#endif
6253}
6254PRESERVE_NONE
6255static bool Interp_CastUint32Sint64(InterpState &S, CodePtr &PC) {
6256 if (!Cast<PT_Uint32, PT_Sint64>(S, PC))
6257 return false;
6258#if USE_TAILCALLS
6259 MUSTTAIL return InterpNext(S, PC);
6260#else
6261 return true;
6262#endif
6263}
6264PRESERVE_NONE
6265static bool Interp_CastUint32Bool(InterpState &S, CodePtr &PC) {
6266 if (!Cast<PT_Uint32, PT_Bool>(S, PC))
6267 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_CastSint32Uint8(InterpState &S, CodePtr &PC) {
6276 if (!Cast<PT_Sint32, PT_Uint8>(S, PC))
6277 return false;
6278#if USE_TAILCALLS
6279 MUSTTAIL return InterpNext(S, PC);
6280#else
6281 return true;
6282#endif
6283}
6284PRESERVE_NONE
6285static bool Interp_CastSint32Sint8(InterpState &S, CodePtr &PC) {
6286 if (!Cast<PT_Sint32, PT_Sint8>(S, PC))
6287 return false;
6288#if USE_TAILCALLS
6289 MUSTTAIL return InterpNext(S, PC);
6290#else
6291 return true;
6292#endif
6293}
6294PRESERVE_NONE
6295static bool Interp_CastSint32Uint16(InterpState &S, CodePtr &PC) {
6296 if (!Cast<PT_Sint32, PT_Uint16>(S, PC))
6297 return false;
6298#if USE_TAILCALLS
6299 MUSTTAIL return InterpNext(S, PC);
6300#else
6301 return true;
6302#endif
6303}
6304PRESERVE_NONE
6305static bool Interp_CastSint32Sint16(InterpState &S, CodePtr &PC) {
6306 if (!Cast<PT_Sint32, PT_Sint16>(S, PC))
6307 return false;
6308#if USE_TAILCALLS
6309 MUSTTAIL return InterpNext(S, PC);
6310#else
6311 return true;
6312#endif
6313}
6314PRESERVE_NONE
6315static bool Interp_CastSint32Uint32(InterpState &S, CodePtr &PC) {
6316 if (!Cast<PT_Sint32, PT_Uint32>(S, PC))
6317 return false;
6318#if USE_TAILCALLS
6319 MUSTTAIL return InterpNext(S, PC);
6320#else
6321 return true;
6322#endif
6323}
6324PRESERVE_NONE
6325static bool Interp_CastSint32Sint32(InterpState &S, CodePtr &PC) {
6326 if (!Cast<PT_Sint32, PT_Sint32>(S, PC))
6327 return false;
6328#if USE_TAILCALLS
6329 MUSTTAIL return InterpNext(S, PC);
6330#else
6331 return true;
6332#endif
6333}
6334PRESERVE_NONE
6335static bool Interp_CastSint32Uint64(InterpState &S, CodePtr &PC) {
6336 if (!Cast<PT_Sint32, PT_Uint64>(S, PC))
6337 return false;
6338#if USE_TAILCALLS
6339 MUSTTAIL return InterpNext(S, PC);
6340#else
6341 return true;
6342#endif
6343}
6344PRESERVE_NONE
6345static bool Interp_CastSint32Sint64(InterpState &S, CodePtr &PC) {
6346 if (!Cast<PT_Sint32, PT_Sint64>(S, PC))
6347 return false;
6348#if USE_TAILCALLS
6349 MUSTTAIL return InterpNext(S, PC);
6350#else
6351 return true;
6352#endif
6353}
6354PRESERVE_NONE
6355static bool Interp_CastSint32Bool(InterpState &S, CodePtr &PC) {
6356 if (!Cast<PT_Sint32, PT_Bool>(S, PC))
6357 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_CastUint64Uint8(InterpState &S, CodePtr &PC) {
6366 if (!Cast<PT_Uint64, PT_Uint8>(S, PC))
6367 return false;
6368#if USE_TAILCALLS
6369 MUSTTAIL return InterpNext(S, PC);
6370#else
6371 return true;
6372#endif
6373}
6374PRESERVE_NONE
6375static bool Interp_CastUint64Sint8(InterpState &S, CodePtr &PC) {
6376 if (!Cast<PT_Uint64, PT_Sint8>(S, PC))
6377 return false;
6378#if USE_TAILCALLS
6379 MUSTTAIL return InterpNext(S, PC);
6380#else
6381 return true;
6382#endif
6383}
6384PRESERVE_NONE
6385static bool Interp_CastUint64Uint16(InterpState &S, CodePtr &PC) {
6386 if (!Cast<PT_Uint64, PT_Uint16>(S, PC))
6387 return false;
6388#if USE_TAILCALLS
6389 MUSTTAIL return InterpNext(S, PC);
6390#else
6391 return true;
6392#endif
6393}
6394PRESERVE_NONE
6395static bool Interp_CastUint64Sint16(InterpState &S, CodePtr &PC) {
6396 if (!Cast<PT_Uint64, PT_Sint16>(S, PC))
6397 return false;
6398#if USE_TAILCALLS
6399 MUSTTAIL return InterpNext(S, PC);
6400#else
6401 return true;
6402#endif
6403}
6404PRESERVE_NONE
6405static bool Interp_CastUint64Uint32(InterpState &S, CodePtr &PC) {
6406 if (!Cast<PT_Uint64, PT_Uint32>(S, PC))
6407 return false;
6408#if USE_TAILCALLS
6409 MUSTTAIL return InterpNext(S, PC);
6410#else
6411 return true;
6412#endif
6413}
6414PRESERVE_NONE
6415static bool Interp_CastUint64Sint32(InterpState &S, CodePtr &PC) {
6416 if (!Cast<PT_Uint64, PT_Sint32>(S, PC))
6417 return false;
6418#if USE_TAILCALLS
6419 MUSTTAIL return InterpNext(S, PC);
6420#else
6421 return true;
6422#endif
6423}
6424PRESERVE_NONE
6425static bool Interp_CastUint64Uint64(InterpState &S, CodePtr &PC) {
6426 if (!Cast<PT_Uint64, PT_Uint64>(S, PC))
6427 return false;
6428#if USE_TAILCALLS
6429 MUSTTAIL return InterpNext(S, PC);
6430#else
6431 return true;
6432#endif
6433}
6434PRESERVE_NONE
6435static bool Interp_CastUint64Sint64(InterpState &S, CodePtr &PC) {
6436 if (!Cast<PT_Uint64, PT_Sint64>(S, PC))
6437 return false;
6438#if USE_TAILCALLS
6439 MUSTTAIL return InterpNext(S, PC);
6440#else
6441 return true;
6442#endif
6443}
6444PRESERVE_NONE
6445static bool Interp_CastUint64Bool(InterpState &S, CodePtr &PC) {
6446 if (!Cast<PT_Uint64, PT_Bool>(S, PC))
6447 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_CastSint64Uint8(InterpState &S, CodePtr &PC) {
6456 if (!Cast<PT_Sint64, PT_Uint8>(S, PC))
6457 return false;
6458#if USE_TAILCALLS
6459 MUSTTAIL return InterpNext(S, PC);
6460#else
6461 return true;
6462#endif
6463}
6464PRESERVE_NONE
6465static bool Interp_CastSint64Sint8(InterpState &S, CodePtr &PC) {
6466 if (!Cast<PT_Sint64, PT_Sint8>(S, PC))
6467 return false;
6468#if USE_TAILCALLS
6469 MUSTTAIL return InterpNext(S, PC);
6470#else
6471 return true;
6472#endif
6473}
6474PRESERVE_NONE
6475static bool Interp_CastSint64Uint16(InterpState &S, CodePtr &PC) {
6476 if (!Cast<PT_Sint64, PT_Uint16>(S, PC))
6477 return false;
6478#if USE_TAILCALLS
6479 MUSTTAIL return InterpNext(S, PC);
6480#else
6481 return true;
6482#endif
6483}
6484PRESERVE_NONE
6485static bool Interp_CastSint64Sint16(InterpState &S, CodePtr &PC) {
6486 if (!Cast<PT_Sint64, PT_Sint16>(S, PC))
6487 return false;
6488#if USE_TAILCALLS
6489 MUSTTAIL return InterpNext(S, PC);
6490#else
6491 return true;
6492#endif
6493}
6494PRESERVE_NONE
6495static bool Interp_CastSint64Uint32(InterpState &S, CodePtr &PC) {
6496 if (!Cast<PT_Sint64, PT_Uint32>(S, PC))
6497 return false;
6498#if USE_TAILCALLS
6499 MUSTTAIL return InterpNext(S, PC);
6500#else
6501 return true;
6502#endif
6503}
6504PRESERVE_NONE
6505static bool Interp_CastSint64Sint32(InterpState &S, CodePtr &PC) {
6506 if (!Cast<PT_Sint64, PT_Sint32>(S, PC))
6507 return false;
6508#if USE_TAILCALLS
6509 MUSTTAIL return InterpNext(S, PC);
6510#else
6511 return true;
6512#endif
6513}
6514PRESERVE_NONE
6515static bool Interp_CastSint64Uint64(InterpState &S, CodePtr &PC) {
6516 if (!Cast<PT_Sint64, PT_Uint64>(S, PC))
6517 return false;
6518#if USE_TAILCALLS
6519 MUSTTAIL return InterpNext(S, PC);
6520#else
6521 return true;
6522#endif
6523}
6524PRESERVE_NONE
6525static bool Interp_CastSint64Sint64(InterpState &S, CodePtr &PC) {
6526 if (!Cast<PT_Sint64, PT_Sint64>(S, PC))
6527 return false;
6528#if USE_TAILCALLS
6529 MUSTTAIL return InterpNext(S, PC);
6530#else
6531 return true;
6532#endif
6533}
6534PRESERVE_NONE
6535static bool Interp_CastSint64Bool(InterpState &S, CodePtr &PC) {
6536 if (!Cast<PT_Sint64, PT_Bool>(S, PC))
6537 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_CastBoolUint8(InterpState &S, CodePtr &PC) {
6546 if (!Cast<PT_Bool, PT_Uint8>(S, PC))
6547 return false;
6548#if USE_TAILCALLS
6549 MUSTTAIL return InterpNext(S, PC);
6550#else
6551 return true;
6552#endif
6553}
6554PRESERVE_NONE
6555static bool Interp_CastBoolSint8(InterpState &S, CodePtr &PC) {
6556 if (!Cast<PT_Bool, PT_Sint8>(S, PC))
6557 return false;
6558#if USE_TAILCALLS
6559 MUSTTAIL return InterpNext(S, PC);
6560#else
6561 return true;
6562#endif
6563}
6564PRESERVE_NONE
6565static bool Interp_CastBoolUint16(InterpState &S, CodePtr &PC) {
6566 if (!Cast<PT_Bool, PT_Uint16>(S, PC))
6567 return false;
6568#if USE_TAILCALLS
6569 MUSTTAIL return InterpNext(S, PC);
6570#else
6571 return true;
6572#endif
6573}
6574PRESERVE_NONE
6575static bool Interp_CastBoolSint16(InterpState &S, CodePtr &PC) {
6576 if (!Cast<PT_Bool, PT_Sint16>(S, PC))
6577 return false;
6578#if USE_TAILCALLS
6579 MUSTTAIL return InterpNext(S, PC);
6580#else
6581 return true;
6582#endif
6583}
6584PRESERVE_NONE
6585static bool Interp_CastBoolUint32(InterpState &S, CodePtr &PC) {
6586 if (!Cast<PT_Bool, PT_Uint32>(S, PC))
6587 return false;
6588#if USE_TAILCALLS
6589 MUSTTAIL return InterpNext(S, PC);
6590#else
6591 return true;
6592#endif
6593}
6594PRESERVE_NONE
6595static bool Interp_CastBoolSint32(InterpState &S, CodePtr &PC) {
6596 if (!Cast<PT_Bool, PT_Sint32>(S, PC))
6597 return false;
6598#if USE_TAILCALLS
6599 MUSTTAIL return InterpNext(S, PC);
6600#else
6601 return true;
6602#endif
6603}
6604PRESERVE_NONE
6605static bool Interp_CastBoolUint64(InterpState &S, CodePtr &PC) {
6606 if (!Cast<PT_Bool, PT_Uint64>(S, PC))
6607 return false;
6608#if USE_TAILCALLS
6609 MUSTTAIL return InterpNext(S, PC);
6610#else
6611 return true;
6612#endif
6613}
6614PRESERVE_NONE
6615static bool Interp_CastBoolSint64(InterpState &S, CodePtr &PC) {
6616 if (!Cast<PT_Bool, PT_Sint64>(S, PC))
6617 return false;
6618#if USE_TAILCALLS
6619 MUSTTAIL return InterpNext(S, PC);
6620#else
6621 return true;
6622#endif
6623}
6624PRESERVE_NONE
6625static bool Interp_CastBoolBool(InterpState &S, CodePtr &PC) {
6626 if (!Cast<PT_Bool, PT_Bool>(S, PC))
6627 return false;
6628#if USE_TAILCALLS
6629 MUSTTAIL return InterpNext(S, PC);
6630#else
6631 return true;
6632#endif
6633}
6634PRESERVE_NONE
6635static bool Interp_CastIntAPUint8(InterpState &S, CodePtr &PC) {
6636 if (!Cast<PT_IntAP, PT_Uint8>(S, PC))
6637 return false;
6638#if USE_TAILCALLS
6639 MUSTTAIL return InterpNext(S, PC);
6640#else
6641 return true;
6642#endif
6643}
6644PRESERVE_NONE
6645static bool Interp_CastIntAPSint8(InterpState &S, CodePtr &PC) {
6646 if (!Cast<PT_IntAP, PT_Sint8>(S, PC))
6647 return false;
6648#if USE_TAILCALLS
6649 MUSTTAIL return InterpNext(S, PC);
6650#else
6651 return true;
6652#endif
6653}
6654PRESERVE_NONE
6655static bool Interp_CastIntAPUint16(InterpState &S, CodePtr &PC) {
6656 if (!Cast<PT_IntAP, PT_Uint16>(S, PC))
6657 return false;
6658#if USE_TAILCALLS
6659 MUSTTAIL return InterpNext(S, PC);
6660#else
6661 return true;
6662#endif
6663}
6664PRESERVE_NONE
6665static bool Interp_CastIntAPSint16(InterpState &S, CodePtr &PC) {
6666 if (!Cast<PT_IntAP, PT_Sint16>(S, PC))
6667 return false;
6668#if USE_TAILCALLS
6669 MUSTTAIL return InterpNext(S, PC);
6670#else
6671 return true;
6672#endif
6673}
6674PRESERVE_NONE
6675static bool Interp_CastIntAPUint32(InterpState &S, CodePtr &PC) {
6676 if (!Cast<PT_IntAP, PT_Uint32>(S, PC))
6677 return false;
6678#if USE_TAILCALLS
6679 MUSTTAIL return InterpNext(S, PC);
6680#else
6681 return true;
6682#endif
6683}
6684PRESERVE_NONE
6685static bool Interp_CastIntAPSint32(InterpState &S, CodePtr &PC) {
6686 if (!Cast<PT_IntAP, PT_Sint32>(S, PC))
6687 return false;
6688#if USE_TAILCALLS
6689 MUSTTAIL return InterpNext(S, PC);
6690#else
6691 return true;
6692#endif
6693}
6694PRESERVE_NONE
6695static bool Interp_CastIntAPUint64(InterpState &S, CodePtr &PC) {
6696 if (!Cast<PT_IntAP, PT_Uint64>(S, PC))
6697 return false;
6698#if USE_TAILCALLS
6699 MUSTTAIL return InterpNext(S, PC);
6700#else
6701 return true;
6702#endif
6703}
6704PRESERVE_NONE
6705static bool Interp_CastIntAPSint64(InterpState &S, CodePtr &PC) {
6706 if (!Cast<PT_IntAP, PT_Sint64>(S, PC))
6707 return false;
6708#if USE_TAILCALLS
6709 MUSTTAIL return InterpNext(S, PC);
6710#else
6711 return true;
6712#endif
6713}
6714PRESERVE_NONE
6715static bool Interp_CastIntAPBool(InterpState &S, CodePtr &PC) {
6716 if (!Cast<PT_IntAP, PT_Bool>(S, PC))
6717 return false;
6718#if USE_TAILCALLS
6719 MUSTTAIL return InterpNext(S, PC);
6720#else
6721 return true;
6722#endif
6723}
6724PRESERVE_NONE
6725static bool Interp_CastIntAPSUint8(InterpState &S, CodePtr &PC) {
6726 if (!Cast<PT_IntAPS, PT_Uint8>(S, PC))
6727 return false;
6728#if USE_TAILCALLS
6729 MUSTTAIL return InterpNext(S, PC);
6730#else
6731 return true;
6732#endif
6733}
6734PRESERVE_NONE
6735static bool Interp_CastIntAPSSint8(InterpState &S, CodePtr &PC) {
6736 if (!Cast<PT_IntAPS, PT_Sint8>(S, PC))
6737 return false;
6738#if USE_TAILCALLS
6739 MUSTTAIL return InterpNext(S, PC);
6740#else
6741 return true;
6742#endif
6743}
6744PRESERVE_NONE
6745static bool Interp_CastIntAPSUint16(InterpState &S, CodePtr &PC) {
6746 if (!Cast<PT_IntAPS, PT_Uint16>(S, PC))
6747 return false;
6748#if USE_TAILCALLS
6749 MUSTTAIL return InterpNext(S, PC);
6750#else
6751 return true;
6752#endif
6753}
6754PRESERVE_NONE
6755static bool Interp_CastIntAPSSint16(InterpState &S, CodePtr &PC) {
6756 if (!Cast<PT_IntAPS, PT_Sint16>(S, PC))
6757 return false;
6758#if USE_TAILCALLS
6759 MUSTTAIL return InterpNext(S, PC);
6760#else
6761 return true;
6762#endif
6763}
6764PRESERVE_NONE
6765static bool Interp_CastIntAPSUint32(InterpState &S, CodePtr &PC) {
6766 if (!Cast<PT_IntAPS, PT_Uint32>(S, PC))
6767 return false;
6768#if USE_TAILCALLS
6769 MUSTTAIL return InterpNext(S, PC);
6770#else
6771 return true;
6772#endif
6773}
6774PRESERVE_NONE
6775static bool Interp_CastIntAPSSint32(InterpState &S, CodePtr &PC) {
6776 if (!Cast<PT_IntAPS, PT_Sint32>(S, PC))
6777 return false;
6778#if USE_TAILCALLS
6779 MUSTTAIL return InterpNext(S, PC);
6780#else
6781 return true;
6782#endif
6783}
6784PRESERVE_NONE
6785static bool Interp_CastIntAPSUint64(InterpState &S, CodePtr &PC) {
6786 if (!Cast<PT_IntAPS, PT_Uint64>(S, PC))
6787 return false;
6788#if USE_TAILCALLS
6789 MUSTTAIL return InterpNext(S, PC);
6790#else
6791 return true;
6792#endif
6793}
6794PRESERVE_NONE
6795static bool Interp_CastIntAPSSint64(InterpState &S, CodePtr &PC) {
6796 if (!Cast<PT_IntAPS, PT_Sint64>(S, PC))
6797 return false;
6798#if USE_TAILCALLS
6799 MUSTTAIL return InterpNext(S, PC);
6800#else
6801 return true;
6802#endif
6803}
6804PRESERVE_NONE
6805static bool Interp_CastIntAPSBool(InterpState &S, CodePtr &PC) {
6806 if (!Cast<PT_IntAPS, PT_Bool>(S, PC))
6807 return false;
6808#if USE_TAILCALLS
6809 MUSTTAIL return InterpNext(S, PC);
6810#else
6811 return true;
6812#endif
6813}
6814PRESERVE_NONE
6815static bool Interp_CastFixedPointUint8(InterpState &S, CodePtr &PC) {
6816 if (!Cast<PT_FixedPoint, PT_Uint8>(S, PC))
6817 return false;
6818#if USE_TAILCALLS
6819 MUSTTAIL return InterpNext(S, PC);
6820#else
6821 return true;
6822#endif
6823}
6824PRESERVE_NONE
6825static bool Interp_CastFixedPointSint8(InterpState &S, CodePtr &PC) {
6826 if (!Cast<PT_FixedPoint, PT_Sint8>(S, PC))
6827 return false;
6828#if USE_TAILCALLS
6829 MUSTTAIL return InterpNext(S, PC);
6830#else
6831 return true;
6832#endif
6833}
6834PRESERVE_NONE
6835static bool Interp_CastFixedPointUint16(InterpState &S, CodePtr &PC) {
6836 if (!Cast<PT_FixedPoint, PT_Uint16>(S, PC))
6837 return false;
6838#if USE_TAILCALLS
6839 MUSTTAIL return InterpNext(S, PC);
6840#else
6841 return true;
6842#endif
6843}
6844PRESERVE_NONE
6845static bool Interp_CastFixedPointSint16(InterpState &S, CodePtr &PC) {
6846 if (!Cast<PT_FixedPoint, PT_Sint16>(S, PC))
6847 return false;
6848#if USE_TAILCALLS
6849 MUSTTAIL return InterpNext(S, PC);
6850#else
6851 return true;
6852#endif
6853}
6854PRESERVE_NONE
6855static bool Interp_CastFixedPointUint32(InterpState &S, CodePtr &PC) {
6856 if (!Cast<PT_FixedPoint, PT_Uint32>(S, PC))
6857 return false;
6858#if USE_TAILCALLS
6859 MUSTTAIL return InterpNext(S, PC);
6860#else
6861 return true;
6862#endif
6863}
6864PRESERVE_NONE
6865static bool Interp_CastFixedPointSint32(InterpState &S, CodePtr &PC) {
6866 if (!Cast<PT_FixedPoint, PT_Sint32>(S, PC))
6867 return false;
6868#if USE_TAILCALLS
6869 MUSTTAIL return InterpNext(S, PC);
6870#else
6871 return true;
6872#endif
6873}
6874PRESERVE_NONE
6875static bool Interp_CastFixedPointUint64(InterpState &S, CodePtr &PC) {
6876 if (!Cast<PT_FixedPoint, PT_Uint64>(S, PC))
6877 return false;
6878#if USE_TAILCALLS
6879 MUSTTAIL return InterpNext(S, PC);
6880#else
6881 return true;
6882#endif
6883}
6884PRESERVE_NONE
6885static bool Interp_CastFixedPointSint64(InterpState &S, CodePtr &PC) {
6886 if (!Cast<PT_FixedPoint, PT_Sint64>(S, PC))
6887 return false;
6888#if USE_TAILCALLS
6889 MUSTTAIL return InterpNext(S, PC);
6890#else
6891 return true;
6892#endif
6893}
6894PRESERVE_NONE
6895static bool Interp_CastFixedPointBool(InterpState &S, CodePtr &PC) {
6896 if (!Cast<PT_FixedPoint, PT_Bool>(S, PC))
6897 return false;
6898#if USE_TAILCALLS
6899 MUSTTAIL return InterpNext(S, PC);
6900#else
6901 return true;
6902#endif
6903}
6904#endif
6905#ifdef GET_DISASM
6906case OP_CastUint8Uint8:
6907 Text.Op = PrintName("CastUint8Uint8");
6908 break;
6909case OP_CastUint8Sint8:
6910 Text.Op = PrintName("CastUint8Sint8");
6911 break;
6912case OP_CastUint8Uint16:
6913 Text.Op = PrintName("CastUint8Uint16");
6914 break;
6915case OP_CastUint8Sint16:
6916 Text.Op = PrintName("CastUint8Sint16");
6917 break;
6918case OP_CastUint8Uint32:
6919 Text.Op = PrintName("CastUint8Uint32");
6920 break;
6921case OP_CastUint8Sint32:
6922 Text.Op = PrintName("CastUint8Sint32");
6923 break;
6924case OP_CastUint8Uint64:
6925 Text.Op = PrintName("CastUint8Uint64");
6926 break;
6927case OP_CastUint8Sint64:
6928 Text.Op = PrintName("CastUint8Sint64");
6929 break;
6930case OP_CastUint8Bool:
6931 Text.Op = PrintName("CastUint8Bool");
6932 break;
6933case OP_CastSint8Uint8:
6934 Text.Op = PrintName("CastSint8Uint8");
6935 break;
6936case OP_CastSint8Sint8:
6937 Text.Op = PrintName("CastSint8Sint8");
6938 break;
6939case OP_CastSint8Uint16:
6940 Text.Op = PrintName("CastSint8Uint16");
6941 break;
6942case OP_CastSint8Sint16:
6943 Text.Op = PrintName("CastSint8Sint16");
6944 break;
6945case OP_CastSint8Uint32:
6946 Text.Op = PrintName("CastSint8Uint32");
6947 break;
6948case OP_CastSint8Sint32:
6949 Text.Op = PrintName("CastSint8Sint32");
6950 break;
6951case OP_CastSint8Uint64:
6952 Text.Op = PrintName("CastSint8Uint64");
6953 break;
6954case OP_CastSint8Sint64:
6955 Text.Op = PrintName("CastSint8Sint64");
6956 break;
6957case OP_CastSint8Bool:
6958 Text.Op = PrintName("CastSint8Bool");
6959 break;
6960case OP_CastUint16Uint8:
6961 Text.Op = PrintName("CastUint16Uint8");
6962 break;
6963case OP_CastUint16Sint8:
6964 Text.Op = PrintName("CastUint16Sint8");
6965 break;
6966case OP_CastUint16Uint16:
6967 Text.Op = PrintName("CastUint16Uint16");
6968 break;
6969case OP_CastUint16Sint16:
6970 Text.Op = PrintName("CastUint16Sint16");
6971 break;
6972case OP_CastUint16Uint32:
6973 Text.Op = PrintName("CastUint16Uint32");
6974 break;
6975case OP_CastUint16Sint32:
6976 Text.Op = PrintName("CastUint16Sint32");
6977 break;
6978case OP_CastUint16Uint64:
6979 Text.Op = PrintName("CastUint16Uint64");
6980 break;
6981case OP_CastUint16Sint64:
6982 Text.Op = PrintName("CastUint16Sint64");
6983 break;
6984case OP_CastUint16Bool:
6985 Text.Op = PrintName("CastUint16Bool");
6986 break;
6987case OP_CastSint16Uint8:
6988 Text.Op = PrintName("CastSint16Uint8");
6989 break;
6990case OP_CastSint16Sint8:
6991 Text.Op = PrintName("CastSint16Sint8");
6992 break;
6993case OP_CastSint16Uint16:
6994 Text.Op = PrintName("CastSint16Uint16");
6995 break;
6996case OP_CastSint16Sint16:
6997 Text.Op = PrintName("CastSint16Sint16");
6998 break;
6999case OP_CastSint16Uint32:
7000 Text.Op = PrintName("CastSint16Uint32");
7001 break;
7002case OP_CastSint16Sint32:
7003 Text.Op = PrintName("CastSint16Sint32");
7004 break;
7005case OP_CastSint16Uint64:
7006 Text.Op = PrintName("CastSint16Uint64");
7007 break;
7008case OP_CastSint16Sint64:
7009 Text.Op = PrintName("CastSint16Sint64");
7010 break;
7011case OP_CastSint16Bool:
7012 Text.Op = PrintName("CastSint16Bool");
7013 break;
7014case OP_CastUint32Uint8:
7015 Text.Op = PrintName("CastUint32Uint8");
7016 break;
7017case OP_CastUint32Sint8:
7018 Text.Op = PrintName("CastUint32Sint8");
7019 break;
7020case OP_CastUint32Uint16:
7021 Text.Op = PrintName("CastUint32Uint16");
7022 break;
7023case OP_CastUint32Sint16:
7024 Text.Op = PrintName("CastUint32Sint16");
7025 break;
7026case OP_CastUint32Uint32:
7027 Text.Op = PrintName("CastUint32Uint32");
7028 break;
7029case OP_CastUint32Sint32:
7030 Text.Op = PrintName("CastUint32Sint32");
7031 break;
7032case OP_CastUint32Uint64:
7033 Text.Op = PrintName("CastUint32Uint64");
7034 break;
7035case OP_CastUint32Sint64:
7036 Text.Op = PrintName("CastUint32Sint64");
7037 break;
7038case OP_CastUint32Bool:
7039 Text.Op = PrintName("CastUint32Bool");
7040 break;
7041case OP_CastSint32Uint8:
7042 Text.Op = PrintName("CastSint32Uint8");
7043 break;
7044case OP_CastSint32Sint8:
7045 Text.Op = PrintName("CastSint32Sint8");
7046 break;
7047case OP_CastSint32Uint16:
7048 Text.Op = PrintName("CastSint32Uint16");
7049 break;
7050case OP_CastSint32Sint16:
7051 Text.Op = PrintName("CastSint32Sint16");
7052 break;
7053case OP_CastSint32Uint32:
7054 Text.Op = PrintName("CastSint32Uint32");
7055 break;
7056case OP_CastSint32Sint32:
7057 Text.Op = PrintName("CastSint32Sint32");
7058 break;
7059case OP_CastSint32Uint64:
7060 Text.Op = PrintName("CastSint32Uint64");
7061 break;
7062case OP_CastSint32Sint64:
7063 Text.Op = PrintName("CastSint32Sint64");
7064 break;
7065case OP_CastSint32Bool:
7066 Text.Op = PrintName("CastSint32Bool");
7067 break;
7068case OP_CastUint64Uint8:
7069 Text.Op = PrintName("CastUint64Uint8");
7070 break;
7071case OP_CastUint64Sint8:
7072 Text.Op = PrintName("CastUint64Sint8");
7073 break;
7074case OP_CastUint64Uint16:
7075 Text.Op = PrintName("CastUint64Uint16");
7076 break;
7077case OP_CastUint64Sint16:
7078 Text.Op = PrintName("CastUint64Sint16");
7079 break;
7080case OP_CastUint64Uint32:
7081 Text.Op = PrintName("CastUint64Uint32");
7082 break;
7083case OP_CastUint64Sint32:
7084 Text.Op = PrintName("CastUint64Sint32");
7085 break;
7086case OP_CastUint64Uint64:
7087 Text.Op = PrintName("CastUint64Uint64");
7088 break;
7089case OP_CastUint64Sint64:
7090 Text.Op = PrintName("CastUint64Sint64");
7091 break;
7092case OP_CastUint64Bool:
7093 Text.Op = PrintName("CastUint64Bool");
7094 break;
7095case OP_CastSint64Uint8:
7096 Text.Op = PrintName("CastSint64Uint8");
7097 break;
7098case OP_CastSint64Sint8:
7099 Text.Op = PrintName("CastSint64Sint8");
7100 break;
7101case OP_CastSint64Uint16:
7102 Text.Op = PrintName("CastSint64Uint16");
7103 break;
7104case OP_CastSint64Sint16:
7105 Text.Op = PrintName("CastSint64Sint16");
7106 break;
7107case OP_CastSint64Uint32:
7108 Text.Op = PrintName("CastSint64Uint32");
7109 break;
7110case OP_CastSint64Sint32:
7111 Text.Op = PrintName("CastSint64Sint32");
7112 break;
7113case OP_CastSint64Uint64:
7114 Text.Op = PrintName("CastSint64Uint64");
7115 break;
7116case OP_CastSint64Sint64:
7117 Text.Op = PrintName("CastSint64Sint64");
7118 break;
7119case OP_CastSint64Bool:
7120 Text.Op = PrintName("CastSint64Bool");
7121 break;
7122case OP_CastBoolUint8:
7123 Text.Op = PrintName("CastBoolUint8");
7124 break;
7125case OP_CastBoolSint8:
7126 Text.Op = PrintName("CastBoolSint8");
7127 break;
7128case OP_CastBoolUint16:
7129 Text.Op = PrintName("CastBoolUint16");
7130 break;
7131case OP_CastBoolSint16:
7132 Text.Op = PrintName("CastBoolSint16");
7133 break;
7134case OP_CastBoolUint32:
7135 Text.Op = PrintName("CastBoolUint32");
7136 break;
7137case OP_CastBoolSint32:
7138 Text.Op = PrintName("CastBoolSint32");
7139 break;
7140case OP_CastBoolUint64:
7141 Text.Op = PrintName("CastBoolUint64");
7142 break;
7143case OP_CastBoolSint64:
7144 Text.Op = PrintName("CastBoolSint64");
7145 break;
7146case OP_CastBoolBool:
7147 Text.Op = PrintName("CastBoolBool");
7148 break;
7149case OP_CastIntAPUint8:
7150 Text.Op = PrintName("CastIntAPUint8");
7151 break;
7152case OP_CastIntAPSint8:
7153 Text.Op = PrintName("CastIntAPSint8");
7154 break;
7155case OP_CastIntAPUint16:
7156 Text.Op = PrintName("CastIntAPUint16");
7157 break;
7158case OP_CastIntAPSint16:
7159 Text.Op = PrintName("CastIntAPSint16");
7160 break;
7161case OP_CastIntAPUint32:
7162 Text.Op = PrintName("CastIntAPUint32");
7163 break;
7164case OP_CastIntAPSint32:
7165 Text.Op = PrintName("CastIntAPSint32");
7166 break;
7167case OP_CastIntAPUint64:
7168 Text.Op = PrintName("CastIntAPUint64");
7169 break;
7170case OP_CastIntAPSint64:
7171 Text.Op = PrintName("CastIntAPSint64");
7172 break;
7173case OP_CastIntAPBool:
7174 Text.Op = PrintName("CastIntAPBool");
7175 break;
7176case OP_CastIntAPSUint8:
7177 Text.Op = PrintName("CastIntAPSUint8");
7178 break;
7179case OP_CastIntAPSSint8:
7180 Text.Op = PrintName("CastIntAPSSint8");
7181 break;
7182case OP_CastIntAPSUint16:
7183 Text.Op = PrintName("CastIntAPSUint16");
7184 break;
7185case OP_CastIntAPSSint16:
7186 Text.Op = PrintName("CastIntAPSSint16");
7187 break;
7188case OP_CastIntAPSUint32:
7189 Text.Op = PrintName("CastIntAPSUint32");
7190 break;
7191case OP_CastIntAPSSint32:
7192 Text.Op = PrintName("CastIntAPSSint32");
7193 break;
7194case OP_CastIntAPSUint64:
7195 Text.Op = PrintName("CastIntAPSUint64");
7196 break;
7197case OP_CastIntAPSSint64:
7198 Text.Op = PrintName("CastIntAPSSint64");
7199 break;
7200case OP_CastIntAPSBool:
7201 Text.Op = PrintName("CastIntAPSBool");
7202 break;
7203case OP_CastFixedPointUint8:
7204 Text.Op = PrintName("CastFixedPointUint8");
7205 break;
7206case OP_CastFixedPointSint8:
7207 Text.Op = PrintName("CastFixedPointSint8");
7208 break;
7209case OP_CastFixedPointUint16:
7210 Text.Op = PrintName("CastFixedPointUint16");
7211 break;
7212case OP_CastFixedPointSint16:
7213 Text.Op = PrintName("CastFixedPointSint16");
7214 break;
7215case OP_CastFixedPointUint32:
7216 Text.Op = PrintName("CastFixedPointUint32");
7217 break;
7218case OP_CastFixedPointSint32:
7219 Text.Op = PrintName("CastFixedPointSint32");
7220 break;
7221case OP_CastFixedPointUint64:
7222 Text.Op = PrintName("CastFixedPointUint64");
7223 break;
7224case OP_CastFixedPointSint64:
7225 Text.Op = PrintName("CastFixedPointSint64");
7226 break;
7227case OP_CastFixedPointBool:
7228 Text.Op = PrintName("CastFixedPointBool");
7229 break;
7230#endif
7231#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7232bool emitCastUint8Uint8(SourceInfo);
7233bool emitCastUint8Sint8(SourceInfo);
7234bool emitCastUint8Uint16(SourceInfo);
7235bool emitCastUint8Sint16(SourceInfo);
7236bool emitCastUint8Uint32(SourceInfo);
7237bool emitCastUint8Sint32(SourceInfo);
7238bool emitCastUint8Uint64(SourceInfo);
7239bool emitCastUint8Sint64(SourceInfo);
7240bool emitCastUint8Bool(SourceInfo);
7241bool emitCastSint8Uint8(SourceInfo);
7242bool emitCastSint8Sint8(SourceInfo);
7243bool emitCastSint8Uint16(SourceInfo);
7244bool emitCastSint8Sint16(SourceInfo);
7245bool emitCastSint8Uint32(SourceInfo);
7246bool emitCastSint8Sint32(SourceInfo);
7247bool emitCastSint8Uint64(SourceInfo);
7248bool emitCastSint8Sint64(SourceInfo);
7249bool emitCastSint8Bool(SourceInfo);
7250bool emitCastUint16Uint8(SourceInfo);
7251bool emitCastUint16Sint8(SourceInfo);
7252bool emitCastUint16Uint16(SourceInfo);
7253bool emitCastUint16Sint16(SourceInfo);
7254bool emitCastUint16Uint32(SourceInfo);
7255bool emitCastUint16Sint32(SourceInfo);
7256bool emitCastUint16Uint64(SourceInfo);
7257bool emitCastUint16Sint64(SourceInfo);
7258bool emitCastUint16Bool(SourceInfo);
7259bool emitCastSint16Uint8(SourceInfo);
7260bool emitCastSint16Sint8(SourceInfo);
7261bool emitCastSint16Uint16(SourceInfo);
7262bool emitCastSint16Sint16(SourceInfo);
7263bool emitCastSint16Uint32(SourceInfo);
7264bool emitCastSint16Sint32(SourceInfo);
7265bool emitCastSint16Uint64(SourceInfo);
7266bool emitCastSint16Sint64(SourceInfo);
7267bool emitCastSint16Bool(SourceInfo);
7268bool emitCastUint32Uint8(SourceInfo);
7269bool emitCastUint32Sint8(SourceInfo);
7270bool emitCastUint32Uint16(SourceInfo);
7271bool emitCastUint32Sint16(SourceInfo);
7272bool emitCastUint32Uint32(SourceInfo);
7273bool emitCastUint32Sint32(SourceInfo);
7274bool emitCastUint32Uint64(SourceInfo);
7275bool emitCastUint32Sint64(SourceInfo);
7276bool emitCastUint32Bool(SourceInfo);
7277bool emitCastSint32Uint8(SourceInfo);
7278bool emitCastSint32Sint8(SourceInfo);
7279bool emitCastSint32Uint16(SourceInfo);
7280bool emitCastSint32Sint16(SourceInfo);
7281bool emitCastSint32Uint32(SourceInfo);
7282bool emitCastSint32Sint32(SourceInfo);
7283bool emitCastSint32Uint64(SourceInfo);
7284bool emitCastSint32Sint64(SourceInfo);
7285bool emitCastSint32Bool(SourceInfo);
7286bool emitCastUint64Uint8(SourceInfo);
7287bool emitCastUint64Sint8(SourceInfo);
7288bool emitCastUint64Uint16(SourceInfo);
7289bool emitCastUint64Sint16(SourceInfo);
7290bool emitCastUint64Uint32(SourceInfo);
7291bool emitCastUint64Sint32(SourceInfo);
7292bool emitCastUint64Uint64(SourceInfo);
7293bool emitCastUint64Sint64(SourceInfo);
7294bool emitCastUint64Bool(SourceInfo);
7295bool emitCastSint64Uint8(SourceInfo);
7296bool emitCastSint64Sint8(SourceInfo);
7297bool emitCastSint64Uint16(SourceInfo);
7298bool emitCastSint64Sint16(SourceInfo);
7299bool emitCastSint64Uint32(SourceInfo);
7300bool emitCastSint64Sint32(SourceInfo);
7301bool emitCastSint64Uint64(SourceInfo);
7302bool emitCastSint64Sint64(SourceInfo);
7303bool emitCastSint64Bool(SourceInfo);
7304bool emitCastBoolUint8(SourceInfo);
7305bool emitCastBoolSint8(SourceInfo);
7306bool emitCastBoolUint16(SourceInfo);
7307bool emitCastBoolSint16(SourceInfo);
7308bool emitCastBoolUint32(SourceInfo);
7309bool emitCastBoolSint32(SourceInfo);
7310bool emitCastBoolUint64(SourceInfo);
7311bool emitCastBoolSint64(SourceInfo);
7312bool emitCastBoolBool(SourceInfo);
7313bool emitCastIntAPUint8(SourceInfo);
7314bool emitCastIntAPSint8(SourceInfo);
7315bool emitCastIntAPUint16(SourceInfo);
7316bool emitCastIntAPSint16(SourceInfo);
7317bool emitCastIntAPUint32(SourceInfo);
7318bool emitCastIntAPSint32(SourceInfo);
7319bool emitCastIntAPUint64(SourceInfo);
7320bool emitCastIntAPSint64(SourceInfo);
7321bool emitCastIntAPBool(SourceInfo);
7322bool emitCastIntAPSUint8(SourceInfo);
7323bool emitCastIntAPSSint8(SourceInfo);
7324bool emitCastIntAPSUint16(SourceInfo);
7325bool emitCastIntAPSSint16(SourceInfo);
7326bool emitCastIntAPSUint32(SourceInfo);
7327bool emitCastIntAPSSint32(SourceInfo);
7328bool emitCastIntAPSUint64(SourceInfo);
7329bool emitCastIntAPSSint64(SourceInfo);
7330bool emitCastIntAPSBool(SourceInfo);
7331bool emitCastFixedPointUint8(SourceInfo);
7332bool emitCastFixedPointSint8(SourceInfo);
7333bool emitCastFixedPointUint16(SourceInfo);
7334bool emitCastFixedPointSint16(SourceInfo);
7335bool emitCastFixedPointUint32(SourceInfo);
7336bool emitCastFixedPointSint32(SourceInfo);
7337bool emitCastFixedPointUint64(SourceInfo);
7338bool emitCastFixedPointSint64(SourceInfo);
7339bool emitCastFixedPointBool(SourceInfo);
7340#endif
7341#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7342[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
7343#endif
7344#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7345bool
7346#if defined(GET_EVAL_IMPL)
7347EvalEmitter
7348#else
7349ByteCodeEmitter
7350#endif
7351::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
7352 switch (T0) {
7353 case PT_Uint8:
7354 switch (T1) {
7355 case PT_Uint8:
7356 return emitCastUint8Uint8(I);
7357 case PT_Sint8:
7358 return emitCastUint8Sint8(I);
7359 case PT_Uint16:
7360 return emitCastUint8Uint16(I);
7361 case PT_Sint16:
7362 return emitCastUint8Sint16(I);
7363 case PT_Uint32:
7364 return emitCastUint8Uint32(I);
7365 case PT_Sint32:
7366 return emitCastUint8Sint32(I);
7367 case PT_Uint64:
7368 return emitCastUint8Uint64(I);
7369 case PT_Sint64:
7370 return emitCastUint8Sint64(I);
7371 case PT_Bool:
7372 return emitCastUint8Bool(I);
7373 default: llvm_unreachable("invalid type: emitCast");
7374 }
7375 llvm_unreachable("invalid enum value");
7376 case PT_Sint8:
7377 switch (T1) {
7378 case PT_Uint8:
7379 return emitCastSint8Uint8(I);
7380 case PT_Sint8:
7381 return emitCastSint8Sint8(I);
7382 case PT_Uint16:
7383 return emitCastSint8Uint16(I);
7384 case PT_Sint16:
7385 return emitCastSint8Sint16(I);
7386 case PT_Uint32:
7387 return emitCastSint8Uint32(I);
7388 case PT_Sint32:
7389 return emitCastSint8Sint32(I);
7390 case PT_Uint64:
7391 return emitCastSint8Uint64(I);
7392 case PT_Sint64:
7393 return emitCastSint8Sint64(I);
7394 case PT_Bool:
7395 return emitCastSint8Bool(I);
7396 default: llvm_unreachable("invalid type: emitCast");
7397 }
7398 llvm_unreachable("invalid enum value");
7399 case PT_Uint16:
7400 switch (T1) {
7401 case PT_Uint8:
7402 return emitCastUint16Uint8(I);
7403 case PT_Sint8:
7404 return emitCastUint16Sint8(I);
7405 case PT_Uint16:
7406 return emitCastUint16Uint16(I);
7407 case PT_Sint16:
7408 return emitCastUint16Sint16(I);
7409 case PT_Uint32:
7410 return emitCastUint16Uint32(I);
7411 case PT_Sint32:
7412 return emitCastUint16Sint32(I);
7413 case PT_Uint64:
7414 return emitCastUint16Uint64(I);
7415 case PT_Sint64:
7416 return emitCastUint16Sint64(I);
7417 case PT_Bool:
7418 return emitCastUint16Bool(I);
7419 default: llvm_unreachable("invalid type: emitCast");
7420 }
7421 llvm_unreachable("invalid enum value");
7422 case PT_Sint16:
7423 switch (T1) {
7424 case PT_Uint8:
7425 return emitCastSint16Uint8(I);
7426 case PT_Sint8:
7427 return emitCastSint16Sint8(I);
7428 case PT_Uint16:
7429 return emitCastSint16Uint16(I);
7430 case PT_Sint16:
7431 return emitCastSint16Sint16(I);
7432 case PT_Uint32:
7433 return emitCastSint16Uint32(I);
7434 case PT_Sint32:
7435 return emitCastSint16Sint32(I);
7436 case PT_Uint64:
7437 return emitCastSint16Uint64(I);
7438 case PT_Sint64:
7439 return emitCastSint16Sint64(I);
7440 case PT_Bool:
7441 return emitCastSint16Bool(I);
7442 default: llvm_unreachable("invalid type: emitCast");
7443 }
7444 llvm_unreachable("invalid enum value");
7445 case PT_Uint32:
7446 switch (T1) {
7447 case PT_Uint8:
7448 return emitCastUint32Uint8(I);
7449 case PT_Sint8:
7450 return emitCastUint32Sint8(I);
7451 case PT_Uint16:
7452 return emitCastUint32Uint16(I);
7453 case PT_Sint16:
7454 return emitCastUint32Sint16(I);
7455 case PT_Uint32:
7456 return emitCastUint32Uint32(I);
7457 case PT_Sint32:
7458 return emitCastUint32Sint32(I);
7459 case PT_Uint64:
7460 return emitCastUint32Uint64(I);
7461 case PT_Sint64:
7462 return emitCastUint32Sint64(I);
7463 case PT_Bool:
7464 return emitCastUint32Bool(I);
7465 default: llvm_unreachable("invalid type: emitCast");
7466 }
7467 llvm_unreachable("invalid enum value");
7468 case PT_Sint32:
7469 switch (T1) {
7470 case PT_Uint8:
7471 return emitCastSint32Uint8(I);
7472 case PT_Sint8:
7473 return emitCastSint32Sint8(I);
7474 case PT_Uint16:
7475 return emitCastSint32Uint16(I);
7476 case PT_Sint16:
7477 return emitCastSint32Sint16(I);
7478 case PT_Uint32:
7479 return emitCastSint32Uint32(I);
7480 case PT_Sint32:
7481 return emitCastSint32Sint32(I);
7482 case PT_Uint64:
7483 return emitCastSint32Uint64(I);
7484 case PT_Sint64:
7485 return emitCastSint32Sint64(I);
7486 case PT_Bool:
7487 return emitCastSint32Bool(I);
7488 default: llvm_unreachable("invalid type: emitCast");
7489 }
7490 llvm_unreachable("invalid enum value");
7491 case PT_Uint64:
7492 switch (T1) {
7493 case PT_Uint8:
7494 return emitCastUint64Uint8(I);
7495 case PT_Sint8:
7496 return emitCastUint64Sint8(I);
7497 case PT_Uint16:
7498 return emitCastUint64Uint16(I);
7499 case PT_Sint16:
7500 return emitCastUint64Sint16(I);
7501 case PT_Uint32:
7502 return emitCastUint64Uint32(I);
7503 case PT_Sint32:
7504 return emitCastUint64Sint32(I);
7505 case PT_Uint64:
7506 return emitCastUint64Uint64(I);
7507 case PT_Sint64:
7508 return emitCastUint64Sint64(I);
7509 case PT_Bool:
7510 return emitCastUint64Bool(I);
7511 default: llvm_unreachable("invalid type: emitCast");
7512 }
7513 llvm_unreachable("invalid enum value");
7514 case PT_Sint64:
7515 switch (T1) {
7516 case PT_Uint8:
7517 return emitCastSint64Uint8(I);
7518 case PT_Sint8:
7519 return emitCastSint64Sint8(I);
7520 case PT_Uint16:
7521 return emitCastSint64Uint16(I);
7522 case PT_Sint16:
7523 return emitCastSint64Sint16(I);
7524 case PT_Uint32:
7525 return emitCastSint64Uint32(I);
7526 case PT_Sint32:
7527 return emitCastSint64Sint32(I);
7528 case PT_Uint64:
7529 return emitCastSint64Uint64(I);
7530 case PT_Sint64:
7531 return emitCastSint64Sint64(I);
7532 case PT_Bool:
7533 return emitCastSint64Bool(I);
7534 default: llvm_unreachable("invalid type: emitCast");
7535 }
7536 llvm_unreachable("invalid enum value");
7537 case PT_Bool:
7538 switch (T1) {
7539 case PT_Uint8:
7540 return emitCastBoolUint8(I);
7541 case PT_Sint8:
7542 return emitCastBoolSint8(I);
7543 case PT_Uint16:
7544 return emitCastBoolUint16(I);
7545 case PT_Sint16:
7546 return emitCastBoolSint16(I);
7547 case PT_Uint32:
7548 return emitCastBoolUint32(I);
7549 case PT_Sint32:
7550 return emitCastBoolSint32(I);
7551 case PT_Uint64:
7552 return emitCastBoolUint64(I);
7553 case PT_Sint64:
7554 return emitCastBoolSint64(I);
7555 case PT_Bool:
7556 return emitCastBoolBool(I);
7557 default: llvm_unreachable("invalid type: emitCast");
7558 }
7559 llvm_unreachable("invalid enum value");
7560 case PT_IntAP:
7561 switch (T1) {
7562 case PT_Uint8:
7563 return emitCastIntAPUint8(I);
7564 case PT_Sint8:
7565 return emitCastIntAPSint8(I);
7566 case PT_Uint16:
7567 return emitCastIntAPUint16(I);
7568 case PT_Sint16:
7569 return emitCastIntAPSint16(I);
7570 case PT_Uint32:
7571 return emitCastIntAPUint32(I);
7572 case PT_Sint32:
7573 return emitCastIntAPSint32(I);
7574 case PT_Uint64:
7575 return emitCastIntAPUint64(I);
7576 case PT_Sint64:
7577 return emitCastIntAPSint64(I);
7578 case PT_Bool:
7579 return emitCastIntAPBool(I);
7580 default: llvm_unreachable("invalid type: emitCast");
7581 }
7582 llvm_unreachable("invalid enum value");
7583 case PT_IntAPS:
7584 switch (T1) {
7585 case PT_Uint8:
7586 return emitCastIntAPSUint8(I);
7587 case PT_Sint8:
7588 return emitCastIntAPSSint8(I);
7589 case PT_Uint16:
7590 return emitCastIntAPSUint16(I);
7591 case PT_Sint16:
7592 return emitCastIntAPSSint16(I);
7593 case PT_Uint32:
7594 return emitCastIntAPSUint32(I);
7595 case PT_Sint32:
7596 return emitCastIntAPSSint32(I);
7597 case PT_Uint64:
7598 return emitCastIntAPSUint64(I);
7599 case PT_Sint64:
7600 return emitCastIntAPSSint64(I);
7601 case PT_Bool:
7602 return emitCastIntAPSBool(I);
7603 default: llvm_unreachable("invalid type: emitCast");
7604 }
7605 llvm_unreachable("invalid enum value");
7606 case PT_FixedPoint:
7607 switch (T1) {
7608 case PT_Uint8:
7609 return emitCastFixedPointUint8(I);
7610 case PT_Sint8:
7611 return emitCastFixedPointSint8(I);
7612 case PT_Uint16:
7613 return emitCastFixedPointUint16(I);
7614 case PT_Sint16:
7615 return emitCastFixedPointSint16(I);
7616 case PT_Uint32:
7617 return emitCastFixedPointUint32(I);
7618 case PT_Sint32:
7619 return emitCastFixedPointSint32(I);
7620 case PT_Uint64:
7621 return emitCastFixedPointUint64(I);
7622 case PT_Sint64:
7623 return emitCastFixedPointSint64(I);
7624 case PT_Bool:
7625 return emitCastFixedPointBool(I);
7626 default: llvm_unreachable("invalid type: emitCast");
7627 }
7628 llvm_unreachable("invalid enum value");
7629 default: llvm_unreachable("invalid type: emitCast");
7630 }
7631 llvm_unreachable("invalid enum value");
7632}
7633#endif
7634#ifdef GET_LINK_IMPL
7635bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
7636 return emitOp<>(OP_CastUint8Uint8, L);
7637}
7638bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
7639 return emitOp<>(OP_CastUint8Sint8, L);
7640}
7641bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
7642 return emitOp<>(OP_CastUint8Uint16, L);
7643}
7644bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
7645 return emitOp<>(OP_CastUint8Sint16, L);
7646}
7647bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
7648 return emitOp<>(OP_CastUint8Uint32, L);
7649}
7650bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
7651 return emitOp<>(OP_CastUint8Sint32, L);
7652}
7653bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
7654 return emitOp<>(OP_CastUint8Uint64, L);
7655}
7656bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
7657 return emitOp<>(OP_CastUint8Sint64, L);
7658}
7659bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
7660 return emitOp<>(OP_CastUint8Bool, L);
7661}
7662bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
7663 return emitOp<>(OP_CastSint8Uint8, L);
7664}
7665bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
7666 return emitOp<>(OP_CastSint8Sint8, L);
7667}
7668bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
7669 return emitOp<>(OP_CastSint8Uint16, L);
7670}
7671bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
7672 return emitOp<>(OP_CastSint8Sint16, L);
7673}
7674bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
7675 return emitOp<>(OP_CastSint8Uint32, L);
7676}
7677bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
7678 return emitOp<>(OP_CastSint8Sint32, L);
7679}
7680bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
7681 return emitOp<>(OP_CastSint8Uint64, L);
7682}
7683bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
7684 return emitOp<>(OP_CastSint8Sint64, L);
7685}
7686bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
7687 return emitOp<>(OP_CastSint8Bool, L);
7688}
7689bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
7690 return emitOp<>(OP_CastUint16Uint8, L);
7691}
7692bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
7693 return emitOp<>(OP_CastUint16Sint8, L);
7694}
7695bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
7696 return emitOp<>(OP_CastUint16Uint16, L);
7697}
7698bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
7699 return emitOp<>(OP_CastUint16Sint16, L);
7700}
7701bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
7702 return emitOp<>(OP_CastUint16Uint32, L);
7703}
7704bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
7705 return emitOp<>(OP_CastUint16Sint32, L);
7706}
7707bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
7708 return emitOp<>(OP_CastUint16Uint64, L);
7709}
7710bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
7711 return emitOp<>(OP_CastUint16Sint64, L);
7712}
7713bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
7714 return emitOp<>(OP_CastUint16Bool, L);
7715}
7716bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
7717 return emitOp<>(OP_CastSint16Uint8, L);
7718}
7719bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
7720 return emitOp<>(OP_CastSint16Sint8, L);
7721}
7722bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
7723 return emitOp<>(OP_CastSint16Uint16, L);
7724}
7725bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
7726 return emitOp<>(OP_CastSint16Sint16, L);
7727}
7728bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
7729 return emitOp<>(OP_CastSint16Uint32, L);
7730}
7731bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
7732 return emitOp<>(OP_CastSint16Sint32, L);
7733}
7734bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
7735 return emitOp<>(OP_CastSint16Uint64, L);
7736}
7737bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
7738 return emitOp<>(OP_CastSint16Sint64, L);
7739}
7740bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
7741 return emitOp<>(OP_CastSint16Bool, L);
7742}
7743bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
7744 return emitOp<>(OP_CastUint32Uint8, L);
7745}
7746bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
7747 return emitOp<>(OP_CastUint32Sint8, L);
7748}
7749bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
7750 return emitOp<>(OP_CastUint32Uint16, L);
7751}
7752bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
7753 return emitOp<>(OP_CastUint32Sint16, L);
7754}
7755bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
7756 return emitOp<>(OP_CastUint32Uint32, L);
7757}
7758bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
7759 return emitOp<>(OP_CastUint32Sint32, L);
7760}
7761bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
7762 return emitOp<>(OP_CastUint32Uint64, L);
7763}
7764bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
7765 return emitOp<>(OP_CastUint32Sint64, L);
7766}
7767bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
7768 return emitOp<>(OP_CastUint32Bool, L);
7769}
7770bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
7771 return emitOp<>(OP_CastSint32Uint8, L);
7772}
7773bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
7774 return emitOp<>(OP_CastSint32Sint8, L);
7775}
7776bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
7777 return emitOp<>(OP_CastSint32Uint16, L);
7778}
7779bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
7780 return emitOp<>(OP_CastSint32Sint16, L);
7781}
7782bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
7783 return emitOp<>(OP_CastSint32Uint32, L);
7784}
7785bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
7786 return emitOp<>(OP_CastSint32Sint32, L);
7787}
7788bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
7789 return emitOp<>(OP_CastSint32Uint64, L);
7790}
7791bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
7792 return emitOp<>(OP_CastSint32Sint64, L);
7793}
7794bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
7795 return emitOp<>(OP_CastSint32Bool, L);
7796}
7797bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
7798 return emitOp<>(OP_CastUint64Uint8, L);
7799}
7800bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
7801 return emitOp<>(OP_CastUint64Sint8, L);
7802}
7803bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
7804 return emitOp<>(OP_CastUint64Uint16, L);
7805}
7806bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
7807 return emitOp<>(OP_CastUint64Sint16, L);
7808}
7809bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
7810 return emitOp<>(OP_CastUint64Uint32, L);
7811}
7812bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
7813 return emitOp<>(OP_CastUint64Sint32, L);
7814}
7815bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
7816 return emitOp<>(OP_CastUint64Uint64, L);
7817}
7818bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
7819 return emitOp<>(OP_CastUint64Sint64, L);
7820}
7821bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
7822 return emitOp<>(OP_CastUint64Bool, L);
7823}
7824bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
7825 return emitOp<>(OP_CastSint64Uint8, L);
7826}
7827bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
7828 return emitOp<>(OP_CastSint64Sint8, L);
7829}
7830bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
7831 return emitOp<>(OP_CastSint64Uint16, L);
7832}
7833bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
7834 return emitOp<>(OP_CastSint64Sint16, L);
7835}
7836bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
7837 return emitOp<>(OP_CastSint64Uint32, L);
7838}
7839bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
7840 return emitOp<>(OP_CastSint64Sint32, L);
7841}
7842bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
7843 return emitOp<>(OP_CastSint64Uint64, L);
7844}
7845bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
7846 return emitOp<>(OP_CastSint64Sint64, L);
7847}
7848bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
7849 return emitOp<>(OP_CastSint64Bool, L);
7850}
7851bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
7852 return emitOp<>(OP_CastBoolUint8, L);
7853}
7854bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
7855 return emitOp<>(OP_CastBoolSint8, L);
7856}
7857bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
7858 return emitOp<>(OP_CastBoolUint16, L);
7859}
7860bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
7861 return emitOp<>(OP_CastBoolSint16, L);
7862}
7863bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
7864 return emitOp<>(OP_CastBoolUint32, L);
7865}
7866bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
7867 return emitOp<>(OP_CastBoolSint32, L);
7868}
7869bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
7870 return emitOp<>(OP_CastBoolUint64, L);
7871}
7872bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
7873 return emitOp<>(OP_CastBoolSint64, L);
7874}
7875bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
7876 return emitOp<>(OP_CastBoolBool, L);
7877}
7878bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
7879 return emitOp<>(OP_CastIntAPUint8, L);
7880}
7881bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
7882 return emitOp<>(OP_CastIntAPSint8, L);
7883}
7884bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
7885 return emitOp<>(OP_CastIntAPUint16, L);
7886}
7887bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
7888 return emitOp<>(OP_CastIntAPSint16, L);
7889}
7890bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
7891 return emitOp<>(OP_CastIntAPUint32, L);
7892}
7893bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
7894 return emitOp<>(OP_CastIntAPSint32, L);
7895}
7896bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
7897 return emitOp<>(OP_CastIntAPUint64, L);
7898}
7899bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
7900 return emitOp<>(OP_CastIntAPSint64, L);
7901}
7902bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
7903 return emitOp<>(OP_CastIntAPBool, L);
7904}
7905bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
7906 return emitOp<>(OP_CastIntAPSUint8, L);
7907}
7908bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
7909 return emitOp<>(OP_CastIntAPSSint8, L);
7910}
7911bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
7912 return emitOp<>(OP_CastIntAPSUint16, L);
7913}
7914bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
7915 return emitOp<>(OP_CastIntAPSSint16, L);
7916}
7917bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
7918 return emitOp<>(OP_CastIntAPSUint32, L);
7919}
7920bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
7921 return emitOp<>(OP_CastIntAPSSint32, L);
7922}
7923bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
7924 return emitOp<>(OP_CastIntAPSUint64, L);
7925}
7926bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
7927 return emitOp<>(OP_CastIntAPSSint64, L);
7928}
7929bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
7930 return emitOp<>(OP_CastIntAPSBool, L);
7931}
7932bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
7933 return emitOp<>(OP_CastFixedPointUint8, L);
7934}
7935bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
7936 return emitOp<>(OP_CastFixedPointSint8, L);
7937}
7938bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
7939 return emitOp<>(OP_CastFixedPointUint16, L);
7940}
7941bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
7942 return emitOp<>(OP_CastFixedPointSint16, L);
7943}
7944bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
7945 return emitOp<>(OP_CastFixedPointUint32, L);
7946}
7947bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
7948 return emitOp<>(OP_CastFixedPointSint32, L);
7949}
7950bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
7951 return emitOp<>(OP_CastFixedPointUint64, L);
7952}
7953bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
7954 return emitOp<>(OP_CastFixedPointSint64, L);
7955}
7956bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
7957 return emitOp<>(OP_CastFixedPointBool, L);
7958}
7959#endif
7960#ifdef GET_EVAL_IMPL
7961bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
7962 if (!isActive()) return true;
7963 CurrentSource = L;
7964 return Cast<PT_Uint8, PT_Uint8>(S, OpPC);
7965}
7966bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
7967 if (!isActive()) return true;
7968 CurrentSource = L;
7969 return Cast<PT_Uint8, PT_Sint8>(S, OpPC);
7970}
7971bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
7972 if (!isActive()) return true;
7973 CurrentSource = L;
7974 return Cast<PT_Uint8, PT_Uint16>(S, OpPC);
7975}
7976bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
7977 if (!isActive()) return true;
7978 CurrentSource = L;
7979 return Cast<PT_Uint8, PT_Sint16>(S, OpPC);
7980}
7981bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
7982 if (!isActive()) return true;
7983 CurrentSource = L;
7984 return Cast<PT_Uint8, PT_Uint32>(S, OpPC);
7985}
7986bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
7987 if (!isActive()) return true;
7988 CurrentSource = L;
7989 return Cast<PT_Uint8, PT_Sint32>(S, OpPC);
7990}
7991bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
7992 if (!isActive()) return true;
7993 CurrentSource = L;
7994 return Cast<PT_Uint8, PT_Uint64>(S, OpPC);
7995}
7996bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
7997 if (!isActive()) return true;
7998 CurrentSource = L;
7999 return Cast<PT_Uint8, PT_Sint64>(S, OpPC);
8000}
8001bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
8002 if (!isActive()) return true;
8003 CurrentSource = L;
8004 return Cast<PT_Uint8, PT_Bool>(S, OpPC);
8005}
8006bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
8007 if (!isActive()) return true;
8008 CurrentSource = L;
8009 return Cast<PT_Sint8, PT_Uint8>(S, OpPC);
8010}
8011bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
8012 if (!isActive()) return true;
8013 CurrentSource = L;
8014 return Cast<PT_Sint8, PT_Sint8>(S, OpPC);
8015}
8016bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
8017 if (!isActive()) return true;
8018 CurrentSource = L;
8019 return Cast<PT_Sint8, PT_Uint16>(S, OpPC);
8020}
8021bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
8022 if (!isActive()) return true;
8023 CurrentSource = L;
8024 return Cast<PT_Sint8, PT_Sint16>(S, OpPC);
8025}
8026bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
8027 if (!isActive()) return true;
8028 CurrentSource = L;
8029 return Cast<PT_Sint8, PT_Uint32>(S, OpPC);
8030}
8031bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
8032 if (!isActive()) return true;
8033 CurrentSource = L;
8034 return Cast<PT_Sint8, PT_Sint32>(S, OpPC);
8035}
8036bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
8037 if (!isActive()) return true;
8038 CurrentSource = L;
8039 return Cast<PT_Sint8, PT_Uint64>(S, OpPC);
8040}
8041bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
8042 if (!isActive()) return true;
8043 CurrentSource = L;
8044 return Cast<PT_Sint8, PT_Sint64>(S, OpPC);
8045}
8046bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
8047 if (!isActive()) return true;
8048 CurrentSource = L;
8049 return Cast<PT_Sint8, PT_Bool>(S, OpPC);
8050}
8051bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
8052 if (!isActive()) return true;
8053 CurrentSource = L;
8054 return Cast<PT_Uint16, PT_Uint8>(S, OpPC);
8055}
8056bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
8057 if (!isActive()) return true;
8058 CurrentSource = L;
8059 return Cast<PT_Uint16, PT_Sint8>(S, OpPC);
8060}
8061bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
8062 if (!isActive()) return true;
8063 CurrentSource = L;
8064 return Cast<PT_Uint16, PT_Uint16>(S, OpPC);
8065}
8066bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
8067 if (!isActive()) return true;
8068 CurrentSource = L;
8069 return Cast<PT_Uint16, PT_Sint16>(S, OpPC);
8070}
8071bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
8072 if (!isActive()) return true;
8073 CurrentSource = L;
8074 return Cast<PT_Uint16, PT_Uint32>(S, OpPC);
8075}
8076bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
8077 if (!isActive()) return true;
8078 CurrentSource = L;
8079 return Cast<PT_Uint16, PT_Sint32>(S, OpPC);
8080}
8081bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
8082 if (!isActive()) return true;
8083 CurrentSource = L;
8084 return Cast<PT_Uint16, PT_Uint64>(S, OpPC);
8085}
8086bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
8087 if (!isActive()) return true;
8088 CurrentSource = L;
8089 return Cast<PT_Uint16, PT_Sint64>(S, OpPC);
8090}
8091bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
8092 if (!isActive()) return true;
8093 CurrentSource = L;
8094 return Cast<PT_Uint16, PT_Bool>(S, OpPC);
8095}
8096bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
8097 if (!isActive()) return true;
8098 CurrentSource = L;
8099 return Cast<PT_Sint16, PT_Uint8>(S, OpPC);
8100}
8101bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
8102 if (!isActive()) return true;
8103 CurrentSource = L;
8104 return Cast<PT_Sint16, PT_Sint8>(S, OpPC);
8105}
8106bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
8107 if (!isActive()) return true;
8108 CurrentSource = L;
8109 return Cast<PT_Sint16, PT_Uint16>(S, OpPC);
8110}
8111bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
8112 if (!isActive()) return true;
8113 CurrentSource = L;
8114 return Cast<PT_Sint16, PT_Sint16>(S, OpPC);
8115}
8116bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
8117 if (!isActive()) return true;
8118 CurrentSource = L;
8119 return Cast<PT_Sint16, PT_Uint32>(S, OpPC);
8120}
8121bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
8122 if (!isActive()) return true;
8123 CurrentSource = L;
8124 return Cast<PT_Sint16, PT_Sint32>(S, OpPC);
8125}
8126bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
8127 if (!isActive()) return true;
8128 CurrentSource = L;
8129 return Cast<PT_Sint16, PT_Uint64>(S, OpPC);
8130}
8131bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
8132 if (!isActive()) return true;
8133 CurrentSource = L;
8134 return Cast<PT_Sint16, PT_Sint64>(S, OpPC);
8135}
8136bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
8137 if (!isActive()) return true;
8138 CurrentSource = L;
8139 return Cast<PT_Sint16, PT_Bool>(S, OpPC);
8140}
8141bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
8142 if (!isActive()) return true;
8143 CurrentSource = L;
8144 return Cast<PT_Uint32, PT_Uint8>(S, OpPC);
8145}
8146bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
8147 if (!isActive()) return true;
8148 CurrentSource = L;
8149 return Cast<PT_Uint32, PT_Sint8>(S, OpPC);
8150}
8151bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
8152 if (!isActive()) return true;
8153 CurrentSource = L;
8154 return Cast<PT_Uint32, PT_Uint16>(S, OpPC);
8155}
8156bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
8157 if (!isActive()) return true;
8158 CurrentSource = L;
8159 return Cast<PT_Uint32, PT_Sint16>(S, OpPC);
8160}
8161bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
8162 if (!isActive()) return true;
8163 CurrentSource = L;
8164 return Cast<PT_Uint32, PT_Uint32>(S, OpPC);
8165}
8166bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
8167 if (!isActive()) return true;
8168 CurrentSource = L;
8169 return Cast<PT_Uint32, PT_Sint32>(S, OpPC);
8170}
8171bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
8172 if (!isActive()) return true;
8173 CurrentSource = L;
8174 return Cast<PT_Uint32, PT_Uint64>(S, OpPC);
8175}
8176bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
8177 if (!isActive()) return true;
8178 CurrentSource = L;
8179 return Cast<PT_Uint32, PT_Sint64>(S, OpPC);
8180}
8181bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
8182 if (!isActive()) return true;
8183 CurrentSource = L;
8184 return Cast<PT_Uint32, PT_Bool>(S, OpPC);
8185}
8186bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
8187 if (!isActive()) return true;
8188 CurrentSource = L;
8189 return Cast<PT_Sint32, PT_Uint8>(S, OpPC);
8190}
8191bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
8192 if (!isActive()) return true;
8193 CurrentSource = L;
8194 return Cast<PT_Sint32, PT_Sint8>(S, OpPC);
8195}
8196bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
8197 if (!isActive()) return true;
8198 CurrentSource = L;
8199 return Cast<PT_Sint32, PT_Uint16>(S, OpPC);
8200}
8201bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
8202 if (!isActive()) return true;
8203 CurrentSource = L;
8204 return Cast<PT_Sint32, PT_Sint16>(S, OpPC);
8205}
8206bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
8207 if (!isActive()) return true;
8208 CurrentSource = L;
8209 return Cast<PT_Sint32, PT_Uint32>(S, OpPC);
8210}
8211bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
8212 if (!isActive()) return true;
8213 CurrentSource = L;
8214 return Cast<PT_Sint32, PT_Sint32>(S, OpPC);
8215}
8216bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
8217 if (!isActive()) return true;
8218 CurrentSource = L;
8219 return Cast<PT_Sint32, PT_Uint64>(S, OpPC);
8220}
8221bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
8222 if (!isActive()) return true;
8223 CurrentSource = L;
8224 return Cast<PT_Sint32, PT_Sint64>(S, OpPC);
8225}
8226bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
8227 if (!isActive()) return true;
8228 CurrentSource = L;
8229 return Cast<PT_Sint32, PT_Bool>(S, OpPC);
8230}
8231bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
8232 if (!isActive()) return true;
8233 CurrentSource = L;
8234 return Cast<PT_Uint64, PT_Uint8>(S, OpPC);
8235}
8236bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
8237 if (!isActive()) return true;
8238 CurrentSource = L;
8239 return Cast<PT_Uint64, PT_Sint8>(S, OpPC);
8240}
8241bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
8242 if (!isActive()) return true;
8243 CurrentSource = L;
8244 return Cast<PT_Uint64, PT_Uint16>(S, OpPC);
8245}
8246bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
8247 if (!isActive()) return true;
8248 CurrentSource = L;
8249 return Cast<PT_Uint64, PT_Sint16>(S, OpPC);
8250}
8251bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
8252 if (!isActive()) return true;
8253 CurrentSource = L;
8254 return Cast<PT_Uint64, PT_Uint32>(S, OpPC);
8255}
8256bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
8257 if (!isActive()) return true;
8258 CurrentSource = L;
8259 return Cast<PT_Uint64, PT_Sint32>(S, OpPC);
8260}
8261bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
8262 if (!isActive()) return true;
8263 CurrentSource = L;
8264 return Cast<PT_Uint64, PT_Uint64>(S, OpPC);
8265}
8266bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
8267 if (!isActive()) return true;
8268 CurrentSource = L;
8269 return Cast<PT_Uint64, PT_Sint64>(S, OpPC);
8270}
8271bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
8272 if (!isActive()) return true;
8273 CurrentSource = L;
8274 return Cast<PT_Uint64, PT_Bool>(S, OpPC);
8275}
8276bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
8277 if (!isActive()) return true;
8278 CurrentSource = L;
8279 return Cast<PT_Sint64, PT_Uint8>(S, OpPC);
8280}
8281bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
8282 if (!isActive()) return true;
8283 CurrentSource = L;
8284 return Cast<PT_Sint64, PT_Sint8>(S, OpPC);
8285}
8286bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
8287 if (!isActive()) return true;
8288 CurrentSource = L;
8289 return Cast<PT_Sint64, PT_Uint16>(S, OpPC);
8290}
8291bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
8292 if (!isActive()) return true;
8293 CurrentSource = L;
8294 return Cast<PT_Sint64, PT_Sint16>(S, OpPC);
8295}
8296bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
8297 if (!isActive()) return true;
8298 CurrentSource = L;
8299 return Cast<PT_Sint64, PT_Uint32>(S, OpPC);
8300}
8301bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
8302 if (!isActive()) return true;
8303 CurrentSource = L;
8304 return Cast<PT_Sint64, PT_Sint32>(S, OpPC);
8305}
8306bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
8307 if (!isActive()) return true;
8308 CurrentSource = L;
8309 return Cast<PT_Sint64, PT_Uint64>(S, OpPC);
8310}
8311bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
8312 if (!isActive()) return true;
8313 CurrentSource = L;
8314 return Cast<PT_Sint64, PT_Sint64>(S, OpPC);
8315}
8316bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
8317 if (!isActive()) return true;
8318 CurrentSource = L;
8319 return Cast<PT_Sint64, PT_Bool>(S, OpPC);
8320}
8321bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
8322 if (!isActive()) return true;
8323 CurrentSource = L;
8324 return Cast<PT_Bool, PT_Uint8>(S, OpPC);
8325}
8326bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
8327 if (!isActive()) return true;
8328 CurrentSource = L;
8329 return Cast<PT_Bool, PT_Sint8>(S, OpPC);
8330}
8331bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
8332 if (!isActive()) return true;
8333 CurrentSource = L;
8334 return Cast<PT_Bool, PT_Uint16>(S, OpPC);
8335}
8336bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
8337 if (!isActive()) return true;
8338 CurrentSource = L;
8339 return Cast<PT_Bool, PT_Sint16>(S, OpPC);
8340}
8341bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
8342 if (!isActive()) return true;
8343 CurrentSource = L;
8344 return Cast<PT_Bool, PT_Uint32>(S, OpPC);
8345}
8346bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
8347 if (!isActive()) return true;
8348 CurrentSource = L;
8349 return Cast<PT_Bool, PT_Sint32>(S, OpPC);
8350}
8351bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
8352 if (!isActive()) return true;
8353 CurrentSource = L;
8354 return Cast<PT_Bool, PT_Uint64>(S, OpPC);
8355}
8356bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
8357 if (!isActive()) return true;
8358 CurrentSource = L;
8359 return Cast<PT_Bool, PT_Sint64>(S, OpPC);
8360}
8361bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
8362 if (!isActive()) return true;
8363 CurrentSource = L;
8364 return Cast<PT_Bool, PT_Bool>(S, OpPC);
8365}
8366bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
8367 if (!isActive()) return true;
8368 CurrentSource = L;
8369 return Cast<PT_IntAP, PT_Uint8>(S, OpPC);
8370}
8371bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
8372 if (!isActive()) return true;
8373 CurrentSource = L;
8374 return Cast<PT_IntAP, PT_Sint8>(S, OpPC);
8375}
8376bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
8377 if (!isActive()) return true;
8378 CurrentSource = L;
8379 return Cast<PT_IntAP, PT_Uint16>(S, OpPC);
8380}
8381bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
8382 if (!isActive()) return true;
8383 CurrentSource = L;
8384 return Cast<PT_IntAP, PT_Sint16>(S, OpPC);
8385}
8386bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
8387 if (!isActive()) return true;
8388 CurrentSource = L;
8389 return Cast<PT_IntAP, PT_Uint32>(S, OpPC);
8390}
8391bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
8392 if (!isActive()) return true;
8393 CurrentSource = L;
8394 return Cast<PT_IntAP, PT_Sint32>(S, OpPC);
8395}
8396bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
8397 if (!isActive()) return true;
8398 CurrentSource = L;
8399 return Cast<PT_IntAP, PT_Uint64>(S, OpPC);
8400}
8401bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
8402 if (!isActive()) return true;
8403 CurrentSource = L;
8404 return Cast<PT_IntAP, PT_Sint64>(S, OpPC);
8405}
8406bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
8407 if (!isActive()) return true;
8408 CurrentSource = L;
8409 return Cast<PT_IntAP, PT_Bool>(S, OpPC);
8410}
8411bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
8412 if (!isActive()) return true;
8413 CurrentSource = L;
8414 return Cast<PT_IntAPS, PT_Uint8>(S, OpPC);
8415}
8416bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
8417 if (!isActive()) return true;
8418 CurrentSource = L;
8419 return Cast<PT_IntAPS, PT_Sint8>(S, OpPC);
8420}
8421bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
8422 if (!isActive()) return true;
8423 CurrentSource = L;
8424 return Cast<PT_IntAPS, PT_Uint16>(S, OpPC);
8425}
8426bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
8427 if (!isActive()) return true;
8428 CurrentSource = L;
8429 return Cast<PT_IntAPS, PT_Sint16>(S, OpPC);
8430}
8431bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
8432 if (!isActive()) return true;
8433 CurrentSource = L;
8434 return Cast<PT_IntAPS, PT_Uint32>(S, OpPC);
8435}
8436bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
8437 if (!isActive()) return true;
8438 CurrentSource = L;
8439 return Cast<PT_IntAPS, PT_Sint32>(S, OpPC);
8440}
8441bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
8442 if (!isActive()) return true;
8443 CurrentSource = L;
8444 return Cast<PT_IntAPS, PT_Uint64>(S, OpPC);
8445}
8446bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
8447 if (!isActive()) return true;
8448 CurrentSource = L;
8449 return Cast<PT_IntAPS, PT_Sint64>(S, OpPC);
8450}
8451bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
8452 if (!isActive()) return true;
8453 CurrentSource = L;
8454 return Cast<PT_IntAPS, PT_Bool>(S, OpPC);
8455}
8456bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
8457 if (!isActive()) return true;
8458 CurrentSource = L;
8459 return Cast<PT_FixedPoint, PT_Uint8>(S, OpPC);
8460}
8461bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
8462 if (!isActive()) return true;
8463 CurrentSource = L;
8464 return Cast<PT_FixedPoint, PT_Sint8>(S, OpPC);
8465}
8466bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
8467 if (!isActive()) return true;
8468 CurrentSource = L;
8469 return Cast<PT_FixedPoint, PT_Uint16>(S, OpPC);
8470}
8471bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
8472 if (!isActive()) return true;
8473 CurrentSource = L;
8474 return Cast<PT_FixedPoint, PT_Sint16>(S, OpPC);
8475}
8476bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
8477 if (!isActive()) return true;
8478 CurrentSource = L;
8479 return Cast<PT_FixedPoint, PT_Uint32>(S, OpPC);
8480}
8481bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
8482 if (!isActive()) return true;
8483 CurrentSource = L;
8484 return Cast<PT_FixedPoint, PT_Sint32>(S, OpPC);
8485}
8486bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
8487 if (!isActive()) return true;
8488 CurrentSource = L;
8489 return Cast<PT_FixedPoint, PT_Uint64>(S, OpPC);
8490}
8491bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
8492 if (!isActive()) return true;
8493 CurrentSource = L;
8494 return Cast<PT_FixedPoint, PT_Sint64>(S, OpPC);
8495}
8496bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
8497 if (!isActive()) return true;
8498 CurrentSource = L;
8499 return Cast<PT_FixedPoint, PT_Bool>(S, OpPC);
8500}
8501#endif
8502#ifdef GET_OPCODE_NAMES
8503OP_CastAPSint8,
8504OP_CastAPUint8,
8505OP_CastAPSint16,
8506OP_CastAPUint16,
8507OP_CastAPSint32,
8508OP_CastAPUint32,
8509OP_CastAPSint64,
8510OP_CastAPUint64,
8511OP_CastAPIntAP,
8512OP_CastAPIntAPS,
8513OP_CastAPBool,
8514OP_CastAPFixedPoint,
8515#endif
8516#ifdef GET_INTERPFN_LIST
8517&Interp_CastAPSint8,
8518&Interp_CastAPUint8,
8519&Interp_CastAPSint16,
8520&Interp_CastAPUint16,
8521&Interp_CastAPSint32,
8522&Interp_CastAPUint32,
8523&Interp_CastAPSint64,
8524&Interp_CastAPUint64,
8525&Interp_CastAPIntAP,
8526&Interp_CastAPIntAPS,
8527&Interp_CastAPBool,
8528&Interp_CastAPFixedPoint,
8529#endif
8530#ifdef GET_INTERPFN_DISPATCHERS
8531PRESERVE_NONE
8532static bool Interp_CastAPSint8(InterpState &S, CodePtr &PC) {
8533 {
8534 CodePtr OpPC = PC;
8535 const auto V0 = ReadArg<uint32_t>(S, PC);
8536 if (!CastAP<PT_Sint8>(S, OpPC, V0))
8537 return false;
8538 }
8539#if USE_TAILCALLS
8540 MUSTTAIL return InterpNext(S, PC);
8541#else
8542 return true;
8543#endif
8544}
8545PRESERVE_NONE
8546static bool Interp_CastAPUint8(InterpState &S, CodePtr &PC) {
8547 {
8548 CodePtr OpPC = PC;
8549 const auto V0 = ReadArg<uint32_t>(S, PC);
8550 if (!CastAP<PT_Uint8>(S, OpPC, V0))
8551 return false;
8552 }
8553#if USE_TAILCALLS
8554 MUSTTAIL return InterpNext(S, PC);
8555#else
8556 return true;
8557#endif
8558}
8559PRESERVE_NONE
8560static bool Interp_CastAPSint16(InterpState &S, CodePtr &PC) {
8561 {
8562 CodePtr OpPC = PC;
8563 const auto V0 = ReadArg<uint32_t>(S, PC);
8564 if (!CastAP<PT_Sint16>(S, OpPC, V0))
8565 return false;
8566 }
8567#if USE_TAILCALLS
8568 MUSTTAIL return InterpNext(S, PC);
8569#else
8570 return true;
8571#endif
8572}
8573PRESERVE_NONE
8574static bool Interp_CastAPUint16(InterpState &S, CodePtr &PC) {
8575 {
8576 CodePtr OpPC = PC;
8577 const auto V0 = ReadArg<uint32_t>(S, PC);
8578 if (!CastAP<PT_Uint16>(S, OpPC, V0))
8579 return false;
8580 }
8581#if USE_TAILCALLS
8582 MUSTTAIL return InterpNext(S, PC);
8583#else
8584 return true;
8585#endif
8586}
8587PRESERVE_NONE
8588static bool Interp_CastAPSint32(InterpState &S, CodePtr &PC) {
8589 {
8590 CodePtr OpPC = PC;
8591 const auto V0 = ReadArg<uint32_t>(S, PC);
8592 if (!CastAP<PT_Sint32>(S, OpPC, V0))
8593 return false;
8594 }
8595#if USE_TAILCALLS
8596 MUSTTAIL return InterpNext(S, PC);
8597#else
8598 return true;
8599#endif
8600}
8601PRESERVE_NONE
8602static bool Interp_CastAPUint32(InterpState &S, CodePtr &PC) {
8603 {
8604 CodePtr OpPC = PC;
8605 const auto V0 = ReadArg<uint32_t>(S, PC);
8606 if (!CastAP<PT_Uint32>(S, OpPC, V0))
8607 return false;
8608 }
8609#if USE_TAILCALLS
8610 MUSTTAIL return InterpNext(S, PC);
8611#else
8612 return true;
8613#endif
8614}
8615PRESERVE_NONE
8616static bool Interp_CastAPSint64(InterpState &S, CodePtr &PC) {
8617 {
8618 CodePtr OpPC = PC;
8619 const auto V0 = ReadArg<uint32_t>(S, PC);
8620 if (!CastAP<PT_Sint64>(S, OpPC, V0))
8621 return false;
8622 }
8623#if USE_TAILCALLS
8624 MUSTTAIL return InterpNext(S, PC);
8625#else
8626 return true;
8627#endif
8628}
8629PRESERVE_NONE
8630static bool Interp_CastAPUint64(InterpState &S, CodePtr &PC) {
8631 {
8632 CodePtr OpPC = PC;
8633 const auto V0 = ReadArg<uint32_t>(S, PC);
8634 if (!CastAP<PT_Uint64>(S, OpPC, V0))
8635 return false;
8636 }
8637#if USE_TAILCALLS
8638 MUSTTAIL return InterpNext(S, PC);
8639#else
8640 return true;
8641#endif
8642}
8643PRESERVE_NONE
8644static bool Interp_CastAPIntAP(InterpState &S, CodePtr &PC) {
8645 {
8646 CodePtr OpPC = PC;
8647 const auto V0 = ReadArg<uint32_t>(S, PC);
8648 if (!CastAP<PT_IntAP>(S, OpPC, V0))
8649 return false;
8650 }
8651#if USE_TAILCALLS
8652 MUSTTAIL return InterpNext(S, PC);
8653#else
8654 return true;
8655#endif
8656}
8657PRESERVE_NONE
8658static bool Interp_CastAPIntAPS(InterpState &S, CodePtr &PC) {
8659 {
8660 CodePtr OpPC = PC;
8661 const auto V0 = ReadArg<uint32_t>(S, PC);
8662 if (!CastAP<PT_IntAPS>(S, OpPC, V0))
8663 return false;
8664 }
8665#if USE_TAILCALLS
8666 MUSTTAIL return InterpNext(S, PC);
8667#else
8668 return true;
8669#endif
8670}
8671PRESERVE_NONE
8672static bool Interp_CastAPBool(InterpState &S, CodePtr &PC) {
8673 {
8674 CodePtr OpPC = PC;
8675 const auto V0 = ReadArg<uint32_t>(S, PC);
8676 if (!CastAP<PT_Bool>(S, OpPC, V0))
8677 return false;
8678 }
8679#if USE_TAILCALLS
8680 MUSTTAIL return InterpNext(S, PC);
8681#else
8682 return true;
8683#endif
8684}
8685PRESERVE_NONE
8686static bool Interp_CastAPFixedPoint(InterpState &S, CodePtr &PC) {
8687 {
8688 CodePtr OpPC = PC;
8689 const auto V0 = ReadArg<uint32_t>(S, PC);
8690 if (!CastAP<PT_FixedPoint>(S, OpPC, V0))
8691 return false;
8692 }
8693#if USE_TAILCALLS
8694 MUSTTAIL return InterpNext(S, PC);
8695#else
8696 return true;
8697#endif
8698}
8699#endif
8700#ifdef GET_DISASM
8701case OP_CastAPSint8:
8702 Text.Op = PrintName("CastAPSint8");
8703 Text.Args.push_back(printArg<uint32_t>(P, PC));
8704 break;
8705case OP_CastAPUint8:
8706 Text.Op = PrintName("CastAPUint8");
8707 Text.Args.push_back(printArg<uint32_t>(P, PC));
8708 break;
8709case OP_CastAPSint16:
8710 Text.Op = PrintName("CastAPSint16");
8711 Text.Args.push_back(printArg<uint32_t>(P, PC));
8712 break;
8713case OP_CastAPUint16:
8714 Text.Op = PrintName("CastAPUint16");
8715 Text.Args.push_back(printArg<uint32_t>(P, PC));
8716 break;
8717case OP_CastAPSint32:
8718 Text.Op = PrintName("CastAPSint32");
8719 Text.Args.push_back(printArg<uint32_t>(P, PC));
8720 break;
8721case OP_CastAPUint32:
8722 Text.Op = PrintName("CastAPUint32");
8723 Text.Args.push_back(printArg<uint32_t>(P, PC));
8724 break;
8725case OP_CastAPSint64:
8726 Text.Op = PrintName("CastAPSint64");
8727 Text.Args.push_back(printArg<uint32_t>(P, PC));
8728 break;
8729case OP_CastAPUint64:
8730 Text.Op = PrintName("CastAPUint64");
8731 Text.Args.push_back(printArg<uint32_t>(P, PC));
8732 break;
8733case OP_CastAPIntAP:
8734 Text.Op = PrintName("CastAPIntAP");
8735 Text.Args.push_back(printArg<uint32_t>(P, PC));
8736 break;
8737case OP_CastAPIntAPS:
8738 Text.Op = PrintName("CastAPIntAPS");
8739 Text.Args.push_back(printArg<uint32_t>(P, PC));
8740 break;
8741case OP_CastAPBool:
8742 Text.Op = PrintName("CastAPBool");
8743 Text.Args.push_back(printArg<uint32_t>(P, PC));
8744 break;
8745case OP_CastAPFixedPoint:
8746 Text.Op = PrintName("CastAPFixedPoint");
8747 Text.Args.push_back(printArg<uint32_t>(P, PC));
8748 break;
8749#endif
8750#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8751bool emitCastAPSint8( uint32_t , SourceInfo);
8752bool emitCastAPUint8( uint32_t , SourceInfo);
8753bool emitCastAPSint16( uint32_t , SourceInfo);
8754bool emitCastAPUint16( uint32_t , SourceInfo);
8755bool emitCastAPSint32( uint32_t , SourceInfo);
8756bool emitCastAPUint32( uint32_t , SourceInfo);
8757bool emitCastAPSint64( uint32_t , SourceInfo);
8758bool emitCastAPUint64( uint32_t , SourceInfo);
8759bool emitCastAPIntAP( uint32_t , SourceInfo);
8760bool emitCastAPIntAPS( uint32_t , SourceInfo);
8761bool emitCastAPBool( uint32_t , SourceInfo);
8762bool emitCastAPFixedPoint( uint32_t , SourceInfo);
8763#endif
8764#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8765[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
8766#endif
8767#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8768bool
8769#if defined(GET_EVAL_IMPL)
8770EvalEmitter
8771#else
8772ByteCodeEmitter
8773#endif
8774::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
8775 switch (T0) {
8776 case PT_Sint8:
8777 return emitCastAPSint8(A0, I);
8778 case PT_Uint8:
8779 return emitCastAPUint8(A0, I);
8780 case PT_Sint16:
8781 return emitCastAPSint16(A0, I);
8782 case PT_Uint16:
8783 return emitCastAPUint16(A0, I);
8784 case PT_Sint32:
8785 return emitCastAPSint32(A0, I);
8786 case PT_Uint32:
8787 return emitCastAPUint32(A0, I);
8788 case PT_Sint64:
8789 return emitCastAPSint64(A0, I);
8790 case PT_Uint64:
8791 return emitCastAPUint64(A0, I);
8792 case PT_IntAP:
8793 return emitCastAPIntAP(A0, I);
8794 case PT_IntAPS:
8795 return emitCastAPIntAPS(A0, I);
8796 case PT_Bool:
8797 return emitCastAPBool(A0, I);
8798 case PT_FixedPoint:
8799 return emitCastAPFixedPoint(A0, I);
8800 default: llvm_unreachable("invalid type: emitCastAP");
8801 }
8802 llvm_unreachable("invalid enum value");
8803}
8804#endif
8805#ifdef GET_LINK_IMPL
8806bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8807 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
8808}
8809bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8810 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
8811}
8812bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8813 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
8814}
8815bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8816 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
8817}
8818bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8819 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
8820}
8821bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8822 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
8823}
8824bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8825 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
8826}
8827bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8828 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
8829}
8830bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8831 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
8832}
8833bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8834 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
8835}
8836bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8837 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
8838}
8839bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8840 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
8841}
8842#endif
8843#ifdef GET_EVAL_IMPL
8844bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8845 if (!isActive()) return true;
8846 CurrentSource = L;
8847 return CastAP<PT_Sint8>(S, OpPC, A0);
8848}
8849bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8850 if (!isActive()) return true;
8851 CurrentSource = L;
8852 return CastAP<PT_Uint8>(S, OpPC, A0);
8853}
8854bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8855 if (!isActive()) return true;
8856 CurrentSource = L;
8857 return CastAP<PT_Sint16>(S, OpPC, A0);
8858}
8859bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8860 if (!isActive()) return true;
8861 CurrentSource = L;
8862 return CastAP<PT_Uint16>(S, OpPC, A0);
8863}
8864bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8865 if (!isActive()) return true;
8866 CurrentSource = L;
8867 return CastAP<PT_Sint32>(S, OpPC, A0);
8868}
8869bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8870 if (!isActive()) return true;
8871 CurrentSource = L;
8872 return CastAP<PT_Uint32>(S, OpPC, A0);
8873}
8874bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8875 if (!isActive()) return true;
8876 CurrentSource = L;
8877 return CastAP<PT_Sint64>(S, OpPC, A0);
8878}
8879bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8880 if (!isActive()) return true;
8881 CurrentSource = L;
8882 return CastAP<PT_Uint64>(S, OpPC, A0);
8883}
8884bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8885 if (!isActive()) return true;
8886 CurrentSource = L;
8887 return CastAP<PT_IntAP>(S, OpPC, A0);
8888}
8889bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8890 if (!isActive()) return true;
8891 CurrentSource = L;
8892 return CastAP<PT_IntAPS>(S, OpPC, A0);
8893}
8894bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8895 if (!isActive()) return true;
8896 CurrentSource = L;
8897 return CastAP<PT_Bool>(S, OpPC, A0);
8898}
8899bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8900 if (!isActive()) return true;
8901 CurrentSource = L;
8902 return CastAP<PT_FixedPoint>(S, OpPC, A0);
8903}
8904#endif
8905#ifdef GET_OPCODE_NAMES
8906OP_CastAPSSint8,
8907OP_CastAPSUint8,
8908OP_CastAPSSint16,
8909OP_CastAPSUint16,
8910OP_CastAPSSint32,
8911OP_CastAPSUint32,
8912OP_CastAPSSint64,
8913OP_CastAPSUint64,
8914OP_CastAPSIntAP,
8915OP_CastAPSIntAPS,
8916OP_CastAPSBool,
8917OP_CastAPSFixedPoint,
8918#endif
8919#ifdef GET_INTERPFN_LIST
8920&Interp_CastAPSSint8,
8921&Interp_CastAPSUint8,
8922&Interp_CastAPSSint16,
8923&Interp_CastAPSUint16,
8924&Interp_CastAPSSint32,
8925&Interp_CastAPSUint32,
8926&Interp_CastAPSSint64,
8927&Interp_CastAPSUint64,
8928&Interp_CastAPSIntAP,
8929&Interp_CastAPSIntAPS,
8930&Interp_CastAPSBool,
8931&Interp_CastAPSFixedPoint,
8932#endif
8933#ifdef GET_INTERPFN_DISPATCHERS
8934PRESERVE_NONE
8935static bool Interp_CastAPSSint8(InterpState &S, CodePtr &PC) {
8936 {
8937 CodePtr OpPC = PC;
8938 const auto V0 = ReadArg<uint32_t>(S, PC);
8939 if (!CastAPS<PT_Sint8>(S, OpPC, V0))
8940 return false;
8941 }
8942#if USE_TAILCALLS
8943 MUSTTAIL return InterpNext(S, PC);
8944#else
8945 return true;
8946#endif
8947}
8948PRESERVE_NONE
8949static bool Interp_CastAPSUint8(InterpState &S, CodePtr &PC) {
8950 {
8951 CodePtr OpPC = PC;
8952 const auto V0 = ReadArg<uint32_t>(S, PC);
8953 if (!CastAPS<PT_Uint8>(S, OpPC, V0))
8954 return false;
8955 }
8956#if USE_TAILCALLS
8957 MUSTTAIL return InterpNext(S, PC);
8958#else
8959 return true;
8960#endif
8961}
8962PRESERVE_NONE
8963static bool Interp_CastAPSSint16(InterpState &S, CodePtr &PC) {
8964 {
8965 CodePtr OpPC = PC;
8966 const auto V0 = ReadArg<uint32_t>(S, PC);
8967 if (!CastAPS<PT_Sint16>(S, OpPC, V0))
8968 return false;
8969 }
8970#if USE_TAILCALLS
8971 MUSTTAIL return InterpNext(S, PC);
8972#else
8973 return true;
8974#endif
8975}
8976PRESERVE_NONE
8977static bool Interp_CastAPSUint16(InterpState &S, CodePtr &PC) {
8978 {
8979 CodePtr OpPC = PC;
8980 const auto V0 = ReadArg<uint32_t>(S, PC);
8981 if (!CastAPS<PT_Uint16>(S, OpPC, V0))
8982 return false;
8983 }
8984#if USE_TAILCALLS
8985 MUSTTAIL return InterpNext(S, PC);
8986#else
8987 return true;
8988#endif
8989}
8990PRESERVE_NONE
8991static bool Interp_CastAPSSint32(InterpState &S, CodePtr &PC) {
8992 {
8993 CodePtr OpPC = PC;
8994 const auto V0 = ReadArg<uint32_t>(S, PC);
8995 if (!CastAPS<PT_Sint32>(S, OpPC, V0))
8996 return false;
8997 }
8998#if USE_TAILCALLS
8999 MUSTTAIL return InterpNext(S, PC);
9000#else
9001 return true;
9002#endif
9003}
9004PRESERVE_NONE
9005static bool Interp_CastAPSUint32(InterpState &S, CodePtr &PC) {
9006 {
9007 CodePtr OpPC = PC;
9008 const auto V0 = ReadArg<uint32_t>(S, PC);
9009 if (!CastAPS<PT_Uint32>(S, OpPC, V0))
9010 return false;
9011 }
9012#if USE_TAILCALLS
9013 MUSTTAIL return InterpNext(S, PC);
9014#else
9015 return true;
9016#endif
9017}
9018PRESERVE_NONE
9019static bool Interp_CastAPSSint64(InterpState &S, CodePtr &PC) {
9020 {
9021 CodePtr OpPC = PC;
9022 const auto V0 = ReadArg<uint32_t>(S, PC);
9023 if (!CastAPS<PT_Sint64>(S, OpPC, V0))
9024 return false;
9025 }
9026#if USE_TAILCALLS
9027 MUSTTAIL return InterpNext(S, PC);
9028#else
9029 return true;
9030#endif
9031}
9032PRESERVE_NONE
9033static bool Interp_CastAPSUint64(InterpState &S, CodePtr &PC) {
9034 {
9035 CodePtr OpPC = PC;
9036 const auto V0 = ReadArg<uint32_t>(S, PC);
9037 if (!CastAPS<PT_Uint64>(S, OpPC, V0))
9038 return false;
9039 }
9040#if USE_TAILCALLS
9041 MUSTTAIL return InterpNext(S, PC);
9042#else
9043 return true;
9044#endif
9045}
9046PRESERVE_NONE
9047static bool Interp_CastAPSIntAP(InterpState &S, CodePtr &PC) {
9048 {
9049 CodePtr OpPC = PC;
9050 const auto V0 = ReadArg<uint32_t>(S, PC);
9051 if (!CastAPS<PT_IntAP>(S, OpPC, V0))
9052 return false;
9053 }
9054#if USE_TAILCALLS
9055 MUSTTAIL return InterpNext(S, PC);
9056#else
9057 return true;
9058#endif
9059}
9060PRESERVE_NONE
9061static bool Interp_CastAPSIntAPS(InterpState &S, CodePtr &PC) {
9062 {
9063 CodePtr OpPC = PC;
9064 const auto V0 = ReadArg<uint32_t>(S, PC);
9065 if (!CastAPS<PT_IntAPS>(S, OpPC, V0))
9066 return false;
9067 }
9068#if USE_TAILCALLS
9069 MUSTTAIL return InterpNext(S, PC);
9070#else
9071 return true;
9072#endif
9073}
9074PRESERVE_NONE
9075static bool Interp_CastAPSBool(InterpState &S, CodePtr &PC) {
9076 {
9077 CodePtr OpPC = PC;
9078 const auto V0 = ReadArg<uint32_t>(S, PC);
9079 if (!CastAPS<PT_Bool>(S, OpPC, V0))
9080 return false;
9081 }
9082#if USE_TAILCALLS
9083 MUSTTAIL return InterpNext(S, PC);
9084#else
9085 return true;
9086#endif
9087}
9088PRESERVE_NONE
9089static bool Interp_CastAPSFixedPoint(InterpState &S, CodePtr &PC) {
9090 {
9091 CodePtr OpPC = PC;
9092 const auto V0 = ReadArg<uint32_t>(S, PC);
9093 if (!CastAPS<PT_FixedPoint>(S, OpPC, V0))
9094 return false;
9095 }
9096#if USE_TAILCALLS
9097 MUSTTAIL return InterpNext(S, PC);
9098#else
9099 return true;
9100#endif
9101}
9102#endif
9103#ifdef GET_DISASM
9104case OP_CastAPSSint8:
9105 Text.Op = PrintName("CastAPSSint8");
9106 Text.Args.push_back(printArg<uint32_t>(P, PC));
9107 break;
9108case OP_CastAPSUint8:
9109 Text.Op = PrintName("CastAPSUint8");
9110 Text.Args.push_back(printArg<uint32_t>(P, PC));
9111 break;
9112case OP_CastAPSSint16:
9113 Text.Op = PrintName("CastAPSSint16");
9114 Text.Args.push_back(printArg<uint32_t>(P, PC));
9115 break;
9116case OP_CastAPSUint16:
9117 Text.Op = PrintName("CastAPSUint16");
9118 Text.Args.push_back(printArg<uint32_t>(P, PC));
9119 break;
9120case OP_CastAPSSint32:
9121 Text.Op = PrintName("CastAPSSint32");
9122 Text.Args.push_back(printArg<uint32_t>(P, PC));
9123 break;
9124case OP_CastAPSUint32:
9125 Text.Op = PrintName("CastAPSUint32");
9126 Text.Args.push_back(printArg<uint32_t>(P, PC));
9127 break;
9128case OP_CastAPSSint64:
9129 Text.Op = PrintName("CastAPSSint64");
9130 Text.Args.push_back(printArg<uint32_t>(P, PC));
9131 break;
9132case OP_CastAPSUint64:
9133 Text.Op = PrintName("CastAPSUint64");
9134 Text.Args.push_back(printArg<uint32_t>(P, PC));
9135 break;
9136case OP_CastAPSIntAP:
9137 Text.Op = PrintName("CastAPSIntAP");
9138 Text.Args.push_back(printArg<uint32_t>(P, PC));
9139 break;
9140case OP_CastAPSIntAPS:
9141 Text.Op = PrintName("CastAPSIntAPS");
9142 Text.Args.push_back(printArg<uint32_t>(P, PC));
9143 break;
9144case OP_CastAPSBool:
9145 Text.Op = PrintName("CastAPSBool");
9146 Text.Args.push_back(printArg<uint32_t>(P, PC));
9147 break;
9148case OP_CastAPSFixedPoint:
9149 Text.Op = PrintName("CastAPSFixedPoint");
9150 Text.Args.push_back(printArg<uint32_t>(P, PC));
9151 break;
9152#endif
9153#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9154bool emitCastAPSSint8( uint32_t , SourceInfo);
9155bool emitCastAPSUint8( uint32_t , SourceInfo);
9156bool emitCastAPSSint16( uint32_t , SourceInfo);
9157bool emitCastAPSUint16( uint32_t , SourceInfo);
9158bool emitCastAPSSint32( uint32_t , SourceInfo);
9159bool emitCastAPSUint32( uint32_t , SourceInfo);
9160bool emitCastAPSSint64( uint32_t , SourceInfo);
9161bool emitCastAPSUint64( uint32_t , SourceInfo);
9162bool emitCastAPSIntAP( uint32_t , SourceInfo);
9163bool emitCastAPSIntAPS( uint32_t , SourceInfo);
9164bool emitCastAPSBool( uint32_t , SourceInfo);
9165bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
9166#endif
9167#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9168[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
9169#endif
9170#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9171bool
9172#if defined(GET_EVAL_IMPL)
9173EvalEmitter
9174#else
9175ByteCodeEmitter
9176#endif
9177::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
9178 switch (T0) {
9179 case PT_Sint8:
9180 return emitCastAPSSint8(A0, I);
9181 case PT_Uint8:
9182 return emitCastAPSUint8(A0, I);
9183 case PT_Sint16:
9184 return emitCastAPSSint16(A0, I);
9185 case PT_Uint16:
9186 return emitCastAPSUint16(A0, I);
9187 case PT_Sint32:
9188 return emitCastAPSSint32(A0, I);
9189 case PT_Uint32:
9190 return emitCastAPSUint32(A0, I);
9191 case PT_Sint64:
9192 return emitCastAPSSint64(A0, I);
9193 case PT_Uint64:
9194 return emitCastAPSUint64(A0, I);
9195 case PT_IntAP:
9196 return emitCastAPSIntAP(A0, I);
9197 case PT_IntAPS:
9198 return emitCastAPSIntAPS(A0, I);
9199 case PT_Bool:
9200 return emitCastAPSBool(A0, I);
9201 case PT_FixedPoint:
9202 return emitCastAPSFixedPoint(A0, I);
9203 default: llvm_unreachable("invalid type: emitCastAPS");
9204 }
9205 llvm_unreachable("invalid enum value");
9206}
9207#endif
9208#ifdef GET_LINK_IMPL
9209bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
9210 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
9211}
9212bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
9213 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
9214}
9215bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
9216 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
9217}
9218bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
9219 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
9220}
9221bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
9222 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
9223}
9224bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
9225 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
9226}
9227bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
9228 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
9229}
9230bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
9231 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
9232}
9233bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
9234 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
9235}
9236bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
9237 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
9238}
9239bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
9240 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
9241}
9242bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
9243 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
9244}
9245#endif
9246#ifdef GET_EVAL_IMPL
9247bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
9248 if (!isActive()) return true;
9249 CurrentSource = L;
9250 return CastAPS<PT_Sint8>(S, OpPC, A0);
9251}
9252bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
9253 if (!isActive()) return true;
9254 CurrentSource = L;
9255 return CastAPS<PT_Uint8>(S, OpPC, A0);
9256}
9257bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
9258 if (!isActive()) return true;
9259 CurrentSource = L;
9260 return CastAPS<PT_Sint16>(S, OpPC, A0);
9261}
9262bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
9263 if (!isActive()) return true;
9264 CurrentSource = L;
9265 return CastAPS<PT_Uint16>(S, OpPC, A0);
9266}
9267bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
9268 if (!isActive()) return true;
9269 CurrentSource = L;
9270 return CastAPS<PT_Sint32>(S, OpPC, A0);
9271}
9272bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
9273 if (!isActive()) return true;
9274 CurrentSource = L;
9275 return CastAPS<PT_Uint32>(S, OpPC, A0);
9276}
9277bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
9278 if (!isActive()) return true;
9279 CurrentSource = L;
9280 return CastAPS<PT_Sint64>(S, OpPC, A0);
9281}
9282bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
9283 if (!isActive()) return true;
9284 CurrentSource = L;
9285 return CastAPS<PT_Uint64>(S, OpPC, A0);
9286}
9287bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
9288 if (!isActive()) return true;
9289 CurrentSource = L;
9290 return CastAPS<PT_IntAP>(S, OpPC, A0);
9291}
9292bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
9293 if (!isActive()) return true;
9294 CurrentSource = L;
9295 return CastAPS<PT_IntAPS>(S, OpPC, A0);
9296}
9297bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
9298 if (!isActive()) return true;
9299 CurrentSource = L;
9300 return CastAPS<PT_Bool>(S, OpPC, A0);
9301}
9302bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
9303 if (!isActive()) return true;
9304 CurrentSource = L;
9305 return CastAPS<PT_FixedPoint>(S, OpPC, A0);
9306}
9307#endif
9308#ifdef GET_OPCODE_NAMES
9309OP_CastFP,
9310#endif
9311#ifdef GET_INTERPFN_LIST
9312&Interp_CastFP,
9313#endif
9314#ifdef GET_INTERPFN_DISPATCHERS
9315PRESERVE_NONE
9316static bool Interp_CastFP(InterpState &S, CodePtr &PC) {
9317 {
9318 CodePtr OpPC = PC;
9319 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
9320 const auto V1 = ReadArg<llvm::RoundingMode>(S, PC);
9321 if (!CastFP(S, OpPC, V0, V1))
9322 return false;
9323 }
9324#if USE_TAILCALLS
9325 MUSTTAIL return InterpNext(S, PC);
9326#else
9327 return true;
9328#endif
9329}
9330#endif
9331#ifdef GET_DISASM
9332case OP_CastFP:
9333 Text.Op = PrintName("CastFP");
9334 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
9335 Text.Args.push_back(printArg<llvm::RoundingMode>(P, PC));
9336 break;
9337#endif
9338#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9339bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
9340#endif
9341#ifdef GET_LINK_IMPL
9342bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9343 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
9344}
9345#endif
9346#ifdef GET_EVAL_IMPL
9347bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9348 if (!isActive()) return true;
9349 CurrentSource = L;
9350 return CastFP(S, OpPC, A0, A1);
9351}
9352#endif
9353#ifdef GET_OPCODE_NAMES
9354OP_CastFixedPoint,
9355#endif
9356#ifdef GET_INTERPFN_LIST
9357&Interp_CastFixedPoint,
9358#endif
9359#ifdef GET_INTERPFN_DISPATCHERS
9360PRESERVE_NONE
9361static bool Interp_CastFixedPoint(InterpState &S, CodePtr &PC) {
9362 {
9363 CodePtr OpPC = PC;
9364 const auto V0 = ReadArg<uint32_t>(S, PC);
9365 if (!CastFixedPoint(S, OpPC, V0))
9366 return false;
9367 }
9368#if USE_TAILCALLS
9369 MUSTTAIL return InterpNext(S, PC);
9370#else
9371 return true;
9372#endif
9373}
9374#endif
9375#ifdef GET_DISASM
9376case OP_CastFixedPoint:
9377 Text.Op = PrintName("CastFixedPoint");
9378 Text.Args.push_back(printArg<uint32_t>(P, PC));
9379 break;
9380#endif
9381#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9382bool emitCastFixedPoint( uint32_t , SourceInfo);
9383#endif
9384#ifdef GET_LINK_IMPL
9385bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9386 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
9387}
9388#endif
9389#ifdef GET_EVAL_IMPL
9390bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9391 if (!isActive()) return true;
9392 CurrentSource = L;
9393 return CastFixedPoint(S, OpPC, A0);
9394}
9395#endif
9396#ifdef GET_OPCODE_NAMES
9397OP_CastFixedPointFloating,
9398#endif
9399#ifdef GET_INTERPFN_LIST
9400&Interp_CastFixedPointFloating,
9401#endif
9402#ifdef GET_INTERPFN_DISPATCHERS
9403PRESERVE_NONE
9404static bool Interp_CastFixedPointFloating(InterpState &S, CodePtr &PC) {
9405 {
9406 CodePtr OpPC = PC;
9407 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
9408 if (!CastFixedPointFloating(S, OpPC, V0))
9409 return false;
9410 }
9411#if USE_TAILCALLS
9412 MUSTTAIL return InterpNext(S, PC);
9413#else
9414 return true;
9415#endif
9416}
9417#endif
9418#ifdef GET_DISASM
9419case OP_CastFixedPointFloating:
9420 Text.Op = PrintName("CastFixedPointFloating");
9421 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
9422 break;
9423#endif
9424#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9425bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
9426#endif
9427#ifdef GET_LINK_IMPL
9428bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9429 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
9430}
9431#endif
9432#ifdef GET_EVAL_IMPL
9433bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9434 if (!isActive()) return true;
9435 CurrentSource = L;
9436 return CastFixedPointFloating(S, OpPC, A0);
9437}
9438#endif
9439#ifdef GET_OPCODE_NAMES
9440OP_CastFixedPointIntegralSint8,
9441OP_CastFixedPointIntegralUint8,
9442OP_CastFixedPointIntegralSint16,
9443OP_CastFixedPointIntegralUint16,
9444OP_CastFixedPointIntegralSint32,
9445OP_CastFixedPointIntegralUint32,
9446OP_CastFixedPointIntegralSint64,
9447OP_CastFixedPointIntegralUint64,
9448#endif
9449#ifdef GET_INTERPFN_LIST
9450&Interp_CastFixedPointIntegralSint8,
9451&Interp_CastFixedPointIntegralUint8,
9452&Interp_CastFixedPointIntegralSint16,
9453&Interp_CastFixedPointIntegralUint16,
9454&Interp_CastFixedPointIntegralSint32,
9455&Interp_CastFixedPointIntegralUint32,
9456&Interp_CastFixedPointIntegralSint64,
9457&Interp_CastFixedPointIntegralUint64,
9458#endif
9459#ifdef GET_INTERPFN_DISPATCHERS
9460PRESERVE_NONE
9461static bool Interp_CastFixedPointIntegralSint8(InterpState &S, CodePtr &PC) {
9462 if (!CastFixedPointIntegral<PT_Sint8>(S, PC))
9463 return false;
9464#if USE_TAILCALLS
9465 MUSTTAIL return InterpNext(S, PC);
9466#else
9467 return true;
9468#endif
9469}
9470PRESERVE_NONE
9471static bool Interp_CastFixedPointIntegralUint8(InterpState &S, CodePtr &PC) {
9472 if (!CastFixedPointIntegral<PT_Uint8>(S, PC))
9473 return false;
9474#if USE_TAILCALLS
9475 MUSTTAIL return InterpNext(S, PC);
9476#else
9477 return true;
9478#endif
9479}
9480PRESERVE_NONE
9481static bool Interp_CastFixedPointIntegralSint16(InterpState &S, CodePtr &PC) {
9482 if (!CastFixedPointIntegral<PT_Sint16>(S, PC))
9483 return false;
9484#if USE_TAILCALLS
9485 MUSTTAIL return InterpNext(S, PC);
9486#else
9487 return true;
9488#endif
9489}
9490PRESERVE_NONE
9491static bool Interp_CastFixedPointIntegralUint16(InterpState &S, CodePtr &PC) {
9492 if (!CastFixedPointIntegral<PT_Uint16>(S, PC))
9493 return false;
9494#if USE_TAILCALLS
9495 MUSTTAIL return InterpNext(S, PC);
9496#else
9497 return true;
9498#endif
9499}
9500PRESERVE_NONE
9501static bool Interp_CastFixedPointIntegralSint32(InterpState &S, CodePtr &PC) {
9502 if (!CastFixedPointIntegral<PT_Sint32>(S, PC))
9503 return false;
9504#if USE_TAILCALLS
9505 MUSTTAIL return InterpNext(S, PC);
9506#else
9507 return true;
9508#endif
9509}
9510PRESERVE_NONE
9511static bool Interp_CastFixedPointIntegralUint32(InterpState &S, CodePtr &PC) {
9512 if (!CastFixedPointIntegral<PT_Uint32>(S, PC))
9513 return false;
9514#if USE_TAILCALLS
9515 MUSTTAIL return InterpNext(S, PC);
9516#else
9517 return true;
9518#endif
9519}
9520PRESERVE_NONE
9521static bool Interp_CastFixedPointIntegralSint64(InterpState &S, CodePtr &PC) {
9522 if (!CastFixedPointIntegral<PT_Sint64>(S, PC))
9523 return false;
9524#if USE_TAILCALLS
9525 MUSTTAIL return InterpNext(S, PC);
9526#else
9527 return true;
9528#endif
9529}
9530PRESERVE_NONE
9531static bool Interp_CastFixedPointIntegralUint64(InterpState &S, CodePtr &PC) {
9532 if (!CastFixedPointIntegral<PT_Uint64>(S, PC))
9533 return false;
9534#if USE_TAILCALLS
9535 MUSTTAIL return InterpNext(S, PC);
9536#else
9537 return true;
9538#endif
9539}
9540#endif
9541#ifdef GET_DISASM
9542case OP_CastFixedPointIntegralSint8:
9543 Text.Op = PrintName("CastFixedPointIntegralSint8");
9544 break;
9545case OP_CastFixedPointIntegralUint8:
9546 Text.Op = PrintName("CastFixedPointIntegralUint8");
9547 break;
9548case OP_CastFixedPointIntegralSint16:
9549 Text.Op = PrintName("CastFixedPointIntegralSint16");
9550 break;
9551case OP_CastFixedPointIntegralUint16:
9552 Text.Op = PrintName("CastFixedPointIntegralUint16");
9553 break;
9554case OP_CastFixedPointIntegralSint32:
9555 Text.Op = PrintName("CastFixedPointIntegralSint32");
9556 break;
9557case OP_CastFixedPointIntegralUint32:
9558 Text.Op = PrintName("CastFixedPointIntegralUint32");
9559 break;
9560case OP_CastFixedPointIntegralSint64:
9561 Text.Op = PrintName("CastFixedPointIntegralSint64");
9562 break;
9563case OP_CastFixedPointIntegralUint64:
9564 Text.Op = PrintName("CastFixedPointIntegralUint64");
9565 break;
9566#endif
9567#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9568bool emitCastFixedPointIntegralSint8(SourceInfo);
9569bool emitCastFixedPointIntegralUint8(SourceInfo);
9570bool emitCastFixedPointIntegralSint16(SourceInfo);
9571bool emitCastFixedPointIntegralUint16(SourceInfo);
9572bool emitCastFixedPointIntegralSint32(SourceInfo);
9573bool emitCastFixedPointIntegralUint32(SourceInfo);
9574bool emitCastFixedPointIntegralSint64(SourceInfo);
9575bool emitCastFixedPointIntegralUint64(SourceInfo);
9576#endif
9577#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9578[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
9579#endif
9580#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9581bool
9582#if defined(GET_EVAL_IMPL)
9583EvalEmitter
9584#else
9585ByteCodeEmitter
9586#endif
9587::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
9588 switch (T0) {
9589 case PT_Sint8:
9590 return emitCastFixedPointIntegralSint8(I);
9591 case PT_Uint8:
9592 return emitCastFixedPointIntegralUint8(I);
9593 case PT_Sint16:
9594 return emitCastFixedPointIntegralSint16(I);
9595 case PT_Uint16:
9596 return emitCastFixedPointIntegralUint16(I);
9597 case PT_Sint32:
9598 return emitCastFixedPointIntegralSint32(I);
9599 case PT_Uint32:
9600 return emitCastFixedPointIntegralUint32(I);
9601 case PT_Sint64:
9602 return emitCastFixedPointIntegralSint64(I);
9603 case PT_Uint64:
9604 return emitCastFixedPointIntegralUint64(I);
9605 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
9606 }
9607 llvm_unreachable("invalid enum value");
9608}
9609#endif
9610#ifdef GET_LINK_IMPL
9611bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9612 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
9613}
9614bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9615 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
9616}
9617bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9618 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
9619}
9620bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9621 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
9622}
9623bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9624 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
9625}
9626bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9627 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
9628}
9629bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9630 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
9631}
9632bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9633 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
9634}
9635#endif
9636#ifdef GET_EVAL_IMPL
9637bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9638 if (!isActive()) return true;
9639 CurrentSource = L;
9640 return CastFixedPointIntegral<PT_Sint8>(S, OpPC);
9641}
9642bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9643 if (!isActive()) return true;
9644 CurrentSource = L;
9645 return CastFixedPointIntegral<PT_Uint8>(S, OpPC);
9646}
9647bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9648 if (!isActive()) return true;
9649 CurrentSource = L;
9650 return CastFixedPointIntegral<PT_Sint16>(S, OpPC);
9651}
9652bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9653 if (!isActive()) return true;
9654 CurrentSource = L;
9655 return CastFixedPointIntegral<PT_Uint16>(S, OpPC);
9656}
9657bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9658 if (!isActive()) return true;
9659 CurrentSource = L;
9660 return CastFixedPointIntegral<PT_Sint32>(S, OpPC);
9661}
9662bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9663 if (!isActive()) return true;
9664 CurrentSource = L;
9665 return CastFixedPointIntegral<PT_Uint32>(S, OpPC);
9666}
9667bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9668 if (!isActive()) return true;
9669 CurrentSource = L;
9670 return CastFixedPointIntegral<PT_Sint64>(S, OpPC);
9671}
9672bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9673 if (!isActive()) return true;
9674 CurrentSource = L;
9675 return CastFixedPointIntegral<PT_Uint64>(S, OpPC);
9676}
9677#endif
9678#ifdef GET_OPCODE_NAMES
9679OP_CastFloatingFixedPoint,
9680#endif
9681#ifdef GET_INTERPFN_LIST
9682&Interp_CastFloatingFixedPoint,
9683#endif
9684#ifdef GET_INTERPFN_DISPATCHERS
9685PRESERVE_NONE
9686static bool Interp_CastFloatingFixedPoint(InterpState &S, CodePtr &PC) {
9687 {
9688 CodePtr OpPC = PC;
9689 const auto V0 = ReadArg<uint32_t>(S, PC);
9690 if (!CastFloatingFixedPoint(S, OpPC, V0))
9691 return false;
9692 }
9693#if USE_TAILCALLS
9694 MUSTTAIL return InterpNext(S, PC);
9695#else
9696 return true;
9697#endif
9698}
9699#endif
9700#ifdef GET_DISASM
9701case OP_CastFloatingFixedPoint:
9702 Text.Op = PrintName("CastFloatingFixedPoint");
9703 Text.Args.push_back(printArg<uint32_t>(P, PC));
9704 break;
9705#endif
9706#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9707bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
9708#endif
9709#ifdef GET_LINK_IMPL
9710bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9711 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
9712}
9713#endif
9714#ifdef GET_EVAL_IMPL
9715bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9716 if (!isActive()) return true;
9717 CurrentSource = L;
9718 return CastFloatingFixedPoint(S, OpPC, A0);
9719}
9720#endif
9721#ifdef GET_OPCODE_NAMES
9722OP_CastFloatingIntegralSint8,
9723OP_CastFloatingIntegralUint8,
9724OP_CastFloatingIntegralSint16,
9725OP_CastFloatingIntegralUint16,
9726OP_CastFloatingIntegralSint32,
9727OP_CastFloatingIntegralUint32,
9728OP_CastFloatingIntegralSint64,
9729OP_CastFloatingIntegralUint64,
9730OP_CastFloatingIntegralBool,
9731#endif
9732#ifdef GET_INTERPFN_LIST
9733&Interp_CastFloatingIntegralSint8,
9734&Interp_CastFloatingIntegralUint8,
9735&Interp_CastFloatingIntegralSint16,
9736&Interp_CastFloatingIntegralUint16,
9737&Interp_CastFloatingIntegralSint32,
9738&Interp_CastFloatingIntegralUint32,
9739&Interp_CastFloatingIntegralSint64,
9740&Interp_CastFloatingIntegralUint64,
9741&Interp_CastFloatingIntegralBool,
9742#endif
9743#ifdef GET_INTERPFN_DISPATCHERS
9744PRESERVE_NONE
9745static bool Interp_CastFloatingIntegralSint8(InterpState &S, CodePtr &PC) {
9746 {
9747 CodePtr OpPC = PC;
9748 const auto V0 = ReadArg<uint32_t>(S, PC);
9749 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0))
9750 return false;
9751 }
9752#if USE_TAILCALLS
9753 MUSTTAIL return InterpNext(S, PC);
9754#else
9755 return true;
9756#endif
9757}
9758PRESERVE_NONE
9759static bool Interp_CastFloatingIntegralUint8(InterpState &S, CodePtr &PC) {
9760 {
9761 CodePtr OpPC = PC;
9762 const auto V0 = ReadArg<uint32_t>(S, PC);
9763 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0))
9764 return false;
9765 }
9766#if USE_TAILCALLS
9767 MUSTTAIL return InterpNext(S, PC);
9768#else
9769 return true;
9770#endif
9771}
9772PRESERVE_NONE
9773static bool Interp_CastFloatingIntegralSint16(InterpState &S, CodePtr &PC) {
9774 {
9775 CodePtr OpPC = PC;
9776 const auto V0 = ReadArg<uint32_t>(S, PC);
9777 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0))
9778 return false;
9779 }
9780#if USE_TAILCALLS
9781 MUSTTAIL return InterpNext(S, PC);
9782#else
9783 return true;
9784#endif
9785}
9786PRESERVE_NONE
9787static bool Interp_CastFloatingIntegralUint16(InterpState &S, CodePtr &PC) {
9788 {
9789 CodePtr OpPC = PC;
9790 const auto V0 = ReadArg<uint32_t>(S, PC);
9791 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0))
9792 return false;
9793 }
9794#if USE_TAILCALLS
9795 MUSTTAIL return InterpNext(S, PC);
9796#else
9797 return true;
9798#endif
9799}
9800PRESERVE_NONE
9801static bool Interp_CastFloatingIntegralSint32(InterpState &S, CodePtr &PC) {
9802 {
9803 CodePtr OpPC = PC;
9804 const auto V0 = ReadArg<uint32_t>(S, PC);
9805 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0))
9806 return false;
9807 }
9808#if USE_TAILCALLS
9809 MUSTTAIL return InterpNext(S, PC);
9810#else
9811 return true;
9812#endif
9813}
9814PRESERVE_NONE
9815static bool Interp_CastFloatingIntegralUint32(InterpState &S, CodePtr &PC) {
9816 {
9817 CodePtr OpPC = PC;
9818 const auto V0 = ReadArg<uint32_t>(S, PC);
9819 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0))
9820 return false;
9821 }
9822#if USE_TAILCALLS
9823 MUSTTAIL return InterpNext(S, PC);
9824#else
9825 return true;
9826#endif
9827}
9828PRESERVE_NONE
9829static bool Interp_CastFloatingIntegralSint64(InterpState &S, CodePtr &PC) {
9830 {
9831 CodePtr OpPC = PC;
9832 const auto V0 = ReadArg<uint32_t>(S, PC);
9833 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0))
9834 return false;
9835 }
9836#if USE_TAILCALLS
9837 MUSTTAIL return InterpNext(S, PC);
9838#else
9839 return true;
9840#endif
9841}
9842PRESERVE_NONE
9843static bool Interp_CastFloatingIntegralUint64(InterpState &S, CodePtr &PC) {
9844 {
9845 CodePtr OpPC = PC;
9846 const auto V0 = ReadArg<uint32_t>(S, PC);
9847 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0))
9848 return false;
9849 }
9850#if USE_TAILCALLS
9851 MUSTTAIL return InterpNext(S, PC);
9852#else
9853 return true;
9854#endif
9855}
9856PRESERVE_NONE
9857static bool Interp_CastFloatingIntegralBool(InterpState &S, CodePtr &PC) {
9858 {
9859 CodePtr OpPC = PC;
9860 const auto V0 = ReadArg<uint32_t>(S, PC);
9861 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0))
9862 return false;
9863 }
9864#if USE_TAILCALLS
9865 MUSTTAIL return InterpNext(S, PC);
9866#else
9867 return true;
9868#endif
9869}
9870#endif
9871#ifdef GET_DISASM
9872case OP_CastFloatingIntegralSint8:
9873 Text.Op = PrintName("CastFloatingIntegralSint8");
9874 Text.Args.push_back(printArg<uint32_t>(P, PC));
9875 break;
9876case OP_CastFloatingIntegralUint8:
9877 Text.Op = PrintName("CastFloatingIntegralUint8");
9878 Text.Args.push_back(printArg<uint32_t>(P, PC));
9879 break;
9880case OP_CastFloatingIntegralSint16:
9881 Text.Op = PrintName("CastFloatingIntegralSint16");
9882 Text.Args.push_back(printArg<uint32_t>(P, PC));
9883 break;
9884case OP_CastFloatingIntegralUint16:
9885 Text.Op = PrintName("CastFloatingIntegralUint16");
9886 Text.Args.push_back(printArg<uint32_t>(P, PC));
9887 break;
9888case OP_CastFloatingIntegralSint32:
9889 Text.Op = PrintName("CastFloatingIntegralSint32");
9890 Text.Args.push_back(printArg<uint32_t>(P, PC));
9891 break;
9892case OP_CastFloatingIntegralUint32:
9893 Text.Op = PrintName("CastFloatingIntegralUint32");
9894 Text.Args.push_back(printArg<uint32_t>(P, PC));
9895 break;
9896case OP_CastFloatingIntegralSint64:
9897 Text.Op = PrintName("CastFloatingIntegralSint64");
9898 Text.Args.push_back(printArg<uint32_t>(P, PC));
9899 break;
9900case OP_CastFloatingIntegralUint64:
9901 Text.Op = PrintName("CastFloatingIntegralUint64");
9902 Text.Args.push_back(printArg<uint32_t>(P, PC));
9903 break;
9904case OP_CastFloatingIntegralBool:
9905 Text.Op = PrintName("CastFloatingIntegralBool");
9906 Text.Args.push_back(printArg<uint32_t>(P, PC));
9907 break;
9908#endif
9909#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9910bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
9911bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
9912bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
9913bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
9914bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
9915bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
9916bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
9917bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
9918bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
9919#endif
9920#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9921[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
9922#endif
9923#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9924bool
9925#if defined(GET_EVAL_IMPL)
9926EvalEmitter
9927#else
9928ByteCodeEmitter
9929#endif
9930::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
9931 switch (T0) {
9932 case PT_Sint8:
9933 return emitCastFloatingIntegralSint8(A0, I);
9934 case PT_Uint8:
9935 return emitCastFloatingIntegralUint8(A0, I);
9936 case PT_Sint16:
9937 return emitCastFloatingIntegralSint16(A0, I);
9938 case PT_Uint16:
9939 return emitCastFloatingIntegralUint16(A0, I);
9940 case PT_Sint32:
9941 return emitCastFloatingIntegralSint32(A0, I);
9942 case PT_Uint32:
9943 return emitCastFloatingIntegralUint32(A0, I);
9944 case PT_Sint64:
9945 return emitCastFloatingIntegralSint64(A0, I);
9946 case PT_Uint64:
9947 return emitCastFloatingIntegralUint64(A0, I);
9948 case PT_Bool:
9949 return emitCastFloatingIntegralBool(A0, I);
9950 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
9951 }
9952 llvm_unreachable("invalid enum value");
9953}
9954#endif
9955#ifdef GET_LINK_IMPL
9956bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9957 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
9958}
9959bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9960 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
9961}
9962bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9963 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
9964}
9965bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9966 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
9967}
9968bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9969 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
9970}
9971bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9972 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
9973}
9974bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9975 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
9976}
9977bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9978 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
9979}
9980bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9981 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
9982}
9983#endif
9984#ifdef GET_EVAL_IMPL
9985bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9986 if (!isActive()) return true;
9987 CurrentSource = L;
9988 return CastFloatingIntegral<PT_Sint8>(S, OpPC, A0);
9989}
9990bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9991 if (!isActive()) return true;
9992 CurrentSource = L;
9993 return CastFloatingIntegral<PT_Uint8>(S, OpPC, A0);
9994}
9995bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9996 if (!isActive()) return true;
9997 CurrentSource = L;
9998 return CastFloatingIntegral<PT_Sint16>(S, OpPC, A0);
9999}
10000bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
10001 if (!isActive()) return true;
10002 CurrentSource = L;
10003 return CastFloatingIntegral<PT_Uint16>(S, OpPC, A0);
10004}
10005bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
10006 if (!isActive()) return true;
10007 CurrentSource = L;
10008 return CastFloatingIntegral<PT_Sint32>(S, OpPC, A0);
10009}
10010bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
10011 if (!isActive()) return true;
10012 CurrentSource = L;
10013 return CastFloatingIntegral<PT_Uint32>(S, OpPC, A0);
10014}
10015bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
10016 if (!isActive()) return true;
10017 CurrentSource = L;
10018 return CastFloatingIntegral<PT_Sint64>(S, OpPC, A0);
10019}
10020bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
10021 if (!isActive()) return true;
10022 CurrentSource = L;
10023 return CastFloatingIntegral<PT_Uint64>(S, OpPC, A0);
10024}
10025bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
10026 if (!isActive()) return true;
10027 CurrentSource = L;
10028 return CastFloatingIntegral<PT_Bool>(S, OpPC, A0);
10029}
10030#endif
10031#ifdef GET_OPCODE_NAMES
10032OP_CastFloatingIntegralAP,
10033#endif
10034#ifdef GET_INTERPFN_LIST
10035&Interp_CastFloatingIntegralAP,
10036#endif
10037#ifdef GET_INTERPFN_DISPATCHERS
10038PRESERVE_NONE
10039static bool Interp_CastFloatingIntegralAP(InterpState &S, CodePtr &PC) {
10040 {
10041 CodePtr OpPC = PC;
10042 const auto V0 = ReadArg<uint32_t>(S, PC);
10043 const auto V1 = ReadArg<uint32_t>(S, PC);
10044 if (!CastFloatingIntegralAP(S, OpPC, V0, V1))
10045 return false;
10046 }
10047#if USE_TAILCALLS
10048 MUSTTAIL return InterpNext(S, PC);
10049#else
10050 return true;
10051#endif
10052}
10053#endif
10054#ifdef GET_DISASM
10055case OP_CastFloatingIntegralAP:
10056 Text.Op = PrintName("CastFloatingIntegralAP");
10057 Text.Args.push_back(printArg<uint32_t>(P, PC));
10058 Text.Args.push_back(printArg<uint32_t>(P, PC));
10059 break;
10060#endif
10061#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10062bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
10063#endif
10064#ifdef GET_LINK_IMPL
10065bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
10066 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
10067}
10068#endif
10069#ifdef GET_EVAL_IMPL
10070bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
10071 if (!isActive()) return true;
10072 CurrentSource = L;
10073 return CastFloatingIntegralAP(S, OpPC, A0, A1);
10074}
10075#endif
10076#ifdef GET_OPCODE_NAMES
10077OP_CastFloatingIntegralAPS,
10078#endif
10079#ifdef GET_INTERPFN_LIST
10080&Interp_CastFloatingIntegralAPS,
10081#endif
10082#ifdef GET_INTERPFN_DISPATCHERS
10083PRESERVE_NONE
10084static bool Interp_CastFloatingIntegralAPS(InterpState &S, CodePtr &PC) {
10085 {
10086 CodePtr OpPC = PC;
10087 const auto V0 = ReadArg<uint32_t>(S, PC);
10088 const auto V1 = ReadArg<uint32_t>(S, PC);
10089 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1))
10090 return false;
10091 }
10092#if USE_TAILCALLS
10093 MUSTTAIL return InterpNext(S, PC);
10094#else
10095 return true;
10096#endif
10097}
10098#endif
10099#ifdef GET_DISASM
10100case OP_CastFloatingIntegralAPS:
10101 Text.Op = PrintName("CastFloatingIntegralAPS");
10102 Text.Args.push_back(printArg<uint32_t>(P, PC));
10103 Text.Args.push_back(printArg<uint32_t>(P, PC));
10104 break;
10105#endif
10106#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10107bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
10108#endif
10109#ifdef GET_LINK_IMPL
10110bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
10111 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
10112}
10113#endif
10114#ifdef GET_EVAL_IMPL
10115bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
10116 if (!isActive()) return true;
10117 CurrentSource = L;
10118 return CastFloatingIntegralAPS(S, OpPC, A0, A1);
10119}
10120#endif
10121#ifdef GET_OPCODE_NAMES
10122OP_CastIntegralFixedPointSint8,
10123OP_CastIntegralFixedPointUint8,
10124OP_CastIntegralFixedPointSint16,
10125OP_CastIntegralFixedPointUint16,
10126OP_CastIntegralFixedPointSint32,
10127OP_CastIntegralFixedPointUint32,
10128OP_CastIntegralFixedPointSint64,
10129OP_CastIntegralFixedPointUint64,
10130OP_CastIntegralFixedPointBool,
10131#endif
10132#ifdef GET_INTERPFN_LIST
10133&Interp_CastIntegralFixedPointSint8,
10134&Interp_CastIntegralFixedPointUint8,
10135&Interp_CastIntegralFixedPointSint16,
10136&Interp_CastIntegralFixedPointUint16,
10137&Interp_CastIntegralFixedPointSint32,
10138&Interp_CastIntegralFixedPointUint32,
10139&Interp_CastIntegralFixedPointSint64,
10140&Interp_CastIntegralFixedPointUint64,
10141&Interp_CastIntegralFixedPointBool,
10142#endif
10143#ifdef GET_INTERPFN_DISPATCHERS
10144PRESERVE_NONE
10145static bool Interp_CastIntegralFixedPointSint8(InterpState &S, CodePtr &PC) {
10146 {
10147 CodePtr OpPC = PC;
10148 const auto V0 = ReadArg<uint32_t>(S, PC);
10149 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0))
10150 return false;
10151 }
10152#if USE_TAILCALLS
10153 MUSTTAIL return InterpNext(S, PC);
10154#else
10155 return true;
10156#endif
10157}
10158PRESERVE_NONE
10159static bool Interp_CastIntegralFixedPointUint8(InterpState &S, CodePtr &PC) {
10160 {
10161 CodePtr OpPC = PC;
10162 const auto V0 = ReadArg<uint32_t>(S, PC);
10163 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0))
10164 return false;
10165 }
10166#if USE_TAILCALLS
10167 MUSTTAIL return InterpNext(S, PC);
10168#else
10169 return true;
10170#endif
10171}
10172PRESERVE_NONE
10173static bool Interp_CastIntegralFixedPointSint16(InterpState &S, CodePtr &PC) {
10174 {
10175 CodePtr OpPC = PC;
10176 const auto V0 = ReadArg<uint32_t>(S, PC);
10177 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0))
10178 return false;
10179 }
10180#if USE_TAILCALLS
10181 MUSTTAIL return InterpNext(S, PC);
10182#else
10183 return true;
10184#endif
10185}
10186PRESERVE_NONE
10187static bool Interp_CastIntegralFixedPointUint16(InterpState &S, CodePtr &PC) {
10188 {
10189 CodePtr OpPC = PC;
10190 const auto V0 = ReadArg<uint32_t>(S, PC);
10191 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0))
10192 return false;
10193 }
10194#if USE_TAILCALLS
10195 MUSTTAIL return InterpNext(S, PC);
10196#else
10197 return true;
10198#endif
10199}
10200PRESERVE_NONE
10201static bool Interp_CastIntegralFixedPointSint32(InterpState &S, CodePtr &PC) {
10202 {
10203 CodePtr OpPC = PC;
10204 const auto V0 = ReadArg<uint32_t>(S, PC);
10205 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0))
10206 return false;
10207 }
10208#if USE_TAILCALLS
10209 MUSTTAIL return InterpNext(S, PC);
10210#else
10211 return true;
10212#endif
10213}
10214PRESERVE_NONE
10215static bool Interp_CastIntegralFixedPointUint32(InterpState &S, CodePtr &PC) {
10216 {
10217 CodePtr OpPC = PC;
10218 const auto V0 = ReadArg<uint32_t>(S, PC);
10219 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0))
10220 return false;
10221 }
10222#if USE_TAILCALLS
10223 MUSTTAIL return InterpNext(S, PC);
10224#else
10225 return true;
10226#endif
10227}
10228PRESERVE_NONE
10229static bool Interp_CastIntegralFixedPointSint64(InterpState &S, CodePtr &PC) {
10230 {
10231 CodePtr OpPC = PC;
10232 const auto V0 = ReadArg<uint32_t>(S, PC);
10233 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0))
10234 return false;
10235 }
10236#if USE_TAILCALLS
10237 MUSTTAIL return InterpNext(S, PC);
10238#else
10239 return true;
10240#endif
10241}
10242PRESERVE_NONE
10243static bool Interp_CastIntegralFixedPointUint64(InterpState &S, CodePtr &PC) {
10244 {
10245 CodePtr OpPC = PC;
10246 const auto V0 = ReadArg<uint32_t>(S, PC);
10247 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0))
10248 return false;
10249 }
10250#if USE_TAILCALLS
10251 MUSTTAIL return InterpNext(S, PC);
10252#else
10253 return true;
10254#endif
10255}
10256PRESERVE_NONE
10257static bool Interp_CastIntegralFixedPointBool(InterpState &S, CodePtr &PC) {
10258 {
10259 CodePtr OpPC = PC;
10260 const auto V0 = ReadArg<uint32_t>(S, PC);
10261 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0))
10262 return false;
10263 }
10264#if USE_TAILCALLS
10265 MUSTTAIL return InterpNext(S, PC);
10266#else
10267 return true;
10268#endif
10269}
10270#endif
10271#ifdef GET_DISASM
10272case OP_CastIntegralFixedPointSint8:
10273 Text.Op = PrintName("CastIntegralFixedPointSint8");
10274 Text.Args.push_back(printArg<uint32_t>(P, PC));
10275 break;
10276case OP_CastIntegralFixedPointUint8:
10277 Text.Op = PrintName("CastIntegralFixedPointUint8");
10278 Text.Args.push_back(printArg<uint32_t>(P, PC));
10279 break;
10280case OP_CastIntegralFixedPointSint16:
10281 Text.Op = PrintName("CastIntegralFixedPointSint16");
10282 Text.Args.push_back(printArg<uint32_t>(P, PC));
10283 break;
10284case OP_CastIntegralFixedPointUint16:
10285 Text.Op = PrintName("CastIntegralFixedPointUint16");
10286 Text.Args.push_back(printArg<uint32_t>(P, PC));
10287 break;
10288case OP_CastIntegralFixedPointSint32:
10289 Text.Op = PrintName("CastIntegralFixedPointSint32");
10290 Text.Args.push_back(printArg<uint32_t>(P, PC));
10291 break;
10292case OP_CastIntegralFixedPointUint32:
10293 Text.Op = PrintName("CastIntegralFixedPointUint32");
10294 Text.Args.push_back(printArg<uint32_t>(P, PC));
10295 break;
10296case OP_CastIntegralFixedPointSint64:
10297 Text.Op = PrintName("CastIntegralFixedPointSint64");
10298 Text.Args.push_back(printArg<uint32_t>(P, PC));
10299 break;
10300case OP_CastIntegralFixedPointUint64:
10301 Text.Op = PrintName("CastIntegralFixedPointUint64");
10302 Text.Args.push_back(printArg<uint32_t>(P, PC));
10303 break;
10304case OP_CastIntegralFixedPointBool:
10305 Text.Op = PrintName("CastIntegralFixedPointBool");
10306 Text.Args.push_back(printArg<uint32_t>(P, PC));
10307 break;
10308#endif
10309#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10310bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
10311bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
10312bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
10313bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
10314bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
10315bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
10316bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
10317bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
10318bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
10319#endif
10320#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10321[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
10322#endif
10323#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10324bool
10325#if defined(GET_EVAL_IMPL)
10326EvalEmitter
10327#else
10328ByteCodeEmitter
10329#endif
10330::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
10331 switch (T0) {
10332 case PT_Sint8:
10333 return emitCastIntegralFixedPointSint8(A0, I);
10334 case PT_Uint8:
10335 return emitCastIntegralFixedPointUint8(A0, I);
10336 case PT_Sint16:
10337 return emitCastIntegralFixedPointSint16(A0, I);
10338 case PT_Uint16:
10339 return emitCastIntegralFixedPointUint16(A0, I);
10340 case PT_Sint32:
10341 return emitCastIntegralFixedPointSint32(A0, I);
10342 case PT_Uint32:
10343 return emitCastIntegralFixedPointUint32(A0, I);
10344 case PT_Sint64:
10345 return emitCastIntegralFixedPointSint64(A0, I);
10346 case PT_Uint64:
10347 return emitCastIntegralFixedPointUint64(A0, I);
10348 case PT_Bool:
10349 return emitCastIntegralFixedPointBool(A0, I);
10350 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
10351 }
10352 llvm_unreachable("invalid enum value");
10353}
10354#endif
10355#ifdef GET_LINK_IMPL
10356bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10357 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
10358}
10359bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10360 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
10361}
10362bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10363 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
10364}
10365bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10366 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
10367}
10368bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10369 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
10370}
10371bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10372 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
10373}
10374bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10375 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
10376}
10377bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10378 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
10379}
10380bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10381 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
10382}
10383#endif
10384#ifdef GET_EVAL_IMPL
10385bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10386 if (!isActive()) return true;
10387 CurrentSource = L;
10388 return CastIntegralFixedPoint<PT_Sint8>(S, OpPC, A0);
10389}
10390bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10391 if (!isActive()) return true;
10392 CurrentSource = L;
10393 return CastIntegralFixedPoint<PT_Uint8>(S, OpPC, A0);
10394}
10395bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10396 if (!isActive()) return true;
10397 CurrentSource = L;
10398 return CastIntegralFixedPoint<PT_Sint16>(S, OpPC, A0);
10399}
10400bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10401 if (!isActive()) return true;
10402 CurrentSource = L;
10403 return CastIntegralFixedPoint<PT_Uint16>(S, OpPC, A0);
10404}
10405bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10406 if (!isActive()) return true;
10407 CurrentSource = L;
10408 return CastIntegralFixedPoint<PT_Sint32>(S, OpPC, A0);
10409}
10410bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10411 if (!isActive()) return true;
10412 CurrentSource = L;
10413 return CastIntegralFixedPoint<PT_Uint32>(S, OpPC, A0);
10414}
10415bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10416 if (!isActive()) return true;
10417 CurrentSource = L;
10418 return CastIntegralFixedPoint<PT_Sint64>(S, OpPC, A0);
10419}
10420bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10421 if (!isActive()) return true;
10422 CurrentSource = L;
10423 return CastIntegralFixedPoint<PT_Uint64>(S, OpPC, A0);
10424}
10425bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10426 if (!isActive()) return true;
10427 CurrentSource = L;
10428 return CastIntegralFixedPoint<PT_Bool>(S, OpPC, A0);
10429}
10430#endif
10431#ifdef GET_OPCODE_NAMES
10432OP_CastIntegralFloatingSint8,
10433OP_CastIntegralFloatingUint8,
10434OP_CastIntegralFloatingSint16,
10435OP_CastIntegralFloatingUint16,
10436OP_CastIntegralFloatingSint32,
10437OP_CastIntegralFloatingUint32,
10438OP_CastIntegralFloatingSint64,
10439OP_CastIntegralFloatingUint64,
10440OP_CastIntegralFloatingIntAP,
10441OP_CastIntegralFloatingIntAPS,
10442OP_CastIntegralFloatingBool,
10443OP_CastIntegralFloatingFixedPoint,
10444#endif
10445#ifdef GET_INTERPFN_LIST
10446&Interp_CastIntegralFloatingSint8,
10447&Interp_CastIntegralFloatingUint8,
10448&Interp_CastIntegralFloatingSint16,
10449&Interp_CastIntegralFloatingUint16,
10450&Interp_CastIntegralFloatingSint32,
10451&Interp_CastIntegralFloatingUint32,
10452&Interp_CastIntegralFloatingSint64,
10453&Interp_CastIntegralFloatingUint64,
10454&Interp_CastIntegralFloatingIntAP,
10455&Interp_CastIntegralFloatingIntAPS,
10456&Interp_CastIntegralFloatingBool,
10457&Interp_CastIntegralFloatingFixedPoint,
10458#endif
10459#ifdef GET_INTERPFN_DISPATCHERS
10460PRESERVE_NONE
10461static bool Interp_CastIntegralFloatingSint8(InterpState &S, CodePtr &PC) {
10462 {
10463 CodePtr OpPC = PC;
10464 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10465 const auto V1 = ReadArg<uint32_t>(S, PC);
10466 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1))
10467 return false;
10468 }
10469#if USE_TAILCALLS
10470 MUSTTAIL return InterpNext(S, PC);
10471#else
10472 return true;
10473#endif
10474}
10475PRESERVE_NONE
10476static bool Interp_CastIntegralFloatingUint8(InterpState &S, CodePtr &PC) {
10477 {
10478 CodePtr OpPC = PC;
10479 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10480 const auto V1 = ReadArg<uint32_t>(S, PC);
10481 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1))
10482 return false;
10483 }
10484#if USE_TAILCALLS
10485 MUSTTAIL return InterpNext(S, PC);
10486#else
10487 return true;
10488#endif
10489}
10490PRESERVE_NONE
10491static bool Interp_CastIntegralFloatingSint16(InterpState &S, CodePtr &PC) {
10492 {
10493 CodePtr OpPC = PC;
10494 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10495 const auto V1 = ReadArg<uint32_t>(S, PC);
10496 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1))
10497 return false;
10498 }
10499#if USE_TAILCALLS
10500 MUSTTAIL return InterpNext(S, PC);
10501#else
10502 return true;
10503#endif
10504}
10505PRESERVE_NONE
10506static bool Interp_CastIntegralFloatingUint16(InterpState &S, CodePtr &PC) {
10507 {
10508 CodePtr OpPC = PC;
10509 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10510 const auto V1 = ReadArg<uint32_t>(S, PC);
10511 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1))
10512 return false;
10513 }
10514#if USE_TAILCALLS
10515 MUSTTAIL return InterpNext(S, PC);
10516#else
10517 return true;
10518#endif
10519}
10520PRESERVE_NONE
10521static bool Interp_CastIntegralFloatingSint32(InterpState &S, CodePtr &PC) {
10522 {
10523 CodePtr OpPC = PC;
10524 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10525 const auto V1 = ReadArg<uint32_t>(S, PC);
10526 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1))
10527 return false;
10528 }
10529#if USE_TAILCALLS
10530 MUSTTAIL return InterpNext(S, PC);
10531#else
10532 return true;
10533#endif
10534}
10535PRESERVE_NONE
10536static bool Interp_CastIntegralFloatingUint32(InterpState &S, CodePtr &PC) {
10537 {
10538 CodePtr OpPC = PC;
10539 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10540 const auto V1 = ReadArg<uint32_t>(S, PC);
10541 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1))
10542 return false;
10543 }
10544#if USE_TAILCALLS
10545 MUSTTAIL return InterpNext(S, PC);
10546#else
10547 return true;
10548#endif
10549}
10550PRESERVE_NONE
10551static bool Interp_CastIntegralFloatingSint64(InterpState &S, CodePtr &PC) {
10552 {
10553 CodePtr OpPC = PC;
10554 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10555 const auto V1 = ReadArg<uint32_t>(S, PC);
10556 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1))
10557 return false;
10558 }
10559#if USE_TAILCALLS
10560 MUSTTAIL return InterpNext(S, PC);
10561#else
10562 return true;
10563#endif
10564}
10565PRESERVE_NONE
10566static bool Interp_CastIntegralFloatingUint64(InterpState &S, CodePtr &PC) {
10567 {
10568 CodePtr OpPC = PC;
10569 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10570 const auto V1 = ReadArg<uint32_t>(S, PC);
10571 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1))
10572 return false;
10573 }
10574#if USE_TAILCALLS
10575 MUSTTAIL return InterpNext(S, PC);
10576#else
10577 return true;
10578#endif
10579}
10580PRESERVE_NONE
10581static bool Interp_CastIntegralFloatingIntAP(InterpState &S, CodePtr &PC) {
10582 {
10583 CodePtr OpPC = PC;
10584 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10585 const auto V1 = ReadArg<uint32_t>(S, PC);
10586 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1))
10587 return false;
10588 }
10589#if USE_TAILCALLS
10590 MUSTTAIL return InterpNext(S, PC);
10591#else
10592 return true;
10593#endif
10594}
10595PRESERVE_NONE
10596static bool Interp_CastIntegralFloatingIntAPS(InterpState &S, CodePtr &PC) {
10597 {
10598 CodePtr OpPC = PC;
10599 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10600 const auto V1 = ReadArg<uint32_t>(S, PC);
10601 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1))
10602 return false;
10603 }
10604#if USE_TAILCALLS
10605 MUSTTAIL return InterpNext(S, PC);
10606#else
10607 return true;
10608#endif
10609}
10610PRESERVE_NONE
10611static bool Interp_CastIntegralFloatingBool(InterpState &S, CodePtr &PC) {
10612 {
10613 CodePtr OpPC = PC;
10614 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10615 const auto V1 = ReadArg<uint32_t>(S, PC);
10616 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1))
10617 return false;
10618 }
10619#if USE_TAILCALLS
10620 MUSTTAIL return InterpNext(S, PC);
10621#else
10622 return true;
10623#endif
10624}
10625PRESERVE_NONE
10626static bool Interp_CastIntegralFloatingFixedPoint(InterpState &S, CodePtr &PC) {
10627 {
10628 CodePtr OpPC = PC;
10629 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10630 const auto V1 = ReadArg<uint32_t>(S, PC);
10631 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1))
10632 return false;
10633 }
10634#if USE_TAILCALLS
10635 MUSTTAIL return InterpNext(S, PC);
10636#else
10637 return true;
10638#endif
10639}
10640#endif
10641#ifdef GET_DISASM
10642case OP_CastIntegralFloatingSint8:
10643 Text.Op = PrintName("CastIntegralFloatingSint8");
10644 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10645 Text.Args.push_back(printArg<uint32_t>(P, PC));
10646 break;
10647case OP_CastIntegralFloatingUint8:
10648 Text.Op = PrintName("CastIntegralFloatingUint8");
10649 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10650 Text.Args.push_back(printArg<uint32_t>(P, PC));
10651 break;
10652case OP_CastIntegralFloatingSint16:
10653 Text.Op = PrintName("CastIntegralFloatingSint16");
10654 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10655 Text.Args.push_back(printArg<uint32_t>(P, PC));
10656 break;
10657case OP_CastIntegralFloatingUint16:
10658 Text.Op = PrintName("CastIntegralFloatingUint16");
10659 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10660 Text.Args.push_back(printArg<uint32_t>(P, PC));
10661 break;
10662case OP_CastIntegralFloatingSint32:
10663 Text.Op = PrintName("CastIntegralFloatingSint32");
10664 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10665 Text.Args.push_back(printArg<uint32_t>(P, PC));
10666 break;
10667case OP_CastIntegralFloatingUint32:
10668 Text.Op = PrintName("CastIntegralFloatingUint32");
10669 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10670 Text.Args.push_back(printArg<uint32_t>(P, PC));
10671 break;
10672case OP_CastIntegralFloatingSint64:
10673 Text.Op = PrintName("CastIntegralFloatingSint64");
10674 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10675 Text.Args.push_back(printArg<uint32_t>(P, PC));
10676 break;
10677case OP_CastIntegralFloatingUint64:
10678 Text.Op = PrintName("CastIntegralFloatingUint64");
10679 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10680 Text.Args.push_back(printArg<uint32_t>(P, PC));
10681 break;
10682case OP_CastIntegralFloatingIntAP:
10683 Text.Op = PrintName("CastIntegralFloatingIntAP");
10684 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10685 Text.Args.push_back(printArg<uint32_t>(P, PC));
10686 break;
10687case OP_CastIntegralFloatingIntAPS:
10688 Text.Op = PrintName("CastIntegralFloatingIntAPS");
10689 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10690 Text.Args.push_back(printArg<uint32_t>(P, PC));
10691 break;
10692case OP_CastIntegralFloatingBool:
10693 Text.Op = PrintName("CastIntegralFloatingBool");
10694 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10695 Text.Args.push_back(printArg<uint32_t>(P, PC));
10696 break;
10697case OP_CastIntegralFloatingFixedPoint:
10698 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
10699 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10700 Text.Args.push_back(printArg<uint32_t>(P, PC));
10701 break;
10702#endif
10703#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10704bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10705bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10706bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10707bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10708bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10709bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10710bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10711bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10712bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
10713bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
10714bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
10715bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
10716#endif
10717#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10718[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
10719#endif
10720#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10721bool
10722#if defined(GET_EVAL_IMPL)
10723EvalEmitter
10724#else
10725ByteCodeEmitter
10726#endif
10727::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
10728 switch (T0) {
10729 case PT_Sint8:
10730 return emitCastIntegralFloatingSint8(A0, A1, I);
10731 case PT_Uint8:
10732 return emitCastIntegralFloatingUint8(A0, A1, I);
10733 case PT_Sint16:
10734 return emitCastIntegralFloatingSint16(A0, A1, I);
10735 case PT_Uint16:
10736 return emitCastIntegralFloatingUint16(A0, A1, I);
10737 case PT_Sint32:
10738 return emitCastIntegralFloatingSint32(A0, A1, I);
10739 case PT_Uint32:
10740 return emitCastIntegralFloatingUint32(A0, A1, I);
10741 case PT_Sint64:
10742 return emitCastIntegralFloatingSint64(A0, A1, I);
10743 case PT_Uint64:
10744 return emitCastIntegralFloatingUint64(A0, A1, I);
10745 case PT_IntAP:
10746 return emitCastIntegralFloatingIntAP(A0, A1, I);
10747 case PT_IntAPS:
10748 return emitCastIntegralFloatingIntAPS(A0, A1, I);
10749 case PT_Bool:
10750 return emitCastIntegralFloatingBool(A0, A1, I);
10751 case PT_FixedPoint:
10752 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
10753 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
10754 }
10755 llvm_unreachable("invalid enum value");
10756}
10757#endif
10758#ifdef GET_LINK_IMPL
10759bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10760 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
10761}
10762bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10763 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
10764}
10765bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10766 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
10767}
10768bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10769 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
10770}
10771bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10772 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
10773}
10774bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10775 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
10776}
10777bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10778 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
10779}
10780bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10781 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
10782}
10783bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10784 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
10785}
10786bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10787 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
10788}
10789bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10790 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
10791}
10792bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10793 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
10794}
10795#endif
10796#ifdef GET_EVAL_IMPL
10797bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10798 if (!isActive()) return true;
10799 CurrentSource = L;
10800 return CastIntegralFloating<PT_Sint8>(S, OpPC, A0, A1);
10801}
10802bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10803 if (!isActive()) return true;
10804 CurrentSource = L;
10805 return CastIntegralFloating<PT_Uint8>(S, OpPC, A0, A1);
10806}
10807bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10808 if (!isActive()) return true;
10809 CurrentSource = L;
10810 return CastIntegralFloating<PT_Sint16>(S, OpPC, A0, A1);
10811}
10812bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10813 if (!isActive()) return true;
10814 CurrentSource = L;
10815 return CastIntegralFloating<PT_Uint16>(S, OpPC, A0, A1);
10816}
10817bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10818 if (!isActive()) return true;
10819 CurrentSource = L;
10820 return CastIntegralFloating<PT_Sint32>(S, OpPC, A0, A1);
10821}
10822bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10823 if (!isActive()) return true;
10824 CurrentSource = L;
10825 return CastIntegralFloating<PT_Uint32>(S, OpPC, A0, A1);
10826}
10827bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10828 if (!isActive()) return true;
10829 CurrentSource = L;
10830 return CastIntegralFloating<PT_Sint64>(S, OpPC, A0, A1);
10831}
10832bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10833 if (!isActive()) return true;
10834 CurrentSource = L;
10835 return CastIntegralFloating<PT_Uint64>(S, OpPC, A0, A1);
10836}
10837bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10838 if (!isActive()) return true;
10839 CurrentSource = L;
10840 return CastIntegralFloating<PT_IntAP>(S, OpPC, A0, A1);
10841}
10842bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10843 if (!isActive()) return true;
10844 CurrentSource = L;
10845 return CastIntegralFloating<PT_IntAPS>(S, OpPC, A0, A1);
10846}
10847bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10848 if (!isActive()) return true;
10849 CurrentSource = L;
10850 return CastIntegralFloating<PT_Bool>(S, OpPC, A0, A1);
10851}
10852bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10853 if (!isActive()) return true;
10854 CurrentSource = L;
10855 return CastIntegralFloating<PT_FixedPoint>(S, OpPC, A0, A1);
10856}
10857#endif
10858#ifdef GET_OPCODE_NAMES
10859OP_CastMemberPtrBasePop,
10860#endif
10861#ifdef GET_INTERPFN_LIST
10862&Interp_CastMemberPtrBasePop,
10863#endif
10864#ifdef GET_INTERPFN_DISPATCHERS
10865PRESERVE_NONE
10866static bool Interp_CastMemberPtrBasePop(InterpState &S, CodePtr &PC) {
10867 {
10868 CodePtr OpPC = PC;
10869 const auto V0 = ReadArg<int32_t>(S, PC);
10870 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
10871 if (!CastMemberPtrBasePop(S, OpPC, V0, V1))
10872 return false;
10873 }
10874#if USE_TAILCALLS
10875 MUSTTAIL return InterpNext(S, PC);
10876#else
10877 return true;
10878#endif
10879}
10880#endif
10881#ifdef GET_DISASM
10882case OP_CastMemberPtrBasePop:
10883 Text.Op = PrintName("CastMemberPtrBasePop");
10884 Text.Args.push_back(printArg<int32_t>(P, PC));
10885 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
10886 break;
10887#endif
10888#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10889bool emitCastMemberPtrBasePop( int32_t , const RecordDecl * , SourceInfo);
10890#endif
10891#ifdef GET_LINK_IMPL
10892bool ByteCodeEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10893 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrBasePop, A0, A1, L);
10894}
10895#endif
10896#ifdef GET_EVAL_IMPL
10897bool EvalEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10898 if (!isActive()) return true;
10899 CurrentSource = L;
10900 return CastMemberPtrBasePop(S, OpPC, A0, A1);
10901}
10902#endif
10903#ifdef GET_OPCODE_NAMES
10904OP_CastMemberPtrDerivedPop,
10905#endif
10906#ifdef GET_INTERPFN_LIST
10907&Interp_CastMemberPtrDerivedPop,
10908#endif
10909#ifdef GET_INTERPFN_DISPATCHERS
10910PRESERVE_NONE
10911static bool Interp_CastMemberPtrDerivedPop(InterpState &S, CodePtr &PC) {
10912 {
10913 CodePtr OpPC = PC;
10914 const auto V0 = ReadArg<int32_t>(S, PC);
10915 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
10916 if (!CastMemberPtrDerivedPop(S, OpPC, V0, V1))
10917 return false;
10918 }
10919#if USE_TAILCALLS
10920 MUSTTAIL return InterpNext(S, PC);
10921#else
10922 return true;
10923#endif
10924}
10925#endif
10926#ifdef GET_DISASM
10927case OP_CastMemberPtrDerivedPop:
10928 Text.Op = PrintName("CastMemberPtrDerivedPop");
10929 Text.Args.push_back(printArg<int32_t>(P, PC));
10930 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
10931 break;
10932#endif
10933#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10934bool emitCastMemberPtrDerivedPop( int32_t , const RecordDecl * , SourceInfo);
10935#endif
10936#ifdef GET_LINK_IMPL
10937bool ByteCodeEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10938 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrDerivedPop, A0, A1, L);
10939}
10940#endif
10941#ifdef GET_EVAL_IMPL
10942bool EvalEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10943 if (!isActive()) return true;
10944 CurrentSource = L;
10945 return CastMemberPtrDerivedPop(S, OpPC, A0, A1);
10946}
10947#endif
10948#ifdef GET_OPCODE_NAMES
10949OP_CastMemberPtrPtr,
10950#endif
10951#ifdef GET_INTERPFN_LIST
10952&Interp_CastMemberPtrPtr,
10953#endif
10954#ifdef GET_INTERPFN_DISPATCHERS
10955PRESERVE_NONE
10956static bool Interp_CastMemberPtrPtr(InterpState &S, CodePtr &PC) {
10957 if (!CastMemberPtrPtr(S, PC))
10958 return false;
10959#if USE_TAILCALLS
10960 MUSTTAIL return InterpNext(S, PC);
10961#else
10962 return true;
10963#endif
10964}
10965#endif
10966#ifdef GET_DISASM
10967case OP_CastMemberPtrPtr:
10968 Text.Op = PrintName("CastMemberPtrPtr");
10969 break;
10970#endif
10971#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10972bool emitCastMemberPtrPtr(SourceInfo);
10973#endif
10974#ifdef GET_LINK_IMPL
10975bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10976 return emitOp<>(OP_CastMemberPtrPtr, L);
10977}
10978#endif
10979#ifdef GET_EVAL_IMPL
10980bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10981 if (!isActive()) return true;
10982 CurrentSource = L;
10983 return CastMemberPtrPtr(S, OpPC);
10984}
10985#endif
10986#ifdef GET_OPCODE_NAMES
10987OP_CastPointerIntegralSint8,
10988OP_CastPointerIntegralUint8,
10989OP_CastPointerIntegralSint16,
10990OP_CastPointerIntegralUint16,
10991OP_CastPointerIntegralSint32,
10992OP_CastPointerIntegralUint32,
10993OP_CastPointerIntegralSint64,
10994OP_CastPointerIntegralUint64,
10995OP_CastPointerIntegralBool,
10996#endif
10997#ifdef GET_INTERPFN_LIST
10998&Interp_CastPointerIntegralSint8,
10999&Interp_CastPointerIntegralUint8,
11000&Interp_CastPointerIntegralSint16,
11001&Interp_CastPointerIntegralUint16,
11002&Interp_CastPointerIntegralSint32,
11003&Interp_CastPointerIntegralUint32,
11004&Interp_CastPointerIntegralSint64,
11005&Interp_CastPointerIntegralUint64,
11006&Interp_CastPointerIntegralBool,
11007#endif
11008#ifdef GET_INTERPFN_DISPATCHERS
11009PRESERVE_NONE
11010static bool Interp_CastPointerIntegralSint8(InterpState &S, CodePtr &PC) {
11011 if (!CastPointerIntegral<PT_Sint8>(S, PC))
11012 return false;
11013#if USE_TAILCALLS
11014 MUSTTAIL return InterpNext(S, PC);
11015#else
11016 return true;
11017#endif
11018}
11019PRESERVE_NONE
11020static bool Interp_CastPointerIntegralUint8(InterpState &S, CodePtr &PC) {
11021 if (!CastPointerIntegral<PT_Uint8>(S, PC))
11022 return false;
11023#if USE_TAILCALLS
11024 MUSTTAIL return InterpNext(S, PC);
11025#else
11026 return true;
11027#endif
11028}
11029PRESERVE_NONE
11030static bool Interp_CastPointerIntegralSint16(InterpState &S, CodePtr &PC) {
11031 if (!CastPointerIntegral<PT_Sint16>(S, PC))
11032 return false;
11033#if USE_TAILCALLS
11034 MUSTTAIL return InterpNext(S, PC);
11035#else
11036 return true;
11037#endif
11038}
11039PRESERVE_NONE
11040static bool Interp_CastPointerIntegralUint16(InterpState &S, CodePtr &PC) {
11041 if (!CastPointerIntegral<PT_Uint16>(S, PC))
11042 return false;
11043#if USE_TAILCALLS
11044 MUSTTAIL return InterpNext(S, PC);
11045#else
11046 return true;
11047#endif
11048}
11049PRESERVE_NONE
11050static bool Interp_CastPointerIntegralSint32(InterpState &S, CodePtr &PC) {
11051 if (!CastPointerIntegral<PT_Sint32>(S, PC))
11052 return false;
11053#if USE_TAILCALLS
11054 MUSTTAIL return InterpNext(S, PC);
11055#else
11056 return true;
11057#endif
11058}
11059PRESERVE_NONE
11060static bool Interp_CastPointerIntegralUint32(InterpState &S, CodePtr &PC) {
11061 if (!CastPointerIntegral<PT_Uint32>(S, PC))
11062 return false;
11063#if USE_TAILCALLS
11064 MUSTTAIL return InterpNext(S, PC);
11065#else
11066 return true;
11067#endif
11068}
11069PRESERVE_NONE
11070static bool Interp_CastPointerIntegralSint64(InterpState &S, CodePtr &PC) {
11071 if (!CastPointerIntegral<PT_Sint64>(S, PC))
11072 return false;
11073#if USE_TAILCALLS
11074 MUSTTAIL return InterpNext(S, PC);
11075#else
11076 return true;
11077#endif
11078}
11079PRESERVE_NONE
11080static bool Interp_CastPointerIntegralUint64(InterpState &S, CodePtr &PC) {
11081 if (!CastPointerIntegral<PT_Uint64>(S, PC))
11082 return false;
11083#if USE_TAILCALLS
11084 MUSTTAIL return InterpNext(S, PC);
11085#else
11086 return true;
11087#endif
11088}
11089PRESERVE_NONE
11090static bool Interp_CastPointerIntegralBool(InterpState &S, CodePtr &PC) {
11091 if (!CastPointerIntegral<PT_Bool>(S, PC))
11092 return false;
11093#if USE_TAILCALLS
11094 MUSTTAIL return InterpNext(S, PC);
11095#else
11096 return true;
11097#endif
11098}
11099#endif
11100#ifdef GET_DISASM
11101case OP_CastPointerIntegralSint8:
11102 Text.Op = PrintName("CastPointerIntegralSint8");
11103 break;
11104case OP_CastPointerIntegralUint8:
11105 Text.Op = PrintName("CastPointerIntegralUint8");
11106 break;
11107case OP_CastPointerIntegralSint16:
11108 Text.Op = PrintName("CastPointerIntegralSint16");
11109 break;
11110case OP_CastPointerIntegralUint16:
11111 Text.Op = PrintName("CastPointerIntegralUint16");
11112 break;
11113case OP_CastPointerIntegralSint32:
11114 Text.Op = PrintName("CastPointerIntegralSint32");
11115 break;
11116case OP_CastPointerIntegralUint32:
11117 Text.Op = PrintName("CastPointerIntegralUint32");
11118 break;
11119case OP_CastPointerIntegralSint64:
11120 Text.Op = PrintName("CastPointerIntegralSint64");
11121 break;
11122case OP_CastPointerIntegralUint64:
11123 Text.Op = PrintName("CastPointerIntegralUint64");
11124 break;
11125case OP_CastPointerIntegralBool:
11126 Text.Op = PrintName("CastPointerIntegralBool");
11127 break;
11128#endif
11129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11130bool emitCastPointerIntegralSint8(SourceInfo);
11131bool emitCastPointerIntegralUint8(SourceInfo);
11132bool emitCastPointerIntegralSint16(SourceInfo);
11133bool emitCastPointerIntegralUint16(SourceInfo);
11134bool emitCastPointerIntegralSint32(SourceInfo);
11135bool emitCastPointerIntegralUint32(SourceInfo);
11136bool emitCastPointerIntegralSint64(SourceInfo);
11137bool emitCastPointerIntegralUint64(SourceInfo);
11138bool emitCastPointerIntegralBool(SourceInfo);
11139#endif
11140#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11141[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
11142#endif
11143#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11144bool
11145#if defined(GET_EVAL_IMPL)
11146EvalEmitter
11147#else
11148ByteCodeEmitter
11149#endif
11150::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
11151 switch (T0) {
11152 case PT_Sint8:
11153 return emitCastPointerIntegralSint8(I);
11154 case PT_Uint8:
11155 return emitCastPointerIntegralUint8(I);
11156 case PT_Sint16:
11157 return emitCastPointerIntegralSint16(I);
11158 case PT_Uint16:
11159 return emitCastPointerIntegralUint16(I);
11160 case PT_Sint32:
11161 return emitCastPointerIntegralSint32(I);
11162 case PT_Uint32:
11163 return emitCastPointerIntegralUint32(I);
11164 case PT_Sint64:
11165 return emitCastPointerIntegralSint64(I);
11166 case PT_Uint64:
11167 return emitCastPointerIntegralUint64(I);
11168 case PT_Bool:
11169 return emitCastPointerIntegralBool(I);
11170 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
11171 }
11172 llvm_unreachable("invalid enum value");
11173}
11174#endif
11175#ifdef GET_LINK_IMPL
11176bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
11177 return emitOp<>(OP_CastPointerIntegralSint8, L);
11178}
11179bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
11180 return emitOp<>(OP_CastPointerIntegralUint8, L);
11181}
11182bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
11183 return emitOp<>(OP_CastPointerIntegralSint16, L);
11184}
11185bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
11186 return emitOp<>(OP_CastPointerIntegralUint16, L);
11187}
11188bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
11189 return emitOp<>(OP_CastPointerIntegralSint32, L);
11190}
11191bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
11192 return emitOp<>(OP_CastPointerIntegralUint32, L);
11193}
11194bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
11195 return emitOp<>(OP_CastPointerIntegralSint64, L);
11196}
11197bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
11198 return emitOp<>(OP_CastPointerIntegralUint64, L);
11199}
11200bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
11201 return emitOp<>(OP_CastPointerIntegralBool, L);
11202}
11203#endif
11204#ifdef GET_EVAL_IMPL
11205bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
11206 if (!isActive()) return true;
11207 CurrentSource = L;
11208 return CastPointerIntegral<PT_Sint8>(S, OpPC);
11209}
11210bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
11211 if (!isActive()) return true;
11212 CurrentSource = L;
11213 return CastPointerIntegral<PT_Uint8>(S, OpPC);
11214}
11215bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
11216 if (!isActive()) return true;
11217 CurrentSource = L;
11218 return CastPointerIntegral<PT_Sint16>(S, OpPC);
11219}
11220bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
11221 if (!isActive()) return true;
11222 CurrentSource = L;
11223 return CastPointerIntegral<PT_Uint16>(S, OpPC);
11224}
11225bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
11226 if (!isActive()) return true;
11227 CurrentSource = L;
11228 return CastPointerIntegral<PT_Sint32>(S, OpPC);
11229}
11230bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
11231 if (!isActive()) return true;
11232 CurrentSource = L;
11233 return CastPointerIntegral<PT_Uint32>(S, OpPC);
11234}
11235bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
11236 if (!isActive()) return true;
11237 CurrentSource = L;
11238 return CastPointerIntegral<PT_Sint64>(S, OpPC);
11239}
11240bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
11241 if (!isActive()) return true;
11242 CurrentSource = L;
11243 return CastPointerIntegral<PT_Uint64>(S, OpPC);
11244}
11245bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
11246 if (!isActive()) return true;
11247 CurrentSource = L;
11248 return CastPointerIntegral<PT_Bool>(S, OpPC);
11249}
11250#endif
11251#ifdef GET_OPCODE_NAMES
11252OP_CastPointerIntegralAP,
11253#endif
11254#ifdef GET_INTERPFN_LIST
11255&Interp_CastPointerIntegralAP,
11256#endif
11257#ifdef GET_INTERPFN_DISPATCHERS
11258PRESERVE_NONE
11259static bool Interp_CastPointerIntegralAP(InterpState &S, CodePtr &PC) {
11260 {
11261 CodePtr OpPC = PC;
11262 const auto V0 = ReadArg<uint32_t>(S, PC);
11263 if (!CastPointerIntegralAP(S, OpPC, V0))
11264 return false;
11265 }
11266#if USE_TAILCALLS
11267 MUSTTAIL return InterpNext(S, PC);
11268#else
11269 return true;
11270#endif
11271}
11272#endif
11273#ifdef GET_DISASM
11274case OP_CastPointerIntegralAP:
11275 Text.Op = PrintName("CastPointerIntegralAP");
11276 Text.Args.push_back(printArg<uint32_t>(P, PC));
11277 break;
11278#endif
11279#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11280bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
11281#endif
11282#ifdef GET_LINK_IMPL
11283bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11284 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
11285}
11286#endif
11287#ifdef GET_EVAL_IMPL
11288bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11289 if (!isActive()) return true;
11290 CurrentSource = L;
11291 return CastPointerIntegralAP(S, OpPC, A0);
11292}
11293#endif
11294#ifdef GET_OPCODE_NAMES
11295OP_CastPointerIntegralAPS,
11296#endif
11297#ifdef GET_INTERPFN_LIST
11298&Interp_CastPointerIntegralAPS,
11299#endif
11300#ifdef GET_INTERPFN_DISPATCHERS
11301PRESERVE_NONE
11302static bool Interp_CastPointerIntegralAPS(InterpState &S, CodePtr &PC) {
11303 {
11304 CodePtr OpPC = PC;
11305 const auto V0 = ReadArg<uint32_t>(S, PC);
11306 if (!CastPointerIntegralAPS(S, OpPC, V0))
11307 return false;
11308 }
11309#if USE_TAILCALLS
11310 MUSTTAIL return InterpNext(S, PC);
11311#else
11312 return true;
11313#endif
11314}
11315#endif
11316#ifdef GET_DISASM
11317case OP_CastPointerIntegralAPS:
11318 Text.Op = PrintName("CastPointerIntegralAPS");
11319 Text.Args.push_back(printArg<uint32_t>(P, PC));
11320 break;
11321#endif
11322#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11323bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
11324#endif
11325#ifdef GET_LINK_IMPL
11326bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11327 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
11328}
11329#endif
11330#ifdef GET_EVAL_IMPL
11331bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11332 if (!isActive()) return true;
11333 CurrentSource = L;
11334 return CastPointerIntegralAPS(S, OpPC, A0);
11335}
11336#endif
11337#ifdef GET_OPCODE_NAMES
11338OP_CheckAllocations,
11339#endif
11340#ifdef GET_INTERPFN_LIST
11341&Interp_CheckAllocations,
11342#endif
11343#ifdef GET_INTERPFN_DISPATCHERS
11344PRESERVE_NONE
11345static bool Interp_CheckAllocations(InterpState &S, CodePtr &PC) {
11346 if (!CheckAllocations(S, PC))
11347 return false;
11348#if USE_TAILCALLS
11349 MUSTTAIL return InterpNext(S, PC);
11350#else
11351 return true;
11352#endif
11353}
11354#endif
11355#ifdef GET_DISASM
11356case OP_CheckAllocations:
11357 Text.Op = PrintName("CheckAllocations");
11358 break;
11359#endif
11360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11361bool emitCheckAllocations(SourceInfo);
11362#endif
11363#ifdef GET_LINK_IMPL
11364bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
11365 return emitOp<>(OP_CheckAllocations, L);
11366}
11367#endif
11368#ifdef GET_EVAL_IMPL
11369bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
11370 if (!isActive()) return true;
11371 CurrentSource = L;
11372 return CheckAllocations(S, OpPC);
11373}
11374#endif
11375#ifdef GET_OPCODE_NAMES
11376OP_CheckArraySize,
11377#endif
11378#ifdef GET_INTERPFN_LIST
11379&Interp_CheckArraySize,
11380#endif
11381#ifdef GET_INTERPFN_DISPATCHERS
11382PRESERVE_NONE
11383static bool Interp_CheckArraySize(InterpState &S, CodePtr &PC) {
11384 {
11385 CodePtr OpPC = PC;
11386 const auto V0 = ReadArg<uint64_t>(S, PC);
11387 if (!CheckArraySize(S, OpPC, V0))
11388 return false;
11389 }
11390#if USE_TAILCALLS
11391 MUSTTAIL return InterpNext(S, PC);
11392#else
11393 return true;
11394#endif
11395}
11396#endif
11397#ifdef GET_DISASM
11398case OP_CheckArraySize:
11399 Text.Op = PrintName("CheckArraySize");
11400 Text.Args.push_back(printArg<uint64_t>(P, PC));
11401 break;
11402#endif
11403#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11404bool emitCheckArraySize( uint64_t , SourceInfo);
11405#endif
11406#ifdef GET_LINK_IMPL
11407bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11408 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
11409}
11410#endif
11411#ifdef GET_EVAL_IMPL
11412bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11413 if (!isActive()) return true;
11414 CurrentSource = L;
11415 return CheckArraySize(S, OpPC, A0);
11416}
11417#endif
11418#ifdef GET_OPCODE_NAMES
11419OP_CheckBitCast,
11420#endif
11421#ifdef GET_INTERPFN_LIST
11422&Interp_CheckBitCast,
11423#endif
11424#ifdef GET_INTERPFN_DISPATCHERS
11425PRESERVE_NONE
11426static bool Interp_CheckBitCast(InterpState &S, CodePtr &PC) {
11427 {
11428 CodePtr OpPC = PC;
11429 const auto V0 = ReadArg<const Type *>(S, PC);
11430 const auto V1 = ReadArg<bool>(S, PC);
11431 if (!CheckBitCast(S, OpPC, V0, V1))
11432 return false;
11433 }
11434#if USE_TAILCALLS
11435 MUSTTAIL return InterpNext(S, PC);
11436#else
11437 return true;
11438#endif
11439}
11440#endif
11441#ifdef GET_DISASM
11442case OP_CheckBitCast:
11443 Text.Op = PrintName("CheckBitCast");
11444 Text.Args.push_back(printArg<const Type *>(P, PC));
11445 Text.Args.push_back(printArg<bool>(P, PC));
11446 break;
11447#endif
11448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11449bool emitCheckBitCast( const Type * , bool , SourceInfo);
11450#endif
11451#ifdef GET_LINK_IMPL
11452bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11453 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
11454}
11455#endif
11456#ifdef GET_EVAL_IMPL
11457bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11458 if (!isActive()) return true;
11459 CurrentSource = L;
11460 return CheckBitCast(S, OpPC, A0, A1);
11461}
11462#endif
11463#ifdef GET_OPCODE_NAMES
11464OP_CheckDecl,
11465#endif
11466#ifdef GET_INTERPFN_LIST
11467&Interp_CheckDecl,
11468#endif
11469#ifdef GET_INTERPFN_DISPATCHERS
11470PRESERVE_NONE
11471static bool Interp_CheckDecl(InterpState &S, CodePtr &PC) {
11472 {
11473 CodePtr OpPC = PC;
11474 const auto V0 = ReadArg<const VarDecl*>(S, PC);
11475 if (!CheckDecl(S, OpPC, V0))
11476 return false;
11477 }
11478#if USE_TAILCALLS
11479 MUSTTAIL return InterpNext(S, PC);
11480#else
11481 return true;
11482#endif
11483}
11484#endif
11485#ifdef GET_DISASM
11486case OP_CheckDecl:
11487 Text.Op = PrintName("CheckDecl");
11488 Text.Args.push_back(printArg<const VarDecl*>(P, PC));
11489 break;
11490#endif
11491#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11492bool emitCheckDecl( const VarDecl* , SourceInfo);
11493#endif
11494#ifdef GET_LINK_IMPL
11495bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11496 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
11497}
11498#endif
11499#ifdef GET_EVAL_IMPL
11500bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11501 if (!isActive()) return true;
11502 CurrentSource = L;
11503 return CheckDecl(S, OpPC, A0);
11504}
11505#endif
11506#ifdef GET_OPCODE_NAMES
11507OP_CheckDestruction,
11508#endif
11509#ifdef GET_INTERPFN_LIST
11510&Interp_CheckDestruction,
11511#endif
11512#ifdef GET_INTERPFN_DISPATCHERS
11513PRESERVE_NONE
11514static bool Interp_CheckDestruction(InterpState &S, CodePtr &PC) {
11515 if (!CheckDestruction(S, PC))
11516 return false;
11517#if USE_TAILCALLS
11518 MUSTTAIL return InterpNext(S, PC);
11519#else
11520 return true;
11521#endif
11522}
11523#endif
11524#ifdef GET_DISASM
11525case OP_CheckDestruction:
11526 Text.Op = PrintName("CheckDestruction");
11527 break;
11528#endif
11529#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11530bool emitCheckDestruction(SourceInfo);
11531#endif
11532#ifdef GET_LINK_IMPL
11533bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
11534 return emitOp<>(OP_CheckDestruction, L);
11535}
11536#endif
11537#ifdef GET_EVAL_IMPL
11538bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
11539 if (!isActive()) return true;
11540 CurrentSource = L;
11541 return CheckDestruction(S, OpPC);
11542}
11543#endif
11544#ifdef GET_OPCODE_NAMES
11545OP_CheckEnumValueSint8,
11546OP_CheckEnumValueUint8,
11547OP_CheckEnumValueSint16,
11548OP_CheckEnumValueUint16,
11549OP_CheckEnumValueSint32,
11550OP_CheckEnumValueUint32,
11551OP_CheckEnumValueSint64,
11552OP_CheckEnumValueUint64,
11553OP_CheckEnumValueIntAP,
11554OP_CheckEnumValueIntAPS,
11555OP_CheckEnumValueBool,
11556#endif
11557#ifdef GET_INTERPFN_LIST
11558&Interp_CheckEnumValueSint8,
11559&Interp_CheckEnumValueUint8,
11560&Interp_CheckEnumValueSint16,
11561&Interp_CheckEnumValueUint16,
11562&Interp_CheckEnumValueSint32,
11563&Interp_CheckEnumValueUint32,
11564&Interp_CheckEnumValueSint64,
11565&Interp_CheckEnumValueUint64,
11566&Interp_CheckEnumValueIntAP,
11567&Interp_CheckEnumValueIntAPS,
11568&Interp_CheckEnumValueBool,
11569#endif
11570#ifdef GET_INTERPFN_DISPATCHERS
11571PRESERVE_NONE
11572static bool Interp_CheckEnumValueSint8(InterpState &S, CodePtr &PC) {
11573 {
11574 CodePtr OpPC = PC;
11575 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11576 if (!CheckEnumValue<PT_Sint8>(S, OpPC, V0))
11577 return false;
11578 }
11579#if USE_TAILCALLS
11580 MUSTTAIL return InterpNext(S, PC);
11581#else
11582 return true;
11583#endif
11584}
11585PRESERVE_NONE
11586static bool Interp_CheckEnumValueUint8(InterpState &S, CodePtr &PC) {
11587 {
11588 CodePtr OpPC = PC;
11589 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11590 if (!CheckEnumValue<PT_Uint8>(S, OpPC, V0))
11591 return false;
11592 }
11593#if USE_TAILCALLS
11594 MUSTTAIL return InterpNext(S, PC);
11595#else
11596 return true;
11597#endif
11598}
11599PRESERVE_NONE
11600static bool Interp_CheckEnumValueSint16(InterpState &S, CodePtr &PC) {
11601 {
11602 CodePtr OpPC = PC;
11603 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11604 if (!CheckEnumValue<PT_Sint16>(S, OpPC, V0))
11605 return false;
11606 }
11607#if USE_TAILCALLS
11608 MUSTTAIL return InterpNext(S, PC);
11609#else
11610 return true;
11611#endif
11612}
11613PRESERVE_NONE
11614static bool Interp_CheckEnumValueUint16(InterpState &S, CodePtr &PC) {
11615 {
11616 CodePtr OpPC = PC;
11617 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11618 if (!CheckEnumValue<PT_Uint16>(S, OpPC, V0))
11619 return false;
11620 }
11621#if USE_TAILCALLS
11622 MUSTTAIL return InterpNext(S, PC);
11623#else
11624 return true;
11625#endif
11626}
11627PRESERVE_NONE
11628static bool Interp_CheckEnumValueSint32(InterpState &S, CodePtr &PC) {
11629 {
11630 CodePtr OpPC = PC;
11631 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11632 if (!CheckEnumValue<PT_Sint32>(S, OpPC, V0))
11633 return false;
11634 }
11635#if USE_TAILCALLS
11636 MUSTTAIL return InterpNext(S, PC);
11637#else
11638 return true;
11639#endif
11640}
11641PRESERVE_NONE
11642static bool Interp_CheckEnumValueUint32(InterpState &S, CodePtr &PC) {
11643 {
11644 CodePtr OpPC = PC;
11645 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11646 if (!CheckEnumValue<PT_Uint32>(S, OpPC, V0))
11647 return false;
11648 }
11649#if USE_TAILCALLS
11650 MUSTTAIL return InterpNext(S, PC);
11651#else
11652 return true;
11653#endif
11654}
11655PRESERVE_NONE
11656static bool Interp_CheckEnumValueSint64(InterpState &S, CodePtr &PC) {
11657 {
11658 CodePtr OpPC = PC;
11659 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11660 if (!CheckEnumValue<PT_Sint64>(S, OpPC, V0))
11661 return false;
11662 }
11663#if USE_TAILCALLS
11664 MUSTTAIL return InterpNext(S, PC);
11665#else
11666 return true;
11667#endif
11668}
11669PRESERVE_NONE
11670static bool Interp_CheckEnumValueUint64(InterpState &S, CodePtr &PC) {
11671 {
11672 CodePtr OpPC = PC;
11673 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11674 if (!CheckEnumValue<PT_Uint64>(S, OpPC, V0))
11675 return false;
11676 }
11677#if USE_TAILCALLS
11678 MUSTTAIL return InterpNext(S, PC);
11679#else
11680 return true;
11681#endif
11682}
11683PRESERVE_NONE
11684static bool Interp_CheckEnumValueIntAP(InterpState &S, CodePtr &PC) {
11685 {
11686 CodePtr OpPC = PC;
11687 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11688 if (!CheckEnumValue<PT_IntAP>(S, OpPC, V0))
11689 return false;
11690 }
11691#if USE_TAILCALLS
11692 MUSTTAIL return InterpNext(S, PC);
11693#else
11694 return true;
11695#endif
11696}
11697PRESERVE_NONE
11698static bool Interp_CheckEnumValueIntAPS(InterpState &S, CodePtr &PC) {
11699 {
11700 CodePtr OpPC = PC;
11701 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11702 if (!CheckEnumValue<PT_IntAPS>(S, OpPC, V0))
11703 return false;
11704 }
11705#if USE_TAILCALLS
11706 MUSTTAIL return InterpNext(S, PC);
11707#else
11708 return true;
11709#endif
11710}
11711PRESERVE_NONE
11712static bool Interp_CheckEnumValueBool(InterpState &S, CodePtr &PC) {
11713 {
11714 CodePtr OpPC = PC;
11715 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11716 if (!CheckEnumValue<PT_Bool>(S, OpPC, V0))
11717 return false;
11718 }
11719#if USE_TAILCALLS
11720 MUSTTAIL return InterpNext(S, PC);
11721#else
11722 return true;
11723#endif
11724}
11725#endif
11726#ifdef GET_DISASM
11727case OP_CheckEnumValueSint8:
11728 Text.Op = PrintName("CheckEnumValueSint8");
11729 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11730 break;
11731case OP_CheckEnumValueUint8:
11732 Text.Op = PrintName("CheckEnumValueUint8");
11733 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11734 break;
11735case OP_CheckEnumValueSint16:
11736 Text.Op = PrintName("CheckEnumValueSint16");
11737 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11738 break;
11739case OP_CheckEnumValueUint16:
11740 Text.Op = PrintName("CheckEnumValueUint16");
11741 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11742 break;
11743case OP_CheckEnumValueSint32:
11744 Text.Op = PrintName("CheckEnumValueSint32");
11745 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11746 break;
11747case OP_CheckEnumValueUint32:
11748 Text.Op = PrintName("CheckEnumValueUint32");
11749 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11750 break;
11751case OP_CheckEnumValueSint64:
11752 Text.Op = PrintName("CheckEnumValueSint64");
11753 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11754 break;
11755case OP_CheckEnumValueUint64:
11756 Text.Op = PrintName("CheckEnumValueUint64");
11757 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11758 break;
11759case OP_CheckEnumValueIntAP:
11760 Text.Op = PrintName("CheckEnumValueIntAP");
11761 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11762 break;
11763case OP_CheckEnumValueIntAPS:
11764 Text.Op = PrintName("CheckEnumValueIntAPS");
11765 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11766 break;
11767case OP_CheckEnumValueBool:
11768 Text.Op = PrintName("CheckEnumValueBool");
11769 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11770 break;
11771#endif
11772#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11773bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
11774bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
11775bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
11776bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
11777bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
11778bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
11779bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
11780bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
11781bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
11782bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
11783bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
11784#endif
11785#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11786[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
11787#endif
11788#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11789bool
11790#if defined(GET_EVAL_IMPL)
11791EvalEmitter
11792#else
11793ByteCodeEmitter
11794#endif
11795::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
11796 switch (T0) {
11797 case PT_Sint8:
11798 return emitCheckEnumValueSint8(A0, I);
11799 case PT_Uint8:
11800 return emitCheckEnumValueUint8(A0, I);
11801 case PT_Sint16:
11802 return emitCheckEnumValueSint16(A0, I);
11803 case PT_Uint16:
11804 return emitCheckEnumValueUint16(A0, I);
11805 case PT_Sint32:
11806 return emitCheckEnumValueSint32(A0, I);
11807 case PT_Uint32:
11808 return emitCheckEnumValueUint32(A0, I);
11809 case PT_Sint64:
11810 return emitCheckEnumValueSint64(A0, I);
11811 case PT_Uint64:
11812 return emitCheckEnumValueUint64(A0, I);
11813 case PT_IntAP:
11814 return emitCheckEnumValueIntAP(A0, I);
11815 case PT_IntAPS:
11816 return emitCheckEnumValueIntAPS(A0, I);
11817 case PT_Bool:
11818 return emitCheckEnumValueBool(A0, I);
11819 default: llvm_unreachable("invalid type: emitCheckEnumValue");
11820 }
11821 llvm_unreachable("invalid enum value");
11822}
11823#endif
11824#ifdef GET_LINK_IMPL
11825bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11826 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
11827}
11828bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11829 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
11830}
11831bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11832 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
11833}
11834bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11835 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
11836}
11837bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11838 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
11839}
11840bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11841 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
11842}
11843bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11844 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
11845}
11846bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11847 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
11848}
11849bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11850 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
11851}
11852bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11853 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
11854}
11855bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11856 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
11857}
11858#endif
11859#ifdef GET_EVAL_IMPL
11860bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11861 if (!isActive()) return true;
11862 CurrentSource = L;
11863 return CheckEnumValue<PT_Sint8>(S, OpPC, A0);
11864}
11865bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11866 if (!isActive()) return true;
11867 CurrentSource = L;
11868 return CheckEnumValue<PT_Uint8>(S, OpPC, A0);
11869}
11870bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11871 if (!isActive()) return true;
11872 CurrentSource = L;
11873 return CheckEnumValue<PT_Sint16>(S, OpPC, A0);
11874}
11875bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11876 if (!isActive()) return true;
11877 CurrentSource = L;
11878 return CheckEnumValue<PT_Uint16>(S, OpPC, A0);
11879}
11880bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11881 if (!isActive()) return true;
11882 CurrentSource = L;
11883 return CheckEnumValue<PT_Sint32>(S, OpPC, A0);
11884}
11885bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11886 if (!isActive()) return true;
11887 CurrentSource = L;
11888 return CheckEnumValue<PT_Uint32>(S, OpPC, A0);
11889}
11890bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11891 if (!isActive()) return true;
11892 CurrentSource = L;
11893 return CheckEnumValue<PT_Sint64>(S, OpPC, A0);
11894}
11895bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11896 if (!isActive()) return true;
11897 CurrentSource = L;
11898 return CheckEnumValue<PT_Uint64>(S, OpPC, A0);
11899}
11900bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11901 if (!isActive()) return true;
11902 CurrentSource = L;
11903 return CheckEnumValue<PT_IntAP>(S, OpPC, A0);
11904}
11905bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11906 if (!isActive()) return true;
11907 CurrentSource = L;
11908 return CheckEnumValue<PT_IntAPS>(S, OpPC, A0);
11909}
11910bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11911 if (!isActive()) return true;
11912 CurrentSource = L;
11913 return CheckEnumValue<PT_Bool>(S, OpPC, A0);
11914}
11915#endif
11916#ifdef GET_OPCODE_NAMES
11917OP_CheckFunctionDecl,
11918#endif
11919#ifdef GET_INTERPFN_LIST
11920&Interp_CheckFunctionDecl,
11921#endif
11922#ifdef GET_INTERPFN_DISPATCHERS
11923PRESERVE_NONE
11924static bool Interp_CheckFunctionDecl(InterpState &S, CodePtr &PC) {
11925 {
11926 CodePtr OpPC = PC;
11927 const auto V0 = ReadArg<const FunctionDecl *>(S, PC);
11928 if (!CheckFunctionDecl(S, OpPC, V0))
11929 return false;
11930 }
11931#if USE_TAILCALLS
11932 MUSTTAIL return InterpNext(S, PC);
11933#else
11934 return true;
11935#endif
11936}
11937#endif
11938#ifdef GET_DISASM
11939case OP_CheckFunctionDecl:
11940 Text.Op = PrintName("CheckFunctionDecl");
11941 Text.Args.push_back(printArg<const FunctionDecl *>(P, PC));
11942 break;
11943#endif
11944#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11945bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
11946#endif
11947#ifdef GET_LINK_IMPL
11948bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11949 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
11950}
11951#endif
11952#ifdef GET_EVAL_IMPL
11953bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11954 if (!isActive()) return true;
11955 CurrentSource = L;
11956 return CheckFunctionDecl(S, OpPC, A0);
11957}
11958#endif
11959#ifdef GET_OPCODE_NAMES
11960OP_CheckLiteralType,
11961#endif
11962#ifdef GET_INTERPFN_LIST
11963&Interp_CheckLiteralType,
11964#endif
11965#ifdef GET_INTERPFN_DISPATCHERS
11966PRESERVE_NONE
11967static bool Interp_CheckLiteralType(InterpState &S, CodePtr &PC) {
11968 {
11969 CodePtr OpPC = PC;
11970 const auto V0 = ReadArg<const Type *>(S, PC);
11971 if (!CheckLiteralType(S, OpPC, V0))
11972 return false;
11973 }
11974#if USE_TAILCALLS
11975 MUSTTAIL return InterpNext(S, PC);
11976#else
11977 return true;
11978#endif
11979}
11980#endif
11981#ifdef GET_DISASM
11982case OP_CheckLiteralType:
11983 Text.Op = PrintName("CheckLiteralType");
11984 Text.Args.push_back(printArg<const Type *>(P, PC));
11985 break;
11986#endif
11987#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11988bool emitCheckLiteralType( const Type * , SourceInfo);
11989#endif
11990#ifdef GET_LINK_IMPL
11991bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11992 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
11993}
11994#endif
11995#ifdef GET_EVAL_IMPL
11996bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11997 if (!isActive()) return true;
11998 CurrentSource = L;
11999 return CheckLiteralType(S, OpPC, A0);
12000}
12001#endif
12002#ifdef GET_OPCODE_NAMES
12003OP_CheckNewTypeMismatch,
12004#endif
12005#ifdef GET_INTERPFN_LIST
12006&Interp_CheckNewTypeMismatch,
12007#endif
12008#ifdef GET_INTERPFN_DISPATCHERS
12009PRESERVE_NONE
12010static bool Interp_CheckNewTypeMismatch(InterpState &S, CodePtr &PC) {
12011 {
12012 CodePtr OpPC = PC;
12013 const auto V0 = ReadArg<const Expr *>(S, PC);
12014 if (!CheckNewTypeMismatch(S, OpPC, V0))
12015 return false;
12016 }
12017#if USE_TAILCALLS
12018 MUSTTAIL return InterpNext(S, PC);
12019#else
12020 return true;
12021#endif
12022}
12023#endif
12024#ifdef GET_DISASM
12025case OP_CheckNewTypeMismatch:
12026 Text.Op = PrintName("CheckNewTypeMismatch");
12027 Text.Args.push_back(printArg<const Expr *>(P, PC));
12028 break;
12029#endif
12030#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12031bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
12032#endif
12033#ifdef GET_LINK_IMPL
12034bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
12035 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
12036}
12037#endif
12038#ifdef GET_EVAL_IMPL
12039bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
12040 if (!isActive()) return true;
12041 CurrentSource = L;
12042 return CheckNewTypeMismatch(S, OpPC, A0);
12043}
12044#endif
12045#ifdef GET_OPCODE_NAMES
12046OP_CheckNewTypeMismatchArraySint8,
12047OP_CheckNewTypeMismatchArrayUint8,
12048OP_CheckNewTypeMismatchArraySint16,
12049OP_CheckNewTypeMismatchArrayUint16,
12050OP_CheckNewTypeMismatchArraySint32,
12051OP_CheckNewTypeMismatchArrayUint32,
12052OP_CheckNewTypeMismatchArraySint64,
12053OP_CheckNewTypeMismatchArrayUint64,
12054OP_CheckNewTypeMismatchArrayIntAP,
12055OP_CheckNewTypeMismatchArrayIntAPS,
12056#endif
12057#ifdef GET_INTERPFN_LIST
12058&Interp_CheckNewTypeMismatchArraySint8,
12059&Interp_CheckNewTypeMismatchArrayUint8,
12060&Interp_CheckNewTypeMismatchArraySint16,
12061&Interp_CheckNewTypeMismatchArrayUint16,
12062&Interp_CheckNewTypeMismatchArraySint32,
12063&Interp_CheckNewTypeMismatchArrayUint32,
12064&Interp_CheckNewTypeMismatchArraySint64,
12065&Interp_CheckNewTypeMismatchArrayUint64,
12066&Interp_CheckNewTypeMismatchArrayIntAP,
12067&Interp_CheckNewTypeMismatchArrayIntAPS,
12068#endif
12069#ifdef GET_INTERPFN_DISPATCHERS
12070PRESERVE_NONE
12071static bool Interp_CheckNewTypeMismatchArraySint8(InterpState &S, CodePtr &PC) {
12072 {
12073 CodePtr OpPC = PC;
12074 const auto V0 = ReadArg<const Expr *>(S, PC);
12075 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0))
12076 return false;
12077 }
12078#if USE_TAILCALLS
12079 MUSTTAIL return InterpNext(S, PC);
12080#else
12081 return true;
12082#endif
12083}
12084PRESERVE_NONE
12085static bool Interp_CheckNewTypeMismatchArrayUint8(InterpState &S, CodePtr &PC) {
12086 {
12087 CodePtr OpPC = PC;
12088 const auto V0 = ReadArg<const Expr *>(S, PC);
12089 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0))
12090 return false;
12091 }
12092#if USE_TAILCALLS
12093 MUSTTAIL return InterpNext(S, PC);
12094#else
12095 return true;
12096#endif
12097}
12098PRESERVE_NONE
12099static bool Interp_CheckNewTypeMismatchArraySint16(InterpState &S, CodePtr &PC) {
12100 {
12101 CodePtr OpPC = PC;
12102 const auto V0 = ReadArg<const Expr *>(S, PC);
12103 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0))
12104 return false;
12105 }
12106#if USE_TAILCALLS
12107 MUSTTAIL return InterpNext(S, PC);
12108#else
12109 return true;
12110#endif
12111}
12112PRESERVE_NONE
12113static bool Interp_CheckNewTypeMismatchArrayUint16(InterpState &S, CodePtr &PC) {
12114 {
12115 CodePtr OpPC = PC;
12116 const auto V0 = ReadArg<const Expr *>(S, PC);
12117 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0))
12118 return false;
12119 }
12120#if USE_TAILCALLS
12121 MUSTTAIL return InterpNext(S, PC);
12122#else
12123 return true;
12124#endif
12125}
12126PRESERVE_NONE
12127static bool Interp_CheckNewTypeMismatchArraySint32(InterpState &S, CodePtr &PC) {
12128 {
12129 CodePtr OpPC = PC;
12130 const auto V0 = ReadArg<const Expr *>(S, PC);
12131 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0))
12132 return false;
12133 }
12134#if USE_TAILCALLS
12135 MUSTTAIL return InterpNext(S, PC);
12136#else
12137 return true;
12138#endif
12139}
12140PRESERVE_NONE
12141static bool Interp_CheckNewTypeMismatchArrayUint32(InterpState &S, CodePtr &PC) {
12142 {
12143 CodePtr OpPC = PC;
12144 const auto V0 = ReadArg<const Expr *>(S, PC);
12145 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0))
12146 return false;
12147 }
12148#if USE_TAILCALLS
12149 MUSTTAIL return InterpNext(S, PC);
12150#else
12151 return true;
12152#endif
12153}
12154PRESERVE_NONE
12155static bool Interp_CheckNewTypeMismatchArraySint64(InterpState &S, CodePtr &PC) {
12156 {
12157 CodePtr OpPC = PC;
12158 const auto V0 = ReadArg<const Expr *>(S, PC);
12159 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0))
12160 return false;
12161 }
12162#if USE_TAILCALLS
12163 MUSTTAIL return InterpNext(S, PC);
12164#else
12165 return true;
12166#endif
12167}
12168PRESERVE_NONE
12169static bool Interp_CheckNewTypeMismatchArrayUint64(InterpState &S, CodePtr &PC) {
12170 {
12171 CodePtr OpPC = PC;
12172 const auto V0 = ReadArg<const Expr *>(S, PC);
12173 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0))
12174 return false;
12175 }
12176#if USE_TAILCALLS
12177 MUSTTAIL return InterpNext(S, PC);
12178#else
12179 return true;
12180#endif
12181}
12182PRESERVE_NONE
12183static bool Interp_CheckNewTypeMismatchArrayIntAP(InterpState &S, CodePtr &PC) {
12184 {
12185 CodePtr OpPC = PC;
12186 const auto V0 = ReadArg<const Expr *>(S, PC);
12187 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0))
12188 return false;
12189 }
12190#if USE_TAILCALLS
12191 MUSTTAIL return InterpNext(S, PC);
12192#else
12193 return true;
12194#endif
12195}
12196PRESERVE_NONE
12197static bool Interp_CheckNewTypeMismatchArrayIntAPS(InterpState &S, CodePtr &PC) {
12198 {
12199 CodePtr OpPC = PC;
12200 const auto V0 = ReadArg<const Expr *>(S, PC);
12201 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0))
12202 return false;
12203 }
12204#if USE_TAILCALLS
12205 MUSTTAIL return InterpNext(S, PC);
12206#else
12207 return true;
12208#endif
12209}
12210#endif
12211#ifdef GET_DISASM
12212case OP_CheckNewTypeMismatchArraySint8:
12213 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
12214 Text.Args.push_back(printArg<const Expr *>(P, PC));
12215 break;
12216case OP_CheckNewTypeMismatchArrayUint8:
12217 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
12218 Text.Args.push_back(printArg<const Expr *>(P, PC));
12219 break;
12220case OP_CheckNewTypeMismatchArraySint16:
12221 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
12222 Text.Args.push_back(printArg<const Expr *>(P, PC));
12223 break;
12224case OP_CheckNewTypeMismatchArrayUint16:
12225 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
12226 Text.Args.push_back(printArg<const Expr *>(P, PC));
12227 break;
12228case OP_CheckNewTypeMismatchArraySint32:
12229 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
12230 Text.Args.push_back(printArg<const Expr *>(P, PC));
12231 break;
12232case OP_CheckNewTypeMismatchArrayUint32:
12233 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
12234 Text.Args.push_back(printArg<const Expr *>(P, PC));
12235 break;
12236case OP_CheckNewTypeMismatchArraySint64:
12237 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
12238 Text.Args.push_back(printArg<const Expr *>(P, PC));
12239 break;
12240case OP_CheckNewTypeMismatchArrayUint64:
12241 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
12242 Text.Args.push_back(printArg<const Expr *>(P, PC));
12243 break;
12244case OP_CheckNewTypeMismatchArrayIntAP:
12245 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
12246 Text.Args.push_back(printArg<const Expr *>(P, PC));
12247 break;
12248case OP_CheckNewTypeMismatchArrayIntAPS:
12249 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
12250 Text.Args.push_back(printArg<const Expr *>(P, PC));
12251 break;
12252#endif
12253#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12254bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
12255bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
12256bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
12257bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
12258bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
12259bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
12260bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
12261bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
12262bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
12263bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
12264#endif
12265#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12266[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
12267#endif
12268#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12269bool
12270#if defined(GET_EVAL_IMPL)
12271EvalEmitter
12272#else
12273ByteCodeEmitter
12274#endif
12275::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
12276 switch (T0) {
12277 case PT_Sint8:
12278 return emitCheckNewTypeMismatchArraySint8(A0, I);
12279 case PT_Uint8:
12280 return emitCheckNewTypeMismatchArrayUint8(A0, I);
12281 case PT_Sint16:
12282 return emitCheckNewTypeMismatchArraySint16(A0, I);
12283 case PT_Uint16:
12284 return emitCheckNewTypeMismatchArrayUint16(A0, I);
12285 case PT_Sint32:
12286 return emitCheckNewTypeMismatchArraySint32(A0, I);
12287 case PT_Uint32:
12288 return emitCheckNewTypeMismatchArrayUint32(A0, I);
12289 case PT_Sint64:
12290 return emitCheckNewTypeMismatchArraySint64(A0, I);
12291 case PT_Uint64:
12292 return emitCheckNewTypeMismatchArrayUint64(A0, I);
12293 case PT_IntAP:
12294 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
12295 case PT_IntAPS:
12296 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
12297 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
12298 }
12299 llvm_unreachable("invalid enum value");
12300}
12301#endif
12302#ifdef GET_LINK_IMPL
12303bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12304 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
12305}
12306bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12307 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
12308}
12309bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12310 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
12311}
12312bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12313 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
12314}
12315bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12316 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
12317}
12318bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12319 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
12320}
12321bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12322 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
12323}
12324bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12325 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
12326}
12327bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12328 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
12329}
12330bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12331 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
12332}
12333#endif
12334#ifdef GET_EVAL_IMPL
12335bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12336 if (!isActive()) return true;
12337 CurrentSource = L;
12338 return CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, A0);
12339}
12340bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12341 if (!isActive()) return true;
12342 CurrentSource = L;
12343 return CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, A0);
12344}
12345bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12346 if (!isActive()) return true;
12347 CurrentSource = L;
12348 return CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, A0);
12349}
12350bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12351 if (!isActive()) return true;
12352 CurrentSource = L;
12353 return CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, A0);
12354}
12355bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12356 if (!isActive()) return true;
12357 CurrentSource = L;
12358 return CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, A0);
12359}
12360bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12361 if (!isActive()) return true;
12362 CurrentSource = L;
12363 return CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, A0);
12364}
12365bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12366 if (!isActive()) return true;
12367 CurrentSource = L;
12368 return CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, A0);
12369}
12370bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12371 if (!isActive()) return true;
12372 CurrentSource = L;
12373 return CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, A0);
12374}
12375bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12376 if (!isActive()) return true;
12377 CurrentSource = L;
12378 return CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, A0);
12379}
12380bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12381 if (!isActive()) return true;
12382 CurrentSource = L;
12383 return CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, A0);
12384}
12385#endif
12386#ifdef GET_OPCODE_NAMES
12387OP_CheckNonNullArgPtr,
12388OP_CheckNonNullArgMemberPtr,
12389#endif
12390#ifdef GET_INTERPFN_LIST
12391&Interp_CheckNonNullArgPtr,
12392&Interp_CheckNonNullArgMemberPtr,
12393#endif
12394#ifdef GET_INTERPFN_DISPATCHERS
12395PRESERVE_NONE
12396static bool Interp_CheckNonNullArgPtr(InterpState &S, CodePtr &PC) {
12397 if (!CheckNonNullArg<PT_Ptr>(S, PC))
12398 return false;
12399#if USE_TAILCALLS
12400 MUSTTAIL return InterpNext(S, PC);
12401#else
12402 return true;
12403#endif
12404}
12405PRESERVE_NONE
12406static bool Interp_CheckNonNullArgMemberPtr(InterpState &S, CodePtr &PC) {
12407 if (!CheckNonNullArg<PT_MemberPtr>(S, PC))
12408 return false;
12409#if USE_TAILCALLS
12410 MUSTTAIL return InterpNext(S, PC);
12411#else
12412 return true;
12413#endif
12414}
12415#endif
12416#ifdef GET_DISASM
12417case OP_CheckNonNullArgPtr:
12418 Text.Op = PrintName("CheckNonNullArgPtr");
12419 break;
12420case OP_CheckNonNullArgMemberPtr:
12421 Text.Op = PrintName("CheckNonNullArgMemberPtr");
12422 break;
12423#endif
12424#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12425bool emitCheckNonNullArgPtr(SourceInfo);
12426bool emitCheckNonNullArgMemberPtr(SourceInfo);
12427#endif
12428#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12429[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
12430#endif
12431#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12432bool
12433#if defined(GET_EVAL_IMPL)
12434EvalEmitter
12435#else
12436ByteCodeEmitter
12437#endif
12438::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
12439 switch (T0) {
12440 case PT_Ptr:
12441 return emitCheckNonNullArgPtr(I);
12442 case PT_MemberPtr:
12443 return emitCheckNonNullArgMemberPtr(I);
12444 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
12445 }
12446 llvm_unreachable("invalid enum value");
12447}
12448#endif
12449#ifdef GET_LINK_IMPL
12450bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12451 return emitOp<>(OP_CheckNonNullArgPtr, L);
12452}
12453bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12454 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
12455}
12456#endif
12457#ifdef GET_EVAL_IMPL
12458bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12459 if (!isActive()) return true;
12460 CurrentSource = L;
12461 return CheckNonNullArg<PT_Ptr>(S, OpPC);
12462}
12463bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12464 if (!isActive()) return true;
12465 CurrentSource = L;
12466 return CheckNonNullArg<PT_MemberPtr>(S, OpPC);
12467}
12468#endif
12469#ifdef GET_OPCODE_NAMES
12470OP_CheckNull,
12471#endif
12472#ifdef GET_INTERPFN_LIST
12473&Interp_CheckNull,
12474#endif
12475#ifdef GET_INTERPFN_DISPATCHERS
12476PRESERVE_NONE
12477static bool Interp_CheckNull(InterpState &S, CodePtr &PC) {
12478 if (!CheckNull(S, PC))
12479 return false;
12480#if USE_TAILCALLS
12481 MUSTTAIL return InterpNext(S, PC);
12482#else
12483 return true;
12484#endif
12485}
12486#endif
12487#ifdef GET_DISASM
12488case OP_CheckNull:
12489 Text.Op = PrintName("CheckNull");
12490 break;
12491#endif
12492#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12493bool emitCheckNull(SourceInfo);
12494#endif
12495#ifdef GET_LINK_IMPL
12496bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
12497 return emitOp<>(OP_CheckNull, L);
12498}
12499#endif
12500#ifdef GET_EVAL_IMPL
12501bool EvalEmitter::emitCheckNull(SourceInfo L) {
12502 if (!isActive()) return true;
12503 CurrentSource = L;
12504 return CheckNull(S, OpPC);
12505}
12506#endif
12507#ifdef GET_OPCODE_NAMES
12508OP_CheckPseudoDtor,
12509#endif
12510#ifdef GET_INTERPFN_LIST
12511&Interp_CheckPseudoDtor,
12512#endif
12513#ifdef GET_INTERPFN_DISPATCHERS
12514PRESERVE_NONE
12515static bool Interp_CheckPseudoDtor(InterpState &S, CodePtr &PC) {
12516 if (!CheckPseudoDtor(S, PC))
12517 return false;
12518#if USE_TAILCALLS
12519 MUSTTAIL return InterpNext(S, PC);
12520#else
12521 return true;
12522#endif
12523}
12524#endif
12525#ifdef GET_DISASM
12526case OP_CheckPseudoDtor:
12527 Text.Op = PrintName("CheckPseudoDtor");
12528 break;
12529#endif
12530#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12531bool emitCheckPseudoDtor(SourceInfo);
12532#endif
12533#ifdef GET_LINK_IMPL
12534bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
12535 return emitOp<>(OP_CheckPseudoDtor, L);
12536}
12537#endif
12538#ifdef GET_EVAL_IMPL
12539bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
12540 if (!isActive()) return true;
12541 CurrentSource = L;
12542 return CheckPseudoDtor(S, OpPC);
12543}
12544#endif
12545#ifdef GET_OPCODE_NAMES
12546OP_CompSint8,
12547OP_CompUint8,
12548OP_CompSint16,
12549OP_CompUint16,
12550OP_CompSint32,
12551OP_CompUint32,
12552OP_CompSint64,
12553OP_CompUint64,
12554OP_CompIntAP,
12555OP_CompIntAPS,
12556#endif
12557#ifdef GET_INTERPFN_LIST
12558&Interp_CompSint8,
12559&Interp_CompUint8,
12560&Interp_CompSint16,
12561&Interp_CompUint16,
12562&Interp_CompSint32,
12563&Interp_CompUint32,
12564&Interp_CompSint64,
12565&Interp_CompUint64,
12566&Interp_CompIntAP,
12567&Interp_CompIntAPS,
12568#endif
12569#ifdef GET_INTERPFN_DISPATCHERS
12570PRESERVE_NONE
12571static bool Interp_CompSint8(InterpState &S, CodePtr &PC) {
12572 if (!Comp<PT_Sint8>(S, PC))
12573 return false;
12574#if USE_TAILCALLS
12575 MUSTTAIL return InterpNext(S, PC);
12576#else
12577 return true;
12578#endif
12579}
12580PRESERVE_NONE
12581static bool Interp_CompUint8(InterpState &S, CodePtr &PC) {
12582 if (!Comp<PT_Uint8>(S, PC))
12583 return false;
12584#if USE_TAILCALLS
12585 MUSTTAIL return InterpNext(S, PC);
12586#else
12587 return true;
12588#endif
12589}
12590PRESERVE_NONE
12591static bool Interp_CompSint16(InterpState &S, CodePtr &PC) {
12592 if (!Comp<PT_Sint16>(S, PC))
12593 return false;
12594#if USE_TAILCALLS
12595 MUSTTAIL return InterpNext(S, PC);
12596#else
12597 return true;
12598#endif
12599}
12600PRESERVE_NONE
12601static bool Interp_CompUint16(InterpState &S, CodePtr &PC) {
12602 if (!Comp<PT_Uint16>(S, PC))
12603 return false;
12604#if USE_TAILCALLS
12605 MUSTTAIL return InterpNext(S, PC);
12606#else
12607 return true;
12608#endif
12609}
12610PRESERVE_NONE
12611static bool Interp_CompSint32(InterpState &S, CodePtr &PC) {
12612 if (!Comp<PT_Sint32>(S, PC))
12613 return false;
12614#if USE_TAILCALLS
12615 MUSTTAIL return InterpNext(S, PC);
12616#else
12617 return true;
12618#endif
12619}
12620PRESERVE_NONE
12621static bool Interp_CompUint32(InterpState &S, CodePtr &PC) {
12622 if (!Comp<PT_Uint32>(S, PC))
12623 return false;
12624#if USE_TAILCALLS
12625 MUSTTAIL return InterpNext(S, PC);
12626#else
12627 return true;
12628#endif
12629}
12630PRESERVE_NONE
12631static bool Interp_CompSint64(InterpState &S, CodePtr &PC) {
12632 if (!Comp<PT_Sint64>(S, PC))
12633 return false;
12634#if USE_TAILCALLS
12635 MUSTTAIL return InterpNext(S, PC);
12636#else
12637 return true;
12638#endif
12639}
12640PRESERVE_NONE
12641static bool Interp_CompUint64(InterpState &S, CodePtr &PC) {
12642 if (!Comp<PT_Uint64>(S, PC))
12643 return false;
12644#if USE_TAILCALLS
12645 MUSTTAIL return InterpNext(S, PC);
12646#else
12647 return true;
12648#endif
12649}
12650PRESERVE_NONE
12651static bool Interp_CompIntAP(InterpState &S, CodePtr &PC) {
12652 if (!Comp<PT_IntAP>(S, PC))
12653 return false;
12654#if USE_TAILCALLS
12655 MUSTTAIL return InterpNext(S, PC);
12656#else
12657 return true;
12658#endif
12659}
12660PRESERVE_NONE
12661static bool Interp_CompIntAPS(InterpState &S, CodePtr &PC) {
12662 if (!Comp<PT_IntAPS>(S, PC))
12663 return false;
12664#if USE_TAILCALLS
12665 MUSTTAIL return InterpNext(S, PC);
12666#else
12667 return true;
12668#endif
12669}
12670#endif
12671#ifdef GET_DISASM
12672case OP_CompSint8:
12673 Text.Op = PrintName("CompSint8");
12674 break;
12675case OP_CompUint8:
12676 Text.Op = PrintName("CompUint8");
12677 break;
12678case OP_CompSint16:
12679 Text.Op = PrintName("CompSint16");
12680 break;
12681case OP_CompUint16:
12682 Text.Op = PrintName("CompUint16");
12683 break;
12684case OP_CompSint32:
12685 Text.Op = PrintName("CompSint32");
12686 break;
12687case OP_CompUint32:
12688 Text.Op = PrintName("CompUint32");
12689 break;
12690case OP_CompSint64:
12691 Text.Op = PrintName("CompSint64");
12692 break;
12693case OP_CompUint64:
12694 Text.Op = PrintName("CompUint64");
12695 break;
12696case OP_CompIntAP:
12697 Text.Op = PrintName("CompIntAP");
12698 break;
12699case OP_CompIntAPS:
12700 Text.Op = PrintName("CompIntAPS");
12701 break;
12702#endif
12703#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12704bool emitCompSint8(SourceInfo);
12705bool emitCompUint8(SourceInfo);
12706bool emitCompSint16(SourceInfo);
12707bool emitCompUint16(SourceInfo);
12708bool emitCompSint32(SourceInfo);
12709bool emitCompUint32(SourceInfo);
12710bool emitCompSint64(SourceInfo);
12711bool emitCompUint64(SourceInfo);
12712bool emitCompIntAP(SourceInfo);
12713bool emitCompIntAPS(SourceInfo);
12714#endif
12715#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12716[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
12717#endif
12718#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12719bool
12720#if defined(GET_EVAL_IMPL)
12721EvalEmitter
12722#else
12723ByteCodeEmitter
12724#endif
12725::emitComp(PrimType T0, SourceInfo I) {
12726 switch (T0) {
12727 case PT_Sint8:
12728 return emitCompSint8(I);
12729 case PT_Uint8:
12730 return emitCompUint8(I);
12731 case PT_Sint16:
12732 return emitCompSint16(I);
12733 case PT_Uint16:
12734 return emitCompUint16(I);
12735 case PT_Sint32:
12736 return emitCompSint32(I);
12737 case PT_Uint32:
12738 return emitCompUint32(I);
12739 case PT_Sint64:
12740 return emitCompSint64(I);
12741 case PT_Uint64:
12742 return emitCompUint64(I);
12743 case PT_IntAP:
12744 return emitCompIntAP(I);
12745 case PT_IntAPS:
12746 return emitCompIntAPS(I);
12747 default: llvm_unreachable("invalid type: emitComp");
12748 }
12749 llvm_unreachable("invalid enum value");
12750}
12751#endif
12752#ifdef GET_LINK_IMPL
12753bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
12754 return emitOp<>(OP_CompSint8, L);
12755}
12756bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
12757 return emitOp<>(OP_CompUint8, L);
12758}
12759bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
12760 return emitOp<>(OP_CompSint16, L);
12761}
12762bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
12763 return emitOp<>(OP_CompUint16, L);
12764}
12765bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
12766 return emitOp<>(OP_CompSint32, L);
12767}
12768bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
12769 return emitOp<>(OP_CompUint32, L);
12770}
12771bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
12772 return emitOp<>(OP_CompSint64, L);
12773}
12774bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
12775 return emitOp<>(OP_CompUint64, L);
12776}
12777bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
12778 return emitOp<>(OP_CompIntAP, L);
12779}
12780bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
12781 return emitOp<>(OP_CompIntAPS, L);
12782}
12783#endif
12784#ifdef GET_EVAL_IMPL
12785bool EvalEmitter::emitCompSint8(SourceInfo L) {
12786 if (!isActive()) return true;
12787 CurrentSource = L;
12788 return Comp<PT_Sint8>(S, OpPC);
12789}
12790bool EvalEmitter::emitCompUint8(SourceInfo L) {
12791 if (!isActive()) return true;
12792 CurrentSource = L;
12793 return Comp<PT_Uint8>(S, OpPC);
12794}
12795bool EvalEmitter::emitCompSint16(SourceInfo L) {
12796 if (!isActive()) return true;
12797 CurrentSource = L;
12798 return Comp<PT_Sint16>(S, OpPC);
12799}
12800bool EvalEmitter::emitCompUint16(SourceInfo L) {
12801 if (!isActive()) return true;
12802 CurrentSource = L;
12803 return Comp<PT_Uint16>(S, OpPC);
12804}
12805bool EvalEmitter::emitCompSint32(SourceInfo L) {
12806 if (!isActive()) return true;
12807 CurrentSource = L;
12808 return Comp<PT_Sint32>(S, OpPC);
12809}
12810bool EvalEmitter::emitCompUint32(SourceInfo L) {
12811 if (!isActive()) return true;
12812 CurrentSource = L;
12813 return Comp<PT_Uint32>(S, OpPC);
12814}
12815bool EvalEmitter::emitCompSint64(SourceInfo L) {
12816 if (!isActive()) return true;
12817 CurrentSource = L;
12818 return Comp<PT_Sint64>(S, OpPC);
12819}
12820bool EvalEmitter::emitCompUint64(SourceInfo L) {
12821 if (!isActive()) return true;
12822 CurrentSource = L;
12823 return Comp<PT_Uint64>(S, OpPC);
12824}
12825bool EvalEmitter::emitCompIntAP(SourceInfo L) {
12826 if (!isActive()) return true;
12827 CurrentSource = L;
12828 return Comp<PT_IntAP>(S, OpPC);
12829}
12830bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
12831 if (!isActive()) return true;
12832 CurrentSource = L;
12833 return Comp<PT_IntAPS>(S, OpPC);
12834}
12835#endif
12836#ifdef GET_OPCODE_NAMES
12837OP_ConstBool,
12838#endif
12839#ifdef GET_INTERPFN_LIST
12840&Interp_ConstBool,
12841#endif
12842#ifdef GET_INTERPFN_DISPATCHERS
12843PRESERVE_NONE
12844static bool Interp_ConstBool(InterpState &S, CodePtr &PC) {
12845 {
12846 CodePtr OpPC = PC;
12847 const auto V0 = ReadArg<bool>(S, PC);
12848 if (!Const<PT_Bool>(S, OpPC, V0))
12849 return false;
12850 }
12851#if USE_TAILCALLS
12852 MUSTTAIL return InterpNext(S, PC);
12853#else
12854 return true;
12855#endif
12856}
12857#endif
12858#ifdef GET_DISASM
12859case OP_ConstBool:
12860 Text.Op = PrintName("ConstBool");
12861 Text.Args.push_back(printArg<bool>(P, PC));
12862 break;
12863#endif
12864#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12865bool emitConstBool( bool , SourceInfo);
12866#endif
12867#ifdef GET_LINK_IMPL
12868bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
12869 return emitOp<bool>(OP_ConstBool, A0, L);
12870}
12871#endif
12872#ifdef GET_EVAL_IMPL
12873bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
12874 if (!isActive()) return true;
12875 CurrentSource = L;
12876 return Const<PT_Bool>(S, OpPC, A0);
12877}
12878#endif
12879#ifdef GET_OPCODE_NAMES
12880OP_ConstFixedPoint,
12881#endif
12882#ifdef GET_INTERPFN_LIST
12883&Interp_ConstFixedPoint,
12884#endif
12885#ifdef GET_INTERPFN_DISPATCHERS
12886PRESERVE_NONE
12887static bool Interp_ConstFixedPoint(InterpState &S, CodePtr &PC) {
12888 {
12889 CodePtr OpPC = PC;
12890 const auto &V0 = ReadArg<FixedPoint>(S, PC);
12891 if (!Const<PT_FixedPoint>(S, OpPC, V0))
12892 return false;
12893 }
12894#if USE_TAILCALLS
12895 MUSTTAIL return InterpNext(S, PC);
12896#else
12897 return true;
12898#endif
12899}
12900#endif
12901#ifdef GET_DISASM
12902case OP_ConstFixedPoint:
12903 Text.Op = PrintName("ConstFixedPoint");
12904 Text.Args.push_back(printArg<FixedPoint>(P, PC));
12905 break;
12906#endif
12907#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12908bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
12909#endif
12910#ifdef GET_LINK_IMPL
12911bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12912 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
12913}
12914#endif
12915#ifdef GET_EVAL_IMPL
12916bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12917 if (!isActive()) return true;
12918 CurrentSource = L;
12919 return Const<PT_FixedPoint>(S, OpPC, A0);
12920}
12921#endif
12922#ifdef GET_OPCODE_NAMES
12923OP_ConstFloat,
12924#endif
12925#ifdef GET_INTERPFN_LIST
12926&Interp_ConstFloat,
12927#endif
12928#ifdef GET_INTERPFN_DISPATCHERS
12929PRESERVE_NONE
12930static bool Interp_ConstFloat(InterpState &S, CodePtr &PC) {
12931 {
12932 CodePtr OpPC = PC;
12933 const auto &V0 = ReadArg<Floating>(S, PC);
12934 if (!ConstFloat(S, OpPC, V0))
12935 return false;
12936 }
12937#if USE_TAILCALLS
12938 MUSTTAIL return InterpNext(S, PC);
12939#else
12940 return true;
12941#endif
12942}
12943#endif
12944#ifdef GET_DISASM
12945case OP_ConstFloat:
12946 Text.Op = PrintName("ConstFloat");
12947 Text.Args.push_back(printArg<Floating>(P, PC));
12948 break;
12949#endif
12950#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12951bool emitConstFloat(const Floating &, SourceInfo);
12952#endif
12953#ifdef GET_LINK_IMPL
12954bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12955 return emitOp<Floating>(OP_ConstFloat, A0, L);
12956}
12957#endif
12958#ifdef GET_EVAL_IMPL
12959bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12960 if (!isActive()) return true;
12961 CurrentSource = L;
12962 return ConstFloat(S, OpPC, A0);
12963}
12964#endif
12965#ifdef GET_OPCODE_NAMES
12966OP_ConstIntAP,
12967#endif
12968#ifdef GET_INTERPFN_LIST
12969&Interp_ConstIntAP,
12970#endif
12971#ifdef GET_INTERPFN_DISPATCHERS
12972PRESERVE_NONE
12973static bool Interp_ConstIntAP(InterpState &S, CodePtr &PC) {
12974 {
12975 CodePtr OpPC = PC;
12976 const auto &V0 = ReadArg<IntegralAP<false>>(S, PC);
12977 if (!Const<PT_IntAP>(S, OpPC, V0))
12978 return false;
12979 }
12980#if USE_TAILCALLS
12981 MUSTTAIL return InterpNext(S, PC);
12982#else
12983 return true;
12984#endif
12985}
12986#endif
12987#ifdef GET_DISASM
12988case OP_ConstIntAP:
12989 Text.Op = PrintName("ConstIntAP");
12990 Text.Args.push_back(printArg<IntegralAP<false>>(P, PC));
12991 break;
12992#endif
12993#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12994bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
12995#endif
12996#ifdef GET_LINK_IMPL
12997bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12998 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
12999}
13000#endif
13001#ifdef GET_EVAL_IMPL
13002bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
13003 if (!isActive()) return true;
13004 CurrentSource = L;
13005 return Const<PT_IntAP>(S, OpPC, A0);
13006}
13007#endif
13008#ifdef GET_OPCODE_NAMES
13009OP_ConstIntAPS,
13010#endif
13011#ifdef GET_INTERPFN_LIST
13012&Interp_ConstIntAPS,
13013#endif
13014#ifdef GET_INTERPFN_DISPATCHERS
13015PRESERVE_NONE
13016static bool Interp_ConstIntAPS(InterpState &S, CodePtr &PC) {
13017 {
13018 CodePtr OpPC = PC;
13019 const auto &V0 = ReadArg<IntegralAP<true>>(S, PC);
13020 if (!Const<PT_IntAPS>(S, OpPC, V0))
13021 return false;
13022 }
13023#if USE_TAILCALLS
13024 MUSTTAIL return InterpNext(S, PC);
13025#else
13026 return true;
13027#endif
13028}
13029#endif
13030#ifdef GET_DISASM
13031case OP_ConstIntAPS:
13032 Text.Op = PrintName("ConstIntAPS");
13033 Text.Args.push_back(printArg<IntegralAP<true>>(P, PC));
13034 break;
13035#endif
13036#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13037bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
13038#endif
13039#ifdef GET_LINK_IMPL
13040bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
13041 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
13042}
13043#endif
13044#ifdef GET_EVAL_IMPL
13045bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
13046 if (!isActive()) return true;
13047 CurrentSource = L;
13048 return Const<PT_IntAPS>(S, OpPC, A0);
13049}
13050#endif
13051#ifdef GET_OPCODE_NAMES
13052OP_ConstSint8,
13053#endif
13054#ifdef GET_INTERPFN_LIST
13055&Interp_ConstSint8,
13056#endif
13057#ifdef GET_INTERPFN_DISPATCHERS
13058PRESERVE_NONE
13059static bool Interp_ConstSint8(InterpState &S, CodePtr &PC) {
13060 {
13061 CodePtr OpPC = PC;
13062 const auto V0 = ReadArg<int8_t>(S, PC);
13063 if (!Const<PT_Sint8>(S, OpPC, V0))
13064 return false;
13065 }
13066#if USE_TAILCALLS
13067 MUSTTAIL return InterpNext(S, PC);
13068#else
13069 return true;
13070#endif
13071}
13072#endif
13073#ifdef GET_DISASM
13074case OP_ConstSint8:
13075 Text.Op = PrintName("ConstSint8");
13076 Text.Args.push_back(printArg<int8_t>(P, PC));
13077 break;
13078#endif
13079#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13080bool emitConstSint8( int8_t , SourceInfo);
13081#endif
13082#ifdef GET_LINK_IMPL
13083bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
13084 return emitOp<int8_t>(OP_ConstSint8, A0, L);
13085}
13086#endif
13087#ifdef GET_EVAL_IMPL
13088bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
13089 if (!isActive()) return true;
13090 CurrentSource = L;
13091 return Const<PT_Sint8>(S, OpPC, A0);
13092}
13093#endif
13094#ifdef GET_OPCODE_NAMES
13095OP_ConstSint16,
13096#endif
13097#ifdef GET_INTERPFN_LIST
13098&Interp_ConstSint16,
13099#endif
13100#ifdef GET_INTERPFN_DISPATCHERS
13101PRESERVE_NONE
13102static bool Interp_ConstSint16(InterpState &S, CodePtr &PC) {
13103 {
13104 CodePtr OpPC = PC;
13105 const auto V0 = ReadArg<int16_t>(S, PC);
13106 if (!Const<PT_Sint16>(S, OpPC, V0))
13107 return false;
13108 }
13109#if USE_TAILCALLS
13110 MUSTTAIL return InterpNext(S, PC);
13111#else
13112 return true;
13113#endif
13114}
13115#endif
13116#ifdef GET_DISASM
13117case OP_ConstSint16:
13118 Text.Op = PrintName("ConstSint16");
13119 Text.Args.push_back(printArg<int16_t>(P, PC));
13120 break;
13121#endif
13122#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13123bool emitConstSint16( int16_t , SourceInfo);
13124#endif
13125#ifdef GET_LINK_IMPL
13126bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
13127 return emitOp<int16_t>(OP_ConstSint16, A0, L);
13128}
13129#endif
13130#ifdef GET_EVAL_IMPL
13131bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
13132 if (!isActive()) return true;
13133 CurrentSource = L;
13134 return Const<PT_Sint16>(S, OpPC, A0);
13135}
13136#endif
13137#ifdef GET_OPCODE_NAMES
13138OP_ConstSint32,
13139#endif
13140#ifdef GET_INTERPFN_LIST
13141&Interp_ConstSint32,
13142#endif
13143#ifdef GET_INTERPFN_DISPATCHERS
13144PRESERVE_NONE
13145static bool Interp_ConstSint32(InterpState &S, CodePtr &PC) {
13146 {
13147 CodePtr OpPC = PC;
13148 const auto V0 = ReadArg<int32_t>(S, PC);
13149 if (!Const<PT_Sint32>(S, OpPC, V0))
13150 return false;
13151 }
13152#if USE_TAILCALLS
13153 MUSTTAIL return InterpNext(S, PC);
13154#else
13155 return true;
13156#endif
13157}
13158#endif
13159#ifdef GET_DISASM
13160case OP_ConstSint32:
13161 Text.Op = PrintName("ConstSint32");
13162 Text.Args.push_back(printArg<int32_t>(P, PC));
13163 break;
13164#endif
13165#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13166bool emitConstSint32( int32_t , SourceInfo);
13167#endif
13168#ifdef GET_LINK_IMPL
13169bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
13170 return emitOp<int32_t>(OP_ConstSint32, A0, L);
13171}
13172#endif
13173#ifdef GET_EVAL_IMPL
13174bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
13175 if (!isActive()) return true;
13176 CurrentSource = L;
13177 return Const<PT_Sint32>(S, OpPC, A0);
13178}
13179#endif
13180#ifdef GET_OPCODE_NAMES
13181OP_ConstSint64,
13182#endif
13183#ifdef GET_INTERPFN_LIST
13184&Interp_ConstSint64,
13185#endif
13186#ifdef GET_INTERPFN_DISPATCHERS
13187PRESERVE_NONE
13188static bool Interp_ConstSint64(InterpState &S, CodePtr &PC) {
13189 {
13190 CodePtr OpPC = PC;
13191 const auto V0 = ReadArg<int64_t>(S, PC);
13192 if (!Const<PT_Sint64>(S, OpPC, V0))
13193 return false;
13194 }
13195#if USE_TAILCALLS
13196 MUSTTAIL return InterpNext(S, PC);
13197#else
13198 return true;
13199#endif
13200}
13201#endif
13202#ifdef GET_DISASM
13203case OP_ConstSint64:
13204 Text.Op = PrintName("ConstSint64");
13205 Text.Args.push_back(printArg<int64_t>(P, PC));
13206 break;
13207#endif
13208#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13209bool emitConstSint64( int64_t , SourceInfo);
13210#endif
13211#ifdef GET_LINK_IMPL
13212bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
13213 return emitOp<int64_t>(OP_ConstSint64, A0, L);
13214}
13215#endif
13216#ifdef GET_EVAL_IMPL
13217bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
13218 if (!isActive()) return true;
13219 CurrentSource = L;
13220 return Const<PT_Sint64>(S, OpPC, A0);
13221}
13222#endif
13223#ifdef GET_OPCODE_NAMES
13224OP_ConstUint8,
13225#endif
13226#ifdef GET_INTERPFN_LIST
13227&Interp_ConstUint8,
13228#endif
13229#ifdef GET_INTERPFN_DISPATCHERS
13230PRESERVE_NONE
13231static bool Interp_ConstUint8(InterpState &S, CodePtr &PC) {
13232 {
13233 CodePtr OpPC = PC;
13234 const auto V0 = ReadArg<uint8_t>(S, PC);
13235 if (!Const<PT_Uint8>(S, OpPC, V0))
13236 return false;
13237 }
13238#if USE_TAILCALLS
13239 MUSTTAIL return InterpNext(S, PC);
13240#else
13241 return true;
13242#endif
13243}
13244#endif
13245#ifdef GET_DISASM
13246case OP_ConstUint8:
13247 Text.Op = PrintName("ConstUint8");
13248 Text.Args.push_back(printArg<uint8_t>(P, PC));
13249 break;
13250#endif
13251#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13252bool emitConstUint8( uint8_t , SourceInfo);
13253#endif
13254#ifdef GET_LINK_IMPL
13255bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13256 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
13257}
13258#endif
13259#ifdef GET_EVAL_IMPL
13260bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13261 if (!isActive()) return true;
13262 CurrentSource = L;
13263 return Const<PT_Uint8>(S, OpPC, A0);
13264}
13265#endif
13266#ifdef GET_OPCODE_NAMES
13267OP_ConstUint16,
13268#endif
13269#ifdef GET_INTERPFN_LIST
13270&Interp_ConstUint16,
13271#endif
13272#ifdef GET_INTERPFN_DISPATCHERS
13273PRESERVE_NONE
13274static bool Interp_ConstUint16(InterpState &S, CodePtr &PC) {
13275 {
13276 CodePtr OpPC = PC;
13277 const auto V0 = ReadArg<uint16_t>(S, PC);
13278 if (!Const<PT_Uint16>(S, OpPC, V0))
13279 return false;
13280 }
13281#if USE_TAILCALLS
13282 MUSTTAIL return InterpNext(S, PC);
13283#else
13284 return true;
13285#endif
13286}
13287#endif
13288#ifdef GET_DISASM
13289case OP_ConstUint16:
13290 Text.Op = PrintName("ConstUint16");
13291 Text.Args.push_back(printArg<uint16_t>(P, PC));
13292 break;
13293#endif
13294#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13295bool emitConstUint16( uint16_t , SourceInfo);
13296#endif
13297#ifdef GET_LINK_IMPL
13298bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13299 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
13300}
13301#endif
13302#ifdef GET_EVAL_IMPL
13303bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13304 if (!isActive()) return true;
13305 CurrentSource = L;
13306 return Const<PT_Uint16>(S, OpPC, A0);
13307}
13308#endif
13309#ifdef GET_OPCODE_NAMES
13310OP_ConstUint32,
13311#endif
13312#ifdef GET_INTERPFN_LIST
13313&Interp_ConstUint32,
13314#endif
13315#ifdef GET_INTERPFN_DISPATCHERS
13316PRESERVE_NONE
13317static bool Interp_ConstUint32(InterpState &S, CodePtr &PC) {
13318 {
13319 CodePtr OpPC = PC;
13320 const auto V0 = ReadArg<uint32_t>(S, PC);
13321 if (!Const<PT_Uint32>(S, OpPC, V0))
13322 return false;
13323 }
13324#if USE_TAILCALLS
13325 MUSTTAIL return InterpNext(S, PC);
13326#else
13327 return true;
13328#endif
13329}
13330#endif
13331#ifdef GET_DISASM
13332case OP_ConstUint32:
13333 Text.Op = PrintName("ConstUint32");
13334 Text.Args.push_back(printArg<uint32_t>(P, PC));
13335 break;
13336#endif
13337#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13338bool emitConstUint32( uint32_t , SourceInfo);
13339#endif
13340#ifdef GET_LINK_IMPL
13341bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13342 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
13343}
13344#endif
13345#ifdef GET_EVAL_IMPL
13346bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13347 if (!isActive()) return true;
13348 CurrentSource = L;
13349 return Const<PT_Uint32>(S, OpPC, A0);
13350}
13351#endif
13352#ifdef GET_OPCODE_NAMES
13353OP_ConstUint64,
13354#endif
13355#ifdef GET_INTERPFN_LIST
13356&Interp_ConstUint64,
13357#endif
13358#ifdef GET_INTERPFN_DISPATCHERS
13359PRESERVE_NONE
13360static bool Interp_ConstUint64(InterpState &S, CodePtr &PC) {
13361 {
13362 CodePtr OpPC = PC;
13363 const auto V0 = ReadArg<uint64_t>(S, PC);
13364 if (!Const<PT_Uint64>(S, OpPC, V0))
13365 return false;
13366 }
13367#if USE_TAILCALLS
13368 MUSTTAIL return InterpNext(S, PC);
13369#else
13370 return true;
13371#endif
13372}
13373#endif
13374#ifdef GET_DISASM
13375case OP_ConstUint64:
13376 Text.Op = PrintName("ConstUint64");
13377 Text.Args.push_back(printArg<uint64_t>(P, PC));
13378 break;
13379#endif
13380#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13381bool emitConstUint64( uint64_t , SourceInfo);
13382#endif
13383#ifdef GET_LINK_IMPL
13384bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13385 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
13386}
13387#endif
13388#ifdef GET_EVAL_IMPL
13389bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13390 if (!isActive()) return true;
13391 CurrentSource = L;
13392 return Const<PT_Uint64>(S, OpPC, A0);
13393}
13394#endif
13395#ifdef GET_OPCODE_NAMES
13396OP_CopyArraySint8,
13397OP_CopyArrayUint8,
13398OP_CopyArraySint16,
13399OP_CopyArrayUint16,
13400OP_CopyArraySint32,
13401OP_CopyArrayUint32,
13402OP_CopyArraySint64,
13403OP_CopyArrayUint64,
13404OP_CopyArrayIntAP,
13405OP_CopyArrayIntAPS,
13406OP_CopyArrayBool,
13407OP_CopyArrayFixedPoint,
13408OP_CopyArrayPtr,
13409OP_CopyArrayMemberPtr,
13410OP_CopyArrayFloat,
13411#endif
13412#ifdef GET_INTERPFN_LIST
13413&Interp_CopyArraySint8,
13414&Interp_CopyArrayUint8,
13415&Interp_CopyArraySint16,
13416&Interp_CopyArrayUint16,
13417&Interp_CopyArraySint32,
13418&Interp_CopyArrayUint32,
13419&Interp_CopyArraySint64,
13420&Interp_CopyArrayUint64,
13421&Interp_CopyArrayIntAP,
13422&Interp_CopyArrayIntAPS,
13423&Interp_CopyArrayBool,
13424&Interp_CopyArrayFixedPoint,
13425&Interp_CopyArrayPtr,
13426&Interp_CopyArrayMemberPtr,
13427&Interp_CopyArrayFloat,
13428#endif
13429#ifdef GET_INTERPFN_DISPATCHERS
13430PRESERVE_NONE
13431static bool Interp_CopyArraySint8(InterpState &S, CodePtr &PC) {
13432 {
13433 CodePtr OpPC = PC;
13434 const auto V0 = ReadArg<uint32_t>(S, PC);
13435 const auto V1 = ReadArg<uint32_t>(S, PC);
13436 const auto V2 = ReadArg<uint32_t>(S, PC);
13437 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2))
13438 return false;
13439 }
13440#if USE_TAILCALLS
13441 MUSTTAIL return InterpNext(S, PC);
13442#else
13443 return true;
13444#endif
13445}
13446PRESERVE_NONE
13447static bool Interp_CopyArrayUint8(InterpState &S, CodePtr &PC) {
13448 {
13449 CodePtr OpPC = PC;
13450 const auto V0 = ReadArg<uint32_t>(S, PC);
13451 const auto V1 = ReadArg<uint32_t>(S, PC);
13452 const auto V2 = ReadArg<uint32_t>(S, PC);
13453 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2))
13454 return false;
13455 }
13456#if USE_TAILCALLS
13457 MUSTTAIL return InterpNext(S, PC);
13458#else
13459 return true;
13460#endif
13461}
13462PRESERVE_NONE
13463static bool Interp_CopyArraySint16(InterpState &S, CodePtr &PC) {
13464 {
13465 CodePtr OpPC = PC;
13466 const auto V0 = ReadArg<uint32_t>(S, PC);
13467 const auto V1 = ReadArg<uint32_t>(S, PC);
13468 const auto V2 = ReadArg<uint32_t>(S, PC);
13469 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2))
13470 return false;
13471 }
13472#if USE_TAILCALLS
13473 MUSTTAIL return InterpNext(S, PC);
13474#else
13475 return true;
13476#endif
13477}
13478PRESERVE_NONE
13479static bool Interp_CopyArrayUint16(InterpState &S, CodePtr &PC) {
13480 {
13481 CodePtr OpPC = PC;
13482 const auto V0 = ReadArg<uint32_t>(S, PC);
13483 const auto V1 = ReadArg<uint32_t>(S, PC);
13484 const auto V2 = ReadArg<uint32_t>(S, PC);
13485 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2))
13486 return false;
13487 }
13488#if USE_TAILCALLS
13489 MUSTTAIL return InterpNext(S, PC);
13490#else
13491 return true;
13492#endif
13493}
13494PRESERVE_NONE
13495static bool Interp_CopyArraySint32(InterpState &S, CodePtr &PC) {
13496 {
13497 CodePtr OpPC = PC;
13498 const auto V0 = ReadArg<uint32_t>(S, PC);
13499 const auto V1 = ReadArg<uint32_t>(S, PC);
13500 const auto V2 = ReadArg<uint32_t>(S, PC);
13501 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2))
13502 return false;
13503 }
13504#if USE_TAILCALLS
13505 MUSTTAIL return InterpNext(S, PC);
13506#else
13507 return true;
13508#endif
13509}
13510PRESERVE_NONE
13511static bool Interp_CopyArrayUint32(InterpState &S, CodePtr &PC) {
13512 {
13513 CodePtr OpPC = PC;
13514 const auto V0 = ReadArg<uint32_t>(S, PC);
13515 const auto V1 = ReadArg<uint32_t>(S, PC);
13516 const auto V2 = ReadArg<uint32_t>(S, PC);
13517 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2))
13518 return false;
13519 }
13520#if USE_TAILCALLS
13521 MUSTTAIL return InterpNext(S, PC);
13522#else
13523 return true;
13524#endif
13525}
13526PRESERVE_NONE
13527static bool Interp_CopyArraySint64(InterpState &S, CodePtr &PC) {
13528 {
13529 CodePtr OpPC = PC;
13530 const auto V0 = ReadArg<uint32_t>(S, PC);
13531 const auto V1 = ReadArg<uint32_t>(S, PC);
13532 const auto V2 = ReadArg<uint32_t>(S, PC);
13533 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2))
13534 return false;
13535 }
13536#if USE_TAILCALLS
13537 MUSTTAIL return InterpNext(S, PC);
13538#else
13539 return true;
13540#endif
13541}
13542PRESERVE_NONE
13543static bool Interp_CopyArrayUint64(InterpState &S, CodePtr &PC) {
13544 {
13545 CodePtr OpPC = PC;
13546 const auto V0 = ReadArg<uint32_t>(S, PC);
13547 const auto V1 = ReadArg<uint32_t>(S, PC);
13548 const auto V2 = ReadArg<uint32_t>(S, PC);
13549 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2))
13550 return false;
13551 }
13552#if USE_TAILCALLS
13553 MUSTTAIL return InterpNext(S, PC);
13554#else
13555 return true;
13556#endif
13557}
13558PRESERVE_NONE
13559static bool Interp_CopyArrayIntAP(InterpState &S, CodePtr &PC) {
13560 {
13561 CodePtr OpPC = PC;
13562 const auto V0 = ReadArg<uint32_t>(S, PC);
13563 const auto V1 = ReadArg<uint32_t>(S, PC);
13564 const auto V2 = ReadArg<uint32_t>(S, PC);
13565 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2))
13566 return false;
13567 }
13568#if USE_TAILCALLS
13569 MUSTTAIL return InterpNext(S, PC);
13570#else
13571 return true;
13572#endif
13573}
13574PRESERVE_NONE
13575static bool Interp_CopyArrayIntAPS(InterpState &S, CodePtr &PC) {
13576 {
13577 CodePtr OpPC = PC;
13578 const auto V0 = ReadArg<uint32_t>(S, PC);
13579 const auto V1 = ReadArg<uint32_t>(S, PC);
13580 const auto V2 = ReadArg<uint32_t>(S, PC);
13581 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2))
13582 return false;
13583 }
13584#if USE_TAILCALLS
13585 MUSTTAIL return InterpNext(S, PC);
13586#else
13587 return true;
13588#endif
13589}
13590PRESERVE_NONE
13591static bool Interp_CopyArrayBool(InterpState &S, CodePtr &PC) {
13592 {
13593 CodePtr OpPC = PC;
13594 const auto V0 = ReadArg<uint32_t>(S, PC);
13595 const auto V1 = ReadArg<uint32_t>(S, PC);
13596 const auto V2 = ReadArg<uint32_t>(S, PC);
13597 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2))
13598 return false;
13599 }
13600#if USE_TAILCALLS
13601 MUSTTAIL return InterpNext(S, PC);
13602#else
13603 return true;
13604#endif
13605}
13606PRESERVE_NONE
13607static bool Interp_CopyArrayFixedPoint(InterpState &S, CodePtr &PC) {
13608 {
13609 CodePtr OpPC = PC;
13610 const auto V0 = ReadArg<uint32_t>(S, PC);
13611 const auto V1 = ReadArg<uint32_t>(S, PC);
13612 const auto V2 = ReadArg<uint32_t>(S, PC);
13613 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2))
13614 return false;
13615 }
13616#if USE_TAILCALLS
13617 MUSTTAIL return InterpNext(S, PC);
13618#else
13619 return true;
13620#endif
13621}
13622PRESERVE_NONE
13623static bool Interp_CopyArrayPtr(InterpState &S, CodePtr &PC) {
13624 {
13625 CodePtr OpPC = PC;
13626 const auto V0 = ReadArg<uint32_t>(S, PC);
13627 const auto V1 = ReadArg<uint32_t>(S, PC);
13628 const auto V2 = ReadArg<uint32_t>(S, PC);
13629 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2))
13630 return false;
13631 }
13632#if USE_TAILCALLS
13633 MUSTTAIL return InterpNext(S, PC);
13634#else
13635 return true;
13636#endif
13637}
13638PRESERVE_NONE
13639static bool Interp_CopyArrayMemberPtr(InterpState &S, CodePtr &PC) {
13640 {
13641 CodePtr OpPC = PC;
13642 const auto V0 = ReadArg<uint32_t>(S, PC);
13643 const auto V1 = ReadArg<uint32_t>(S, PC);
13644 const auto V2 = ReadArg<uint32_t>(S, PC);
13645 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2))
13646 return false;
13647 }
13648#if USE_TAILCALLS
13649 MUSTTAIL return InterpNext(S, PC);
13650#else
13651 return true;
13652#endif
13653}
13654PRESERVE_NONE
13655static bool Interp_CopyArrayFloat(InterpState &S, CodePtr &PC) {
13656 {
13657 CodePtr OpPC = PC;
13658 const auto V0 = ReadArg<uint32_t>(S, PC);
13659 const auto V1 = ReadArg<uint32_t>(S, PC);
13660 const auto V2 = ReadArg<uint32_t>(S, PC);
13661 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2))
13662 return false;
13663 }
13664#if USE_TAILCALLS
13665 MUSTTAIL return InterpNext(S, PC);
13666#else
13667 return true;
13668#endif
13669}
13670#endif
13671#ifdef GET_DISASM
13672case OP_CopyArraySint8:
13673 Text.Op = PrintName("CopyArraySint8");
13674 Text.Args.push_back(printArg<uint32_t>(P, PC));
13675 Text.Args.push_back(printArg<uint32_t>(P, PC));
13676 Text.Args.push_back(printArg<uint32_t>(P, PC));
13677 break;
13678case OP_CopyArrayUint8:
13679 Text.Op = PrintName("CopyArrayUint8");
13680 Text.Args.push_back(printArg<uint32_t>(P, PC));
13681 Text.Args.push_back(printArg<uint32_t>(P, PC));
13682 Text.Args.push_back(printArg<uint32_t>(P, PC));
13683 break;
13684case OP_CopyArraySint16:
13685 Text.Op = PrintName("CopyArraySint16");
13686 Text.Args.push_back(printArg<uint32_t>(P, PC));
13687 Text.Args.push_back(printArg<uint32_t>(P, PC));
13688 Text.Args.push_back(printArg<uint32_t>(P, PC));
13689 break;
13690case OP_CopyArrayUint16:
13691 Text.Op = PrintName("CopyArrayUint16");
13692 Text.Args.push_back(printArg<uint32_t>(P, PC));
13693 Text.Args.push_back(printArg<uint32_t>(P, PC));
13694 Text.Args.push_back(printArg<uint32_t>(P, PC));
13695 break;
13696case OP_CopyArraySint32:
13697 Text.Op = PrintName("CopyArraySint32");
13698 Text.Args.push_back(printArg<uint32_t>(P, PC));
13699 Text.Args.push_back(printArg<uint32_t>(P, PC));
13700 Text.Args.push_back(printArg<uint32_t>(P, PC));
13701 break;
13702case OP_CopyArrayUint32:
13703 Text.Op = PrintName("CopyArrayUint32");
13704 Text.Args.push_back(printArg<uint32_t>(P, PC));
13705 Text.Args.push_back(printArg<uint32_t>(P, PC));
13706 Text.Args.push_back(printArg<uint32_t>(P, PC));
13707 break;
13708case OP_CopyArraySint64:
13709 Text.Op = PrintName("CopyArraySint64");
13710 Text.Args.push_back(printArg<uint32_t>(P, PC));
13711 Text.Args.push_back(printArg<uint32_t>(P, PC));
13712 Text.Args.push_back(printArg<uint32_t>(P, PC));
13713 break;
13714case OP_CopyArrayUint64:
13715 Text.Op = PrintName("CopyArrayUint64");
13716 Text.Args.push_back(printArg<uint32_t>(P, PC));
13717 Text.Args.push_back(printArg<uint32_t>(P, PC));
13718 Text.Args.push_back(printArg<uint32_t>(P, PC));
13719 break;
13720case OP_CopyArrayIntAP:
13721 Text.Op = PrintName("CopyArrayIntAP");
13722 Text.Args.push_back(printArg<uint32_t>(P, PC));
13723 Text.Args.push_back(printArg<uint32_t>(P, PC));
13724 Text.Args.push_back(printArg<uint32_t>(P, PC));
13725 break;
13726case OP_CopyArrayIntAPS:
13727 Text.Op = PrintName("CopyArrayIntAPS");
13728 Text.Args.push_back(printArg<uint32_t>(P, PC));
13729 Text.Args.push_back(printArg<uint32_t>(P, PC));
13730 Text.Args.push_back(printArg<uint32_t>(P, PC));
13731 break;
13732case OP_CopyArrayBool:
13733 Text.Op = PrintName("CopyArrayBool");
13734 Text.Args.push_back(printArg<uint32_t>(P, PC));
13735 Text.Args.push_back(printArg<uint32_t>(P, PC));
13736 Text.Args.push_back(printArg<uint32_t>(P, PC));
13737 break;
13738case OP_CopyArrayFixedPoint:
13739 Text.Op = PrintName("CopyArrayFixedPoint");
13740 Text.Args.push_back(printArg<uint32_t>(P, PC));
13741 Text.Args.push_back(printArg<uint32_t>(P, PC));
13742 Text.Args.push_back(printArg<uint32_t>(P, PC));
13743 break;
13744case OP_CopyArrayPtr:
13745 Text.Op = PrintName("CopyArrayPtr");
13746 Text.Args.push_back(printArg<uint32_t>(P, PC));
13747 Text.Args.push_back(printArg<uint32_t>(P, PC));
13748 Text.Args.push_back(printArg<uint32_t>(P, PC));
13749 break;
13750case OP_CopyArrayMemberPtr:
13751 Text.Op = PrintName("CopyArrayMemberPtr");
13752 Text.Args.push_back(printArg<uint32_t>(P, PC));
13753 Text.Args.push_back(printArg<uint32_t>(P, PC));
13754 Text.Args.push_back(printArg<uint32_t>(P, PC));
13755 break;
13756case OP_CopyArrayFloat:
13757 Text.Op = PrintName("CopyArrayFloat");
13758 Text.Args.push_back(printArg<uint32_t>(P, PC));
13759 Text.Args.push_back(printArg<uint32_t>(P, PC));
13760 Text.Args.push_back(printArg<uint32_t>(P, PC));
13761 break;
13762#endif
13763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13764bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13765bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13766bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13767bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13768bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13769bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13770bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13771bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13772bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
13773bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
13774bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
13775bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
13776bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13777bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13778bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
13779#endif
13780#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13781[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
13782#endif
13783#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13784bool
13785#if defined(GET_EVAL_IMPL)
13786EvalEmitter
13787#else
13788ByteCodeEmitter
13789#endif
13790::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
13791 switch (T0) {
13792 case PT_Sint8:
13793 return emitCopyArraySint8(A0, A1, A2, I);
13794 case PT_Uint8:
13795 return emitCopyArrayUint8(A0, A1, A2, I);
13796 case PT_Sint16:
13797 return emitCopyArraySint16(A0, A1, A2, I);
13798 case PT_Uint16:
13799 return emitCopyArrayUint16(A0, A1, A2, I);
13800 case PT_Sint32:
13801 return emitCopyArraySint32(A0, A1, A2, I);
13802 case PT_Uint32:
13803 return emitCopyArrayUint32(A0, A1, A2, I);
13804 case PT_Sint64:
13805 return emitCopyArraySint64(A0, A1, A2, I);
13806 case PT_Uint64:
13807 return emitCopyArrayUint64(A0, A1, A2, I);
13808 case PT_IntAP:
13809 return emitCopyArrayIntAP(A0, A1, A2, I);
13810 case PT_IntAPS:
13811 return emitCopyArrayIntAPS(A0, A1, A2, I);
13812 case PT_Bool:
13813 return emitCopyArrayBool(A0, A1, A2, I);
13814 case PT_FixedPoint:
13815 return emitCopyArrayFixedPoint(A0, A1, A2, I);
13816 case PT_Ptr:
13817 return emitCopyArrayPtr(A0, A1, A2, I);
13818 case PT_MemberPtr:
13819 return emitCopyArrayMemberPtr(A0, A1, A2, I);
13820 case PT_Float:
13821 return emitCopyArrayFloat(A0, A1, A2, I);
13822 }
13823 llvm_unreachable("invalid enum value");
13824}
13825#endif
13826#ifdef GET_LINK_IMPL
13827bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13828 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
13829}
13830bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13831 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
13832}
13833bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13834 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
13835}
13836bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13837 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
13838}
13839bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13840 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
13841}
13842bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13843 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
13844}
13845bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13846 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
13847}
13848bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13849 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
13850}
13851bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13852 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
13853}
13854bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13855 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
13856}
13857bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13858 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
13859}
13860bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13861 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
13862}
13863bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13864 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
13865}
13866bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13867 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
13868}
13869bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13870 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
13871}
13872#endif
13873#ifdef GET_EVAL_IMPL
13874bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13875 if (!isActive()) return true;
13876 CurrentSource = L;
13877 return CopyArray<PT_Sint8>(S, OpPC, A0, A1, A2);
13878}
13879bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13880 if (!isActive()) return true;
13881 CurrentSource = L;
13882 return CopyArray<PT_Uint8>(S, OpPC, A0, A1, A2);
13883}
13884bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13885 if (!isActive()) return true;
13886 CurrentSource = L;
13887 return CopyArray<PT_Sint16>(S, OpPC, A0, A1, A2);
13888}
13889bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13890 if (!isActive()) return true;
13891 CurrentSource = L;
13892 return CopyArray<PT_Uint16>(S, OpPC, A0, A1, A2);
13893}
13894bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13895 if (!isActive()) return true;
13896 CurrentSource = L;
13897 return CopyArray<PT_Sint32>(S, OpPC, A0, A1, A2);
13898}
13899bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13900 if (!isActive()) return true;
13901 CurrentSource = L;
13902 return CopyArray<PT_Uint32>(S, OpPC, A0, A1, A2);
13903}
13904bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13905 if (!isActive()) return true;
13906 CurrentSource = L;
13907 return CopyArray<PT_Sint64>(S, OpPC, A0, A1, A2);
13908}
13909bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13910 if (!isActive()) return true;
13911 CurrentSource = L;
13912 return CopyArray<PT_Uint64>(S, OpPC, A0, A1, A2);
13913}
13914bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13915 if (!isActive()) return true;
13916 CurrentSource = L;
13917 return CopyArray<PT_IntAP>(S, OpPC, A0, A1, A2);
13918}
13919bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13920 if (!isActive()) return true;
13921 CurrentSource = L;
13922 return CopyArray<PT_IntAPS>(S, OpPC, A0, A1, A2);
13923}
13924bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13925 if (!isActive()) return true;
13926 CurrentSource = L;
13927 return CopyArray<PT_Bool>(S, OpPC, A0, A1, A2);
13928}
13929bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13930 if (!isActive()) return true;
13931 CurrentSource = L;
13932 return CopyArray<PT_FixedPoint>(S, OpPC, A0, A1, A2);
13933}
13934bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13935 if (!isActive()) return true;
13936 CurrentSource = L;
13937 return CopyArray<PT_Ptr>(S, OpPC, A0, A1, A2);
13938}
13939bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13940 if (!isActive()) return true;
13941 CurrentSource = L;
13942 return CopyArray<PT_MemberPtr>(S, OpPC, A0, A1, A2);
13943}
13944bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13945 if (!isActive()) return true;
13946 CurrentSource = L;
13947 return CopyArray<PT_Float>(S, OpPC, A0, A1, A2);
13948}
13949#endif
13950#ifdef GET_OPCODE_NAMES
13951OP_CtorCheck,
13952#endif
13953#ifdef GET_INTERPFN_LIST
13954&Interp_CtorCheck,
13955#endif
13956#ifdef GET_INTERPFN_DISPATCHERS
13957PRESERVE_NONE
13958static bool Interp_CtorCheck(InterpState &S, CodePtr &PC) {
13959 if (!CtorCheck(S, PC))
13960 return false;
13961#if USE_TAILCALLS
13962 MUSTTAIL return InterpNext(S, PC);
13963#else
13964 return true;
13965#endif
13966}
13967#endif
13968#ifdef GET_DISASM
13969case OP_CtorCheck:
13970 Text.Op = PrintName("CtorCheck");
13971 break;
13972#endif
13973#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13974bool emitCtorCheck(SourceInfo);
13975#endif
13976#ifdef GET_LINK_IMPL
13977bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
13978 return emitOp<>(OP_CtorCheck, L);
13979}
13980#endif
13981#ifdef GET_EVAL_IMPL
13982bool EvalEmitter::emitCtorCheck(SourceInfo L) {
13983 if (!isActive()) return true;
13984 CurrentSource = L;
13985 return CtorCheck(S, OpPC);
13986}
13987#endif
13988#ifdef GET_OPCODE_NAMES
13989OP_DecSint8,
13990OP_DecUint8,
13991OP_DecSint16,
13992OP_DecUint16,
13993OP_DecSint32,
13994OP_DecUint32,
13995OP_DecSint64,
13996OP_DecUint64,
13997OP_DecIntAP,
13998OP_DecIntAPS,
13999OP_DecBool,
14000OP_DecFixedPoint,
14001#endif
14002#ifdef GET_INTERPFN_LIST
14003&Interp_DecSint8,
14004&Interp_DecUint8,
14005&Interp_DecSint16,
14006&Interp_DecUint16,
14007&Interp_DecSint32,
14008&Interp_DecUint32,
14009&Interp_DecSint64,
14010&Interp_DecUint64,
14011&Interp_DecIntAP,
14012&Interp_DecIntAPS,
14013&Interp_DecBool,
14014&Interp_DecFixedPoint,
14015#endif
14016#ifdef GET_INTERPFN_DISPATCHERS
14017PRESERVE_NONE
14018static bool Interp_DecSint8(InterpState &S, CodePtr &PC) {
14019 {
14020 CodePtr OpPC = PC;
14021 const auto V0 = ReadArg<bool>(S, PC);
14022 if (!Dec<PT_Sint8>(S, OpPC, V0))
14023 return false;
14024 }
14025#if USE_TAILCALLS
14026 MUSTTAIL return InterpNext(S, PC);
14027#else
14028 return true;
14029#endif
14030}
14031PRESERVE_NONE
14032static bool Interp_DecUint8(InterpState &S, CodePtr &PC) {
14033 {
14034 CodePtr OpPC = PC;
14035 const auto V0 = ReadArg<bool>(S, PC);
14036 if (!Dec<PT_Uint8>(S, OpPC, V0))
14037 return false;
14038 }
14039#if USE_TAILCALLS
14040 MUSTTAIL return InterpNext(S, PC);
14041#else
14042 return true;
14043#endif
14044}
14045PRESERVE_NONE
14046static bool Interp_DecSint16(InterpState &S, CodePtr &PC) {
14047 {
14048 CodePtr OpPC = PC;
14049 const auto V0 = ReadArg<bool>(S, PC);
14050 if (!Dec<PT_Sint16>(S, OpPC, V0))
14051 return false;
14052 }
14053#if USE_TAILCALLS
14054 MUSTTAIL return InterpNext(S, PC);
14055#else
14056 return true;
14057#endif
14058}
14059PRESERVE_NONE
14060static bool Interp_DecUint16(InterpState &S, CodePtr &PC) {
14061 {
14062 CodePtr OpPC = PC;
14063 const auto V0 = ReadArg<bool>(S, PC);
14064 if (!Dec<PT_Uint16>(S, OpPC, V0))
14065 return false;
14066 }
14067#if USE_TAILCALLS
14068 MUSTTAIL return InterpNext(S, PC);
14069#else
14070 return true;
14071#endif
14072}
14073PRESERVE_NONE
14074static bool Interp_DecSint32(InterpState &S, CodePtr &PC) {
14075 {
14076 CodePtr OpPC = PC;
14077 const auto V0 = ReadArg<bool>(S, PC);
14078 if (!Dec<PT_Sint32>(S, OpPC, V0))
14079 return false;
14080 }
14081#if USE_TAILCALLS
14082 MUSTTAIL return InterpNext(S, PC);
14083#else
14084 return true;
14085#endif
14086}
14087PRESERVE_NONE
14088static bool Interp_DecUint32(InterpState &S, CodePtr &PC) {
14089 {
14090 CodePtr OpPC = PC;
14091 const auto V0 = ReadArg<bool>(S, PC);
14092 if (!Dec<PT_Uint32>(S, OpPC, V0))
14093 return false;
14094 }
14095#if USE_TAILCALLS
14096 MUSTTAIL return InterpNext(S, PC);
14097#else
14098 return true;
14099#endif
14100}
14101PRESERVE_NONE
14102static bool Interp_DecSint64(InterpState &S, CodePtr &PC) {
14103 {
14104 CodePtr OpPC = PC;
14105 const auto V0 = ReadArg<bool>(S, PC);
14106 if (!Dec<PT_Sint64>(S, OpPC, V0))
14107 return false;
14108 }
14109#if USE_TAILCALLS
14110 MUSTTAIL return InterpNext(S, PC);
14111#else
14112 return true;
14113#endif
14114}
14115PRESERVE_NONE
14116static bool Interp_DecUint64(InterpState &S, CodePtr &PC) {
14117 {
14118 CodePtr OpPC = PC;
14119 const auto V0 = ReadArg<bool>(S, PC);
14120 if (!Dec<PT_Uint64>(S, OpPC, V0))
14121 return false;
14122 }
14123#if USE_TAILCALLS
14124 MUSTTAIL return InterpNext(S, PC);
14125#else
14126 return true;
14127#endif
14128}
14129PRESERVE_NONE
14130static bool Interp_DecIntAP(InterpState &S, CodePtr &PC) {
14131 {
14132 CodePtr OpPC = PC;
14133 const auto V0 = ReadArg<bool>(S, PC);
14134 if (!Dec<PT_IntAP>(S, OpPC, V0))
14135 return false;
14136 }
14137#if USE_TAILCALLS
14138 MUSTTAIL return InterpNext(S, PC);
14139#else
14140 return true;
14141#endif
14142}
14143PRESERVE_NONE
14144static bool Interp_DecIntAPS(InterpState &S, CodePtr &PC) {
14145 {
14146 CodePtr OpPC = PC;
14147 const auto V0 = ReadArg<bool>(S, PC);
14148 if (!Dec<PT_IntAPS>(S, OpPC, V0))
14149 return false;
14150 }
14151#if USE_TAILCALLS
14152 MUSTTAIL return InterpNext(S, PC);
14153#else
14154 return true;
14155#endif
14156}
14157PRESERVE_NONE
14158static bool Interp_DecBool(InterpState &S, CodePtr &PC) {
14159 {
14160 CodePtr OpPC = PC;
14161 const auto V0 = ReadArg<bool>(S, PC);
14162 if (!Dec<PT_Bool>(S, OpPC, V0))
14163 return false;
14164 }
14165#if USE_TAILCALLS
14166 MUSTTAIL return InterpNext(S, PC);
14167#else
14168 return true;
14169#endif
14170}
14171PRESERVE_NONE
14172static bool Interp_DecFixedPoint(InterpState &S, CodePtr &PC) {
14173 {
14174 CodePtr OpPC = PC;
14175 const auto V0 = ReadArg<bool>(S, PC);
14176 if (!Dec<PT_FixedPoint>(S, OpPC, V0))
14177 return false;
14178 }
14179#if USE_TAILCALLS
14180 MUSTTAIL return InterpNext(S, PC);
14181#else
14182 return true;
14183#endif
14184}
14185#endif
14186#ifdef GET_DISASM
14187case OP_DecSint8:
14188 Text.Op = PrintName("DecSint8");
14189 Text.Args.push_back(printArg<bool>(P, PC));
14190 break;
14191case OP_DecUint8:
14192 Text.Op = PrintName("DecUint8");
14193 Text.Args.push_back(printArg<bool>(P, PC));
14194 break;
14195case OP_DecSint16:
14196 Text.Op = PrintName("DecSint16");
14197 Text.Args.push_back(printArg<bool>(P, PC));
14198 break;
14199case OP_DecUint16:
14200 Text.Op = PrintName("DecUint16");
14201 Text.Args.push_back(printArg<bool>(P, PC));
14202 break;
14203case OP_DecSint32:
14204 Text.Op = PrintName("DecSint32");
14205 Text.Args.push_back(printArg<bool>(P, PC));
14206 break;
14207case OP_DecUint32:
14208 Text.Op = PrintName("DecUint32");
14209 Text.Args.push_back(printArg<bool>(P, PC));
14210 break;
14211case OP_DecSint64:
14212 Text.Op = PrintName("DecSint64");
14213 Text.Args.push_back(printArg<bool>(P, PC));
14214 break;
14215case OP_DecUint64:
14216 Text.Op = PrintName("DecUint64");
14217 Text.Args.push_back(printArg<bool>(P, PC));
14218 break;
14219case OP_DecIntAP:
14220 Text.Op = PrintName("DecIntAP");
14221 Text.Args.push_back(printArg<bool>(P, PC));
14222 break;
14223case OP_DecIntAPS:
14224 Text.Op = PrintName("DecIntAPS");
14225 Text.Args.push_back(printArg<bool>(P, PC));
14226 break;
14227case OP_DecBool:
14228 Text.Op = PrintName("DecBool");
14229 Text.Args.push_back(printArg<bool>(P, PC));
14230 break;
14231case OP_DecFixedPoint:
14232 Text.Op = PrintName("DecFixedPoint");
14233 Text.Args.push_back(printArg<bool>(P, PC));
14234 break;
14235#endif
14236#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14237bool emitDecSint8( bool , SourceInfo);
14238bool emitDecUint8( bool , SourceInfo);
14239bool emitDecSint16( bool , SourceInfo);
14240bool emitDecUint16( bool , SourceInfo);
14241bool emitDecSint32( bool , SourceInfo);
14242bool emitDecUint32( bool , SourceInfo);
14243bool emitDecSint64( bool , SourceInfo);
14244bool emitDecUint64( bool , SourceInfo);
14245bool emitDecIntAP( bool , SourceInfo);
14246bool emitDecIntAPS( bool , SourceInfo);
14247bool emitDecBool( bool , SourceInfo);
14248bool emitDecFixedPoint( bool , SourceInfo);
14249#endif
14250#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14251[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
14252#endif
14253#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14254bool
14255#if defined(GET_EVAL_IMPL)
14256EvalEmitter
14257#else
14258ByteCodeEmitter
14259#endif
14260::emitDec(PrimType T0, bool A0, SourceInfo I) {
14261 switch (T0) {
14262 case PT_Sint8:
14263 return emitDecSint8(A0, I);
14264 case PT_Uint8:
14265 return emitDecUint8(A0, I);
14266 case PT_Sint16:
14267 return emitDecSint16(A0, I);
14268 case PT_Uint16:
14269 return emitDecUint16(A0, I);
14270 case PT_Sint32:
14271 return emitDecSint32(A0, I);
14272 case PT_Uint32:
14273 return emitDecUint32(A0, I);
14274 case PT_Sint64:
14275 return emitDecSint64(A0, I);
14276 case PT_Uint64:
14277 return emitDecUint64(A0, I);
14278 case PT_IntAP:
14279 return emitDecIntAP(A0, I);
14280 case PT_IntAPS:
14281 return emitDecIntAPS(A0, I);
14282 case PT_Bool:
14283 return emitDecBool(A0, I);
14284 case PT_FixedPoint:
14285 return emitDecFixedPoint(A0, I);
14286 default: llvm_unreachable("invalid type: emitDec");
14287 }
14288 llvm_unreachable("invalid enum value");
14289}
14290#endif
14291#ifdef GET_LINK_IMPL
14292bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
14293 return emitOp<bool>(OP_DecSint8, A0, L);
14294}
14295bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
14296 return emitOp<bool>(OP_DecUint8, A0, L);
14297}
14298bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
14299 return emitOp<bool>(OP_DecSint16, A0, L);
14300}
14301bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
14302 return emitOp<bool>(OP_DecUint16, A0, L);
14303}
14304bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
14305 return emitOp<bool>(OP_DecSint32, A0, L);
14306}
14307bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
14308 return emitOp<bool>(OP_DecUint32, A0, L);
14309}
14310bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
14311 return emitOp<bool>(OP_DecSint64, A0, L);
14312}
14313bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
14314 return emitOp<bool>(OP_DecUint64, A0, L);
14315}
14316bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14317 return emitOp<bool>(OP_DecIntAP, A0, L);
14318}
14319bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14320 return emitOp<bool>(OP_DecIntAPS, A0, L);
14321}
14322bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
14323 return emitOp<bool>(OP_DecBool, A0, L);
14324}
14325bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14326 return emitOp<bool>(OP_DecFixedPoint, A0, L);
14327}
14328#endif
14329#ifdef GET_EVAL_IMPL
14330bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
14331 if (!isActive()) return true;
14332 CurrentSource = L;
14333 return Dec<PT_Sint8>(S, OpPC, A0);
14334}
14335bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
14336 if (!isActive()) return true;
14337 CurrentSource = L;
14338 return Dec<PT_Uint8>(S, OpPC, A0);
14339}
14340bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
14341 if (!isActive()) return true;
14342 CurrentSource = L;
14343 return Dec<PT_Sint16>(S, OpPC, A0);
14344}
14345bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
14346 if (!isActive()) return true;
14347 CurrentSource = L;
14348 return Dec<PT_Uint16>(S, OpPC, A0);
14349}
14350bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
14351 if (!isActive()) return true;
14352 CurrentSource = L;
14353 return Dec<PT_Sint32>(S, OpPC, A0);
14354}
14355bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
14356 if (!isActive()) return true;
14357 CurrentSource = L;
14358 return Dec<PT_Uint32>(S, OpPC, A0);
14359}
14360bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
14361 if (!isActive()) return true;
14362 CurrentSource = L;
14363 return Dec<PT_Sint64>(S, OpPC, A0);
14364}
14365bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
14366 if (!isActive()) return true;
14367 CurrentSource = L;
14368 return Dec<PT_Uint64>(S, OpPC, A0);
14369}
14370bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14371 if (!isActive()) return true;
14372 CurrentSource = L;
14373 return Dec<PT_IntAP>(S, OpPC, A0);
14374}
14375bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14376 if (!isActive()) return true;
14377 CurrentSource = L;
14378 return Dec<PT_IntAPS>(S, OpPC, A0);
14379}
14380bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
14381 if (!isActive()) return true;
14382 CurrentSource = L;
14383 return Dec<PT_Bool>(S, OpPC, A0);
14384}
14385bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14386 if (!isActive()) return true;
14387 CurrentSource = L;
14388 return Dec<PT_FixedPoint>(S, OpPC, A0);
14389}
14390#endif
14391#ifdef GET_OPCODE_NAMES
14392OP_DecBitfieldSint8,
14393OP_DecBitfieldUint8,
14394OP_DecBitfieldSint16,
14395OP_DecBitfieldUint16,
14396OP_DecBitfieldSint32,
14397OP_DecBitfieldUint32,
14398OP_DecBitfieldSint64,
14399OP_DecBitfieldUint64,
14400OP_DecBitfieldIntAP,
14401OP_DecBitfieldIntAPS,
14402OP_DecBitfieldBool,
14403OP_DecBitfieldFixedPoint,
14404#endif
14405#ifdef GET_INTERPFN_LIST
14406&Interp_DecBitfieldSint8,
14407&Interp_DecBitfieldUint8,
14408&Interp_DecBitfieldSint16,
14409&Interp_DecBitfieldUint16,
14410&Interp_DecBitfieldSint32,
14411&Interp_DecBitfieldUint32,
14412&Interp_DecBitfieldSint64,
14413&Interp_DecBitfieldUint64,
14414&Interp_DecBitfieldIntAP,
14415&Interp_DecBitfieldIntAPS,
14416&Interp_DecBitfieldBool,
14417&Interp_DecBitfieldFixedPoint,
14418#endif
14419#ifdef GET_INTERPFN_DISPATCHERS
14420PRESERVE_NONE
14421static bool Interp_DecBitfieldSint8(InterpState &S, CodePtr &PC) {
14422 {
14423 CodePtr OpPC = PC;
14424 const auto V0 = ReadArg<bool>(S, PC);
14425 const auto V1 = ReadArg<uint32_t>(S, PC);
14426 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1))
14427 return false;
14428 }
14429#if USE_TAILCALLS
14430 MUSTTAIL return InterpNext(S, PC);
14431#else
14432 return true;
14433#endif
14434}
14435PRESERVE_NONE
14436static bool Interp_DecBitfieldUint8(InterpState &S, CodePtr &PC) {
14437 {
14438 CodePtr OpPC = PC;
14439 const auto V0 = ReadArg<bool>(S, PC);
14440 const auto V1 = ReadArg<uint32_t>(S, PC);
14441 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1))
14442 return false;
14443 }
14444#if USE_TAILCALLS
14445 MUSTTAIL return InterpNext(S, PC);
14446#else
14447 return true;
14448#endif
14449}
14450PRESERVE_NONE
14451static bool Interp_DecBitfieldSint16(InterpState &S, CodePtr &PC) {
14452 {
14453 CodePtr OpPC = PC;
14454 const auto V0 = ReadArg<bool>(S, PC);
14455 const auto V1 = ReadArg<uint32_t>(S, PC);
14456 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1))
14457 return false;
14458 }
14459#if USE_TAILCALLS
14460 MUSTTAIL return InterpNext(S, PC);
14461#else
14462 return true;
14463#endif
14464}
14465PRESERVE_NONE
14466static bool Interp_DecBitfieldUint16(InterpState &S, CodePtr &PC) {
14467 {
14468 CodePtr OpPC = PC;
14469 const auto V0 = ReadArg<bool>(S, PC);
14470 const auto V1 = ReadArg<uint32_t>(S, PC);
14471 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1))
14472 return false;
14473 }
14474#if USE_TAILCALLS
14475 MUSTTAIL return InterpNext(S, PC);
14476#else
14477 return true;
14478#endif
14479}
14480PRESERVE_NONE
14481static bool Interp_DecBitfieldSint32(InterpState &S, CodePtr &PC) {
14482 {
14483 CodePtr OpPC = PC;
14484 const auto V0 = ReadArg<bool>(S, PC);
14485 const auto V1 = ReadArg<uint32_t>(S, PC);
14486 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1))
14487 return false;
14488 }
14489#if USE_TAILCALLS
14490 MUSTTAIL return InterpNext(S, PC);
14491#else
14492 return true;
14493#endif
14494}
14495PRESERVE_NONE
14496static bool Interp_DecBitfieldUint32(InterpState &S, CodePtr &PC) {
14497 {
14498 CodePtr OpPC = PC;
14499 const auto V0 = ReadArg<bool>(S, PC);
14500 const auto V1 = ReadArg<uint32_t>(S, PC);
14501 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1))
14502 return false;
14503 }
14504#if USE_TAILCALLS
14505 MUSTTAIL return InterpNext(S, PC);
14506#else
14507 return true;
14508#endif
14509}
14510PRESERVE_NONE
14511static bool Interp_DecBitfieldSint64(InterpState &S, CodePtr &PC) {
14512 {
14513 CodePtr OpPC = PC;
14514 const auto V0 = ReadArg<bool>(S, PC);
14515 const auto V1 = ReadArg<uint32_t>(S, PC);
14516 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1))
14517 return false;
14518 }
14519#if USE_TAILCALLS
14520 MUSTTAIL return InterpNext(S, PC);
14521#else
14522 return true;
14523#endif
14524}
14525PRESERVE_NONE
14526static bool Interp_DecBitfieldUint64(InterpState &S, CodePtr &PC) {
14527 {
14528 CodePtr OpPC = PC;
14529 const auto V0 = ReadArg<bool>(S, PC);
14530 const auto V1 = ReadArg<uint32_t>(S, PC);
14531 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1))
14532 return false;
14533 }
14534#if USE_TAILCALLS
14535 MUSTTAIL return InterpNext(S, PC);
14536#else
14537 return true;
14538#endif
14539}
14540PRESERVE_NONE
14541static bool Interp_DecBitfieldIntAP(InterpState &S, CodePtr &PC) {
14542 {
14543 CodePtr OpPC = PC;
14544 const auto V0 = ReadArg<bool>(S, PC);
14545 const auto V1 = ReadArg<uint32_t>(S, PC);
14546 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1))
14547 return false;
14548 }
14549#if USE_TAILCALLS
14550 MUSTTAIL return InterpNext(S, PC);
14551#else
14552 return true;
14553#endif
14554}
14555PRESERVE_NONE
14556static bool Interp_DecBitfieldIntAPS(InterpState &S, CodePtr &PC) {
14557 {
14558 CodePtr OpPC = PC;
14559 const auto V0 = ReadArg<bool>(S, PC);
14560 const auto V1 = ReadArg<uint32_t>(S, PC);
14561 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
14562 return false;
14563 }
14564#if USE_TAILCALLS
14565 MUSTTAIL return InterpNext(S, PC);
14566#else
14567 return true;
14568#endif
14569}
14570PRESERVE_NONE
14571static bool Interp_DecBitfieldBool(InterpState &S, CodePtr &PC) {
14572 {
14573 CodePtr OpPC = PC;
14574 const auto V0 = ReadArg<bool>(S, PC);
14575 const auto V1 = ReadArg<uint32_t>(S, PC);
14576 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1))
14577 return false;
14578 }
14579#if USE_TAILCALLS
14580 MUSTTAIL return InterpNext(S, PC);
14581#else
14582 return true;
14583#endif
14584}
14585PRESERVE_NONE
14586static bool Interp_DecBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
14587 {
14588 CodePtr OpPC = PC;
14589 const auto V0 = ReadArg<bool>(S, PC);
14590 const auto V1 = ReadArg<uint32_t>(S, PC);
14591 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
14592 return false;
14593 }
14594#if USE_TAILCALLS
14595 MUSTTAIL return InterpNext(S, PC);
14596#else
14597 return true;
14598#endif
14599}
14600#endif
14601#ifdef GET_DISASM
14602case OP_DecBitfieldSint8:
14603 Text.Op = PrintName("DecBitfieldSint8");
14604 Text.Args.push_back(printArg<bool>(P, PC));
14605 Text.Args.push_back(printArg<uint32_t>(P, PC));
14606 break;
14607case OP_DecBitfieldUint8:
14608 Text.Op = PrintName("DecBitfieldUint8");
14609 Text.Args.push_back(printArg<bool>(P, PC));
14610 Text.Args.push_back(printArg<uint32_t>(P, PC));
14611 break;
14612case OP_DecBitfieldSint16:
14613 Text.Op = PrintName("DecBitfieldSint16");
14614 Text.Args.push_back(printArg<bool>(P, PC));
14615 Text.Args.push_back(printArg<uint32_t>(P, PC));
14616 break;
14617case OP_DecBitfieldUint16:
14618 Text.Op = PrintName("DecBitfieldUint16");
14619 Text.Args.push_back(printArg<bool>(P, PC));
14620 Text.Args.push_back(printArg<uint32_t>(P, PC));
14621 break;
14622case OP_DecBitfieldSint32:
14623 Text.Op = PrintName("DecBitfieldSint32");
14624 Text.Args.push_back(printArg<bool>(P, PC));
14625 Text.Args.push_back(printArg<uint32_t>(P, PC));
14626 break;
14627case OP_DecBitfieldUint32:
14628 Text.Op = PrintName("DecBitfieldUint32");
14629 Text.Args.push_back(printArg<bool>(P, PC));
14630 Text.Args.push_back(printArg<uint32_t>(P, PC));
14631 break;
14632case OP_DecBitfieldSint64:
14633 Text.Op = PrintName("DecBitfieldSint64");
14634 Text.Args.push_back(printArg<bool>(P, PC));
14635 Text.Args.push_back(printArg<uint32_t>(P, PC));
14636 break;
14637case OP_DecBitfieldUint64:
14638 Text.Op = PrintName("DecBitfieldUint64");
14639 Text.Args.push_back(printArg<bool>(P, PC));
14640 Text.Args.push_back(printArg<uint32_t>(P, PC));
14641 break;
14642case OP_DecBitfieldIntAP:
14643 Text.Op = PrintName("DecBitfieldIntAP");
14644 Text.Args.push_back(printArg<bool>(P, PC));
14645 Text.Args.push_back(printArg<uint32_t>(P, PC));
14646 break;
14647case OP_DecBitfieldIntAPS:
14648 Text.Op = PrintName("DecBitfieldIntAPS");
14649 Text.Args.push_back(printArg<bool>(P, PC));
14650 Text.Args.push_back(printArg<uint32_t>(P, PC));
14651 break;
14652case OP_DecBitfieldBool:
14653 Text.Op = PrintName("DecBitfieldBool");
14654 Text.Args.push_back(printArg<bool>(P, PC));
14655 Text.Args.push_back(printArg<uint32_t>(P, PC));
14656 break;
14657case OP_DecBitfieldFixedPoint:
14658 Text.Op = PrintName("DecBitfieldFixedPoint");
14659 Text.Args.push_back(printArg<bool>(P, PC));
14660 Text.Args.push_back(printArg<uint32_t>(P, PC));
14661 break;
14662#endif
14663#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14664bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
14665bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
14666bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
14667bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
14668bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
14669bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
14670bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
14671bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
14672bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
14673bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
14674bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
14675bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
14676#endif
14677#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14678[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
14679#endif
14680#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14681bool
14682#if defined(GET_EVAL_IMPL)
14683EvalEmitter
14684#else
14685ByteCodeEmitter
14686#endif
14687::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
14688 switch (T0) {
14689 case PT_Sint8:
14690 return emitDecBitfieldSint8(A0, A1, I);
14691 case PT_Uint8:
14692 return emitDecBitfieldUint8(A0, A1, I);
14693 case PT_Sint16:
14694 return emitDecBitfieldSint16(A0, A1, I);
14695 case PT_Uint16:
14696 return emitDecBitfieldUint16(A0, A1, I);
14697 case PT_Sint32:
14698 return emitDecBitfieldSint32(A0, A1, I);
14699 case PT_Uint32:
14700 return emitDecBitfieldUint32(A0, A1, I);
14701 case PT_Sint64:
14702 return emitDecBitfieldSint64(A0, A1, I);
14703 case PT_Uint64:
14704 return emitDecBitfieldUint64(A0, A1, I);
14705 case PT_IntAP:
14706 return emitDecBitfieldIntAP(A0, A1, I);
14707 case PT_IntAPS:
14708 return emitDecBitfieldIntAPS(A0, A1, I);
14709 case PT_Bool:
14710 return emitDecBitfieldBool(A0, A1, I);
14711 case PT_FixedPoint:
14712 return emitDecBitfieldFixedPoint(A0, A1, I);
14713 default: llvm_unreachable("invalid type: emitDecBitfield");
14714 }
14715 llvm_unreachable("invalid enum value");
14716}
14717#endif
14718#ifdef GET_LINK_IMPL
14719bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14720 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
14721}
14722bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14723 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
14724}
14725bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14726 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
14727}
14728bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14729 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
14730}
14731bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14732 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
14733}
14734bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14735 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
14736}
14737bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14738 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
14739}
14740bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14741 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
14742}
14743bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14744 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
14745}
14746bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14747 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
14748}
14749bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14750 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
14751}
14752bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14753 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
14754}
14755#endif
14756#ifdef GET_EVAL_IMPL
14757bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14758 if (!isActive()) return true;
14759 CurrentSource = L;
14760 return DecBitfield<PT_Sint8>(S, OpPC, A0, A1);
14761}
14762bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14763 if (!isActive()) return true;
14764 CurrentSource = L;
14765 return DecBitfield<PT_Uint8>(S, OpPC, A0, A1);
14766}
14767bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14768 if (!isActive()) return true;
14769 CurrentSource = L;
14770 return DecBitfield<PT_Sint16>(S, OpPC, A0, A1);
14771}
14772bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14773 if (!isActive()) return true;
14774 CurrentSource = L;
14775 return DecBitfield<PT_Uint16>(S, OpPC, A0, A1);
14776}
14777bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14778 if (!isActive()) return true;
14779 CurrentSource = L;
14780 return DecBitfield<PT_Sint32>(S, OpPC, A0, A1);
14781}
14782bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14783 if (!isActive()) return true;
14784 CurrentSource = L;
14785 return DecBitfield<PT_Uint32>(S, OpPC, A0, A1);
14786}
14787bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14788 if (!isActive()) return true;
14789 CurrentSource = L;
14790 return DecBitfield<PT_Sint64>(S, OpPC, A0, A1);
14791}
14792bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14793 if (!isActive()) return true;
14794 CurrentSource = L;
14795 return DecBitfield<PT_Uint64>(S, OpPC, A0, A1);
14796}
14797bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14798 if (!isActive()) return true;
14799 CurrentSource = L;
14800 return DecBitfield<PT_IntAP>(S, OpPC, A0, A1);
14801}
14802bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14803 if (!isActive()) return true;
14804 CurrentSource = L;
14805 return DecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
14806}
14807bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14808 if (!isActive()) return true;
14809 CurrentSource = L;
14810 return DecBitfield<PT_Bool>(S, OpPC, A0, A1);
14811}
14812bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14813 if (!isActive()) return true;
14814 CurrentSource = L;
14815 return DecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
14816}
14817#endif
14818#ifdef GET_OPCODE_NAMES
14819OP_DecPopSint8,
14820OP_DecPopUint8,
14821OP_DecPopSint16,
14822OP_DecPopUint16,
14823OP_DecPopSint32,
14824OP_DecPopUint32,
14825OP_DecPopSint64,
14826OP_DecPopUint64,
14827OP_DecPopIntAP,
14828OP_DecPopIntAPS,
14829OP_DecPopBool,
14830OP_DecPopFixedPoint,
14831#endif
14832#ifdef GET_INTERPFN_LIST
14833&Interp_DecPopSint8,
14834&Interp_DecPopUint8,
14835&Interp_DecPopSint16,
14836&Interp_DecPopUint16,
14837&Interp_DecPopSint32,
14838&Interp_DecPopUint32,
14839&Interp_DecPopSint64,
14840&Interp_DecPopUint64,
14841&Interp_DecPopIntAP,
14842&Interp_DecPopIntAPS,
14843&Interp_DecPopBool,
14844&Interp_DecPopFixedPoint,
14845#endif
14846#ifdef GET_INTERPFN_DISPATCHERS
14847PRESERVE_NONE
14848static bool Interp_DecPopSint8(InterpState &S, CodePtr &PC) {
14849 {
14850 CodePtr OpPC = PC;
14851 const auto V0 = ReadArg<bool>(S, PC);
14852 if (!DecPop<PT_Sint8>(S, OpPC, V0))
14853 return false;
14854 }
14855#if USE_TAILCALLS
14856 MUSTTAIL return InterpNext(S, PC);
14857#else
14858 return true;
14859#endif
14860}
14861PRESERVE_NONE
14862static bool Interp_DecPopUint8(InterpState &S, CodePtr &PC) {
14863 {
14864 CodePtr OpPC = PC;
14865 const auto V0 = ReadArg<bool>(S, PC);
14866 if (!DecPop<PT_Uint8>(S, OpPC, V0))
14867 return false;
14868 }
14869#if USE_TAILCALLS
14870 MUSTTAIL return InterpNext(S, PC);
14871#else
14872 return true;
14873#endif
14874}
14875PRESERVE_NONE
14876static bool Interp_DecPopSint16(InterpState &S, CodePtr &PC) {
14877 {
14878 CodePtr OpPC = PC;
14879 const auto V0 = ReadArg<bool>(S, PC);
14880 if (!DecPop<PT_Sint16>(S, OpPC, V0))
14881 return false;
14882 }
14883#if USE_TAILCALLS
14884 MUSTTAIL return InterpNext(S, PC);
14885#else
14886 return true;
14887#endif
14888}
14889PRESERVE_NONE
14890static bool Interp_DecPopUint16(InterpState &S, CodePtr &PC) {
14891 {
14892 CodePtr OpPC = PC;
14893 const auto V0 = ReadArg<bool>(S, PC);
14894 if (!DecPop<PT_Uint16>(S, OpPC, V0))
14895 return false;
14896 }
14897#if USE_TAILCALLS
14898 MUSTTAIL return InterpNext(S, PC);
14899#else
14900 return true;
14901#endif
14902}
14903PRESERVE_NONE
14904static bool Interp_DecPopSint32(InterpState &S, CodePtr &PC) {
14905 {
14906 CodePtr OpPC = PC;
14907 const auto V0 = ReadArg<bool>(S, PC);
14908 if (!DecPop<PT_Sint32>(S, OpPC, V0))
14909 return false;
14910 }
14911#if USE_TAILCALLS
14912 MUSTTAIL return InterpNext(S, PC);
14913#else
14914 return true;
14915#endif
14916}
14917PRESERVE_NONE
14918static bool Interp_DecPopUint32(InterpState &S, CodePtr &PC) {
14919 {
14920 CodePtr OpPC = PC;
14921 const auto V0 = ReadArg<bool>(S, PC);
14922 if (!DecPop<PT_Uint32>(S, OpPC, V0))
14923 return false;
14924 }
14925#if USE_TAILCALLS
14926 MUSTTAIL return InterpNext(S, PC);
14927#else
14928 return true;
14929#endif
14930}
14931PRESERVE_NONE
14932static bool Interp_DecPopSint64(InterpState &S, CodePtr &PC) {
14933 {
14934 CodePtr OpPC = PC;
14935 const auto V0 = ReadArg<bool>(S, PC);
14936 if (!DecPop<PT_Sint64>(S, OpPC, V0))
14937 return false;
14938 }
14939#if USE_TAILCALLS
14940 MUSTTAIL return InterpNext(S, PC);
14941#else
14942 return true;
14943#endif
14944}
14945PRESERVE_NONE
14946static bool Interp_DecPopUint64(InterpState &S, CodePtr &PC) {
14947 {
14948 CodePtr OpPC = PC;
14949 const auto V0 = ReadArg<bool>(S, PC);
14950 if (!DecPop<PT_Uint64>(S, OpPC, V0))
14951 return false;
14952 }
14953#if USE_TAILCALLS
14954 MUSTTAIL return InterpNext(S, PC);
14955#else
14956 return true;
14957#endif
14958}
14959PRESERVE_NONE
14960static bool Interp_DecPopIntAP(InterpState &S, CodePtr &PC) {
14961 {
14962 CodePtr OpPC = PC;
14963 const auto V0 = ReadArg<bool>(S, PC);
14964 if (!DecPop<PT_IntAP>(S, OpPC, V0))
14965 return false;
14966 }
14967#if USE_TAILCALLS
14968 MUSTTAIL return InterpNext(S, PC);
14969#else
14970 return true;
14971#endif
14972}
14973PRESERVE_NONE
14974static bool Interp_DecPopIntAPS(InterpState &S, CodePtr &PC) {
14975 {
14976 CodePtr OpPC = PC;
14977 const auto V0 = ReadArg<bool>(S, PC);
14978 if (!DecPop<PT_IntAPS>(S, OpPC, V0))
14979 return false;
14980 }
14981#if USE_TAILCALLS
14982 MUSTTAIL return InterpNext(S, PC);
14983#else
14984 return true;
14985#endif
14986}
14987PRESERVE_NONE
14988static bool Interp_DecPopBool(InterpState &S, CodePtr &PC) {
14989 {
14990 CodePtr OpPC = PC;
14991 const auto V0 = ReadArg<bool>(S, PC);
14992 if (!DecPop<PT_Bool>(S, OpPC, V0))
14993 return false;
14994 }
14995#if USE_TAILCALLS
14996 MUSTTAIL return InterpNext(S, PC);
14997#else
14998 return true;
14999#endif
15000}
15001PRESERVE_NONE
15002static bool Interp_DecPopFixedPoint(InterpState &S, CodePtr &PC) {
15003 {
15004 CodePtr OpPC = PC;
15005 const auto V0 = ReadArg<bool>(S, PC);
15006 if (!DecPop<PT_FixedPoint>(S, OpPC, V0))
15007 return false;
15008 }
15009#if USE_TAILCALLS
15010 MUSTTAIL return InterpNext(S, PC);
15011#else
15012 return true;
15013#endif
15014}
15015#endif
15016#ifdef GET_DISASM
15017case OP_DecPopSint8:
15018 Text.Op = PrintName("DecPopSint8");
15019 Text.Args.push_back(printArg<bool>(P, PC));
15020 break;
15021case OP_DecPopUint8:
15022 Text.Op = PrintName("DecPopUint8");
15023 Text.Args.push_back(printArg<bool>(P, PC));
15024 break;
15025case OP_DecPopSint16:
15026 Text.Op = PrintName("DecPopSint16");
15027 Text.Args.push_back(printArg<bool>(P, PC));
15028 break;
15029case OP_DecPopUint16:
15030 Text.Op = PrintName("DecPopUint16");
15031 Text.Args.push_back(printArg<bool>(P, PC));
15032 break;
15033case OP_DecPopSint32:
15034 Text.Op = PrintName("DecPopSint32");
15035 Text.Args.push_back(printArg<bool>(P, PC));
15036 break;
15037case OP_DecPopUint32:
15038 Text.Op = PrintName("DecPopUint32");
15039 Text.Args.push_back(printArg<bool>(P, PC));
15040 break;
15041case OP_DecPopSint64:
15042 Text.Op = PrintName("DecPopSint64");
15043 Text.Args.push_back(printArg<bool>(P, PC));
15044 break;
15045case OP_DecPopUint64:
15046 Text.Op = PrintName("DecPopUint64");
15047 Text.Args.push_back(printArg<bool>(P, PC));
15048 break;
15049case OP_DecPopIntAP:
15050 Text.Op = PrintName("DecPopIntAP");
15051 Text.Args.push_back(printArg<bool>(P, PC));
15052 break;
15053case OP_DecPopIntAPS:
15054 Text.Op = PrintName("DecPopIntAPS");
15055 Text.Args.push_back(printArg<bool>(P, PC));
15056 break;
15057case OP_DecPopBool:
15058 Text.Op = PrintName("DecPopBool");
15059 Text.Args.push_back(printArg<bool>(P, PC));
15060 break;
15061case OP_DecPopFixedPoint:
15062 Text.Op = PrintName("DecPopFixedPoint");
15063 Text.Args.push_back(printArg<bool>(P, PC));
15064 break;
15065#endif
15066#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15067bool emitDecPopSint8( bool , SourceInfo);
15068bool emitDecPopUint8( bool , SourceInfo);
15069bool emitDecPopSint16( bool , SourceInfo);
15070bool emitDecPopUint16( bool , SourceInfo);
15071bool emitDecPopSint32( bool , SourceInfo);
15072bool emitDecPopUint32( bool , SourceInfo);
15073bool emitDecPopSint64( bool , SourceInfo);
15074bool emitDecPopUint64( bool , SourceInfo);
15075bool emitDecPopIntAP( bool , SourceInfo);
15076bool emitDecPopIntAPS( bool , SourceInfo);
15077bool emitDecPopBool( bool , SourceInfo);
15078bool emitDecPopFixedPoint( bool , SourceInfo);
15079#endif
15080#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15081[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
15082#endif
15083#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15084bool
15085#if defined(GET_EVAL_IMPL)
15086EvalEmitter
15087#else
15088ByteCodeEmitter
15089#endif
15090::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
15091 switch (T0) {
15092 case PT_Sint8:
15093 return emitDecPopSint8(A0, I);
15094 case PT_Uint8:
15095 return emitDecPopUint8(A0, I);
15096 case PT_Sint16:
15097 return emitDecPopSint16(A0, I);
15098 case PT_Uint16:
15099 return emitDecPopUint16(A0, I);
15100 case PT_Sint32:
15101 return emitDecPopSint32(A0, I);
15102 case PT_Uint32:
15103 return emitDecPopUint32(A0, I);
15104 case PT_Sint64:
15105 return emitDecPopSint64(A0, I);
15106 case PT_Uint64:
15107 return emitDecPopUint64(A0, I);
15108 case PT_IntAP:
15109 return emitDecPopIntAP(A0, I);
15110 case PT_IntAPS:
15111 return emitDecPopIntAPS(A0, I);
15112 case PT_Bool:
15113 return emitDecPopBool(A0, I);
15114 case PT_FixedPoint:
15115 return emitDecPopFixedPoint(A0, I);
15116 default: llvm_unreachable("invalid type: emitDecPop");
15117 }
15118 llvm_unreachable("invalid enum value");
15119}
15120#endif
15121#ifdef GET_LINK_IMPL
15122bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
15123 return emitOp<bool>(OP_DecPopSint8, A0, L);
15124}
15125bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
15126 return emitOp<bool>(OP_DecPopUint8, A0, L);
15127}
15128bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
15129 return emitOp<bool>(OP_DecPopSint16, A0, L);
15130}
15131bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
15132 return emitOp<bool>(OP_DecPopUint16, A0, L);
15133}
15134bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
15135 return emitOp<bool>(OP_DecPopSint32, A0, L);
15136}
15137bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
15138 return emitOp<bool>(OP_DecPopUint32, A0, L);
15139}
15140bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
15141 return emitOp<bool>(OP_DecPopSint64, A0, L);
15142}
15143bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
15144 return emitOp<bool>(OP_DecPopUint64, A0, L);
15145}
15146bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
15147 return emitOp<bool>(OP_DecPopIntAP, A0, L);
15148}
15149bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
15150 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
15151}
15152bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
15153 return emitOp<bool>(OP_DecPopBool, A0, L);
15154}
15155bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
15156 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
15157}
15158#endif
15159#ifdef GET_EVAL_IMPL
15160bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
15161 if (!isActive()) return true;
15162 CurrentSource = L;
15163 return DecPop<PT_Sint8>(S, OpPC, A0);
15164}
15165bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
15166 if (!isActive()) return true;
15167 CurrentSource = L;
15168 return DecPop<PT_Uint8>(S, OpPC, A0);
15169}
15170bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
15171 if (!isActive()) return true;
15172 CurrentSource = L;
15173 return DecPop<PT_Sint16>(S, OpPC, A0);
15174}
15175bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
15176 if (!isActive()) return true;
15177 CurrentSource = L;
15178 return DecPop<PT_Uint16>(S, OpPC, A0);
15179}
15180bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
15181 if (!isActive()) return true;
15182 CurrentSource = L;
15183 return DecPop<PT_Sint32>(S, OpPC, A0);
15184}
15185bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
15186 if (!isActive()) return true;
15187 CurrentSource = L;
15188 return DecPop<PT_Uint32>(S, OpPC, A0);
15189}
15190bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
15191 if (!isActive()) return true;
15192 CurrentSource = L;
15193 return DecPop<PT_Sint64>(S, OpPC, A0);
15194}
15195bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
15196 if (!isActive()) return true;
15197 CurrentSource = L;
15198 return DecPop<PT_Uint64>(S, OpPC, A0);
15199}
15200bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
15201 if (!isActive()) return true;
15202 CurrentSource = L;
15203 return DecPop<PT_IntAP>(S, OpPC, A0);
15204}
15205bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
15206 if (!isActive()) return true;
15207 CurrentSource = L;
15208 return DecPop<PT_IntAPS>(S, OpPC, A0);
15209}
15210bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
15211 if (!isActive()) return true;
15212 CurrentSource = L;
15213 return DecPop<PT_Bool>(S, OpPC, A0);
15214}
15215bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
15216 if (!isActive()) return true;
15217 CurrentSource = L;
15218 return DecPop<PT_FixedPoint>(S, OpPC, A0);
15219}
15220#endif
15221#ifdef GET_OPCODE_NAMES
15222OP_DecPopBitfieldSint8,
15223OP_DecPopBitfieldUint8,
15224OP_DecPopBitfieldSint16,
15225OP_DecPopBitfieldUint16,
15226OP_DecPopBitfieldSint32,
15227OP_DecPopBitfieldUint32,
15228OP_DecPopBitfieldSint64,
15229OP_DecPopBitfieldUint64,
15230OP_DecPopBitfieldIntAP,
15231OP_DecPopBitfieldIntAPS,
15232OP_DecPopBitfieldBool,
15233OP_DecPopBitfieldFixedPoint,
15234#endif
15235#ifdef GET_INTERPFN_LIST
15236&Interp_DecPopBitfieldSint8,
15237&Interp_DecPopBitfieldUint8,
15238&Interp_DecPopBitfieldSint16,
15239&Interp_DecPopBitfieldUint16,
15240&Interp_DecPopBitfieldSint32,
15241&Interp_DecPopBitfieldUint32,
15242&Interp_DecPopBitfieldSint64,
15243&Interp_DecPopBitfieldUint64,
15244&Interp_DecPopBitfieldIntAP,
15245&Interp_DecPopBitfieldIntAPS,
15246&Interp_DecPopBitfieldBool,
15247&Interp_DecPopBitfieldFixedPoint,
15248#endif
15249#ifdef GET_INTERPFN_DISPATCHERS
15250PRESERVE_NONE
15251static bool Interp_DecPopBitfieldSint8(InterpState &S, CodePtr &PC) {
15252 {
15253 CodePtr OpPC = PC;
15254 const auto V0 = ReadArg<bool>(S, PC);
15255 const auto V1 = ReadArg<uint32_t>(S, PC);
15256 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
15257 return false;
15258 }
15259#if USE_TAILCALLS
15260 MUSTTAIL return InterpNext(S, PC);
15261#else
15262 return true;
15263#endif
15264}
15265PRESERVE_NONE
15266static bool Interp_DecPopBitfieldUint8(InterpState &S, CodePtr &PC) {
15267 {
15268 CodePtr OpPC = PC;
15269 const auto V0 = ReadArg<bool>(S, PC);
15270 const auto V1 = ReadArg<uint32_t>(S, PC);
15271 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
15272 return false;
15273 }
15274#if USE_TAILCALLS
15275 MUSTTAIL return InterpNext(S, PC);
15276#else
15277 return true;
15278#endif
15279}
15280PRESERVE_NONE
15281static bool Interp_DecPopBitfieldSint16(InterpState &S, CodePtr &PC) {
15282 {
15283 CodePtr OpPC = PC;
15284 const auto V0 = ReadArg<bool>(S, PC);
15285 const auto V1 = ReadArg<uint32_t>(S, PC);
15286 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
15287 return false;
15288 }
15289#if USE_TAILCALLS
15290 MUSTTAIL return InterpNext(S, PC);
15291#else
15292 return true;
15293#endif
15294}
15295PRESERVE_NONE
15296static bool Interp_DecPopBitfieldUint16(InterpState &S, CodePtr &PC) {
15297 {
15298 CodePtr OpPC = PC;
15299 const auto V0 = ReadArg<bool>(S, PC);
15300 const auto V1 = ReadArg<uint32_t>(S, PC);
15301 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
15302 return false;
15303 }
15304#if USE_TAILCALLS
15305 MUSTTAIL return InterpNext(S, PC);
15306#else
15307 return true;
15308#endif
15309}
15310PRESERVE_NONE
15311static bool Interp_DecPopBitfieldSint32(InterpState &S, CodePtr &PC) {
15312 {
15313 CodePtr OpPC = PC;
15314 const auto V0 = ReadArg<bool>(S, PC);
15315 const auto V1 = ReadArg<uint32_t>(S, PC);
15316 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
15317 return false;
15318 }
15319#if USE_TAILCALLS
15320 MUSTTAIL return InterpNext(S, PC);
15321#else
15322 return true;
15323#endif
15324}
15325PRESERVE_NONE
15326static bool Interp_DecPopBitfieldUint32(InterpState &S, CodePtr &PC) {
15327 {
15328 CodePtr OpPC = PC;
15329 const auto V0 = ReadArg<bool>(S, PC);
15330 const auto V1 = ReadArg<uint32_t>(S, PC);
15331 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
15332 return false;
15333 }
15334#if USE_TAILCALLS
15335 MUSTTAIL return InterpNext(S, PC);
15336#else
15337 return true;
15338#endif
15339}
15340PRESERVE_NONE
15341static bool Interp_DecPopBitfieldSint64(InterpState &S, CodePtr &PC) {
15342 {
15343 CodePtr OpPC = PC;
15344 const auto V0 = ReadArg<bool>(S, PC);
15345 const auto V1 = ReadArg<uint32_t>(S, PC);
15346 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
15347 return false;
15348 }
15349#if USE_TAILCALLS
15350 MUSTTAIL return InterpNext(S, PC);
15351#else
15352 return true;
15353#endif
15354}
15355PRESERVE_NONE
15356static bool Interp_DecPopBitfieldUint64(InterpState &S, CodePtr &PC) {
15357 {
15358 CodePtr OpPC = PC;
15359 const auto V0 = ReadArg<bool>(S, PC);
15360 const auto V1 = ReadArg<uint32_t>(S, PC);
15361 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
15362 return false;
15363 }
15364#if USE_TAILCALLS
15365 MUSTTAIL return InterpNext(S, PC);
15366#else
15367 return true;
15368#endif
15369}
15370PRESERVE_NONE
15371static bool Interp_DecPopBitfieldIntAP(InterpState &S, CodePtr &PC) {
15372 {
15373 CodePtr OpPC = PC;
15374 const auto V0 = ReadArg<bool>(S, PC);
15375 const auto V1 = ReadArg<uint32_t>(S, PC);
15376 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
15377 return false;
15378 }
15379#if USE_TAILCALLS
15380 MUSTTAIL return InterpNext(S, PC);
15381#else
15382 return true;
15383#endif
15384}
15385PRESERVE_NONE
15386static bool Interp_DecPopBitfieldIntAPS(InterpState &S, CodePtr &PC) {
15387 {
15388 CodePtr OpPC = PC;
15389 const auto V0 = ReadArg<bool>(S, PC);
15390 const auto V1 = ReadArg<uint32_t>(S, PC);
15391 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
15392 return false;
15393 }
15394#if USE_TAILCALLS
15395 MUSTTAIL return InterpNext(S, PC);
15396#else
15397 return true;
15398#endif
15399}
15400PRESERVE_NONE
15401static bool Interp_DecPopBitfieldBool(InterpState &S, CodePtr &PC) {
15402 {
15403 CodePtr OpPC = PC;
15404 const auto V0 = ReadArg<bool>(S, PC);
15405 const auto V1 = ReadArg<uint32_t>(S, PC);
15406 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1))
15407 return false;
15408 }
15409#if USE_TAILCALLS
15410 MUSTTAIL return InterpNext(S, PC);
15411#else
15412 return true;
15413#endif
15414}
15415PRESERVE_NONE
15416static bool Interp_DecPopBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
15417 {
15418 CodePtr OpPC = PC;
15419 const auto V0 = ReadArg<bool>(S, PC);
15420 const auto V1 = ReadArg<uint32_t>(S, PC);
15421 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
15422 return false;
15423 }
15424#if USE_TAILCALLS
15425 MUSTTAIL return InterpNext(S, PC);
15426#else
15427 return true;
15428#endif
15429}
15430#endif
15431#ifdef GET_DISASM
15432case OP_DecPopBitfieldSint8:
15433 Text.Op = PrintName("DecPopBitfieldSint8");
15434 Text.Args.push_back(printArg<bool>(P, PC));
15435 Text.Args.push_back(printArg<uint32_t>(P, PC));
15436 break;
15437case OP_DecPopBitfieldUint8:
15438 Text.Op = PrintName("DecPopBitfieldUint8");
15439 Text.Args.push_back(printArg<bool>(P, PC));
15440 Text.Args.push_back(printArg<uint32_t>(P, PC));
15441 break;
15442case OP_DecPopBitfieldSint16:
15443 Text.Op = PrintName("DecPopBitfieldSint16");
15444 Text.Args.push_back(printArg<bool>(P, PC));
15445 Text.Args.push_back(printArg<uint32_t>(P, PC));
15446 break;
15447case OP_DecPopBitfieldUint16:
15448 Text.Op = PrintName("DecPopBitfieldUint16");
15449 Text.Args.push_back(printArg<bool>(P, PC));
15450 Text.Args.push_back(printArg<uint32_t>(P, PC));
15451 break;
15452case OP_DecPopBitfieldSint32:
15453 Text.Op = PrintName("DecPopBitfieldSint32");
15454 Text.Args.push_back(printArg<bool>(P, PC));
15455 Text.Args.push_back(printArg<uint32_t>(P, PC));
15456 break;
15457case OP_DecPopBitfieldUint32:
15458 Text.Op = PrintName("DecPopBitfieldUint32");
15459 Text.Args.push_back(printArg<bool>(P, PC));
15460 Text.Args.push_back(printArg<uint32_t>(P, PC));
15461 break;
15462case OP_DecPopBitfieldSint64:
15463 Text.Op = PrintName("DecPopBitfieldSint64");
15464 Text.Args.push_back(printArg<bool>(P, PC));
15465 Text.Args.push_back(printArg<uint32_t>(P, PC));
15466 break;
15467case OP_DecPopBitfieldUint64:
15468 Text.Op = PrintName("DecPopBitfieldUint64");
15469 Text.Args.push_back(printArg<bool>(P, PC));
15470 Text.Args.push_back(printArg<uint32_t>(P, PC));
15471 break;
15472case OP_DecPopBitfieldIntAP:
15473 Text.Op = PrintName("DecPopBitfieldIntAP");
15474 Text.Args.push_back(printArg<bool>(P, PC));
15475 Text.Args.push_back(printArg<uint32_t>(P, PC));
15476 break;
15477case OP_DecPopBitfieldIntAPS:
15478 Text.Op = PrintName("DecPopBitfieldIntAPS");
15479 Text.Args.push_back(printArg<bool>(P, PC));
15480 Text.Args.push_back(printArg<uint32_t>(P, PC));
15481 break;
15482case OP_DecPopBitfieldBool:
15483 Text.Op = PrintName("DecPopBitfieldBool");
15484 Text.Args.push_back(printArg<bool>(P, PC));
15485 Text.Args.push_back(printArg<uint32_t>(P, PC));
15486 break;
15487case OP_DecPopBitfieldFixedPoint:
15488 Text.Op = PrintName("DecPopBitfieldFixedPoint");
15489 Text.Args.push_back(printArg<bool>(P, PC));
15490 Text.Args.push_back(printArg<uint32_t>(P, PC));
15491 break;
15492#endif
15493#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15494bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
15495bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
15496bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
15497bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
15498bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
15499bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
15500bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
15501bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
15502bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
15503bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
15504bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
15505bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
15506#endif
15507#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15508[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
15509#endif
15510#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15511bool
15512#if defined(GET_EVAL_IMPL)
15513EvalEmitter
15514#else
15515ByteCodeEmitter
15516#endif
15517::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
15518 switch (T0) {
15519 case PT_Sint8:
15520 return emitDecPopBitfieldSint8(A0, A1, I);
15521 case PT_Uint8:
15522 return emitDecPopBitfieldUint8(A0, A1, I);
15523 case PT_Sint16:
15524 return emitDecPopBitfieldSint16(A0, A1, I);
15525 case PT_Uint16:
15526 return emitDecPopBitfieldUint16(A0, A1, I);
15527 case PT_Sint32:
15528 return emitDecPopBitfieldSint32(A0, A1, I);
15529 case PT_Uint32:
15530 return emitDecPopBitfieldUint32(A0, A1, I);
15531 case PT_Sint64:
15532 return emitDecPopBitfieldSint64(A0, A1, I);
15533 case PT_Uint64:
15534 return emitDecPopBitfieldUint64(A0, A1, I);
15535 case PT_IntAP:
15536 return emitDecPopBitfieldIntAP(A0, A1, I);
15537 case PT_IntAPS:
15538 return emitDecPopBitfieldIntAPS(A0, A1, I);
15539 case PT_Bool:
15540 return emitDecPopBitfieldBool(A0, A1, I);
15541 case PT_FixedPoint:
15542 return emitDecPopBitfieldFixedPoint(A0, A1, I);
15543 default: llvm_unreachable("invalid type: emitDecPopBitfield");
15544 }
15545 llvm_unreachable("invalid enum value");
15546}
15547#endif
15548#ifdef GET_LINK_IMPL
15549bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15550 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
15551}
15552bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15553 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
15554}
15555bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15556 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
15557}
15558bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15559 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
15560}
15561bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15562 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
15563}
15564bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15565 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
15566}
15567bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15568 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
15569}
15570bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15571 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
15572}
15573bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15574 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
15575}
15576bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15577 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
15578}
15579bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15580 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
15581}
15582bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15583 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
15584}
15585#endif
15586#ifdef GET_EVAL_IMPL
15587bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15588 if (!isActive()) return true;
15589 CurrentSource = L;
15590 return DecPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
15591}
15592bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15593 if (!isActive()) return true;
15594 CurrentSource = L;
15595 return DecPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
15596}
15597bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15598 if (!isActive()) return true;
15599 CurrentSource = L;
15600 return DecPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
15601}
15602bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15603 if (!isActive()) return true;
15604 CurrentSource = L;
15605 return DecPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
15606}
15607bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15608 if (!isActive()) return true;
15609 CurrentSource = L;
15610 return DecPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
15611}
15612bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15613 if (!isActive()) return true;
15614 CurrentSource = L;
15615 return DecPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
15616}
15617bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15618 if (!isActive()) return true;
15619 CurrentSource = L;
15620 return DecPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
15621}
15622bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15623 if (!isActive()) return true;
15624 CurrentSource = L;
15625 return DecPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
15626}
15627bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15628 if (!isActive()) return true;
15629 CurrentSource = L;
15630 return DecPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
15631}
15632bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15633 if (!isActive()) return true;
15634 CurrentSource = L;
15635 return DecPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
15636}
15637bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15638 if (!isActive()) return true;
15639 CurrentSource = L;
15640 return DecPopBitfield<PT_Bool>(S, OpPC, A0, A1);
15641}
15642bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15643 if (!isActive()) return true;
15644 CurrentSource = L;
15645 return DecPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
15646}
15647#endif
15648#ifdef GET_OPCODE_NAMES
15649OP_DecPtr,
15650#endif
15651#ifdef GET_INTERPFN_LIST
15652&Interp_DecPtr,
15653#endif
15654#ifdef GET_INTERPFN_DISPATCHERS
15655PRESERVE_NONE
15656static bool Interp_DecPtr(InterpState &S, CodePtr &PC) {
15657 if (!DecPtr(S, PC))
15658 return false;
15659#if USE_TAILCALLS
15660 MUSTTAIL return InterpNext(S, PC);
15661#else
15662 return true;
15663#endif
15664}
15665#endif
15666#ifdef GET_DISASM
15667case OP_DecPtr:
15668 Text.Op = PrintName("DecPtr");
15669 break;
15670#endif
15671#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15672bool emitDecPtr(SourceInfo);
15673#endif
15674#ifdef GET_LINK_IMPL
15675bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
15676 return emitOp<>(OP_DecPtr, L);
15677}
15678#endif
15679#ifdef GET_EVAL_IMPL
15680bool EvalEmitter::emitDecPtr(SourceInfo L) {
15681 if (!isActive()) return true;
15682 CurrentSource = L;
15683 return DecPtr(S, OpPC);
15684}
15685#endif
15686#ifdef GET_OPCODE_NAMES
15687OP_DecayPtrPtrPtr,
15688OP_DecayPtrPtrMemberPtr,
15689OP_DecayPtrMemberPtrPtr,
15690OP_DecayPtrMemberPtrMemberPtr,
15691#endif
15692#ifdef GET_INTERPFN_LIST
15693&Interp_DecayPtrPtrPtr,
15694&Interp_DecayPtrPtrMemberPtr,
15695&Interp_DecayPtrMemberPtrPtr,
15696&Interp_DecayPtrMemberPtrMemberPtr,
15697#endif
15698#ifdef GET_INTERPFN_DISPATCHERS
15699PRESERVE_NONE
15700static bool Interp_DecayPtrPtrPtr(InterpState &S, CodePtr &PC) {
15701 if (!DecayPtr<PT_Ptr, PT_Ptr>(S, PC))
15702 return false;
15703#if USE_TAILCALLS
15704 MUSTTAIL return InterpNext(S, PC);
15705#else
15706 return true;
15707#endif
15708}
15709PRESERVE_NONE
15710static bool Interp_DecayPtrPtrMemberPtr(InterpState &S, CodePtr &PC) {
15711 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S, PC))
15712 return false;
15713#if USE_TAILCALLS
15714 MUSTTAIL return InterpNext(S, PC);
15715#else
15716 return true;
15717#endif
15718}
15719PRESERVE_NONE
15720static bool Interp_DecayPtrMemberPtrPtr(InterpState &S, CodePtr &PC) {
15721 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S, PC))
15722 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_DecayPtrMemberPtrMemberPtr(InterpState &S, CodePtr &PC) {
15731 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, PC))
15732 return false;
15733#if USE_TAILCALLS
15734 MUSTTAIL return InterpNext(S, PC);
15735#else
15736 return true;
15737#endif
15738}
15739#endif
15740#ifdef GET_DISASM
15741case OP_DecayPtrPtrPtr:
15742 Text.Op = PrintName("DecayPtrPtrPtr");
15743 break;
15744case OP_DecayPtrPtrMemberPtr:
15745 Text.Op = PrintName("DecayPtrPtrMemberPtr");
15746 break;
15747case OP_DecayPtrMemberPtrPtr:
15748 Text.Op = PrintName("DecayPtrMemberPtrPtr");
15749 break;
15750case OP_DecayPtrMemberPtrMemberPtr:
15751 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
15752 break;
15753#endif
15754#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15755bool emitDecayPtrPtrPtr(SourceInfo);
15756bool emitDecayPtrPtrMemberPtr(SourceInfo);
15757bool emitDecayPtrMemberPtrPtr(SourceInfo);
15758bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
15759#endif
15760#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15761[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
15762#endif
15763#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15764bool
15765#if defined(GET_EVAL_IMPL)
15766EvalEmitter
15767#else
15768ByteCodeEmitter
15769#endif
15770::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
15771 switch (T0) {
15772 case PT_Ptr:
15773 switch (T1) {
15774 case PT_Ptr:
15775 return emitDecayPtrPtrPtr(I);
15776 case PT_MemberPtr:
15777 return emitDecayPtrPtrMemberPtr(I);
15778 default: llvm_unreachable("invalid type: emitDecayPtr");
15779 }
15780 llvm_unreachable("invalid enum value");
15781 case PT_MemberPtr:
15782 switch (T1) {
15783 case PT_Ptr:
15784 return emitDecayPtrMemberPtrPtr(I);
15785 case PT_MemberPtr:
15786 return emitDecayPtrMemberPtrMemberPtr(I);
15787 default: llvm_unreachable("invalid type: emitDecayPtr");
15788 }
15789 llvm_unreachable("invalid enum value");
15790 default: llvm_unreachable("invalid type: emitDecayPtr");
15791 }
15792 llvm_unreachable("invalid enum value");
15793}
15794#endif
15795#ifdef GET_LINK_IMPL
15796bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15797 return emitOp<>(OP_DecayPtrPtrPtr, L);
15798}
15799bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15800 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
15801}
15802bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15803 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
15804}
15805bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15806 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
15807}
15808#endif
15809#ifdef GET_EVAL_IMPL
15810bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15811 if (!isActive()) return true;
15812 CurrentSource = L;
15813 return DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC);
15814}
15815bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15816 if (!isActive()) return true;
15817 CurrentSource = L;
15818 return DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC);
15819}
15820bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15821 if (!isActive()) return true;
15822 CurrentSource = L;
15823 return DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC);
15824}
15825bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15826 if (!isActive()) return true;
15827 CurrentSource = L;
15828 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
15829}
15830#endif
15831#ifdef GET_OPCODE_NAMES
15832OP_Decf,
15833#endif
15834#ifdef GET_INTERPFN_LIST
15835&Interp_Decf,
15836#endif
15837#ifdef GET_INTERPFN_DISPATCHERS
15838PRESERVE_NONE
15839static bool Interp_Decf(InterpState &S, CodePtr &PC) {
15840 {
15841 CodePtr OpPC = PC;
15842 const auto V0 = ReadArg<uint32_t>(S, PC);
15843 if (!Decf(S, OpPC, V0))
15844 return false;
15845 }
15846#if USE_TAILCALLS
15847 MUSTTAIL return InterpNext(S, PC);
15848#else
15849 return true;
15850#endif
15851}
15852#endif
15853#ifdef GET_DISASM
15854case OP_Decf:
15855 Text.Op = PrintName("Decf");
15856 Text.Args.push_back(printArg<uint32_t>(P, PC));
15857 break;
15858#endif
15859#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15860bool emitDecf( uint32_t , SourceInfo);
15861#endif
15862#ifdef GET_LINK_IMPL
15863bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15864 return emitOp<uint32_t>(OP_Decf, A0, L);
15865}
15866#endif
15867#ifdef GET_EVAL_IMPL
15868bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15869 if (!isActive()) return true;
15870 CurrentSource = L;
15871 return Decf(S, OpPC, A0);
15872}
15873#endif
15874#ifdef GET_OPCODE_NAMES
15875OP_DecfPop,
15876#endif
15877#ifdef GET_INTERPFN_LIST
15878&Interp_DecfPop,
15879#endif
15880#ifdef GET_INTERPFN_DISPATCHERS
15881PRESERVE_NONE
15882static bool Interp_DecfPop(InterpState &S, CodePtr &PC) {
15883 {
15884 CodePtr OpPC = PC;
15885 const auto V0 = ReadArg<uint32_t>(S, PC);
15886 if (!DecfPop(S, OpPC, V0))
15887 return false;
15888 }
15889#if USE_TAILCALLS
15890 MUSTTAIL return InterpNext(S, PC);
15891#else
15892 return true;
15893#endif
15894}
15895#endif
15896#ifdef GET_DISASM
15897case OP_DecfPop:
15898 Text.Op = PrintName("DecfPop");
15899 Text.Args.push_back(printArg<uint32_t>(P, PC));
15900 break;
15901#endif
15902#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15903bool emitDecfPop( uint32_t , SourceInfo);
15904#endif
15905#ifdef GET_LINK_IMPL
15906bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15907 return emitOp<uint32_t>(OP_DecfPop, A0, L);
15908}
15909#endif
15910#ifdef GET_EVAL_IMPL
15911bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15912 if (!isActive()) return true;
15913 CurrentSource = L;
15914 return DecfPop(S, OpPC, A0);
15915}
15916#endif
15917#ifdef GET_OPCODE_NAMES
15918OP_Destroy,
15919#endif
15920#ifdef GET_INTERPFN_LIST
15921&Interp_Destroy,
15922#endif
15923#ifdef GET_INTERPFN_DISPATCHERS
15924PRESERVE_NONE
15925static bool Interp_Destroy(InterpState &S, CodePtr &PC) {
15926 {
15927 CodePtr OpPC = PC;
15928 const auto V0 = ReadArg<uint32_t>(S, PC);
15929 if (!Destroy(S, OpPC, V0))
15930 return false;
15931 }
15932#if USE_TAILCALLS
15933 MUSTTAIL return InterpNext(S, PC);
15934#else
15935 return true;
15936#endif
15937}
15938#endif
15939#ifdef GET_DISASM
15940case OP_Destroy:
15941 Text.Op = PrintName("Destroy");
15942 Text.Args.push_back(printArg<uint32_t>(P, PC));
15943 break;
15944#endif
15945#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15946bool emitDestroy( uint32_t , SourceInfo);
15947#endif
15948#ifdef GET_LINK_IMPL
15949bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
15950 return emitOp<uint32_t>(OP_Destroy, A0, L);
15951}
15952#endif
15953#ifdef GET_OPCODE_NAMES
15954OP_DiagTypeid,
15955#endif
15956#ifdef GET_INTERPFN_LIST
15957&Interp_DiagTypeid,
15958#endif
15959#ifdef GET_INTERPFN_DISPATCHERS
15960PRESERVE_NONE
15961static bool Interp_DiagTypeid(InterpState &S, CodePtr &PC) {
15962 if (!DiagTypeid(S, PC))
15963 return false;
15964#if USE_TAILCALLS
15965 MUSTTAIL return InterpNext(S, PC);
15966#else
15967 return true;
15968#endif
15969}
15970#endif
15971#ifdef GET_DISASM
15972case OP_DiagTypeid:
15973 Text.Op = PrintName("DiagTypeid");
15974 break;
15975#endif
15976#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15977bool emitDiagTypeid(SourceInfo);
15978#endif
15979#ifdef GET_LINK_IMPL
15980bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
15981 return emitOp<>(OP_DiagTypeid, L);
15982}
15983#endif
15984#ifdef GET_EVAL_IMPL
15985bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
15986 if (!isActive()) return true;
15987 CurrentSource = L;
15988 return DiagTypeid(S, OpPC);
15989}
15990#endif
15991#ifdef GET_OPCODE_NAMES
15992OP_DivSint8,
15993OP_DivUint8,
15994OP_DivSint16,
15995OP_DivUint16,
15996OP_DivSint32,
15997OP_DivUint32,
15998OP_DivSint64,
15999OP_DivUint64,
16000OP_DivIntAP,
16001OP_DivIntAPS,
16002OP_DivFixedPoint,
16003#endif
16004#ifdef GET_INTERPFN_LIST
16005&Interp_DivSint8,
16006&Interp_DivUint8,
16007&Interp_DivSint16,
16008&Interp_DivUint16,
16009&Interp_DivSint32,
16010&Interp_DivUint32,
16011&Interp_DivSint64,
16012&Interp_DivUint64,
16013&Interp_DivIntAP,
16014&Interp_DivIntAPS,
16015&Interp_DivFixedPoint,
16016#endif
16017#ifdef GET_INTERPFN_DISPATCHERS
16018PRESERVE_NONE
16019static bool Interp_DivSint8(InterpState &S, CodePtr &PC) {
16020 if (!Div<PT_Sint8>(S, PC))
16021 return false;
16022#if USE_TAILCALLS
16023 MUSTTAIL return InterpNext(S, PC);
16024#else
16025 return true;
16026#endif
16027}
16028PRESERVE_NONE
16029static bool Interp_DivUint8(InterpState &S, CodePtr &PC) {
16030 if (!Div<PT_Uint8>(S, PC))
16031 return false;
16032#if USE_TAILCALLS
16033 MUSTTAIL return InterpNext(S, PC);
16034#else
16035 return true;
16036#endif
16037}
16038PRESERVE_NONE
16039static bool Interp_DivSint16(InterpState &S, CodePtr &PC) {
16040 if (!Div<PT_Sint16>(S, PC))
16041 return false;
16042#if USE_TAILCALLS
16043 MUSTTAIL return InterpNext(S, PC);
16044#else
16045 return true;
16046#endif
16047}
16048PRESERVE_NONE
16049static bool Interp_DivUint16(InterpState &S, CodePtr &PC) {
16050 if (!Div<PT_Uint16>(S, PC))
16051 return false;
16052#if USE_TAILCALLS
16053 MUSTTAIL return InterpNext(S, PC);
16054#else
16055 return true;
16056#endif
16057}
16058PRESERVE_NONE
16059static bool Interp_DivSint32(InterpState &S, CodePtr &PC) {
16060 if (!Div<PT_Sint32>(S, PC))
16061 return false;
16062#if USE_TAILCALLS
16063 MUSTTAIL return InterpNext(S, PC);
16064#else
16065 return true;
16066#endif
16067}
16068PRESERVE_NONE
16069static bool Interp_DivUint32(InterpState &S, CodePtr &PC) {
16070 if (!Div<PT_Uint32>(S, PC))
16071 return false;
16072#if USE_TAILCALLS
16073 MUSTTAIL return InterpNext(S, PC);
16074#else
16075 return true;
16076#endif
16077}
16078PRESERVE_NONE
16079static bool Interp_DivSint64(InterpState &S, CodePtr &PC) {
16080 if (!Div<PT_Sint64>(S, PC))
16081 return false;
16082#if USE_TAILCALLS
16083 MUSTTAIL return InterpNext(S, PC);
16084#else
16085 return true;
16086#endif
16087}
16088PRESERVE_NONE
16089static bool Interp_DivUint64(InterpState &S, CodePtr &PC) {
16090 if (!Div<PT_Uint64>(S, PC))
16091 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_DivIntAP(InterpState &S, CodePtr &PC) {
16100 if (!Div<PT_IntAP>(S, PC))
16101 return false;
16102#if USE_TAILCALLS
16103 MUSTTAIL return InterpNext(S, PC);
16104#else
16105 return true;
16106#endif
16107}
16108PRESERVE_NONE
16109static bool Interp_DivIntAPS(InterpState &S, CodePtr &PC) {
16110 if (!Div<PT_IntAPS>(S, PC))
16111 return false;
16112#if USE_TAILCALLS
16113 MUSTTAIL return InterpNext(S, PC);
16114#else
16115 return true;
16116#endif
16117}
16118PRESERVE_NONE
16119static bool Interp_DivFixedPoint(InterpState &S, CodePtr &PC) {
16120 if (!Div<PT_FixedPoint>(S, PC))
16121 return false;
16122#if USE_TAILCALLS
16123 MUSTTAIL return InterpNext(S, PC);
16124#else
16125 return true;
16126#endif
16127}
16128#endif
16129#ifdef GET_DISASM
16130case OP_DivSint8:
16131 Text.Op = PrintName("DivSint8");
16132 break;
16133case OP_DivUint8:
16134 Text.Op = PrintName("DivUint8");
16135 break;
16136case OP_DivSint16:
16137 Text.Op = PrintName("DivSint16");
16138 break;
16139case OP_DivUint16:
16140 Text.Op = PrintName("DivUint16");
16141 break;
16142case OP_DivSint32:
16143 Text.Op = PrintName("DivSint32");
16144 break;
16145case OP_DivUint32:
16146 Text.Op = PrintName("DivUint32");
16147 break;
16148case OP_DivSint64:
16149 Text.Op = PrintName("DivSint64");
16150 break;
16151case OP_DivUint64:
16152 Text.Op = PrintName("DivUint64");
16153 break;
16154case OP_DivIntAP:
16155 Text.Op = PrintName("DivIntAP");
16156 break;
16157case OP_DivIntAPS:
16158 Text.Op = PrintName("DivIntAPS");
16159 break;
16160case OP_DivFixedPoint:
16161 Text.Op = PrintName("DivFixedPoint");
16162 break;
16163#endif
16164#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16165bool emitDivSint8(SourceInfo);
16166bool emitDivUint8(SourceInfo);
16167bool emitDivSint16(SourceInfo);
16168bool emitDivUint16(SourceInfo);
16169bool emitDivSint32(SourceInfo);
16170bool emitDivUint32(SourceInfo);
16171bool emitDivSint64(SourceInfo);
16172bool emitDivUint64(SourceInfo);
16173bool emitDivIntAP(SourceInfo);
16174bool emitDivIntAPS(SourceInfo);
16175bool emitDivFixedPoint(SourceInfo);
16176#endif
16177#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16178[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
16179#endif
16180#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16181bool
16182#if defined(GET_EVAL_IMPL)
16183EvalEmitter
16184#else
16185ByteCodeEmitter
16186#endif
16187::emitDiv(PrimType T0, SourceInfo I) {
16188 switch (T0) {
16189 case PT_Sint8:
16190 return emitDivSint8(I);
16191 case PT_Uint8:
16192 return emitDivUint8(I);
16193 case PT_Sint16:
16194 return emitDivSint16(I);
16195 case PT_Uint16:
16196 return emitDivUint16(I);
16197 case PT_Sint32:
16198 return emitDivSint32(I);
16199 case PT_Uint32:
16200 return emitDivUint32(I);
16201 case PT_Sint64:
16202 return emitDivSint64(I);
16203 case PT_Uint64:
16204 return emitDivUint64(I);
16205 case PT_IntAP:
16206 return emitDivIntAP(I);
16207 case PT_IntAPS:
16208 return emitDivIntAPS(I);
16209 case PT_FixedPoint:
16210 return emitDivFixedPoint(I);
16211 default: llvm_unreachable("invalid type: emitDiv");
16212 }
16213 llvm_unreachable("invalid enum value");
16214}
16215#endif
16216#ifdef GET_LINK_IMPL
16217bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
16218 return emitOp<>(OP_DivSint8, L);
16219}
16220bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
16221 return emitOp<>(OP_DivUint8, L);
16222}
16223bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
16224 return emitOp<>(OP_DivSint16, L);
16225}
16226bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
16227 return emitOp<>(OP_DivUint16, L);
16228}
16229bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
16230 return emitOp<>(OP_DivSint32, L);
16231}
16232bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
16233 return emitOp<>(OP_DivUint32, L);
16234}
16235bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
16236 return emitOp<>(OP_DivSint64, L);
16237}
16238bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
16239 return emitOp<>(OP_DivUint64, L);
16240}
16241bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
16242 return emitOp<>(OP_DivIntAP, L);
16243}
16244bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
16245 return emitOp<>(OP_DivIntAPS, L);
16246}
16247bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
16248 return emitOp<>(OP_DivFixedPoint, L);
16249}
16250#endif
16251#ifdef GET_EVAL_IMPL
16252bool EvalEmitter::emitDivSint8(SourceInfo L) {
16253 if (!isActive()) return true;
16254 CurrentSource = L;
16255 return Div<PT_Sint8>(S, OpPC);
16256}
16257bool EvalEmitter::emitDivUint8(SourceInfo L) {
16258 if (!isActive()) return true;
16259 CurrentSource = L;
16260 return Div<PT_Uint8>(S, OpPC);
16261}
16262bool EvalEmitter::emitDivSint16(SourceInfo L) {
16263 if (!isActive()) return true;
16264 CurrentSource = L;
16265 return Div<PT_Sint16>(S, OpPC);
16266}
16267bool EvalEmitter::emitDivUint16(SourceInfo L) {
16268 if (!isActive()) return true;
16269 CurrentSource = L;
16270 return Div<PT_Uint16>(S, OpPC);
16271}
16272bool EvalEmitter::emitDivSint32(SourceInfo L) {
16273 if (!isActive()) return true;
16274 CurrentSource = L;
16275 return Div<PT_Sint32>(S, OpPC);
16276}
16277bool EvalEmitter::emitDivUint32(SourceInfo L) {
16278 if (!isActive()) return true;
16279 CurrentSource = L;
16280 return Div<PT_Uint32>(S, OpPC);
16281}
16282bool EvalEmitter::emitDivSint64(SourceInfo L) {
16283 if (!isActive()) return true;
16284 CurrentSource = L;
16285 return Div<PT_Sint64>(S, OpPC);
16286}
16287bool EvalEmitter::emitDivUint64(SourceInfo L) {
16288 if (!isActive()) return true;
16289 CurrentSource = L;
16290 return Div<PT_Uint64>(S, OpPC);
16291}
16292bool EvalEmitter::emitDivIntAP(SourceInfo L) {
16293 if (!isActive()) return true;
16294 CurrentSource = L;
16295 return Div<PT_IntAP>(S, OpPC);
16296}
16297bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
16298 if (!isActive()) return true;
16299 CurrentSource = L;
16300 return Div<PT_IntAPS>(S, OpPC);
16301}
16302bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
16303 if (!isActive()) return true;
16304 CurrentSource = L;
16305 return Div<PT_FixedPoint>(S, OpPC);
16306}
16307#endif
16308#ifdef GET_OPCODE_NAMES
16309OP_DivcSint8,
16310OP_DivcUint8,
16311OP_DivcSint16,
16312OP_DivcUint16,
16313OP_DivcSint32,
16314OP_DivcUint32,
16315OP_DivcSint64,
16316OP_DivcUint64,
16317OP_DivcIntAP,
16318OP_DivcIntAPS,
16319OP_DivcFloat,
16320#endif
16321#ifdef GET_INTERPFN_LIST
16322&Interp_DivcSint8,
16323&Interp_DivcUint8,
16324&Interp_DivcSint16,
16325&Interp_DivcUint16,
16326&Interp_DivcSint32,
16327&Interp_DivcUint32,
16328&Interp_DivcSint64,
16329&Interp_DivcUint64,
16330&Interp_DivcIntAP,
16331&Interp_DivcIntAPS,
16332&Interp_DivcFloat,
16333#endif
16334#ifdef GET_INTERPFN_DISPATCHERS
16335PRESERVE_NONE
16336static bool Interp_DivcSint8(InterpState &S, CodePtr &PC) {
16337 if (!Divc<PT_Sint8>(S, PC))
16338 return false;
16339#if USE_TAILCALLS
16340 MUSTTAIL return InterpNext(S, PC);
16341#else
16342 return true;
16343#endif
16344}
16345PRESERVE_NONE
16346static bool Interp_DivcUint8(InterpState &S, CodePtr &PC) {
16347 if (!Divc<PT_Uint8>(S, PC))
16348 return false;
16349#if USE_TAILCALLS
16350 MUSTTAIL return InterpNext(S, PC);
16351#else
16352 return true;
16353#endif
16354}
16355PRESERVE_NONE
16356static bool Interp_DivcSint16(InterpState &S, CodePtr &PC) {
16357 if (!Divc<PT_Sint16>(S, PC))
16358 return false;
16359#if USE_TAILCALLS
16360 MUSTTAIL return InterpNext(S, PC);
16361#else
16362 return true;
16363#endif
16364}
16365PRESERVE_NONE
16366static bool Interp_DivcUint16(InterpState &S, CodePtr &PC) {
16367 if (!Divc<PT_Uint16>(S, PC))
16368 return false;
16369#if USE_TAILCALLS
16370 MUSTTAIL return InterpNext(S, PC);
16371#else
16372 return true;
16373#endif
16374}
16375PRESERVE_NONE
16376static bool Interp_DivcSint32(InterpState &S, CodePtr &PC) {
16377 if (!Divc<PT_Sint32>(S, PC))
16378 return false;
16379#if USE_TAILCALLS
16380 MUSTTAIL return InterpNext(S, PC);
16381#else
16382 return true;
16383#endif
16384}
16385PRESERVE_NONE
16386static bool Interp_DivcUint32(InterpState &S, CodePtr &PC) {
16387 if (!Divc<PT_Uint32>(S, PC))
16388 return false;
16389#if USE_TAILCALLS
16390 MUSTTAIL return InterpNext(S, PC);
16391#else
16392 return true;
16393#endif
16394}
16395PRESERVE_NONE
16396static bool Interp_DivcSint64(InterpState &S, CodePtr &PC) {
16397 if (!Divc<PT_Sint64>(S, PC))
16398 return false;
16399#if USE_TAILCALLS
16400 MUSTTAIL return InterpNext(S, PC);
16401#else
16402 return true;
16403#endif
16404}
16405PRESERVE_NONE
16406static bool Interp_DivcUint64(InterpState &S, CodePtr &PC) {
16407 if (!Divc<PT_Uint64>(S, PC))
16408 return false;
16409#if USE_TAILCALLS
16410 MUSTTAIL return InterpNext(S, PC);
16411#else
16412 return true;
16413#endif
16414}
16415PRESERVE_NONE
16416static bool Interp_DivcIntAP(InterpState &S, CodePtr &PC) {
16417 if (!Divc<PT_IntAP>(S, PC))
16418 return false;
16419#if USE_TAILCALLS
16420 MUSTTAIL return InterpNext(S, PC);
16421#else
16422 return true;
16423#endif
16424}
16425PRESERVE_NONE
16426static bool Interp_DivcIntAPS(InterpState &S, CodePtr &PC) {
16427 if (!Divc<PT_IntAPS>(S, PC))
16428 return false;
16429#if USE_TAILCALLS
16430 MUSTTAIL return InterpNext(S, PC);
16431#else
16432 return true;
16433#endif
16434}
16435PRESERVE_NONE
16436static bool Interp_DivcFloat(InterpState &S, CodePtr &PC) {
16437 if (!Divc<PT_Float>(S, PC))
16438 return false;
16439#if USE_TAILCALLS
16440 MUSTTAIL return InterpNext(S, PC);
16441#else
16442 return true;
16443#endif
16444}
16445#endif
16446#ifdef GET_DISASM
16447case OP_DivcSint8:
16448 Text.Op = PrintName("DivcSint8");
16449 break;
16450case OP_DivcUint8:
16451 Text.Op = PrintName("DivcUint8");
16452 break;
16453case OP_DivcSint16:
16454 Text.Op = PrintName("DivcSint16");
16455 break;
16456case OP_DivcUint16:
16457 Text.Op = PrintName("DivcUint16");
16458 break;
16459case OP_DivcSint32:
16460 Text.Op = PrintName("DivcSint32");
16461 break;
16462case OP_DivcUint32:
16463 Text.Op = PrintName("DivcUint32");
16464 break;
16465case OP_DivcSint64:
16466 Text.Op = PrintName("DivcSint64");
16467 break;
16468case OP_DivcUint64:
16469 Text.Op = PrintName("DivcUint64");
16470 break;
16471case OP_DivcIntAP:
16472 Text.Op = PrintName("DivcIntAP");
16473 break;
16474case OP_DivcIntAPS:
16475 Text.Op = PrintName("DivcIntAPS");
16476 break;
16477case OP_DivcFloat:
16478 Text.Op = PrintName("DivcFloat");
16479 break;
16480#endif
16481#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16482bool emitDivcSint8(SourceInfo);
16483bool emitDivcUint8(SourceInfo);
16484bool emitDivcSint16(SourceInfo);
16485bool emitDivcUint16(SourceInfo);
16486bool emitDivcSint32(SourceInfo);
16487bool emitDivcUint32(SourceInfo);
16488bool emitDivcSint64(SourceInfo);
16489bool emitDivcUint64(SourceInfo);
16490bool emitDivcIntAP(SourceInfo);
16491bool emitDivcIntAPS(SourceInfo);
16492bool emitDivcFloat(SourceInfo);
16493#endif
16494#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16495[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
16496#endif
16497#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16498bool
16499#if defined(GET_EVAL_IMPL)
16500EvalEmitter
16501#else
16502ByteCodeEmitter
16503#endif
16504::emitDivc(PrimType T0, SourceInfo I) {
16505 switch (T0) {
16506 case PT_Sint8:
16507 return emitDivcSint8(I);
16508 case PT_Uint8:
16509 return emitDivcUint8(I);
16510 case PT_Sint16:
16511 return emitDivcSint16(I);
16512 case PT_Uint16:
16513 return emitDivcUint16(I);
16514 case PT_Sint32:
16515 return emitDivcSint32(I);
16516 case PT_Uint32:
16517 return emitDivcUint32(I);
16518 case PT_Sint64:
16519 return emitDivcSint64(I);
16520 case PT_Uint64:
16521 return emitDivcUint64(I);
16522 case PT_IntAP:
16523 return emitDivcIntAP(I);
16524 case PT_IntAPS:
16525 return emitDivcIntAPS(I);
16526 case PT_Float:
16527 return emitDivcFloat(I);
16528 default: llvm_unreachable("invalid type: emitDivc");
16529 }
16530 llvm_unreachable("invalid enum value");
16531}
16532#endif
16533#ifdef GET_LINK_IMPL
16534bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
16535 return emitOp<>(OP_DivcSint8, L);
16536}
16537bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
16538 return emitOp<>(OP_DivcUint8, L);
16539}
16540bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
16541 return emitOp<>(OP_DivcSint16, L);
16542}
16543bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
16544 return emitOp<>(OP_DivcUint16, L);
16545}
16546bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
16547 return emitOp<>(OP_DivcSint32, L);
16548}
16549bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
16550 return emitOp<>(OP_DivcUint32, L);
16551}
16552bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
16553 return emitOp<>(OP_DivcSint64, L);
16554}
16555bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
16556 return emitOp<>(OP_DivcUint64, L);
16557}
16558bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
16559 return emitOp<>(OP_DivcIntAP, L);
16560}
16561bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
16562 return emitOp<>(OP_DivcIntAPS, L);
16563}
16564bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
16565 return emitOp<>(OP_DivcFloat, L);
16566}
16567#endif
16568#ifdef GET_EVAL_IMPL
16569bool EvalEmitter::emitDivcSint8(SourceInfo L) {
16570 if (!isActive()) return true;
16571 CurrentSource = L;
16572 return Divc<PT_Sint8>(S, OpPC);
16573}
16574bool EvalEmitter::emitDivcUint8(SourceInfo L) {
16575 if (!isActive()) return true;
16576 CurrentSource = L;
16577 return Divc<PT_Uint8>(S, OpPC);
16578}
16579bool EvalEmitter::emitDivcSint16(SourceInfo L) {
16580 if (!isActive()) return true;
16581 CurrentSource = L;
16582 return Divc<PT_Sint16>(S, OpPC);
16583}
16584bool EvalEmitter::emitDivcUint16(SourceInfo L) {
16585 if (!isActive()) return true;
16586 CurrentSource = L;
16587 return Divc<PT_Uint16>(S, OpPC);
16588}
16589bool EvalEmitter::emitDivcSint32(SourceInfo L) {
16590 if (!isActive()) return true;
16591 CurrentSource = L;
16592 return Divc<PT_Sint32>(S, OpPC);
16593}
16594bool EvalEmitter::emitDivcUint32(SourceInfo L) {
16595 if (!isActive()) return true;
16596 CurrentSource = L;
16597 return Divc<PT_Uint32>(S, OpPC);
16598}
16599bool EvalEmitter::emitDivcSint64(SourceInfo L) {
16600 if (!isActive()) return true;
16601 CurrentSource = L;
16602 return Divc<PT_Sint64>(S, OpPC);
16603}
16604bool EvalEmitter::emitDivcUint64(SourceInfo L) {
16605 if (!isActive()) return true;
16606 CurrentSource = L;
16607 return Divc<PT_Uint64>(S, OpPC);
16608}
16609bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
16610 if (!isActive()) return true;
16611 CurrentSource = L;
16612 return Divc<PT_IntAP>(S, OpPC);
16613}
16614bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
16615 if (!isActive()) return true;
16616 CurrentSource = L;
16617 return Divc<PT_IntAPS>(S, OpPC);
16618}
16619bool EvalEmitter::emitDivcFloat(SourceInfo L) {
16620 if (!isActive()) return true;
16621 CurrentSource = L;
16622 return Divc<PT_Float>(S, OpPC);
16623}
16624#endif
16625#ifdef GET_OPCODE_NAMES
16626OP_Divf,
16627#endif
16628#ifdef GET_INTERPFN_LIST
16629&Interp_Divf,
16630#endif
16631#ifdef GET_INTERPFN_DISPATCHERS
16632PRESERVE_NONE
16633static bool Interp_Divf(InterpState &S, CodePtr &PC) {
16634 {
16635 CodePtr OpPC = PC;
16636 const auto V0 = ReadArg<uint32_t>(S, PC);
16637 if (!Divf(S, OpPC, V0))
16638 return false;
16639 }
16640#if USE_TAILCALLS
16641 MUSTTAIL return InterpNext(S, PC);
16642#else
16643 return true;
16644#endif
16645}
16646#endif
16647#ifdef GET_DISASM
16648case OP_Divf:
16649 Text.Op = PrintName("Divf");
16650 Text.Args.push_back(printArg<uint32_t>(P, PC));
16651 break;
16652#endif
16653#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16654bool emitDivf( uint32_t , SourceInfo);
16655#endif
16656#ifdef GET_LINK_IMPL
16657bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16658 return emitOp<uint32_t>(OP_Divf, A0, L);
16659}
16660#endif
16661#ifdef GET_EVAL_IMPL
16662bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16663 if (!isActive()) return true;
16664 CurrentSource = L;
16665 return Divf(S, OpPC, A0);
16666}
16667#endif
16668#ifdef GET_OPCODE_NAMES
16669OP_Dump,
16670#endif
16671#ifdef GET_INTERPFN_LIST
16672&Interp_Dump,
16673#endif
16674#ifdef GET_INTERPFN_DISPATCHERS
16675PRESERVE_NONE
16676static bool Interp_Dump(InterpState &S, CodePtr &PC) {
16677 if (!Dump(S, PC))
16678 return false;
16679#if USE_TAILCALLS
16680 MUSTTAIL return InterpNext(S, PC);
16681#else
16682 return true;
16683#endif
16684}
16685#endif
16686#ifdef GET_DISASM
16687case OP_Dump:
16688 Text.Op = PrintName("Dump");
16689 break;
16690#endif
16691#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16692bool emitDump(SourceInfo);
16693#endif
16694#ifdef GET_LINK_IMPL
16695bool ByteCodeEmitter::emitDump(SourceInfo L) {
16696 return emitOp<>(OP_Dump, L);
16697}
16698#endif
16699#ifdef GET_EVAL_IMPL
16700bool EvalEmitter::emitDump(SourceInfo L) {
16701 if (!isActive()) return true;
16702 CurrentSource = L;
16703 return Dump(S, OpPC);
16704}
16705#endif
16706#ifdef GET_OPCODE_NAMES
16707OP_DupSint8,
16708OP_DupUint8,
16709OP_DupSint16,
16710OP_DupUint16,
16711OP_DupSint32,
16712OP_DupUint32,
16713OP_DupSint64,
16714OP_DupUint64,
16715OP_DupIntAP,
16716OP_DupIntAPS,
16717OP_DupBool,
16718OP_DupFixedPoint,
16719OP_DupPtr,
16720OP_DupMemberPtr,
16721OP_DupFloat,
16722#endif
16723#ifdef GET_INTERPFN_LIST
16724&Interp_DupSint8,
16725&Interp_DupUint8,
16726&Interp_DupSint16,
16727&Interp_DupUint16,
16728&Interp_DupSint32,
16729&Interp_DupUint32,
16730&Interp_DupSint64,
16731&Interp_DupUint64,
16732&Interp_DupIntAP,
16733&Interp_DupIntAPS,
16734&Interp_DupBool,
16735&Interp_DupFixedPoint,
16736&Interp_DupPtr,
16737&Interp_DupMemberPtr,
16738&Interp_DupFloat,
16739#endif
16740#ifdef GET_INTERPFN_DISPATCHERS
16741PRESERVE_NONE
16742static bool Interp_DupSint8(InterpState &S, CodePtr &PC) {
16743 if (!Dup<PT_Sint8>(S, PC))
16744 return false;
16745#if USE_TAILCALLS
16746 MUSTTAIL return InterpNext(S, PC);
16747#else
16748 return true;
16749#endif
16750}
16751PRESERVE_NONE
16752static bool Interp_DupUint8(InterpState &S, CodePtr &PC) {
16753 if (!Dup<PT_Uint8>(S, PC))
16754 return false;
16755#if USE_TAILCALLS
16756 MUSTTAIL return InterpNext(S, PC);
16757#else
16758 return true;
16759#endif
16760}
16761PRESERVE_NONE
16762static bool Interp_DupSint16(InterpState &S, CodePtr &PC) {
16763 if (!Dup<PT_Sint16>(S, PC))
16764 return false;
16765#if USE_TAILCALLS
16766 MUSTTAIL return InterpNext(S, PC);
16767#else
16768 return true;
16769#endif
16770}
16771PRESERVE_NONE
16772static bool Interp_DupUint16(InterpState &S, CodePtr &PC) {
16773 if (!Dup<PT_Uint16>(S, PC))
16774 return false;
16775#if USE_TAILCALLS
16776 MUSTTAIL return InterpNext(S, PC);
16777#else
16778 return true;
16779#endif
16780}
16781PRESERVE_NONE
16782static bool Interp_DupSint32(InterpState &S, CodePtr &PC) {
16783 if (!Dup<PT_Sint32>(S, PC))
16784 return false;
16785#if USE_TAILCALLS
16786 MUSTTAIL return InterpNext(S, PC);
16787#else
16788 return true;
16789#endif
16790}
16791PRESERVE_NONE
16792static bool Interp_DupUint32(InterpState &S, CodePtr &PC) {
16793 if (!Dup<PT_Uint32>(S, PC))
16794 return false;
16795#if USE_TAILCALLS
16796 MUSTTAIL return InterpNext(S, PC);
16797#else
16798 return true;
16799#endif
16800}
16801PRESERVE_NONE
16802static bool Interp_DupSint64(InterpState &S, CodePtr &PC) {
16803 if (!Dup<PT_Sint64>(S, PC))
16804 return false;
16805#if USE_TAILCALLS
16806 MUSTTAIL return InterpNext(S, PC);
16807#else
16808 return true;
16809#endif
16810}
16811PRESERVE_NONE
16812static bool Interp_DupUint64(InterpState &S, CodePtr &PC) {
16813 if (!Dup<PT_Uint64>(S, PC))
16814 return false;
16815#if USE_TAILCALLS
16816 MUSTTAIL return InterpNext(S, PC);
16817#else
16818 return true;
16819#endif
16820}
16821PRESERVE_NONE
16822static bool Interp_DupIntAP(InterpState &S, CodePtr &PC) {
16823 if (!Dup<PT_IntAP>(S, PC))
16824 return false;
16825#if USE_TAILCALLS
16826 MUSTTAIL return InterpNext(S, PC);
16827#else
16828 return true;
16829#endif
16830}
16831PRESERVE_NONE
16832static bool Interp_DupIntAPS(InterpState &S, CodePtr &PC) {
16833 if (!Dup<PT_IntAPS>(S, PC))
16834 return false;
16835#if USE_TAILCALLS
16836 MUSTTAIL return InterpNext(S, PC);
16837#else
16838 return true;
16839#endif
16840}
16841PRESERVE_NONE
16842static bool Interp_DupBool(InterpState &S, CodePtr &PC) {
16843 if (!Dup<PT_Bool>(S, PC))
16844 return false;
16845#if USE_TAILCALLS
16846 MUSTTAIL return InterpNext(S, PC);
16847#else
16848 return true;
16849#endif
16850}
16851PRESERVE_NONE
16852static bool Interp_DupFixedPoint(InterpState &S, CodePtr &PC) {
16853 if (!Dup<PT_FixedPoint>(S, PC))
16854 return false;
16855#if USE_TAILCALLS
16856 MUSTTAIL return InterpNext(S, PC);
16857#else
16858 return true;
16859#endif
16860}
16861PRESERVE_NONE
16862static bool Interp_DupPtr(InterpState &S, CodePtr &PC) {
16863 if (!Dup<PT_Ptr>(S, PC))
16864 return false;
16865#if USE_TAILCALLS
16866 MUSTTAIL return InterpNext(S, PC);
16867#else
16868 return true;
16869#endif
16870}
16871PRESERVE_NONE
16872static bool Interp_DupMemberPtr(InterpState &S, CodePtr &PC) {
16873 if (!Dup<PT_MemberPtr>(S, PC))
16874 return false;
16875#if USE_TAILCALLS
16876 MUSTTAIL return InterpNext(S, PC);
16877#else
16878 return true;
16879#endif
16880}
16881PRESERVE_NONE
16882static bool Interp_DupFloat(InterpState &S, CodePtr &PC) {
16883 if (!Dup<PT_Float>(S, PC))
16884 return false;
16885#if USE_TAILCALLS
16886 MUSTTAIL return InterpNext(S, PC);
16887#else
16888 return true;
16889#endif
16890}
16891#endif
16892#ifdef GET_DISASM
16893case OP_DupSint8:
16894 Text.Op = PrintName("DupSint8");
16895 break;
16896case OP_DupUint8:
16897 Text.Op = PrintName("DupUint8");
16898 break;
16899case OP_DupSint16:
16900 Text.Op = PrintName("DupSint16");
16901 break;
16902case OP_DupUint16:
16903 Text.Op = PrintName("DupUint16");
16904 break;
16905case OP_DupSint32:
16906 Text.Op = PrintName("DupSint32");
16907 break;
16908case OP_DupUint32:
16909 Text.Op = PrintName("DupUint32");
16910 break;
16911case OP_DupSint64:
16912 Text.Op = PrintName("DupSint64");
16913 break;
16914case OP_DupUint64:
16915 Text.Op = PrintName("DupUint64");
16916 break;
16917case OP_DupIntAP:
16918 Text.Op = PrintName("DupIntAP");
16919 break;
16920case OP_DupIntAPS:
16921 Text.Op = PrintName("DupIntAPS");
16922 break;
16923case OP_DupBool:
16924 Text.Op = PrintName("DupBool");
16925 break;
16926case OP_DupFixedPoint:
16927 Text.Op = PrintName("DupFixedPoint");
16928 break;
16929case OP_DupPtr:
16930 Text.Op = PrintName("DupPtr");
16931 break;
16932case OP_DupMemberPtr:
16933 Text.Op = PrintName("DupMemberPtr");
16934 break;
16935case OP_DupFloat:
16936 Text.Op = PrintName("DupFloat");
16937 break;
16938#endif
16939#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16940bool emitDupSint8(SourceInfo);
16941bool emitDupUint8(SourceInfo);
16942bool emitDupSint16(SourceInfo);
16943bool emitDupUint16(SourceInfo);
16944bool emitDupSint32(SourceInfo);
16945bool emitDupUint32(SourceInfo);
16946bool emitDupSint64(SourceInfo);
16947bool emitDupUint64(SourceInfo);
16948bool emitDupIntAP(SourceInfo);
16949bool emitDupIntAPS(SourceInfo);
16950bool emitDupBool(SourceInfo);
16951bool emitDupFixedPoint(SourceInfo);
16952bool emitDupPtr(SourceInfo);
16953bool emitDupMemberPtr(SourceInfo);
16954bool emitDupFloat(SourceInfo);
16955#endif
16956#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16957[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
16958#endif
16959#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16960bool
16961#if defined(GET_EVAL_IMPL)
16962EvalEmitter
16963#else
16964ByteCodeEmitter
16965#endif
16966::emitDup(PrimType T0, SourceInfo I) {
16967 switch (T0) {
16968 case PT_Sint8:
16969 return emitDupSint8(I);
16970 case PT_Uint8:
16971 return emitDupUint8(I);
16972 case PT_Sint16:
16973 return emitDupSint16(I);
16974 case PT_Uint16:
16975 return emitDupUint16(I);
16976 case PT_Sint32:
16977 return emitDupSint32(I);
16978 case PT_Uint32:
16979 return emitDupUint32(I);
16980 case PT_Sint64:
16981 return emitDupSint64(I);
16982 case PT_Uint64:
16983 return emitDupUint64(I);
16984 case PT_IntAP:
16985 return emitDupIntAP(I);
16986 case PT_IntAPS:
16987 return emitDupIntAPS(I);
16988 case PT_Bool:
16989 return emitDupBool(I);
16990 case PT_FixedPoint:
16991 return emitDupFixedPoint(I);
16992 case PT_Ptr:
16993 return emitDupPtr(I);
16994 case PT_MemberPtr:
16995 return emitDupMemberPtr(I);
16996 case PT_Float:
16997 return emitDupFloat(I);
16998 }
16999 llvm_unreachable("invalid enum value");
17000}
17001#endif
17002#ifdef GET_LINK_IMPL
17003bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
17004 return emitOp<>(OP_DupSint8, L);
17005}
17006bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
17007 return emitOp<>(OP_DupUint8, L);
17008}
17009bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
17010 return emitOp<>(OP_DupSint16, L);
17011}
17012bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
17013 return emitOp<>(OP_DupUint16, L);
17014}
17015bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
17016 return emitOp<>(OP_DupSint32, L);
17017}
17018bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
17019 return emitOp<>(OP_DupUint32, L);
17020}
17021bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
17022 return emitOp<>(OP_DupSint64, L);
17023}
17024bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
17025 return emitOp<>(OP_DupUint64, L);
17026}
17027bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
17028 return emitOp<>(OP_DupIntAP, L);
17029}
17030bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
17031 return emitOp<>(OP_DupIntAPS, L);
17032}
17033bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
17034 return emitOp<>(OP_DupBool, L);
17035}
17036bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
17037 return emitOp<>(OP_DupFixedPoint, L);
17038}
17039bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
17040 return emitOp<>(OP_DupPtr, L);
17041}
17042bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
17043 return emitOp<>(OP_DupMemberPtr, L);
17044}
17045bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
17046 return emitOp<>(OP_DupFloat, L);
17047}
17048#endif
17049#ifdef GET_EVAL_IMPL
17050bool EvalEmitter::emitDupSint8(SourceInfo L) {
17051 if (!isActive()) return true;
17052 CurrentSource = L;
17053 return Dup<PT_Sint8>(S, OpPC);
17054}
17055bool EvalEmitter::emitDupUint8(SourceInfo L) {
17056 if (!isActive()) return true;
17057 CurrentSource = L;
17058 return Dup<PT_Uint8>(S, OpPC);
17059}
17060bool EvalEmitter::emitDupSint16(SourceInfo L) {
17061 if (!isActive()) return true;
17062 CurrentSource = L;
17063 return Dup<PT_Sint16>(S, OpPC);
17064}
17065bool EvalEmitter::emitDupUint16(SourceInfo L) {
17066 if (!isActive()) return true;
17067 CurrentSource = L;
17068 return Dup<PT_Uint16>(S, OpPC);
17069}
17070bool EvalEmitter::emitDupSint32(SourceInfo L) {
17071 if (!isActive()) return true;
17072 CurrentSource = L;
17073 return Dup<PT_Sint32>(S, OpPC);
17074}
17075bool EvalEmitter::emitDupUint32(SourceInfo L) {
17076 if (!isActive()) return true;
17077 CurrentSource = L;
17078 return Dup<PT_Uint32>(S, OpPC);
17079}
17080bool EvalEmitter::emitDupSint64(SourceInfo L) {
17081 if (!isActive()) return true;
17082 CurrentSource = L;
17083 return Dup<PT_Sint64>(S, OpPC);
17084}
17085bool EvalEmitter::emitDupUint64(SourceInfo L) {
17086 if (!isActive()) return true;
17087 CurrentSource = L;
17088 return Dup<PT_Uint64>(S, OpPC);
17089}
17090bool EvalEmitter::emitDupIntAP(SourceInfo L) {
17091 if (!isActive()) return true;
17092 CurrentSource = L;
17093 return Dup<PT_IntAP>(S, OpPC);
17094}
17095bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
17096 if (!isActive()) return true;
17097 CurrentSource = L;
17098 return Dup<PT_IntAPS>(S, OpPC);
17099}
17100bool EvalEmitter::emitDupBool(SourceInfo L) {
17101 if (!isActive()) return true;
17102 CurrentSource = L;
17103 return Dup<PT_Bool>(S, OpPC);
17104}
17105bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
17106 if (!isActive()) return true;
17107 CurrentSource = L;
17108 return Dup<PT_FixedPoint>(S, OpPC);
17109}
17110bool EvalEmitter::emitDupPtr(SourceInfo L) {
17111 if (!isActive()) return true;
17112 CurrentSource = L;
17113 return Dup<PT_Ptr>(S, OpPC);
17114}
17115bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
17116 if (!isActive()) return true;
17117 CurrentSource = L;
17118 return Dup<PT_MemberPtr>(S, OpPC);
17119}
17120bool EvalEmitter::emitDupFloat(SourceInfo L) {
17121 if (!isActive()) return true;
17122 CurrentSource = L;
17123 return Dup<PT_Float>(S, OpPC);
17124}
17125#endif
17126#ifdef GET_OPCODE_NAMES
17127OP_EQSint8,
17128OP_EQUint8,
17129OP_EQSint16,
17130OP_EQUint16,
17131OP_EQSint32,
17132OP_EQUint32,
17133OP_EQSint64,
17134OP_EQUint64,
17135OP_EQIntAP,
17136OP_EQIntAPS,
17137OP_EQBool,
17138OP_EQFixedPoint,
17139OP_EQPtr,
17140OP_EQMemberPtr,
17141OP_EQFloat,
17142#endif
17143#ifdef GET_INTERPFN_LIST
17144&Interp_EQSint8,
17145&Interp_EQUint8,
17146&Interp_EQSint16,
17147&Interp_EQUint16,
17148&Interp_EQSint32,
17149&Interp_EQUint32,
17150&Interp_EQSint64,
17151&Interp_EQUint64,
17152&Interp_EQIntAP,
17153&Interp_EQIntAPS,
17154&Interp_EQBool,
17155&Interp_EQFixedPoint,
17156&Interp_EQPtr,
17157&Interp_EQMemberPtr,
17158&Interp_EQFloat,
17159#endif
17160#ifdef GET_INTERPFN_DISPATCHERS
17161PRESERVE_NONE
17162static bool Interp_EQSint8(InterpState &S, CodePtr &PC) {
17163 if (!EQ<PT_Sint8>(S, PC))
17164 return false;
17165#if USE_TAILCALLS
17166 MUSTTAIL return InterpNext(S, PC);
17167#else
17168 return true;
17169#endif
17170}
17171PRESERVE_NONE
17172static bool Interp_EQUint8(InterpState &S, CodePtr &PC) {
17173 if (!EQ<PT_Uint8>(S, PC))
17174 return false;
17175#if USE_TAILCALLS
17176 MUSTTAIL return InterpNext(S, PC);
17177#else
17178 return true;
17179#endif
17180}
17181PRESERVE_NONE
17182static bool Interp_EQSint16(InterpState &S, CodePtr &PC) {
17183 if (!EQ<PT_Sint16>(S, PC))
17184 return false;
17185#if USE_TAILCALLS
17186 MUSTTAIL return InterpNext(S, PC);
17187#else
17188 return true;
17189#endif
17190}
17191PRESERVE_NONE
17192static bool Interp_EQUint16(InterpState &S, CodePtr &PC) {
17193 if (!EQ<PT_Uint16>(S, PC))
17194 return false;
17195#if USE_TAILCALLS
17196 MUSTTAIL return InterpNext(S, PC);
17197#else
17198 return true;
17199#endif
17200}
17201PRESERVE_NONE
17202static bool Interp_EQSint32(InterpState &S, CodePtr &PC) {
17203 if (!EQ<PT_Sint32>(S, PC))
17204 return false;
17205#if USE_TAILCALLS
17206 MUSTTAIL return InterpNext(S, PC);
17207#else
17208 return true;
17209#endif
17210}
17211PRESERVE_NONE
17212static bool Interp_EQUint32(InterpState &S, CodePtr &PC) {
17213 if (!EQ<PT_Uint32>(S, PC))
17214 return false;
17215#if USE_TAILCALLS
17216 MUSTTAIL return InterpNext(S, PC);
17217#else
17218 return true;
17219#endif
17220}
17221PRESERVE_NONE
17222static bool Interp_EQSint64(InterpState &S, CodePtr &PC) {
17223 if (!EQ<PT_Sint64>(S, PC))
17224 return false;
17225#if USE_TAILCALLS
17226 MUSTTAIL return InterpNext(S, PC);
17227#else
17228 return true;
17229#endif
17230}
17231PRESERVE_NONE
17232static bool Interp_EQUint64(InterpState &S, CodePtr &PC) {
17233 if (!EQ<PT_Uint64>(S, PC))
17234 return false;
17235#if USE_TAILCALLS
17236 MUSTTAIL return InterpNext(S, PC);
17237#else
17238 return true;
17239#endif
17240}
17241PRESERVE_NONE
17242static bool Interp_EQIntAP(InterpState &S, CodePtr &PC) {
17243 if (!EQ<PT_IntAP>(S, PC))
17244 return false;
17245#if USE_TAILCALLS
17246 MUSTTAIL return InterpNext(S, PC);
17247#else
17248 return true;
17249#endif
17250}
17251PRESERVE_NONE
17252static bool Interp_EQIntAPS(InterpState &S, CodePtr &PC) {
17253 if (!EQ<PT_IntAPS>(S, PC))
17254 return false;
17255#if USE_TAILCALLS
17256 MUSTTAIL return InterpNext(S, PC);
17257#else
17258 return true;
17259#endif
17260}
17261PRESERVE_NONE
17262static bool Interp_EQBool(InterpState &S, CodePtr &PC) {
17263 if (!EQ<PT_Bool>(S, PC))
17264 return false;
17265#if USE_TAILCALLS
17266 MUSTTAIL return InterpNext(S, PC);
17267#else
17268 return true;
17269#endif
17270}
17271PRESERVE_NONE
17272static bool Interp_EQFixedPoint(InterpState &S, CodePtr &PC) {
17273 if (!EQ<PT_FixedPoint>(S, PC))
17274 return false;
17275#if USE_TAILCALLS
17276 MUSTTAIL return InterpNext(S, PC);
17277#else
17278 return true;
17279#endif
17280}
17281PRESERVE_NONE
17282static bool Interp_EQPtr(InterpState &S, CodePtr &PC) {
17283 if (!EQ<PT_Ptr>(S, PC))
17284 return false;
17285#if USE_TAILCALLS
17286 MUSTTAIL return InterpNext(S, PC);
17287#else
17288 return true;
17289#endif
17290}
17291PRESERVE_NONE
17292static bool Interp_EQMemberPtr(InterpState &S, CodePtr &PC) {
17293 if (!EQ<PT_MemberPtr>(S, PC))
17294 return false;
17295#if USE_TAILCALLS
17296 MUSTTAIL return InterpNext(S, PC);
17297#else
17298 return true;
17299#endif
17300}
17301PRESERVE_NONE
17302static bool Interp_EQFloat(InterpState &S, CodePtr &PC) {
17303 if (!EQ<PT_Float>(S, PC))
17304 return false;
17305#if USE_TAILCALLS
17306 MUSTTAIL return InterpNext(S, PC);
17307#else
17308 return true;
17309#endif
17310}
17311#endif
17312#ifdef GET_DISASM
17313case OP_EQSint8:
17314 Text.Op = PrintName("EQSint8");
17315 break;
17316case OP_EQUint8:
17317 Text.Op = PrintName("EQUint8");
17318 break;
17319case OP_EQSint16:
17320 Text.Op = PrintName("EQSint16");
17321 break;
17322case OP_EQUint16:
17323 Text.Op = PrintName("EQUint16");
17324 break;
17325case OP_EQSint32:
17326 Text.Op = PrintName("EQSint32");
17327 break;
17328case OP_EQUint32:
17329 Text.Op = PrintName("EQUint32");
17330 break;
17331case OP_EQSint64:
17332 Text.Op = PrintName("EQSint64");
17333 break;
17334case OP_EQUint64:
17335 Text.Op = PrintName("EQUint64");
17336 break;
17337case OP_EQIntAP:
17338 Text.Op = PrintName("EQIntAP");
17339 break;
17340case OP_EQIntAPS:
17341 Text.Op = PrintName("EQIntAPS");
17342 break;
17343case OP_EQBool:
17344 Text.Op = PrintName("EQBool");
17345 break;
17346case OP_EQFixedPoint:
17347 Text.Op = PrintName("EQFixedPoint");
17348 break;
17349case OP_EQPtr:
17350 Text.Op = PrintName("EQPtr");
17351 break;
17352case OP_EQMemberPtr:
17353 Text.Op = PrintName("EQMemberPtr");
17354 break;
17355case OP_EQFloat:
17356 Text.Op = PrintName("EQFloat");
17357 break;
17358#endif
17359#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17360bool emitEQSint8(SourceInfo);
17361bool emitEQUint8(SourceInfo);
17362bool emitEQSint16(SourceInfo);
17363bool emitEQUint16(SourceInfo);
17364bool emitEQSint32(SourceInfo);
17365bool emitEQUint32(SourceInfo);
17366bool emitEQSint64(SourceInfo);
17367bool emitEQUint64(SourceInfo);
17368bool emitEQIntAP(SourceInfo);
17369bool emitEQIntAPS(SourceInfo);
17370bool emitEQBool(SourceInfo);
17371bool emitEQFixedPoint(SourceInfo);
17372bool emitEQPtr(SourceInfo);
17373bool emitEQMemberPtr(SourceInfo);
17374bool emitEQFloat(SourceInfo);
17375#endif
17376#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17377[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
17378#endif
17379#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
17380bool
17381#if defined(GET_EVAL_IMPL)
17382EvalEmitter
17383#else
17384ByteCodeEmitter
17385#endif
17386::emitEQ(PrimType T0, SourceInfo I) {
17387 switch (T0) {
17388 case PT_Sint8:
17389 return emitEQSint8(I);
17390 case PT_Uint8:
17391 return emitEQUint8(I);
17392 case PT_Sint16:
17393 return emitEQSint16(I);
17394 case PT_Uint16:
17395 return emitEQUint16(I);
17396 case PT_Sint32:
17397 return emitEQSint32(I);
17398 case PT_Uint32:
17399 return emitEQUint32(I);
17400 case PT_Sint64:
17401 return emitEQSint64(I);
17402 case PT_Uint64:
17403 return emitEQUint64(I);
17404 case PT_IntAP:
17405 return emitEQIntAP(I);
17406 case PT_IntAPS:
17407 return emitEQIntAPS(I);
17408 case PT_Bool:
17409 return emitEQBool(I);
17410 case PT_FixedPoint:
17411 return emitEQFixedPoint(I);
17412 case PT_Ptr:
17413 return emitEQPtr(I);
17414 case PT_MemberPtr:
17415 return emitEQMemberPtr(I);
17416 case PT_Float:
17417 return emitEQFloat(I);
17418 }
17419 llvm_unreachable("invalid enum value");
17420}
17421#endif
17422#ifdef GET_LINK_IMPL
17423bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
17424 return emitOp<>(OP_EQSint8, L);
17425}
17426bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
17427 return emitOp<>(OP_EQUint8, L);
17428}
17429bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
17430 return emitOp<>(OP_EQSint16, L);
17431}
17432bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
17433 return emitOp<>(OP_EQUint16, L);
17434}
17435bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
17436 return emitOp<>(OP_EQSint32, L);
17437}
17438bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
17439 return emitOp<>(OP_EQUint32, L);
17440}
17441bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
17442 return emitOp<>(OP_EQSint64, L);
17443}
17444bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
17445 return emitOp<>(OP_EQUint64, L);
17446}
17447bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
17448 return emitOp<>(OP_EQIntAP, L);
17449}
17450bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
17451 return emitOp<>(OP_EQIntAPS, L);
17452}
17453bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
17454 return emitOp<>(OP_EQBool, L);
17455}
17456bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
17457 return emitOp<>(OP_EQFixedPoint, L);
17458}
17459bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
17460 return emitOp<>(OP_EQPtr, L);
17461}
17462bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
17463 return emitOp<>(OP_EQMemberPtr, L);
17464}
17465bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
17466 return emitOp<>(OP_EQFloat, L);
17467}
17468#endif
17469#ifdef GET_EVAL_IMPL
17470bool EvalEmitter::emitEQSint8(SourceInfo L) {
17471 if (!isActive()) return true;
17472 CurrentSource = L;
17473 return EQ<PT_Sint8>(S, OpPC);
17474}
17475bool EvalEmitter::emitEQUint8(SourceInfo L) {
17476 if (!isActive()) return true;
17477 CurrentSource = L;
17478 return EQ<PT_Uint8>(S, OpPC);
17479}
17480bool EvalEmitter::emitEQSint16(SourceInfo L) {
17481 if (!isActive()) return true;
17482 CurrentSource = L;
17483 return EQ<PT_Sint16>(S, OpPC);
17484}
17485bool EvalEmitter::emitEQUint16(SourceInfo L) {
17486 if (!isActive()) return true;
17487 CurrentSource = L;
17488 return EQ<PT_Uint16>(S, OpPC);
17489}
17490bool EvalEmitter::emitEQSint32(SourceInfo L) {
17491 if (!isActive()) return true;
17492 CurrentSource = L;
17493 return EQ<PT_Sint32>(S, OpPC);
17494}
17495bool EvalEmitter::emitEQUint32(SourceInfo L) {
17496 if (!isActive()) return true;
17497 CurrentSource = L;
17498 return EQ<PT_Uint32>(S, OpPC);
17499}
17500bool EvalEmitter::emitEQSint64(SourceInfo L) {
17501 if (!isActive()) return true;
17502 CurrentSource = L;
17503 return EQ<PT_Sint64>(S, OpPC);
17504}
17505bool EvalEmitter::emitEQUint64(SourceInfo L) {
17506 if (!isActive()) return true;
17507 CurrentSource = L;
17508 return EQ<PT_Uint64>(S, OpPC);
17509}
17510bool EvalEmitter::emitEQIntAP(SourceInfo L) {
17511 if (!isActive()) return true;
17512 CurrentSource = L;
17513 return EQ<PT_IntAP>(S, OpPC);
17514}
17515bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
17516 if (!isActive()) return true;
17517 CurrentSource = L;
17518 return EQ<PT_IntAPS>(S, OpPC);
17519}
17520bool EvalEmitter::emitEQBool(SourceInfo L) {
17521 if (!isActive()) return true;
17522 CurrentSource = L;
17523 return EQ<PT_Bool>(S, OpPC);
17524}
17525bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
17526 if (!isActive()) return true;
17527 CurrentSource = L;
17528 return EQ<PT_FixedPoint>(S, OpPC);
17529}
17530bool EvalEmitter::emitEQPtr(SourceInfo L) {
17531 if (!isActive()) return true;
17532 CurrentSource = L;
17533 return EQ<PT_Ptr>(S, OpPC);
17534}
17535bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
17536 if (!isActive()) return true;
17537 CurrentSource = L;
17538 return EQ<PT_MemberPtr>(S, OpPC);
17539}
17540bool EvalEmitter::emitEQFloat(SourceInfo L) {
17541 if (!isActive()) return true;
17542 CurrentSource = L;
17543 return EQ<PT_Float>(S, OpPC);
17544}
17545#endif
17546#ifdef GET_OPCODE_NAMES
17547OP_EnableLocal,
17548#endif
17549#ifdef GET_INTERPFN_LIST
17550&Interp_EnableLocal,
17551#endif
17552#ifdef GET_INTERPFN_DISPATCHERS
17553PRESERVE_NONE
17554static bool Interp_EnableLocal(InterpState &S, CodePtr &PC) {
17555 {
17556 CodePtr OpPC = PC;
17557 const auto V0 = ReadArg<uint32_t>(S, PC);
17558 if (!EnableLocal(S, OpPC, V0))
17559 return false;
17560 }
17561#if USE_TAILCALLS
17562 MUSTTAIL return InterpNext(S, PC);
17563#else
17564 return true;
17565#endif
17566}
17567#endif
17568#ifdef GET_DISASM
17569case OP_EnableLocal:
17570 Text.Op = PrintName("EnableLocal");
17571 Text.Args.push_back(printArg<uint32_t>(P, PC));
17572 break;
17573#endif
17574#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17575bool emitEnableLocal( uint32_t , SourceInfo);
17576#endif
17577#ifdef GET_LINK_IMPL
17578bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
17579 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
17580}
17581#endif
17582#ifdef GET_OPCODE_NAMES
17583OP_EndLifetime,
17584#endif
17585#ifdef GET_INTERPFN_LIST
17586&Interp_EndLifetime,
17587#endif
17588#ifdef GET_INTERPFN_DISPATCHERS
17589PRESERVE_NONE
17590static bool Interp_EndLifetime(InterpState &S, CodePtr &PC) {
17591 if (!EndLifetime(S, PC))
17592 return false;
17593#if USE_TAILCALLS
17594 MUSTTAIL return InterpNext(S, PC);
17595#else
17596 return true;
17597#endif
17598}
17599#endif
17600#ifdef GET_DISASM
17601case OP_EndLifetime:
17602 Text.Op = PrintName("EndLifetime");
17603 break;
17604#endif
17605#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17606bool emitEndLifetime(SourceInfo);
17607#endif
17608#ifdef GET_LINK_IMPL
17609bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
17610 return emitOp<>(OP_EndLifetime, L);
17611}
17612#endif
17613#ifdef GET_EVAL_IMPL
17614bool EvalEmitter::emitEndLifetime(SourceInfo L) {
17615 if (!isActive()) return true;
17616 CurrentSource = L;
17617 return EndLifetime(S, OpPC);
17618}
17619#endif
17620#ifdef GET_OPCODE_NAMES
17621OP_EndLifetimePop,
17622#endif
17623#ifdef GET_INTERPFN_LIST
17624&Interp_EndLifetimePop,
17625#endif
17626#ifdef GET_INTERPFN_DISPATCHERS
17627PRESERVE_NONE
17628static bool Interp_EndLifetimePop(InterpState &S, CodePtr &PC) {
17629 if (!EndLifetimePop(S, PC))
17630 return false;
17631#if USE_TAILCALLS
17632 MUSTTAIL return InterpNext(S, PC);
17633#else
17634 return true;
17635#endif
17636}
17637#endif
17638#ifdef GET_DISASM
17639case OP_EndLifetimePop:
17640 Text.Op = PrintName("EndLifetimePop");
17641 break;
17642#endif
17643#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17644bool emitEndLifetimePop(SourceInfo);
17645#endif
17646#ifdef GET_LINK_IMPL
17647bool ByteCodeEmitter::emitEndLifetimePop(SourceInfo L) {
17648 return emitOp<>(OP_EndLifetimePop, L);
17649}
17650#endif
17651#ifdef GET_EVAL_IMPL
17652bool EvalEmitter::emitEndLifetimePop(SourceInfo L) {
17653 if (!isActive()) return true;
17654 CurrentSource = L;
17655 return EndLifetimePop(S, OpPC);
17656}
17657#endif
17658#ifdef GET_OPCODE_NAMES
17659OP_EndSpeculation,
17660#endif
17661#ifdef GET_INTERPFN_LIST
17662&Interp_EndSpeculation,
17663#endif
17664#ifdef GET_INTERPFN_DISPATCHERS
17665PRESERVE_NONE
17666static bool Interp_EndSpeculation(InterpState &S, CodePtr &PC) {
17667 MUSTTAIL return EndSpeculation(S, PC);
17668}
17669#endif
17670#ifdef GET_DISASM
17671case OP_EndSpeculation:
17672 Text.Op = PrintName("EndSpeculation");
17673 break;
17674#endif
17675#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17676bool emitEndSpeculation(SourceInfo);
17677#endif
17678#ifdef GET_LINK_IMPL
17679bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
17680 return emitOp<>(OP_EndSpeculation, L);
17681}
17682#endif
17683#ifdef GET_EVAL_IMPL
17684bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
17685 if (!isActive()) return true;
17686 CurrentSource = L;
17687 return EndSpeculation(S, OpPC);
17688}
17689#endif
17690#ifdef GET_OPCODE_NAMES
17691OP_Error,
17692#endif
17693#ifdef GET_INTERPFN_LIST
17694&Interp_Error,
17695#endif
17696#ifdef GET_INTERPFN_DISPATCHERS
17697PRESERVE_NONE
17698static bool Interp_Error(InterpState &S, CodePtr &PC) {
17699 if (!Error(S, PC))
17700 return false;
17701#if USE_TAILCALLS
17702 MUSTTAIL return InterpNext(S, PC);
17703#else
17704 return true;
17705#endif
17706}
17707#endif
17708#ifdef GET_DISASM
17709case OP_Error:
17710 Text.Op = PrintName("Error");
17711 break;
17712#endif
17713#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17714bool emitError(SourceInfo);
17715#endif
17716#ifdef GET_LINK_IMPL
17717bool ByteCodeEmitter::emitError(SourceInfo L) {
17718 return emitOp<>(OP_Error, L);
17719}
17720#endif
17721#ifdef GET_EVAL_IMPL
17722bool EvalEmitter::emitError(SourceInfo L) {
17723 if (!isActive()) return true;
17724 CurrentSource = L;
17725 return Error(S, OpPC);
17726}
17727#endif
17728#ifdef GET_OPCODE_NAMES
17729OP_ExpandPtr,
17730#endif
17731#ifdef GET_INTERPFN_LIST
17732&Interp_ExpandPtr,
17733#endif
17734#ifdef GET_INTERPFN_DISPATCHERS
17735PRESERVE_NONE
17736static bool Interp_ExpandPtr(InterpState &S, CodePtr &PC) {
17737 if (!ExpandPtr(S, PC))
17738 return false;
17739#if USE_TAILCALLS
17740 MUSTTAIL return InterpNext(S, PC);
17741#else
17742 return true;
17743#endif
17744}
17745#endif
17746#ifdef GET_DISASM
17747case OP_ExpandPtr:
17748 Text.Op = PrintName("ExpandPtr");
17749 break;
17750#endif
17751#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17752bool emitExpandPtr(SourceInfo);
17753#endif
17754#ifdef GET_LINK_IMPL
17755bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
17756 return emitOp<>(OP_ExpandPtr, L);
17757}
17758#endif
17759#ifdef GET_EVAL_IMPL
17760bool EvalEmitter::emitExpandPtr(SourceInfo L) {
17761 if (!isActive()) return true;
17762 CurrentSource = L;
17763 return ExpandPtr(S, OpPC);
17764}
17765#endif
17766#ifdef GET_OPCODE_NAMES
17767OP_FinishInit,
17768#endif
17769#ifdef GET_INTERPFN_LIST
17770&Interp_FinishInit,
17771#endif
17772#ifdef GET_INTERPFN_DISPATCHERS
17773PRESERVE_NONE
17774static bool Interp_FinishInit(InterpState &S, CodePtr &PC) {
17775 if (!FinishInit(S, PC))
17776 return false;
17777#if USE_TAILCALLS
17778 MUSTTAIL return InterpNext(S, PC);
17779#else
17780 return true;
17781#endif
17782}
17783#endif
17784#ifdef GET_DISASM
17785case OP_FinishInit:
17786 Text.Op = PrintName("FinishInit");
17787 break;
17788#endif
17789#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17790bool emitFinishInit(SourceInfo);
17791#endif
17792#ifdef GET_LINK_IMPL
17793bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
17794 return emitOp<>(OP_FinishInit, L);
17795}
17796#endif
17797#ifdef GET_EVAL_IMPL
17798bool EvalEmitter::emitFinishInit(SourceInfo L) {
17799 if (!isActive()) return true;
17800 CurrentSource = L;
17801 return FinishInit(S, OpPC);
17802}
17803#endif
17804#ifdef GET_OPCODE_NAMES
17805OP_FinishInitActivate,
17806#endif
17807#ifdef GET_INTERPFN_LIST
17808&Interp_FinishInitActivate,
17809#endif
17810#ifdef GET_INTERPFN_DISPATCHERS
17811PRESERVE_NONE
17812static bool Interp_FinishInitActivate(InterpState &S, CodePtr &PC) {
17813 if (!FinishInitActivate(S, PC))
17814 return false;
17815#if USE_TAILCALLS
17816 MUSTTAIL return InterpNext(S, PC);
17817#else
17818 return true;
17819#endif
17820}
17821#endif
17822#ifdef GET_DISASM
17823case OP_FinishInitActivate:
17824 Text.Op = PrintName("FinishInitActivate");
17825 break;
17826#endif
17827#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17828bool emitFinishInitActivate(SourceInfo);
17829#endif
17830#ifdef GET_LINK_IMPL
17831bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
17832 return emitOp<>(OP_FinishInitActivate, L);
17833}
17834#endif
17835#ifdef GET_EVAL_IMPL
17836bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
17837 if (!isActive()) return true;
17838 CurrentSource = L;
17839 return FinishInitActivate(S, OpPC);
17840}
17841#endif
17842#ifdef GET_OPCODE_NAMES
17843OP_FinishInitActivatePop,
17844#endif
17845#ifdef GET_INTERPFN_LIST
17846&Interp_FinishInitActivatePop,
17847#endif
17848#ifdef GET_INTERPFN_DISPATCHERS
17849PRESERVE_NONE
17850static bool Interp_FinishInitActivatePop(InterpState &S, CodePtr &PC) {
17851 if (!FinishInitActivatePop(S, PC))
17852 return false;
17853#if USE_TAILCALLS
17854 MUSTTAIL return InterpNext(S, PC);
17855#else
17856 return true;
17857#endif
17858}
17859#endif
17860#ifdef GET_DISASM
17861case OP_FinishInitActivatePop:
17862 Text.Op = PrintName("FinishInitActivatePop");
17863 break;
17864#endif
17865#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17866bool emitFinishInitActivatePop(SourceInfo);
17867#endif
17868#ifdef GET_LINK_IMPL
17869bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
17870 return emitOp<>(OP_FinishInitActivatePop, L);
17871}
17872#endif
17873#ifdef GET_EVAL_IMPL
17874bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
17875 if (!isActive()) return true;
17876 CurrentSource = L;
17877 return FinishInitActivatePop(S, OpPC);
17878}
17879#endif
17880#ifdef GET_OPCODE_NAMES
17881OP_FinishInitGlobal,
17882#endif
17883#ifdef GET_INTERPFN_LIST
17884&Interp_FinishInitGlobal,
17885#endif
17886#ifdef GET_INTERPFN_DISPATCHERS
17887PRESERVE_NONE
17888static bool Interp_FinishInitGlobal(InterpState &S, CodePtr &PC) {
17889 if (!FinishInitGlobal(S, PC))
17890 return false;
17891#if USE_TAILCALLS
17892 MUSTTAIL return InterpNext(S, PC);
17893#else
17894 return true;
17895#endif
17896}
17897#endif
17898#ifdef GET_DISASM
17899case OP_FinishInitGlobal:
17900 Text.Op = PrintName("FinishInitGlobal");
17901 break;
17902#endif
17903#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17904bool emitFinishInitGlobal(SourceInfo);
17905#endif
17906#ifdef GET_LINK_IMPL
17907bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
17908 return emitOp<>(OP_FinishInitGlobal, L);
17909}
17910#endif
17911#ifdef GET_EVAL_IMPL
17912bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
17913 if (!isActive()) return true;
17914 CurrentSource = L;
17915 return FinishInitGlobal(S, OpPC);
17916}
17917#endif
17918#ifdef GET_OPCODE_NAMES
17919OP_FinishInitPop,
17920#endif
17921#ifdef GET_INTERPFN_LIST
17922&Interp_FinishInitPop,
17923#endif
17924#ifdef GET_INTERPFN_DISPATCHERS
17925PRESERVE_NONE
17926static bool Interp_FinishInitPop(InterpState &S, CodePtr &PC) {
17927 if (!FinishInitPop(S, PC))
17928 return false;
17929#if USE_TAILCALLS
17930 MUSTTAIL return InterpNext(S, PC);
17931#else
17932 return true;
17933#endif
17934}
17935#endif
17936#ifdef GET_DISASM
17937case OP_FinishInitPop:
17938 Text.Op = PrintName("FinishInitPop");
17939 break;
17940#endif
17941#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17942bool emitFinishInitPop(SourceInfo);
17943#endif
17944#ifdef GET_LINK_IMPL
17945bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
17946 return emitOp<>(OP_FinishInitPop, L);
17947}
17948#endif
17949#ifdef GET_EVAL_IMPL
17950bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
17951 if (!isActive()) return true;
17952 CurrentSource = L;
17953 return FinishInitPop(S, OpPC);
17954}
17955#endif
17956#ifdef GET_OPCODE_NAMES
17957OP_FlipSint8Sint8,
17958OP_FlipSint8Uint8,
17959OP_FlipSint8Sint16,
17960OP_FlipSint8Uint16,
17961OP_FlipSint8Sint32,
17962OP_FlipSint8Uint32,
17963OP_FlipSint8Sint64,
17964OP_FlipSint8Uint64,
17965OP_FlipSint8IntAP,
17966OP_FlipSint8IntAPS,
17967OP_FlipSint8Bool,
17968OP_FlipSint8FixedPoint,
17969OP_FlipSint8Ptr,
17970OP_FlipSint8MemberPtr,
17971OP_FlipSint8Float,
17972OP_FlipUint8Sint8,
17973OP_FlipUint8Uint8,
17974OP_FlipUint8Sint16,
17975OP_FlipUint8Uint16,
17976OP_FlipUint8Sint32,
17977OP_FlipUint8Uint32,
17978OP_FlipUint8Sint64,
17979OP_FlipUint8Uint64,
17980OP_FlipUint8IntAP,
17981OP_FlipUint8IntAPS,
17982OP_FlipUint8Bool,
17983OP_FlipUint8FixedPoint,
17984OP_FlipUint8Ptr,
17985OP_FlipUint8MemberPtr,
17986OP_FlipUint8Float,
17987OP_FlipSint16Sint8,
17988OP_FlipSint16Uint8,
17989OP_FlipSint16Sint16,
17990OP_FlipSint16Uint16,
17991OP_FlipSint16Sint32,
17992OP_FlipSint16Uint32,
17993OP_FlipSint16Sint64,
17994OP_FlipSint16Uint64,
17995OP_FlipSint16IntAP,
17996OP_FlipSint16IntAPS,
17997OP_FlipSint16Bool,
17998OP_FlipSint16FixedPoint,
17999OP_FlipSint16Ptr,
18000OP_FlipSint16MemberPtr,
18001OP_FlipSint16Float,
18002OP_FlipUint16Sint8,
18003OP_FlipUint16Uint8,
18004OP_FlipUint16Sint16,
18005OP_FlipUint16Uint16,
18006OP_FlipUint16Sint32,
18007OP_FlipUint16Uint32,
18008OP_FlipUint16Sint64,
18009OP_FlipUint16Uint64,
18010OP_FlipUint16IntAP,
18011OP_FlipUint16IntAPS,
18012OP_FlipUint16Bool,
18013OP_FlipUint16FixedPoint,
18014OP_FlipUint16Ptr,
18015OP_FlipUint16MemberPtr,
18016OP_FlipUint16Float,
18017OP_FlipSint32Sint8,
18018OP_FlipSint32Uint8,
18019OP_FlipSint32Sint16,
18020OP_FlipSint32Uint16,
18021OP_FlipSint32Sint32,
18022OP_FlipSint32Uint32,
18023OP_FlipSint32Sint64,
18024OP_FlipSint32Uint64,
18025OP_FlipSint32IntAP,
18026OP_FlipSint32IntAPS,
18027OP_FlipSint32Bool,
18028OP_FlipSint32FixedPoint,
18029OP_FlipSint32Ptr,
18030OP_FlipSint32MemberPtr,
18031OP_FlipSint32Float,
18032OP_FlipUint32Sint8,
18033OP_FlipUint32Uint8,
18034OP_FlipUint32Sint16,
18035OP_FlipUint32Uint16,
18036OP_FlipUint32Sint32,
18037OP_FlipUint32Uint32,
18038OP_FlipUint32Sint64,
18039OP_FlipUint32Uint64,
18040OP_FlipUint32IntAP,
18041OP_FlipUint32IntAPS,
18042OP_FlipUint32Bool,
18043OP_FlipUint32FixedPoint,
18044OP_FlipUint32Ptr,
18045OP_FlipUint32MemberPtr,
18046OP_FlipUint32Float,
18047OP_FlipSint64Sint8,
18048OP_FlipSint64Uint8,
18049OP_FlipSint64Sint16,
18050OP_FlipSint64Uint16,
18051OP_FlipSint64Sint32,
18052OP_FlipSint64Uint32,
18053OP_FlipSint64Sint64,
18054OP_FlipSint64Uint64,
18055OP_FlipSint64IntAP,
18056OP_FlipSint64IntAPS,
18057OP_FlipSint64Bool,
18058OP_FlipSint64FixedPoint,
18059OP_FlipSint64Ptr,
18060OP_FlipSint64MemberPtr,
18061OP_FlipSint64Float,
18062OP_FlipUint64Sint8,
18063OP_FlipUint64Uint8,
18064OP_FlipUint64Sint16,
18065OP_FlipUint64Uint16,
18066OP_FlipUint64Sint32,
18067OP_FlipUint64Uint32,
18068OP_FlipUint64Sint64,
18069OP_FlipUint64Uint64,
18070OP_FlipUint64IntAP,
18071OP_FlipUint64IntAPS,
18072OP_FlipUint64Bool,
18073OP_FlipUint64FixedPoint,
18074OP_FlipUint64Ptr,
18075OP_FlipUint64MemberPtr,
18076OP_FlipUint64Float,
18077OP_FlipIntAPSint8,
18078OP_FlipIntAPUint8,
18079OP_FlipIntAPSint16,
18080OP_FlipIntAPUint16,
18081OP_FlipIntAPSint32,
18082OP_FlipIntAPUint32,
18083OP_FlipIntAPSint64,
18084OP_FlipIntAPUint64,
18085OP_FlipIntAPIntAP,
18086OP_FlipIntAPIntAPS,
18087OP_FlipIntAPBool,
18088OP_FlipIntAPFixedPoint,
18089OP_FlipIntAPPtr,
18090OP_FlipIntAPMemberPtr,
18091OP_FlipIntAPFloat,
18092OP_FlipIntAPSSint8,
18093OP_FlipIntAPSUint8,
18094OP_FlipIntAPSSint16,
18095OP_FlipIntAPSUint16,
18096OP_FlipIntAPSSint32,
18097OP_FlipIntAPSUint32,
18098OP_FlipIntAPSSint64,
18099OP_FlipIntAPSUint64,
18100OP_FlipIntAPSIntAP,
18101OP_FlipIntAPSIntAPS,
18102OP_FlipIntAPSBool,
18103OP_FlipIntAPSFixedPoint,
18104OP_FlipIntAPSPtr,
18105OP_FlipIntAPSMemberPtr,
18106OP_FlipIntAPSFloat,
18107OP_FlipBoolSint8,
18108OP_FlipBoolUint8,
18109OP_FlipBoolSint16,
18110OP_FlipBoolUint16,
18111OP_FlipBoolSint32,
18112OP_FlipBoolUint32,
18113OP_FlipBoolSint64,
18114OP_FlipBoolUint64,
18115OP_FlipBoolIntAP,
18116OP_FlipBoolIntAPS,
18117OP_FlipBoolBool,
18118OP_FlipBoolFixedPoint,
18119OP_FlipBoolPtr,
18120OP_FlipBoolMemberPtr,
18121OP_FlipBoolFloat,
18122OP_FlipFixedPointSint8,
18123OP_FlipFixedPointUint8,
18124OP_FlipFixedPointSint16,
18125OP_FlipFixedPointUint16,
18126OP_FlipFixedPointSint32,
18127OP_FlipFixedPointUint32,
18128OP_FlipFixedPointSint64,
18129OP_FlipFixedPointUint64,
18130OP_FlipFixedPointIntAP,
18131OP_FlipFixedPointIntAPS,
18132OP_FlipFixedPointBool,
18133OP_FlipFixedPointFixedPoint,
18134OP_FlipFixedPointPtr,
18135OP_FlipFixedPointMemberPtr,
18136OP_FlipFixedPointFloat,
18137OP_FlipPtrSint8,
18138OP_FlipPtrUint8,
18139OP_FlipPtrSint16,
18140OP_FlipPtrUint16,
18141OP_FlipPtrSint32,
18142OP_FlipPtrUint32,
18143OP_FlipPtrSint64,
18144OP_FlipPtrUint64,
18145OP_FlipPtrIntAP,
18146OP_FlipPtrIntAPS,
18147OP_FlipPtrBool,
18148OP_FlipPtrFixedPoint,
18149OP_FlipPtrPtr,
18150OP_FlipPtrMemberPtr,
18151OP_FlipPtrFloat,
18152OP_FlipMemberPtrSint8,
18153OP_FlipMemberPtrUint8,
18154OP_FlipMemberPtrSint16,
18155OP_FlipMemberPtrUint16,
18156OP_FlipMemberPtrSint32,
18157OP_FlipMemberPtrUint32,
18158OP_FlipMemberPtrSint64,
18159OP_FlipMemberPtrUint64,
18160OP_FlipMemberPtrIntAP,
18161OP_FlipMemberPtrIntAPS,
18162OP_FlipMemberPtrBool,
18163OP_FlipMemberPtrFixedPoint,
18164OP_FlipMemberPtrPtr,
18165OP_FlipMemberPtrMemberPtr,
18166OP_FlipMemberPtrFloat,
18167OP_FlipFloatSint8,
18168OP_FlipFloatUint8,
18169OP_FlipFloatSint16,
18170OP_FlipFloatUint16,
18171OP_FlipFloatSint32,
18172OP_FlipFloatUint32,
18173OP_FlipFloatSint64,
18174OP_FlipFloatUint64,
18175OP_FlipFloatIntAP,
18176OP_FlipFloatIntAPS,
18177OP_FlipFloatBool,
18178OP_FlipFloatFixedPoint,
18179OP_FlipFloatPtr,
18180OP_FlipFloatMemberPtr,
18181OP_FlipFloatFloat,
18182#endif
18183#ifdef GET_INTERPFN_LIST
18184&Interp_FlipSint8Sint8,
18185&Interp_FlipSint8Uint8,
18186&Interp_FlipSint8Sint16,
18187&Interp_FlipSint8Uint16,
18188&Interp_FlipSint8Sint32,
18189&Interp_FlipSint8Uint32,
18190&Interp_FlipSint8Sint64,
18191&Interp_FlipSint8Uint64,
18192&Interp_FlipSint8IntAP,
18193&Interp_FlipSint8IntAPS,
18194&Interp_FlipSint8Bool,
18195&Interp_FlipSint8FixedPoint,
18196&Interp_FlipSint8Ptr,
18197&Interp_FlipSint8MemberPtr,
18198&Interp_FlipSint8Float,
18199&Interp_FlipUint8Sint8,
18200&Interp_FlipUint8Uint8,
18201&Interp_FlipUint8Sint16,
18202&Interp_FlipUint8Uint16,
18203&Interp_FlipUint8Sint32,
18204&Interp_FlipUint8Uint32,
18205&Interp_FlipUint8Sint64,
18206&Interp_FlipUint8Uint64,
18207&Interp_FlipUint8IntAP,
18208&Interp_FlipUint8IntAPS,
18209&Interp_FlipUint8Bool,
18210&Interp_FlipUint8FixedPoint,
18211&Interp_FlipUint8Ptr,
18212&Interp_FlipUint8MemberPtr,
18213&Interp_FlipUint8Float,
18214&Interp_FlipSint16Sint8,
18215&Interp_FlipSint16Uint8,
18216&Interp_FlipSint16Sint16,
18217&Interp_FlipSint16Uint16,
18218&Interp_FlipSint16Sint32,
18219&Interp_FlipSint16Uint32,
18220&Interp_FlipSint16Sint64,
18221&Interp_FlipSint16Uint64,
18222&Interp_FlipSint16IntAP,
18223&Interp_FlipSint16IntAPS,
18224&Interp_FlipSint16Bool,
18225&Interp_FlipSint16FixedPoint,
18226&Interp_FlipSint16Ptr,
18227&Interp_FlipSint16MemberPtr,
18228&Interp_FlipSint16Float,
18229&Interp_FlipUint16Sint8,
18230&Interp_FlipUint16Uint8,
18231&Interp_FlipUint16Sint16,
18232&Interp_FlipUint16Uint16,
18233&Interp_FlipUint16Sint32,
18234&Interp_FlipUint16Uint32,
18235&Interp_FlipUint16Sint64,
18236&Interp_FlipUint16Uint64,
18237&Interp_FlipUint16IntAP,
18238&Interp_FlipUint16IntAPS,
18239&Interp_FlipUint16Bool,
18240&Interp_FlipUint16FixedPoint,
18241&Interp_FlipUint16Ptr,
18242&Interp_FlipUint16MemberPtr,
18243&Interp_FlipUint16Float,
18244&Interp_FlipSint32Sint8,
18245&Interp_FlipSint32Uint8,
18246&Interp_FlipSint32Sint16,
18247&Interp_FlipSint32Uint16,
18248&Interp_FlipSint32Sint32,
18249&Interp_FlipSint32Uint32,
18250&Interp_FlipSint32Sint64,
18251&Interp_FlipSint32Uint64,
18252&Interp_FlipSint32IntAP,
18253&Interp_FlipSint32IntAPS,
18254&Interp_FlipSint32Bool,
18255&Interp_FlipSint32FixedPoint,
18256&Interp_FlipSint32Ptr,
18257&Interp_FlipSint32MemberPtr,
18258&Interp_FlipSint32Float,
18259&Interp_FlipUint32Sint8,
18260&Interp_FlipUint32Uint8,
18261&Interp_FlipUint32Sint16,
18262&Interp_FlipUint32Uint16,
18263&Interp_FlipUint32Sint32,
18264&Interp_FlipUint32Uint32,
18265&Interp_FlipUint32Sint64,
18266&Interp_FlipUint32Uint64,
18267&Interp_FlipUint32IntAP,
18268&Interp_FlipUint32IntAPS,
18269&Interp_FlipUint32Bool,
18270&Interp_FlipUint32FixedPoint,
18271&Interp_FlipUint32Ptr,
18272&Interp_FlipUint32MemberPtr,
18273&Interp_FlipUint32Float,
18274&Interp_FlipSint64Sint8,
18275&Interp_FlipSint64Uint8,
18276&Interp_FlipSint64Sint16,
18277&Interp_FlipSint64Uint16,
18278&Interp_FlipSint64Sint32,
18279&Interp_FlipSint64Uint32,
18280&Interp_FlipSint64Sint64,
18281&Interp_FlipSint64Uint64,
18282&Interp_FlipSint64IntAP,
18283&Interp_FlipSint64IntAPS,
18284&Interp_FlipSint64Bool,
18285&Interp_FlipSint64FixedPoint,
18286&Interp_FlipSint64Ptr,
18287&Interp_FlipSint64MemberPtr,
18288&Interp_FlipSint64Float,
18289&Interp_FlipUint64Sint8,
18290&Interp_FlipUint64Uint8,
18291&Interp_FlipUint64Sint16,
18292&Interp_FlipUint64Uint16,
18293&Interp_FlipUint64Sint32,
18294&Interp_FlipUint64Uint32,
18295&Interp_FlipUint64Sint64,
18296&Interp_FlipUint64Uint64,
18297&Interp_FlipUint64IntAP,
18298&Interp_FlipUint64IntAPS,
18299&Interp_FlipUint64Bool,
18300&Interp_FlipUint64FixedPoint,
18301&Interp_FlipUint64Ptr,
18302&Interp_FlipUint64MemberPtr,
18303&Interp_FlipUint64Float,
18304&Interp_FlipIntAPSint8,
18305&Interp_FlipIntAPUint8,
18306&Interp_FlipIntAPSint16,
18307&Interp_FlipIntAPUint16,
18308&Interp_FlipIntAPSint32,
18309&Interp_FlipIntAPUint32,
18310&Interp_FlipIntAPSint64,
18311&Interp_FlipIntAPUint64,
18312&Interp_FlipIntAPIntAP,
18313&Interp_FlipIntAPIntAPS,
18314&Interp_FlipIntAPBool,
18315&Interp_FlipIntAPFixedPoint,
18316&Interp_FlipIntAPPtr,
18317&Interp_FlipIntAPMemberPtr,
18318&Interp_FlipIntAPFloat,
18319&Interp_FlipIntAPSSint8,
18320&Interp_FlipIntAPSUint8,
18321&Interp_FlipIntAPSSint16,
18322&Interp_FlipIntAPSUint16,
18323&Interp_FlipIntAPSSint32,
18324&Interp_FlipIntAPSUint32,
18325&Interp_FlipIntAPSSint64,
18326&Interp_FlipIntAPSUint64,
18327&Interp_FlipIntAPSIntAP,
18328&Interp_FlipIntAPSIntAPS,
18329&Interp_FlipIntAPSBool,
18330&Interp_FlipIntAPSFixedPoint,
18331&Interp_FlipIntAPSPtr,
18332&Interp_FlipIntAPSMemberPtr,
18333&Interp_FlipIntAPSFloat,
18334&Interp_FlipBoolSint8,
18335&Interp_FlipBoolUint8,
18336&Interp_FlipBoolSint16,
18337&Interp_FlipBoolUint16,
18338&Interp_FlipBoolSint32,
18339&Interp_FlipBoolUint32,
18340&Interp_FlipBoolSint64,
18341&Interp_FlipBoolUint64,
18342&Interp_FlipBoolIntAP,
18343&Interp_FlipBoolIntAPS,
18344&Interp_FlipBoolBool,
18345&Interp_FlipBoolFixedPoint,
18346&Interp_FlipBoolPtr,
18347&Interp_FlipBoolMemberPtr,
18348&Interp_FlipBoolFloat,
18349&Interp_FlipFixedPointSint8,
18350&Interp_FlipFixedPointUint8,
18351&Interp_FlipFixedPointSint16,
18352&Interp_FlipFixedPointUint16,
18353&Interp_FlipFixedPointSint32,
18354&Interp_FlipFixedPointUint32,
18355&Interp_FlipFixedPointSint64,
18356&Interp_FlipFixedPointUint64,
18357&Interp_FlipFixedPointIntAP,
18358&Interp_FlipFixedPointIntAPS,
18359&Interp_FlipFixedPointBool,
18360&Interp_FlipFixedPointFixedPoint,
18361&Interp_FlipFixedPointPtr,
18362&Interp_FlipFixedPointMemberPtr,
18363&Interp_FlipFixedPointFloat,
18364&Interp_FlipPtrSint8,
18365&Interp_FlipPtrUint8,
18366&Interp_FlipPtrSint16,
18367&Interp_FlipPtrUint16,
18368&Interp_FlipPtrSint32,
18369&Interp_FlipPtrUint32,
18370&Interp_FlipPtrSint64,
18371&Interp_FlipPtrUint64,
18372&Interp_FlipPtrIntAP,
18373&Interp_FlipPtrIntAPS,
18374&Interp_FlipPtrBool,
18375&Interp_FlipPtrFixedPoint,
18376&Interp_FlipPtrPtr,
18377&Interp_FlipPtrMemberPtr,
18378&Interp_FlipPtrFloat,
18379&Interp_FlipMemberPtrSint8,
18380&Interp_FlipMemberPtrUint8,
18381&Interp_FlipMemberPtrSint16,
18382&Interp_FlipMemberPtrUint16,
18383&Interp_FlipMemberPtrSint32,
18384&Interp_FlipMemberPtrUint32,
18385&Interp_FlipMemberPtrSint64,
18386&Interp_FlipMemberPtrUint64,
18387&Interp_FlipMemberPtrIntAP,
18388&Interp_FlipMemberPtrIntAPS,
18389&Interp_FlipMemberPtrBool,
18390&Interp_FlipMemberPtrFixedPoint,
18391&Interp_FlipMemberPtrPtr,
18392&Interp_FlipMemberPtrMemberPtr,
18393&Interp_FlipMemberPtrFloat,
18394&Interp_FlipFloatSint8,
18395&Interp_FlipFloatUint8,
18396&Interp_FlipFloatSint16,
18397&Interp_FlipFloatUint16,
18398&Interp_FlipFloatSint32,
18399&Interp_FlipFloatUint32,
18400&Interp_FlipFloatSint64,
18401&Interp_FlipFloatUint64,
18402&Interp_FlipFloatIntAP,
18403&Interp_FlipFloatIntAPS,
18404&Interp_FlipFloatBool,
18405&Interp_FlipFloatFixedPoint,
18406&Interp_FlipFloatPtr,
18407&Interp_FlipFloatMemberPtr,
18408&Interp_FlipFloatFloat,
18409#endif
18410#ifdef GET_INTERPFN_DISPATCHERS
18411PRESERVE_NONE
18412static bool Interp_FlipSint8Sint8(InterpState &S, CodePtr &PC) {
18413 if (!Flip<PT_Sint8, PT_Sint8>(S, PC))
18414 return false;
18415#if USE_TAILCALLS
18416 MUSTTAIL return InterpNext(S, PC);
18417#else
18418 return true;
18419#endif
18420}
18421PRESERVE_NONE
18422static bool Interp_FlipSint8Uint8(InterpState &S, CodePtr &PC) {
18423 if (!Flip<PT_Sint8, PT_Uint8>(S, PC))
18424 return false;
18425#if USE_TAILCALLS
18426 MUSTTAIL return InterpNext(S, PC);
18427#else
18428 return true;
18429#endif
18430}
18431PRESERVE_NONE
18432static bool Interp_FlipSint8Sint16(InterpState &S, CodePtr &PC) {
18433 if (!Flip<PT_Sint8, PT_Sint16>(S, PC))
18434 return false;
18435#if USE_TAILCALLS
18436 MUSTTAIL return InterpNext(S, PC);
18437#else
18438 return true;
18439#endif
18440}
18441PRESERVE_NONE
18442static bool Interp_FlipSint8Uint16(InterpState &S, CodePtr &PC) {
18443 if (!Flip<PT_Sint8, PT_Uint16>(S, PC))
18444 return false;
18445#if USE_TAILCALLS
18446 MUSTTAIL return InterpNext(S, PC);
18447#else
18448 return true;
18449#endif
18450}
18451PRESERVE_NONE
18452static bool Interp_FlipSint8Sint32(InterpState &S, CodePtr &PC) {
18453 if (!Flip<PT_Sint8, PT_Sint32>(S, PC))
18454 return false;
18455#if USE_TAILCALLS
18456 MUSTTAIL return InterpNext(S, PC);
18457#else
18458 return true;
18459#endif
18460}
18461PRESERVE_NONE
18462static bool Interp_FlipSint8Uint32(InterpState &S, CodePtr &PC) {
18463 if (!Flip<PT_Sint8, PT_Uint32>(S, PC))
18464 return false;
18465#if USE_TAILCALLS
18466 MUSTTAIL return InterpNext(S, PC);
18467#else
18468 return true;
18469#endif
18470}
18471PRESERVE_NONE
18472static bool Interp_FlipSint8Sint64(InterpState &S, CodePtr &PC) {
18473 if (!Flip<PT_Sint8, PT_Sint64>(S, PC))
18474 return false;
18475#if USE_TAILCALLS
18476 MUSTTAIL return InterpNext(S, PC);
18477#else
18478 return true;
18479#endif
18480}
18481PRESERVE_NONE
18482static bool Interp_FlipSint8Uint64(InterpState &S, CodePtr &PC) {
18483 if (!Flip<PT_Sint8, PT_Uint64>(S, PC))
18484 return false;
18485#if USE_TAILCALLS
18486 MUSTTAIL return InterpNext(S, PC);
18487#else
18488 return true;
18489#endif
18490}
18491PRESERVE_NONE
18492static bool Interp_FlipSint8IntAP(InterpState &S, CodePtr &PC) {
18493 if (!Flip<PT_Sint8, PT_IntAP>(S, PC))
18494 return false;
18495#if USE_TAILCALLS
18496 MUSTTAIL return InterpNext(S, PC);
18497#else
18498 return true;
18499#endif
18500}
18501PRESERVE_NONE
18502static bool Interp_FlipSint8IntAPS(InterpState &S, CodePtr &PC) {
18503 if (!Flip<PT_Sint8, PT_IntAPS>(S, PC))
18504 return false;
18505#if USE_TAILCALLS
18506 MUSTTAIL return InterpNext(S, PC);
18507#else
18508 return true;
18509#endif
18510}
18511PRESERVE_NONE
18512static bool Interp_FlipSint8Bool(InterpState &S, CodePtr &PC) {
18513 if (!Flip<PT_Sint8, PT_Bool>(S, PC))
18514 return false;
18515#if USE_TAILCALLS
18516 MUSTTAIL return InterpNext(S, PC);
18517#else
18518 return true;
18519#endif
18520}
18521PRESERVE_NONE
18522static bool Interp_FlipSint8FixedPoint(InterpState &S, CodePtr &PC) {
18523 if (!Flip<PT_Sint8, PT_FixedPoint>(S, PC))
18524 return false;
18525#if USE_TAILCALLS
18526 MUSTTAIL return InterpNext(S, PC);
18527#else
18528 return true;
18529#endif
18530}
18531PRESERVE_NONE
18532static bool Interp_FlipSint8Ptr(InterpState &S, CodePtr &PC) {
18533 if (!Flip<PT_Sint8, PT_Ptr>(S, PC))
18534 return false;
18535#if USE_TAILCALLS
18536 MUSTTAIL return InterpNext(S, PC);
18537#else
18538 return true;
18539#endif
18540}
18541PRESERVE_NONE
18542static bool Interp_FlipSint8MemberPtr(InterpState &S, CodePtr &PC) {
18543 if (!Flip<PT_Sint8, PT_MemberPtr>(S, PC))
18544 return false;
18545#if USE_TAILCALLS
18546 MUSTTAIL return InterpNext(S, PC);
18547#else
18548 return true;
18549#endif
18550}
18551PRESERVE_NONE
18552static bool Interp_FlipSint8Float(InterpState &S, CodePtr &PC) {
18553 if (!Flip<PT_Sint8, PT_Float>(S, PC))
18554 return false;
18555#if USE_TAILCALLS
18556 MUSTTAIL return InterpNext(S, PC);
18557#else
18558 return true;
18559#endif
18560}
18561PRESERVE_NONE
18562static bool Interp_FlipUint8Sint8(InterpState &S, CodePtr &PC) {
18563 if (!Flip<PT_Uint8, PT_Sint8>(S, PC))
18564 return false;
18565#if USE_TAILCALLS
18566 MUSTTAIL return InterpNext(S, PC);
18567#else
18568 return true;
18569#endif
18570}
18571PRESERVE_NONE
18572static bool Interp_FlipUint8Uint8(InterpState &S, CodePtr &PC) {
18573 if (!Flip<PT_Uint8, PT_Uint8>(S, PC))
18574 return false;
18575#if USE_TAILCALLS
18576 MUSTTAIL return InterpNext(S, PC);
18577#else
18578 return true;
18579#endif
18580}
18581PRESERVE_NONE
18582static bool Interp_FlipUint8Sint16(InterpState &S, CodePtr &PC) {
18583 if (!Flip<PT_Uint8, PT_Sint16>(S, PC))
18584 return false;
18585#if USE_TAILCALLS
18586 MUSTTAIL return InterpNext(S, PC);
18587#else
18588 return true;
18589#endif
18590}
18591PRESERVE_NONE
18592static bool Interp_FlipUint8Uint16(InterpState &S, CodePtr &PC) {
18593 if (!Flip<PT_Uint8, PT_Uint16>(S, PC))
18594 return false;
18595#if USE_TAILCALLS
18596 MUSTTAIL return InterpNext(S, PC);
18597#else
18598 return true;
18599#endif
18600}
18601PRESERVE_NONE
18602static bool Interp_FlipUint8Sint32(InterpState &S, CodePtr &PC) {
18603 if (!Flip<PT_Uint8, PT_Sint32>(S, PC))
18604 return false;
18605#if USE_TAILCALLS
18606 MUSTTAIL return InterpNext(S, PC);
18607#else
18608 return true;
18609#endif
18610}
18611PRESERVE_NONE
18612static bool Interp_FlipUint8Uint32(InterpState &S, CodePtr &PC) {
18613 if (!Flip<PT_Uint8, PT_Uint32>(S, PC))
18614 return false;
18615#if USE_TAILCALLS
18616 MUSTTAIL return InterpNext(S, PC);
18617#else
18618 return true;
18619#endif
18620}
18621PRESERVE_NONE
18622static bool Interp_FlipUint8Sint64(InterpState &S, CodePtr &PC) {
18623 if (!Flip<PT_Uint8, PT_Sint64>(S, PC))
18624 return false;
18625#if USE_TAILCALLS
18626 MUSTTAIL return InterpNext(S, PC);
18627#else
18628 return true;
18629#endif
18630}
18631PRESERVE_NONE
18632static bool Interp_FlipUint8Uint64(InterpState &S, CodePtr &PC) {
18633 if (!Flip<PT_Uint8, PT_Uint64>(S, PC))
18634 return false;
18635#if USE_TAILCALLS
18636 MUSTTAIL return InterpNext(S, PC);
18637#else
18638 return true;
18639#endif
18640}
18641PRESERVE_NONE
18642static bool Interp_FlipUint8IntAP(InterpState &S, CodePtr &PC) {
18643 if (!Flip<PT_Uint8, PT_IntAP>(S, PC))
18644 return false;
18645#if USE_TAILCALLS
18646 MUSTTAIL return InterpNext(S, PC);
18647#else
18648 return true;
18649#endif
18650}
18651PRESERVE_NONE
18652static bool Interp_FlipUint8IntAPS(InterpState &S, CodePtr &PC) {
18653 if (!Flip<PT_Uint8, PT_IntAPS>(S, PC))
18654 return false;
18655#if USE_TAILCALLS
18656 MUSTTAIL return InterpNext(S, PC);
18657#else
18658 return true;
18659#endif
18660}
18661PRESERVE_NONE
18662static bool Interp_FlipUint8Bool(InterpState &S, CodePtr &PC) {
18663 if (!Flip<PT_Uint8, PT_Bool>(S, PC))
18664 return false;
18665#if USE_TAILCALLS
18666 MUSTTAIL return InterpNext(S, PC);
18667#else
18668 return true;
18669#endif
18670}
18671PRESERVE_NONE
18672static bool Interp_FlipUint8FixedPoint(InterpState &S, CodePtr &PC) {
18673 if (!Flip<PT_Uint8, PT_FixedPoint>(S, PC))
18674 return false;
18675#if USE_TAILCALLS
18676 MUSTTAIL return InterpNext(S, PC);
18677#else
18678 return true;
18679#endif
18680}
18681PRESERVE_NONE
18682static bool Interp_FlipUint8Ptr(InterpState &S, CodePtr &PC) {
18683 if (!Flip<PT_Uint8, PT_Ptr>(S, PC))
18684 return false;
18685#if USE_TAILCALLS
18686 MUSTTAIL return InterpNext(S, PC);
18687#else
18688 return true;
18689#endif
18690}
18691PRESERVE_NONE
18692static bool Interp_FlipUint8MemberPtr(InterpState &S, CodePtr &PC) {
18693 if (!Flip<PT_Uint8, PT_MemberPtr>(S, PC))
18694 return false;
18695#if USE_TAILCALLS
18696 MUSTTAIL return InterpNext(S, PC);
18697#else
18698 return true;
18699#endif
18700}
18701PRESERVE_NONE
18702static bool Interp_FlipUint8Float(InterpState &S, CodePtr &PC) {
18703 if (!Flip<PT_Uint8, PT_Float>(S, PC))
18704 return false;
18705#if USE_TAILCALLS
18706 MUSTTAIL return InterpNext(S, PC);
18707#else
18708 return true;
18709#endif
18710}
18711PRESERVE_NONE
18712static bool Interp_FlipSint16Sint8(InterpState &S, CodePtr &PC) {
18713 if (!Flip<PT_Sint16, PT_Sint8>(S, PC))
18714 return false;
18715#if USE_TAILCALLS
18716 MUSTTAIL return InterpNext(S, PC);
18717#else
18718 return true;
18719#endif
18720}
18721PRESERVE_NONE
18722static bool Interp_FlipSint16Uint8(InterpState &S, CodePtr &PC) {
18723 if (!Flip<PT_Sint16, PT_Uint8>(S, PC))
18724 return false;
18725#if USE_TAILCALLS
18726 MUSTTAIL return InterpNext(S, PC);
18727#else
18728 return true;
18729#endif
18730}
18731PRESERVE_NONE
18732static bool Interp_FlipSint16Sint16(InterpState &S, CodePtr &PC) {
18733 if (!Flip<PT_Sint16, PT_Sint16>(S, PC))
18734 return false;
18735#if USE_TAILCALLS
18736 MUSTTAIL return InterpNext(S, PC);
18737#else
18738 return true;
18739#endif
18740}
18741PRESERVE_NONE
18742static bool Interp_FlipSint16Uint16(InterpState &S, CodePtr &PC) {
18743 if (!Flip<PT_Sint16, PT_Uint16>(S, PC))
18744 return false;
18745#if USE_TAILCALLS
18746 MUSTTAIL return InterpNext(S, PC);
18747#else
18748 return true;
18749#endif
18750}
18751PRESERVE_NONE
18752static bool Interp_FlipSint16Sint32(InterpState &S, CodePtr &PC) {
18753 if (!Flip<PT_Sint16, PT_Sint32>(S, PC))
18754 return false;
18755#if USE_TAILCALLS
18756 MUSTTAIL return InterpNext(S, PC);
18757#else
18758 return true;
18759#endif
18760}
18761PRESERVE_NONE
18762static bool Interp_FlipSint16Uint32(InterpState &S, CodePtr &PC) {
18763 if (!Flip<PT_Sint16, PT_Uint32>(S, PC))
18764 return false;
18765#if USE_TAILCALLS
18766 MUSTTAIL return InterpNext(S, PC);
18767#else
18768 return true;
18769#endif
18770}
18771PRESERVE_NONE
18772static bool Interp_FlipSint16Sint64(InterpState &S, CodePtr &PC) {
18773 if (!Flip<PT_Sint16, PT_Sint64>(S, PC))
18774 return false;
18775#if USE_TAILCALLS
18776 MUSTTAIL return InterpNext(S, PC);
18777#else
18778 return true;
18779#endif
18780}
18781PRESERVE_NONE
18782static bool Interp_FlipSint16Uint64(InterpState &S, CodePtr &PC) {
18783 if (!Flip<PT_Sint16, PT_Uint64>(S, PC))
18784 return false;
18785#if USE_TAILCALLS
18786 MUSTTAIL return InterpNext(S, PC);
18787#else
18788 return true;
18789#endif
18790}
18791PRESERVE_NONE
18792static bool Interp_FlipSint16IntAP(InterpState &S, CodePtr &PC) {
18793 if (!Flip<PT_Sint16, PT_IntAP>(S, PC))
18794 return false;
18795#if USE_TAILCALLS
18796 MUSTTAIL return InterpNext(S, PC);
18797#else
18798 return true;
18799#endif
18800}
18801PRESERVE_NONE
18802static bool Interp_FlipSint16IntAPS(InterpState &S, CodePtr &PC) {
18803 if (!Flip<PT_Sint16, PT_IntAPS>(S, PC))
18804 return false;
18805#if USE_TAILCALLS
18806 MUSTTAIL return InterpNext(S, PC);
18807#else
18808 return true;
18809#endif
18810}
18811PRESERVE_NONE
18812static bool Interp_FlipSint16Bool(InterpState &S, CodePtr &PC) {
18813 if (!Flip<PT_Sint16, PT_Bool>(S, PC))
18814 return false;
18815#if USE_TAILCALLS
18816 MUSTTAIL return InterpNext(S, PC);
18817#else
18818 return true;
18819#endif
18820}
18821PRESERVE_NONE
18822static bool Interp_FlipSint16FixedPoint(InterpState &S, CodePtr &PC) {
18823 if (!Flip<PT_Sint16, PT_FixedPoint>(S, PC))
18824 return false;
18825#if USE_TAILCALLS
18826 MUSTTAIL return InterpNext(S, PC);
18827#else
18828 return true;
18829#endif
18830}
18831PRESERVE_NONE
18832static bool Interp_FlipSint16Ptr(InterpState &S, CodePtr &PC) {
18833 if (!Flip<PT_Sint16, PT_Ptr>(S, PC))
18834 return false;
18835#if USE_TAILCALLS
18836 MUSTTAIL return InterpNext(S, PC);
18837#else
18838 return true;
18839#endif
18840}
18841PRESERVE_NONE
18842static bool Interp_FlipSint16MemberPtr(InterpState &S, CodePtr &PC) {
18843 if (!Flip<PT_Sint16, PT_MemberPtr>(S, PC))
18844 return false;
18845#if USE_TAILCALLS
18846 MUSTTAIL return InterpNext(S, PC);
18847#else
18848 return true;
18849#endif
18850}
18851PRESERVE_NONE
18852static bool Interp_FlipSint16Float(InterpState &S, CodePtr &PC) {
18853 if (!Flip<PT_Sint16, PT_Float>(S, PC))
18854 return false;
18855#if USE_TAILCALLS
18856 MUSTTAIL return InterpNext(S, PC);
18857#else
18858 return true;
18859#endif
18860}
18861PRESERVE_NONE
18862static bool Interp_FlipUint16Sint8(InterpState &S, CodePtr &PC) {
18863 if (!Flip<PT_Uint16, PT_Sint8>(S, PC))
18864 return false;
18865#if USE_TAILCALLS
18866 MUSTTAIL return InterpNext(S, PC);
18867#else
18868 return true;
18869#endif
18870}
18871PRESERVE_NONE
18872static bool Interp_FlipUint16Uint8(InterpState &S, CodePtr &PC) {
18873 if (!Flip<PT_Uint16, PT_Uint8>(S, PC))
18874 return false;
18875#if USE_TAILCALLS
18876 MUSTTAIL return InterpNext(S, PC);
18877#else
18878 return true;
18879#endif
18880}
18881PRESERVE_NONE
18882static bool Interp_FlipUint16Sint16(InterpState &S, CodePtr &PC) {
18883 if (!Flip<PT_Uint16, PT_Sint16>(S, PC))
18884 return false;
18885#if USE_TAILCALLS
18886 MUSTTAIL return InterpNext(S, PC);
18887#else
18888 return true;
18889#endif
18890}
18891PRESERVE_NONE
18892static bool Interp_FlipUint16Uint16(InterpState &S, CodePtr &PC) {
18893 if (!Flip<PT_Uint16, PT_Uint16>(S, PC))
18894 return false;
18895#if USE_TAILCALLS
18896 MUSTTAIL return InterpNext(S, PC);
18897#else
18898 return true;
18899#endif
18900}
18901PRESERVE_NONE
18902static bool Interp_FlipUint16Sint32(InterpState &S, CodePtr &PC) {
18903 if (!Flip<PT_Uint16, PT_Sint32>(S, PC))
18904 return false;
18905#if USE_TAILCALLS
18906 MUSTTAIL return InterpNext(S, PC);
18907#else
18908 return true;
18909#endif
18910}
18911PRESERVE_NONE
18912static bool Interp_FlipUint16Uint32(InterpState &S, CodePtr &PC) {
18913 if (!Flip<PT_Uint16, PT_Uint32>(S, PC))
18914 return false;
18915#if USE_TAILCALLS
18916 MUSTTAIL return InterpNext(S, PC);
18917#else
18918 return true;
18919#endif
18920}
18921PRESERVE_NONE
18922static bool Interp_FlipUint16Sint64(InterpState &S, CodePtr &PC) {
18923 if (!Flip<PT_Uint16, PT_Sint64>(S, PC))
18924 return false;
18925#if USE_TAILCALLS
18926 MUSTTAIL return InterpNext(S, PC);
18927#else
18928 return true;
18929#endif
18930}
18931PRESERVE_NONE
18932static bool Interp_FlipUint16Uint64(InterpState &S, CodePtr &PC) {
18933 if (!Flip<PT_Uint16, PT_Uint64>(S, PC))
18934 return false;
18935#if USE_TAILCALLS
18936 MUSTTAIL return InterpNext(S, PC);
18937#else
18938 return true;
18939#endif
18940}
18941PRESERVE_NONE
18942static bool Interp_FlipUint16IntAP(InterpState &S, CodePtr &PC) {
18943 if (!Flip<PT_Uint16, PT_IntAP>(S, PC))
18944 return false;
18945#if USE_TAILCALLS
18946 MUSTTAIL return InterpNext(S, PC);
18947#else
18948 return true;
18949#endif
18950}
18951PRESERVE_NONE
18952static bool Interp_FlipUint16IntAPS(InterpState &S, CodePtr &PC) {
18953 if (!Flip<PT_Uint16, PT_IntAPS>(S, PC))
18954 return false;
18955#if USE_TAILCALLS
18956 MUSTTAIL return InterpNext(S, PC);
18957#else
18958 return true;
18959#endif
18960}
18961PRESERVE_NONE
18962static bool Interp_FlipUint16Bool(InterpState &S, CodePtr &PC) {
18963 if (!Flip<PT_Uint16, PT_Bool>(S, PC))
18964 return false;
18965#if USE_TAILCALLS
18966 MUSTTAIL return InterpNext(S, PC);
18967#else
18968 return true;
18969#endif
18970}
18971PRESERVE_NONE
18972static bool Interp_FlipUint16FixedPoint(InterpState &S, CodePtr &PC) {
18973 if (!Flip<PT_Uint16, PT_FixedPoint>(S, PC))
18974 return false;
18975#if USE_TAILCALLS
18976 MUSTTAIL return InterpNext(S, PC);
18977#else
18978 return true;
18979#endif
18980}
18981PRESERVE_NONE
18982static bool Interp_FlipUint16Ptr(InterpState &S, CodePtr &PC) {
18983 if (!Flip<PT_Uint16, PT_Ptr>(S, PC))
18984 return false;
18985#if USE_TAILCALLS
18986 MUSTTAIL return InterpNext(S, PC);
18987#else
18988 return true;
18989#endif
18990}
18991PRESERVE_NONE
18992static bool Interp_FlipUint16MemberPtr(InterpState &S, CodePtr &PC) {
18993 if (!Flip<PT_Uint16, PT_MemberPtr>(S, PC))
18994 return false;
18995#if USE_TAILCALLS
18996 MUSTTAIL return InterpNext(S, PC);
18997#else
18998 return true;
18999#endif
19000}
19001PRESERVE_NONE
19002static bool Interp_FlipUint16Float(InterpState &S, CodePtr &PC) {
19003 if (!Flip<PT_Uint16, PT_Float>(S, PC))
19004 return false;
19005#if USE_TAILCALLS
19006 MUSTTAIL return InterpNext(S, PC);
19007#else
19008 return true;
19009#endif
19010}
19011PRESERVE_NONE
19012static bool Interp_FlipSint32Sint8(InterpState &S, CodePtr &PC) {
19013 if (!Flip<PT_Sint32, PT_Sint8>(S, PC))
19014 return false;
19015#if USE_TAILCALLS
19016 MUSTTAIL return InterpNext(S, PC);
19017#else
19018 return true;
19019#endif
19020}
19021PRESERVE_NONE
19022static bool Interp_FlipSint32Uint8(InterpState &S, CodePtr &PC) {
19023 if (!Flip<PT_Sint32, PT_Uint8>(S, PC))
19024 return false;
19025#if USE_TAILCALLS
19026 MUSTTAIL return InterpNext(S, PC);
19027#else
19028 return true;
19029#endif
19030}
19031PRESERVE_NONE
19032static bool Interp_FlipSint32Sint16(InterpState &S, CodePtr &PC) {
19033 if (!Flip<PT_Sint32, PT_Sint16>(S, PC))
19034 return false;
19035#if USE_TAILCALLS
19036 MUSTTAIL return InterpNext(S, PC);
19037#else
19038 return true;
19039#endif
19040}
19041PRESERVE_NONE
19042static bool Interp_FlipSint32Uint16(InterpState &S, CodePtr &PC) {
19043 if (!Flip<PT_Sint32, PT_Uint16>(S, PC))
19044 return false;
19045#if USE_TAILCALLS
19046 MUSTTAIL return InterpNext(S, PC);
19047#else
19048 return true;
19049#endif
19050}
19051PRESERVE_NONE
19052static bool Interp_FlipSint32Sint32(InterpState &S, CodePtr &PC) {
19053 if (!Flip<PT_Sint32, PT_Sint32>(S, PC))
19054 return false;
19055#if USE_TAILCALLS
19056 MUSTTAIL return InterpNext(S, PC);
19057#else
19058 return true;
19059#endif
19060}
19061PRESERVE_NONE
19062static bool Interp_FlipSint32Uint32(InterpState &S, CodePtr &PC) {
19063 if (!Flip<PT_Sint32, PT_Uint32>(S, PC))
19064 return false;
19065#if USE_TAILCALLS
19066 MUSTTAIL return InterpNext(S, PC);
19067#else
19068 return true;
19069#endif
19070}
19071PRESERVE_NONE
19072static bool Interp_FlipSint32Sint64(InterpState &S, CodePtr &PC) {
19073 if (!Flip<PT_Sint32, PT_Sint64>(S, PC))
19074 return false;
19075#if USE_TAILCALLS
19076 MUSTTAIL return InterpNext(S, PC);
19077#else
19078 return true;
19079#endif
19080}
19081PRESERVE_NONE
19082static bool Interp_FlipSint32Uint64(InterpState &S, CodePtr &PC) {
19083 if (!Flip<PT_Sint32, PT_Uint64>(S, PC))
19084 return false;
19085#if USE_TAILCALLS
19086 MUSTTAIL return InterpNext(S, PC);
19087#else
19088 return true;
19089#endif
19090}
19091PRESERVE_NONE
19092static bool Interp_FlipSint32IntAP(InterpState &S, CodePtr &PC) {
19093 if (!Flip<PT_Sint32, PT_IntAP>(S, PC))
19094 return false;
19095#if USE_TAILCALLS
19096 MUSTTAIL return InterpNext(S, PC);
19097#else
19098 return true;
19099#endif
19100}
19101PRESERVE_NONE
19102static bool Interp_FlipSint32IntAPS(InterpState &S, CodePtr &PC) {
19103 if (!Flip<PT_Sint32, PT_IntAPS>(S, PC))
19104 return false;
19105#if USE_TAILCALLS
19106 MUSTTAIL return InterpNext(S, PC);
19107#else
19108 return true;
19109#endif
19110}
19111PRESERVE_NONE
19112static bool Interp_FlipSint32Bool(InterpState &S, CodePtr &PC) {
19113 if (!Flip<PT_Sint32, PT_Bool>(S, PC))
19114 return false;
19115#if USE_TAILCALLS
19116 MUSTTAIL return InterpNext(S, PC);
19117#else
19118 return true;
19119#endif
19120}
19121PRESERVE_NONE
19122static bool Interp_FlipSint32FixedPoint(InterpState &S, CodePtr &PC) {
19123 if (!Flip<PT_Sint32, PT_FixedPoint>(S, PC))
19124 return false;
19125#if USE_TAILCALLS
19126 MUSTTAIL return InterpNext(S, PC);
19127#else
19128 return true;
19129#endif
19130}
19131PRESERVE_NONE
19132static bool Interp_FlipSint32Ptr(InterpState &S, CodePtr &PC) {
19133 if (!Flip<PT_Sint32, PT_Ptr>(S, PC))
19134 return false;
19135#if USE_TAILCALLS
19136 MUSTTAIL return InterpNext(S, PC);
19137#else
19138 return true;
19139#endif
19140}
19141PRESERVE_NONE
19142static bool Interp_FlipSint32MemberPtr(InterpState &S, CodePtr &PC) {
19143 if (!Flip<PT_Sint32, PT_MemberPtr>(S, PC))
19144 return false;
19145#if USE_TAILCALLS
19146 MUSTTAIL return InterpNext(S, PC);
19147#else
19148 return true;
19149#endif
19150}
19151PRESERVE_NONE
19152static bool Interp_FlipSint32Float(InterpState &S, CodePtr &PC) {
19153 if (!Flip<PT_Sint32, PT_Float>(S, PC))
19154 return false;
19155#if USE_TAILCALLS
19156 MUSTTAIL return InterpNext(S, PC);
19157#else
19158 return true;
19159#endif
19160}
19161PRESERVE_NONE
19162static bool Interp_FlipUint32Sint8(InterpState &S, CodePtr &PC) {
19163 if (!Flip<PT_Uint32, PT_Sint8>(S, PC))
19164 return false;
19165#if USE_TAILCALLS
19166 MUSTTAIL return InterpNext(S, PC);
19167#else
19168 return true;
19169#endif
19170}
19171PRESERVE_NONE
19172static bool Interp_FlipUint32Uint8(InterpState &S, CodePtr &PC) {
19173 if (!Flip<PT_Uint32, PT_Uint8>(S, PC))
19174 return false;
19175#if USE_TAILCALLS
19176 MUSTTAIL return InterpNext(S, PC);
19177#else
19178 return true;
19179#endif
19180}
19181PRESERVE_NONE
19182static bool Interp_FlipUint32Sint16(InterpState &S, CodePtr &PC) {
19183 if (!Flip<PT_Uint32, PT_Sint16>(S, PC))
19184 return false;
19185#if USE_TAILCALLS
19186 MUSTTAIL return InterpNext(S, PC);
19187#else
19188 return true;
19189#endif
19190}
19191PRESERVE_NONE
19192static bool Interp_FlipUint32Uint16(InterpState &S, CodePtr &PC) {
19193 if (!Flip<PT_Uint32, PT_Uint16>(S, PC))
19194 return false;
19195#if USE_TAILCALLS
19196 MUSTTAIL return InterpNext(S, PC);
19197#else
19198 return true;
19199#endif
19200}
19201PRESERVE_NONE
19202static bool Interp_FlipUint32Sint32(InterpState &S, CodePtr &PC) {
19203 if (!Flip<PT_Uint32, PT_Sint32>(S, PC))
19204 return false;
19205#if USE_TAILCALLS
19206 MUSTTAIL return InterpNext(S, PC);
19207#else
19208 return true;
19209#endif
19210}
19211PRESERVE_NONE
19212static bool Interp_FlipUint32Uint32(InterpState &S, CodePtr &PC) {
19213 if (!Flip<PT_Uint32, PT_Uint32>(S, PC))
19214 return false;
19215#if USE_TAILCALLS
19216 MUSTTAIL return InterpNext(S, PC);
19217#else
19218 return true;
19219#endif
19220}
19221PRESERVE_NONE
19222static bool Interp_FlipUint32Sint64(InterpState &S, CodePtr &PC) {
19223 if (!Flip<PT_Uint32, PT_Sint64>(S, PC))
19224 return false;
19225#if USE_TAILCALLS
19226 MUSTTAIL return InterpNext(S, PC);
19227#else
19228 return true;
19229#endif
19230}
19231PRESERVE_NONE
19232static bool Interp_FlipUint32Uint64(InterpState &S, CodePtr &PC) {
19233 if (!Flip<PT_Uint32, PT_Uint64>(S, PC))
19234 return false;
19235#if USE_TAILCALLS
19236 MUSTTAIL return InterpNext(S, PC);
19237#else
19238 return true;
19239#endif
19240}
19241PRESERVE_NONE
19242static bool Interp_FlipUint32IntAP(InterpState &S, CodePtr &PC) {
19243 if (!Flip<PT_Uint32, PT_IntAP>(S, PC))
19244 return false;
19245#if USE_TAILCALLS
19246 MUSTTAIL return InterpNext(S, PC);
19247#else
19248 return true;
19249#endif
19250}
19251PRESERVE_NONE
19252static bool Interp_FlipUint32IntAPS(InterpState &S, CodePtr &PC) {
19253 if (!Flip<PT_Uint32, PT_IntAPS>(S, PC))
19254 return false;
19255#if USE_TAILCALLS
19256 MUSTTAIL return InterpNext(S, PC);
19257#else
19258 return true;
19259#endif
19260}
19261PRESERVE_NONE
19262static bool Interp_FlipUint32Bool(InterpState &S, CodePtr &PC) {
19263 if (!Flip<PT_Uint32, PT_Bool>(S, PC))
19264 return false;
19265#if USE_TAILCALLS
19266 MUSTTAIL return InterpNext(S, PC);
19267#else
19268 return true;
19269#endif
19270}
19271PRESERVE_NONE
19272static bool Interp_FlipUint32FixedPoint(InterpState &S, CodePtr &PC) {
19273 if (!Flip<PT_Uint32, PT_FixedPoint>(S, PC))
19274 return false;
19275#if USE_TAILCALLS
19276 MUSTTAIL return InterpNext(S, PC);
19277#else
19278 return true;
19279#endif
19280}
19281PRESERVE_NONE
19282static bool Interp_FlipUint32Ptr(InterpState &S, CodePtr &PC) {
19283 if (!Flip<PT_Uint32, PT_Ptr>(S, PC))
19284 return false;
19285#if USE_TAILCALLS
19286 MUSTTAIL return InterpNext(S, PC);
19287#else
19288 return true;
19289#endif
19290}
19291PRESERVE_NONE
19292static bool Interp_FlipUint32MemberPtr(InterpState &S, CodePtr &PC) {
19293 if (!Flip<PT_Uint32, PT_MemberPtr>(S, PC))
19294 return false;
19295#if USE_TAILCALLS
19296 MUSTTAIL return InterpNext(S, PC);
19297#else
19298 return true;
19299#endif
19300}
19301PRESERVE_NONE
19302static bool Interp_FlipUint32Float(InterpState &S, CodePtr &PC) {
19303 if (!Flip<PT_Uint32, PT_Float>(S, PC))
19304 return false;
19305#if USE_TAILCALLS
19306 MUSTTAIL return InterpNext(S, PC);
19307#else
19308 return true;
19309#endif
19310}
19311PRESERVE_NONE
19312static bool Interp_FlipSint64Sint8(InterpState &S, CodePtr &PC) {
19313 if (!Flip<PT_Sint64, PT_Sint8>(S, PC))
19314 return false;
19315#if USE_TAILCALLS
19316 MUSTTAIL return InterpNext(S, PC);
19317#else
19318 return true;
19319#endif
19320}
19321PRESERVE_NONE
19322static bool Interp_FlipSint64Uint8(InterpState &S, CodePtr &PC) {
19323 if (!Flip<PT_Sint64, PT_Uint8>(S, PC))
19324 return false;
19325#if USE_TAILCALLS
19326 MUSTTAIL return InterpNext(S, PC);
19327#else
19328 return true;
19329#endif
19330}
19331PRESERVE_NONE
19332static bool Interp_FlipSint64Sint16(InterpState &S, CodePtr &PC) {
19333 if (!Flip<PT_Sint64, PT_Sint16>(S, PC))
19334 return false;
19335#if USE_TAILCALLS
19336 MUSTTAIL return InterpNext(S, PC);
19337#else
19338 return true;
19339#endif
19340}
19341PRESERVE_NONE
19342static bool Interp_FlipSint64Uint16(InterpState &S, CodePtr &PC) {
19343 if (!Flip<PT_Sint64, PT_Uint16>(S, PC))
19344 return false;
19345#if USE_TAILCALLS
19346 MUSTTAIL return InterpNext(S, PC);
19347#else
19348 return true;
19349#endif
19350}
19351PRESERVE_NONE
19352static bool Interp_FlipSint64Sint32(InterpState &S, CodePtr &PC) {
19353 if (!Flip<PT_Sint64, PT_Sint32>(S, PC))
19354 return false;
19355#if USE_TAILCALLS
19356 MUSTTAIL return InterpNext(S, PC);
19357#else
19358 return true;
19359#endif
19360}
19361PRESERVE_NONE
19362static bool Interp_FlipSint64Uint32(InterpState &S, CodePtr &PC) {
19363 if (!Flip<PT_Sint64, PT_Uint32>(S, PC))
19364 return false;
19365#if USE_TAILCALLS
19366 MUSTTAIL return InterpNext(S, PC);
19367#else
19368 return true;
19369#endif
19370}
19371PRESERVE_NONE
19372static bool Interp_FlipSint64Sint64(InterpState &S, CodePtr &PC) {
19373 if (!Flip<PT_Sint64, PT_Sint64>(S, PC))
19374 return false;
19375#if USE_TAILCALLS
19376 MUSTTAIL return InterpNext(S, PC);
19377#else
19378 return true;
19379#endif
19380}
19381PRESERVE_NONE
19382static bool Interp_FlipSint64Uint64(InterpState &S, CodePtr &PC) {
19383 if (!Flip<PT_Sint64, PT_Uint64>(S, PC))
19384 return false;
19385#if USE_TAILCALLS
19386 MUSTTAIL return InterpNext(S, PC);
19387#else
19388 return true;
19389#endif
19390}
19391PRESERVE_NONE
19392static bool Interp_FlipSint64IntAP(InterpState &S, CodePtr &PC) {
19393 if (!Flip<PT_Sint64, PT_IntAP>(S, PC))
19394 return false;
19395#if USE_TAILCALLS
19396 MUSTTAIL return InterpNext(S, PC);
19397#else
19398 return true;
19399#endif
19400}
19401PRESERVE_NONE
19402static bool Interp_FlipSint64IntAPS(InterpState &S, CodePtr &PC) {
19403 if (!Flip<PT_Sint64, PT_IntAPS>(S, PC))
19404 return false;
19405#if USE_TAILCALLS
19406 MUSTTAIL return InterpNext(S, PC);
19407#else
19408 return true;
19409#endif
19410}
19411PRESERVE_NONE
19412static bool Interp_FlipSint64Bool(InterpState &S, CodePtr &PC) {
19413 if (!Flip<PT_Sint64, PT_Bool>(S, PC))
19414 return false;
19415#if USE_TAILCALLS
19416 MUSTTAIL return InterpNext(S, PC);
19417#else
19418 return true;
19419#endif
19420}
19421PRESERVE_NONE
19422static bool Interp_FlipSint64FixedPoint(InterpState &S, CodePtr &PC) {
19423 if (!Flip<PT_Sint64, PT_FixedPoint>(S, PC))
19424 return false;
19425#if USE_TAILCALLS
19426 MUSTTAIL return InterpNext(S, PC);
19427#else
19428 return true;
19429#endif
19430}
19431PRESERVE_NONE
19432static bool Interp_FlipSint64Ptr(InterpState &S, CodePtr &PC) {
19433 if (!Flip<PT_Sint64, PT_Ptr>(S, PC))
19434 return false;
19435#if USE_TAILCALLS
19436 MUSTTAIL return InterpNext(S, PC);
19437#else
19438 return true;
19439#endif
19440}
19441PRESERVE_NONE
19442static bool Interp_FlipSint64MemberPtr(InterpState &S, CodePtr &PC) {
19443 if (!Flip<PT_Sint64, PT_MemberPtr>(S, PC))
19444 return false;
19445#if USE_TAILCALLS
19446 MUSTTAIL return InterpNext(S, PC);
19447#else
19448 return true;
19449#endif
19450}
19451PRESERVE_NONE
19452static bool Interp_FlipSint64Float(InterpState &S, CodePtr &PC) {
19453 if (!Flip<PT_Sint64, PT_Float>(S, PC))
19454 return false;
19455#if USE_TAILCALLS
19456 MUSTTAIL return InterpNext(S, PC);
19457#else
19458 return true;
19459#endif
19460}
19461PRESERVE_NONE
19462static bool Interp_FlipUint64Sint8(InterpState &S, CodePtr &PC) {
19463 if (!Flip<PT_Uint64, PT_Sint8>(S, PC))
19464 return false;
19465#if USE_TAILCALLS
19466 MUSTTAIL return InterpNext(S, PC);
19467#else
19468 return true;
19469#endif
19470}
19471PRESERVE_NONE
19472static bool Interp_FlipUint64Uint8(InterpState &S, CodePtr &PC) {
19473 if (!Flip<PT_Uint64, PT_Uint8>(S, PC))
19474 return false;
19475#if USE_TAILCALLS
19476 MUSTTAIL return InterpNext(S, PC);
19477#else
19478 return true;
19479#endif
19480}
19481PRESERVE_NONE
19482static bool Interp_FlipUint64Sint16(InterpState &S, CodePtr &PC) {
19483 if (!Flip<PT_Uint64, PT_Sint16>(S, PC))
19484 return false;
19485#if USE_TAILCALLS
19486 MUSTTAIL return InterpNext(S, PC);
19487#else
19488 return true;
19489#endif
19490}
19491PRESERVE_NONE
19492static bool Interp_FlipUint64Uint16(InterpState &S, CodePtr &PC) {
19493 if (!Flip<PT_Uint64, PT_Uint16>(S, PC))
19494 return false;
19495#if USE_TAILCALLS
19496 MUSTTAIL return InterpNext(S, PC);
19497#else
19498 return true;
19499#endif
19500}
19501PRESERVE_NONE
19502static bool Interp_FlipUint64Sint32(InterpState &S, CodePtr &PC) {
19503 if (!Flip<PT_Uint64, PT_Sint32>(S, PC))
19504 return false;
19505#if USE_TAILCALLS
19506 MUSTTAIL return InterpNext(S, PC);
19507#else
19508 return true;
19509#endif
19510}
19511PRESERVE_NONE
19512static bool Interp_FlipUint64Uint32(InterpState &S, CodePtr &PC) {
19513 if (!Flip<PT_Uint64, PT_Uint32>(S, PC))
19514 return false;
19515#if USE_TAILCALLS
19516 MUSTTAIL return InterpNext(S, PC);
19517#else
19518 return true;
19519#endif
19520}
19521PRESERVE_NONE
19522static bool Interp_FlipUint64Sint64(InterpState &S, CodePtr &PC) {
19523 if (!Flip<PT_Uint64, PT_Sint64>(S, PC))
19524 return false;
19525#if USE_TAILCALLS
19526 MUSTTAIL return InterpNext(S, PC);
19527#else
19528 return true;
19529#endif
19530}
19531PRESERVE_NONE
19532static bool Interp_FlipUint64Uint64(InterpState &S, CodePtr &PC) {
19533 if (!Flip<PT_Uint64, PT_Uint64>(S, PC))
19534 return false;
19535#if USE_TAILCALLS
19536 MUSTTAIL return InterpNext(S, PC);
19537#else
19538 return true;
19539#endif
19540}
19541PRESERVE_NONE
19542static bool Interp_FlipUint64IntAP(InterpState &S, CodePtr &PC) {
19543 if (!Flip<PT_Uint64, PT_IntAP>(S, PC))
19544 return false;
19545#if USE_TAILCALLS
19546 MUSTTAIL return InterpNext(S, PC);
19547#else
19548 return true;
19549#endif
19550}
19551PRESERVE_NONE
19552static bool Interp_FlipUint64IntAPS(InterpState &S, CodePtr &PC) {
19553 if (!Flip<PT_Uint64, PT_IntAPS>(S, PC))
19554 return false;
19555#if USE_TAILCALLS
19556 MUSTTAIL return InterpNext(S, PC);
19557#else
19558 return true;
19559#endif
19560}
19561PRESERVE_NONE
19562static bool Interp_FlipUint64Bool(InterpState &S, CodePtr &PC) {
19563 if (!Flip<PT_Uint64, PT_Bool>(S, PC))
19564 return false;
19565#if USE_TAILCALLS
19566 MUSTTAIL return InterpNext(S, PC);
19567#else
19568 return true;
19569#endif
19570}
19571PRESERVE_NONE
19572static bool Interp_FlipUint64FixedPoint(InterpState &S, CodePtr &PC) {
19573 if (!Flip<PT_Uint64, PT_FixedPoint>(S, PC))
19574 return false;
19575#if USE_TAILCALLS
19576 MUSTTAIL return InterpNext(S, PC);
19577#else
19578 return true;
19579#endif
19580}
19581PRESERVE_NONE
19582static bool Interp_FlipUint64Ptr(InterpState &S, CodePtr &PC) {
19583 if (!Flip<PT_Uint64, PT_Ptr>(S, PC))
19584 return false;
19585#if USE_TAILCALLS
19586 MUSTTAIL return InterpNext(S, PC);
19587#else
19588 return true;
19589#endif
19590}
19591PRESERVE_NONE
19592static bool Interp_FlipUint64MemberPtr(InterpState &S, CodePtr &PC) {
19593 if (!Flip<PT_Uint64, PT_MemberPtr>(S, PC))
19594 return false;
19595#if USE_TAILCALLS
19596 MUSTTAIL return InterpNext(S, PC);
19597#else
19598 return true;
19599#endif
19600}
19601PRESERVE_NONE
19602static bool Interp_FlipUint64Float(InterpState &S, CodePtr &PC) {
19603 if (!Flip<PT_Uint64, PT_Float>(S, PC))
19604 return false;
19605#if USE_TAILCALLS
19606 MUSTTAIL return InterpNext(S, PC);
19607#else
19608 return true;
19609#endif
19610}
19611PRESERVE_NONE
19612static bool Interp_FlipIntAPSint8(InterpState &S, CodePtr &PC) {
19613 if (!Flip<PT_IntAP, PT_Sint8>(S, PC))
19614 return false;
19615#if USE_TAILCALLS
19616 MUSTTAIL return InterpNext(S, PC);
19617#else
19618 return true;
19619#endif
19620}
19621PRESERVE_NONE
19622static bool Interp_FlipIntAPUint8(InterpState &S, CodePtr &PC) {
19623 if (!Flip<PT_IntAP, PT_Uint8>(S, PC))
19624 return false;
19625#if USE_TAILCALLS
19626 MUSTTAIL return InterpNext(S, PC);
19627#else
19628 return true;
19629#endif
19630}
19631PRESERVE_NONE
19632static bool Interp_FlipIntAPSint16(InterpState &S, CodePtr &PC) {
19633 if (!Flip<PT_IntAP, PT_Sint16>(S, PC))
19634 return false;
19635#if USE_TAILCALLS
19636 MUSTTAIL return InterpNext(S, PC);
19637#else
19638 return true;
19639#endif
19640}
19641PRESERVE_NONE
19642static bool Interp_FlipIntAPUint16(InterpState &S, CodePtr &PC) {
19643 if (!Flip<PT_IntAP, PT_Uint16>(S, PC))
19644 return false;
19645#if USE_TAILCALLS
19646 MUSTTAIL return InterpNext(S, PC);
19647#else
19648 return true;
19649#endif
19650}
19651PRESERVE_NONE
19652static bool Interp_FlipIntAPSint32(InterpState &S, CodePtr &PC) {
19653 if (!Flip<PT_IntAP, PT_Sint32>(S, PC))
19654 return false;
19655#if USE_TAILCALLS
19656 MUSTTAIL return InterpNext(S, PC);
19657#else
19658 return true;
19659#endif
19660}
19661PRESERVE_NONE
19662static bool Interp_FlipIntAPUint32(InterpState &S, CodePtr &PC) {
19663 if (!Flip<PT_IntAP, PT_Uint32>(S, PC))
19664 return false;
19665#if USE_TAILCALLS
19666 MUSTTAIL return InterpNext(S, PC);
19667#else
19668 return true;
19669#endif
19670}
19671PRESERVE_NONE
19672static bool Interp_FlipIntAPSint64(InterpState &S, CodePtr &PC) {
19673 if (!Flip<PT_IntAP, PT_Sint64>(S, PC))
19674 return false;
19675#if USE_TAILCALLS
19676 MUSTTAIL return InterpNext(S, PC);
19677#else
19678 return true;
19679#endif
19680}
19681PRESERVE_NONE
19682static bool Interp_FlipIntAPUint64(InterpState &S, CodePtr &PC) {
19683 if (!Flip<PT_IntAP, PT_Uint64>(S, PC))
19684 return false;
19685#if USE_TAILCALLS
19686 MUSTTAIL return InterpNext(S, PC);
19687#else
19688 return true;
19689#endif
19690}
19691PRESERVE_NONE
19692static bool Interp_FlipIntAPIntAP(InterpState &S, CodePtr &PC) {
19693 if (!Flip<PT_IntAP, PT_IntAP>(S, PC))
19694 return false;
19695#if USE_TAILCALLS
19696 MUSTTAIL return InterpNext(S, PC);
19697#else
19698 return true;
19699#endif
19700}
19701PRESERVE_NONE
19702static bool Interp_FlipIntAPIntAPS(InterpState &S, CodePtr &PC) {
19703 if (!Flip<PT_IntAP, PT_IntAPS>(S, PC))
19704 return false;
19705#if USE_TAILCALLS
19706 MUSTTAIL return InterpNext(S, PC);
19707#else
19708 return true;
19709#endif
19710}
19711PRESERVE_NONE
19712static bool Interp_FlipIntAPBool(InterpState &S, CodePtr &PC) {
19713 if (!Flip<PT_IntAP, PT_Bool>(S, PC))
19714 return false;
19715#if USE_TAILCALLS
19716 MUSTTAIL return InterpNext(S, PC);
19717#else
19718 return true;
19719#endif
19720}
19721PRESERVE_NONE
19722static bool Interp_FlipIntAPFixedPoint(InterpState &S, CodePtr &PC) {
19723 if (!Flip<PT_IntAP, PT_FixedPoint>(S, PC))
19724 return false;
19725#if USE_TAILCALLS
19726 MUSTTAIL return InterpNext(S, PC);
19727#else
19728 return true;
19729#endif
19730}
19731PRESERVE_NONE
19732static bool Interp_FlipIntAPPtr(InterpState &S, CodePtr &PC) {
19733 if (!Flip<PT_IntAP, PT_Ptr>(S, PC))
19734 return false;
19735#if USE_TAILCALLS
19736 MUSTTAIL return InterpNext(S, PC);
19737#else
19738 return true;
19739#endif
19740}
19741PRESERVE_NONE
19742static bool Interp_FlipIntAPMemberPtr(InterpState &S, CodePtr &PC) {
19743 if (!Flip<PT_IntAP, PT_MemberPtr>(S, PC))
19744 return false;
19745#if USE_TAILCALLS
19746 MUSTTAIL return InterpNext(S, PC);
19747#else
19748 return true;
19749#endif
19750}
19751PRESERVE_NONE
19752static bool Interp_FlipIntAPFloat(InterpState &S, CodePtr &PC) {
19753 if (!Flip<PT_IntAP, PT_Float>(S, PC))
19754 return false;
19755#if USE_TAILCALLS
19756 MUSTTAIL return InterpNext(S, PC);
19757#else
19758 return true;
19759#endif
19760}
19761PRESERVE_NONE
19762static bool Interp_FlipIntAPSSint8(InterpState &S, CodePtr &PC) {
19763 if (!Flip<PT_IntAPS, PT_Sint8>(S, PC))
19764 return false;
19765#if USE_TAILCALLS
19766 MUSTTAIL return InterpNext(S, PC);
19767#else
19768 return true;
19769#endif
19770}
19771PRESERVE_NONE
19772static bool Interp_FlipIntAPSUint8(InterpState &S, CodePtr &PC) {
19773 if (!Flip<PT_IntAPS, PT_Uint8>(S, PC))
19774 return false;
19775#if USE_TAILCALLS
19776 MUSTTAIL return InterpNext(S, PC);
19777#else
19778 return true;
19779#endif
19780}
19781PRESERVE_NONE
19782static bool Interp_FlipIntAPSSint16(InterpState &S, CodePtr &PC) {
19783 if (!Flip<PT_IntAPS, PT_Sint16>(S, PC))
19784 return false;
19785#if USE_TAILCALLS
19786 MUSTTAIL return InterpNext(S, PC);
19787#else
19788 return true;
19789#endif
19790}
19791PRESERVE_NONE
19792static bool Interp_FlipIntAPSUint16(InterpState &S, CodePtr &PC) {
19793 if (!Flip<PT_IntAPS, PT_Uint16>(S, PC))
19794 return false;
19795#if USE_TAILCALLS
19796 MUSTTAIL return InterpNext(S, PC);
19797#else
19798 return true;
19799#endif
19800}
19801PRESERVE_NONE
19802static bool Interp_FlipIntAPSSint32(InterpState &S, CodePtr &PC) {
19803 if (!Flip<PT_IntAPS, PT_Sint32>(S, PC))
19804 return false;
19805#if USE_TAILCALLS
19806 MUSTTAIL return InterpNext(S, PC);
19807#else
19808 return true;
19809#endif
19810}
19811PRESERVE_NONE
19812static bool Interp_FlipIntAPSUint32(InterpState &S, CodePtr &PC) {
19813 if (!Flip<PT_IntAPS, PT_Uint32>(S, PC))
19814 return false;
19815#if USE_TAILCALLS
19816 MUSTTAIL return InterpNext(S, PC);
19817#else
19818 return true;
19819#endif
19820}
19821PRESERVE_NONE
19822static bool Interp_FlipIntAPSSint64(InterpState &S, CodePtr &PC) {
19823 if (!Flip<PT_IntAPS, PT_Sint64>(S, PC))
19824 return false;
19825#if USE_TAILCALLS
19826 MUSTTAIL return InterpNext(S, PC);
19827#else
19828 return true;
19829#endif
19830}
19831PRESERVE_NONE
19832static bool Interp_FlipIntAPSUint64(InterpState &S, CodePtr &PC) {
19833 if (!Flip<PT_IntAPS, PT_Uint64>(S, PC))
19834 return false;
19835#if USE_TAILCALLS
19836 MUSTTAIL return InterpNext(S, PC);
19837#else
19838 return true;
19839#endif
19840}
19841PRESERVE_NONE
19842static bool Interp_FlipIntAPSIntAP(InterpState &S, CodePtr &PC) {
19843 if (!Flip<PT_IntAPS, PT_IntAP>(S, PC))
19844 return false;
19845#if USE_TAILCALLS
19846 MUSTTAIL return InterpNext(S, PC);
19847#else
19848 return true;
19849#endif
19850}
19851PRESERVE_NONE
19852static bool Interp_FlipIntAPSIntAPS(InterpState &S, CodePtr &PC) {
19853 if (!Flip<PT_IntAPS, PT_IntAPS>(S, PC))
19854 return false;
19855#if USE_TAILCALLS
19856 MUSTTAIL return InterpNext(S, PC);
19857#else
19858 return true;
19859#endif
19860}
19861PRESERVE_NONE
19862static bool Interp_FlipIntAPSBool(InterpState &S, CodePtr &PC) {
19863 if (!Flip<PT_IntAPS, PT_Bool>(S, PC))
19864 return false;
19865#if USE_TAILCALLS
19866 MUSTTAIL return InterpNext(S, PC);
19867#else
19868 return true;
19869#endif
19870}
19871PRESERVE_NONE
19872static bool Interp_FlipIntAPSFixedPoint(InterpState &S, CodePtr &PC) {
19873 if (!Flip<PT_IntAPS, PT_FixedPoint>(S, PC))
19874 return false;
19875#if USE_TAILCALLS
19876 MUSTTAIL return InterpNext(S, PC);
19877#else
19878 return true;
19879#endif
19880}
19881PRESERVE_NONE
19882static bool Interp_FlipIntAPSPtr(InterpState &S, CodePtr &PC) {
19883 if (!Flip<PT_IntAPS, PT_Ptr>(S, PC))
19884 return false;
19885#if USE_TAILCALLS
19886 MUSTTAIL return InterpNext(S, PC);
19887#else
19888 return true;
19889#endif
19890}
19891PRESERVE_NONE
19892static bool Interp_FlipIntAPSMemberPtr(InterpState &S, CodePtr &PC) {
19893 if (!Flip<PT_IntAPS, PT_MemberPtr>(S, PC))
19894 return false;
19895#if USE_TAILCALLS
19896 MUSTTAIL return InterpNext(S, PC);
19897#else
19898 return true;
19899#endif
19900}
19901PRESERVE_NONE
19902static bool Interp_FlipIntAPSFloat(InterpState &S, CodePtr &PC) {
19903 if (!Flip<PT_IntAPS, PT_Float>(S, PC))
19904 return false;
19905#if USE_TAILCALLS
19906 MUSTTAIL return InterpNext(S, PC);
19907#else
19908 return true;
19909#endif
19910}
19911PRESERVE_NONE
19912static bool Interp_FlipBoolSint8(InterpState &S, CodePtr &PC) {
19913 if (!Flip<PT_Bool, PT_Sint8>(S, PC))
19914 return false;
19915#if USE_TAILCALLS
19916 MUSTTAIL return InterpNext(S, PC);
19917#else
19918 return true;
19919#endif
19920}
19921PRESERVE_NONE
19922static bool Interp_FlipBoolUint8(InterpState &S, CodePtr &PC) {
19923 if (!Flip<PT_Bool, PT_Uint8>(S, PC))
19924 return false;
19925#if USE_TAILCALLS
19926 MUSTTAIL return InterpNext(S, PC);
19927#else
19928 return true;
19929#endif
19930}
19931PRESERVE_NONE
19932static bool Interp_FlipBoolSint16(InterpState &S, CodePtr &PC) {
19933 if (!Flip<PT_Bool, PT_Sint16>(S, PC))
19934 return false;
19935#if USE_TAILCALLS
19936 MUSTTAIL return InterpNext(S, PC);
19937#else
19938 return true;
19939#endif
19940}
19941PRESERVE_NONE
19942static bool Interp_FlipBoolUint16(InterpState &S, CodePtr &PC) {
19943 if (!Flip<PT_Bool, PT_Uint16>(S, PC))
19944 return false;
19945#if USE_TAILCALLS
19946 MUSTTAIL return InterpNext(S, PC);
19947#else
19948 return true;
19949#endif
19950}
19951PRESERVE_NONE
19952static bool Interp_FlipBoolSint32(InterpState &S, CodePtr &PC) {
19953 if (!Flip<PT_Bool, PT_Sint32>(S, PC))
19954 return false;
19955#if USE_TAILCALLS
19956 MUSTTAIL return InterpNext(S, PC);
19957#else
19958 return true;
19959#endif
19960}
19961PRESERVE_NONE
19962static bool Interp_FlipBoolUint32(InterpState &S, CodePtr &PC) {
19963 if (!Flip<PT_Bool, PT_Uint32>(S, PC))
19964 return false;
19965#if USE_TAILCALLS
19966 MUSTTAIL return InterpNext(S, PC);
19967#else
19968 return true;
19969#endif
19970}
19971PRESERVE_NONE
19972static bool Interp_FlipBoolSint64(InterpState &S, CodePtr &PC) {
19973 if (!Flip<PT_Bool, PT_Sint64>(S, PC))
19974 return false;
19975#if USE_TAILCALLS
19976 MUSTTAIL return InterpNext(S, PC);
19977#else
19978 return true;
19979#endif
19980}
19981PRESERVE_NONE
19982static bool Interp_FlipBoolUint64(InterpState &S, CodePtr &PC) {
19983 if (!Flip<PT_Bool, PT_Uint64>(S, PC))
19984 return false;
19985#if USE_TAILCALLS
19986 MUSTTAIL return InterpNext(S, PC);
19987#else
19988 return true;
19989#endif
19990}
19991PRESERVE_NONE
19992static bool Interp_FlipBoolIntAP(InterpState &S, CodePtr &PC) {
19993 if (!Flip<PT_Bool, PT_IntAP>(S, PC))
19994 return false;
19995#if USE_TAILCALLS
19996 MUSTTAIL return InterpNext(S, PC);
19997#else
19998 return true;
19999#endif
20000}
20001PRESERVE_NONE
20002static bool Interp_FlipBoolIntAPS(InterpState &S, CodePtr &PC) {
20003 if (!Flip<PT_Bool, PT_IntAPS>(S, PC))
20004 return false;
20005#if USE_TAILCALLS
20006 MUSTTAIL return InterpNext(S, PC);
20007#else
20008 return true;
20009#endif
20010}
20011PRESERVE_NONE
20012static bool Interp_FlipBoolBool(InterpState &S, CodePtr &PC) {
20013 if (!Flip<PT_Bool, PT_Bool>(S, PC))
20014 return false;
20015#if USE_TAILCALLS
20016 MUSTTAIL return InterpNext(S, PC);
20017#else
20018 return true;
20019#endif
20020}
20021PRESERVE_NONE
20022static bool Interp_FlipBoolFixedPoint(InterpState &S, CodePtr &PC) {
20023 if (!Flip<PT_Bool, PT_FixedPoint>(S, PC))
20024 return false;
20025#if USE_TAILCALLS
20026 MUSTTAIL return InterpNext(S, PC);
20027#else
20028 return true;
20029#endif
20030}
20031PRESERVE_NONE
20032static bool Interp_FlipBoolPtr(InterpState &S, CodePtr &PC) {
20033 if (!Flip<PT_Bool, PT_Ptr>(S, PC))
20034 return false;
20035#if USE_TAILCALLS
20036 MUSTTAIL return InterpNext(S, PC);
20037#else
20038 return true;
20039#endif
20040}
20041PRESERVE_NONE
20042static bool Interp_FlipBoolMemberPtr(InterpState &S, CodePtr &PC) {
20043 if (!Flip<PT_Bool, PT_MemberPtr>(S, PC))
20044 return false;
20045#if USE_TAILCALLS
20046 MUSTTAIL return InterpNext(S, PC);
20047#else
20048 return true;
20049#endif
20050}
20051PRESERVE_NONE
20052static bool Interp_FlipBoolFloat(InterpState &S, CodePtr &PC) {
20053 if (!Flip<PT_Bool, PT_Float>(S, PC))
20054 return false;
20055#if USE_TAILCALLS
20056 MUSTTAIL return InterpNext(S, PC);
20057#else
20058 return true;
20059#endif
20060}
20061PRESERVE_NONE
20062static bool Interp_FlipFixedPointSint8(InterpState &S, CodePtr &PC) {
20063 if (!Flip<PT_FixedPoint, PT_Sint8>(S, PC))
20064 return false;
20065#if USE_TAILCALLS
20066 MUSTTAIL return InterpNext(S, PC);
20067#else
20068 return true;
20069#endif
20070}
20071PRESERVE_NONE
20072static bool Interp_FlipFixedPointUint8(InterpState &S, CodePtr &PC) {
20073 if (!Flip<PT_FixedPoint, PT_Uint8>(S, PC))
20074 return false;
20075#if USE_TAILCALLS
20076 MUSTTAIL return InterpNext(S, PC);
20077#else
20078 return true;
20079#endif
20080}
20081PRESERVE_NONE
20082static bool Interp_FlipFixedPointSint16(InterpState &S, CodePtr &PC) {
20083 if (!Flip<PT_FixedPoint, PT_Sint16>(S, PC))
20084 return false;
20085#if USE_TAILCALLS
20086 MUSTTAIL return InterpNext(S, PC);
20087#else
20088 return true;
20089#endif
20090}
20091PRESERVE_NONE
20092static bool Interp_FlipFixedPointUint16(InterpState &S, CodePtr &PC) {
20093 if (!Flip<PT_FixedPoint, PT_Uint16>(S, PC))
20094 return false;
20095#if USE_TAILCALLS
20096 MUSTTAIL return InterpNext(S, PC);
20097#else
20098 return true;
20099#endif
20100}
20101PRESERVE_NONE
20102static bool Interp_FlipFixedPointSint32(InterpState &S, CodePtr &PC) {
20103 if (!Flip<PT_FixedPoint, PT_Sint32>(S, PC))
20104 return false;
20105#if USE_TAILCALLS
20106 MUSTTAIL return InterpNext(S, PC);
20107#else
20108 return true;
20109#endif
20110}
20111PRESERVE_NONE
20112static bool Interp_FlipFixedPointUint32(InterpState &S, CodePtr &PC) {
20113 if (!Flip<PT_FixedPoint, PT_Uint32>(S, PC))
20114 return false;
20115#if USE_TAILCALLS
20116 MUSTTAIL return InterpNext(S, PC);
20117#else
20118 return true;
20119#endif
20120}
20121PRESERVE_NONE
20122static bool Interp_FlipFixedPointSint64(InterpState &S, CodePtr &PC) {
20123 if (!Flip<PT_FixedPoint, PT_Sint64>(S, PC))
20124 return false;
20125#if USE_TAILCALLS
20126 MUSTTAIL return InterpNext(S, PC);
20127#else
20128 return true;
20129#endif
20130}
20131PRESERVE_NONE
20132static bool Interp_FlipFixedPointUint64(InterpState &S, CodePtr &PC) {
20133 if (!Flip<PT_FixedPoint, PT_Uint64>(S, PC))
20134 return false;
20135#if USE_TAILCALLS
20136 MUSTTAIL return InterpNext(S, PC);
20137#else
20138 return true;
20139#endif
20140}
20141PRESERVE_NONE
20142static bool Interp_FlipFixedPointIntAP(InterpState &S, CodePtr &PC) {
20143 if (!Flip<PT_FixedPoint, PT_IntAP>(S, PC))
20144 return false;
20145#if USE_TAILCALLS
20146 MUSTTAIL return InterpNext(S, PC);
20147#else
20148 return true;
20149#endif
20150}
20151PRESERVE_NONE
20152static bool Interp_FlipFixedPointIntAPS(InterpState &S, CodePtr &PC) {
20153 if (!Flip<PT_FixedPoint, PT_IntAPS>(S, PC))
20154 return false;
20155#if USE_TAILCALLS
20156 MUSTTAIL return InterpNext(S, PC);
20157#else
20158 return true;
20159#endif
20160}
20161PRESERVE_NONE
20162static bool Interp_FlipFixedPointBool(InterpState &S, CodePtr &PC) {
20163 if (!Flip<PT_FixedPoint, PT_Bool>(S, PC))
20164 return false;
20165#if USE_TAILCALLS
20166 MUSTTAIL return InterpNext(S, PC);
20167#else
20168 return true;
20169#endif
20170}
20171PRESERVE_NONE
20172static bool Interp_FlipFixedPointFixedPoint(InterpState &S, CodePtr &PC) {
20173 if (!Flip<PT_FixedPoint, PT_FixedPoint>(S, PC))
20174 return false;
20175#if USE_TAILCALLS
20176 MUSTTAIL return InterpNext(S, PC);
20177#else
20178 return true;
20179#endif
20180}
20181PRESERVE_NONE
20182static bool Interp_FlipFixedPointPtr(InterpState &S, CodePtr &PC) {
20183 if (!Flip<PT_FixedPoint, PT_Ptr>(S, PC))
20184 return false;
20185#if USE_TAILCALLS
20186 MUSTTAIL return InterpNext(S, PC);
20187#else
20188 return true;
20189#endif
20190}
20191PRESERVE_NONE
20192static bool Interp_FlipFixedPointMemberPtr(InterpState &S, CodePtr &PC) {
20193 if (!Flip<PT_FixedPoint, PT_MemberPtr>(S, PC))
20194 return false;
20195#if USE_TAILCALLS
20196 MUSTTAIL return InterpNext(S, PC);
20197#else
20198 return true;
20199#endif
20200}
20201PRESERVE_NONE
20202static bool Interp_FlipFixedPointFloat(InterpState &S, CodePtr &PC) {
20203 if (!Flip<PT_FixedPoint, PT_Float>(S, PC))
20204 return false;
20205#if USE_TAILCALLS
20206 MUSTTAIL return InterpNext(S, PC);
20207#else
20208 return true;
20209#endif
20210}
20211PRESERVE_NONE
20212static bool Interp_FlipPtrSint8(InterpState &S, CodePtr &PC) {
20213 if (!Flip<PT_Ptr, PT_Sint8>(S, PC))
20214 return false;
20215#if USE_TAILCALLS
20216 MUSTTAIL return InterpNext(S, PC);
20217#else
20218 return true;
20219#endif
20220}
20221PRESERVE_NONE
20222static bool Interp_FlipPtrUint8(InterpState &S, CodePtr &PC) {
20223 if (!Flip<PT_Ptr, PT_Uint8>(S, PC))
20224 return false;
20225#if USE_TAILCALLS
20226 MUSTTAIL return InterpNext(S, PC);
20227#else
20228 return true;
20229#endif
20230}
20231PRESERVE_NONE
20232static bool Interp_FlipPtrSint16(InterpState &S, CodePtr &PC) {
20233 if (!Flip<PT_Ptr, PT_Sint16>(S, PC))
20234 return false;
20235#if USE_TAILCALLS
20236 MUSTTAIL return InterpNext(S, PC);
20237#else
20238 return true;
20239#endif
20240}
20241PRESERVE_NONE
20242static bool Interp_FlipPtrUint16(InterpState &S, CodePtr &PC) {
20243 if (!Flip<PT_Ptr, PT_Uint16>(S, PC))
20244 return false;
20245#if USE_TAILCALLS
20246 MUSTTAIL return InterpNext(S, PC);
20247#else
20248 return true;
20249#endif
20250}
20251PRESERVE_NONE
20252static bool Interp_FlipPtrSint32(InterpState &S, CodePtr &PC) {
20253 if (!Flip<PT_Ptr, PT_Sint32>(S, PC))
20254 return false;
20255#if USE_TAILCALLS
20256 MUSTTAIL return InterpNext(S, PC);
20257#else
20258 return true;
20259#endif
20260}
20261PRESERVE_NONE
20262static bool Interp_FlipPtrUint32(InterpState &S, CodePtr &PC) {
20263 if (!Flip<PT_Ptr, PT_Uint32>(S, PC))
20264 return false;
20265#if USE_TAILCALLS
20266 MUSTTAIL return InterpNext(S, PC);
20267#else
20268 return true;
20269#endif
20270}
20271PRESERVE_NONE
20272static bool Interp_FlipPtrSint64(InterpState &S, CodePtr &PC) {
20273 if (!Flip<PT_Ptr, PT_Sint64>(S, PC))
20274 return false;
20275#if USE_TAILCALLS
20276 MUSTTAIL return InterpNext(S, PC);
20277#else
20278 return true;
20279#endif
20280}
20281PRESERVE_NONE
20282static bool Interp_FlipPtrUint64(InterpState &S, CodePtr &PC) {
20283 if (!Flip<PT_Ptr, PT_Uint64>(S, PC))
20284 return false;
20285#if USE_TAILCALLS
20286 MUSTTAIL return InterpNext(S, PC);
20287#else
20288 return true;
20289#endif
20290}
20291PRESERVE_NONE
20292static bool Interp_FlipPtrIntAP(InterpState &S, CodePtr &PC) {
20293 if (!Flip<PT_Ptr, PT_IntAP>(S, PC))
20294 return false;
20295#if USE_TAILCALLS
20296 MUSTTAIL return InterpNext(S, PC);
20297#else
20298 return true;
20299#endif
20300}
20301PRESERVE_NONE
20302static bool Interp_FlipPtrIntAPS(InterpState &S, CodePtr &PC) {
20303 if (!Flip<PT_Ptr, PT_IntAPS>(S, PC))
20304 return false;
20305#if USE_TAILCALLS
20306 MUSTTAIL return InterpNext(S, PC);
20307#else
20308 return true;
20309#endif
20310}
20311PRESERVE_NONE
20312static bool Interp_FlipPtrBool(InterpState &S, CodePtr &PC) {
20313 if (!Flip<PT_Ptr, PT_Bool>(S, PC))
20314 return false;
20315#if USE_TAILCALLS
20316 MUSTTAIL return InterpNext(S, PC);
20317#else
20318 return true;
20319#endif
20320}
20321PRESERVE_NONE
20322static bool Interp_FlipPtrFixedPoint(InterpState &S, CodePtr &PC) {
20323 if (!Flip<PT_Ptr, PT_FixedPoint>(S, PC))
20324 return false;
20325#if USE_TAILCALLS
20326 MUSTTAIL return InterpNext(S, PC);
20327#else
20328 return true;
20329#endif
20330}
20331PRESERVE_NONE
20332static bool Interp_FlipPtrPtr(InterpState &S, CodePtr &PC) {
20333 if (!Flip<PT_Ptr, PT_Ptr>(S, PC))
20334 return false;
20335#if USE_TAILCALLS
20336 MUSTTAIL return InterpNext(S, PC);
20337#else
20338 return true;
20339#endif
20340}
20341PRESERVE_NONE
20342static bool Interp_FlipPtrMemberPtr(InterpState &S, CodePtr &PC) {
20343 if (!Flip<PT_Ptr, PT_MemberPtr>(S, PC))
20344 return false;
20345#if USE_TAILCALLS
20346 MUSTTAIL return InterpNext(S, PC);
20347#else
20348 return true;
20349#endif
20350}
20351PRESERVE_NONE
20352static bool Interp_FlipPtrFloat(InterpState &S, CodePtr &PC) {
20353 if (!Flip<PT_Ptr, PT_Float>(S, PC))
20354 return false;
20355#if USE_TAILCALLS
20356 MUSTTAIL return InterpNext(S, PC);
20357#else
20358 return true;
20359#endif
20360}
20361PRESERVE_NONE
20362static bool Interp_FlipMemberPtrSint8(InterpState &S, CodePtr &PC) {
20363 if (!Flip<PT_MemberPtr, PT_Sint8>(S, PC))
20364 return false;
20365#if USE_TAILCALLS
20366 MUSTTAIL return InterpNext(S, PC);
20367#else
20368 return true;
20369#endif
20370}
20371PRESERVE_NONE
20372static bool Interp_FlipMemberPtrUint8(InterpState &S, CodePtr &PC) {
20373 if (!Flip<PT_MemberPtr, PT_Uint8>(S, PC))
20374 return false;
20375#if USE_TAILCALLS
20376 MUSTTAIL return InterpNext(S, PC);
20377#else
20378 return true;
20379#endif
20380}
20381PRESERVE_NONE
20382static bool Interp_FlipMemberPtrSint16(InterpState &S, CodePtr &PC) {
20383 if (!Flip<PT_MemberPtr, PT_Sint16>(S, PC))
20384 return false;
20385#if USE_TAILCALLS
20386 MUSTTAIL return InterpNext(S, PC);
20387#else
20388 return true;
20389#endif
20390}
20391PRESERVE_NONE
20392static bool Interp_FlipMemberPtrUint16(InterpState &S, CodePtr &PC) {
20393 if (!Flip<PT_MemberPtr, PT_Uint16>(S, PC))
20394 return false;
20395#if USE_TAILCALLS
20396 MUSTTAIL return InterpNext(S, PC);
20397#else
20398 return true;
20399#endif
20400}
20401PRESERVE_NONE
20402static bool Interp_FlipMemberPtrSint32(InterpState &S, CodePtr &PC) {
20403 if (!Flip<PT_MemberPtr, PT_Sint32>(S, PC))
20404 return false;
20405#if USE_TAILCALLS
20406 MUSTTAIL return InterpNext(S, PC);
20407#else
20408 return true;
20409#endif
20410}
20411PRESERVE_NONE
20412static bool Interp_FlipMemberPtrUint32(InterpState &S, CodePtr &PC) {
20413 if (!Flip<PT_MemberPtr, PT_Uint32>(S, PC))
20414 return false;
20415#if USE_TAILCALLS
20416 MUSTTAIL return InterpNext(S, PC);
20417#else
20418 return true;
20419#endif
20420}
20421PRESERVE_NONE
20422static bool Interp_FlipMemberPtrSint64(InterpState &S, CodePtr &PC) {
20423 if (!Flip<PT_MemberPtr, PT_Sint64>(S, PC))
20424 return false;
20425#if USE_TAILCALLS
20426 MUSTTAIL return InterpNext(S, PC);
20427#else
20428 return true;
20429#endif
20430}
20431PRESERVE_NONE
20432static bool Interp_FlipMemberPtrUint64(InterpState &S, CodePtr &PC) {
20433 if (!Flip<PT_MemberPtr, PT_Uint64>(S, PC))
20434 return false;
20435#if USE_TAILCALLS
20436 MUSTTAIL return InterpNext(S, PC);
20437#else
20438 return true;
20439#endif
20440}
20441PRESERVE_NONE
20442static bool Interp_FlipMemberPtrIntAP(InterpState &S, CodePtr &PC) {
20443 if (!Flip<PT_MemberPtr, PT_IntAP>(S, PC))
20444 return false;
20445#if USE_TAILCALLS
20446 MUSTTAIL return InterpNext(S, PC);
20447#else
20448 return true;
20449#endif
20450}
20451PRESERVE_NONE
20452static bool Interp_FlipMemberPtrIntAPS(InterpState &S, CodePtr &PC) {
20453 if (!Flip<PT_MemberPtr, PT_IntAPS>(S, PC))
20454 return false;
20455#if USE_TAILCALLS
20456 MUSTTAIL return InterpNext(S, PC);
20457#else
20458 return true;
20459#endif
20460}
20461PRESERVE_NONE
20462static bool Interp_FlipMemberPtrBool(InterpState &S, CodePtr &PC) {
20463 if (!Flip<PT_MemberPtr, PT_Bool>(S, PC))
20464 return false;
20465#if USE_TAILCALLS
20466 MUSTTAIL return InterpNext(S, PC);
20467#else
20468 return true;
20469#endif
20470}
20471PRESERVE_NONE
20472static bool Interp_FlipMemberPtrFixedPoint(InterpState &S, CodePtr &PC) {
20473 if (!Flip<PT_MemberPtr, PT_FixedPoint>(S, PC))
20474 return false;
20475#if USE_TAILCALLS
20476 MUSTTAIL return InterpNext(S, PC);
20477#else
20478 return true;
20479#endif
20480}
20481PRESERVE_NONE
20482static bool Interp_FlipMemberPtrPtr(InterpState &S, CodePtr &PC) {
20483 if (!Flip<PT_MemberPtr, PT_Ptr>(S, PC))
20484 return false;
20485#if USE_TAILCALLS
20486 MUSTTAIL return InterpNext(S, PC);
20487#else
20488 return true;
20489#endif
20490}
20491PRESERVE_NONE
20492static bool Interp_FlipMemberPtrMemberPtr(InterpState &S, CodePtr &PC) {
20493 if (!Flip<PT_MemberPtr, PT_MemberPtr>(S, PC))
20494 return false;
20495#if USE_TAILCALLS
20496 MUSTTAIL return InterpNext(S, PC);
20497#else
20498 return true;
20499#endif
20500}
20501PRESERVE_NONE
20502static bool Interp_FlipMemberPtrFloat(InterpState &S, CodePtr &PC) {
20503 if (!Flip<PT_MemberPtr, PT_Float>(S, PC))
20504 return false;
20505#if USE_TAILCALLS
20506 MUSTTAIL return InterpNext(S, PC);
20507#else
20508 return true;
20509#endif
20510}
20511PRESERVE_NONE
20512static bool Interp_FlipFloatSint8(InterpState &S, CodePtr &PC) {
20513 if (!Flip<PT_Float, PT_Sint8>(S, PC))
20514 return false;
20515#if USE_TAILCALLS
20516 MUSTTAIL return InterpNext(S, PC);
20517#else
20518 return true;
20519#endif
20520}
20521PRESERVE_NONE
20522static bool Interp_FlipFloatUint8(InterpState &S, CodePtr &PC) {
20523 if (!Flip<PT_Float, PT_Uint8>(S, PC))
20524 return false;
20525#if USE_TAILCALLS
20526 MUSTTAIL return InterpNext(S, PC);
20527#else
20528 return true;
20529#endif
20530}
20531PRESERVE_NONE
20532static bool Interp_FlipFloatSint16(InterpState &S, CodePtr &PC) {
20533 if (!Flip<PT_Float, PT_Sint16>(S, PC))
20534 return false;
20535#if USE_TAILCALLS
20536 MUSTTAIL return InterpNext(S, PC);
20537#else
20538 return true;
20539#endif
20540}
20541PRESERVE_NONE
20542static bool Interp_FlipFloatUint16(InterpState &S, CodePtr &PC) {
20543 if (!Flip<PT_Float, PT_Uint16>(S, PC))
20544 return false;
20545#if USE_TAILCALLS
20546 MUSTTAIL return InterpNext(S, PC);
20547#else
20548 return true;
20549#endif
20550}
20551PRESERVE_NONE
20552static bool Interp_FlipFloatSint32(InterpState &S, CodePtr &PC) {
20553 if (!Flip<PT_Float, PT_Sint32>(S, PC))
20554 return false;
20555#if USE_TAILCALLS
20556 MUSTTAIL return InterpNext(S, PC);
20557#else
20558 return true;
20559#endif
20560}
20561PRESERVE_NONE
20562static bool Interp_FlipFloatUint32(InterpState &S, CodePtr &PC) {
20563 if (!Flip<PT_Float, PT_Uint32>(S, PC))
20564 return false;
20565#if USE_TAILCALLS
20566 MUSTTAIL return InterpNext(S, PC);
20567#else
20568 return true;
20569#endif
20570}
20571PRESERVE_NONE
20572static bool Interp_FlipFloatSint64(InterpState &S, CodePtr &PC) {
20573 if (!Flip<PT_Float, PT_Sint64>(S, PC))
20574 return false;
20575#if USE_TAILCALLS
20576 MUSTTAIL return InterpNext(S, PC);
20577#else
20578 return true;
20579#endif
20580}
20581PRESERVE_NONE
20582static bool Interp_FlipFloatUint64(InterpState &S, CodePtr &PC) {
20583 if (!Flip<PT_Float, PT_Uint64>(S, PC))
20584 return false;
20585#if USE_TAILCALLS
20586 MUSTTAIL return InterpNext(S, PC);
20587#else
20588 return true;
20589#endif
20590}
20591PRESERVE_NONE
20592static bool Interp_FlipFloatIntAP(InterpState &S, CodePtr &PC) {
20593 if (!Flip<PT_Float, PT_IntAP>(S, PC))
20594 return false;
20595#if USE_TAILCALLS
20596 MUSTTAIL return InterpNext(S, PC);
20597#else
20598 return true;
20599#endif
20600}
20601PRESERVE_NONE
20602static bool Interp_FlipFloatIntAPS(InterpState &S, CodePtr &PC) {
20603 if (!Flip<PT_Float, PT_IntAPS>(S, PC))
20604 return false;
20605#if USE_TAILCALLS
20606 MUSTTAIL return InterpNext(S, PC);
20607#else
20608 return true;
20609#endif
20610}
20611PRESERVE_NONE
20612static bool Interp_FlipFloatBool(InterpState &S, CodePtr &PC) {
20613 if (!Flip<PT_Float, PT_Bool>(S, PC))
20614 return false;
20615#if USE_TAILCALLS
20616 MUSTTAIL return InterpNext(S, PC);
20617#else
20618 return true;
20619#endif
20620}
20621PRESERVE_NONE
20622static bool Interp_FlipFloatFixedPoint(InterpState &S, CodePtr &PC) {
20623 if (!Flip<PT_Float, PT_FixedPoint>(S, PC))
20624 return false;
20625#if USE_TAILCALLS
20626 MUSTTAIL return InterpNext(S, PC);
20627#else
20628 return true;
20629#endif
20630}
20631PRESERVE_NONE
20632static bool Interp_FlipFloatPtr(InterpState &S, CodePtr &PC) {
20633 if (!Flip<PT_Float, PT_Ptr>(S, PC))
20634 return false;
20635#if USE_TAILCALLS
20636 MUSTTAIL return InterpNext(S, PC);
20637#else
20638 return true;
20639#endif
20640}
20641PRESERVE_NONE
20642static bool Interp_FlipFloatMemberPtr(InterpState &S, CodePtr &PC) {
20643 if (!Flip<PT_Float, PT_MemberPtr>(S, PC))
20644 return false;
20645#if USE_TAILCALLS
20646 MUSTTAIL return InterpNext(S, PC);
20647#else
20648 return true;
20649#endif
20650}
20651PRESERVE_NONE
20652static bool Interp_FlipFloatFloat(InterpState &S, CodePtr &PC) {
20653 if (!Flip<PT_Float, PT_Float>(S, PC))
20654 return false;
20655#if USE_TAILCALLS
20656 MUSTTAIL return InterpNext(S, PC);
20657#else
20658 return true;
20659#endif
20660}
20661#endif
20662#ifdef GET_DISASM
20663case OP_FlipSint8Sint8:
20664 Text.Op = PrintName("FlipSint8Sint8");
20665 break;
20666case OP_FlipSint8Uint8:
20667 Text.Op = PrintName("FlipSint8Uint8");
20668 break;
20669case OP_FlipSint8Sint16:
20670 Text.Op = PrintName("FlipSint8Sint16");
20671 break;
20672case OP_FlipSint8Uint16:
20673 Text.Op = PrintName("FlipSint8Uint16");
20674 break;
20675case OP_FlipSint8Sint32:
20676 Text.Op = PrintName("FlipSint8Sint32");
20677 break;
20678case OP_FlipSint8Uint32:
20679 Text.Op = PrintName("FlipSint8Uint32");
20680 break;
20681case OP_FlipSint8Sint64:
20682 Text.Op = PrintName("FlipSint8Sint64");
20683 break;
20684case OP_FlipSint8Uint64:
20685 Text.Op = PrintName("FlipSint8Uint64");
20686 break;
20687case OP_FlipSint8IntAP:
20688 Text.Op = PrintName("FlipSint8IntAP");
20689 break;
20690case OP_FlipSint8IntAPS:
20691 Text.Op = PrintName("FlipSint8IntAPS");
20692 break;
20693case OP_FlipSint8Bool:
20694 Text.Op = PrintName("FlipSint8Bool");
20695 break;
20696case OP_FlipSint8FixedPoint:
20697 Text.Op = PrintName("FlipSint8FixedPoint");
20698 break;
20699case OP_FlipSint8Ptr:
20700 Text.Op = PrintName("FlipSint8Ptr");
20701 break;
20702case OP_FlipSint8MemberPtr:
20703 Text.Op = PrintName("FlipSint8MemberPtr");
20704 break;
20705case OP_FlipSint8Float:
20706 Text.Op = PrintName("FlipSint8Float");
20707 break;
20708case OP_FlipUint8Sint8:
20709 Text.Op = PrintName("FlipUint8Sint8");
20710 break;
20711case OP_FlipUint8Uint8:
20712 Text.Op = PrintName("FlipUint8Uint8");
20713 break;
20714case OP_FlipUint8Sint16:
20715 Text.Op = PrintName("FlipUint8Sint16");
20716 break;
20717case OP_FlipUint8Uint16:
20718 Text.Op = PrintName("FlipUint8Uint16");
20719 break;
20720case OP_FlipUint8Sint32:
20721 Text.Op = PrintName("FlipUint8Sint32");
20722 break;
20723case OP_FlipUint8Uint32:
20724 Text.Op = PrintName("FlipUint8Uint32");
20725 break;
20726case OP_FlipUint8Sint64:
20727 Text.Op = PrintName("FlipUint8Sint64");
20728 break;
20729case OP_FlipUint8Uint64:
20730 Text.Op = PrintName("FlipUint8Uint64");
20731 break;
20732case OP_FlipUint8IntAP:
20733 Text.Op = PrintName("FlipUint8IntAP");
20734 break;
20735case OP_FlipUint8IntAPS:
20736 Text.Op = PrintName("FlipUint8IntAPS");
20737 break;
20738case OP_FlipUint8Bool:
20739 Text.Op = PrintName("FlipUint8Bool");
20740 break;
20741case OP_FlipUint8FixedPoint:
20742 Text.Op = PrintName("FlipUint8FixedPoint");
20743 break;
20744case OP_FlipUint8Ptr:
20745 Text.Op = PrintName("FlipUint8Ptr");
20746 break;
20747case OP_FlipUint8MemberPtr:
20748 Text.Op = PrintName("FlipUint8MemberPtr");
20749 break;
20750case OP_FlipUint8Float:
20751 Text.Op = PrintName("FlipUint8Float");
20752 break;
20753case OP_FlipSint16Sint8:
20754 Text.Op = PrintName("FlipSint16Sint8");
20755 break;
20756case OP_FlipSint16Uint8:
20757 Text.Op = PrintName("FlipSint16Uint8");
20758 break;
20759case OP_FlipSint16Sint16:
20760 Text.Op = PrintName("FlipSint16Sint16");
20761 break;
20762case OP_FlipSint16Uint16:
20763 Text.Op = PrintName("FlipSint16Uint16");
20764 break;
20765case OP_FlipSint16Sint32:
20766 Text.Op = PrintName("FlipSint16Sint32");
20767 break;
20768case OP_FlipSint16Uint32:
20769 Text.Op = PrintName("FlipSint16Uint32");
20770 break;
20771case OP_FlipSint16Sint64:
20772 Text.Op = PrintName("FlipSint16Sint64");
20773 break;
20774case OP_FlipSint16Uint64:
20775 Text.Op = PrintName("FlipSint16Uint64");
20776 break;
20777case OP_FlipSint16IntAP:
20778 Text.Op = PrintName("FlipSint16IntAP");
20779 break;
20780case OP_FlipSint16IntAPS:
20781 Text.Op = PrintName("FlipSint16IntAPS");
20782 break;
20783case OP_FlipSint16Bool:
20784 Text.Op = PrintName("FlipSint16Bool");
20785 break;
20786case OP_FlipSint16FixedPoint:
20787 Text.Op = PrintName("FlipSint16FixedPoint");
20788 break;
20789case OP_FlipSint16Ptr:
20790 Text.Op = PrintName("FlipSint16Ptr");
20791 break;
20792case OP_FlipSint16MemberPtr:
20793 Text.Op = PrintName("FlipSint16MemberPtr");
20794 break;
20795case OP_FlipSint16Float:
20796 Text.Op = PrintName("FlipSint16Float");
20797 break;
20798case OP_FlipUint16Sint8:
20799 Text.Op = PrintName("FlipUint16Sint8");
20800 break;
20801case OP_FlipUint16Uint8:
20802 Text.Op = PrintName("FlipUint16Uint8");
20803 break;
20804case OP_FlipUint16Sint16:
20805 Text.Op = PrintName("FlipUint16Sint16");
20806 break;
20807case OP_FlipUint16Uint16:
20808 Text.Op = PrintName("FlipUint16Uint16");
20809 break;
20810case OP_FlipUint16Sint32:
20811 Text.Op = PrintName("FlipUint16Sint32");
20812 break;
20813case OP_FlipUint16Uint32:
20814 Text.Op = PrintName("FlipUint16Uint32");
20815 break;
20816case OP_FlipUint16Sint64:
20817 Text.Op = PrintName("FlipUint16Sint64");
20818 break;
20819case OP_FlipUint16Uint64:
20820 Text.Op = PrintName("FlipUint16Uint64");
20821 break;
20822case OP_FlipUint16IntAP:
20823 Text.Op = PrintName("FlipUint16IntAP");
20824 break;
20825case OP_FlipUint16IntAPS:
20826 Text.Op = PrintName("FlipUint16IntAPS");
20827 break;
20828case OP_FlipUint16Bool:
20829 Text.Op = PrintName("FlipUint16Bool");
20830 break;
20831case OP_FlipUint16FixedPoint:
20832 Text.Op = PrintName("FlipUint16FixedPoint");
20833 break;
20834case OP_FlipUint16Ptr:
20835 Text.Op = PrintName("FlipUint16Ptr");
20836 break;
20837case OP_FlipUint16MemberPtr:
20838 Text.Op = PrintName("FlipUint16MemberPtr");
20839 break;
20840case OP_FlipUint16Float:
20841 Text.Op = PrintName("FlipUint16Float");
20842 break;
20843case OP_FlipSint32Sint8:
20844 Text.Op = PrintName("FlipSint32Sint8");
20845 break;
20846case OP_FlipSint32Uint8:
20847 Text.Op = PrintName("FlipSint32Uint8");
20848 break;
20849case OP_FlipSint32Sint16:
20850 Text.Op = PrintName("FlipSint32Sint16");
20851 break;
20852case OP_FlipSint32Uint16:
20853 Text.Op = PrintName("FlipSint32Uint16");
20854 break;
20855case OP_FlipSint32Sint32:
20856 Text.Op = PrintName("FlipSint32Sint32");
20857 break;
20858case OP_FlipSint32Uint32:
20859 Text.Op = PrintName("FlipSint32Uint32");
20860 break;
20861case OP_FlipSint32Sint64:
20862 Text.Op = PrintName("FlipSint32Sint64");
20863 break;
20864case OP_FlipSint32Uint64:
20865 Text.Op = PrintName("FlipSint32Uint64");
20866 break;
20867case OP_FlipSint32IntAP:
20868 Text.Op = PrintName("FlipSint32IntAP");
20869 break;
20870case OP_FlipSint32IntAPS:
20871 Text.Op = PrintName("FlipSint32IntAPS");
20872 break;
20873case OP_FlipSint32Bool:
20874 Text.Op = PrintName("FlipSint32Bool");
20875 break;
20876case OP_FlipSint32FixedPoint:
20877 Text.Op = PrintName("FlipSint32FixedPoint");
20878 break;
20879case OP_FlipSint32Ptr:
20880 Text.Op = PrintName("FlipSint32Ptr");
20881 break;
20882case OP_FlipSint32MemberPtr:
20883 Text.Op = PrintName("FlipSint32MemberPtr");
20884 break;
20885case OP_FlipSint32Float:
20886 Text.Op = PrintName("FlipSint32Float");
20887 break;
20888case OP_FlipUint32Sint8:
20889 Text.Op = PrintName("FlipUint32Sint8");
20890 break;
20891case OP_FlipUint32Uint8:
20892 Text.Op = PrintName("FlipUint32Uint8");
20893 break;
20894case OP_FlipUint32Sint16:
20895 Text.Op = PrintName("FlipUint32Sint16");
20896 break;
20897case OP_FlipUint32Uint16:
20898 Text.Op = PrintName("FlipUint32Uint16");
20899 break;
20900case OP_FlipUint32Sint32:
20901 Text.Op = PrintName("FlipUint32Sint32");
20902 break;
20903case OP_FlipUint32Uint32:
20904 Text.Op = PrintName("FlipUint32Uint32");
20905 break;
20906case OP_FlipUint32Sint64:
20907 Text.Op = PrintName("FlipUint32Sint64");
20908 break;
20909case OP_FlipUint32Uint64:
20910 Text.Op = PrintName("FlipUint32Uint64");
20911 break;
20912case OP_FlipUint32IntAP:
20913 Text.Op = PrintName("FlipUint32IntAP");
20914 break;
20915case OP_FlipUint32IntAPS:
20916 Text.Op = PrintName("FlipUint32IntAPS");
20917 break;
20918case OP_FlipUint32Bool:
20919 Text.Op = PrintName("FlipUint32Bool");
20920 break;
20921case OP_FlipUint32FixedPoint:
20922 Text.Op = PrintName("FlipUint32FixedPoint");
20923 break;
20924case OP_FlipUint32Ptr:
20925 Text.Op = PrintName("FlipUint32Ptr");
20926 break;
20927case OP_FlipUint32MemberPtr:
20928 Text.Op = PrintName("FlipUint32MemberPtr");
20929 break;
20930case OP_FlipUint32Float:
20931 Text.Op = PrintName("FlipUint32Float");
20932 break;
20933case OP_FlipSint64Sint8:
20934 Text.Op = PrintName("FlipSint64Sint8");
20935 break;
20936case OP_FlipSint64Uint8:
20937 Text.Op = PrintName("FlipSint64Uint8");
20938 break;
20939case OP_FlipSint64Sint16:
20940 Text.Op = PrintName("FlipSint64Sint16");
20941 break;
20942case OP_FlipSint64Uint16:
20943 Text.Op = PrintName("FlipSint64Uint16");
20944 break;
20945case OP_FlipSint64Sint32:
20946 Text.Op = PrintName("FlipSint64Sint32");
20947 break;
20948case OP_FlipSint64Uint32:
20949 Text.Op = PrintName("FlipSint64Uint32");
20950 break;
20951case OP_FlipSint64Sint64:
20952 Text.Op = PrintName("FlipSint64Sint64");
20953 break;
20954case OP_FlipSint64Uint64:
20955 Text.Op = PrintName("FlipSint64Uint64");
20956 break;
20957case OP_FlipSint64IntAP:
20958 Text.Op = PrintName("FlipSint64IntAP");
20959 break;
20960case OP_FlipSint64IntAPS:
20961 Text.Op = PrintName("FlipSint64IntAPS");
20962 break;
20963case OP_FlipSint64Bool:
20964 Text.Op = PrintName("FlipSint64Bool");
20965 break;
20966case OP_FlipSint64FixedPoint:
20967 Text.Op = PrintName("FlipSint64FixedPoint");
20968 break;
20969case OP_FlipSint64Ptr:
20970 Text.Op = PrintName("FlipSint64Ptr");
20971 break;
20972case OP_FlipSint64MemberPtr:
20973 Text.Op = PrintName("FlipSint64MemberPtr");
20974 break;
20975case OP_FlipSint64Float:
20976 Text.Op = PrintName("FlipSint64Float");
20977 break;
20978case OP_FlipUint64Sint8:
20979 Text.Op = PrintName("FlipUint64Sint8");
20980 break;
20981case OP_FlipUint64Uint8:
20982 Text.Op = PrintName("FlipUint64Uint8");
20983 break;
20984case OP_FlipUint64Sint16:
20985 Text.Op = PrintName("FlipUint64Sint16");
20986 break;
20987case OP_FlipUint64Uint16:
20988 Text.Op = PrintName("FlipUint64Uint16");
20989 break;
20990case OP_FlipUint64Sint32:
20991 Text.Op = PrintName("FlipUint64Sint32");
20992 break;
20993case OP_FlipUint64Uint32:
20994 Text.Op = PrintName("FlipUint64Uint32");
20995 break;
20996case OP_FlipUint64Sint64:
20997 Text.Op = PrintName("FlipUint64Sint64");
20998 break;
20999case OP_FlipUint64Uint64:
21000 Text.Op = PrintName("FlipUint64Uint64");
21001 break;
21002case OP_FlipUint64IntAP:
21003 Text.Op = PrintName("FlipUint64IntAP");
21004 break;
21005case OP_FlipUint64IntAPS:
21006 Text.Op = PrintName("FlipUint64IntAPS");
21007 break;
21008case OP_FlipUint64Bool:
21009 Text.Op = PrintName("FlipUint64Bool");
21010 break;
21011case OP_FlipUint64FixedPoint:
21012 Text.Op = PrintName("FlipUint64FixedPoint");
21013 break;
21014case OP_FlipUint64Ptr:
21015 Text.Op = PrintName("FlipUint64Ptr");
21016 break;
21017case OP_FlipUint64MemberPtr:
21018 Text.Op = PrintName("FlipUint64MemberPtr");
21019 break;
21020case OP_FlipUint64Float:
21021 Text.Op = PrintName("FlipUint64Float");
21022 break;
21023case OP_FlipIntAPSint8:
21024 Text.Op = PrintName("FlipIntAPSint8");
21025 break;
21026case OP_FlipIntAPUint8:
21027 Text.Op = PrintName("FlipIntAPUint8");
21028 break;
21029case OP_FlipIntAPSint16:
21030 Text.Op = PrintName("FlipIntAPSint16");
21031 break;
21032case OP_FlipIntAPUint16:
21033 Text.Op = PrintName("FlipIntAPUint16");
21034 break;
21035case OP_FlipIntAPSint32:
21036 Text.Op = PrintName("FlipIntAPSint32");
21037 break;
21038case OP_FlipIntAPUint32:
21039 Text.Op = PrintName("FlipIntAPUint32");
21040 break;
21041case OP_FlipIntAPSint64:
21042 Text.Op = PrintName("FlipIntAPSint64");
21043 break;
21044case OP_FlipIntAPUint64:
21045 Text.Op = PrintName("FlipIntAPUint64");
21046 break;
21047case OP_FlipIntAPIntAP:
21048 Text.Op = PrintName("FlipIntAPIntAP");
21049 break;
21050case OP_FlipIntAPIntAPS:
21051 Text.Op = PrintName("FlipIntAPIntAPS");
21052 break;
21053case OP_FlipIntAPBool:
21054 Text.Op = PrintName("FlipIntAPBool");
21055 break;
21056case OP_FlipIntAPFixedPoint:
21057 Text.Op = PrintName("FlipIntAPFixedPoint");
21058 break;
21059case OP_FlipIntAPPtr:
21060 Text.Op = PrintName("FlipIntAPPtr");
21061 break;
21062case OP_FlipIntAPMemberPtr:
21063 Text.Op = PrintName("FlipIntAPMemberPtr");
21064 break;
21065case OP_FlipIntAPFloat:
21066 Text.Op = PrintName("FlipIntAPFloat");
21067 break;
21068case OP_FlipIntAPSSint8:
21069 Text.Op = PrintName("FlipIntAPSSint8");
21070 break;
21071case OP_FlipIntAPSUint8:
21072 Text.Op = PrintName("FlipIntAPSUint8");
21073 break;
21074case OP_FlipIntAPSSint16:
21075 Text.Op = PrintName("FlipIntAPSSint16");
21076 break;
21077case OP_FlipIntAPSUint16:
21078 Text.Op = PrintName("FlipIntAPSUint16");
21079 break;
21080case OP_FlipIntAPSSint32:
21081 Text.Op = PrintName("FlipIntAPSSint32");
21082 break;
21083case OP_FlipIntAPSUint32:
21084 Text.Op = PrintName("FlipIntAPSUint32");
21085 break;
21086case OP_FlipIntAPSSint64:
21087 Text.Op = PrintName("FlipIntAPSSint64");
21088 break;
21089case OP_FlipIntAPSUint64:
21090 Text.Op = PrintName("FlipIntAPSUint64");
21091 break;
21092case OP_FlipIntAPSIntAP:
21093 Text.Op = PrintName("FlipIntAPSIntAP");
21094 break;
21095case OP_FlipIntAPSIntAPS:
21096 Text.Op = PrintName("FlipIntAPSIntAPS");
21097 break;
21098case OP_FlipIntAPSBool:
21099 Text.Op = PrintName("FlipIntAPSBool");
21100 break;
21101case OP_FlipIntAPSFixedPoint:
21102 Text.Op = PrintName("FlipIntAPSFixedPoint");
21103 break;
21104case OP_FlipIntAPSPtr:
21105 Text.Op = PrintName("FlipIntAPSPtr");
21106 break;
21107case OP_FlipIntAPSMemberPtr:
21108 Text.Op = PrintName("FlipIntAPSMemberPtr");
21109 break;
21110case OP_FlipIntAPSFloat:
21111 Text.Op = PrintName("FlipIntAPSFloat");
21112 break;
21113case OP_FlipBoolSint8:
21114 Text.Op = PrintName("FlipBoolSint8");
21115 break;
21116case OP_FlipBoolUint8:
21117 Text.Op = PrintName("FlipBoolUint8");
21118 break;
21119case OP_FlipBoolSint16:
21120 Text.Op = PrintName("FlipBoolSint16");
21121 break;
21122case OP_FlipBoolUint16:
21123 Text.Op = PrintName("FlipBoolUint16");
21124 break;
21125case OP_FlipBoolSint32:
21126 Text.Op = PrintName("FlipBoolSint32");
21127 break;
21128case OP_FlipBoolUint32:
21129 Text.Op = PrintName("FlipBoolUint32");
21130 break;
21131case OP_FlipBoolSint64:
21132 Text.Op = PrintName("FlipBoolSint64");
21133 break;
21134case OP_FlipBoolUint64:
21135 Text.Op = PrintName("FlipBoolUint64");
21136 break;
21137case OP_FlipBoolIntAP:
21138 Text.Op = PrintName("FlipBoolIntAP");
21139 break;
21140case OP_FlipBoolIntAPS:
21141 Text.Op = PrintName("FlipBoolIntAPS");
21142 break;
21143case OP_FlipBoolBool:
21144 Text.Op = PrintName("FlipBoolBool");
21145 break;
21146case OP_FlipBoolFixedPoint:
21147 Text.Op = PrintName("FlipBoolFixedPoint");
21148 break;
21149case OP_FlipBoolPtr:
21150 Text.Op = PrintName("FlipBoolPtr");
21151 break;
21152case OP_FlipBoolMemberPtr:
21153 Text.Op = PrintName("FlipBoolMemberPtr");
21154 break;
21155case OP_FlipBoolFloat:
21156 Text.Op = PrintName("FlipBoolFloat");
21157 break;
21158case OP_FlipFixedPointSint8:
21159 Text.Op = PrintName("FlipFixedPointSint8");
21160 break;
21161case OP_FlipFixedPointUint8:
21162 Text.Op = PrintName("FlipFixedPointUint8");
21163 break;
21164case OP_FlipFixedPointSint16:
21165 Text.Op = PrintName("FlipFixedPointSint16");
21166 break;
21167case OP_FlipFixedPointUint16:
21168 Text.Op = PrintName("FlipFixedPointUint16");
21169 break;
21170case OP_FlipFixedPointSint32:
21171 Text.Op = PrintName("FlipFixedPointSint32");
21172 break;
21173case OP_FlipFixedPointUint32:
21174 Text.Op = PrintName("FlipFixedPointUint32");
21175 break;
21176case OP_FlipFixedPointSint64:
21177 Text.Op = PrintName("FlipFixedPointSint64");
21178 break;
21179case OP_FlipFixedPointUint64:
21180 Text.Op = PrintName("FlipFixedPointUint64");
21181 break;
21182case OP_FlipFixedPointIntAP:
21183 Text.Op = PrintName("FlipFixedPointIntAP");
21184 break;
21185case OP_FlipFixedPointIntAPS:
21186 Text.Op = PrintName("FlipFixedPointIntAPS");
21187 break;
21188case OP_FlipFixedPointBool:
21189 Text.Op = PrintName("FlipFixedPointBool");
21190 break;
21191case OP_FlipFixedPointFixedPoint:
21192 Text.Op = PrintName("FlipFixedPointFixedPoint");
21193 break;
21194case OP_FlipFixedPointPtr:
21195 Text.Op = PrintName("FlipFixedPointPtr");
21196 break;
21197case OP_FlipFixedPointMemberPtr:
21198 Text.Op = PrintName("FlipFixedPointMemberPtr");
21199 break;
21200case OP_FlipFixedPointFloat:
21201 Text.Op = PrintName("FlipFixedPointFloat");
21202 break;
21203case OP_FlipPtrSint8:
21204 Text.Op = PrintName("FlipPtrSint8");
21205 break;
21206case OP_FlipPtrUint8:
21207 Text.Op = PrintName("FlipPtrUint8");
21208 break;
21209case OP_FlipPtrSint16:
21210 Text.Op = PrintName("FlipPtrSint16");
21211 break;
21212case OP_FlipPtrUint16:
21213 Text.Op = PrintName("FlipPtrUint16");
21214 break;
21215case OP_FlipPtrSint32:
21216 Text.Op = PrintName("FlipPtrSint32");
21217 break;
21218case OP_FlipPtrUint32:
21219 Text.Op = PrintName("FlipPtrUint32");
21220 break;
21221case OP_FlipPtrSint64:
21222 Text.Op = PrintName("FlipPtrSint64");
21223 break;
21224case OP_FlipPtrUint64:
21225 Text.Op = PrintName("FlipPtrUint64");
21226 break;
21227case OP_FlipPtrIntAP:
21228 Text.Op = PrintName("FlipPtrIntAP");
21229 break;
21230case OP_FlipPtrIntAPS:
21231 Text.Op = PrintName("FlipPtrIntAPS");
21232 break;
21233case OP_FlipPtrBool:
21234 Text.Op = PrintName("FlipPtrBool");
21235 break;
21236case OP_FlipPtrFixedPoint:
21237 Text.Op = PrintName("FlipPtrFixedPoint");
21238 break;
21239case OP_FlipPtrPtr:
21240 Text.Op = PrintName("FlipPtrPtr");
21241 break;
21242case OP_FlipPtrMemberPtr:
21243 Text.Op = PrintName("FlipPtrMemberPtr");
21244 break;
21245case OP_FlipPtrFloat:
21246 Text.Op = PrintName("FlipPtrFloat");
21247 break;
21248case OP_FlipMemberPtrSint8:
21249 Text.Op = PrintName("FlipMemberPtrSint8");
21250 break;
21251case OP_FlipMemberPtrUint8:
21252 Text.Op = PrintName("FlipMemberPtrUint8");
21253 break;
21254case OP_FlipMemberPtrSint16:
21255 Text.Op = PrintName("FlipMemberPtrSint16");
21256 break;
21257case OP_FlipMemberPtrUint16:
21258 Text.Op = PrintName("FlipMemberPtrUint16");
21259 break;
21260case OP_FlipMemberPtrSint32:
21261 Text.Op = PrintName("FlipMemberPtrSint32");
21262 break;
21263case OP_FlipMemberPtrUint32:
21264 Text.Op = PrintName("FlipMemberPtrUint32");
21265 break;
21266case OP_FlipMemberPtrSint64:
21267 Text.Op = PrintName("FlipMemberPtrSint64");
21268 break;
21269case OP_FlipMemberPtrUint64:
21270 Text.Op = PrintName("FlipMemberPtrUint64");
21271 break;
21272case OP_FlipMemberPtrIntAP:
21273 Text.Op = PrintName("FlipMemberPtrIntAP");
21274 break;
21275case OP_FlipMemberPtrIntAPS:
21276 Text.Op = PrintName("FlipMemberPtrIntAPS");
21277 break;
21278case OP_FlipMemberPtrBool:
21279 Text.Op = PrintName("FlipMemberPtrBool");
21280 break;
21281case OP_FlipMemberPtrFixedPoint:
21282 Text.Op = PrintName("FlipMemberPtrFixedPoint");
21283 break;
21284case OP_FlipMemberPtrPtr:
21285 Text.Op = PrintName("FlipMemberPtrPtr");
21286 break;
21287case OP_FlipMemberPtrMemberPtr:
21288 Text.Op = PrintName("FlipMemberPtrMemberPtr");
21289 break;
21290case OP_FlipMemberPtrFloat:
21291 Text.Op = PrintName("FlipMemberPtrFloat");
21292 break;
21293case OP_FlipFloatSint8:
21294 Text.Op = PrintName("FlipFloatSint8");
21295 break;
21296case OP_FlipFloatUint8:
21297 Text.Op = PrintName("FlipFloatUint8");
21298 break;
21299case OP_FlipFloatSint16:
21300 Text.Op = PrintName("FlipFloatSint16");
21301 break;
21302case OP_FlipFloatUint16:
21303 Text.Op = PrintName("FlipFloatUint16");
21304 break;
21305case OP_FlipFloatSint32:
21306 Text.Op = PrintName("FlipFloatSint32");
21307 break;
21308case OP_FlipFloatUint32:
21309 Text.Op = PrintName("FlipFloatUint32");
21310 break;
21311case OP_FlipFloatSint64:
21312 Text.Op = PrintName("FlipFloatSint64");
21313 break;
21314case OP_FlipFloatUint64:
21315 Text.Op = PrintName("FlipFloatUint64");
21316 break;
21317case OP_FlipFloatIntAP:
21318 Text.Op = PrintName("FlipFloatIntAP");
21319 break;
21320case OP_FlipFloatIntAPS:
21321 Text.Op = PrintName("FlipFloatIntAPS");
21322 break;
21323case OP_FlipFloatBool:
21324 Text.Op = PrintName("FlipFloatBool");
21325 break;
21326case OP_FlipFloatFixedPoint:
21327 Text.Op = PrintName("FlipFloatFixedPoint");
21328 break;
21329case OP_FlipFloatPtr:
21330 Text.Op = PrintName("FlipFloatPtr");
21331 break;
21332case OP_FlipFloatMemberPtr:
21333 Text.Op = PrintName("FlipFloatMemberPtr");
21334 break;
21335case OP_FlipFloatFloat:
21336 Text.Op = PrintName("FlipFloatFloat");
21337 break;
21338#endif
21339#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21340bool emitFlipSint8Sint8(SourceInfo);
21341bool emitFlipSint8Uint8(SourceInfo);
21342bool emitFlipSint8Sint16(SourceInfo);
21343bool emitFlipSint8Uint16(SourceInfo);
21344bool emitFlipSint8Sint32(SourceInfo);
21345bool emitFlipSint8Uint32(SourceInfo);
21346bool emitFlipSint8Sint64(SourceInfo);
21347bool emitFlipSint8Uint64(SourceInfo);
21348bool emitFlipSint8IntAP(SourceInfo);
21349bool emitFlipSint8IntAPS(SourceInfo);
21350bool emitFlipSint8Bool(SourceInfo);
21351bool emitFlipSint8FixedPoint(SourceInfo);
21352bool emitFlipSint8Ptr(SourceInfo);
21353bool emitFlipSint8MemberPtr(SourceInfo);
21354bool emitFlipSint8Float(SourceInfo);
21355bool emitFlipUint8Sint8(SourceInfo);
21356bool emitFlipUint8Uint8(SourceInfo);
21357bool emitFlipUint8Sint16(SourceInfo);
21358bool emitFlipUint8Uint16(SourceInfo);
21359bool emitFlipUint8Sint32(SourceInfo);
21360bool emitFlipUint8Uint32(SourceInfo);
21361bool emitFlipUint8Sint64(SourceInfo);
21362bool emitFlipUint8Uint64(SourceInfo);
21363bool emitFlipUint8IntAP(SourceInfo);
21364bool emitFlipUint8IntAPS(SourceInfo);
21365bool emitFlipUint8Bool(SourceInfo);
21366bool emitFlipUint8FixedPoint(SourceInfo);
21367bool emitFlipUint8Ptr(SourceInfo);
21368bool emitFlipUint8MemberPtr(SourceInfo);
21369bool emitFlipUint8Float(SourceInfo);
21370bool emitFlipSint16Sint8(SourceInfo);
21371bool emitFlipSint16Uint8(SourceInfo);
21372bool emitFlipSint16Sint16(SourceInfo);
21373bool emitFlipSint16Uint16(SourceInfo);
21374bool emitFlipSint16Sint32(SourceInfo);
21375bool emitFlipSint16Uint32(SourceInfo);
21376bool emitFlipSint16Sint64(SourceInfo);
21377bool emitFlipSint16Uint64(SourceInfo);
21378bool emitFlipSint16IntAP(SourceInfo);
21379bool emitFlipSint16IntAPS(SourceInfo);
21380bool emitFlipSint16Bool(SourceInfo);
21381bool emitFlipSint16FixedPoint(SourceInfo);
21382bool emitFlipSint16Ptr(SourceInfo);
21383bool emitFlipSint16MemberPtr(SourceInfo);
21384bool emitFlipSint16Float(SourceInfo);
21385bool emitFlipUint16Sint8(SourceInfo);
21386bool emitFlipUint16Uint8(SourceInfo);
21387bool emitFlipUint16Sint16(SourceInfo);
21388bool emitFlipUint16Uint16(SourceInfo);
21389bool emitFlipUint16Sint32(SourceInfo);
21390bool emitFlipUint16Uint32(SourceInfo);
21391bool emitFlipUint16Sint64(SourceInfo);
21392bool emitFlipUint16Uint64(SourceInfo);
21393bool emitFlipUint16IntAP(SourceInfo);
21394bool emitFlipUint16IntAPS(SourceInfo);
21395bool emitFlipUint16Bool(SourceInfo);
21396bool emitFlipUint16FixedPoint(SourceInfo);
21397bool emitFlipUint16Ptr(SourceInfo);
21398bool emitFlipUint16MemberPtr(SourceInfo);
21399bool emitFlipUint16Float(SourceInfo);
21400bool emitFlipSint32Sint8(SourceInfo);
21401bool emitFlipSint32Uint8(SourceInfo);
21402bool emitFlipSint32Sint16(SourceInfo);
21403bool emitFlipSint32Uint16(SourceInfo);
21404bool emitFlipSint32Sint32(SourceInfo);
21405bool emitFlipSint32Uint32(SourceInfo);
21406bool emitFlipSint32Sint64(SourceInfo);
21407bool emitFlipSint32Uint64(SourceInfo);
21408bool emitFlipSint32IntAP(SourceInfo);
21409bool emitFlipSint32IntAPS(SourceInfo);
21410bool emitFlipSint32Bool(SourceInfo);
21411bool emitFlipSint32FixedPoint(SourceInfo);
21412bool emitFlipSint32Ptr(SourceInfo);
21413bool emitFlipSint32MemberPtr(SourceInfo);
21414bool emitFlipSint32Float(SourceInfo);
21415bool emitFlipUint32Sint8(SourceInfo);
21416bool emitFlipUint32Uint8(SourceInfo);
21417bool emitFlipUint32Sint16(SourceInfo);
21418bool emitFlipUint32Uint16(SourceInfo);
21419bool emitFlipUint32Sint32(SourceInfo);
21420bool emitFlipUint32Uint32(SourceInfo);
21421bool emitFlipUint32Sint64(SourceInfo);
21422bool emitFlipUint32Uint64(SourceInfo);
21423bool emitFlipUint32IntAP(SourceInfo);
21424bool emitFlipUint32IntAPS(SourceInfo);
21425bool emitFlipUint32Bool(SourceInfo);
21426bool emitFlipUint32FixedPoint(SourceInfo);
21427bool emitFlipUint32Ptr(SourceInfo);
21428bool emitFlipUint32MemberPtr(SourceInfo);
21429bool emitFlipUint32Float(SourceInfo);
21430bool emitFlipSint64Sint8(SourceInfo);
21431bool emitFlipSint64Uint8(SourceInfo);
21432bool emitFlipSint64Sint16(SourceInfo);
21433bool emitFlipSint64Uint16(SourceInfo);
21434bool emitFlipSint64Sint32(SourceInfo);
21435bool emitFlipSint64Uint32(SourceInfo);
21436bool emitFlipSint64Sint64(SourceInfo);
21437bool emitFlipSint64Uint64(SourceInfo);
21438bool emitFlipSint64IntAP(SourceInfo);
21439bool emitFlipSint64IntAPS(SourceInfo);
21440bool emitFlipSint64Bool(SourceInfo);
21441bool emitFlipSint64FixedPoint(SourceInfo);
21442bool emitFlipSint64Ptr(SourceInfo);
21443bool emitFlipSint64MemberPtr(SourceInfo);
21444bool emitFlipSint64Float(SourceInfo);
21445bool emitFlipUint64Sint8(SourceInfo);
21446bool emitFlipUint64Uint8(SourceInfo);
21447bool emitFlipUint64Sint16(SourceInfo);
21448bool emitFlipUint64Uint16(SourceInfo);
21449bool emitFlipUint64Sint32(SourceInfo);
21450bool emitFlipUint64Uint32(SourceInfo);
21451bool emitFlipUint64Sint64(SourceInfo);
21452bool emitFlipUint64Uint64(SourceInfo);
21453bool emitFlipUint64IntAP(SourceInfo);
21454bool emitFlipUint64IntAPS(SourceInfo);
21455bool emitFlipUint64Bool(SourceInfo);
21456bool emitFlipUint64FixedPoint(SourceInfo);
21457bool emitFlipUint64Ptr(SourceInfo);
21458bool emitFlipUint64MemberPtr(SourceInfo);
21459bool emitFlipUint64Float(SourceInfo);
21460bool emitFlipIntAPSint8(SourceInfo);
21461bool emitFlipIntAPUint8(SourceInfo);
21462bool emitFlipIntAPSint16(SourceInfo);
21463bool emitFlipIntAPUint16(SourceInfo);
21464bool emitFlipIntAPSint32(SourceInfo);
21465bool emitFlipIntAPUint32(SourceInfo);
21466bool emitFlipIntAPSint64(SourceInfo);
21467bool emitFlipIntAPUint64(SourceInfo);
21468bool emitFlipIntAPIntAP(SourceInfo);
21469bool emitFlipIntAPIntAPS(SourceInfo);
21470bool emitFlipIntAPBool(SourceInfo);
21471bool emitFlipIntAPFixedPoint(SourceInfo);
21472bool emitFlipIntAPPtr(SourceInfo);
21473bool emitFlipIntAPMemberPtr(SourceInfo);
21474bool emitFlipIntAPFloat(SourceInfo);
21475bool emitFlipIntAPSSint8(SourceInfo);
21476bool emitFlipIntAPSUint8(SourceInfo);
21477bool emitFlipIntAPSSint16(SourceInfo);
21478bool emitFlipIntAPSUint16(SourceInfo);
21479bool emitFlipIntAPSSint32(SourceInfo);
21480bool emitFlipIntAPSUint32(SourceInfo);
21481bool emitFlipIntAPSSint64(SourceInfo);
21482bool emitFlipIntAPSUint64(SourceInfo);
21483bool emitFlipIntAPSIntAP(SourceInfo);
21484bool emitFlipIntAPSIntAPS(SourceInfo);
21485bool emitFlipIntAPSBool(SourceInfo);
21486bool emitFlipIntAPSFixedPoint(SourceInfo);
21487bool emitFlipIntAPSPtr(SourceInfo);
21488bool emitFlipIntAPSMemberPtr(SourceInfo);
21489bool emitFlipIntAPSFloat(SourceInfo);
21490bool emitFlipBoolSint8(SourceInfo);
21491bool emitFlipBoolUint8(SourceInfo);
21492bool emitFlipBoolSint16(SourceInfo);
21493bool emitFlipBoolUint16(SourceInfo);
21494bool emitFlipBoolSint32(SourceInfo);
21495bool emitFlipBoolUint32(SourceInfo);
21496bool emitFlipBoolSint64(SourceInfo);
21497bool emitFlipBoolUint64(SourceInfo);
21498bool emitFlipBoolIntAP(SourceInfo);
21499bool emitFlipBoolIntAPS(SourceInfo);
21500bool emitFlipBoolBool(SourceInfo);
21501bool emitFlipBoolFixedPoint(SourceInfo);
21502bool emitFlipBoolPtr(SourceInfo);
21503bool emitFlipBoolMemberPtr(SourceInfo);
21504bool emitFlipBoolFloat(SourceInfo);
21505bool emitFlipFixedPointSint8(SourceInfo);
21506bool emitFlipFixedPointUint8(SourceInfo);
21507bool emitFlipFixedPointSint16(SourceInfo);
21508bool emitFlipFixedPointUint16(SourceInfo);
21509bool emitFlipFixedPointSint32(SourceInfo);
21510bool emitFlipFixedPointUint32(SourceInfo);
21511bool emitFlipFixedPointSint64(SourceInfo);
21512bool emitFlipFixedPointUint64(SourceInfo);
21513bool emitFlipFixedPointIntAP(SourceInfo);
21514bool emitFlipFixedPointIntAPS(SourceInfo);
21515bool emitFlipFixedPointBool(SourceInfo);
21516bool emitFlipFixedPointFixedPoint(SourceInfo);
21517bool emitFlipFixedPointPtr(SourceInfo);
21518bool emitFlipFixedPointMemberPtr(SourceInfo);
21519bool emitFlipFixedPointFloat(SourceInfo);
21520bool emitFlipPtrSint8(SourceInfo);
21521bool emitFlipPtrUint8(SourceInfo);
21522bool emitFlipPtrSint16(SourceInfo);
21523bool emitFlipPtrUint16(SourceInfo);
21524bool emitFlipPtrSint32(SourceInfo);
21525bool emitFlipPtrUint32(SourceInfo);
21526bool emitFlipPtrSint64(SourceInfo);
21527bool emitFlipPtrUint64(SourceInfo);
21528bool emitFlipPtrIntAP(SourceInfo);
21529bool emitFlipPtrIntAPS(SourceInfo);
21530bool emitFlipPtrBool(SourceInfo);
21531bool emitFlipPtrFixedPoint(SourceInfo);
21532bool emitFlipPtrPtr(SourceInfo);
21533bool emitFlipPtrMemberPtr(SourceInfo);
21534bool emitFlipPtrFloat(SourceInfo);
21535bool emitFlipMemberPtrSint8(SourceInfo);
21536bool emitFlipMemberPtrUint8(SourceInfo);
21537bool emitFlipMemberPtrSint16(SourceInfo);
21538bool emitFlipMemberPtrUint16(SourceInfo);
21539bool emitFlipMemberPtrSint32(SourceInfo);
21540bool emitFlipMemberPtrUint32(SourceInfo);
21541bool emitFlipMemberPtrSint64(SourceInfo);
21542bool emitFlipMemberPtrUint64(SourceInfo);
21543bool emitFlipMemberPtrIntAP(SourceInfo);
21544bool emitFlipMemberPtrIntAPS(SourceInfo);
21545bool emitFlipMemberPtrBool(SourceInfo);
21546bool emitFlipMemberPtrFixedPoint(SourceInfo);
21547bool emitFlipMemberPtrPtr(SourceInfo);
21548bool emitFlipMemberPtrMemberPtr(SourceInfo);
21549bool emitFlipMemberPtrFloat(SourceInfo);
21550bool emitFlipFloatSint8(SourceInfo);
21551bool emitFlipFloatUint8(SourceInfo);
21552bool emitFlipFloatSint16(SourceInfo);
21553bool emitFlipFloatUint16(SourceInfo);
21554bool emitFlipFloatSint32(SourceInfo);
21555bool emitFlipFloatUint32(SourceInfo);
21556bool emitFlipFloatSint64(SourceInfo);
21557bool emitFlipFloatUint64(SourceInfo);
21558bool emitFlipFloatIntAP(SourceInfo);
21559bool emitFlipFloatIntAPS(SourceInfo);
21560bool emitFlipFloatBool(SourceInfo);
21561bool emitFlipFloatFixedPoint(SourceInfo);
21562bool emitFlipFloatPtr(SourceInfo);
21563bool emitFlipFloatMemberPtr(SourceInfo);
21564bool emitFlipFloatFloat(SourceInfo);
21565#endif
21566#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21567[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
21568#endif
21569#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21570bool
21571#if defined(GET_EVAL_IMPL)
21572EvalEmitter
21573#else
21574ByteCodeEmitter
21575#endif
21576::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
21577 switch (T0) {
21578 case PT_Sint8:
21579 switch (T1) {
21580 case PT_Sint8:
21581 return emitFlipSint8Sint8(I);
21582 case PT_Uint8:
21583 return emitFlipSint8Uint8(I);
21584 case PT_Sint16:
21585 return emitFlipSint8Sint16(I);
21586 case PT_Uint16:
21587 return emitFlipSint8Uint16(I);
21588 case PT_Sint32:
21589 return emitFlipSint8Sint32(I);
21590 case PT_Uint32:
21591 return emitFlipSint8Uint32(I);
21592 case PT_Sint64:
21593 return emitFlipSint8Sint64(I);
21594 case PT_Uint64:
21595 return emitFlipSint8Uint64(I);
21596 case PT_IntAP:
21597 return emitFlipSint8IntAP(I);
21598 case PT_IntAPS:
21599 return emitFlipSint8IntAPS(I);
21600 case PT_Bool:
21601 return emitFlipSint8Bool(I);
21602 case PT_FixedPoint:
21603 return emitFlipSint8FixedPoint(I);
21604 case PT_Ptr:
21605 return emitFlipSint8Ptr(I);
21606 case PT_MemberPtr:
21607 return emitFlipSint8MemberPtr(I);
21608 case PT_Float:
21609 return emitFlipSint8Float(I);
21610 }
21611 llvm_unreachable("invalid enum value");
21612 case PT_Uint8:
21613 switch (T1) {
21614 case PT_Sint8:
21615 return emitFlipUint8Sint8(I);
21616 case PT_Uint8:
21617 return emitFlipUint8Uint8(I);
21618 case PT_Sint16:
21619 return emitFlipUint8Sint16(I);
21620 case PT_Uint16:
21621 return emitFlipUint8Uint16(I);
21622 case PT_Sint32:
21623 return emitFlipUint8Sint32(I);
21624 case PT_Uint32:
21625 return emitFlipUint8Uint32(I);
21626 case PT_Sint64:
21627 return emitFlipUint8Sint64(I);
21628 case PT_Uint64:
21629 return emitFlipUint8Uint64(I);
21630 case PT_IntAP:
21631 return emitFlipUint8IntAP(I);
21632 case PT_IntAPS:
21633 return emitFlipUint8IntAPS(I);
21634 case PT_Bool:
21635 return emitFlipUint8Bool(I);
21636 case PT_FixedPoint:
21637 return emitFlipUint8FixedPoint(I);
21638 case PT_Ptr:
21639 return emitFlipUint8Ptr(I);
21640 case PT_MemberPtr:
21641 return emitFlipUint8MemberPtr(I);
21642 case PT_Float:
21643 return emitFlipUint8Float(I);
21644 }
21645 llvm_unreachable("invalid enum value");
21646 case PT_Sint16:
21647 switch (T1) {
21648 case PT_Sint8:
21649 return emitFlipSint16Sint8(I);
21650 case PT_Uint8:
21651 return emitFlipSint16Uint8(I);
21652 case PT_Sint16:
21653 return emitFlipSint16Sint16(I);
21654 case PT_Uint16:
21655 return emitFlipSint16Uint16(I);
21656 case PT_Sint32:
21657 return emitFlipSint16Sint32(I);
21658 case PT_Uint32:
21659 return emitFlipSint16Uint32(I);
21660 case PT_Sint64:
21661 return emitFlipSint16Sint64(I);
21662 case PT_Uint64:
21663 return emitFlipSint16Uint64(I);
21664 case PT_IntAP:
21665 return emitFlipSint16IntAP(I);
21666 case PT_IntAPS:
21667 return emitFlipSint16IntAPS(I);
21668 case PT_Bool:
21669 return emitFlipSint16Bool(I);
21670 case PT_FixedPoint:
21671 return emitFlipSint16FixedPoint(I);
21672 case PT_Ptr:
21673 return emitFlipSint16Ptr(I);
21674 case PT_MemberPtr:
21675 return emitFlipSint16MemberPtr(I);
21676 case PT_Float:
21677 return emitFlipSint16Float(I);
21678 }
21679 llvm_unreachable("invalid enum value");
21680 case PT_Uint16:
21681 switch (T1) {
21682 case PT_Sint8:
21683 return emitFlipUint16Sint8(I);
21684 case PT_Uint8:
21685 return emitFlipUint16Uint8(I);
21686 case PT_Sint16:
21687 return emitFlipUint16Sint16(I);
21688 case PT_Uint16:
21689 return emitFlipUint16Uint16(I);
21690 case PT_Sint32:
21691 return emitFlipUint16Sint32(I);
21692 case PT_Uint32:
21693 return emitFlipUint16Uint32(I);
21694 case PT_Sint64:
21695 return emitFlipUint16Sint64(I);
21696 case PT_Uint64:
21697 return emitFlipUint16Uint64(I);
21698 case PT_IntAP:
21699 return emitFlipUint16IntAP(I);
21700 case PT_IntAPS:
21701 return emitFlipUint16IntAPS(I);
21702 case PT_Bool:
21703 return emitFlipUint16Bool(I);
21704 case PT_FixedPoint:
21705 return emitFlipUint16FixedPoint(I);
21706 case PT_Ptr:
21707 return emitFlipUint16Ptr(I);
21708 case PT_MemberPtr:
21709 return emitFlipUint16MemberPtr(I);
21710 case PT_Float:
21711 return emitFlipUint16Float(I);
21712 }
21713 llvm_unreachable("invalid enum value");
21714 case PT_Sint32:
21715 switch (T1) {
21716 case PT_Sint8:
21717 return emitFlipSint32Sint8(I);
21718 case PT_Uint8:
21719 return emitFlipSint32Uint8(I);
21720 case PT_Sint16:
21721 return emitFlipSint32Sint16(I);
21722 case PT_Uint16:
21723 return emitFlipSint32Uint16(I);
21724 case PT_Sint32:
21725 return emitFlipSint32Sint32(I);
21726 case PT_Uint32:
21727 return emitFlipSint32Uint32(I);
21728 case PT_Sint64:
21729 return emitFlipSint32Sint64(I);
21730 case PT_Uint64:
21731 return emitFlipSint32Uint64(I);
21732 case PT_IntAP:
21733 return emitFlipSint32IntAP(I);
21734 case PT_IntAPS:
21735 return emitFlipSint32IntAPS(I);
21736 case PT_Bool:
21737 return emitFlipSint32Bool(I);
21738 case PT_FixedPoint:
21739 return emitFlipSint32FixedPoint(I);
21740 case PT_Ptr:
21741 return emitFlipSint32Ptr(I);
21742 case PT_MemberPtr:
21743 return emitFlipSint32MemberPtr(I);
21744 case PT_Float:
21745 return emitFlipSint32Float(I);
21746 }
21747 llvm_unreachable("invalid enum value");
21748 case PT_Uint32:
21749 switch (T1) {
21750 case PT_Sint8:
21751 return emitFlipUint32Sint8(I);
21752 case PT_Uint8:
21753 return emitFlipUint32Uint8(I);
21754 case PT_Sint16:
21755 return emitFlipUint32Sint16(I);
21756 case PT_Uint16:
21757 return emitFlipUint32Uint16(I);
21758 case PT_Sint32:
21759 return emitFlipUint32Sint32(I);
21760 case PT_Uint32:
21761 return emitFlipUint32Uint32(I);
21762 case PT_Sint64:
21763 return emitFlipUint32Sint64(I);
21764 case PT_Uint64:
21765 return emitFlipUint32Uint64(I);
21766 case PT_IntAP:
21767 return emitFlipUint32IntAP(I);
21768 case PT_IntAPS:
21769 return emitFlipUint32IntAPS(I);
21770 case PT_Bool:
21771 return emitFlipUint32Bool(I);
21772 case PT_FixedPoint:
21773 return emitFlipUint32FixedPoint(I);
21774 case PT_Ptr:
21775 return emitFlipUint32Ptr(I);
21776 case PT_MemberPtr:
21777 return emitFlipUint32MemberPtr(I);
21778 case PT_Float:
21779 return emitFlipUint32Float(I);
21780 }
21781 llvm_unreachable("invalid enum value");
21782 case PT_Sint64:
21783 switch (T1) {
21784 case PT_Sint8:
21785 return emitFlipSint64Sint8(I);
21786 case PT_Uint8:
21787 return emitFlipSint64Uint8(I);
21788 case PT_Sint16:
21789 return emitFlipSint64Sint16(I);
21790 case PT_Uint16:
21791 return emitFlipSint64Uint16(I);
21792 case PT_Sint32:
21793 return emitFlipSint64Sint32(I);
21794 case PT_Uint32:
21795 return emitFlipSint64Uint32(I);
21796 case PT_Sint64:
21797 return emitFlipSint64Sint64(I);
21798 case PT_Uint64:
21799 return emitFlipSint64Uint64(I);
21800 case PT_IntAP:
21801 return emitFlipSint64IntAP(I);
21802 case PT_IntAPS:
21803 return emitFlipSint64IntAPS(I);
21804 case PT_Bool:
21805 return emitFlipSint64Bool(I);
21806 case PT_FixedPoint:
21807 return emitFlipSint64FixedPoint(I);
21808 case PT_Ptr:
21809 return emitFlipSint64Ptr(I);
21810 case PT_MemberPtr:
21811 return emitFlipSint64MemberPtr(I);
21812 case PT_Float:
21813 return emitFlipSint64Float(I);
21814 }
21815 llvm_unreachable("invalid enum value");
21816 case PT_Uint64:
21817 switch (T1) {
21818 case PT_Sint8:
21819 return emitFlipUint64Sint8(I);
21820 case PT_Uint8:
21821 return emitFlipUint64Uint8(I);
21822 case PT_Sint16:
21823 return emitFlipUint64Sint16(I);
21824 case PT_Uint16:
21825 return emitFlipUint64Uint16(I);
21826 case PT_Sint32:
21827 return emitFlipUint64Sint32(I);
21828 case PT_Uint32:
21829 return emitFlipUint64Uint32(I);
21830 case PT_Sint64:
21831 return emitFlipUint64Sint64(I);
21832 case PT_Uint64:
21833 return emitFlipUint64Uint64(I);
21834 case PT_IntAP:
21835 return emitFlipUint64IntAP(I);
21836 case PT_IntAPS:
21837 return emitFlipUint64IntAPS(I);
21838 case PT_Bool:
21839 return emitFlipUint64Bool(I);
21840 case PT_FixedPoint:
21841 return emitFlipUint64FixedPoint(I);
21842 case PT_Ptr:
21843 return emitFlipUint64Ptr(I);
21844 case PT_MemberPtr:
21845 return emitFlipUint64MemberPtr(I);
21846 case PT_Float:
21847 return emitFlipUint64Float(I);
21848 }
21849 llvm_unreachable("invalid enum value");
21850 case PT_IntAP:
21851 switch (T1) {
21852 case PT_Sint8:
21853 return emitFlipIntAPSint8(I);
21854 case PT_Uint8:
21855 return emitFlipIntAPUint8(I);
21856 case PT_Sint16:
21857 return emitFlipIntAPSint16(I);
21858 case PT_Uint16:
21859 return emitFlipIntAPUint16(I);
21860 case PT_Sint32:
21861 return emitFlipIntAPSint32(I);
21862 case PT_Uint32:
21863 return emitFlipIntAPUint32(I);
21864 case PT_Sint64:
21865 return emitFlipIntAPSint64(I);
21866 case PT_Uint64:
21867 return emitFlipIntAPUint64(I);
21868 case PT_IntAP:
21869 return emitFlipIntAPIntAP(I);
21870 case PT_IntAPS:
21871 return emitFlipIntAPIntAPS(I);
21872 case PT_Bool:
21873 return emitFlipIntAPBool(I);
21874 case PT_FixedPoint:
21875 return emitFlipIntAPFixedPoint(I);
21876 case PT_Ptr:
21877 return emitFlipIntAPPtr(I);
21878 case PT_MemberPtr:
21879 return emitFlipIntAPMemberPtr(I);
21880 case PT_Float:
21881 return emitFlipIntAPFloat(I);
21882 }
21883 llvm_unreachable("invalid enum value");
21884 case PT_IntAPS:
21885 switch (T1) {
21886 case PT_Sint8:
21887 return emitFlipIntAPSSint8(I);
21888 case PT_Uint8:
21889 return emitFlipIntAPSUint8(I);
21890 case PT_Sint16:
21891 return emitFlipIntAPSSint16(I);
21892 case PT_Uint16:
21893 return emitFlipIntAPSUint16(I);
21894 case PT_Sint32:
21895 return emitFlipIntAPSSint32(I);
21896 case PT_Uint32:
21897 return emitFlipIntAPSUint32(I);
21898 case PT_Sint64:
21899 return emitFlipIntAPSSint64(I);
21900 case PT_Uint64:
21901 return emitFlipIntAPSUint64(I);
21902 case PT_IntAP:
21903 return emitFlipIntAPSIntAP(I);
21904 case PT_IntAPS:
21905 return emitFlipIntAPSIntAPS(I);
21906 case PT_Bool:
21907 return emitFlipIntAPSBool(I);
21908 case PT_FixedPoint:
21909 return emitFlipIntAPSFixedPoint(I);
21910 case PT_Ptr:
21911 return emitFlipIntAPSPtr(I);
21912 case PT_MemberPtr:
21913 return emitFlipIntAPSMemberPtr(I);
21914 case PT_Float:
21915 return emitFlipIntAPSFloat(I);
21916 }
21917 llvm_unreachable("invalid enum value");
21918 case PT_Bool:
21919 switch (T1) {
21920 case PT_Sint8:
21921 return emitFlipBoolSint8(I);
21922 case PT_Uint8:
21923 return emitFlipBoolUint8(I);
21924 case PT_Sint16:
21925 return emitFlipBoolSint16(I);
21926 case PT_Uint16:
21927 return emitFlipBoolUint16(I);
21928 case PT_Sint32:
21929 return emitFlipBoolSint32(I);
21930 case PT_Uint32:
21931 return emitFlipBoolUint32(I);
21932 case PT_Sint64:
21933 return emitFlipBoolSint64(I);
21934 case PT_Uint64:
21935 return emitFlipBoolUint64(I);
21936 case PT_IntAP:
21937 return emitFlipBoolIntAP(I);
21938 case PT_IntAPS:
21939 return emitFlipBoolIntAPS(I);
21940 case PT_Bool:
21941 return emitFlipBoolBool(I);
21942 case PT_FixedPoint:
21943 return emitFlipBoolFixedPoint(I);
21944 case PT_Ptr:
21945 return emitFlipBoolPtr(I);
21946 case PT_MemberPtr:
21947 return emitFlipBoolMemberPtr(I);
21948 case PT_Float:
21949 return emitFlipBoolFloat(I);
21950 }
21951 llvm_unreachable("invalid enum value");
21952 case PT_FixedPoint:
21953 switch (T1) {
21954 case PT_Sint8:
21955 return emitFlipFixedPointSint8(I);
21956 case PT_Uint8:
21957 return emitFlipFixedPointUint8(I);
21958 case PT_Sint16:
21959 return emitFlipFixedPointSint16(I);
21960 case PT_Uint16:
21961 return emitFlipFixedPointUint16(I);
21962 case PT_Sint32:
21963 return emitFlipFixedPointSint32(I);
21964 case PT_Uint32:
21965 return emitFlipFixedPointUint32(I);
21966 case PT_Sint64:
21967 return emitFlipFixedPointSint64(I);
21968 case PT_Uint64:
21969 return emitFlipFixedPointUint64(I);
21970 case PT_IntAP:
21971 return emitFlipFixedPointIntAP(I);
21972 case PT_IntAPS:
21973 return emitFlipFixedPointIntAPS(I);
21974 case PT_Bool:
21975 return emitFlipFixedPointBool(I);
21976 case PT_FixedPoint:
21977 return emitFlipFixedPointFixedPoint(I);
21978 case PT_Ptr:
21979 return emitFlipFixedPointPtr(I);
21980 case PT_MemberPtr:
21981 return emitFlipFixedPointMemberPtr(I);
21982 case PT_Float:
21983 return emitFlipFixedPointFloat(I);
21984 }
21985 llvm_unreachable("invalid enum value");
21986 case PT_Ptr:
21987 switch (T1) {
21988 case PT_Sint8:
21989 return emitFlipPtrSint8(I);
21990 case PT_Uint8:
21991 return emitFlipPtrUint8(I);
21992 case PT_Sint16:
21993 return emitFlipPtrSint16(I);
21994 case PT_Uint16:
21995 return emitFlipPtrUint16(I);
21996 case PT_Sint32:
21997 return emitFlipPtrSint32(I);
21998 case PT_Uint32:
21999 return emitFlipPtrUint32(I);
22000 case PT_Sint64:
22001 return emitFlipPtrSint64(I);
22002 case PT_Uint64:
22003 return emitFlipPtrUint64(I);
22004 case PT_IntAP:
22005 return emitFlipPtrIntAP(I);
22006 case PT_IntAPS:
22007 return emitFlipPtrIntAPS(I);
22008 case PT_Bool:
22009 return emitFlipPtrBool(I);
22010 case PT_FixedPoint:
22011 return emitFlipPtrFixedPoint(I);
22012 case PT_Ptr:
22013 return emitFlipPtrPtr(I);
22014 case PT_MemberPtr:
22015 return emitFlipPtrMemberPtr(I);
22016 case PT_Float:
22017 return emitFlipPtrFloat(I);
22018 }
22019 llvm_unreachable("invalid enum value");
22020 case PT_MemberPtr:
22021 switch (T1) {
22022 case PT_Sint8:
22023 return emitFlipMemberPtrSint8(I);
22024 case PT_Uint8:
22025 return emitFlipMemberPtrUint8(I);
22026 case PT_Sint16:
22027 return emitFlipMemberPtrSint16(I);
22028 case PT_Uint16:
22029 return emitFlipMemberPtrUint16(I);
22030 case PT_Sint32:
22031 return emitFlipMemberPtrSint32(I);
22032 case PT_Uint32:
22033 return emitFlipMemberPtrUint32(I);
22034 case PT_Sint64:
22035 return emitFlipMemberPtrSint64(I);
22036 case PT_Uint64:
22037 return emitFlipMemberPtrUint64(I);
22038 case PT_IntAP:
22039 return emitFlipMemberPtrIntAP(I);
22040 case PT_IntAPS:
22041 return emitFlipMemberPtrIntAPS(I);
22042 case PT_Bool:
22043 return emitFlipMemberPtrBool(I);
22044 case PT_FixedPoint:
22045 return emitFlipMemberPtrFixedPoint(I);
22046 case PT_Ptr:
22047 return emitFlipMemberPtrPtr(I);
22048 case PT_MemberPtr:
22049 return emitFlipMemberPtrMemberPtr(I);
22050 case PT_Float:
22051 return emitFlipMemberPtrFloat(I);
22052 }
22053 llvm_unreachable("invalid enum value");
22054 case PT_Float:
22055 switch (T1) {
22056 case PT_Sint8:
22057 return emitFlipFloatSint8(I);
22058 case PT_Uint8:
22059 return emitFlipFloatUint8(I);
22060 case PT_Sint16:
22061 return emitFlipFloatSint16(I);
22062 case PT_Uint16:
22063 return emitFlipFloatUint16(I);
22064 case PT_Sint32:
22065 return emitFlipFloatSint32(I);
22066 case PT_Uint32:
22067 return emitFlipFloatUint32(I);
22068 case PT_Sint64:
22069 return emitFlipFloatSint64(I);
22070 case PT_Uint64:
22071 return emitFlipFloatUint64(I);
22072 case PT_IntAP:
22073 return emitFlipFloatIntAP(I);
22074 case PT_IntAPS:
22075 return emitFlipFloatIntAPS(I);
22076 case PT_Bool:
22077 return emitFlipFloatBool(I);
22078 case PT_FixedPoint:
22079 return emitFlipFloatFixedPoint(I);
22080 case PT_Ptr:
22081 return emitFlipFloatPtr(I);
22082 case PT_MemberPtr:
22083 return emitFlipFloatMemberPtr(I);
22084 case PT_Float:
22085 return emitFlipFloatFloat(I);
22086 }
22087 llvm_unreachable("invalid enum value");
22088 }
22089 llvm_unreachable("invalid enum value");
22090}
22091#endif
22092#ifdef GET_LINK_IMPL
22093bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
22094 return emitOp<>(OP_FlipSint8Sint8, L);
22095}
22096bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
22097 return emitOp<>(OP_FlipSint8Uint8, L);
22098}
22099bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
22100 return emitOp<>(OP_FlipSint8Sint16, L);
22101}
22102bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
22103 return emitOp<>(OP_FlipSint8Uint16, L);
22104}
22105bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
22106 return emitOp<>(OP_FlipSint8Sint32, L);
22107}
22108bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
22109 return emitOp<>(OP_FlipSint8Uint32, L);
22110}
22111bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
22112 return emitOp<>(OP_FlipSint8Sint64, L);
22113}
22114bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
22115 return emitOp<>(OP_FlipSint8Uint64, L);
22116}
22117bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
22118 return emitOp<>(OP_FlipSint8IntAP, L);
22119}
22120bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
22121 return emitOp<>(OP_FlipSint8IntAPS, L);
22122}
22123bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
22124 return emitOp<>(OP_FlipSint8Bool, L);
22125}
22126bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
22127 return emitOp<>(OP_FlipSint8FixedPoint, L);
22128}
22129bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
22130 return emitOp<>(OP_FlipSint8Ptr, L);
22131}
22132bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
22133 return emitOp<>(OP_FlipSint8MemberPtr, L);
22134}
22135bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
22136 return emitOp<>(OP_FlipSint8Float, L);
22137}
22138bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
22139 return emitOp<>(OP_FlipUint8Sint8, L);
22140}
22141bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
22142 return emitOp<>(OP_FlipUint8Uint8, L);
22143}
22144bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
22145 return emitOp<>(OP_FlipUint8Sint16, L);
22146}
22147bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
22148 return emitOp<>(OP_FlipUint8Uint16, L);
22149}
22150bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
22151 return emitOp<>(OP_FlipUint8Sint32, L);
22152}
22153bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
22154 return emitOp<>(OP_FlipUint8Uint32, L);
22155}
22156bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
22157 return emitOp<>(OP_FlipUint8Sint64, L);
22158}
22159bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
22160 return emitOp<>(OP_FlipUint8Uint64, L);
22161}
22162bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
22163 return emitOp<>(OP_FlipUint8IntAP, L);
22164}
22165bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
22166 return emitOp<>(OP_FlipUint8IntAPS, L);
22167}
22168bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
22169 return emitOp<>(OP_FlipUint8Bool, L);
22170}
22171bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
22172 return emitOp<>(OP_FlipUint8FixedPoint, L);
22173}
22174bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
22175 return emitOp<>(OP_FlipUint8Ptr, L);
22176}
22177bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
22178 return emitOp<>(OP_FlipUint8MemberPtr, L);
22179}
22180bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
22181 return emitOp<>(OP_FlipUint8Float, L);
22182}
22183bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
22184 return emitOp<>(OP_FlipSint16Sint8, L);
22185}
22186bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
22187 return emitOp<>(OP_FlipSint16Uint8, L);
22188}
22189bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
22190 return emitOp<>(OP_FlipSint16Sint16, L);
22191}
22192bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
22193 return emitOp<>(OP_FlipSint16Uint16, L);
22194}
22195bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
22196 return emitOp<>(OP_FlipSint16Sint32, L);
22197}
22198bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
22199 return emitOp<>(OP_FlipSint16Uint32, L);
22200}
22201bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
22202 return emitOp<>(OP_FlipSint16Sint64, L);
22203}
22204bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
22205 return emitOp<>(OP_FlipSint16Uint64, L);
22206}
22207bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
22208 return emitOp<>(OP_FlipSint16IntAP, L);
22209}
22210bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
22211 return emitOp<>(OP_FlipSint16IntAPS, L);
22212}
22213bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
22214 return emitOp<>(OP_FlipSint16Bool, L);
22215}
22216bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
22217 return emitOp<>(OP_FlipSint16FixedPoint, L);
22218}
22219bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
22220 return emitOp<>(OP_FlipSint16Ptr, L);
22221}
22222bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
22223 return emitOp<>(OP_FlipSint16MemberPtr, L);
22224}
22225bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
22226 return emitOp<>(OP_FlipSint16Float, L);
22227}
22228bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
22229 return emitOp<>(OP_FlipUint16Sint8, L);
22230}
22231bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
22232 return emitOp<>(OP_FlipUint16Uint8, L);
22233}
22234bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
22235 return emitOp<>(OP_FlipUint16Sint16, L);
22236}
22237bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
22238 return emitOp<>(OP_FlipUint16Uint16, L);
22239}
22240bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
22241 return emitOp<>(OP_FlipUint16Sint32, L);
22242}
22243bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
22244 return emitOp<>(OP_FlipUint16Uint32, L);
22245}
22246bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
22247 return emitOp<>(OP_FlipUint16Sint64, L);
22248}
22249bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
22250 return emitOp<>(OP_FlipUint16Uint64, L);
22251}
22252bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
22253 return emitOp<>(OP_FlipUint16IntAP, L);
22254}
22255bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
22256 return emitOp<>(OP_FlipUint16IntAPS, L);
22257}
22258bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
22259 return emitOp<>(OP_FlipUint16Bool, L);
22260}
22261bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
22262 return emitOp<>(OP_FlipUint16FixedPoint, L);
22263}
22264bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
22265 return emitOp<>(OP_FlipUint16Ptr, L);
22266}
22267bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
22268 return emitOp<>(OP_FlipUint16MemberPtr, L);
22269}
22270bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
22271 return emitOp<>(OP_FlipUint16Float, L);
22272}
22273bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
22274 return emitOp<>(OP_FlipSint32Sint8, L);
22275}
22276bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
22277 return emitOp<>(OP_FlipSint32Uint8, L);
22278}
22279bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
22280 return emitOp<>(OP_FlipSint32Sint16, L);
22281}
22282bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
22283 return emitOp<>(OP_FlipSint32Uint16, L);
22284}
22285bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
22286 return emitOp<>(OP_FlipSint32Sint32, L);
22287}
22288bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
22289 return emitOp<>(OP_FlipSint32Uint32, L);
22290}
22291bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
22292 return emitOp<>(OP_FlipSint32Sint64, L);
22293}
22294bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
22295 return emitOp<>(OP_FlipSint32Uint64, L);
22296}
22297bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
22298 return emitOp<>(OP_FlipSint32IntAP, L);
22299}
22300bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
22301 return emitOp<>(OP_FlipSint32IntAPS, L);
22302}
22303bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
22304 return emitOp<>(OP_FlipSint32Bool, L);
22305}
22306bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
22307 return emitOp<>(OP_FlipSint32FixedPoint, L);
22308}
22309bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
22310 return emitOp<>(OP_FlipSint32Ptr, L);
22311}
22312bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
22313 return emitOp<>(OP_FlipSint32MemberPtr, L);
22314}
22315bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
22316 return emitOp<>(OP_FlipSint32Float, L);
22317}
22318bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
22319 return emitOp<>(OP_FlipUint32Sint8, L);
22320}
22321bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
22322 return emitOp<>(OP_FlipUint32Uint8, L);
22323}
22324bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
22325 return emitOp<>(OP_FlipUint32Sint16, L);
22326}
22327bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
22328 return emitOp<>(OP_FlipUint32Uint16, L);
22329}
22330bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
22331 return emitOp<>(OP_FlipUint32Sint32, L);
22332}
22333bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
22334 return emitOp<>(OP_FlipUint32Uint32, L);
22335}
22336bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
22337 return emitOp<>(OP_FlipUint32Sint64, L);
22338}
22339bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
22340 return emitOp<>(OP_FlipUint32Uint64, L);
22341}
22342bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
22343 return emitOp<>(OP_FlipUint32IntAP, L);
22344}
22345bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
22346 return emitOp<>(OP_FlipUint32IntAPS, L);
22347}
22348bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
22349 return emitOp<>(OP_FlipUint32Bool, L);
22350}
22351bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
22352 return emitOp<>(OP_FlipUint32FixedPoint, L);
22353}
22354bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
22355 return emitOp<>(OP_FlipUint32Ptr, L);
22356}
22357bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
22358 return emitOp<>(OP_FlipUint32MemberPtr, L);
22359}
22360bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
22361 return emitOp<>(OP_FlipUint32Float, L);
22362}
22363bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
22364 return emitOp<>(OP_FlipSint64Sint8, L);
22365}
22366bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
22367 return emitOp<>(OP_FlipSint64Uint8, L);
22368}
22369bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
22370 return emitOp<>(OP_FlipSint64Sint16, L);
22371}
22372bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
22373 return emitOp<>(OP_FlipSint64Uint16, L);
22374}
22375bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
22376 return emitOp<>(OP_FlipSint64Sint32, L);
22377}
22378bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
22379 return emitOp<>(OP_FlipSint64Uint32, L);
22380}
22381bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
22382 return emitOp<>(OP_FlipSint64Sint64, L);
22383}
22384bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
22385 return emitOp<>(OP_FlipSint64Uint64, L);
22386}
22387bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
22388 return emitOp<>(OP_FlipSint64IntAP, L);
22389}
22390bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
22391 return emitOp<>(OP_FlipSint64IntAPS, L);
22392}
22393bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
22394 return emitOp<>(OP_FlipSint64Bool, L);
22395}
22396bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
22397 return emitOp<>(OP_FlipSint64FixedPoint, L);
22398}
22399bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
22400 return emitOp<>(OP_FlipSint64Ptr, L);
22401}
22402bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
22403 return emitOp<>(OP_FlipSint64MemberPtr, L);
22404}
22405bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
22406 return emitOp<>(OP_FlipSint64Float, L);
22407}
22408bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
22409 return emitOp<>(OP_FlipUint64Sint8, L);
22410}
22411bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
22412 return emitOp<>(OP_FlipUint64Uint8, L);
22413}
22414bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
22415 return emitOp<>(OP_FlipUint64Sint16, L);
22416}
22417bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
22418 return emitOp<>(OP_FlipUint64Uint16, L);
22419}
22420bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
22421 return emitOp<>(OP_FlipUint64Sint32, L);
22422}
22423bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
22424 return emitOp<>(OP_FlipUint64Uint32, L);
22425}
22426bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
22427 return emitOp<>(OP_FlipUint64Sint64, L);
22428}
22429bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
22430 return emitOp<>(OP_FlipUint64Uint64, L);
22431}
22432bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
22433 return emitOp<>(OP_FlipUint64IntAP, L);
22434}
22435bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
22436 return emitOp<>(OP_FlipUint64IntAPS, L);
22437}
22438bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
22439 return emitOp<>(OP_FlipUint64Bool, L);
22440}
22441bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
22442 return emitOp<>(OP_FlipUint64FixedPoint, L);
22443}
22444bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
22445 return emitOp<>(OP_FlipUint64Ptr, L);
22446}
22447bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
22448 return emitOp<>(OP_FlipUint64MemberPtr, L);
22449}
22450bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
22451 return emitOp<>(OP_FlipUint64Float, L);
22452}
22453bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
22454 return emitOp<>(OP_FlipIntAPSint8, L);
22455}
22456bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
22457 return emitOp<>(OP_FlipIntAPUint8, L);
22458}
22459bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
22460 return emitOp<>(OP_FlipIntAPSint16, L);
22461}
22462bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
22463 return emitOp<>(OP_FlipIntAPUint16, L);
22464}
22465bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
22466 return emitOp<>(OP_FlipIntAPSint32, L);
22467}
22468bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
22469 return emitOp<>(OP_FlipIntAPUint32, L);
22470}
22471bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
22472 return emitOp<>(OP_FlipIntAPSint64, L);
22473}
22474bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
22475 return emitOp<>(OP_FlipIntAPUint64, L);
22476}
22477bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
22478 return emitOp<>(OP_FlipIntAPIntAP, L);
22479}
22480bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
22481 return emitOp<>(OP_FlipIntAPIntAPS, L);
22482}
22483bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
22484 return emitOp<>(OP_FlipIntAPBool, L);
22485}
22486bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
22487 return emitOp<>(OP_FlipIntAPFixedPoint, L);
22488}
22489bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
22490 return emitOp<>(OP_FlipIntAPPtr, L);
22491}
22492bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
22493 return emitOp<>(OP_FlipIntAPMemberPtr, L);
22494}
22495bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
22496 return emitOp<>(OP_FlipIntAPFloat, L);
22497}
22498bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
22499 return emitOp<>(OP_FlipIntAPSSint8, L);
22500}
22501bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
22502 return emitOp<>(OP_FlipIntAPSUint8, L);
22503}
22504bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
22505 return emitOp<>(OP_FlipIntAPSSint16, L);
22506}
22507bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
22508 return emitOp<>(OP_FlipIntAPSUint16, L);
22509}
22510bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
22511 return emitOp<>(OP_FlipIntAPSSint32, L);
22512}
22513bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
22514 return emitOp<>(OP_FlipIntAPSUint32, L);
22515}
22516bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22517 return emitOp<>(OP_FlipIntAPSSint64, L);
22518}
22519bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22520 return emitOp<>(OP_FlipIntAPSUint64, L);
22521}
22522bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22523 return emitOp<>(OP_FlipIntAPSIntAP, L);
22524}
22525bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22526 return emitOp<>(OP_FlipIntAPSIntAPS, L);
22527}
22528bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
22529 return emitOp<>(OP_FlipIntAPSBool, L);
22530}
22531bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22532 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
22533}
22534bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22535 return emitOp<>(OP_FlipIntAPSPtr, L);
22536}
22537bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22538 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
22539}
22540bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
22541 return emitOp<>(OP_FlipIntAPSFloat, L);
22542}
22543bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
22544 return emitOp<>(OP_FlipBoolSint8, L);
22545}
22546bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
22547 return emitOp<>(OP_FlipBoolUint8, L);
22548}
22549bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
22550 return emitOp<>(OP_FlipBoolSint16, L);
22551}
22552bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
22553 return emitOp<>(OP_FlipBoolUint16, L);
22554}
22555bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
22556 return emitOp<>(OP_FlipBoolSint32, L);
22557}
22558bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
22559 return emitOp<>(OP_FlipBoolUint32, L);
22560}
22561bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
22562 return emitOp<>(OP_FlipBoolSint64, L);
22563}
22564bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
22565 return emitOp<>(OP_FlipBoolUint64, L);
22566}
22567bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
22568 return emitOp<>(OP_FlipBoolIntAP, L);
22569}
22570bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
22571 return emitOp<>(OP_FlipBoolIntAPS, L);
22572}
22573bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
22574 return emitOp<>(OP_FlipBoolBool, L);
22575}
22576bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
22577 return emitOp<>(OP_FlipBoolFixedPoint, L);
22578}
22579bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
22580 return emitOp<>(OP_FlipBoolPtr, L);
22581}
22582bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
22583 return emitOp<>(OP_FlipBoolMemberPtr, L);
22584}
22585bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
22586 return emitOp<>(OP_FlipBoolFloat, L);
22587}
22588bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
22589 return emitOp<>(OP_FlipFixedPointSint8, L);
22590}
22591bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
22592 return emitOp<>(OP_FlipFixedPointUint8, L);
22593}
22594bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
22595 return emitOp<>(OP_FlipFixedPointSint16, L);
22596}
22597bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
22598 return emitOp<>(OP_FlipFixedPointUint16, L);
22599}
22600bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
22601 return emitOp<>(OP_FlipFixedPointSint32, L);
22602}
22603bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
22604 return emitOp<>(OP_FlipFixedPointUint32, L);
22605}
22606bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
22607 return emitOp<>(OP_FlipFixedPointSint64, L);
22608}
22609bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
22610 return emitOp<>(OP_FlipFixedPointUint64, L);
22611}
22612bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
22613 return emitOp<>(OP_FlipFixedPointIntAP, L);
22614}
22615bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
22616 return emitOp<>(OP_FlipFixedPointIntAPS, L);
22617}
22618bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
22619 return emitOp<>(OP_FlipFixedPointBool, L);
22620}
22621bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
22622 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
22623}
22624bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
22625 return emitOp<>(OP_FlipFixedPointPtr, L);
22626}
22627bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
22628 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
22629}
22630bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
22631 return emitOp<>(OP_FlipFixedPointFloat, L);
22632}
22633bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
22634 return emitOp<>(OP_FlipPtrSint8, L);
22635}
22636bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
22637 return emitOp<>(OP_FlipPtrUint8, L);
22638}
22639bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
22640 return emitOp<>(OP_FlipPtrSint16, L);
22641}
22642bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
22643 return emitOp<>(OP_FlipPtrUint16, L);
22644}
22645bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
22646 return emitOp<>(OP_FlipPtrSint32, L);
22647}
22648bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
22649 return emitOp<>(OP_FlipPtrUint32, L);
22650}
22651bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
22652 return emitOp<>(OP_FlipPtrSint64, L);
22653}
22654bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
22655 return emitOp<>(OP_FlipPtrUint64, L);
22656}
22657bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
22658 return emitOp<>(OP_FlipPtrIntAP, L);
22659}
22660bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
22661 return emitOp<>(OP_FlipPtrIntAPS, L);
22662}
22663bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
22664 return emitOp<>(OP_FlipPtrBool, L);
22665}
22666bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
22667 return emitOp<>(OP_FlipPtrFixedPoint, L);
22668}
22669bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
22670 return emitOp<>(OP_FlipPtrPtr, L);
22671}
22672bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
22673 return emitOp<>(OP_FlipPtrMemberPtr, L);
22674}
22675bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
22676 return emitOp<>(OP_FlipPtrFloat, L);
22677}
22678bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
22679 return emitOp<>(OP_FlipMemberPtrSint8, L);
22680}
22681bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
22682 return emitOp<>(OP_FlipMemberPtrUint8, L);
22683}
22684bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
22685 return emitOp<>(OP_FlipMemberPtrSint16, L);
22686}
22687bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
22688 return emitOp<>(OP_FlipMemberPtrUint16, L);
22689}
22690bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
22691 return emitOp<>(OP_FlipMemberPtrSint32, L);
22692}
22693bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
22694 return emitOp<>(OP_FlipMemberPtrUint32, L);
22695}
22696bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
22697 return emitOp<>(OP_FlipMemberPtrSint64, L);
22698}
22699bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
22700 return emitOp<>(OP_FlipMemberPtrUint64, L);
22701}
22702bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
22703 return emitOp<>(OP_FlipMemberPtrIntAP, L);
22704}
22705bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
22706 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
22707}
22708bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
22709 return emitOp<>(OP_FlipMemberPtrBool, L);
22710}
22711bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
22712 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
22713}
22714bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
22715 return emitOp<>(OP_FlipMemberPtrPtr, L);
22716}
22717bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
22718 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
22719}
22720bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
22721 return emitOp<>(OP_FlipMemberPtrFloat, L);
22722}
22723bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
22724 return emitOp<>(OP_FlipFloatSint8, L);
22725}
22726bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
22727 return emitOp<>(OP_FlipFloatUint8, L);
22728}
22729bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
22730 return emitOp<>(OP_FlipFloatSint16, L);
22731}
22732bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
22733 return emitOp<>(OP_FlipFloatUint16, L);
22734}
22735bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
22736 return emitOp<>(OP_FlipFloatSint32, L);
22737}
22738bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
22739 return emitOp<>(OP_FlipFloatUint32, L);
22740}
22741bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
22742 return emitOp<>(OP_FlipFloatSint64, L);
22743}
22744bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
22745 return emitOp<>(OP_FlipFloatUint64, L);
22746}
22747bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
22748 return emitOp<>(OP_FlipFloatIntAP, L);
22749}
22750bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
22751 return emitOp<>(OP_FlipFloatIntAPS, L);
22752}
22753bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
22754 return emitOp<>(OP_FlipFloatBool, L);
22755}
22756bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
22757 return emitOp<>(OP_FlipFloatFixedPoint, L);
22758}
22759bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
22760 return emitOp<>(OP_FlipFloatPtr, L);
22761}
22762bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
22763 return emitOp<>(OP_FlipFloatMemberPtr, L);
22764}
22765bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
22766 return emitOp<>(OP_FlipFloatFloat, L);
22767}
22768#endif
22769#ifdef GET_EVAL_IMPL
22770bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
22771 if (!isActive()) return true;
22772 CurrentSource = L;
22773 return Flip<PT_Sint8, PT_Sint8>(S, OpPC);
22774}
22775bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
22776 if (!isActive()) return true;
22777 CurrentSource = L;
22778 return Flip<PT_Sint8, PT_Uint8>(S, OpPC);
22779}
22780bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
22781 if (!isActive()) return true;
22782 CurrentSource = L;
22783 return Flip<PT_Sint8, PT_Sint16>(S, OpPC);
22784}
22785bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
22786 if (!isActive()) return true;
22787 CurrentSource = L;
22788 return Flip<PT_Sint8, PT_Uint16>(S, OpPC);
22789}
22790bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
22791 if (!isActive()) return true;
22792 CurrentSource = L;
22793 return Flip<PT_Sint8, PT_Sint32>(S, OpPC);
22794}
22795bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
22796 if (!isActive()) return true;
22797 CurrentSource = L;
22798 return Flip<PT_Sint8, PT_Uint32>(S, OpPC);
22799}
22800bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
22801 if (!isActive()) return true;
22802 CurrentSource = L;
22803 return Flip<PT_Sint8, PT_Sint64>(S, OpPC);
22804}
22805bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
22806 if (!isActive()) return true;
22807 CurrentSource = L;
22808 return Flip<PT_Sint8, PT_Uint64>(S, OpPC);
22809}
22810bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
22811 if (!isActive()) return true;
22812 CurrentSource = L;
22813 return Flip<PT_Sint8, PT_IntAP>(S, OpPC);
22814}
22815bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
22816 if (!isActive()) return true;
22817 CurrentSource = L;
22818 return Flip<PT_Sint8, PT_IntAPS>(S, OpPC);
22819}
22820bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
22821 if (!isActive()) return true;
22822 CurrentSource = L;
22823 return Flip<PT_Sint8, PT_Bool>(S, OpPC);
22824}
22825bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
22826 if (!isActive()) return true;
22827 CurrentSource = L;
22828 return Flip<PT_Sint8, PT_FixedPoint>(S, OpPC);
22829}
22830bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
22831 if (!isActive()) return true;
22832 CurrentSource = L;
22833 return Flip<PT_Sint8, PT_Ptr>(S, OpPC);
22834}
22835bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
22836 if (!isActive()) return true;
22837 CurrentSource = L;
22838 return Flip<PT_Sint8, PT_MemberPtr>(S, OpPC);
22839}
22840bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
22841 if (!isActive()) return true;
22842 CurrentSource = L;
22843 return Flip<PT_Sint8, PT_Float>(S, OpPC);
22844}
22845bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
22846 if (!isActive()) return true;
22847 CurrentSource = L;
22848 return Flip<PT_Uint8, PT_Sint8>(S, OpPC);
22849}
22850bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
22851 if (!isActive()) return true;
22852 CurrentSource = L;
22853 return Flip<PT_Uint8, PT_Uint8>(S, OpPC);
22854}
22855bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
22856 if (!isActive()) return true;
22857 CurrentSource = L;
22858 return Flip<PT_Uint8, PT_Sint16>(S, OpPC);
22859}
22860bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
22861 if (!isActive()) return true;
22862 CurrentSource = L;
22863 return Flip<PT_Uint8, PT_Uint16>(S, OpPC);
22864}
22865bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
22866 if (!isActive()) return true;
22867 CurrentSource = L;
22868 return Flip<PT_Uint8, PT_Sint32>(S, OpPC);
22869}
22870bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
22871 if (!isActive()) return true;
22872 CurrentSource = L;
22873 return Flip<PT_Uint8, PT_Uint32>(S, OpPC);
22874}
22875bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
22876 if (!isActive()) return true;
22877 CurrentSource = L;
22878 return Flip<PT_Uint8, PT_Sint64>(S, OpPC);
22879}
22880bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
22881 if (!isActive()) return true;
22882 CurrentSource = L;
22883 return Flip<PT_Uint8, PT_Uint64>(S, OpPC);
22884}
22885bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
22886 if (!isActive()) return true;
22887 CurrentSource = L;
22888 return Flip<PT_Uint8, PT_IntAP>(S, OpPC);
22889}
22890bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
22891 if (!isActive()) return true;
22892 CurrentSource = L;
22893 return Flip<PT_Uint8, PT_IntAPS>(S, OpPC);
22894}
22895bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
22896 if (!isActive()) return true;
22897 CurrentSource = L;
22898 return Flip<PT_Uint8, PT_Bool>(S, OpPC);
22899}
22900bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
22901 if (!isActive()) return true;
22902 CurrentSource = L;
22903 return Flip<PT_Uint8, PT_FixedPoint>(S, OpPC);
22904}
22905bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
22906 if (!isActive()) return true;
22907 CurrentSource = L;
22908 return Flip<PT_Uint8, PT_Ptr>(S, OpPC);
22909}
22910bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
22911 if (!isActive()) return true;
22912 CurrentSource = L;
22913 return Flip<PT_Uint8, PT_MemberPtr>(S, OpPC);
22914}
22915bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
22916 if (!isActive()) return true;
22917 CurrentSource = L;
22918 return Flip<PT_Uint8, PT_Float>(S, OpPC);
22919}
22920bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
22921 if (!isActive()) return true;
22922 CurrentSource = L;
22923 return Flip<PT_Sint16, PT_Sint8>(S, OpPC);
22924}
22925bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
22926 if (!isActive()) return true;
22927 CurrentSource = L;
22928 return Flip<PT_Sint16, PT_Uint8>(S, OpPC);
22929}
22930bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
22931 if (!isActive()) return true;
22932 CurrentSource = L;
22933 return Flip<PT_Sint16, PT_Sint16>(S, OpPC);
22934}
22935bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
22936 if (!isActive()) return true;
22937 CurrentSource = L;
22938 return Flip<PT_Sint16, PT_Uint16>(S, OpPC);
22939}
22940bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
22941 if (!isActive()) return true;
22942 CurrentSource = L;
22943 return Flip<PT_Sint16, PT_Sint32>(S, OpPC);
22944}
22945bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
22946 if (!isActive()) return true;
22947 CurrentSource = L;
22948 return Flip<PT_Sint16, PT_Uint32>(S, OpPC);
22949}
22950bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
22951 if (!isActive()) return true;
22952 CurrentSource = L;
22953 return Flip<PT_Sint16, PT_Sint64>(S, OpPC);
22954}
22955bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
22956 if (!isActive()) return true;
22957 CurrentSource = L;
22958 return Flip<PT_Sint16, PT_Uint64>(S, OpPC);
22959}
22960bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
22961 if (!isActive()) return true;
22962 CurrentSource = L;
22963 return Flip<PT_Sint16, PT_IntAP>(S, OpPC);
22964}
22965bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
22966 if (!isActive()) return true;
22967 CurrentSource = L;
22968 return Flip<PT_Sint16, PT_IntAPS>(S, OpPC);
22969}
22970bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
22971 if (!isActive()) return true;
22972 CurrentSource = L;
22973 return Flip<PT_Sint16, PT_Bool>(S, OpPC);
22974}
22975bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
22976 if (!isActive()) return true;
22977 CurrentSource = L;
22978 return Flip<PT_Sint16, PT_FixedPoint>(S, OpPC);
22979}
22980bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
22981 if (!isActive()) return true;
22982 CurrentSource = L;
22983 return Flip<PT_Sint16, PT_Ptr>(S, OpPC);
22984}
22985bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
22986 if (!isActive()) return true;
22987 CurrentSource = L;
22988 return Flip<PT_Sint16, PT_MemberPtr>(S, OpPC);
22989}
22990bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
22991 if (!isActive()) return true;
22992 CurrentSource = L;
22993 return Flip<PT_Sint16, PT_Float>(S, OpPC);
22994}
22995bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
22996 if (!isActive()) return true;
22997 CurrentSource = L;
22998 return Flip<PT_Uint16, PT_Sint8>(S, OpPC);
22999}
23000bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
23001 if (!isActive()) return true;
23002 CurrentSource = L;
23003 return Flip<PT_Uint16, PT_Uint8>(S, OpPC);
23004}
23005bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
23006 if (!isActive()) return true;
23007 CurrentSource = L;
23008 return Flip<PT_Uint16, PT_Sint16>(S, OpPC);
23009}
23010bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
23011 if (!isActive()) return true;
23012 CurrentSource = L;
23013 return Flip<PT_Uint16, PT_Uint16>(S, OpPC);
23014}
23015bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
23016 if (!isActive()) return true;
23017 CurrentSource = L;
23018 return Flip<PT_Uint16, PT_Sint32>(S, OpPC);
23019}
23020bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
23021 if (!isActive()) return true;
23022 CurrentSource = L;
23023 return Flip<PT_Uint16, PT_Uint32>(S, OpPC);
23024}
23025bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
23026 if (!isActive()) return true;
23027 CurrentSource = L;
23028 return Flip<PT_Uint16, PT_Sint64>(S, OpPC);
23029}
23030bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
23031 if (!isActive()) return true;
23032 CurrentSource = L;
23033 return Flip<PT_Uint16, PT_Uint64>(S, OpPC);
23034}
23035bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
23036 if (!isActive()) return true;
23037 CurrentSource = L;
23038 return Flip<PT_Uint16, PT_IntAP>(S, OpPC);
23039}
23040bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
23041 if (!isActive()) return true;
23042 CurrentSource = L;
23043 return Flip<PT_Uint16, PT_IntAPS>(S, OpPC);
23044}
23045bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
23046 if (!isActive()) return true;
23047 CurrentSource = L;
23048 return Flip<PT_Uint16, PT_Bool>(S, OpPC);
23049}
23050bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
23051 if (!isActive()) return true;
23052 CurrentSource = L;
23053 return Flip<PT_Uint16, PT_FixedPoint>(S, OpPC);
23054}
23055bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
23056 if (!isActive()) return true;
23057 CurrentSource = L;
23058 return Flip<PT_Uint16, PT_Ptr>(S, OpPC);
23059}
23060bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
23061 if (!isActive()) return true;
23062 CurrentSource = L;
23063 return Flip<PT_Uint16, PT_MemberPtr>(S, OpPC);
23064}
23065bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
23066 if (!isActive()) return true;
23067 CurrentSource = L;
23068 return Flip<PT_Uint16, PT_Float>(S, OpPC);
23069}
23070bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
23071 if (!isActive()) return true;
23072 CurrentSource = L;
23073 return Flip<PT_Sint32, PT_Sint8>(S, OpPC);
23074}
23075bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
23076 if (!isActive()) return true;
23077 CurrentSource = L;
23078 return Flip<PT_Sint32, PT_Uint8>(S, OpPC);
23079}
23080bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
23081 if (!isActive()) return true;
23082 CurrentSource = L;
23083 return Flip<PT_Sint32, PT_Sint16>(S, OpPC);
23084}
23085bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
23086 if (!isActive()) return true;
23087 CurrentSource = L;
23088 return Flip<PT_Sint32, PT_Uint16>(S, OpPC);
23089}
23090bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
23091 if (!isActive()) return true;
23092 CurrentSource = L;
23093 return Flip<PT_Sint32, PT_Sint32>(S, OpPC);
23094}
23095bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
23096 if (!isActive()) return true;
23097 CurrentSource = L;
23098 return Flip<PT_Sint32, PT_Uint32>(S, OpPC);
23099}
23100bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
23101 if (!isActive()) return true;
23102 CurrentSource = L;
23103 return Flip<PT_Sint32, PT_Sint64>(S, OpPC);
23104}
23105bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
23106 if (!isActive()) return true;
23107 CurrentSource = L;
23108 return Flip<PT_Sint32, PT_Uint64>(S, OpPC);
23109}
23110bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
23111 if (!isActive()) return true;
23112 CurrentSource = L;
23113 return Flip<PT_Sint32, PT_IntAP>(S, OpPC);
23114}
23115bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
23116 if (!isActive()) return true;
23117 CurrentSource = L;
23118 return Flip<PT_Sint32, PT_IntAPS>(S, OpPC);
23119}
23120bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
23121 if (!isActive()) return true;
23122 CurrentSource = L;
23123 return Flip<PT_Sint32, PT_Bool>(S, OpPC);
23124}
23125bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
23126 if (!isActive()) return true;
23127 CurrentSource = L;
23128 return Flip<PT_Sint32, PT_FixedPoint>(S, OpPC);
23129}
23130bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
23131 if (!isActive()) return true;
23132 CurrentSource = L;
23133 return Flip<PT_Sint32, PT_Ptr>(S, OpPC);
23134}
23135bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
23136 if (!isActive()) return true;
23137 CurrentSource = L;
23138 return Flip<PT_Sint32, PT_MemberPtr>(S, OpPC);
23139}
23140bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
23141 if (!isActive()) return true;
23142 CurrentSource = L;
23143 return Flip<PT_Sint32, PT_Float>(S, OpPC);
23144}
23145bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
23146 if (!isActive()) return true;
23147 CurrentSource = L;
23148 return Flip<PT_Uint32, PT_Sint8>(S, OpPC);
23149}
23150bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
23151 if (!isActive()) return true;
23152 CurrentSource = L;
23153 return Flip<PT_Uint32, PT_Uint8>(S, OpPC);
23154}
23155bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
23156 if (!isActive()) return true;
23157 CurrentSource = L;
23158 return Flip<PT_Uint32, PT_Sint16>(S, OpPC);
23159}
23160bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
23161 if (!isActive()) return true;
23162 CurrentSource = L;
23163 return Flip<PT_Uint32, PT_Uint16>(S, OpPC);
23164}
23165bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
23166 if (!isActive()) return true;
23167 CurrentSource = L;
23168 return Flip<PT_Uint32, PT_Sint32>(S, OpPC);
23169}
23170bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
23171 if (!isActive()) return true;
23172 CurrentSource = L;
23173 return Flip<PT_Uint32, PT_Uint32>(S, OpPC);
23174}
23175bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
23176 if (!isActive()) return true;
23177 CurrentSource = L;
23178 return Flip<PT_Uint32, PT_Sint64>(S, OpPC);
23179}
23180bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
23181 if (!isActive()) return true;
23182 CurrentSource = L;
23183 return Flip<PT_Uint32, PT_Uint64>(S, OpPC);
23184}
23185bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
23186 if (!isActive()) return true;
23187 CurrentSource = L;
23188 return Flip<PT_Uint32, PT_IntAP>(S, OpPC);
23189}
23190bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
23191 if (!isActive()) return true;
23192 CurrentSource = L;
23193 return Flip<PT_Uint32, PT_IntAPS>(S, OpPC);
23194}
23195bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
23196 if (!isActive()) return true;
23197 CurrentSource = L;
23198 return Flip<PT_Uint32, PT_Bool>(S, OpPC);
23199}
23200bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
23201 if (!isActive()) return true;
23202 CurrentSource = L;
23203 return Flip<PT_Uint32, PT_FixedPoint>(S, OpPC);
23204}
23205bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
23206 if (!isActive()) return true;
23207 CurrentSource = L;
23208 return Flip<PT_Uint32, PT_Ptr>(S, OpPC);
23209}
23210bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
23211 if (!isActive()) return true;
23212 CurrentSource = L;
23213 return Flip<PT_Uint32, PT_MemberPtr>(S, OpPC);
23214}
23215bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
23216 if (!isActive()) return true;
23217 CurrentSource = L;
23218 return Flip<PT_Uint32, PT_Float>(S, OpPC);
23219}
23220bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
23221 if (!isActive()) return true;
23222 CurrentSource = L;
23223 return Flip<PT_Sint64, PT_Sint8>(S, OpPC);
23224}
23225bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
23226 if (!isActive()) return true;
23227 CurrentSource = L;
23228 return Flip<PT_Sint64, PT_Uint8>(S, OpPC);
23229}
23230bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
23231 if (!isActive()) return true;
23232 CurrentSource = L;
23233 return Flip<PT_Sint64, PT_Sint16>(S, OpPC);
23234}
23235bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
23236 if (!isActive()) return true;
23237 CurrentSource = L;
23238 return Flip<PT_Sint64, PT_Uint16>(S, OpPC);
23239}
23240bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
23241 if (!isActive()) return true;
23242 CurrentSource = L;
23243 return Flip<PT_Sint64, PT_Sint32>(S, OpPC);
23244}
23245bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
23246 if (!isActive()) return true;
23247 CurrentSource = L;
23248 return Flip<PT_Sint64, PT_Uint32>(S, OpPC);
23249}
23250bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
23251 if (!isActive()) return true;
23252 CurrentSource = L;
23253 return Flip<PT_Sint64, PT_Sint64>(S, OpPC);
23254}
23255bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
23256 if (!isActive()) return true;
23257 CurrentSource = L;
23258 return Flip<PT_Sint64, PT_Uint64>(S, OpPC);
23259}
23260bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
23261 if (!isActive()) return true;
23262 CurrentSource = L;
23263 return Flip<PT_Sint64, PT_IntAP>(S, OpPC);
23264}
23265bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
23266 if (!isActive()) return true;
23267 CurrentSource = L;
23268 return Flip<PT_Sint64, PT_IntAPS>(S, OpPC);
23269}
23270bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
23271 if (!isActive()) return true;
23272 CurrentSource = L;
23273 return Flip<PT_Sint64, PT_Bool>(S, OpPC);
23274}
23275bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
23276 if (!isActive()) return true;
23277 CurrentSource = L;
23278 return Flip<PT_Sint64, PT_FixedPoint>(S, OpPC);
23279}
23280bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
23281 if (!isActive()) return true;
23282 CurrentSource = L;
23283 return Flip<PT_Sint64, PT_Ptr>(S, OpPC);
23284}
23285bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
23286 if (!isActive()) return true;
23287 CurrentSource = L;
23288 return Flip<PT_Sint64, PT_MemberPtr>(S, OpPC);
23289}
23290bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
23291 if (!isActive()) return true;
23292 CurrentSource = L;
23293 return Flip<PT_Sint64, PT_Float>(S, OpPC);
23294}
23295bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
23296 if (!isActive()) return true;
23297 CurrentSource = L;
23298 return Flip<PT_Uint64, PT_Sint8>(S, OpPC);
23299}
23300bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
23301 if (!isActive()) return true;
23302 CurrentSource = L;
23303 return Flip<PT_Uint64, PT_Uint8>(S, OpPC);
23304}
23305bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
23306 if (!isActive()) return true;
23307 CurrentSource = L;
23308 return Flip<PT_Uint64, PT_Sint16>(S, OpPC);
23309}
23310bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
23311 if (!isActive()) return true;
23312 CurrentSource = L;
23313 return Flip<PT_Uint64, PT_Uint16>(S, OpPC);
23314}
23315bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
23316 if (!isActive()) return true;
23317 CurrentSource = L;
23318 return Flip<PT_Uint64, PT_Sint32>(S, OpPC);
23319}
23320bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
23321 if (!isActive()) return true;
23322 CurrentSource = L;
23323 return Flip<PT_Uint64, PT_Uint32>(S, OpPC);
23324}
23325bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
23326 if (!isActive()) return true;
23327 CurrentSource = L;
23328 return Flip<PT_Uint64, PT_Sint64>(S, OpPC);
23329}
23330bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
23331 if (!isActive()) return true;
23332 CurrentSource = L;
23333 return Flip<PT_Uint64, PT_Uint64>(S, OpPC);
23334}
23335bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
23336 if (!isActive()) return true;
23337 CurrentSource = L;
23338 return Flip<PT_Uint64, PT_IntAP>(S, OpPC);
23339}
23340bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
23341 if (!isActive()) return true;
23342 CurrentSource = L;
23343 return Flip<PT_Uint64, PT_IntAPS>(S, OpPC);
23344}
23345bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
23346 if (!isActive()) return true;
23347 CurrentSource = L;
23348 return Flip<PT_Uint64, PT_Bool>(S, OpPC);
23349}
23350bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
23351 if (!isActive()) return true;
23352 CurrentSource = L;
23353 return Flip<PT_Uint64, PT_FixedPoint>(S, OpPC);
23354}
23355bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
23356 if (!isActive()) return true;
23357 CurrentSource = L;
23358 return Flip<PT_Uint64, PT_Ptr>(S, OpPC);
23359}
23360bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
23361 if (!isActive()) return true;
23362 CurrentSource = L;
23363 return Flip<PT_Uint64, PT_MemberPtr>(S, OpPC);
23364}
23365bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
23366 if (!isActive()) return true;
23367 CurrentSource = L;
23368 return Flip<PT_Uint64, PT_Float>(S, OpPC);
23369}
23370bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
23371 if (!isActive()) return true;
23372 CurrentSource = L;
23373 return Flip<PT_IntAP, PT_Sint8>(S, OpPC);
23374}
23375bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
23376 if (!isActive()) return true;
23377 CurrentSource = L;
23378 return Flip<PT_IntAP, PT_Uint8>(S, OpPC);
23379}
23380bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
23381 if (!isActive()) return true;
23382 CurrentSource = L;
23383 return Flip<PT_IntAP, PT_Sint16>(S, OpPC);
23384}
23385bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
23386 if (!isActive()) return true;
23387 CurrentSource = L;
23388 return Flip<PT_IntAP, PT_Uint16>(S, OpPC);
23389}
23390bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
23391 if (!isActive()) return true;
23392 CurrentSource = L;
23393 return Flip<PT_IntAP, PT_Sint32>(S, OpPC);
23394}
23395bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
23396 if (!isActive()) return true;
23397 CurrentSource = L;
23398 return Flip<PT_IntAP, PT_Uint32>(S, OpPC);
23399}
23400bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
23401 if (!isActive()) return true;
23402 CurrentSource = L;
23403 return Flip<PT_IntAP, PT_Sint64>(S, OpPC);
23404}
23405bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
23406 if (!isActive()) return true;
23407 CurrentSource = L;
23408 return Flip<PT_IntAP, PT_Uint64>(S, OpPC);
23409}
23410bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
23411 if (!isActive()) return true;
23412 CurrentSource = L;
23413 return Flip<PT_IntAP, PT_IntAP>(S, OpPC);
23414}
23415bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
23416 if (!isActive()) return true;
23417 CurrentSource = L;
23418 return Flip<PT_IntAP, PT_IntAPS>(S, OpPC);
23419}
23420bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
23421 if (!isActive()) return true;
23422 CurrentSource = L;
23423 return Flip<PT_IntAP, PT_Bool>(S, OpPC);
23424}
23425bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
23426 if (!isActive()) return true;
23427 CurrentSource = L;
23428 return Flip<PT_IntAP, PT_FixedPoint>(S, OpPC);
23429}
23430bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
23431 if (!isActive()) return true;
23432 CurrentSource = L;
23433 return Flip<PT_IntAP, PT_Ptr>(S, OpPC);
23434}
23435bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
23436 if (!isActive()) return true;
23437 CurrentSource = L;
23438 return Flip<PT_IntAP, PT_MemberPtr>(S, OpPC);
23439}
23440bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
23441 if (!isActive()) return true;
23442 CurrentSource = L;
23443 return Flip<PT_IntAP, PT_Float>(S, OpPC);
23444}
23445bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
23446 if (!isActive()) return true;
23447 CurrentSource = L;
23448 return Flip<PT_IntAPS, PT_Sint8>(S, OpPC);
23449}
23450bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
23451 if (!isActive()) return true;
23452 CurrentSource = L;
23453 return Flip<PT_IntAPS, PT_Uint8>(S, OpPC);
23454}
23455bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
23456 if (!isActive()) return true;
23457 CurrentSource = L;
23458 return Flip<PT_IntAPS, PT_Sint16>(S, OpPC);
23459}
23460bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
23461 if (!isActive()) return true;
23462 CurrentSource = L;
23463 return Flip<PT_IntAPS, PT_Uint16>(S, OpPC);
23464}
23465bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
23466 if (!isActive()) return true;
23467 CurrentSource = L;
23468 return Flip<PT_IntAPS, PT_Sint32>(S, OpPC);
23469}
23470bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
23471 if (!isActive()) return true;
23472 CurrentSource = L;
23473 return Flip<PT_IntAPS, PT_Uint32>(S, OpPC);
23474}
23475bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
23476 if (!isActive()) return true;
23477 CurrentSource = L;
23478 return Flip<PT_IntAPS, PT_Sint64>(S, OpPC);
23479}
23480bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
23481 if (!isActive()) return true;
23482 CurrentSource = L;
23483 return Flip<PT_IntAPS, PT_Uint64>(S, OpPC);
23484}
23485bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
23486 if (!isActive()) return true;
23487 CurrentSource = L;
23488 return Flip<PT_IntAPS, PT_IntAP>(S, OpPC);
23489}
23490bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
23491 if (!isActive()) return true;
23492 CurrentSource = L;
23493 return Flip<PT_IntAPS, PT_IntAPS>(S, OpPC);
23494}
23495bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
23496 if (!isActive()) return true;
23497 CurrentSource = L;
23498 return Flip<PT_IntAPS, PT_Bool>(S, OpPC);
23499}
23500bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
23501 if (!isActive()) return true;
23502 CurrentSource = L;
23503 return Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC);
23504}
23505bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
23506 if (!isActive()) return true;
23507 CurrentSource = L;
23508 return Flip<PT_IntAPS, PT_Ptr>(S, OpPC);
23509}
23510bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
23511 if (!isActive()) return true;
23512 CurrentSource = L;
23513 return Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC);
23514}
23515bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
23516 if (!isActive()) return true;
23517 CurrentSource = L;
23518 return Flip<PT_IntAPS, PT_Float>(S, OpPC);
23519}
23520bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
23521 if (!isActive()) return true;
23522 CurrentSource = L;
23523 return Flip<PT_Bool, PT_Sint8>(S, OpPC);
23524}
23525bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
23526 if (!isActive()) return true;
23527 CurrentSource = L;
23528 return Flip<PT_Bool, PT_Uint8>(S, OpPC);
23529}
23530bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
23531 if (!isActive()) return true;
23532 CurrentSource = L;
23533 return Flip<PT_Bool, PT_Sint16>(S, OpPC);
23534}
23535bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
23536 if (!isActive()) return true;
23537 CurrentSource = L;
23538 return Flip<PT_Bool, PT_Uint16>(S, OpPC);
23539}
23540bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
23541 if (!isActive()) return true;
23542 CurrentSource = L;
23543 return Flip<PT_Bool, PT_Sint32>(S, OpPC);
23544}
23545bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
23546 if (!isActive()) return true;
23547 CurrentSource = L;
23548 return Flip<PT_Bool, PT_Uint32>(S, OpPC);
23549}
23550bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
23551 if (!isActive()) return true;
23552 CurrentSource = L;
23553 return Flip<PT_Bool, PT_Sint64>(S, OpPC);
23554}
23555bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
23556 if (!isActive()) return true;
23557 CurrentSource = L;
23558 return Flip<PT_Bool, PT_Uint64>(S, OpPC);
23559}
23560bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
23561 if (!isActive()) return true;
23562 CurrentSource = L;
23563 return Flip<PT_Bool, PT_IntAP>(S, OpPC);
23564}
23565bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
23566 if (!isActive()) return true;
23567 CurrentSource = L;
23568 return Flip<PT_Bool, PT_IntAPS>(S, OpPC);
23569}
23570bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
23571 if (!isActive()) return true;
23572 CurrentSource = L;
23573 return Flip<PT_Bool, PT_Bool>(S, OpPC);
23574}
23575bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
23576 if (!isActive()) return true;
23577 CurrentSource = L;
23578 return Flip<PT_Bool, PT_FixedPoint>(S, OpPC);
23579}
23580bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
23581 if (!isActive()) return true;
23582 CurrentSource = L;
23583 return Flip<PT_Bool, PT_Ptr>(S, OpPC);
23584}
23585bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
23586 if (!isActive()) return true;
23587 CurrentSource = L;
23588 return Flip<PT_Bool, PT_MemberPtr>(S, OpPC);
23589}
23590bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
23591 if (!isActive()) return true;
23592 CurrentSource = L;
23593 return Flip<PT_Bool, PT_Float>(S, OpPC);
23594}
23595bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
23596 if (!isActive()) return true;
23597 CurrentSource = L;
23598 return Flip<PT_FixedPoint, PT_Sint8>(S, OpPC);
23599}
23600bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
23601 if (!isActive()) return true;
23602 CurrentSource = L;
23603 return Flip<PT_FixedPoint, PT_Uint8>(S, OpPC);
23604}
23605bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
23606 if (!isActive()) return true;
23607 CurrentSource = L;
23608 return Flip<PT_FixedPoint, PT_Sint16>(S, OpPC);
23609}
23610bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
23611 if (!isActive()) return true;
23612 CurrentSource = L;
23613 return Flip<PT_FixedPoint, PT_Uint16>(S, OpPC);
23614}
23615bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
23616 if (!isActive()) return true;
23617 CurrentSource = L;
23618 return Flip<PT_FixedPoint, PT_Sint32>(S, OpPC);
23619}
23620bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
23621 if (!isActive()) return true;
23622 CurrentSource = L;
23623 return Flip<PT_FixedPoint, PT_Uint32>(S, OpPC);
23624}
23625bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
23626 if (!isActive()) return true;
23627 CurrentSource = L;
23628 return Flip<PT_FixedPoint, PT_Sint64>(S, OpPC);
23629}
23630bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
23631 if (!isActive()) return true;
23632 CurrentSource = L;
23633 return Flip<PT_FixedPoint, PT_Uint64>(S, OpPC);
23634}
23635bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
23636 if (!isActive()) return true;
23637 CurrentSource = L;
23638 return Flip<PT_FixedPoint, PT_IntAP>(S, OpPC);
23639}
23640bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
23641 if (!isActive()) return true;
23642 CurrentSource = L;
23643 return Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC);
23644}
23645bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
23646 if (!isActive()) return true;
23647 CurrentSource = L;
23648 return Flip<PT_FixedPoint, PT_Bool>(S, OpPC);
23649}
23650bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
23651 if (!isActive()) return true;
23652 CurrentSource = L;
23653 return Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC);
23654}
23655bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
23656 if (!isActive()) return true;
23657 CurrentSource = L;
23658 return Flip<PT_FixedPoint, PT_Ptr>(S, OpPC);
23659}
23660bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
23661 if (!isActive()) return true;
23662 CurrentSource = L;
23663 return Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC);
23664}
23665bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
23666 if (!isActive()) return true;
23667 CurrentSource = L;
23668 return Flip<PT_FixedPoint, PT_Float>(S, OpPC);
23669}
23670bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
23671 if (!isActive()) return true;
23672 CurrentSource = L;
23673 return Flip<PT_Ptr, PT_Sint8>(S, OpPC);
23674}
23675bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
23676 if (!isActive()) return true;
23677 CurrentSource = L;
23678 return Flip<PT_Ptr, PT_Uint8>(S, OpPC);
23679}
23680bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
23681 if (!isActive()) return true;
23682 CurrentSource = L;
23683 return Flip<PT_Ptr, PT_Sint16>(S, OpPC);
23684}
23685bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
23686 if (!isActive()) return true;
23687 CurrentSource = L;
23688 return Flip<PT_Ptr, PT_Uint16>(S, OpPC);
23689}
23690bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
23691 if (!isActive()) return true;
23692 CurrentSource = L;
23693 return Flip<PT_Ptr, PT_Sint32>(S, OpPC);
23694}
23695bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
23696 if (!isActive()) return true;
23697 CurrentSource = L;
23698 return Flip<PT_Ptr, PT_Uint32>(S, OpPC);
23699}
23700bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
23701 if (!isActive()) return true;
23702 CurrentSource = L;
23703 return Flip<PT_Ptr, PT_Sint64>(S, OpPC);
23704}
23705bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
23706 if (!isActive()) return true;
23707 CurrentSource = L;
23708 return Flip<PT_Ptr, PT_Uint64>(S, OpPC);
23709}
23710bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
23711 if (!isActive()) return true;
23712 CurrentSource = L;
23713 return Flip<PT_Ptr, PT_IntAP>(S, OpPC);
23714}
23715bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
23716 if (!isActive()) return true;
23717 CurrentSource = L;
23718 return Flip<PT_Ptr, PT_IntAPS>(S, OpPC);
23719}
23720bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
23721 if (!isActive()) return true;
23722 CurrentSource = L;
23723 return Flip<PT_Ptr, PT_Bool>(S, OpPC);
23724}
23725bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
23726 if (!isActive()) return true;
23727 CurrentSource = L;
23728 return Flip<PT_Ptr, PT_FixedPoint>(S, OpPC);
23729}
23730bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
23731 if (!isActive()) return true;
23732 CurrentSource = L;
23733 return Flip<PT_Ptr, PT_Ptr>(S, OpPC);
23734}
23735bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
23736 if (!isActive()) return true;
23737 CurrentSource = L;
23738 return Flip<PT_Ptr, PT_MemberPtr>(S, OpPC);
23739}
23740bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
23741 if (!isActive()) return true;
23742 CurrentSource = L;
23743 return Flip<PT_Ptr, PT_Float>(S, OpPC);
23744}
23745bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
23746 if (!isActive()) return true;
23747 CurrentSource = L;
23748 return Flip<PT_MemberPtr, PT_Sint8>(S, OpPC);
23749}
23750bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
23751 if (!isActive()) return true;
23752 CurrentSource = L;
23753 return Flip<PT_MemberPtr, PT_Uint8>(S, OpPC);
23754}
23755bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
23756 if (!isActive()) return true;
23757 CurrentSource = L;
23758 return Flip<PT_MemberPtr, PT_Sint16>(S, OpPC);
23759}
23760bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
23761 if (!isActive()) return true;
23762 CurrentSource = L;
23763 return Flip<PT_MemberPtr, PT_Uint16>(S, OpPC);
23764}
23765bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
23766 if (!isActive()) return true;
23767 CurrentSource = L;
23768 return Flip<PT_MemberPtr, PT_Sint32>(S, OpPC);
23769}
23770bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
23771 if (!isActive()) return true;
23772 CurrentSource = L;
23773 return Flip<PT_MemberPtr, PT_Uint32>(S, OpPC);
23774}
23775bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
23776 if (!isActive()) return true;
23777 CurrentSource = L;
23778 return Flip<PT_MemberPtr, PT_Sint64>(S, OpPC);
23779}
23780bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
23781 if (!isActive()) return true;
23782 CurrentSource = L;
23783 return Flip<PT_MemberPtr, PT_Uint64>(S, OpPC);
23784}
23785bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
23786 if (!isActive()) return true;
23787 CurrentSource = L;
23788 return Flip<PT_MemberPtr, PT_IntAP>(S, OpPC);
23789}
23790bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
23791 if (!isActive()) return true;
23792 CurrentSource = L;
23793 return Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC);
23794}
23795bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
23796 if (!isActive()) return true;
23797 CurrentSource = L;
23798 return Flip<PT_MemberPtr, PT_Bool>(S, OpPC);
23799}
23800bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
23801 if (!isActive()) return true;
23802 CurrentSource = L;
23803 return Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC);
23804}
23805bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
23806 if (!isActive()) return true;
23807 CurrentSource = L;
23808 return Flip<PT_MemberPtr, PT_Ptr>(S, OpPC);
23809}
23810bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
23811 if (!isActive()) return true;
23812 CurrentSource = L;
23813 return Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
23814}
23815bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
23816 if (!isActive()) return true;
23817 CurrentSource = L;
23818 return Flip<PT_MemberPtr, PT_Float>(S, OpPC);
23819}
23820bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
23821 if (!isActive()) return true;
23822 CurrentSource = L;
23823 return Flip<PT_Float, PT_Sint8>(S, OpPC);
23824}
23825bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
23826 if (!isActive()) return true;
23827 CurrentSource = L;
23828 return Flip<PT_Float, PT_Uint8>(S, OpPC);
23829}
23830bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
23831 if (!isActive()) return true;
23832 CurrentSource = L;
23833 return Flip<PT_Float, PT_Sint16>(S, OpPC);
23834}
23835bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
23836 if (!isActive()) return true;
23837 CurrentSource = L;
23838 return Flip<PT_Float, PT_Uint16>(S, OpPC);
23839}
23840bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
23841 if (!isActive()) return true;
23842 CurrentSource = L;
23843 return Flip<PT_Float, PT_Sint32>(S, OpPC);
23844}
23845bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
23846 if (!isActive()) return true;
23847 CurrentSource = L;
23848 return Flip<PT_Float, PT_Uint32>(S, OpPC);
23849}
23850bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
23851 if (!isActive()) return true;
23852 CurrentSource = L;
23853 return Flip<PT_Float, PT_Sint64>(S, OpPC);
23854}
23855bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
23856 if (!isActive()) return true;
23857 CurrentSource = L;
23858 return Flip<PT_Float, PT_Uint64>(S, OpPC);
23859}
23860bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
23861 if (!isActive()) return true;
23862 CurrentSource = L;
23863 return Flip<PT_Float, PT_IntAP>(S, OpPC);
23864}
23865bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
23866 if (!isActive()) return true;
23867 CurrentSource = L;
23868 return Flip<PT_Float, PT_IntAPS>(S, OpPC);
23869}
23870bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
23871 if (!isActive()) return true;
23872 CurrentSource = L;
23873 return Flip<PT_Float, PT_Bool>(S, OpPC);
23874}
23875bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
23876 if (!isActive()) return true;
23877 CurrentSource = L;
23878 return Flip<PT_Float, PT_FixedPoint>(S, OpPC);
23879}
23880bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
23881 if (!isActive()) return true;
23882 CurrentSource = L;
23883 return Flip<PT_Float, PT_Ptr>(S, OpPC);
23884}
23885bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
23886 if (!isActive()) return true;
23887 CurrentSource = L;
23888 return Flip<PT_Float, PT_MemberPtr>(S, OpPC);
23889}
23890bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
23891 if (!isActive()) return true;
23892 CurrentSource = L;
23893 return Flip<PT_Float, PT_Float>(S, OpPC);
23894}
23895#endif
23896#ifdef GET_OPCODE_NAMES
23897OP_FnPtrCast,
23898#endif
23899#ifdef GET_INTERPFN_LIST
23900&Interp_FnPtrCast,
23901#endif
23902#ifdef GET_INTERPFN_DISPATCHERS
23903PRESERVE_NONE
23904static bool Interp_FnPtrCast(InterpState &S, CodePtr &PC) {
23905 if (!FnPtrCast(S, PC))
23906 return false;
23907#if USE_TAILCALLS
23908 MUSTTAIL return InterpNext(S, PC);
23909#else
23910 return true;
23911#endif
23912}
23913#endif
23914#ifdef GET_DISASM
23915case OP_FnPtrCast:
23916 Text.Op = PrintName("FnPtrCast");
23917 break;
23918#endif
23919#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23920bool emitFnPtrCast(SourceInfo);
23921#endif
23922#ifdef GET_LINK_IMPL
23923bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
23924 return emitOp<>(OP_FnPtrCast, L);
23925}
23926#endif
23927#ifdef GET_EVAL_IMPL
23928bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
23929 if (!isActive()) return true;
23930 CurrentSource = L;
23931 return FnPtrCast(S, OpPC);
23932}
23933#endif
23934#ifdef GET_OPCODE_NAMES
23935OP_Free,
23936#endif
23937#ifdef GET_INTERPFN_LIST
23938&Interp_Free,
23939#endif
23940#ifdef GET_INTERPFN_DISPATCHERS
23941PRESERVE_NONE
23942static bool Interp_Free(InterpState &S, CodePtr &PC) {
23943 {
23944 CodePtr OpPC = PC;
23945 const auto V0 = ReadArg<bool>(S, PC);
23946 const auto V1 = ReadArg<bool>(S, PC);
23947 if (!Free(S, OpPC, V0, V1))
23948 return false;
23949 }
23950#if USE_TAILCALLS
23951 MUSTTAIL return InterpNext(S, PC);
23952#else
23953 return true;
23954#endif
23955}
23956#endif
23957#ifdef GET_DISASM
23958case OP_Free:
23959 Text.Op = PrintName("Free");
23960 Text.Args.push_back(printArg<bool>(P, PC));
23961 Text.Args.push_back(printArg<bool>(P, PC));
23962 break;
23963#endif
23964#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23965bool emitFree( bool , bool , SourceInfo);
23966#endif
23967#ifdef GET_LINK_IMPL
23968bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23969 return emitOp<bool, bool>(OP_Free, A0, A1, L);
23970}
23971#endif
23972#ifdef GET_EVAL_IMPL
23973bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23974 if (!isActive()) return true;
23975 CurrentSource = L;
23976 return Free(S, OpPC, A0, A1);
23977}
23978#endif
23979#ifdef GET_OPCODE_NAMES
23980OP_GESint8,
23981OP_GEUint8,
23982OP_GESint16,
23983OP_GEUint16,
23984OP_GESint32,
23985OP_GEUint32,
23986OP_GESint64,
23987OP_GEUint64,
23988OP_GEIntAP,
23989OP_GEIntAPS,
23990OP_GEBool,
23991OP_GEFixedPoint,
23992OP_GEPtr,
23993OP_GEFloat,
23994#endif
23995#ifdef GET_INTERPFN_LIST
23996&Interp_GESint8,
23997&Interp_GEUint8,
23998&Interp_GESint16,
23999&Interp_GEUint16,
24000&Interp_GESint32,
24001&Interp_GEUint32,
24002&Interp_GESint64,
24003&Interp_GEUint64,
24004&Interp_GEIntAP,
24005&Interp_GEIntAPS,
24006&Interp_GEBool,
24007&Interp_GEFixedPoint,
24008&Interp_GEPtr,
24009&Interp_GEFloat,
24010#endif
24011#ifdef GET_INTERPFN_DISPATCHERS
24012PRESERVE_NONE
24013static bool Interp_GESint8(InterpState &S, CodePtr &PC) {
24014 if (!GE<PT_Sint8>(S, PC))
24015 return false;
24016#if USE_TAILCALLS
24017 MUSTTAIL return InterpNext(S, PC);
24018#else
24019 return true;
24020#endif
24021}
24022PRESERVE_NONE
24023static bool Interp_GEUint8(InterpState &S, CodePtr &PC) {
24024 if (!GE<PT_Uint8>(S, PC))
24025 return false;
24026#if USE_TAILCALLS
24027 MUSTTAIL return InterpNext(S, PC);
24028#else
24029 return true;
24030#endif
24031}
24032PRESERVE_NONE
24033static bool Interp_GESint16(InterpState &S, CodePtr &PC) {
24034 if (!GE<PT_Sint16>(S, PC))
24035 return false;
24036#if USE_TAILCALLS
24037 MUSTTAIL return InterpNext(S, PC);
24038#else
24039 return true;
24040#endif
24041}
24042PRESERVE_NONE
24043static bool Interp_GEUint16(InterpState &S, CodePtr &PC) {
24044 if (!GE<PT_Uint16>(S, PC))
24045 return false;
24046#if USE_TAILCALLS
24047 MUSTTAIL return InterpNext(S, PC);
24048#else
24049 return true;
24050#endif
24051}
24052PRESERVE_NONE
24053static bool Interp_GESint32(InterpState &S, CodePtr &PC) {
24054 if (!GE<PT_Sint32>(S, PC))
24055 return false;
24056#if USE_TAILCALLS
24057 MUSTTAIL return InterpNext(S, PC);
24058#else
24059 return true;
24060#endif
24061}
24062PRESERVE_NONE
24063static bool Interp_GEUint32(InterpState &S, CodePtr &PC) {
24064 if (!GE<PT_Uint32>(S, PC))
24065 return false;
24066#if USE_TAILCALLS
24067 MUSTTAIL return InterpNext(S, PC);
24068#else
24069 return true;
24070#endif
24071}
24072PRESERVE_NONE
24073static bool Interp_GESint64(InterpState &S, CodePtr &PC) {
24074 if (!GE<PT_Sint64>(S, PC))
24075 return false;
24076#if USE_TAILCALLS
24077 MUSTTAIL return InterpNext(S, PC);
24078#else
24079 return true;
24080#endif
24081}
24082PRESERVE_NONE
24083static bool Interp_GEUint64(InterpState &S, CodePtr &PC) {
24084 if (!GE<PT_Uint64>(S, PC))
24085 return false;
24086#if USE_TAILCALLS
24087 MUSTTAIL return InterpNext(S, PC);
24088#else
24089 return true;
24090#endif
24091}
24092PRESERVE_NONE
24093static bool Interp_GEIntAP(InterpState &S, CodePtr &PC) {
24094 if (!GE<PT_IntAP>(S, PC))
24095 return false;
24096#if USE_TAILCALLS
24097 MUSTTAIL return InterpNext(S, PC);
24098#else
24099 return true;
24100#endif
24101}
24102PRESERVE_NONE
24103static bool Interp_GEIntAPS(InterpState &S, CodePtr &PC) {
24104 if (!GE<PT_IntAPS>(S, PC))
24105 return false;
24106#if USE_TAILCALLS
24107 MUSTTAIL return InterpNext(S, PC);
24108#else
24109 return true;
24110#endif
24111}
24112PRESERVE_NONE
24113static bool Interp_GEBool(InterpState &S, CodePtr &PC) {
24114 if (!GE<PT_Bool>(S, PC))
24115 return false;
24116#if USE_TAILCALLS
24117 MUSTTAIL return InterpNext(S, PC);
24118#else
24119 return true;
24120#endif
24121}
24122PRESERVE_NONE
24123static bool Interp_GEFixedPoint(InterpState &S, CodePtr &PC) {
24124 if (!GE<PT_FixedPoint>(S, PC))
24125 return false;
24126#if USE_TAILCALLS
24127 MUSTTAIL return InterpNext(S, PC);
24128#else
24129 return true;
24130#endif
24131}
24132PRESERVE_NONE
24133static bool Interp_GEPtr(InterpState &S, CodePtr &PC) {
24134 if (!GE<PT_Ptr>(S, PC))
24135 return false;
24136#if USE_TAILCALLS
24137 MUSTTAIL return InterpNext(S, PC);
24138#else
24139 return true;
24140#endif
24141}
24142PRESERVE_NONE
24143static bool Interp_GEFloat(InterpState &S, CodePtr &PC) {
24144 if (!GE<PT_Float>(S, PC))
24145 return false;
24146#if USE_TAILCALLS
24147 MUSTTAIL return InterpNext(S, PC);
24148#else
24149 return true;
24150#endif
24151}
24152#endif
24153#ifdef GET_DISASM
24154case OP_GESint8:
24155 Text.Op = PrintName("GESint8");
24156 break;
24157case OP_GEUint8:
24158 Text.Op = PrintName("GEUint8");
24159 break;
24160case OP_GESint16:
24161 Text.Op = PrintName("GESint16");
24162 break;
24163case OP_GEUint16:
24164 Text.Op = PrintName("GEUint16");
24165 break;
24166case OP_GESint32:
24167 Text.Op = PrintName("GESint32");
24168 break;
24169case OP_GEUint32:
24170 Text.Op = PrintName("GEUint32");
24171 break;
24172case OP_GESint64:
24173 Text.Op = PrintName("GESint64");
24174 break;
24175case OP_GEUint64:
24176 Text.Op = PrintName("GEUint64");
24177 break;
24178case OP_GEIntAP:
24179 Text.Op = PrintName("GEIntAP");
24180 break;
24181case OP_GEIntAPS:
24182 Text.Op = PrintName("GEIntAPS");
24183 break;
24184case OP_GEBool:
24185 Text.Op = PrintName("GEBool");
24186 break;
24187case OP_GEFixedPoint:
24188 Text.Op = PrintName("GEFixedPoint");
24189 break;
24190case OP_GEPtr:
24191 Text.Op = PrintName("GEPtr");
24192 break;
24193case OP_GEFloat:
24194 Text.Op = PrintName("GEFloat");
24195 break;
24196#endif
24197#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24198bool emitGESint8(SourceInfo);
24199bool emitGEUint8(SourceInfo);
24200bool emitGESint16(SourceInfo);
24201bool emitGEUint16(SourceInfo);
24202bool emitGESint32(SourceInfo);
24203bool emitGEUint32(SourceInfo);
24204bool emitGESint64(SourceInfo);
24205bool emitGEUint64(SourceInfo);
24206bool emitGEIntAP(SourceInfo);
24207bool emitGEIntAPS(SourceInfo);
24208bool emitGEBool(SourceInfo);
24209bool emitGEFixedPoint(SourceInfo);
24210bool emitGEPtr(SourceInfo);
24211bool emitGEFloat(SourceInfo);
24212#endif
24213#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24214[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
24215#endif
24216#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24217bool
24218#if defined(GET_EVAL_IMPL)
24219EvalEmitter
24220#else
24221ByteCodeEmitter
24222#endif
24223::emitGE(PrimType T0, SourceInfo I) {
24224 switch (T0) {
24225 case PT_Sint8:
24226 return emitGESint8(I);
24227 case PT_Uint8:
24228 return emitGEUint8(I);
24229 case PT_Sint16:
24230 return emitGESint16(I);
24231 case PT_Uint16:
24232 return emitGEUint16(I);
24233 case PT_Sint32:
24234 return emitGESint32(I);
24235 case PT_Uint32:
24236 return emitGEUint32(I);
24237 case PT_Sint64:
24238 return emitGESint64(I);
24239 case PT_Uint64:
24240 return emitGEUint64(I);
24241 case PT_IntAP:
24242 return emitGEIntAP(I);
24243 case PT_IntAPS:
24244 return emitGEIntAPS(I);
24245 case PT_Bool:
24246 return emitGEBool(I);
24247 case PT_FixedPoint:
24248 return emitGEFixedPoint(I);
24249 case PT_Ptr:
24250 return emitGEPtr(I);
24251 case PT_Float:
24252 return emitGEFloat(I);
24253 default: llvm_unreachable("invalid type: emitGE");
24254 }
24255 llvm_unreachable("invalid enum value");
24256}
24257#endif
24258#ifdef GET_LINK_IMPL
24259bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
24260 return emitOp<>(OP_GESint8, L);
24261}
24262bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
24263 return emitOp<>(OP_GEUint8, L);
24264}
24265bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
24266 return emitOp<>(OP_GESint16, L);
24267}
24268bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
24269 return emitOp<>(OP_GEUint16, L);
24270}
24271bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
24272 return emitOp<>(OP_GESint32, L);
24273}
24274bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
24275 return emitOp<>(OP_GEUint32, L);
24276}
24277bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
24278 return emitOp<>(OP_GESint64, L);
24279}
24280bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
24281 return emitOp<>(OP_GEUint64, L);
24282}
24283bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
24284 return emitOp<>(OP_GEIntAP, L);
24285}
24286bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
24287 return emitOp<>(OP_GEIntAPS, L);
24288}
24289bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
24290 return emitOp<>(OP_GEBool, L);
24291}
24292bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
24293 return emitOp<>(OP_GEFixedPoint, L);
24294}
24295bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
24296 return emitOp<>(OP_GEPtr, L);
24297}
24298bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
24299 return emitOp<>(OP_GEFloat, L);
24300}
24301#endif
24302#ifdef GET_EVAL_IMPL
24303bool EvalEmitter::emitGESint8(SourceInfo L) {
24304 if (!isActive()) return true;
24305 CurrentSource = L;
24306 return GE<PT_Sint8>(S, OpPC);
24307}
24308bool EvalEmitter::emitGEUint8(SourceInfo L) {
24309 if (!isActive()) return true;
24310 CurrentSource = L;
24311 return GE<PT_Uint8>(S, OpPC);
24312}
24313bool EvalEmitter::emitGESint16(SourceInfo L) {
24314 if (!isActive()) return true;
24315 CurrentSource = L;
24316 return GE<PT_Sint16>(S, OpPC);
24317}
24318bool EvalEmitter::emitGEUint16(SourceInfo L) {
24319 if (!isActive()) return true;
24320 CurrentSource = L;
24321 return GE<PT_Uint16>(S, OpPC);
24322}
24323bool EvalEmitter::emitGESint32(SourceInfo L) {
24324 if (!isActive()) return true;
24325 CurrentSource = L;
24326 return GE<PT_Sint32>(S, OpPC);
24327}
24328bool EvalEmitter::emitGEUint32(SourceInfo L) {
24329 if (!isActive()) return true;
24330 CurrentSource = L;
24331 return GE<PT_Uint32>(S, OpPC);
24332}
24333bool EvalEmitter::emitGESint64(SourceInfo L) {
24334 if (!isActive()) return true;
24335 CurrentSource = L;
24336 return GE<PT_Sint64>(S, OpPC);
24337}
24338bool EvalEmitter::emitGEUint64(SourceInfo L) {
24339 if (!isActive()) return true;
24340 CurrentSource = L;
24341 return GE<PT_Uint64>(S, OpPC);
24342}
24343bool EvalEmitter::emitGEIntAP(SourceInfo L) {
24344 if (!isActive()) return true;
24345 CurrentSource = L;
24346 return GE<PT_IntAP>(S, OpPC);
24347}
24348bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
24349 if (!isActive()) return true;
24350 CurrentSource = L;
24351 return GE<PT_IntAPS>(S, OpPC);
24352}
24353bool EvalEmitter::emitGEBool(SourceInfo L) {
24354 if (!isActive()) return true;
24355 CurrentSource = L;
24356 return GE<PT_Bool>(S, OpPC);
24357}
24358bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
24359 if (!isActive()) return true;
24360 CurrentSource = L;
24361 return GE<PT_FixedPoint>(S, OpPC);
24362}
24363bool EvalEmitter::emitGEPtr(SourceInfo L) {
24364 if (!isActive()) return true;
24365 CurrentSource = L;
24366 return GE<PT_Ptr>(S, OpPC);
24367}
24368bool EvalEmitter::emitGEFloat(SourceInfo L) {
24369 if (!isActive()) return true;
24370 CurrentSource = L;
24371 return GE<PT_Float>(S, OpPC);
24372}
24373#endif
24374#ifdef GET_OPCODE_NAMES
24375OP_GTSint8,
24376OP_GTUint8,
24377OP_GTSint16,
24378OP_GTUint16,
24379OP_GTSint32,
24380OP_GTUint32,
24381OP_GTSint64,
24382OP_GTUint64,
24383OP_GTIntAP,
24384OP_GTIntAPS,
24385OP_GTBool,
24386OP_GTFixedPoint,
24387OP_GTPtr,
24388OP_GTFloat,
24389#endif
24390#ifdef GET_INTERPFN_LIST
24391&Interp_GTSint8,
24392&Interp_GTUint8,
24393&Interp_GTSint16,
24394&Interp_GTUint16,
24395&Interp_GTSint32,
24396&Interp_GTUint32,
24397&Interp_GTSint64,
24398&Interp_GTUint64,
24399&Interp_GTIntAP,
24400&Interp_GTIntAPS,
24401&Interp_GTBool,
24402&Interp_GTFixedPoint,
24403&Interp_GTPtr,
24404&Interp_GTFloat,
24405#endif
24406#ifdef GET_INTERPFN_DISPATCHERS
24407PRESERVE_NONE
24408static bool Interp_GTSint8(InterpState &S, CodePtr &PC) {
24409 if (!GT<PT_Sint8>(S, PC))
24410 return false;
24411#if USE_TAILCALLS
24412 MUSTTAIL return InterpNext(S, PC);
24413#else
24414 return true;
24415#endif
24416}
24417PRESERVE_NONE
24418static bool Interp_GTUint8(InterpState &S, CodePtr &PC) {
24419 if (!GT<PT_Uint8>(S, PC))
24420 return false;
24421#if USE_TAILCALLS
24422 MUSTTAIL return InterpNext(S, PC);
24423#else
24424 return true;
24425#endif
24426}
24427PRESERVE_NONE
24428static bool Interp_GTSint16(InterpState &S, CodePtr &PC) {
24429 if (!GT<PT_Sint16>(S, PC))
24430 return false;
24431#if USE_TAILCALLS
24432 MUSTTAIL return InterpNext(S, PC);
24433#else
24434 return true;
24435#endif
24436}
24437PRESERVE_NONE
24438static bool Interp_GTUint16(InterpState &S, CodePtr &PC) {
24439 if (!GT<PT_Uint16>(S, PC))
24440 return false;
24441#if USE_TAILCALLS
24442 MUSTTAIL return InterpNext(S, PC);
24443#else
24444 return true;
24445#endif
24446}
24447PRESERVE_NONE
24448static bool Interp_GTSint32(InterpState &S, CodePtr &PC) {
24449 if (!GT<PT_Sint32>(S, PC))
24450 return false;
24451#if USE_TAILCALLS
24452 MUSTTAIL return InterpNext(S, PC);
24453#else
24454 return true;
24455#endif
24456}
24457PRESERVE_NONE
24458static bool Interp_GTUint32(InterpState &S, CodePtr &PC) {
24459 if (!GT<PT_Uint32>(S, PC))
24460 return false;
24461#if USE_TAILCALLS
24462 MUSTTAIL return InterpNext(S, PC);
24463#else
24464 return true;
24465#endif
24466}
24467PRESERVE_NONE
24468static bool Interp_GTSint64(InterpState &S, CodePtr &PC) {
24469 if (!GT<PT_Sint64>(S, PC))
24470 return false;
24471#if USE_TAILCALLS
24472 MUSTTAIL return InterpNext(S, PC);
24473#else
24474 return true;
24475#endif
24476}
24477PRESERVE_NONE
24478static bool Interp_GTUint64(InterpState &S, CodePtr &PC) {
24479 if (!GT<PT_Uint64>(S, PC))
24480 return false;
24481#if USE_TAILCALLS
24482 MUSTTAIL return InterpNext(S, PC);
24483#else
24484 return true;
24485#endif
24486}
24487PRESERVE_NONE
24488static bool Interp_GTIntAP(InterpState &S, CodePtr &PC) {
24489 if (!GT<PT_IntAP>(S, PC))
24490 return false;
24491#if USE_TAILCALLS
24492 MUSTTAIL return InterpNext(S, PC);
24493#else
24494 return true;
24495#endif
24496}
24497PRESERVE_NONE
24498static bool Interp_GTIntAPS(InterpState &S, CodePtr &PC) {
24499 if (!GT<PT_IntAPS>(S, PC))
24500 return false;
24501#if USE_TAILCALLS
24502 MUSTTAIL return InterpNext(S, PC);
24503#else
24504 return true;
24505#endif
24506}
24507PRESERVE_NONE
24508static bool Interp_GTBool(InterpState &S, CodePtr &PC) {
24509 if (!GT<PT_Bool>(S, PC))
24510 return false;
24511#if USE_TAILCALLS
24512 MUSTTAIL return InterpNext(S, PC);
24513#else
24514 return true;
24515#endif
24516}
24517PRESERVE_NONE
24518static bool Interp_GTFixedPoint(InterpState &S, CodePtr &PC) {
24519 if (!GT<PT_FixedPoint>(S, PC))
24520 return false;
24521#if USE_TAILCALLS
24522 MUSTTAIL return InterpNext(S, PC);
24523#else
24524 return true;
24525#endif
24526}
24527PRESERVE_NONE
24528static bool Interp_GTPtr(InterpState &S, CodePtr &PC) {
24529 if (!GT<PT_Ptr>(S, PC))
24530 return false;
24531#if USE_TAILCALLS
24532 MUSTTAIL return InterpNext(S, PC);
24533#else
24534 return true;
24535#endif
24536}
24537PRESERVE_NONE
24538static bool Interp_GTFloat(InterpState &S, CodePtr &PC) {
24539 if (!GT<PT_Float>(S, PC))
24540 return false;
24541#if USE_TAILCALLS
24542 MUSTTAIL return InterpNext(S, PC);
24543#else
24544 return true;
24545#endif
24546}
24547#endif
24548#ifdef GET_DISASM
24549case OP_GTSint8:
24550 Text.Op = PrintName("GTSint8");
24551 break;
24552case OP_GTUint8:
24553 Text.Op = PrintName("GTUint8");
24554 break;
24555case OP_GTSint16:
24556 Text.Op = PrintName("GTSint16");
24557 break;
24558case OP_GTUint16:
24559 Text.Op = PrintName("GTUint16");
24560 break;
24561case OP_GTSint32:
24562 Text.Op = PrintName("GTSint32");
24563 break;
24564case OP_GTUint32:
24565 Text.Op = PrintName("GTUint32");
24566 break;
24567case OP_GTSint64:
24568 Text.Op = PrintName("GTSint64");
24569 break;
24570case OP_GTUint64:
24571 Text.Op = PrintName("GTUint64");
24572 break;
24573case OP_GTIntAP:
24574 Text.Op = PrintName("GTIntAP");
24575 break;
24576case OP_GTIntAPS:
24577 Text.Op = PrintName("GTIntAPS");
24578 break;
24579case OP_GTBool:
24580 Text.Op = PrintName("GTBool");
24581 break;
24582case OP_GTFixedPoint:
24583 Text.Op = PrintName("GTFixedPoint");
24584 break;
24585case OP_GTPtr:
24586 Text.Op = PrintName("GTPtr");
24587 break;
24588case OP_GTFloat:
24589 Text.Op = PrintName("GTFloat");
24590 break;
24591#endif
24592#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24593bool emitGTSint8(SourceInfo);
24594bool emitGTUint8(SourceInfo);
24595bool emitGTSint16(SourceInfo);
24596bool emitGTUint16(SourceInfo);
24597bool emitGTSint32(SourceInfo);
24598bool emitGTUint32(SourceInfo);
24599bool emitGTSint64(SourceInfo);
24600bool emitGTUint64(SourceInfo);
24601bool emitGTIntAP(SourceInfo);
24602bool emitGTIntAPS(SourceInfo);
24603bool emitGTBool(SourceInfo);
24604bool emitGTFixedPoint(SourceInfo);
24605bool emitGTPtr(SourceInfo);
24606bool emitGTFloat(SourceInfo);
24607#endif
24608#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24609[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
24610#endif
24611#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24612bool
24613#if defined(GET_EVAL_IMPL)
24614EvalEmitter
24615#else
24616ByteCodeEmitter
24617#endif
24618::emitGT(PrimType T0, SourceInfo I) {
24619 switch (T0) {
24620 case PT_Sint8:
24621 return emitGTSint8(I);
24622 case PT_Uint8:
24623 return emitGTUint8(I);
24624 case PT_Sint16:
24625 return emitGTSint16(I);
24626 case PT_Uint16:
24627 return emitGTUint16(I);
24628 case PT_Sint32:
24629 return emitGTSint32(I);
24630 case PT_Uint32:
24631 return emitGTUint32(I);
24632 case PT_Sint64:
24633 return emitGTSint64(I);
24634 case PT_Uint64:
24635 return emitGTUint64(I);
24636 case PT_IntAP:
24637 return emitGTIntAP(I);
24638 case PT_IntAPS:
24639 return emitGTIntAPS(I);
24640 case PT_Bool:
24641 return emitGTBool(I);
24642 case PT_FixedPoint:
24643 return emitGTFixedPoint(I);
24644 case PT_Ptr:
24645 return emitGTPtr(I);
24646 case PT_Float:
24647 return emitGTFloat(I);
24648 default: llvm_unreachable("invalid type: emitGT");
24649 }
24650 llvm_unreachable("invalid enum value");
24651}
24652#endif
24653#ifdef GET_LINK_IMPL
24654bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
24655 return emitOp<>(OP_GTSint8, L);
24656}
24657bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
24658 return emitOp<>(OP_GTUint8, L);
24659}
24660bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
24661 return emitOp<>(OP_GTSint16, L);
24662}
24663bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
24664 return emitOp<>(OP_GTUint16, L);
24665}
24666bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
24667 return emitOp<>(OP_GTSint32, L);
24668}
24669bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
24670 return emitOp<>(OP_GTUint32, L);
24671}
24672bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
24673 return emitOp<>(OP_GTSint64, L);
24674}
24675bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
24676 return emitOp<>(OP_GTUint64, L);
24677}
24678bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
24679 return emitOp<>(OP_GTIntAP, L);
24680}
24681bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
24682 return emitOp<>(OP_GTIntAPS, L);
24683}
24684bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
24685 return emitOp<>(OP_GTBool, L);
24686}
24687bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
24688 return emitOp<>(OP_GTFixedPoint, L);
24689}
24690bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
24691 return emitOp<>(OP_GTPtr, L);
24692}
24693bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
24694 return emitOp<>(OP_GTFloat, L);
24695}
24696#endif
24697#ifdef GET_EVAL_IMPL
24698bool EvalEmitter::emitGTSint8(SourceInfo L) {
24699 if (!isActive()) return true;
24700 CurrentSource = L;
24701 return GT<PT_Sint8>(S, OpPC);
24702}
24703bool EvalEmitter::emitGTUint8(SourceInfo L) {
24704 if (!isActive()) return true;
24705 CurrentSource = L;
24706 return GT<PT_Uint8>(S, OpPC);
24707}
24708bool EvalEmitter::emitGTSint16(SourceInfo L) {
24709 if (!isActive()) return true;
24710 CurrentSource = L;
24711 return GT<PT_Sint16>(S, OpPC);
24712}
24713bool EvalEmitter::emitGTUint16(SourceInfo L) {
24714 if (!isActive()) return true;
24715 CurrentSource = L;
24716 return GT<PT_Uint16>(S, OpPC);
24717}
24718bool EvalEmitter::emitGTSint32(SourceInfo L) {
24719 if (!isActive()) return true;
24720 CurrentSource = L;
24721 return GT<PT_Sint32>(S, OpPC);
24722}
24723bool EvalEmitter::emitGTUint32(SourceInfo L) {
24724 if (!isActive()) return true;
24725 CurrentSource = L;
24726 return GT<PT_Uint32>(S, OpPC);
24727}
24728bool EvalEmitter::emitGTSint64(SourceInfo L) {
24729 if (!isActive()) return true;
24730 CurrentSource = L;
24731 return GT<PT_Sint64>(S, OpPC);
24732}
24733bool EvalEmitter::emitGTUint64(SourceInfo L) {
24734 if (!isActive()) return true;
24735 CurrentSource = L;
24736 return GT<PT_Uint64>(S, OpPC);
24737}
24738bool EvalEmitter::emitGTIntAP(SourceInfo L) {
24739 if (!isActive()) return true;
24740 CurrentSource = L;
24741 return GT<PT_IntAP>(S, OpPC);
24742}
24743bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
24744 if (!isActive()) return true;
24745 CurrentSource = L;
24746 return GT<PT_IntAPS>(S, OpPC);
24747}
24748bool EvalEmitter::emitGTBool(SourceInfo L) {
24749 if (!isActive()) return true;
24750 CurrentSource = L;
24751 return GT<PT_Bool>(S, OpPC);
24752}
24753bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
24754 if (!isActive()) return true;
24755 CurrentSource = L;
24756 return GT<PT_FixedPoint>(S, OpPC);
24757}
24758bool EvalEmitter::emitGTPtr(SourceInfo L) {
24759 if (!isActive()) return true;
24760 CurrentSource = L;
24761 return GT<PT_Ptr>(S, OpPC);
24762}
24763bool EvalEmitter::emitGTFloat(SourceInfo L) {
24764 if (!isActive()) return true;
24765 CurrentSource = L;
24766 return GT<PT_Float>(S, OpPC);
24767}
24768#endif
24769#ifdef GET_OPCODE_NAMES
24770OP_GetFieldSint8,
24771OP_GetFieldUint8,
24772OP_GetFieldSint16,
24773OP_GetFieldUint16,
24774OP_GetFieldSint32,
24775OP_GetFieldUint32,
24776OP_GetFieldSint64,
24777OP_GetFieldUint64,
24778OP_GetFieldIntAP,
24779OP_GetFieldIntAPS,
24780OP_GetFieldBool,
24781OP_GetFieldFixedPoint,
24782OP_GetFieldPtr,
24783OP_GetFieldMemberPtr,
24784OP_GetFieldFloat,
24785#endif
24786#ifdef GET_INTERPFN_LIST
24787&Interp_GetFieldSint8,
24788&Interp_GetFieldUint8,
24789&Interp_GetFieldSint16,
24790&Interp_GetFieldUint16,
24791&Interp_GetFieldSint32,
24792&Interp_GetFieldUint32,
24793&Interp_GetFieldSint64,
24794&Interp_GetFieldUint64,
24795&Interp_GetFieldIntAP,
24796&Interp_GetFieldIntAPS,
24797&Interp_GetFieldBool,
24798&Interp_GetFieldFixedPoint,
24799&Interp_GetFieldPtr,
24800&Interp_GetFieldMemberPtr,
24801&Interp_GetFieldFloat,
24802#endif
24803#ifdef GET_INTERPFN_DISPATCHERS
24804PRESERVE_NONE
24805static bool Interp_GetFieldSint8(InterpState &S, CodePtr &PC) {
24806 {
24807 CodePtr OpPC = PC;
24808 const auto V0 = ReadArg<uint32_t>(S, PC);
24809 if (!GetField<PT_Sint8>(S, OpPC, V0))
24810 return false;
24811 }
24812#if USE_TAILCALLS
24813 MUSTTAIL return InterpNext(S, PC);
24814#else
24815 return true;
24816#endif
24817}
24818PRESERVE_NONE
24819static bool Interp_GetFieldUint8(InterpState &S, CodePtr &PC) {
24820 {
24821 CodePtr OpPC = PC;
24822 const auto V0 = ReadArg<uint32_t>(S, PC);
24823 if (!GetField<PT_Uint8>(S, OpPC, V0))
24824 return false;
24825 }
24826#if USE_TAILCALLS
24827 MUSTTAIL return InterpNext(S, PC);
24828#else
24829 return true;
24830#endif
24831}
24832PRESERVE_NONE
24833static bool Interp_GetFieldSint16(InterpState &S, CodePtr &PC) {
24834 {
24835 CodePtr OpPC = PC;
24836 const auto V0 = ReadArg<uint32_t>(S, PC);
24837 if (!GetField<PT_Sint16>(S, OpPC, V0))
24838 return false;
24839 }
24840#if USE_TAILCALLS
24841 MUSTTAIL return InterpNext(S, PC);
24842#else
24843 return true;
24844#endif
24845}
24846PRESERVE_NONE
24847static bool Interp_GetFieldUint16(InterpState &S, CodePtr &PC) {
24848 {
24849 CodePtr OpPC = PC;
24850 const auto V0 = ReadArg<uint32_t>(S, PC);
24851 if (!GetField<PT_Uint16>(S, OpPC, V0))
24852 return false;
24853 }
24854#if USE_TAILCALLS
24855 MUSTTAIL return InterpNext(S, PC);
24856#else
24857 return true;
24858#endif
24859}
24860PRESERVE_NONE
24861static bool Interp_GetFieldSint32(InterpState &S, CodePtr &PC) {
24862 {
24863 CodePtr OpPC = PC;
24864 const auto V0 = ReadArg<uint32_t>(S, PC);
24865 if (!GetField<PT_Sint32>(S, OpPC, V0))
24866 return false;
24867 }
24868#if USE_TAILCALLS
24869 MUSTTAIL return InterpNext(S, PC);
24870#else
24871 return true;
24872#endif
24873}
24874PRESERVE_NONE
24875static bool Interp_GetFieldUint32(InterpState &S, CodePtr &PC) {
24876 {
24877 CodePtr OpPC = PC;
24878 const auto V0 = ReadArg<uint32_t>(S, PC);
24879 if (!GetField<PT_Uint32>(S, OpPC, V0))
24880 return false;
24881 }
24882#if USE_TAILCALLS
24883 MUSTTAIL return InterpNext(S, PC);
24884#else
24885 return true;
24886#endif
24887}
24888PRESERVE_NONE
24889static bool Interp_GetFieldSint64(InterpState &S, CodePtr &PC) {
24890 {
24891 CodePtr OpPC = PC;
24892 const auto V0 = ReadArg<uint32_t>(S, PC);
24893 if (!GetField<PT_Sint64>(S, OpPC, V0))
24894 return false;
24895 }
24896#if USE_TAILCALLS
24897 MUSTTAIL return InterpNext(S, PC);
24898#else
24899 return true;
24900#endif
24901}
24902PRESERVE_NONE
24903static bool Interp_GetFieldUint64(InterpState &S, CodePtr &PC) {
24904 {
24905 CodePtr OpPC = PC;
24906 const auto V0 = ReadArg<uint32_t>(S, PC);
24907 if (!GetField<PT_Uint64>(S, OpPC, V0))
24908 return false;
24909 }
24910#if USE_TAILCALLS
24911 MUSTTAIL return InterpNext(S, PC);
24912#else
24913 return true;
24914#endif
24915}
24916PRESERVE_NONE
24917static bool Interp_GetFieldIntAP(InterpState &S, CodePtr &PC) {
24918 {
24919 CodePtr OpPC = PC;
24920 const auto V0 = ReadArg<uint32_t>(S, PC);
24921 if (!GetField<PT_IntAP>(S, OpPC, V0))
24922 return false;
24923 }
24924#if USE_TAILCALLS
24925 MUSTTAIL return InterpNext(S, PC);
24926#else
24927 return true;
24928#endif
24929}
24930PRESERVE_NONE
24931static bool Interp_GetFieldIntAPS(InterpState &S, CodePtr &PC) {
24932 {
24933 CodePtr OpPC = PC;
24934 const auto V0 = ReadArg<uint32_t>(S, PC);
24935 if (!GetField<PT_IntAPS>(S, OpPC, V0))
24936 return false;
24937 }
24938#if USE_TAILCALLS
24939 MUSTTAIL return InterpNext(S, PC);
24940#else
24941 return true;
24942#endif
24943}
24944PRESERVE_NONE
24945static bool Interp_GetFieldBool(InterpState &S, CodePtr &PC) {
24946 {
24947 CodePtr OpPC = PC;
24948 const auto V0 = ReadArg<uint32_t>(S, PC);
24949 if (!GetField<PT_Bool>(S, OpPC, V0))
24950 return false;
24951 }
24952#if USE_TAILCALLS
24953 MUSTTAIL return InterpNext(S, PC);
24954#else
24955 return true;
24956#endif
24957}
24958PRESERVE_NONE
24959static bool Interp_GetFieldFixedPoint(InterpState &S, CodePtr &PC) {
24960 {
24961 CodePtr OpPC = PC;
24962 const auto V0 = ReadArg<uint32_t>(S, PC);
24963 if (!GetField<PT_FixedPoint>(S, OpPC, V0))
24964 return false;
24965 }
24966#if USE_TAILCALLS
24967 MUSTTAIL return InterpNext(S, PC);
24968#else
24969 return true;
24970#endif
24971}
24972PRESERVE_NONE
24973static bool Interp_GetFieldPtr(InterpState &S, CodePtr &PC) {
24974 {
24975 CodePtr OpPC = PC;
24976 const auto V0 = ReadArg<uint32_t>(S, PC);
24977 if (!GetField<PT_Ptr>(S, OpPC, V0))
24978 return false;
24979 }
24980#if USE_TAILCALLS
24981 MUSTTAIL return InterpNext(S, PC);
24982#else
24983 return true;
24984#endif
24985}
24986PRESERVE_NONE
24987static bool Interp_GetFieldMemberPtr(InterpState &S, CodePtr &PC) {
24988 {
24989 CodePtr OpPC = PC;
24990 const auto V0 = ReadArg<uint32_t>(S, PC);
24991 if (!GetField<PT_MemberPtr>(S, OpPC, V0))
24992 return false;
24993 }
24994#if USE_TAILCALLS
24995 MUSTTAIL return InterpNext(S, PC);
24996#else
24997 return true;
24998#endif
24999}
25000PRESERVE_NONE
25001static bool Interp_GetFieldFloat(InterpState &S, CodePtr &PC) {
25002 {
25003 CodePtr OpPC = PC;
25004 const auto V0 = ReadArg<uint32_t>(S, PC);
25005 if (!GetField<PT_Float>(S, OpPC, V0))
25006 return false;
25007 }
25008#if USE_TAILCALLS
25009 MUSTTAIL return InterpNext(S, PC);
25010#else
25011 return true;
25012#endif
25013}
25014#endif
25015#ifdef GET_DISASM
25016case OP_GetFieldSint8:
25017 Text.Op = PrintName("GetFieldSint8");
25018 Text.Args.push_back(printArg<uint32_t>(P, PC));
25019 break;
25020case OP_GetFieldUint8:
25021 Text.Op = PrintName("GetFieldUint8");
25022 Text.Args.push_back(printArg<uint32_t>(P, PC));
25023 break;
25024case OP_GetFieldSint16:
25025 Text.Op = PrintName("GetFieldSint16");
25026 Text.Args.push_back(printArg<uint32_t>(P, PC));
25027 break;
25028case OP_GetFieldUint16:
25029 Text.Op = PrintName("GetFieldUint16");
25030 Text.Args.push_back(printArg<uint32_t>(P, PC));
25031 break;
25032case OP_GetFieldSint32:
25033 Text.Op = PrintName("GetFieldSint32");
25034 Text.Args.push_back(printArg<uint32_t>(P, PC));
25035 break;
25036case OP_GetFieldUint32:
25037 Text.Op = PrintName("GetFieldUint32");
25038 Text.Args.push_back(printArg<uint32_t>(P, PC));
25039 break;
25040case OP_GetFieldSint64:
25041 Text.Op = PrintName("GetFieldSint64");
25042 Text.Args.push_back(printArg<uint32_t>(P, PC));
25043 break;
25044case OP_GetFieldUint64:
25045 Text.Op = PrintName("GetFieldUint64");
25046 Text.Args.push_back(printArg<uint32_t>(P, PC));
25047 break;
25048case OP_GetFieldIntAP:
25049 Text.Op = PrintName("GetFieldIntAP");
25050 Text.Args.push_back(printArg<uint32_t>(P, PC));
25051 break;
25052case OP_GetFieldIntAPS:
25053 Text.Op = PrintName("GetFieldIntAPS");
25054 Text.Args.push_back(printArg<uint32_t>(P, PC));
25055 break;
25056case OP_GetFieldBool:
25057 Text.Op = PrintName("GetFieldBool");
25058 Text.Args.push_back(printArg<uint32_t>(P, PC));
25059 break;
25060case OP_GetFieldFixedPoint:
25061 Text.Op = PrintName("GetFieldFixedPoint");
25062 Text.Args.push_back(printArg<uint32_t>(P, PC));
25063 break;
25064case OP_GetFieldPtr:
25065 Text.Op = PrintName("GetFieldPtr");
25066 Text.Args.push_back(printArg<uint32_t>(P, PC));
25067 break;
25068case OP_GetFieldMemberPtr:
25069 Text.Op = PrintName("GetFieldMemberPtr");
25070 Text.Args.push_back(printArg<uint32_t>(P, PC));
25071 break;
25072case OP_GetFieldFloat:
25073 Text.Op = PrintName("GetFieldFloat");
25074 Text.Args.push_back(printArg<uint32_t>(P, PC));
25075 break;
25076#endif
25077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25078bool emitGetFieldSint8( uint32_t , SourceInfo);
25079bool emitGetFieldUint8( uint32_t , SourceInfo);
25080bool emitGetFieldSint16( uint32_t , SourceInfo);
25081bool emitGetFieldUint16( uint32_t , SourceInfo);
25082bool emitGetFieldSint32( uint32_t , SourceInfo);
25083bool emitGetFieldUint32( uint32_t , SourceInfo);
25084bool emitGetFieldSint64( uint32_t , SourceInfo);
25085bool emitGetFieldUint64( uint32_t , SourceInfo);
25086bool emitGetFieldIntAP( uint32_t , SourceInfo);
25087bool emitGetFieldIntAPS( uint32_t , SourceInfo);
25088bool emitGetFieldBool( uint32_t , SourceInfo);
25089bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
25090bool emitGetFieldPtr( uint32_t , SourceInfo);
25091bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
25092bool emitGetFieldFloat( uint32_t , SourceInfo);
25093#endif
25094#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25095[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
25096#endif
25097#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25098bool
25099#if defined(GET_EVAL_IMPL)
25100EvalEmitter
25101#else
25102ByteCodeEmitter
25103#endif
25104::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
25105 switch (T0) {
25106 case PT_Sint8:
25107 return emitGetFieldSint8(A0, I);
25108 case PT_Uint8:
25109 return emitGetFieldUint8(A0, I);
25110 case PT_Sint16:
25111 return emitGetFieldSint16(A0, I);
25112 case PT_Uint16:
25113 return emitGetFieldUint16(A0, I);
25114 case PT_Sint32:
25115 return emitGetFieldSint32(A0, I);
25116 case PT_Uint32:
25117 return emitGetFieldUint32(A0, I);
25118 case PT_Sint64:
25119 return emitGetFieldSint64(A0, I);
25120 case PT_Uint64:
25121 return emitGetFieldUint64(A0, I);
25122 case PT_IntAP:
25123 return emitGetFieldIntAP(A0, I);
25124 case PT_IntAPS:
25125 return emitGetFieldIntAPS(A0, I);
25126 case PT_Bool:
25127 return emitGetFieldBool(A0, I);
25128 case PT_FixedPoint:
25129 return emitGetFieldFixedPoint(A0, I);
25130 case PT_Ptr:
25131 return emitGetFieldPtr(A0, I);
25132 case PT_MemberPtr:
25133 return emitGetFieldMemberPtr(A0, I);
25134 case PT_Float:
25135 return emitGetFieldFloat(A0, I);
25136 }
25137 llvm_unreachable("invalid enum value");
25138}
25139#endif
25140#ifdef GET_LINK_IMPL
25141bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
25142 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
25143}
25144bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
25145 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
25146}
25147bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
25148 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
25149}
25150bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
25151 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
25152}
25153bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
25154 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
25155}
25156bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
25157 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
25158}
25159bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
25160 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
25161}
25162bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
25163 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
25164}
25165bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
25166 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
25167}
25168bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
25169 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
25170}
25171bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
25172 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
25173}
25174bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
25175 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
25176}
25177bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
25178 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
25179}
25180bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
25181 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
25182}
25183bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
25184 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
25185}
25186#endif
25187#ifdef GET_EVAL_IMPL
25188bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
25189 if (!isActive()) return true;
25190 CurrentSource = L;
25191 return GetField<PT_Sint8>(S, OpPC, A0);
25192}
25193bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
25194 if (!isActive()) return true;
25195 CurrentSource = L;
25196 return GetField<PT_Uint8>(S, OpPC, A0);
25197}
25198bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
25199 if (!isActive()) return true;
25200 CurrentSource = L;
25201 return GetField<PT_Sint16>(S, OpPC, A0);
25202}
25203bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
25204 if (!isActive()) return true;
25205 CurrentSource = L;
25206 return GetField<PT_Uint16>(S, OpPC, A0);
25207}
25208bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
25209 if (!isActive()) return true;
25210 CurrentSource = L;
25211 return GetField<PT_Sint32>(S, OpPC, A0);
25212}
25213bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
25214 if (!isActive()) return true;
25215 CurrentSource = L;
25216 return GetField<PT_Uint32>(S, OpPC, A0);
25217}
25218bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
25219 if (!isActive()) return true;
25220 CurrentSource = L;
25221 return GetField<PT_Sint64>(S, OpPC, A0);
25222}
25223bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
25224 if (!isActive()) return true;
25225 CurrentSource = L;
25226 return GetField<PT_Uint64>(S, OpPC, A0);
25227}
25228bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
25229 if (!isActive()) return true;
25230 CurrentSource = L;
25231 return GetField<PT_IntAP>(S, OpPC, A0);
25232}
25233bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
25234 if (!isActive()) return true;
25235 CurrentSource = L;
25236 return GetField<PT_IntAPS>(S, OpPC, A0);
25237}
25238bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
25239 if (!isActive()) return true;
25240 CurrentSource = L;
25241 return GetField<PT_Bool>(S, OpPC, A0);
25242}
25243bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
25244 if (!isActive()) return true;
25245 CurrentSource = L;
25246 return GetField<PT_FixedPoint>(S, OpPC, A0);
25247}
25248bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
25249 if (!isActive()) return true;
25250 CurrentSource = L;
25251 return GetField<PT_Ptr>(S, OpPC, A0);
25252}
25253bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
25254 if (!isActive()) return true;
25255 CurrentSource = L;
25256 return GetField<PT_MemberPtr>(S, OpPC, A0);
25257}
25258bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
25259 if (!isActive()) return true;
25260 CurrentSource = L;
25261 return GetField<PT_Float>(S, OpPC, A0);
25262}
25263#endif
25264#ifdef GET_OPCODE_NAMES
25265OP_GetFieldPopSint8,
25266OP_GetFieldPopUint8,
25267OP_GetFieldPopSint16,
25268OP_GetFieldPopUint16,
25269OP_GetFieldPopSint32,
25270OP_GetFieldPopUint32,
25271OP_GetFieldPopSint64,
25272OP_GetFieldPopUint64,
25273OP_GetFieldPopIntAP,
25274OP_GetFieldPopIntAPS,
25275OP_GetFieldPopBool,
25276OP_GetFieldPopFixedPoint,
25277OP_GetFieldPopPtr,
25278OP_GetFieldPopMemberPtr,
25279OP_GetFieldPopFloat,
25280#endif
25281#ifdef GET_INTERPFN_LIST
25282&Interp_GetFieldPopSint8,
25283&Interp_GetFieldPopUint8,
25284&Interp_GetFieldPopSint16,
25285&Interp_GetFieldPopUint16,
25286&Interp_GetFieldPopSint32,
25287&Interp_GetFieldPopUint32,
25288&Interp_GetFieldPopSint64,
25289&Interp_GetFieldPopUint64,
25290&Interp_GetFieldPopIntAP,
25291&Interp_GetFieldPopIntAPS,
25292&Interp_GetFieldPopBool,
25293&Interp_GetFieldPopFixedPoint,
25294&Interp_GetFieldPopPtr,
25295&Interp_GetFieldPopMemberPtr,
25296&Interp_GetFieldPopFloat,
25297#endif
25298#ifdef GET_INTERPFN_DISPATCHERS
25299PRESERVE_NONE
25300static bool Interp_GetFieldPopSint8(InterpState &S, CodePtr &PC) {
25301 {
25302 CodePtr OpPC = PC;
25303 const auto V0 = ReadArg<uint32_t>(S, PC);
25304 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0))
25305 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_GetFieldPopUint8(InterpState &S, CodePtr &PC) {
25315 {
25316 CodePtr OpPC = PC;
25317 const auto V0 = ReadArg<uint32_t>(S, PC);
25318 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0))
25319 return false;
25320 }
25321#if USE_TAILCALLS
25322 MUSTTAIL return InterpNext(S, PC);
25323#else
25324 return true;
25325#endif
25326}
25327PRESERVE_NONE
25328static bool Interp_GetFieldPopSint16(InterpState &S, CodePtr &PC) {
25329 {
25330 CodePtr OpPC = PC;
25331 const auto V0 = ReadArg<uint32_t>(S, PC);
25332 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0))
25333 return false;
25334 }
25335#if USE_TAILCALLS
25336 MUSTTAIL return InterpNext(S, PC);
25337#else
25338 return true;
25339#endif
25340}
25341PRESERVE_NONE
25342static bool Interp_GetFieldPopUint16(InterpState &S, CodePtr &PC) {
25343 {
25344 CodePtr OpPC = PC;
25345 const auto V0 = ReadArg<uint32_t>(S, PC);
25346 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0))
25347 return false;
25348 }
25349#if USE_TAILCALLS
25350 MUSTTAIL return InterpNext(S, PC);
25351#else
25352 return true;
25353#endif
25354}
25355PRESERVE_NONE
25356static bool Interp_GetFieldPopSint32(InterpState &S, CodePtr &PC) {
25357 {
25358 CodePtr OpPC = PC;
25359 const auto V0 = ReadArg<uint32_t>(S, PC);
25360 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0))
25361 return false;
25362 }
25363#if USE_TAILCALLS
25364 MUSTTAIL return InterpNext(S, PC);
25365#else
25366 return true;
25367#endif
25368}
25369PRESERVE_NONE
25370static bool Interp_GetFieldPopUint32(InterpState &S, CodePtr &PC) {
25371 {
25372 CodePtr OpPC = PC;
25373 const auto V0 = ReadArg<uint32_t>(S, PC);
25374 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0))
25375 return false;
25376 }
25377#if USE_TAILCALLS
25378 MUSTTAIL return InterpNext(S, PC);
25379#else
25380 return true;
25381#endif
25382}
25383PRESERVE_NONE
25384static bool Interp_GetFieldPopSint64(InterpState &S, CodePtr &PC) {
25385 {
25386 CodePtr OpPC = PC;
25387 const auto V0 = ReadArg<uint32_t>(S, PC);
25388 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0))
25389 return false;
25390 }
25391#if USE_TAILCALLS
25392 MUSTTAIL return InterpNext(S, PC);
25393#else
25394 return true;
25395#endif
25396}
25397PRESERVE_NONE
25398static bool Interp_GetFieldPopUint64(InterpState &S, CodePtr &PC) {
25399 {
25400 CodePtr OpPC = PC;
25401 const auto V0 = ReadArg<uint32_t>(S, PC);
25402 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0))
25403 return false;
25404 }
25405#if USE_TAILCALLS
25406 MUSTTAIL return InterpNext(S, PC);
25407#else
25408 return true;
25409#endif
25410}
25411PRESERVE_NONE
25412static bool Interp_GetFieldPopIntAP(InterpState &S, CodePtr &PC) {
25413 {
25414 CodePtr OpPC = PC;
25415 const auto V0 = ReadArg<uint32_t>(S, PC);
25416 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0))
25417 return false;
25418 }
25419#if USE_TAILCALLS
25420 MUSTTAIL return InterpNext(S, PC);
25421#else
25422 return true;
25423#endif
25424}
25425PRESERVE_NONE
25426static bool Interp_GetFieldPopIntAPS(InterpState &S, CodePtr &PC) {
25427 {
25428 CodePtr OpPC = PC;
25429 const auto V0 = ReadArg<uint32_t>(S, PC);
25430 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0))
25431 return false;
25432 }
25433#if USE_TAILCALLS
25434 MUSTTAIL return InterpNext(S, PC);
25435#else
25436 return true;
25437#endif
25438}
25439PRESERVE_NONE
25440static bool Interp_GetFieldPopBool(InterpState &S, CodePtr &PC) {
25441 {
25442 CodePtr OpPC = PC;
25443 const auto V0 = ReadArg<uint32_t>(S, PC);
25444 if (!GetFieldPop<PT_Bool>(S, OpPC, V0))
25445 return false;
25446 }
25447#if USE_TAILCALLS
25448 MUSTTAIL return InterpNext(S, PC);
25449#else
25450 return true;
25451#endif
25452}
25453PRESERVE_NONE
25454static bool Interp_GetFieldPopFixedPoint(InterpState &S, CodePtr &PC) {
25455 {
25456 CodePtr OpPC = PC;
25457 const auto V0 = ReadArg<uint32_t>(S, PC);
25458 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0))
25459 return false;
25460 }
25461#if USE_TAILCALLS
25462 MUSTTAIL return InterpNext(S, PC);
25463#else
25464 return true;
25465#endif
25466}
25467PRESERVE_NONE
25468static bool Interp_GetFieldPopPtr(InterpState &S, CodePtr &PC) {
25469 {
25470 CodePtr OpPC = PC;
25471 const auto V0 = ReadArg<uint32_t>(S, PC);
25472 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0))
25473 return false;
25474 }
25475#if USE_TAILCALLS
25476 MUSTTAIL return InterpNext(S, PC);
25477#else
25478 return true;
25479#endif
25480}
25481PRESERVE_NONE
25482static bool Interp_GetFieldPopMemberPtr(InterpState &S, CodePtr &PC) {
25483 {
25484 CodePtr OpPC = PC;
25485 const auto V0 = ReadArg<uint32_t>(S, PC);
25486 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0))
25487 return false;
25488 }
25489#if USE_TAILCALLS
25490 MUSTTAIL return InterpNext(S, PC);
25491#else
25492 return true;
25493#endif
25494}
25495PRESERVE_NONE
25496static bool Interp_GetFieldPopFloat(InterpState &S, CodePtr &PC) {
25497 {
25498 CodePtr OpPC = PC;
25499 const auto V0 = ReadArg<uint32_t>(S, PC);
25500 if (!GetFieldPop<PT_Float>(S, OpPC, V0))
25501 return false;
25502 }
25503#if USE_TAILCALLS
25504 MUSTTAIL return InterpNext(S, PC);
25505#else
25506 return true;
25507#endif
25508}
25509#endif
25510#ifdef GET_DISASM
25511case OP_GetFieldPopSint8:
25512 Text.Op = PrintName("GetFieldPopSint8");
25513 Text.Args.push_back(printArg<uint32_t>(P, PC));
25514 break;
25515case OP_GetFieldPopUint8:
25516 Text.Op = PrintName("GetFieldPopUint8");
25517 Text.Args.push_back(printArg<uint32_t>(P, PC));
25518 break;
25519case OP_GetFieldPopSint16:
25520 Text.Op = PrintName("GetFieldPopSint16");
25521 Text.Args.push_back(printArg<uint32_t>(P, PC));
25522 break;
25523case OP_GetFieldPopUint16:
25524 Text.Op = PrintName("GetFieldPopUint16");
25525 Text.Args.push_back(printArg<uint32_t>(P, PC));
25526 break;
25527case OP_GetFieldPopSint32:
25528 Text.Op = PrintName("GetFieldPopSint32");
25529 Text.Args.push_back(printArg<uint32_t>(P, PC));
25530 break;
25531case OP_GetFieldPopUint32:
25532 Text.Op = PrintName("GetFieldPopUint32");
25533 Text.Args.push_back(printArg<uint32_t>(P, PC));
25534 break;
25535case OP_GetFieldPopSint64:
25536 Text.Op = PrintName("GetFieldPopSint64");
25537 Text.Args.push_back(printArg<uint32_t>(P, PC));
25538 break;
25539case OP_GetFieldPopUint64:
25540 Text.Op = PrintName("GetFieldPopUint64");
25541 Text.Args.push_back(printArg<uint32_t>(P, PC));
25542 break;
25543case OP_GetFieldPopIntAP:
25544 Text.Op = PrintName("GetFieldPopIntAP");
25545 Text.Args.push_back(printArg<uint32_t>(P, PC));
25546 break;
25547case OP_GetFieldPopIntAPS:
25548 Text.Op = PrintName("GetFieldPopIntAPS");
25549 Text.Args.push_back(printArg<uint32_t>(P, PC));
25550 break;
25551case OP_GetFieldPopBool:
25552 Text.Op = PrintName("GetFieldPopBool");
25553 Text.Args.push_back(printArg<uint32_t>(P, PC));
25554 break;
25555case OP_GetFieldPopFixedPoint:
25556 Text.Op = PrintName("GetFieldPopFixedPoint");
25557 Text.Args.push_back(printArg<uint32_t>(P, PC));
25558 break;
25559case OP_GetFieldPopPtr:
25560 Text.Op = PrintName("GetFieldPopPtr");
25561 Text.Args.push_back(printArg<uint32_t>(P, PC));
25562 break;
25563case OP_GetFieldPopMemberPtr:
25564 Text.Op = PrintName("GetFieldPopMemberPtr");
25565 Text.Args.push_back(printArg<uint32_t>(P, PC));
25566 break;
25567case OP_GetFieldPopFloat:
25568 Text.Op = PrintName("GetFieldPopFloat");
25569 Text.Args.push_back(printArg<uint32_t>(P, PC));
25570 break;
25571#endif
25572#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25573bool emitGetFieldPopSint8( uint32_t , SourceInfo);
25574bool emitGetFieldPopUint8( uint32_t , SourceInfo);
25575bool emitGetFieldPopSint16( uint32_t , SourceInfo);
25576bool emitGetFieldPopUint16( uint32_t , SourceInfo);
25577bool emitGetFieldPopSint32( uint32_t , SourceInfo);
25578bool emitGetFieldPopUint32( uint32_t , SourceInfo);
25579bool emitGetFieldPopSint64( uint32_t , SourceInfo);
25580bool emitGetFieldPopUint64( uint32_t , SourceInfo);
25581bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
25582bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
25583bool emitGetFieldPopBool( uint32_t , SourceInfo);
25584bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
25585bool emitGetFieldPopPtr( uint32_t , SourceInfo);
25586bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
25587bool emitGetFieldPopFloat( uint32_t , SourceInfo);
25588#endif
25589#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25590[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
25591#endif
25592#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25593bool
25594#if defined(GET_EVAL_IMPL)
25595EvalEmitter
25596#else
25597ByteCodeEmitter
25598#endif
25599::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
25600 switch (T0) {
25601 case PT_Sint8:
25602 return emitGetFieldPopSint8(A0, I);
25603 case PT_Uint8:
25604 return emitGetFieldPopUint8(A0, I);
25605 case PT_Sint16:
25606 return emitGetFieldPopSint16(A0, I);
25607 case PT_Uint16:
25608 return emitGetFieldPopUint16(A0, I);
25609 case PT_Sint32:
25610 return emitGetFieldPopSint32(A0, I);
25611 case PT_Uint32:
25612 return emitGetFieldPopUint32(A0, I);
25613 case PT_Sint64:
25614 return emitGetFieldPopSint64(A0, I);
25615 case PT_Uint64:
25616 return emitGetFieldPopUint64(A0, I);
25617 case PT_IntAP:
25618 return emitGetFieldPopIntAP(A0, I);
25619 case PT_IntAPS:
25620 return emitGetFieldPopIntAPS(A0, I);
25621 case PT_Bool:
25622 return emitGetFieldPopBool(A0, I);
25623 case PT_FixedPoint:
25624 return emitGetFieldPopFixedPoint(A0, I);
25625 case PT_Ptr:
25626 return emitGetFieldPopPtr(A0, I);
25627 case PT_MemberPtr:
25628 return emitGetFieldPopMemberPtr(A0, I);
25629 case PT_Float:
25630 return emitGetFieldPopFloat(A0, I);
25631 }
25632 llvm_unreachable("invalid enum value");
25633}
25634#endif
25635#ifdef GET_LINK_IMPL
25636bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25637 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
25638}
25639bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25640 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
25641}
25642bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25643 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
25644}
25645bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25646 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
25647}
25648bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25649 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
25650}
25651bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25652 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
25653}
25654bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25655 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
25656}
25657bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25658 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
25659}
25660bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25661 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
25662}
25663bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25664 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
25665}
25666bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25667 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
25668}
25669bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25670 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
25671}
25672bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25673 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
25674}
25675bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25676 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
25677}
25678bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25679 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
25680}
25681#endif
25682#ifdef GET_EVAL_IMPL
25683bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25684 if (!isActive()) return true;
25685 CurrentSource = L;
25686 return GetFieldPop<PT_Sint8>(S, OpPC, A0);
25687}
25688bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25689 if (!isActive()) return true;
25690 CurrentSource = L;
25691 return GetFieldPop<PT_Uint8>(S, OpPC, A0);
25692}
25693bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25694 if (!isActive()) return true;
25695 CurrentSource = L;
25696 return GetFieldPop<PT_Sint16>(S, OpPC, A0);
25697}
25698bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25699 if (!isActive()) return true;
25700 CurrentSource = L;
25701 return GetFieldPop<PT_Uint16>(S, OpPC, A0);
25702}
25703bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25704 if (!isActive()) return true;
25705 CurrentSource = L;
25706 return GetFieldPop<PT_Sint32>(S, OpPC, A0);
25707}
25708bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25709 if (!isActive()) return true;
25710 CurrentSource = L;
25711 return GetFieldPop<PT_Uint32>(S, OpPC, A0);
25712}
25713bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25714 if (!isActive()) return true;
25715 CurrentSource = L;
25716 return GetFieldPop<PT_Sint64>(S, OpPC, A0);
25717}
25718bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25719 if (!isActive()) return true;
25720 CurrentSource = L;
25721 return GetFieldPop<PT_Uint64>(S, OpPC, A0);
25722}
25723bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25724 if (!isActive()) return true;
25725 CurrentSource = L;
25726 return GetFieldPop<PT_IntAP>(S, OpPC, A0);
25727}
25728bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25729 if (!isActive()) return true;
25730 CurrentSource = L;
25731 return GetFieldPop<PT_IntAPS>(S, OpPC, A0);
25732}
25733bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25734 if (!isActive()) return true;
25735 CurrentSource = L;
25736 return GetFieldPop<PT_Bool>(S, OpPC, A0);
25737}
25738bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25739 if (!isActive()) return true;
25740 CurrentSource = L;
25741 return GetFieldPop<PT_FixedPoint>(S, OpPC, A0);
25742}
25743bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25744 if (!isActive()) return true;
25745 CurrentSource = L;
25746 return GetFieldPop<PT_Ptr>(S, OpPC, A0);
25747}
25748bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25749 if (!isActive()) return true;
25750 CurrentSource = L;
25751 return GetFieldPop<PT_MemberPtr>(S, OpPC, A0);
25752}
25753bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25754 if (!isActive()) return true;
25755 CurrentSource = L;
25756 return GetFieldPop<PT_Float>(S, OpPC, A0);
25757}
25758#endif
25759#ifdef GET_OPCODE_NAMES
25760OP_GetFnPtr,
25761#endif
25762#ifdef GET_INTERPFN_LIST
25763&Interp_GetFnPtr,
25764#endif
25765#ifdef GET_INTERPFN_DISPATCHERS
25766PRESERVE_NONE
25767static bool Interp_GetFnPtr(InterpState &S, CodePtr &PC) {
25768 {
25769 CodePtr OpPC = PC;
25770 const auto V0 = ReadArg<const Function *>(S, PC);
25771 if (!GetFnPtr(S, OpPC, V0))
25772 return false;
25773 }
25774#if USE_TAILCALLS
25775 MUSTTAIL return InterpNext(S, PC);
25776#else
25777 return true;
25778#endif
25779}
25780#endif
25781#ifdef GET_DISASM
25782case OP_GetFnPtr:
25783 Text.Op = PrintName("GetFnPtr");
25784 Text.Args.push_back(printArg<const Function *>(P, PC));
25785 break;
25786#endif
25787#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25788bool emitGetFnPtr( const Function * , SourceInfo);
25789#endif
25790#ifdef GET_LINK_IMPL
25791bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25792 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
25793}
25794#endif
25795#ifdef GET_EVAL_IMPL
25796bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25797 if (!isActive()) return true;
25798 CurrentSource = L;
25799 return GetFnPtr(S, OpPC, A0);
25800}
25801#endif
25802#ifdef GET_OPCODE_NAMES
25803OP_GetGlobalSint8,
25804OP_GetGlobalUint8,
25805OP_GetGlobalSint16,
25806OP_GetGlobalUint16,
25807OP_GetGlobalSint32,
25808OP_GetGlobalUint32,
25809OP_GetGlobalSint64,
25810OP_GetGlobalUint64,
25811OP_GetGlobalIntAP,
25812OP_GetGlobalIntAPS,
25813OP_GetGlobalBool,
25814OP_GetGlobalFixedPoint,
25815OP_GetGlobalPtr,
25816OP_GetGlobalMemberPtr,
25817OP_GetGlobalFloat,
25818#endif
25819#ifdef GET_INTERPFN_LIST
25820&Interp_GetGlobalSint8,
25821&Interp_GetGlobalUint8,
25822&Interp_GetGlobalSint16,
25823&Interp_GetGlobalUint16,
25824&Interp_GetGlobalSint32,
25825&Interp_GetGlobalUint32,
25826&Interp_GetGlobalSint64,
25827&Interp_GetGlobalUint64,
25828&Interp_GetGlobalIntAP,
25829&Interp_GetGlobalIntAPS,
25830&Interp_GetGlobalBool,
25831&Interp_GetGlobalFixedPoint,
25832&Interp_GetGlobalPtr,
25833&Interp_GetGlobalMemberPtr,
25834&Interp_GetGlobalFloat,
25835#endif
25836#ifdef GET_INTERPFN_DISPATCHERS
25837PRESERVE_NONE
25838static bool Interp_GetGlobalSint8(InterpState &S, CodePtr &PC) {
25839 {
25840 CodePtr OpPC = PC;
25841 const auto V0 = ReadArg<uint32_t>(S, PC);
25842 if (!GetGlobal<PT_Sint8>(S, OpPC, V0))
25843 return false;
25844 }
25845#if USE_TAILCALLS
25846 MUSTTAIL return InterpNext(S, PC);
25847#else
25848 return true;
25849#endif
25850}
25851PRESERVE_NONE
25852static bool Interp_GetGlobalUint8(InterpState &S, CodePtr &PC) {
25853 {
25854 CodePtr OpPC = PC;
25855 const auto V0 = ReadArg<uint32_t>(S, PC);
25856 if (!GetGlobal<PT_Uint8>(S, OpPC, V0))
25857 return false;
25858 }
25859#if USE_TAILCALLS
25860 MUSTTAIL return InterpNext(S, PC);
25861#else
25862 return true;
25863#endif
25864}
25865PRESERVE_NONE
25866static bool Interp_GetGlobalSint16(InterpState &S, CodePtr &PC) {
25867 {
25868 CodePtr OpPC = PC;
25869 const auto V0 = ReadArg<uint32_t>(S, PC);
25870 if (!GetGlobal<PT_Sint16>(S, OpPC, V0))
25871 return false;
25872 }
25873#if USE_TAILCALLS
25874 MUSTTAIL return InterpNext(S, PC);
25875#else
25876 return true;
25877#endif
25878}
25879PRESERVE_NONE
25880static bool Interp_GetGlobalUint16(InterpState &S, CodePtr &PC) {
25881 {
25882 CodePtr OpPC = PC;
25883 const auto V0 = ReadArg<uint32_t>(S, PC);
25884 if (!GetGlobal<PT_Uint16>(S, OpPC, V0))
25885 return false;
25886 }
25887#if USE_TAILCALLS
25888 MUSTTAIL return InterpNext(S, PC);
25889#else
25890 return true;
25891#endif
25892}
25893PRESERVE_NONE
25894static bool Interp_GetGlobalSint32(InterpState &S, CodePtr &PC) {
25895 {
25896 CodePtr OpPC = PC;
25897 const auto V0 = ReadArg<uint32_t>(S, PC);
25898 if (!GetGlobal<PT_Sint32>(S, OpPC, V0))
25899 return false;
25900 }
25901#if USE_TAILCALLS
25902 MUSTTAIL return InterpNext(S, PC);
25903#else
25904 return true;
25905#endif
25906}
25907PRESERVE_NONE
25908static bool Interp_GetGlobalUint32(InterpState &S, CodePtr &PC) {
25909 {
25910 CodePtr OpPC = PC;
25911 const auto V0 = ReadArg<uint32_t>(S, PC);
25912 if (!GetGlobal<PT_Uint32>(S, OpPC, V0))
25913 return false;
25914 }
25915#if USE_TAILCALLS
25916 MUSTTAIL return InterpNext(S, PC);
25917#else
25918 return true;
25919#endif
25920}
25921PRESERVE_NONE
25922static bool Interp_GetGlobalSint64(InterpState &S, CodePtr &PC) {
25923 {
25924 CodePtr OpPC = PC;
25925 const auto V0 = ReadArg<uint32_t>(S, PC);
25926 if (!GetGlobal<PT_Sint64>(S, OpPC, V0))
25927 return false;
25928 }
25929#if USE_TAILCALLS
25930 MUSTTAIL return InterpNext(S, PC);
25931#else
25932 return true;
25933#endif
25934}
25935PRESERVE_NONE
25936static bool Interp_GetGlobalUint64(InterpState &S, CodePtr &PC) {
25937 {
25938 CodePtr OpPC = PC;
25939 const auto V0 = ReadArg<uint32_t>(S, PC);
25940 if (!GetGlobal<PT_Uint64>(S, OpPC, V0))
25941 return false;
25942 }
25943#if USE_TAILCALLS
25944 MUSTTAIL return InterpNext(S, PC);
25945#else
25946 return true;
25947#endif
25948}
25949PRESERVE_NONE
25950static bool Interp_GetGlobalIntAP(InterpState &S, CodePtr &PC) {
25951 {
25952 CodePtr OpPC = PC;
25953 const auto V0 = ReadArg<uint32_t>(S, PC);
25954 if (!GetGlobal<PT_IntAP>(S, OpPC, V0))
25955 return false;
25956 }
25957#if USE_TAILCALLS
25958 MUSTTAIL return InterpNext(S, PC);
25959#else
25960 return true;
25961#endif
25962}
25963PRESERVE_NONE
25964static bool Interp_GetGlobalIntAPS(InterpState &S, CodePtr &PC) {
25965 {
25966 CodePtr OpPC = PC;
25967 const auto V0 = ReadArg<uint32_t>(S, PC);
25968 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0))
25969 return false;
25970 }
25971#if USE_TAILCALLS
25972 MUSTTAIL return InterpNext(S, PC);
25973#else
25974 return true;
25975#endif
25976}
25977PRESERVE_NONE
25978static bool Interp_GetGlobalBool(InterpState &S, CodePtr &PC) {
25979 {
25980 CodePtr OpPC = PC;
25981 const auto V0 = ReadArg<uint32_t>(S, PC);
25982 if (!GetGlobal<PT_Bool>(S, OpPC, V0))
25983 return false;
25984 }
25985#if USE_TAILCALLS
25986 MUSTTAIL return InterpNext(S, PC);
25987#else
25988 return true;
25989#endif
25990}
25991PRESERVE_NONE
25992static bool Interp_GetGlobalFixedPoint(InterpState &S, CodePtr &PC) {
25993 {
25994 CodePtr OpPC = PC;
25995 const auto V0 = ReadArg<uint32_t>(S, PC);
25996 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0))
25997 return false;
25998 }
25999#if USE_TAILCALLS
26000 MUSTTAIL return InterpNext(S, PC);
26001#else
26002 return true;
26003#endif
26004}
26005PRESERVE_NONE
26006static bool Interp_GetGlobalPtr(InterpState &S, CodePtr &PC) {
26007 {
26008 CodePtr OpPC = PC;
26009 const auto V0 = ReadArg<uint32_t>(S, PC);
26010 if (!GetGlobal<PT_Ptr>(S, OpPC, V0))
26011 return false;
26012 }
26013#if USE_TAILCALLS
26014 MUSTTAIL return InterpNext(S, PC);
26015#else
26016 return true;
26017#endif
26018}
26019PRESERVE_NONE
26020static bool Interp_GetGlobalMemberPtr(InterpState &S, CodePtr &PC) {
26021 {
26022 CodePtr OpPC = PC;
26023 const auto V0 = ReadArg<uint32_t>(S, PC);
26024 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0))
26025 return false;
26026 }
26027#if USE_TAILCALLS
26028 MUSTTAIL return InterpNext(S, PC);
26029#else
26030 return true;
26031#endif
26032}
26033PRESERVE_NONE
26034static bool Interp_GetGlobalFloat(InterpState &S, CodePtr &PC) {
26035 {
26036 CodePtr OpPC = PC;
26037 const auto V0 = ReadArg<uint32_t>(S, PC);
26038 if (!GetGlobal<PT_Float>(S, OpPC, V0))
26039 return false;
26040 }
26041#if USE_TAILCALLS
26042 MUSTTAIL return InterpNext(S, PC);
26043#else
26044 return true;
26045#endif
26046}
26047#endif
26048#ifdef GET_DISASM
26049case OP_GetGlobalSint8:
26050 Text.Op = PrintName("GetGlobalSint8");
26051 Text.Args.push_back(printArg<uint32_t>(P, PC));
26052 break;
26053case OP_GetGlobalUint8:
26054 Text.Op = PrintName("GetGlobalUint8");
26055 Text.Args.push_back(printArg<uint32_t>(P, PC));
26056 break;
26057case OP_GetGlobalSint16:
26058 Text.Op = PrintName("GetGlobalSint16");
26059 Text.Args.push_back(printArg<uint32_t>(P, PC));
26060 break;
26061case OP_GetGlobalUint16:
26062 Text.Op = PrintName("GetGlobalUint16");
26063 Text.Args.push_back(printArg<uint32_t>(P, PC));
26064 break;
26065case OP_GetGlobalSint32:
26066 Text.Op = PrintName("GetGlobalSint32");
26067 Text.Args.push_back(printArg<uint32_t>(P, PC));
26068 break;
26069case OP_GetGlobalUint32:
26070 Text.Op = PrintName("GetGlobalUint32");
26071 Text.Args.push_back(printArg<uint32_t>(P, PC));
26072 break;
26073case OP_GetGlobalSint64:
26074 Text.Op = PrintName("GetGlobalSint64");
26075 Text.Args.push_back(printArg<uint32_t>(P, PC));
26076 break;
26077case OP_GetGlobalUint64:
26078 Text.Op = PrintName("GetGlobalUint64");
26079 Text.Args.push_back(printArg<uint32_t>(P, PC));
26080 break;
26081case OP_GetGlobalIntAP:
26082 Text.Op = PrintName("GetGlobalIntAP");
26083 Text.Args.push_back(printArg<uint32_t>(P, PC));
26084 break;
26085case OP_GetGlobalIntAPS:
26086 Text.Op = PrintName("GetGlobalIntAPS");
26087 Text.Args.push_back(printArg<uint32_t>(P, PC));
26088 break;
26089case OP_GetGlobalBool:
26090 Text.Op = PrintName("GetGlobalBool");
26091 Text.Args.push_back(printArg<uint32_t>(P, PC));
26092 break;
26093case OP_GetGlobalFixedPoint:
26094 Text.Op = PrintName("GetGlobalFixedPoint");
26095 Text.Args.push_back(printArg<uint32_t>(P, PC));
26096 break;
26097case OP_GetGlobalPtr:
26098 Text.Op = PrintName("GetGlobalPtr");
26099 Text.Args.push_back(printArg<uint32_t>(P, PC));
26100 break;
26101case OP_GetGlobalMemberPtr:
26102 Text.Op = PrintName("GetGlobalMemberPtr");
26103 Text.Args.push_back(printArg<uint32_t>(P, PC));
26104 break;
26105case OP_GetGlobalFloat:
26106 Text.Op = PrintName("GetGlobalFloat");
26107 Text.Args.push_back(printArg<uint32_t>(P, PC));
26108 break;
26109#endif
26110#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26111bool emitGetGlobalSint8( uint32_t , SourceInfo);
26112bool emitGetGlobalUint8( uint32_t , SourceInfo);
26113bool emitGetGlobalSint16( uint32_t , SourceInfo);
26114bool emitGetGlobalUint16( uint32_t , SourceInfo);
26115bool emitGetGlobalSint32( uint32_t , SourceInfo);
26116bool emitGetGlobalUint32( uint32_t , SourceInfo);
26117bool emitGetGlobalSint64( uint32_t , SourceInfo);
26118bool emitGetGlobalUint64( uint32_t , SourceInfo);
26119bool emitGetGlobalIntAP( uint32_t , SourceInfo);
26120bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
26121bool emitGetGlobalBool( uint32_t , SourceInfo);
26122bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
26123bool emitGetGlobalPtr( uint32_t , SourceInfo);
26124bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
26125bool emitGetGlobalFloat( uint32_t , SourceInfo);
26126#endif
26127#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26128[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
26129#endif
26130#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26131bool
26132#if defined(GET_EVAL_IMPL)
26133EvalEmitter
26134#else
26135ByteCodeEmitter
26136#endif
26137::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
26138 switch (T0) {
26139 case PT_Sint8:
26140 return emitGetGlobalSint8(A0, I);
26141 case PT_Uint8:
26142 return emitGetGlobalUint8(A0, I);
26143 case PT_Sint16:
26144 return emitGetGlobalSint16(A0, I);
26145 case PT_Uint16:
26146 return emitGetGlobalUint16(A0, I);
26147 case PT_Sint32:
26148 return emitGetGlobalSint32(A0, I);
26149 case PT_Uint32:
26150 return emitGetGlobalUint32(A0, I);
26151 case PT_Sint64:
26152 return emitGetGlobalSint64(A0, I);
26153 case PT_Uint64:
26154 return emitGetGlobalUint64(A0, I);
26155 case PT_IntAP:
26156 return emitGetGlobalIntAP(A0, I);
26157 case PT_IntAPS:
26158 return emitGetGlobalIntAPS(A0, I);
26159 case PT_Bool:
26160 return emitGetGlobalBool(A0, I);
26161 case PT_FixedPoint:
26162 return emitGetGlobalFixedPoint(A0, I);
26163 case PT_Ptr:
26164 return emitGetGlobalPtr(A0, I);
26165 case PT_MemberPtr:
26166 return emitGetGlobalMemberPtr(A0, I);
26167 case PT_Float:
26168 return emitGetGlobalFloat(A0, I);
26169 }
26170 llvm_unreachable("invalid enum value");
26171}
26172#endif
26173#ifdef GET_LINK_IMPL
26174bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
26175 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
26176}
26177bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
26178 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
26179}
26180bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
26181 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
26182}
26183bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
26184 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
26185}
26186bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
26187 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
26188}
26189bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
26190 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
26191}
26192bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
26193 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
26194}
26195bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
26196 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
26197}
26198bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
26199 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
26200}
26201bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
26202 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
26203}
26204bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
26205 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
26206}
26207bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26208 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
26209}
26210bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
26211 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
26212}
26213bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26214 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
26215}
26216bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
26217 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
26218}
26219#endif
26220#ifdef GET_EVAL_IMPL
26221bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
26222 if (!isActive()) return true;
26223 CurrentSource = L;
26224 return GetGlobal<PT_Sint8>(S, OpPC, A0);
26225}
26226bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
26227 if (!isActive()) return true;
26228 CurrentSource = L;
26229 return GetGlobal<PT_Uint8>(S, OpPC, A0);
26230}
26231bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
26232 if (!isActive()) return true;
26233 CurrentSource = L;
26234 return GetGlobal<PT_Sint16>(S, OpPC, A0);
26235}
26236bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
26237 if (!isActive()) return true;
26238 CurrentSource = L;
26239 return GetGlobal<PT_Uint16>(S, OpPC, A0);
26240}
26241bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
26242 if (!isActive()) return true;
26243 CurrentSource = L;
26244 return GetGlobal<PT_Sint32>(S, OpPC, A0);
26245}
26246bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
26247 if (!isActive()) return true;
26248 CurrentSource = L;
26249 return GetGlobal<PT_Uint32>(S, OpPC, A0);
26250}
26251bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
26252 if (!isActive()) return true;
26253 CurrentSource = L;
26254 return GetGlobal<PT_Sint64>(S, OpPC, A0);
26255}
26256bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
26257 if (!isActive()) return true;
26258 CurrentSource = L;
26259 return GetGlobal<PT_Uint64>(S, OpPC, A0);
26260}
26261bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
26262 if (!isActive()) return true;
26263 CurrentSource = L;
26264 return GetGlobal<PT_IntAP>(S, OpPC, A0);
26265}
26266bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
26267 if (!isActive()) return true;
26268 CurrentSource = L;
26269 return GetGlobal<PT_IntAPS>(S, OpPC, A0);
26270}
26271bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
26272 if (!isActive()) return true;
26273 CurrentSource = L;
26274 return GetGlobal<PT_Bool>(S, OpPC, A0);
26275}
26276bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26277 if (!isActive()) return true;
26278 CurrentSource = L;
26279 return GetGlobal<PT_FixedPoint>(S, OpPC, A0);
26280}
26281bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
26282 if (!isActive()) return true;
26283 CurrentSource = L;
26284 return GetGlobal<PT_Ptr>(S, OpPC, A0);
26285}
26286bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26287 if (!isActive()) return true;
26288 CurrentSource = L;
26289 return GetGlobal<PT_MemberPtr>(S, OpPC, A0);
26290}
26291bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
26292 if (!isActive()) return true;
26293 CurrentSource = L;
26294 return GetGlobal<PT_Float>(S, OpPC, A0);
26295}
26296#endif
26297#ifdef GET_OPCODE_NAMES
26298OP_GetGlobalUncheckedSint8,
26299OP_GetGlobalUncheckedUint8,
26300OP_GetGlobalUncheckedSint16,
26301OP_GetGlobalUncheckedUint16,
26302OP_GetGlobalUncheckedSint32,
26303OP_GetGlobalUncheckedUint32,
26304OP_GetGlobalUncheckedSint64,
26305OP_GetGlobalUncheckedUint64,
26306OP_GetGlobalUncheckedIntAP,
26307OP_GetGlobalUncheckedIntAPS,
26308OP_GetGlobalUncheckedBool,
26309OP_GetGlobalUncheckedFixedPoint,
26310OP_GetGlobalUncheckedPtr,
26311OP_GetGlobalUncheckedMemberPtr,
26312OP_GetGlobalUncheckedFloat,
26313#endif
26314#ifdef GET_INTERPFN_LIST
26315&Interp_GetGlobalUncheckedSint8,
26316&Interp_GetGlobalUncheckedUint8,
26317&Interp_GetGlobalUncheckedSint16,
26318&Interp_GetGlobalUncheckedUint16,
26319&Interp_GetGlobalUncheckedSint32,
26320&Interp_GetGlobalUncheckedUint32,
26321&Interp_GetGlobalUncheckedSint64,
26322&Interp_GetGlobalUncheckedUint64,
26323&Interp_GetGlobalUncheckedIntAP,
26324&Interp_GetGlobalUncheckedIntAPS,
26325&Interp_GetGlobalUncheckedBool,
26326&Interp_GetGlobalUncheckedFixedPoint,
26327&Interp_GetGlobalUncheckedPtr,
26328&Interp_GetGlobalUncheckedMemberPtr,
26329&Interp_GetGlobalUncheckedFloat,
26330#endif
26331#ifdef GET_INTERPFN_DISPATCHERS
26332PRESERVE_NONE
26333static bool Interp_GetGlobalUncheckedSint8(InterpState &S, CodePtr &PC) {
26334 {
26335 CodePtr OpPC = PC;
26336 const auto V0 = ReadArg<uint32_t>(S, PC);
26337 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0))
26338 return false;
26339 }
26340#if USE_TAILCALLS
26341 MUSTTAIL return InterpNext(S, PC);
26342#else
26343 return true;
26344#endif
26345}
26346PRESERVE_NONE
26347static bool Interp_GetGlobalUncheckedUint8(InterpState &S, CodePtr &PC) {
26348 {
26349 CodePtr OpPC = PC;
26350 const auto V0 = ReadArg<uint32_t>(S, PC);
26351 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0))
26352 return false;
26353 }
26354#if USE_TAILCALLS
26355 MUSTTAIL return InterpNext(S, PC);
26356#else
26357 return true;
26358#endif
26359}
26360PRESERVE_NONE
26361static bool Interp_GetGlobalUncheckedSint16(InterpState &S, CodePtr &PC) {
26362 {
26363 CodePtr OpPC = PC;
26364 const auto V0 = ReadArg<uint32_t>(S, PC);
26365 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0))
26366 return false;
26367 }
26368#if USE_TAILCALLS
26369 MUSTTAIL return InterpNext(S, PC);
26370#else
26371 return true;
26372#endif
26373}
26374PRESERVE_NONE
26375static bool Interp_GetGlobalUncheckedUint16(InterpState &S, CodePtr &PC) {
26376 {
26377 CodePtr OpPC = PC;
26378 const auto V0 = ReadArg<uint32_t>(S, PC);
26379 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0))
26380 return false;
26381 }
26382#if USE_TAILCALLS
26383 MUSTTAIL return InterpNext(S, PC);
26384#else
26385 return true;
26386#endif
26387}
26388PRESERVE_NONE
26389static bool Interp_GetGlobalUncheckedSint32(InterpState &S, CodePtr &PC) {
26390 {
26391 CodePtr OpPC = PC;
26392 const auto V0 = ReadArg<uint32_t>(S, PC);
26393 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0))
26394 return false;
26395 }
26396#if USE_TAILCALLS
26397 MUSTTAIL return InterpNext(S, PC);
26398#else
26399 return true;
26400#endif
26401}
26402PRESERVE_NONE
26403static bool Interp_GetGlobalUncheckedUint32(InterpState &S, CodePtr &PC) {
26404 {
26405 CodePtr OpPC = PC;
26406 const auto V0 = ReadArg<uint32_t>(S, PC);
26407 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0))
26408 return false;
26409 }
26410#if USE_TAILCALLS
26411 MUSTTAIL return InterpNext(S, PC);
26412#else
26413 return true;
26414#endif
26415}
26416PRESERVE_NONE
26417static bool Interp_GetGlobalUncheckedSint64(InterpState &S, CodePtr &PC) {
26418 {
26419 CodePtr OpPC = PC;
26420 const auto V0 = ReadArg<uint32_t>(S, PC);
26421 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0))
26422 return false;
26423 }
26424#if USE_TAILCALLS
26425 MUSTTAIL return InterpNext(S, PC);
26426#else
26427 return true;
26428#endif
26429}
26430PRESERVE_NONE
26431static bool Interp_GetGlobalUncheckedUint64(InterpState &S, CodePtr &PC) {
26432 {
26433 CodePtr OpPC = PC;
26434 const auto V0 = ReadArg<uint32_t>(S, PC);
26435 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0))
26436 return false;
26437 }
26438#if USE_TAILCALLS
26439 MUSTTAIL return InterpNext(S, PC);
26440#else
26441 return true;
26442#endif
26443}
26444PRESERVE_NONE
26445static bool Interp_GetGlobalUncheckedIntAP(InterpState &S, CodePtr &PC) {
26446 {
26447 CodePtr OpPC = PC;
26448 const auto V0 = ReadArg<uint32_t>(S, PC);
26449 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0))
26450 return false;
26451 }
26452#if USE_TAILCALLS
26453 MUSTTAIL return InterpNext(S, PC);
26454#else
26455 return true;
26456#endif
26457}
26458PRESERVE_NONE
26459static bool Interp_GetGlobalUncheckedIntAPS(InterpState &S, CodePtr &PC) {
26460 {
26461 CodePtr OpPC = PC;
26462 const auto V0 = ReadArg<uint32_t>(S, PC);
26463 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0))
26464 return false;
26465 }
26466#if USE_TAILCALLS
26467 MUSTTAIL return InterpNext(S, PC);
26468#else
26469 return true;
26470#endif
26471}
26472PRESERVE_NONE
26473static bool Interp_GetGlobalUncheckedBool(InterpState &S, CodePtr &PC) {
26474 {
26475 CodePtr OpPC = PC;
26476 const auto V0 = ReadArg<uint32_t>(S, PC);
26477 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0))
26478 return false;
26479 }
26480#if USE_TAILCALLS
26481 MUSTTAIL return InterpNext(S, PC);
26482#else
26483 return true;
26484#endif
26485}
26486PRESERVE_NONE
26487static bool Interp_GetGlobalUncheckedFixedPoint(InterpState &S, CodePtr &PC) {
26488 {
26489 CodePtr OpPC = PC;
26490 const auto V0 = ReadArg<uint32_t>(S, PC);
26491 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0))
26492 return false;
26493 }
26494#if USE_TAILCALLS
26495 MUSTTAIL return InterpNext(S, PC);
26496#else
26497 return true;
26498#endif
26499}
26500PRESERVE_NONE
26501static bool Interp_GetGlobalUncheckedPtr(InterpState &S, CodePtr &PC) {
26502 {
26503 CodePtr OpPC = PC;
26504 const auto V0 = ReadArg<uint32_t>(S, PC);
26505 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0))
26506 return false;
26507 }
26508#if USE_TAILCALLS
26509 MUSTTAIL return InterpNext(S, PC);
26510#else
26511 return true;
26512#endif
26513}
26514PRESERVE_NONE
26515static bool Interp_GetGlobalUncheckedMemberPtr(InterpState &S, CodePtr &PC) {
26516 {
26517 CodePtr OpPC = PC;
26518 const auto V0 = ReadArg<uint32_t>(S, PC);
26519 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0))
26520 return false;
26521 }
26522#if USE_TAILCALLS
26523 MUSTTAIL return InterpNext(S, PC);
26524#else
26525 return true;
26526#endif
26527}
26528PRESERVE_NONE
26529static bool Interp_GetGlobalUncheckedFloat(InterpState &S, CodePtr &PC) {
26530 {
26531 CodePtr OpPC = PC;
26532 const auto V0 = ReadArg<uint32_t>(S, PC);
26533 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0))
26534 return false;
26535 }
26536#if USE_TAILCALLS
26537 MUSTTAIL return InterpNext(S, PC);
26538#else
26539 return true;
26540#endif
26541}
26542#endif
26543#ifdef GET_DISASM
26544case OP_GetGlobalUncheckedSint8:
26545 Text.Op = PrintName("GetGlobalUncheckedSint8");
26546 Text.Args.push_back(printArg<uint32_t>(P, PC));
26547 break;
26548case OP_GetGlobalUncheckedUint8:
26549 Text.Op = PrintName("GetGlobalUncheckedUint8");
26550 Text.Args.push_back(printArg<uint32_t>(P, PC));
26551 break;
26552case OP_GetGlobalUncheckedSint16:
26553 Text.Op = PrintName("GetGlobalUncheckedSint16");
26554 Text.Args.push_back(printArg<uint32_t>(P, PC));
26555 break;
26556case OP_GetGlobalUncheckedUint16:
26557 Text.Op = PrintName("GetGlobalUncheckedUint16");
26558 Text.Args.push_back(printArg<uint32_t>(P, PC));
26559 break;
26560case OP_GetGlobalUncheckedSint32:
26561 Text.Op = PrintName("GetGlobalUncheckedSint32");
26562 Text.Args.push_back(printArg<uint32_t>(P, PC));
26563 break;
26564case OP_GetGlobalUncheckedUint32:
26565 Text.Op = PrintName("GetGlobalUncheckedUint32");
26566 Text.Args.push_back(printArg<uint32_t>(P, PC));
26567 break;
26568case OP_GetGlobalUncheckedSint64:
26569 Text.Op = PrintName("GetGlobalUncheckedSint64");
26570 Text.Args.push_back(printArg<uint32_t>(P, PC));
26571 break;
26572case OP_GetGlobalUncheckedUint64:
26573 Text.Op = PrintName("GetGlobalUncheckedUint64");
26574 Text.Args.push_back(printArg<uint32_t>(P, PC));
26575 break;
26576case OP_GetGlobalUncheckedIntAP:
26577 Text.Op = PrintName("GetGlobalUncheckedIntAP");
26578 Text.Args.push_back(printArg<uint32_t>(P, PC));
26579 break;
26580case OP_GetGlobalUncheckedIntAPS:
26581 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
26582 Text.Args.push_back(printArg<uint32_t>(P, PC));
26583 break;
26584case OP_GetGlobalUncheckedBool:
26585 Text.Op = PrintName("GetGlobalUncheckedBool");
26586 Text.Args.push_back(printArg<uint32_t>(P, PC));
26587 break;
26588case OP_GetGlobalUncheckedFixedPoint:
26589 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
26590 Text.Args.push_back(printArg<uint32_t>(P, PC));
26591 break;
26592case OP_GetGlobalUncheckedPtr:
26593 Text.Op = PrintName("GetGlobalUncheckedPtr");
26594 Text.Args.push_back(printArg<uint32_t>(P, PC));
26595 break;
26596case OP_GetGlobalUncheckedMemberPtr:
26597 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
26598 Text.Args.push_back(printArg<uint32_t>(P, PC));
26599 break;
26600case OP_GetGlobalUncheckedFloat:
26601 Text.Op = PrintName("GetGlobalUncheckedFloat");
26602 Text.Args.push_back(printArg<uint32_t>(P, PC));
26603 break;
26604#endif
26605#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26606bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
26607bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
26608bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
26609bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
26610bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
26611bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
26612bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
26613bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
26614bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
26615bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
26616bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
26617bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
26618bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
26619bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
26620bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
26621#endif
26622#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26623[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
26624#endif
26625#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26626bool
26627#if defined(GET_EVAL_IMPL)
26628EvalEmitter
26629#else
26630ByteCodeEmitter
26631#endif
26632::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
26633 switch (T0) {
26634 case PT_Sint8:
26635 return emitGetGlobalUncheckedSint8(A0, I);
26636 case PT_Uint8:
26637 return emitGetGlobalUncheckedUint8(A0, I);
26638 case PT_Sint16:
26639 return emitGetGlobalUncheckedSint16(A0, I);
26640 case PT_Uint16:
26641 return emitGetGlobalUncheckedUint16(A0, I);
26642 case PT_Sint32:
26643 return emitGetGlobalUncheckedSint32(A0, I);
26644 case PT_Uint32:
26645 return emitGetGlobalUncheckedUint32(A0, I);
26646 case PT_Sint64:
26647 return emitGetGlobalUncheckedSint64(A0, I);
26648 case PT_Uint64:
26649 return emitGetGlobalUncheckedUint64(A0, I);
26650 case PT_IntAP:
26651 return emitGetGlobalUncheckedIntAP(A0, I);
26652 case PT_IntAPS:
26653 return emitGetGlobalUncheckedIntAPS(A0, I);
26654 case PT_Bool:
26655 return emitGetGlobalUncheckedBool(A0, I);
26656 case PT_FixedPoint:
26657 return emitGetGlobalUncheckedFixedPoint(A0, I);
26658 case PT_Ptr:
26659 return emitGetGlobalUncheckedPtr(A0, I);
26660 case PT_MemberPtr:
26661 return emitGetGlobalUncheckedMemberPtr(A0, I);
26662 case PT_Float:
26663 return emitGetGlobalUncheckedFloat(A0, I);
26664 }
26665 llvm_unreachable("invalid enum value");
26666}
26667#endif
26668#ifdef GET_LINK_IMPL
26669bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26670 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
26671}
26672bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26673 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
26674}
26675bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26676 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
26677}
26678bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26679 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
26680}
26681bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26682 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
26683}
26684bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26685 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
26686}
26687bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26688 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
26689}
26690bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26691 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
26692}
26693bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26694 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
26695}
26696bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26697 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
26698}
26699bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26700 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
26701}
26702bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26703 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
26704}
26705bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26706 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
26707}
26708bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26709 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
26710}
26711bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26712 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
26713}
26714#endif
26715#ifdef GET_EVAL_IMPL
26716bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26717 if (!isActive()) return true;
26718 CurrentSource = L;
26719 return GetGlobalUnchecked<PT_Sint8>(S, OpPC, A0);
26720}
26721bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26722 if (!isActive()) return true;
26723 CurrentSource = L;
26724 return GetGlobalUnchecked<PT_Uint8>(S, OpPC, A0);
26725}
26726bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26727 if (!isActive()) return true;
26728 CurrentSource = L;
26729 return GetGlobalUnchecked<PT_Sint16>(S, OpPC, A0);
26730}
26731bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26732 if (!isActive()) return true;
26733 CurrentSource = L;
26734 return GetGlobalUnchecked<PT_Uint16>(S, OpPC, A0);
26735}
26736bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26737 if (!isActive()) return true;
26738 CurrentSource = L;
26739 return GetGlobalUnchecked<PT_Sint32>(S, OpPC, A0);
26740}
26741bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26742 if (!isActive()) return true;
26743 CurrentSource = L;
26744 return GetGlobalUnchecked<PT_Uint32>(S, OpPC, A0);
26745}
26746bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26747 if (!isActive()) return true;
26748 CurrentSource = L;
26749 return GetGlobalUnchecked<PT_Sint64>(S, OpPC, A0);
26750}
26751bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26752 if (!isActive()) return true;
26753 CurrentSource = L;
26754 return GetGlobalUnchecked<PT_Uint64>(S, OpPC, A0);
26755}
26756bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26757 if (!isActive()) return true;
26758 CurrentSource = L;
26759 return GetGlobalUnchecked<PT_IntAP>(S, OpPC, A0);
26760}
26761bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26762 if (!isActive()) return true;
26763 CurrentSource = L;
26764 return GetGlobalUnchecked<PT_IntAPS>(S, OpPC, A0);
26765}
26766bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26767 if (!isActive()) return true;
26768 CurrentSource = L;
26769 return GetGlobalUnchecked<PT_Bool>(S, OpPC, A0);
26770}
26771bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26772 if (!isActive()) return true;
26773 CurrentSource = L;
26774 return GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, A0);
26775}
26776bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26777 if (!isActive()) return true;
26778 CurrentSource = L;
26779 return GetGlobalUnchecked<PT_Ptr>(S, OpPC, A0);
26780}
26781bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26782 if (!isActive()) return true;
26783 CurrentSource = L;
26784 return GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, A0);
26785}
26786bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26787 if (!isActive()) return true;
26788 CurrentSource = L;
26789 return GetGlobalUnchecked<PT_Float>(S, OpPC, A0);
26790}
26791#endif
26792#ifdef GET_OPCODE_NAMES
26793OP_GetIntPtrSint8,
26794OP_GetIntPtrUint8,
26795OP_GetIntPtrSint16,
26796OP_GetIntPtrUint16,
26797OP_GetIntPtrSint32,
26798OP_GetIntPtrUint32,
26799OP_GetIntPtrSint64,
26800OP_GetIntPtrUint64,
26801OP_GetIntPtrIntAP,
26802OP_GetIntPtrIntAPS,
26803OP_GetIntPtrBool,
26804OP_GetIntPtrFixedPoint,
26805#endif
26806#ifdef GET_INTERPFN_LIST
26807&Interp_GetIntPtrSint8,
26808&Interp_GetIntPtrUint8,
26809&Interp_GetIntPtrSint16,
26810&Interp_GetIntPtrUint16,
26811&Interp_GetIntPtrSint32,
26812&Interp_GetIntPtrUint32,
26813&Interp_GetIntPtrSint64,
26814&Interp_GetIntPtrUint64,
26815&Interp_GetIntPtrIntAP,
26816&Interp_GetIntPtrIntAPS,
26817&Interp_GetIntPtrBool,
26818&Interp_GetIntPtrFixedPoint,
26819#endif
26820#ifdef GET_INTERPFN_DISPATCHERS
26821PRESERVE_NONE
26822static bool Interp_GetIntPtrSint8(InterpState &S, CodePtr &PC) {
26823 {
26824 CodePtr OpPC = PC;
26825 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26826 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0))
26827 return false;
26828 }
26829#if USE_TAILCALLS
26830 MUSTTAIL return InterpNext(S, PC);
26831#else
26832 return true;
26833#endif
26834}
26835PRESERVE_NONE
26836static bool Interp_GetIntPtrUint8(InterpState &S, CodePtr &PC) {
26837 {
26838 CodePtr OpPC = PC;
26839 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26840 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0))
26841 return false;
26842 }
26843#if USE_TAILCALLS
26844 MUSTTAIL return InterpNext(S, PC);
26845#else
26846 return true;
26847#endif
26848}
26849PRESERVE_NONE
26850static bool Interp_GetIntPtrSint16(InterpState &S, CodePtr &PC) {
26851 {
26852 CodePtr OpPC = PC;
26853 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26854 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0))
26855 return false;
26856 }
26857#if USE_TAILCALLS
26858 MUSTTAIL return InterpNext(S, PC);
26859#else
26860 return true;
26861#endif
26862}
26863PRESERVE_NONE
26864static bool Interp_GetIntPtrUint16(InterpState &S, CodePtr &PC) {
26865 {
26866 CodePtr OpPC = PC;
26867 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26868 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0))
26869 return false;
26870 }
26871#if USE_TAILCALLS
26872 MUSTTAIL return InterpNext(S, PC);
26873#else
26874 return true;
26875#endif
26876}
26877PRESERVE_NONE
26878static bool Interp_GetIntPtrSint32(InterpState &S, CodePtr &PC) {
26879 {
26880 CodePtr OpPC = PC;
26881 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26882 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0))
26883 return false;
26884 }
26885#if USE_TAILCALLS
26886 MUSTTAIL return InterpNext(S, PC);
26887#else
26888 return true;
26889#endif
26890}
26891PRESERVE_NONE
26892static bool Interp_GetIntPtrUint32(InterpState &S, CodePtr &PC) {
26893 {
26894 CodePtr OpPC = PC;
26895 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26896 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0))
26897 return false;
26898 }
26899#if USE_TAILCALLS
26900 MUSTTAIL return InterpNext(S, PC);
26901#else
26902 return true;
26903#endif
26904}
26905PRESERVE_NONE
26906static bool Interp_GetIntPtrSint64(InterpState &S, CodePtr &PC) {
26907 {
26908 CodePtr OpPC = PC;
26909 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26910 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0))
26911 return false;
26912 }
26913#if USE_TAILCALLS
26914 MUSTTAIL return InterpNext(S, PC);
26915#else
26916 return true;
26917#endif
26918}
26919PRESERVE_NONE
26920static bool Interp_GetIntPtrUint64(InterpState &S, CodePtr &PC) {
26921 {
26922 CodePtr OpPC = PC;
26923 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26924 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0))
26925 return false;
26926 }
26927#if USE_TAILCALLS
26928 MUSTTAIL return InterpNext(S, PC);
26929#else
26930 return true;
26931#endif
26932}
26933PRESERVE_NONE
26934static bool Interp_GetIntPtrIntAP(InterpState &S, CodePtr &PC) {
26935 {
26936 CodePtr OpPC = PC;
26937 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26938 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0))
26939 return false;
26940 }
26941#if USE_TAILCALLS
26942 MUSTTAIL return InterpNext(S, PC);
26943#else
26944 return true;
26945#endif
26946}
26947PRESERVE_NONE
26948static bool Interp_GetIntPtrIntAPS(InterpState &S, CodePtr &PC) {
26949 {
26950 CodePtr OpPC = PC;
26951 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26952 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0))
26953 return false;
26954 }
26955#if USE_TAILCALLS
26956 MUSTTAIL return InterpNext(S, PC);
26957#else
26958 return true;
26959#endif
26960}
26961PRESERVE_NONE
26962static bool Interp_GetIntPtrBool(InterpState &S, CodePtr &PC) {
26963 {
26964 CodePtr OpPC = PC;
26965 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26966 if (!GetIntPtr<PT_Bool>(S, OpPC, V0))
26967 return false;
26968 }
26969#if USE_TAILCALLS
26970 MUSTTAIL return InterpNext(S, PC);
26971#else
26972 return true;
26973#endif
26974}
26975PRESERVE_NONE
26976static bool Interp_GetIntPtrFixedPoint(InterpState &S, CodePtr &PC) {
26977 {
26978 CodePtr OpPC = PC;
26979 const auto V0 = ReadArg<const Descriptor *>(S, PC);
26980 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0))
26981 return false;
26982 }
26983#if USE_TAILCALLS
26984 MUSTTAIL return InterpNext(S, PC);
26985#else
26986 return true;
26987#endif
26988}
26989#endif
26990#ifdef GET_DISASM
26991case OP_GetIntPtrSint8:
26992 Text.Op = PrintName("GetIntPtrSint8");
26993 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
26994 break;
26995case OP_GetIntPtrUint8:
26996 Text.Op = PrintName("GetIntPtrUint8");
26997 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
26998 break;
26999case OP_GetIntPtrSint16:
27000 Text.Op = PrintName("GetIntPtrSint16");
27001 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27002 break;
27003case OP_GetIntPtrUint16:
27004 Text.Op = PrintName("GetIntPtrUint16");
27005 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27006 break;
27007case OP_GetIntPtrSint32:
27008 Text.Op = PrintName("GetIntPtrSint32");
27009 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27010 break;
27011case OP_GetIntPtrUint32:
27012 Text.Op = PrintName("GetIntPtrUint32");
27013 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27014 break;
27015case OP_GetIntPtrSint64:
27016 Text.Op = PrintName("GetIntPtrSint64");
27017 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27018 break;
27019case OP_GetIntPtrUint64:
27020 Text.Op = PrintName("GetIntPtrUint64");
27021 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27022 break;
27023case OP_GetIntPtrIntAP:
27024 Text.Op = PrintName("GetIntPtrIntAP");
27025 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27026 break;
27027case OP_GetIntPtrIntAPS:
27028 Text.Op = PrintName("GetIntPtrIntAPS");
27029 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27030 break;
27031case OP_GetIntPtrBool:
27032 Text.Op = PrintName("GetIntPtrBool");
27033 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27034 break;
27035case OP_GetIntPtrFixedPoint:
27036 Text.Op = PrintName("GetIntPtrFixedPoint");
27037 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
27038 break;
27039#endif
27040#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27041bool emitGetIntPtrSint8( const Descriptor * , SourceInfo);
27042bool emitGetIntPtrUint8( const Descriptor * , SourceInfo);
27043bool emitGetIntPtrSint16( const Descriptor * , SourceInfo);
27044bool emitGetIntPtrUint16( const Descriptor * , SourceInfo);
27045bool emitGetIntPtrSint32( const Descriptor * , SourceInfo);
27046bool emitGetIntPtrUint32( const Descriptor * , SourceInfo);
27047bool emitGetIntPtrSint64( const Descriptor * , SourceInfo);
27048bool emitGetIntPtrUint64( const Descriptor * , SourceInfo);
27049bool emitGetIntPtrIntAP( const Descriptor * , SourceInfo);
27050bool emitGetIntPtrIntAPS( const Descriptor * , SourceInfo);
27051bool emitGetIntPtrBool( const Descriptor * , SourceInfo);
27052bool emitGetIntPtrFixedPoint( const Descriptor * , SourceInfo);
27053#endif
27054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27055[[nodiscard]] bool emitGetIntPtr(PrimType, const Descriptor *, SourceInfo I);
27056#endif
27057#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27058bool
27059#if defined(GET_EVAL_IMPL)
27060EvalEmitter
27061#else
27062ByteCodeEmitter
27063#endif
27064::emitGetIntPtr(PrimType T0, const Descriptor * A0, SourceInfo I) {
27065 switch (T0) {
27066 case PT_Sint8:
27067 return emitGetIntPtrSint8(A0, I);
27068 case PT_Uint8:
27069 return emitGetIntPtrUint8(A0, I);
27070 case PT_Sint16:
27071 return emitGetIntPtrSint16(A0, I);
27072 case PT_Uint16:
27073 return emitGetIntPtrUint16(A0, I);
27074 case PT_Sint32:
27075 return emitGetIntPtrSint32(A0, I);
27076 case PT_Uint32:
27077 return emitGetIntPtrUint32(A0, I);
27078 case PT_Sint64:
27079 return emitGetIntPtrSint64(A0, I);
27080 case PT_Uint64:
27081 return emitGetIntPtrUint64(A0, I);
27082 case PT_IntAP:
27083 return emitGetIntPtrIntAP(A0, I);
27084 case PT_IntAPS:
27085 return emitGetIntPtrIntAPS(A0, I);
27086 case PT_Bool:
27087 return emitGetIntPtrBool(A0, I);
27088 case PT_FixedPoint:
27089 return emitGetIntPtrFixedPoint(A0, I);
27090 default: llvm_unreachable("invalid type: emitGetIntPtr");
27091 }
27092 llvm_unreachable("invalid enum value");
27093}
27094#endif
27095#ifdef GET_LINK_IMPL
27096bool ByteCodeEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
27097 return emitOp<const Descriptor *>(OP_GetIntPtrSint8, A0, L);
27098}
27099bool ByteCodeEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
27100 return emitOp<const Descriptor *>(OP_GetIntPtrUint8, A0, L);
27101}
27102bool ByteCodeEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
27103 return emitOp<const Descriptor *>(OP_GetIntPtrSint16, A0, L);
27104}
27105bool ByteCodeEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
27106 return emitOp<const Descriptor *>(OP_GetIntPtrUint16, A0, L);
27107}
27108bool ByteCodeEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
27109 return emitOp<const Descriptor *>(OP_GetIntPtrSint32, A0, L);
27110}
27111bool ByteCodeEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
27112 return emitOp<const Descriptor *>(OP_GetIntPtrUint32, A0, L);
27113}
27114bool ByteCodeEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
27115 return emitOp<const Descriptor *>(OP_GetIntPtrSint64, A0, L);
27116}
27117bool ByteCodeEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
27118 return emitOp<const Descriptor *>(OP_GetIntPtrUint64, A0, L);
27119}
27120bool ByteCodeEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
27121 return emitOp<const Descriptor *>(OP_GetIntPtrIntAP, A0, L);
27122}
27123bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
27124 return emitOp<const Descriptor *>(OP_GetIntPtrIntAPS, A0, L);
27125}
27126bool ByteCodeEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
27127 return emitOp<const Descriptor *>(OP_GetIntPtrBool, A0, L);
27128}
27129bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
27130 return emitOp<const Descriptor *>(OP_GetIntPtrFixedPoint, A0, L);
27131}
27132#endif
27133#ifdef GET_EVAL_IMPL
27134bool EvalEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
27135 if (!isActive()) return true;
27136 CurrentSource = L;
27137 return GetIntPtr<PT_Sint8>(S, OpPC, A0);
27138}
27139bool EvalEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
27140 if (!isActive()) return true;
27141 CurrentSource = L;
27142 return GetIntPtr<PT_Uint8>(S, OpPC, A0);
27143}
27144bool EvalEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
27145 if (!isActive()) return true;
27146 CurrentSource = L;
27147 return GetIntPtr<PT_Sint16>(S, OpPC, A0);
27148}
27149bool EvalEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
27150 if (!isActive()) return true;
27151 CurrentSource = L;
27152 return GetIntPtr<PT_Uint16>(S, OpPC, A0);
27153}
27154bool EvalEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
27155 if (!isActive()) return true;
27156 CurrentSource = L;
27157 return GetIntPtr<PT_Sint32>(S, OpPC, A0);
27158}
27159bool EvalEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
27160 if (!isActive()) return true;
27161 CurrentSource = L;
27162 return GetIntPtr<PT_Uint32>(S, OpPC, A0);
27163}
27164bool EvalEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
27165 if (!isActive()) return true;
27166 CurrentSource = L;
27167 return GetIntPtr<PT_Sint64>(S, OpPC, A0);
27168}
27169bool EvalEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
27170 if (!isActive()) return true;
27171 CurrentSource = L;
27172 return GetIntPtr<PT_Uint64>(S, OpPC, A0);
27173}
27174bool EvalEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
27175 if (!isActive()) return true;
27176 CurrentSource = L;
27177 return GetIntPtr<PT_IntAP>(S, OpPC, A0);
27178}
27179bool EvalEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
27180 if (!isActive()) return true;
27181 CurrentSource = L;
27182 return GetIntPtr<PT_IntAPS>(S, OpPC, A0);
27183}
27184bool EvalEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
27185 if (!isActive()) return true;
27186 CurrentSource = L;
27187 return GetIntPtr<PT_Bool>(S, OpPC, A0);
27188}
27189bool EvalEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
27190 if (!isActive()) return true;
27191 CurrentSource = L;
27192 return GetIntPtr<PT_FixedPoint>(S, OpPC, A0);
27193}
27194#endif
27195#ifdef GET_OPCODE_NAMES
27196OP_GetLocalSint8,
27197OP_GetLocalUint8,
27198OP_GetLocalSint16,
27199OP_GetLocalUint16,
27200OP_GetLocalSint32,
27201OP_GetLocalUint32,
27202OP_GetLocalSint64,
27203OP_GetLocalUint64,
27204OP_GetLocalIntAP,
27205OP_GetLocalIntAPS,
27206OP_GetLocalBool,
27207OP_GetLocalFixedPoint,
27208OP_GetLocalPtr,
27209OP_GetLocalMemberPtr,
27210OP_GetLocalFloat,
27211#endif
27212#ifdef GET_INTERPFN_LIST
27213&Interp_GetLocalSint8,
27214&Interp_GetLocalUint8,
27215&Interp_GetLocalSint16,
27216&Interp_GetLocalUint16,
27217&Interp_GetLocalSint32,
27218&Interp_GetLocalUint32,
27219&Interp_GetLocalSint64,
27220&Interp_GetLocalUint64,
27221&Interp_GetLocalIntAP,
27222&Interp_GetLocalIntAPS,
27223&Interp_GetLocalBool,
27224&Interp_GetLocalFixedPoint,
27225&Interp_GetLocalPtr,
27226&Interp_GetLocalMemberPtr,
27227&Interp_GetLocalFloat,
27228#endif
27229#ifdef GET_INTERPFN_DISPATCHERS
27230PRESERVE_NONE
27231static bool Interp_GetLocalSint8(InterpState &S, CodePtr &PC) {
27232 {
27233 CodePtr OpPC = PC;
27234 const auto V0 = ReadArg<uint32_t>(S, PC);
27235 if (!GetLocal<PT_Sint8>(S, OpPC, V0))
27236 return false;
27237 }
27238#if USE_TAILCALLS
27239 MUSTTAIL return InterpNext(S, PC);
27240#else
27241 return true;
27242#endif
27243}
27244PRESERVE_NONE
27245static bool Interp_GetLocalUint8(InterpState &S, CodePtr &PC) {
27246 {
27247 CodePtr OpPC = PC;
27248 const auto V0 = ReadArg<uint32_t>(S, PC);
27249 if (!GetLocal<PT_Uint8>(S, OpPC, V0))
27250 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_GetLocalSint16(InterpState &S, CodePtr &PC) {
27260 {
27261 CodePtr OpPC = PC;
27262 const auto V0 = ReadArg<uint32_t>(S, PC);
27263 if (!GetLocal<PT_Sint16>(S, OpPC, V0))
27264 return false;
27265 }
27266#if USE_TAILCALLS
27267 MUSTTAIL return InterpNext(S, PC);
27268#else
27269 return true;
27270#endif
27271}
27272PRESERVE_NONE
27273static bool Interp_GetLocalUint16(InterpState &S, CodePtr &PC) {
27274 {
27275 CodePtr OpPC = PC;
27276 const auto V0 = ReadArg<uint32_t>(S, PC);
27277 if (!GetLocal<PT_Uint16>(S, OpPC, V0))
27278 return false;
27279 }
27280#if USE_TAILCALLS
27281 MUSTTAIL return InterpNext(S, PC);
27282#else
27283 return true;
27284#endif
27285}
27286PRESERVE_NONE
27287static bool Interp_GetLocalSint32(InterpState &S, CodePtr &PC) {
27288 {
27289 CodePtr OpPC = PC;
27290 const auto V0 = ReadArg<uint32_t>(S, PC);
27291 if (!GetLocal<PT_Sint32>(S, OpPC, V0))
27292 return false;
27293 }
27294#if USE_TAILCALLS
27295 MUSTTAIL return InterpNext(S, PC);
27296#else
27297 return true;
27298#endif
27299}
27300PRESERVE_NONE
27301static bool Interp_GetLocalUint32(InterpState &S, CodePtr &PC) {
27302 {
27303 CodePtr OpPC = PC;
27304 const auto V0 = ReadArg<uint32_t>(S, PC);
27305 if (!GetLocal<PT_Uint32>(S, OpPC, V0))
27306 return false;
27307 }
27308#if USE_TAILCALLS
27309 MUSTTAIL return InterpNext(S, PC);
27310#else
27311 return true;
27312#endif
27313}
27314PRESERVE_NONE
27315static bool Interp_GetLocalSint64(InterpState &S, CodePtr &PC) {
27316 {
27317 CodePtr OpPC = PC;
27318 const auto V0 = ReadArg<uint32_t>(S, PC);
27319 if (!GetLocal<PT_Sint64>(S, OpPC, V0))
27320 return false;
27321 }
27322#if USE_TAILCALLS
27323 MUSTTAIL return InterpNext(S, PC);
27324#else
27325 return true;
27326#endif
27327}
27328PRESERVE_NONE
27329static bool Interp_GetLocalUint64(InterpState &S, CodePtr &PC) {
27330 {
27331 CodePtr OpPC = PC;
27332 const auto V0 = ReadArg<uint32_t>(S, PC);
27333 if (!GetLocal<PT_Uint64>(S, OpPC, V0))
27334 return false;
27335 }
27336#if USE_TAILCALLS
27337 MUSTTAIL return InterpNext(S, PC);
27338#else
27339 return true;
27340#endif
27341}
27342PRESERVE_NONE
27343static bool Interp_GetLocalIntAP(InterpState &S, CodePtr &PC) {
27344 {
27345 CodePtr OpPC = PC;
27346 const auto V0 = ReadArg<uint32_t>(S, PC);
27347 if (!GetLocal<PT_IntAP>(S, OpPC, V0))
27348 return false;
27349 }
27350#if USE_TAILCALLS
27351 MUSTTAIL return InterpNext(S, PC);
27352#else
27353 return true;
27354#endif
27355}
27356PRESERVE_NONE
27357static bool Interp_GetLocalIntAPS(InterpState &S, CodePtr &PC) {
27358 {
27359 CodePtr OpPC = PC;
27360 const auto V0 = ReadArg<uint32_t>(S, PC);
27361 if (!GetLocal<PT_IntAPS>(S, OpPC, V0))
27362 return false;
27363 }
27364#if USE_TAILCALLS
27365 MUSTTAIL return InterpNext(S, PC);
27366#else
27367 return true;
27368#endif
27369}
27370PRESERVE_NONE
27371static bool Interp_GetLocalBool(InterpState &S, CodePtr &PC) {
27372 {
27373 CodePtr OpPC = PC;
27374 const auto V0 = ReadArg<uint32_t>(S, PC);
27375 if (!GetLocal<PT_Bool>(S, OpPC, V0))
27376 return false;
27377 }
27378#if USE_TAILCALLS
27379 MUSTTAIL return InterpNext(S, PC);
27380#else
27381 return true;
27382#endif
27383}
27384PRESERVE_NONE
27385static bool Interp_GetLocalFixedPoint(InterpState &S, CodePtr &PC) {
27386 {
27387 CodePtr OpPC = PC;
27388 const auto V0 = ReadArg<uint32_t>(S, PC);
27389 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0))
27390 return false;
27391 }
27392#if USE_TAILCALLS
27393 MUSTTAIL return InterpNext(S, PC);
27394#else
27395 return true;
27396#endif
27397}
27398PRESERVE_NONE
27399static bool Interp_GetLocalPtr(InterpState &S, CodePtr &PC) {
27400 {
27401 CodePtr OpPC = PC;
27402 const auto V0 = ReadArg<uint32_t>(S, PC);
27403 if (!GetLocal<PT_Ptr>(S, OpPC, V0))
27404 return false;
27405 }
27406#if USE_TAILCALLS
27407 MUSTTAIL return InterpNext(S, PC);
27408#else
27409 return true;
27410#endif
27411}
27412PRESERVE_NONE
27413static bool Interp_GetLocalMemberPtr(InterpState &S, CodePtr &PC) {
27414 {
27415 CodePtr OpPC = PC;
27416 const auto V0 = ReadArg<uint32_t>(S, PC);
27417 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0))
27418 return false;
27419 }
27420#if USE_TAILCALLS
27421 MUSTTAIL return InterpNext(S, PC);
27422#else
27423 return true;
27424#endif
27425}
27426PRESERVE_NONE
27427static bool Interp_GetLocalFloat(InterpState &S, CodePtr &PC) {
27428 {
27429 CodePtr OpPC = PC;
27430 const auto V0 = ReadArg<uint32_t>(S, PC);
27431 if (!GetLocal<PT_Float>(S, OpPC, V0))
27432 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_GetLocalSint8:
27443 Text.Op = PrintName("GetLocalSint8");
27444 Text.Args.push_back(printArg<uint32_t>(P, PC));
27445 break;
27446case OP_GetLocalUint8:
27447 Text.Op = PrintName("GetLocalUint8");
27448 Text.Args.push_back(printArg<uint32_t>(P, PC));
27449 break;
27450case OP_GetLocalSint16:
27451 Text.Op = PrintName("GetLocalSint16");
27452 Text.Args.push_back(printArg<uint32_t>(P, PC));
27453 break;
27454case OP_GetLocalUint16:
27455 Text.Op = PrintName("GetLocalUint16");
27456 Text.Args.push_back(printArg<uint32_t>(P, PC));
27457 break;
27458case OP_GetLocalSint32:
27459 Text.Op = PrintName("GetLocalSint32");
27460 Text.Args.push_back(printArg<uint32_t>(P, PC));
27461 break;
27462case OP_GetLocalUint32:
27463 Text.Op = PrintName("GetLocalUint32");
27464 Text.Args.push_back(printArg<uint32_t>(P, PC));
27465 break;
27466case OP_GetLocalSint64:
27467 Text.Op = PrintName("GetLocalSint64");
27468 Text.Args.push_back(printArg<uint32_t>(P, PC));
27469 break;
27470case OP_GetLocalUint64:
27471 Text.Op = PrintName("GetLocalUint64");
27472 Text.Args.push_back(printArg<uint32_t>(P, PC));
27473 break;
27474case OP_GetLocalIntAP:
27475 Text.Op = PrintName("GetLocalIntAP");
27476 Text.Args.push_back(printArg<uint32_t>(P, PC));
27477 break;
27478case OP_GetLocalIntAPS:
27479 Text.Op = PrintName("GetLocalIntAPS");
27480 Text.Args.push_back(printArg<uint32_t>(P, PC));
27481 break;
27482case OP_GetLocalBool:
27483 Text.Op = PrintName("GetLocalBool");
27484 Text.Args.push_back(printArg<uint32_t>(P, PC));
27485 break;
27486case OP_GetLocalFixedPoint:
27487 Text.Op = PrintName("GetLocalFixedPoint");
27488 Text.Args.push_back(printArg<uint32_t>(P, PC));
27489 break;
27490case OP_GetLocalPtr:
27491 Text.Op = PrintName("GetLocalPtr");
27492 Text.Args.push_back(printArg<uint32_t>(P, PC));
27493 break;
27494case OP_GetLocalMemberPtr:
27495 Text.Op = PrintName("GetLocalMemberPtr");
27496 Text.Args.push_back(printArg<uint32_t>(P, PC));
27497 break;
27498case OP_GetLocalFloat:
27499 Text.Op = PrintName("GetLocalFloat");
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 emitGetLocalSint8( uint32_t , SourceInfo);
27505bool emitGetLocalUint8( uint32_t , SourceInfo);
27506bool emitGetLocalSint16( uint32_t , SourceInfo);
27507bool emitGetLocalUint16( uint32_t , SourceInfo);
27508bool emitGetLocalSint32( uint32_t , SourceInfo);
27509bool emitGetLocalUint32( uint32_t , SourceInfo);
27510bool emitGetLocalSint64( uint32_t , SourceInfo);
27511bool emitGetLocalUint64( uint32_t , SourceInfo);
27512bool emitGetLocalIntAP( uint32_t , SourceInfo);
27513bool emitGetLocalIntAPS( uint32_t , SourceInfo);
27514bool emitGetLocalBool( uint32_t , SourceInfo);
27515bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
27516bool emitGetLocalPtr( uint32_t , SourceInfo);
27517bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
27518bool emitGetLocalFloat( uint32_t , SourceInfo);
27519#if defined(GET_EVAL_PROTO)
27520template<PrimType>
27521bool emitGetLocal(uint32_t, SourceInfo);
27522#endif
27523#endif
27524#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27525[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
27526#endif
27527#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27528bool
27529#if defined(GET_EVAL_IMPL)
27530EvalEmitter
27531#else
27532ByteCodeEmitter
27533#endif
27534::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
27535 switch (T0) {
27536 case PT_Sint8:
27537#ifdef GET_LINK_IMPL
27538 return emitGetLocalSint8
27539#else
27540 return emitGetLocal<PT_Sint8>
27541#endif
27542 (A0, I);
27543 case PT_Uint8:
27544#ifdef GET_LINK_IMPL
27545 return emitGetLocalUint8
27546#else
27547 return emitGetLocal<PT_Uint8>
27548#endif
27549 (A0, I);
27550 case PT_Sint16:
27551#ifdef GET_LINK_IMPL
27552 return emitGetLocalSint16
27553#else
27554 return emitGetLocal<PT_Sint16>
27555#endif
27556 (A0, I);
27557 case PT_Uint16:
27558#ifdef GET_LINK_IMPL
27559 return emitGetLocalUint16
27560#else
27561 return emitGetLocal<PT_Uint16>
27562#endif
27563 (A0, I);
27564 case PT_Sint32:
27565#ifdef GET_LINK_IMPL
27566 return emitGetLocalSint32
27567#else
27568 return emitGetLocal<PT_Sint32>
27569#endif
27570 (A0, I);
27571 case PT_Uint32:
27572#ifdef GET_LINK_IMPL
27573 return emitGetLocalUint32
27574#else
27575 return emitGetLocal<PT_Uint32>
27576#endif
27577 (A0, I);
27578 case PT_Sint64:
27579#ifdef GET_LINK_IMPL
27580 return emitGetLocalSint64
27581#else
27582 return emitGetLocal<PT_Sint64>
27583#endif
27584 (A0, I);
27585 case PT_Uint64:
27586#ifdef GET_LINK_IMPL
27587 return emitGetLocalUint64
27588#else
27589 return emitGetLocal<PT_Uint64>
27590#endif
27591 (A0, I);
27592 case PT_IntAP:
27593#ifdef GET_LINK_IMPL
27594 return emitGetLocalIntAP
27595#else
27596 return emitGetLocal<PT_IntAP>
27597#endif
27598 (A0, I);
27599 case PT_IntAPS:
27600#ifdef GET_LINK_IMPL
27601 return emitGetLocalIntAPS
27602#else
27603 return emitGetLocal<PT_IntAPS>
27604#endif
27605 (A0, I);
27606 case PT_Bool:
27607#ifdef GET_LINK_IMPL
27608 return emitGetLocalBool
27609#else
27610 return emitGetLocal<PT_Bool>
27611#endif
27612 (A0, I);
27613 case PT_FixedPoint:
27614#ifdef GET_LINK_IMPL
27615 return emitGetLocalFixedPoint
27616#else
27617 return emitGetLocal<PT_FixedPoint>
27618#endif
27619 (A0, I);
27620 case PT_Ptr:
27621#ifdef GET_LINK_IMPL
27622 return emitGetLocalPtr
27623#else
27624 return emitGetLocal<PT_Ptr>
27625#endif
27626 (A0, I);
27627 case PT_MemberPtr:
27628#ifdef GET_LINK_IMPL
27629 return emitGetLocalMemberPtr
27630#else
27631 return emitGetLocal<PT_MemberPtr>
27632#endif
27633 (A0, I);
27634 case PT_Float:
27635#ifdef GET_LINK_IMPL
27636 return emitGetLocalFloat
27637#else
27638 return emitGetLocal<PT_Float>
27639#endif
27640 (A0, I);
27641 }
27642 llvm_unreachable("invalid enum value");
27643}
27644#endif
27645#ifdef GET_LINK_IMPL
27646bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
27647 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
27648}
27649bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
27650 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
27651}
27652bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
27653 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
27654}
27655bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
27656 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
27657}
27658bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
27659 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
27660}
27661bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
27662 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
27663}
27664bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
27665 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
27666}
27667bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
27668 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
27669}
27670bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
27671 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
27672}
27673bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
27674 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
27675}
27676bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
27677 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
27678}
27679bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
27680 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
27681}
27682bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
27683 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
27684}
27685bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
27686 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
27687}
27688bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
27689 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
27690}
27691#endif
27692#ifdef GET_OPCODE_NAMES
27693OP_GetLocalEnabled,
27694#endif
27695#ifdef GET_INTERPFN_LIST
27696&Interp_GetLocalEnabled,
27697#endif
27698#ifdef GET_INTERPFN_DISPATCHERS
27699PRESERVE_NONE
27700static bool Interp_GetLocalEnabled(InterpState &S, CodePtr &PC) {
27701 {
27702 CodePtr OpPC = PC;
27703 const auto V0 = ReadArg<uint32_t>(S, PC);
27704 if (!GetLocalEnabled(S, OpPC, V0))
27705 return false;
27706 }
27707#if USE_TAILCALLS
27708 MUSTTAIL return InterpNext(S, PC);
27709#else
27710 return true;
27711#endif
27712}
27713#endif
27714#ifdef GET_DISASM
27715case OP_GetLocalEnabled:
27716 Text.Op = PrintName("GetLocalEnabled");
27717 Text.Args.push_back(printArg<uint32_t>(P, PC));
27718 break;
27719#endif
27720#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27721bool emitGetLocalEnabled( uint32_t , SourceInfo);
27722#endif
27723#ifdef GET_LINK_IMPL
27724bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
27725 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
27726}
27727#endif
27728#ifdef GET_OPCODE_NAMES
27729OP_GetMemberPtr,
27730#endif
27731#ifdef GET_INTERPFN_LIST
27732&Interp_GetMemberPtr,
27733#endif
27734#ifdef GET_INTERPFN_DISPATCHERS
27735PRESERVE_NONE
27736static bool Interp_GetMemberPtr(InterpState &S, CodePtr &PC) {
27737 {
27738 CodePtr OpPC = PC;
27739 const auto V0 = ReadArg<const ValueDecl*>(S, PC);
27740 if (!GetMemberPtr(S, OpPC, V0))
27741 return false;
27742 }
27743#if USE_TAILCALLS
27744 MUSTTAIL return InterpNext(S, PC);
27745#else
27746 return true;
27747#endif
27748}
27749#endif
27750#ifdef GET_DISASM
27751case OP_GetMemberPtr:
27752 Text.Op = PrintName("GetMemberPtr");
27753 Text.Args.push_back(printArg<const ValueDecl*>(P, PC));
27754 break;
27755#endif
27756#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27757bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
27758#endif
27759#ifdef GET_LINK_IMPL
27760bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27761 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
27762}
27763#endif
27764#ifdef GET_EVAL_IMPL
27765bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27766 if (!isActive()) return true;
27767 CurrentSource = L;
27768 return GetMemberPtr(S, OpPC, A0);
27769}
27770#endif
27771#ifdef GET_OPCODE_NAMES
27772OP_GetMemberPtrBase,
27773#endif
27774#ifdef GET_INTERPFN_LIST
27775&Interp_GetMemberPtrBase,
27776#endif
27777#ifdef GET_INTERPFN_DISPATCHERS
27778PRESERVE_NONE
27779static bool Interp_GetMemberPtrBase(InterpState &S, CodePtr &PC) {
27780 if (!GetMemberPtrBase(S, PC))
27781 return false;
27782#if USE_TAILCALLS
27783 MUSTTAIL return InterpNext(S, PC);
27784#else
27785 return true;
27786#endif
27787}
27788#endif
27789#ifdef GET_DISASM
27790case OP_GetMemberPtrBase:
27791 Text.Op = PrintName("GetMemberPtrBase");
27792 break;
27793#endif
27794#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27795bool emitGetMemberPtrBase(SourceInfo);
27796#endif
27797#ifdef GET_LINK_IMPL
27798bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
27799 return emitOp<>(OP_GetMemberPtrBase, L);
27800}
27801#endif
27802#ifdef GET_EVAL_IMPL
27803bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
27804 if (!isActive()) return true;
27805 CurrentSource = L;
27806 return GetMemberPtrBase(S, OpPC);
27807}
27808#endif
27809#ifdef GET_OPCODE_NAMES
27810OP_GetMemberPtrDecl,
27811#endif
27812#ifdef GET_INTERPFN_LIST
27813&Interp_GetMemberPtrDecl,
27814#endif
27815#ifdef GET_INTERPFN_DISPATCHERS
27816PRESERVE_NONE
27817static bool Interp_GetMemberPtrDecl(InterpState &S, CodePtr &PC) {
27818 if (!GetMemberPtrDecl(S, PC))
27819 return false;
27820#if USE_TAILCALLS
27821 MUSTTAIL return InterpNext(S, PC);
27822#else
27823 return true;
27824#endif
27825}
27826#endif
27827#ifdef GET_DISASM
27828case OP_GetMemberPtrDecl:
27829 Text.Op = PrintName("GetMemberPtrDecl");
27830 break;
27831#endif
27832#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27833bool emitGetMemberPtrDecl(SourceInfo);
27834#endif
27835#ifdef GET_LINK_IMPL
27836bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27837 return emitOp<>(OP_GetMemberPtrDecl, L);
27838}
27839#endif
27840#ifdef GET_EVAL_IMPL
27841bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27842 if (!isActive()) return true;
27843 CurrentSource = L;
27844 return GetMemberPtrDecl(S, OpPC);
27845}
27846#endif
27847#ifdef GET_OPCODE_NAMES
27848OP_GetParamSint8,
27849OP_GetParamUint8,
27850OP_GetParamSint16,
27851OP_GetParamUint16,
27852OP_GetParamSint32,
27853OP_GetParamUint32,
27854OP_GetParamSint64,
27855OP_GetParamUint64,
27856OP_GetParamIntAP,
27857OP_GetParamIntAPS,
27858OP_GetParamBool,
27859OP_GetParamFixedPoint,
27860OP_GetParamPtr,
27861OP_GetParamMemberPtr,
27862OP_GetParamFloat,
27863#endif
27864#ifdef GET_INTERPFN_LIST
27865&Interp_GetParamSint8,
27866&Interp_GetParamUint8,
27867&Interp_GetParamSint16,
27868&Interp_GetParamUint16,
27869&Interp_GetParamSint32,
27870&Interp_GetParamUint32,
27871&Interp_GetParamSint64,
27872&Interp_GetParamUint64,
27873&Interp_GetParamIntAP,
27874&Interp_GetParamIntAPS,
27875&Interp_GetParamBool,
27876&Interp_GetParamFixedPoint,
27877&Interp_GetParamPtr,
27878&Interp_GetParamMemberPtr,
27879&Interp_GetParamFloat,
27880#endif
27881#ifdef GET_INTERPFN_DISPATCHERS
27882PRESERVE_NONE
27883static bool Interp_GetParamSint8(InterpState &S, CodePtr &PC) {
27884 {
27885 CodePtr OpPC = PC;
27886 const auto V0 = ReadArg<uint32_t>(S, PC);
27887 if (!GetParam<PT_Sint8>(S, OpPC, V0))
27888 return false;
27889 }
27890#if USE_TAILCALLS
27891 MUSTTAIL return InterpNext(S, PC);
27892#else
27893 return true;
27894#endif
27895}
27896PRESERVE_NONE
27897static bool Interp_GetParamUint8(InterpState &S, CodePtr &PC) {
27898 {
27899 CodePtr OpPC = PC;
27900 const auto V0 = ReadArg<uint32_t>(S, PC);
27901 if (!GetParam<PT_Uint8>(S, OpPC, V0))
27902 return false;
27903 }
27904#if USE_TAILCALLS
27905 MUSTTAIL return InterpNext(S, PC);
27906#else
27907 return true;
27908#endif
27909}
27910PRESERVE_NONE
27911static bool Interp_GetParamSint16(InterpState &S, CodePtr &PC) {
27912 {
27913 CodePtr OpPC = PC;
27914 const auto V0 = ReadArg<uint32_t>(S, PC);
27915 if (!GetParam<PT_Sint16>(S, OpPC, V0))
27916 return false;
27917 }
27918#if USE_TAILCALLS
27919 MUSTTAIL return InterpNext(S, PC);
27920#else
27921 return true;
27922#endif
27923}
27924PRESERVE_NONE
27925static bool Interp_GetParamUint16(InterpState &S, CodePtr &PC) {
27926 {
27927 CodePtr OpPC = PC;
27928 const auto V0 = ReadArg<uint32_t>(S, PC);
27929 if (!GetParam<PT_Uint16>(S, OpPC, V0))
27930 return false;
27931 }
27932#if USE_TAILCALLS
27933 MUSTTAIL return InterpNext(S, PC);
27934#else
27935 return true;
27936#endif
27937}
27938PRESERVE_NONE
27939static bool Interp_GetParamSint32(InterpState &S, CodePtr &PC) {
27940 {
27941 CodePtr OpPC = PC;
27942 const auto V0 = ReadArg<uint32_t>(S, PC);
27943 if (!GetParam<PT_Sint32>(S, OpPC, V0))
27944 return false;
27945 }
27946#if USE_TAILCALLS
27947 MUSTTAIL return InterpNext(S, PC);
27948#else
27949 return true;
27950#endif
27951}
27952PRESERVE_NONE
27953static bool Interp_GetParamUint32(InterpState &S, CodePtr &PC) {
27954 {
27955 CodePtr OpPC = PC;
27956 const auto V0 = ReadArg<uint32_t>(S, PC);
27957 if (!GetParam<PT_Uint32>(S, OpPC, V0))
27958 return false;
27959 }
27960#if USE_TAILCALLS
27961 MUSTTAIL return InterpNext(S, PC);
27962#else
27963 return true;
27964#endif
27965}
27966PRESERVE_NONE
27967static bool Interp_GetParamSint64(InterpState &S, CodePtr &PC) {
27968 {
27969 CodePtr OpPC = PC;
27970 const auto V0 = ReadArg<uint32_t>(S, PC);
27971 if (!GetParam<PT_Sint64>(S, OpPC, V0))
27972 return false;
27973 }
27974#if USE_TAILCALLS
27975 MUSTTAIL return InterpNext(S, PC);
27976#else
27977 return true;
27978#endif
27979}
27980PRESERVE_NONE
27981static bool Interp_GetParamUint64(InterpState &S, CodePtr &PC) {
27982 {
27983 CodePtr OpPC = PC;
27984 const auto V0 = ReadArg<uint32_t>(S, PC);
27985 if (!GetParam<PT_Uint64>(S, OpPC, V0))
27986 return false;
27987 }
27988#if USE_TAILCALLS
27989 MUSTTAIL return InterpNext(S, PC);
27990#else
27991 return true;
27992#endif
27993}
27994PRESERVE_NONE
27995static bool Interp_GetParamIntAP(InterpState &S, CodePtr &PC) {
27996 {
27997 CodePtr OpPC = PC;
27998 const auto V0 = ReadArg<uint32_t>(S, PC);
27999 if (!GetParam<PT_IntAP>(S, OpPC, V0))
28000 return false;
28001 }
28002#if USE_TAILCALLS
28003 MUSTTAIL return InterpNext(S, PC);
28004#else
28005 return true;
28006#endif
28007}
28008PRESERVE_NONE
28009static bool Interp_GetParamIntAPS(InterpState &S, CodePtr &PC) {
28010 {
28011 CodePtr OpPC = PC;
28012 const auto V0 = ReadArg<uint32_t>(S, PC);
28013 if (!GetParam<PT_IntAPS>(S, OpPC, V0))
28014 return false;
28015 }
28016#if USE_TAILCALLS
28017 MUSTTAIL return InterpNext(S, PC);
28018#else
28019 return true;
28020#endif
28021}
28022PRESERVE_NONE
28023static bool Interp_GetParamBool(InterpState &S, CodePtr &PC) {
28024 {
28025 CodePtr OpPC = PC;
28026 const auto V0 = ReadArg<uint32_t>(S, PC);
28027 if (!GetParam<PT_Bool>(S, OpPC, V0))
28028 return false;
28029 }
28030#if USE_TAILCALLS
28031 MUSTTAIL return InterpNext(S, PC);
28032#else
28033 return true;
28034#endif
28035}
28036PRESERVE_NONE
28037static bool Interp_GetParamFixedPoint(InterpState &S, CodePtr &PC) {
28038 {
28039 CodePtr OpPC = PC;
28040 const auto V0 = ReadArg<uint32_t>(S, PC);
28041 if (!GetParam<PT_FixedPoint>(S, OpPC, V0))
28042 return false;
28043 }
28044#if USE_TAILCALLS
28045 MUSTTAIL return InterpNext(S, PC);
28046#else
28047 return true;
28048#endif
28049}
28050PRESERVE_NONE
28051static bool Interp_GetParamPtr(InterpState &S, CodePtr &PC) {
28052 {
28053 CodePtr OpPC = PC;
28054 const auto V0 = ReadArg<uint32_t>(S, PC);
28055 if (!GetParam<PT_Ptr>(S, OpPC, V0))
28056 return false;
28057 }
28058#if USE_TAILCALLS
28059 MUSTTAIL return InterpNext(S, PC);
28060#else
28061 return true;
28062#endif
28063}
28064PRESERVE_NONE
28065static bool Interp_GetParamMemberPtr(InterpState &S, CodePtr &PC) {
28066 {
28067 CodePtr OpPC = PC;
28068 const auto V0 = ReadArg<uint32_t>(S, PC);
28069 if (!GetParam<PT_MemberPtr>(S, OpPC, V0))
28070 return false;
28071 }
28072#if USE_TAILCALLS
28073 MUSTTAIL return InterpNext(S, PC);
28074#else
28075 return true;
28076#endif
28077}
28078PRESERVE_NONE
28079static bool Interp_GetParamFloat(InterpState &S, CodePtr &PC) {
28080 {
28081 CodePtr OpPC = PC;
28082 const auto V0 = ReadArg<uint32_t>(S, PC);
28083 if (!GetParam<PT_Float>(S, OpPC, V0))
28084 return false;
28085 }
28086#if USE_TAILCALLS
28087 MUSTTAIL return InterpNext(S, PC);
28088#else
28089 return true;
28090#endif
28091}
28092#endif
28093#ifdef GET_DISASM
28094case OP_GetParamSint8:
28095 Text.Op = PrintName("GetParamSint8");
28096 Text.Args.push_back(printArg<uint32_t>(P, PC));
28097 break;
28098case OP_GetParamUint8:
28099 Text.Op = PrintName("GetParamUint8");
28100 Text.Args.push_back(printArg<uint32_t>(P, PC));
28101 break;
28102case OP_GetParamSint16:
28103 Text.Op = PrintName("GetParamSint16");
28104 Text.Args.push_back(printArg<uint32_t>(P, PC));
28105 break;
28106case OP_GetParamUint16:
28107 Text.Op = PrintName("GetParamUint16");
28108 Text.Args.push_back(printArg<uint32_t>(P, PC));
28109 break;
28110case OP_GetParamSint32:
28111 Text.Op = PrintName("GetParamSint32");
28112 Text.Args.push_back(printArg<uint32_t>(P, PC));
28113 break;
28114case OP_GetParamUint32:
28115 Text.Op = PrintName("GetParamUint32");
28116 Text.Args.push_back(printArg<uint32_t>(P, PC));
28117 break;
28118case OP_GetParamSint64:
28119 Text.Op = PrintName("GetParamSint64");
28120 Text.Args.push_back(printArg<uint32_t>(P, PC));
28121 break;
28122case OP_GetParamUint64:
28123 Text.Op = PrintName("GetParamUint64");
28124 Text.Args.push_back(printArg<uint32_t>(P, PC));
28125 break;
28126case OP_GetParamIntAP:
28127 Text.Op = PrintName("GetParamIntAP");
28128 Text.Args.push_back(printArg<uint32_t>(P, PC));
28129 break;
28130case OP_GetParamIntAPS:
28131 Text.Op = PrintName("GetParamIntAPS");
28132 Text.Args.push_back(printArg<uint32_t>(P, PC));
28133 break;
28134case OP_GetParamBool:
28135 Text.Op = PrintName("GetParamBool");
28136 Text.Args.push_back(printArg<uint32_t>(P, PC));
28137 break;
28138case OP_GetParamFixedPoint:
28139 Text.Op = PrintName("GetParamFixedPoint");
28140 Text.Args.push_back(printArg<uint32_t>(P, PC));
28141 break;
28142case OP_GetParamPtr:
28143 Text.Op = PrintName("GetParamPtr");
28144 Text.Args.push_back(printArg<uint32_t>(P, PC));
28145 break;
28146case OP_GetParamMemberPtr:
28147 Text.Op = PrintName("GetParamMemberPtr");
28148 Text.Args.push_back(printArg<uint32_t>(P, PC));
28149 break;
28150case OP_GetParamFloat:
28151 Text.Op = PrintName("GetParamFloat");
28152 Text.Args.push_back(printArg<uint32_t>(P, PC));
28153 break;
28154#endif
28155#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28156bool emitGetParamSint8( uint32_t , SourceInfo);
28157bool emitGetParamUint8( uint32_t , SourceInfo);
28158bool emitGetParamSint16( uint32_t , SourceInfo);
28159bool emitGetParamUint16( uint32_t , SourceInfo);
28160bool emitGetParamSint32( uint32_t , SourceInfo);
28161bool emitGetParamUint32( uint32_t , SourceInfo);
28162bool emitGetParamSint64( uint32_t , SourceInfo);
28163bool emitGetParamUint64( uint32_t , SourceInfo);
28164bool emitGetParamIntAP( uint32_t , SourceInfo);
28165bool emitGetParamIntAPS( uint32_t , SourceInfo);
28166bool emitGetParamBool( uint32_t , SourceInfo);
28167bool emitGetParamFixedPoint( uint32_t , SourceInfo);
28168bool emitGetParamPtr( uint32_t , SourceInfo);
28169bool emitGetParamMemberPtr( uint32_t , SourceInfo);
28170bool emitGetParamFloat( uint32_t , SourceInfo);
28171#endif
28172#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28173[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
28174#endif
28175#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28176bool
28177#if defined(GET_EVAL_IMPL)
28178EvalEmitter
28179#else
28180ByteCodeEmitter
28181#endif
28182::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
28183 switch (T0) {
28184 case PT_Sint8:
28185 return emitGetParamSint8(A0, I);
28186 case PT_Uint8:
28187 return emitGetParamUint8(A0, I);
28188 case PT_Sint16:
28189 return emitGetParamSint16(A0, I);
28190 case PT_Uint16:
28191 return emitGetParamUint16(A0, I);
28192 case PT_Sint32:
28193 return emitGetParamSint32(A0, I);
28194 case PT_Uint32:
28195 return emitGetParamUint32(A0, I);
28196 case PT_Sint64:
28197 return emitGetParamSint64(A0, I);
28198 case PT_Uint64:
28199 return emitGetParamUint64(A0, I);
28200 case PT_IntAP:
28201 return emitGetParamIntAP(A0, I);
28202 case PT_IntAPS:
28203 return emitGetParamIntAPS(A0, I);
28204 case PT_Bool:
28205 return emitGetParamBool(A0, I);
28206 case PT_FixedPoint:
28207 return emitGetParamFixedPoint(A0, I);
28208 case PT_Ptr:
28209 return emitGetParamPtr(A0, I);
28210 case PT_MemberPtr:
28211 return emitGetParamMemberPtr(A0, I);
28212 case PT_Float:
28213 return emitGetParamFloat(A0, I);
28214 }
28215 llvm_unreachable("invalid enum value");
28216}
28217#endif
28218#ifdef GET_LINK_IMPL
28219bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
28220 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
28221}
28222bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
28223 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
28224}
28225bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
28226 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
28227}
28228bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
28229 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
28230}
28231bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
28232 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
28233}
28234bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
28235 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
28236}
28237bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
28238 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
28239}
28240bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
28241 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
28242}
28243bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
28244 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
28245}
28246bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
28247 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
28248}
28249bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
28250 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
28251}
28252bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
28253 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
28254}
28255bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
28256 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
28257}
28258bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
28259 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
28260}
28261bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
28262 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
28263}
28264#endif
28265#ifdef GET_EVAL_IMPL
28266bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
28267 if (!isActive()) return true;
28268 CurrentSource = L;
28269 return GetParam<PT_Sint8>(S, OpPC, A0);
28270}
28271bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
28272 if (!isActive()) return true;
28273 CurrentSource = L;
28274 return GetParam<PT_Uint8>(S, OpPC, A0);
28275}
28276bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
28277 if (!isActive()) return true;
28278 CurrentSource = L;
28279 return GetParam<PT_Sint16>(S, OpPC, A0);
28280}
28281bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
28282 if (!isActive()) return true;
28283 CurrentSource = L;
28284 return GetParam<PT_Uint16>(S, OpPC, A0);
28285}
28286bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
28287 if (!isActive()) return true;
28288 CurrentSource = L;
28289 return GetParam<PT_Sint32>(S, OpPC, A0);
28290}
28291bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
28292 if (!isActive()) return true;
28293 CurrentSource = L;
28294 return GetParam<PT_Uint32>(S, OpPC, A0);
28295}
28296bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
28297 if (!isActive()) return true;
28298 CurrentSource = L;
28299 return GetParam<PT_Sint64>(S, OpPC, A0);
28300}
28301bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
28302 if (!isActive()) return true;
28303 CurrentSource = L;
28304 return GetParam<PT_Uint64>(S, OpPC, A0);
28305}
28306bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
28307 if (!isActive()) return true;
28308 CurrentSource = L;
28309 return GetParam<PT_IntAP>(S, OpPC, A0);
28310}
28311bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
28312 if (!isActive()) return true;
28313 CurrentSource = L;
28314 return GetParam<PT_IntAPS>(S, OpPC, A0);
28315}
28316bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
28317 if (!isActive()) return true;
28318 CurrentSource = L;
28319 return GetParam<PT_Bool>(S, OpPC, A0);
28320}
28321bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
28322 if (!isActive()) return true;
28323 CurrentSource = L;
28324 return GetParam<PT_FixedPoint>(S, OpPC, A0);
28325}
28326bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
28327 if (!isActive()) return true;
28328 CurrentSource = L;
28329 return GetParam<PT_Ptr>(S, OpPC, A0);
28330}
28331bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
28332 if (!isActive()) return true;
28333 CurrentSource = L;
28334 return GetParam<PT_MemberPtr>(S, OpPC, A0);
28335}
28336bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
28337 if (!isActive()) return true;
28338 CurrentSource = L;
28339 return GetParam<PT_Float>(S, OpPC, A0);
28340}
28341#endif
28342#ifdef GET_OPCODE_NAMES
28343OP_GetPtrBase,
28344#endif
28345#ifdef GET_INTERPFN_LIST
28346&Interp_GetPtrBase,
28347#endif
28348#ifdef GET_INTERPFN_DISPATCHERS
28349PRESERVE_NONE
28350static bool Interp_GetPtrBase(InterpState &S, CodePtr &PC) {
28351 {
28352 CodePtr OpPC = PC;
28353 const auto V0 = ReadArg<uint32_t>(S, PC);
28354 if (!GetPtrBase(S, OpPC, V0))
28355 return false;
28356 }
28357#if USE_TAILCALLS
28358 MUSTTAIL return InterpNext(S, PC);
28359#else
28360 return true;
28361#endif
28362}
28363#endif
28364#ifdef GET_DISASM
28365case OP_GetPtrBase:
28366 Text.Op = PrintName("GetPtrBase");
28367 Text.Args.push_back(printArg<uint32_t>(P, PC));
28368 break;
28369#endif
28370#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28371bool emitGetPtrBase( uint32_t , SourceInfo);
28372#endif
28373#ifdef GET_LINK_IMPL
28374bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
28375 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
28376}
28377#endif
28378#ifdef GET_EVAL_IMPL
28379bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
28380 if (!isActive()) return true;
28381 CurrentSource = L;
28382 return GetPtrBase(S, OpPC, A0);
28383}
28384#endif
28385#ifdef GET_OPCODE_NAMES
28386OP_GetPtrBasePop,
28387#endif
28388#ifdef GET_INTERPFN_LIST
28389&Interp_GetPtrBasePop,
28390#endif
28391#ifdef GET_INTERPFN_DISPATCHERS
28392PRESERVE_NONE
28393static bool Interp_GetPtrBasePop(InterpState &S, CodePtr &PC) {
28394 {
28395 CodePtr OpPC = PC;
28396 const auto V0 = ReadArg<uint32_t>(S, PC);
28397 const auto V1 = ReadArg<bool>(S, PC);
28398 if (!GetPtrBasePop(S, OpPC, V0, V1))
28399 return false;
28400 }
28401#if USE_TAILCALLS
28402 MUSTTAIL return InterpNext(S, PC);
28403#else
28404 return true;
28405#endif
28406}
28407#endif
28408#ifdef GET_DISASM
28409case OP_GetPtrBasePop:
28410 Text.Op = PrintName("GetPtrBasePop");
28411 Text.Args.push_back(printArg<uint32_t>(P, PC));
28412 Text.Args.push_back(printArg<bool>(P, PC));
28413 break;
28414#endif
28415#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28416bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
28417#endif
28418#ifdef GET_LINK_IMPL
28419bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
28420 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
28421}
28422#endif
28423#ifdef GET_EVAL_IMPL
28424bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
28425 if (!isActive()) return true;
28426 CurrentSource = L;
28427 return GetPtrBasePop(S, OpPC, A0, A1);
28428}
28429#endif
28430#ifdef GET_OPCODE_NAMES
28431OP_GetPtrDerivedPop,
28432#endif
28433#ifdef GET_INTERPFN_LIST
28434&Interp_GetPtrDerivedPop,
28435#endif
28436#ifdef GET_INTERPFN_DISPATCHERS
28437PRESERVE_NONE
28438static bool Interp_GetPtrDerivedPop(InterpState &S, CodePtr &PC) {
28439 {
28440 CodePtr OpPC = PC;
28441 const auto V0 = ReadArg<uint32_t>(S, PC);
28442 const auto V1 = ReadArg<bool>(S, PC);
28443 const auto V2 = ReadArg<const Type *>(S, PC);
28444 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2))
28445 return false;
28446 }
28447#if USE_TAILCALLS
28448 MUSTTAIL return InterpNext(S, PC);
28449#else
28450 return true;
28451#endif
28452}
28453#endif
28454#ifdef GET_DISASM
28455case OP_GetPtrDerivedPop:
28456 Text.Op = PrintName("GetPtrDerivedPop");
28457 Text.Args.push_back(printArg<uint32_t>(P, PC));
28458 Text.Args.push_back(printArg<bool>(P, PC));
28459 Text.Args.push_back(printArg<const Type *>(P, PC));
28460 break;
28461#endif
28462#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28463bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
28464#endif
28465#ifdef GET_LINK_IMPL
28466bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
28467 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
28468}
28469#endif
28470#ifdef GET_EVAL_IMPL
28471bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
28472 if (!isActive()) return true;
28473 CurrentSource = L;
28474 return GetPtrDerivedPop(S, OpPC, A0, A1, A2);
28475}
28476#endif
28477#ifdef GET_OPCODE_NAMES
28478OP_GetPtrField,
28479#endif
28480#ifdef GET_INTERPFN_LIST
28481&Interp_GetPtrField,
28482#endif
28483#ifdef GET_INTERPFN_DISPATCHERS
28484PRESERVE_NONE
28485static bool Interp_GetPtrField(InterpState &S, CodePtr &PC) {
28486 {
28487 CodePtr OpPC = PC;
28488 const auto V0 = ReadArg<uint32_t>(S, PC);
28489 if (!GetPtrField(S, OpPC, V0))
28490 return false;
28491 }
28492#if USE_TAILCALLS
28493 MUSTTAIL return InterpNext(S, PC);
28494#else
28495 return true;
28496#endif
28497}
28498#endif
28499#ifdef GET_DISASM
28500case OP_GetPtrField:
28501 Text.Op = PrintName("GetPtrField");
28502 Text.Args.push_back(printArg<uint32_t>(P, PC));
28503 break;
28504#endif
28505#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28506bool emitGetPtrField( uint32_t , SourceInfo);
28507#endif
28508#ifdef GET_LINK_IMPL
28509bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
28510 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
28511}
28512#endif
28513#ifdef GET_EVAL_IMPL
28514bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
28515 if (!isActive()) return true;
28516 CurrentSource = L;
28517 return GetPtrField(S, OpPC, A0);
28518}
28519#endif
28520#ifdef GET_OPCODE_NAMES
28521OP_GetPtrFieldPop,
28522#endif
28523#ifdef GET_INTERPFN_LIST
28524&Interp_GetPtrFieldPop,
28525#endif
28526#ifdef GET_INTERPFN_DISPATCHERS
28527PRESERVE_NONE
28528static bool Interp_GetPtrFieldPop(InterpState &S, CodePtr &PC) {
28529 {
28530 CodePtr OpPC = PC;
28531 const auto V0 = ReadArg<uint32_t>(S, PC);
28532 if (!GetPtrFieldPop(S, OpPC, V0))
28533 return false;
28534 }
28535#if USE_TAILCALLS
28536 MUSTTAIL return InterpNext(S, PC);
28537#else
28538 return true;
28539#endif
28540}
28541#endif
28542#ifdef GET_DISASM
28543case OP_GetPtrFieldPop:
28544 Text.Op = PrintName("GetPtrFieldPop");
28545 Text.Args.push_back(printArg<uint32_t>(P, PC));
28546 break;
28547#endif
28548#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28549bool emitGetPtrFieldPop( uint32_t , SourceInfo);
28550#endif
28551#ifdef GET_LINK_IMPL
28552bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
28553 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
28554}
28555#endif
28556#ifdef GET_EVAL_IMPL
28557bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
28558 if (!isActive()) return true;
28559 CurrentSource = L;
28560 return GetPtrFieldPop(S, OpPC, A0);
28561}
28562#endif
28563#ifdef GET_OPCODE_NAMES
28564OP_GetPtrGlobal,
28565#endif
28566#ifdef GET_INTERPFN_LIST
28567&Interp_GetPtrGlobal,
28568#endif
28569#ifdef GET_INTERPFN_DISPATCHERS
28570PRESERVE_NONE
28571static bool Interp_GetPtrGlobal(InterpState &S, CodePtr &PC) {
28572 {
28573 CodePtr OpPC = PC;
28574 const auto V0 = ReadArg<uint32_t>(S, PC);
28575 if (!GetPtrGlobal(S, OpPC, V0))
28576 return false;
28577 }
28578#if USE_TAILCALLS
28579 MUSTTAIL return InterpNext(S, PC);
28580#else
28581 return true;
28582#endif
28583}
28584#endif
28585#ifdef GET_DISASM
28586case OP_GetPtrGlobal:
28587 Text.Op = PrintName("GetPtrGlobal");
28588 Text.Args.push_back(printArg<uint32_t>(P, PC));
28589 break;
28590#endif
28591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28592bool emitGetPtrGlobal( uint32_t , SourceInfo);
28593#endif
28594#ifdef GET_LINK_IMPL
28595bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
28596 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
28597}
28598#endif
28599#ifdef GET_EVAL_IMPL
28600bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
28601 if (!isActive()) return true;
28602 CurrentSource = L;
28603 return GetPtrGlobal(S, OpPC, A0);
28604}
28605#endif
28606#ifdef GET_OPCODE_NAMES
28607OP_GetPtrLocal,
28608#endif
28609#ifdef GET_INTERPFN_LIST
28610&Interp_GetPtrLocal,
28611#endif
28612#ifdef GET_INTERPFN_DISPATCHERS
28613PRESERVE_NONE
28614static bool Interp_GetPtrLocal(InterpState &S, CodePtr &PC) {
28615 {
28616 CodePtr OpPC = PC;
28617 const auto V0 = ReadArg<uint32_t>(S, PC);
28618 if (!GetPtrLocal(S, OpPC, V0))
28619 return false;
28620 }
28621#if USE_TAILCALLS
28622 MUSTTAIL return InterpNext(S, PC);
28623#else
28624 return true;
28625#endif
28626}
28627#endif
28628#ifdef GET_DISASM
28629case OP_GetPtrLocal:
28630 Text.Op = PrintName("GetPtrLocal");
28631 Text.Args.push_back(printArg<uint32_t>(P, PC));
28632 break;
28633#endif
28634#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28635bool emitGetPtrLocal( uint32_t , SourceInfo);
28636#endif
28637#ifdef GET_LINK_IMPL
28638bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
28639 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
28640}
28641#endif
28642#ifdef GET_OPCODE_NAMES
28643OP_GetPtrParam,
28644#endif
28645#ifdef GET_INTERPFN_LIST
28646&Interp_GetPtrParam,
28647#endif
28648#ifdef GET_INTERPFN_DISPATCHERS
28649PRESERVE_NONE
28650static bool Interp_GetPtrParam(InterpState &S, CodePtr &PC) {
28651 {
28652 CodePtr OpPC = PC;
28653 const auto V0 = ReadArg<uint32_t>(S, PC);
28654 if (!GetPtrParam(S, OpPC, V0))
28655 return false;
28656 }
28657#if USE_TAILCALLS
28658 MUSTTAIL return InterpNext(S, PC);
28659#else
28660 return true;
28661#endif
28662}
28663#endif
28664#ifdef GET_DISASM
28665case OP_GetPtrParam:
28666 Text.Op = PrintName("GetPtrParam");
28667 Text.Args.push_back(printArg<uint32_t>(P, PC));
28668 break;
28669#endif
28670#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28671bool emitGetPtrParam( uint32_t , SourceInfo);
28672#endif
28673#ifdef GET_LINK_IMPL
28674bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28675 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
28676}
28677#endif
28678#ifdef GET_EVAL_IMPL
28679bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28680 if (!isActive()) return true;
28681 CurrentSource = L;
28682 return GetPtrParam(S, OpPC, A0);
28683}
28684#endif
28685#ifdef GET_OPCODE_NAMES
28686OP_GetPtrThisBase,
28687#endif
28688#ifdef GET_INTERPFN_LIST
28689&Interp_GetPtrThisBase,
28690#endif
28691#ifdef GET_INTERPFN_DISPATCHERS
28692PRESERVE_NONE
28693static bool Interp_GetPtrThisBase(InterpState &S, CodePtr &PC) {
28694 {
28695 CodePtr OpPC = PC;
28696 const auto V0 = ReadArg<uint32_t>(S, PC);
28697 if (!GetPtrThisBase(S, OpPC, V0))
28698 return false;
28699 }
28700#if USE_TAILCALLS
28701 MUSTTAIL return InterpNext(S, PC);
28702#else
28703 return true;
28704#endif
28705}
28706#endif
28707#ifdef GET_DISASM
28708case OP_GetPtrThisBase:
28709 Text.Op = PrintName("GetPtrThisBase");
28710 Text.Args.push_back(printArg<uint32_t>(P, PC));
28711 break;
28712#endif
28713#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28714bool emitGetPtrThisBase( uint32_t , SourceInfo);
28715#endif
28716#ifdef GET_LINK_IMPL
28717bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28718 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
28719}
28720#endif
28721#ifdef GET_EVAL_IMPL
28722bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28723 if (!isActive()) return true;
28724 CurrentSource = L;
28725 return GetPtrThisBase(S, OpPC, A0);
28726}
28727#endif
28728#ifdef GET_OPCODE_NAMES
28729OP_GetPtrThisField,
28730#endif
28731#ifdef GET_INTERPFN_LIST
28732&Interp_GetPtrThisField,
28733#endif
28734#ifdef GET_INTERPFN_DISPATCHERS
28735PRESERVE_NONE
28736static bool Interp_GetPtrThisField(InterpState &S, CodePtr &PC) {
28737 {
28738 CodePtr OpPC = PC;
28739 const auto V0 = ReadArg<uint32_t>(S, PC);
28740 if (!GetPtrThisField(S, OpPC, V0))
28741 return false;
28742 }
28743#if USE_TAILCALLS
28744 MUSTTAIL return InterpNext(S, PC);
28745#else
28746 return true;
28747#endif
28748}
28749#endif
28750#ifdef GET_DISASM
28751case OP_GetPtrThisField:
28752 Text.Op = PrintName("GetPtrThisField");
28753 Text.Args.push_back(printArg<uint32_t>(P, PC));
28754 break;
28755#endif
28756#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28757bool emitGetPtrThisField( uint32_t , SourceInfo);
28758#endif
28759#ifdef GET_LINK_IMPL
28760bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28761 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
28762}
28763#endif
28764#ifdef GET_EVAL_IMPL
28765bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28766 if (!isActive()) return true;
28767 CurrentSource = L;
28768 return GetPtrThisField(S, OpPC, A0);
28769}
28770#endif
28771#ifdef GET_OPCODE_NAMES
28772OP_GetPtrThisVirtBase,
28773#endif
28774#ifdef GET_INTERPFN_LIST
28775&Interp_GetPtrThisVirtBase,
28776#endif
28777#ifdef GET_INTERPFN_DISPATCHERS
28778PRESERVE_NONE
28779static bool Interp_GetPtrThisVirtBase(InterpState &S, CodePtr &PC) {
28780 {
28781 CodePtr OpPC = PC;
28782 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
28783 if (!GetPtrThisVirtBase(S, OpPC, V0))
28784 return false;
28785 }
28786#if USE_TAILCALLS
28787 MUSTTAIL return InterpNext(S, PC);
28788#else
28789 return true;
28790#endif
28791}
28792#endif
28793#ifdef GET_DISASM
28794case OP_GetPtrThisVirtBase:
28795 Text.Op = PrintName("GetPtrThisVirtBase");
28796 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
28797 break;
28798#endif
28799#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28800bool emitGetPtrThisVirtBase( const RecordDecl * , SourceInfo);
28801#endif
28802#ifdef GET_LINK_IMPL
28803bool ByteCodeEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28804 return emitOp<const RecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
28805}
28806#endif
28807#ifdef GET_EVAL_IMPL
28808bool EvalEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28809 if (!isActive()) return true;
28810 CurrentSource = L;
28811 return GetPtrThisVirtBase(S, OpPC, A0);
28812}
28813#endif
28814#ifdef GET_OPCODE_NAMES
28815OP_GetPtrVirtBasePop,
28816#endif
28817#ifdef GET_INTERPFN_LIST
28818&Interp_GetPtrVirtBasePop,
28819#endif
28820#ifdef GET_INTERPFN_DISPATCHERS
28821PRESERVE_NONE
28822static bool Interp_GetPtrVirtBasePop(InterpState &S, CodePtr &PC) {
28823 {
28824 CodePtr OpPC = PC;
28825 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
28826 if (!GetPtrVirtBasePop(S, OpPC, V0))
28827 return false;
28828 }
28829#if USE_TAILCALLS
28830 MUSTTAIL return InterpNext(S, PC);
28831#else
28832 return true;
28833#endif
28834}
28835#endif
28836#ifdef GET_DISASM
28837case OP_GetPtrVirtBasePop:
28838 Text.Op = PrintName("GetPtrVirtBasePop");
28839 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
28840 break;
28841#endif
28842#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28843bool emitGetPtrVirtBasePop( const RecordDecl * , SourceInfo);
28844#endif
28845#ifdef GET_LINK_IMPL
28846bool ByteCodeEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28847 return emitOp<const RecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
28848}
28849#endif
28850#ifdef GET_EVAL_IMPL
28851bool EvalEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28852 if (!isActive()) return true;
28853 CurrentSource = L;
28854 return GetPtrVirtBasePop(S, OpPC, A0);
28855}
28856#endif
28857#ifdef GET_OPCODE_NAMES
28858OP_GetThisFieldSint8,
28859OP_GetThisFieldUint8,
28860OP_GetThisFieldSint16,
28861OP_GetThisFieldUint16,
28862OP_GetThisFieldSint32,
28863OP_GetThisFieldUint32,
28864OP_GetThisFieldSint64,
28865OP_GetThisFieldUint64,
28866OP_GetThisFieldIntAP,
28867OP_GetThisFieldIntAPS,
28868OP_GetThisFieldBool,
28869OP_GetThisFieldFixedPoint,
28870OP_GetThisFieldPtr,
28871OP_GetThisFieldMemberPtr,
28872OP_GetThisFieldFloat,
28873#endif
28874#ifdef GET_INTERPFN_LIST
28875&Interp_GetThisFieldSint8,
28876&Interp_GetThisFieldUint8,
28877&Interp_GetThisFieldSint16,
28878&Interp_GetThisFieldUint16,
28879&Interp_GetThisFieldSint32,
28880&Interp_GetThisFieldUint32,
28881&Interp_GetThisFieldSint64,
28882&Interp_GetThisFieldUint64,
28883&Interp_GetThisFieldIntAP,
28884&Interp_GetThisFieldIntAPS,
28885&Interp_GetThisFieldBool,
28886&Interp_GetThisFieldFixedPoint,
28887&Interp_GetThisFieldPtr,
28888&Interp_GetThisFieldMemberPtr,
28889&Interp_GetThisFieldFloat,
28890#endif
28891#ifdef GET_INTERPFN_DISPATCHERS
28892PRESERVE_NONE
28893static bool Interp_GetThisFieldSint8(InterpState &S, CodePtr &PC) {
28894 {
28895 CodePtr OpPC = PC;
28896 const auto V0 = ReadArg<uint32_t>(S, PC);
28897 if (!GetThisField<PT_Sint8>(S, OpPC, V0))
28898 return false;
28899 }
28900#if USE_TAILCALLS
28901 MUSTTAIL return InterpNext(S, PC);
28902#else
28903 return true;
28904#endif
28905}
28906PRESERVE_NONE
28907static bool Interp_GetThisFieldUint8(InterpState &S, CodePtr &PC) {
28908 {
28909 CodePtr OpPC = PC;
28910 const auto V0 = ReadArg<uint32_t>(S, PC);
28911 if (!GetThisField<PT_Uint8>(S, OpPC, V0))
28912 return false;
28913 }
28914#if USE_TAILCALLS
28915 MUSTTAIL return InterpNext(S, PC);
28916#else
28917 return true;
28918#endif
28919}
28920PRESERVE_NONE
28921static bool Interp_GetThisFieldSint16(InterpState &S, CodePtr &PC) {
28922 {
28923 CodePtr OpPC = PC;
28924 const auto V0 = ReadArg<uint32_t>(S, PC);
28925 if (!GetThisField<PT_Sint16>(S, OpPC, V0))
28926 return false;
28927 }
28928#if USE_TAILCALLS
28929 MUSTTAIL return InterpNext(S, PC);
28930#else
28931 return true;
28932#endif
28933}
28934PRESERVE_NONE
28935static bool Interp_GetThisFieldUint16(InterpState &S, CodePtr &PC) {
28936 {
28937 CodePtr OpPC = PC;
28938 const auto V0 = ReadArg<uint32_t>(S, PC);
28939 if (!GetThisField<PT_Uint16>(S, OpPC, V0))
28940 return false;
28941 }
28942#if USE_TAILCALLS
28943 MUSTTAIL return InterpNext(S, PC);
28944#else
28945 return true;
28946#endif
28947}
28948PRESERVE_NONE
28949static bool Interp_GetThisFieldSint32(InterpState &S, CodePtr &PC) {
28950 {
28951 CodePtr OpPC = PC;
28952 const auto V0 = ReadArg<uint32_t>(S, PC);
28953 if (!GetThisField<PT_Sint32>(S, OpPC, V0))
28954 return false;
28955 }
28956#if USE_TAILCALLS
28957 MUSTTAIL return InterpNext(S, PC);
28958#else
28959 return true;
28960#endif
28961}
28962PRESERVE_NONE
28963static bool Interp_GetThisFieldUint32(InterpState &S, CodePtr &PC) {
28964 {
28965 CodePtr OpPC = PC;
28966 const auto V0 = ReadArg<uint32_t>(S, PC);
28967 if (!GetThisField<PT_Uint32>(S, OpPC, V0))
28968 return false;
28969 }
28970#if USE_TAILCALLS
28971 MUSTTAIL return InterpNext(S, PC);
28972#else
28973 return true;
28974#endif
28975}
28976PRESERVE_NONE
28977static bool Interp_GetThisFieldSint64(InterpState &S, CodePtr &PC) {
28978 {
28979 CodePtr OpPC = PC;
28980 const auto V0 = ReadArg<uint32_t>(S, PC);
28981 if (!GetThisField<PT_Sint64>(S, OpPC, V0))
28982 return false;
28983 }
28984#if USE_TAILCALLS
28985 MUSTTAIL return InterpNext(S, PC);
28986#else
28987 return true;
28988#endif
28989}
28990PRESERVE_NONE
28991static bool Interp_GetThisFieldUint64(InterpState &S, CodePtr &PC) {
28992 {
28993 CodePtr OpPC = PC;
28994 const auto V0 = ReadArg<uint32_t>(S, PC);
28995 if (!GetThisField<PT_Uint64>(S, OpPC, V0))
28996 return false;
28997 }
28998#if USE_TAILCALLS
28999 MUSTTAIL return InterpNext(S, PC);
29000#else
29001 return true;
29002#endif
29003}
29004PRESERVE_NONE
29005static bool Interp_GetThisFieldIntAP(InterpState &S, CodePtr &PC) {
29006 {
29007 CodePtr OpPC = PC;
29008 const auto V0 = ReadArg<uint32_t>(S, PC);
29009 if (!GetThisField<PT_IntAP>(S, OpPC, V0))
29010 return false;
29011 }
29012#if USE_TAILCALLS
29013 MUSTTAIL return InterpNext(S, PC);
29014#else
29015 return true;
29016#endif
29017}
29018PRESERVE_NONE
29019static bool Interp_GetThisFieldIntAPS(InterpState &S, CodePtr &PC) {
29020 {
29021 CodePtr OpPC = PC;
29022 const auto V0 = ReadArg<uint32_t>(S, PC);
29023 if (!GetThisField<PT_IntAPS>(S, OpPC, V0))
29024 return false;
29025 }
29026#if USE_TAILCALLS
29027 MUSTTAIL return InterpNext(S, PC);
29028#else
29029 return true;
29030#endif
29031}
29032PRESERVE_NONE
29033static bool Interp_GetThisFieldBool(InterpState &S, CodePtr &PC) {
29034 {
29035 CodePtr OpPC = PC;
29036 const auto V0 = ReadArg<uint32_t>(S, PC);
29037 if (!GetThisField<PT_Bool>(S, OpPC, V0))
29038 return false;
29039 }
29040#if USE_TAILCALLS
29041 MUSTTAIL return InterpNext(S, PC);
29042#else
29043 return true;
29044#endif
29045}
29046PRESERVE_NONE
29047static bool Interp_GetThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
29048 {
29049 CodePtr OpPC = PC;
29050 const auto V0 = ReadArg<uint32_t>(S, PC);
29051 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0))
29052 return false;
29053 }
29054#if USE_TAILCALLS
29055 MUSTTAIL return InterpNext(S, PC);
29056#else
29057 return true;
29058#endif
29059}
29060PRESERVE_NONE
29061static bool Interp_GetThisFieldPtr(InterpState &S, CodePtr &PC) {
29062 {
29063 CodePtr OpPC = PC;
29064 const auto V0 = ReadArg<uint32_t>(S, PC);
29065 if (!GetThisField<PT_Ptr>(S, OpPC, V0))
29066 return false;
29067 }
29068#if USE_TAILCALLS
29069 MUSTTAIL return InterpNext(S, PC);
29070#else
29071 return true;
29072#endif
29073}
29074PRESERVE_NONE
29075static bool Interp_GetThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
29076 {
29077 CodePtr OpPC = PC;
29078 const auto V0 = ReadArg<uint32_t>(S, PC);
29079 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0))
29080 return false;
29081 }
29082#if USE_TAILCALLS
29083 MUSTTAIL return InterpNext(S, PC);
29084#else
29085 return true;
29086#endif
29087}
29088PRESERVE_NONE
29089static bool Interp_GetThisFieldFloat(InterpState &S, CodePtr &PC) {
29090 {
29091 CodePtr OpPC = PC;
29092 const auto V0 = ReadArg<uint32_t>(S, PC);
29093 if (!GetThisField<PT_Float>(S, OpPC, V0))
29094 return false;
29095 }
29096#if USE_TAILCALLS
29097 MUSTTAIL return InterpNext(S, PC);
29098#else
29099 return true;
29100#endif
29101}
29102#endif
29103#ifdef GET_DISASM
29104case OP_GetThisFieldSint8:
29105 Text.Op = PrintName("GetThisFieldSint8");
29106 Text.Args.push_back(printArg<uint32_t>(P, PC));
29107 break;
29108case OP_GetThisFieldUint8:
29109 Text.Op = PrintName("GetThisFieldUint8");
29110 Text.Args.push_back(printArg<uint32_t>(P, PC));
29111 break;
29112case OP_GetThisFieldSint16:
29113 Text.Op = PrintName("GetThisFieldSint16");
29114 Text.Args.push_back(printArg<uint32_t>(P, PC));
29115 break;
29116case OP_GetThisFieldUint16:
29117 Text.Op = PrintName("GetThisFieldUint16");
29118 Text.Args.push_back(printArg<uint32_t>(P, PC));
29119 break;
29120case OP_GetThisFieldSint32:
29121 Text.Op = PrintName("GetThisFieldSint32");
29122 Text.Args.push_back(printArg<uint32_t>(P, PC));
29123 break;
29124case OP_GetThisFieldUint32:
29125 Text.Op = PrintName("GetThisFieldUint32");
29126 Text.Args.push_back(printArg<uint32_t>(P, PC));
29127 break;
29128case OP_GetThisFieldSint64:
29129 Text.Op = PrintName("GetThisFieldSint64");
29130 Text.Args.push_back(printArg<uint32_t>(P, PC));
29131 break;
29132case OP_GetThisFieldUint64:
29133 Text.Op = PrintName("GetThisFieldUint64");
29134 Text.Args.push_back(printArg<uint32_t>(P, PC));
29135 break;
29136case OP_GetThisFieldIntAP:
29137 Text.Op = PrintName("GetThisFieldIntAP");
29138 Text.Args.push_back(printArg<uint32_t>(P, PC));
29139 break;
29140case OP_GetThisFieldIntAPS:
29141 Text.Op = PrintName("GetThisFieldIntAPS");
29142 Text.Args.push_back(printArg<uint32_t>(P, PC));
29143 break;
29144case OP_GetThisFieldBool:
29145 Text.Op = PrintName("GetThisFieldBool");
29146 Text.Args.push_back(printArg<uint32_t>(P, PC));
29147 break;
29148case OP_GetThisFieldFixedPoint:
29149 Text.Op = PrintName("GetThisFieldFixedPoint");
29150 Text.Args.push_back(printArg<uint32_t>(P, PC));
29151 break;
29152case OP_GetThisFieldPtr:
29153 Text.Op = PrintName("GetThisFieldPtr");
29154 Text.Args.push_back(printArg<uint32_t>(P, PC));
29155 break;
29156case OP_GetThisFieldMemberPtr:
29157 Text.Op = PrintName("GetThisFieldMemberPtr");
29158 Text.Args.push_back(printArg<uint32_t>(P, PC));
29159 break;
29160case OP_GetThisFieldFloat:
29161 Text.Op = PrintName("GetThisFieldFloat");
29162 Text.Args.push_back(printArg<uint32_t>(P, PC));
29163 break;
29164#endif
29165#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29166bool emitGetThisFieldSint8( uint32_t , SourceInfo);
29167bool emitGetThisFieldUint8( uint32_t , SourceInfo);
29168bool emitGetThisFieldSint16( uint32_t , SourceInfo);
29169bool emitGetThisFieldUint16( uint32_t , SourceInfo);
29170bool emitGetThisFieldSint32( uint32_t , SourceInfo);
29171bool emitGetThisFieldUint32( uint32_t , SourceInfo);
29172bool emitGetThisFieldSint64( uint32_t , SourceInfo);
29173bool emitGetThisFieldUint64( uint32_t , SourceInfo);
29174bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
29175bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
29176bool emitGetThisFieldBool( uint32_t , SourceInfo);
29177bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
29178bool emitGetThisFieldPtr( uint32_t , SourceInfo);
29179bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
29180bool emitGetThisFieldFloat( uint32_t , SourceInfo);
29181#endif
29182#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29183[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
29184#endif
29185#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29186bool
29187#if defined(GET_EVAL_IMPL)
29188EvalEmitter
29189#else
29190ByteCodeEmitter
29191#endif
29192::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
29193 switch (T0) {
29194 case PT_Sint8:
29195 return emitGetThisFieldSint8(A0, I);
29196 case PT_Uint8:
29197 return emitGetThisFieldUint8(A0, I);
29198 case PT_Sint16:
29199 return emitGetThisFieldSint16(A0, I);
29200 case PT_Uint16:
29201 return emitGetThisFieldUint16(A0, I);
29202 case PT_Sint32:
29203 return emitGetThisFieldSint32(A0, I);
29204 case PT_Uint32:
29205 return emitGetThisFieldUint32(A0, I);
29206 case PT_Sint64:
29207 return emitGetThisFieldSint64(A0, I);
29208 case PT_Uint64:
29209 return emitGetThisFieldUint64(A0, I);
29210 case PT_IntAP:
29211 return emitGetThisFieldIntAP(A0, I);
29212 case PT_IntAPS:
29213 return emitGetThisFieldIntAPS(A0, I);
29214 case PT_Bool:
29215 return emitGetThisFieldBool(A0, I);
29216 case PT_FixedPoint:
29217 return emitGetThisFieldFixedPoint(A0, I);
29218 case PT_Ptr:
29219 return emitGetThisFieldPtr(A0, I);
29220 case PT_MemberPtr:
29221 return emitGetThisFieldMemberPtr(A0, I);
29222 case PT_Float:
29223 return emitGetThisFieldFloat(A0, I);
29224 }
29225 llvm_unreachable("invalid enum value");
29226}
29227#endif
29228#ifdef GET_LINK_IMPL
29229bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
29230 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
29231}
29232bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
29233 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
29234}
29235bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
29236 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
29237}
29238bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
29239 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
29240}
29241bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
29242 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
29243}
29244bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
29245 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
29246}
29247bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
29248 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
29249}
29250bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
29251 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
29252}
29253bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
29254 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
29255}
29256bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
29257 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
29258}
29259bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
29260 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
29261}
29262bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
29263 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
29264}
29265bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
29266 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
29267}
29268bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
29269 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
29270}
29271bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
29272 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
29273}
29274#endif
29275#ifdef GET_EVAL_IMPL
29276bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
29277 if (!isActive()) return true;
29278 CurrentSource = L;
29279 return GetThisField<PT_Sint8>(S, OpPC, A0);
29280}
29281bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
29282 if (!isActive()) return true;
29283 CurrentSource = L;
29284 return GetThisField<PT_Uint8>(S, OpPC, A0);
29285}
29286bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
29287 if (!isActive()) return true;
29288 CurrentSource = L;
29289 return GetThisField<PT_Sint16>(S, OpPC, A0);
29290}
29291bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
29292 if (!isActive()) return true;
29293 CurrentSource = L;
29294 return GetThisField<PT_Uint16>(S, OpPC, A0);
29295}
29296bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
29297 if (!isActive()) return true;
29298 CurrentSource = L;
29299 return GetThisField<PT_Sint32>(S, OpPC, A0);
29300}
29301bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
29302 if (!isActive()) return true;
29303 CurrentSource = L;
29304 return GetThisField<PT_Uint32>(S, OpPC, A0);
29305}
29306bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
29307 if (!isActive()) return true;
29308 CurrentSource = L;
29309 return GetThisField<PT_Sint64>(S, OpPC, A0);
29310}
29311bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
29312 if (!isActive()) return true;
29313 CurrentSource = L;
29314 return GetThisField<PT_Uint64>(S, OpPC, A0);
29315}
29316bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
29317 if (!isActive()) return true;
29318 CurrentSource = L;
29319 return GetThisField<PT_IntAP>(S, OpPC, A0);
29320}
29321bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
29322 if (!isActive()) return true;
29323 CurrentSource = L;
29324 return GetThisField<PT_IntAPS>(S, OpPC, A0);
29325}
29326bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
29327 if (!isActive()) return true;
29328 CurrentSource = L;
29329 return GetThisField<PT_Bool>(S, OpPC, A0);
29330}
29331bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
29332 if (!isActive()) return true;
29333 CurrentSource = L;
29334 return GetThisField<PT_FixedPoint>(S, OpPC, A0);
29335}
29336bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
29337 if (!isActive()) return true;
29338 CurrentSource = L;
29339 return GetThisField<PT_Ptr>(S, OpPC, A0);
29340}
29341bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
29342 if (!isActive()) return true;
29343 CurrentSource = L;
29344 return GetThisField<PT_MemberPtr>(S, OpPC, A0);
29345}
29346bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
29347 if (!isActive()) return true;
29348 CurrentSource = L;
29349 return GetThisField<PT_Float>(S, OpPC, A0);
29350}
29351#endif
29352#ifdef GET_OPCODE_NAMES
29353OP_GetTypeid,
29354#endif
29355#ifdef GET_INTERPFN_LIST
29356&Interp_GetTypeid,
29357#endif
29358#ifdef GET_INTERPFN_DISPATCHERS
29359PRESERVE_NONE
29360static bool Interp_GetTypeid(InterpState &S, CodePtr &PC) {
29361 {
29362 CodePtr OpPC = PC;
29363 const auto V0 = ReadArg<const Type *>(S, PC);
29364 const auto V1 = ReadArg<const Type *>(S, PC);
29365 if (!GetTypeid(S, OpPC, V0, V1))
29366 return false;
29367 }
29368#if USE_TAILCALLS
29369 MUSTTAIL return InterpNext(S, PC);
29370#else
29371 return true;
29372#endif
29373}
29374#endif
29375#ifdef GET_DISASM
29376case OP_GetTypeid:
29377 Text.Op = PrintName("GetTypeid");
29378 Text.Args.push_back(printArg<const Type *>(P, PC));
29379 Text.Args.push_back(printArg<const Type *>(P, PC));
29380 break;
29381#endif
29382#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29383bool emitGetTypeid( const Type * , const Type * , SourceInfo);
29384#endif
29385#ifdef GET_LINK_IMPL
29386bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
29387 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
29388}
29389#endif
29390#ifdef GET_EVAL_IMPL
29391bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
29392 if (!isActive()) return true;
29393 CurrentSource = L;
29394 return GetTypeid(S, OpPC, A0, A1);
29395}
29396#endif
29397#ifdef GET_OPCODE_NAMES
29398OP_GetTypeidPtr,
29399#endif
29400#ifdef GET_INTERPFN_LIST
29401&Interp_GetTypeidPtr,
29402#endif
29403#ifdef GET_INTERPFN_DISPATCHERS
29404PRESERVE_NONE
29405static bool Interp_GetTypeidPtr(InterpState &S, CodePtr &PC) {
29406 {
29407 CodePtr OpPC = PC;
29408 const auto V0 = ReadArg<const Type *>(S, PC);
29409 if (!GetTypeidPtr(S, OpPC, V0))
29410 return false;
29411 }
29412#if USE_TAILCALLS
29413 MUSTTAIL return InterpNext(S, PC);
29414#else
29415 return true;
29416#endif
29417}
29418#endif
29419#ifdef GET_DISASM
29420case OP_GetTypeidPtr:
29421 Text.Op = PrintName("GetTypeidPtr");
29422 Text.Args.push_back(printArg<const Type *>(P, PC));
29423 break;
29424#endif
29425#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29426bool emitGetTypeidPtr( const Type * , SourceInfo);
29427#endif
29428#ifdef GET_LINK_IMPL
29429bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
29430 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
29431}
29432#endif
29433#ifdef GET_EVAL_IMPL
29434bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
29435 if (!isActive()) return true;
29436 CurrentSource = L;
29437 return GetTypeidPtr(S, OpPC, A0);
29438}
29439#endif
29440#ifdef GET_OPCODE_NAMES
29441OP_IncSint8,
29442OP_IncUint8,
29443OP_IncSint16,
29444OP_IncUint16,
29445OP_IncSint32,
29446OP_IncUint32,
29447OP_IncSint64,
29448OP_IncUint64,
29449OP_IncIntAP,
29450OP_IncIntAPS,
29451OP_IncBool,
29452OP_IncFixedPoint,
29453#endif
29454#ifdef GET_INTERPFN_LIST
29455&Interp_IncSint8,
29456&Interp_IncUint8,
29457&Interp_IncSint16,
29458&Interp_IncUint16,
29459&Interp_IncSint32,
29460&Interp_IncUint32,
29461&Interp_IncSint64,
29462&Interp_IncUint64,
29463&Interp_IncIntAP,
29464&Interp_IncIntAPS,
29465&Interp_IncBool,
29466&Interp_IncFixedPoint,
29467#endif
29468#ifdef GET_INTERPFN_DISPATCHERS
29469PRESERVE_NONE
29470static bool Interp_IncSint8(InterpState &S, CodePtr &PC) {
29471 {
29472 CodePtr OpPC = PC;
29473 const auto V0 = ReadArg<bool>(S, PC);
29474 if (!Inc<PT_Sint8>(S, OpPC, V0))
29475 return false;
29476 }
29477#if USE_TAILCALLS
29478 MUSTTAIL return InterpNext(S, PC);
29479#else
29480 return true;
29481#endif
29482}
29483PRESERVE_NONE
29484static bool Interp_IncUint8(InterpState &S, CodePtr &PC) {
29485 {
29486 CodePtr OpPC = PC;
29487 const auto V0 = ReadArg<bool>(S, PC);
29488 if (!Inc<PT_Uint8>(S, OpPC, V0))
29489 return false;
29490 }
29491#if USE_TAILCALLS
29492 MUSTTAIL return InterpNext(S, PC);
29493#else
29494 return true;
29495#endif
29496}
29497PRESERVE_NONE
29498static bool Interp_IncSint16(InterpState &S, CodePtr &PC) {
29499 {
29500 CodePtr OpPC = PC;
29501 const auto V0 = ReadArg<bool>(S, PC);
29502 if (!Inc<PT_Sint16>(S, OpPC, V0))
29503 return false;
29504 }
29505#if USE_TAILCALLS
29506 MUSTTAIL return InterpNext(S, PC);
29507#else
29508 return true;
29509#endif
29510}
29511PRESERVE_NONE
29512static bool Interp_IncUint16(InterpState &S, CodePtr &PC) {
29513 {
29514 CodePtr OpPC = PC;
29515 const auto V0 = ReadArg<bool>(S, PC);
29516 if (!Inc<PT_Uint16>(S, OpPC, V0))
29517 return false;
29518 }
29519#if USE_TAILCALLS
29520 MUSTTAIL return InterpNext(S, PC);
29521#else
29522 return true;
29523#endif
29524}
29525PRESERVE_NONE
29526static bool Interp_IncSint32(InterpState &S, CodePtr &PC) {
29527 {
29528 CodePtr OpPC = PC;
29529 const auto V0 = ReadArg<bool>(S, PC);
29530 if (!Inc<PT_Sint32>(S, OpPC, V0))
29531 return false;
29532 }
29533#if USE_TAILCALLS
29534 MUSTTAIL return InterpNext(S, PC);
29535#else
29536 return true;
29537#endif
29538}
29539PRESERVE_NONE
29540static bool Interp_IncUint32(InterpState &S, CodePtr &PC) {
29541 {
29542 CodePtr OpPC = PC;
29543 const auto V0 = ReadArg<bool>(S, PC);
29544 if (!Inc<PT_Uint32>(S, OpPC, V0))
29545 return false;
29546 }
29547#if USE_TAILCALLS
29548 MUSTTAIL return InterpNext(S, PC);
29549#else
29550 return true;
29551#endif
29552}
29553PRESERVE_NONE
29554static bool Interp_IncSint64(InterpState &S, CodePtr &PC) {
29555 {
29556 CodePtr OpPC = PC;
29557 const auto V0 = ReadArg<bool>(S, PC);
29558 if (!Inc<PT_Sint64>(S, OpPC, V0))
29559 return false;
29560 }
29561#if USE_TAILCALLS
29562 MUSTTAIL return InterpNext(S, PC);
29563#else
29564 return true;
29565#endif
29566}
29567PRESERVE_NONE
29568static bool Interp_IncUint64(InterpState &S, CodePtr &PC) {
29569 {
29570 CodePtr OpPC = PC;
29571 const auto V0 = ReadArg<bool>(S, PC);
29572 if (!Inc<PT_Uint64>(S, OpPC, V0))
29573 return false;
29574 }
29575#if USE_TAILCALLS
29576 MUSTTAIL return InterpNext(S, PC);
29577#else
29578 return true;
29579#endif
29580}
29581PRESERVE_NONE
29582static bool Interp_IncIntAP(InterpState &S, CodePtr &PC) {
29583 {
29584 CodePtr OpPC = PC;
29585 const auto V0 = ReadArg<bool>(S, PC);
29586 if (!Inc<PT_IntAP>(S, OpPC, V0))
29587 return false;
29588 }
29589#if USE_TAILCALLS
29590 MUSTTAIL return InterpNext(S, PC);
29591#else
29592 return true;
29593#endif
29594}
29595PRESERVE_NONE
29596static bool Interp_IncIntAPS(InterpState &S, CodePtr &PC) {
29597 {
29598 CodePtr OpPC = PC;
29599 const auto V0 = ReadArg<bool>(S, PC);
29600 if (!Inc<PT_IntAPS>(S, OpPC, V0))
29601 return false;
29602 }
29603#if USE_TAILCALLS
29604 MUSTTAIL return InterpNext(S, PC);
29605#else
29606 return true;
29607#endif
29608}
29609PRESERVE_NONE
29610static bool Interp_IncBool(InterpState &S, CodePtr &PC) {
29611 {
29612 CodePtr OpPC = PC;
29613 const auto V0 = ReadArg<bool>(S, PC);
29614 if (!Inc<PT_Bool>(S, OpPC, V0))
29615 return false;
29616 }
29617#if USE_TAILCALLS
29618 MUSTTAIL return InterpNext(S, PC);
29619#else
29620 return true;
29621#endif
29622}
29623PRESERVE_NONE
29624static bool Interp_IncFixedPoint(InterpState &S, CodePtr &PC) {
29625 {
29626 CodePtr OpPC = PC;
29627 const auto V0 = ReadArg<bool>(S, PC);
29628 if (!Inc<PT_FixedPoint>(S, OpPC, V0))
29629 return false;
29630 }
29631#if USE_TAILCALLS
29632 MUSTTAIL return InterpNext(S, PC);
29633#else
29634 return true;
29635#endif
29636}
29637#endif
29638#ifdef GET_DISASM
29639case OP_IncSint8:
29640 Text.Op = PrintName("IncSint8");
29641 Text.Args.push_back(printArg<bool>(P, PC));
29642 break;
29643case OP_IncUint8:
29644 Text.Op = PrintName("IncUint8");
29645 Text.Args.push_back(printArg<bool>(P, PC));
29646 break;
29647case OP_IncSint16:
29648 Text.Op = PrintName("IncSint16");
29649 Text.Args.push_back(printArg<bool>(P, PC));
29650 break;
29651case OP_IncUint16:
29652 Text.Op = PrintName("IncUint16");
29653 Text.Args.push_back(printArg<bool>(P, PC));
29654 break;
29655case OP_IncSint32:
29656 Text.Op = PrintName("IncSint32");
29657 Text.Args.push_back(printArg<bool>(P, PC));
29658 break;
29659case OP_IncUint32:
29660 Text.Op = PrintName("IncUint32");
29661 Text.Args.push_back(printArg<bool>(P, PC));
29662 break;
29663case OP_IncSint64:
29664 Text.Op = PrintName("IncSint64");
29665 Text.Args.push_back(printArg<bool>(P, PC));
29666 break;
29667case OP_IncUint64:
29668 Text.Op = PrintName("IncUint64");
29669 Text.Args.push_back(printArg<bool>(P, PC));
29670 break;
29671case OP_IncIntAP:
29672 Text.Op = PrintName("IncIntAP");
29673 Text.Args.push_back(printArg<bool>(P, PC));
29674 break;
29675case OP_IncIntAPS:
29676 Text.Op = PrintName("IncIntAPS");
29677 Text.Args.push_back(printArg<bool>(P, PC));
29678 break;
29679case OP_IncBool:
29680 Text.Op = PrintName("IncBool");
29681 Text.Args.push_back(printArg<bool>(P, PC));
29682 break;
29683case OP_IncFixedPoint:
29684 Text.Op = PrintName("IncFixedPoint");
29685 Text.Args.push_back(printArg<bool>(P, PC));
29686 break;
29687#endif
29688#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29689bool emitIncSint8( bool , SourceInfo);
29690bool emitIncUint8( bool , SourceInfo);
29691bool emitIncSint16( bool , SourceInfo);
29692bool emitIncUint16( bool , SourceInfo);
29693bool emitIncSint32( bool , SourceInfo);
29694bool emitIncUint32( bool , SourceInfo);
29695bool emitIncSint64( bool , SourceInfo);
29696bool emitIncUint64( bool , SourceInfo);
29697bool emitIncIntAP( bool , SourceInfo);
29698bool emitIncIntAPS( bool , SourceInfo);
29699bool emitIncBool( bool , SourceInfo);
29700bool emitIncFixedPoint( bool , SourceInfo);
29701#endif
29702#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29703[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
29704#endif
29705#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29706bool
29707#if defined(GET_EVAL_IMPL)
29708EvalEmitter
29709#else
29710ByteCodeEmitter
29711#endif
29712::emitInc(PrimType T0, bool A0, SourceInfo I) {
29713 switch (T0) {
29714 case PT_Sint8:
29715 return emitIncSint8(A0, I);
29716 case PT_Uint8:
29717 return emitIncUint8(A0, I);
29718 case PT_Sint16:
29719 return emitIncSint16(A0, I);
29720 case PT_Uint16:
29721 return emitIncUint16(A0, I);
29722 case PT_Sint32:
29723 return emitIncSint32(A0, I);
29724 case PT_Uint32:
29725 return emitIncUint32(A0, I);
29726 case PT_Sint64:
29727 return emitIncSint64(A0, I);
29728 case PT_Uint64:
29729 return emitIncUint64(A0, I);
29730 case PT_IntAP:
29731 return emitIncIntAP(A0, I);
29732 case PT_IntAPS:
29733 return emitIncIntAPS(A0, I);
29734 case PT_Bool:
29735 return emitIncBool(A0, I);
29736 case PT_FixedPoint:
29737 return emitIncFixedPoint(A0, I);
29738 default: llvm_unreachable("invalid type: emitInc");
29739 }
29740 llvm_unreachable("invalid enum value");
29741}
29742#endif
29743#ifdef GET_LINK_IMPL
29744bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
29745 return emitOp<bool>(OP_IncSint8, A0, L);
29746}
29747bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
29748 return emitOp<bool>(OP_IncUint8, A0, L);
29749}
29750bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
29751 return emitOp<bool>(OP_IncSint16, A0, L);
29752}
29753bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
29754 return emitOp<bool>(OP_IncUint16, A0, L);
29755}
29756bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
29757 return emitOp<bool>(OP_IncSint32, A0, L);
29758}
29759bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
29760 return emitOp<bool>(OP_IncUint32, A0, L);
29761}
29762bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
29763 return emitOp<bool>(OP_IncSint64, A0, L);
29764}
29765bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
29766 return emitOp<bool>(OP_IncUint64, A0, L);
29767}
29768bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29769 return emitOp<bool>(OP_IncIntAP, A0, L);
29770}
29771bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29772 return emitOp<bool>(OP_IncIntAPS, A0, L);
29773}
29774bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
29775 return emitOp<bool>(OP_IncBool, A0, L);
29776}
29777bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29778 return emitOp<bool>(OP_IncFixedPoint, A0, L);
29779}
29780#endif
29781#ifdef GET_EVAL_IMPL
29782bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
29783 if (!isActive()) return true;
29784 CurrentSource = L;
29785 return Inc<PT_Sint8>(S, OpPC, A0);
29786}
29787bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
29788 if (!isActive()) return true;
29789 CurrentSource = L;
29790 return Inc<PT_Uint8>(S, OpPC, A0);
29791}
29792bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
29793 if (!isActive()) return true;
29794 CurrentSource = L;
29795 return Inc<PT_Sint16>(S, OpPC, A0);
29796}
29797bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
29798 if (!isActive()) return true;
29799 CurrentSource = L;
29800 return Inc<PT_Uint16>(S, OpPC, A0);
29801}
29802bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
29803 if (!isActive()) return true;
29804 CurrentSource = L;
29805 return Inc<PT_Sint32>(S, OpPC, A0);
29806}
29807bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
29808 if (!isActive()) return true;
29809 CurrentSource = L;
29810 return Inc<PT_Uint32>(S, OpPC, A0);
29811}
29812bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
29813 if (!isActive()) return true;
29814 CurrentSource = L;
29815 return Inc<PT_Sint64>(S, OpPC, A0);
29816}
29817bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
29818 if (!isActive()) return true;
29819 CurrentSource = L;
29820 return Inc<PT_Uint64>(S, OpPC, A0);
29821}
29822bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29823 if (!isActive()) return true;
29824 CurrentSource = L;
29825 return Inc<PT_IntAP>(S, OpPC, A0);
29826}
29827bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29828 if (!isActive()) return true;
29829 CurrentSource = L;
29830 return Inc<PT_IntAPS>(S, OpPC, A0);
29831}
29832bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
29833 if (!isActive()) return true;
29834 CurrentSource = L;
29835 return Inc<PT_Bool>(S, OpPC, A0);
29836}
29837bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29838 if (!isActive()) return true;
29839 CurrentSource = L;
29840 return Inc<PT_FixedPoint>(S, OpPC, A0);
29841}
29842#endif
29843#ifdef GET_OPCODE_NAMES
29844OP_IncBitfieldSint8,
29845OP_IncBitfieldUint8,
29846OP_IncBitfieldSint16,
29847OP_IncBitfieldUint16,
29848OP_IncBitfieldSint32,
29849OP_IncBitfieldUint32,
29850OP_IncBitfieldSint64,
29851OP_IncBitfieldUint64,
29852OP_IncBitfieldIntAP,
29853OP_IncBitfieldIntAPS,
29854OP_IncBitfieldBool,
29855OP_IncBitfieldFixedPoint,
29856#endif
29857#ifdef GET_INTERPFN_LIST
29858&Interp_IncBitfieldSint8,
29859&Interp_IncBitfieldUint8,
29860&Interp_IncBitfieldSint16,
29861&Interp_IncBitfieldUint16,
29862&Interp_IncBitfieldSint32,
29863&Interp_IncBitfieldUint32,
29864&Interp_IncBitfieldSint64,
29865&Interp_IncBitfieldUint64,
29866&Interp_IncBitfieldIntAP,
29867&Interp_IncBitfieldIntAPS,
29868&Interp_IncBitfieldBool,
29869&Interp_IncBitfieldFixedPoint,
29870#endif
29871#ifdef GET_INTERPFN_DISPATCHERS
29872PRESERVE_NONE
29873static bool Interp_IncBitfieldSint8(InterpState &S, CodePtr &PC) {
29874 {
29875 CodePtr OpPC = PC;
29876 const auto V0 = ReadArg<bool>(S, PC);
29877 const auto V1 = ReadArg<uint32_t>(S, PC);
29878 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1))
29879 return false;
29880 }
29881#if USE_TAILCALLS
29882 MUSTTAIL return InterpNext(S, PC);
29883#else
29884 return true;
29885#endif
29886}
29887PRESERVE_NONE
29888static bool Interp_IncBitfieldUint8(InterpState &S, CodePtr &PC) {
29889 {
29890 CodePtr OpPC = PC;
29891 const auto V0 = ReadArg<bool>(S, PC);
29892 const auto V1 = ReadArg<uint32_t>(S, PC);
29893 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1))
29894 return false;
29895 }
29896#if USE_TAILCALLS
29897 MUSTTAIL return InterpNext(S, PC);
29898#else
29899 return true;
29900#endif
29901}
29902PRESERVE_NONE
29903static bool Interp_IncBitfieldSint16(InterpState &S, CodePtr &PC) {
29904 {
29905 CodePtr OpPC = PC;
29906 const auto V0 = ReadArg<bool>(S, PC);
29907 const auto V1 = ReadArg<uint32_t>(S, PC);
29908 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1))
29909 return false;
29910 }
29911#if USE_TAILCALLS
29912 MUSTTAIL return InterpNext(S, PC);
29913#else
29914 return true;
29915#endif
29916}
29917PRESERVE_NONE
29918static bool Interp_IncBitfieldUint16(InterpState &S, CodePtr &PC) {
29919 {
29920 CodePtr OpPC = PC;
29921 const auto V0 = ReadArg<bool>(S, PC);
29922 const auto V1 = ReadArg<uint32_t>(S, PC);
29923 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1))
29924 return false;
29925 }
29926#if USE_TAILCALLS
29927 MUSTTAIL return InterpNext(S, PC);
29928#else
29929 return true;
29930#endif
29931}
29932PRESERVE_NONE
29933static bool Interp_IncBitfieldSint32(InterpState &S, CodePtr &PC) {
29934 {
29935 CodePtr OpPC = PC;
29936 const auto V0 = ReadArg<bool>(S, PC);
29937 const auto V1 = ReadArg<uint32_t>(S, PC);
29938 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1))
29939 return false;
29940 }
29941#if USE_TAILCALLS
29942 MUSTTAIL return InterpNext(S, PC);
29943#else
29944 return true;
29945#endif
29946}
29947PRESERVE_NONE
29948static bool Interp_IncBitfieldUint32(InterpState &S, CodePtr &PC) {
29949 {
29950 CodePtr OpPC = PC;
29951 const auto V0 = ReadArg<bool>(S, PC);
29952 const auto V1 = ReadArg<uint32_t>(S, PC);
29953 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1))
29954 return false;
29955 }
29956#if USE_TAILCALLS
29957 MUSTTAIL return InterpNext(S, PC);
29958#else
29959 return true;
29960#endif
29961}
29962PRESERVE_NONE
29963static bool Interp_IncBitfieldSint64(InterpState &S, CodePtr &PC) {
29964 {
29965 CodePtr OpPC = PC;
29966 const auto V0 = ReadArg<bool>(S, PC);
29967 const auto V1 = ReadArg<uint32_t>(S, PC);
29968 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1))
29969 return false;
29970 }
29971#if USE_TAILCALLS
29972 MUSTTAIL return InterpNext(S, PC);
29973#else
29974 return true;
29975#endif
29976}
29977PRESERVE_NONE
29978static bool Interp_IncBitfieldUint64(InterpState &S, CodePtr &PC) {
29979 {
29980 CodePtr OpPC = PC;
29981 const auto V0 = ReadArg<bool>(S, PC);
29982 const auto V1 = ReadArg<uint32_t>(S, PC);
29983 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1))
29984 return false;
29985 }
29986#if USE_TAILCALLS
29987 MUSTTAIL return InterpNext(S, PC);
29988#else
29989 return true;
29990#endif
29991}
29992PRESERVE_NONE
29993static bool Interp_IncBitfieldIntAP(InterpState &S, CodePtr &PC) {
29994 {
29995 CodePtr OpPC = PC;
29996 const auto V0 = ReadArg<bool>(S, PC);
29997 const auto V1 = ReadArg<uint32_t>(S, PC);
29998 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1))
29999 return false;
30000 }
30001#if USE_TAILCALLS
30002 MUSTTAIL return InterpNext(S, PC);
30003#else
30004 return true;
30005#endif
30006}
30007PRESERVE_NONE
30008static bool Interp_IncBitfieldIntAPS(InterpState &S, CodePtr &PC) {
30009 {
30010 CodePtr OpPC = PC;
30011 const auto V0 = ReadArg<bool>(S, PC);
30012 const auto V1 = ReadArg<uint32_t>(S, PC);
30013 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
30014 return false;
30015 }
30016#if USE_TAILCALLS
30017 MUSTTAIL return InterpNext(S, PC);
30018#else
30019 return true;
30020#endif
30021}
30022PRESERVE_NONE
30023static bool Interp_IncBitfieldBool(InterpState &S, CodePtr &PC) {
30024 {
30025 CodePtr OpPC = PC;
30026 const auto V0 = ReadArg<bool>(S, PC);
30027 const auto V1 = ReadArg<uint32_t>(S, PC);
30028 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1))
30029 return false;
30030 }
30031#if USE_TAILCALLS
30032 MUSTTAIL return InterpNext(S, PC);
30033#else
30034 return true;
30035#endif
30036}
30037PRESERVE_NONE
30038static bool Interp_IncBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
30039 {
30040 CodePtr OpPC = PC;
30041 const auto V0 = ReadArg<bool>(S, PC);
30042 const auto V1 = ReadArg<uint32_t>(S, PC);
30043 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
30044 return false;
30045 }
30046#if USE_TAILCALLS
30047 MUSTTAIL return InterpNext(S, PC);
30048#else
30049 return true;
30050#endif
30051}
30052#endif
30053#ifdef GET_DISASM
30054case OP_IncBitfieldSint8:
30055 Text.Op = PrintName("IncBitfieldSint8");
30056 Text.Args.push_back(printArg<bool>(P, PC));
30057 Text.Args.push_back(printArg<uint32_t>(P, PC));
30058 break;
30059case OP_IncBitfieldUint8:
30060 Text.Op = PrintName("IncBitfieldUint8");
30061 Text.Args.push_back(printArg<bool>(P, PC));
30062 Text.Args.push_back(printArg<uint32_t>(P, PC));
30063 break;
30064case OP_IncBitfieldSint16:
30065 Text.Op = PrintName("IncBitfieldSint16");
30066 Text.Args.push_back(printArg<bool>(P, PC));
30067 Text.Args.push_back(printArg<uint32_t>(P, PC));
30068 break;
30069case OP_IncBitfieldUint16:
30070 Text.Op = PrintName("IncBitfieldUint16");
30071 Text.Args.push_back(printArg<bool>(P, PC));
30072 Text.Args.push_back(printArg<uint32_t>(P, PC));
30073 break;
30074case OP_IncBitfieldSint32:
30075 Text.Op = PrintName("IncBitfieldSint32");
30076 Text.Args.push_back(printArg<bool>(P, PC));
30077 Text.Args.push_back(printArg<uint32_t>(P, PC));
30078 break;
30079case OP_IncBitfieldUint32:
30080 Text.Op = PrintName("IncBitfieldUint32");
30081 Text.Args.push_back(printArg<bool>(P, PC));
30082 Text.Args.push_back(printArg<uint32_t>(P, PC));
30083 break;
30084case OP_IncBitfieldSint64:
30085 Text.Op = PrintName("IncBitfieldSint64");
30086 Text.Args.push_back(printArg<bool>(P, PC));
30087 Text.Args.push_back(printArg<uint32_t>(P, PC));
30088 break;
30089case OP_IncBitfieldUint64:
30090 Text.Op = PrintName("IncBitfieldUint64");
30091 Text.Args.push_back(printArg<bool>(P, PC));
30092 Text.Args.push_back(printArg<uint32_t>(P, PC));
30093 break;
30094case OP_IncBitfieldIntAP:
30095 Text.Op = PrintName("IncBitfieldIntAP");
30096 Text.Args.push_back(printArg<bool>(P, PC));
30097 Text.Args.push_back(printArg<uint32_t>(P, PC));
30098 break;
30099case OP_IncBitfieldIntAPS:
30100 Text.Op = PrintName("IncBitfieldIntAPS");
30101 Text.Args.push_back(printArg<bool>(P, PC));
30102 Text.Args.push_back(printArg<uint32_t>(P, PC));
30103 break;
30104case OP_IncBitfieldBool:
30105 Text.Op = PrintName("IncBitfieldBool");
30106 Text.Args.push_back(printArg<bool>(P, PC));
30107 Text.Args.push_back(printArg<uint32_t>(P, PC));
30108 break;
30109case OP_IncBitfieldFixedPoint:
30110 Text.Op = PrintName("IncBitfieldFixedPoint");
30111 Text.Args.push_back(printArg<bool>(P, PC));
30112 Text.Args.push_back(printArg<uint32_t>(P, PC));
30113 break;
30114#endif
30115#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30116bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
30117bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
30118bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
30119bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
30120bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
30121bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
30122bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
30123bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
30124bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
30125bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
30126bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
30127bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
30128#endif
30129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30130[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
30131#endif
30132#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30133bool
30134#if defined(GET_EVAL_IMPL)
30135EvalEmitter
30136#else
30137ByteCodeEmitter
30138#endif
30139::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
30140 switch (T0) {
30141 case PT_Sint8:
30142 return emitIncBitfieldSint8(A0, A1, I);
30143 case PT_Uint8:
30144 return emitIncBitfieldUint8(A0, A1, I);
30145 case PT_Sint16:
30146 return emitIncBitfieldSint16(A0, A1, I);
30147 case PT_Uint16:
30148 return emitIncBitfieldUint16(A0, A1, I);
30149 case PT_Sint32:
30150 return emitIncBitfieldSint32(A0, A1, I);
30151 case PT_Uint32:
30152 return emitIncBitfieldUint32(A0, A1, I);
30153 case PT_Sint64:
30154 return emitIncBitfieldSint64(A0, A1, I);
30155 case PT_Uint64:
30156 return emitIncBitfieldUint64(A0, A1, I);
30157 case PT_IntAP:
30158 return emitIncBitfieldIntAP(A0, A1, I);
30159 case PT_IntAPS:
30160 return emitIncBitfieldIntAPS(A0, A1, I);
30161 case PT_Bool:
30162 return emitIncBitfieldBool(A0, A1, I);
30163 case PT_FixedPoint:
30164 return emitIncBitfieldFixedPoint(A0, A1, I);
30165 default: llvm_unreachable("invalid type: emitIncBitfield");
30166 }
30167 llvm_unreachable("invalid enum value");
30168}
30169#endif
30170#ifdef GET_LINK_IMPL
30171bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30172 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
30173}
30174bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30175 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
30176}
30177bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30178 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
30179}
30180bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30181 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
30182}
30183bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30184 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
30185}
30186bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30187 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
30188}
30189bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30190 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
30191}
30192bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30193 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
30194}
30195bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30196 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
30197}
30198bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30199 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
30200}
30201bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30202 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
30203}
30204bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30205 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
30206}
30207#endif
30208#ifdef GET_EVAL_IMPL
30209bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30210 if (!isActive()) return true;
30211 CurrentSource = L;
30212 return IncBitfield<PT_Sint8>(S, OpPC, A0, A1);
30213}
30214bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30215 if (!isActive()) return true;
30216 CurrentSource = L;
30217 return IncBitfield<PT_Uint8>(S, OpPC, A0, A1);
30218}
30219bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30220 if (!isActive()) return true;
30221 CurrentSource = L;
30222 return IncBitfield<PT_Sint16>(S, OpPC, A0, A1);
30223}
30224bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30225 if (!isActive()) return true;
30226 CurrentSource = L;
30227 return IncBitfield<PT_Uint16>(S, OpPC, A0, A1);
30228}
30229bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30230 if (!isActive()) return true;
30231 CurrentSource = L;
30232 return IncBitfield<PT_Sint32>(S, OpPC, A0, A1);
30233}
30234bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30235 if (!isActive()) return true;
30236 CurrentSource = L;
30237 return IncBitfield<PT_Uint32>(S, OpPC, A0, A1);
30238}
30239bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30240 if (!isActive()) return true;
30241 CurrentSource = L;
30242 return IncBitfield<PT_Sint64>(S, OpPC, A0, A1);
30243}
30244bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30245 if (!isActive()) return true;
30246 CurrentSource = L;
30247 return IncBitfield<PT_Uint64>(S, OpPC, A0, A1);
30248}
30249bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30250 if (!isActive()) return true;
30251 CurrentSource = L;
30252 return IncBitfield<PT_IntAP>(S, OpPC, A0, A1);
30253}
30254bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30255 if (!isActive()) return true;
30256 CurrentSource = L;
30257 return IncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
30258}
30259bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30260 if (!isActive()) return true;
30261 CurrentSource = L;
30262 return IncBitfield<PT_Bool>(S, OpPC, A0, A1);
30263}
30264bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30265 if (!isActive()) return true;
30266 CurrentSource = L;
30267 return IncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
30268}
30269#endif
30270#ifdef GET_OPCODE_NAMES
30271OP_IncPopSint8,
30272OP_IncPopUint8,
30273OP_IncPopSint16,
30274OP_IncPopUint16,
30275OP_IncPopSint32,
30276OP_IncPopUint32,
30277OP_IncPopSint64,
30278OP_IncPopUint64,
30279OP_IncPopIntAP,
30280OP_IncPopIntAPS,
30281OP_IncPopBool,
30282OP_IncPopFixedPoint,
30283#endif
30284#ifdef GET_INTERPFN_LIST
30285&Interp_IncPopSint8,
30286&Interp_IncPopUint8,
30287&Interp_IncPopSint16,
30288&Interp_IncPopUint16,
30289&Interp_IncPopSint32,
30290&Interp_IncPopUint32,
30291&Interp_IncPopSint64,
30292&Interp_IncPopUint64,
30293&Interp_IncPopIntAP,
30294&Interp_IncPopIntAPS,
30295&Interp_IncPopBool,
30296&Interp_IncPopFixedPoint,
30297#endif
30298#ifdef GET_INTERPFN_DISPATCHERS
30299PRESERVE_NONE
30300static bool Interp_IncPopSint8(InterpState &S, CodePtr &PC) {
30301 {
30302 CodePtr OpPC = PC;
30303 const auto V0 = ReadArg<bool>(S, PC);
30304 if (!IncPop<PT_Sint8>(S, OpPC, V0))
30305 return false;
30306 }
30307#if USE_TAILCALLS
30308 MUSTTAIL return InterpNext(S, PC);
30309#else
30310 return true;
30311#endif
30312}
30313PRESERVE_NONE
30314static bool Interp_IncPopUint8(InterpState &S, CodePtr &PC) {
30315 {
30316 CodePtr OpPC = PC;
30317 const auto V0 = ReadArg<bool>(S, PC);
30318 if (!IncPop<PT_Uint8>(S, OpPC, V0))
30319 return false;
30320 }
30321#if USE_TAILCALLS
30322 MUSTTAIL return InterpNext(S, PC);
30323#else
30324 return true;
30325#endif
30326}
30327PRESERVE_NONE
30328static bool Interp_IncPopSint16(InterpState &S, CodePtr &PC) {
30329 {
30330 CodePtr OpPC = PC;
30331 const auto V0 = ReadArg<bool>(S, PC);
30332 if (!IncPop<PT_Sint16>(S, OpPC, V0))
30333 return false;
30334 }
30335#if USE_TAILCALLS
30336 MUSTTAIL return InterpNext(S, PC);
30337#else
30338 return true;
30339#endif
30340}
30341PRESERVE_NONE
30342static bool Interp_IncPopUint16(InterpState &S, CodePtr &PC) {
30343 {
30344 CodePtr OpPC = PC;
30345 const auto V0 = ReadArg<bool>(S, PC);
30346 if (!IncPop<PT_Uint16>(S, OpPC, V0))
30347 return false;
30348 }
30349#if USE_TAILCALLS
30350 MUSTTAIL return InterpNext(S, PC);
30351#else
30352 return true;
30353#endif
30354}
30355PRESERVE_NONE
30356static bool Interp_IncPopSint32(InterpState &S, CodePtr &PC) {
30357 {
30358 CodePtr OpPC = PC;
30359 const auto V0 = ReadArg<bool>(S, PC);
30360 if (!IncPop<PT_Sint32>(S, OpPC, V0))
30361 return false;
30362 }
30363#if USE_TAILCALLS
30364 MUSTTAIL return InterpNext(S, PC);
30365#else
30366 return true;
30367#endif
30368}
30369PRESERVE_NONE
30370static bool Interp_IncPopUint32(InterpState &S, CodePtr &PC) {
30371 {
30372 CodePtr OpPC = PC;
30373 const auto V0 = ReadArg<bool>(S, PC);
30374 if (!IncPop<PT_Uint32>(S, OpPC, V0))
30375 return false;
30376 }
30377#if USE_TAILCALLS
30378 MUSTTAIL return InterpNext(S, PC);
30379#else
30380 return true;
30381#endif
30382}
30383PRESERVE_NONE
30384static bool Interp_IncPopSint64(InterpState &S, CodePtr &PC) {
30385 {
30386 CodePtr OpPC = PC;
30387 const auto V0 = ReadArg<bool>(S, PC);
30388 if (!IncPop<PT_Sint64>(S, OpPC, V0))
30389 return false;
30390 }
30391#if USE_TAILCALLS
30392 MUSTTAIL return InterpNext(S, PC);
30393#else
30394 return true;
30395#endif
30396}
30397PRESERVE_NONE
30398static bool Interp_IncPopUint64(InterpState &S, CodePtr &PC) {
30399 {
30400 CodePtr OpPC = PC;
30401 const auto V0 = ReadArg<bool>(S, PC);
30402 if (!IncPop<PT_Uint64>(S, OpPC, V0))
30403 return false;
30404 }
30405#if USE_TAILCALLS
30406 MUSTTAIL return InterpNext(S, PC);
30407#else
30408 return true;
30409#endif
30410}
30411PRESERVE_NONE
30412static bool Interp_IncPopIntAP(InterpState &S, CodePtr &PC) {
30413 {
30414 CodePtr OpPC = PC;
30415 const auto V0 = ReadArg<bool>(S, PC);
30416 if (!IncPop<PT_IntAP>(S, OpPC, V0))
30417 return false;
30418 }
30419#if USE_TAILCALLS
30420 MUSTTAIL return InterpNext(S, PC);
30421#else
30422 return true;
30423#endif
30424}
30425PRESERVE_NONE
30426static bool Interp_IncPopIntAPS(InterpState &S, CodePtr &PC) {
30427 {
30428 CodePtr OpPC = PC;
30429 const auto V0 = ReadArg<bool>(S, PC);
30430 if (!IncPop<PT_IntAPS>(S, OpPC, V0))
30431 return false;
30432 }
30433#if USE_TAILCALLS
30434 MUSTTAIL return InterpNext(S, PC);
30435#else
30436 return true;
30437#endif
30438}
30439PRESERVE_NONE
30440static bool Interp_IncPopBool(InterpState &S, CodePtr &PC) {
30441 {
30442 CodePtr OpPC = PC;
30443 const auto V0 = ReadArg<bool>(S, PC);
30444 if (!IncPop<PT_Bool>(S, OpPC, V0))
30445 return false;
30446 }
30447#if USE_TAILCALLS
30448 MUSTTAIL return InterpNext(S, PC);
30449#else
30450 return true;
30451#endif
30452}
30453PRESERVE_NONE
30454static bool Interp_IncPopFixedPoint(InterpState &S, CodePtr &PC) {
30455 {
30456 CodePtr OpPC = PC;
30457 const auto V0 = ReadArg<bool>(S, PC);
30458 if (!IncPop<PT_FixedPoint>(S, OpPC, V0))
30459 return false;
30460 }
30461#if USE_TAILCALLS
30462 MUSTTAIL return InterpNext(S, PC);
30463#else
30464 return true;
30465#endif
30466}
30467#endif
30468#ifdef GET_DISASM
30469case OP_IncPopSint8:
30470 Text.Op = PrintName("IncPopSint8");
30471 Text.Args.push_back(printArg<bool>(P, PC));
30472 break;
30473case OP_IncPopUint8:
30474 Text.Op = PrintName("IncPopUint8");
30475 Text.Args.push_back(printArg<bool>(P, PC));
30476 break;
30477case OP_IncPopSint16:
30478 Text.Op = PrintName("IncPopSint16");
30479 Text.Args.push_back(printArg<bool>(P, PC));
30480 break;
30481case OP_IncPopUint16:
30482 Text.Op = PrintName("IncPopUint16");
30483 Text.Args.push_back(printArg<bool>(P, PC));
30484 break;
30485case OP_IncPopSint32:
30486 Text.Op = PrintName("IncPopSint32");
30487 Text.Args.push_back(printArg<bool>(P, PC));
30488 break;
30489case OP_IncPopUint32:
30490 Text.Op = PrintName("IncPopUint32");
30491 Text.Args.push_back(printArg<bool>(P, PC));
30492 break;
30493case OP_IncPopSint64:
30494 Text.Op = PrintName("IncPopSint64");
30495 Text.Args.push_back(printArg<bool>(P, PC));
30496 break;
30497case OP_IncPopUint64:
30498 Text.Op = PrintName("IncPopUint64");
30499 Text.Args.push_back(printArg<bool>(P, PC));
30500 break;
30501case OP_IncPopIntAP:
30502 Text.Op = PrintName("IncPopIntAP");
30503 Text.Args.push_back(printArg<bool>(P, PC));
30504 break;
30505case OP_IncPopIntAPS:
30506 Text.Op = PrintName("IncPopIntAPS");
30507 Text.Args.push_back(printArg<bool>(P, PC));
30508 break;
30509case OP_IncPopBool:
30510 Text.Op = PrintName("IncPopBool");
30511 Text.Args.push_back(printArg<bool>(P, PC));
30512 break;
30513case OP_IncPopFixedPoint:
30514 Text.Op = PrintName("IncPopFixedPoint");
30515 Text.Args.push_back(printArg<bool>(P, PC));
30516 break;
30517#endif
30518#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30519bool emitIncPopSint8( bool , SourceInfo);
30520bool emitIncPopUint8( bool , SourceInfo);
30521bool emitIncPopSint16( bool , SourceInfo);
30522bool emitIncPopUint16( bool , SourceInfo);
30523bool emitIncPopSint32( bool , SourceInfo);
30524bool emitIncPopUint32( bool , SourceInfo);
30525bool emitIncPopSint64( bool , SourceInfo);
30526bool emitIncPopUint64( bool , SourceInfo);
30527bool emitIncPopIntAP( bool , SourceInfo);
30528bool emitIncPopIntAPS( bool , SourceInfo);
30529bool emitIncPopBool( bool , SourceInfo);
30530bool emitIncPopFixedPoint( bool , SourceInfo);
30531#endif
30532#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30533[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
30534#endif
30535#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30536bool
30537#if defined(GET_EVAL_IMPL)
30538EvalEmitter
30539#else
30540ByteCodeEmitter
30541#endif
30542::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
30543 switch (T0) {
30544 case PT_Sint8:
30545 return emitIncPopSint8(A0, I);
30546 case PT_Uint8:
30547 return emitIncPopUint8(A0, I);
30548 case PT_Sint16:
30549 return emitIncPopSint16(A0, I);
30550 case PT_Uint16:
30551 return emitIncPopUint16(A0, I);
30552 case PT_Sint32:
30553 return emitIncPopSint32(A0, I);
30554 case PT_Uint32:
30555 return emitIncPopUint32(A0, I);
30556 case PT_Sint64:
30557 return emitIncPopSint64(A0, I);
30558 case PT_Uint64:
30559 return emitIncPopUint64(A0, I);
30560 case PT_IntAP:
30561 return emitIncPopIntAP(A0, I);
30562 case PT_IntAPS:
30563 return emitIncPopIntAPS(A0, I);
30564 case PT_Bool:
30565 return emitIncPopBool(A0, I);
30566 case PT_FixedPoint:
30567 return emitIncPopFixedPoint(A0, I);
30568 default: llvm_unreachable("invalid type: emitIncPop");
30569 }
30570 llvm_unreachable("invalid enum value");
30571}
30572#endif
30573#ifdef GET_LINK_IMPL
30574bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
30575 return emitOp<bool>(OP_IncPopSint8, A0, L);
30576}
30577bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
30578 return emitOp<bool>(OP_IncPopUint8, A0, L);
30579}
30580bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30581 return emitOp<bool>(OP_IncPopSint16, A0, L);
30582}
30583bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30584 return emitOp<bool>(OP_IncPopUint16, A0, L);
30585}
30586bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30587 return emitOp<bool>(OP_IncPopSint32, A0, L);
30588}
30589bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30590 return emitOp<bool>(OP_IncPopUint32, A0, L);
30591}
30592bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30593 return emitOp<bool>(OP_IncPopSint64, A0, L);
30594}
30595bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30596 return emitOp<bool>(OP_IncPopUint64, A0, L);
30597}
30598bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30599 return emitOp<bool>(OP_IncPopIntAP, A0, L);
30600}
30601bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30602 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
30603}
30604bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30605 return emitOp<bool>(OP_IncPopBool, A0, L);
30606}
30607bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30608 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
30609}
30610#endif
30611#ifdef GET_EVAL_IMPL
30612bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
30613 if (!isActive()) return true;
30614 CurrentSource = L;
30615 return IncPop<PT_Sint8>(S, OpPC, A0);
30616}
30617bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
30618 if (!isActive()) return true;
30619 CurrentSource = L;
30620 return IncPop<PT_Uint8>(S, OpPC, A0);
30621}
30622bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30623 if (!isActive()) return true;
30624 CurrentSource = L;
30625 return IncPop<PT_Sint16>(S, OpPC, A0);
30626}
30627bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30628 if (!isActive()) return true;
30629 CurrentSource = L;
30630 return IncPop<PT_Uint16>(S, OpPC, A0);
30631}
30632bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30633 if (!isActive()) return true;
30634 CurrentSource = L;
30635 return IncPop<PT_Sint32>(S, OpPC, A0);
30636}
30637bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30638 if (!isActive()) return true;
30639 CurrentSource = L;
30640 return IncPop<PT_Uint32>(S, OpPC, A0);
30641}
30642bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30643 if (!isActive()) return true;
30644 CurrentSource = L;
30645 return IncPop<PT_Sint64>(S, OpPC, A0);
30646}
30647bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30648 if (!isActive()) return true;
30649 CurrentSource = L;
30650 return IncPop<PT_Uint64>(S, OpPC, A0);
30651}
30652bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30653 if (!isActive()) return true;
30654 CurrentSource = L;
30655 return IncPop<PT_IntAP>(S, OpPC, A0);
30656}
30657bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30658 if (!isActive()) return true;
30659 CurrentSource = L;
30660 return IncPop<PT_IntAPS>(S, OpPC, A0);
30661}
30662bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30663 if (!isActive()) return true;
30664 CurrentSource = L;
30665 return IncPop<PT_Bool>(S, OpPC, A0);
30666}
30667bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30668 if (!isActive()) return true;
30669 CurrentSource = L;
30670 return IncPop<PT_FixedPoint>(S, OpPC, A0);
30671}
30672#endif
30673#ifdef GET_OPCODE_NAMES
30674OP_IncPopBitfieldSint8,
30675OP_IncPopBitfieldUint8,
30676OP_IncPopBitfieldSint16,
30677OP_IncPopBitfieldUint16,
30678OP_IncPopBitfieldSint32,
30679OP_IncPopBitfieldUint32,
30680OP_IncPopBitfieldSint64,
30681OP_IncPopBitfieldUint64,
30682OP_IncPopBitfieldIntAP,
30683OP_IncPopBitfieldIntAPS,
30684OP_IncPopBitfieldBool,
30685OP_IncPopBitfieldFixedPoint,
30686#endif
30687#ifdef GET_INTERPFN_LIST
30688&Interp_IncPopBitfieldSint8,
30689&Interp_IncPopBitfieldUint8,
30690&Interp_IncPopBitfieldSint16,
30691&Interp_IncPopBitfieldUint16,
30692&Interp_IncPopBitfieldSint32,
30693&Interp_IncPopBitfieldUint32,
30694&Interp_IncPopBitfieldSint64,
30695&Interp_IncPopBitfieldUint64,
30696&Interp_IncPopBitfieldIntAP,
30697&Interp_IncPopBitfieldIntAPS,
30698&Interp_IncPopBitfieldBool,
30699&Interp_IncPopBitfieldFixedPoint,
30700#endif
30701#ifdef GET_INTERPFN_DISPATCHERS
30702PRESERVE_NONE
30703static bool Interp_IncPopBitfieldSint8(InterpState &S, CodePtr &PC) {
30704 {
30705 CodePtr OpPC = PC;
30706 const auto V0 = ReadArg<bool>(S, PC);
30707 const auto V1 = ReadArg<uint32_t>(S, PC);
30708 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
30709 return false;
30710 }
30711#if USE_TAILCALLS
30712 MUSTTAIL return InterpNext(S, PC);
30713#else
30714 return true;
30715#endif
30716}
30717PRESERVE_NONE
30718static bool Interp_IncPopBitfieldUint8(InterpState &S, CodePtr &PC) {
30719 {
30720 CodePtr OpPC = PC;
30721 const auto V0 = ReadArg<bool>(S, PC);
30722 const auto V1 = ReadArg<uint32_t>(S, PC);
30723 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
30724 return false;
30725 }
30726#if USE_TAILCALLS
30727 MUSTTAIL return InterpNext(S, PC);
30728#else
30729 return true;
30730#endif
30731}
30732PRESERVE_NONE
30733static bool Interp_IncPopBitfieldSint16(InterpState &S, CodePtr &PC) {
30734 {
30735 CodePtr OpPC = PC;
30736 const auto V0 = ReadArg<bool>(S, PC);
30737 const auto V1 = ReadArg<uint32_t>(S, PC);
30738 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
30739 return false;
30740 }
30741#if USE_TAILCALLS
30742 MUSTTAIL return InterpNext(S, PC);
30743#else
30744 return true;
30745#endif
30746}
30747PRESERVE_NONE
30748static bool Interp_IncPopBitfieldUint16(InterpState &S, CodePtr &PC) {
30749 {
30750 CodePtr OpPC = PC;
30751 const auto V0 = ReadArg<bool>(S, PC);
30752 const auto V1 = ReadArg<uint32_t>(S, PC);
30753 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
30754 return false;
30755 }
30756#if USE_TAILCALLS
30757 MUSTTAIL return InterpNext(S, PC);
30758#else
30759 return true;
30760#endif
30761}
30762PRESERVE_NONE
30763static bool Interp_IncPopBitfieldSint32(InterpState &S, CodePtr &PC) {
30764 {
30765 CodePtr OpPC = PC;
30766 const auto V0 = ReadArg<bool>(S, PC);
30767 const auto V1 = ReadArg<uint32_t>(S, PC);
30768 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
30769 return false;
30770 }
30771#if USE_TAILCALLS
30772 MUSTTAIL return InterpNext(S, PC);
30773#else
30774 return true;
30775#endif
30776}
30777PRESERVE_NONE
30778static bool Interp_IncPopBitfieldUint32(InterpState &S, CodePtr &PC) {
30779 {
30780 CodePtr OpPC = PC;
30781 const auto V0 = ReadArg<bool>(S, PC);
30782 const auto V1 = ReadArg<uint32_t>(S, PC);
30783 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
30784 return false;
30785 }
30786#if USE_TAILCALLS
30787 MUSTTAIL return InterpNext(S, PC);
30788#else
30789 return true;
30790#endif
30791}
30792PRESERVE_NONE
30793static bool Interp_IncPopBitfieldSint64(InterpState &S, CodePtr &PC) {
30794 {
30795 CodePtr OpPC = PC;
30796 const auto V0 = ReadArg<bool>(S, PC);
30797 const auto V1 = ReadArg<uint32_t>(S, PC);
30798 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
30799 return false;
30800 }
30801#if USE_TAILCALLS
30802 MUSTTAIL return InterpNext(S, PC);
30803#else
30804 return true;
30805#endif
30806}
30807PRESERVE_NONE
30808static bool Interp_IncPopBitfieldUint64(InterpState &S, CodePtr &PC) {
30809 {
30810 CodePtr OpPC = PC;
30811 const auto V0 = ReadArg<bool>(S, PC);
30812 const auto V1 = ReadArg<uint32_t>(S, PC);
30813 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
30814 return false;
30815 }
30816#if USE_TAILCALLS
30817 MUSTTAIL return InterpNext(S, PC);
30818#else
30819 return true;
30820#endif
30821}
30822PRESERVE_NONE
30823static bool Interp_IncPopBitfieldIntAP(InterpState &S, CodePtr &PC) {
30824 {
30825 CodePtr OpPC = PC;
30826 const auto V0 = ReadArg<bool>(S, PC);
30827 const auto V1 = ReadArg<uint32_t>(S, PC);
30828 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
30829 return false;
30830 }
30831#if USE_TAILCALLS
30832 MUSTTAIL return InterpNext(S, PC);
30833#else
30834 return true;
30835#endif
30836}
30837PRESERVE_NONE
30838static bool Interp_IncPopBitfieldIntAPS(InterpState &S, CodePtr &PC) {
30839 {
30840 CodePtr OpPC = PC;
30841 const auto V0 = ReadArg<bool>(S, PC);
30842 const auto V1 = ReadArg<uint32_t>(S, PC);
30843 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
30844 return false;
30845 }
30846#if USE_TAILCALLS
30847 MUSTTAIL return InterpNext(S, PC);
30848#else
30849 return true;
30850#endif
30851}
30852PRESERVE_NONE
30853static bool Interp_IncPopBitfieldBool(InterpState &S, CodePtr &PC) {
30854 {
30855 CodePtr OpPC = PC;
30856 const auto V0 = ReadArg<bool>(S, PC);
30857 const auto V1 = ReadArg<uint32_t>(S, PC);
30858 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1))
30859 return false;
30860 }
30861#if USE_TAILCALLS
30862 MUSTTAIL return InterpNext(S, PC);
30863#else
30864 return true;
30865#endif
30866}
30867PRESERVE_NONE
30868static bool Interp_IncPopBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
30869 {
30870 CodePtr OpPC = PC;
30871 const auto V0 = ReadArg<bool>(S, PC);
30872 const auto V1 = ReadArg<uint32_t>(S, PC);
30873 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
30874 return false;
30875 }
30876#if USE_TAILCALLS
30877 MUSTTAIL return InterpNext(S, PC);
30878#else
30879 return true;
30880#endif
30881}
30882#endif
30883#ifdef GET_DISASM
30884case OP_IncPopBitfieldSint8:
30885 Text.Op = PrintName("IncPopBitfieldSint8");
30886 Text.Args.push_back(printArg<bool>(P, PC));
30887 Text.Args.push_back(printArg<uint32_t>(P, PC));
30888 break;
30889case OP_IncPopBitfieldUint8:
30890 Text.Op = PrintName("IncPopBitfieldUint8");
30891 Text.Args.push_back(printArg<bool>(P, PC));
30892 Text.Args.push_back(printArg<uint32_t>(P, PC));
30893 break;
30894case OP_IncPopBitfieldSint16:
30895 Text.Op = PrintName("IncPopBitfieldSint16");
30896 Text.Args.push_back(printArg<bool>(P, PC));
30897 Text.Args.push_back(printArg<uint32_t>(P, PC));
30898 break;
30899case OP_IncPopBitfieldUint16:
30900 Text.Op = PrintName("IncPopBitfieldUint16");
30901 Text.Args.push_back(printArg<bool>(P, PC));
30902 Text.Args.push_back(printArg<uint32_t>(P, PC));
30903 break;
30904case OP_IncPopBitfieldSint32:
30905 Text.Op = PrintName("IncPopBitfieldSint32");
30906 Text.Args.push_back(printArg<bool>(P, PC));
30907 Text.Args.push_back(printArg<uint32_t>(P, PC));
30908 break;
30909case OP_IncPopBitfieldUint32:
30910 Text.Op = PrintName("IncPopBitfieldUint32");
30911 Text.Args.push_back(printArg<bool>(P, PC));
30912 Text.Args.push_back(printArg<uint32_t>(P, PC));
30913 break;
30914case OP_IncPopBitfieldSint64:
30915 Text.Op = PrintName("IncPopBitfieldSint64");
30916 Text.Args.push_back(printArg<bool>(P, PC));
30917 Text.Args.push_back(printArg<uint32_t>(P, PC));
30918 break;
30919case OP_IncPopBitfieldUint64:
30920 Text.Op = PrintName("IncPopBitfieldUint64");
30921 Text.Args.push_back(printArg<bool>(P, PC));
30922 Text.Args.push_back(printArg<uint32_t>(P, PC));
30923 break;
30924case OP_IncPopBitfieldIntAP:
30925 Text.Op = PrintName("IncPopBitfieldIntAP");
30926 Text.Args.push_back(printArg<bool>(P, PC));
30927 Text.Args.push_back(printArg<uint32_t>(P, PC));
30928 break;
30929case OP_IncPopBitfieldIntAPS:
30930 Text.Op = PrintName("IncPopBitfieldIntAPS");
30931 Text.Args.push_back(printArg<bool>(P, PC));
30932 Text.Args.push_back(printArg<uint32_t>(P, PC));
30933 break;
30934case OP_IncPopBitfieldBool:
30935 Text.Op = PrintName("IncPopBitfieldBool");
30936 Text.Args.push_back(printArg<bool>(P, PC));
30937 Text.Args.push_back(printArg<uint32_t>(P, PC));
30938 break;
30939case OP_IncPopBitfieldFixedPoint:
30940 Text.Op = PrintName("IncPopBitfieldFixedPoint");
30941 Text.Args.push_back(printArg<bool>(P, PC));
30942 Text.Args.push_back(printArg<uint32_t>(P, PC));
30943 break;
30944#endif
30945#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30946bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
30947bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
30948bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
30949bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
30950bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
30951bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
30952bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
30953bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
30954bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
30955bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
30956bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
30957bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
30958#endif
30959#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30960[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
30961#endif
30962#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30963bool
30964#if defined(GET_EVAL_IMPL)
30965EvalEmitter
30966#else
30967ByteCodeEmitter
30968#endif
30969::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
30970 switch (T0) {
30971 case PT_Sint8:
30972 return emitIncPopBitfieldSint8(A0, A1, I);
30973 case PT_Uint8:
30974 return emitIncPopBitfieldUint8(A0, A1, I);
30975 case PT_Sint16:
30976 return emitIncPopBitfieldSint16(A0, A1, I);
30977 case PT_Uint16:
30978 return emitIncPopBitfieldUint16(A0, A1, I);
30979 case PT_Sint32:
30980 return emitIncPopBitfieldSint32(A0, A1, I);
30981 case PT_Uint32:
30982 return emitIncPopBitfieldUint32(A0, A1, I);
30983 case PT_Sint64:
30984 return emitIncPopBitfieldSint64(A0, A1, I);
30985 case PT_Uint64:
30986 return emitIncPopBitfieldUint64(A0, A1, I);
30987 case PT_IntAP:
30988 return emitIncPopBitfieldIntAP(A0, A1, I);
30989 case PT_IntAPS:
30990 return emitIncPopBitfieldIntAPS(A0, A1, I);
30991 case PT_Bool:
30992 return emitIncPopBitfieldBool(A0, A1, I);
30993 case PT_FixedPoint:
30994 return emitIncPopBitfieldFixedPoint(A0, A1, I);
30995 default: llvm_unreachable("invalid type: emitIncPopBitfield");
30996 }
30997 llvm_unreachable("invalid enum value");
30998}
30999#endif
31000#ifdef GET_LINK_IMPL
31001bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
31002 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
31003}
31004bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
31005 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
31006}
31007bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
31008 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
31009}
31010bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
31011 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
31012}
31013bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
31014 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
31015}
31016bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
31017 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
31018}
31019bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
31020 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
31021}
31022bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
31023 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
31024}
31025bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
31026 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
31027}
31028bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
31029 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
31030}
31031bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
31032 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
31033}
31034bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
31035 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
31036}
31037#endif
31038#ifdef GET_EVAL_IMPL
31039bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
31040 if (!isActive()) return true;
31041 CurrentSource = L;
31042 return IncPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
31043}
31044bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
31045 if (!isActive()) return true;
31046 CurrentSource = L;
31047 return IncPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
31048}
31049bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
31050 if (!isActive()) return true;
31051 CurrentSource = L;
31052 return IncPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
31053}
31054bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
31055 if (!isActive()) return true;
31056 CurrentSource = L;
31057 return IncPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
31058}
31059bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
31060 if (!isActive()) return true;
31061 CurrentSource = L;
31062 return IncPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
31063}
31064bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
31065 if (!isActive()) return true;
31066 CurrentSource = L;
31067 return IncPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
31068}
31069bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
31070 if (!isActive()) return true;
31071 CurrentSource = L;
31072 return IncPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
31073}
31074bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
31075 if (!isActive()) return true;
31076 CurrentSource = L;
31077 return IncPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
31078}
31079bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
31080 if (!isActive()) return true;
31081 CurrentSource = L;
31082 return IncPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
31083}
31084bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
31085 if (!isActive()) return true;
31086 CurrentSource = L;
31087 return IncPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
31088}
31089bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
31090 if (!isActive()) return true;
31091 CurrentSource = L;
31092 return IncPopBitfield<PT_Bool>(S, OpPC, A0, A1);
31093}
31094bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
31095 if (!isActive()) return true;
31096 CurrentSource = L;
31097 return IncPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
31098}
31099#endif
31100#ifdef GET_OPCODE_NAMES
31101OP_IncPtr,
31102#endif
31103#ifdef GET_INTERPFN_LIST
31104&Interp_IncPtr,
31105#endif
31106#ifdef GET_INTERPFN_DISPATCHERS
31107PRESERVE_NONE
31108static bool Interp_IncPtr(InterpState &S, CodePtr &PC) {
31109 if (!IncPtr(S, PC))
31110 return false;
31111#if USE_TAILCALLS
31112 MUSTTAIL return InterpNext(S, PC);
31113#else
31114 return true;
31115#endif
31116}
31117#endif
31118#ifdef GET_DISASM
31119case OP_IncPtr:
31120 Text.Op = PrintName("IncPtr");
31121 break;
31122#endif
31123#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31124bool emitIncPtr(SourceInfo);
31125#endif
31126#ifdef GET_LINK_IMPL
31127bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
31128 return emitOp<>(OP_IncPtr, L);
31129}
31130#endif
31131#ifdef GET_EVAL_IMPL
31132bool EvalEmitter::emitIncPtr(SourceInfo L) {
31133 if (!isActive()) return true;
31134 CurrentSource = L;
31135 return IncPtr(S, OpPC);
31136}
31137#endif
31138#ifdef GET_OPCODE_NAMES
31139OP_Incf,
31140#endif
31141#ifdef GET_INTERPFN_LIST
31142&Interp_Incf,
31143#endif
31144#ifdef GET_INTERPFN_DISPATCHERS
31145PRESERVE_NONE
31146static bool Interp_Incf(InterpState &S, CodePtr &PC) {
31147 {
31148 CodePtr OpPC = PC;
31149 const auto V0 = ReadArg<uint32_t>(S, PC);
31150 if (!Incf(S, OpPC, V0))
31151 return false;
31152 }
31153#if USE_TAILCALLS
31154 MUSTTAIL return InterpNext(S, PC);
31155#else
31156 return true;
31157#endif
31158}
31159#endif
31160#ifdef GET_DISASM
31161case OP_Incf:
31162 Text.Op = PrintName("Incf");
31163 Text.Args.push_back(printArg<uint32_t>(P, PC));
31164 break;
31165#endif
31166#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31167bool emitIncf( uint32_t , SourceInfo);
31168#endif
31169#ifdef GET_LINK_IMPL
31170bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
31171 return emitOp<uint32_t>(OP_Incf, A0, L);
31172}
31173#endif
31174#ifdef GET_EVAL_IMPL
31175bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
31176 if (!isActive()) return true;
31177 CurrentSource = L;
31178 return Incf(S, OpPC, A0);
31179}
31180#endif
31181#ifdef GET_OPCODE_NAMES
31182OP_IncfPop,
31183#endif
31184#ifdef GET_INTERPFN_LIST
31185&Interp_IncfPop,
31186#endif
31187#ifdef GET_INTERPFN_DISPATCHERS
31188PRESERVE_NONE
31189static bool Interp_IncfPop(InterpState &S, CodePtr &PC) {
31190 {
31191 CodePtr OpPC = PC;
31192 const auto V0 = ReadArg<uint32_t>(S, PC);
31193 if (!IncfPop(S, OpPC, V0))
31194 return false;
31195 }
31196#if USE_TAILCALLS
31197 MUSTTAIL return InterpNext(S, PC);
31198#else
31199 return true;
31200#endif
31201}
31202#endif
31203#ifdef GET_DISASM
31204case OP_IncfPop:
31205 Text.Op = PrintName("IncfPop");
31206 Text.Args.push_back(printArg<uint32_t>(P, PC));
31207 break;
31208#endif
31209#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31210bool emitIncfPop( uint32_t , SourceInfo);
31211#endif
31212#ifdef GET_LINK_IMPL
31213bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
31214 return emitOp<uint32_t>(OP_IncfPop, A0, L);
31215}
31216#endif
31217#ifdef GET_EVAL_IMPL
31218bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
31219 if (!isActive()) return true;
31220 CurrentSource = L;
31221 return IncfPop(S, OpPC, A0);
31222}
31223#endif
31224#ifdef GET_OPCODE_NAMES
31225OP_InitSint8,
31226OP_InitUint8,
31227OP_InitSint16,
31228OP_InitUint16,
31229OP_InitSint32,
31230OP_InitUint32,
31231OP_InitSint64,
31232OP_InitUint64,
31233OP_InitIntAP,
31234OP_InitIntAPS,
31235OP_InitBool,
31236OP_InitFixedPoint,
31237OP_InitPtr,
31238OP_InitMemberPtr,
31239OP_InitFloat,
31240#endif
31241#ifdef GET_INTERPFN_LIST
31242&Interp_InitSint8,
31243&Interp_InitUint8,
31244&Interp_InitSint16,
31245&Interp_InitUint16,
31246&Interp_InitSint32,
31247&Interp_InitUint32,
31248&Interp_InitSint64,
31249&Interp_InitUint64,
31250&Interp_InitIntAP,
31251&Interp_InitIntAPS,
31252&Interp_InitBool,
31253&Interp_InitFixedPoint,
31254&Interp_InitPtr,
31255&Interp_InitMemberPtr,
31256&Interp_InitFloat,
31257#endif
31258#ifdef GET_INTERPFN_DISPATCHERS
31259PRESERVE_NONE
31260static bool Interp_InitSint8(InterpState &S, CodePtr &PC) {
31261 if (!Init<PT_Sint8>(S, PC))
31262 return false;
31263#if USE_TAILCALLS
31264 MUSTTAIL return InterpNext(S, PC);
31265#else
31266 return true;
31267#endif
31268}
31269PRESERVE_NONE
31270static bool Interp_InitUint8(InterpState &S, CodePtr &PC) {
31271 if (!Init<PT_Uint8>(S, PC))
31272 return false;
31273#if USE_TAILCALLS
31274 MUSTTAIL return InterpNext(S, PC);
31275#else
31276 return true;
31277#endif
31278}
31279PRESERVE_NONE
31280static bool Interp_InitSint16(InterpState &S, CodePtr &PC) {
31281 if (!Init<PT_Sint16>(S, PC))
31282 return false;
31283#if USE_TAILCALLS
31284 MUSTTAIL return InterpNext(S, PC);
31285#else
31286 return true;
31287#endif
31288}
31289PRESERVE_NONE
31290static bool Interp_InitUint16(InterpState &S, CodePtr &PC) {
31291 if (!Init<PT_Uint16>(S, PC))
31292 return false;
31293#if USE_TAILCALLS
31294 MUSTTAIL return InterpNext(S, PC);
31295#else
31296 return true;
31297#endif
31298}
31299PRESERVE_NONE
31300static bool Interp_InitSint32(InterpState &S, CodePtr &PC) {
31301 if (!Init<PT_Sint32>(S, PC))
31302 return false;
31303#if USE_TAILCALLS
31304 MUSTTAIL return InterpNext(S, PC);
31305#else
31306 return true;
31307#endif
31308}
31309PRESERVE_NONE
31310static bool Interp_InitUint32(InterpState &S, CodePtr &PC) {
31311 if (!Init<PT_Uint32>(S, PC))
31312 return false;
31313#if USE_TAILCALLS
31314 MUSTTAIL return InterpNext(S, PC);
31315#else
31316 return true;
31317#endif
31318}
31319PRESERVE_NONE
31320static bool Interp_InitSint64(InterpState &S, CodePtr &PC) {
31321 if (!Init<PT_Sint64>(S, PC))
31322 return false;
31323#if USE_TAILCALLS
31324 MUSTTAIL return InterpNext(S, PC);
31325#else
31326 return true;
31327#endif
31328}
31329PRESERVE_NONE
31330static bool Interp_InitUint64(InterpState &S, CodePtr &PC) {
31331 if (!Init<PT_Uint64>(S, PC))
31332 return false;
31333#if USE_TAILCALLS
31334 MUSTTAIL return InterpNext(S, PC);
31335#else
31336 return true;
31337#endif
31338}
31339PRESERVE_NONE
31340static bool Interp_InitIntAP(InterpState &S, CodePtr &PC) {
31341 if (!Init<PT_IntAP>(S, PC))
31342 return false;
31343#if USE_TAILCALLS
31344 MUSTTAIL return InterpNext(S, PC);
31345#else
31346 return true;
31347#endif
31348}
31349PRESERVE_NONE
31350static bool Interp_InitIntAPS(InterpState &S, CodePtr &PC) {
31351 if (!Init<PT_IntAPS>(S, PC))
31352 return false;
31353#if USE_TAILCALLS
31354 MUSTTAIL return InterpNext(S, PC);
31355#else
31356 return true;
31357#endif
31358}
31359PRESERVE_NONE
31360static bool Interp_InitBool(InterpState &S, CodePtr &PC) {
31361 if (!Init<PT_Bool>(S, PC))
31362 return false;
31363#if USE_TAILCALLS
31364 MUSTTAIL return InterpNext(S, PC);
31365#else
31366 return true;
31367#endif
31368}
31369PRESERVE_NONE
31370static bool Interp_InitFixedPoint(InterpState &S, CodePtr &PC) {
31371 if (!Init<PT_FixedPoint>(S, PC))
31372 return false;
31373#if USE_TAILCALLS
31374 MUSTTAIL return InterpNext(S, PC);
31375#else
31376 return true;
31377#endif
31378}
31379PRESERVE_NONE
31380static bool Interp_InitPtr(InterpState &S, CodePtr &PC) {
31381 if (!Init<PT_Ptr>(S, PC))
31382 return false;
31383#if USE_TAILCALLS
31384 MUSTTAIL return InterpNext(S, PC);
31385#else
31386 return true;
31387#endif
31388}
31389PRESERVE_NONE
31390static bool Interp_InitMemberPtr(InterpState &S, CodePtr &PC) {
31391 if (!Init<PT_MemberPtr>(S, PC))
31392 return false;
31393#if USE_TAILCALLS
31394 MUSTTAIL return InterpNext(S, PC);
31395#else
31396 return true;
31397#endif
31398}
31399PRESERVE_NONE
31400static bool Interp_InitFloat(InterpState &S, CodePtr &PC) {
31401 if (!Init<PT_Float>(S, PC))
31402 return false;
31403#if USE_TAILCALLS
31404 MUSTTAIL return InterpNext(S, PC);
31405#else
31406 return true;
31407#endif
31408}
31409#endif
31410#ifdef GET_DISASM
31411case OP_InitSint8:
31412 Text.Op = PrintName("InitSint8");
31413 break;
31414case OP_InitUint8:
31415 Text.Op = PrintName("InitUint8");
31416 break;
31417case OP_InitSint16:
31418 Text.Op = PrintName("InitSint16");
31419 break;
31420case OP_InitUint16:
31421 Text.Op = PrintName("InitUint16");
31422 break;
31423case OP_InitSint32:
31424 Text.Op = PrintName("InitSint32");
31425 break;
31426case OP_InitUint32:
31427 Text.Op = PrintName("InitUint32");
31428 break;
31429case OP_InitSint64:
31430 Text.Op = PrintName("InitSint64");
31431 break;
31432case OP_InitUint64:
31433 Text.Op = PrintName("InitUint64");
31434 break;
31435case OP_InitIntAP:
31436 Text.Op = PrintName("InitIntAP");
31437 break;
31438case OP_InitIntAPS:
31439 Text.Op = PrintName("InitIntAPS");
31440 break;
31441case OP_InitBool:
31442 Text.Op = PrintName("InitBool");
31443 break;
31444case OP_InitFixedPoint:
31445 Text.Op = PrintName("InitFixedPoint");
31446 break;
31447case OP_InitPtr:
31448 Text.Op = PrintName("InitPtr");
31449 break;
31450case OP_InitMemberPtr:
31451 Text.Op = PrintName("InitMemberPtr");
31452 break;
31453case OP_InitFloat:
31454 Text.Op = PrintName("InitFloat");
31455 break;
31456#endif
31457#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31458bool emitInitSint8(SourceInfo);
31459bool emitInitUint8(SourceInfo);
31460bool emitInitSint16(SourceInfo);
31461bool emitInitUint16(SourceInfo);
31462bool emitInitSint32(SourceInfo);
31463bool emitInitUint32(SourceInfo);
31464bool emitInitSint64(SourceInfo);
31465bool emitInitUint64(SourceInfo);
31466bool emitInitIntAP(SourceInfo);
31467bool emitInitIntAPS(SourceInfo);
31468bool emitInitBool(SourceInfo);
31469bool emitInitFixedPoint(SourceInfo);
31470bool emitInitPtr(SourceInfo);
31471bool emitInitMemberPtr(SourceInfo);
31472bool emitInitFloat(SourceInfo);
31473#endif
31474#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31475[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
31476#endif
31477#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31478bool
31479#if defined(GET_EVAL_IMPL)
31480EvalEmitter
31481#else
31482ByteCodeEmitter
31483#endif
31484::emitInit(PrimType T0, SourceInfo I) {
31485 switch (T0) {
31486 case PT_Sint8:
31487 return emitInitSint8(I);
31488 case PT_Uint8:
31489 return emitInitUint8(I);
31490 case PT_Sint16:
31491 return emitInitSint16(I);
31492 case PT_Uint16:
31493 return emitInitUint16(I);
31494 case PT_Sint32:
31495 return emitInitSint32(I);
31496 case PT_Uint32:
31497 return emitInitUint32(I);
31498 case PT_Sint64:
31499 return emitInitSint64(I);
31500 case PT_Uint64:
31501 return emitInitUint64(I);
31502 case PT_IntAP:
31503 return emitInitIntAP(I);
31504 case PT_IntAPS:
31505 return emitInitIntAPS(I);
31506 case PT_Bool:
31507 return emitInitBool(I);
31508 case PT_FixedPoint:
31509 return emitInitFixedPoint(I);
31510 case PT_Ptr:
31511 return emitInitPtr(I);
31512 case PT_MemberPtr:
31513 return emitInitMemberPtr(I);
31514 case PT_Float:
31515 return emitInitFloat(I);
31516 }
31517 llvm_unreachable("invalid enum value");
31518}
31519#endif
31520#ifdef GET_LINK_IMPL
31521bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
31522 return emitOp<>(OP_InitSint8, L);
31523}
31524bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
31525 return emitOp<>(OP_InitUint8, L);
31526}
31527bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
31528 return emitOp<>(OP_InitSint16, L);
31529}
31530bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
31531 return emitOp<>(OP_InitUint16, L);
31532}
31533bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
31534 return emitOp<>(OP_InitSint32, L);
31535}
31536bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
31537 return emitOp<>(OP_InitUint32, L);
31538}
31539bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
31540 return emitOp<>(OP_InitSint64, L);
31541}
31542bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
31543 return emitOp<>(OP_InitUint64, L);
31544}
31545bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
31546 return emitOp<>(OP_InitIntAP, L);
31547}
31548bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
31549 return emitOp<>(OP_InitIntAPS, L);
31550}
31551bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
31552 return emitOp<>(OP_InitBool, L);
31553}
31554bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
31555 return emitOp<>(OP_InitFixedPoint, L);
31556}
31557bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
31558 return emitOp<>(OP_InitPtr, L);
31559}
31560bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
31561 return emitOp<>(OP_InitMemberPtr, L);
31562}
31563bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
31564 return emitOp<>(OP_InitFloat, L);
31565}
31566#endif
31567#ifdef GET_EVAL_IMPL
31568bool EvalEmitter::emitInitSint8(SourceInfo L) {
31569 if (!isActive()) return true;
31570 CurrentSource = L;
31571 return Init<PT_Sint8>(S, OpPC);
31572}
31573bool EvalEmitter::emitInitUint8(SourceInfo L) {
31574 if (!isActive()) return true;
31575 CurrentSource = L;
31576 return Init<PT_Uint8>(S, OpPC);
31577}
31578bool EvalEmitter::emitInitSint16(SourceInfo L) {
31579 if (!isActive()) return true;
31580 CurrentSource = L;
31581 return Init<PT_Sint16>(S, OpPC);
31582}
31583bool EvalEmitter::emitInitUint16(SourceInfo L) {
31584 if (!isActive()) return true;
31585 CurrentSource = L;
31586 return Init<PT_Uint16>(S, OpPC);
31587}
31588bool EvalEmitter::emitInitSint32(SourceInfo L) {
31589 if (!isActive()) return true;
31590 CurrentSource = L;
31591 return Init<PT_Sint32>(S, OpPC);
31592}
31593bool EvalEmitter::emitInitUint32(SourceInfo L) {
31594 if (!isActive()) return true;
31595 CurrentSource = L;
31596 return Init<PT_Uint32>(S, OpPC);
31597}
31598bool EvalEmitter::emitInitSint64(SourceInfo L) {
31599 if (!isActive()) return true;
31600 CurrentSource = L;
31601 return Init<PT_Sint64>(S, OpPC);
31602}
31603bool EvalEmitter::emitInitUint64(SourceInfo L) {
31604 if (!isActive()) return true;
31605 CurrentSource = L;
31606 return Init<PT_Uint64>(S, OpPC);
31607}
31608bool EvalEmitter::emitInitIntAP(SourceInfo L) {
31609 if (!isActive()) return true;
31610 CurrentSource = L;
31611 return Init<PT_IntAP>(S, OpPC);
31612}
31613bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
31614 if (!isActive()) return true;
31615 CurrentSource = L;
31616 return Init<PT_IntAPS>(S, OpPC);
31617}
31618bool EvalEmitter::emitInitBool(SourceInfo L) {
31619 if (!isActive()) return true;
31620 CurrentSource = L;
31621 return Init<PT_Bool>(S, OpPC);
31622}
31623bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
31624 if (!isActive()) return true;
31625 CurrentSource = L;
31626 return Init<PT_FixedPoint>(S, OpPC);
31627}
31628bool EvalEmitter::emitInitPtr(SourceInfo L) {
31629 if (!isActive()) return true;
31630 CurrentSource = L;
31631 return Init<PT_Ptr>(S, OpPC);
31632}
31633bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
31634 if (!isActive()) return true;
31635 CurrentSource = L;
31636 return Init<PT_MemberPtr>(S, OpPC);
31637}
31638bool EvalEmitter::emitInitFloat(SourceInfo L) {
31639 if (!isActive()) return true;
31640 CurrentSource = L;
31641 return Init<PT_Float>(S, OpPC);
31642}
31643#endif
31644#ifdef GET_OPCODE_NAMES
31645OP_InitBitFieldSint8,
31646OP_InitBitFieldUint8,
31647OP_InitBitFieldSint16,
31648OP_InitBitFieldUint16,
31649OP_InitBitFieldSint32,
31650OP_InitBitFieldUint32,
31651OP_InitBitFieldSint64,
31652OP_InitBitFieldUint64,
31653OP_InitBitFieldIntAP,
31654OP_InitBitFieldIntAPS,
31655OP_InitBitFieldBool,
31656#endif
31657#ifdef GET_INTERPFN_LIST
31658&Interp_InitBitFieldSint8,
31659&Interp_InitBitFieldUint8,
31660&Interp_InitBitFieldSint16,
31661&Interp_InitBitFieldUint16,
31662&Interp_InitBitFieldSint32,
31663&Interp_InitBitFieldUint32,
31664&Interp_InitBitFieldSint64,
31665&Interp_InitBitFieldUint64,
31666&Interp_InitBitFieldIntAP,
31667&Interp_InitBitFieldIntAPS,
31668&Interp_InitBitFieldBool,
31669#endif
31670#ifdef GET_INTERPFN_DISPATCHERS
31671PRESERVE_NONE
31672static bool Interp_InitBitFieldSint8(InterpState &S, CodePtr &PC) {
31673 {
31674 CodePtr OpPC = PC;
31675 const auto V0 = ReadArg<uint32_t>(S, PC);
31676 const auto V1 = ReadArg<uint32_t>(S, PC);
31677 if (!InitBitField<PT_Sint8>(S, OpPC, V0, V1))
31678 return false;
31679 }
31680#if USE_TAILCALLS
31681 MUSTTAIL return InterpNext(S, PC);
31682#else
31683 return true;
31684#endif
31685}
31686PRESERVE_NONE
31687static bool Interp_InitBitFieldUint8(InterpState &S, CodePtr &PC) {
31688 {
31689 CodePtr OpPC = PC;
31690 const auto V0 = ReadArg<uint32_t>(S, PC);
31691 const auto V1 = ReadArg<uint32_t>(S, PC);
31692 if (!InitBitField<PT_Uint8>(S, OpPC, V0, V1))
31693 return false;
31694 }
31695#if USE_TAILCALLS
31696 MUSTTAIL return InterpNext(S, PC);
31697#else
31698 return true;
31699#endif
31700}
31701PRESERVE_NONE
31702static bool Interp_InitBitFieldSint16(InterpState &S, CodePtr &PC) {
31703 {
31704 CodePtr OpPC = PC;
31705 const auto V0 = ReadArg<uint32_t>(S, PC);
31706 const auto V1 = ReadArg<uint32_t>(S, PC);
31707 if (!InitBitField<PT_Sint16>(S, OpPC, V0, V1))
31708 return false;
31709 }
31710#if USE_TAILCALLS
31711 MUSTTAIL return InterpNext(S, PC);
31712#else
31713 return true;
31714#endif
31715}
31716PRESERVE_NONE
31717static bool Interp_InitBitFieldUint16(InterpState &S, CodePtr &PC) {
31718 {
31719 CodePtr OpPC = PC;
31720 const auto V0 = ReadArg<uint32_t>(S, PC);
31721 const auto V1 = ReadArg<uint32_t>(S, PC);
31722 if (!InitBitField<PT_Uint16>(S, OpPC, V0, V1))
31723 return false;
31724 }
31725#if USE_TAILCALLS
31726 MUSTTAIL return InterpNext(S, PC);
31727#else
31728 return true;
31729#endif
31730}
31731PRESERVE_NONE
31732static bool Interp_InitBitFieldSint32(InterpState &S, CodePtr &PC) {
31733 {
31734 CodePtr OpPC = PC;
31735 const auto V0 = ReadArg<uint32_t>(S, PC);
31736 const auto V1 = ReadArg<uint32_t>(S, PC);
31737 if (!InitBitField<PT_Sint32>(S, OpPC, V0, V1))
31738 return false;
31739 }
31740#if USE_TAILCALLS
31741 MUSTTAIL return InterpNext(S, PC);
31742#else
31743 return true;
31744#endif
31745}
31746PRESERVE_NONE
31747static bool Interp_InitBitFieldUint32(InterpState &S, CodePtr &PC) {
31748 {
31749 CodePtr OpPC = PC;
31750 const auto V0 = ReadArg<uint32_t>(S, PC);
31751 const auto V1 = ReadArg<uint32_t>(S, PC);
31752 if (!InitBitField<PT_Uint32>(S, OpPC, V0, V1))
31753 return false;
31754 }
31755#if USE_TAILCALLS
31756 MUSTTAIL return InterpNext(S, PC);
31757#else
31758 return true;
31759#endif
31760}
31761PRESERVE_NONE
31762static bool Interp_InitBitFieldSint64(InterpState &S, CodePtr &PC) {
31763 {
31764 CodePtr OpPC = PC;
31765 const auto V0 = ReadArg<uint32_t>(S, PC);
31766 const auto V1 = ReadArg<uint32_t>(S, PC);
31767 if (!InitBitField<PT_Sint64>(S, OpPC, V0, V1))
31768 return false;
31769 }
31770#if USE_TAILCALLS
31771 MUSTTAIL return InterpNext(S, PC);
31772#else
31773 return true;
31774#endif
31775}
31776PRESERVE_NONE
31777static bool Interp_InitBitFieldUint64(InterpState &S, CodePtr &PC) {
31778 {
31779 CodePtr OpPC = PC;
31780 const auto V0 = ReadArg<uint32_t>(S, PC);
31781 const auto V1 = ReadArg<uint32_t>(S, PC);
31782 if (!InitBitField<PT_Uint64>(S, OpPC, V0, V1))
31783 return false;
31784 }
31785#if USE_TAILCALLS
31786 MUSTTAIL return InterpNext(S, PC);
31787#else
31788 return true;
31789#endif
31790}
31791PRESERVE_NONE
31792static bool Interp_InitBitFieldIntAP(InterpState &S, CodePtr &PC) {
31793 {
31794 CodePtr OpPC = PC;
31795 const auto V0 = ReadArg<uint32_t>(S, PC);
31796 const auto V1 = ReadArg<uint32_t>(S, PC);
31797 if (!InitBitField<PT_IntAP>(S, OpPC, V0, V1))
31798 return false;
31799 }
31800#if USE_TAILCALLS
31801 MUSTTAIL return InterpNext(S, PC);
31802#else
31803 return true;
31804#endif
31805}
31806PRESERVE_NONE
31807static bool Interp_InitBitFieldIntAPS(InterpState &S, CodePtr &PC) {
31808 {
31809 CodePtr OpPC = PC;
31810 const auto V0 = ReadArg<uint32_t>(S, PC);
31811 const auto V1 = ReadArg<uint32_t>(S, PC);
31812 if (!InitBitField<PT_IntAPS>(S, OpPC, V0, V1))
31813 return false;
31814 }
31815#if USE_TAILCALLS
31816 MUSTTAIL return InterpNext(S, PC);
31817#else
31818 return true;
31819#endif
31820}
31821PRESERVE_NONE
31822static bool Interp_InitBitFieldBool(InterpState &S, CodePtr &PC) {
31823 {
31824 CodePtr OpPC = PC;
31825 const auto V0 = ReadArg<uint32_t>(S, PC);
31826 const auto V1 = ReadArg<uint32_t>(S, PC);
31827 if (!InitBitField<PT_Bool>(S, OpPC, V0, V1))
31828 return false;
31829 }
31830#if USE_TAILCALLS
31831 MUSTTAIL return InterpNext(S, PC);
31832#else
31833 return true;
31834#endif
31835}
31836#endif
31837#ifdef GET_DISASM
31838case OP_InitBitFieldSint8:
31839 Text.Op = PrintName("InitBitFieldSint8");
31840 Text.Args.push_back(printArg<uint32_t>(P, PC));
31841 Text.Args.push_back(printArg<uint32_t>(P, PC));
31842 break;
31843case OP_InitBitFieldUint8:
31844 Text.Op = PrintName("InitBitFieldUint8");
31845 Text.Args.push_back(printArg<uint32_t>(P, PC));
31846 Text.Args.push_back(printArg<uint32_t>(P, PC));
31847 break;
31848case OP_InitBitFieldSint16:
31849 Text.Op = PrintName("InitBitFieldSint16");
31850 Text.Args.push_back(printArg<uint32_t>(P, PC));
31851 Text.Args.push_back(printArg<uint32_t>(P, PC));
31852 break;
31853case OP_InitBitFieldUint16:
31854 Text.Op = PrintName("InitBitFieldUint16");
31855 Text.Args.push_back(printArg<uint32_t>(P, PC));
31856 Text.Args.push_back(printArg<uint32_t>(P, PC));
31857 break;
31858case OP_InitBitFieldSint32:
31859 Text.Op = PrintName("InitBitFieldSint32");
31860 Text.Args.push_back(printArg<uint32_t>(P, PC));
31861 Text.Args.push_back(printArg<uint32_t>(P, PC));
31862 break;
31863case OP_InitBitFieldUint32:
31864 Text.Op = PrintName("InitBitFieldUint32");
31865 Text.Args.push_back(printArg<uint32_t>(P, PC));
31866 Text.Args.push_back(printArg<uint32_t>(P, PC));
31867 break;
31868case OP_InitBitFieldSint64:
31869 Text.Op = PrintName("InitBitFieldSint64");
31870 Text.Args.push_back(printArg<uint32_t>(P, PC));
31871 Text.Args.push_back(printArg<uint32_t>(P, PC));
31872 break;
31873case OP_InitBitFieldUint64:
31874 Text.Op = PrintName("InitBitFieldUint64");
31875 Text.Args.push_back(printArg<uint32_t>(P, PC));
31876 Text.Args.push_back(printArg<uint32_t>(P, PC));
31877 break;
31878case OP_InitBitFieldIntAP:
31879 Text.Op = PrintName("InitBitFieldIntAP");
31880 Text.Args.push_back(printArg<uint32_t>(P, PC));
31881 Text.Args.push_back(printArg<uint32_t>(P, PC));
31882 break;
31883case OP_InitBitFieldIntAPS:
31884 Text.Op = PrintName("InitBitFieldIntAPS");
31885 Text.Args.push_back(printArg<uint32_t>(P, PC));
31886 Text.Args.push_back(printArg<uint32_t>(P, PC));
31887 break;
31888case OP_InitBitFieldBool:
31889 Text.Op = PrintName("InitBitFieldBool");
31890 Text.Args.push_back(printArg<uint32_t>(P, PC));
31891 Text.Args.push_back(printArg<uint32_t>(P, PC));
31892 break;
31893#endif
31894#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31895bool emitInitBitFieldSint8( uint32_t , uint32_t , SourceInfo);
31896bool emitInitBitFieldUint8( uint32_t , uint32_t , SourceInfo);
31897bool emitInitBitFieldSint16( uint32_t , uint32_t , SourceInfo);
31898bool emitInitBitFieldUint16( uint32_t , uint32_t , SourceInfo);
31899bool emitInitBitFieldSint32( uint32_t , uint32_t , SourceInfo);
31900bool emitInitBitFieldUint32( uint32_t , uint32_t , SourceInfo);
31901bool emitInitBitFieldSint64( uint32_t , uint32_t , SourceInfo);
31902bool emitInitBitFieldUint64( uint32_t , uint32_t , SourceInfo);
31903bool emitInitBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
31904bool emitInitBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
31905bool emitInitBitFieldBool( uint32_t , uint32_t , SourceInfo);
31906#endif
31907#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31908[[nodiscard]] bool emitInitBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
31909#endif
31910#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31911bool
31912#if defined(GET_EVAL_IMPL)
31913EvalEmitter
31914#else
31915ByteCodeEmitter
31916#endif
31917::emitInitBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31918 switch (T0) {
31919 case PT_Sint8:
31920 return emitInitBitFieldSint8(A0, A1, I);
31921 case PT_Uint8:
31922 return emitInitBitFieldUint8(A0, A1, I);
31923 case PT_Sint16:
31924 return emitInitBitFieldSint16(A0, A1, I);
31925 case PT_Uint16:
31926 return emitInitBitFieldUint16(A0, A1, I);
31927 case PT_Sint32:
31928 return emitInitBitFieldSint32(A0, A1, I);
31929 case PT_Uint32:
31930 return emitInitBitFieldUint32(A0, A1, I);
31931 case PT_Sint64:
31932 return emitInitBitFieldSint64(A0, A1, I);
31933 case PT_Uint64:
31934 return emitInitBitFieldUint64(A0, A1, I);
31935 case PT_IntAP:
31936 return emitInitBitFieldIntAP(A0, A1, I);
31937 case PT_IntAPS:
31938 return emitInitBitFieldIntAPS(A0, A1, I);
31939 case PT_Bool:
31940 return emitInitBitFieldBool(A0, A1, I);
31941 default: llvm_unreachable("invalid type: emitInitBitField");
31942 }
31943 llvm_unreachable("invalid enum value");
31944}
31945#endif
31946#ifdef GET_LINK_IMPL
31947bool ByteCodeEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31948 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint8, A0, A1, L);
31949}
31950bool ByteCodeEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31951 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint8, A0, A1, L);
31952}
31953bool ByteCodeEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31954 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint16, A0, A1, L);
31955}
31956bool ByteCodeEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31957 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint16, A0, A1, L);
31958}
31959bool ByteCodeEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31960 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint32, A0, A1, L);
31961}
31962bool ByteCodeEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31963 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint32, A0, A1, L);
31964}
31965bool ByteCodeEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31966 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint64, A0, A1, L);
31967}
31968bool ByteCodeEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31969 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint64, A0, A1, L);
31970}
31971bool ByteCodeEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31972 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAP, A0, A1, L);
31973}
31974bool ByteCodeEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31975 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAPS, A0, A1, L);
31976}
31977bool ByteCodeEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31978 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldBool, A0, A1, L);
31979}
31980#endif
31981#ifdef GET_EVAL_IMPL
31982bool EvalEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31983 if (!isActive()) return true;
31984 CurrentSource = L;
31985 return InitBitField<PT_Sint8>(S, OpPC, A0, A1);
31986}
31987bool EvalEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31988 if (!isActive()) return true;
31989 CurrentSource = L;
31990 return InitBitField<PT_Uint8>(S, OpPC, A0, A1);
31991}
31992bool EvalEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31993 if (!isActive()) return true;
31994 CurrentSource = L;
31995 return InitBitField<PT_Sint16>(S, OpPC, A0, A1);
31996}
31997bool EvalEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31998 if (!isActive()) return true;
31999 CurrentSource = L;
32000 return InitBitField<PT_Uint16>(S, OpPC, A0, A1);
32001}
32002bool EvalEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32003 if (!isActive()) return true;
32004 CurrentSource = L;
32005 return InitBitField<PT_Sint32>(S, OpPC, A0, A1);
32006}
32007bool EvalEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32008 if (!isActive()) return true;
32009 CurrentSource = L;
32010 return InitBitField<PT_Uint32>(S, OpPC, A0, A1);
32011}
32012bool EvalEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32013 if (!isActive()) return true;
32014 CurrentSource = L;
32015 return InitBitField<PT_Sint64>(S, OpPC, A0, A1);
32016}
32017bool EvalEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32018 if (!isActive()) return true;
32019 CurrentSource = L;
32020 return InitBitField<PT_Uint64>(S, OpPC, A0, A1);
32021}
32022bool EvalEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
32023 if (!isActive()) return true;
32024 CurrentSource = L;
32025 return InitBitField<PT_IntAP>(S, OpPC, A0, A1);
32026}
32027bool EvalEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
32028 if (!isActive()) return true;
32029 CurrentSource = L;
32030 return InitBitField<PT_IntAPS>(S, OpPC, A0, A1);
32031}
32032bool EvalEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
32033 if (!isActive()) return true;
32034 CurrentSource = L;
32035 return InitBitField<PT_Bool>(S, OpPC, A0, A1);
32036}
32037#endif
32038#ifdef GET_OPCODE_NAMES
32039OP_InitBitFieldActivateSint8,
32040OP_InitBitFieldActivateUint8,
32041OP_InitBitFieldActivateSint16,
32042OP_InitBitFieldActivateUint16,
32043OP_InitBitFieldActivateSint32,
32044OP_InitBitFieldActivateUint32,
32045OP_InitBitFieldActivateSint64,
32046OP_InitBitFieldActivateUint64,
32047OP_InitBitFieldActivateIntAP,
32048OP_InitBitFieldActivateIntAPS,
32049OP_InitBitFieldActivateBool,
32050#endif
32051#ifdef GET_INTERPFN_LIST
32052&Interp_InitBitFieldActivateSint8,
32053&Interp_InitBitFieldActivateUint8,
32054&Interp_InitBitFieldActivateSint16,
32055&Interp_InitBitFieldActivateUint16,
32056&Interp_InitBitFieldActivateSint32,
32057&Interp_InitBitFieldActivateUint32,
32058&Interp_InitBitFieldActivateSint64,
32059&Interp_InitBitFieldActivateUint64,
32060&Interp_InitBitFieldActivateIntAP,
32061&Interp_InitBitFieldActivateIntAPS,
32062&Interp_InitBitFieldActivateBool,
32063#endif
32064#ifdef GET_INTERPFN_DISPATCHERS
32065PRESERVE_NONE
32066static bool Interp_InitBitFieldActivateSint8(InterpState &S, CodePtr &PC) {
32067 {
32068 CodePtr OpPC = PC;
32069 const auto V0 = ReadArg<uint32_t>(S, PC);
32070 const auto V1 = ReadArg<uint32_t>(S, PC);
32071 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1))
32072 return false;
32073 }
32074#if USE_TAILCALLS
32075 MUSTTAIL return InterpNext(S, PC);
32076#else
32077 return true;
32078#endif
32079}
32080PRESERVE_NONE
32081static bool Interp_InitBitFieldActivateUint8(InterpState &S, CodePtr &PC) {
32082 {
32083 CodePtr OpPC = PC;
32084 const auto V0 = ReadArg<uint32_t>(S, PC);
32085 const auto V1 = ReadArg<uint32_t>(S, PC);
32086 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1))
32087 return false;
32088 }
32089#if USE_TAILCALLS
32090 MUSTTAIL return InterpNext(S, PC);
32091#else
32092 return true;
32093#endif
32094}
32095PRESERVE_NONE
32096static bool Interp_InitBitFieldActivateSint16(InterpState &S, CodePtr &PC) {
32097 {
32098 CodePtr OpPC = PC;
32099 const auto V0 = ReadArg<uint32_t>(S, PC);
32100 const auto V1 = ReadArg<uint32_t>(S, PC);
32101 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1))
32102 return false;
32103 }
32104#if USE_TAILCALLS
32105 MUSTTAIL return InterpNext(S, PC);
32106#else
32107 return true;
32108#endif
32109}
32110PRESERVE_NONE
32111static bool Interp_InitBitFieldActivateUint16(InterpState &S, CodePtr &PC) {
32112 {
32113 CodePtr OpPC = PC;
32114 const auto V0 = ReadArg<uint32_t>(S, PC);
32115 const auto V1 = ReadArg<uint32_t>(S, PC);
32116 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1))
32117 return false;
32118 }
32119#if USE_TAILCALLS
32120 MUSTTAIL return InterpNext(S, PC);
32121#else
32122 return true;
32123#endif
32124}
32125PRESERVE_NONE
32126static bool Interp_InitBitFieldActivateSint32(InterpState &S, CodePtr &PC) {
32127 {
32128 CodePtr OpPC = PC;
32129 const auto V0 = ReadArg<uint32_t>(S, PC);
32130 const auto V1 = ReadArg<uint32_t>(S, PC);
32131 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1))
32132 return false;
32133 }
32134#if USE_TAILCALLS
32135 MUSTTAIL return InterpNext(S, PC);
32136#else
32137 return true;
32138#endif
32139}
32140PRESERVE_NONE
32141static bool Interp_InitBitFieldActivateUint32(InterpState &S, CodePtr &PC) {
32142 {
32143 CodePtr OpPC = PC;
32144 const auto V0 = ReadArg<uint32_t>(S, PC);
32145 const auto V1 = ReadArg<uint32_t>(S, PC);
32146 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1))
32147 return false;
32148 }
32149#if USE_TAILCALLS
32150 MUSTTAIL return InterpNext(S, PC);
32151#else
32152 return true;
32153#endif
32154}
32155PRESERVE_NONE
32156static bool Interp_InitBitFieldActivateSint64(InterpState &S, CodePtr &PC) {
32157 {
32158 CodePtr OpPC = PC;
32159 const auto V0 = ReadArg<uint32_t>(S, PC);
32160 const auto V1 = ReadArg<uint32_t>(S, PC);
32161 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1))
32162 return false;
32163 }
32164#if USE_TAILCALLS
32165 MUSTTAIL return InterpNext(S, PC);
32166#else
32167 return true;
32168#endif
32169}
32170PRESERVE_NONE
32171static bool Interp_InitBitFieldActivateUint64(InterpState &S, CodePtr &PC) {
32172 {
32173 CodePtr OpPC = PC;
32174 const auto V0 = ReadArg<uint32_t>(S, PC);
32175 const auto V1 = ReadArg<uint32_t>(S, PC);
32176 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1))
32177 return false;
32178 }
32179#if USE_TAILCALLS
32180 MUSTTAIL return InterpNext(S, PC);
32181#else
32182 return true;
32183#endif
32184}
32185PRESERVE_NONE
32186static bool Interp_InitBitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
32187 {
32188 CodePtr OpPC = PC;
32189 const auto V0 = ReadArg<uint32_t>(S, PC);
32190 const auto V1 = ReadArg<uint32_t>(S, PC);
32191 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1))
32192 return false;
32193 }
32194#if USE_TAILCALLS
32195 MUSTTAIL return InterpNext(S, PC);
32196#else
32197 return true;
32198#endif
32199}
32200PRESERVE_NONE
32201static bool Interp_InitBitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
32202 {
32203 CodePtr OpPC = PC;
32204 const auto V0 = ReadArg<uint32_t>(S, PC);
32205 const auto V1 = ReadArg<uint32_t>(S, PC);
32206 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1))
32207 return false;
32208 }
32209#if USE_TAILCALLS
32210 MUSTTAIL return InterpNext(S, PC);
32211#else
32212 return true;
32213#endif
32214}
32215PRESERVE_NONE
32216static bool Interp_InitBitFieldActivateBool(InterpState &S, CodePtr &PC) {
32217 {
32218 CodePtr OpPC = PC;
32219 const auto V0 = ReadArg<uint32_t>(S, PC);
32220 const auto V1 = ReadArg<uint32_t>(S, PC);
32221 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0, V1))
32222 return false;
32223 }
32224#if USE_TAILCALLS
32225 MUSTTAIL return InterpNext(S, PC);
32226#else
32227 return true;
32228#endif
32229}
32230#endif
32231#ifdef GET_DISASM
32232case OP_InitBitFieldActivateSint8:
32233 Text.Op = PrintName("InitBitFieldActivateSint8");
32234 Text.Args.push_back(printArg<uint32_t>(P, PC));
32235 Text.Args.push_back(printArg<uint32_t>(P, PC));
32236 break;
32237case OP_InitBitFieldActivateUint8:
32238 Text.Op = PrintName("InitBitFieldActivateUint8");
32239 Text.Args.push_back(printArg<uint32_t>(P, PC));
32240 Text.Args.push_back(printArg<uint32_t>(P, PC));
32241 break;
32242case OP_InitBitFieldActivateSint16:
32243 Text.Op = PrintName("InitBitFieldActivateSint16");
32244 Text.Args.push_back(printArg<uint32_t>(P, PC));
32245 Text.Args.push_back(printArg<uint32_t>(P, PC));
32246 break;
32247case OP_InitBitFieldActivateUint16:
32248 Text.Op = PrintName("InitBitFieldActivateUint16");
32249 Text.Args.push_back(printArg<uint32_t>(P, PC));
32250 Text.Args.push_back(printArg<uint32_t>(P, PC));
32251 break;
32252case OP_InitBitFieldActivateSint32:
32253 Text.Op = PrintName("InitBitFieldActivateSint32");
32254 Text.Args.push_back(printArg<uint32_t>(P, PC));
32255 Text.Args.push_back(printArg<uint32_t>(P, PC));
32256 break;
32257case OP_InitBitFieldActivateUint32:
32258 Text.Op = PrintName("InitBitFieldActivateUint32");
32259 Text.Args.push_back(printArg<uint32_t>(P, PC));
32260 Text.Args.push_back(printArg<uint32_t>(P, PC));
32261 break;
32262case OP_InitBitFieldActivateSint64:
32263 Text.Op = PrintName("InitBitFieldActivateSint64");
32264 Text.Args.push_back(printArg<uint32_t>(P, PC));
32265 Text.Args.push_back(printArg<uint32_t>(P, PC));
32266 break;
32267case OP_InitBitFieldActivateUint64:
32268 Text.Op = PrintName("InitBitFieldActivateUint64");
32269 Text.Args.push_back(printArg<uint32_t>(P, PC));
32270 Text.Args.push_back(printArg<uint32_t>(P, PC));
32271 break;
32272case OP_InitBitFieldActivateIntAP:
32273 Text.Op = PrintName("InitBitFieldActivateIntAP");
32274 Text.Args.push_back(printArg<uint32_t>(P, PC));
32275 Text.Args.push_back(printArg<uint32_t>(P, PC));
32276 break;
32277case OP_InitBitFieldActivateIntAPS:
32278 Text.Op = PrintName("InitBitFieldActivateIntAPS");
32279 Text.Args.push_back(printArg<uint32_t>(P, PC));
32280 Text.Args.push_back(printArg<uint32_t>(P, PC));
32281 break;
32282case OP_InitBitFieldActivateBool:
32283 Text.Op = PrintName("InitBitFieldActivateBool");
32284 Text.Args.push_back(printArg<uint32_t>(P, PC));
32285 Text.Args.push_back(printArg<uint32_t>(P, PC));
32286 break;
32287#endif
32288#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32289bool emitInitBitFieldActivateSint8( uint32_t , uint32_t , SourceInfo);
32290bool emitInitBitFieldActivateUint8( uint32_t , uint32_t , SourceInfo);
32291bool emitInitBitFieldActivateSint16( uint32_t , uint32_t , SourceInfo);
32292bool emitInitBitFieldActivateUint16( uint32_t , uint32_t , SourceInfo);
32293bool emitInitBitFieldActivateSint32( uint32_t , uint32_t , SourceInfo);
32294bool emitInitBitFieldActivateUint32( uint32_t , uint32_t , SourceInfo);
32295bool emitInitBitFieldActivateSint64( uint32_t , uint32_t , SourceInfo);
32296bool emitInitBitFieldActivateUint64( uint32_t , uint32_t , SourceInfo);
32297bool emitInitBitFieldActivateIntAP( uint32_t , uint32_t , SourceInfo);
32298bool emitInitBitFieldActivateIntAPS( uint32_t , uint32_t , SourceInfo);
32299bool emitInitBitFieldActivateBool( uint32_t , uint32_t , SourceInfo);
32300#endif
32301#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32302[[nodiscard]] bool emitInitBitFieldActivate(PrimType, uint32_t, uint32_t, SourceInfo I);
32303#endif
32304#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32305bool
32306#if defined(GET_EVAL_IMPL)
32307EvalEmitter
32308#else
32309ByteCodeEmitter
32310#endif
32311::emitInitBitFieldActivate(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
32312 switch (T0) {
32313 case PT_Sint8:
32314 return emitInitBitFieldActivateSint8(A0, A1, I);
32315 case PT_Uint8:
32316 return emitInitBitFieldActivateUint8(A0, A1, I);
32317 case PT_Sint16:
32318 return emitInitBitFieldActivateSint16(A0, A1, I);
32319 case PT_Uint16:
32320 return emitInitBitFieldActivateUint16(A0, A1, I);
32321 case PT_Sint32:
32322 return emitInitBitFieldActivateSint32(A0, A1, I);
32323 case PT_Uint32:
32324 return emitInitBitFieldActivateUint32(A0, A1, I);
32325 case PT_Sint64:
32326 return emitInitBitFieldActivateSint64(A0, A1, I);
32327 case PT_Uint64:
32328 return emitInitBitFieldActivateUint64(A0, A1, I);
32329 case PT_IntAP:
32330 return emitInitBitFieldActivateIntAP(A0, A1, I);
32331 case PT_IntAPS:
32332 return emitInitBitFieldActivateIntAPS(A0, A1, I);
32333 case PT_Bool:
32334 return emitInitBitFieldActivateBool(A0, A1, I);
32335 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
32336 }
32337 llvm_unreachable("invalid enum value");
32338}
32339#endif
32340#ifdef GET_LINK_IMPL
32341bool ByteCodeEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
32342 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint8, A0, A1, L);
32343}
32344bool ByteCodeEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
32345 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint8, A0, A1, L);
32346}
32347bool ByteCodeEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
32348 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint16, A0, A1, L);
32349}
32350bool ByteCodeEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
32351 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint16, A0, A1, L);
32352}
32353bool ByteCodeEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32354 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint32, A0, A1, L);
32355}
32356bool ByteCodeEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32357 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint32, A0, A1, L);
32358}
32359bool ByteCodeEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32360 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint64, A0, A1, L);
32361}
32362bool ByteCodeEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32363 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint64, A0, A1, L);
32364}
32365bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
32366 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAP, A0, A1, L);
32367}
32368bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
32369 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAPS, A0, A1, L);
32370}
32371bool ByteCodeEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
32372 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateBool, A0, A1, L);
32373}
32374#endif
32375#ifdef GET_EVAL_IMPL
32376bool EvalEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
32377 if (!isActive()) return true;
32378 CurrentSource = L;
32379 return InitBitFieldActivate<PT_Sint8>(S, OpPC, A0, A1);
32380}
32381bool EvalEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
32382 if (!isActive()) return true;
32383 CurrentSource = L;
32384 return InitBitFieldActivate<PT_Uint8>(S, OpPC, A0, A1);
32385}
32386bool EvalEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
32387 if (!isActive()) return true;
32388 CurrentSource = L;
32389 return InitBitFieldActivate<PT_Sint16>(S, OpPC, A0, A1);
32390}
32391bool EvalEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
32392 if (!isActive()) return true;
32393 CurrentSource = L;
32394 return InitBitFieldActivate<PT_Uint16>(S, OpPC, A0, A1);
32395}
32396bool EvalEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32397 if (!isActive()) return true;
32398 CurrentSource = L;
32399 return InitBitFieldActivate<PT_Sint32>(S, OpPC, A0, A1);
32400}
32401bool EvalEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
32402 if (!isActive()) return true;
32403 CurrentSource = L;
32404 return InitBitFieldActivate<PT_Uint32>(S, OpPC, A0, A1);
32405}
32406bool EvalEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32407 if (!isActive()) return true;
32408 CurrentSource = L;
32409 return InitBitFieldActivate<PT_Sint64>(S, OpPC, A0, A1);
32410}
32411bool EvalEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
32412 if (!isActive()) return true;
32413 CurrentSource = L;
32414 return InitBitFieldActivate<PT_Uint64>(S, OpPC, A0, A1);
32415}
32416bool EvalEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
32417 if (!isActive()) return true;
32418 CurrentSource = L;
32419 return InitBitFieldActivate<PT_IntAP>(S, OpPC, A0, A1);
32420}
32421bool EvalEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
32422 if (!isActive()) return true;
32423 CurrentSource = L;
32424 return InitBitFieldActivate<PT_IntAPS>(S, OpPC, A0, A1);
32425}
32426bool EvalEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
32427 if (!isActive()) return true;
32428 CurrentSource = L;
32429 return InitBitFieldActivate<PT_Bool>(S, OpPC, A0, A1);
32430}
32431#endif
32432#ifdef GET_OPCODE_NAMES
32433OP_InitElemSint8,
32434OP_InitElemUint8,
32435OP_InitElemSint16,
32436OP_InitElemUint16,
32437OP_InitElemSint32,
32438OP_InitElemUint32,
32439OP_InitElemSint64,
32440OP_InitElemUint64,
32441OP_InitElemIntAP,
32442OP_InitElemIntAPS,
32443OP_InitElemBool,
32444OP_InitElemFixedPoint,
32445OP_InitElemPtr,
32446OP_InitElemMemberPtr,
32447OP_InitElemFloat,
32448#endif
32449#ifdef GET_INTERPFN_LIST
32450&Interp_InitElemSint8,
32451&Interp_InitElemUint8,
32452&Interp_InitElemSint16,
32453&Interp_InitElemUint16,
32454&Interp_InitElemSint32,
32455&Interp_InitElemUint32,
32456&Interp_InitElemSint64,
32457&Interp_InitElemUint64,
32458&Interp_InitElemIntAP,
32459&Interp_InitElemIntAPS,
32460&Interp_InitElemBool,
32461&Interp_InitElemFixedPoint,
32462&Interp_InitElemPtr,
32463&Interp_InitElemMemberPtr,
32464&Interp_InitElemFloat,
32465#endif
32466#ifdef GET_INTERPFN_DISPATCHERS
32467PRESERVE_NONE
32468static bool Interp_InitElemSint8(InterpState &S, CodePtr &PC) {
32469 {
32470 CodePtr OpPC = PC;
32471 const auto V0 = ReadArg<uint32_t>(S, PC);
32472 if (!InitElem<PT_Sint8>(S, OpPC, V0))
32473 return false;
32474 }
32475#if USE_TAILCALLS
32476 MUSTTAIL return InterpNext(S, PC);
32477#else
32478 return true;
32479#endif
32480}
32481PRESERVE_NONE
32482static bool Interp_InitElemUint8(InterpState &S, CodePtr &PC) {
32483 {
32484 CodePtr OpPC = PC;
32485 const auto V0 = ReadArg<uint32_t>(S, PC);
32486 if (!InitElem<PT_Uint8>(S, OpPC, V0))
32487 return false;
32488 }
32489#if USE_TAILCALLS
32490 MUSTTAIL return InterpNext(S, PC);
32491#else
32492 return true;
32493#endif
32494}
32495PRESERVE_NONE
32496static bool Interp_InitElemSint16(InterpState &S, CodePtr &PC) {
32497 {
32498 CodePtr OpPC = PC;
32499 const auto V0 = ReadArg<uint32_t>(S, PC);
32500 if (!InitElem<PT_Sint16>(S, OpPC, V0))
32501 return false;
32502 }
32503#if USE_TAILCALLS
32504 MUSTTAIL return InterpNext(S, PC);
32505#else
32506 return true;
32507#endif
32508}
32509PRESERVE_NONE
32510static bool Interp_InitElemUint16(InterpState &S, CodePtr &PC) {
32511 {
32512 CodePtr OpPC = PC;
32513 const auto V0 = ReadArg<uint32_t>(S, PC);
32514 if (!InitElem<PT_Uint16>(S, OpPC, V0))
32515 return false;
32516 }
32517#if USE_TAILCALLS
32518 MUSTTAIL return InterpNext(S, PC);
32519#else
32520 return true;
32521#endif
32522}
32523PRESERVE_NONE
32524static bool Interp_InitElemSint32(InterpState &S, CodePtr &PC) {
32525 {
32526 CodePtr OpPC = PC;
32527 const auto V0 = ReadArg<uint32_t>(S, PC);
32528 if (!InitElem<PT_Sint32>(S, OpPC, V0))
32529 return false;
32530 }
32531#if USE_TAILCALLS
32532 MUSTTAIL return InterpNext(S, PC);
32533#else
32534 return true;
32535#endif
32536}
32537PRESERVE_NONE
32538static bool Interp_InitElemUint32(InterpState &S, CodePtr &PC) {
32539 {
32540 CodePtr OpPC = PC;
32541 const auto V0 = ReadArg<uint32_t>(S, PC);
32542 if (!InitElem<PT_Uint32>(S, OpPC, V0))
32543 return false;
32544 }
32545#if USE_TAILCALLS
32546 MUSTTAIL return InterpNext(S, PC);
32547#else
32548 return true;
32549#endif
32550}
32551PRESERVE_NONE
32552static bool Interp_InitElemSint64(InterpState &S, CodePtr &PC) {
32553 {
32554 CodePtr OpPC = PC;
32555 const auto V0 = ReadArg<uint32_t>(S, PC);
32556 if (!InitElem<PT_Sint64>(S, OpPC, V0))
32557 return false;
32558 }
32559#if USE_TAILCALLS
32560 MUSTTAIL return InterpNext(S, PC);
32561#else
32562 return true;
32563#endif
32564}
32565PRESERVE_NONE
32566static bool Interp_InitElemUint64(InterpState &S, CodePtr &PC) {
32567 {
32568 CodePtr OpPC = PC;
32569 const auto V0 = ReadArg<uint32_t>(S, PC);
32570 if (!InitElem<PT_Uint64>(S, OpPC, V0))
32571 return false;
32572 }
32573#if USE_TAILCALLS
32574 MUSTTAIL return InterpNext(S, PC);
32575#else
32576 return true;
32577#endif
32578}
32579PRESERVE_NONE
32580static bool Interp_InitElemIntAP(InterpState &S, CodePtr &PC) {
32581 {
32582 CodePtr OpPC = PC;
32583 const auto V0 = ReadArg<uint32_t>(S, PC);
32584 if (!InitElem<PT_IntAP>(S, OpPC, V0))
32585 return false;
32586 }
32587#if USE_TAILCALLS
32588 MUSTTAIL return InterpNext(S, PC);
32589#else
32590 return true;
32591#endif
32592}
32593PRESERVE_NONE
32594static bool Interp_InitElemIntAPS(InterpState &S, CodePtr &PC) {
32595 {
32596 CodePtr OpPC = PC;
32597 const auto V0 = ReadArg<uint32_t>(S, PC);
32598 if (!InitElem<PT_IntAPS>(S, OpPC, V0))
32599 return false;
32600 }
32601#if USE_TAILCALLS
32602 MUSTTAIL return InterpNext(S, PC);
32603#else
32604 return true;
32605#endif
32606}
32607PRESERVE_NONE
32608static bool Interp_InitElemBool(InterpState &S, CodePtr &PC) {
32609 {
32610 CodePtr OpPC = PC;
32611 const auto V0 = ReadArg<uint32_t>(S, PC);
32612 if (!InitElem<PT_Bool>(S, OpPC, V0))
32613 return false;
32614 }
32615#if USE_TAILCALLS
32616 MUSTTAIL return InterpNext(S, PC);
32617#else
32618 return true;
32619#endif
32620}
32621PRESERVE_NONE
32622static bool Interp_InitElemFixedPoint(InterpState &S, CodePtr &PC) {
32623 {
32624 CodePtr OpPC = PC;
32625 const auto V0 = ReadArg<uint32_t>(S, PC);
32626 if (!InitElem<PT_FixedPoint>(S, OpPC, V0))
32627 return false;
32628 }
32629#if USE_TAILCALLS
32630 MUSTTAIL return InterpNext(S, PC);
32631#else
32632 return true;
32633#endif
32634}
32635PRESERVE_NONE
32636static bool Interp_InitElemPtr(InterpState &S, CodePtr &PC) {
32637 {
32638 CodePtr OpPC = PC;
32639 const auto V0 = ReadArg<uint32_t>(S, PC);
32640 if (!InitElem<PT_Ptr>(S, OpPC, V0))
32641 return false;
32642 }
32643#if USE_TAILCALLS
32644 MUSTTAIL return InterpNext(S, PC);
32645#else
32646 return true;
32647#endif
32648}
32649PRESERVE_NONE
32650static bool Interp_InitElemMemberPtr(InterpState &S, CodePtr &PC) {
32651 {
32652 CodePtr OpPC = PC;
32653 const auto V0 = ReadArg<uint32_t>(S, PC);
32654 if (!InitElem<PT_MemberPtr>(S, OpPC, V0))
32655 return false;
32656 }
32657#if USE_TAILCALLS
32658 MUSTTAIL return InterpNext(S, PC);
32659#else
32660 return true;
32661#endif
32662}
32663PRESERVE_NONE
32664static bool Interp_InitElemFloat(InterpState &S, CodePtr &PC) {
32665 {
32666 CodePtr OpPC = PC;
32667 const auto V0 = ReadArg<uint32_t>(S, PC);
32668 if (!InitElem<PT_Float>(S, OpPC, V0))
32669 return false;
32670 }
32671#if USE_TAILCALLS
32672 MUSTTAIL return InterpNext(S, PC);
32673#else
32674 return true;
32675#endif
32676}
32677#endif
32678#ifdef GET_DISASM
32679case OP_InitElemSint8:
32680 Text.Op = PrintName("InitElemSint8");
32681 Text.Args.push_back(printArg<uint32_t>(P, PC));
32682 break;
32683case OP_InitElemUint8:
32684 Text.Op = PrintName("InitElemUint8");
32685 Text.Args.push_back(printArg<uint32_t>(P, PC));
32686 break;
32687case OP_InitElemSint16:
32688 Text.Op = PrintName("InitElemSint16");
32689 Text.Args.push_back(printArg<uint32_t>(P, PC));
32690 break;
32691case OP_InitElemUint16:
32692 Text.Op = PrintName("InitElemUint16");
32693 Text.Args.push_back(printArg<uint32_t>(P, PC));
32694 break;
32695case OP_InitElemSint32:
32696 Text.Op = PrintName("InitElemSint32");
32697 Text.Args.push_back(printArg<uint32_t>(P, PC));
32698 break;
32699case OP_InitElemUint32:
32700 Text.Op = PrintName("InitElemUint32");
32701 Text.Args.push_back(printArg<uint32_t>(P, PC));
32702 break;
32703case OP_InitElemSint64:
32704 Text.Op = PrintName("InitElemSint64");
32705 Text.Args.push_back(printArg<uint32_t>(P, PC));
32706 break;
32707case OP_InitElemUint64:
32708 Text.Op = PrintName("InitElemUint64");
32709 Text.Args.push_back(printArg<uint32_t>(P, PC));
32710 break;
32711case OP_InitElemIntAP:
32712 Text.Op = PrintName("InitElemIntAP");
32713 Text.Args.push_back(printArg<uint32_t>(P, PC));
32714 break;
32715case OP_InitElemIntAPS:
32716 Text.Op = PrintName("InitElemIntAPS");
32717 Text.Args.push_back(printArg<uint32_t>(P, PC));
32718 break;
32719case OP_InitElemBool:
32720 Text.Op = PrintName("InitElemBool");
32721 Text.Args.push_back(printArg<uint32_t>(P, PC));
32722 break;
32723case OP_InitElemFixedPoint:
32724 Text.Op = PrintName("InitElemFixedPoint");
32725 Text.Args.push_back(printArg<uint32_t>(P, PC));
32726 break;
32727case OP_InitElemPtr:
32728 Text.Op = PrintName("InitElemPtr");
32729 Text.Args.push_back(printArg<uint32_t>(P, PC));
32730 break;
32731case OP_InitElemMemberPtr:
32732 Text.Op = PrintName("InitElemMemberPtr");
32733 Text.Args.push_back(printArg<uint32_t>(P, PC));
32734 break;
32735case OP_InitElemFloat:
32736 Text.Op = PrintName("InitElemFloat");
32737 Text.Args.push_back(printArg<uint32_t>(P, PC));
32738 break;
32739#endif
32740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32741bool emitInitElemSint8( uint32_t , SourceInfo);
32742bool emitInitElemUint8( uint32_t , SourceInfo);
32743bool emitInitElemSint16( uint32_t , SourceInfo);
32744bool emitInitElemUint16( uint32_t , SourceInfo);
32745bool emitInitElemSint32( uint32_t , SourceInfo);
32746bool emitInitElemUint32( uint32_t , SourceInfo);
32747bool emitInitElemSint64( uint32_t , SourceInfo);
32748bool emitInitElemUint64( uint32_t , SourceInfo);
32749bool emitInitElemIntAP( uint32_t , SourceInfo);
32750bool emitInitElemIntAPS( uint32_t , SourceInfo);
32751bool emitInitElemBool( uint32_t , SourceInfo);
32752bool emitInitElemFixedPoint( uint32_t , SourceInfo);
32753bool emitInitElemPtr( uint32_t , SourceInfo);
32754bool emitInitElemMemberPtr( uint32_t , SourceInfo);
32755bool emitInitElemFloat( uint32_t , SourceInfo);
32756#endif
32757#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32758[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
32759#endif
32760#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32761bool
32762#if defined(GET_EVAL_IMPL)
32763EvalEmitter
32764#else
32765ByteCodeEmitter
32766#endif
32767::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
32768 switch (T0) {
32769 case PT_Sint8:
32770 return emitInitElemSint8(A0, I);
32771 case PT_Uint8:
32772 return emitInitElemUint8(A0, I);
32773 case PT_Sint16:
32774 return emitInitElemSint16(A0, I);
32775 case PT_Uint16:
32776 return emitInitElemUint16(A0, I);
32777 case PT_Sint32:
32778 return emitInitElemSint32(A0, I);
32779 case PT_Uint32:
32780 return emitInitElemUint32(A0, I);
32781 case PT_Sint64:
32782 return emitInitElemSint64(A0, I);
32783 case PT_Uint64:
32784 return emitInitElemUint64(A0, I);
32785 case PT_IntAP:
32786 return emitInitElemIntAP(A0, I);
32787 case PT_IntAPS:
32788 return emitInitElemIntAPS(A0, I);
32789 case PT_Bool:
32790 return emitInitElemBool(A0, I);
32791 case PT_FixedPoint:
32792 return emitInitElemFixedPoint(A0, I);
32793 case PT_Ptr:
32794 return emitInitElemPtr(A0, I);
32795 case PT_MemberPtr:
32796 return emitInitElemMemberPtr(A0, I);
32797 case PT_Float:
32798 return emitInitElemFloat(A0, I);
32799 }
32800 llvm_unreachable("invalid enum value");
32801}
32802#endif
32803#ifdef GET_LINK_IMPL
32804bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32805 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
32806}
32807bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32808 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
32809}
32810bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32811 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
32812}
32813bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32814 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
32815}
32816bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32817 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
32818}
32819bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32820 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
32821}
32822bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32823 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
32824}
32825bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32826 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
32827}
32828bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32829 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
32830}
32831bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32832 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
32833}
32834bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32835 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
32836}
32837bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32838 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
32839}
32840bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32841 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
32842}
32843bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32844 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
32845}
32846bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32847 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
32848}
32849#endif
32850#ifdef GET_EVAL_IMPL
32851bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32852 if (!isActive()) return true;
32853 CurrentSource = L;
32854 return InitElem<PT_Sint8>(S, OpPC, A0);
32855}
32856bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32857 if (!isActive()) return true;
32858 CurrentSource = L;
32859 return InitElem<PT_Uint8>(S, OpPC, A0);
32860}
32861bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32862 if (!isActive()) return true;
32863 CurrentSource = L;
32864 return InitElem<PT_Sint16>(S, OpPC, A0);
32865}
32866bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32867 if (!isActive()) return true;
32868 CurrentSource = L;
32869 return InitElem<PT_Uint16>(S, OpPC, A0);
32870}
32871bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32872 if (!isActive()) return true;
32873 CurrentSource = L;
32874 return InitElem<PT_Sint32>(S, OpPC, A0);
32875}
32876bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32877 if (!isActive()) return true;
32878 CurrentSource = L;
32879 return InitElem<PT_Uint32>(S, OpPC, A0);
32880}
32881bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32882 if (!isActive()) return true;
32883 CurrentSource = L;
32884 return InitElem<PT_Sint64>(S, OpPC, A0);
32885}
32886bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32887 if (!isActive()) return true;
32888 CurrentSource = L;
32889 return InitElem<PT_Uint64>(S, OpPC, A0);
32890}
32891bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32892 if (!isActive()) return true;
32893 CurrentSource = L;
32894 return InitElem<PT_IntAP>(S, OpPC, A0);
32895}
32896bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32897 if (!isActive()) return true;
32898 CurrentSource = L;
32899 return InitElem<PT_IntAPS>(S, OpPC, A0);
32900}
32901bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32902 if (!isActive()) return true;
32903 CurrentSource = L;
32904 return InitElem<PT_Bool>(S, OpPC, A0);
32905}
32906bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32907 if (!isActive()) return true;
32908 CurrentSource = L;
32909 return InitElem<PT_FixedPoint>(S, OpPC, A0);
32910}
32911bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32912 if (!isActive()) return true;
32913 CurrentSource = L;
32914 return InitElem<PT_Ptr>(S, OpPC, A0);
32915}
32916bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32917 if (!isActive()) return true;
32918 CurrentSource = L;
32919 return InitElem<PT_MemberPtr>(S, OpPC, A0);
32920}
32921bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32922 if (!isActive()) return true;
32923 CurrentSource = L;
32924 return InitElem<PT_Float>(S, OpPC, A0);
32925}
32926#endif
32927#ifdef GET_OPCODE_NAMES
32928OP_InitElemPopSint8,
32929OP_InitElemPopUint8,
32930OP_InitElemPopSint16,
32931OP_InitElemPopUint16,
32932OP_InitElemPopSint32,
32933OP_InitElemPopUint32,
32934OP_InitElemPopSint64,
32935OP_InitElemPopUint64,
32936OP_InitElemPopIntAP,
32937OP_InitElemPopIntAPS,
32938OP_InitElemPopBool,
32939OP_InitElemPopFixedPoint,
32940OP_InitElemPopPtr,
32941OP_InitElemPopMemberPtr,
32942OP_InitElemPopFloat,
32943#endif
32944#ifdef GET_INTERPFN_LIST
32945&Interp_InitElemPopSint8,
32946&Interp_InitElemPopUint8,
32947&Interp_InitElemPopSint16,
32948&Interp_InitElemPopUint16,
32949&Interp_InitElemPopSint32,
32950&Interp_InitElemPopUint32,
32951&Interp_InitElemPopSint64,
32952&Interp_InitElemPopUint64,
32953&Interp_InitElemPopIntAP,
32954&Interp_InitElemPopIntAPS,
32955&Interp_InitElemPopBool,
32956&Interp_InitElemPopFixedPoint,
32957&Interp_InitElemPopPtr,
32958&Interp_InitElemPopMemberPtr,
32959&Interp_InitElemPopFloat,
32960#endif
32961#ifdef GET_INTERPFN_DISPATCHERS
32962PRESERVE_NONE
32963static bool Interp_InitElemPopSint8(InterpState &S, CodePtr &PC) {
32964 {
32965 CodePtr OpPC = PC;
32966 const auto V0 = ReadArg<uint32_t>(S, PC);
32967 if (!InitElemPop<PT_Sint8>(S, OpPC, V0))
32968 return false;
32969 }
32970#if USE_TAILCALLS
32971 MUSTTAIL return InterpNext(S, PC);
32972#else
32973 return true;
32974#endif
32975}
32976PRESERVE_NONE
32977static bool Interp_InitElemPopUint8(InterpState &S, CodePtr &PC) {
32978 {
32979 CodePtr OpPC = PC;
32980 const auto V0 = ReadArg<uint32_t>(S, PC);
32981 if (!InitElemPop<PT_Uint8>(S, OpPC, V0))
32982 return false;
32983 }
32984#if USE_TAILCALLS
32985 MUSTTAIL return InterpNext(S, PC);
32986#else
32987 return true;
32988#endif
32989}
32990PRESERVE_NONE
32991static bool Interp_InitElemPopSint16(InterpState &S, CodePtr &PC) {
32992 {
32993 CodePtr OpPC = PC;
32994 const auto V0 = ReadArg<uint32_t>(S, PC);
32995 if (!InitElemPop<PT_Sint16>(S, OpPC, V0))
32996 return false;
32997 }
32998#if USE_TAILCALLS
32999 MUSTTAIL return InterpNext(S, PC);
33000#else
33001 return true;
33002#endif
33003}
33004PRESERVE_NONE
33005static bool Interp_InitElemPopUint16(InterpState &S, CodePtr &PC) {
33006 {
33007 CodePtr OpPC = PC;
33008 const auto V0 = ReadArg<uint32_t>(S, PC);
33009 if (!InitElemPop<PT_Uint16>(S, OpPC, V0))
33010 return false;
33011 }
33012#if USE_TAILCALLS
33013 MUSTTAIL return InterpNext(S, PC);
33014#else
33015 return true;
33016#endif
33017}
33018PRESERVE_NONE
33019static bool Interp_InitElemPopSint32(InterpState &S, CodePtr &PC) {
33020 {
33021 CodePtr OpPC = PC;
33022 const auto V0 = ReadArg<uint32_t>(S, PC);
33023 if (!InitElemPop<PT_Sint32>(S, OpPC, V0))
33024 return false;
33025 }
33026#if USE_TAILCALLS
33027 MUSTTAIL return InterpNext(S, PC);
33028#else
33029 return true;
33030#endif
33031}
33032PRESERVE_NONE
33033static bool Interp_InitElemPopUint32(InterpState &S, CodePtr &PC) {
33034 {
33035 CodePtr OpPC = PC;
33036 const auto V0 = ReadArg<uint32_t>(S, PC);
33037 if (!InitElemPop<PT_Uint32>(S, OpPC, V0))
33038 return false;
33039 }
33040#if USE_TAILCALLS
33041 MUSTTAIL return InterpNext(S, PC);
33042#else
33043 return true;
33044#endif
33045}
33046PRESERVE_NONE
33047static bool Interp_InitElemPopSint64(InterpState &S, CodePtr &PC) {
33048 {
33049 CodePtr OpPC = PC;
33050 const auto V0 = ReadArg<uint32_t>(S, PC);
33051 if (!InitElemPop<PT_Sint64>(S, OpPC, V0))
33052 return false;
33053 }
33054#if USE_TAILCALLS
33055 MUSTTAIL return InterpNext(S, PC);
33056#else
33057 return true;
33058#endif
33059}
33060PRESERVE_NONE
33061static bool Interp_InitElemPopUint64(InterpState &S, CodePtr &PC) {
33062 {
33063 CodePtr OpPC = PC;
33064 const auto V0 = ReadArg<uint32_t>(S, PC);
33065 if (!InitElemPop<PT_Uint64>(S, OpPC, V0))
33066 return false;
33067 }
33068#if USE_TAILCALLS
33069 MUSTTAIL return InterpNext(S, PC);
33070#else
33071 return true;
33072#endif
33073}
33074PRESERVE_NONE
33075static bool Interp_InitElemPopIntAP(InterpState &S, CodePtr &PC) {
33076 {
33077 CodePtr OpPC = PC;
33078 const auto V0 = ReadArg<uint32_t>(S, PC);
33079 if (!InitElemPop<PT_IntAP>(S, OpPC, V0))
33080 return false;
33081 }
33082#if USE_TAILCALLS
33083 MUSTTAIL return InterpNext(S, PC);
33084#else
33085 return true;
33086#endif
33087}
33088PRESERVE_NONE
33089static bool Interp_InitElemPopIntAPS(InterpState &S, CodePtr &PC) {
33090 {
33091 CodePtr OpPC = PC;
33092 const auto V0 = ReadArg<uint32_t>(S, PC);
33093 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0))
33094 return false;
33095 }
33096#if USE_TAILCALLS
33097 MUSTTAIL return InterpNext(S, PC);
33098#else
33099 return true;
33100#endif
33101}
33102PRESERVE_NONE
33103static bool Interp_InitElemPopBool(InterpState &S, CodePtr &PC) {
33104 {
33105 CodePtr OpPC = PC;
33106 const auto V0 = ReadArg<uint32_t>(S, PC);
33107 if (!InitElemPop<PT_Bool>(S, OpPC, V0))
33108 return false;
33109 }
33110#if USE_TAILCALLS
33111 MUSTTAIL return InterpNext(S, PC);
33112#else
33113 return true;
33114#endif
33115}
33116PRESERVE_NONE
33117static bool Interp_InitElemPopFixedPoint(InterpState &S, CodePtr &PC) {
33118 {
33119 CodePtr OpPC = PC;
33120 const auto V0 = ReadArg<uint32_t>(S, PC);
33121 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0))
33122 return false;
33123 }
33124#if USE_TAILCALLS
33125 MUSTTAIL return InterpNext(S, PC);
33126#else
33127 return true;
33128#endif
33129}
33130PRESERVE_NONE
33131static bool Interp_InitElemPopPtr(InterpState &S, CodePtr &PC) {
33132 {
33133 CodePtr OpPC = PC;
33134 const auto V0 = ReadArg<uint32_t>(S, PC);
33135 if (!InitElemPop<PT_Ptr>(S, OpPC, V0))
33136 return false;
33137 }
33138#if USE_TAILCALLS
33139 MUSTTAIL return InterpNext(S, PC);
33140#else
33141 return true;
33142#endif
33143}
33144PRESERVE_NONE
33145static bool Interp_InitElemPopMemberPtr(InterpState &S, CodePtr &PC) {
33146 {
33147 CodePtr OpPC = PC;
33148 const auto V0 = ReadArg<uint32_t>(S, PC);
33149 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0))
33150 return false;
33151 }
33152#if USE_TAILCALLS
33153 MUSTTAIL return InterpNext(S, PC);
33154#else
33155 return true;
33156#endif
33157}
33158PRESERVE_NONE
33159static bool Interp_InitElemPopFloat(InterpState &S, CodePtr &PC) {
33160 {
33161 CodePtr OpPC = PC;
33162 const auto V0 = ReadArg<uint32_t>(S, PC);
33163 if (!InitElemPop<PT_Float>(S, OpPC, V0))
33164 return false;
33165 }
33166#if USE_TAILCALLS
33167 MUSTTAIL return InterpNext(S, PC);
33168#else
33169 return true;
33170#endif
33171}
33172#endif
33173#ifdef GET_DISASM
33174case OP_InitElemPopSint8:
33175 Text.Op = PrintName("InitElemPopSint8");
33176 Text.Args.push_back(printArg<uint32_t>(P, PC));
33177 break;
33178case OP_InitElemPopUint8:
33179 Text.Op = PrintName("InitElemPopUint8");
33180 Text.Args.push_back(printArg<uint32_t>(P, PC));
33181 break;
33182case OP_InitElemPopSint16:
33183 Text.Op = PrintName("InitElemPopSint16");
33184 Text.Args.push_back(printArg<uint32_t>(P, PC));
33185 break;
33186case OP_InitElemPopUint16:
33187 Text.Op = PrintName("InitElemPopUint16");
33188 Text.Args.push_back(printArg<uint32_t>(P, PC));
33189 break;
33190case OP_InitElemPopSint32:
33191 Text.Op = PrintName("InitElemPopSint32");
33192 Text.Args.push_back(printArg<uint32_t>(P, PC));
33193 break;
33194case OP_InitElemPopUint32:
33195 Text.Op = PrintName("InitElemPopUint32");
33196 Text.Args.push_back(printArg<uint32_t>(P, PC));
33197 break;
33198case OP_InitElemPopSint64:
33199 Text.Op = PrintName("InitElemPopSint64");
33200 Text.Args.push_back(printArg<uint32_t>(P, PC));
33201 break;
33202case OP_InitElemPopUint64:
33203 Text.Op = PrintName("InitElemPopUint64");
33204 Text.Args.push_back(printArg<uint32_t>(P, PC));
33205 break;
33206case OP_InitElemPopIntAP:
33207 Text.Op = PrintName("InitElemPopIntAP");
33208 Text.Args.push_back(printArg<uint32_t>(P, PC));
33209 break;
33210case OP_InitElemPopIntAPS:
33211 Text.Op = PrintName("InitElemPopIntAPS");
33212 Text.Args.push_back(printArg<uint32_t>(P, PC));
33213 break;
33214case OP_InitElemPopBool:
33215 Text.Op = PrintName("InitElemPopBool");
33216 Text.Args.push_back(printArg<uint32_t>(P, PC));
33217 break;
33218case OP_InitElemPopFixedPoint:
33219 Text.Op = PrintName("InitElemPopFixedPoint");
33220 Text.Args.push_back(printArg<uint32_t>(P, PC));
33221 break;
33222case OP_InitElemPopPtr:
33223 Text.Op = PrintName("InitElemPopPtr");
33224 Text.Args.push_back(printArg<uint32_t>(P, PC));
33225 break;
33226case OP_InitElemPopMemberPtr:
33227 Text.Op = PrintName("InitElemPopMemberPtr");
33228 Text.Args.push_back(printArg<uint32_t>(P, PC));
33229 break;
33230case OP_InitElemPopFloat:
33231 Text.Op = PrintName("InitElemPopFloat");
33232 Text.Args.push_back(printArg<uint32_t>(P, PC));
33233 break;
33234#endif
33235#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33236bool emitInitElemPopSint8( uint32_t , SourceInfo);
33237bool emitInitElemPopUint8( uint32_t , SourceInfo);
33238bool emitInitElemPopSint16( uint32_t , SourceInfo);
33239bool emitInitElemPopUint16( uint32_t , SourceInfo);
33240bool emitInitElemPopSint32( uint32_t , SourceInfo);
33241bool emitInitElemPopUint32( uint32_t , SourceInfo);
33242bool emitInitElemPopSint64( uint32_t , SourceInfo);
33243bool emitInitElemPopUint64( uint32_t , SourceInfo);
33244bool emitInitElemPopIntAP( uint32_t , SourceInfo);
33245bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
33246bool emitInitElemPopBool( uint32_t , SourceInfo);
33247bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
33248bool emitInitElemPopPtr( uint32_t , SourceInfo);
33249bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
33250bool emitInitElemPopFloat( uint32_t , SourceInfo);
33251#endif
33252#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33253[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
33254#endif
33255#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33256bool
33257#if defined(GET_EVAL_IMPL)
33258EvalEmitter
33259#else
33260ByteCodeEmitter
33261#endif
33262::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
33263 switch (T0) {
33264 case PT_Sint8:
33265 return emitInitElemPopSint8(A0, I);
33266 case PT_Uint8:
33267 return emitInitElemPopUint8(A0, I);
33268 case PT_Sint16:
33269 return emitInitElemPopSint16(A0, I);
33270 case PT_Uint16:
33271 return emitInitElemPopUint16(A0, I);
33272 case PT_Sint32:
33273 return emitInitElemPopSint32(A0, I);
33274 case PT_Uint32:
33275 return emitInitElemPopUint32(A0, I);
33276 case PT_Sint64:
33277 return emitInitElemPopSint64(A0, I);
33278 case PT_Uint64:
33279 return emitInitElemPopUint64(A0, I);
33280 case PT_IntAP:
33281 return emitInitElemPopIntAP(A0, I);
33282 case PT_IntAPS:
33283 return emitInitElemPopIntAPS(A0, I);
33284 case PT_Bool:
33285 return emitInitElemPopBool(A0, I);
33286 case PT_FixedPoint:
33287 return emitInitElemPopFixedPoint(A0, I);
33288 case PT_Ptr:
33289 return emitInitElemPopPtr(A0, I);
33290 case PT_MemberPtr:
33291 return emitInitElemPopMemberPtr(A0, I);
33292 case PT_Float:
33293 return emitInitElemPopFloat(A0, I);
33294 }
33295 llvm_unreachable("invalid enum value");
33296}
33297#endif
33298#ifdef GET_LINK_IMPL
33299bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
33300 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
33301}
33302bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
33303 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
33304}
33305bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
33306 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
33307}
33308bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
33309 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
33310}
33311bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
33312 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
33313}
33314bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
33315 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
33316}
33317bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
33318 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
33319}
33320bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
33321 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
33322}
33323bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
33324 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
33325}
33326bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
33327 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
33328}
33329bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
33330 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
33331}
33332bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
33333 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
33334}
33335bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
33336 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
33337}
33338bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
33339 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
33340}
33341bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
33342 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
33343}
33344#endif
33345#ifdef GET_EVAL_IMPL
33346bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
33347 if (!isActive()) return true;
33348 CurrentSource = L;
33349 return InitElemPop<PT_Sint8>(S, OpPC, A0);
33350}
33351bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
33352 if (!isActive()) return true;
33353 CurrentSource = L;
33354 return InitElemPop<PT_Uint8>(S, OpPC, A0);
33355}
33356bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
33357 if (!isActive()) return true;
33358 CurrentSource = L;
33359 return InitElemPop<PT_Sint16>(S, OpPC, A0);
33360}
33361bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
33362 if (!isActive()) return true;
33363 CurrentSource = L;
33364 return InitElemPop<PT_Uint16>(S, OpPC, A0);
33365}
33366bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
33367 if (!isActive()) return true;
33368 CurrentSource = L;
33369 return InitElemPop<PT_Sint32>(S, OpPC, A0);
33370}
33371bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
33372 if (!isActive()) return true;
33373 CurrentSource = L;
33374 return InitElemPop<PT_Uint32>(S, OpPC, A0);
33375}
33376bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
33377 if (!isActive()) return true;
33378 CurrentSource = L;
33379 return InitElemPop<PT_Sint64>(S, OpPC, A0);
33380}
33381bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
33382 if (!isActive()) return true;
33383 CurrentSource = L;
33384 return InitElemPop<PT_Uint64>(S, OpPC, A0);
33385}
33386bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
33387 if (!isActive()) return true;
33388 CurrentSource = L;
33389 return InitElemPop<PT_IntAP>(S, OpPC, A0);
33390}
33391bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
33392 if (!isActive()) return true;
33393 CurrentSource = L;
33394 return InitElemPop<PT_IntAPS>(S, OpPC, A0);
33395}
33396bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
33397 if (!isActive()) return true;
33398 CurrentSource = L;
33399 return InitElemPop<PT_Bool>(S, OpPC, A0);
33400}
33401bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
33402 if (!isActive()) return true;
33403 CurrentSource = L;
33404 return InitElemPop<PT_FixedPoint>(S, OpPC, A0);
33405}
33406bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
33407 if (!isActive()) return true;
33408 CurrentSource = L;
33409 return InitElemPop<PT_Ptr>(S, OpPC, A0);
33410}
33411bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
33412 if (!isActive()) return true;
33413 CurrentSource = L;
33414 return InitElemPop<PT_MemberPtr>(S, OpPC, A0);
33415}
33416bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
33417 if (!isActive()) return true;
33418 CurrentSource = L;
33419 return InitElemPop<PT_Float>(S, OpPC, A0);
33420}
33421#endif
33422#ifdef GET_OPCODE_NAMES
33423OP_InitFieldSint8,
33424OP_InitFieldUint8,
33425OP_InitFieldSint16,
33426OP_InitFieldUint16,
33427OP_InitFieldSint32,
33428OP_InitFieldUint32,
33429OP_InitFieldSint64,
33430OP_InitFieldUint64,
33431OP_InitFieldIntAP,
33432OP_InitFieldIntAPS,
33433OP_InitFieldBool,
33434OP_InitFieldFixedPoint,
33435OP_InitFieldPtr,
33436OP_InitFieldMemberPtr,
33437OP_InitFieldFloat,
33438#endif
33439#ifdef GET_INTERPFN_LIST
33440&Interp_InitFieldSint8,
33441&Interp_InitFieldUint8,
33442&Interp_InitFieldSint16,
33443&Interp_InitFieldUint16,
33444&Interp_InitFieldSint32,
33445&Interp_InitFieldUint32,
33446&Interp_InitFieldSint64,
33447&Interp_InitFieldUint64,
33448&Interp_InitFieldIntAP,
33449&Interp_InitFieldIntAPS,
33450&Interp_InitFieldBool,
33451&Interp_InitFieldFixedPoint,
33452&Interp_InitFieldPtr,
33453&Interp_InitFieldMemberPtr,
33454&Interp_InitFieldFloat,
33455#endif
33456#ifdef GET_INTERPFN_DISPATCHERS
33457PRESERVE_NONE
33458static bool Interp_InitFieldSint8(InterpState &S, CodePtr &PC) {
33459 {
33460 CodePtr OpPC = PC;
33461 const auto V0 = ReadArg<uint32_t>(S, PC);
33462 if (!InitField<PT_Sint8>(S, OpPC, V0))
33463 return false;
33464 }
33465#if USE_TAILCALLS
33466 MUSTTAIL return InterpNext(S, PC);
33467#else
33468 return true;
33469#endif
33470}
33471PRESERVE_NONE
33472static bool Interp_InitFieldUint8(InterpState &S, CodePtr &PC) {
33473 {
33474 CodePtr OpPC = PC;
33475 const auto V0 = ReadArg<uint32_t>(S, PC);
33476 if (!InitField<PT_Uint8>(S, OpPC, V0))
33477 return false;
33478 }
33479#if USE_TAILCALLS
33480 MUSTTAIL return InterpNext(S, PC);
33481#else
33482 return true;
33483#endif
33484}
33485PRESERVE_NONE
33486static bool Interp_InitFieldSint16(InterpState &S, CodePtr &PC) {
33487 {
33488 CodePtr OpPC = PC;
33489 const auto V0 = ReadArg<uint32_t>(S, PC);
33490 if (!InitField<PT_Sint16>(S, OpPC, V0))
33491 return false;
33492 }
33493#if USE_TAILCALLS
33494 MUSTTAIL return InterpNext(S, PC);
33495#else
33496 return true;
33497#endif
33498}
33499PRESERVE_NONE
33500static bool Interp_InitFieldUint16(InterpState &S, CodePtr &PC) {
33501 {
33502 CodePtr OpPC = PC;
33503 const auto V0 = ReadArg<uint32_t>(S, PC);
33504 if (!InitField<PT_Uint16>(S, OpPC, V0))
33505 return false;
33506 }
33507#if USE_TAILCALLS
33508 MUSTTAIL return InterpNext(S, PC);
33509#else
33510 return true;
33511#endif
33512}
33513PRESERVE_NONE
33514static bool Interp_InitFieldSint32(InterpState &S, CodePtr &PC) {
33515 {
33516 CodePtr OpPC = PC;
33517 const auto V0 = ReadArg<uint32_t>(S, PC);
33518 if (!InitField<PT_Sint32>(S, OpPC, V0))
33519 return false;
33520 }
33521#if USE_TAILCALLS
33522 MUSTTAIL return InterpNext(S, PC);
33523#else
33524 return true;
33525#endif
33526}
33527PRESERVE_NONE
33528static bool Interp_InitFieldUint32(InterpState &S, CodePtr &PC) {
33529 {
33530 CodePtr OpPC = PC;
33531 const auto V0 = ReadArg<uint32_t>(S, PC);
33532 if (!InitField<PT_Uint32>(S, OpPC, V0))
33533 return false;
33534 }
33535#if USE_TAILCALLS
33536 MUSTTAIL return InterpNext(S, PC);
33537#else
33538 return true;
33539#endif
33540}
33541PRESERVE_NONE
33542static bool Interp_InitFieldSint64(InterpState &S, CodePtr &PC) {
33543 {
33544 CodePtr OpPC = PC;
33545 const auto V0 = ReadArg<uint32_t>(S, PC);
33546 if (!InitField<PT_Sint64>(S, OpPC, V0))
33547 return false;
33548 }
33549#if USE_TAILCALLS
33550 MUSTTAIL return InterpNext(S, PC);
33551#else
33552 return true;
33553#endif
33554}
33555PRESERVE_NONE
33556static bool Interp_InitFieldUint64(InterpState &S, CodePtr &PC) {
33557 {
33558 CodePtr OpPC = PC;
33559 const auto V0 = ReadArg<uint32_t>(S, PC);
33560 if (!InitField<PT_Uint64>(S, OpPC, V0))
33561 return false;
33562 }
33563#if USE_TAILCALLS
33564 MUSTTAIL return InterpNext(S, PC);
33565#else
33566 return true;
33567#endif
33568}
33569PRESERVE_NONE
33570static bool Interp_InitFieldIntAP(InterpState &S, CodePtr &PC) {
33571 {
33572 CodePtr OpPC = PC;
33573 const auto V0 = ReadArg<uint32_t>(S, PC);
33574 if (!InitField<PT_IntAP>(S, OpPC, V0))
33575 return false;
33576 }
33577#if USE_TAILCALLS
33578 MUSTTAIL return InterpNext(S, PC);
33579#else
33580 return true;
33581#endif
33582}
33583PRESERVE_NONE
33584static bool Interp_InitFieldIntAPS(InterpState &S, CodePtr &PC) {
33585 {
33586 CodePtr OpPC = PC;
33587 const auto V0 = ReadArg<uint32_t>(S, PC);
33588 if (!InitField<PT_IntAPS>(S, OpPC, V0))
33589 return false;
33590 }
33591#if USE_TAILCALLS
33592 MUSTTAIL return InterpNext(S, PC);
33593#else
33594 return true;
33595#endif
33596}
33597PRESERVE_NONE
33598static bool Interp_InitFieldBool(InterpState &S, CodePtr &PC) {
33599 {
33600 CodePtr OpPC = PC;
33601 const auto V0 = ReadArg<uint32_t>(S, PC);
33602 if (!InitField<PT_Bool>(S, OpPC, V0))
33603 return false;
33604 }
33605#if USE_TAILCALLS
33606 MUSTTAIL return InterpNext(S, PC);
33607#else
33608 return true;
33609#endif
33610}
33611PRESERVE_NONE
33612static bool Interp_InitFieldFixedPoint(InterpState &S, CodePtr &PC) {
33613 {
33614 CodePtr OpPC = PC;
33615 const auto V0 = ReadArg<uint32_t>(S, PC);
33616 if (!InitField<PT_FixedPoint>(S, OpPC, V0))
33617 return false;
33618 }
33619#if USE_TAILCALLS
33620 MUSTTAIL return InterpNext(S, PC);
33621#else
33622 return true;
33623#endif
33624}
33625PRESERVE_NONE
33626static bool Interp_InitFieldPtr(InterpState &S, CodePtr &PC) {
33627 {
33628 CodePtr OpPC = PC;
33629 const auto V0 = ReadArg<uint32_t>(S, PC);
33630 if (!InitField<PT_Ptr>(S, OpPC, V0))
33631 return false;
33632 }
33633#if USE_TAILCALLS
33634 MUSTTAIL return InterpNext(S, PC);
33635#else
33636 return true;
33637#endif
33638}
33639PRESERVE_NONE
33640static bool Interp_InitFieldMemberPtr(InterpState &S, CodePtr &PC) {
33641 {
33642 CodePtr OpPC = PC;
33643 const auto V0 = ReadArg<uint32_t>(S, PC);
33644 if (!InitField<PT_MemberPtr>(S, OpPC, V0))
33645 return false;
33646 }
33647#if USE_TAILCALLS
33648 MUSTTAIL return InterpNext(S, PC);
33649#else
33650 return true;
33651#endif
33652}
33653PRESERVE_NONE
33654static bool Interp_InitFieldFloat(InterpState &S, CodePtr &PC) {
33655 {
33656 CodePtr OpPC = PC;
33657 const auto V0 = ReadArg<uint32_t>(S, PC);
33658 if (!InitField<PT_Float>(S, OpPC, V0))
33659 return false;
33660 }
33661#if USE_TAILCALLS
33662 MUSTTAIL return InterpNext(S, PC);
33663#else
33664 return true;
33665#endif
33666}
33667#endif
33668#ifdef GET_DISASM
33669case OP_InitFieldSint8:
33670 Text.Op = PrintName("InitFieldSint8");
33671 Text.Args.push_back(printArg<uint32_t>(P, PC));
33672 break;
33673case OP_InitFieldUint8:
33674 Text.Op = PrintName("InitFieldUint8");
33675 Text.Args.push_back(printArg<uint32_t>(P, PC));
33676 break;
33677case OP_InitFieldSint16:
33678 Text.Op = PrintName("InitFieldSint16");
33679 Text.Args.push_back(printArg<uint32_t>(P, PC));
33680 break;
33681case OP_InitFieldUint16:
33682 Text.Op = PrintName("InitFieldUint16");
33683 Text.Args.push_back(printArg<uint32_t>(P, PC));
33684 break;
33685case OP_InitFieldSint32:
33686 Text.Op = PrintName("InitFieldSint32");
33687 Text.Args.push_back(printArg<uint32_t>(P, PC));
33688 break;
33689case OP_InitFieldUint32:
33690 Text.Op = PrintName("InitFieldUint32");
33691 Text.Args.push_back(printArg<uint32_t>(P, PC));
33692 break;
33693case OP_InitFieldSint64:
33694 Text.Op = PrintName("InitFieldSint64");
33695 Text.Args.push_back(printArg<uint32_t>(P, PC));
33696 break;
33697case OP_InitFieldUint64:
33698 Text.Op = PrintName("InitFieldUint64");
33699 Text.Args.push_back(printArg<uint32_t>(P, PC));
33700 break;
33701case OP_InitFieldIntAP:
33702 Text.Op = PrintName("InitFieldIntAP");
33703 Text.Args.push_back(printArg<uint32_t>(P, PC));
33704 break;
33705case OP_InitFieldIntAPS:
33706 Text.Op = PrintName("InitFieldIntAPS");
33707 Text.Args.push_back(printArg<uint32_t>(P, PC));
33708 break;
33709case OP_InitFieldBool:
33710 Text.Op = PrintName("InitFieldBool");
33711 Text.Args.push_back(printArg<uint32_t>(P, PC));
33712 break;
33713case OP_InitFieldFixedPoint:
33714 Text.Op = PrintName("InitFieldFixedPoint");
33715 Text.Args.push_back(printArg<uint32_t>(P, PC));
33716 break;
33717case OP_InitFieldPtr:
33718 Text.Op = PrintName("InitFieldPtr");
33719 Text.Args.push_back(printArg<uint32_t>(P, PC));
33720 break;
33721case OP_InitFieldMemberPtr:
33722 Text.Op = PrintName("InitFieldMemberPtr");
33723 Text.Args.push_back(printArg<uint32_t>(P, PC));
33724 break;
33725case OP_InitFieldFloat:
33726 Text.Op = PrintName("InitFieldFloat");
33727 Text.Args.push_back(printArg<uint32_t>(P, PC));
33728 break;
33729#endif
33730#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33731bool emitInitFieldSint8( uint32_t , SourceInfo);
33732bool emitInitFieldUint8( uint32_t , SourceInfo);
33733bool emitInitFieldSint16( uint32_t , SourceInfo);
33734bool emitInitFieldUint16( uint32_t , SourceInfo);
33735bool emitInitFieldSint32( uint32_t , SourceInfo);
33736bool emitInitFieldUint32( uint32_t , SourceInfo);
33737bool emitInitFieldSint64( uint32_t , SourceInfo);
33738bool emitInitFieldUint64( uint32_t , SourceInfo);
33739bool emitInitFieldIntAP( uint32_t , SourceInfo);
33740bool emitInitFieldIntAPS( uint32_t , SourceInfo);
33741bool emitInitFieldBool( uint32_t , SourceInfo);
33742bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
33743bool emitInitFieldPtr( uint32_t , SourceInfo);
33744bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
33745bool emitInitFieldFloat( uint32_t , SourceInfo);
33746#endif
33747#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33748[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
33749#endif
33750#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33751bool
33752#if defined(GET_EVAL_IMPL)
33753EvalEmitter
33754#else
33755ByteCodeEmitter
33756#endif
33757::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
33758 switch (T0) {
33759 case PT_Sint8:
33760 return emitInitFieldSint8(A0, I);
33761 case PT_Uint8:
33762 return emitInitFieldUint8(A0, I);
33763 case PT_Sint16:
33764 return emitInitFieldSint16(A0, I);
33765 case PT_Uint16:
33766 return emitInitFieldUint16(A0, I);
33767 case PT_Sint32:
33768 return emitInitFieldSint32(A0, I);
33769 case PT_Uint32:
33770 return emitInitFieldUint32(A0, I);
33771 case PT_Sint64:
33772 return emitInitFieldSint64(A0, I);
33773 case PT_Uint64:
33774 return emitInitFieldUint64(A0, I);
33775 case PT_IntAP:
33776 return emitInitFieldIntAP(A0, I);
33777 case PT_IntAPS:
33778 return emitInitFieldIntAPS(A0, I);
33779 case PT_Bool:
33780 return emitInitFieldBool(A0, I);
33781 case PT_FixedPoint:
33782 return emitInitFieldFixedPoint(A0, I);
33783 case PT_Ptr:
33784 return emitInitFieldPtr(A0, I);
33785 case PT_MemberPtr:
33786 return emitInitFieldMemberPtr(A0, I);
33787 case PT_Float:
33788 return emitInitFieldFloat(A0, I);
33789 }
33790 llvm_unreachable("invalid enum value");
33791}
33792#endif
33793#ifdef GET_LINK_IMPL
33794bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33795 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
33796}
33797bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33798 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
33799}
33800bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33801 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
33802}
33803bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33804 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
33805}
33806bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33807 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
33808}
33809bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33810 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
33811}
33812bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33813 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
33814}
33815bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33816 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
33817}
33818bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33819 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
33820}
33821bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33822 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
33823}
33824bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33825 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
33826}
33827bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33828 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
33829}
33830bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33831 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
33832}
33833bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33834 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
33835}
33836bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33837 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
33838}
33839#endif
33840#ifdef GET_EVAL_IMPL
33841bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33842 if (!isActive()) return true;
33843 CurrentSource = L;
33844 return InitField<PT_Sint8>(S, OpPC, A0);
33845}
33846bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33847 if (!isActive()) return true;
33848 CurrentSource = L;
33849 return InitField<PT_Uint8>(S, OpPC, A0);
33850}
33851bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33852 if (!isActive()) return true;
33853 CurrentSource = L;
33854 return InitField<PT_Sint16>(S, OpPC, A0);
33855}
33856bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33857 if (!isActive()) return true;
33858 CurrentSource = L;
33859 return InitField<PT_Uint16>(S, OpPC, A0);
33860}
33861bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33862 if (!isActive()) return true;
33863 CurrentSource = L;
33864 return InitField<PT_Sint32>(S, OpPC, A0);
33865}
33866bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33867 if (!isActive()) return true;
33868 CurrentSource = L;
33869 return InitField<PT_Uint32>(S, OpPC, A0);
33870}
33871bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33872 if (!isActive()) return true;
33873 CurrentSource = L;
33874 return InitField<PT_Sint64>(S, OpPC, A0);
33875}
33876bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33877 if (!isActive()) return true;
33878 CurrentSource = L;
33879 return InitField<PT_Uint64>(S, OpPC, A0);
33880}
33881bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33882 if (!isActive()) return true;
33883 CurrentSource = L;
33884 return InitField<PT_IntAP>(S, OpPC, A0);
33885}
33886bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33887 if (!isActive()) return true;
33888 CurrentSource = L;
33889 return InitField<PT_IntAPS>(S, OpPC, A0);
33890}
33891bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33892 if (!isActive()) return true;
33893 CurrentSource = L;
33894 return InitField<PT_Bool>(S, OpPC, A0);
33895}
33896bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33897 if (!isActive()) return true;
33898 CurrentSource = L;
33899 return InitField<PT_FixedPoint>(S, OpPC, A0);
33900}
33901bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33902 if (!isActive()) return true;
33903 CurrentSource = L;
33904 return InitField<PT_Ptr>(S, OpPC, A0);
33905}
33906bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33907 if (!isActive()) return true;
33908 CurrentSource = L;
33909 return InitField<PT_MemberPtr>(S, OpPC, A0);
33910}
33911bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33912 if (!isActive()) return true;
33913 CurrentSource = L;
33914 return InitField<PT_Float>(S, OpPC, A0);
33915}
33916#endif
33917#ifdef GET_OPCODE_NAMES
33918OP_InitFieldActivateSint8,
33919OP_InitFieldActivateUint8,
33920OP_InitFieldActivateSint16,
33921OP_InitFieldActivateUint16,
33922OP_InitFieldActivateSint32,
33923OP_InitFieldActivateUint32,
33924OP_InitFieldActivateSint64,
33925OP_InitFieldActivateUint64,
33926OP_InitFieldActivateIntAP,
33927OP_InitFieldActivateIntAPS,
33928OP_InitFieldActivateBool,
33929OP_InitFieldActivateFixedPoint,
33930OP_InitFieldActivatePtr,
33931OP_InitFieldActivateMemberPtr,
33932OP_InitFieldActivateFloat,
33933#endif
33934#ifdef GET_INTERPFN_LIST
33935&Interp_InitFieldActivateSint8,
33936&Interp_InitFieldActivateUint8,
33937&Interp_InitFieldActivateSint16,
33938&Interp_InitFieldActivateUint16,
33939&Interp_InitFieldActivateSint32,
33940&Interp_InitFieldActivateUint32,
33941&Interp_InitFieldActivateSint64,
33942&Interp_InitFieldActivateUint64,
33943&Interp_InitFieldActivateIntAP,
33944&Interp_InitFieldActivateIntAPS,
33945&Interp_InitFieldActivateBool,
33946&Interp_InitFieldActivateFixedPoint,
33947&Interp_InitFieldActivatePtr,
33948&Interp_InitFieldActivateMemberPtr,
33949&Interp_InitFieldActivateFloat,
33950#endif
33951#ifdef GET_INTERPFN_DISPATCHERS
33952PRESERVE_NONE
33953static bool Interp_InitFieldActivateSint8(InterpState &S, CodePtr &PC) {
33954 {
33955 CodePtr OpPC = PC;
33956 const auto V0 = ReadArg<uint32_t>(S, PC);
33957 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0))
33958 return false;
33959 }
33960#if USE_TAILCALLS
33961 MUSTTAIL return InterpNext(S, PC);
33962#else
33963 return true;
33964#endif
33965}
33966PRESERVE_NONE
33967static bool Interp_InitFieldActivateUint8(InterpState &S, CodePtr &PC) {
33968 {
33969 CodePtr OpPC = PC;
33970 const auto V0 = ReadArg<uint32_t>(S, PC);
33971 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0))
33972 return false;
33973 }
33974#if USE_TAILCALLS
33975 MUSTTAIL return InterpNext(S, PC);
33976#else
33977 return true;
33978#endif
33979}
33980PRESERVE_NONE
33981static bool Interp_InitFieldActivateSint16(InterpState &S, CodePtr &PC) {
33982 {
33983 CodePtr OpPC = PC;
33984 const auto V0 = ReadArg<uint32_t>(S, PC);
33985 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0))
33986 return false;
33987 }
33988#if USE_TAILCALLS
33989 MUSTTAIL return InterpNext(S, PC);
33990#else
33991 return true;
33992#endif
33993}
33994PRESERVE_NONE
33995static bool Interp_InitFieldActivateUint16(InterpState &S, CodePtr &PC) {
33996 {
33997 CodePtr OpPC = PC;
33998 const auto V0 = ReadArg<uint32_t>(S, PC);
33999 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0))
34000 return false;
34001 }
34002#if USE_TAILCALLS
34003 MUSTTAIL return InterpNext(S, PC);
34004#else
34005 return true;
34006#endif
34007}
34008PRESERVE_NONE
34009static bool Interp_InitFieldActivateSint32(InterpState &S, CodePtr &PC) {
34010 {
34011 CodePtr OpPC = PC;
34012 const auto V0 = ReadArg<uint32_t>(S, PC);
34013 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0))
34014 return false;
34015 }
34016#if USE_TAILCALLS
34017 MUSTTAIL return InterpNext(S, PC);
34018#else
34019 return true;
34020#endif
34021}
34022PRESERVE_NONE
34023static bool Interp_InitFieldActivateUint32(InterpState &S, CodePtr &PC) {
34024 {
34025 CodePtr OpPC = PC;
34026 const auto V0 = ReadArg<uint32_t>(S, PC);
34027 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0))
34028 return false;
34029 }
34030#if USE_TAILCALLS
34031 MUSTTAIL return InterpNext(S, PC);
34032#else
34033 return true;
34034#endif
34035}
34036PRESERVE_NONE
34037static bool Interp_InitFieldActivateSint64(InterpState &S, CodePtr &PC) {
34038 {
34039 CodePtr OpPC = PC;
34040 const auto V0 = ReadArg<uint32_t>(S, PC);
34041 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0))
34042 return false;
34043 }
34044#if USE_TAILCALLS
34045 MUSTTAIL return InterpNext(S, PC);
34046#else
34047 return true;
34048#endif
34049}
34050PRESERVE_NONE
34051static bool Interp_InitFieldActivateUint64(InterpState &S, CodePtr &PC) {
34052 {
34053 CodePtr OpPC = PC;
34054 const auto V0 = ReadArg<uint32_t>(S, PC);
34055 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0))
34056 return false;
34057 }
34058#if USE_TAILCALLS
34059 MUSTTAIL return InterpNext(S, PC);
34060#else
34061 return true;
34062#endif
34063}
34064PRESERVE_NONE
34065static bool Interp_InitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
34066 {
34067 CodePtr OpPC = PC;
34068 const auto V0 = ReadArg<uint32_t>(S, PC);
34069 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0))
34070 return false;
34071 }
34072#if USE_TAILCALLS
34073 MUSTTAIL return InterpNext(S, PC);
34074#else
34075 return true;
34076#endif
34077}
34078PRESERVE_NONE
34079static bool Interp_InitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
34080 {
34081 CodePtr OpPC = PC;
34082 const auto V0 = ReadArg<uint32_t>(S, PC);
34083 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0))
34084 return false;
34085 }
34086#if USE_TAILCALLS
34087 MUSTTAIL return InterpNext(S, PC);
34088#else
34089 return true;
34090#endif
34091}
34092PRESERVE_NONE
34093static bool Interp_InitFieldActivateBool(InterpState &S, CodePtr &PC) {
34094 {
34095 CodePtr OpPC = PC;
34096 const auto V0 = ReadArg<uint32_t>(S, PC);
34097 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0))
34098 return false;
34099 }
34100#if USE_TAILCALLS
34101 MUSTTAIL return InterpNext(S, PC);
34102#else
34103 return true;
34104#endif
34105}
34106PRESERVE_NONE
34107static bool Interp_InitFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
34108 {
34109 CodePtr OpPC = PC;
34110 const auto V0 = ReadArg<uint32_t>(S, PC);
34111 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0))
34112 return false;
34113 }
34114#if USE_TAILCALLS
34115 MUSTTAIL return InterpNext(S, PC);
34116#else
34117 return true;
34118#endif
34119}
34120PRESERVE_NONE
34121static bool Interp_InitFieldActivatePtr(InterpState &S, CodePtr &PC) {
34122 {
34123 CodePtr OpPC = PC;
34124 const auto V0 = ReadArg<uint32_t>(S, PC);
34125 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0))
34126 return false;
34127 }
34128#if USE_TAILCALLS
34129 MUSTTAIL return InterpNext(S, PC);
34130#else
34131 return true;
34132#endif
34133}
34134PRESERVE_NONE
34135static bool Interp_InitFieldActivateMemberPtr(InterpState &S, CodePtr &PC) {
34136 {
34137 CodePtr OpPC = PC;
34138 const auto V0 = ReadArg<uint32_t>(S, PC);
34139 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0))
34140 return false;
34141 }
34142#if USE_TAILCALLS
34143 MUSTTAIL return InterpNext(S, PC);
34144#else
34145 return true;
34146#endif
34147}
34148PRESERVE_NONE
34149static bool Interp_InitFieldActivateFloat(InterpState &S, CodePtr &PC) {
34150 {
34151 CodePtr OpPC = PC;
34152 const auto V0 = ReadArg<uint32_t>(S, PC);
34153 if (!InitFieldActivate<PT_Float>(S, OpPC, V0))
34154 return false;
34155 }
34156#if USE_TAILCALLS
34157 MUSTTAIL return InterpNext(S, PC);
34158#else
34159 return true;
34160#endif
34161}
34162#endif
34163#ifdef GET_DISASM
34164case OP_InitFieldActivateSint8:
34165 Text.Op = PrintName("InitFieldActivateSint8");
34166 Text.Args.push_back(printArg<uint32_t>(P, PC));
34167 break;
34168case OP_InitFieldActivateUint8:
34169 Text.Op = PrintName("InitFieldActivateUint8");
34170 Text.Args.push_back(printArg<uint32_t>(P, PC));
34171 break;
34172case OP_InitFieldActivateSint16:
34173 Text.Op = PrintName("InitFieldActivateSint16");
34174 Text.Args.push_back(printArg<uint32_t>(P, PC));
34175 break;
34176case OP_InitFieldActivateUint16:
34177 Text.Op = PrintName("InitFieldActivateUint16");
34178 Text.Args.push_back(printArg<uint32_t>(P, PC));
34179 break;
34180case OP_InitFieldActivateSint32:
34181 Text.Op = PrintName("InitFieldActivateSint32");
34182 Text.Args.push_back(printArg<uint32_t>(P, PC));
34183 break;
34184case OP_InitFieldActivateUint32:
34185 Text.Op = PrintName("InitFieldActivateUint32");
34186 Text.Args.push_back(printArg<uint32_t>(P, PC));
34187 break;
34188case OP_InitFieldActivateSint64:
34189 Text.Op = PrintName("InitFieldActivateSint64");
34190 Text.Args.push_back(printArg<uint32_t>(P, PC));
34191 break;
34192case OP_InitFieldActivateUint64:
34193 Text.Op = PrintName("InitFieldActivateUint64");
34194 Text.Args.push_back(printArg<uint32_t>(P, PC));
34195 break;
34196case OP_InitFieldActivateIntAP:
34197 Text.Op = PrintName("InitFieldActivateIntAP");
34198 Text.Args.push_back(printArg<uint32_t>(P, PC));
34199 break;
34200case OP_InitFieldActivateIntAPS:
34201 Text.Op = PrintName("InitFieldActivateIntAPS");
34202 Text.Args.push_back(printArg<uint32_t>(P, PC));
34203 break;
34204case OP_InitFieldActivateBool:
34205 Text.Op = PrintName("InitFieldActivateBool");
34206 Text.Args.push_back(printArg<uint32_t>(P, PC));
34207 break;
34208case OP_InitFieldActivateFixedPoint:
34209 Text.Op = PrintName("InitFieldActivateFixedPoint");
34210 Text.Args.push_back(printArg<uint32_t>(P, PC));
34211 break;
34212case OP_InitFieldActivatePtr:
34213 Text.Op = PrintName("InitFieldActivatePtr");
34214 Text.Args.push_back(printArg<uint32_t>(P, PC));
34215 break;
34216case OP_InitFieldActivateMemberPtr:
34217 Text.Op = PrintName("InitFieldActivateMemberPtr");
34218 Text.Args.push_back(printArg<uint32_t>(P, PC));
34219 break;
34220case OP_InitFieldActivateFloat:
34221 Text.Op = PrintName("InitFieldActivateFloat");
34222 Text.Args.push_back(printArg<uint32_t>(P, PC));
34223 break;
34224#endif
34225#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34226bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
34227bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
34228bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
34229bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
34230bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
34231bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
34232bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
34233bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
34234bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
34235bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
34236bool emitInitFieldActivateBool( uint32_t , SourceInfo);
34237bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
34238bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
34239bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
34240bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
34241#endif
34242#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34243[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
34244#endif
34245#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34246bool
34247#if defined(GET_EVAL_IMPL)
34248EvalEmitter
34249#else
34250ByteCodeEmitter
34251#endif
34252::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
34253 switch (T0) {
34254 case PT_Sint8:
34255 return emitInitFieldActivateSint8(A0, I);
34256 case PT_Uint8:
34257 return emitInitFieldActivateUint8(A0, I);
34258 case PT_Sint16:
34259 return emitInitFieldActivateSint16(A0, I);
34260 case PT_Uint16:
34261 return emitInitFieldActivateUint16(A0, I);
34262 case PT_Sint32:
34263 return emitInitFieldActivateSint32(A0, I);
34264 case PT_Uint32:
34265 return emitInitFieldActivateUint32(A0, I);
34266 case PT_Sint64:
34267 return emitInitFieldActivateSint64(A0, I);
34268 case PT_Uint64:
34269 return emitInitFieldActivateUint64(A0, I);
34270 case PT_IntAP:
34271 return emitInitFieldActivateIntAP(A0, I);
34272 case PT_IntAPS:
34273 return emitInitFieldActivateIntAPS(A0, I);
34274 case PT_Bool:
34275 return emitInitFieldActivateBool(A0, I);
34276 case PT_FixedPoint:
34277 return emitInitFieldActivateFixedPoint(A0, I);
34278 case PT_Ptr:
34279 return emitInitFieldActivatePtr(A0, I);
34280 case PT_MemberPtr:
34281 return emitInitFieldActivateMemberPtr(A0, I);
34282 case PT_Float:
34283 return emitInitFieldActivateFloat(A0, I);
34284 }
34285 llvm_unreachable("invalid enum value");
34286}
34287#endif
34288#ifdef GET_LINK_IMPL
34289bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
34290 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
34291}
34292bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
34293 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
34294}
34295bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
34296 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
34297}
34298bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
34299 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
34300}
34301bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
34302 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
34303}
34304bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
34305 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
34306}
34307bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
34308 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
34309}
34310bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
34311 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
34312}
34313bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
34314 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
34315}
34316bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
34317 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
34318}
34319bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
34320 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
34321}
34322bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
34323 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
34324}
34325bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
34326 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
34327}
34328bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
34329 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
34330}
34331bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
34332 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
34333}
34334#endif
34335#ifdef GET_EVAL_IMPL
34336bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
34337 if (!isActive()) return true;
34338 CurrentSource = L;
34339 return InitFieldActivate<PT_Sint8>(S, OpPC, A0);
34340}
34341bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
34342 if (!isActive()) return true;
34343 CurrentSource = L;
34344 return InitFieldActivate<PT_Uint8>(S, OpPC, A0);
34345}
34346bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
34347 if (!isActive()) return true;
34348 CurrentSource = L;
34349 return InitFieldActivate<PT_Sint16>(S, OpPC, A0);
34350}
34351bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
34352 if (!isActive()) return true;
34353 CurrentSource = L;
34354 return InitFieldActivate<PT_Uint16>(S, OpPC, A0);
34355}
34356bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
34357 if (!isActive()) return true;
34358 CurrentSource = L;
34359 return InitFieldActivate<PT_Sint32>(S, OpPC, A0);
34360}
34361bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
34362 if (!isActive()) return true;
34363 CurrentSource = L;
34364 return InitFieldActivate<PT_Uint32>(S, OpPC, A0);
34365}
34366bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
34367 if (!isActive()) return true;
34368 CurrentSource = L;
34369 return InitFieldActivate<PT_Sint64>(S, OpPC, A0);
34370}
34371bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
34372 if (!isActive()) return true;
34373 CurrentSource = L;
34374 return InitFieldActivate<PT_Uint64>(S, OpPC, A0);
34375}
34376bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
34377 if (!isActive()) return true;
34378 CurrentSource = L;
34379 return InitFieldActivate<PT_IntAP>(S, OpPC, A0);
34380}
34381bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
34382 if (!isActive()) return true;
34383 CurrentSource = L;
34384 return InitFieldActivate<PT_IntAPS>(S, OpPC, A0);
34385}
34386bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
34387 if (!isActive()) return true;
34388 CurrentSource = L;
34389 return InitFieldActivate<PT_Bool>(S, OpPC, A0);
34390}
34391bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
34392 if (!isActive()) return true;
34393 CurrentSource = L;
34394 return InitFieldActivate<PT_FixedPoint>(S, OpPC, A0);
34395}
34396bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
34397 if (!isActive()) return true;
34398 CurrentSource = L;
34399 return InitFieldActivate<PT_Ptr>(S, OpPC, A0);
34400}
34401bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
34402 if (!isActive()) return true;
34403 CurrentSource = L;
34404 return InitFieldActivate<PT_MemberPtr>(S, OpPC, A0);
34405}
34406bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
34407 if (!isActive()) return true;
34408 CurrentSource = L;
34409 return InitFieldActivate<PT_Float>(S, OpPC, A0);
34410}
34411#endif
34412#ifdef GET_OPCODE_NAMES
34413OP_InitGlobalSint8,
34414OP_InitGlobalUint8,
34415OP_InitGlobalSint16,
34416OP_InitGlobalUint16,
34417OP_InitGlobalSint32,
34418OP_InitGlobalUint32,
34419OP_InitGlobalSint64,
34420OP_InitGlobalUint64,
34421OP_InitGlobalIntAP,
34422OP_InitGlobalIntAPS,
34423OP_InitGlobalBool,
34424OP_InitGlobalFixedPoint,
34425OP_InitGlobalPtr,
34426OP_InitGlobalMemberPtr,
34427OP_InitGlobalFloat,
34428#endif
34429#ifdef GET_INTERPFN_LIST
34430&Interp_InitGlobalSint8,
34431&Interp_InitGlobalUint8,
34432&Interp_InitGlobalSint16,
34433&Interp_InitGlobalUint16,
34434&Interp_InitGlobalSint32,
34435&Interp_InitGlobalUint32,
34436&Interp_InitGlobalSint64,
34437&Interp_InitGlobalUint64,
34438&Interp_InitGlobalIntAP,
34439&Interp_InitGlobalIntAPS,
34440&Interp_InitGlobalBool,
34441&Interp_InitGlobalFixedPoint,
34442&Interp_InitGlobalPtr,
34443&Interp_InitGlobalMemberPtr,
34444&Interp_InitGlobalFloat,
34445#endif
34446#ifdef GET_INTERPFN_DISPATCHERS
34447PRESERVE_NONE
34448static bool Interp_InitGlobalSint8(InterpState &S, CodePtr &PC) {
34449 {
34450 CodePtr OpPC = PC;
34451 const auto V0 = ReadArg<uint32_t>(S, PC);
34452 if (!InitGlobal<PT_Sint8>(S, OpPC, V0))
34453 return false;
34454 }
34455#if USE_TAILCALLS
34456 MUSTTAIL return InterpNext(S, PC);
34457#else
34458 return true;
34459#endif
34460}
34461PRESERVE_NONE
34462static bool Interp_InitGlobalUint8(InterpState &S, CodePtr &PC) {
34463 {
34464 CodePtr OpPC = PC;
34465 const auto V0 = ReadArg<uint32_t>(S, PC);
34466 if (!InitGlobal<PT_Uint8>(S, OpPC, V0))
34467 return false;
34468 }
34469#if USE_TAILCALLS
34470 MUSTTAIL return InterpNext(S, PC);
34471#else
34472 return true;
34473#endif
34474}
34475PRESERVE_NONE
34476static bool Interp_InitGlobalSint16(InterpState &S, CodePtr &PC) {
34477 {
34478 CodePtr OpPC = PC;
34479 const auto V0 = ReadArg<uint32_t>(S, PC);
34480 if (!InitGlobal<PT_Sint16>(S, OpPC, V0))
34481 return false;
34482 }
34483#if USE_TAILCALLS
34484 MUSTTAIL return InterpNext(S, PC);
34485#else
34486 return true;
34487#endif
34488}
34489PRESERVE_NONE
34490static bool Interp_InitGlobalUint16(InterpState &S, CodePtr &PC) {
34491 {
34492 CodePtr OpPC = PC;
34493 const auto V0 = ReadArg<uint32_t>(S, PC);
34494 if (!InitGlobal<PT_Uint16>(S, OpPC, V0))
34495 return false;
34496 }
34497#if USE_TAILCALLS
34498 MUSTTAIL return InterpNext(S, PC);
34499#else
34500 return true;
34501#endif
34502}
34503PRESERVE_NONE
34504static bool Interp_InitGlobalSint32(InterpState &S, CodePtr &PC) {
34505 {
34506 CodePtr OpPC = PC;
34507 const auto V0 = ReadArg<uint32_t>(S, PC);
34508 if (!InitGlobal<PT_Sint32>(S, OpPC, V0))
34509 return false;
34510 }
34511#if USE_TAILCALLS
34512 MUSTTAIL return InterpNext(S, PC);
34513#else
34514 return true;
34515#endif
34516}
34517PRESERVE_NONE
34518static bool Interp_InitGlobalUint32(InterpState &S, CodePtr &PC) {
34519 {
34520 CodePtr OpPC = PC;
34521 const auto V0 = ReadArg<uint32_t>(S, PC);
34522 if (!InitGlobal<PT_Uint32>(S, OpPC, V0))
34523 return false;
34524 }
34525#if USE_TAILCALLS
34526 MUSTTAIL return InterpNext(S, PC);
34527#else
34528 return true;
34529#endif
34530}
34531PRESERVE_NONE
34532static bool Interp_InitGlobalSint64(InterpState &S, CodePtr &PC) {
34533 {
34534 CodePtr OpPC = PC;
34535 const auto V0 = ReadArg<uint32_t>(S, PC);
34536 if (!InitGlobal<PT_Sint64>(S, OpPC, V0))
34537 return false;
34538 }
34539#if USE_TAILCALLS
34540 MUSTTAIL return InterpNext(S, PC);
34541#else
34542 return true;
34543#endif
34544}
34545PRESERVE_NONE
34546static bool Interp_InitGlobalUint64(InterpState &S, CodePtr &PC) {
34547 {
34548 CodePtr OpPC = PC;
34549 const auto V0 = ReadArg<uint32_t>(S, PC);
34550 if (!InitGlobal<PT_Uint64>(S, OpPC, V0))
34551 return false;
34552 }
34553#if USE_TAILCALLS
34554 MUSTTAIL return InterpNext(S, PC);
34555#else
34556 return true;
34557#endif
34558}
34559PRESERVE_NONE
34560static bool Interp_InitGlobalIntAP(InterpState &S, CodePtr &PC) {
34561 {
34562 CodePtr OpPC = PC;
34563 const auto V0 = ReadArg<uint32_t>(S, PC);
34564 if (!InitGlobal<PT_IntAP>(S, OpPC, V0))
34565 return false;
34566 }
34567#if USE_TAILCALLS
34568 MUSTTAIL return InterpNext(S, PC);
34569#else
34570 return true;
34571#endif
34572}
34573PRESERVE_NONE
34574static bool Interp_InitGlobalIntAPS(InterpState &S, CodePtr &PC) {
34575 {
34576 CodePtr OpPC = PC;
34577 const auto V0 = ReadArg<uint32_t>(S, PC);
34578 if (!InitGlobal<PT_IntAPS>(S, OpPC, V0))
34579 return false;
34580 }
34581#if USE_TAILCALLS
34582 MUSTTAIL return InterpNext(S, PC);
34583#else
34584 return true;
34585#endif
34586}
34587PRESERVE_NONE
34588static bool Interp_InitGlobalBool(InterpState &S, CodePtr &PC) {
34589 {
34590 CodePtr OpPC = PC;
34591 const auto V0 = ReadArg<uint32_t>(S, PC);
34592 if (!InitGlobal<PT_Bool>(S, OpPC, V0))
34593 return false;
34594 }
34595#if USE_TAILCALLS
34596 MUSTTAIL return InterpNext(S, PC);
34597#else
34598 return true;
34599#endif
34600}
34601PRESERVE_NONE
34602static bool Interp_InitGlobalFixedPoint(InterpState &S, CodePtr &PC) {
34603 {
34604 CodePtr OpPC = PC;
34605 const auto V0 = ReadArg<uint32_t>(S, PC);
34606 if (!InitGlobal<PT_FixedPoint>(S, OpPC, V0))
34607 return false;
34608 }
34609#if USE_TAILCALLS
34610 MUSTTAIL return InterpNext(S, PC);
34611#else
34612 return true;
34613#endif
34614}
34615PRESERVE_NONE
34616static bool Interp_InitGlobalPtr(InterpState &S, CodePtr &PC) {
34617 {
34618 CodePtr OpPC = PC;
34619 const auto V0 = ReadArg<uint32_t>(S, PC);
34620 if (!InitGlobal<PT_Ptr>(S, OpPC, V0))
34621 return false;
34622 }
34623#if USE_TAILCALLS
34624 MUSTTAIL return InterpNext(S, PC);
34625#else
34626 return true;
34627#endif
34628}
34629PRESERVE_NONE
34630static bool Interp_InitGlobalMemberPtr(InterpState &S, CodePtr &PC) {
34631 {
34632 CodePtr OpPC = PC;
34633 const auto V0 = ReadArg<uint32_t>(S, PC);
34634 if (!InitGlobal<PT_MemberPtr>(S, OpPC, V0))
34635 return false;
34636 }
34637#if USE_TAILCALLS
34638 MUSTTAIL return InterpNext(S, PC);
34639#else
34640 return true;
34641#endif
34642}
34643PRESERVE_NONE
34644static bool Interp_InitGlobalFloat(InterpState &S, CodePtr &PC) {
34645 {
34646 CodePtr OpPC = PC;
34647 const auto V0 = ReadArg<uint32_t>(S, PC);
34648 if (!InitGlobal<PT_Float>(S, OpPC, V0))
34649 return false;
34650 }
34651#if USE_TAILCALLS
34652 MUSTTAIL return InterpNext(S, PC);
34653#else
34654 return true;
34655#endif
34656}
34657#endif
34658#ifdef GET_DISASM
34659case OP_InitGlobalSint8:
34660 Text.Op = PrintName("InitGlobalSint8");
34661 Text.Args.push_back(printArg<uint32_t>(P, PC));
34662 break;
34663case OP_InitGlobalUint8:
34664 Text.Op = PrintName("InitGlobalUint8");
34665 Text.Args.push_back(printArg<uint32_t>(P, PC));
34666 break;
34667case OP_InitGlobalSint16:
34668 Text.Op = PrintName("InitGlobalSint16");
34669 Text.Args.push_back(printArg<uint32_t>(P, PC));
34670 break;
34671case OP_InitGlobalUint16:
34672 Text.Op = PrintName("InitGlobalUint16");
34673 Text.Args.push_back(printArg<uint32_t>(P, PC));
34674 break;
34675case OP_InitGlobalSint32:
34676 Text.Op = PrintName("InitGlobalSint32");
34677 Text.Args.push_back(printArg<uint32_t>(P, PC));
34678 break;
34679case OP_InitGlobalUint32:
34680 Text.Op = PrintName("InitGlobalUint32");
34681 Text.Args.push_back(printArg<uint32_t>(P, PC));
34682 break;
34683case OP_InitGlobalSint64:
34684 Text.Op = PrintName("InitGlobalSint64");
34685 Text.Args.push_back(printArg<uint32_t>(P, PC));
34686 break;
34687case OP_InitGlobalUint64:
34688 Text.Op = PrintName("InitGlobalUint64");
34689 Text.Args.push_back(printArg<uint32_t>(P, PC));
34690 break;
34691case OP_InitGlobalIntAP:
34692 Text.Op = PrintName("InitGlobalIntAP");
34693 Text.Args.push_back(printArg<uint32_t>(P, PC));
34694 break;
34695case OP_InitGlobalIntAPS:
34696 Text.Op = PrintName("InitGlobalIntAPS");
34697 Text.Args.push_back(printArg<uint32_t>(P, PC));
34698 break;
34699case OP_InitGlobalBool:
34700 Text.Op = PrintName("InitGlobalBool");
34701 Text.Args.push_back(printArg<uint32_t>(P, PC));
34702 break;
34703case OP_InitGlobalFixedPoint:
34704 Text.Op = PrintName("InitGlobalFixedPoint");
34705 Text.Args.push_back(printArg<uint32_t>(P, PC));
34706 break;
34707case OP_InitGlobalPtr:
34708 Text.Op = PrintName("InitGlobalPtr");
34709 Text.Args.push_back(printArg<uint32_t>(P, PC));
34710 break;
34711case OP_InitGlobalMemberPtr:
34712 Text.Op = PrintName("InitGlobalMemberPtr");
34713 Text.Args.push_back(printArg<uint32_t>(P, PC));
34714 break;
34715case OP_InitGlobalFloat:
34716 Text.Op = PrintName("InitGlobalFloat");
34717 Text.Args.push_back(printArg<uint32_t>(P, PC));
34718 break;
34719#endif
34720#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34721bool emitInitGlobalSint8( uint32_t , SourceInfo);
34722bool emitInitGlobalUint8( uint32_t , SourceInfo);
34723bool emitInitGlobalSint16( uint32_t , SourceInfo);
34724bool emitInitGlobalUint16( uint32_t , SourceInfo);
34725bool emitInitGlobalSint32( uint32_t , SourceInfo);
34726bool emitInitGlobalUint32( uint32_t , SourceInfo);
34727bool emitInitGlobalSint64( uint32_t , SourceInfo);
34728bool emitInitGlobalUint64( uint32_t , SourceInfo);
34729bool emitInitGlobalIntAP( uint32_t , SourceInfo);
34730bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
34731bool emitInitGlobalBool( uint32_t , SourceInfo);
34732bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
34733bool emitInitGlobalPtr( uint32_t , SourceInfo);
34734bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
34735bool emitInitGlobalFloat( uint32_t , SourceInfo);
34736#endif
34737#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34738[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
34739#endif
34740#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34741bool
34742#if defined(GET_EVAL_IMPL)
34743EvalEmitter
34744#else
34745ByteCodeEmitter
34746#endif
34747::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
34748 switch (T0) {
34749 case PT_Sint8:
34750 return emitInitGlobalSint8(A0, I);
34751 case PT_Uint8:
34752 return emitInitGlobalUint8(A0, I);
34753 case PT_Sint16:
34754 return emitInitGlobalSint16(A0, I);
34755 case PT_Uint16:
34756 return emitInitGlobalUint16(A0, I);
34757 case PT_Sint32:
34758 return emitInitGlobalSint32(A0, I);
34759 case PT_Uint32:
34760 return emitInitGlobalUint32(A0, I);
34761 case PT_Sint64:
34762 return emitInitGlobalSint64(A0, I);
34763 case PT_Uint64:
34764 return emitInitGlobalUint64(A0, I);
34765 case PT_IntAP:
34766 return emitInitGlobalIntAP(A0, I);
34767 case PT_IntAPS:
34768 return emitInitGlobalIntAPS(A0, I);
34769 case PT_Bool:
34770 return emitInitGlobalBool(A0, I);
34771 case PT_FixedPoint:
34772 return emitInitGlobalFixedPoint(A0, I);
34773 case PT_Ptr:
34774 return emitInitGlobalPtr(A0, I);
34775 case PT_MemberPtr:
34776 return emitInitGlobalMemberPtr(A0, I);
34777 case PT_Float:
34778 return emitInitGlobalFloat(A0, I);
34779 }
34780 llvm_unreachable("invalid enum value");
34781}
34782#endif
34783#ifdef GET_LINK_IMPL
34784bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34785 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
34786}
34787bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34788 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
34789}
34790bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34791 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
34792}
34793bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34794 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
34795}
34796bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34797 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
34798}
34799bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34800 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
34801}
34802bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34803 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
34804}
34805bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34806 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
34807}
34808bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34809 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
34810}
34811bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34812 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
34813}
34814bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34815 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
34816}
34817bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34818 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
34819}
34820bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34821 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
34822}
34823bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34824 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
34825}
34826bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34827 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
34828}
34829#endif
34830#ifdef GET_EVAL_IMPL
34831bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34832 if (!isActive()) return true;
34833 CurrentSource = L;
34834 return InitGlobal<PT_Sint8>(S, OpPC, A0);
34835}
34836bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34837 if (!isActive()) return true;
34838 CurrentSource = L;
34839 return InitGlobal<PT_Uint8>(S, OpPC, A0);
34840}
34841bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34842 if (!isActive()) return true;
34843 CurrentSource = L;
34844 return InitGlobal<PT_Sint16>(S, OpPC, A0);
34845}
34846bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34847 if (!isActive()) return true;
34848 CurrentSource = L;
34849 return InitGlobal<PT_Uint16>(S, OpPC, A0);
34850}
34851bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34852 if (!isActive()) return true;
34853 CurrentSource = L;
34854 return InitGlobal<PT_Sint32>(S, OpPC, A0);
34855}
34856bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34857 if (!isActive()) return true;
34858 CurrentSource = L;
34859 return InitGlobal<PT_Uint32>(S, OpPC, A0);
34860}
34861bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34862 if (!isActive()) return true;
34863 CurrentSource = L;
34864 return InitGlobal<PT_Sint64>(S, OpPC, A0);
34865}
34866bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34867 if (!isActive()) return true;
34868 CurrentSource = L;
34869 return InitGlobal<PT_Uint64>(S, OpPC, A0);
34870}
34871bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34872 if (!isActive()) return true;
34873 CurrentSource = L;
34874 return InitGlobal<PT_IntAP>(S, OpPC, A0);
34875}
34876bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34877 if (!isActive()) return true;
34878 CurrentSource = L;
34879 return InitGlobal<PT_IntAPS>(S, OpPC, A0);
34880}
34881bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34882 if (!isActive()) return true;
34883 CurrentSource = L;
34884 return InitGlobal<PT_Bool>(S, OpPC, A0);
34885}
34886bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34887 if (!isActive()) return true;
34888 CurrentSource = L;
34889 return InitGlobal<PT_FixedPoint>(S, OpPC, A0);
34890}
34891bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34892 if (!isActive()) return true;
34893 CurrentSource = L;
34894 return InitGlobal<PT_Ptr>(S, OpPC, A0);
34895}
34896bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34897 if (!isActive()) return true;
34898 CurrentSource = L;
34899 return InitGlobal<PT_MemberPtr>(S, OpPC, A0);
34900}
34901bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34902 if (!isActive()) return true;
34903 CurrentSource = L;
34904 return InitGlobal<PT_Float>(S, OpPC, A0);
34905}
34906#endif
34907#ifdef GET_OPCODE_NAMES
34908OP_InitGlobalTempSint8,
34909OP_InitGlobalTempUint8,
34910OP_InitGlobalTempSint16,
34911OP_InitGlobalTempUint16,
34912OP_InitGlobalTempSint32,
34913OP_InitGlobalTempUint32,
34914OP_InitGlobalTempSint64,
34915OP_InitGlobalTempUint64,
34916OP_InitGlobalTempIntAP,
34917OP_InitGlobalTempIntAPS,
34918OP_InitGlobalTempBool,
34919OP_InitGlobalTempFixedPoint,
34920OP_InitGlobalTempPtr,
34921OP_InitGlobalTempMemberPtr,
34922OP_InitGlobalTempFloat,
34923#endif
34924#ifdef GET_INTERPFN_LIST
34925&Interp_InitGlobalTempSint8,
34926&Interp_InitGlobalTempUint8,
34927&Interp_InitGlobalTempSint16,
34928&Interp_InitGlobalTempUint16,
34929&Interp_InitGlobalTempSint32,
34930&Interp_InitGlobalTempUint32,
34931&Interp_InitGlobalTempSint64,
34932&Interp_InitGlobalTempUint64,
34933&Interp_InitGlobalTempIntAP,
34934&Interp_InitGlobalTempIntAPS,
34935&Interp_InitGlobalTempBool,
34936&Interp_InitGlobalTempFixedPoint,
34937&Interp_InitGlobalTempPtr,
34938&Interp_InitGlobalTempMemberPtr,
34939&Interp_InitGlobalTempFloat,
34940#endif
34941#ifdef GET_INTERPFN_DISPATCHERS
34942PRESERVE_NONE
34943static bool Interp_InitGlobalTempSint8(InterpState &S, CodePtr &PC) {
34944 {
34945 CodePtr OpPC = PC;
34946 const auto V0 = ReadArg<uint32_t>(S, PC);
34947 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34948 if (!InitGlobalTemp<PT_Sint8>(S, OpPC, V0, V1))
34949 return false;
34950 }
34951#if USE_TAILCALLS
34952 MUSTTAIL return InterpNext(S, PC);
34953#else
34954 return true;
34955#endif
34956}
34957PRESERVE_NONE
34958static bool Interp_InitGlobalTempUint8(InterpState &S, CodePtr &PC) {
34959 {
34960 CodePtr OpPC = PC;
34961 const auto V0 = ReadArg<uint32_t>(S, PC);
34962 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34963 if (!InitGlobalTemp<PT_Uint8>(S, OpPC, V0, V1))
34964 return false;
34965 }
34966#if USE_TAILCALLS
34967 MUSTTAIL return InterpNext(S, PC);
34968#else
34969 return true;
34970#endif
34971}
34972PRESERVE_NONE
34973static bool Interp_InitGlobalTempSint16(InterpState &S, CodePtr &PC) {
34974 {
34975 CodePtr OpPC = PC;
34976 const auto V0 = ReadArg<uint32_t>(S, PC);
34977 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34978 if (!InitGlobalTemp<PT_Sint16>(S, OpPC, V0, V1))
34979 return false;
34980 }
34981#if USE_TAILCALLS
34982 MUSTTAIL return InterpNext(S, PC);
34983#else
34984 return true;
34985#endif
34986}
34987PRESERVE_NONE
34988static bool Interp_InitGlobalTempUint16(InterpState &S, CodePtr &PC) {
34989 {
34990 CodePtr OpPC = PC;
34991 const auto V0 = ReadArg<uint32_t>(S, PC);
34992 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34993 if (!InitGlobalTemp<PT_Uint16>(S, OpPC, V0, V1))
34994 return false;
34995 }
34996#if USE_TAILCALLS
34997 MUSTTAIL return InterpNext(S, PC);
34998#else
34999 return true;
35000#endif
35001}
35002PRESERVE_NONE
35003static bool Interp_InitGlobalTempSint32(InterpState &S, CodePtr &PC) {
35004 {
35005 CodePtr OpPC = PC;
35006 const auto V0 = ReadArg<uint32_t>(S, PC);
35007 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35008 if (!InitGlobalTemp<PT_Sint32>(S, OpPC, V0, V1))
35009 return false;
35010 }
35011#if USE_TAILCALLS
35012 MUSTTAIL return InterpNext(S, PC);
35013#else
35014 return true;
35015#endif
35016}
35017PRESERVE_NONE
35018static bool Interp_InitGlobalTempUint32(InterpState &S, CodePtr &PC) {
35019 {
35020 CodePtr OpPC = PC;
35021 const auto V0 = ReadArg<uint32_t>(S, PC);
35022 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35023 if (!InitGlobalTemp<PT_Uint32>(S, OpPC, V0, V1))
35024 return false;
35025 }
35026#if USE_TAILCALLS
35027 MUSTTAIL return InterpNext(S, PC);
35028#else
35029 return true;
35030#endif
35031}
35032PRESERVE_NONE
35033static bool Interp_InitGlobalTempSint64(InterpState &S, CodePtr &PC) {
35034 {
35035 CodePtr OpPC = PC;
35036 const auto V0 = ReadArg<uint32_t>(S, PC);
35037 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35038 if (!InitGlobalTemp<PT_Sint64>(S, OpPC, V0, V1))
35039 return false;
35040 }
35041#if USE_TAILCALLS
35042 MUSTTAIL return InterpNext(S, PC);
35043#else
35044 return true;
35045#endif
35046}
35047PRESERVE_NONE
35048static bool Interp_InitGlobalTempUint64(InterpState &S, CodePtr &PC) {
35049 {
35050 CodePtr OpPC = PC;
35051 const auto V0 = ReadArg<uint32_t>(S, PC);
35052 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35053 if (!InitGlobalTemp<PT_Uint64>(S, OpPC, V0, V1))
35054 return false;
35055 }
35056#if USE_TAILCALLS
35057 MUSTTAIL return InterpNext(S, PC);
35058#else
35059 return true;
35060#endif
35061}
35062PRESERVE_NONE
35063static bool Interp_InitGlobalTempIntAP(InterpState &S, CodePtr &PC) {
35064 {
35065 CodePtr OpPC = PC;
35066 const auto V0 = ReadArg<uint32_t>(S, PC);
35067 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35068 if (!InitGlobalTemp<PT_IntAP>(S, OpPC, V0, V1))
35069 return false;
35070 }
35071#if USE_TAILCALLS
35072 MUSTTAIL return InterpNext(S, PC);
35073#else
35074 return true;
35075#endif
35076}
35077PRESERVE_NONE
35078static bool Interp_InitGlobalTempIntAPS(InterpState &S, CodePtr &PC) {
35079 {
35080 CodePtr OpPC = PC;
35081 const auto V0 = ReadArg<uint32_t>(S, PC);
35082 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35083 if (!InitGlobalTemp<PT_IntAPS>(S, OpPC, V0, V1))
35084 return false;
35085 }
35086#if USE_TAILCALLS
35087 MUSTTAIL return InterpNext(S, PC);
35088#else
35089 return true;
35090#endif
35091}
35092PRESERVE_NONE
35093static bool Interp_InitGlobalTempBool(InterpState &S, CodePtr &PC) {
35094 {
35095 CodePtr OpPC = PC;
35096 const auto V0 = ReadArg<uint32_t>(S, PC);
35097 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35098 if (!InitGlobalTemp<PT_Bool>(S, OpPC, V0, V1))
35099 return false;
35100 }
35101#if USE_TAILCALLS
35102 MUSTTAIL return InterpNext(S, PC);
35103#else
35104 return true;
35105#endif
35106}
35107PRESERVE_NONE
35108static bool Interp_InitGlobalTempFixedPoint(InterpState &S, CodePtr &PC) {
35109 {
35110 CodePtr OpPC = PC;
35111 const auto V0 = ReadArg<uint32_t>(S, PC);
35112 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35113 if (!InitGlobalTemp<PT_FixedPoint>(S, OpPC, V0, V1))
35114 return false;
35115 }
35116#if USE_TAILCALLS
35117 MUSTTAIL return InterpNext(S, PC);
35118#else
35119 return true;
35120#endif
35121}
35122PRESERVE_NONE
35123static bool Interp_InitGlobalTempPtr(InterpState &S, CodePtr &PC) {
35124 {
35125 CodePtr OpPC = PC;
35126 const auto V0 = ReadArg<uint32_t>(S, PC);
35127 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35128 if (!InitGlobalTemp<PT_Ptr>(S, OpPC, V0, V1))
35129 return false;
35130 }
35131#if USE_TAILCALLS
35132 MUSTTAIL return InterpNext(S, PC);
35133#else
35134 return true;
35135#endif
35136}
35137PRESERVE_NONE
35138static bool Interp_InitGlobalTempMemberPtr(InterpState &S, CodePtr &PC) {
35139 {
35140 CodePtr OpPC = PC;
35141 const auto V0 = ReadArg<uint32_t>(S, PC);
35142 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35143 if (!InitGlobalTemp<PT_MemberPtr>(S, OpPC, V0, V1))
35144 return false;
35145 }
35146#if USE_TAILCALLS
35147 MUSTTAIL return InterpNext(S, PC);
35148#else
35149 return true;
35150#endif
35151}
35152PRESERVE_NONE
35153static bool Interp_InitGlobalTempFloat(InterpState &S, CodePtr &PC) {
35154 {
35155 CodePtr OpPC = PC;
35156 const auto V0 = ReadArg<uint32_t>(S, PC);
35157 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35158 if (!InitGlobalTemp<PT_Float>(S, OpPC, V0, V1))
35159 return false;
35160 }
35161#if USE_TAILCALLS
35162 MUSTTAIL return InterpNext(S, PC);
35163#else
35164 return true;
35165#endif
35166}
35167#endif
35168#ifdef GET_DISASM
35169case OP_InitGlobalTempSint8:
35170 Text.Op = PrintName("InitGlobalTempSint8");
35171 Text.Args.push_back(printArg<uint32_t>(P, PC));
35172 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35173 break;
35174case OP_InitGlobalTempUint8:
35175 Text.Op = PrintName("InitGlobalTempUint8");
35176 Text.Args.push_back(printArg<uint32_t>(P, PC));
35177 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35178 break;
35179case OP_InitGlobalTempSint16:
35180 Text.Op = PrintName("InitGlobalTempSint16");
35181 Text.Args.push_back(printArg<uint32_t>(P, PC));
35182 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35183 break;
35184case OP_InitGlobalTempUint16:
35185 Text.Op = PrintName("InitGlobalTempUint16");
35186 Text.Args.push_back(printArg<uint32_t>(P, PC));
35187 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35188 break;
35189case OP_InitGlobalTempSint32:
35190 Text.Op = PrintName("InitGlobalTempSint32");
35191 Text.Args.push_back(printArg<uint32_t>(P, PC));
35192 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35193 break;
35194case OP_InitGlobalTempUint32:
35195 Text.Op = PrintName("InitGlobalTempUint32");
35196 Text.Args.push_back(printArg<uint32_t>(P, PC));
35197 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35198 break;
35199case OP_InitGlobalTempSint64:
35200 Text.Op = PrintName("InitGlobalTempSint64");
35201 Text.Args.push_back(printArg<uint32_t>(P, PC));
35202 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35203 break;
35204case OP_InitGlobalTempUint64:
35205 Text.Op = PrintName("InitGlobalTempUint64");
35206 Text.Args.push_back(printArg<uint32_t>(P, PC));
35207 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35208 break;
35209case OP_InitGlobalTempIntAP:
35210 Text.Op = PrintName("InitGlobalTempIntAP");
35211 Text.Args.push_back(printArg<uint32_t>(P, PC));
35212 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35213 break;
35214case OP_InitGlobalTempIntAPS:
35215 Text.Op = PrintName("InitGlobalTempIntAPS");
35216 Text.Args.push_back(printArg<uint32_t>(P, PC));
35217 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35218 break;
35219case OP_InitGlobalTempBool:
35220 Text.Op = PrintName("InitGlobalTempBool");
35221 Text.Args.push_back(printArg<uint32_t>(P, PC));
35222 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35223 break;
35224case OP_InitGlobalTempFixedPoint:
35225 Text.Op = PrintName("InitGlobalTempFixedPoint");
35226 Text.Args.push_back(printArg<uint32_t>(P, PC));
35227 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35228 break;
35229case OP_InitGlobalTempPtr:
35230 Text.Op = PrintName("InitGlobalTempPtr");
35231 Text.Args.push_back(printArg<uint32_t>(P, PC));
35232 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35233 break;
35234case OP_InitGlobalTempMemberPtr:
35235 Text.Op = PrintName("InitGlobalTempMemberPtr");
35236 Text.Args.push_back(printArg<uint32_t>(P, PC));
35237 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35238 break;
35239case OP_InitGlobalTempFloat:
35240 Text.Op = PrintName("InitGlobalTempFloat");
35241 Text.Args.push_back(printArg<uint32_t>(P, PC));
35242 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35243 break;
35244#endif
35245#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35246bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35247bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35248bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35249bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35250bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35251bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35252bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35253bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35254bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35255bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35256bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35257bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35258bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35259bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35260bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
35261#endif
35262#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35263[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
35264#endif
35265#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35266bool
35267#if defined(GET_EVAL_IMPL)
35268EvalEmitter
35269#else
35270ByteCodeEmitter
35271#endif
35272::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
35273 switch (T0) {
35274 case PT_Sint8:
35275 return emitInitGlobalTempSint8(A0, A1, I);
35276 case PT_Uint8:
35277 return emitInitGlobalTempUint8(A0, A1, I);
35278 case PT_Sint16:
35279 return emitInitGlobalTempSint16(A0, A1, I);
35280 case PT_Uint16:
35281 return emitInitGlobalTempUint16(A0, A1, I);
35282 case PT_Sint32:
35283 return emitInitGlobalTempSint32(A0, A1, I);
35284 case PT_Uint32:
35285 return emitInitGlobalTempUint32(A0, A1, I);
35286 case PT_Sint64:
35287 return emitInitGlobalTempSint64(A0, A1, I);
35288 case PT_Uint64:
35289 return emitInitGlobalTempUint64(A0, A1, I);
35290 case PT_IntAP:
35291 return emitInitGlobalTempIntAP(A0, A1, I);
35292 case PT_IntAPS:
35293 return emitInitGlobalTempIntAPS(A0, A1, I);
35294 case PT_Bool:
35295 return emitInitGlobalTempBool(A0, A1, I);
35296 case PT_FixedPoint:
35297 return emitInitGlobalTempFixedPoint(A0, A1, I);
35298 case PT_Ptr:
35299 return emitInitGlobalTempPtr(A0, A1, I);
35300 case PT_MemberPtr:
35301 return emitInitGlobalTempMemberPtr(A0, A1, I);
35302 case PT_Float:
35303 return emitInitGlobalTempFloat(A0, A1, I);
35304 }
35305 llvm_unreachable("invalid enum value");
35306}
35307#endif
35308#ifdef GET_LINK_IMPL
35309bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35310 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
35311}
35312bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35313 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
35314}
35315bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35316 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
35317}
35318bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35319 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
35320}
35321bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35322 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
35323}
35324bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35325 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
35326}
35327bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35328 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
35329}
35330bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35331 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
35332}
35333bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35334 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
35335}
35336bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35337 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
35338}
35339bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35340 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
35341}
35342bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35343 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
35344}
35345bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35346 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
35347}
35348bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35349 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
35350}
35351bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35352 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
35353}
35354#endif
35355#ifdef GET_EVAL_IMPL
35356bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35357 if (!isActive()) return true;
35358 CurrentSource = L;
35359 return InitGlobalTemp<PT_Sint8>(S, OpPC, A0, A1);
35360}
35361bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35362 if (!isActive()) return true;
35363 CurrentSource = L;
35364 return InitGlobalTemp<PT_Uint8>(S, OpPC, A0, A1);
35365}
35366bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35367 if (!isActive()) return true;
35368 CurrentSource = L;
35369 return InitGlobalTemp<PT_Sint16>(S, OpPC, A0, A1);
35370}
35371bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35372 if (!isActive()) return true;
35373 CurrentSource = L;
35374 return InitGlobalTemp<PT_Uint16>(S, OpPC, A0, A1);
35375}
35376bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35377 if (!isActive()) return true;
35378 CurrentSource = L;
35379 return InitGlobalTemp<PT_Sint32>(S, OpPC, A0, A1);
35380}
35381bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35382 if (!isActive()) return true;
35383 CurrentSource = L;
35384 return InitGlobalTemp<PT_Uint32>(S, OpPC, A0, A1);
35385}
35386bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35387 if (!isActive()) return true;
35388 CurrentSource = L;
35389 return InitGlobalTemp<PT_Sint64>(S, OpPC, A0, A1);
35390}
35391bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35392 if (!isActive()) return true;
35393 CurrentSource = L;
35394 return InitGlobalTemp<PT_Uint64>(S, OpPC, A0, A1);
35395}
35396bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35397 if (!isActive()) return true;
35398 CurrentSource = L;
35399 return InitGlobalTemp<PT_IntAP>(S, OpPC, A0, A1);
35400}
35401bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35402 if (!isActive()) return true;
35403 CurrentSource = L;
35404 return InitGlobalTemp<PT_IntAPS>(S, OpPC, A0, A1);
35405}
35406bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35407 if (!isActive()) return true;
35408 CurrentSource = L;
35409 return InitGlobalTemp<PT_Bool>(S, OpPC, A0, A1);
35410}
35411bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35412 if (!isActive()) return true;
35413 CurrentSource = L;
35414 return InitGlobalTemp<PT_FixedPoint>(S, OpPC, A0, A1);
35415}
35416bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35417 if (!isActive()) return true;
35418 CurrentSource = L;
35419 return InitGlobalTemp<PT_Ptr>(S, OpPC, A0, A1);
35420}
35421bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35422 if (!isActive()) return true;
35423 CurrentSource = L;
35424 return InitGlobalTemp<PT_MemberPtr>(S, OpPC, A0, A1);
35425}
35426bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
35427 if (!isActive()) return true;
35428 CurrentSource = L;
35429 return InitGlobalTemp<PT_Float>(S, OpPC, A0, A1);
35430}
35431#endif
35432#ifdef GET_OPCODE_NAMES
35433OP_InitGlobalTempComp,
35434#endif
35435#ifdef GET_INTERPFN_LIST
35436&Interp_InitGlobalTempComp,
35437#endif
35438#ifdef GET_INTERPFN_DISPATCHERS
35439PRESERVE_NONE
35440static bool Interp_InitGlobalTempComp(InterpState &S, CodePtr &PC) {
35441 {
35442 CodePtr OpPC = PC;
35443 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
35444 if (!InitGlobalTempComp(S, OpPC, V0))
35445 return false;
35446 }
35447#if USE_TAILCALLS
35448 MUSTTAIL return InterpNext(S, PC);
35449#else
35450 return true;
35451#endif
35452}
35453#endif
35454#ifdef GET_DISASM
35455case OP_InitGlobalTempComp:
35456 Text.Op = PrintName("InitGlobalTempComp");
35457 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
35458 break;
35459#endif
35460#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35461bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
35462#endif
35463#ifdef GET_LINK_IMPL
35464bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
35465 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
35466}
35467#endif
35468#ifdef GET_EVAL_IMPL
35469bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
35470 if (!isActive()) return true;
35471 CurrentSource = L;
35472 return InitGlobalTempComp(S, OpPC, A0);
35473}
35474#endif
35475#ifdef GET_OPCODE_NAMES
35476OP_InitPopSint8,
35477OP_InitPopUint8,
35478OP_InitPopSint16,
35479OP_InitPopUint16,
35480OP_InitPopSint32,
35481OP_InitPopUint32,
35482OP_InitPopSint64,
35483OP_InitPopUint64,
35484OP_InitPopIntAP,
35485OP_InitPopIntAPS,
35486OP_InitPopBool,
35487OP_InitPopFixedPoint,
35488OP_InitPopPtr,
35489OP_InitPopMemberPtr,
35490OP_InitPopFloat,
35491#endif
35492#ifdef GET_INTERPFN_LIST
35493&Interp_InitPopSint8,
35494&Interp_InitPopUint8,
35495&Interp_InitPopSint16,
35496&Interp_InitPopUint16,
35497&Interp_InitPopSint32,
35498&Interp_InitPopUint32,
35499&Interp_InitPopSint64,
35500&Interp_InitPopUint64,
35501&Interp_InitPopIntAP,
35502&Interp_InitPopIntAPS,
35503&Interp_InitPopBool,
35504&Interp_InitPopFixedPoint,
35505&Interp_InitPopPtr,
35506&Interp_InitPopMemberPtr,
35507&Interp_InitPopFloat,
35508#endif
35509#ifdef GET_INTERPFN_DISPATCHERS
35510PRESERVE_NONE
35511static bool Interp_InitPopSint8(InterpState &S, CodePtr &PC) {
35512 if (!InitPop<PT_Sint8>(S, PC))
35513 return false;
35514#if USE_TAILCALLS
35515 MUSTTAIL return InterpNext(S, PC);
35516#else
35517 return true;
35518#endif
35519}
35520PRESERVE_NONE
35521static bool Interp_InitPopUint8(InterpState &S, CodePtr &PC) {
35522 if (!InitPop<PT_Uint8>(S, PC))
35523 return false;
35524#if USE_TAILCALLS
35525 MUSTTAIL return InterpNext(S, PC);
35526#else
35527 return true;
35528#endif
35529}
35530PRESERVE_NONE
35531static bool Interp_InitPopSint16(InterpState &S, CodePtr &PC) {
35532 if (!InitPop<PT_Sint16>(S, PC))
35533 return false;
35534#if USE_TAILCALLS
35535 MUSTTAIL return InterpNext(S, PC);
35536#else
35537 return true;
35538#endif
35539}
35540PRESERVE_NONE
35541static bool Interp_InitPopUint16(InterpState &S, CodePtr &PC) {
35542 if (!InitPop<PT_Uint16>(S, PC))
35543 return false;
35544#if USE_TAILCALLS
35545 MUSTTAIL return InterpNext(S, PC);
35546#else
35547 return true;
35548#endif
35549}
35550PRESERVE_NONE
35551static bool Interp_InitPopSint32(InterpState &S, CodePtr &PC) {
35552 if (!InitPop<PT_Sint32>(S, PC))
35553 return false;
35554#if USE_TAILCALLS
35555 MUSTTAIL return InterpNext(S, PC);
35556#else
35557 return true;
35558#endif
35559}
35560PRESERVE_NONE
35561static bool Interp_InitPopUint32(InterpState &S, CodePtr &PC) {
35562 if (!InitPop<PT_Uint32>(S, PC))
35563 return false;
35564#if USE_TAILCALLS
35565 MUSTTAIL return InterpNext(S, PC);
35566#else
35567 return true;
35568#endif
35569}
35570PRESERVE_NONE
35571static bool Interp_InitPopSint64(InterpState &S, CodePtr &PC) {
35572 if (!InitPop<PT_Sint64>(S, PC))
35573 return false;
35574#if USE_TAILCALLS
35575 MUSTTAIL return InterpNext(S, PC);
35576#else
35577 return true;
35578#endif
35579}
35580PRESERVE_NONE
35581static bool Interp_InitPopUint64(InterpState &S, CodePtr &PC) {
35582 if (!InitPop<PT_Uint64>(S, PC))
35583 return false;
35584#if USE_TAILCALLS
35585 MUSTTAIL return InterpNext(S, PC);
35586#else
35587 return true;
35588#endif
35589}
35590PRESERVE_NONE
35591static bool Interp_InitPopIntAP(InterpState &S, CodePtr &PC) {
35592 if (!InitPop<PT_IntAP>(S, PC))
35593 return false;
35594#if USE_TAILCALLS
35595 MUSTTAIL return InterpNext(S, PC);
35596#else
35597 return true;
35598#endif
35599}
35600PRESERVE_NONE
35601static bool Interp_InitPopIntAPS(InterpState &S, CodePtr &PC) {
35602 if (!InitPop<PT_IntAPS>(S, PC))
35603 return false;
35604#if USE_TAILCALLS
35605 MUSTTAIL return InterpNext(S, PC);
35606#else
35607 return true;
35608#endif
35609}
35610PRESERVE_NONE
35611static bool Interp_InitPopBool(InterpState &S, CodePtr &PC) {
35612 if (!InitPop<PT_Bool>(S, PC))
35613 return false;
35614#if USE_TAILCALLS
35615 MUSTTAIL return InterpNext(S, PC);
35616#else
35617 return true;
35618#endif
35619}
35620PRESERVE_NONE
35621static bool Interp_InitPopFixedPoint(InterpState &S, CodePtr &PC) {
35622 if (!InitPop<PT_FixedPoint>(S, PC))
35623 return false;
35624#if USE_TAILCALLS
35625 MUSTTAIL return InterpNext(S, PC);
35626#else
35627 return true;
35628#endif
35629}
35630PRESERVE_NONE
35631static bool Interp_InitPopPtr(InterpState &S, CodePtr &PC) {
35632 if (!InitPop<PT_Ptr>(S, PC))
35633 return false;
35634#if USE_TAILCALLS
35635 MUSTTAIL return InterpNext(S, PC);
35636#else
35637 return true;
35638#endif
35639}
35640PRESERVE_NONE
35641static bool Interp_InitPopMemberPtr(InterpState &S, CodePtr &PC) {
35642 if (!InitPop<PT_MemberPtr>(S, PC))
35643 return false;
35644#if USE_TAILCALLS
35645 MUSTTAIL return InterpNext(S, PC);
35646#else
35647 return true;
35648#endif
35649}
35650PRESERVE_NONE
35651static bool Interp_InitPopFloat(InterpState &S, CodePtr &PC) {
35652 if (!InitPop<PT_Float>(S, PC))
35653 return false;
35654#if USE_TAILCALLS
35655 MUSTTAIL return InterpNext(S, PC);
35656#else
35657 return true;
35658#endif
35659}
35660#endif
35661#ifdef GET_DISASM
35662case OP_InitPopSint8:
35663 Text.Op = PrintName("InitPopSint8");
35664 break;
35665case OP_InitPopUint8:
35666 Text.Op = PrintName("InitPopUint8");
35667 break;
35668case OP_InitPopSint16:
35669 Text.Op = PrintName("InitPopSint16");
35670 break;
35671case OP_InitPopUint16:
35672 Text.Op = PrintName("InitPopUint16");
35673 break;
35674case OP_InitPopSint32:
35675 Text.Op = PrintName("InitPopSint32");
35676 break;
35677case OP_InitPopUint32:
35678 Text.Op = PrintName("InitPopUint32");
35679 break;
35680case OP_InitPopSint64:
35681 Text.Op = PrintName("InitPopSint64");
35682 break;
35683case OP_InitPopUint64:
35684 Text.Op = PrintName("InitPopUint64");
35685 break;
35686case OP_InitPopIntAP:
35687 Text.Op = PrintName("InitPopIntAP");
35688 break;
35689case OP_InitPopIntAPS:
35690 Text.Op = PrintName("InitPopIntAPS");
35691 break;
35692case OP_InitPopBool:
35693 Text.Op = PrintName("InitPopBool");
35694 break;
35695case OP_InitPopFixedPoint:
35696 Text.Op = PrintName("InitPopFixedPoint");
35697 break;
35698case OP_InitPopPtr:
35699 Text.Op = PrintName("InitPopPtr");
35700 break;
35701case OP_InitPopMemberPtr:
35702 Text.Op = PrintName("InitPopMemberPtr");
35703 break;
35704case OP_InitPopFloat:
35705 Text.Op = PrintName("InitPopFloat");
35706 break;
35707#endif
35708#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35709bool emitInitPopSint8(SourceInfo);
35710bool emitInitPopUint8(SourceInfo);
35711bool emitInitPopSint16(SourceInfo);
35712bool emitInitPopUint16(SourceInfo);
35713bool emitInitPopSint32(SourceInfo);
35714bool emitInitPopUint32(SourceInfo);
35715bool emitInitPopSint64(SourceInfo);
35716bool emitInitPopUint64(SourceInfo);
35717bool emitInitPopIntAP(SourceInfo);
35718bool emitInitPopIntAPS(SourceInfo);
35719bool emitInitPopBool(SourceInfo);
35720bool emitInitPopFixedPoint(SourceInfo);
35721bool emitInitPopPtr(SourceInfo);
35722bool emitInitPopMemberPtr(SourceInfo);
35723bool emitInitPopFloat(SourceInfo);
35724#endif
35725#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35726[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
35727#endif
35728#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35729bool
35730#if defined(GET_EVAL_IMPL)
35731EvalEmitter
35732#else
35733ByteCodeEmitter
35734#endif
35735::emitInitPop(PrimType T0, SourceInfo I) {
35736 switch (T0) {
35737 case PT_Sint8:
35738 return emitInitPopSint8(I);
35739 case PT_Uint8:
35740 return emitInitPopUint8(I);
35741 case PT_Sint16:
35742 return emitInitPopSint16(I);
35743 case PT_Uint16:
35744 return emitInitPopUint16(I);
35745 case PT_Sint32:
35746 return emitInitPopSint32(I);
35747 case PT_Uint32:
35748 return emitInitPopUint32(I);
35749 case PT_Sint64:
35750 return emitInitPopSint64(I);
35751 case PT_Uint64:
35752 return emitInitPopUint64(I);
35753 case PT_IntAP:
35754 return emitInitPopIntAP(I);
35755 case PT_IntAPS:
35756 return emitInitPopIntAPS(I);
35757 case PT_Bool:
35758 return emitInitPopBool(I);
35759 case PT_FixedPoint:
35760 return emitInitPopFixedPoint(I);
35761 case PT_Ptr:
35762 return emitInitPopPtr(I);
35763 case PT_MemberPtr:
35764 return emitInitPopMemberPtr(I);
35765 case PT_Float:
35766 return emitInitPopFloat(I);
35767 }
35768 llvm_unreachable("invalid enum value");
35769}
35770#endif
35771#ifdef GET_LINK_IMPL
35772bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
35773 return emitOp<>(OP_InitPopSint8, L);
35774}
35775bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
35776 return emitOp<>(OP_InitPopUint8, L);
35777}
35778bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
35779 return emitOp<>(OP_InitPopSint16, L);
35780}
35781bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
35782 return emitOp<>(OP_InitPopUint16, L);
35783}
35784bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
35785 return emitOp<>(OP_InitPopSint32, L);
35786}
35787bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
35788 return emitOp<>(OP_InitPopUint32, L);
35789}
35790bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
35791 return emitOp<>(OP_InitPopSint64, L);
35792}
35793bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
35794 return emitOp<>(OP_InitPopUint64, L);
35795}
35796bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
35797 return emitOp<>(OP_InitPopIntAP, L);
35798}
35799bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
35800 return emitOp<>(OP_InitPopIntAPS, L);
35801}
35802bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
35803 return emitOp<>(OP_InitPopBool, L);
35804}
35805bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
35806 return emitOp<>(OP_InitPopFixedPoint, L);
35807}
35808bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
35809 return emitOp<>(OP_InitPopPtr, L);
35810}
35811bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
35812 return emitOp<>(OP_InitPopMemberPtr, L);
35813}
35814bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
35815 return emitOp<>(OP_InitPopFloat, L);
35816}
35817#endif
35818#ifdef GET_EVAL_IMPL
35819bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
35820 if (!isActive()) return true;
35821 CurrentSource = L;
35822 return InitPop<PT_Sint8>(S, OpPC);
35823}
35824bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
35825 if (!isActive()) return true;
35826 CurrentSource = L;
35827 return InitPop<PT_Uint8>(S, OpPC);
35828}
35829bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
35830 if (!isActive()) return true;
35831 CurrentSource = L;
35832 return InitPop<PT_Sint16>(S, OpPC);
35833}
35834bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
35835 if (!isActive()) return true;
35836 CurrentSource = L;
35837 return InitPop<PT_Uint16>(S, OpPC);
35838}
35839bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
35840 if (!isActive()) return true;
35841 CurrentSource = L;
35842 return InitPop<PT_Sint32>(S, OpPC);
35843}
35844bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
35845 if (!isActive()) return true;
35846 CurrentSource = L;
35847 return InitPop<PT_Uint32>(S, OpPC);
35848}
35849bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
35850 if (!isActive()) return true;
35851 CurrentSource = L;
35852 return InitPop<PT_Sint64>(S, OpPC);
35853}
35854bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
35855 if (!isActive()) return true;
35856 CurrentSource = L;
35857 return InitPop<PT_Uint64>(S, OpPC);
35858}
35859bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
35860 if (!isActive()) return true;
35861 CurrentSource = L;
35862 return InitPop<PT_IntAP>(S, OpPC);
35863}
35864bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
35865 if (!isActive()) return true;
35866 CurrentSource = L;
35867 return InitPop<PT_IntAPS>(S, OpPC);
35868}
35869bool EvalEmitter::emitInitPopBool(SourceInfo L) {
35870 if (!isActive()) return true;
35871 CurrentSource = L;
35872 return InitPop<PT_Bool>(S, OpPC);
35873}
35874bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
35875 if (!isActive()) return true;
35876 CurrentSource = L;
35877 return InitPop<PT_FixedPoint>(S, OpPC);
35878}
35879bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
35880 if (!isActive()) return true;
35881 CurrentSource = L;
35882 return InitPop<PT_Ptr>(S, OpPC);
35883}
35884bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
35885 if (!isActive()) return true;
35886 CurrentSource = L;
35887 return InitPop<PT_MemberPtr>(S, OpPC);
35888}
35889bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
35890 if (!isActive()) return true;
35891 CurrentSource = L;
35892 return InitPop<PT_Float>(S, OpPC);
35893}
35894#endif
35895#ifdef GET_OPCODE_NAMES
35896OP_InitScope,
35897#endif
35898#ifdef GET_INTERPFN_LIST
35899&Interp_InitScope,
35900#endif
35901#ifdef GET_INTERPFN_DISPATCHERS
35902PRESERVE_NONE
35903static bool Interp_InitScope(InterpState &S, CodePtr &PC) {
35904 {
35905 CodePtr OpPC = PC;
35906 const auto V0 = ReadArg<uint32_t>(S, PC);
35907 if (!InitScope(S, OpPC, V0))
35908 return false;
35909 }
35910#if USE_TAILCALLS
35911 MUSTTAIL return InterpNext(S, PC);
35912#else
35913 return true;
35914#endif
35915}
35916#endif
35917#ifdef GET_DISASM
35918case OP_InitScope:
35919 Text.Op = PrintName("InitScope");
35920 Text.Args.push_back(printArg<uint32_t>(P, PC));
35921 break;
35922#endif
35923#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35924bool emitInitScope( uint32_t , SourceInfo);
35925#endif
35926#ifdef GET_LINK_IMPL
35927bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35928 return emitOp<uint32_t>(OP_InitScope, A0, L);
35929}
35930#endif
35931#ifdef GET_EVAL_IMPL
35932bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35933 if (!isActive()) return true;
35934 CurrentSource = L;
35935 return InitScope(S, OpPC, A0);
35936}
35937#endif
35938#ifdef GET_OPCODE_NAMES
35939OP_InitThisBitFieldSint8,
35940OP_InitThisBitFieldUint8,
35941OP_InitThisBitFieldSint16,
35942OP_InitThisBitFieldUint16,
35943OP_InitThisBitFieldSint32,
35944OP_InitThisBitFieldUint32,
35945OP_InitThisBitFieldSint64,
35946OP_InitThisBitFieldUint64,
35947OP_InitThisBitFieldIntAP,
35948OP_InitThisBitFieldIntAPS,
35949OP_InitThisBitFieldBool,
35950#endif
35951#ifdef GET_INTERPFN_LIST
35952&Interp_InitThisBitFieldSint8,
35953&Interp_InitThisBitFieldUint8,
35954&Interp_InitThisBitFieldSint16,
35955&Interp_InitThisBitFieldUint16,
35956&Interp_InitThisBitFieldSint32,
35957&Interp_InitThisBitFieldUint32,
35958&Interp_InitThisBitFieldSint64,
35959&Interp_InitThisBitFieldUint64,
35960&Interp_InitThisBitFieldIntAP,
35961&Interp_InitThisBitFieldIntAPS,
35962&Interp_InitThisBitFieldBool,
35963#endif
35964#ifdef GET_INTERPFN_DISPATCHERS
35965PRESERVE_NONE
35966static bool Interp_InitThisBitFieldSint8(InterpState &S, CodePtr &PC) {
35967 {
35968 CodePtr OpPC = PC;
35969 const auto V0 = ReadArg<uint32_t>(S, PC);
35970 const auto V1 = ReadArg<uint32_t>(S, PC);
35971 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1))
35972 return false;
35973 }
35974#if USE_TAILCALLS
35975 MUSTTAIL return InterpNext(S, PC);
35976#else
35977 return true;
35978#endif
35979}
35980PRESERVE_NONE
35981static bool Interp_InitThisBitFieldUint8(InterpState &S, CodePtr &PC) {
35982 {
35983 CodePtr OpPC = PC;
35984 const auto V0 = ReadArg<uint32_t>(S, PC);
35985 const auto V1 = ReadArg<uint32_t>(S, PC);
35986 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1))
35987 return false;
35988 }
35989#if USE_TAILCALLS
35990 MUSTTAIL return InterpNext(S, PC);
35991#else
35992 return true;
35993#endif
35994}
35995PRESERVE_NONE
35996static bool Interp_InitThisBitFieldSint16(InterpState &S, CodePtr &PC) {
35997 {
35998 CodePtr OpPC = PC;
35999 const auto V0 = ReadArg<uint32_t>(S, PC);
36000 const auto V1 = ReadArg<uint32_t>(S, PC);
36001 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1))
36002 return false;
36003 }
36004#if USE_TAILCALLS
36005 MUSTTAIL return InterpNext(S, PC);
36006#else
36007 return true;
36008#endif
36009}
36010PRESERVE_NONE
36011static bool Interp_InitThisBitFieldUint16(InterpState &S, CodePtr &PC) {
36012 {
36013 CodePtr OpPC = PC;
36014 const auto V0 = ReadArg<uint32_t>(S, PC);
36015 const auto V1 = ReadArg<uint32_t>(S, PC);
36016 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1))
36017 return false;
36018 }
36019#if USE_TAILCALLS
36020 MUSTTAIL return InterpNext(S, PC);
36021#else
36022 return true;
36023#endif
36024}
36025PRESERVE_NONE
36026static bool Interp_InitThisBitFieldSint32(InterpState &S, CodePtr &PC) {
36027 {
36028 CodePtr OpPC = PC;
36029 const auto V0 = ReadArg<uint32_t>(S, PC);
36030 const auto V1 = ReadArg<uint32_t>(S, PC);
36031 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1))
36032 return false;
36033 }
36034#if USE_TAILCALLS
36035 MUSTTAIL return InterpNext(S, PC);
36036#else
36037 return true;
36038#endif
36039}
36040PRESERVE_NONE
36041static bool Interp_InitThisBitFieldUint32(InterpState &S, CodePtr &PC) {
36042 {
36043 CodePtr OpPC = PC;
36044 const auto V0 = ReadArg<uint32_t>(S, PC);
36045 const auto V1 = ReadArg<uint32_t>(S, PC);
36046 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1))
36047 return false;
36048 }
36049#if USE_TAILCALLS
36050 MUSTTAIL return InterpNext(S, PC);
36051#else
36052 return true;
36053#endif
36054}
36055PRESERVE_NONE
36056static bool Interp_InitThisBitFieldSint64(InterpState &S, CodePtr &PC) {
36057 {
36058 CodePtr OpPC = PC;
36059 const auto V0 = ReadArg<uint32_t>(S, PC);
36060 const auto V1 = ReadArg<uint32_t>(S, PC);
36061 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1))
36062 return false;
36063 }
36064#if USE_TAILCALLS
36065 MUSTTAIL return InterpNext(S, PC);
36066#else
36067 return true;
36068#endif
36069}
36070PRESERVE_NONE
36071static bool Interp_InitThisBitFieldUint64(InterpState &S, CodePtr &PC) {
36072 {
36073 CodePtr OpPC = PC;
36074 const auto V0 = ReadArg<uint32_t>(S, PC);
36075 const auto V1 = ReadArg<uint32_t>(S, PC);
36076 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1))
36077 return false;
36078 }
36079#if USE_TAILCALLS
36080 MUSTTAIL return InterpNext(S, PC);
36081#else
36082 return true;
36083#endif
36084}
36085PRESERVE_NONE
36086static bool Interp_InitThisBitFieldIntAP(InterpState &S, CodePtr &PC) {
36087 {
36088 CodePtr OpPC = PC;
36089 const auto V0 = ReadArg<uint32_t>(S, PC);
36090 const auto V1 = ReadArg<uint32_t>(S, PC);
36091 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1))
36092 return false;
36093 }
36094#if USE_TAILCALLS
36095 MUSTTAIL return InterpNext(S, PC);
36096#else
36097 return true;
36098#endif
36099}
36100PRESERVE_NONE
36101static bool Interp_InitThisBitFieldIntAPS(InterpState &S, CodePtr &PC) {
36102 {
36103 CodePtr OpPC = PC;
36104 const auto V0 = ReadArg<uint32_t>(S, PC);
36105 const auto V1 = ReadArg<uint32_t>(S, PC);
36106 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1))
36107 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_InitThisBitFieldBool(InterpState &S, CodePtr &PC) {
36117 {
36118 CodePtr OpPC = PC;
36119 const auto V0 = ReadArg<uint32_t>(S, PC);
36120 const auto V1 = ReadArg<uint32_t>(S, PC);
36121 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1))
36122 return false;
36123 }
36124#if USE_TAILCALLS
36125 MUSTTAIL return InterpNext(S, PC);
36126#else
36127 return true;
36128#endif
36129}
36130#endif
36131#ifdef GET_DISASM
36132case OP_InitThisBitFieldSint8:
36133 Text.Op = PrintName("InitThisBitFieldSint8");
36134 Text.Args.push_back(printArg<uint32_t>(P, PC));
36135 Text.Args.push_back(printArg<uint32_t>(P, PC));
36136 break;
36137case OP_InitThisBitFieldUint8:
36138 Text.Op = PrintName("InitThisBitFieldUint8");
36139 Text.Args.push_back(printArg<uint32_t>(P, PC));
36140 Text.Args.push_back(printArg<uint32_t>(P, PC));
36141 break;
36142case OP_InitThisBitFieldSint16:
36143 Text.Op = PrintName("InitThisBitFieldSint16");
36144 Text.Args.push_back(printArg<uint32_t>(P, PC));
36145 Text.Args.push_back(printArg<uint32_t>(P, PC));
36146 break;
36147case OP_InitThisBitFieldUint16:
36148 Text.Op = PrintName("InitThisBitFieldUint16");
36149 Text.Args.push_back(printArg<uint32_t>(P, PC));
36150 Text.Args.push_back(printArg<uint32_t>(P, PC));
36151 break;
36152case OP_InitThisBitFieldSint32:
36153 Text.Op = PrintName("InitThisBitFieldSint32");
36154 Text.Args.push_back(printArg<uint32_t>(P, PC));
36155 Text.Args.push_back(printArg<uint32_t>(P, PC));
36156 break;
36157case OP_InitThisBitFieldUint32:
36158 Text.Op = PrintName("InitThisBitFieldUint32");
36159 Text.Args.push_back(printArg<uint32_t>(P, PC));
36160 Text.Args.push_back(printArg<uint32_t>(P, PC));
36161 break;
36162case OP_InitThisBitFieldSint64:
36163 Text.Op = PrintName("InitThisBitFieldSint64");
36164 Text.Args.push_back(printArg<uint32_t>(P, PC));
36165 Text.Args.push_back(printArg<uint32_t>(P, PC));
36166 break;
36167case OP_InitThisBitFieldUint64:
36168 Text.Op = PrintName("InitThisBitFieldUint64");
36169 Text.Args.push_back(printArg<uint32_t>(P, PC));
36170 Text.Args.push_back(printArg<uint32_t>(P, PC));
36171 break;
36172case OP_InitThisBitFieldIntAP:
36173 Text.Op = PrintName("InitThisBitFieldIntAP");
36174 Text.Args.push_back(printArg<uint32_t>(P, PC));
36175 Text.Args.push_back(printArg<uint32_t>(P, PC));
36176 break;
36177case OP_InitThisBitFieldIntAPS:
36178 Text.Op = PrintName("InitThisBitFieldIntAPS");
36179 Text.Args.push_back(printArg<uint32_t>(P, PC));
36180 Text.Args.push_back(printArg<uint32_t>(P, PC));
36181 break;
36182case OP_InitThisBitFieldBool:
36183 Text.Op = PrintName("InitThisBitFieldBool");
36184 Text.Args.push_back(printArg<uint32_t>(P, PC));
36185 Text.Args.push_back(printArg<uint32_t>(P, PC));
36186 break;
36187#endif
36188#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36189bool emitInitThisBitFieldSint8( uint32_t , uint32_t , SourceInfo);
36190bool emitInitThisBitFieldUint8( uint32_t , uint32_t , SourceInfo);
36191bool emitInitThisBitFieldSint16( uint32_t , uint32_t , SourceInfo);
36192bool emitInitThisBitFieldUint16( uint32_t , uint32_t , SourceInfo);
36193bool emitInitThisBitFieldSint32( uint32_t , uint32_t , SourceInfo);
36194bool emitInitThisBitFieldUint32( uint32_t , uint32_t , SourceInfo);
36195bool emitInitThisBitFieldSint64( uint32_t , uint32_t , SourceInfo);
36196bool emitInitThisBitFieldUint64( uint32_t , uint32_t , SourceInfo);
36197bool emitInitThisBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
36198bool emitInitThisBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
36199bool emitInitThisBitFieldBool( uint32_t , uint32_t , SourceInfo);
36200#endif
36201#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36202[[nodiscard]] bool emitInitThisBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
36203#endif
36204#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36205bool
36206#if defined(GET_EVAL_IMPL)
36207EvalEmitter
36208#else
36209ByteCodeEmitter
36210#endif
36211::emitInitThisBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
36212 switch (T0) {
36213 case PT_Sint8:
36214 return emitInitThisBitFieldSint8(A0, A1, I);
36215 case PT_Uint8:
36216 return emitInitThisBitFieldUint8(A0, A1, I);
36217 case PT_Sint16:
36218 return emitInitThisBitFieldSint16(A0, A1, I);
36219 case PT_Uint16:
36220 return emitInitThisBitFieldUint16(A0, A1, I);
36221 case PT_Sint32:
36222 return emitInitThisBitFieldSint32(A0, A1, I);
36223 case PT_Uint32:
36224 return emitInitThisBitFieldUint32(A0, A1, I);
36225 case PT_Sint64:
36226 return emitInitThisBitFieldSint64(A0, A1, I);
36227 case PT_Uint64:
36228 return emitInitThisBitFieldUint64(A0, A1, I);
36229 case PT_IntAP:
36230 return emitInitThisBitFieldIntAP(A0, A1, I);
36231 case PT_IntAPS:
36232 return emitInitThisBitFieldIntAPS(A0, A1, I);
36233 case PT_Bool:
36234 return emitInitThisBitFieldBool(A0, A1, I);
36235 default: llvm_unreachable("invalid type: emitInitThisBitField");
36236 }
36237 llvm_unreachable("invalid enum value");
36238}
36239#endif
36240#ifdef GET_LINK_IMPL
36241bool ByteCodeEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
36242 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
36243}
36244bool ByteCodeEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
36245 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
36246}
36247bool ByteCodeEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
36248 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
36249}
36250bool ByteCodeEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
36251 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
36252}
36253bool ByteCodeEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
36254 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
36255}
36256bool ByteCodeEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
36257 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
36258}
36259bool ByteCodeEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
36260 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
36261}
36262bool ByteCodeEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
36263 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
36264}
36265bool ByteCodeEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
36266 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
36267}
36268bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
36269 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
36270}
36271bool ByteCodeEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
36272 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
36273}
36274#endif
36275#ifdef GET_EVAL_IMPL
36276bool EvalEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
36277 if (!isActive()) return true;
36278 CurrentSource = L;
36279 return InitThisBitField<PT_Sint8>(S, OpPC, A0, A1);
36280}
36281bool EvalEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
36282 if (!isActive()) return true;
36283 CurrentSource = L;
36284 return InitThisBitField<PT_Uint8>(S, OpPC, A0, A1);
36285}
36286bool EvalEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
36287 if (!isActive()) return true;
36288 CurrentSource = L;
36289 return InitThisBitField<PT_Sint16>(S, OpPC, A0, A1);
36290}
36291bool EvalEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
36292 if (!isActive()) return true;
36293 CurrentSource = L;
36294 return InitThisBitField<PT_Uint16>(S, OpPC, A0, A1);
36295}
36296bool EvalEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
36297 if (!isActive()) return true;
36298 CurrentSource = L;
36299 return InitThisBitField<PT_Sint32>(S, OpPC, A0, A1);
36300}
36301bool EvalEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
36302 if (!isActive()) return true;
36303 CurrentSource = L;
36304 return InitThisBitField<PT_Uint32>(S, OpPC, A0, A1);
36305}
36306bool EvalEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
36307 if (!isActive()) return true;
36308 CurrentSource = L;
36309 return InitThisBitField<PT_Sint64>(S, OpPC, A0, A1);
36310}
36311bool EvalEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
36312 if (!isActive()) return true;
36313 CurrentSource = L;
36314 return InitThisBitField<PT_Uint64>(S, OpPC, A0, A1);
36315}
36316bool EvalEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
36317 if (!isActive()) return true;
36318 CurrentSource = L;
36319 return InitThisBitField<PT_IntAP>(S, OpPC, A0, A1);
36320}
36321bool EvalEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
36322 if (!isActive()) return true;
36323 CurrentSource = L;
36324 return InitThisBitField<PT_IntAPS>(S, OpPC, A0, A1);
36325}
36326bool EvalEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
36327 if (!isActive()) return true;
36328 CurrentSource = L;
36329 return InitThisBitField<PT_Bool>(S, OpPC, A0, A1);
36330}
36331#endif
36332#ifdef GET_OPCODE_NAMES
36333OP_InitThisFieldSint8,
36334OP_InitThisFieldUint8,
36335OP_InitThisFieldSint16,
36336OP_InitThisFieldUint16,
36337OP_InitThisFieldSint32,
36338OP_InitThisFieldUint32,
36339OP_InitThisFieldSint64,
36340OP_InitThisFieldUint64,
36341OP_InitThisFieldIntAP,
36342OP_InitThisFieldIntAPS,
36343OP_InitThisFieldBool,
36344OP_InitThisFieldFixedPoint,
36345OP_InitThisFieldPtr,
36346OP_InitThisFieldMemberPtr,
36347OP_InitThisFieldFloat,
36348#endif
36349#ifdef GET_INTERPFN_LIST
36350&Interp_InitThisFieldSint8,
36351&Interp_InitThisFieldUint8,
36352&Interp_InitThisFieldSint16,
36353&Interp_InitThisFieldUint16,
36354&Interp_InitThisFieldSint32,
36355&Interp_InitThisFieldUint32,
36356&Interp_InitThisFieldSint64,
36357&Interp_InitThisFieldUint64,
36358&Interp_InitThisFieldIntAP,
36359&Interp_InitThisFieldIntAPS,
36360&Interp_InitThisFieldBool,
36361&Interp_InitThisFieldFixedPoint,
36362&Interp_InitThisFieldPtr,
36363&Interp_InitThisFieldMemberPtr,
36364&Interp_InitThisFieldFloat,
36365#endif
36366#ifdef GET_INTERPFN_DISPATCHERS
36367PRESERVE_NONE
36368static bool Interp_InitThisFieldSint8(InterpState &S, CodePtr &PC) {
36369 {
36370 CodePtr OpPC = PC;
36371 const auto V0 = ReadArg<uint32_t>(S, PC);
36372 if (!InitThisField<PT_Sint8>(S, OpPC, V0))
36373 return false;
36374 }
36375#if USE_TAILCALLS
36376 MUSTTAIL return InterpNext(S, PC);
36377#else
36378 return true;
36379#endif
36380}
36381PRESERVE_NONE
36382static bool Interp_InitThisFieldUint8(InterpState &S, CodePtr &PC) {
36383 {
36384 CodePtr OpPC = PC;
36385 const auto V0 = ReadArg<uint32_t>(S, PC);
36386 if (!InitThisField<PT_Uint8>(S, OpPC, V0))
36387 return false;
36388 }
36389#if USE_TAILCALLS
36390 MUSTTAIL return InterpNext(S, PC);
36391#else
36392 return true;
36393#endif
36394}
36395PRESERVE_NONE
36396static bool Interp_InitThisFieldSint16(InterpState &S, CodePtr &PC) {
36397 {
36398 CodePtr OpPC = PC;
36399 const auto V0 = ReadArg<uint32_t>(S, PC);
36400 if (!InitThisField<PT_Sint16>(S, OpPC, V0))
36401 return false;
36402 }
36403#if USE_TAILCALLS
36404 MUSTTAIL return InterpNext(S, PC);
36405#else
36406 return true;
36407#endif
36408}
36409PRESERVE_NONE
36410static bool Interp_InitThisFieldUint16(InterpState &S, CodePtr &PC) {
36411 {
36412 CodePtr OpPC = PC;
36413 const auto V0 = ReadArg<uint32_t>(S, PC);
36414 if (!InitThisField<PT_Uint16>(S, OpPC, V0))
36415 return false;
36416 }
36417#if USE_TAILCALLS
36418 MUSTTAIL return InterpNext(S, PC);
36419#else
36420 return true;
36421#endif
36422}
36423PRESERVE_NONE
36424static bool Interp_InitThisFieldSint32(InterpState &S, CodePtr &PC) {
36425 {
36426 CodePtr OpPC = PC;
36427 const auto V0 = ReadArg<uint32_t>(S, PC);
36428 if (!InitThisField<PT_Sint32>(S, OpPC, V0))
36429 return false;
36430 }
36431#if USE_TAILCALLS
36432 MUSTTAIL return InterpNext(S, PC);
36433#else
36434 return true;
36435#endif
36436}
36437PRESERVE_NONE
36438static bool Interp_InitThisFieldUint32(InterpState &S, CodePtr &PC) {
36439 {
36440 CodePtr OpPC = PC;
36441 const auto V0 = ReadArg<uint32_t>(S, PC);
36442 if (!InitThisField<PT_Uint32>(S, OpPC, V0))
36443 return false;
36444 }
36445#if USE_TAILCALLS
36446 MUSTTAIL return InterpNext(S, PC);
36447#else
36448 return true;
36449#endif
36450}
36451PRESERVE_NONE
36452static bool Interp_InitThisFieldSint64(InterpState &S, CodePtr &PC) {
36453 {
36454 CodePtr OpPC = PC;
36455 const auto V0 = ReadArg<uint32_t>(S, PC);
36456 if (!InitThisField<PT_Sint64>(S, OpPC, V0))
36457 return false;
36458 }
36459#if USE_TAILCALLS
36460 MUSTTAIL return InterpNext(S, PC);
36461#else
36462 return true;
36463#endif
36464}
36465PRESERVE_NONE
36466static bool Interp_InitThisFieldUint64(InterpState &S, CodePtr &PC) {
36467 {
36468 CodePtr OpPC = PC;
36469 const auto V0 = ReadArg<uint32_t>(S, PC);
36470 if (!InitThisField<PT_Uint64>(S, OpPC, V0))
36471 return false;
36472 }
36473#if USE_TAILCALLS
36474 MUSTTAIL return InterpNext(S, PC);
36475#else
36476 return true;
36477#endif
36478}
36479PRESERVE_NONE
36480static bool Interp_InitThisFieldIntAP(InterpState &S, CodePtr &PC) {
36481 {
36482 CodePtr OpPC = PC;
36483 const auto V0 = ReadArg<uint32_t>(S, PC);
36484 if (!InitThisField<PT_IntAP>(S, OpPC, V0))
36485 return false;
36486 }
36487#if USE_TAILCALLS
36488 MUSTTAIL return InterpNext(S, PC);
36489#else
36490 return true;
36491#endif
36492}
36493PRESERVE_NONE
36494static bool Interp_InitThisFieldIntAPS(InterpState &S, CodePtr &PC) {
36495 {
36496 CodePtr OpPC = PC;
36497 const auto V0 = ReadArg<uint32_t>(S, PC);
36498 if (!InitThisField<PT_IntAPS>(S, OpPC, V0))
36499 return false;
36500 }
36501#if USE_TAILCALLS
36502 MUSTTAIL return InterpNext(S, PC);
36503#else
36504 return true;
36505#endif
36506}
36507PRESERVE_NONE
36508static bool Interp_InitThisFieldBool(InterpState &S, CodePtr &PC) {
36509 {
36510 CodePtr OpPC = PC;
36511 const auto V0 = ReadArg<uint32_t>(S, PC);
36512 if (!InitThisField<PT_Bool>(S, OpPC, V0))
36513 return false;
36514 }
36515#if USE_TAILCALLS
36516 MUSTTAIL return InterpNext(S, PC);
36517#else
36518 return true;
36519#endif
36520}
36521PRESERVE_NONE
36522static bool Interp_InitThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
36523 {
36524 CodePtr OpPC = PC;
36525 const auto V0 = ReadArg<uint32_t>(S, PC);
36526 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0))
36527 return false;
36528 }
36529#if USE_TAILCALLS
36530 MUSTTAIL return InterpNext(S, PC);
36531#else
36532 return true;
36533#endif
36534}
36535PRESERVE_NONE
36536static bool Interp_InitThisFieldPtr(InterpState &S, CodePtr &PC) {
36537 {
36538 CodePtr OpPC = PC;
36539 const auto V0 = ReadArg<uint32_t>(S, PC);
36540 if (!InitThisField<PT_Ptr>(S, OpPC, V0))
36541 return false;
36542 }
36543#if USE_TAILCALLS
36544 MUSTTAIL return InterpNext(S, PC);
36545#else
36546 return true;
36547#endif
36548}
36549PRESERVE_NONE
36550static bool Interp_InitThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
36551 {
36552 CodePtr OpPC = PC;
36553 const auto V0 = ReadArg<uint32_t>(S, PC);
36554 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0))
36555 return false;
36556 }
36557#if USE_TAILCALLS
36558 MUSTTAIL return InterpNext(S, PC);
36559#else
36560 return true;
36561#endif
36562}
36563PRESERVE_NONE
36564static bool Interp_InitThisFieldFloat(InterpState &S, CodePtr &PC) {
36565 {
36566 CodePtr OpPC = PC;
36567 const auto V0 = ReadArg<uint32_t>(S, PC);
36568 if (!InitThisField<PT_Float>(S, OpPC, V0))
36569 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_InitThisFieldSint8:
36580 Text.Op = PrintName("InitThisFieldSint8");
36581 Text.Args.push_back(printArg<uint32_t>(P, PC));
36582 break;
36583case OP_InitThisFieldUint8:
36584 Text.Op = PrintName("InitThisFieldUint8");
36585 Text.Args.push_back(printArg<uint32_t>(P, PC));
36586 break;
36587case OP_InitThisFieldSint16:
36588 Text.Op = PrintName("InitThisFieldSint16");
36589 Text.Args.push_back(printArg<uint32_t>(P, PC));
36590 break;
36591case OP_InitThisFieldUint16:
36592 Text.Op = PrintName("InitThisFieldUint16");
36593 Text.Args.push_back(printArg<uint32_t>(P, PC));
36594 break;
36595case OP_InitThisFieldSint32:
36596 Text.Op = PrintName("InitThisFieldSint32");
36597 Text.Args.push_back(printArg<uint32_t>(P, PC));
36598 break;
36599case OP_InitThisFieldUint32:
36600 Text.Op = PrintName("InitThisFieldUint32");
36601 Text.Args.push_back(printArg<uint32_t>(P, PC));
36602 break;
36603case OP_InitThisFieldSint64:
36604 Text.Op = PrintName("InitThisFieldSint64");
36605 Text.Args.push_back(printArg<uint32_t>(P, PC));
36606 break;
36607case OP_InitThisFieldUint64:
36608 Text.Op = PrintName("InitThisFieldUint64");
36609 Text.Args.push_back(printArg<uint32_t>(P, PC));
36610 break;
36611case OP_InitThisFieldIntAP:
36612 Text.Op = PrintName("InitThisFieldIntAP");
36613 Text.Args.push_back(printArg<uint32_t>(P, PC));
36614 break;
36615case OP_InitThisFieldIntAPS:
36616 Text.Op = PrintName("InitThisFieldIntAPS");
36617 Text.Args.push_back(printArg<uint32_t>(P, PC));
36618 break;
36619case OP_InitThisFieldBool:
36620 Text.Op = PrintName("InitThisFieldBool");
36621 Text.Args.push_back(printArg<uint32_t>(P, PC));
36622 break;
36623case OP_InitThisFieldFixedPoint:
36624 Text.Op = PrintName("InitThisFieldFixedPoint");
36625 Text.Args.push_back(printArg<uint32_t>(P, PC));
36626 break;
36627case OP_InitThisFieldPtr:
36628 Text.Op = PrintName("InitThisFieldPtr");
36629 Text.Args.push_back(printArg<uint32_t>(P, PC));
36630 break;
36631case OP_InitThisFieldMemberPtr:
36632 Text.Op = PrintName("InitThisFieldMemberPtr");
36633 Text.Args.push_back(printArg<uint32_t>(P, PC));
36634 break;
36635case OP_InitThisFieldFloat:
36636 Text.Op = PrintName("InitThisFieldFloat");
36637 Text.Args.push_back(printArg<uint32_t>(P, PC));
36638 break;
36639#endif
36640#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36641bool emitInitThisFieldSint8( uint32_t , SourceInfo);
36642bool emitInitThisFieldUint8( uint32_t , SourceInfo);
36643bool emitInitThisFieldSint16( uint32_t , SourceInfo);
36644bool emitInitThisFieldUint16( uint32_t , SourceInfo);
36645bool emitInitThisFieldSint32( uint32_t , SourceInfo);
36646bool emitInitThisFieldUint32( uint32_t , SourceInfo);
36647bool emitInitThisFieldSint64( uint32_t , SourceInfo);
36648bool emitInitThisFieldUint64( uint32_t , SourceInfo);
36649bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
36650bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
36651bool emitInitThisFieldBool( uint32_t , SourceInfo);
36652bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
36653bool emitInitThisFieldPtr( uint32_t , SourceInfo);
36654bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
36655bool emitInitThisFieldFloat( uint32_t , SourceInfo);
36656#endif
36657#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36658[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
36659#endif
36660#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36661bool
36662#if defined(GET_EVAL_IMPL)
36663EvalEmitter
36664#else
36665ByteCodeEmitter
36666#endif
36667::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
36668 switch (T0) {
36669 case PT_Sint8:
36670 return emitInitThisFieldSint8(A0, I);
36671 case PT_Uint8:
36672 return emitInitThisFieldUint8(A0, I);
36673 case PT_Sint16:
36674 return emitInitThisFieldSint16(A0, I);
36675 case PT_Uint16:
36676 return emitInitThisFieldUint16(A0, I);
36677 case PT_Sint32:
36678 return emitInitThisFieldSint32(A0, I);
36679 case PT_Uint32:
36680 return emitInitThisFieldUint32(A0, I);
36681 case PT_Sint64:
36682 return emitInitThisFieldSint64(A0, I);
36683 case PT_Uint64:
36684 return emitInitThisFieldUint64(A0, I);
36685 case PT_IntAP:
36686 return emitInitThisFieldIntAP(A0, I);
36687 case PT_IntAPS:
36688 return emitInitThisFieldIntAPS(A0, I);
36689 case PT_Bool:
36690 return emitInitThisFieldBool(A0, I);
36691 case PT_FixedPoint:
36692 return emitInitThisFieldFixedPoint(A0, I);
36693 case PT_Ptr:
36694 return emitInitThisFieldPtr(A0, I);
36695 case PT_MemberPtr:
36696 return emitInitThisFieldMemberPtr(A0, I);
36697 case PT_Float:
36698 return emitInitThisFieldFloat(A0, I);
36699 }
36700 llvm_unreachable("invalid enum value");
36701}
36702#endif
36703#ifdef GET_LINK_IMPL
36704bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
36705 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
36706}
36707bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
36708 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
36709}
36710bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
36711 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
36712}
36713bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
36714 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
36715}
36716bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
36717 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
36718}
36719bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
36720 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
36721}
36722bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
36723 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
36724}
36725bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
36726 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
36727}
36728bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
36729 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
36730}
36731bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
36732 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
36733}
36734bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
36735 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
36736}
36737bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
36738 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
36739}
36740bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
36741 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
36742}
36743bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
36744 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
36745}
36746bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
36747 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
36748}
36749#endif
36750#ifdef GET_EVAL_IMPL
36751bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
36752 if (!isActive()) return true;
36753 CurrentSource = L;
36754 return InitThisField<PT_Sint8>(S, OpPC, A0);
36755}
36756bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
36757 if (!isActive()) return true;
36758 CurrentSource = L;
36759 return InitThisField<PT_Uint8>(S, OpPC, A0);
36760}
36761bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
36762 if (!isActive()) return true;
36763 CurrentSource = L;
36764 return InitThisField<PT_Sint16>(S, OpPC, A0);
36765}
36766bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
36767 if (!isActive()) return true;
36768 CurrentSource = L;
36769 return InitThisField<PT_Uint16>(S, OpPC, A0);
36770}
36771bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
36772 if (!isActive()) return true;
36773 CurrentSource = L;
36774 return InitThisField<PT_Sint32>(S, OpPC, A0);
36775}
36776bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
36777 if (!isActive()) return true;
36778 CurrentSource = L;
36779 return InitThisField<PT_Uint32>(S, OpPC, A0);
36780}
36781bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
36782 if (!isActive()) return true;
36783 CurrentSource = L;
36784 return InitThisField<PT_Sint64>(S, OpPC, A0);
36785}
36786bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
36787 if (!isActive()) return true;
36788 CurrentSource = L;
36789 return InitThisField<PT_Uint64>(S, OpPC, A0);
36790}
36791bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
36792 if (!isActive()) return true;
36793 CurrentSource = L;
36794 return InitThisField<PT_IntAP>(S, OpPC, A0);
36795}
36796bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
36797 if (!isActive()) return true;
36798 CurrentSource = L;
36799 return InitThisField<PT_IntAPS>(S, OpPC, A0);
36800}
36801bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
36802 if (!isActive()) return true;
36803 CurrentSource = L;
36804 return InitThisField<PT_Bool>(S, OpPC, A0);
36805}
36806bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
36807 if (!isActive()) return true;
36808 CurrentSource = L;
36809 return InitThisField<PT_FixedPoint>(S, OpPC, A0);
36810}
36811bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
36812 if (!isActive()) return true;
36813 CurrentSource = L;
36814 return InitThisField<PT_Ptr>(S, OpPC, A0);
36815}
36816bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
36817 if (!isActive()) return true;
36818 CurrentSource = L;
36819 return InitThisField<PT_MemberPtr>(S, OpPC, A0);
36820}
36821bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
36822 if (!isActive()) return true;
36823 CurrentSource = L;
36824 return InitThisField<PT_Float>(S, OpPC, A0);
36825}
36826#endif
36827#ifdef GET_OPCODE_NAMES
36828OP_InitThisFieldActivateSint8,
36829OP_InitThisFieldActivateUint8,
36830OP_InitThisFieldActivateSint16,
36831OP_InitThisFieldActivateUint16,
36832OP_InitThisFieldActivateSint32,
36833OP_InitThisFieldActivateUint32,
36834OP_InitThisFieldActivateSint64,
36835OP_InitThisFieldActivateUint64,
36836OP_InitThisFieldActivateIntAP,
36837OP_InitThisFieldActivateIntAPS,
36838OP_InitThisFieldActivateBool,
36839OP_InitThisFieldActivateFixedPoint,
36840OP_InitThisFieldActivatePtr,
36841OP_InitThisFieldActivateMemberPtr,
36842OP_InitThisFieldActivateFloat,
36843#endif
36844#ifdef GET_INTERPFN_LIST
36845&Interp_InitThisFieldActivateSint8,
36846&Interp_InitThisFieldActivateUint8,
36847&Interp_InitThisFieldActivateSint16,
36848&Interp_InitThisFieldActivateUint16,
36849&Interp_InitThisFieldActivateSint32,
36850&Interp_InitThisFieldActivateUint32,
36851&Interp_InitThisFieldActivateSint64,
36852&Interp_InitThisFieldActivateUint64,
36853&Interp_InitThisFieldActivateIntAP,
36854&Interp_InitThisFieldActivateIntAPS,
36855&Interp_InitThisFieldActivateBool,
36856&Interp_InitThisFieldActivateFixedPoint,
36857&Interp_InitThisFieldActivatePtr,
36858&Interp_InitThisFieldActivateMemberPtr,
36859&Interp_InitThisFieldActivateFloat,
36860#endif
36861#ifdef GET_INTERPFN_DISPATCHERS
36862PRESERVE_NONE
36863static bool Interp_InitThisFieldActivateSint8(InterpState &S, CodePtr &PC) {
36864 {
36865 CodePtr OpPC = PC;
36866 const auto V0 = ReadArg<uint32_t>(S, PC);
36867 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0))
36868 return false;
36869 }
36870#if USE_TAILCALLS
36871 MUSTTAIL return InterpNext(S, PC);
36872#else
36873 return true;
36874#endif
36875}
36876PRESERVE_NONE
36877static bool Interp_InitThisFieldActivateUint8(InterpState &S, CodePtr &PC) {
36878 {
36879 CodePtr OpPC = PC;
36880 const auto V0 = ReadArg<uint32_t>(S, PC);
36881 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0))
36882 return false;
36883 }
36884#if USE_TAILCALLS
36885 MUSTTAIL return InterpNext(S, PC);
36886#else
36887 return true;
36888#endif
36889}
36890PRESERVE_NONE
36891static bool Interp_InitThisFieldActivateSint16(InterpState &S, CodePtr &PC) {
36892 {
36893 CodePtr OpPC = PC;
36894 const auto V0 = ReadArg<uint32_t>(S, PC);
36895 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0))
36896 return false;
36897 }
36898#if USE_TAILCALLS
36899 MUSTTAIL return InterpNext(S, PC);
36900#else
36901 return true;
36902#endif
36903}
36904PRESERVE_NONE
36905static bool Interp_InitThisFieldActivateUint16(InterpState &S, CodePtr &PC) {
36906 {
36907 CodePtr OpPC = PC;
36908 const auto V0 = ReadArg<uint32_t>(S, PC);
36909 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0))
36910 return false;
36911 }
36912#if USE_TAILCALLS
36913 MUSTTAIL return InterpNext(S, PC);
36914#else
36915 return true;
36916#endif
36917}
36918PRESERVE_NONE
36919static bool Interp_InitThisFieldActivateSint32(InterpState &S, CodePtr &PC) {
36920 {
36921 CodePtr OpPC = PC;
36922 const auto V0 = ReadArg<uint32_t>(S, PC);
36923 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0))
36924 return false;
36925 }
36926#if USE_TAILCALLS
36927 MUSTTAIL return InterpNext(S, PC);
36928#else
36929 return true;
36930#endif
36931}
36932PRESERVE_NONE
36933static bool Interp_InitThisFieldActivateUint32(InterpState &S, CodePtr &PC) {
36934 {
36935 CodePtr OpPC = PC;
36936 const auto V0 = ReadArg<uint32_t>(S, PC);
36937 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0))
36938 return false;
36939 }
36940#if USE_TAILCALLS
36941 MUSTTAIL return InterpNext(S, PC);
36942#else
36943 return true;
36944#endif
36945}
36946PRESERVE_NONE
36947static bool Interp_InitThisFieldActivateSint64(InterpState &S, CodePtr &PC) {
36948 {
36949 CodePtr OpPC = PC;
36950 const auto V0 = ReadArg<uint32_t>(S, PC);
36951 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0))
36952 return false;
36953 }
36954#if USE_TAILCALLS
36955 MUSTTAIL return InterpNext(S, PC);
36956#else
36957 return true;
36958#endif
36959}
36960PRESERVE_NONE
36961static bool Interp_InitThisFieldActivateUint64(InterpState &S, CodePtr &PC) {
36962 {
36963 CodePtr OpPC = PC;
36964 const auto V0 = ReadArg<uint32_t>(S, PC);
36965 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0))
36966 return false;
36967 }
36968#if USE_TAILCALLS
36969 MUSTTAIL return InterpNext(S, PC);
36970#else
36971 return true;
36972#endif
36973}
36974PRESERVE_NONE
36975static bool Interp_InitThisFieldActivateIntAP(InterpState &S, CodePtr &PC) {
36976 {
36977 CodePtr OpPC = PC;
36978 const auto V0 = ReadArg<uint32_t>(S, PC);
36979 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0))
36980 return false;
36981 }
36982#if USE_TAILCALLS
36983 MUSTTAIL return InterpNext(S, PC);
36984#else
36985 return true;
36986#endif
36987}
36988PRESERVE_NONE
36989static bool Interp_InitThisFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
36990 {
36991 CodePtr OpPC = PC;
36992 const auto V0 = ReadArg<uint32_t>(S, PC);
36993 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0))
36994 return false;
36995 }
36996#if USE_TAILCALLS
36997 MUSTTAIL return InterpNext(S, PC);
36998#else
36999 return true;
37000#endif
37001}
37002PRESERVE_NONE
37003static bool Interp_InitThisFieldActivateBool(InterpState &S, CodePtr &PC) {
37004 {
37005 CodePtr OpPC = PC;
37006 const auto V0 = ReadArg<uint32_t>(S, PC);
37007 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0))
37008 return false;
37009 }
37010#if USE_TAILCALLS
37011 MUSTTAIL return InterpNext(S, PC);
37012#else
37013 return true;
37014#endif
37015}
37016PRESERVE_NONE
37017static bool Interp_InitThisFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
37018 {
37019 CodePtr OpPC = PC;
37020 const auto V0 = ReadArg<uint32_t>(S, PC);
37021 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0))
37022 return false;
37023 }
37024#if USE_TAILCALLS
37025 MUSTTAIL return InterpNext(S, PC);
37026#else
37027 return true;
37028#endif
37029}
37030PRESERVE_NONE
37031static bool Interp_InitThisFieldActivatePtr(InterpState &S, CodePtr &PC) {
37032 {
37033 CodePtr OpPC = PC;
37034 const auto V0 = ReadArg<uint32_t>(S, PC);
37035 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0))
37036 return false;
37037 }
37038#if USE_TAILCALLS
37039 MUSTTAIL return InterpNext(S, PC);
37040#else
37041 return true;
37042#endif
37043}
37044PRESERVE_NONE
37045static bool Interp_InitThisFieldActivateMemberPtr(InterpState &S, CodePtr &PC) {
37046 {
37047 CodePtr OpPC = PC;
37048 const auto V0 = ReadArg<uint32_t>(S, PC);
37049 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0))
37050 return false;
37051 }
37052#if USE_TAILCALLS
37053 MUSTTAIL return InterpNext(S, PC);
37054#else
37055 return true;
37056#endif
37057}
37058PRESERVE_NONE
37059static bool Interp_InitThisFieldActivateFloat(InterpState &S, CodePtr &PC) {
37060 {
37061 CodePtr OpPC = PC;
37062 const auto V0 = ReadArg<uint32_t>(S, PC);
37063 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0))
37064 return false;
37065 }
37066#if USE_TAILCALLS
37067 MUSTTAIL return InterpNext(S, PC);
37068#else
37069 return true;
37070#endif
37071}
37072#endif
37073#ifdef GET_DISASM
37074case OP_InitThisFieldActivateSint8:
37075 Text.Op = PrintName("InitThisFieldActivateSint8");
37076 Text.Args.push_back(printArg<uint32_t>(P, PC));
37077 break;
37078case OP_InitThisFieldActivateUint8:
37079 Text.Op = PrintName("InitThisFieldActivateUint8");
37080 Text.Args.push_back(printArg<uint32_t>(P, PC));
37081 break;
37082case OP_InitThisFieldActivateSint16:
37083 Text.Op = PrintName("InitThisFieldActivateSint16");
37084 Text.Args.push_back(printArg<uint32_t>(P, PC));
37085 break;
37086case OP_InitThisFieldActivateUint16:
37087 Text.Op = PrintName("InitThisFieldActivateUint16");
37088 Text.Args.push_back(printArg<uint32_t>(P, PC));
37089 break;
37090case OP_InitThisFieldActivateSint32:
37091 Text.Op = PrintName("InitThisFieldActivateSint32");
37092 Text.Args.push_back(printArg<uint32_t>(P, PC));
37093 break;
37094case OP_InitThisFieldActivateUint32:
37095 Text.Op = PrintName("InitThisFieldActivateUint32");
37096 Text.Args.push_back(printArg<uint32_t>(P, PC));
37097 break;
37098case OP_InitThisFieldActivateSint64:
37099 Text.Op = PrintName("InitThisFieldActivateSint64");
37100 Text.Args.push_back(printArg<uint32_t>(P, PC));
37101 break;
37102case OP_InitThisFieldActivateUint64:
37103 Text.Op = PrintName("InitThisFieldActivateUint64");
37104 Text.Args.push_back(printArg<uint32_t>(P, PC));
37105 break;
37106case OP_InitThisFieldActivateIntAP:
37107 Text.Op = PrintName("InitThisFieldActivateIntAP");
37108 Text.Args.push_back(printArg<uint32_t>(P, PC));
37109 break;
37110case OP_InitThisFieldActivateIntAPS:
37111 Text.Op = PrintName("InitThisFieldActivateIntAPS");
37112 Text.Args.push_back(printArg<uint32_t>(P, PC));
37113 break;
37114case OP_InitThisFieldActivateBool:
37115 Text.Op = PrintName("InitThisFieldActivateBool");
37116 Text.Args.push_back(printArg<uint32_t>(P, PC));
37117 break;
37118case OP_InitThisFieldActivateFixedPoint:
37119 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
37120 Text.Args.push_back(printArg<uint32_t>(P, PC));
37121 break;
37122case OP_InitThisFieldActivatePtr:
37123 Text.Op = PrintName("InitThisFieldActivatePtr");
37124 Text.Args.push_back(printArg<uint32_t>(P, PC));
37125 break;
37126case OP_InitThisFieldActivateMemberPtr:
37127 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
37128 Text.Args.push_back(printArg<uint32_t>(P, PC));
37129 break;
37130case OP_InitThisFieldActivateFloat:
37131 Text.Op = PrintName("InitThisFieldActivateFloat");
37132 Text.Args.push_back(printArg<uint32_t>(P, PC));
37133 break;
37134#endif
37135#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37136bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
37137bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
37138bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
37139bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
37140bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
37141bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
37142bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
37143bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
37144bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
37145bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
37146bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
37147bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
37148bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
37149bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
37150bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
37151#endif
37152#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37153[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
37154#endif
37155#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37156bool
37157#if defined(GET_EVAL_IMPL)
37158EvalEmitter
37159#else
37160ByteCodeEmitter
37161#endif
37162::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
37163 switch (T0) {
37164 case PT_Sint8:
37165 return emitInitThisFieldActivateSint8(A0, I);
37166 case PT_Uint8:
37167 return emitInitThisFieldActivateUint8(A0, I);
37168 case PT_Sint16:
37169 return emitInitThisFieldActivateSint16(A0, I);
37170 case PT_Uint16:
37171 return emitInitThisFieldActivateUint16(A0, I);
37172 case PT_Sint32:
37173 return emitInitThisFieldActivateSint32(A0, I);
37174 case PT_Uint32:
37175 return emitInitThisFieldActivateUint32(A0, I);
37176 case PT_Sint64:
37177 return emitInitThisFieldActivateSint64(A0, I);
37178 case PT_Uint64:
37179 return emitInitThisFieldActivateUint64(A0, I);
37180 case PT_IntAP:
37181 return emitInitThisFieldActivateIntAP(A0, I);
37182 case PT_IntAPS:
37183 return emitInitThisFieldActivateIntAPS(A0, I);
37184 case PT_Bool:
37185 return emitInitThisFieldActivateBool(A0, I);
37186 case PT_FixedPoint:
37187 return emitInitThisFieldActivateFixedPoint(A0, I);
37188 case PT_Ptr:
37189 return emitInitThisFieldActivatePtr(A0, I);
37190 case PT_MemberPtr:
37191 return emitInitThisFieldActivateMemberPtr(A0, I);
37192 case PT_Float:
37193 return emitInitThisFieldActivateFloat(A0, I);
37194 }
37195 llvm_unreachable("invalid enum value");
37196}
37197#endif
37198#ifdef GET_LINK_IMPL
37199bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
37200 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
37201}
37202bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
37203 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
37204}
37205bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
37206 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
37207}
37208bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
37209 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
37210}
37211bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
37212 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
37213}
37214bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
37215 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
37216}
37217bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
37218 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
37219}
37220bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
37221 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
37222}
37223bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
37224 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
37225}
37226bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
37227 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
37228}
37229bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
37230 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
37231}
37232bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
37233 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
37234}
37235bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
37236 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
37237}
37238bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
37239 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
37240}
37241bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
37242 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
37243}
37244#endif
37245#ifdef GET_EVAL_IMPL
37246bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
37247 if (!isActive()) return true;
37248 CurrentSource = L;
37249 return InitThisFieldActivate<PT_Sint8>(S, OpPC, A0);
37250}
37251bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
37252 if (!isActive()) return true;
37253 CurrentSource = L;
37254 return InitThisFieldActivate<PT_Uint8>(S, OpPC, A0);
37255}
37256bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
37257 if (!isActive()) return true;
37258 CurrentSource = L;
37259 return InitThisFieldActivate<PT_Sint16>(S, OpPC, A0);
37260}
37261bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
37262 if (!isActive()) return true;
37263 CurrentSource = L;
37264 return InitThisFieldActivate<PT_Uint16>(S, OpPC, A0);
37265}
37266bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
37267 if (!isActive()) return true;
37268 CurrentSource = L;
37269 return InitThisFieldActivate<PT_Sint32>(S, OpPC, A0);
37270}
37271bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
37272 if (!isActive()) return true;
37273 CurrentSource = L;
37274 return InitThisFieldActivate<PT_Uint32>(S, OpPC, A0);
37275}
37276bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
37277 if (!isActive()) return true;
37278 CurrentSource = L;
37279 return InitThisFieldActivate<PT_Sint64>(S, OpPC, A0);
37280}
37281bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
37282 if (!isActive()) return true;
37283 CurrentSource = L;
37284 return InitThisFieldActivate<PT_Uint64>(S, OpPC, A0);
37285}
37286bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
37287 if (!isActive()) return true;
37288 CurrentSource = L;
37289 return InitThisFieldActivate<PT_IntAP>(S, OpPC, A0);
37290}
37291bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
37292 if (!isActive()) return true;
37293 CurrentSource = L;
37294 return InitThisFieldActivate<PT_IntAPS>(S, OpPC, A0);
37295}
37296bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
37297 if (!isActive()) return true;
37298 CurrentSource = L;
37299 return InitThisFieldActivate<PT_Bool>(S, OpPC, A0);
37300}
37301bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
37302 if (!isActive()) return true;
37303 CurrentSource = L;
37304 return InitThisFieldActivate<PT_FixedPoint>(S, OpPC, A0);
37305}
37306bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
37307 if (!isActive()) return true;
37308 CurrentSource = L;
37309 return InitThisFieldActivate<PT_Ptr>(S, OpPC, A0);
37310}
37311bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
37312 if (!isActive()) return true;
37313 CurrentSource = L;
37314 return InitThisFieldActivate<PT_MemberPtr>(S, OpPC, A0);
37315}
37316bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
37317 if (!isActive()) return true;
37318 CurrentSource = L;
37319 return InitThisFieldActivate<PT_Float>(S, OpPC, A0);
37320}
37321#endif
37322#ifdef GET_OPCODE_NAMES
37323OP_Inv,
37324#endif
37325#ifdef GET_INTERPFN_LIST
37326&Interp_Inv,
37327#endif
37328#ifdef GET_INTERPFN_DISPATCHERS
37329PRESERVE_NONE
37330static bool Interp_Inv(InterpState &S, CodePtr &PC) {
37331 if (!Inv(S, PC))
37332 return false;
37333#if USE_TAILCALLS
37334 MUSTTAIL return InterpNext(S, PC);
37335#else
37336 return true;
37337#endif
37338}
37339#endif
37340#ifdef GET_DISASM
37341case OP_Inv:
37342 Text.Op = PrintName("Inv");
37343 break;
37344#endif
37345#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37346bool emitInv(SourceInfo);
37347#endif
37348#ifdef GET_LINK_IMPL
37349bool ByteCodeEmitter::emitInv(SourceInfo L) {
37350 return emitOp<>(OP_Inv, L);
37351}
37352#endif
37353#ifdef GET_EVAL_IMPL
37354bool EvalEmitter::emitInv(SourceInfo L) {
37355 if (!isActive()) return true;
37356 CurrentSource = L;
37357 return Inv(S, OpPC);
37358}
37359#endif
37360#ifdef GET_OPCODE_NAMES
37361OP_Invalid,
37362#endif
37363#ifdef GET_INTERPFN_LIST
37364&Interp_Invalid,
37365#endif
37366#ifdef GET_INTERPFN_DISPATCHERS
37367PRESERVE_NONE
37368static bool Interp_Invalid(InterpState &S, CodePtr &PC) {
37369 if (!Invalid(S, PC))
37370 return false;
37371#if USE_TAILCALLS
37372 MUSTTAIL return InterpNext(S, PC);
37373#else
37374 return true;
37375#endif
37376}
37377#endif
37378#ifdef GET_DISASM
37379case OP_Invalid:
37380 Text.Op = PrintName("Invalid");
37381 break;
37382#endif
37383#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37384bool emitInvalid(SourceInfo);
37385#endif
37386#ifdef GET_LINK_IMPL
37387bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
37388 return emitOp<>(OP_Invalid, L);
37389}
37390#endif
37391#ifdef GET_EVAL_IMPL
37392bool EvalEmitter::emitInvalid(SourceInfo L) {
37393 if (!isActive()) return true;
37394 CurrentSource = L;
37395 return Invalid(S, OpPC);
37396}
37397#endif
37398#ifdef GET_OPCODE_NAMES
37399OP_InvalidCast,
37400#endif
37401#ifdef GET_INTERPFN_LIST
37402&Interp_InvalidCast,
37403#endif
37404#ifdef GET_INTERPFN_DISPATCHERS
37405PRESERVE_NONE
37406static bool Interp_InvalidCast(InterpState &S, CodePtr &PC) {
37407 {
37408 CodePtr OpPC = PC;
37409 const auto V0 = ReadArg<interp::CastKind>(S, PC);
37410 const auto V1 = ReadArg<bool>(S, PC);
37411 if (!InvalidCast(S, OpPC, V0, V1))
37412 return false;
37413 }
37414#if USE_TAILCALLS
37415 MUSTTAIL return InterpNext(S, PC);
37416#else
37417 return true;
37418#endif
37419}
37420#endif
37421#ifdef GET_DISASM
37422case OP_InvalidCast:
37423 Text.Op = PrintName("InvalidCast");
37424 Text.Args.push_back(printArg<interp::CastKind>(P, PC));
37425 Text.Args.push_back(printArg<bool>(P, PC));
37426 break;
37427#endif
37428#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37429bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
37430#endif
37431#ifdef GET_LINK_IMPL
37432bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
37433 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
37434}
37435#endif
37436#ifdef GET_EVAL_IMPL
37437bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
37438 if (!isActive()) return true;
37439 CurrentSource = L;
37440 return InvalidCast(S, OpPC, A0, A1);
37441}
37442#endif
37443#ifdef GET_OPCODE_NAMES
37444OP_InvalidDeclRef,
37445#endif
37446#ifdef GET_INTERPFN_LIST
37447&Interp_InvalidDeclRef,
37448#endif
37449#ifdef GET_INTERPFN_DISPATCHERS
37450PRESERVE_NONE
37451static bool Interp_InvalidDeclRef(InterpState &S, CodePtr &PC) {
37452 {
37453 CodePtr OpPC = PC;
37454 const auto V0 = ReadArg<const DeclRefExpr *>(S, PC);
37455 const auto V1 = ReadArg<bool>(S, PC);
37456 if (!InvalidDeclRef(S, OpPC, V0, V1))
37457 return false;
37458 }
37459#if USE_TAILCALLS
37460 MUSTTAIL return InterpNext(S, PC);
37461#else
37462 return true;
37463#endif
37464}
37465#endif
37466#ifdef GET_DISASM
37467case OP_InvalidDeclRef:
37468 Text.Op = PrintName("InvalidDeclRef");
37469 Text.Args.push_back(printArg<const DeclRefExpr *>(P, PC));
37470 Text.Args.push_back(printArg<bool>(P, PC));
37471 break;
37472#endif
37473#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37474bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
37475#endif
37476#ifdef GET_LINK_IMPL
37477bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
37478 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
37479}
37480#endif
37481#ifdef GET_EVAL_IMPL
37482bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
37483 if (!isActive()) return true;
37484 CurrentSource = L;
37485 return InvalidDeclRef(S, OpPC, A0, A1);
37486}
37487#endif
37488#ifdef GET_OPCODE_NAMES
37489OP_InvalidNewDeleteExpr,
37490#endif
37491#ifdef GET_INTERPFN_LIST
37492&Interp_InvalidNewDeleteExpr,
37493#endif
37494#ifdef GET_INTERPFN_DISPATCHERS
37495PRESERVE_NONE
37496static bool Interp_InvalidNewDeleteExpr(InterpState &S, CodePtr &PC) {
37497 {
37498 CodePtr OpPC = PC;
37499 const auto V0 = ReadArg<const Expr *>(S, PC);
37500 if (!InvalidNewDeleteExpr(S, OpPC, V0))
37501 return false;
37502 }
37503#if USE_TAILCALLS
37504 MUSTTAIL return InterpNext(S, PC);
37505#else
37506 return true;
37507#endif
37508}
37509#endif
37510#ifdef GET_DISASM
37511case OP_InvalidNewDeleteExpr:
37512 Text.Op = PrintName("InvalidNewDeleteExpr");
37513 Text.Args.push_back(printArg<const Expr *>(P, PC));
37514 break;
37515#endif
37516#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37517bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
37518#endif
37519#ifdef GET_LINK_IMPL
37520bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
37521 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
37522}
37523#endif
37524#ifdef GET_EVAL_IMPL
37525bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
37526 if (!isActive()) return true;
37527 CurrentSource = L;
37528 return InvalidNewDeleteExpr(S, OpPC, A0);
37529}
37530#endif
37531#ifdef GET_OPCODE_NAMES
37532OP_InvalidShuffleVectorIndex,
37533#endif
37534#ifdef GET_INTERPFN_LIST
37535&Interp_InvalidShuffleVectorIndex,
37536#endif
37537#ifdef GET_INTERPFN_DISPATCHERS
37538PRESERVE_NONE
37539static bool Interp_InvalidShuffleVectorIndex(InterpState &S, CodePtr &PC) {
37540 {
37541 CodePtr OpPC = PC;
37542 const auto V0 = ReadArg<uint32_t>(S, PC);
37543 if (!InvalidShuffleVectorIndex(S, OpPC, V0))
37544 return false;
37545 }
37546#if USE_TAILCALLS
37547 MUSTTAIL return InterpNext(S, PC);
37548#else
37549 return true;
37550#endif
37551}
37552#endif
37553#ifdef GET_DISASM
37554case OP_InvalidShuffleVectorIndex:
37555 Text.Op = PrintName("InvalidShuffleVectorIndex");
37556 Text.Args.push_back(printArg<uint32_t>(P, PC));
37557 break;
37558#endif
37559#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37560bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
37561#endif
37562#ifdef GET_LINK_IMPL
37563bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
37564 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
37565}
37566#endif
37567#ifdef GET_EVAL_IMPL
37568bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
37569 if (!isActive()) return true;
37570 CurrentSource = L;
37571 return InvalidShuffleVectorIndex(S, OpPC, A0);
37572}
37573#endif
37574#ifdef GET_OPCODE_NAMES
37575OP_InvalidStore,
37576#endif
37577#ifdef GET_INTERPFN_LIST
37578&Interp_InvalidStore,
37579#endif
37580#ifdef GET_INTERPFN_DISPATCHERS
37581PRESERVE_NONE
37582static bool Interp_InvalidStore(InterpState &S, CodePtr &PC) {
37583 {
37584 CodePtr OpPC = PC;
37585 const auto V0 = ReadArg<const Type *>(S, PC);
37586 if (!InvalidStore(S, OpPC, V0))
37587 return false;
37588 }
37589#if USE_TAILCALLS
37590 MUSTTAIL return InterpNext(S, PC);
37591#else
37592 return true;
37593#endif
37594}
37595#endif
37596#ifdef GET_DISASM
37597case OP_InvalidStore:
37598 Text.Op = PrintName("InvalidStore");
37599 Text.Args.push_back(printArg<const Type *>(P, PC));
37600 break;
37601#endif
37602#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37603bool emitInvalidStore( const Type * , SourceInfo);
37604#endif
37605#ifdef GET_LINK_IMPL
37606bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
37607 return emitOp<const Type *>(OP_InvalidStore, A0, L);
37608}
37609#endif
37610#ifdef GET_EVAL_IMPL
37611bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
37612 if (!isActive()) return true;
37613 CurrentSource = L;
37614 return InvalidStore(S, OpPC, A0);
37615}
37616#endif
37617#ifdef GET_OPCODE_NAMES
37618OP_IsConstantContext,
37619#endif
37620#ifdef GET_INTERPFN_LIST
37621&Interp_IsConstantContext,
37622#endif
37623#ifdef GET_INTERPFN_DISPATCHERS
37624PRESERVE_NONE
37625static bool Interp_IsConstantContext(InterpState &S, CodePtr &PC) {
37626 if (!IsConstantContext(S, PC))
37627 return false;
37628#if USE_TAILCALLS
37629 MUSTTAIL return InterpNext(S, PC);
37630#else
37631 return true;
37632#endif
37633}
37634#endif
37635#ifdef GET_DISASM
37636case OP_IsConstantContext:
37637 Text.Op = PrintName("IsConstantContext");
37638 break;
37639#endif
37640#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37641bool emitIsConstantContext(SourceInfo);
37642#endif
37643#ifdef GET_LINK_IMPL
37644bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
37645 return emitOp<>(OP_IsConstantContext, L);
37646}
37647#endif
37648#ifdef GET_EVAL_IMPL
37649bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
37650 if (!isActive()) return true;
37651 CurrentSource = L;
37652 return IsConstantContext(S, OpPC);
37653}
37654#endif
37655#ifdef GET_OPCODE_NAMES
37656OP_IsNonNullPtr,
37657OP_IsNonNullMemberPtr,
37658#endif
37659#ifdef GET_INTERPFN_LIST
37660&Interp_IsNonNullPtr,
37661&Interp_IsNonNullMemberPtr,
37662#endif
37663#ifdef GET_INTERPFN_DISPATCHERS
37664PRESERVE_NONE
37665static bool Interp_IsNonNullPtr(InterpState &S, CodePtr &PC) {
37666 if (!IsNonNull<PT_Ptr>(S, PC))
37667 return false;
37668#if USE_TAILCALLS
37669 MUSTTAIL return InterpNext(S, PC);
37670#else
37671 return true;
37672#endif
37673}
37674PRESERVE_NONE
37675static bool Interp_IsNonNullMemberPtr(InterpState &S, CodePtr &PC) {
37676 if (!IsNonNull<PT_MemberPtr>(S, PC))
37677 return false;
37678#if USE_TAILCALLS
37679 MUSTTAIL return InterpNext(S, PC);
37680#else
37681 return true;
37682#endif
37683}
37684#endif
37685#ifdef GET_DISASM
37686case OP_IsNonNullPtr:
37687 Text.Op = PrintName("IsNonNullPtr");
37688 break;
37689case OP_IsNonNullMemberPtr:
37690 Text.Op = PrintName("IsNonNullMemberPtr");
37691 break;
37692#endif
37693#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37694bool emitIsNonNullPtr(SourceInfo);
37695bool emitIsNonNullMemberPtr(SourceInfo);
37696#endif
37697#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37698[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
37699#endif
37700#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37701bool
37702#if defined(GET_EVAL_IMPL)
37703EvalEmitter
37704#else
37705ByteCodeEmitter
37706#endif
37707::emitIsNonNull(PrimType T0, SourceInfo I) {
37708 switch (T0) {
37709 case PT_Ptr:
37710 return emitIsNonNullPtr(I);
37711 case PT_MemberPtr:
37712 return emitIsNonNullMemberPtr(I);
37713 default: llvm_unreachable("invalid type: emitIsNonNull");
37714 }
37715 llvm_unreachable("invalid enum value");
37716}
37717#endif
37718#ifdef GET_LINK_IMPL
37719bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
37720 return emitOp<>(OP_IsNonNullPtr, L);
37721}
37722bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
37723 return emitOp<>(OP_IsNonNullMemberPtr, L);
37724}
37725#endif
37726#ifdef GET_EVAL_IMPL
37727bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
37728 if (!isActive()) return true;
37729 CurrentSource = L;
37730 return IsNonNull<PT_Ptr>(S, OpPC);
37731}
37732bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
37733 if (!isActive()) return true;
37734 CurrentSource = L;
37735 return IsNonNull<PT_MemberPtr>(S, OpPC);
37736}
37737#endif
37738#ifdef GET_OPCODE_NAMES
37739OP_Jf,
37740#endif
37741#ifdef GET_INTERPFN_LIST
37742&Interp_Jf,
37743#endif
37744#ifdef GET_INTERPFN_DISPATCHERS
37745PRESERVE_NONE
37746static bool Interp_Jf(InterpState &S, CodePtr &PC) {
37747 {
37748 const auto V0 = ReadArg<int32_t>(S, PC);
37749 if (!Jf(S, PC, V0))
37750 return false;
37751 }
37752#if USE_TAILCALLS
37753 MUSTTAIL return InterpNext(S, PC);
37754#else
37755 return true;
37756#endif
37757}
37758#endif
37759#ifdef GET_DISASM
37760case OP_Jf:
37761 Text.Op = PrintName("Jf");
37762 Text.Args.push_back(printArg<int32_t>(P, PC));
37763 break;
37764#endif
37765#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37766bool emitJf( int32_t , SourceInfo);
37767#endif
37768#ifdef GET_LINK_IMPL
37769bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
37770 return emitOp<int32_t>(OP_Jf, A0, L);
37771}
37772#endif
37773#ifdef GET_OPCODE_NAMES
37774OP_Jmp,
37775#endif
37776#ifdef GET_INTERPFN_LIST
37777&Interp_Jmp,
37778#endif
37779#ifdef GET_INTERPFN_DISPATCHERS
37780PRESERVE_NONE
37781static bool Interp_Jmp(InterpState &S, CodePtr &PC) {
37782 {
37783 const auto V0 = ReadArg<int32_t>(S, PC);
37784 if (!Jmp(S, PC, V0))
37785 return false;
37786 }
37787#if USE_TAILCALLS
37788 MUSTTAIL return InterpNext(S, PC);
37789#else
37790 return true;
37791#endif
37792}
37793#endif
37794#ifdef GET_DISASM
37795case OP_Jmp:
37796 Text.Op = PrintName("Jmp");
37797 Text.Args.push_back(printArg<int32_t>(P, PC));
37798 break;
37799#endif
37800#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37801bool emitJmp( int32_t , SourceInfo);
37802#endif
37803#ifdef GET_LINK_IMPL
37804bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
37805 return emitOp<int32_t>(OP_Jmp, A0, L);
37806}
37807#endif
37808#ifdef GET_OPCODE_NAMES
37809OP_Jt,
37810#endif
37811#ifdef GET_INTERPFN_LIST
37812&Interp_Jt,
37813#endif
37814#ifdef GET_INTERPFN_DISPATCHERS
37815PRESERVE_NONE
37816static bool Interp_Jt(InterpState &S, CodePtr &PC) {
37817 {
37818 const auto V0 = ReadArg<int32_t>(S, PC);
37819 if (!Jt(S, PC, V0))
37820 return false;
37821 }
37822#if USE_TAILCALLS
37823 MUSTTAIL return InterpNext(S, PC);
37824#else
37825 return true;
37826#endif
37827}
37828#endif
37829#ifdef GET_DISASM
37830case OP_Jt:
37831 Text.Op = PrintName("Jt");
37832 Text.Args.push_back(printArg<int32_t>(P, PC));
37833 break;
37834#endif
37835#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37836bool emitJt( int32_t , SourceInfo);
37837#endif
37838#ifdef GET_LINK_IMPL
37839bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
37840 return emitOp<int32_t>(OP_Jt, A0, L);
37841}
37842#endif
37843#ifdef GET_OPCODE_NAMES
37844OP_LESint8,
37845OP_LEUint8,
37846OP_LESint16,
37847OP_LEUint16,
37848OP_LESint32,
37849OP_LEUint32,
37850OP_LESint64,
37851OP_LEUint64,
37852OP_LEIntAP,
37853OP_LEIntAPS,
37854OP_LEBool,
37855OP_LEFixedPoint,
37856OP_LEPtr,
37857OP_LEFloat,
37858#endif
37859#ifdef GET_INTERPFN_LIST
37860&Interp_LESint8,
37861&Interp_LEUint8,
37862&Interp_LESint16,
37863&Interp_LEUint16,
37864&Interp_LESint32,
37865&Interp_LEUint32,
37866&Interp_LESint64,
37867&Interp_LEUint64,
37868&Interp_LEIntAP,
37869&Interp_LEIntAPS,
37870&Interp_LEBool,
37871&Interp_LEFixedPoint,
37872&Interp_LEPtr,
37873&Interp_LEFloat,
37874#endif
37875#ifdef GET_INTERPFN_DISPATCHERS
37876PRESERVE_NONE
37877static bool Interp_LESint8(InterpState &S, CodePtr &PC) {
37878 if (!LE<PT_Sint8>(S, PC))
37879 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_LEUint8(InterpState &S, CodePtr &PC) {
37888 if (!LE<PT_Uint8>(S, PC))
37889 return false;
37890#if USE_TAILCALLS
37891 MUSTTAIL return InterpNext(S, PC);
37892#else
37893 return true;
37894#endif
37895}
37896PRESERVE_NONE
37897static bool Interp_LESint16(InterpState &S, CodePtr &PC) {
37898 if (!LE<PT_Sint16>(S, PC))
37899 return false;
37900#if USE_TAILCALLS
37901 MUSTTAIL return InterpNext(S, PC);
37902#else
37903 return true;
37904#endif
37905}
37906PRESERVE_NONE
37907static bool Interp_LEUint16(InterpState &S, CodePtr &PC) {
37908 if (!LE<PT_Uint16>(S, PC))
37909 return false;
37910#if USE_TAILCALLS
37911 MUSTTAIL return InterpNext(S, PC);
37912#else
37913 return true;
37914#endif
37915}
37916PRESERVE_NONE
37917static bool Interp_LESint32(InterpState &S, CodePtr &PC) {
37918 if (!LE<PT_Sint32>(S, PC))
37919 return false;
37920#if USE_TAILCALLS
37921 MUSTTAIL return InterpNext(S, PC);
37922#else
37923 return true;
37924#endif
37925}
37926PRESERVE_NONE
37927static bool Interp_LEUint32(InterpState &S, CodePtr &PC) {
37928 if (!LE<PT_Uint32>(S, PC))
37929 return false;
37930#if USE_TAILCALLS
37931 MUSTTAIL return InterpNext(S, PC);
37932#else
37933 return true;
37934#endif
37935}
37936PRESERVE_NONE
37937static bool Interp_LESint64(InterpState &S, CodePtr &PC) {
37938 if (!LE<PT_Sint64>(S, PC))
37939 return false;
37940#if USE_TAILCALLS
37941 MUSTTAIL return InterpNext(S, PC);
37942#else
37943 return true;
37944#endif
37945}
37946PRESERVE_NONE
37947static bool Interp_LEUint64(InterpState &S, CodePtr &PC) {
37948 if (!LE<PT_Uint64>(S, PC))
37949 return false;
37950#if USE_TAILCALLS
37951 MUSTTAIL return InterpNext(S, PC);
37952#else
37953 return true;
37954#endif
37955}
37956PRESERVE_NONE
37957static bool Interp_LEIntAP(InterpState &S, CodePtr &PC) {
37958 if (!LE<PT_IntAP>(S, PC))
37959 return false;
37960#if USE_TAILCALLS
37961 MUSTTAIL return InterpNext(S, PC);
37962#else
37963 return true;
37964#endif
37965}
37966PRESERVE_NONE
37967static bool Interp_LEIntAPS(InterpState &S, CodePtr &PC) {
37968 if (!LE<PT_IntAPS>(S, PC))
37969 return false;
37970#if USE_TAILCALLS
37971 MUSTTAIL return InterpNext(S, PC);
37972#else
37973 return true;
37974#endif
37975}
37976PRESERVE_NONE
37977static bool Interp_LEBool(InterpState &S, CodePtr &PC) {
37978 if (!LE<PT_Bool>(S, PC))
37979 return false;
37980#if USE_TAILCALLS
37981 MUSTTAIL return InterpNext(S, PC);
37982#else
37983 return true;
37984#endif
37985}
37986PRESERVE_NONE
37987static bool Interp_LEFixedPoint(InterpState &S, CodePtr &PC) {
37988 if (!LE<PT_FixedPoint>(S, PC))
37989 return false;
37990#if USE_TAILCALLS
37991 MUSTTAIL return InterpNext(S, PC);
37992#else
37993 return true;
37994#endif
37995}
37996PRESERVE_NONE
37997static bool Interp_LEPtr(InterpState &S, CodePtr &PC) {
37998 if (!LE<PT_Ptr>(S, PC))
37999 return false;
38000#if USE_TAILCALLS
38001 MUSTTAIL return InterpNext(S, PC);
38002#else
38003 return true;
38004#endif
38005}
38006PRESERVE_NONE
38007static bool Interp_LEFloat(InterpState &S, CodePtr &PC) {
38008 if (!LE<PT_Float>(S, PC))
38009 return false;
38010#if USE_TAILCALLS
38011 MUSTTAIL return InterpNext(S, PC);
38012#else
38013 return true;
38014#endif
38015}
38016#endif
38017#ifdef GET_DISASM
38018case OP_LESint8:
38019 Text.Op = PrintName("LESint8");
38020 break;
38021case OP_LEUint8:
38022 Text.Op = PrintName("LEUint8");
38023 break;
38024case OP_LESint16:
38025 Text.Op = PrintName("LESint16");
38026 break;
38027case OP_LEUint16:
38028 Text.Op = PrintName("LEUint16");
38029 break;
38030case OP_LESint32:
38031 Text.Op = PrintName("LESint32");
38032 break;
38033case OP_LEUint32:
38034 Text.Op = PrintName("LEUint32");
38035 break;
38036case OP_LESint64:
38037 Text.Op = PrintName("LESint64");
38038 break;
38039case OP_LEUint64:
38040 Text.Op = PrintName("LEUint64");
38041 break;
38042case OP_LEIntAP:
38043 Text.Op = PrintName("LEIntAP");
38044 break;
38045case OP_LEIntAPS:
38046 Text.Op = PrintName("LEIntAPS");
38047 break;
38048case OP_LEBool:
38049 Text.Op = PrintName("LEBool");
38050 break;
38051case OP_LEFixedPoint:
38052 Text.Op = PrintName("LEFixedPoint");
38053 break;
38054case OP_LEPtr:
38055 Text.Op = PrintName("LEPtr");
38056 break;
38057case OP_LEFloat:
38058 Text.Op = PrintName("LEFloat");
38059 break;
38060#endif
38061#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38062bool emitLESint8(SourceInfo);
38063bool emitLEUint8(SourceInfo);
38064bool emitLESint16(SourceInfo);
38065bool emitLEUint16(SourceInfo);
38066bool emitLESint32(SourceInfo);
38067bool emitLEUint32(SourceInfo);
38068bool emitLESint64(SourceInfo);
38069bool emitLEUint64(SourceInfo);
38070bool emitLEIntAP(SourceInfo);
38071bool emitLEIntAPS(SourceInfo);
38072bool emitLEBool(SourceInfo);
38073bool emitLEFixedPoint(SourceInfo);
38074bool emitLEPtr(SourceInfo);
38075bool emitLEFloat(SourceInfo);
38076#endif
38077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38078[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
38079#endif
38080#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38081bool
38082#if defined(GET_EVAL_IMPL)
38083EvalEmitter
38084#else
38085ByteCodeEmitter
38086#endif
38087::emitLE(PrimType T0, SourceInfo I) {
38088 switch (T0) {
38089 case PT_Sint8:
38090 return emitLESint8(I);
38091 case PT_Uint8:
38092 return emitLEUint8(I);
38093 case PT_Sint16:
38094 return emitLESint16(I);
38095 case PT_Uint16:
38096 return emitLEUint16(I);
38097 case PT_Sint32:
38098 return emitLESint32(I);
38099 case PT_Uint32:
38100 return emitLEUint32(I);
38101 case PT_Sint64:
38102 return emitLESint64(I);
38103 case PT_Uint64:
38104 return emitLEUint64(I);
38105 case PT_IntAP:
38106 return emitLEIntAP(I);
38107 case PT_IntAPS:
38108 return emitLEIntAPS(I);
38109 case PT_Bool:
38110 return emitLEBool(I);
38111 case PT_FixedPoint:
38112 return emitLEFixedPoint(I);
38113 case PT_Ptr:
38114 return emitLEPtr(I);
38115 case PT_Float:
38116 return emitLEFloat(I);
38117 default: llvm_unreachable("invalid type: emitLE");
38118 }
38119 llvm_unreachable("invalid enum value");
38120}
38121#endif
38122#ifdef GET_LINK_IMPL
38123bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
38124 return emitOp<>(OP_LESint8, L);
38125}
38126bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
38127 return emitOp<>(OP_LEUint8, L);
38128}
38129bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
38130 return emitOp<>(OP_LESint16, L);
38131}
38132bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
38133 return emitOp<>(OP_LEUint16, L);
38134}
38135bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
38136 return emitOp<>(OP_LESint32, L);
38137}
38138bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
38139 return emitOp<>(OP_LEUint32, L);
38140}
38141bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
38142 return emitOp<>(OP_LESint64, L);
38143}
38144bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
38145 return emitOp<>(OP_LEUint64, L);
38146}
38147bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
38148 return emitOp<>(OP_LEIntAP, L);
38149}
38150bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
38151 return emitOp<>(OP_LEIntAPS, L);
38152}
38153bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
38154 return emitOp<>(OP_LEBool, L);
38155}
38156bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
38157 return emitOp<>(OP_LEFixedPoint, L);
38158}
38159bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
38160 return emitOp<>(OP_LEPtr, L);
38161}
38162bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
38163 return emitOp<>(OP_LEFloat, L);
38164}
38165#endif
38166#ifdef GET_EVAL_IMPL
38167bool EvalEmitter::emitLESint8(SourceInfo L) {
38168 if (!isActive()) return true;
38169 CurrentSource = L;
38170 return LE<PT_Sint8>(S, OpPC);
38171}
38172bool EvalEmitter::emitLEUint8(SourceInfo L) {
38173 if (!isActive()) return true;
38174 CurrentSource = L;
38175 return LE<PT_Uint8>(S, OpPC);
38176}
38177bool EvalEmitter::emitLESint16(SourceInfo L) {
38178 if (!isActive()) return true;
38179 CurrentSource = L;
38180 return LE<PT_Sint16>(S, OpPC);
38181}
38182bool EvalEmitter::emitLEUint16(SourceInfo L) {
38183 if (!isActive()) return true;
38184 CurrentSource = L;
38185 return LE<PT_Uint16>(S, OpPC);
38186}
38187bool EvalEmitter::emitLESint32(SourceInfo L) {
38188 if (!isActive()) return true;
38189 CurrentSource = L;
38190 return LE<PT_Sint32>(S, OpPC);
38191}
38192bool EvalEmitter::emitLEUint32(SourceInfo L) {
38193 if (!isActive()) return true;
38194 CurrentSource = L;
38195 return LE<PT_Uint32>(S, OpPC);
38196}
38197bool EvalEmitter::emitLESint64(SourceInfo L) {
38198 if (!isActive()) return true;
38199 CurrentSource = L;
38200 return LE<PT_Sint64>(S, OpPC);
38201}
38202bool EvalEmitter::emitLEUint64(SourceInfo L) {
38203 if (!isActive()) return true;
38204 CurrentSource = L;
38205 return LE<PT_Uint64>(S, OpPC);
38206}
38207bool EvalEmitter::emitLEIntAP(SourceInfo L) {
38208 if (!isActive()) return true;
38209 CurrentSource = L;
38210 return LE<PT_IntAP>(S, OpPC);
38211}
38212bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
38213 if (!isActive()) return true;
38214 CurrentSource = L;
38215 return LE<PT_IntAPS>(S, OpPC);
38216}
38217bool EvalEmitter::emitLEBool(SourceInfo L) {
38218 if (!isActive()) return true;
38219 CurrentSource = L;
38220 return LE<PT_Bool>(S, OpPC);
38221}
38222bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
38223 if (!isActive()) return true;
38224 CurrentSource = L;
38225 return LE<PT_FixedPoint>(S, OpPC);
38226}
38227bool EvalEmitter::emitLEPtr(SourceInfo L) {
38228 if (!isActive()) return true;
38229 CurrentSource = L;
38230 return LE<PT_Ptr>(S, OpPC);
38231}
38232bool EvalEmitter::emitLEFloat(SourceInfo L) {
38233 if (!isActive()) return true;
38234 CurrentSource = L;
38235 return LE<PT_Float>(S, OpPC);
38236}
38237#endif
38238#ifdef GET_OPCODE_NAMES
38239OP_LTSint8,
38240OP_LTUint8,
38241OP_LTSint16,
38242OP_LTUint16,
38243OP_LTSint32,
38244OP_LTUint32,
38245OP_LTSint64,
38246OP_LTUint64,
38247OP_LTIntAP,
38248OP_LTIntAPS,
38249OP_LTBool,
38250OP_LTFixedPoint,
38251OP_LTPtr,
38252OP_LTFloat,
38253#endif
38254#ifdef GET_INTERPFN_LIST
38255&Interp_LTSint8,
38256&Interp_LTUint8,
38257&Interp_LTSint16,
38258&Interp_LTUint16,
38259&Interp_LTSint32,
38260&Interp_LTUint32,
38261&Interp_LTSint64,
38262&Interp_LTUint64,
38263&Interp_LTIntAP,
38264&Interp_LTIntAPS,
38265&Interp_LTBool,
38266&Interp_LTFixedPoint,
38267&Interp_LTPtr,
38268&Interp_LTFloat,
38269#endif
38270#ifdef GET_INTERPFN_DISPATCHERS
38271PRESERVE_NONE
38272static bool Interp_LTSint8(InterpState &S, CodePtr &PC) {
38273 if (!LT<PT_Sint8>(S, PC))
38274 return false;
38275#if USE_TAILCALLS
38276 MUSTTAIL return InterpNext(S, PC);
38277#else
38278 return true;
38279#endif
38280}
38281PRESERVE_NONE
38282static bool Interp_LTUint8(InterpState &S, CodePtr &PC) {
38283 if (!LT<PT_Uint8>(S, PC))
38284 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_LTSint16(InterpState &S, CodePtr &PC) {
38293 if (!LT<PT_Sint16>(S, PC))
38294 return false;
38295#if USE_TAILCALLS
38296 MUSTTAIL return InterpNext(S, PC);
38297#else
38298 return true;
38299#endif
38300}
38301PRESERVE_NONE
38302static bool Interp_LTUint16(InterpState &S, CodePtr &PC) {
38303 if (!LT<PT_Uint16>(S, PC))
38304 return false;
38305#if USE_TAILCALLS
38306 MUSTTAIL return InterpNext(S, PC);
38307#else
38308 return true;
38309#endif
38310}
38311PRESERVE_NONE
38312static bool Interp_LTSint32(InterpState &S, CodePtr &PC) {
38313 if (!LT<PT_Sint32>(S, PC))
38314 return false;
38315#if USE_TAILCALLS
38316 MUSTTAIL return InterpNext(S, PC);
38317#else
38318 return true;
38319#endif
38320}
38321PRESERVE_NONE
38322static bool Interp_LTUint32(InterpState &S, CodePtr &PC) {
38323 if (!LT<PT_Uint32>(S, PC))
38324 return false;
38325#if USE_TAILCALLS
38326 MUSTTAIL return InterpNext(S, PC);
38327#else
38328 return true;
38329#endif
38330}
38331PRESERVE_NONE
38332static bool Interp_LTSint64(InterpState &S, CodePtr &PC) {
38333 if (!LT<PT_Sint64>(S, PC))
38334 return false;
38335#if USE_TAILCALLS
38336 MUSTTAIL return InterpNext(S, PC);
38337#else
38338 return true;
38339#endif
38340}
38341PRESERVE_NONE
38342static bool Interp_LTUint64(InterpState &S, CodePtr &PC) {
38343 if (!LT<PT_Uint64>(S, PC))
38344 return false;
38345#if USE_TAILCALLS
38346 MUSTTAIL return InterpNext(S, PC);
38347#else
38348 return true;
38349#endif
38350}
38351PRESERVE_NONE
38352static bool Interp_LTIntAP(InterpState &S, CodePtr &PC) {
38353 if (!LT<PT_IntAP>(S, PC))
38354 return false;
38355#if USE_TAILCALLS
38356 MUSTTAIL return InterpNext(S, PC);
38357#else
38358 return true;
38359#endif
38360}
38361PRESERVE_NONE
38362static bool Interp_LTIntAPS(InterpState &S, CodePtr &PC) {
38363 if (!LT<PT_IntAPS>(S, PC))
38364 return false;
38365#if USE_TAILCALLS
38366 MUSTTAIL return InterpNext(S, PC);
38367#else
38368 return true;
38369#endif
38370}
38371PRESERVE_NONE
38372static bool Interp_LTBool(InterpState &S, CodePtr &PC) {
38373 if (!LT<PT_Bool>(S, PC))
38374 return false;
38375#if USE_TAILCALLS
38376 MUSTTAIL return InterpNext(S, PC);
38377#else
38378 return true;
38379#endif
38380}
38381PRESERVE_NONE
38382static bool Interp_LTFixedPoint(InterpState &S, CodePtr &PC) {
38383 if (!LT<PT_FixedPoint>(S, PC))
38384 return false;
38385#if USE_TAILCALLS
38386 MUSTTAIL return InterpNext(S, PC);
38387#else
38388 return true;
38389#endif
38390}
38391PRESERVE_NONE
38392static bool Interp_LTPtr(InterpState &S, CodePtr &PC) {
38393 if (!LT<PT_Ptr>(S, PC))
38394 return false;
38395#if USE_TAILCALLS
38396 MUSTTAIL return InterpNext(S, PC);
38397#else
38398 return true;
38399#endif
38400}
38401PRESERVE_NONE
38402static bool Interp_LTFloat(InterpState &S, CodePtr &PC) {
38403 if (!LT<PT_Float>(S, PC))
38404 return false;
38405#if USE_TAILCALLS
38406 MUSTTAIL return InterpNext(S, PC);
38407#else
38408 return true;
38409#endif
38410}
38411#endif
38412#ifdef GET_DISASM
38413case OP_LTSint8:
38414 Text.Op = PrintName("LTSint8");
38415 break;
38416case OP_LTUint8:
38417 Text.Op = PrintName("LTUint8");
38418 break;
38419case OP_LTSint16:
38420 Text.Op = PrintName("LTSint16");
38421 break;
38422case OP_LTUint16:
38423 Text.Op = PrintName("LTUint16");
38424 break;
38425case OP_LTSint32:
38426 Text.Op = PrintName("LTSint32");
38427 break;
38428case OP_LTUint32:
38429 Text.Op = PrintName("LTUint32");
38430 break;
38431case OP_LTSint64:
38432 Text.Op = PrintName("LTSint64");
38433 break;
38434case OP_LTUint64:
38435 Text.Op = PrintName("LTUint64");
38436 break;
38437case OP_LTIntAP:
38438 Text.Op = PrintName("LTIntAP");
38439 break;
38440case OP_LTIntAPS:
38441 Text.Op = PrintName("LTIntAPS");
38442 break;
38443case OP_LTBool:
38444 Text.Op = PrintName("LTBool");
38445 break;
38446case OP_LTFixedPoint:
38447 Text.Op = PrintName("LTFixedPoint");
38448 break;
38449case OP_LTPtr:
38450 Text.Op = PrintName("LTPtr");
38451 break;
38452case OP_LTFloat:
38453 Text.Op = PrintName("LTFloat");
38454 break;
38455#endif
38456#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38457bool emitLTSint8(SourceInfo);
38458bool emitLTUint8(SourceInfo);
38459bool emitLTSint16(SourceInfo);
38460bool emitLTUint16(SourceInfo);
38461bool emitLTSint32(SourceInfo);
38462bool emitLTUint32(SourceInfo);
38463bool emitLTSint64(SourceInfo);
38464bool emitLTUint64(SourceInfo);
38465bool emitLTIntAP(SourceInfo);
38466bool emitLTIntAPS(SourceInfo);
38467bool emitLTBool(SourceInfo);
38468bool emitLTFixedPoint(SourceInfo);
38469bool emitLTPtr(SourceInfo);
38470bool emitLTFloat(SourceInfo);
38471#endif
38472#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38473[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
38474#endif
38475#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38476bool
38477#if defined(GET_EVAL_IMPL)
38478EvalEmitter
38479#else
38480ByteCodeEmitter
38481#endif
38482::emitLT(PrimType T0, SourceInfo I) {
38483 switch (T0) {
38484 case PT_Sint8:
38485 return emitLTSint8(I);
38486 case PT_Uint8:
38487 return emitLTUint8(I);
38488 case PT_Sint16:
38489 return emitLTSint16(I);
38490 case PT_Uint16:
38491 return emitLTUint16(I);
38492 case PT_Sint32:
38493 return emitLTSint32(I);
38494 case PT_Uint32:
38495 return emitLTUint32(I);
38496 case PT_Sint64:
38497 return emitLTSint64(I);
38498 case PT_Uint64:
38499 return emitLTUint64(I);
38500 case PT_IntAP:
38501 return emitLTIntAP(I);
38502 case PT_IntAPS:
38503 return emitLTIntAPS(I);
38504 case PT_Bool:
38505 return emitLTBool(I);
38506 case PT_FixedPoint:
38507 return emitLTFixedPoint(I);
38508 case PT_Ptr:
38509 return emitLTPtr(I);
38510 case PT_Float:
38511 return emitLTFloat(I);
38512 default: llvm_unreachable("invalid type: emitLT");
38513 }
38514 llvm_unreachable("invalid enum value");
38515}
38516#endif
38517#ifdef GET_LINK_IMPL
38518bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
38519 return emitOp<>(OP_LTSint8, L);
38520}
38521bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
38522 return emitOp<>(OP_LTUint8, L);
38523}
38524bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
38525 return emitOp<>(OP_LTSint16, L);
38526}
38527bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
38528 return emitOp<>(OP_LTUint16, L);
38529}
38530bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
38531 return emitOp<>(OP_LTSint32, L);
38532}
38533bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
38534 return emitOp<>(OP_LTUint32, L);
38535}
38536bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
38537 return emitOp<>(OP_LTSint64, L);
38538}
38539bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
38540 return emitOp<>(OP_LTUint64, L);
38541}
38542bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
38543 return emitOp<>(OP_LTIntAP, L);
38544}
38545bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
38546 return emitOp<>(OP_LTIntAPS, L);
38547}
38548bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
38549 return emitOp<>(OP_LTBool, L);
38550}
38551bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
38552 return emitOp<>(OP_LTFixedPoint, L);
38553}
38554bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
38555 return emitOp<>(OP_LTPtr, L);
38556}
38557bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
38558 return emitOp<>(OP_LTFloat, L);
38559}
38560#endif
38561#ifdef GET_EVAL_IMPL
38562bool EvalEmitter::emitLTSint8(SourceInfo L) {
38563 if (!isActive()) return true;
38564 CurrentSource = L;
38565 return LT<PT_Sint8>(S, OpPC);
38566}
38567bool EvalEmitter::emitLTUint8(SourceInfo L) {
38568 if (!isActive()) return true;
38569 CurrentSource = L;
38570 return LT<PT_Uint8>(S, OpPC);
38571}
38572bool EvalEmitter::emitLTSint16(SourceInfo L) {
38573 if (!isActive()) return true;
38574 CurrentSource = L;
38575 return LT<PT_Sint16>(S, OpPC);
38576}
38577bool EvalEmitter::emitLTUint16(SourceInfo L) {
38578 if (!isActive()) return true;
38579 CurrentSource = L;
38580 return LT<PT_Uint16>(S, OpPC);
38581}
38582bool EvalEmitter::emitLTSint32(SourceInfo L) {
38583 if (!isActive()) return true;
38584 CurrentSource = L;
38585 return LT<PT_Sint32>(S, OpPC);
38586}
38587bool EvalEmitter::emitLTUint32(SourceInfo L) {
38588 if (!isActive()) return true;
38589 CurrentSource = L;
38590 return LT<PT_Uint32>(S, OpPC);
38591}
38592bool EvalEmitter::emitLTSint64(SourceInfo L) {
38593 if (!isActive()) return true;
38594 CurrentSource = L;
38595 return LT<PT_Sint64>(S, OpPC);
38596}
38597bool EvalEmitter::emitLTUint64(SourceInfo L) {
38598 if (!isActive()) return true;
38599 CurrentSource = L;
38600 return LT<PT_Uint64>(S, OpPC);
38601}
38602bool EvalEmitter::emitLTIntAP(SourceInfo L) {
38603 if (!isActive()) return true;
38604 CurrentSource = L;
38605 return LT<PT_IntAP>(S, OpPC);
38606}
38607bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
38608 if (!isActive()) return true;
38609 CurrentSource = L;
38610 return LT<PT_IntAPS>(S, OpPC);
38611}
38612bool EvalEmitter::emitLTBool(SourceInfo L) {
38613 if (!isActive()) return true;
38614 CurrentSource = L;
38615 return LT<PT_Bool>(S, OpPC);
38616}
38617bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
38618 if (!isActive()) return true;
38619 CurrentSource = L;
38620 return LT<PT_FixedPoint>(S, OpPC);
38621}
38622bool EvalEmitter::emitLTPtr(SourceInfo L) {
38623 if (!isActive()) return true;
38624 CurrentSource = L;
38625 return LT<PT_Ptr>(S, OpPC);
38626}
38627bool EvalEmitter::emitLTFloat(SourceInfo L) {
38628 if (!isActive()) return true;
38629 CurrentSource = L;
38630 return LT<PT_Float>(S, OpPC);
38631}
38632#endif
38633#ifdef GET_OPCODE_NAMES
38634OP_LoadSint8,
38635OP_LoadUint8,
38636OP_LoadSint16,
38637OP_LoadUint16,
38638OP_LoadSint32,
38639OP_LoadUint32,
38640OP_LoadSint64,
38641OP_LoadUint64,
38642OP_LoadIntAP,
38643OP_LoadIntAPS,
38644OP_LoadBool,
38645OP_LoadFixedPoint,
38646OP_LoadPtr,
38647OP_LoadMemberPtr,
38648OP_LoadFloat,
38649#endif
38650#ifdef GET_INTERPFN_LIST
38651&Interp_LoadSint8,
38652&Interp_LoadUint8,
38653&Interp_LoadSint16,
38654&Interp_LoadUint16,
38655&Interp_LoadSint32,
38656&Interp_LoadUint32,
38657&Interp_LoadSint64,
38658&Interp_LoadUint64,
38659&Interp_LoadIntAP,
38660&Interp_LoadIntAPS,
38661&Interp_LoadBool,
38662&Interp_LoadFixedPoint,
38663&Interp_LoadPtr,
38664&Interp_LoadMemberPtr,
38665&Interp_LoadFloat,
38666#endif
38667#ifdef GET_INTERPFN_DISPATCHERS
38668PRESERVE_NONE
38669static bool Interp_LoadSint8(InterpState &S, CodePtr &PC) {
38670 if (!Load<PT_Sint8>(S, PC))
38671 return false;
38672#if USE_TAILCALLS
38673 MUSTTAIL return InterpNext(S, PC);
38674#else
38675 return true;
38676#endif
38677}
38678PRESERVE_NONE
38679static bool Interp_LoadUint8(InterpState &S, CodePtr &PC) {
38680 if (!Load<PT_Uint8>(S, PC))
38681 return false;
38682#if USE_TAILCALLS
38683 MUSTTAIL return InterpNext(S, PC);
38684#else
38685 return true;
38686#endif
38687}
38688PRESERVE_NONE
38689static bool Interp_LoadSint16(InterpState &S, CodePtr &PC) {
38690 if (!Load<PT_Sint16>(S, PC))
38691 return false;
38692#if USE_TAILCALLS
38693 MUSTTAIL return InterpNext(S, PC);
38694#else
38695 return true;
38696#endif
38697}
38698PRESERVE_NONE
38699static bool Interp_LoadUint16(InterpState &S, CodePtr &PC) {
38700 if (!Load<PT_Uint16>(S, PC))
38701 return false;
38702#if USE_TAILCALLS
38703 MUSTTAIL return InterpNext(S, PC);
38704#else
38705 return true;
38706#endif
38707}
38708PRESERVE_NONE
38709static bool Interp_LoadSint32(InterpState &S, CodePtr &PC) {
38710 if (!Load<PT_Sint32>(S, PC))
38711 return false;
38712#if USE_TAILCALLS
38713 MUSTTAIL return InterpNext(S, PC);
38714#else
38715 return true;
38716#endif
38717}
38718PRESERVE_NONE
38719static bool Interp_LoadUint32(InterpState &S, CodePtr &PC) {
38720 if (!Load<PT_Uint32>(S, PC))
38721 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_LoadSint64(InterpState &S, CodePtr &PC) {
38730 if (!Load<PT_Sint64>(S, PC))
38731 return false;
38732#if USE_TAILCALLS
38733 MUSTTAIL return InterpNext(S, PC);
38734#else
38735 return true;
38736#endif
38737}
38738PRESERVE_NONE
38739static bool Interp_LoadUint64(InterpState &S, CodePtr &PC) {
38740 if (!Load<PT_Uint64>(S, PC))
38741 return false;
38742#if USE_TAILCALLS
38743 MUSTTAIL return InterpNext(S, PC);
38744#else
38745 return true;
38746#endif
38747}
38748PRESERVE_NONE
38749static bool Interp_LoadIntAP(InterpState &S, CodePtr &PC) {
38750 if (!Load<PT_IntAP>(S, PC))
38751 return false;
38752#if USE_TAILCALLS
38753 MUSTTAIL return InterpNext(S, PC);
38754#else
38755 return true;
38756#endif
38757}
38758PRESERVE_NONE
38759static bool Interp_LoadIntAPS(InterpState &S, CodePtr &PC) {
38760 if (!Load<PT_IntAPS>(S, PC))
38761 return false;
38762#if USE_TAILCALLS
38763 MUSTTAIL return InterpNext(S, PC);
38764#else
38765 return true;
38766#endif
38767}
38768PRESERVE_NONE
38769static bool Interp_LoadBool(InterpState &S, CodePtr &PC) {
38770 if (!Load<PT_Bool>(S, PC))
38771 return false;
38772#if USE_TAILCALLS
38773 MUSTTAIL return InterpNext(S, PC);
38774#else
38775 return true;
38776#endif
38777}
38778PRESERVE_NONE
38779static bool Interp_LoadFixedPoint(InterpState &S, CodePtr &PC) {
38780 if (!Load<PT_FixedPoint>(S, PC))
38781 return false;
38782#if USE_TAILCALLS
38783 MUSTTAIL return InterpNext(S, PC);
38784#else
38785 return true;
38786#endif
38787}
38788PRESERVE_NONE
38789static bool Interp_LoadPtr(InterpState &S, CodePtr &PC) {
38790 if (!Load<PT_Ptr>(S, PC))
38791 return false;
38792#if USE_TAILCALLS
38793 MUSTTAIL return InterpNext(S, PC);
38794#else
38795 return true;
38796#endif
38797}
38798PRESERVE_NONE
38799static bool Interp_LoadMemberPtr(InterpState &S, CodePtr &PC) {
38800 if (!Load<PT_MemberPtr>(S, PC))
38801 return false;
38802#if USE_TAILCALLS
38803 MUSTTAIL return InterpNext(S, PC);
38804#else
38805 return true;
38806#endif
38807}
38808PRESERVE_NONE
38809static bool Interp_LoadFloat(InterpState &S, CodePtr &PC) {
38810 if (!Load<PT_Float>(S, PC))
38811 return false;
38812#if USE_TAILCALLS
38813 MUSTTAIL return InterpNext(S, PC);
38814#else
38815 return true;
38816#endif
38817}
38818#endif
38819#ifdef GET_DISASM
38820case OP_LoadSint8:
38821 Text.Op = PrintName("LoadSint8");
38822 break;
38823case OP_LoadUint8:
38824 Text.Op = PrintName("LoadUint8");
38825 break;
38826case OP_LoadSint16:
38827 Text.Op = PrintName("LoadSint16");
38828 break;
38829case OP_LoadUint16:
38830 Text.Op = PrintName("LoadUint16");
38831 break;
38832case OP_LoadSint32:
38833 Text.Op = PrintName("LoadSint32");
38834 break;
38835case OP_LoadUint32:
38836 Text.Op = PrintName("LoadUint32");
38837 break;
38838case OP_LoadSint64:
38839 Text.Op = PrintName("LoadSint64");
38840 break;
38841case OP_LoadUint64:
38842 Text.Op = PrintName("LoadUint64");
38843 break;
38844case OP_LoadIntAP:
38845 Text.Op = PrintName("LoadIntAP");
38846 break;
38847case OP_LoadIntAPS:
38848 Text.Op = PrintName("LoadIntAPS");
38849 break;
38850case OP_LoadBool:
38851 Text.Op = PrintName("LoadBool");
38852 break;
38853case OP_LoadFixedPoint:
38854 Text.Op = PrintName("LoadFixedPoint");
38855 break;
38856case OP_LoadPtr:
38857 Text.Op = PrintName("LoadPtr");
38858 break;
38859case OP_LoadMemberPtr:
38860 Text.Op = PrintName("LoadMemberPtr");
38861 break;
38862case OP_LoadFloat:
38863 Text.Op = PrintName("LoadFloat");
38864 break;
38865#endif
38866#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38867bool emitLoadSint8(SourceInfo);
38868bool emitLoadUint8(SourceInfo);
38869bool emitLoadSint16(SourceInfo);
38870bool emitLoadUint16(SourceInfo);
38871bool emitLoadSint32(SourceInfo);
38872bool emitLoadUint32(SourceInfo);
38873bool emitLoadSint64(SourceInfo);
38874bool emitLoadUint64(SourceInfo);
38875bool emitLoadIntAP(SourceInfo);
38876bool emitLoadIntAPS(SourceInfo);
38877bool emitLoadBool(SourceInfo);
38878bool emitLoadFixedPoint(SourceInfo);
38879bool emitLoadPtr(SourceInfo);
38880bool emitLoadMemberPtr(SourceInfo);
38881bool emitLoadFloat(SourceInfo);
38882#endif
38883#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38884[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
38885#endif
38886#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38887bool
38888#if defined(GET_EVAL_IMPL)
38889EvalEmitter
38890#else
38891ByteCodeEmitter
38892#endif
38893::emitLoad(PrimType T0, SourceInfo I) {
38894 switch (T0) {
38895 case PT_Sint8:
38896 return emitLoadSint8(I);
38897 case PT_Uint8:
38898 return emitLoadUint8(I);
38899 case PT_Sint16:
38900 return emitLoadSint16(I);
38901 case PT_Uint16:
38902 return emitLoadUint16(I);
38903 case PT_Sint32:
38904 return emitLoadSint32(I);
38905 case PT_Uint32:
38906 return emitLoadUint32(I);
38907 case PT_Sint64:
38908 return emitLoadSint64(I);
38909 case PT_Uint64:
38910 return emitLoadUint64(I);
38911 case PT_IntAP:
38912 return emitLoadIntAP(I);
38913 case PT_IntAPS:
38914 return emitLoadIntAPS(I);
38915 case PT_Bool:
38916 return emitLoadBool(I);
38917 case PT_FixedPoint:
38918 return emitLoadFixedPoint(I);
38919 case PT_Ptr:
38920 return emitLoadPtr(I);
38921 case PT_MemberPtr:
38922 return emitLoadMemberPtr(I);
38923 case PT_Float:
38924 return emitLoadFloat(I);
38925 }
38926 llvm_unreachable("invalid enum value");
38927}
38928#endif
38929#ifdef GET_LINK_IMPL
38930bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
38931 return emitOp<>(OP_LoadSint8, L);
38932}
38933bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
38934 return emitOp<>(OP_LoadUint8, L);
38935}
38936bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
38937 return emitOp<>(OP_LoadSint16, L);
38938}
38939bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
38940 return emitOp<>(OP_LoadUint16, L);
38941}
38942bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
38943 return emitOp<>(OP_LoadSint32, L);
38944}
38945bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
38946 return emitOp<>(OP_LoadUint32, L);
38947}
38948bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
38949 return emitOp<>(OP_LoadSint64, L);
38950}
38951bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
38952 return emitOp<>(OP_LoadUint64, L);
38953}
38954bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
38955 return emitOp<>(OP_LoadIntAP, L);
38956}
38957bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
38958 return emitOp<>(OP_LoadIntAPS, L);
38959}
38960bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
38961 return emitOp<>(OP_LoadBool, L);
38962}
38963bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
38964 return emitOp<>(OP_LoadFixedPoint, L);
38965}
38966bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
38967 return emitOp<>(OP_LoadPtr, L);
38968}
38969bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
38970 return emitOp<>(OP_LoadMemberPtr, L);
38971}
38972bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
38973 return emitOp<>(OP_LoadFloat, L);
38974}
38975#endif
38976#ifdef GET_EVAL_IMPL
38977bool EvalEmitter::emitLoadSint8(SourceInfo L) {
38978 if (!isActive()) return true;
38979 CurrentSource = L;
38980 return Load<PT_Sint8>(S, OpPC);
38981}
38982bool EvalEmitter::emitLoadUint8(SourceInfo L) {
38983 if (!isActive()) return true;
38984 CurrentSource = L;
38985 return Load<PT_Uint8>(S, OpPC);
38986}
38987bool EvalEmitter::emitLoadSint16(SourceInfo L) {
38988 if (!isActive()) return true;
38989 CurrentSource = L;
38990 return Load<PT_Sint16>(S, OpPC);
38991}
38992bool EvalEmitter::emitLoadUint16(SourceInfo L) {
38993 if (!isActive()) return true;
38994 CurrentSource = L;
38995 return Load<PT_Uint16>(S, OpPC);
38996}
38997bool EvalEmitter::emitLoadSint32(SourceInfo L) {
38998 if (!isActive()) return true;
38999 CurrentSource = L;
39000 return Load<PT_Sint32>(S, OpPC);
39001}
39002bool EvalEmitter::emitLoadUint32(SourceInfo L) {
39003 if (!isActive()) return true;
39004 CurrentSource = L;
39005 return Load<PT_Uint32>(S, OpPC);
39006}
39007bool EvalEmitter::emitLoadSint64(SourceInfo L) {
39008 if (!isActive()) return true;
39009 CurrentSource = L;
39010 return Load<PT_Sint64>(S, OpPC);
39011}
39012bool EvalEmitter::emitLoadUint64(SourceInfo L) {
39013 if (!isActive()) return true;
39014 CurrentSource = L;
39015 return Load<PT_Uint64>(S, OpPC);
39016}
39017bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
39018 if (!isActive()) return true;
39019 CurrentSource = L;
39020 return Load<PT_IntAP>(S, OpPC);
39021}
39022bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
39023 if (!isActive()) return true;
39024 CurrentSource = L;
39025 return Load<PT_IntAPS>(S, OpPC);
39026}
39027bool EvalEmitter::emitLoadBool(SourceInfo L) {
39028 if (!isActive()) return true;
39029 CurrentSource = L;
39030 return Load<PT_Bool>(S, OpPC);
39031}
39032bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
39033 if (!isActive()) return true;
39034 CurrentSource = L;
39035 return Load<PT_FixedPoint>(S, OpPC);
39036}
39037bool EvalEmitter::emitLoadPtr(SourceInfo L) {
39038 if (!isActive()) return true;
39039 CurrentSource = L;
39040 return Load<PT_Ptr>(S, OpPC);
39041}
39042bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
39043 if (!isActive()) return true;
39044 CurrentSource = L;
39045 return Load<PT_MemberPtr>(S, OpPC);
39046}
39047bool EvalEmitter::emitLoadFloat(SourceInfo L) {
39048 if (!isActive()) return true;
39049 CurrentSource = L;
39050 return Load<PT_Float>(S, OpPC);
39051}
39052#endif
39053#ifdef GET_OPCODE_NAMES
39054OP_LoadPopSint8,
39055OP_LoadPopUint8,
39056OP_LoadPopSint16,
39057OP_LoadPopUint16,
39058OP_LoadPopSint32,
39059OP_LoadPopUint32,
39060OP_LoadPopSint64,
39061OP_LoadPopUint64,
39062OP_LoadPopIntAP,
39063OP_LoadPopIntAPS,
39064OP_LoadPopBool,
39065OP_LoadPopFixedPoint,
39066OP_LoadPopPtr,
39067OP_LoadPopMemberPtr,
39068OP_LoadPopFloat,
39069#endif
39070#ifdef GET_INTERPFN_LIST
39071&Interp_LoadPopSint8,
39072&Interp_LoadPopUint8,
39073&Interp_LoadPopSint16,
39074&Interp_LoadPopUint16,
39075&Interp_LoadPopSint32,
39076&Interp_LoadPopUint32,
39077&Interp_LoadPopSint64,
39078&Interp_LoadPopUint64,
39079&Interp_LoadPopIntAP,
39080&Interp_LoadPopIntAPS,
39081&Interp_LoadPopBool,
39082&Interp_LoadPopFixedPoint,
39083&Interp_LoadPopPtr,
39084&Interp_LoadPopMemberPtr,
39085&Interp_LoadPopFloat,
39086#endif
39087#ifdef GET_INTERPFN_DISPATCHERS
39088PRESERVE_NONE
39089static bool Interp_LoadPopSint8(InterpState &S, CodePtr &PC) {
39090 if (!LoadPop<PT_Sint8>(S, PC))
39091 return false;
39092#if USE_TAILCALLS
39093 MUSTTAIL return InterpNext(S, PC);
39094#else
39095 return true;
39096#endif
39097}
39098PRESERVE_NONE
39099static bool Interp_LoadPopUint8(InterpState &S, CodePtr &PC) {
39100 if (!LoadPop<PT_Uint8>(S, PC))
39101 return false;
39102#if USE_TAILCALLS
39103 MUSTTAIL return InterpNext(S, PC);
39104#else
39105 return true;
39106#endif
39107}
39108PRESERVE_NONE
39109static bool Interp_LoadPopSint16(InterpState &S, CodePtr &PC) {
39110 if (!LoadPop<PT_Sint16>(S, PC))
39111 return false;
39112#if USE_TAILCALLS
39113 MUSTTAIL return InterpNext(S, PC);
39114#else
39115 return true;
39116#endif
39117}
39118PRESERVE_NONE
39119static bool Interp_LoadPopUint16(InterpState &S, CodePtr &PC) {
39120 if (!LoadPop<PT_Uint16>(S, PC))
39121 return false;
39122#if USE_TAILCALLS
39123 MUSTTAIL return InterpNext(S, PC);
39124#else
39125 return true;
39126#endif
39127}
39128PRESERVE_NONE
39129static bool Interp_LoadPopSint32(InterpState &S, CodePtr &PC) {
39130 if (!LoadPop<PT_Sint32>(S, PC))
39131 return false;
39132#if USE_TAILCALLS
39133 MUSTTAIL return InterpNext(S, PC);
39134#else
39135 return true;
39136#endif
39137}
39138PRESERVE_NONE
39139static bool Interp_LoadPopUint32(InterpState &S, CodePtr &PC) {
39140 if (!LoadPop<PT_Uint32>(S, PC))
39141 return false;
39142#if USE_TAILCALLS
39143 MUSTTAIL return InterpNext(S, PC);
39144#else
39145 return true;
39146#endif
39147}
39148PRESERVE_NONE
39149static bool Interp_LoadPopSint64(InterpState &S, CodePtr &PC) {
39150 if (!LoadPop<PT_Sint64>(S, PC))
39151 return false;
39152#if USE_TAILCALLS
39153 MUSTTAIL return InterpNext(S, PC);
39154#else
39155 return true;
39156#endif
39157}
39158PRESERVE_NONE
39159static bool Interp_LoadPopUint64(InterpState &S, CodePtr &PC) {
39160 if (!LoadPop<PT_Uint64>(S, PC))
39161 return false;
39162#if USE_TAILCALLS
39163 MUSTTAIL return InterpNext(S, PC);
39164#else
39165 return true;
39166#endif
39167}
39168PRESERVE_NONE
39169static bool Interp_LoadPopIntAP(InterpState &S, CodePtr &PC) {
39170 if (!LoadPop<PT_IntAP>(S, PC))
39171 return false;
39172#if USE_TAILCALLS
39173 MUSTTAIL return InterpNext(S, PC);
39174#else
39175 return true;
39176#endif
39177}
39178PRESERVE_NONE
39179static bool Interp_LoadPopIntAPS(InterpState &S, CodePtr &PC) {
39180 if (!LoadPop<PT_IntAPS>(S, PC))
39181 return false;
39182#if USE_TAILCALLS
39183 MUSTTAIL return InterpNext(S, PC);
39184#else
39185 return true;
39186#endif
39187}
39188PRESERVE_NONE
39189static bool Interp_LoadPopBool(InterpState &S, CodePtr &PC) {
39190 if (!LoadPop<PT_Bool>(S, PC))
39191 return false;
39192#if USE_TAILCALLS
39193 MUSTTAIL return InterpNext(S, PC);
39194#else
39195 return true;
39196#endif
39197}
39198PRESERVE_NONE
39199static bool Interp_LoadPopFixedPoint(InterpState &S, CodePtr &PC) {
39200 if (!LoadPop<PT_FixedPoint>(S, PC))
39201 return false;
39202#if USE_TAILCALLS
39203 MUSTTAIL return InterpNext(S, PC);
39204#else
39205 return true;
39206#endif
39207}
39208PRESERVE_NONE
39209static bool Interp_LoadPopPtr(InterpState &S, CodePtr &PC) {
39210 if (!LoadPop<PT_Ptr>(S, PC))
39211 return false;
39212#if USE_TAILCALLS
39213 MUSTTAIL return InterpNext(S, PC);
39214#else
39215 return true;
39216#endif
39217}
39218PRESERVE_NONE
39219static bool Interp_LoadPopMemberPtr(InterpState &S, CodePtr &PC) {
39220 if (!LoadPop<PT_MemberPtr>(S, PC))
39221 return false;
39222#if USE_TAILCALLS
39223 MUSTTAIL return InterpNext(S, PC);
39224#else
39225 return true;
39226#endif
39227}
39228PRESERVE_NONE
39229static bool Interp_LoadPopFloat(InterpState &S, CodePtr &PC) {
39230 if (!LoadPop<PT_Float>(S, PC))
39231 return false;
39232#if USE_TAILCALLS
39233 MUSTTAIL return InterpNext(S, PC);
39234#else
39235 return true;
39236#endif
39237}
39238#endif
39239#ifdef GET_DISASM
39240case OP_LoadPopSint8:
39241 Text.Op = PrintName("LoadPopSint8");
39242 break;
39243case OP_LoadPopUint8:
39244 Text.Op = PrintName("LoadPopUint8");
39245 break;
39246case OP_LoadPopSint16:
39247 Text.Op = PrintName("LoadPopSint16");
39248 break;
39249case OP_LoadPopUint16:
39250 Text.Op = PrintName("LoadPopUint16");
39251 break;
39252case OP_LoadPopSint32:
39253 Text.Op = PrintName("LoadPopSint32");
39254 break;
39255case OP_LoadPopUint32:
39256 Text.Op = PrintName("LoadPopUint32");
39257 break;
39258case OP_LoadPopSint64:
39259 Text.Op = PrintName("LoadPopSint64");
39260 break;
39261case OP_LoadPopUint64:
39262 Text.Op = PrintName("LoadPopUint64");
39263 break;
39264case OP_LoadPopIntAP:
39265 Text.Op = PrintName("LoadPopIntAP");
39266 break;
39267case OP_LoadPopIntAPS:
39268 Text.Op = PrintName("LoadPopIntAPS");
39269 break;
39270case OP_LoadPopBool:
39271 Text.Op = PrintName("LoadPopBool");
39272 break;
39273case OP_LoadPopFixedPoint:
39274 Text.Op = PrintName("LoadPopFixedPoint");
39275 break;
39276case OP_LoadPopPtr:
39277 Text.Op = PrintName("LoadPopPtr");
39278 break;
39279case OP_LoadPopMemberPtr:
39280 Text.Op = PrintName("LoadPopMemberPtr");
39281 break;
39282case OP_LoadPopFloat:
39283 Text.Op = PrintName("LoadPopFloat");
39284 break;
39285#endif
39286#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39287bool emitLoadPopSint8(SourceInfo);
39288bool emitLoadPopUint8(SourceInfo);
39289bool emitLoadPopSint16(SourceInfo);
39290bool emitLoadPopUint16(SourceInfo);
39291bool emitLoadPopSint32(SourceInfo);
39292bool emitLoadPopUint32(SourceInfo);
39293bool emitLoadPopSint64(SourceInfo);
39294bool emitLoadPopUint64(SourceInfo);
39295bool emitLoadPopIntAP(SourceInfo);
39296bool emitLoadPopIntAPS(SourceInfo);
39297bool emitLoadPopBool(SourceInfo);
39298bool emitLoadPopFixedPoint(SourceInfo);
39299bool emitLoadPopPtr(SourceInfo);
39300bool emitLoadPopMemberPtr(SourceInfo);
39301bool emitLoadPopFloat(SourceInfo);
39302#endif
39303#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39304[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
39305#endif
39306#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39307bool
39308#if defined(GET_EVAL_IMPL)
39309EvalEmitter
39310#else
39311ByteCodeEmitter
39312#endif
39313::emitLoadPop(PrimType T0, SourceInfo I) {
39314 switch (T0) {
39315 case PT_Sint8:
39316 return emitLoadPopSint8(I);
39317 case PT_Uint8:
39318 return emitLoadPopUint8(I);
39319 case PT_Sint16:
39320 return emitLoadPopSint16(I);
39321 case PT_Uint16:
39322 return emitLoadPopUint16(I);
39323 case PT_Sint32:
39324 return emitLoadPopSint32(I);
39325 case PT_Uint32:
39326 return emitLoadPopUint32(I);
39327 case PT_Sint64:
39328 return emitLoadPopSint64(I);
39329 case PT_Uint64:
39330 return emitLoadPopUint64(I);
39331 case PT_IntAP:
39332 return emitLoadPopIntAP(I);
39333 case PT_IntAPS:
39334 return emitLoadPopIntAPS(I);
39335 case PT_Bool:
39336 return emitLoadPopBool(I);
39337 case PT_FixedPoint:
39338 return emitLoadPopFixedPoint(I);
39339 case PT_Ptr:
39340 return emitLoadPopPtr(I);
39341 case PT_MemberPtr:
39342 return emitLoadPopMemberPtr(I);
39343 case PT_Float:
39344 return emitLoadPopFloat(I);
39345 }
39346 llvm_unreachable("invalid enum value");
39347}
39348#endif
39349#ifdef GET_LINK_IMPL
39350bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
39351 return emitOp<>(OP_LoadPopSint8, L);
39352}
39353bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
39354 return emitOp<>(OP_LoadPopUint8, L);
39355}
39356bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
39357 return emitOp<>(OP_LoadPopSint16, L);
39358}
39359bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
39360 return emitOp<>(OP_LoadPopUint16, L);
39361}
39362bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
39363 return emitOp<>(OP_LoadPopSint32, L);
39364}
39365bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
39366 return emitOp<>(OP_LoadPopUint32, L);
39367}
39368bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
39369 return emitOp<>(OP_LoadPopSint64, L);
39370}
39371bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
39372 return emitOp<>(OP_LoadPopUint64, L);
39373}
39374bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
39375 return emitOp<>(OP_LoadPopIntAP, L);
39376}
39377bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
39378 return emitOp<>(OP_LoadPopIntAPS, L);
39379}
39380bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
39381 return emitOp<>(OP_LoadPopBool, L);
39382}
39383bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
39384 return emitOp<>(OP_LoadPopFixedPoint, L);
39385}
39386bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
39387 return emitOp<>(OP_LoadPopPtr, L);
39388}
39389bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
39390 return emitOp<>(OP_LoadPopMemberPtr, L);
39391}
39392bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
39393 return emitOp<>(OP_LoadPopFloat, L);
39394}
39395#endif
39396#ifdef GET_EVAL_IMPL
39397bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
39398 if (!isActive()) return true;
39399 CurrentSource = L;
39400 return LoadPop<PT_Sint8>(S, OpPC);
39401}
39402bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
39403 if (!isActive()) return true;
39404 CurrentSource = L;
39405 return LoadPop<PT_Uint8>(S, OpPC);
39406}
39407bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
39408 if (!isActive()) return true;
39409 CurrentSource = L;
39410 return LoadPop<PT_Sint16>(S, OpPC);
39411}
39412bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
39413 if (!isActive()) return true;
39414 CurrentSource = L;
39415 return LoadPop<PT_Uint16>(S, OpPC);
39416}
39417bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
39418 if (!isActive()) return true;
39419 CurrentSource = L;
39420 return LoadPop<PT_Sint32>(S, OpPC);
39421}
39422bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
39423 if (!isActive()) return true;
39424 CurrentSource = L;
39425 return LoadPop<PT_Uint32>(S, OpPC);
39426}
39427bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
39428 if (!isActive()) return true;
39429 CurrentSource = L;
39430 return LoadPop<PT_Sint64>(S, OpPC);
39431}
39432bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
39433 if (!isActive()) return true;
39434 CurrentSource = L;
39435 return LoadPop<PT_Uint64>(S, OpPC);
39436}
39437bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
39438 if (!isActive()) return true;
39439 CurrentSource = L;
39440 return LoadPop<PT_IntAP>(S, OpPC);
39441}
39442bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
39443 if (!isActive()) return true;
39444 CurrentSource = L;
39445 return LoadPop<PT_IntAPS>(S, OpPC);
39446}
39447bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
39448 if (!isActive()) return true;
39449 CurrentSource = L;
39450 return LoadPop<PT_Bool>(S, OpPC);
39451}
39452bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
39453 if (!isActive()) return true;
39454 CurrentSource = L;
39455 return LoadPop<PT_FixedPoint>(S, OpPC);
39456}
39457bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
39458 if (!isActive()) return true;
39459 CurrentSource = L;
39460 return LoadPop<PT_Ptr>(S, OpPC);
39461}
39462bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
39463 if (!isActive()) return true;
39464 CurrentSource = L;
39465 return LoadPop<PT_MemberPtr>(S, OpPC);
39466}
39467bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
39468 if (!isActive()) return true;
39469 CurrentSource = L;
39470 return LoadPop<PT_Float>(S, OpPC);
39471}
39472#endif
39473#ifdef GET_OPCODE_NAMES
39474OP_Memcpy,
39475#endif
39476#ifdef GET_INTERPFN_LIST
39477&Interp_Memcpy,
39478#endif
39479#ifdef GET_INTERPFN_DISPATCHERS
39480PRESERVE_NONE
39481static bool Interp_Memcpy(InterpState &S, CodePtr &PC) {
39482 if (!Memcpy(S, PC))
39483 return false;
39484#if USE_TAILCALLS
39485 MUSTTAIL return InterpNext(S, PC);
39486#else
39487 return true;
39488#endif
39489}
39490#endif
39491#ifdef GET_DISASM
39492case OP_Memcpy:
39493 Text.Op = PrintName("Memcpy");
39494 break;
39495#endif
39496#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39497bool emitMemcpy(SourceInfo);
39498#endif
39499#ifdef GET_LINK_IMPL
39500bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
39501 return emitOp<>(OP_Memcpy, L);
39502}
39503#endif
39504#ifdef GET_EVAL_IMPL
39505bool EvalEmitter::emitMemcpy(SourceInfo L) {
39506 if (!isActive()) return true;
39507 CurrentSource = L;
39508 return Memcpy(S, OpPC);
39509}
39510#endif
39511#ifdef GET_OPCODE_NAMES
39512OP_MulSint8,
39513OP_MulUint8,
39514OP_MulSint16,
39515OP_MulUint16,
39516OP_MulSint32,
39517OP_MulUint32,
39518OP_MulSint64,
39519OP_MulUint64,
39520OP_MulIntAP,
39521OP_MulIntAPS,
39522OP_MulBool,
39523OP_MulFixedPoint,
39524#endif
39525#ifdef GET_INTERPFN_LIST
39526&Interp_MulSint8,
39527&Interp_MulUint8,
39528&Interp_MulSint16,
39529&Interp_MulUint16,
39530&Interp_MulSint32,
39531&Interp_MulUint32,
39532&Interp_MulSint64,
39533&Interp_MulUint64,
39534&Interp_MulIntAP,
39535&Interp_MulIntAPS,
39536&Interp_MulBool,
39537&Interp_MulFixedPoint,
39538#endif
39539#ifdef GET_INTERPFN_DISPATCHERS
39540PRESERVE_NONE
39541static bool Interp_MulSint8(InterpState &S, CodePtr &PC) {
39542 if (!Mul<PT_Sint8>(S, PC))
39543 return false;
39544#if USE_TAILCALLS
39545 MUSTTAIL return InterpNext(S, PC);
39546#else
39547 return true;
39548#endif
39549}
39550PRESERVE_NONE
39551static bool Interp_MulUint8(InterpState &S, CodePtr &PC) {
39552 if (!Mul<PT_Uint8>(S, PC))
39553 return false;
39554#if USE_TAILCALLS
39555 MUSTTAIL return InterpNext(S, PC);
39556#else
39557 return true;
39558#endif
39559}
39560PRESERVE_NONE
39561static bool Interp_MulSint16(InterpState &S, CodePtr &PC) {
39562 if (!Mul<PT_Sint16>(S, PC))
39563 return false;
39564#if USE_TAILCALLS
39565 MUSTTAIL return InterpNext(S, PC);
39566#else
39567 return true;
39568#endif
39569}
39570PRESERVE_NONE
39571static bool Interp_MulUint16(InterpState &S, CodePtr &PC) {
39572 if (!Mul<PT_Uint16>(S, PC))
39573 return false;
39574#if USE_TAILCALLS
39575 MUSTTAIL return InterpNext(S, PC);
39576#else
39577 return true;
39578#endif
39579}
39580PRESERVE_NONE
39581static bool Interp_MulSint32(InterpState &S, CodePtr &PC) {
39582 if (!Mul<PT_Sint32>(S, PC))
39583 return false;
39584#if USE_TAILCALLS
39585 MUSTTAIL return InterpNext(S, PC);
39586#else
39587 return true;
39588#endif
39589}
39590PRESERVE_NONE
39591static bool Interp_MulUint32(InterpState &S, CodePtr &PC) {
39592 if (!Mul<PT_Uint32>(S, PC))
39593 return false;
39594#if USE_TAILCALLS
39595 MUSTTAIL return InterpNext(S, PC);
39596#else
39597 return true;
39598#endif
39599}
39600PRESERVE_NONE
39601static bool Interp_MulSint64(InterpState &S, CodePtr &PC) {
39602 if (!Mul<PT_Sint64>(S, PC))
39603 return false;
39604#if USE_TAILCALLS
39605 MUSTTAIL return InterpNext(S, PC);
39606#else
39607 return true;
39608#endif
39609}
39610PRESERVE_NONE
39611static bool Interp_MulUint64(InterpState &S, CodePtr &PC) {
39612 if (!Mul<PT_Uint64>(S, PC))
39613 return false;
39614#if USE_TAILCALLS
39615 MUSTTAIL return InterpNext(S, PC);
39616#else
39617 return true;
39618#endif
39619}
39620PRESERVE_NONE
39621static bool Interp_MulIntAP(InterpState &S, CodePtr &PC) {
39622 if (!Mul<PT_IntAP>(S, PC))
39623 return false;
39624#if USE_TAILCALLS
39625 MUSTTAIL return InterpNext(S, PC);
39626#else
39627 return true;
39628#endif
39629}
39630PRESERVE_NONE
39631static bool Interp_MulIntAPS(InterpState &S, CodePtr &PC) {
39632 if (!Mul<PT_IntAPS>(S, PC))
39633 return false;
39634#if USE_TAILCALLS
39635 MUSTTAIL return InterpNext(S, PC);
39636#else
39637 return true;
39638#endif
39639}
39640PRESERVE_NONE
39641static bool Interp_MulBool(InterpState &S, CodePtr &PC) {
39642 if (!Mul<PT_Bool>(S, PC))
39643 return false;
39644#if USE_TAILCALLS
39645 MUSTTAIL return InterpNext(S, PC);
39646#else
39647 return true;
39648#endif
39649}
39650PRESERVE_NONE
39651static bool Interp_MulFixedPoint(InterpState &S, CodePtr &PC) {
39652 if (!Mul<PT_FixedPoint>(S, PC))
39653 return false;
39654#if USE_TAILCALLS
39655 MUSTTAIL return InterpNext(S, PC);
39656#else
39657 return true;
39658#endif
39659}
39660#endif
39661#ifdef GET_DISASM
39662case OP_MulSint8:
39663 Text.Op = PrintName("MulSint8");
39664 break;
39665case OP_MulUint8:
39666 Text.Op = PrintName("MulUint8");
39667 break;
39668case OP_MulSint16:
39669 Text.Op = PrintName("MulSint16");
39670 break;
39671case OP_MulUint16:
39672 Text.Op = PrintName("MulUint16");
39673 break;
39674case OP_MulSint32:
39675 Text.Op = PrintName("MulSint32");
39676 break;
39677case OP_MulUint32:
39678 Text.Op = PrintName("MulUint32");
39679 break;
39680case OP_MulSint64:
39681 Text.Op = PrintName("MulSint64");
39682 break;
39683case OP_MulUint64:
39684 Text.Op = PrintName("MulUint64");
39685 break;
39686case OP_MulIntAP:
39687 Text.Op = PrintName("MulIntAP");
39688 break;
39689case OP_MulIntAPS:
39690 Text.Op = PrintName("MulIntAPS");
39691 break;
39692case OP_MulBool:
39693 Text.Op = PrintName("MulBool");
39694 break;
39695case OP_MulFixedPoint:
39696 Text.Op = PrintName("MulFixedPoint");
39697 break;
39698#endif
39699#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39700bool emitMulSint8(SourceInfo);
39701bool emitMulUint8(SourceInfo);
39702bool emitMulSint16(SourceInfo);
39703bool emitMulUint16(SourceInfo);
39704bool emitMulSint32(SourceInfo);
39705bool emitMulUint32(SourceInfo);
39706bool emitMulSint64(SourceInfo);
39707bool emitMulUint64(SourceInfo);
39708bool emitMulIntAP(SourceInfo);
39709bool emitMulIntAPS(SourceInfo);
39710bool emitMulBool(SourceInfo);
39711bool emitMulFixedPoint(SourceInfo);
39712#endif
39713#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39714[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
39715#endif
39716#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39717bool
39718#if defined(GET_EVAL_IMPL)
39719EvalEmitter
39720#else
39721ByteCodeEmitter
39722#endif
39723::emitMul(PrimType T0, SourceInfo I) {
39724 switch (T0) {
39725 case PT_Sint8:
39726 return emitMulSint8(I);
39727 case PT_Uint8:
39728 return emitMulUint8(I);
39729 case PT_Sint16:
39730 return emitMulSint16(I);
39731 case PT_Uint16:
39732 return emitMulUint16(I);
39733 case PT_Sint32:
39734 return emitMulSint32(I);
39735 case PT_Uint32:
39736 return emitMulUint32(I);
39737 case PT_Sint64:
39738 return emitMulSint64(I);
39739 case PT_Uint64:
39740 return emitMulUint64(I);
39741 case PT_IntAP:
39742 return emitMulIntAP(I);
39743 case PT_IntAPS:
39744 return emitMulIntAPS(I);
39745 case PT_Bool:
39746 return emitMulBool(I);
39747 case PT_FixedPoint:
39748 return emitMulFixedPoint(I);
39749 default: llvm_unreachable("invalid type: emitMul");
39750 }
39751 llvm_unreachable("invalid enum value");
39752}
39753#endif
39754#ifdef GET_LINK_IMPL
39755bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
39756 return emitOp<>(OP_MulSint8, L);
39757}
39758bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
39759 return emitOp<>(OP_MulUint8, L);
39760}
39761bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
39762 return emitOp<>(OP_MulSint16, L);
39763}
39764bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
39765 return emitOp<>(OP_MulUint16, L);
39766}
39767bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
39768 return emitOp<>(OP_MulSint32, L);
39769}
39770bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
39771 return emitOp<>(OP_MulUint32, L);
39772}
39773bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
39774 return emitOp<>(OP_MulSint64, L);
39775}
39776bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
39777 return emitOp<>(OP_MulUint64, L);
39778}
39779bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
39780 return emitOp<>(OP_MulIntAP, L);
39781}
39782bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
39783 return emitOp<>(OP_MulIntAPS, L);
39784}
39785bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
39786 return emitOp<>(OP_MulBool, L);
39787}
39788bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
39789 return emitOp<>(OP_MulFixedPoint, L);
39790}
39791#endif
39792#ifdef GET_EVAL_IMPL
39793bool EvalEmitter::emitMulSint8(SourceInfo L) {
39794 if (!isActive()) return true;
39795 CurrentSource = L;
39796 return Mul<PT_Sint8>(S, OpPC);
39797}
39798bool EvalEmitter::emitMulUint8(SourceInfo L) {
39799 if (!isActive()) return true;
39800 CurrentSource = L;
39801 return Mul<PT_Uint8>(S, OpPC);
39802}
39803bool EvalEmitter::emitMulSint16(SourceInfo L) {
39804 if (!isActive()) return true;
39805 CurrentSource = L;
39806 return Mul<PT_Sint16>(S, OpPC);
39807}
39808bool EvalEmitter::emitMulUint16(SourceInfo L) {
39809 if (!isActive()) return true;
39810 CurrentSource = L;
39811 return Mul<PT_Uint16>(S, OpPC);
39812}
39813bool EvalEmitter::emitMulSint32(SourceInfo L) {
39814 if (!isActive()) return true;
39815 CurrentSource = L;
39816 return Mul<PT_Sint32>(S, OpPC);
39817}
39818bool EvalEmitter::emitMulUint32(SourceInfo L) {
39819 if (!isActive()) return true;
39820 CurrentSource = L;
39821 return Mul<PT_Uint32>(S, OpPC);
39822}
39823bool EvalEmitter::emitMulSint64(SourceInfo L) {
39824 if (!isActive()) return true;
39825 CurrentSource = L;
39826 return Mul<PT_Sint64>(S, OpPC);
39827}
39828bool EvalEmitter::emitMulUint64(SourceInfo L) {
39829 if (!isActive()) return true;
39830 CurrentSource = L;
39831 return Mul<PT_Uint64>(S, OpPC);
39832}
39833bool EvalEmitter::emitMulIntAP(SourceInfo L) {
39834 if (!isActive()) return true;
39835 CurrentSource = L;
39836 return Mul<PT_IntAP>(S, OpPC);
39837}
39838bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
39839 if (!isActive()) return true;
39840 CurrentSource = L;
39841 return Mul<PT_IntAPS>(S, OpPC);
39842}
39843bool EvalEmitter::emitMulBool(SourceInfo L) {
39844 if (!isActive()) return true;
39845 CurrentSource = L;
39846 return Mul<PT_Bool>(S, OpPC);
39847}
39848bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
39849 if (!isActive()) return true;
39850 CurrentSource = L;
39851 return Mul<PT_FixedPoint>(S, OpPC);
39852}
39853#endif
39854#ifdef GET_OPCODE_NAMES
39855OP_MulcSint8,
39856OP_MulcUint8,
39857OP_MulcSint16,
39858OP_MulcUint16,
39859OP_MulcSint32,
39860OP_MulcUint32,
39861OP_MulcSint64,
39862OP_MulcUint64,
39863OP_MulcIntAP,
39864OP_MulcIntAPS,
39865OP_MulcFloat,
39866#endif
39867#ifdef GET_INTERPFN_LIST
39868&Interp_MulcSint8,
39869&Interp_MulcUint8,
39870&Interp_MulcSint16,
39871&Interp_MulcUint16,
39872&Interp_MulcSint32,
39873&Interp_MulcUint32,
39874&Interp_MulcSint64,
39875&Interp_MulcUint64,
39876&Interp_MulcIntAP,
39877&Interp_MulcIntAPS,
39878&Interp_MulcFloat,
39879#endif
39880#ifdef GET_INTERPFN_DISPATCHERS
39881PRESERVE_NONE
39882static bool Interp_MulcSint8(InterpState &S, CodePtr &PC) {
39883 if (!Mulc<PT_Sint8>(S, PC))
39884 return false;
39885#if USE_TAILCALLS
39886 MUSTTAIL return InterpNext(S, PC);
39887#else
39888 return true;
39889#endif
39890}
39891PRESERVE_NONE
39892static bool Interp_MulcUint8(InterpState &S, CodePtr &PC) {
39893 if (!Mulc<PT_Uint8>(S, PC))
39894 return false;
39895#if USE_TAILCALLS
39896 MUSTTAIL return InterpNext(S, PC);
39897#else
39898 return true;
39899#endif
39900}
39901PRESERVE_NONE
39902static bool Interp_MulcSint16(InterpState &S, CodePtr &PC) {
39903 if (!Mulc<PT_Sint16>(S, PC))
39904 return false;
39905#if USE_TAILCALLS
39906 MUSTTAIL return InterpNext(S, PC);
39907#else
39908 return true;
39909#endif
39910}
39911PRESERVE_NONE
39912static bool Interp_MulcUint16(InterpState &S, CodePtr &PC) {
39913 if (!Mulc<PT_Uint16>(S, PC))
39914 return false;
39915#if USE_TAILCALLS
39916 MUSTTAIL return InterpNext(S, PC);
39917#else
39918 return true;
39919#endif
39920}
39921PRESERVE_NONE
39922static bool Interp_MulcSint32(InterpState &S, CodePtr &PC) {
39923 if (!Mulc<PT_Sint32>(S, PC))
39924 return false;
39925#if USE_TAILCALLS
39926 MUSTTAIL return InterpNext(S, PC);
39927#else
39928 return true;
39929#endif
39930}
39931PRESERVE_NONE
39932static bool Interp_MulcUint32(InterpState &S, CodePtr &PC) {
39933 if (!Mulc<PT_Uint32>(S, PC))
39934 return false;
39935#if USE_TAILCALLS
39936 MUSTTAIL return InterpNext(S, PC);
39937#else
39938 return true;
39939#endif
39940}
39941PRESERVE_NONE
39942static bool Interp_MulcSint64(InterpState &S, CodePtr &PC) {
39943 if (!Mulc<PT_Sint64>(S, PC))
39944 return false;
39945#if USE_TAILCALLS
39946 MUSTTAIL return InterpNext(S, PC);
39947#else
39948 return true;
39949#endif
39950}
39951PRESERVE_NONE
39952static bool Interp_MulcUint64(InterpState &S, CodePtr &PC) {
39953 if (!Mulc<PT_Uint64>(S, PC))
39954 return false;
39955#if USE_TAILCALLS
39956 MUSTTAIL return InterpNext(S, PC);
39957#else
39958 return true;
39959#endif
39960}
39961PRESERVE_NONE
39962static bool Interp_MulcIntAP(InterpState &S, CodePtr &PC) {
39963 if (!Mulc<PT_IntAP>(S, PC))
39964 return false;
39965#if USE_TAILCALLS
39966 MUSTTAIL return InterpNext(S, PC);
39967#else
39968 return true;
39969#endif
39970}
39971PRESERVE_NONE
39972static bool Interp_MulcIntAPS(InterpState &S, CodePtr &PC) {
39973 if (!Mulc<PT_IntAPS>(S, PC))
39974 return false;
39975#if USE_TAILCALLS
39976 MUSTTAIL return InterpNext(S, PC);
39977#else
39978 return true;
39979#endif
39980}
39981PRESERVE_NONE
39982static bool Interp_MulcFloat(InterpState &S, CodePtr &PC) {
39983 if (!Mulc<PT_Float>(S, PC))
39984 return false;
39985#if USE_TAILCALLS
39986 MUSTTAIL return InterpNext(S, PC);
39987#else
39988 return true;
39989#endif
39990}
39991#endif
39992#ifdef GET_DISASM
39993case OP_MulcSint8:
39994 Text.Op = PrintName("MulcSint8");
39995 break;
39996case OP_MulcUint8:
39997 Text.Op = PrintName("MulcUint8");
39998 break;
39999case OP_MulcSint16:
40000 Text.Op = PrintName("MulcSint16");
40001 break;
40002case OP_MulcUint16:
40003 Text.Op = PrintName("MulcUint16");
40004 break;
40005case OP_MulcSint32:
40006 Text.Op = PrintName("MulcSint32");
40007 break;
40008case OP_MulcUint32:
40009 Text.Op = PrintName("MulcUint32");
40010 break;
40011case OP_MulcSint64:
40012 Text.Op = PrintName("MulcSint64");
40013 break;
40014case OP_MulcUint64:
40015 Text.Op = PrintName("MulcUint64");
40016 break;
40017case OP_MulcIntAP:
40018 Text.Op = PrintName("MulcIntAP");
40019 break;
40020case OP_MulcIntAPS:
40021 Text.Op = PrintName("MulcIntAPS");
40022 break;
40023case OP_MulcFloat:
40024 Text.Op = PrintName("MulcFloat");
40025 break;
40026#endif
40027#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40028bool emitMulcSint8(SourceInfo);
40029bool emitMulcUint8(SourceInfo);
40030bool emitMulcSint16(SourceInfo);
40031bool emitMulcUint16(SourceInfo);
40032bool emitMulcSint32(SourceInfo);
40033bool emitMulcUint32(SourceInfo);
40034bool emitMulcSint64(SourceInfo);
40035bool emitMulcUint64(SourceInfo);
40036bool emitMulcIntAP(SourceInfo);
40037bool emitMulcIntAPS(SourceInfo);
40038bool emitMulcFloat(SourceInfo);
40039#endif
40040#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40041[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
40042#endif
40043#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40044bool
40045#if defined(GET_EVAL_IMPL)
40046EvalEmitter
40047#else
40048ByteCodeEmitter
40049#endif
40050::emitMulc(PrimType T0, SourceInfo I) {
40051 switch (T0) {
40052 case PT_Sint8:
40053 return emitMulcSint8(I);
40054 case PT_Uint8:
40055 return emitMulcUint8(I);
40056 case PT_Sint16:
40057 return emitMulcSint16(I);
40058 case PT_Uint16:
40059 return emitMulcUint16(I);
40060 case PT_Sint32:
40061 return emitMulcSint32(I);
40062 case PT_Uint32:
40063 return emitMulcUint32(I);
40064 case PT_Sint64:
40065 return emitMulcSint64(I);
40066 case PT_Uint64:
40067 return emitMulcUint64(I);
40068 case PT_IntAP:
40069 return emitMulcIntAP(I);
40070 case PT_IntAPS:
40071 return emitMulcIntAPS(I);
40072 case PT_Float:
40073 return emitMulcFloat(I);
40074 default: llvm_unreachable("invalid type: emitMulc");
40075 }
40076 llvm_unreachable("invalid enum value");
40077}
40078#endif
40079#ifdef GET_LINK_IMPL
40080bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
40081 return emitOp<>(OP_MulcSint8, L);
40082}
40083bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
40084 return emitOp<>(OP_MulcUint8, L);
40085}
40086bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
40087 return emitOp<>(OP_MulcSint16, L);
40088}
40089bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
40090 return emitOp<>(OP_MulcUint16, L);
40091}
40092bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
40093 return emitOp<>(OP_MulcSint32, L);
40094}
40095bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
40096 return emitOp<>(OP_MulcUint32, L);
40097}
40098bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
40099 return emitOp<>(OP_MulcSint64, L);
40100}
40101bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
40102 return emitOp<>(OP_MulcUint64, L);
40103}
40104bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
40105 return emitOp<>(OP_MulcIntAP, L);
40106}
40107bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
40108 return emitOp<>(OP_MulcIntAPS, L);
40109}
40110bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
40111 return emitOp<>(OP_MulcFloat, L);
40112}
40113#endif
40114#ifdef GET_EVAL_IMPL
40115bool EvalEmitter::emitMulcSint8(SourceInfo L) {
40116 if (!isActive()) return true;
40117 CurrentSource = L;
40118 return Mulc<PT_Sint8>(S, OpPC);
40119}
40120bool EvalEmitter::emitMulcUint8(SourceInfo L) {
40121 if (!isActive()) return true;
40122 CurrentSource = L;
40123 return Mulc<PT_Uint8>(S, OpPC);
40124}
40125bool EvalEmitter::emitMulcSint16(SourceInfo L) {
40126 if (!isActive()) return true;
40127 CurrentSource = L;
40128 return Mulc<PT_Sint16>(S, OpPC);
40129}
40130bool EvalEmitter::emitMulcUint16(SourceInfo L) {
40131 if (!isActive()) return true;
40132 CurrentSource = L;
40133 return Mulc<PT_Uint16>(S, OpPC);
40134}
40135bool EvalEmitter::emitMulcSint32(SourceInfo L) {
40136 if (!isActive()) return true;
40137 CurrentSource = L;
40138 return Mulc<PT_Sint32>(S, OpPC);
40139}
40140bool EvalEmitter::emitMulcUint32(SourceInfo L) {
40141 if (!isActive()) return true;
40142 CurrentSource = L;
40143 return Mulc<PT_Uint32>(S, OpPC);
40144}
40145bool EvalEmitter::emitMulcSint64(SourceInfo L) {
40146 if (!isActive()) return true;
40147 CurrentSource = L;
40148 return Mulc<PT_Sint64>(S, OpPC);
40149}
40150bool EvalEmitter::emitMulcUint64(SourceInfo L) {
40151 if (!isActive()) return true;
40152 CurrentSource = L;
40153 return Mulc<PT_Uint64>(S, OpPC);
40154}
40155bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
40156 if (!isActive()) return true;
40157 CurrentSource = L;
40158 return Mulc<PT_IntAP>(S, OpPC);
40159}
40160bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
40161 if (!isActive()) return true;
40162 CurrentSource = L;
40163 return Mulc<PT_IntAPS>(S, OpPC);
40164}
40165bool EvalEmitter::emitMulcFloat(SourceInfo L) {
40166 if (!isActive()) return true;
40167 CurrentSource = L;
40168 return Mulc<PT_Float>(S, OpPC);
40169}
40170#endif
40171#ifdef GET_OPCODE_NAMES
40172OP_Mulf,
40173#endif
40174#ifdef GET_INTERPFN_LIST
40175&Interp_Mulf,
40176#endif
40177#ifdef GET_INTERPFN_DISPATCHERS
40178PRESERVE_NONE
40179static bool Interp_Mulf(InterpState &S, CodePtr &PC) {
40180 {
40181 CodePtr OpPC = PC;
40182 const auto V0 = ReadArg<uint32_t>(S, PC);
40183 if (!Mulf(S, OpPC, V0))
40184 return false;
40185 }
40186#if USE_TAILCALLS
40187 MUSTTAIL return InterpNext(S, PC);
40188#else
40189 return true;
40190#endif
40191}
40192#endif
40193#ifdef GET_DISASM
40194case OP_Mulf:
40195 Text.Op = PrintName("Mulf");
40196 Text.Args.push_back(printArg<uint32_t>(P, PC));
40197 break;
40198#endif
40199#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40200bool emitMulf( uint32_t , SourceInfo);
40201#endif
40202#ifdef GET_LINK_IMPL
40203bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
40204 return emitOp<uint32_t>(OP_Mulf, A0, L);
40205}
40206#endif
40207#ifdef GET_EVAL_IMPL
40208bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
40209 if (!isActive()) return true;
40210 CurrentSource = L;
40211 return Mulf(S, OpPC, A0);
40212}
40213#endif
40214#ifdef GET_OPCODE_NAMES
40215OP_NESint8,
40216OP_NEUint8,
40217OP_NESint16,
40218OP_NEUint16,
40219OP_NESint32,
40220OP_NEUint32,
40221OP_NESint64,
40222OP_NEUint64,
40223OP_NEIntAP,
40224OP_NEIntAPS,
40225OP_NEBool,
40226OP_NEFixedPoint,
40227OP_NEPtr,
40228OP_NEMemberPtr,
40229OP_NEFloat,
40230#endif
40231#ifdef GET_INTERPFN_LIST
40232&Interp_NESint8,
40233&Interp_NEUint8,
40234&Interp_NESint16,
40235&Interp_NEUint16,
40236&Interp_NESint32,
40237&Interp_NEUint32,
40238&Interp_NESint64,
40239&Interp_NEUint64,
40240&Interp_NEIntAP,
40241&Interp_NEIntAPS,
40242&Interp_NEBool,
40243&Interp_NEFixedPoint,
40244&Interp_NEPtr,
40245&Interp_NEMemberPtr,
40246&Interp_NEFloat,
40247#endif
40248#ifdef GET_INTERPFN_DISPATCHERS
40249PRESERVE_NONE
40250static bool Interp_NESint8(InterpState &S, CodePtr &PC) {
40251 if (!NE<PT_Sint8>(S, PC))
40252 return false;
40253#if USE_TAILCALLS
40254 MUSTTAIL return InterpNext(S, PC);
40255#else
40256 return true;
40257#endif
40258}
40259PRESERVE_NONE
40260static bool Interp_NEUint8(InterpState &S, CodePtr &PC) {
40261 if (!NE<PT_Uint8>(S, PC))
40262 return false;
40263#if USE_TAILCALLS
40264 MUSTTAIL return InterpNext(S, PC);
40265#else
40266 return true;
40267#endif
40268}
40269PRESERVE_NONE
40270static bool Interp_NESint16(InterpState &S, CodePtr &PC) {
40271 if (!NE<PT_Sint16>(S, PC))
40272 return false;
40273#if USE_TAILCALLS
40274 MUSTTAIL return InterpNext(S, PC);
40275#else
40276 return true;
40277#endif
40278}
40279PRESERVE_NONE
40280static bool Interp_NEUint16(InterpState &S, CodePtr &PC) {
40281 if (!NE<PT_Uint16>(S, PC))
40282 return false;
40283#if USE_TAILCALLS
40284 MUSTTAIL return InterpNext(S, PC);
40285#else
40286 return true;
40287#endif
40288}
40289PRESERVE_NONE
40290static bool Interp_NESint32(InterpState &S, CodePtr &PC) {
40291 if (!NE<PT_Sint32>(S, PC))
40292 return false;
40293#if USE_TAILCALLS
40294 MUSTTAIL return InterpNext(S, PC);
40295#else
40296 return true;
40297#endif
40298}
40299PRESERVE_NONE
40300static bool Interp_NEUint32(InterpState &S, CodePtr &PC) {
40301 if (!NE<PT_Uint32>(S, PC))
40302 return false;
40303#if USE_TAILCALLS
40304 MUSTTAIL return InterpNext(S, PC);
40305#else
40306 return true;
40307#endif
40308}
40309PRESERVE_NONE
40310static bool Interp_NESint64(InterpState &S, CodePtr &PC) {
40311 if (!NE<PT_Sint64>(S, PC))
40312 return false;
40313#if USE_TAILCALLS
40314 MUSTTAIL return InterpNext(S, PC);
40315#else
40316 return true;
40317#endif
40318}
40319PRESERVE_NONE
40320static bool Interp_NEUint64(InterpState &S, CodePtr &PC) {
40321 if (!NE<PT_Uint64>(S, PC))
40322 return false;
40323#if USE_TAILCALLS
40324 MUSTTAIL return InterpNext(S, PC);
40325#else
40326 return true;
40327#endif
40328}
40329PRESERVE_NONE
40330static bool Interp_NEIntAP(InterpState &S, CodePtr &PC) {
40331 if (!NE<PT_IntAP>(S, PC))
40332 return false;
40333#if USE_TAILCALLS
40334 MUSTTAIL return InterpNext(S, PC);
40335#else
40336 return true;
40337#endif
40338}
40339PRESERVE_NONE
40340static bool Interp_NEIntAPS(InterpState &S, CodePtr &PC) {
40341 if (!NE<PT_IntAPS>(S, PC))
40342 return false;
40343#if USE_TAILCALLS
40344 MUSTTAIL return InterpNext(S, PC);
40345#else
40346 return true;
40347#endif
40348}
40349PRESERVE_NONE
40350static bool Interp_NEBool(InterpState &S, CodePtr &PC) {
40351 if (!NE<PT_Bool>(S, PC))
40352 return false;
40353#if USE_TAILCALLS
40354 MUSTTAIL return InterpNext(S, PC);
40355#else
40356 return true;
40357#endif
40358}
40359PRESERVE_NONE
40360static bool Interp_NEFixedPoint(InterpState &S, CodePtr &PC) {
40361 if (!NE<PT_FixedPoint>(S, PC))
40362 return false;
40363#if USE_TAILCALLS
40364 MUSTTAIL return InterpNext(S, PC);
40365#else
40366 return true;
40367#endif
40368}
40369PRESERVE_NONE
40370static bool Interp_NEPtr(InterpState &S, CodePtr &PC) {
40371 if (!NE<PT_Ptr>(S, PC))
40372 return false;
40373#if USE_TAILCALLS
40374 MUSTTAIL return InterpNext(S, PC);
40375#else
40376 return true;
40377#endif
40378}
40379PRESERVE_NONE
40380static bool Interp_NEMemberPtr(InterpState &S, CodePtr &PC) {
40381 if (!NE<PT_MemberPtr>(S, PC))
40382 return false;
40383#if USE_TAILCALLS
40384 MUSTTAIL return InterpNext(S, PC);
40385#else
40386 return true;
40387#endif
40388}
40389PRESERVE_NONE
40390static bool Interp_NEFloat(InterpState &S, CodePtr &PC) {
40391 if (!NE<PT_Float>(S, PC))
40392 return false;
40393#if USE_TAILCALLS
40394 MUSTTAIL return InterpNext(S, PC);
40395#else
40396 return true;
40397#endif
40398}
40399#endif
40400#ifdef GET_DISASM
40401case OP_NESint8:
40402 Text.Op = PrintName("NESint8");
40403 break;
40404case OP_NEUint8:
40405 Text.Op = PrintName("NEUint8");
40406 break;
40407case OP_NESint16:
40408 Text.Op = PrintName("NESint16");
40409 break;
40410case OP_NEUint16:
40411 Text.Op = PrintName("NEUint16");
40412 break;
40413case OP_NESint32:
40414 Text.Op = PrintName("NESint32");
40415 break;
40416case OP_NEUint32:
40417 Text.Op = PrintName("NEUint32");
40418 break;
40419case OP_NESint64:
40420 Text.Op = PrintName("NESint64");
40421 break;
40422case OP_NEUint64:
40423 Text.Op = PrintName("NEUint64");
40424 break;
40425case OP_NEIntAP:
40426 Text.Op = PrintName("NEIntAP");
40427 break;
40428case OP_NEIntAPS:
40429 Text.Op = PrintName("NEIntAPS");
40430 break;
40431case OP_NEBool:
40432 Text.Op = PrintName("NEBool");
40433 break;
40434case OP_NEFixedPoint:
40435 Text.Op = PrintName("NEFixedPoint");
40436 break;
40437case OP_NEPtr:
40438 Text.Op = PrintName("NEPtr");
40439 break;
40440case OP_NEMemberPtr:
40441 Text.Op = PrintName("NEMemberPtr");
40442 break;
40443case OP_NEFloat:
40444 Text.Op = PrintName("NEFloat");
40445 break;
40446#endif
40447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40448bool emitNESint8(SourceInfo);
40449bool emitNEUint8(SourceInfo);
40450bool emitNESint16(SourceInfo);
40451bool emitNEUint16(SourceInfo);
40452bool emitNESint32(SourceInfo);
40453bool emitNEUint32(SourceInfo);
40454bool emitNESint64(SourceInfo);
40455bool emitNEUint64(SourceInfo);
40456bool emitNEIntAP(SourceInfo);
40457bool emitNEIntAPS(SourceInfo);
40458bool emitNEBool(SourceInfo);
40459bool emitNEFixedPoint(SourceInfo);
40460bool emitNEPtr(SourceInfo);
40461bool emitNEMemberPtr(SourceInfo);
40462bool emitNEFloat(SourceInfo);
40463#endif
40464#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40465[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
40466#endif
40467#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40468bool
40469#if defined(GET_EVAL_IMPL)
40470EvalEmitter
40471#else
40472ByteCodeEmitter
40473#endif
40474::emitNE(PrimType T0, SourceInfo I) {
40475 switch (T0) {
40476 case PT_Sint8:
40477 return emitNESint8(I);
40478 case PT_Uint8:
40479 return emitNEUint8(I);
40480 case PT_Sint16:
40481 return emitNESint16(I);
40482 case PT_Uint16:
40483 return emitNEUint16(I);
40484 case PT_Sint32:
40485 return emitNESint32(I);
40486 case PT_Uint32:
40487 return emitNEUint32(I);
40488 case PT_Sint64:
40489 return emitNESint64(I);
40490 case PT_Uint64:
40491 return emitNEUint64(I);
40492 case PT_IntAP:
40493 return emitNEIntAP(I);
40494 case PT_IntAPS:
40495 return emitNEIntAPS(I);
40496 case PT_Bool:
40497 return emitNEBool(I);
40498 case PT_FixedPoint:
40499 return emitNEFixedPoint(I);
40500 case PT_Ptr:
40501 return emitNEPtr(I);
40502 case PT_MemberPtr:
40503 return emitNEMemberPtr(I);
40504 case PT_Float:
40505 return emitNEFloat(I);
40506 }
40507 llvm_unreachable("invalid enum value");
40508}
40509#endif
40510#ifdef GET_LINK_IMPL
40511bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
40512 return emitOp<>(OP_NESint8, L);
40513}
40514bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
40515 return emitOp<>(OP_NEUint8, L);
40516}
40517bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
40518 return emitOp<>(OP_NESint16, L);
40519}
40520bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
40521 return emitOp<>(OP_NEUint16, L);
40522}
40523bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
40524 return emitOp<>(OP_NESint32, L);
40525}
40526bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
40527 return emitOp<>(OP_NEUint32, L);
40528}
40529bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
40530 return emitOp<>(OP_NESint64, L);
40531}
40532bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
40533 return emitOp<>(OP_NEUint64, L);
40534}
40535bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
40536 return emitOp<>(OP_NEIntAP, L);
40537}
40538bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
40539 return emitOp<>(OP_NEIntAPS, L);
40540}
40541bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
40542 return emitOp<>(OP_NEBool, L);
40543}
40544bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
40545 return emitOp<>(OP_NEFixedPoint, L);
40546}
40547bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
40548 return emitOp<>(OP_NEPtr, L);
40549}
40550bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
40551 return emitOp<>(OP_NEMemberPtr, L);
40552}
40553bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
40554 return emitOp<>(OP_NEFloat, L);
40555}
40556#endif
40557#ifdef GET_EVAL_IMPL
40558bool EvalEmitter::emitNESint8(SourceInfo L) {
40559 if (!isActive()) return true;
40560 CurrentSource = L;
40561 return NE<PT_Sint8>(S, OpPC);
40562}
40563bool EvalEmitter::emitNEUint8(SourceInfo L) {
40564 if (!isActive()) return true;
40565 CurrentSource = L;
40566 return NE<PT_Uint8>(S, OpPC);
40567}
40568bool EvalEmitter::emitNESint16(SourceInfo L) {
40569 if (!isActive()) return true;
40570 CurrentSource = L;
40571 return NE<PT_Sint16>(S, OpPC);
40572}
40573bool EvalEmitter::emitNEUint16(SourceInfo L) {
40574 if (!isActive()) return true;
40575 CurrentSource = L;
40576 return NE<PT_Uint16>(S, OpPC);
40577}
40578bool EvalEmitter::emitNESint32(SourceInfo L) {
40579 if (!isActive()) return true;
40580 CurrentSource = L;
40581 return NE<PT_Sint32>(S, OpPC);
40582}
40583bool EvalEmitter::emitNEUint32(SourceInfo L) {
40584 if (!isActive()) return true;
40585 CurrentSource = L;
40586 return NE<PT_Uint32>(S, OpPC);
40587}
40588bool EvalEmitter::emitNESint64(SourceInfo L) {
40589 if (!isActive()) return true;
40590 CurrentSource = L;
40591 return NE<PT_Sint64>(S, OpPC);
40592}
40593bool EvalEmitter::emitNEUint64(SourceInfo L) {
40594 if (!isActive()) return true;
40595 CurrentSource = L;
40596 return NE<PT_Uint64>(S, OpPC);
40597}
40598bool EvalEmitter::emitNEIntAP(SourceInfo L) {
40599 if (!isActive()) return true;
40600 CurrentSource = L;
40601 return NE<PT_IntAP>(S, OpPC);
40602}
40603bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
40604 if (!isActive()) return true;
40605 CurrentSource = L;
40606 return NE<PT_IntAPS>(S, OpPC);
40607}
40608bool EvalEmitter::emitNEBool(SourceInfo L) {
40609 if (!isActive()) return true;
40610 CurrentSource = L;
40611 return NE<PT_Bool>(S, OpPC);
40612}
40613bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
40614 if (!isActive()) return true;
40615 CurrentSource = L;
40616 return NE<PT_FixedPoint>(S, OpPC);
40617}
40618bool EvalEmitter::emitNEPtr(SourceInfo L) {
40619 if (!isActive()) return true;
40620 CurrentSource = L;
40621 return NE<PT_Ptr>(S, OpPC);
40622}
40623bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
40624 if (!isActive()) return true;
40625 CurrentSource = L;
40626 return NE<PT_MemberPtr>(S, OpPC);
40627}
40628bool EvalEmitter::emitNEFloat(SourceInfo L) {
40629 if (!isActive()) return true;
40630 CurrentSource = L;
40631 return NE<PT_Float>(S, OpPC);
40632}
40633#endif
40634#ifdef GET_OPCODE_NAMES
40635OP_NarrowPtr,
40636#endif
40637#ifdef GET_INTERPFN_LIST
40638&Interp_NarrowPtr,
40639#endif
40640#ifdef GET_INTERPFN_DISPATCHERS
40641PRESERVE_NONE
40642static bool Interp_NarrowPtr(InterpState &S, CodePtr &PC) {
40643 if (!NarrowPtr(S, PC))
40644 return false;
40645#if USE_TAILCALLS
40646 MUSTTAIL return InterpNext(S, PC);
40647#else
40648 return true;
40649#endif
40650}
40651#endif
40652#ifdef GET_DISASM
40653case OP_NarrowPtr:
40654 Text.Op = PrintName("NarrowPtr");
40655 break;
40656#endif
40657#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40658bool emitNarrowPtr(SourceInfo);
40659#endif
40660#ifdef GET_LINK_IMPL
40661bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
40662 return emitOp<>(OP_NarrowPtr, L);
40663}
40664#endif
40665#ifdef GET_EVAL_IMPL
40666bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
40667 if (!isActive()) return true;
40668 CurrentSource = L;
40669 return NarrowPtr(S, OpPC);
40670}
40671#endif
40672#ifdef GET_OPCODE_NAMES
40673OP_NegSint8,
40674OP_NegUint8,
40675OP_NegSint16,
40676OP_NegUint16,
40677OP_NegSint32,
40678OP_NegUint32,
40679OP_NegSint64,
40680OP_NegUint64,
40681OP_NegIntAP,
40682OP_NegIntAPS,
40683OP_NegBool,
40684OP_NegFloat,
40685OP_NegFixedPoint,
40686#endif
40687#ifdef GET_INTERPFN_LIST
40688&Interp_NegSint8,
40689&Interp_NegUint8,
40690&Interp_NegSint16,
40691&Interp_NegUint16,
40692&Interp_NegSint32,
40693&Interp_NegUint32,
40694&Interp_NegSint64,
40695&Interp_NegUint64,
40696&Interp_NegIntAP,
40697&Interp_NegIntAPS,
40698&Interp_NegBool,
40699&Interp_NegFloat,
40700&Interp_NegFixedPoint,
40701#endif
40702#ifdef GET_INTERPFN_DISPATCHERS
40703PRESERVE_NONE
40704static bool Interp_NegSint8(InterpState &S, CodePtr &PC) {
40705 if (!Neg<PT_Sint8>(S, PC))
40706 return false;
40707#if USE_TAILCALLS
40708 MUSTTAIL return InterpNext(S, PC);
40709#else
40710 return true;
40711#endif
40712}
40713PRESERVE_NONE
40714static bool Interp_NegUint8(InterpState &S, CodePtr &PC) {
40715 if (!Neg<PT_Uint8>(S, PC))
40716 return false;
40717#if USE_TAILCALLS
40718 MUSTTAIL return InterpNext(S, PC);
40719#else
40720 return true;
40721#endif
40722}
40723PRESERVE_NONE
40724static bool Interp_NegSint16(InterpState &S, CodePtr &PC) {
40725 if (!Neg<PT_Sint16>(S, PC))
40726 return false;
40727#if USE_TAILCALLS
40728 MUSTTAIL return InterpNext(S, PC);
40729#else
40730 return true;
40731#endif
40732}
40733PRESERVE_NONE
40734static bool Interp_NegUint16(InterpState &S, CodePtr &PC) {
40735 if (!Neg<PT_Uint16>(S, PC))
40736 return false;
40737#if USE_TAILCALLS
40738 MUSTTAIL return InterpNext(S, PC);
40739#else
40740 return true;
40741#endif
40742}
40743PRESERVE_NONE
40744static bool Interp_NegSint32(InterpState &S, CodePtr &PC) {
40745 if (!Neg<PT_Sint32>(S, PC))
40746 return false;
40747#if USE_TAILCALLS
40748 MUSTTAIL return InterpNext(S, PC);
40749#else
40750 return true;
40751#endif
40752}
40753PRESERVE_NONE
40754static bool Interp_NegUint32(InterpState &S, CodePtr &PC) {
40755 if (!Neg<PT_Uint32>(S, PC))
40756 return false;
40757#if USE_TAILCALLS
40758 MUSTTAIL return InterpNext(S, PC);
40759#else
40760 return true;
40761#endif
40762}
40763PRESERVE_NONE
40764static bool Interp_NegSint64(InterpState &S, CodePtr &PC) {
40765 if (!Neg<PT_Sint64>(S, PC))
40766 return false;
40767#if USE_TAILCALLS
40768 MUSTTAIL return InterpNext(S, PC);
40769#else
40770 return true;
40771#endif
40772}
40773PRESERVE_NONE
40774static bool Interp_NegUint64(InterpState &S, CodePtr &PC) {
40775 if (!Neg<PT_Uint64>(S, PC))
40776 return false;
40777#if USE_TAILCALLS
40778 MUSTTAIL return InterpNext(S, PC);
40779#else
40780 return true;
40781#endif
40782}
40783PRESERVE_NONE
40784static bool Interp_NegIntAP(InterpState &S, CodePtr &PC) {
40785 if (!Neg<PT_IntAP>(S, PC))
40786 return false;
40787#if USE_TAILCALLS
40788 MUSTTAIL return InterpNext(S, PC);
40789#else
40790 return true;
40791#endif
40792}
40793PRESERVE_NONE
40794static bool Interp_NegIntAPS(InterpState &S, CodePtr &PC) {
40795 if (!Neg<PT_IntAPS>(S, PC))
40796 return false;
40797#if USE_TAILCALLS
40798 MUSTTAIL return InterpNext(S, PC);
40799#else
40800 return true;
40801#endif
40802}
40803PRESERVE_NONE
40804static bool Interp_NegBool(InterpState &S, CodePtr &PC) {
40805 if (!Neg<PT_Bool>(S, PC))
40806 return false;
40807#if USE_TAILCALLS
40808 MUSTTAIL return InterpNext(S, PC);
40809#else
40810 return true;
40811#endif
40812}
40813PRESERVE_NONE
40814static bool Interp_NegFloat(InterpState &S, CodePtr &PC) {
40815 if (!Neg<PT_Float>(S, PC))
40816 return false;
40817#if USE_TAILCALLS
40818 MUSTTAIL return InterpNext(S, PC);
40819#else
40820 return true;
40821#endif
40822}
40823PRESERVE_NONE
40824static bool Interp_NegFixedPoint(InterpState &S, CodePtr &PC) {
40825 if (!Neg<PT_FixedPoint>(S, PC))
40826 return false;
40827#if USE_TAILCALLS
40828 MUSTTAIL return InterpNext(S, PC);
40829#else
40830 return true;
40831#endif
40832}
40833#endif
40834#ifdef GET_DISASM
40835case OP_NegSint8:
40836 Text.Op = PrintName("NegSint8");
40837 break;
40838case OP_NegUint8:
40839 Text.Op = PrintName("NegUint8");
40840 break;
40841case OP_NegSint16:
40842 Text.Op = PrintName("NegSint16");
40843 break;
40844case OP_NegUint16:
40845 Text.Op = PrintName("NegUint16");
40846 break;
40847case OP_NegSint32:
40848 Text.Op = PrintName("NegSint32");
40849 break;
40850case OP_NegUint32:
40851 Text.Op = PrintName("NegUint32");
40852 break;
40853case OP_NegSint64:
40854 Text.Op = PrintName("NegSint64");
40855 break;
40856case OP_NegUint64:
40857 Text.Op = PrintName("NegUint64");
40858 break;
40859case OP_NegIntAP:
40860 Text.Op = PrintName("NegIntAP");
40861 break;
40862case OP_NegIntAPS:
40863 Text.Op = PrintName("NegIntAPS");
40864 break;
40865case OP_NegBool:
40866 Text.Op = PrintName("NegBool");
40867 break;
40868case OP_NegFloat:
40869 Text.Op = PrintName("NegFloat");
40870 break;
40871case OP_NegFixedPoint:
40872 Text.Op = PrintName("NegFixedPoint");
40873 break;
40874#endif
40875#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40876bool emitNegSint8(SourceInfo);
40877bool emitNegUint8(SourceInfo);
40878bool emitNegSint16(SourceInfo);
40879bool emitNegUint16(SourceInfo);
40880bool emitNegSint32(SourceInfo);
40881bool emitNegUint32(SourceInfo);
40882bool emitNegSint64(SourceInfo);
40883bool emitNegUint64(SourceInfo);
40884bool emitNegIntAP(SourceInfo);
40885bool emitNegIntAPS(SourceInfo);
40886bool emitNegBool(SourceInfo);
40887bool emitNegFloat(SourceInfo);
40888bool emitNegFixedPoint(SourceInfo);
40889#endif
40890#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40891[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
40892#endif
40893#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40894bool
40895#if defined(GET_EVAL_IMPL)
40896EvalEmitter
40897#else
40898ByteCodeEmitter
40899#endif
40900::emitNeg(PrimType T0, SourceInfo I) {
40901 switch (T0) {
40902 case PT_Sint8:
40903 return emitNegSint8(I);
40904 case PT_Uint8:
40905 return emitNegUint8(I);
40906 case PT_Sint16:
40907 return emitNegSint16(I);
40908 case PT_Uint16:
40909 return emitNegUint16(I);
40910 case PT_Sint32:
40911 return emitNegSint32(I);
40912 case PT_Uint32:
40913 return emitNegUint32(I);
40914 case PT_Sint64:
40915 return emitNegSint64(I);
40916 case PT_Uint64:
40917 return emitNegUint64(I);
40918 case PT_IntAP:
40919 return emitNegIntAP(I);
40920 case PT_IntAPS:
40921 return emitNegIntAPS(I);
40922 case PT_Bool:
40923 return emitNegBool(I);
40924 case PT_Float:
40925 return emitNegFloat(I);
40926 case PT_FixedPoint:
40927 return emitNegFixedPoint(I);
40928 default: llvm_unreachable("invalid type: emitNeg");
40929 }
40930 llvm_unreachable("invalid enum value");
40931}
40932#endif
40933#ifdef GET_LINK_IMPL
40934bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
40935 return emitOp<>(OP_NegSint8, L);
40936}
40937bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
40938 return emitOp<>(OP_NegUint8, L);
40939}
40940bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
40941 return emitOp<>(OP_NegSint16, L);
40942}
40943bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
40944 return emitOp<>(OP_NegUint16, L);
40945}
40946bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
40947 return emitOp<>(OP_NegSint32, L);
40948}
40949bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
40950 return emitOp<>(OP_NegUint32, L);
40951}
40952bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
40953 return emitOp<>(OP_NegSint64, L);
40954}
40955bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
40956 return emitOp<>(OP_NegUint64, L);
40957}
40958bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
40959 return emitOp<>(OP_NegIntAP, L);
40960}
40961bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
40962 return emitOp<>(OP_NegIntAPS, L);
40963}
40964bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
40965 return emitOp<>(OP_NegBool, L);
40966}
40967bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
40968 return emitOp<>(OP_NegFloat, L);
40969}
40970bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
40971 return emitOp<>(OP_NegFixedPoint, L);
40972}
40973#endif
40974#ifdef GET_EVAL_IMPL
40975bool EvalEmitter::emitNegSint8(SourceInfo L) {
40976 if (!isActive()) return true;
40977 CurrentSource = L;
40978 return Neg<PT_Sint8>(S, OpPC);
40979}
40980bool EvalEmitter::emitNegUint8(SourceInfo L) {
40981 if (!isActive()) return true;
40982 CurrentSource = L;
40983 return Neg<PT_Uint8>(S, OpPC);
40984}
40985bool EvalEmitter::emitNegSint16(SourceInfo L) {
40986 if (!isActive()) return true;
40987 CurrentSource = L;
40988 return Neg<PT_Sint16>(S, OpPC);
40989}
40990bool EvalEmitter::emitNegUint16(SourceInfo L) {
40991 if (!isActive()) return true;
40992 CurrentSource = L;
40993 return Neg<PT_Uint16>(S, OpPC);
40994}
40995bool EvalEmitter::emitNegSint32(SourceInfo L) {
40996 if (!isActive()) return true;
40997 CurrentSource = L;
40998 return Neg<PT_Sint32>(S, OpPC);
40999}
41000bool EvalEmitter::emitNegUint32(SourceInfo L) {
41001 if (!isActive()) return true;
41002 CurrentSource = L;
41003 return Neg<PT_Uint32>(S, OpPC);
41004}
41005bool EvalEmitter::emitNegSint64(SourceInfo L) {
41006 if (!isActive()) return true;
41007 CurrentSource = L;
41008 return Neg<PT_Sint64>(S, OpPC);
41009}
41010bool EvalEmitter::emitNegUint64(SourceInfo L) {
41011 if (!isActive()) return true;
41012 CurrentSource = L;
41013 return Neg<PT_Uint64>(S, OpPC);
41014}
41015bool EvalEmitter::emitNegIntAP(SourceInfo L) {
41016 if (!isActive()) return true;
41017 CurrentSource = L;
41018 return Neg<PT_IntAP>(S, OpPC);
41019}
41020bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
41021 if (!isActive()) return true;
41022 CurrentSource = L;
41023 return Neg<PT_IntAPS>(S, OpPC);
41024}
41025bool EvalEmitter::emitNegBool(SourceInfo L) {
41026 if (!isActive()) return true;
41027 CurrentSource = L;
41028 return Neg<PT_Bool>(S, OpPC);
41029}
41030bool EvalEmitter::emitNegFloat(SourceInfo L) {
41031 if (!isActive()) return true;
41032 CurrentSource = L;
41033 return Neg<PT_Float>(S, OpPC);
41034}
41035bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
41036 if (!isActive()) return true;
41037 CurrentSource = L;
41038 return Neg<PT_FixedPoint>(S, OpPC);
41039}
41040#endif
41041#ifdef GET_OPCODE_NAMES
41042OP_NoRet,
41043#endif
41044#ifdef GET_INTERPFN_LIST
41045&Interp_NoRet,
41046#endif
41047#ifdef GET_INTERPFN_DISPATCHERS
41048PRESERVE_NONE
41049static bool Interp_NoRet(InterpState &S, CodePtr &PC) {
41050 if (!NoRet(S, PC))
41051 return false;
41052#if USE_TAILCALLS
41053 MUSTTAIL return InterpNext(S, PC);
41054#else
41055 return true;
41056#endif
41057}
41058#endif
41059#ifdef GET_DISASM
41060case OP_NoRet:
41061 Text.Op = PrintName("NoRet");
41062 break;
41063#endif
41064#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41065bool emitNoRet(SourceInfo);
41066#endif
41067#ifdef GET_LINK_IMPL
41068bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
41069 return emitOp<>(OP_NoRet, L);
41070}
41071#endif
41072#ifdef GET_EVAL_IMPL
41073bool EvalEmitter::emitNoRet(SourceInfo L) {
41074 if (!isActive()) return true;
41075 CurrentSource = L;
41076 return NoRet(S, OpPC);
41077}
41078#endif
41079#ifdef GET_OPCODE_NAMES
41080OP_NullPtr,
41081OP_NullMemberPtr,
41082#endif
41083#ifdef GET_INTERPFN_LIST
41084&Interp_NullPtr,
41085&Interp_NullMemberPtr,
41086#endif
41087#ifdef GET_INTERPFN_DISPATCHERS
41088PRESERVE_NONE
41089static bool Interp_NullPtr(InterpState &S, CodePtr &PC) {
41090 {
41091 CodePtr OpPC = PC;
41092 const auto V0 = ReadArg<uint64_t>(S, PC);
41093 const auto V1 = ReadArg<const Descriptor *>(S, PC);
41094 if (!Null<PT_Ptr>(S, OpPC, V0, V1))
41095 return false;
41096 }
41097#if USE_TAILCALLS
41098 MUSTTAIL return InterpNext(S, PC);
41099#else
41100 return true;
41101#endif
41102}
41103PRESERVE_NONE
41104static bool Interp_NullMemberPtr(InterpState &S, CodePtr &PC) {
41105 {
41106 CodePtr OpPC = PC;
41107 const auto V0 = ReadArg<uint64_t>(S, PC);
41108 const auto V1 = ReadArg<const Descriptor *>(S, PC);
41109 if (!Null<PT_MemberPtr>(S, OpPC, V0, V1))
41110 return false;
41111 }
41112#if USE_TAILCALLS
41113 MUSTTAIL return InterpNext(S, PC);
41114#else
41115 return true;
41116#endif
41117}
41118#endif
41119#ifdef GET_DISASM
41120case OP_NullPtr:
41121 Text.Op = PrintName("NullPtr");
41122 Text.Args.push_back(printArg<uint64_t>(P, PC));
41123 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
41124 break;
41125case OP_NullMemberPtr:
41126 Text.Op = PrintName("NullMemberPtr");
41127 Text.Args.push_back(printArg<uint64_t>(P, PC));
41128 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
41129 break;
41130#endif
41131#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41132bool emitNullPtr( uint64_t , const Descriptor * , SourceInfo);
41133bool emitNullMemberPtr( uint64_t , const Descriptor * , SourceInfo);
41134#endif
41135#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41136[[nodiscard]] bool emitNull(PrimType, uint64_t, const Descriptor *, SourceInfo I);
41137#endif
41138#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41139bool
41140#if defined(GET_EVAL_IMPL)
41141EvalEmitter
41142#else
41143ByteCodeEmitter
41144#endif
41145::emitNull(PrimType T0, uint64_t A0, const Descriptor * A1, SourceInfo I) {
41146 switch (T0) {
41147 case PT_Ptr:
41148 return emitNullPtr(A0, A1, I);
41149 case PT_MemberPtr:
41150 return emitNullMemberPtr(A0, A1, I);
41151 default: llvm_unreachable("invalid type: emitNull");
41152 }
41153 llvm_unreachable("invalid enum value");
41154}
41155#endif
41156#ifdef GET_LINK_IMPL
41157bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
41158 return emitOp<uint64_t, const Descriptor *>(OP_NullPtr, A0, A1, L);
41159}
41160bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
41161 return emitOp<uint64_t, const Descriptor *>(OP_NullMemberPtr, A0, A1, L);
41162}
41163#endif
41164#ifdef GET_EVAL_IMPL
41165bool EvalEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
41166 if (!isActive()) return true;
41167 CurrentSource = L;
41168 return Null<PT_Ptr>(S, OpPC, A0, A1);
41169}
41170bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
41171 if (!isActive()) return true;
41172 CurrentSource = L;
41173 return Null<PT_MemberPtr>(S, OpPC, A0, A1);
41174}
41175#endif
41176#ifdef GET_OPCODE_NAMES
41177OP_OffsetOfSint8,
41178OP_OffsetOfUint8,
41179OP_OffsetOfSint16,
41180OP_OffsetOfUint16,
41181OP_OffsetOfSint32,
41182OP_OffsetOfUint32,
41183OP_OffsetOfSint64,
41184OP_OffsetOfUint64,
41185OP_OffsetOfIntAP,
41186OP_OffsetOfIntAPS,
41187#endif
41188#ifdef GET_INTERPFN_LIST
41189&Interp_OffsetOfSint8,
41190&Interp_OffsetOfUint8,
41191&Interp_OffsetOfSint16,
41192&Interp_OffsetOfUint16,
41193&Interp_OffsetOfSint32,
41194&Interp_OffsetOfUint32,
41195&Interp_OffsetOfSint64,
41196&Interp_OffsetOfUint64,
41197&Interp_OffsetOfIntAP,
41198&Interp_OffsetOfIntAPS,
41199#endif
41200#ifdef GET_INTERPFN_DISPATCHERS
41201PRESERVE_NONE
41202static bool Interp_OffsetOfSint8(InterpState &S, CodePtr &PC) {
41203 {
41204 CodePtr OpPC = PC;
41205 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41206 if (!OffsetOf<PT_Sint8>(S, OpPC, V0))
41207 return false;
41208 }
41209#if USE_TAILCALLS
41210 MUSTTAIL return InterpNext(S, PC);
41211#else
41212 return true;
41213#endif
41214}
41215PRESERVE_NONE
41216static bool Interp_OffsetOfUint8(InterpState &S, CodePtr &PC) {
41217 {
41218 CodePtr OpPC = PC;
41219 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41220 if (!OffsetOf<PT_Uint8>(S, OpPC, V0))
41221 return false;
41222 }
41223#if USE_TAILCALLS
41224 MUSTTAIL return InterpNext(S, PC);
41225#else
41226 return true;
41227#endif
41228}
41229PRESERVE_NONE
41230static bool Interp_OffsetOfSint16(InterpState &S, CodePtr &PC) {
41231 {
41232 CodePtr OpPC = PC;
41233 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41234 if (!OffsetOf<PT_Sint16>(S, OpPC, V0))
41235 return false;
41236 }
41237#if USE_TAILCALLS
41238 MUSTTAIL return InterpNext(S, PC);
41239#else
41240 return true;
41241#endif
41242}
41243PRESERVE_NONE
41244static bool Interp_OffsetOfUint16(InterpState &S, CodePtr &PC) {
41245 {
41246 CodePtr OpPC = PC;
41247 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41248 if (!OffsetOf<PT_Uint16>(S, OpPC, V0))
41249 return false;
41250 }
41251#if USE_TAILCALLS
41252 MUSTTAIL return InterpNext(S, PC);
41253#else
41254 return true;
41255#endif
41256}
41257PRESERVE_NONE
41258static bool Interp_OffsetOfSint32(InterpState &S, CodePtr &PC) {
41259 {
41260 CodePtr OpPC = PC;
41261 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41262 if (!OffsetOf<PT_Sint32>(S, OpPC, V0))
41263 return false;
41264 }
41265#if USE_TAILCALLS
41266 MUSTTAIL return InterpNext(S, PC);
41267#else
41268 return true;
41269#endif
41270}
41271PRESERVE_NONE
41272static bool Interp_OffsetOfUint32(InterpState &S, CodePtr &PC) {
41273 {
41274 CodePtr OpPC = PC;
41275 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41276 if (!OffsetOf<PT_Uint32>(S, OpPC, V0))
41277 return false;
41278 }
41279#if USE_TAILCALLS
41280 MUSTTAIL return InterpNext(S, PC);
41281#else
41282 return true;
41283#endif
41284}
41285PRESERVE_NONE
41286static bool Interp_OffsetOfSint64(InterpState &S, CodePtr &PC) {
41287 {
41288 CodePtr OpPC = PC;
41289 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41290 if (!OffsetOf<PT_Sint64>(S, OpPC, V0))
41291 return false;
41292 }
41293#if USE_TAILCALLS
41294 MUSTTAIL return InterpNext(S, PC);
41295#else
41296 return true;
41297#endif
41298}
41299PRESERVE_NONE
41300static bool Interp_OffsetOfUint64(InterpState &S, CodePtr &PC) {
41301 {
41302 CodePtr OpPC = PC;
41303 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41304 if (!OffsetOf<PT_Uint64>(S, OpPC, V0))
41305 return false;
41306 }
41307#if USE_TAILCALLS
41308 MUSTTAIL return InterpNext(S, PC);
41309#else
41310 return true;
41311#endif
41312}
41313PRESERVE_NONE
41314static bool Interp_OffsetOfIntAP(InterpState &S, CodePtr &PC) {
41315 {
41316 CodePtr OpPC = PC;
41317 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41318 if (!OffsetOf<PT_IntAP>(S, OpPC, V0))
41319 return false;
41320 }
41321#if USE_TAILCALLS
41322 MUSTTAIL return InterpNext(S, PC);
41323#else
41324 return true;
41325#endif
41326}
41327PRESERVE_NONE
41328static bool Interp_OffsetOfIntAPS(InterpState &S, CodePtr &PC) {
41329 {
41330 CodePtr OpPC = PC;
41331 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
41332 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0))
41333 return false;
41334 }
41335#if USE_TAILCALLS
41336 MUSTTAIL return InterpNext(S, PC);
41337#else
41338 return true;
41339#endif
41340}
41341#endif
41342#ifdef GET_DISASM
41343case OP_OffsetOfSint8:
41344 Text.Op = PrintName("OffsetOfSint8");
41345 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41346 break;
41347case OP_OffsetOfUint8:
41348 Text.Op = PrintName("OffsetOfUint8");
41349 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41350 break;
41351case OP_OffsetOfSint16:
41352 Text.Op = PrintName("OffsetOfSint16");
41353 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41354 break;
41355case OP_OffsetOfUint16:
41356 Text.Op = PrintName("OffsetOfUint16");
41357 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41358 break;
41359case OP_OffsetOfSint32:
41360 Text.Op = PrintName("OffsetOfSint32");
41361 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41362 break;
41363case OP_OffsetOfUint32:
41364 Text.Op = PrintName("OffsetOfUint32");
41365 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41366 break;
41367case OP_OffsetOfSint64:
41368 Text.Op = PrintName("OffsetOfSint64");
41369 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41370 break;
41371case OP_OffsetOfUint64:
41372 Text.Op = PrintName("OffsetOfUint64");
41373 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41374 break;
41375case OP_OffsetOfIntAP:
41376 Text.Op = PrintName("OffsetOfIntAP");
41377 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41378 break;
41379case OP_OffsetOfIntAPS:
41380 Text.Op = PrintName("OffsetOfIntAPS");
41381 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
41382 break;
41383#endif
41384#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41385bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
41386bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
41387bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
41388bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
41389bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
41390bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
41391bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
41392bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
41393bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
41394bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
41395#endif
41396#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41397[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
41398#endif
41399#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41400bool
41401#if defined(GET_EVAL_IMPL)
41402EvalEmitter
41403#else
41404ByteCodeEmitter
41405#endif
41406::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
41407 switch (T0) {
41408 case PT_Sint8:
41409 return emitOffsetOfSint8(A0, I);
41410 case PT_Uint8:
41411 return emitOffsetOfUint8(A0, I);
41412 case PT_Sint16:
41413 return emitOffsetOfSint16(A0, I);
41414 case PT_Uint16:
41415 return emitOffsetOfUint16(A0, I);
41416 case PT_Sint32:
41417 return emitOffsetOfSint32(A0, I);
41418 case PT_Uint32:
41419 return emitOffsetOfUint32(A0, I);
41420 case PT_Sint64:
41421 return emitOffsetOfSint64(A0, I);
41422 case PT_Uint64:
41423 return emitOffsetOfUint64(A0, I);
41424 case PT_IntAP:
41425 return emitOffsetOfIntAP(A0, I);
41426 case PT_IntAPS:
41427 return emitOffsetOfIntAPS(A0, I);
41428 default: llvm_unreachable("invalid type: emitOffsetOf");
41429 }
41430 llvm_unreachable("invalid enum value");
41431}
41432#endif
41433#ifdef GET_LINK_IMPL
41434bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
41435 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
41436}
41437bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
41438 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
41439}
41440bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
41441 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
41442}
41443bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
41444 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
41445}
41446bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
41447 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
41448}
41449bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
41450 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
41451}
41452bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
41453 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
41454}
41455bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
41456 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
41457}
41458bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
41459 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
41460}
41461bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
41462 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
41463}
41464#endif
41465#ifdef GET_EVAL_IMPL
41466bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
41467 if (!isActive()) return true;
41468 CurrentSource = L;
41469 return OffsetOf<PT_Sint8>(S, OpPC, A0);
41470}
41471bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
41472 if (!isActive()) return true;
41473 CurrentSource = L;
41474 return OffsetOf<PT_Uint8>(S, OpPC, A0);
41475}
41476bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
41477 if (!isActive()) return true;
41478 CurrentSource = L;
41479 return OffsetOf<PT_Sint16>(S, OpPC, A0);
41480}
41481bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
41482 if (!isActive()) return true;
41483 CurrentSource = L;
41484 return OffsetOf<PT_Uint16>(S, OpPC, A0);
41485}
41486bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
41487 if (!isActive()) return true;
41488 CurrentSource = L;
41489 return OffsetOf<PT_Sint32>(S, OpPC, A0);
41490}
41491bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
41492 if (!isActive()) return true;
41493 CurrentSource = L;
41494 return OffsetOf<PT_Uint32>(S, OpPC, A0);
41495}
41496bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
41497 if (!isActive()) return true;
41498 CurrentSource = L;
41499 return OffsetOf<PT_Sint64>(S, OpPC, A0);
41500}
41501bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
41502 if (!isActive()) return true;
41503 CurrentSource = L;
41504 return OffsetOf<PT_Uint64>(S, OpPC, A0);
41505}
41506bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
41507 if (!isActive()) return true;
41508 CurrentSource = L;
41509 return OffsetOf<PT_IntAP>(S, OpPC, A0);
41510}
41511bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
41512 if (!isActive()) return true;
41513 CurrentSource = L;
41514 return OffsetOf<PT_IntAPS>(S, OpPC, A0);
41515}
41516#endif
41517#ifdef GET_OPCODE_NAMES
41518OP_PopSint8,
41519OP_PopUint8,
41520OP_PopSint16,
41521OP_PopUint16,
41522OP_PopSint32,
41523OP_PopUint32,
41524OP_PopSint64,
41525OP_PopUint64,
41526OP_PopIntAP,
41527OP_PopIntAPS,
41528OP_PopBool,
41529OP_PopFixedPoint,
41530OP_PopPtr,
41531OP_PopMemberPtr,
41532OP_PopFloat,
41533#endif
41534#ifdef GET_INTERPFN_LIST
41535&Interp_PopSint8,
41536&Interp_PopUint8,
41537&Interp_PopSint16,
41538&Interp_PopUint16,
41539&Interp_PopSint32,
41540&Interp_PopUint32,
41541&Interp_PopSint64,
41542&Interp_PopUint64,
41543&Interp_PopIntAP,
41544&Interp_PopIntAPS,
41545&Interp_PopBool,
41546&Interp_PopFixedPoint,
41547&Interp_PopPtr,
41548&Interp_PopMemberPtr,
41549&Interp_PopFloat,
41550#endif
41551#ifdef GET_INTERPFN_DISPATCHERS
41552PRESERVE_NONE
41553static bool Interp_PopSint8(InterpState &S, CodePtr &PC) {
41554 if (!Pop<PT_Sint8>(S, PC))
41555 return false;
41556#if USE_TAILCALLS
41557 MUSTTAIL return InterpNext(S, PC);
41558#else
41559 return true;
41560#endif
41561}
41562PRESERVE_NONE
41563static bool Interp_PopUint8(InterpState &S, CodePtr &PC) {
41564 if (!Pop<PT_Uint8>(S, PC))
41565 return false;
41566#if USE_TAILCALLS
41567 MUSTTAIL return InterpNext(S, PC);
41568#else
41569 return true;
41570#endif
41571}
41572PRESERVE_NONE
41573static bool Interp_PopSint16(InterpState &S, CodePtr &PC) {
41574 if (!Pop<PT_Sint16>(S, PC))
41575 return false;
41576#if USE_TAILCALLS
41577 MUSTTAIL return InterpNext(S, PC);
41578#else
41579 return true;
41580#endif
41581}
41582PRESERVE_NONE
41583static bool Interp_PopUint16(InterpState &S, CodePtr &PC) {
41584 if (!Pop<PT_Uint16>(S, PC))
41585 return false;
41586#if USE_TAILCALLS
41587 MUSTTAIL return InterpNext(S, PC);
41588#else
41589 return true;
41590#endif
41591}
41592PRESERVE_NONE
41593static bool Interp_PopSint32(InterpState &S, CodePtr &PC) {
41594 if (!Pop<PT_Sint32>(S, PC))
41595 return false;
41596#if USE_TAILCALLS
41597 MUSTTAIL return InterpNext(S, PC);
41598#else
41599 return true;
41600#endif
41601}
41602PRESERVE_NONE
41603static bool Interp_PopUint32(InterpState &S, CodePtr &PC) {
41604 if (!Pop<PT_Uint32>(S, PC))
41605 return false;
41606#if USE_TAILCALLS
41607 MUSTTAIL return InterpNext(S, PC);
41608#else
41609 return true;
41610#endif
41611}
41612PRESERVE_NONE
41613static bool Interp_PopSint64(InterpState &S, CodePtr &PC) {
41614 if (!Pop<PT_Sint64>(S, PC))
41615 return false;
41616#if USE_TAILCALLS
41617 MUSTTAIL return InterpNext(S, PC);
41618#else
41619 return true;
41620#endif
41621}
41622PRESERVE_NONE
41623static bool Interp_PopUint64(InterpState &S, CodePtr &PC) {
41624 if (!Pop<PT_Uint64>(S, PC))
41625 return false;
41626#if USE_TAILCALLS
41627 MUSTTAIL return InterpNext(S, PC);
41628#else
41629 return true;
41630#endif
41631}
41632PRESERVE_NONE
41633static bool Interp_PopIntAP(InterpState &S, CodePtr &PC) {
41634 if (!Pop<PT_IntAP>(S, PC))
41635 return false;
41636#if USE_TAILCALLS
41637 MUSTTAIL return InterpNext(S, PC);
41638#else
41639 return true;
41640#endif
41641}
41642PRESERVE_NONE
41643static bool Interp_PopIntAPS(InterpState &S, CodePtr &PC) {
41644 if (!Pop<PT_IntAPS>(S, PC))
41645 return false;
41646#if USE_TAILCALLS
41647 MUSTTAIL return InterpNext(S, PC);
41648#else
41649 return true;
41650#endif
41651}
41652PRESERVE_NONE
41653static bool Interp_PopBool(InterpState &S, CodePtr &PC) {
41654 if (!Pop<PT_Bool>(S, PC))
41655 return false;
41656#if USE_TAILCALLS
41657 MUSTTAIL return InterpNext(S, PC);
41658#else
41659 return true;
41660#endif
41661}
41662PRESERVE_NONE
41663static bool Interp_PopFixedPoint(InterpState &S, CodePtr &PC) {
41664 if (!Pop<PT_FixedPoint>(S, PC))
41665 return false;
41666#if USE_TAILCALLS
41667 MUSTTAIL return InterpNext(S, PC);
41668#else
41669 return true;
41670#endif
41671}
41672PRESERVE_NONE
41673static bool Interp_PopPtr(InterpState &S, CodePtr &PC) {
41674 if (!Pop<PT_Ptr>(S, PC))
41675 return false;
41676#if USE_TAILCALLS
41677 MUSTTAIL return InterpNext(S, PC);
41678#else
41679 return true;
41680#endif
41681}
41682PRESERVE_NONE
41683static bool Interp_PopMemberPtr(InterpState &S, CodePtr &PC) {
41684 if (!Pop<PT_MemberPtr>(S, PC))
41685 return false;
41686#if USE_TAILCALLS
41687 MUSTTAIL return InterpNext(S, PC);
41688#else
41689 return true;
41690#endif
41691}
41692PRESERVE_NONE
41693static bool Interp_PopFloat(InterpState &S, CodePtr &PC) {
41694 if (!Pop<PT_Float>(S, PC))
41695 return false;
41696#if USE_TAILCALLS
41697 MUSTTAIL return InterpNext(S, PC);
41698#else
41699 return true;
41700#endif
41701}
41702#endif
41703#ifdef GET_DISASM
41704case OP_PopSint8:
41705 Text.Op = PrintName("PopSint8");
41706 break;
41707case OP_PopUint8:
41708 Text.Op = PrintName("PopUint8");
41709 break;
41710case OP_PopSint16:
41711 Text.Op = PrintName("PopSint16");
41712 break;
41713case OP_PopUint16:
41714 Text.Op = PrintName("PopUint16");
41715 break;
41716case OP_PopSint32:
41717 Text.Op = PrintName("PopSint32");
41718 break;
41719case OP_PopUint32:
41720 Text.Op = PrintName("PopUint32");
41721 break;
41722case OP_PopSint64:
41723 Text.Op = PrintName("PopSint64");
41724 break;
41725case OP_PopUint64:
41726 Text.Op = PrintName("PopUint64");
41727 break;
41728case OP_PopIntAP:
41729 Text.Op = PrintName("PopIntAP");
41730 break;
41731case OP_PopIntAPS:
41732 Text.Op = PrintName("PopIntAPS");
41733 break;
41734case OP_PopBool:
41735 Text.Op = PrintName("PopBool");
41736 break;
41737case OP_PopFixedPoint:
41738 Text.Op = PrintName("PopFixedPoint");
41739 break;
41740case OP_PopPtr:
41741 Text.Op = PrintName("PopPtr");
41742 break;
41743case OP_PopMemberPtr:
41744 Text.Op = PrintName("PopMemberPtr");
41745 break;
41746case OP_PopFloat:
41747 Text.Op = PrintName("PopFloat");
41748 break;
41749#endif
41750#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41751bool emitPopSint8(SourceInfo);
41752bool emitPopUint8(SourceInfo);
41753bool emitPopSint16(SourceInfo);
41754bool emitPopUint16(SourceInfo);
41755bool emitPopSint32(SourceInfo);
41756bool emitPopUint32(SourceInfo);
41757bool emitPopSint64(SourceInfo);
41758bool emitPopUint64(SourceInfo);
41759bool emitPopIntAP(SourceInfo);
41760bool emitPopIntAPS(SourceInfo);
41761bool emitPopBool(SourceInfo);
41762bool emitPopFixedPoint(SourceInfo);
41763bool emitPopPtr(SourceInfo);
41764bool emitPopMemberPtr(SourceInfo);
41765bool emitPopFloat(SourceInfo);
41766#endif
41767#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41768[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
41769#endif
41770#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41771bool
41772#if defined(GET_EVAL_IMPL)
41773EvalEmitter
41774#else
41775ByteCodeEmitter
41776#endif
41777::emitPop(PrimType T0, SourceInfo I) {
41778 switch (T0) {
41779 case PT_Sint8:
41780 return emitPopSint8(I);
41781 case PT_Uint8:
41782 return emitPopUint8(I);
41783 case PT_Sint16:
41784 return emitPopSint16(I);
41785 case PT_Uint16:
41786 return emitPopUint16(I);
41787 case PT_Sint32:
41788 return emitPopSint32(I);
41789 case PT_Uint32:
41790 return emitPopUint32(I);
41791 case PT_Sint64:
41792 return emitPopSint64(I);
41793 case PT_Uint64:
41794 return emitPopUint64(I);
41795 case PT_IntAP:
41796 return emitPopIntAP(I);
41797 case PT_IntAPS:
41798 return emitPopIntAPS(I);
41799 case PT_Bool:
41800 return emitPopBool(I);
41801 case PT_FixedPoint:
41802 return emitPopFixedPoint(I);
41803 case PT_Ptr:
41804 return emitPopPtr(I);
41805 case PT_MemberPtr:
41806 return emitPopMemberPtr(I);
41807 case PT_Float:
41808 return emitPopFloat(I);
41809 }
41810 llvm_unreachable("invalid enum value");
41811}
41812#endif
41813#ifdef GET_LINK_IMPL
41814bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
41815 return emitOp<>(OP_PopSint8, L);
41816}
41817bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
41818 return emitOp<>(OP_PopUint8, L);
41819}
41820bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
41821 return emitOp<>(OP_PopSint16, L);
41822}
41823bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
41824 return emitOp<>(OP_PopUint16, L);
41825}
41826bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
41827 return emitOp<>(OP_PopSint32, L);
41828}
41829bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
41830 return emitOp<>(OP_PopUint32, L);
41831}
41832bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
41833 return emitOp<>(OP_PopSint64, L);
41834}
41835bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
41836 return emitOp<>(OP_PopUint64, L);
41837}
41838bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
41839 return emitOp<>(OP_PopIntAP, L);
41840}
41841bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
41842 return emitOp<>(OP_PopIntAPS, L);
41843}
41844bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
41845 return emitOp<>(OP_PopBool, L);
41846}
41847bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
41848 return emitOp<>(OP_PopFixedPoint, L);
41849}
41850bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
41851 return emitOp<>(OP_PopPtr, L);
41852}
41853bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
41854 return emitOp<>(OP_PopMemberPtr, L);
41855}
41856bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
41857 return emitOp<>(OP_PopFloat, L);
41858}
41859#endif
41860#ifdef GET_EVAL_IMPL
41861bool EvalEmitter::emitPopSint8(SourceInfo L) {
41862 if (!isActive()) return true;
41863 CurrentSource = L;
41864 return Pop<PT_Sint8>(S, OpPC);
41865}
41866bool EvalEmitter::emitPopUint8(SourceInfo L) {
41867 if (!isActive()) return true;
41868 CurrentSource = L;
41869 return Pop<PT_Uint8>(S, OpPC);
41870}
41871bool EvalEmitter::emitPopSint16(SourceInfo L) {
41872 if (!isActive()) return true;
41873 CurrentSource = L;
41874 return Pop<PT_Sint16>(S, OpPC);
41875}
41876bool EvalEmitter::emitPopUint16(SourceInfo L) {
41877 if (!isActive()) return true;
41878 CurrentSource = L;
41879 return Pop<PT_Uint16>(S, OpPC);
41880}
41881bool EvalEmitter::emitPopSint32(SourceInfo L) {
41882 if (!isActive()) return true;
41883 CurrentSource = L;
41884 return Pop<PT_Sint32>(S, OpPC);
41885}
41886bool EvalEmitter::emitPopUint32(SourceInfo L) {
41887 if (!isActive()) return true;
41888 CurrentSource = L;
41889 return Pop<PT_Uint32>(S, OpPC);
41890}
41891bool EvalEmitter::emitPopSint64(SourceInfo L) {
41892 if (!isActive()) return true;
41893 CurrentSource = L;
41894 return Pop<PT_Sint64>(S, OpPC);
41895}
41896bool EvalEmitter::emitPopUint64(SourceInfo L) {
41897 if (!isActive()) return true;
41898 CurrentSource = L;
41899 return Pop<PT_Uint64>(S, OpPC);
41900}
41901bool EvalEmitter::emitPopIntAP(SourceInfo L) {
41902 if (!isActive()) return true;
41903 CurrentSource = L;
41904 return Pop<PT_IntAP>(S, OpPC);
41905}
41906bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
41907 if (!isActive()) return true;
41908 CurrentSource = L;
41909 return Pop<PT_IntAPS>(S, OpPC);
41910}
41911bool EvalEmitter::emitPopBool(SourceInfo L) {
41912 if (!isActive()) return true;
41913 CurrentSource = L;
41914 return Pop<PT_Bool>(S, OpPC);
41915}
41916bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
41917 if (!isActive()) return true;
41918 CurrentSource = L;
41919 return Pop<PT_FixedPoint>(S, OpPC);
41920}
41921bool EvalEmitter::emitPopPtr(SourceInfo L) {
41922 if (!isActive()) return true;
41923 CurrentSource = L;
41924 return Pop<PT_Ptr>(S, OpPC);
41925}
41926bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
41927 if (!isActive()) return true;
41928 CurrentSource = L;
41929 return Pop<PT_MemberPtr>(S, OpPC);
41930}
41931bool EvalEmitter::emitPopFloat(SourceInfo L) {
41932 if (!isActive()) return true;
41933 CurrentSource = L;
41934 return Pop<PT_Float>(S, OpPC);
41935}
41936#endif
41937#ifdef GET_OPCODE_NAMES
41938OP_PopCC,
41939#endif
41940#ifdef GET_INTERPFN_LIST
41941&Interp_PopCC,
41942#endif
41943#ifdef GET_INTERPFN_DISPATCHERS
41944PRESERVE_NONE
41945static bool Interp_PopCC(InterpState &S, CodePtr &PC) {
41946 if (!PopCC(S, PC))
41947 return false;
41948#if USE_TAILCALLS
41949 MUSTTAIL return InterpNext(S, PC);
41950#else
41951 return true;
41952#endif
41953}
41954#endif
41955#ifdef GET_DISASM
41956case OP_PopCC:
41957 Text.Op = PrintName("PopCC");
41958 break;
41959#endif
41960#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41961bool emitPopCC(SourceInfo);
41962#endif
41963#ifdef GET_LINK_IMPL
41964bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
41965 return emitOp<>(OP_PopCC, L);
41966}
41967#endif
41968#ifdef GET_EVAL_IMPL
41969bool EvalEmitter::emitPopCC(SourceInfo L) {
41970 if (!isActive()) return true;
41971 CurrentSource = L;
41972 return PopCC(S, OpPC);
41973}
41974#endif
41975#ifdef GET_OPCODE_NAMES
41976OP_PopIgnoreDiags,
41977#endif
41978#ifdef GET_INTERPFN_LIST
41979&Interp_PopIgnoreDiags,
41980#endif
41981#ifdef GET_INTERPFN_DISPATCHERS
41982PRESERVE_NONE
41983static bool Interp_PopIgnoreDiags(InterpState &S, CodePtr &PC) {
41984 if (!PopIgnoreDiags(S, PC))
41985 return false;
41986#if USE_TAILCALLS
41987 MUSTTAIL return InterpNext(S, PC);
41988#else
41989 return true;
41990#endif
41991}
41992#endif
41993#ifdef GET_DISASM
41994case OP_PopIgnoreDiags:
41995 Text.Op = PrintName("PopIgnoreDiags");
41996 break;
41997#endif
41998#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41999bool emitPopIgnoreDiags(SourceInfo);
42000#endif
42001#ifdef GET_LINK_IMPL
42002bool ByteCodeEmitter::emitPopIgnoreDiags(SourceInfo L) {
42003 return emitOp<>(OP_PopIgnoreDiags, L);
42004}
42005#endif
42006#ifdef GET_EVAL_IMPL
42007bool EvalEmitter::emitPopIgnoreDiags(SourceInfo L) {
42008 if (!isActive()) return true;
42009 CurrentSource = L;
42010 return PopIgnoreDiags(S, OpPC);
42011}
42012#endif
42013#ifdef GET_OPCODE_NAMES
42014OP_PopMSVCCE,
42015#endif
42016#ifdef GET_INTERPFN_LIST
42017&Interp_PopMSVCCE,
42018#endif
42019#ifdef GET_INTERPFN_DISPATCHERS
42020PRESERVE_NONE
42021static bool Interp_PopMSVCCE(InterpState &S, CodePtr &PC) {
42022 if (!PopMSVCCE(S, PC))
42023 return false;
42024#if USE_TAILCALLS
42025 MUSTTAIL return InterpNext(S, PC);
42026#else
42027 return true;
42028#endif
42029}
42030#endif
42031#ifdef GET_DISASM
42032case OP_PopMSVCCE:
42033 Text.Op = PrintName("PopMSVCCE");
42034 break;
42035#endif
42036#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42037bool emitPopMSVCCE(SourceInfo);
42038#endif
42039#ifdef GET_LINK_IMPL
42040bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
42041 return emitOp<>(OP_PopMSVCCE, L);
42042}
42043#endif
42044#ifdef GET_EVAL_IMPL
42045bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
42046 if (!isActive()) return true;
42047 CurrentSource = L;
42048 return PopMSVCCE(S, OpPC);
42049}
42050#endif
42051#ifdef GET_OPCODE_NAMES
42052OP_PreDecSint8,
42053OP_PreDecUint8,
42054OP_PreDecSint16,
42055OP_PreDecUint16,
42056OP_PreDecSint32,
42057OP_PreDecUint32,
42058OP_PreDecSint64,
42059OP_PreDecUint64,
42060OP_PreDecIntAP,
42061OP_PreDecIntAPS,
42062OP_PreDecBool,
42063OP_PreDecFixedPoint,
42064#endif
42065#ifdef GET_INTERPFN_LIST
42066&Interp_PreDecSint8,
42067&Interp_PreDecUint8,
42068&Interp_PreDecSint16,
42069&Interp_PreDecUint16,
42070&Interp_PreDecSint32,
42071&Interp_PreDecUint32,
42072&Interp_PreDecSint64,
42073&Interp_PreDecUint64,
42074&Interp_PreDecIntAP,
42075&Interp_PreDecIntAPS,
42076&Interp_PreDecBool,
42077&Interp_PreDecFixedPoint,
42078#endif
42079#ifdef GET_INTERPFN_DISPATCHERS
42080PRESERVE_NONE
42081static bool Interp_PreDecSint8(InterpState &S, CodePtr &PC) {
42082 {
42083 CodePtr OpPC = PC;
42084 const auto V0 = ReadArg<bool>(S, PC);
42085 if (!PreDec<PT_Sint8>(S, OpPC, V0))
42086 return false;
42087 }
42088#if USE_TAILCALLS
42089 MUSTTAIL return InterpNext(S, PC);
42090#else
42091 return true;
42092#endif
42093}
42094PRESERVE_NONE
42095static bool Interp_PreDecUint8(InterpState &S, CodePtr &PC) {
42096 {
42097 CodePtr OpPC = PC;
42098 const auto V0 = ReadArg<bool>(S, PC);
42099 if (!PreDec<PT_Uint8>(S, OpPC, V0))
42100 return false;
42101 }
42102#if USE_TAILCALLS
42103 MUSTTAIL return InterpNext(S, PC);
42104#else
42105 return true;
42106#endif
42107}
42108PRESERVE_NONE
42109static bool Interp_PreDecSint16(InterpState &S, CodePtr &PC) {
42110 {
42111 CodePtr OpPC = PC;
42112 const auto V0 = ReadArg<bool>(S, PC);
42113 if (!PreDec<PT_Sint16>(S, OpPC, V0))
42114 return false;
42115 }
42116#if USE_TAILCALLS
42117 MUSTTAIL return InterpNext(S, PC);
42118#else
42119 return true;
42120#endif
42121}
42122PRESERVE_NONE
42123static bool Interp_PreDecUint16(InterpState &S, CodePtr &PC) {
42124 {
42125 CodePtr OpPC = PC;
42126 const auto V0 = ReadArg<bool>(S, PC);
42127 if (!PreDec<PT_Uint16>(S, OpPC, V0))
42128 return false;
42129 }
42130#if USE_TAILCALLS
42131 MUSTTAIL return InterpNext(S, PC);
42132#else
42133 return true;
42134#endif
42135}
42136PRESERVE_NONE
42137static bool Interp_PreDecSint32(InterpState &S, CodePtr &PC) {
42138 {
42139 CodePtr OpPC = PC;
42140 const auto V0 = ReadArg<bool>(S, PC);
42141 if (!PreDec<PT_Sint32>(S, OpPC, V0))
42142 return false;
42143 }
42144#if USE_TAILCALLS
42145 MUSTTAIL return InterpNext(S, PC);
42146#else
42147 return true;
42148#endif
42149}
42150PRESERVE_NONE
42151static bool Interp_PreDecUint32(InterpState &S, CodePtr &PC) {
42152 {
42153 CodePtr OpPC = PC;
42154 const auto V0 = ReadArg<bool>(S, PC);
42155 if (!PreDec<PT_Uint32>(S, OpPC, V0))
42156 return false;
42157 }
42158#if USE_TAILCALLS
42159 MUSTTAIL return InterpNext(S, PC);
42160#else
42161 return true;
42162#endif
42163}
42164PRESERVE_NONE
42165static bool Interp_PreDecSint64(InterpState &S, CodePtr &PC) {
42166 {
42167 CodePtr OpPC = PC;
42168 const auto V0 = ReadArg<bool>(S, PC);
42169 if (!PreDec<PT_Sint64>(S, OpPC, V0))
42170 return false;
42171 }
42172#if USE_TAILCALLS
42173 MUSTTAIL return InterpNext(S, PC);
42174#else
42175 return true;
42176#endif
42177}
42178PRESERVE_NONE
42179static bool Interp_PreDecUint64(InterpState &S, CodePtr &PC) {
42180 {
42181 CodePtr OpPC = PC;
42182 const auto V0 = ReadArg<bool>(S, PC);
42183 if (!PreDec<PT_Uint64>(S, OpPC, V0))
42184 return false;
42185 }
42186#if USE_TAILCALLS
42187 MUSTTAIL return InterpNext(S, PC);
42188#else
42189 return true;
42190#endif
42191}
42192PRESERVE_NONE
42193static bool Interp_PreDecIntAP(InterpState &S, CodePtr &PC) {
42194 {
42195 CodePtr OpPC = PC;
42196 const auto V0 = ReadArg<bool>(S, PC);
42197 if (!PreDec<PT_IntAP>(S, OpPC, V0))
42198 return false;
42199 }
42200#if USE_TAILCALLS
42201 MUSTTAIL return InterpNext(S, PC);
42202#else
42203 return true;
42204#endif
42205}
42206PRESERVE_NONE
42207static bool Interp_PreDecIntAPS(InterpState &S, CodePtr &PC) {
42208 {
42209 CodePtr OpPC = PC;
42210 const auto V0 = ReadArg<bool>(S, PC);
42211 if (!PreDec<PT_IntAPS>(S, OpPC, V0))
42212 return false;
42213 }
42214#if USE_TAILCALLS
42215 MUSTTAIL return InterpNext(S, PC);
42216#else
42217 return true;
42218#endif
42219}
42220PRESERVE_NONE
42221static bool Interp_PreDecBool(InterpState &S, CodePtr &PC) {
42222 {
42223 CodePtr OpPC = PC;
42224 const auto V0 = ReadArg<bool>(S, PC);
42225 if (!PreDec<PT_Bool>(S, OpPC, V0))
42226 return false;
42227 }
42228#if USE_TAILCALLS
42229 MUSTTAIL return InterpNext(S, PC);
42230#else
42231 return true;
42232#endif
42233}
42234PRESERVE_NONE
42235static bool Interp_PreDecFixedPoint(InterpState &S, CodePtr &PC) {
42236 {
42237 CodePtr OpPC = PC;
42238 const auto V0 = ReadArg<bool>(S, PC);
42239 if (!PreDec<PT_FixedPoint>(S, OpPC, V0))
42240 return false;
42241 }
42242#if USE_TAILCALLS
42243 MUSTTAIL return InterpNext(S, PC);
42244#else
42245 return true;
42246#endif
42247}
42248#endif
42249#ifdef GET_DISASM
42250case OP_PreDecSint8:
42251 Text.Op = PrintName("PreDecSint8");
42252 Text.Args.push_back(printArg<bool>(P, PC));
42253 break;
42254case OP_PreDecUint8:
42255 Text.Op = PrintName("PreDecUint8");
42256 Text.Args.push_back(printArg<bool>(P, PC));
42257 break;
42258case OP_PreDecSint16:
42259 Text.Op = PrintName("PreDecSint16");
42260 Text.Args.push_back(printArg<bool>(P, PC));
42261 break;
42262case OP_PreDecUint16:
42263 Text.Op = PrintName("PreDecUint16");
42264 Text.Args.push_back(printArg<bool>(P, PC));
42265 break;
42266case OP_PreDecSint32:
42267 Text.Op = PrintName("PreDecSint32");
42268 Text.Args.push_back(printArg<bool>(P, PC));
42269 break;
42270case OP_PreDecUint32:
42271 Text.Op = PrintName("PreDecUint32");
42272 Text.Args.push_back(printArg<bool>(P, PC));
42273 break;
42274case OP_PreDecSint64:
42275 Text.Op = PrintName("PreDecSint64");
42276 Text.Args.push_back(printArg<bool>(P, PC));
42277 break;
42278case OP_PreDecUint64:
42279 Text.Op = PrintName("PreDecUint64");
42280 Text.Args.push_back(printArg<bool>(P, PC));
42281 break;
42282case OP_PreDecIntAP:
42283 Text.Op = PrintName("PreDecIntAP");
42284 Text.Args.push_back(printArg<bool>(P, PC));
42285 break;
42286case OP_PreDecIntAPS:
42287 Text.Op = PrintName("PreDecIntAPS");
42288 Text.Args.push_back(printArg<bool>(P, PC));
42289 break;
42290case OP_PreDecBool:
42291 Text.Op = PrintName("PreDecBool");
42292 Text.Args.push_back(printArg<bool>(P, PC));
42293 break;
42294case OP_PreDecFixedPoint:
42295 Text.Op = PrintName("PreDecFixedPoint");
42296 Text.Args.push_back(printArg<bool>(P, PC));
42297 break;
42298#endif
42299#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42300bool emitPreDecSint8( bool , SourceInfo);
42301bool emitPreDecUint8( bool , SourceInfo);
42302bool emitPreDecSint16( bool , SourceInfo);
42303bool emitPreDecUint16( bool , SourceInfo);
42304bool emitPreDecSint32( bool , SourceInfo);
42305bool emitPreDecUint32( bool , SourceInfo);
42306bool emitPreDecSint64( bool , SourceInfo);
42307bool emitPreDecUint64( bool , SourceInfo);
42308bool emitPreDecIntAP( bool , SourceInfo);
42309bool emitPreDecIntAPS( bool , SourceInfo);
42310bool emitPreDecBool( bool , SourceInfo);
42311bool emitPreDecFixedPoint( bool , SourceInfo);
42312#endif
42313#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42314[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
42315#endif
42316#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42317bool
42318#if defined(GET_EVAL_IMPL)
42319EvalEmitter
42320#else
42321ByteCodeEmitter
42322#endif
42323::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
42324 switch (T0) {
42325 case PT_Sint8:
42326 return emitPreDecSint8(A0, I);
42327 case PT_Uint8:
42328 return emitPreDecUint8(A0, I);
42329 case PT_Sint16:
42330 return emitPreDecSint16(A0, I);
42331 case PT_Uint16:
42332 return emitPreDecUint16(A0, I);
42333 case PT_Sint32:
42334 return emitPreDecSint32(A0, I);
42335 case PT_Uint32:
42336 return emitPreDecUint32(A0, I);
42337 case PT_Sint64:
42338 return emitPreDecSint64(A0, I);
42339 case PT_Uint64:
42340 return emitPreDecUint64(A0, I);
42341 case PT_IntAP:
42342 return emitPreDecIntAP(A0, I);
42343 case PT_IntAPS:
42344 return emitPreDecIntAPS(A0, I);
42345 case PT_Bool:
42346 return emitPreDecBool(A0, I);
42347 case PT_FixedPoint:
42348 return emitPreDecFixedPoint(A0, I);
42349 default: llvm_unreachable("invalid type: emitPreDec");
42350 }
42351 llvm_unreachable("invalid enum value");
42352}
42353#endif
42354#ifdef GET_LINK_IMPL
42355bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
42356 return emitOp<bool>(OP_PreDecSint8, A0, L);
42357}
42358bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
42359 return emitOp<bool>(OP_PreDecUint8, A0, L);
42360}
42361bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
42362 return emitOp<bool>(OP_PreDecSint16, A0, L);
42363}
42364bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
42365 return emitOp<bool>(OP_PreDecUint16, A0, L);
42366}
42367bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
42368 return emitOp<bool>(OP_PreDecSint32, A0, L);
42369}
42370bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
42371 return emitOp<bool>(OP_PreDecUint32, A0, L);
42372}
42373bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
42374 return emitOp<bool>(OP_PreDecSint64, A0, L);
42375}
42376bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
42377 return emitOp<bool>(OP_PreDecUint64, A0, L);
42378}
42379bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
42380 return emitOp<bool>(OP_PreDecIntAP, A0, L);
42381}
42382bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
42383 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
42384}
42385bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
42386 return emitOp<bool>(OP_PreDecBool, A0, L);
42387}
42388bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
42389 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
42390}
42391#endif
42392#ifdef GET_EVAL_IMPL
42393bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
42394 if (!isActive()) return true;
42395 CurrentSource = L;
42396 return PreDec<PT_Sint8>(S, OpPC, A0);
42397}
42398bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
42399 if (!isActive()) return true;
42400 CurrentSource = L;
42401 return PreDec<PT_Uint8>(S, OpPC, A0);
42402}
42403bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
42404 if (!isActive()) return true;
42405 CurrentSource = L;
42406 return PreDec<PT_Sint16>(S, OpPC, A0);
42407}
42408bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
42409 if (!isActive()) return true;
42410 CurrentSource = L;
42411 return PreDec<PT_Uint16>(S, OpPC, A0);
42412}
42413bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
42414 if (!isActive()) return true;
42415 CurrentSource = L;
42416 return PreDec<PT_Sint32>(S, OpPC, A0);
42417}
42418bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
42419 if (!isActive()) return true;
42420 CurrentSource = L;
42421 return PreDec<PT_Uint32>(S, OpPC, A0);
42422}
42423bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
42424 if (!isActive()) return true;
42425 CurrentSource = L;
42426 return PreDec<PT_Sint64>(S, OpPC, A0);
42427}
42428bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
42429 if (!isActive()) return true;
42430 CurrentSource = L;
42431 return PreDec<PT_Uint64>(S, OpPC, A0);
42432}
42433bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
42434 if (!isActive()) return true;
42435 CurrentSource = L;
42436 return PreDec<PT_IntAP>(S, OpPC, A0);
42437}
42438bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
42439 if (!isActive()) return true;
42440 CurrentSource = L;
42441 return PreDec<PT_IntAPS>(S, OpPC, A0);
42442}
42443bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
42444 if (!isActive()) return true;
42445 CurrentSource = L;
42446 return PreDec<PT_Bool>(S, OpPC, A0);
42447}
42448bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
42449 if (!isActive()) return true;
42450 CurrentSource = L;
42451 return PreDec<PT_FixedPoint>(S, OpPC, A0);
42452}
42453#endif
42454#ifdef GET_OPCODE_NAMES
42455OP_PreDecBitfieldSint8,
42456OP_PreDecBitfieldUint8,
42457OP_PreDecBitfieldSint16,
42458OP_PreDecBitfieldUint16,
42459OP_PreDecBitfieldSint32,
42460OP_PreDecBitfieldUint32,
42461OP_PreDecBitfieldSint64,
42462OP_PreDecBitfieldUint64,
42463OP_PreDecBitfieldIntAP,
42464OP_PreDecBitfieldIntAPS,
42465OP_PreDecBitfieldBool,
42466OP_PreDecBitfieldFixedPoint,
42467#endif
42468#ifdef GET_INTERPFN_LIST
42469&Interp_PreDecBitfieldSint8,
42470&Interp_PreDecBitfieldUint8,
42471&Interp_PreDecBitfieldSint16,
42472&Interp_PreDecBitfieldUint16,
42473&Interp_PreDecBitfieldSint32,
42474&Interp_PreDecBitfieldUint32,
42475&Interp_PreDecBitfieldSint64,
42476&Interp_PreDecBitfieldUint64,
42477&Interp_PreDecBitfieldIntAP,
42478&Interp_PreDecBitfieldIntAPS,
42479&Interp_PreDecBitfieldBool,
42480&Interp_PreDecBitfieldFixedPoint,
42481#endif
42482#ifdef GET_INTERPFN_DISPATCHERS
42483PRESERVE_NONE
42484static bool Interp_PreDecBitfieldSint8(InterpState &S, CodePtr &PC) {
42485 {
42486 CodePtr OpPC = PC;
42487 const auto V0 = ReadArg<bool>(S, PC);
42488 const auto V1 = ReadArg<uint32_t>(S, PC);
42489 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1))
42490 return false;
42491 }
42492#if USE_TAILCALLS
42493 MUSTTAIL return InterpNext(S, PC);
42494#else
42495 return true;
42496#endif
42497}
42498PRESERVE_NONE
42499static bool Interp_PreDecBitfieldUint8(InterpState &S, CodePtr &PC) {
42500 {
42501 CodePtr OpPC = PC;
42502 const auto V0 = ReadArg<bool>(S, PC);
42503 const auto V1 = ReadArg<uint32_t>(S, PC);
42504 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1))
42505 return false;
42506 }
42507#if USE_TAILCALLS
42508 MUSTTAIL return InterpNext(S, PC);
42509#else
42510 return true;
42511#endif
42512}
42513PRESERVE_NONE
42514static bool Interp_PreDecBitfieldSint16(InterpState &S, CodePtr &PC) {
42515 {
42516 CodePtr OpPC = PC;
42517 const auto V0 = ReadArg<bool>(S, PC);
42518 const auto V1 = ReadArg<uint32_t>(S, PC);
42519 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1))
42520 return false;
42521 }
42522#if USE_TAILCALLS
42523 MUSTTAIL return InterpNext(S, PC);
42524#else
42525 return true;
42526#endif
42527}
42528PRESERVE_NONE
42529static bool Interp_PreDecBitfieldUint16(InterpState &S, CodePtr &PC) {
42530 {
42531 CodePtr OpPC = PC;
42532 const auto V0 = ReadArg<bool>(S, PC);
42533 const auto V1 = ReadArg<uint32_t>(S, PC);
42534 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1))
42535 return false;
42536 }
42537#if USE_TAILCALLS
42538 MUSTTAIL return InterpNext(S, PC);
42539#else
42540 return true;
42541#endif
42542}
42543PRESERVE_NONE
42544static bool Interp_PreDecBitfieldSint32(InterpState &S, CodePtr &PC) {
42545 {
42546 CodePtr OpPC = PC;
42547 const auto V0 = ReadArg<bool>(S, PC);
42548 const auto V1 = ReadArg<uint32_t>(S, PC);
42549 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1))
42550 return false;
42551 }
42552#if USE_TAILCALLS
42553 MUSTTAIL return InterpNext(S, PC);
42554#else
42555 return true;
42556#endif
42557}
42558PRESERVE_NONE
42559static bool Interp_PreDecBitfieldUint32(InterpState &S, CodePtr &PC) {
42560 {
42561 CodePtr OpPC = PC;
42562 const auto V0 = ReadArg<bool>(S, PC);
42563 const auto V1 = ReadArg<uint32_t>(S, PC);
42564 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1))
42565 return false;
42566 }
42567#if USE_TAILCALLS
42568 MUSTTAIL return InterpNext(S, PC);
42569#else
42570 return true;
42571#endif
42572}
42573PRESERVE_NONE
42574static bool Interp_PreDecBitfieldSint64(InterpState &S, CodePtr &PC) {
42575 {
42576 CodePtr OpPC = PC;
42577 const auto V0 = ReadArg<bool>(S, PC);
42578 const auto V1 = ReadArg<uint32_t>(S, PC);
42579 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1))
42580 return false;
42581 }
42582#if USE_TAILCALLS
42583 MUSTTAIL return InterpNext(S, PC);
42584#else
42585 return true;
42586#endif
42587}
42588PRESERVE_NONE
42589static bool Interp_PreDecBitfieldUint64(InterpState &S, CodePtr &PC) {
42590 {
42591 CodePtr OpPC = PC;
42592 const auto V0 = ReadArg<bool>(S, PC);
42593 const auto V1 = ReadArg<uint32_t>(S, PC);
42594 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1))
42595 return false;
42596 }
42597#if USE_TAILCALLS
42598 MUSTTAIL return InterpNext(S, PC);
42599#else
42600 return true;
42601#endif
42602}
42603PRESERVE_NONE
42604static bool Interp_PreDecBitfieldIntAP(InterpState &S, CodePtr &PC) {
42605 {
42606 CodePtr OpPC = PC;
42607 const auto V0 = ReadArg<bool>(S, PC);
42608 const auto V1 = ReadArg<uint32_t>(S, PC);
42609 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1))
42610 return false;
42611 }
42612#if USE_TAILCALLS
42613 MUSTTAIL return InterpNext(S, PC);
42614#else
42615 return true;
42616#endif
42617}
42618PRESERVE_NONE
42619static bool Interp_PreDecBitfieldIntAPS(InterpState &S, CodePtr &PC) {
42620 {
42621 CodePtr OpPC = PC;
42622 const auto V0 = ReadArg<bool>(S, PC);
42623 const auto V1 = ReadArg<uint32_t>(S, PC);
42624 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
42625 return false;
42626 }
42627#if USE_TAILCALLS
42628 MUSTTAIL return InterpNext(S, PC);
42629#else
42630 return true;
42631#endif
42632}
42633PRESERVE_NONE
42634static bool Interp_PreDecBitfieldBool(InterpState &S, CodePtr &PC) {
42635 {
42636 CodePtr OpPC = PC;
42637 const auto V0 = ReadArg<bool>(S, PC);
42638 const auto V1 = ReadArg<uint32_t>(S, PC);
42639 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1))
42640 return false;
42641 }
42642#if USE_TAILCALLS
42643 MUSTTAIL return InterpNext(S, PC);
42644#else
42645 return true;
42646#endif
42647}
42648PRESERVE_NONE
42649static bool Interp_PreDecBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
42650 {
42651 CodePtr OpPC = PC;
42652 const auto V0 = ReadArg<bool>(S, PC);
42653 const auto V1 = ReadArg<uint32_t>(S, PC);
42654 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
42655 return false;
42656 }
42657#if USE_TAILCALLS
42658 MUSTTAIL return InterpNext(S, PC);
42659#else
42660 return true;
42661#endif
42662}
42663#endif
42664#ifdef GET_DISASM
42665case OP_PreDecBitfieldSint8:
42666 Text.Op = PrintName("PreDecBitfieldSint8");
42667 Text.Args.push_back(printArg<bool>(P, PC));
42668 Text.Args.push_back(printArg<uint32_t>(P, PC));
42669 break;
42670case OP_PreDecBitfieldUint8:
42671 Text.Op = PrintName("PreDecBitfieldUint8");
42672 Text.Args.push_back(printArg<bool>(P, PC));
42673 Text.Args.push_back(printArg<uint32_t>(P, PC));
42674 break;
42675case OP_PreDecBitfieldSint16:
42676 Text.Op = PrintName("PreDecBitfieldSint16");
42677 Text.Args.push_back(printArg<bool>(P, PC));
42678 Text.Args.push_back(printArg<uint32_t>(P, PC));
42679 break;
42680case OP_PreDecBitfieldUint16:
42681 Text.Op = PrintName("PreDecBitfieldUint16");
42682 Text.Args.push_back(printArg<bool>(P, PC));
42683 Text.Args.push_back(printArg<uint32_t>(P, PC));
42684 break;
42685case OP_PreDecBitfieldSint32:
42686 Text.Op = PrintName("PreDecBitfieldSint32");
42687 Text.Args.push_back(printArg<bool>(P, PC));
42688 Text.Args.push_back(printArg<uint32_t>(P, PC));
42689 break;
42690case OP_PreDecBitfieldUint32:
42691 Text.Op = PrintName("PreDecBitfieldUint32");
42692 Text.Args.push_back(printArg<bool>(P, PC));
42693 Text.Args.push_back(printArg<uint32_t>(P, PC));
42694 break;
42695case OP_PreDecBitfieldSint64:
42696 Text.Op = PrintName("PreDecBitfieldSint64");
42697 Text.Args.push_back(printArg<bool>(P, PC));
42698 Text.Args.push_back(printArg<uint32_t>(P, PC));
42699 break;
42700case OP_PreDecBitfieldUint64:
42701 Text.Op = PrintName("PreDecBitfieldUint64");
42702 Text.Args.push_back(printArg<bool>(P, PC));
42703 Text.Args.push_back(printArg<uint32_t>(P, PC));
42704 break;
42705case OP_PreDecBitfieldIntAP:
42706 Text.Op = PrintName("PreDecBitfieldIntAP");
42707 Text.Args.push_back(printArg<bool>(P, PC));
42708 Text.Args.push_back(printArg<uint32_t>(P, PC));
42709 break;
42710case OP_PreDecBitfieldIntAPS:
42711 Text.Op = PrintName("PreDecBitfieldIntAPS");
42712 Text.Args.push_back(printArg<bool>(P, PC));
42713 Text.Args.push_back(printArg<uint32_t>(P, PC));
42714 break;
42715case OP_PreDecBitfieldBool:
42716 Text.Op = PrintName("PreDecBitfieldBool");
42717 Text.Args.push_back(printArg<bool>(P, PC));
42718 Text.Args.push_back(printArg<uint32_t>(P, PC));
42719 break;
42720case OP_PreDecBitfieldFixedPoint:
42721 Text.Op = PrintName("PreDecBitfieldFixedPoint");
42722 Text.Args.push_back(printArg<bool>(P, PC));
42723 Text.Args.push_back(printArg<uint32_t>(P, PC));
42724 break;
42725#endif
42726#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42727bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
42728bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
42729bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
42730bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
42731bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
42732bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
42733bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
42734bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
42735bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
42736bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
42737bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
42738bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
42739#endif
42740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42741[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
42742#endif
42743#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42744bool
42745#if defined(GET_EVAL_IMPL)
42746EvalEmitter
42747#else
42748ByteCodeEmitter
42749#endif
42750::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
42751 switch (T0) {
42752 case PT_Sint8:
42753 return emitPreDecBitfieldSint8(A0, A1, I);
42754 case PT_Uint8:
42755 return emitPreDecBitfieldUint8(A0, A1, I);
42756 case PT_Sint16:
42757 return emitPreDecBitfieldSint16(A0, A1, I);
42758 case PT_Uint16:
42759 return emitPreDecBitfieldUint16(A0, A1, I);
42760 case PT_Sint32:
42761 return emitPreDecBitfieldSint32(A0, A1, I);
42762 case PT_Uint32:
42763 return emitPreDecBitfieldUint32(A0, A1, I);
42764 case PT_Sint64:
42765 return emitPreDecBitfieldSint64(A0, A1, I);
42766 case PT_Uint64:
42767 return emitPreDecBitfieldUint64(A0, A1, I);
42768 case PT_IntAP:
42769 return emitPreDecBitfieldIntAP(A0, A1, I);
42770 case PT_IntAPS:
42771 return emitPreDecBitfieldIntAPS(A0, A1, I);
42772 case PT_Bool:
42773 return emitPreDecBitfieldBool(A0, A1, I);
42774 case PT_FixedPoint:
42775 return emitPreDecBitfieldFixedPoint(A0, A1, I);
42776 default: llvm_unreachable("invalid type: emitPreDecBitfield");
42777 }
42778 llvm_unreachable("invalid enum value");
42779}
42780#endif
42781#ifdef GET_LINK_IMPL
42782bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42783 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
42784}
42785bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42786 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
42787}
42788bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42789 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
42790}
42791bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42792 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
42793}
42794bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42795 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
42796}
42797bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42798 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
42799}
42800bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42801 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
42802}
42803bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42804 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
42805}
42806bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42807 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
42808}
42809bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42810 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
42811}
42812bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42813 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
42814}
42815bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42816 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
42817}
42818#endif
42819#ifdef GET_EVAL_IMPL
42820bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42821 if (!isActive()) return true;
42822 CurrentSource = L;
42823 return PreDecBitfield<PT_Sint8>(S, OpPC, A0, A1);
42824}
42825bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42826 if (!isActive()) return true;
42827 CurrentSource = L;
42828 return PreDecBitfield<PT_Uint8>(S, OpPC, A0, A1);
42829}
42830bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42831 if (!isActive()) return true;
42832 CurrentSource = L;
42833 return PreDecBitfield<PT_Sint16>(S, OpPC, A0, A1);
42834}
42835bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42836 if (!isActive()) return true;
42837 CurrentSource = L;
42838 return PreDecBitfield<PT_Uint16>(S, OpPC, A0, A1);
42839}
42840bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42841 if (!isActive()) return true;
42842 CurrentSource = L;
42843 return PreDecBitfield<PT_Sint32>(S, OpPC, A0, A1);
42844}
42845bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42846 if (!isActive()) return true;
42847 CurrentSource = L;
42848 return PreDecBitfield<PT_Uint32>(S, OpPC, A0, A1);
42849}
42850bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42851 if (!isActive()) return true;
42852 CurrentSource = L;
42853 return PreDecBitfield<PT_Sint64>(S, OpPC, A0, A1);
42854}
42855bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42856 if (!isActive()) return true;
42857 CurrentSource = L;
42858 return PreDecBitfield<PT_Uint64>(S, OpPC, A0, A1);
42859}
42860bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42861 if (!isActive()) return true;
42862 CurrentSource = L;
42863 return PreDecBitfield<PT_IntAP>(S, OpPC, A0, A1);
42864}
42865bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42866 if (!isActive()) return true;
42867 CurrentSource = L;
42868 return PreDecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
42869}
42870bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42871 if (!isActive()) return true;
42872 CurrentSource = L;
42873 return PreDecBitfield<PT_Bool>(S, OpPC, A0, A1);
42874}
42875bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42876 if (!isActive()) return true;
42877 CurrentSource = L;
42878 return PreDecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
42879}
42880#endif
42881#ifdef GET_OPCODE_NAMES
42882OP_PreIncSint8,
42883OP_PreIncUint8,
42884OP_PreIncSint16,
42885OP_PreIncUint16,
42886OP_PreIncSint32,
42887OP_PreIncUint32,
42888OP_PreIncSint64,
42889OP_PreIncUint64,
42890OP_PreIncIntAP,
42891OP_PreIncIntAPS,
42892OP_PreIncBool,
42893OP_PreIncFixedPoint,
42894#endif
42895#ifdef GET_INTERPFN_LIST
42896&Interp_PreIncSint8,
42897&Interp_PreIncUint8,
42898&Interp_PreIncSint16,
42899&Interp_PreIncUint16,
42900&Interp_PreIncSint32,
42901&Interp_PreIncUint32,
42902&Interp_PreIncSint64,
42903&Interp_PreIncUint64,
42904&Interp_PreIncIntAP,
42905&Interp_PreIncIntAPS,
42906&Interp_PreIncBool,
42907&Interp_PreIncFixedPoint,
42908#endif
42909#ifdef GET_INTERPFN_DISPATCHERS
42910PRESERVE_NONE
42911static bool Interp_PreIncSint8(InterpState &S, CodePtr &PC) {
42912 {
42913 CodePtr OpPC = PC;
42914 const auto V0 = ReadArg<bool>(S, PC);
42915 if (!PreInc<PT_Sint8>(S, OpPC, V0))
42916 return false;
42917 }
42918#if USE_TAILCALLS
42919 MUSTTAIL return InterpNext(S, PC);
42920#else
42921 return true;
42922#endif
42923}
42924PRESERVE_NONE
42925static bool Interp_PreIncUint8(InterpState &S, CodePtr &PC) {
42926 {
42927 CodePtr OpPC = PC;
42928 const auto V0 = ReadArg<bool>(S, PC);
42929 if (!PreInc<PT_Uint8>(S, OpPC, V0))
42930 return false;
42931 }
42932#if USE_TAILCALLS
42933 MUSTTAIL return InterpNext(S, PC);
42934#else
42935 return true;
42936#endif
42937}
42938PRESERVE_NONE
42939static bool Interp_PreIncSint16(InterpState &S, CodePtr &PC) {
42940 {
42941 CodePtr OpPC = PC;
42942 const auto V0 = ReadArg<bool>(S, PC);
42943 if (!PreInc<PT_Sint16>(S, OpPC, V0))
42944 return false;
42945 }
42946#if USE_TAILCALLS
42947 MUSTTAIL return InterpNext(S, PC);
42948#else
42949 return true;
42950#endif
42951}
42952PRESERVE_NONE
42953static bool Interp_PreIncUint16(InterpState &S, CodePtr &PC) {
42954 {
42955 CodePtr OpPC = PC;
42956 const auto V0 = ReadArg<bool>(S, PC);
42957 if (!PreInc<PT_Uint16>(S, OpPC, V0))
42958 return false;
42959 }
42960#if USE_TAILCALLS
42961 MUSTTAIL return InterpNext(S, PC);
42962#else
42963 return true;
42964#endif
42965}
42966PRESERVE_NONE
42967static bool Interp_PreIncSint32(InterpState &S, CodePtr &PC) {
42968 {
42969 CodePtr OpPC = PC;
42970 const auto V0 = ReadArg<bool>(S, PC);
42971 if (!PreInc<PT_Sint32>(S, OpPC, V0))
42972 return false;
42973 }
42974#if USE_TAILCALLS
42975 MUSTTAIL return InterpNext(S, PC);
42976#else
42977 return true;
42978#endif
42979}
42980PRESERVE_NONE
42981static bool Interp_PreIncUint32(InterpState &S, CodePtr &PC) {
42982 {
42983 CodePtr OpPC = PC;
42984 const auto V0 = ReadArg<bool>(S, PC);
42985 if (!PreInc<PT_Uint32>(S, OpPC, V0))
42986 return false;
42987 }
42988#if USE_TAILCALLS
42989 MUSTTAIL return InterpNext(S, PC);
42990#else
42991 return true;
42992#endif
42993}
42994PRESERVE_NONE
42995static bool Interp_PreIncSint64(InterpState &S, CodePtr &PC) {
42996 {
42997 CodePtr OpPC = PC;
42998 const auto V0 = ReadArg<bool>(S, PC);
42999 if (!PreInc<PT_Sint64>(S, OpPC, V0))
43000 return false;
43001 }
43002#if USE_TAILCALLS
43003 MUSTTAIL return InterpNext(S, PC);
43004#else
43005 return true;
43006#endif
43007}
43008PRESERVE_NONE
43009static bool Interp_PreIncUint64(InterpState &S, CodePtr &PC) {
43010 {
43011 CodePtr OpPC = PC;
43012 const auto V0 = ReadArg<bool>(S, PC);
43013 if (!PreInc<PT_Uint64>(S, OpPC, V0))
43014 return false;
43015 }
43016#if USE_TAILCALLS
43017 MUSTTAIL return InterpNext(S, PC);
43018#else
43019 return true;
43020#endif
43021}
43022PRESERVE_NONE
43023static bool Interp_PreIncIntAP(InterpState &S, CodePtr &PC) {
43024 {
43025 CodePtr OpPC = PC;
43026 const auto V0 = ReadArg<bool>(S, PC);
43027 if (!PreInc<PT_IntAP>(S, OpPC, V0))
43028 return false;
43029 }
43030#if USE_TAILCALLS
43031 MUSTTAIL return InterpNext(S, PC);
43032#else
43033 return true;
43034#endif
43035}
43036PRESERVE_NONE
43037static bool Interp_PreIncIntAPS(InterpState &S, CodePtr &PC) {
43038 {
43039 CodePtr OpPC = PC;
43040 const auto V0 = ReadArg<bool>(S, PC);
43041 if (!PreInc<PT_IntAPS>(S, OpPC, V0))
43042 return false;
43043 }
43044#if USE_TAILCALLS
43045 MUSTTAIL return InterpNext(S, PC);
43046#else
43047 return true;
43048#endif
43049}
43050PRESERVE_NONE
43051static bool Interp_PreIncBool(InterpState &S, CodePtr &PC) {
43052 {
43053 CodePtr OpPC = PC;
43054 const auto V0 = ReadArg<bool>(S, PC);
43055 if (!PreInc<PT_Bool>(S, OpPC, V0))
43056 return false;
43057 }
43058#if USE_TAILCALLS
43059 MUSTTAIL return InterpNext(S, PC);
43060#else
43061 return true;
43062#endif
43063}
43064PRESERVE_NONE
43065static bool Interp_PreIncFixedPoint(InterpState &S, CodePtr &PC) {
43066 {
43067 CodePtr OpPC = PC;
43068 const auto V0 = ReadArg<bool>(S, PC);
43069 if (!PreInc<PT_FixedPoint>(S, OpPC, V0))
43070 return false;
43071 }
43072#if USE_TAILCALLS
43073 MUSTTAIL return InterpNext(S, PC);
43074#else
43075 return true;
43076#endif
43077}
43078#endif
43079#ifdef GET_DISASM
43080case OP_PreIncSint8:
43081 Text.Op = PrintName("PreIncSint8");
43082 Text.Args.push_back(printArg<bool>(P, PC));
43083 break;
43084case OP_PreIncUint8:
43085 Text.Op = PrintName("PreIncUint8");
43086 Text.Args.push_back(printArg<bool>(P, PC));
43087 break;
43088case OP_PreIncSint16:
43089 Text.Op = PrintName("PreIncSint16");
43090 Text.Args.push_back(printArg<bool>(P, PC));
43091 break;
43092case OP_PreIncUint16:
43093 Text.Op = PrintName("PreIncUint16");
43094 Text.Args.push_back(printArg<bool>(P, PC));
43095 break;
43096case OP_PreIncSint32:
43097 Text.Op = PrintName("PreIncSint32");
43098 Text.Args.push_back(printArg<bool>(P, PC));
43099 break;
43100case OP_PreIncUint32:
43101 Text.Op = PrintName("PreIncUint32");
43102 Text.Args.push_back(printArg<bool>(P, PC));
43103 break;
43104case OP_PreIncSint64:
43105 Text.Op = PrintName("PreIncSint64");
43106 Text.Args.push_back(printArg<bool>(P, PC));
43107 break;
43108case OP_PreIncUint64:
43109 Text.Op = PrintName("PreIncUint64");
43110 Text.Args.push_back(printArg<bool>(P, PC));
43111 break;
43112case OP_PreIncIntAP:
43113 Text.Op = PrintName("PreIncIntAP");
43114 Text.Args.push_back(printArg<bool>(P, PC));
43115 break;
43116case OP_PreIncIntAPS:
43117 Text.Op = PrintName("PreIncIntAPS");
43118 Text.Args.push_back(printArg<bool>(P, PC));
43119 break;
43120case OP_PreIncBool:
43121 Text.Op = PrintName("PreIncBool");
43122 Text.Args.push_back(printArg<bool>(P, PC));
43123 break;
43124case OP_PreIncFixedPoint:
43125 Text.Op = PrintName("PreIncFixedPoint");
43126 Text.Args.push_back(printArg<bool>(P, PC));
43127 break;
43128#endif
43129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43130bool emitPreIncSint8( bool , SourceInfo);
43131bool emitPreIncUint8( bool , SourceInfo);
43132bool emitPreIncSint16( bool , SourceInfo);
43133bool emitPreIncUint16( bool , SourceInfo);
43134bool emitPreIncSint32( bool , SourceInfo);
43135bool emitPreIncUint32( bool , SourceInfo);
43136bool emitPreIncSint64( bool , SourceInfo);
43137bool emitPreIncUint64( bool , SourceInfo);
43138bool emitPreIncIntAP( bool , SourceInfo);
43139bool emitPreIncIntAPS( bool , SourceInfo);
43140bool emitPreIncBool( bool , SourceInfo);
43141bool emitPreIncFixedPoint( bool , SourceInfo);
43142#endif
43143#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43144[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
43145#endif
43146#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43147bool
43148#if defined(GET_EVAL_IMPL)
43149EvalEmitter
43150#else
43151ByteCodeEmitter
43152#endif
43153::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
43154 switch (T0) {
43155 case PT_Sint8:
43156 return emitPreIncSint8(A0, I);
43157 case PT_Uint8:
43158 return emitPreIncUint8(A0, I);
43159 case PT_Sint16:
43160 return emitPreIncSint16(A0, I);
43161 case PT_Uint16:
43162 return emitPreIncUint16(A0, I);
43163 case PT_Sint32:
43164 return emitPreIncSint32(A0, I);
43165 case PT_Uint32:
43166 return emitPreIncUint32(A0, I);
43167 case PT_Sint64:
43168 return emitPreIncSint64(A0, I);
43169 case PT_Uint64:
43170 return emitPreIncUint64(A0, I);
43171 case PT_IntAP:
43172 return emitPreIncIntAP(A0, I);
43173 case PT_IntAPS:
43174 return emitPreIncIntAPS(A0, I);
43175 case PT_Bool:
43176 return emitPreIncBool(A0, I);
43177 case PT_FixedPoint:
43178 return emitPreIncFixedPoint(A0, I);
43179 default: llvm_unreachable("invalid type: emitPreInc");
43180 }
43181 llvm_unreachable("invalid enum value");
43182}
43183#endif
43184#ifdef GET_LINK_IMPL
43185bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
43186 return emitOp<bool>(OP_PreIncSint8, A0, L);
43187}
43188bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
43189 return emitOp<bool>(OP_PreIncUint8, A0, L);
43190}
43191bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
43192 return emitOp<bool>(OP_PreIncSint16, A0, L);
43193}
43194bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
43195 return emitOp<bool>(OP_PreIncUint16, A0, L);
43196}
43197bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
43198 return emitOp<bool>(OP_PreIncSint32, A0, L);
43199}
43200bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
43201 return emitOp<bool>(OP_PreIncUint32, A0, L);
43202}
43203bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
43204 return emitOp<bool>(OP_PreIncSint64, A0, L);
43205}
43206bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
43207 return emitOp<bool>(OP_PreIncUint64, A0, L);
43208}
43209bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
43210 return emitOp<bool>(OP_PreIncIntAP, A0, L);
43211}
43212bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
43213 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
43214}
43215bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
43216 return emitOp<bool>(OP_PreIncBool, A0, L);
43217}
43218bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
43219 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
43220}
43221#endif
43222#ifdef GET_EVAL_IMPL
43223bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
43224 if (!isActive()) return true;
43225 CurrentSource = L;
43226 return PreInc<PT_Sint8>(S, OpPC, A0);
43227}
43228bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
43229 if (!isActive()) return true;
43230 CurrentSource = L;
43231 return PreInc<PT_Uint8>(S, OpPC, A0);
43232}
43233bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
43234 if (!isActive()) return true;
43235 CurrentSource = L;
43236 return PreInc<PT_Sint16>(S, OpPC, A0);
43237}
43238bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
43239 if (!isActive()) return true;
43240 CurrentSource = L;
43241 return PreInc<PT_Uint16>(S, OpPC, A0);
43242}
43243bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
43244 if (!isActive()) return true;
43245 CurrentSource = L;
43246 return PreInc<PT_Sint32>(S, OpPC, A0);
43247}
43248bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
43249 if (!isActive()) return true;
43250 CurrentSource = L;
43251 return PreInc<PT_Uint32>(S, OpPC, A0);
43252}
43253bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
43254 if (!isActive()) return true;
43255 CurrentSource = L;
43256 return PreInc<PT_Sint64>(S, OpPC, A0);
43257}
43258bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
43259 if (!isActive()) return true;
43260 CurrentSource = L;
43261 return PreInc<PT_Uint64>(S, OpPC, A0);
43262}
43263bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
43264 if (!isActive()) return true;
43265 CurrentSource = L;
43266 return PreInc<PT_IntAP>(S, OpPC, A0);
43267}
43268bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
43269 if (!isActive()) return true;
43270 CurrentSource = L;
43271 return PreInc<PT_IntAPS>(S, OpPC, A0);
43272}
43273bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
43274 if (!isActive()) return true;
43275 CurrentSource = L;
43276 return PreInc<PT_Bool>(S, OpPC, A0);
43277}
43278bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
43279 if (!isActive()) return true;
43280 CurrentSource = L;
43281 return PreInc<PT_FixedPoint>(S, OpPC, A0);
43282}
43283#endif
43284#ifdef GET_OPCODE_NAMES
43285OP_PreIncBitfieldSint8,
43286OP_PreIncBitfieldUint8,
43287OP_PreIncBitfieldSint16,
43288OP_PreIncBitfieldUint16,
43289OP_PreIncBitfieldSint32,
43290OP_PreIncBitfieldUint32,
43291OP_PreIncBitfieldSint64,
43292OP_PreIncBitfieldUint64,
43293OP_PreIncBitfieldIntAP,
43294OP_PreIncBitfieldIntAPS,
43295OP_PreIncBitfieldBool,
43296OP_PreIncBitfieldFixedPoint,
43297#endif
43298#ifdef GET_INTERPFN_LIST
43299&Interp_PreIncBitfieldSint8,
43300&Interp_PreIncBitfieldUint8,
43301&Interp_PreIncBitfieldSint16,
43302&Interp_PreIncBitfieldUint16,
43303&Interp_PreIncBitfieldSint32,
43304&Interp_PreIncBitfieldUint32,
43305&Interp_PreIncBitfieldSint64,
43306&Interp_PreIncBitfieldUint64,
43307&Interp_PreIncBitfieldIntAP,
43308&Interp_PreIncBitfieldIntAPS,
43309&Interp_PreIncBitfieldBool,
43310&Interp_PreIncBitfieldFixedPoint,
43311#endif
43312#ifdef GET_INTERPFN_DISPATCHERS
43313PRESERVE_NONE
43314static bool Interp_PreIncBitfieldSint8(InterpState &S, CodePtr &PC) {
43315 {
43316 CodePtr OpPC = PC;
43317 const auto V0 = ReadArg<bool>(S, PC);
43318 const auto V1 = ReadArg<uint32_t>(S, PC);
43319 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1))
43320 return false;
43321 }
43322#if USE_TAILCALLS
43323 MUSTTAIL return InterpNext(S, PC);
43324#else
43325 return true;
43326#endif
43327}
43328PRESERVE_NONE
43329static bool Interp_PreIncBitfieldUint8(InterpState &S, CodePtr &PC) {
43330 {
43331 CodePtr OpPC = PC;
43332 const auto V0 = ReadArg<bool>(S, PC);
43333 const auto V1 = ReadArg<uint32_t>(S, PC);
43334 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1))
43335 return false;
43336 }
43337#if USE_TAILCALLS
43338 MUSTTAIL return InterpNext(S, PC);
43339#else
43340 return true;
43341#endif
43342}
43343PRESERVE_NONE
43344static bool Interp_PreIncBitfieldSint16(InterpState &S, CodePtr &PC) {
43345 {
43346 CodePtr OpPC = PC;
43347 const auto V0 = ReadArg<bool>(S, PC);
43348 const auto V1 = ReadArg<uint32_t>(S, PC);
43349 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1))
43350 return false;
43351 }
43352#if USE_TAILCALLS
43353 MUSTTAIL return InterpNext(S, PC);
43354#else
43355 return true;
43356#endif
43357}
43358PRESERVE_NONE
43359static bool Interp_PreIncBitfieldUint16(InterpState &S, CodePtr &PC) {
43360 {
43361 CodePtr OpPC = PC;
43362 const auto V0 = ReadArg<bool>(S, PC);
43363 const auto V1 = ReadArg<uint32_t>(S, PC);
43364 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1))
43365 return false;
43366 }
43367#if USE_TAILCALLS
43368 MUSTTAIL return InterpNext(S, PC);
43369#else
43370 return true;
43371#endif
43372}
43373PRESERVE_NONE
43374static bool Interp_PreIncBitfieldSint32(InterpState &S, CodePtr &PC) {
43375 {
43376 CodePtr OpPC = PC;
43377 const auto V0 = ReadArg<bool>(S, PC);
43378 const auto V1 = ReadArg<uint32_t>(S, PC);
43379 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1))
43380 return false;
43381 }
43382#if USE_TAILCALLS
43383 MUSTTAIL return InterpNext(S, PC);
43384#else
43385 return true;
43386#endif
43387}
43388PRESERVE_NONE
43389static bool Interp_PreIncBitfieldUint32(InterpState &S, CodePtr &PC) {
43390 {
43391 CodePtr OpPC = PC;
43392 const auto V0 = ReadArg<bool>(S, PC);
43393 const auto V1 = ReadArg<uint32_t>(S, PC);
43394 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1))
43395 return false;
43396 }
43397#if USE_TAILCALLS
43398 MUSTTAIL return InterpNext(S, PC);
43399#else
43400 return true;
43401#endif
43402}
43403PRESERVE_NONE
43404static bool Interp_PreIncBitfieldSint64(InterpState &S, CodePtr &PC) {
43405 {
43406 CodePtr OpPC = PC;
43407 const auto V0 = ReadArg<bool>(S, PC);
43408 const auto V1 = ReadArg<uint32_t>(S, PC);
43409 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1))
43410 return false;
43411 }
43412#if USE_TAILCALLS
43413 MUSTTAIL return InterpNext(S, PC);
43414#else
43415 return true;
43416#endif
43417}
43418PRESERVE_NONE
43419static bool Interp_PreIncBitfieldUint64(InterpState &S, CodePtr &PC) {
43420 {
43421 CodePtr OpPC = PC;
43422 const auto V0 = ReadArg<bool>(S, PC);
43423 const auto V1 = ReadArg<uint32_t>(S, PC);
43424 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1))
43425 return false;
43426 }
43427#if USE_TAILCALLS
43428 MUSTTAIL return InterpNext(S, PC);
43429#else
43430 return true;
43431#endif
43432}
43433PRESERVE_NONE
43434static bool Interp_PreIncBitfieldIntAP(InterpState &S, CodePtr &PC) {
43435 {
43436 CodePtr OpPC = PC;
43437 const auto V0 = ReadArg<bool>(S, PC);
43438 const auto V1 = ReadArg<uint32_t>(S, PC);
43439 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1))
43440 return false;
43441 }
43442#if USE_TAILCALLS
43443 MUSTTAIL return InterpNext(S, PC);
43444#else
43445 return true;
43446#endif
43447}
43448PRESERVE_NONE
43449static bool Interp_PreIncBitfieldIntAPS(InterpState &S, CodePtr &PC) {
43450 {
43451 CodePtr OpPC = PC;
43452 const auto V0 = ReadArg<bool>(S, PC);
43453 const auto V1 = ReadArg<uint32_t>(S, PC);
43454 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
43455 return false;
43456 }
43457#if USE_TAILCALLS
43458 MUSTTAIL return InterpNext(S, PC);
43459#else
43460 return true;
43461#endif
43462}
43463PRESERVE_NONE
43464static bool Interp_PreIncBitfieldBool(InterpState &S, CodePtr &PC) {
43465 {
43466 CodePtr OpPC = PC;
43467 const auto V0 = ReadArg<bool>(S, PC);
43468 const auto V1 = ReadArg<uint32_t>(S, PC);
43469 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1))
43470 return false;
43471 }
43472#if USE_TAILCALLS
43473 MUSTTAIL return InterpNext(S, PC);
43474#else
43475 return true;
43476#endif
43477}
43478PRESERVE_NONE
43479static bool Interp_PreIncBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
43480 {
43481 CodePtr OpPC = PC;
43482 const auto V0 = ReadArg<bool>(S, PC);
43483 const auto V1 = ReadArg<uint32_t>(S, PC);
43484 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
43485 return false;
43486 }
43487#if USE_TAILCALLS
43488 MUSTTAIL return InterpNext(S, PC);
43489#else
43490 return true;
43491#endif
43492}
43493#endif
43494#ifdef GET_DISASM
43495case OP_PreIncBitfieldSint8:
43496 Text.Op = PrintName("PreIncBitfieldSint8");
43497 Text.Args.push_back(printArg<bool>(P, PC));
43498 Text.Args.push_back(printArg<uint32_t>(P, PC));
43499 break;
43500case OP_PreIncBitfieldUint8:
43501 Text.Op = PrintName("PreIncBitfieldUint8");
43502 Text.Args.push_back(printArg<bool>(P, PC));
43503 Text.Args.push_back(printArg<uint32_t>(P, PC));
43504 break;
43505case OP_PreIncBitfieldSint16:
43506 Text.Op = PrintName("PreIncBitfieldSint16");
43507 Text.Args.push_back(printArg<bool>(P, PC));
43508 Text.Args.push_back(printArg<uint32_t>(P, PC));
43509 break;
43510case OP_PreIncBitfieldUint16:
43511 Text.Op = PrintName("PreIncBitfieldUint16");
43512 Text.Args.push_back(printArg<bool>(P, PC));
43513 Text.Args.push_back(printArg<uint32_t>(P, PC));
43514 break;
43515case OP_PreIncBitfieldSint32:
43516 Text.Op = PrintName("PreIncBitfieldSint32");
43517 Text.Args.push_back(printArg<bool>(P, PC));
43518 Text.Args.push_back(printArg<uint32_t>(P, PC));
43519 break;
43520case OP_PreIncBitfieldUint32:
43521 Text.Op = PrintName("PreIncBitfieldUint32");
43522 Text.Args.push_back(printArg<bool>(P, PC));
43523 Text.Args.push_back(printArg<uint32_t>(P, PC));
43524 break;
43525case OP_PreIncBitfieldSint64:
43526 Text.Op = PrintName("PreIncBitfieldSint64");
43527 Text.Args.push_back(printArg<bool>(P, PC));
43528 Text.Args.push_back(printArg<uint32_t>(P, PC));
43529 break;
43530case OP_PreIncBitfieldUint64:
43531 Text.Op = PrintName("PreIncBitfieldUint64");
43532 Text.Args.push_back(printArg<bool>(P, PC));
43533 Text.Args.push_back(printArg<uint32_t>(P, PC));
43534 break;
43535case OP_PreIncBitfieldIntAP:
43536 Text.Op = PrintName("PreIncBitfieldIntAP");
43537 Text.Args.push_back(printArg<bool>(P, PC));
43538 Text.Args.push_back(printArg<uint32_t>(P, PC));
43539 break;
43540case OP_PreIncBitfieldIntAPS:
43541 Text.Op = PrintName("PreIncBitfieldIntAPS");
43542 Text.Args.push_back(printArg<bool>(P, PC));
43543 Text.Args.push_back(printArg<uint32_t>(P, PC));
43544 break;
43545case OP_PreIncBitfieldBool:
43546 Text.Op = PrintName("PreIncBitfieldBool");
43547 Text.Args.push_back(printArg<bool>(P, PC));
43548 Text.Args.push_back(printArg<uint32_t>(P, PC));
43549 break;
43550case OP_PreIncBitfieldFixedPoint:
43551 Text.Op = PrintName("PreIncBitfieldFixedPoint");
43552 Text.Args.push_back(printArg<bool>(P, PC));
43553 Text.Args.push_back(printArg<uint32_t>(P, PC));
43554 break;
43555#endif
43556#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43557bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
43558bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
43559bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
43560bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
43561bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
43562bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
43563bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
43564bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
43565bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
43566bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
43567bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
43568bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
43569#endif
43570#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43571[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
43572#endif
43573#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43574bool
43575#if defined(GET_EVAL_IMPL)
43576EvalEmitter
43577#else
43578ByteCodeEmitter
43579#endif
43580::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
43581 switch (T0) {
43582 case PT_Sint8:
43583 return emitPreIncBitfieldSint8(A0, A1, I);
43584 case PT_Uint8:
43585 return emitPreIncBitfieldUint8(A0, A1, I);
43586 case PT_Sint16:
43587 return emitPreIncBitfieldSint16(A0, A1, I);
43588 case PT_Uint16:
43589 return emitPreIncBitfieldUint16(A0, A1, I);
43590 case PT_Sint32:
43591 return emitPreIncBitfieldSint32(A0, A1, I);
43592 case PT_Uint32:
43593 return emitPreIncBitfieldUint32(A0, A1, I);
43594 case PT_Sint64:
43595 return emitPreIncBitfieldSint64(A0, A1, I);
43596 case PT_Uint64:
43597 return emitPreIncBitfieldUint64(A0, A1, I);
43598 case PT_IntAP:
43599 return emitPreIncBitfieldIntAP(A0, A1, I);
43600 case PT_IntAPS:
43601 return emitPreIncBitfieldIntAPS(A0, A1, I);
43602 case PT_Bool:
43603 return emitPreIncBitfieldBool(A0, A1, I);
43604 case PT_FixedPoint:
43605 return emitPreIncBitfieldFixedPoint(A0, A1, I);
43606 default: llvm_unreachable("invalid type: emitPreIncBitfield");
43607 }
43608 llvm_unreachable("invalid enum value");
43609}
43610#endif
43611#ifdef GET_LINK_IMPL
43612bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
43613 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
43614}
43615bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
43616 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
43617}
43618bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
43619 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
43620}
43621bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
43622 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
43623}
43624bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
43625 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
43626}
43627bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
43628 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
43629}
43630bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
43631 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
43632}
43633bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
43634 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
43635}
43636bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
43637 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
43638}
43639bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
43640 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
43641}
43642bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
43643 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
43644}
43645bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
43646 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
43647}
43648#endif
43649#ifdef GET_EVAL_IMPL
43650bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
43651 if (!isActive()) return true;
43652 CurrentSource = L;
43653 return PreIncBitfield<PT_Sint8>(S, OpPC, A0, A1);
43654}
43655bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
43656 if (!isActive()) return true;
43657 CurrentSource = L;
43658 return PreIncBitfield<PT_Uint8>(S, OpPC, A0, A1);
43659}
43660bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
43661 if (!isActive()) return true;
43662 CurrentSource = L;
43663 return PreIncBitfield<PT_Sint16>(S, OpPC, A0, A1);
43664}
43665bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
43666 if (!isActive()) return true;
43667 CurrentSource = L;
43668 return PreIncBitfield<PT_Uint16>(S, OpPC, A0, A1);
43669}
43670bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
43671 if (!isActive()) return true;
43672 CurrentSource = L;
43673 return PreIncBitfield<PT_Sint32>(S, OpPC, A0, A1);
43674}
43675bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
43676 if (!isActive()) return true;
43677 CurrentSource = L;
43678 return PreIncBitfield<PT_Uint32>(S, OpPC, A0, A1);
43679}
43680bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
43681 if (!isActive()) return true;
43682 CurrentSource = L;
43683 return PreIncBitfield<PT_Sint64>(S, OpPC, A0, A1);
43684}
43685bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
43686 if (!isActive()) return true;
43687 CurrentSource = L;
43688 return PreIncBitfield<PT_Uint64>(S, OpPC, A0, A1);
43689}
43690bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
43691 if (!isActive()) return true;
43692 CurrentSource = L;
43693 return PreIncBitfield<PT_IntAP>(S, OpPC, A0, A1);
43694}
43695bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
43696 if (!isActive()) return true;
43697 CurrentSource = L;
43698 return PreIncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
43699}
43700bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
43701 if (!isActive()) return true;
43702 CurrentSource = L;
43703 return PreIncBitfield<PT_Bool>(S, OpPC, A0, A1);
43704}
43705bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
43706 if (!isActive()) return true;
43707 CurrentSource = L;
43708 return PreIncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
43709}
43710#endif
43711#ifdef GET_OPCODE_NAMES
43712OP_PtrPtrCast,
43713#endif
43714#ifdef GET_INTERPFN_LIST
43715&Interp_PtrPtrCast,
43716#endif
43717#ifdef GET_INTERPFN_DISPATCHERS
43718PRESERVE_NONE
43719static bool Interp_PtrPtrCast(InterpState &S, CodePtr &PC) {
43720 {
43721 CodePtr OpPC = PC;
43722 const auto V0 = ReadArg<bool>(S, PC);
43723 if (!PtrPtrCast(S, OpPC, V0))
43724 return false;
43725 }
43726#if USE_TAILCALLS
43727 MUSTTAIL return InterpNext(S, PC);
43728#else
43729 return true;
43730#endif
43731}
43732#endif
43733#ifdef GET_DISASM
43734case OP_PtrPtrCast:
43735 Text.Op = PrintName("PtrPtrCast");
43736 Text.Args.push_back(printArg<bool>(P, PC));
43737 break;
43738#endif
43739#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43740bool emitPtrPtrCast( bool , SourceInfo);
43741#endif
43742#ifdef GET_LINK_IMPL
43743bool ByteCodeEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
43744 return emitOp<bool>(OP_PtrPtrCast, A0, L);
43745}
43746#endif
43747#ifdef GET_EVAL_IMPL
43748bool EvalEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
43749 if (!isActive()) return true;
43750 CurrentSource = L;
43751 return PtrPtrCast(S, OpPC, A0);
43752}
43753#endif
43754#ifdef GET_OPCODE_NAMES
43755OP_PushCC,
43756#endif
43757#ifdef GET_INTERPFN_LIST
43758&Interp_PushCC,
43759#endif
43760#ifdef GET_INTERPFN_DISPATCHERS
43761PRESERVE_NONE
43762static bool Interp_PushCC(InterpState &S, CodePtr &PC) {
43763 {
43764 CodePtr OpPC = PC;
43765 const auto V0 = ReadArg<bool>(S, PC);
43766 if (!PushCC(S, OpPC, V0))
43767 return false;
43768 }
43769#if USE_TAILCALLS
43770 MUSTTAIL return InterpNext(S, PC);
43771#else
43772 return true;
43773#endif
43774}
43775#endif
43776#ifdef GET_DISASM
43777case OP_PushCC:
43778 Text.Op = PrintName("PushCC");
43779 Text.Args.push_back(printArg<bool>(P, PC));
43780 break;
43781#endif
43782#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43783bool emitPushCC( bool , SourceInfo);
43784#endif
43785#ifdef GET_LINK_IMPL
43786bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
43787 return emitOp<bool>(OP_PushCC, A0, L);
43788}
43789#endif
43790#ifdef GET_EVAL_IMPL
43791bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
43792 if (!isActive()) return true;
43793 CurrentSource = L;
43794 return PushCC(S, OpPC, A0);
43795}
43796#endif
43797#ifdef GET_OPCODE_NAMES
43798OP_PushIgnoreDiags,
43799#endif
43800#ifdef GET_INTERPFN_LIST
43801&Interp_PushIgnoreDiags,
43802#endif
43803#ifdef GET_INTERPFN_DISPATCHERS
43804PRESERVE_NONE
43805static bool Interp_PushIgnoreDiags(InterpState &S, CodePtr &PC) {
43806 if (!PushIgnoreDiags(S, PC))
43807 return false;
43808#if USE_TAILCALLS
43809 MUSTTAIL return InterpNext(S, PC);
43810#else
43811 return true;
43812#endif
43813}
43814#endif
43815#ifdef GET_DISASM
43816case OP_PushIgnoreDiags:
43817 Text.Op = PrintName("PushIgnoreDiags");
43818 break;
43819#endif
43820#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43821bool emitPushIgnoreDiags(SourceInfo);
43822#endif
43823#ifdef GET_LINK_IMPL
43824bool ByteCodeEmitter::emitPushIgnoreDiags(SourceInfo L) {
43825 return emitOp<>(OP_PushIgnoreDiags, L);
43826}
43827#endif
43828#ifdef GET_EVAL_IMPL
43829bool EvalEmitter::emitPushIgnoreDiags(SourceInfo L) {
43830 if (!isActive()) return true;
43831 CurrentSource = L;
43832 return PushIgnoreDiags(S, OpPC);
43833}
43834#endif
43835#ifdef GET_OPCODE_NAMES
43836OP_PushMSVCCE,
43837#endif
43838#ifdef GET_INTERPFN_LIST
43839&Interp_PushMSVCCE,
43840#endif
43841#ifdef GET_INTERPFN_DISPATCHERS
43842PRESERVE_NONE
43843static bool Interp_PushMSVCCE(InterpState &S, CodePtr &PC) {
43844 if (!PushMSVCCE(S, PC))
43845 return false;
43846#if USE_TAILCALLS
43847 MUSTTAIL return InterpNext(S, PC);
43848#else
43849 return true;
43850#endif
43851}
43852#endif
43853#ifdef GET_DISASM
43854case OP_PushMSVCCE:
43855 Text.Op = PrintName("PushMSVCCE");
43856 break;
43857#endif
43858#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43859bool emitPushMSVCCE(SourceInfo);
43860#endif
43861#ifdef GET_LINK_IMPL
43862bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
43863 return emitOp<>(OP_PushMSVCCE, L);
43864}
43865#endif
43866#ifdef GET_EVAL_IMPL
43867bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
43868 if (!isActive()) return true;
43869 CurrentSource = L;
43870 return PushMSVCCE(S, OpPC);
43871}
43872#endif
43873#ifdef GET_OPCODE_NAMES
43874OP_RVOPtr,
43875#endif
43876#ifdef GET_INTERPFN_LIST
43877&Interp_RVOPtr,
43878#endif
43879#ifdef GET_INTERPFN_DISPATCHERS
43880PRESERVE_NONE
43881static bool Interp_RVOPtr(InterpState &S, CodePtr &PC) {
43882 if (!RVOPtr(S, PC))
43883 return false;
43884#if USE_TAILCALLS
43885 MUSTTAIL return InterpNext(S, PC);
43886#else
43887 return true;
43888#endif
43889}
43890#endif
43891#ifdef GET_DISASM
43892case OP_RVOPtr:
43893 Text.Op = PrintName("RVOPtr");
43894 break;
43895#endif
43896#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43897bool emitRVOPtr(SourceInfo);
43898#endif
43899#ifdef GET_LINK_IMPL
43900bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
43901 return emitOp<>(OP_RVOPtr, L);
43902}
43903#endif
43904#ifdef GET_EVAL_IMPL
43905bool EvalEmitter::emitRVOPtr(SourceInfo L) {
43906 if (!isActive()) return true;
43907 CurrentSource = L;
43908 return RVOPtr(S, OpPC);
43909}
43910#endif
43911#ifdef GET_OPCODE_NAMES
43912OP_RemSint8,
43913OP_RemUint8,
43914OP_RemSint16,
43915OP_RemUint16,
43916OP_RemSint32,
43917OP_RemUint32,
43918OP_RemSint64,
43919OP_RemUint64,
43920OP_RemIntAP,
43921OP_RemIntAPS,
43922OP_RemFixedPoint,
43923#endif
43924#ifdef GET_INTERPFN_LIST
43925&Interp_RemSint8,
43926&Interp_RemUint8,
43927&Interp_RemSint16,
43928&Interp_RemUint16,
43929&Interp_RemSint32,
43930&Interp_RemUint32,
43931&Interp_RemSint64,
43932&Interp_RemUint64,
43933&Interp_RemIntAP,
43934&Interp_RemIntAPS,
43935&Interp_RemFixedPoint,
43936#endif
43937#ifdef GET_INTERPFN_DISPATCHERS
43938PRESERVE_NONE
43939static bool Interp_RemSint8(InterpState &S, CodePtr &PC) {
43940 if (!Rem<PT_Sint8>(S, PC))
43941 return false;
43942#if USE_TAILCALLS
43943 MUSTTAIL return InterpNext(S, PC);
43944#else
43945 return true;
43946#endif
43947}
43948PRESERVE_NONE
43949static bool Interp_RemUint8(InterpState &S, CodePtr &PC) {
43950 if (!Rem<PT_Uint8>(S, PC))
43951 return false;
43952#if USE_TAILCALLS
43953 MUSTTAIL return InterpNext(S, PC);
43954#else
43955 return true;
43956#endif
43957}
43958PRESERVE_NONE
43959static bool Interp_RemSint16(InterpState &S, CodePtr &PC) {
43960 if (!Rem<PT_Sint16>(S, PC))
43961 return false;
43962#if USE_TAILCALLS
43963 MUSTTAIL return InterpNext(S, PC);
43964#else
43965 return true;
43966#endif
43967}
43968PRESERVE_NONE
43969static bool Interp_RemUint16(InterpState &S, CodePtr &PC) {
43970 if (!Rem<PT_Uint16>(S, PC))
43971 return false;
43972#if USE_TAILCALLS
43973 MUSTTAIL return InterpNext(S, PC);
43974#else
43975 return true;
43976#endif
43977}
43978PRESERVE_NONE
43979static bool Interp_RemSint32(InterpState &S, CodePtr &PC) {
43980 if (!Rem<PT_Sint32>(S, PC))
43981 return false;
43982#if USE_TAILCALLS
43983 MUSTTAIL return InterpNext(S, PC);
43984#else
43985 return true;
43986#endif
43987}
43988PRESERVE_NONE
43989static bool Interp_RemUint32(InterpState &S, CodePtr &PC) {
43990 if (!Rem<PT_Uint32>(S, PC))
43991 return false;
43992#if USE_TAILCALLS
43993 MUSTTAIL return InterpNext(S, PC);
43994#else
43995 return true;
43996#endif
43997}
43998PRESERVE_NONE
43999static bool Interp_RemSint64(InterpState &S, CodePtr &PC) {
44000 if (!Rem<PT_Sint64>(S, PC))
44001 return false;
44002#if USE_TAILCALLS
44003 MUSTTAIL return InterpNext(S, PC);
44004#else
44005 return true;
44006#endif
44007}
44008PRESERVE_NONE
44009static bool Interp_RemUint64(InterpState &S, CodePtr &PC) {
44010 if (!Rem<PT_Uint64>(S, PC))
44011 return false;
44012#if USE_TAILCALLS
44013 MUSTTAIL return InterpNext(S, PC);
44014#else
44015 return true;
44016#endif
44017}
44018PRESERVE_NONE
44019static bool Interp_RemIntAP(InterpState &S, CodePtr &PC) {
44020 if (!Rem<PT_IntAP>(S, PC))
44021 return false;
44022#if USE_TAILCALLS
44023 MUSTTAIL return InterpNext(S, PC);
44024#else
44025 return true;
44026#endif
44027}
44028PRESERVE_NONE
44029static bool Interp_RemIntAPS(InterpState &S, CodePtr &PC) {
44030 if (!Rem<PT_IntAPS>(S, PC))
44031 return false;
44032#if USE_TAILCALLS
44033 MUSTTAIL return InterpNext(S, PC);
44034#else
44035 return true;
44036#endif
44037}
44038PRESERVE_NONE
44039static bool Interp_RemFixedPoint(InterpState &S, CodePtr &PC) {
44040 if (!Rem<PT_FixedPoint>(S, PC))
44041 return false;
44042#if USE_TAILCALLS
44043 MUSTTAIL return InterpNext(S, PC);
44044#else
44045 return true;
44046#endif
44047}
44048#endif
44049#ifdef GET_DISASM
44050case OP_RemSint8:
44051 Text.Op = PrintName("RemSint8");
44052 break;
44053case OP_RemUint8:
44054 Text.Op = PrintName("RemUint8");
44055 break;
44056case OP_RemSint16:
44057 Text.Op = PrintName("RemSint16");
44058 break;
44059case OP_RemUint16:
44060 Text.Op = PrintName("RemUint16");
44061 break;
44062case OP_RemSint32:
44063 Text.Op = PrintName("RemSint32");
44064 break;
44065case OP_RemUint32:
44066 Text.Op = PrintName("RemUint32");
44067 break;
44068case OP_RemSint64:
44069 Text.Op = PrintName("RemSint64");
44070 break;
44071case OP_RemUint64:
44072 Text.Op = PrintName("RemUint64");
44073 break;
44074case OP_RemIntAP:
44075 Text.Op = PrintName("RemIntAP");
44076 break;
44077case OP_RemIntAPS:
44078 Text.Op = PrintName("RemIntAPS");
44079 break;
44080case OP_RemFixedPoint:
44081 Text.Op = PrintName("RemFixedPoint");
44082 break;
44083#endif
44084#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44085bool emitRemSint8(SourceInfo);
44086bool emitRemUint8(SourceInfo);
44087bool emitRemSint16(SourceInfo);
44088bool emitRemUint16(SourceInfo);
44089bool emitRemSint32(SourceInfo);
44090bool emitRemUint32(SourceInfo);
44091bool emitRemSint64(SourceInfo);
44092bool emitRemUint64(SourceInfo);
44093bool emitRemIntAP(SourceInfo);
44094bool emitRemIntAPS(SourceInfo);
44095bool emitRemFixedPoint(SourceInfo);
44096#endif
44097#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44098[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
44099#endif
44100#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44101bool
44102#if defined(GET_EVAL_IMPL)
44103EvalEmitter
44104#else
44105ByteCodeEmitter
44106#endif
44107::emitRem(PrimType T0, SourceInfo I) {
44108 switch (T0) {
44109 case PT_Sint8:
44110 return emitRemSint8(I);
44111 case PT_Uint8:
44112 return emitRemUint8(I);
44113 case PT_Sint16:
44114 return emitRemSint16(I);
44115 case PT_Uint16:
44116 return emitRemUint16(I);
44117 case PT_Sint32:
44118 return emitRemSint32(I);
44119 case PT_Uint32:
44120 return emitRemUint32(I);
44121 case PT_Sint64:
44122 return emitRemSint64(I);
44123 case PT_Uint64:
44124 return emitRemUint64(I);
44125 case PT_IntAP:
44126 return emitRemIntAP(I);
44127 case PT_IntAPS:
44128 return emitRemIntAPS(I);
44129 case PT_FixedPoint:
44130 return emitRemFixedPoint(I);
44131 default: llvm_unreachable("invalid type: emitRem");
44132 }
44133 llvm_unreachable("invalid enum value");
44134}
44135#endif
44136#ifdef GET_LINK_IMPL
44137bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
44138 return emitOp<>(OP_RemSint8, L);
44139}
44140bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
44141 return emitOp<>(OP_RemUint8, L);
44142}
44143bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
44144 return emitOp<>(OP_RemSint16, L);
44145}
44146bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
44147 return emitOp<>(OP_RemUint16, L);
44148}
44149bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
44150 return emitOp<>(OP_RemSint32, L);
44151}
44152bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
44153 return emitOp<>(OP_RemUint32, L);
44154}
44155bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
44156 return emitOp<>(OP_RemSint64, L);
44157}
44158bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
44159 return emitOp<>(OP_RemUint64, L);
44160}
44161bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
44162 return emitOp<>(OP_RemIntAP, L);
44163}
44164bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
44165 return emitOp<>(OP_RemIntAPS, L);
44166}
44167bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
44168 return emitOp<>(OP_RemFixedPoint, L);
44169}
44170#endif
44171#ifdef GET_EVAL_IMPL
44172bool EvalEmitter::emitRemSint8(SourceInfo L) {
44173 if (!isActive()) return true;
44174 CurrentSource = L;
44175 return Rem<PT_Sint8>(S, OpPC);
44176}
44177bool EvalEmitter::emitRemUint8(SourceInfo L) {
44178 if (!isActive()) return true;
44179 CurrentSource = L;
44180 return Rem<PT_Uint8>(S, OpPC);
44181}
44182bool EvalEmitter::emitRemSint16(SourceInfo L) {
44183 if (!isActive()) return true;
44184 CurrentSource = L;
44185 return Rem<PT_Sint16>(S, OpPC);
44186}
44187bool EvalEmitter::emitRemUint16(SourceInfo L) {
44188 if (!isActive()) return true;
44189 CurrentSource = L;
44190 return Rem<PT_Uint16>(S, OpPC);
44191}
44192bool EvalEmitter::emitRemSint32(SourceInfo L) {
44193 if (!isActive()) return true;
44194 CurrentSource = L;
44195 return Rem<PT_Sint32>(S, OpPC);
44196}
44197bool EvalEmitter::emitRemUint32(SourceInfo L) {
44198 if (!isActive()) return true;
44199 CurrentSource = L;
44200 return Rem<PT_Uint32>(S, OpPC);
44201}
44202bool EvalEmitter::emitRemSint64(SourceInfo L) {
44203 if (!isActive()) return true;
44204 CurrentSource = L;
44205 return Rem<PT_Sint64>(S, OpPC);
44206}
44207bool EvalEmitter::emitRemUint64(SourceInfo L) {
44208 if (!isActive()) return true;
44209 CurrentSource = L;
44210 return Rem<PT_Uint64>(S, OpPC);
44211}
44212bool EvalEmitter::emitRemIntAP(SourceInfo L) {
44213 if (!isActive()) return true;
44214 CurrentSource = L;
44215 return Rem<PT_IntAP>(S, OpPC);
44216}
44217bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
44218 if (!isActive()) return true;
44219 CurrentSource = L;
44220 return Rem<PT_IntAPS>(S, OpPC);
44221}
44222bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
44223 if (!isActive()) return true;
44224 CurrentSource = L;
44225 return Rem<PT_FixedPoint>(S, OpPC);
44226}
44227#endif
44228#ifdef GET_OPCODE_NAMES
44229OP_RetSint8,
44230OP_RetUint8,
44231OP_RetSint16,
44232OP_RetUint16,
44233OP_RetSint32,
44234OP_RetUint32,
44235OP_RetSint64,
44236OP_RetUint64,
44237OP_RetIntAP,
44238OP_RetIntAPS,
44239OP_RetBool,
44240OP_RetFixedPoint,
44241OP_RetPtr,
44242OP_RetMemberPtr,
44243OP_RetFloat,
44244#endif
44245#ifdef GET_INTERPFN_LIST
44246&Interp_RetSint8,
44247&Interp_RetUint8,
44248&Interp_RetSint16,
44249&Interp_RetUint16,
44250&Interp_RetSint32,
44251&Interp_RetUint32,
44252&Interp_RetSint64,
44253&Interp_RetUint64,
44254&Interp_RetIntAP,
44255&Interp_RetIntAPS,
44256&Interp_RetBool,
44257&Interp_RetFixedPoint,
44258&Interp_RetPtr,
44259&Interp_RetMemberPtr,
44260&Interp_RetFloat,
44261#endif
44262#ifdef GET_INTERPFN_DISPATCHERS
44263PRESERVE_NONE
44264static bool Interp_RetSint8(InterpState &S, CodePtr &PC) {
44265 MUSTTAIL return Ret<PT_Sint8>(S, PC);
44266}
44267PRESERVE_NONE
44268static bool Interp_RetUint8(InterpState &S, CodePtr &PC) {
44269 MUSTTAIL return Ret<PT_Uint8>(S, PC);
44270}
44271PRESERVE_NONE
44272static bool Interp_RetSint16(InterpState &S, CodePtr &PC) {
44273 MUSTTAIL return Ret<PT_Sint16>(S, PC);
44274}
44275PRESERVE_NONE
44276static bool Interp_RetUint16(InterpState &S, CodePtr &PC) {
44277 MUSTTAIL return Ret<PT_Uint16>(S, PC);
44278}
44279PRESERVE_NONE
44280static bool Interp_RetSint32(InterpState &S, CodePtr &PC) {
44281 MUSTTAIL return Ret<PT_Sint32>(S, PC);
44282}
44283PRESERVE_NONE
44284static bool Interp_RetUint32(InterpState &S, CodePtr &PC) {
44285 MUSTTAIL return Ret<PT_Uint32>(S, PC);
44286}
44287PRESERVE_NONE
44288static bool Interp_RetSint64(InterpState &S, CodePtr &PC) {
44289 MUSTTAIL return Ret<PT_Sint64>(S, PC);
44290}
44291PRESERVE_NONE
44292static bool Interp_RetUint64(InterpState &S, CodePtr &PC) {
44293 MUSTTAIL return Ret<PT_Uint64>(S, PC);
44294}
44295PRESERVE_NONE
44296static bool Interp_RetIntAP(InterpState &S, CodePtr &PC) {
44297 MUSTTAIL return Ret<PT_IntAP>(S, PC);
44298}
44299PRESERVE_NONE
44300static bool Interp_RetIntAPS(InterpState &S, CodePtr &PC) {
44301 MUSTTAIL return Ret<PT_IntAPS>(S, PC);
44302}
44303PRESERVE_NONE
44304static bool Interp_RetBool(InterpState &S, CodePtr &PC) {
44305 MUSTTAIL return Ret<PT_Bool>(S, PC);
44306}
44307PRESERVE_NONE
44308static bool Interp_RetFixedPoint(InterpState &S, CodePtr &PC) {
44309 MUSTTAIL return Ret<PT_FixedPoint>(S, PC);
44310}
44311PRESERVE_NONE
44312static bool Interp_RetPtr(InterpState &S, CodePtr &PC) {
44313 MUSTTAIL return Ret<PT_Ptr>(S, PC);
44314}
44315PRESERVE_NONE
44316static bool Interp_RetMemberPtr(InterpState &S, CodePtr &PC) {
44317 MUSTTAIL return Ret<PT_MemberPtr>(S, PC);
44318}
44319PRESERVE_NONE
44320static bool Interp_RetFloat(InterpState &S, CodePtr &PC) {
44321 MUSTTAIL return Ret<PT_Float>(S, PC);
44322}
44323#endif
44324#ifdef GET_DISASM
44325case OP_RetSint8:
44326 Text.Op = PrintName("RetSint8");
44327 break;
44328case OP_RetUint8:
44329 Text.Op = PrintName("RetUint8");
44330 break;
44331case OP_RetSint16:
44332 Text.Op = PrintName("RetSint16");
44333 break;
44334case OP_RetUint16:
44335 Text.Op = PrintName("RetUint16");
44336 break;
44337case OP_RetSint32:
44338 Text.Op = PrintName("RetSint32");
44339 break;
44340case OP_RetUint32:
44341 Text.Op = PrintName("RetUint32");
44342 break;
44343case OP_RetSint64:
44344 Text.Op = PrintName("RetSint64");
44345 break;
44346case OP_RetUint64:
44347 Text.Op = PrintName("RetUint64");
44348 break;
44349case OP_RetIntAP:
44350 Text.Op = PrintName("RetIntAP");
44351 break;
44352case OP_RetIntAPS:
44353 Text.Op = PrintName("RetIntAPS");
44354 break;
44355case OP_RetBool:
44356 Text.Op = PrintName("RetBool");
44357 break;
44358case OP_RetFixedPoint:
44359 Text.Op = PrintName("RetFixedPoint");
44360 break;
44361case OP_RetPtr:
44362 Text.Op = PrintName("RetPtr");
44363 break;
44364case OP_RetMemberPtr:
44365 Text.Op = PrintName("RetMemberPtr");
44366 break;
44367case OP_RetFloat:
44368 Text.Op = PrintName("RetFloat");
44369 break;
44370#endif
44371#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44372bool emitRetSint8(SourceInfo);
44373bool emitRetUint8(SourceInfo);
44374bool emitRetSint16(SourceInfo);
44375bool emitRetUint16(SourceInfo);
44376bool emitRetSint32(SourceInfo);
44377bool emitRetUint32(SourceInfo);
44378bool emitRetSint64(SourceInfo);
44379bool emitRetUint64(SourceInfo);
44380bool emitRetIntAP(SourceInfo);
44381bool emitRetIntAPS(SourceInfo);
44382bool emitRetBool(SourceInfo);
44383bool emitRetFixedPoint(SourceInfo);
44384bool emitRetPtr(SourceInfo);
44385bool emitRetMemberPtr(SourceInfo);
44386bool emitRetFloat(SourceInfo);
44387#if defined(GET_EVAL_PROTO)
44388template<PrimType>
44389bool emitRet(SourceInfo);
44390#endif
44391#endif
44392#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44393[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
44394#endif
44395#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44396bool
44397#if defined(GET_EVAL_IMPL)
44398EvalEmitter
44399#else
44400ByteCodeEmitter
44401#endif
44402::emitRet(PrimType T0, SourceInfo I) {
44403 switch (T0) {
44404 case PT_Sint8:
44405#ifdef GET_LINK_IMPL
44406 return emitRetSint8
44407#else
44408 return emitRet<PT_Sint8>
44409#endif
44410 (I);
44411 case PT_Uint8:
44412#ifdef GET_LINK_IMPL
44413 return emitRetUint8
44414#else
44415 return emitRet<PT_Uint8>
44416#endif
44417 (I);
44418 case PT_Sint16:
44419#ifdef GET_LINK_IMPL
44420 return emitRetSint16
44421#else
44422 return emitRet<PT_Sint16>
44423#endif
44424 (I);
44425 case PT_Uint16:
44426#ifdef GET_LINK_IMPL
44427 return emitRetUint16
44428#else
44429 return emitRet<PT_Uint16>
44430#endif
44431 (I);
44432 case PT_Sint32:
44433#ifdef GET_LINK_IMPL
44434 return emitRetSint32
44435#else
44436 return emitRet<PT_Sint32>
44437#endif
44438 (I);
44439 case PT_Uint32:
44440#ifdef GET_LINK_IMPL
44441 return emitRetUint32
44442#else
44443 return emitRet<PT_Uint32>
44444#endif
44445 (I);
44446 case PT_Sint64:
44447#ifdef GET_LINK_IMPL
44448 return emitRetSint64
44449#else
44450 return emitRet<PT_Sint64>
44451#endif
44452 (I);
44453 case PT_Uint64:
44454#ifdef GET_LINK_IMPL
44455 return emitRetUint64
44456#else
44457 return emitRet<PT_Uint64>
44458#endif
44459 (I);
44460 case PT_IntAP:
44461#ifdef GET_LINK_IMPL
44462 return emitRetIntAP
44463#else
44464 return emitRet<PT_IntAP>
44465#endif
44466 (I);
44467 case PT_IntAPS:
44468#ifdef GET_LINK_IMPL
44469 return emitRetIntAPS
44470#else
44471 return emitRet<PT_IntAPS>
44472#endif
44473 (I);
44474 case PT_Bool:
44475#ifdef GET_LINK_IMPL
44476 return emitRetBool
44477#else
44478 return emitRet<PT_Bool>
44479#endif
44480 (I);
44481 case PT_FixedPoint:
44482#ifdef GET_LINK_IMPL
44483 return emitRetFixedPoint
44484#else
44485 return emitRet<PT_FixedPoint>
44486#endif
44487 (I);
44488 case PT_Ptr:
44489#ifdef GET_LINK_IMPL
44490 return emitRetPtr
44491#else
44492 return emitRet<PT_Ptr>
44493#endif
44494 (I);
44495 case PT_MemberPtr:
44496#ifdef GET_LINK_IMPL
44497 return emitRetMemberPtr
44498#else
44499 return emitRet<PT_MemberPtr>
44500#endif
44501 (I);
44502 case PT_Float:
44503#ifdef GET_LINK_IMPL
44504 return emitRetFloat
44505#else
44506 return emitRet<PT_Float>
44507#endif
44508 (I);
44509 }
44510 llvm_unreachable("invalid enum value");
44511}
44512#endif
44513#ifdef GET_LINK_IMPL
44514bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
44515 return emitOp<>(OP_RetSint8, L);
44516}
44517bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
44518 return emitOp<>(OP_RetUint8, L);
44519}
44520bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
44521 return emitOp<>(OP_RetSint16, L);
44522}
44523bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
44524 return emitOp<>(OP_RetUint16, L);
44525}
44526bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
44527 return emitOp<>(OP_RetSint32, L);
44528}
44529bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
44530 return emitOp<>(OP_RetUint32, L);
44531}
44532bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
44533 return emitOp<>(OP_RetSint64, L);
44534}
44535bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
44536 return emitOp<>(OP_RetUint64, L);
44537}
44538bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
44539 return emitOp<>(OP_RetIntAP, L);
44540}
44541bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
44542 return emitOp<>(OP_RetIntAPS, L);
44543}
44544bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
44545 return emitOp<>(OP_RetBool, L);
44546}
44547bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
44548 return emitOp<>(OP_RetFixedPoint, L);
44549}
44550bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
44551 return emitOp<>(OP_RetPtr, L);
44552}
44553bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
44554 return emitOp<>(OP_RetMemberPtr, L);
44555}
44556bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
44557 return emitOp<>(OP_RetFloat, L);
44558}
44559#endif
44560#ifdef GET_OPCODE_NAMES
44561OP_RetValue,
44562#endif
44563#ifdef GET_INTERPFN_LIST
44564&Interp_RetValue,
44565#endif
44566#ifdef GET_INTERPFN_DISPATCHERS
44567PRESERVE_NONE
44568static bool Interp_RetValue(InterpState &S, CodePtr &PC) {
44569 MUSTTAIL return RetValue(S, PC);
44570}
44571#endif
44572#ifdef GET_DISASM
44573case OP_RetValue:
44574 Text.Op = PrintName("RetValue");
44575 break;
44576#endif
44577#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44578bool emitRetValue(SourceInfo);
44579#endif
44580#ifdef GET_LINK_IMPL
44581bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
44582 return emitOp<>(OP_RetValue, L);
44583}
44584#endif
44585#ifdef GET_OPCODE_NAMES
44586OP_RetVoid,
44587#endif
44588#ifdef GET_INTERPFN_LIST
44589&Interp_RetVoid,
44590#endif
44591#ifdef GET_INTERPFN_DISPATCHERS
44592PRESERVE_NONE
44593static bool Interp_RetVoid(InterpState &S, CodePtr &PC) {
44594 MUSTTAIL return RetVoid(S, PC);
44595}
44596#endif
44597#ifdef GET_DISASM
44598case OP_RetVoid:
44599 Text.Op = PrintName("RetVoid");
44600 break;
44601#endif
44602#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44603bool emitRetVoid(SourceInfo);
44604#endif
44605#ifdef GET_LINK_IMPL
44606bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
44607 return emitOp<>(OP_RetVoid, L);
44608}
44609#endif
44610#ifdef GET_OPCODE_NAMES
44611OP_SetFieldSint8,
44612OP_SetFieldUint8,
44613OP_SetFieldSint16,
44614OP_SetFieldUint16,
44615OP_SetFieldSint32,
44616OP_SetFieldUint32,
44617OP_SetFieldSint64,
44618OP_SetFieldUint64,
44619OP_SetFieldIntAP,
44620OP_SetFieldIntAPS,
44621OP_SetFieldBool,
44622OP_SetFieldFixedPoint,
44623OP_SetFieldPtr,
44624OP_SetFieldMemberPtr,
44625OP_SetFieldFloat,
44626#endif
44627#ifdef GET_INTERPFN_LIST
44628&Interp_SetFieldSint8,
44629&Interp_SetFieldUint8,
44630&Interp_SetFieldSint16,
44631&Interp_SetFieldUint16,
44632&Interp_SetFieldSint32,
44633&Interp_SetFieldUint32,
44634&Interp_SetFieldSint64,
44635&Interp_SetFieldUint64,
44636&Interp_SetFieldIntAP,
44637&Interp_SetFieldIntAPS,
44638&Interp_SetFieldBool,
44639&Interp_SetFieldFixedPoint,
44640&Interp_SetFieldPtr,
44641&Interp_SetFieldMemberPtr,
44642&Interp_SetFieldFloat,
44643#endif
44644#ifdef GET_INTERPFN_DISPATCHERS
44645PRESERVE_NONE
44646static bool Interp_SetFieldSint8(InterpState &S, CodePtr &PC) {
44647 {
44648 CodePtr OpPC = PC;
44649 const auto V0 = ReadArg<uint32_t>(S, PC);
44650 if (!SetField<PT_Sint8>(S, OpPC, V0))
44651 return false;
44652 }
44653#if USE_TAILCALLS
44654 MUSTTAIL return InterpNext(S, PC);
44655#else
44656 return true;
44657#endif
44658}
44659PRESERVE_NONE
44660static bool Interp_SetFieldUint8(InterpState &S, CodePtr &PC) {
44661 {
44662 CodePtr OpPC = PC;
44663 const auto V0 = ReadArg<uint32_t>(S, PC);
44664 if (!SetField<PT_Uint8>(S, OpPC, V0))
44665 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_SetFieldSint16(InterpState &S, CodePtr &PC) {
44675 {
44676 CodePtr OpPC = PC;
44677 const auto V0 = ReadArg<uint32_t>(S, PC);
44678 if (!SetField<PT_Sint16>(S, OpPC, V0))
44679 return false;
44680 }
44681#if USE_TAILCALLS
44682 MUSTTAIL return InterpNext(S, PC);
44683#else
44684 return true;
44685#endif
44686}
44687PRESERVE_NONE
44688static bool Interp_SetFieldUint16(InterpState &S, CodePtr &PC) {
44689 {
44690 CodePtr OpPC = PC;
44691 const auto V0 = ReadArg<uint32_t>(S, PC);
44692 if (!SetField<PT_Uint16>(S, OpPC, V0))
44693 return false;
44694 }
44695#if USE_TAILCALLS
44696 MUSTTAIL return InterpNext(S, PC);
44697#else
44698 return true;
44699#endif
44700}
44701PRESERVE_NONE
44702static bool Interp_SetFieldSint32(InterpState &S, CodePtr &PC) {
44703 {
44704 CodePtr OpPC = PC;
44705 const auto V0 = ReadArg<uint32_t>(S, PC);
44706 if (!SetField<PT_Sint32>(S, OpPC, V0))
44707 return false;
44708 }
44709#if USE_TAILCALLS
44710 MUSTTAIL return InterpNext(S, PC);
44711#else
44712 return true;
44713#endif
44714}
44715PRESERVE_NONE
44716static bool Interp_SetFieldUint32(InterpState &S, CodePtr &PC) {
44717 {
44718 CodePtr OpPC = PC;
44719 const auto V0 = ReadArg<uint32_t>(S, PC);
44720 if (!SetField<PT_Uint32>(S, OpPC, V0))
44721 return false;
44722 }
44723#if USE_TAILCALLS
44724 MUSTTAIL return InterpNext(S, PC);
44725#else
44726 return true;
44727#endif
44728}
44729PRESERVE_NONE
44730static bool Interp_SetFieldSint64(InterpState &S, CodePtr &PC) {
44731 {
44732 CodePtr OpPC = PC;
44733 const auto V0 = ReadArg<uint32_t>(S, PC);
44734 if (!SetField<PT_Sint64>(S, OpPC, V0))
44735 return false;
44736 }
44737#if USE_TAILCALLS
44738 MUSTTAIL return InterpNext(S, PC);
44739#else
44740 return true;
44741#endif
44742}
44743PRESERVE_NONE
44744static bool Interp_SetFieldUint64(InterpState &S, CodePtr &PC) {
44745 {
44746 CodePtr OpPC = PC;
44747 const auto V0 = ReadArg<uint32_t>(S, PC);
44748 if (!SetField<PT_Uint64>(S, OpPC, V0))
44749 return false;
44750 }
44751#if USE_TAILCALLS
44752 MUSTTAIL return InterpNext(S, PC);
44753#else
44754 return true;
44755#endif
44756}
44757PRESERVE_NONE
44758static bool Interp_SetFieldIntAP(InterpState &S, CodePtr &PC) {
44759 {
44760 CodePtr OpPC = PC;
44761 const auto V0 = ReadArg<uint32_t>(S, PC);
44762 if (!SetField<PT_IntAP>(S, OpPC, V0))
44763 return false;
44764 }
44765#if USE_TAILCALLS
44766 MUSTTAIL return InterpNext(S, PC);
44767#else
44768 return true;
44769#endif
44770}
44771PRESERVE_NONE
44772static bool Interp_SetFieldIntAPS(InterpState &S, CodePtr &PC) {
44773 {
44774 CodePtr OpPC = PC;
44775 const auto V0 = ReadArg<uint32_t>(S, PC);
44776 if (!SetField<PT_IntAPS>(S, OpPC, V0))
44777 return false;
44778 }
44779#if USE_TAILCALLS
44780 MUSTTAIL return InterpNext(S, PC);
44781#else
44782 return true;
44783#endif
44784}
44785PRESERVE_NONE
44786static bool Interp_SetFieldBool(InterpState &S, CodePtr &PC) {
44787 {
44788 CodePtr OpPC = PC;
44789 const auto V0 = ReadArg<uint32_t>(S, PC);
44790 if (!SetField<PT_Bool>(S, OpPC, V0))
44791 return false;
44792 }
44793#if USE_TAILCALLS
44794 MUSTTAIL return InterpNext(S, PC);
44795#else
44796 return true;
44797#endif
44798}
44799PRESERVE_NONE
44800static bool Interp_SetFieldFixedPoint(InterpState &S, CodePtr &PC) {
44801 {
44802 CodePtr OpPC = PC;
44803 const auto V0 = ReadArg<uint32_t>(S, PC);
44804 if (!SetField<PT_FixedPoint>(S, OpPC, V0))
44805 return false;
44806 }
44807#if USE_TAILCALLS
44808 MUSTTAIL return InterpNext(S, PC);
44809#else
44810 return true;
44811#endif
44812}
44813PRESERVE_NONE
44814static bool Interp_SetFieldPtr(InterpState &S, CodePtr &PC) {
44815 {
44816 CodePtr OpPC = PC;
44817 const auto V0 = ReadArg<uint32_t>(S, PC);
44818 if (!SetField<PT_Ptr>(S, OpPC, V0))
44819 return false;
44820 }
44821#if USE_TAILCALLS
44822 MUSTTAIL return InterpNext(S, PC);
44823#else
44824 return true;
44825#endif
44826}
44827PRESERVE_NONE
44828static bool Interp_SetFieldMemberPtr(InterpState &S, CodePtr &PC) {
44829 {
44830 CodePtr OpPC = PC;
44831 const auto V0 = ReadArg<uint32_t>(S, PC);
44832 if (!SetField<PT_MemberPtr>(S, OpPC, V0))
44833 return false;
44834 }
44835#if USE_TAILCALLS
44836 MUSTTAIL return InterpNext(S, PC);
44837#else
44838 return true;
44839#endif
44840}
44841PRESERVE_NONE
44842static bool Interp_SetFieldFloat(InterpState &S, CodePtr &PC) {
44843 {
44844 CodePtr OpPC = PC;
44845 const auto V0 = ReadArg<uint32_t>(S, PC);
44846 if (!SetField<PT_Float>(S, OpPC, V0))
44847 return false;
44848 }
44849#if USE_TAILCALLS
44850 MUSTTAIL return InterpNext(S, PC);
44851#else
44852 return true;
44853#endif
44854}
44855#endif
44856#ifdef GET_DISASM
44857case OP_SetFieldSint8:
44858 Text.Op = PrintName("SetFieldSint8");
44859 Text.Args.push_back(printArg<uint32_t>(P, PC));
44860 break;
44861case OP_SetFieldUint8:
44862 Text.Op = PrintName("SetFieldUint8");
44863 Text.Args.push_back(printArg<uint32_t>(P, PC));
44864 break;
44865case OP_SetFieldSint16:
44866 Text.Op = PrintName("SetFieldSint16");
44867 Text.Args.push_back(printArg<uint32_t>(P, PC));
44868 break;
44869case OP_SetFieldUint16:
44870 Text.Op = PrintName("SetFieldUint16");
44871 Text.Args.push_back(printArg<uint32_t>(P, PC));
44872 break;
44873case OP_SetFieldSint32:
44874 Text.Op = PrintName("SetFieldSint32");
44875 Text.Args.push_back(printArg<uint32_t>(P, PC));
44876 break;
44877case OP_SetFieldUint32:
44878 Text.Op = PrintName("SetFieldUint32");
44879 Text.Args.push_back(printArg<uint32_t>(P, PC));
44880 break;
44881case OP_SetFieldSint64:
44882 Text.Op = PrintName("SetFieldSint64");
44883 Text.Args.push_back(printArg<uint32_t>(P, PC));
44884 break;
44885case OP_SetFieldUint64:
44886 Text.Op = PrintName("SetFieldUint64");
44887 Text.Args.push_back(printArg<uint32_t>(P, PC));
44888 break;
44889case OP_SetFieldIntAP:
44890 Text.Op = PrintName("SetFieldIntAP");
44891 Text.Args.push_back(printArg<uint32_t>(P, PC));
44892 break;
44893case OP_SetFieldIntAPS:
44894 Text.Op = PrintName("SetFieldIntAPS");
44895 Text.Args.push_back(printArg<uint32_t>(P, PC));
44896 break;
44897case OP_SetFieldBool:
44898 Text.Op = PrintName("SetFieldBool");
44899 Text.Args.push_back(printArg<uint32_t>(P, PC));
44900 break;
44901case OP_SetFieldFixedPoint:
44902 Text.Op = PrintName("SetFieldFixedPoint");
44903 Text.Args.push_back(printArg<uint32_t>(P, PC));
44904 break;
44905case OP_SetFieldPtr:
44906 Text.Op = PrintName("SetFieldPtr");
44907 Text.Args.push_back(printArg<uint32_t>(P, PC));
44908 break;
44909case OP_SetFieldMemberPtr:
44910 Text.Op = PrintName("SetFieldMemberPtr");
44911 Text.Args.push_back(printArg<uint32_t>(P, PC));
44912 break;
44913case OP_SetFieldFloat:
44914 Text.Op = PrintName("SetFieldFloat");
44915 Text.Args.push_back(printArg<uint32_t>(P, PC));
44916 break;
44917#endif
44918#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44919bool emitSetFieldSint8( uint32_t , SourceInfo);
44920bool emitSetFieldUint8( uint32_t , SourceInfo);
44921bool emitSetFieldSint16( uint32_t , SourceInfo);
44922bool emitSetFieldUint16( uint32_t , SourceInfo);
44923bool emitSetFieldSint32( uint32_t , SourceInfo);
44924bool emitSetFieldUint32( uint32_t , SourceInfo);
44925bool emitSetFieldSint64( uint32_t , SourceInfo);
44926bool emitSetFieldUint64( uint32_t , SourceInfo);
44927bool emitSetFieldIntAP( uint32_t , SourceInfo);
44928bool emitSetFieldIntAPS( uint32_t , SourceInfo);
44929bool emitSetFieldBool( uint32_t , SourceInfo);
44930bool emitSetFieldFixedPoint( uint32_t , SourceInfo);
44931bool emitSetFieldPtr( uint32_t , SourceInfo);
44932bool emitSetFieldMemberPtr( uint32_t , SourceInfo);
44933bool emitSetFieldFloat( uint32_t , SourceInfo);
44934#endif
44935#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44936[[nodiscard]] bool emitSetField(PrimType, uint32_t, SourceInfo I);
44937#endif
44938#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44939bool
44940#if defined(GET_EVAL_IMPL)
44941EvalEmitter
44942#else
44943ByteCodeEmitter
44944#endif
44945::emitSetField(PrimType T0, uint32_t A0, SourceInfo I) {
44946 switch (T0) {
44947 case PT_Sint8:
44948 return emitSetFieldSint8(A0, I);
44949 case PT_Uint8:
44950 return emitSetFieldUint8(A0, I);
44951 case PT_Sint16:
44952 return emitSetFieldSint16(A0, I);
44953 case PT_Uint16:
44954 return emitSetFieldUint16(A0, I);
44955 case PT_Sint32:
44956 return emitSetFieldSint32(A0, I);
44957 case PT_Uint32:
44958 return emitSetFieldUint32(A0, I);
44959 case PT_Sint64:
44960 return emitSetFieldSint64(A0, I);
44961 case PT_Uint64:
44962 return emitSetFieldUint64(A0, I);
44963 case PT_IntAP:
44964 return emitSetFieldIntAP(A0, I);
44965 case PT_IntAPS:
44966 return emitSetFieldIntAPS(A0, I);
44967 case PT_Bool:
44968 return emitSetFieldBool(A0, I);
44969 case PT_FixedPoint:
44970 return emitSetFieldFixedPoint(A0, I);
44971 case PT_Ptr:
44972 return emitSetFieldPtr(A0, I);
44973 case PT_MemberPtr:
44974 return emitSetFieldMemberPtr(A0, I);
44975 case PT_Float:
44976 return emitSetFieldFloat(A0, I);
44977 }
44978 llvm_unreachable("invalid enum value");
44979}
44980#endif
44981#ifdef GET_LINK_IMPL
44982bool ByteCodeEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
44983 return emitOp<uint32_t>(OP_SetFieldSint8, A0, L);
44984}
44985bool ByteCodeEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
44986 return emitOp<uint32_t>(OP_SetFieldUint8, A0, L);
44987}
44988bool ByteCodeEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
44989 return emitOp<uint32_t>(OP_SetFieldSint16, A0, L);
44990}
44991bool ByteCodeEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
44992 return emitOp<uint32_t>(OP_SetFieldUint16, A0, L);
44993}
44994bool ByteCodeEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
44995 return emitOp<uint32_t>(OP_SetFieldSint32, A0, L);
44996}
44997bool ByteCodeEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
44998 return emitOp<uint32_t>(OP_SetFieldUint32, A0, L);
44999}
45000bool ByteCodeEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
45001 return emitOp<uint32_t>(OP_SetFieldSint64, A0, L);
45002}
45003bool ByteCodeEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
45004 return emitOp<uint32_t>(OP_SetFieldUint64, A0, L);
45005}
45006bool ByteCodeEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
45007 return emitOp<uint32_t>(OP_SetFieldIntAP, A0, L);
45008}
45009bool ByteCodeEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
45010 return emitOp<uint32_t>(OP_SetFieldIntAPS, A0, L);
45011}
45012bool ByteCodeEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
45013 return emitOp<uint32_t>(OP_SetFieldBool, A0, L);
45014}
45015bool ByteCodeEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
45016 return emitOp<uint32_t>(OP_SetFieldFixedPoint, A0, L);
45017}
45018bool ByteCodeEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
45019 return emitOp<uint32_t>(OP_SetFieldPtr, A0, L);
45020}
45021bool ByteCodeEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
45022 return emitOp<uint32_t>(OP_SetFieldMemberPtr, A0, L);
45023}
45024bool ByteCodeEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
45025 return emitOp<uint32_t>(OP_SetFieldFloat, A0, L);
45026}
45027#endif
45028#ifdef GET_EVAL_IMPL
45029bool EvalEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
45030 if (!isActive()) return true;
45031 CurrentSource = L;
45032 return SetField<PT_Sint8>(S, OpPC, A0);
45033}
45034bool EvalEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
45035 if (!isActive()) return true;
45036 CurrentSource = L;
45037 return SetField<PT_Uint8>(S, OpPC, A0);
45038}
45039bool EvalEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
45040 if (!isActive()) return true;
45041 CurrentSource = L;
45042 return SetField<PT_Sint16>(S, OpPC, A0);
45043}
45044bool EvalEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
45045 if (!isActive()) return true;
45046 CurrentSource = L;
45047 return SetField<PT_Uint16>(S, OpPC, A0);
45048}
45049bool EvalEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
45050 if (!isActive()) return true;
45051 CurrentSource = L;
45052 return SetField<PT_Sint32>(S, OpPC, A0);
45053}
45054bool EvalEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
45055 if (!isActive()) return true;
45056 CurrentSource = L;
45057 return SetField<PT_Uint32>(S, OpPC, A0);
45058}
45059bool EvalEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
45060 if (!isActive()) return true;
45061 CurrentSource = L;
45062 return SetField<PT_Sint64>(S, OpPC, A0);
45063}
45064bool EvalEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
45065 if (!isActive()) return true;
45066 CurrentSource = L;
45067 return SetField<PT_Uint64>(S, OpPC, A0);
45068}
45069bool EvalEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
45070 if (!isActive()) return true;
45071 CurrentSource = L;
45072 return SetField<PT_IntAP>(S, OpPC, A0);
45073}
45074bool EvalEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
45075 if (!isActive()) return true;
45076 CurrentSource = L;
45077 return SetField<PT_IntAPS>(S, OpPC, A0);
45078}
45079bool EvalEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
45080 if (!isActive()) return true;
45081 CurrentSource = L;
45082 return SetField<PT_Bool>(S, OpPC, A0);
45083}
45084bool EvalEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
45085 if (!isActive()) return true;
45086 CurrentSource = L;
45087 return SetField<PT_FixedPoint>(S, OpPC, A0);
45088}
45089bool EvalEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
45090 if (!isActive()) return true;
45091 CurrentSource = L;
45092 return SetField<PT_Ptr>(S, OpPC, A0);
45093}
45094bool EvalEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
45095 if (!isActive()) return true;
45096 CurrentSource = L;
45097 return SetField<PT_MemberPtr>(S, OpPC, A0);
45098}
45099bool EvalEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
45100 if (!isActive()) return true;
45101 CurrentSource = L;
45102 return SetField<PT_Float>(S, OpPC, A0);
45103}
45104#endif
45105#ifdef GET_OPCODE_NAMES
45106OP_SetGlobalSint8,
45107OP_SetGlobalUint8,
45108OP_SetGlobalSint16,
45109OP_SetGlobalUint16,
45110OP_SetGlobalSint32,
45111OP_SetGlobalUint32,
45112OP_SetGlobalSint64,
45113OP_SetGlobalUint64,
45114OP_SetGlobalIntAP,
45115OP_SetGlobalIntAPS,
45116OP_SetGlobalBool,
45117OP_SetGlobalFixedPoint,
45118OP_SetGlobalPtr,
45119OP_SetGlobalMemberPtr,
45120OP_SetGlobalFloat,
45121#endif
45122#ifdef GET_INTERPFN_LIST
45123&Interp_SetGlobalSint8,
45124&Interp_SetGlobalUint8,
45125&Interp_SetGlobalSint16,
45126&Interp_SetGlobalUint16,
45127&Interp_SetGlobalSint32,
45128&Interp_SetGlobalUint32,
45129&Interp_SetGlobalSint64,
45130&Interp_SetGlobalUint64,
45131&Interp_SetGlobalIntAP,
45132&Interp_SetGlobalIntAPS,
45133&Interp_SetGlobalBool,
45134&Interp_SetGlobalFixedPoint,
45135&Interp_SetGlobalPtr,
45136&Interp_SetGlobalMemberPtr,
45137&Interp_SetGlobalFloat,
45138#endif
45139#ifdef GET_INTERPFN_DISPATCHERS
45140PRESERVE_NONE
45141static bool Interp_SetGlobalSint8(InterpState &S, CodePtr &PC) {
45142 {
45143 CodePtr OpPC = PC;
45144 const auto V0 = ReadArg<uint32_t>(S, PC);
45145 if (!SetGlobal<PT_Sint8>(S, OpPC, V0))
45146 return false;
45147 }
45148#if USE_TAILCALLS
45149 MUSTTAIL return InterpNext(S, PC);
45150#else
45151 return true;
45152#endif
45153}
45154PRESERVE_NONE
45155static bool Interp_SetGlobalUint8(InterpState &S, CodePtr &PC) {
45156 {
45157 CodePtr OpPC = PC;
45158 const auto V0 = ReadArg<uint32_t>(S, PC);
45159 if (!SetGlobal<PT_Uint8>(S, OpPC, V0))
45160 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_SetGlobalSint16(InterpState &S, CodePtr &PC) {
45170 {
45171 CodePtr OpPC = PC;
45172 const auto V0 = ReadArg<uint32_t>(S, PC);
45173 if (!SetGlobal<PT_Sint16>(S, OpPC, V0))
45174 return false;
45175 }
45176#if USE_TAILCALLS
45177 MUSTTAIL return InterpNext(S, PC);
45178#else
45179 return true;
45180#endif
45181}
45182PRESERVE_NONE
45183static bool Interp_SetGlobalUint16(InterpState &S, CodePtr &PC) {
45184 {
45185 CodePtr OpPC = PC;
45186 const auto V0 = ReadArg<uint32_t>(S, PC);
45187 if (!SetGlobal<PT_Uint16>(S, OpPC, V0))
45188 return false;
45189 }
45190#if USE_TAILCALLS
45191 MUSTTAIL return InterpNext(S, PC);
45192#else
45193 return true;
45194#endif
45195}
45196PRESERVE_NONE
45197static bool Interp_SetGlobalSint32(InterpState &S, CodePtr &PC) {
45198 {
45199 CodePtr OpPC = PC;
45200 const auto V0 = ReadArg<uint32_t>(S, PC);
45201 if (!SetGlobal<PT_Sint32>(S, OpPC, V0))
45202 return false;
45203 }
45204#if USE_TAILCALLS
45205 MUSTTAIL return InterpNext(S, PC);
45206#else
45207 return true;
45208#endif
45209}
45210PRESERVE_NONE
45211static bool Interp_SetGlobalUint32(InterpState &S, CodePtr &PC) {
45212 {
45213 CodePtr OpPC = PC;
45214 const auto V0 = ReadArg<uint32_t>(S, PC);
45215 if (!SetGlobal<PT_Uint32>(S, OpPC, V0))
45216 return false;
45217 }
45218#if USE_TAILCALLS
45219 MUSTTAIL return InterpNext(S, PC);
45220#else
45221 return true;
45222#endif
45223}
45224PRESERVE_NONE
45225static bool Interp_SetGlobalSint64(InterpState &S, CodePtr &PC) {
45226 {
45227 CodePtr OpPC = PC;
45228 const auto V0 = ReadArg<uint32_t>(S, PC);
45229 if (!SetGlobal<PT_Sint64>(S, OpPC, V0))
45230 return false;
45231 }
45232#if USE_TAILCALLS
45233 MUSTTAIL return InterpNext(S, PC);
45234#else
45235 return true;
45236#endif
45237}
45238PRESERVE_NONE
45239static bool Interp_SetGlobalUint64(InterpState &S, CodePtr &PC) {
45240 {
45241 CodePtr OpPC = PC;
45242 const auto V0 = ReadArg<uint32_t>(S, PC);
45243 if (!SetGlobal<PT_Uint64>(S, OpPC, V0))
45244 return false;
45245 }
45246#if USE_TAILCALLS
45247 MUSTTAIL return InterpNext(S, PC);
45248#else
45249 return true;
45250#endif
45251}
45252PRESERVE_NONE
45253static bool Interp_SetGlobalIntAP(InterpState &S, CodePtr &PC) {
45254 {
45255 CodePtr OpPC = PC;
45256 const auto V0 = ReadArg<uint32_t>(S, PC);
45257 if (!SetGlobal<PT_IntAP>(S, OpPC, V0))
45258 return false;
45259 }
45260#if USE_TAILCALLS
45261 MUSTTAIL return InterpNext(S, PC);
45262#else
45263 return true;
45264#endif
45265}
45266PRESERVE_NONE
45267static bool Interp_SetGlobalIntAPS(InterpState &S, CodePtr &PC) {
45268 {
45269 CodePtr OpPC = PC;
45270 const auto V0 = ReadArg<uint32_t>(S, PC);
45271 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0))
45272 return false;
45273 }
45274#if USE_TAILCALLS
45275 MUSTTAIL return InterpNext(S, PC);
45276#else
45277 return true;
45278#endif
45279}
45280PRESERVE_NONE
45281static bool Interp_SetGlobalBool(InterpState &S, CodePtr &PC) {
45282 {
45283 CodePtr OpPC = PC;
45284 const auto V0 = ReadArg<uint32_t>(S, PC);
45285 if (!SetGlobal<PT_Bool>(S, OpPC, V0))
45286 return false;
45287 }
45288#if USE_TAILCALLS
45289 MUSTTAIL return InterpNext(S, PC);
45290#else
45291 return true;
45292#endif
45293}
45294PRESERVE_NONE
45295static bool Interp_SetGlobalFixedPoint(InterpState &S, CodePtr &PC) {
45296 {
45297 CodePtr OpPC = PC;
45298 const auto V0 = ReadArg<uint32_t>(S, PC);
45299 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0))
45300 return false;
45301 }
45302#if USE_TAILCALLS
45303 MUSTTAIL return InterpNext(S, PC);
45304#else
45305 return true;
45306#endif
45307}
45308PRESERVE_NONE
45309static bool Interp_SetGlobalPtr(InterpState &S, CodePtr &PC) {
45310 {
45311 CodePtr OpPC = PC;
45312 const auto V0 = ReadArg<uint32_t>(S, PC);
45313 if (!SetGlobal<PT_Ptr>(S, OpPC, V0))
45314 return false;
45315 }
45316#if USE_TAILCALLS
45317 MUSTTAIL return InterpNext(S, PC);
45318#else
45319 return true;
45320#endif
45321}
45322PRESERVE_NONE
45323static bool Interp_SetGlobalMemberPtr(InterpState &S, CodePtr &PC) {
45324 {
45325 CodePtr OpPC = PC;
45326 const auto V0 = ReadArg<uint32_t>(S, PC);
45327 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0))
45328 return false;
45329 }
45330#if USE_TAILCALLS
45331 MUSTTAIL return InterpNext(S, PC);
45332#else
45333 return true;
45334#endif
45335}
45336PRESERVE_NONE
45337static bool Interp_SetGlobalFloat(InterpState &S, CodePtr &PC) {
45338 {
45339 CodePtr OpPC = PC;
45340 const auto V0 = ReadArg<uint32_t>(S, PC);
45341 if (!SetGlobal<PT_Float>(S, OpPC, V0))
45342 return false;
45343 }
45344#if USE_TAILCALLS
45345 MUSTTAIL return InterpNext(S, PC);
45346#else
45347 return true;
45348#endif
45349}
45350#endif
45351#ifdef GET_DISASM
45352case OP_SetGlobalSint8:
45353 Text.Op = PrintName("SetGlobalSint8");
45354 Text.Args.push_back(printArg<uint32_t>(P, PC));
45355 break;
45356case OP_SetGlobalUint8:
45357 Text.Op = PrintName("SetGlobalUint8");
45358 Text.Args.push_back(printArg<uint32_t>(P, PC));
45359 break;
45360case OP_SetGlobalSint16:
45361 Text.Op = PrintName("SetGlobalSint16");
45362 Text.Args.push_back(printArg<uint32_t>(P, PC));
45363 break;
45364case OP_SetGlobalUint16:
45365 Text.Op = PrintName("SetGlobalUint16");
45366 Text.Args.push_back(printArg<uint32_t>(P, PC));
45367 break;
45368case OP_SetGlobalSint32:
45369 Text.Op = PrintName("SetGlobalSint32");
45370 Text.Args.push_back(printArg<uint32_t>(P, PC));
45371 break;
45372case OP_SetGlobalUint32:
45373 Text.Op = PrintName("SetGlobalUint32");
45374 Text.Args.push_back(printArg<uint32_t>(P, PC));
45375 break;
45376case OP_SetGlobalSint64:
45377 Text.Op = PrintName("SetGlobalSint64");
45378 Text.Args.push_back(printArg<uint32_t>(P, PC));
45379 break;
45380case OP_SetGlobalUint64:
45381 Text.Op = PrintName("SetGlobalUint64");
45382 Text.Args.push_back(printArg<uint32_t>(P, PC));
45383 break;
45384case OP_SetGlobalIntAP:
45385 Text.Op = PrintName("SetGlobalIntAP");
45386 Text.Args.push_back(printArg<uint32_t>(P, PC));
45387 break;
45388case OP_SetGlobalIntAPS:
45389 Text.Op = PrintName("SetGlobalIntAPS");
45390 Text.Args.push_back(printArg<uint32_t>(P, PC));
45391 break;
45392case OP_SetGlobalBool:
45393 Text.Op = PrintName("SetGlobalBool");
45394 Text.Args.push_back(printArg<uint32_t>(P, PC));
45395 break;
45396case OP_SetGlobalFixedPoint:
45397 Text.Op = PrintName("SetGlobalFixedPoint");
45398 Text.Args.push_back(printArg<uint32_t>(P, PC));
45399 break;
45400case OP_SetGlobalPtr:
45401 Text.Op = PrintName("SetGlobalPtr");
45402 Text.Args.push_back(printArg<uint32_t>(P, PC));
45403 break;
45404case OP_SetGlobalMemberPtr:
45405 Text.Op = PrintName("SetGlobalMemberPtr");
45406 Text.Args.push_back(printArg<uint32_t>(P, PC));
45407 break;
45408case OP_SetGlobalFloat:
45409 Text.Op = PrintName("SetGlobalFloat");
45410 Text.Args.push_back(printArg<uint32_t>(P, PC));
45411 break;
45412#endif
45413#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45414bool emitSetGlobalSint8( uint32_t , SourceInfo);
45415bool emitSetGlobalUint8( uint32_t , SourceInfo);
45416bool emitSetGlobalSint16( uint32_t , SourceInfo);
45417bool emitSetGlobalUint16( uint32_t , SourceInfo);
45418bool emitSetGlobalSint32( uint32_t , SourceInfo);
45419bool emitSetGlobalUint32( uint32_t , SourceInfo);
45420bool emitSetGlobalSint64( uint32_t , SourceInfo);
45421bool emitSetGlobalUint64( uint32_t , SourceInfo);
45422bool emitSetGlobalIntAP( uint32_t , SourceInfo);
45423bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
45424bool emitSetGlobalBool( uint32_t , SourceInfo);
45425bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
45426bool emitSetGlobalPtr( uint32_t , SourceInfo);
45427bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
45428bool emitSetGlobalFloat( uint32_t , SourceInfo);
45429#endif
45430#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45431[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
45432#endif
45433#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
45434bool
45435#if defined(GET_EVAL_IMPL)
45436EvalEmitter
45437#else
45438ByteCodeEmitter
45439#endif
45440::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
45441 switch (T0) {
45442 case PT_Sint8:
45443 return emitSetGlobalSint8(A0, I);
45444 case PT_Uint8:
45445 return emitSetGlobalUint8(A0, I);
45446 case PT_Sint16:
45447 return emitSetGlobalSint16(A0, I);
45448 case PT_Uint16:
45449 return emitSetGlobalUint16(A0, I);
45450 case PT_Sint32:
45451 return emitSetGlobalSint32(A0, I);
45452 case PT_Uint32:
45453 return emitSetGlobalUint32(A0, I);
45454 case PT_Sint64:
45455 return emitSetGlobalSint64(A0, I);
45456 case PT_Uint64:
45457 return emitSetGlobalUint64(A0, I);
45458 case PT_IntAP:
45459 return emitSetGlobalIntAP(A0, I);
45460 case PT_IntAPS:
45461 return emitSetGlobalIntAPS(A0, I);
45462 case PT_Bool:
45463 return emitSetGlobalBool(A0, I);
45464 case PT_FixedPoint:
45465 return emitSetGlobalFixedPoint(A0, I);
45466 case PT_Ptr:
45467 return emitSetGlobalPtr(A0, I);
45468 case PT_MemberPtr:
45469 return emitSetGlobalMemberPtr(A0, I);
45470 case PT_Float:
45471 return emitSetGlobalFloat(A0, I);
45472 }
45473 llvm_unreachable("invalid enum value");
45474}
45475#endif
45476#ifdef GET_LINK_IMPL
45477bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
45478 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
45479}
45480bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
45481 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
45482}
45483bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
45484 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
45485}
45486bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
45487 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
45488}
45489bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
45490 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
45491}
45492bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
45493 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
45494}
45495bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
45496 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
45497}
45498bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
45499 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
45500}
45501bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
45502 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
45503}
45504bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
45505 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
45506}
45507bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
45508 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
45509}
45510bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
45511 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
45512}
45513bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
45514 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
45515}
45516bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
45517 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
45518}
45519bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
45520 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
45521}
45522#endif
45523#ifdef GET_EVAL_IMPL
45524bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
45525 if (!isActive()) return true;
45526 CurrentSource = L;
45527 return SetGlobal<PT_Sint8>(S, OpPC, A0);
45528}
45529bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
45530 if (!isActive()) return true;
45531 CurrentSource = L;
45532 return SetGlobal<PT_Uint8>(S, OpPC, A0);
45533}
45534bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
45535 if (!isActive()) return true;
45536 CurrentSource = L;
45537 return SetGlobal<PT_Sint16>(S, OpPC, A0);
45538}
45539bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
45540 if (!isActive()) return true;
45541 CurrentSource = L;
45542 return SetGlobal<PT_Uint16>(S, OpPC, A0);
45543}
45544bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
45545 if (!isActive()) return true;
45546 CurrentSource = L;
45547 return SetGlobal<PT_Sint32>(S, OpPC, A0);
45548}
45549bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
45550 if (!isActive()) return true;
45551 CurrentSource = L;
45552 return SetGlobal<PT_Uint32>(S, OpPC, A0);
45553}
45554bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
45555 if (!isActive()) return true;
45556 CurrentSource = L;
45557 return SetGlobal<PT_Sint64>(S, OpPC, A0);
45558}
45559bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
45560 if (!isActive()) return true;
45561 CurrentSource = L;
45562 return SetGlobal<PT_Uint64>(S, OpPC, A0);
45563}
45564bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
45565 if (!isActive()) return true;
45566 CurrentSource = L;
45567 return SetGlobal<PT_IntAP>(S, OpPC, A0);
45568}
45569bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
45570 if (!isActive()) return true;
45571 CurrentSource = L;
45572 return SetGlobal<PT_IntAPS>(S, OpPC, A0);
45573}
45574bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
45575 if (!isActive()) return true;
45576 CurrentSource = L;
45577 return SetGlobal<PT_Bool>(S, OpPC, A0);
45578}
45579bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
45580 if (!isActive()) return true;
45581 CurrentSource = L;
45582 return SetGlobal<PT_FixedPoint>(S, OpPC, A0);
45583}
45584bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
45585 if (!isActive()) return true;
45586 CurrentSource = L;
45587 return SetGlobal<PT_Ptr>(S, OpPC, A0);
45588}
45589bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
45590 if (!isActive()) return true;
45591 CurrentSource = L;
45592 return SetGlobal<PT_MemberPtr>(S, OpPC, A0);
45593}
45594bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
45595 if (!isActive()) return true;
45596 CurrentSource = L;
45597 return SetGlobal<PT_Float>(S, OpPC, A0);
45598}
45599#endif
45600#ifdef GET_OPCODE_NAMES
45601OP_SetLocalSint8,
45602OP_SetLocalUint8,
45603OP_SetLocalSint16,
45604OP_SetLocalUint16,
45605OP_SetLocalSint32,
45606OP_SetLocalUint32,
45607OP_SetLocalSint64,
45608OP_SetLocalUint64,
45609OP_SetLocalIntAP,
45610OP_SetLocalIntAPS,
45611OP_SetLocalBool,
45612OP_SetLocalFixedPoint,
45613OP_SetLocalPtr,
45614OP_SetLocalMemberPtr,
45615OP_SetLocalFloat,
45616#endif
45617#ifdef GET_INTERPFN_LIST
45618&Interp_SetLocalSint8,
45619&Interp_SetLocalUint8,
45620&Interp_SetLocalSint16,
45621&Interp_SetLocalUint16,
45622&Interp_SetLocalSint32,
45623&Interp_SetLocalUint32,
45624&Interp_SetLocalSint64,
45625&Interp_SetLocalUint64,
45626&Interp_SetLocalIntAP,
45627&Interp_SetLocalIntAPS,
45628&Interp_SetLocalBool,
45629&Interp_SetLocalFixedPoint,
45630&Interp_SetLocalPtr,
45631&Interp_SetLocalMemberPtr,
45632&Interp_SetLocalFloat,
45633#endif
45634#ifdef GET_INTERPFN_DISPATCHERS
45635PRESERVE_NONE
45636static bool Interp_SetLocalSint8(InterpState &S, CodePtr &PC) {
45637 {
45638 CodePtr OpPC = PC;
45639 const auto V0 = ReadArg<uint32_t>(S, PC);
45640 if (!SetLocal<PT_Sint8>(S, OpPC, V0))
45641 return false;
45642 }
45643#if USE_TAILCALLS
45644 MUSTTAIL return InterpNext(S, PC);
45645#else
45646 return true;
45647#endif
45648}
45649PRESERVE_NONE
45650static bool Interp_SetLocalUint8(InterpState &S, CodePtr &PC) {
45651 {
45652 CodePtr OpPC = PC;
45653 const auto V0 = ReadArg<uint32_t>(S, PC);
45654 if (!SetLocal<PT_Uint8>(S, OpPC, V0))
45655 return false;
45656 }
45657#if USE_TAILCALLS
45658 MUSTTAIL return InterpNext(S, PC);
45659#else
45660 return true;
45661#endif
45662}
45663PRESERVE_NONE
45664static bool Interp_SetLocalSint16(InterpState &S, CodePtr &PC) {
45665 {
45666 CodePtr OpPC = PC;
45667 const auto V0 = ReadArg<uint32_t>(S, PC);
45668 if (!SetLocal<PT_Sint16>(S, OpPC, V0))
45669 return false;
45670 }
45671#if USE_TAILCALLS
45672 MUSTTAIL return InterpNext(S, PC);
45673#else
45674 return true;
45675#endif
45676}
45677PRESERVE_NONE
45678static bool Interp_SetLocalUint16(InterpState &S, CodePtr &PC) {
45679 {
45680 CodePtr OpPC = PC;
45681 const auto V0 = ReadArg<uint32_t>(S, PC);
45682 if (!SetLocal<PT_Uint16>(S, OpPC, V0))
45683 return false;
45684 }
45685#if USE_TAILCALLS
45686 MUSTTAIL return InterpNext(S, PC);
45687#else
45688 return true;
45689#endif
45690}
45691PRESERVE_NONE
45692static bool Interp_SetLocalSint32(InterpState &S, CodePtr &PC) {
45693 {
45694 CodePtr OpPC = PC;
45695 const auto V0 = ReadArg<uint32_t>(S, PC);
45696 if (!SetLocal<PT_Sint32>(S, OpPC, V0))
45697 return false;
45698 }
45699#if USE_TAILCALLS
45700 MUSTTAIL return InterpNext(S, PC);
45701#else
45702 return true;
45703#endif
45704}
45705PRESERVE_NONE
45706static bool Interp_SetLocalUint32(InterpState &S, CodePtr &PC) {
45707 {
45708 CodePtr OpPC = PC;
45709 const auto V0 = ReadArg<uint32_t>(S, PC);
45710 if (!SetLocal<PT_Uint32>(S, OpPC, V0))
45711 return false;
45712 }
45713#if USE_TAILCALLS
45714 MUSTTAIL return InterpNext(S, PC);
45715#else
45716 return true;
45717#endif
45718}
45719PRESERVE_NONE
45720static bool Interp_SetLocalSint64(InterpState &S, CodePtr &PC) {
45721 {
45722 CodePtr OpPC = PC;
45723 const auto V0 = ReadArg<uint32_t>(S, PC);
45724 if (!SetLocal<PT_Sint64>(S, OpPC, V0))
45725 return false;
45726 }
45727#if USE_TAILCALLS
45728 MUSTTAIL return InterpNext(S, PC);
45729#else
45730 return true;
45731#endif
45732}
45733PRESERVE_NONE
45734static bool Interp_SetLocalUint64(InterpState &S, CodePtr &PC) {
45735 {
45736 CodePtr OpPC = PC;
45737 const auto V0 = ReadArg<uint32_t>(S, PC);
45738 if (!SetLocal<PT_Uint64>(S, OpPC, V0))
45739 return false;
45740 }
45741#if USE_TAILCALLS
45742 MUSTTAIL return InterpNext(S, PC);
45743#else
45744 return true;
45745#endif
45746}
45747PRESERVE_NONE
45748static bool Interp_SetLocalIntAP(InterpState &S, CodePtr &PC) {
45749 {
45750 CodePtr OpPC = PC;
45751 const auto V0 = ReadArg<uint32_t>(S, PC);
45752 if (!SetLocal<PT_IntAP>(S, OpPC, V0))
45753 return false;
45754 }
45755#if USE_TAILCALLS
45756 MUSTTAIL return InterpNext(S, PC);
45757#else
45758 return true;
45759#endif
45760}
45761PRESERVE_NONE
45762static bool Interp_SetLocalIntAPS(InterpState &S, CodePtr &PC) {
45763 {
45764 CodePtr OpPC = PC;
45765 const auto V0 = ReadArg<uint32_t>(S, PC);
45766 if (!SetLocal<PT_IntAPS>(S, OpPC, V0))
45767 return false;
45768 }
45769#if USE_TAILCALLS
45770 MUSTTAIL return InterpNext(S, PC);
45771#else
45772 return true;
45773#endif
45774}
45775PRESERVE_NONE
45776static bool Interp_SetLocalBool(InterpState &S, CodePtr &PC) {
45777 {
45778 CodePtr OpPC = PC;
45779 const auto V0 = ReadArg<uint32_t>(S, PC);
45780 if (!SetLocal<PT_Bool>(S, OpPC, V0))
45781 return false;
45782 }
45783#if USE_TAILCALLS
45784 MUSTTAIL return InterpNext(S, PC);
45785#else
45786 return true;
45787#endif
45788}
45789PRESERVE_NONE
45790static bool Interp_SetLocalFixedPoint(InterpState &S, CodePtr &PC) {
45791 {
45792 CodePtr OpPC = PC;
45793 const auto V0 = ReadArg<uint32_t>(S, PC);
45794 if (!SetLocal<PT_FixedPoint>(S, OpPC, V0))
45795 return false;
45796 }
45797#if USE_TAILCALLS
45798 MUSTTAIL return InterpNext(S, PC);
45799#else
45800 return true;
45801#endif
45802}
45803PRESERVE_NONE
45804static bool Interp_SetLocalPtr(InterpState &S, CodePtr &PC) {
45805 {
45806 CodePtr OpPC = PC;
45807 const auto V0 = ReadArg<uint32_t>(S, PC);
45808 if (!SetLocal<PT_Ptr>(S, OpPC, V0))
45809 return false;
45810 }
45811#if USE_TAILCALLS
45812 MUSTTAIL return InterpNext(S, PC);
45813#else
45814 return true;
45815#endif
45816}
45817PRESERVE_NONE
45818static bool Interp_SetLocalMemberPtr(InterpState &S, CodePtr &PC) {
45819 {
45820 CodePtr OpPC = PC;
45821 const auto V0 = ReadArg<uint32_t>(S, PC);
45822 if (!SetLocal<PT_MemberPtr>(S, OpPC, V0))
45823 return false;
45824 }
45825#if USE_TAILCALLS
45826 MUSTTAIL return InterpNext(S, PC);
45827#else
45828 return true;
45829#endif
45830}
45831PRESERVE_NONE
45832static bool Interp_SetLocalFloat(InterpState &S, CodePtr &PC) {
45833 {
45834 CodePtr OpPC = PC;
45835 const auto V0 = ReadArg<uint32_t>(S, PC);
45836 if (!SetLocal<PT_Float>(S, OpPC, V0))
45837 return false;
45838 }
45839#if USE_TAILCALLS
45840 MUSTTAIL return InterpNext(S, PC);
45841#else
45842 return true;
45843#endif
45844}
45845#endif
45846#ifdef GET_DISASM
45847case OP_SetLocalSint8:
45848 Text.Op = PrintName("SetLocalSint8");
45849 Text.Args.push_back(printArg<uint32_t>(P, PC));
45850 break;
45851case OP_SetLocalUint8:
45852 Text.Op = PrintName("SetLocalUint8");
45853 Text.Args.push_back(printArg<uint32_t>(P, PC));
45854 break;
45855case OP_SetLocalSint16:
45856 Text.Op = PrintName("SetLocalSint16");
45857 Text.Args.push_back(printArg<uint32_t>(P, PC));
45858 break;
45859case OP_SetLocalUint16:
45860 Text.Op = PrintName("SetLocalUint16");
45861 Text.Args.push_back(printArg<uint32_t>(P, PC));
45862 break;
45863case OP_SetLocalSint32:
45864 Text.Op = PrintName("SetLocalSint32");
45865 Text.Args.push_back(printArg<uint32_t>(P, PC));
45866 break;
45867case OP_SetLocalUint32:
45868 Text.Op = PrintName("SetLocalUint32");
45869 Text.Args.push_back(printArg<uint32_t>(P, PC));
45870 break;
45871case OP_SetLocalSint64:
45872 Text.Op = PrintName("SetLocalSint64");
45873 Text.Args.push_back(printArg<uint32_t>(P, PC));
45874 break;
45875case OP_SetLocalUint64:
45876 Text.Op = PrintName("SetLocalUint64");
45877 Text.Args.push_back(printArg<uint32_t>(P, PC));
45878 break;
45879case OP_SetLocalIntAP:
45880 Text.Op = PrintName("SetLocalIntAP");
45881 Text.Args.push_back(printArg<uint32_t>(P, PC));
45882 break;
45883case OP_SetLocalIntAPS:
45884 Text.Op = PrintName("SetLocalIntAPS");
45885 Text.Args.push_back(printArg<uint32_t>(P, PC));
45886 break;
45887case OP_SetLocalBool:
45888 Text.Op = PrintName("SetLocalBool");
45889 Text.Args.push_back(printArg<uint32_t>(P, PC));
45890 break;
45891case OP_SetLocalFixedPoint:
45892 Text.Op = PrintName("SetLocalFixedPoint");
45893 Text.Args.push_back(printArg<uint32_t>(P, PC));
45894 break;
45895case OP_SetLocalPtr:
45896 Text.Op = PrintName("SetLocalPtr");
45897 Text.Args.push_back(printArg<uint32_t>(P, PC));
45898 break;
45899case OP_SetLocalMemberPtr:
45900 Text.Op = PrintName("SetLocalMemberPtr");
45901 Text.Args.push_back(printArg<uint32_t>(P, PC));
45902 break;
45903case OP_SetLocalFloat:
45904 Text.Op = PrintName("SetLocalFloat");
45905 Text.Args.push_back(printArg<uint32_t>(P, PC));
45906 break;
45907#endif
45908#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45909bool emitSetLocalSint8( uint32_t , SourceInfo);
45910bool emitSetLocalUint8( uint32_t , SourceInfo);
45911bool emitSetLocalSint16( uint32_t , SourceInfo);
45912bool emitSetLocalUint16( uint32_t , SourceInfo);
45913bool emitSetLocalSint32( uint32_t , SourceInfo);
45914bool emitSetLocalUint32( uint32_t , SourceInfo);
45915bool emitSetLocalSint64( uint32_t , SourceInfo);
45916bool emitSetLocalUint64( uint32_t , SourceInfo);
45917bool emitSetLocalIntAP( uint32_t , SourceInfo);
45918bool emitSetLocalIntAPS( uint32_t , SourceInfo);
45919bool emitSetLocalBool( uint32_t , SourceInfo);
45920bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
45921bool emitSetLocalPtr( uint32_t , SourceInfo);
45922bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
45923bool emitSetLocalFloat( uint32_t , SourceInfo);
45924#if defined(GET_EVAL_PROTO)
45925template<PrimType>
45926bool emitSetLocal(uint32_t, SourceInfo);
45927#endif
45928#endif
45929#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45930[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
45931#endif
45932#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
45933bool
45934#if defined(GET_EVAL_IMPL)
45935EvalEmitter
45936#else
45937ByteCodeEmitter
45938#endif
45939::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
45940 switch (T0) {
45941 case PT_Sint8:
45942#ifdef GET_LINK_IMPL
45943 return emitSetLocalSint8
45944#else
45945 return emitSetLocal<PT_Sint8>
45946#endif
45947 (A0, I);
45948 case PT_Uint8:
45949#ifdef GET_LINK_IMPL
45950 return emitSetLocalUint8
45951#else
45952 return emitSetLocal<PT_Uint8>
45953#endif
45954 (A0, I);
45955 case PT_Sint16:
45956#ifdef GET_LINK_IMPL
45957 return emitSetLocalSint16
45958#else
45959 return emitSetLocal<PT_Sint16>
45960#endif
45961 (A0, I);
45962 case PT_Uint16:
45963#ifdef GET_LINK_IMPL
45964 return emitSetLocalUint16
45965#else
45966 return emitSetLocal<PT_Uint16>
45967#endif
45968 (A0, I);
45969 case PT_Sint32:
45970#ifdef GET_LINK_IMPL
45971 return emitSetLocalSint32
45972#else
45973 return emitSetLocal<PT_Sint32>
45974#endif
45975 (A0, I);
45976 case PT_Uint32:
45977#ifdef GET_LINK_IMPL
45978 return emitSetLocalUint32
45979#else
45980 return emitSetLocal<PT_Uint32>
45981#endif
45982 (A0, I);
45983 case PT_Sint64:
45984#ifdef GET_LINK_IMPL
45985 return emitSetLocalSint64
45986#else
45987 return emitSetLocal<PT_Sint64>
45988#endif
45989 (A0, I);
45990 case PT_Uint64:
45991#ifdef GET_LINK_IMPL
45992 return emitSetLocalUint64
45993#else
45994 return emitSetLocal<PT_Uint64>
45995#endif
45996 (A0, I);
45997 case PT_IntAP:
45998#ifdef GET_LINK_IMPL
45999 return emitSetLocalIntAP
46000#else
46001 return emitSetLocal<PT_IntAP>
46002#endif
46003 (A0, I);
46004 case PT_IntAPS:
46005#ifdef GET_LINK_IMPL
46006 return emitSetLocalIntAPS
46007#else
46008 return emitSetLocal<PT_IntAPS>
46009#endif
46010 (A0, I);
46011 case PT_Bool:
46012#ifdef GET_LINK_IMPL
46013 return emitSetLocalBool
46014#else
46015 return emitSetLocal<PT_Bool>
46016#endif
46017 (A0, I);
46018 case PT_FixedPoint:
46019#ifdef GET_LINK_IMPL
46020 return emitSetLocalFixedPoint
46021#else
46022 return emitSetLocal<PT_FixedPoint>
46023#endif
46024 (A0, I);
46025 case PT_Ptr:
46026#ifdef GET_LINK_IMPL
46027 return emitSetLocalPtr
46028#else
46029 return emitSetLocal<PT_Ptr>
46030#endif
46031 (A0, I);
46032 case PT_MemberPtr:
46033#ifdef GET_LINK_IMPL
46034 return emitSetLocalMemberPtr
46035#else
46036 return emitSetLocal<PT_MemberPtr>
46037#endif
46038 (A0, I);
46039 case PT_Float:
46040#ifdef GET_LINK_IMPL
46041 return emitSetLocalFloat
46042#else
46043 return emitSetLocal<PT_Float>
46044#endif
46045 (A0, I);
46046 }
46047 llvm_unreachable("invalid enum value");
46048}
46049#endif
46050#ifdef GET_LINK_IMPL
46051bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
46052 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
46053}
46054bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
46055 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
46056}
46057bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
46058 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
46059}
46060bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
46061 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
46062}
46063bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
46064 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
46065}
46066bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
46067 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
46068}
46069bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
46070 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
46071}
46072bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
46073 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
46074}
46075bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
46076 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
46077}
46078bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
46079 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
46080}
46081bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
46082 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
46083}
46084bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
46085 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
46086}
46087bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
46088 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
46089}
46090bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
46091 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
46092}
46093bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
46094 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
46095}
46096#endif
46097#ifdef GET_OPCODE_NAMES
46098OP_SetParamSint8,
46099OP_SetParamUint8,
46100OP_SetParamSint16,
46101OP_SetParamUint16,
46102OP_SetParamSint32,
46103OP_SetParamUint32,
46104OP_SetParamSint64,
46105OP_SetParamUint64,
46106OP_SetParamIntAP,
46107OP_SetParamIntAPS,
46108OP_SetParamBool,
46109OP_SetParamFixedPoint,
46110OP_SetParamPtr,
46111OP_SetParamMemberPtr,
46112OP_SetParamFloat,
46113#endif
46114#ifdef GET_INTERPFN_LIST
46115&Interp_SetParamSint8,
46116&Interp_SetParamUint8,
46117&Interp_SetParamSint16,
46118&Interp_SetParamUint16,
46119&Interp_SetParamSint32,
46120&Interp_SetParamUint32,
46121&Interp_SetParamSint64,
46122&Interp_SetParamUint64,
46123&Interp_SetParamIntAP,
46124&Interp_SetParamIntAPS,
46125&Interp_SetParamBool,
46126&Interp_SetParamFixedPoint,
46127&Interp_SetParamPtr,
46128&Interp_SetParamMemberPtr,
46129&Interp_SetParamFloat,
46130#endif
46131#ifdef GET_INTERPFN_DISPATCHERS
46132PRESERVE_NONE
46133static bool Interp_SetParamSint8(InterpState &S, CodePtr &PC) {
46134 {
46135 CodePtr OpPC = PC;
46136 const auto V0 = ReadArg<uint32_t>(S, PC);
46137 if (!SetParam<PT_Sint8>(S, OpPC, V0))
46138 return false;
46139 }
46140#if USE_TAILCALLS
46141 MUSTTAIL return InterpNext(S, PC);
46142#else
46143 return true;
46144#endif
46145}
46146PRESERVE_NONE
46147static bool Interp_SetParamUint8(InterpState &S, CodePtr &PC) {
46148 {
46149 CodePtr OpPC = PC;
46150 const auto V0 = ReadArg<uint32_t>(S, PC);
46151 if (!SetParam<PT_Uint8>(S, OpPC, V0))
46152 return false;
46153 }
46154#if USE_TAILCALLS
46155 MUSTTAIL return InterpNext(S, PC);
46156#else
46157 return true;
46158#endif
46159}
46160PRESERVE_NONE
46161static bool Interp_SetParamSint16(InterpState &S, CodePtr &PC) {
46162 {
46163 CodePtr OpPC = PC;
46164 const auto V0 = ReadArg<uint32_t>(S, PC);
46165 if (!SetParam<PT_Sint16>(S, OpPC, V0))
46166 return false;
46167 }
46168#if USE_TAILCALLS
46169 MUSTTAIL return InterpNext(S, PC);
46170#else
46171 return true;
46172#endif
46173}
46174PRESERVE_NONE
46175static bool Interp_SetParamUint16(InterpState &S, CodePtr &PC) {
46176 {
46177 CodePtr OpPC = PC;
46178 const auto V0 = ReadArg<uint32_t>(S, PC);
46179 if (!SetParam<PT_Uint16>(S, OpPC, V0))
46180 return false;
46181 }
46182#if USE_TAILCALLS
46183 MUSTTAIL return InterpNext(S, PC);
46184#else
46185 return true;
46186#endif
46187}
46188PRESERVE_NONE
46189static bool Interp_SetParamSint32(InterpState &S, CodePtr &PC) {
46190 {
46191 CodePtr OpPC = PC;
46192 const auto V0 = ReadArg<uint32_t>(S, PC);
46193 if (!SetParam<PT_Sint32>(S, OpPC, V0))
46194 return false;
46195 }
46196#if USE_TAILCALLS
46197 MUSTTAIL return InterpNext(S, PC);
46198#else
46199 return true;
46200#endif
46201}
46202PRESERVE_NONE
46203static bool Interp_SetParamUint32(InterpState &S, CodePtr &PC) {
46204 {
46205 CodePtr OpPC = PC;
46206 const auto V0 = ReadArg<uint32_t>(S, PC);
46207 if (!SetParam<PT_Uint32>(S, OpPC, V0))
46208 return false;
46209 }
46210#if USE_TAILCALLS
46211 MUSTTAIL return InterpNext(S, PC);
46212#else
46213 return true;
46214#endif
46215}
46216PRESERVE_NONE
46217static bool Interp_SetParamSint64(InterpState &S, CodePtr &PC) {
46218 {
46219 CodePtr OpPC = PC;
46220 const auto V0 = ReadArg<uint32_t>(S, PC);
46221 if (!SetParam<PT_Sint64>(S, OpPC, V0))
46222 return false;
46223 }
46224#if USE_TAILCALLS
46225 MUSTTAIL return InterpNext(S, PC);
46226#else
46227 return true;
46228#endif
46229}
46230PRESERVE_NONE
46231static bool Interp_SetParamUint64(InterpState &S, CodePtr &PC) {
46232 {
46233 CodePtr OpPC = PC;
46234 const auto V0 = ReadArg<uint32_t>(S, PC);
46235 if (!SetParam<PT_Uint64>(S, OpPC, V0))
46236 return false;
46237 }
46238#if USE_TAILCALLS
46239 MUSTTAIL return InterpNext(S, PC);
46240#else
46241 return true;
46242#endif
46243}
46244PRESERVE_NONE
46245static bool Interp_SetParamIntAP(InterpState &S, CodePtr &PC) {
46246 {
46247 CodePtr OpPC = PC;
46248 const auto V0 = ReadArg<uint32_t>(S, PC);
46249 if (!SetParam<PT_IntAP>(S, OpPC, V0))
46250 return false;
46251 }
46252#if USE_TAILCALLS
46253 MUSTTAIL return InterpNext(S, PC);
46254#else
46255 return true;
46256#endif
46257}
46258PRESERVE_NONE
46259static bool Interp_SetParamIntAPS(InterpState &S, CodePtr &PC) {
46260 {
46261 CodePtr OpPC = PC;
46262 const auto V0 = ReadArg<uint32_t>(S, PC);
46263 if (!SetParam<PT_IntAPS>(S, OpPC, V0))
46264 return false;
46265 }
46266#if USE_TAILCALLS
46267 MUSTTAIL return InterpNext(S, PC);
46268#else
46269 return true;
46270#endif
46271}
46272PRESERVE_NONE
46273static bool Interp_SetParamBool(InterpState &S, CodePtr &PC) {
46274 {
46275 CodePtr OpPC = PC;
46276 const auto V0 = ReadArg<uint32_t>(S, PC);
46277 if (!SetParam<PT_Bool>(S, OpPC, V0))
46278 return false;
46279 }
46280#if USE_TAILCALLS
46281 MUSTTAIL return InterpNext(S, PC);
46282#else
46283 return true;
46284#endif
46285}
46286PRESERVE_NONE
46287static bool Interp_SetParamFixedPoint(InterpState &S, CodePtr &PC) {
46288 {
46289 CodePtr OpPC = PC;
46290 const auto V0 = ReadArg<uint32_t>(S, PC);
46291 if (!SetParam<PT_FixedPoint>(S, OpPC, V0))
46292 return false;
46293 }
46294#if USE_TAILCALLS
46295 MUSTTAIL return InterpNext(S, PC);
46296#else
46297 return true;
46298#endif
46299}
46300PRESERVE_NONE
46301static bool Interp_SetParamPtr(InterpState &S, CodePtr &PC) {
46302 {
46303 CodePtr OpPC = PC;
46304 const auto V0 = ReadArg<uint32_t>(S, PC);
46305 if (!SetParam<PT_Ptr>(S, OpPC, V0))
46306 return false;
46307 }
46308#if USE_TAILCALLS
46309 MUSTTAIL return InterpNext(S, PC);
46310#else
46311 return true;
46312#endif
46313}
46314PRESERVE_NONE
46315static bool Interp_SetParamMemberPtr(InterpState &S, CodePtr &PC) {
46316 {
46317 CodePtr OpPC = PC;
46318 const auto V0 = ReadArg<uint32_t>(S, PC);
46319 if (!SetParam<PT_MemberPtr>(S, OpPC, V0))
46320 return false;
46321 }
46322#if USE_TAILCALLS
46323 MUSTTAIL return InterpNext(S, PC);
46324#else
46325 return true;
46326#endif
46327}
46328PRESERVE_NONE
46329static bool Interp_SetParamFloat(InterpState &S, CodePtr &PC) {
46330 {
46331 CodePtr OpPC = PC;
46332 const auto V0 = ReadArg<uint32_t>(S, PC);
46333 if (!SetParam<PT_Float>(S, OpPC, V0))
46334 return false;
46335 }
46336#if USE_TAILCALLS
46337 MUSTTAIL return InterpNext(S, PC);
46338#else
46339 return true;
46340#endif
46341}
46342#endif
46343#ifdef GET_DISASM
46344case OP_SetParamSint8:
46345 Text.Op = PrintName("SetParamSint8");
46346 Text.Args.push_back(printArg<uint32_t>(P, PC));
46347 break;
46348case OP_SetParamUint8:
46349 Text.Op = PrintName("SetParamUint8");
46350 Text.Args.push_back(printArg<uint32_t>(P, PC));
46351 break;
46352case OP_SetParamSint16:
46353 Text.Op = PrintName("SetParamSint16");
46354 Text.Args.push_back(printArg<uint32_t>(P, PC));
46355 break;
46356case OP_SetParamUint16:
46357 Text.Op = PrintName("SetParamUint16");
46358 Text.Args.push_back(printArg<uint32_t>(P, PC));
46359 break;
46360case OP_SetParamSint32:
46361 Text.Op = PrintName("SetParamSint32");
46362 Text.Args.push_back(printArg<uint32_t>(P, PC));
46363 break;
46364case OP_SetParamUint32:
46365 Text.Op = PrintName("SetParamUint32");
46366 Text.Args.push_back(printArg<uint32_t>(P, PC));
46367 break;
46368case OP_SetParamSint64:
46369 Text.Op = PrintName("SetParamSint64");
46370 Text.Args.push_back(printArg<uint32_t>(P, PC));
46371 break;
46372case OP_SetParamUint64:
46373 Text.Op = PrintName("SetParamUint64");
46374 Text.Args.push_back(printArg<uint32_t>(P, PC));
46375 break;
46376case OP_SetParamIntAP:
46377 Text.Op = PrintName("SetParamIntAP");
46378 Text.Args.push_back(printArg<uint32_t>(P, PC));
46379 break;
46380case OP_SetParamIntAPS:
46381 Text.Op = PrintName("SetParamIntAPS");
46382 Text.Args.push_back(printArg<uint32_t>(P, PC));
46383 break;
46384case OP_SetParamBool:
46385 Text.Op = PrintName("SetParamBool");
46386 Text.Args.push_back(printArg<uint32_t>(P, PC));
46387 break;
46388case OP_SetParamFixedPoint:
46389 Text.Op = PrintName("SetParamFixedPoint");
46390 Text.Args.push_back(printArg<uint32_t>(P, PC));
46391 break;
46392case OP_SetParamPtr:
46393 Text.Op = PrintName("SetParamPtr");
46394 Text.Args.push_back(printArg<uint32_t>(P, PC));
46395 break;
46396case OP_SetParamMemberPtr:
46397 Text.Op = PrintName("SetParamMemberPtr");
46398 Text.Args.push_back(printArg<uint32_t>(P, PC));
46399 break;
46400case OP_SetParamFloat:
46401 Text.Op = PrintName("SetParamFloat");
46402 Text.Args.push_back(printArg<uint32_t>(P, PC));
46403 break;
46404#endif
46405#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46406bool emitSetParamSint8( uint32_t , SourceInfo);
46407bool emitSetParamUint8( uint32_t , SourceInfo);
46408bool emitSetParamSint16( uint32_t , SourceInfo);
46409bool emitSetParamUint16( uint32_t , SourceInfo);
46410bool emitSetParamSint32( uint32_t , SourceInfo);
46411bool emitSetParamUint32( uint32_t , SourceInfo);
46412bool emitSetParamSint64( uint32_t , SourceInfo);
46413bool emitSetParamUint64( uint32_t , SourceInfo);
46414bool emitSetParamIntAP( uint32_t , SourceInfo);
46415bool emitSetParamIntAPS( uint32_t , SourceInfo);
46416bool emitSetParamBool( uint32_t , SourceInfo);
46417bool emitSetParamFixedPoint( uint32_t , SourceInfo);
46418bool emitSetParamPtr( uint32_t , SourceInfo);
46419bool emitSetParamMemberPtr( uint32_t , SourceInfo);
46420bool emitSetParamFloat( uint32_t , SourceInfo);
46421#endif
46422#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46423[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
46424#endif
46425#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
46426bool
46427#if defined(GET_EVAL_IMPL)
46428EvalEmitter
46429#else
46430ByteCodeEmitter
46431#endif
46432::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
46433 switch (T0) {
46434 case PT_Sint8:
46435 return emitSetParamSint8(A0, I);
46436 case PT_Uint8:
46437 return emitSetParamUint8(A0, I);
46438 case PT_Sint16:
46439 return emitSetParamSint16(A0, I);
46440 case PT_Uint16:
46441 return emitSetParamUint16(A0, I);
46442 case PT_Sint32:
46443 return emitSetParamSint32(A0, I);
46444 case PT_Uint32:
46445 return emitSetParamUint32(A0, I);
46446 case PT_Sint64:
46447 return emitSetParamSint64(A0, I);
46448 case PT_Uint64:
46449 return emitSetParamUint64(A0, I);
46450 case PT_IntAP:
46451 return emitSetParamIntAP(A0, I);
46452 case PT_IntAPS:
46453 return emitSetParamIntAPS(A0, I);
46454 case PT_Bool:
46455 return emitSetParamBool(A0, I);
46456 case PT_FixedPoint:
46457 return emitSetParamFixedPoint(A0, I);
46458 case PT_Ptr:
46459 return emitSetParamPtr(A0, I);
46460 case PT_MemberPtr:
46461 return emitSetParamMemberPtr(A0, I);
46462 case PT_Float:
46463 return emitSetParamFloat(A0, I);
46464 }
46465 llvm_unreachable("invalid enum value");
46466}
46467#endif
46468#ifdef GET_LINK_IMPL
46469bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
46470 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
46471}
46472bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
46473 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
46474}
46475bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
46476 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
46477}
46478bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
46479 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
46480}
46481bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
46482 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
46483}
46484bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
46485 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
46486}
46487bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
46488 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
46489}
46490bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
46491 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
46492}
46493bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
46494 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
46495}
46496bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
46497 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
46498}
46499bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
46500 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
46501}
46502bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
46503 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
46504}
46505bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
46506 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
46507}
46508bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
46509 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
46510}
46511bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
46512 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
46513}
46514#endif
46515#ifdef GET_EVAL_IMPL
46516bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
46517 if (!isActive()) return true;
46518 CurrentSource = L;
46519 return SetParam<PT_Sint8>(S, OpPC, A0);
46520}
46521bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
46522 if (!isActive()) return true;
46523 CurrentSource = L;
46524 return SetParam<PT_Uint8>(S, OpPC, A0);
46525}
46526bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
46527 if (!isActive()) return true;
46528 CurrentSource = L;
46529 return SetParam<PT_Sint16>(S, OpPC, A0);
46530}
46531bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
46532 if (!isActive()) return true;
46533 CurrentSource = L;
46534 return SetParam<PT_Uint16>(S, OpPC, A0);
46535}
46536bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
46537 if (!isActive()) return true;
46538 CurrentSource = L;
46539 return SetParam<PT_Sint32>(S, OpPC, A0);
46540}
46541bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
46542 if (!isActive()) return true;
46543 CurrentSource = L;
46544 return SetParam<PT_Uint32>(S, OpPC, A0);
46545}
46546bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
46547 if (!isActive()) return true;
46548 CurrentSource = L;
46549 return SetParam<PT_Sint64>(S, OpPC, A0);
46550}
46551bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
46552 if (!isActive()) return true;
46553 CurrentSource = L;
46554 return SetParam<PT_Uint64>(S, OpPC, A0);
46555}
46556bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
46557 if (!isActive()) return true;
46558 CurrentSource = L;
46559 return SetParam<PT_IntAP>(S, OpPC, A0);
46560}
46561bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
46562 if (!isActive()) return true;
46563 CurrentSource = L;
46564 return SetParam<PT_IntAPS>(S, OpPC, A0);
46565}
46566bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
46567 if (!isActive()) return true;
46568 CurrentSource = L;
46569 return SetParam<PT_Bool>(S, OpPC, A0);
46570}
46571bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
46572 if (!isActive()) return true;
46573 CurrentSource = L;
46574 return SetParam<PT_FixedPoint>(S, OpPC, A0);
46575}
46576bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
46577 if (!isActive()) return true;
46578 CurrentSource = L;
46579 return SetParam<PT_Ptr>(S, OpPC, A0);
46580}
46581bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
46582 if (!isActive()) return true;
46583 CurrentSource = L;
46584 return SetParam<PT_MemberPtr>(S, OpPC, A0);
46585}
46586bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
46587 if (!isActive()) return true;
46588 CurrentSource = L;
46589 return SetParam<PT_Float>(S, OpPC, A0);
46590}
46591#endif
46592#ifdef GET_OPCODE_NAMES
46593OP_SetThisFieldSint8,
46594OP_SetThisFieldUint8,
46595OP_SetThisFieldSint16,
46596OP_SetThisFieldUint16,
46597OP_SetThisFieldSint32,
46598OP_SetThisFieldUint32,
46599OP_SetThisFieldSint64,
46600OP_SetThisFieldUint64,
46601OP_SetThisFieldIntAP,
46602OP_SetThisFieldIntAPS,
46603OP_SetThisFieldBool,
46604OP_SetThisFieldFixedPoint,
46605OP_SetThisFieldPtr,
46606OP_SetThisFieldMemberPtr,
46607OP_SetThisFieldFloat,
46608#endif
46609#ifdef GET_INTERPFN_LIST
46610&Interp_SetThisFieldSint8,
46611&Interp_SetThisFieldUint8,
46612&Interp_SetThisFieldSint16,
46613&Interp_SetThisFieldUint16,
46614&Interp_SetThisFieldSint32,
46615&Interp_SetThisFieldUint32,
46616&Interp_SetThisFieldSint64,
46617&Interp_SetThisFieldUint64,
46618&Interp_SetThisFieldIntAP,
46619&Interp_SetThisFieldIntAPS,
46620&Interp_SetThisFieldBool,
46621&Interp_SetThisFieldFixedPoint,
46622&Interp_SetThisFieldPtr,
46623&Interp_SetThisFieldMemberPtr,
46624&Interp_SetThisFieldFloat,
46625#endif
46626#ifdef GET_INTERPFN_DISPATCHERS
46627PRESERVE_NONE
46628static bool Interp_SetThisFieldSint8(InterpState &S, CodePtr &PC) {
46629 {
46630 CodePtr OpPC = PC;
46631 const auto V0 = ReadArg<uint32_t>(S, PC);
46632 if (!SetThisField<PT_Sint8>(S, OpPC, V0))
46633 return false;
46634 }
46635#if USE_TAILCALLS
46636 MUSTTAIL return InterpNext(S, PC);
46637#else
46638 return true;
46639#endif
46640}
46641PRESERVE_NONE
46642static bool Interp_SetThisFieldUint8(InterpState &S, CodePtr &PC) {
46643 {
46644 CodePtr OpPC = PC;
46645 const auto V0 = ReadArg<uint32_t>(S, PC);
46646 if (!SetThisField<PT_Uint8>(S, OpPC, V0))
46647 return false;
46648 }
46649#if USE_TAILCALLS
46650 MUSTTAIL return InterpNext(S, PC);
46651#else
46652 return true;
46653#endif
46654}
46655PRESERVE_NONE
46656static bool Interp_SetThisFieldSint16(InterpState &S, CodePtr &PC) {
46657 {
46658 CodePtr OpPC = PC;
46659 const auto V0 = ReadArg<uint32_t>(S, PC);
46660 if (!SetThisField<PT_Sint16>(S, OpPC, V0))
46661 return false;
46662 }
46663#if USE_TAILCALLS
46664 MUSTTAIL return InterpNext(S, PC);
46665#else
46666 return true;
46667#endif
46668}
46669PRESERVE_NONE
46670static bool Interp_SetThisFieldUint16(InterpState &S, CodePtr &PC) {
46671 {
46672 CodePtr OpPC = PC;
46673 const auto V0 = ReadArg<uint32_t>(S, PC);
46674 if (!SetThisField<PT_Uint16>(S, OpPC, V0))
46675 return false;
46676 }
46677#if USE_TAILCALLS
46678 MUSTTAIL return InterpNext(S, PC);
46679#else
46680 return true;
46681#endif
46682}
46683PRESERVE_NONE
46684static bool Interp_SetThisFieldSint32(InterpState &S, CodePtr &PC) {
46685 {
46686 CodePtr OpPC = PC;
46687 const auto V0 = ReadArg<uint32_t>(S, PC);
46688 if (!SetThisField<PT_Sint32>(S, OpPC, V0))
46689 return false;
46690 }
46691#if USE_TAILCALLS
46692 MUSTTAIL return InterpNext(S, PC);
46693#else
46694 return true;
46695#endif
46696}
46697PRESERVE_NONE
46698static bool Interp_SetThisFieldUint32(InterpState &S, CodePtr &PC) {
46699 {
46700 CodePtr OpPC = PC;
46701 const auto V0 = ReadArg<uint32_t>(S, PC);
46702 if (!SetThisField<PT_Uint32>(S, OpPC, V0))
46703 return false;
46704 }
46705#if USE_TAILCALLS
46706 MUSTTAIL return InterpNext(S, PC);
46707#else
46708 return true;
46709#endif
46710}
46711PRESERVE_NONE
46712static bool Interp_SetThisFieldSint64(InterpState &S, CodePtr &PC) {
46713 {
46714 CodePtr OpPC = PC;
46715 const auto V0 = ReadArg<uint32_t>(S, PC);
46716 if (!SetThisField<PT_Sint64>(S, OpPC, V0))
46717 return false;
46718 }
46719#if USE_TAILCALLS
46720 MUSTTAIL return InterpNext(S, PC);
46721#else
46722 return true;
46723#endif
46724}
46725PRESERVE_NONE
46726static bool Interp_SetThisFieldUint64(InterpState &S, CodePtr &PC) {
46727 {
46728 CodePtr OpPC = PC;
46729 const auto V0 = ReadArg<uint32_t>(S, PC);
46730 if (!SetThisField<PT_Uint64>(S, OpPC, V0))
46731 return false;
46732 }
46733#if USE_TAILCALLS
46734 MUSTTAIL return InterpNext(S, PC);
46735#else
46736 return true;
46737#endif
46738}
46739PRESERVE_NONE
46740static bool Interp_SetThisFieldIntAP(InterpState &S, CodePtr &PC) {
46741 {
46742 CodePtr OpPC = PC;
46743 const auto V0 = ReadArg<uint32_t>(S, PC);
46744 if (!SetThisField<PT_IntAP>(S, OpPC, V0))
46745 return false;
46746 }
46747#if USE_TAILCALLS
46748 MUSTTAIL return InterpNext(S, PC);
46749#else
46750 return true;
46751#endif
46752}
46753PRESERVE_NONE
46754static bool Interp_SetThisFieldIntAPS(InterpState &S, CodePtr &PC) {
46755 {
46756 CodePtr OpPC = PC;
46757 const auto V0 = ReadArg<uint32_t>(S, PC);
46758 if (!SetThisField<PT_IntAPS>(S, OpPC, V0))
46759 return false;
46760 }
46761#if USE_TAILCALLS
46762 MUSTTAIL return InterpNext(S, PC);
46763#else
46764 return true;
46765#endif
46766}
46767PRESERVE_NONE
46768static bool Interp_SetThisFieldBool(InterpState &S, CodePtr &PC) {
46769 {
46770 CodePtr OpPC = PC;
46771 const auto V0 = ReadArg<uint32_t>(S, PC);
46772 if (!SetThisField<PT_Bool>(S, OpPC, V0))
46773 return false;
46774 }
46775#if USE_TAILCALLS
46776 MUSTTAIL return InterpNext(S, PC);
46777#else
46778 return true;
46779#endif
46780}
46781PRESERVE_NONE
46782static bool Interp_SetThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
46783 {
46784 CodePtr OpPC = PC;
46785 const auto V0 = ReadArg<uint32_t>(S, PC);
46786 if (!SetThisField<PT_FixedPoint>(S, OpPC, V0))
46787 return false;
46788 }
46789#if USE_TAILCALLS
46790 MUSTTAIL return InterpNext(S, PC);
46791#else
46792 return true;
46793#endif
46794}
46795PRESERVE_NONE
46796static bool Interp_SetThisFieldPtr(InterpState &S, CodePtr &PC) {
46797 {
46798 CodePtr OpPC = PC;
46799 const auto V0 = ReadArg<uint32_t>(S, PC);
46800 if (!SetThisField<PT_Ptr>(S, OpPC, V0))
46801 return false;
46802 }
46803#if USE_TAILCALLS
46804 MUSTTAIL return InterpNext(S, PC);
46805#else
46806 return true;
46807#endif
46808}
46809PRESERVE_NONE
46810static bool Interp_SetThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
46811 {
46812 CodePtr OpPC = PC;
46813 const auto V0 = ReadArg<uint32_t>(S, PC);
46814 if (!SetThisField<PT_MemberPtr>(S, OpPC, V0))
46815 return false;
46816 }
46817#if USE_TAILCALLS
46818 MUSTTAIL return InterpNext(S, PC);
46819#else
46820 return true;
46821#endif
46822}
46823PRESERVE_NONE
46824static bool Interp_SetThisFieldFloat(InterpState &S, CodePtr &PC) {
46825 {
46826 CodePtr OpPC = PC;
46827 const auto V0 = ReadArg<uint32_t>(S, PC);
46828 if (!SetThisField<PT_Float>(S, OpPC, V0))
46829 return false;
46830 }
46831#if USE_TAILCALLS
46832 MUSTTAIL return InterpNext(S, PC);
46833#else
46834 return true;
46835#endif
46836}
46837#endif
46838#ifdef GET_DISASM
46839case OP_SetThisFieldSint8:
46840 Text.Op = PrintName("SetThisFieldSint8");
46841 Text.Args.push_back(printArg<uint32_t>(P, PC));
46842 break;
46843case OP_SetThisFieldUint8:
46844 Text.Op = PrintName("SetThisFieldUint8");
46845 Text.Args.push_back(printArg<uint32_t>(P, PC));
46846 break;
46847case OP_SetThisFieldSint16:
46848 Text.Op = PrintName("SetThisFieldSint16");
46849 Text.Args.push_back(printArg<uint32_t>(P, PC));
46850 break;
46851case OP_SetThisFieldUint16:
46852 Text.Op = PrintName("SetThisFieldUint16");
46853 Text.Args.push_back(printArg<uint32_t>(P, PC));
46854 break;
46855case OP_SetThisFieldSint32:
46856 Text.Op = PrintName("SetThisFieldSint32");
46857 Text.Args.push_back(printArg<uint32_t>(P, PC));
46858 break;
46859case OP_SetThisFieldUint32:
46860 Text.Op = PrintName("SetThisFieldUint32");
46861 Text.Args.push_back(printArg<uint32_t>(P, PC));
46862 break;
46863case OP_SetThisFieldSint64:
46864 Text.Op = PrintName("SetThisFieldSint64");
46865 Text.Args.push_back(printArg<uint32_t>(P, PC));
46866 break;
46867case OP_SetThisFieldUint64:
46868 Text.Op = PrintName("SetThisFieldUint64");
46869 Text.Args.push_back(printArg<uint32_t>(P, PC));
46870 break;
46871case OP_SetThisFieldIntAP:
46872 Text.Op = PrintName("SetThisFieldIntAP");
46873 Text.Args.push_back(printArg<uint32_t>(P, PC));
46874 break;
46875case OP_SetThisFieldIntAPS:
46876 Text.Op = PrintName("SetThisFieldIntAPS");
46877 Text.Args.push_back(printArg<uint32_t>(P, PC));
46878 break;
46879case OP_SetThisFieldBool:
46880 Text.Op = PrintName("SetThisFieldBool");
46881 Text.Args.push_back(printArg<uint32_t>(P, PC));
46882 break;
46883case OP_SetThisFieldFixedPoint:
46884 Text.Op = PrintName("SetThisFieldFixedPoint");
46885 Text.Args.push_back(printArg<uint32_t>(P, PC));
46886 break;
46887case OP_SetThisFieldPtr:
46888 Text.Op = PrintName("SetThisFieldPtr");
46889 Text.Args.push_back(printArg<uint32_t>(P, PC));
46890 break;
46891case OP_SetThisFieldMemberPtr:
46892 Text.Op = PrintName("SetThisFieldMemberPtr");
46893 Text.Args.push_back(printArg<uint32_t>(P, PC));
46894 break;
46895case OP_SetThisFieldFloat:
46896 Text.Op = PrintName("SetThisFieldFloat");
46897 Text.Args.push_back(printArg<uint32_t>(P, PC));
46898 break;
46899#endif
46900#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46901bool emitSetThisFieldSint8( uint32_t , SourceInfo);
46902bool emitSetThisFieldUint8( uint32_t , SourceInfo);
46903bool emitSetThisFieldSint16( uint32_t , SourceInfo);
46904bool emitSetThisFieldUint16( uint32_t , SourceInfo);
46905bool emitSetThisFieldSint32( uint32_t , SourceInfo);
46906bool emitSetThisFieldUint32( uint32_t , SourceInfo);
46907bool emitSetThisFieldSint64( uint32_t , SourceInfo);
46908bool emitSetThisFieldUint64( uint32_t , SourceInfo);
46909bool emitSetThisFieldIntAP( uint32_t , SourceInfo);
46910bool emitSetThisFieldIntAPS( uint32_t , SourceInfo);
46911bool emitSetThisFieldBool( uint32_t , SourceInfo);
46912bool emitSetThisFieldFixedPoint( uint32_t , SourceInfo);
46913bool emitSetThisFieldPtr( uint32_t , SourceInfo);
46914bool emitSetThisFieldMemberPtr( uint32_t , SourceInfo);
46915bool emitSetThisFieldFloat( uint32_t , SourceInfo);
46916#endif
46917#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46918[[nodiscard]] bool emitSetThisField(PrimType, uint32_t, SourceInfo I);
46919#endif
46920#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
46921bool
46922#if defined(GET_EVAL_IMPL)
46923EvalEmitter
46924#else
46925ByteCodeEmitter
46926#endif
46927::emitSetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
46928 switch (T0) {
46929 case PT_Sint8:
46930 return emitSetThisFieldSint8(A0, I);
46931 case PT_Uint8:
46932 return emitSetThisFieldUint8(A0, I);
46933 case PT_Sint16:
46934 return emitSetThisFieldSint16(A0, I);
46935 case PT_Uint16:
46936 return emitSetThisFieldUint16(A0, I);
46937 case PT_Sint32:
46938 return emitSetThisFieldSint32(A0, I);
46939 case PT_Uint32:
46940 return emitSetThisFieldUint32(A0, I);
46941 case PT_Sint64:
46942 return emitSetThisFieldSint64(A0, I);
46943 case PT_Uint64:
46944 return emitSetThisFieldUint64(A0, I);
46945 case PT_IntAP:
46946 return emitSetThisFieldIntAP(A0, I);
46947 case PT_IntAPS:
46948 return emitSetThisFieldIntAPS(A0, I);
46949 case PT_Bool:
46950 return emitSetThisFieldBool(A0, I);
46951 case PT_FixedPoint:
46952 return emitSetThisFieldFixedPoint(A0, I);
46953 case PT_Ptr:
46954 return emitSetThisFieldPtr(A0, I);
46955 case PT_MemberPtr:
46956 return emitSetThisFieldMemberPtr(A0, I);
46957 case PT_Float:
46958 return emitSetThisFieldFloat(A0, I);
46959 }
46960 llvm_unreachable("invalid enum value");
46961}
46962#endif
46963#ifdef GET_LINK_IMPL
46964bool ByteCodeEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
46965 return emitOp<uint32_t>(OP_SetThisFieldSint8, A0, L);
46966}
46967bool ByteCodeEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
46968 return emitOp<uint32_t>(OP_SetThisFieldUint8, A0, L);
46969}
46970bool ByteCodeEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
46971 return emitOp<uint32_t>(OP_SetThisFieldSint16, A0, L);
46972}
46973bool ByteCodeEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
46974 return emitOp<uint32_t>(OP_SetThisFieldUint16, A0, L);
46975}
46976bool ByteCodeEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
46977 return emitOp<uint32_t>(OP_SetThisFieldSint32, A0, L);
46978}
46979bool ByteCodeEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
46980 return emitOp<uint32_t>(OP_SetThisFieldUint32, A0, L);
46981}
46982bool ByteCodeEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
46983 return emitOp<uint32_t>(OP_SetThisFieldSint64, A0, L);
46984}
46985bool ByteCodeEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
46986 return emitOp<uint32_t>(OP_SetThisFieldUint64, A0, L);
46987}
46988bool ByteCodeEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
46989 return emitOp<uint32_t>(OP_SetThisFieldIntAP, A0, L);
46990}
46991bool ByteCodeEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
46992 return emitOp<uint32_t>(OP_SetThisFieldIntAPS, A0, L);
46993}
46994bool ByteCodeEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
46995 return emitOp<uint32_t>(OP_SetThisFieldBool, A0, L);
46996}
46997bool ByteCodeEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
46998 return emitOp<uint32_t>(OP_SetThisFieldFixedPoint, A0, L);
46999}
47000bool ByteCodeEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
47001 return emitOp<uint32_t>(OP_SetThisFieldPtr, A0, L);
47002}
47003bool ByteCodeEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
47004 return emitOp<uint32_t>(OP_SetThisFieldMemberPtr, A0, L);
47005}
47006bool ByteCodeEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
47007 return emitOp<uint32_t>(OP_SetThisFieldFloat, A0, L);
47008}
47009#endif
47010#ifdef GET_EVAL_IMPL
47011bool EvalEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
47012 if (!isActive()) return true;
47013 CurrentSource = L;
47014 return SetThisField<PT_Sint8>(S, OpPC, A0);
47015}
47016bool EvalEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
47017 if (!isActive()) return true;
47018 CurrentSource = L;
47019 return SetThisField<PT_Uint8>(S, OpPC, A0);
47020}
47021bool EvalEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
47022 if (!isActive()) return true;
47023 CurrentSource = L;
47024 return SetThisField<PT_Sint16>(S, OpPC, A0);
47025}
47026bool EvalEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
47027 if (!isActive()) return true;
47028 CurrentSource = L;
47029 return SetThisField<PT_Uint16>(S, OpPC, A0);
47030}
47031bool EvalEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
47032 if (!isActive()) return true;
47033 CurrentSource = L;
47034 return SetThisField<PT_Sint32>(S, OpPC, A0);
47035}
47036bool EvalEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
47037 if (!isActive()) return true;
47038 CurrentSource = L;
47039 return SetThisField<PT_Uint32>(S, OpPC, A0);
47040}
47041bool EvalEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
47042 if (!isActive()) return true;
47043 CurrentSource = L;
47044 return SetThisField<PT_Sint64>(S, OpPC, A0);
47045}
47046bool EvalEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
47047 if (!isActive()) return true;
47048 CurrentSource = L;
47049 return SetThisField<PT_Uint64>(S, OpPC, A0);
47050}
47051bool EvalEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
47052 if (!isActive()) return true;
47053 CurrentSource = L;
47054 return SetThisField<PT_IntAP>(S, OpPC, A0);
47055}
47056bool EvalEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
47057 if (!isActive()) return true;
47058 CurrentSource = L;
47059 return SetThisField<PT_IntAPS>(S, OpPC, A0);
47060}
47061bool EvalEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
47062 if (!isActive()) return true;
47063 CurrentSource = L;
47064 return SetThisField<PT_Bool>(S, OpPC, A0);
47065}
47066bool EvalEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
47067 if (!isActive()) return true;
47068 CurrentSource = L;
47069 return SetThisField<PT_FixedPoint>(S, OpPC, A0);
47070}
47071bool EvalEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
47072 if (!isActive()) return true;
47073 CurrentSource = L;
47074 return SetThisField<PT_Ptr>(S, OpPC, A0);
47075}
47076bool EvalEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
47077 if (!isActive()) return true;
47078 CurrentSource = L;
47079 return SetThisField<PT_MemberPtr>(S, OpPC, A0);
47080}
47081bool EvalEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
47082 if (!isActive()) return true;
47083 CurrentSource = L;
47084 return SetThisField<PT_Float>(S, OpPC, A0);
47085}
47086#endif
47087#ifdef GET_OPCODE_NAMES
47088OP_ShiftFixedPoint,
47089#endif
47090#ifdef GET_INTERPFN_LIST
47091&Interp_ShiftFixedPoint,
47092#endif
47093#ifdef GET_INTERPFN_DISPATCHERS
47094PRESERVE_NONE
47095static bool Interp_ShiftFixedPoint(InterpState &S, CodePtr &PC) {
47096 {
47097 CodePtr OpPC = PC;
47098 const auto V0 = ReadArg<bool>(S, PC);
47099 if (!ShiftFixedPoint(S, OpPC, V0))
47100 return false;
47101 }
47102#if USE_TAILCALLS
47103 MUSTTAIL return InterpNext(S, PC);
47104#else
47105 return true;
47106#endif
47107}
47108#endif
47109#ifdef GET_DISASM
47110case OP_ShiftFixedPoint:
47111 Text.Op = PrintName("ShiftFixedPoint");
47112 Text.Args.push_back(printArg<bool>(P, PC));
47113 break;
47114#endif
47115#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
47116bool emitShiftFixedPoint( bool , SourceInfo);
47117#endif
47118#ifdef GET_LINK_IMPL
47119bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
47120 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
47121}
47122#endif
47123#ifdef GET_EVAL_IMPL
47124bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
47125 if (!isActive()) return true;
47126 CurrentSource = L;
47127 return ShiftFixedPoint(S, OpPC, A0);
47128}
47129#endif
47130#ifdef GET_OPCODE_NAMES
47131OP_ShlSint8Sint8,
47132OP_ShlSint8Uint8,
47133OP_ShlSint8Sint16,
47134OP_ShlSint8Uint16,
47135OP_ShlSint8Sint32,
47136OP_ShlSint8Uint32,
47137OP_ShlSint8Sint64,
47138OP_ShlSint8Uint64,
47139OP_ShlSint8IntAP,
47140OP_ShlSint8IntAPS,
47141OP_ShlUint8Sint8,
47142OP_ShlUint8Uint8,
47143OP_ShlUint8Sint16,
47144OP_ShlUint8Uint16,
47145OP_ShlUint8Sint32,
47146OP_ShlUint8Uint32,
47147OP_ShlUint8Sint64,
47148OP_ShlUint8Uint64,
47149OP_ShlUint8IntAP,
47150OP_ShlUint8IntAPS,
47151OP_ShlSint16Sint8,
47152OP_ShlSint16Uint8,
47153OP_ShlSint16Sint16,
47154OP_ShlSint16Uint16,
47155OP_ShlSint16Sint32,
47156OP_ShlSint16Uint32,
47157OP_ShlSint16Sint64,
47158OP_ShlSint16Uint64,
47159OP_ShlSint16IntAP,
47160OP_ShlSint16IntAPS,
47161OP_ShlUint16Sint8,
47162OP_ShlUint16Uint8,
47163OP_ShlUint16Sint16,
47164OP_ShlUint16Uint16,
47165OP_ShlUint16Sint32,
47166OP_ShlUint16Uint32,
47167OP_ShlUint16Sint64,
47168OP_ShlUint16Uint64,
47169OP_ShlUint16IntAP,
47170OP_ShlUint16IntAPS,
47171OP_ShlSint32Sint8,
47172OP_ShlSint32Uint8,
47173OP_ShlSint32Sint16,
47174OP_ShlSint32Uint16,
47175OP_ShlSint32Sint32,
47176OP_ShlSint32Uint32,
47177OP_ShlSint32Sint64,
47178OP_ShlSint32Uint64,
47179OP_ShlSint32IntAP,
47180OP_ShlSint32IntAPS,
47181OP_ShlUint32Sint8,
47182OP_ShlUint32Uint8,
47183OP_ShlUint32Sint16,
47184OP_ShlUint32Uint16,
47185OP_ShlUint32Sint32,
47186OP_ShlUint32Uint32,
47187OP_ShlUint32Sint64,
47188OP_ShlUint32Uint64,
47189OP_ShlUint32IntAP,
47190OP_ShlUint32IntAPS,
47191OP_ShlSint64Sint8,
47192OP_ShlSint64Uint8,
47193OP_ShlSint64Sint16,
47194OP_ShlSint64Uint16,
47195OP_ShlSint64Sint32,
47196OP_ShlSint64Uint32,
47197OP_ShlSint64Sint64,
47198OP_ShlSint64Uint64,
47199OP_ShlSint64IntAP,
47200OP_ShlSint64IntAPS,
47201OP_ShlUint64Sint8,
47202OP_ShlUint64Uint8,
47203OP_ShlUint64Sint16,
47204OP_ShlUint64Uint16,
47205OP_ShlUint64Sint32,
47206OP_ShlUint64Uint32,
47207OP_ShlUint64Sint64,
47208OP_ShlUint64Uint64,
47209OP_ShlUint64IntAP,
47210OP_ShlUint64IntAPS,
47211OP_ShlIntAPSint8,
47212OP_ShlIntAPUint8,
47213OP_ShlIntAPSint16,
47214OP_ShlIntAPUint16,
47215OP_ShlIntAPSint32,
47216OP_ShlIntAPUint32,
47217OP_ShlIntAPSint64,
47218OP_ShlIntAPUint64,
47219OP_ShlIntAPIntAP,
47220OP_ShlIntAPIntAPS,
47221OP_ShlIntAPSSint8,
47222OP_ShlIntAPSUint8,
47223OP_ShlIntAPSSint16,
47224OP_ShlIntAPSUint16,
47225OP_ShlIntAPSSint32,
47226OP_ShlIntAPSUint32,
47227OP_ShlIntAPSSint64,
47228OP_ShlIntAPSUint64,
47229OP_ShlIntAPSIntAP,
47230OP_ShlIntAPSIntAPS,
47231#endif
47232#ifdef GET_INTERPFN_LIST
47233&Interp_ShlSint8Sint8,
47234&Interp_ShlSint8Uint8,
47235&Interp_ShlSint8Sint16,
47236&Interp_ShlSint8Uint16,
47237&Interp_ShlSint8Sint32,
47238&Interp_ShlSint8Uint32,
47239&Interp_ShlSint8Sint64,
47240&Interp_ShlSint8Uint64,
47241&Interp_ShlSint8IntAP,
47242&Interp_ShlSint8IntAPS,
47243&Interp_ShlUint8Sint8,
47244&Interp_ShlUint8Uint8,
47245&Interp_ShlUint8Sint16,
47246&Interp_ShlUint8Uint16,
47247&Interp_ShlUint8Sint32,
47248&Interp_ShlUint8Uint32,
47249&Interp_ShlUint8Sint64,
47250&Interp_ShlUint8Uint64,
47251&Interp_ShlUint8IntAP,
47252&Interp_ShlUint8IntAPS,
47253&Interp_ShlSint16Sint8,
47254&Interp_ShlSint16Uint8,
47255&Interp_ShlSint16Sint16,
47256&Interp_ShlSint16Uint16,
47257&Interp_ShlSint16Sint32,
47258&Interp_ShlSint16Uint32,
47259&Interp_ShlSint16Sint64,
47260&Interp_ShlSint16Uint64,
47261&Interp_ShlSint16IntAP,
47262&Interp_ShlSint16IntAPS,
47263&Interp_ShlUint16Sint8,
47264&Interp_ShlUint16Uint8,
47265&Interp_ShlUint16Sint16,
47266&Interp_ShlUint16Uint16,
47267&Interp_ShlUint16Sint32,
47268&Interp_ShlUint16Uint32,
47269&Interp_ShlUint16Sint64,
47270&Interp_ShlUint16Uint64,
47271&Interp_ShlUint16IntAP,
47272&Interp_ShlUint16IntAPS,
47273&Interp_ShlSint32Sint8,
47274&Interp_ShlSint32Uint8,
47275&Interp_ShlSint32Sint16,
47276&Interp_ShlSint32Uint16,
47277&Interp_ShlSint32Sint32,
47278&Interp_ShlSint32Uint32,
47279&Interp_ShlSint32Sint64,
47280&Interp_ShlSint32Uint64,
47281&Interp_ShlSint32IntAP,
47282&Interp_ShlSint32IntAPS,
47283&Interp_ShlUint32Sint8,
47284&Interp_ShlUint32Uint8,
47285&Interp_ShlUint32Sint16,
47286&Interp_ShlUint32Uint16,
47287&Interp_ShlUint32Sint32,
47288&Interp_ShlUint32Uint32,
47289&Interp_ShlUint32Sint64,
47290&Interp_ShlUint32Uint64,
47291&Interp_ShlUint32IntAP,
47292&Interp_ShlUint32IntAPS,
47293&Interp_ShlSint64Sint8,
47294&Interp_ShlSint64Uint8,
47295&Interp_ShlSint64Sint16,
47296&Interp_ShlSint64Uint16,
47297&Interp_ShlSint64Sint32,
47298&Interp_ShlSint64Uint32,
47299&Interp_ShlSint64Sint64,
47300&Interp_ShlSint64Uint64,
47301&Interp_ShlSint64IntAP,
47302&Interp_ShlSint64IntAPS,
47303&Interp_ShlUint64Sint8,
47304&Interp_ShlUint64Uint8,
47305&Interp_ShlUint64Sint16,
47306&Interp_ShlUint64Uint16,
47307&Interp_ShlUint64Sint32,
47308&Interp_ShlUint64Uint32,
47309&Interp_ShlUint64Sint64,
47310&Interp_ShlUint64Uint64,
47311&Interp_ShlUint64IntAP,
47312&Interp_ShlUint64IntAPS,
47313&Interp_ShlIntAPSint8,
47314&Interp_ShlIntAPUint8,
47315&Interp_ShlIntAPSint16,
47316&Interp_ShlIntAPUint16,
47317&Interp_ShlIntAPSint32,
47318&Interp_ShlIntAPUint32,
47319&Interp_ShlIntAPSint64,
47320&Interp_ShlIntAPUint64,
47321&Interp_ShlIntAPIntAP,
47322&Interp_ShlIntAPIntAPS,
47323&Interp_ShlIntAPSSint8,
47324&Interp_ShlIntAPSUint8,
47325&Interp_ShlIntAPSSint16,
47326&Interp_ShlIntAPSUint16,
47327&Interp_ShlIntAPSSint32,
47328&Interp_ShlIntAPSUint32,
47329&Interp_ShlIntAPSSint64,
47330&Interp_ShlIntAPSUint64,
47331&Interp_ShlIntAPSIntAP,
47332&Interp_ShlIntAPSIntAPS,
47333#endif
47334#ifdef GET_INTERPFN_DISPATCHERS
47335PRESERVE_NONE
47336static bool Interp_ShlSint8Sint8(InterpState &S, CodePtr &PC) {
47337 if (!Shl<PT_Sint8, PT_Sint8>(S, PC))
47338 return false;
47339#if USE_TAILCALLS
47340 MUSTTAIL return InterpNext(S, PC);
47341#else
47342 return true;
47343#endif
47344}
47345PRESERVE_NONE
47346static bool Interp_ShlSint8Uint8(InterpState &S, CodePtr &PC) {
47347 if (!Shl<PT_Sint8, PT_Uint8>(S, PC))
47348 return false;
47349#if USE_TAILCALLS
47350 MUSTTAIL return InterpNext(S, PC);
47351#else
47352 return true;
47353#endif
47354}
47355PRESERVE_NONE
47356static bool Interp_ShlSint8Sint16(InterpState &S, CodePtr &PC) {
47357 if (!Shl<PT_Sint8, PT_Sint16>(S, PC))
47358 return false;
47359#if USE_TAILCALLS
47360 MUSTTAIL return InterpNext(S, PC);
47361#else
47362 return true;
47363#endif
47364}
47365PRESERVE_NONE
47366static bool Interp_ShlSint8Uint16(InterpState &S, CodePtr &PC) {
47367 if (!Shl<PT_Sint8, PT_Uint16>(S, PC))
47368 return false;
47369#if USE_TAILCALLS
47370 MUSTTAIL return InterpNext(S, PC);
47371#else
47372 return true;
47373#endif
47374}
47375PRESERVE_NONE
47376static bool Interp_ShlSint8Sint32(InterpState &S, CodePtr &PC) {
47377 if (!Shl<PT_Sint8, PT_Sint32>(S, PC))
47378 return false;
47379#if USE_TAILCALLS
47380 MUSTTAIL return InterpNext(S, PC);
47381#else
47382 return true;
47383#endif
47384}
47385PRESERVE_NONE
47386static bool Interp_ShlSint8Uint32(InterpState &S, CodePtr &PC) {
47387 if (!Shl<PT_Sint8, PT_Uint32>(S, PC))
47388 return false;
47389#if USE_TAILCALLS
47390 MUSTTAIL return InterpNext(S, PC);
47391#else
47392 return true;
47393#endif
47394}
47395PRESERVE_NONE
47396static bool Interp_ShlSint8Sint64(InterpState &S, CodePtr &PC) {
47397 if (!Shl<PT_Sint8, PT_Sint64>(S, PC))
47398 return false;
47399#if USE_TAILCALLS
47400 MUSTTAIL return InterpNext(S, PC);
47401#else
47402 return true;
47403#endif
47404}
47405PRESERVE_NONE
47406static bool Interp_ShlSint8Uint64(InterpState &S, CodePtr &PC) {
47407 if (!Shl<PT_Sint8, PT_Uint64>(S, PC))
47408 return false;
47409#if USE_TAILCALLS
47410 MUSTTAIL return InterpNext(S, PC);
47411#else
47412 return true;
47413#endif
47414}
47415PRESERVE_NONE
47416static bool Interp_ShlSint8IntAP(InterpState &S, CodePtr &PC) {
47417 if (!Shl<PT_Sint8, PT_IntAP>(S, PC))
47418 return false;
47419#if USE_TAILCALLS
47420 MUSTTAIL return InterpNext(S, PC);
47421#else
47422 return true;
47423#endif
47424}
47425PRESERVE_NONE
47426static bool Interp_ShlSint8IntAPS(InterpState &S, CodePtr &PC) {
47427 if (!Shl<PT_Sint8, PT_IntAPS>(S, PC))
47428 return false;
47429#if USE_TAILCALLS
47430 MUSTTAIL return InterpNext(S, PC);
47431#else
47432 return true;
47433#endif
47434}
47435PRESERVE_NONE
47436static bool Interp_ShlUint8Sint8(InterpState &S, CodePtr &PC) {
47437 if (!Shl<PT_Uint8, PT_Sint8>(S, PC))
47438 return false;
47439#if USE_TAILCALLS
47440 MUSTTAIL return InterpNext(S, PC);
47441#else
47442 return true;
47443#endif
47444}
47445PRESERVE_NONE
47446static bool Interp_ShlUint8Uint8(InterpState &S, CodePtr &PC) {
47447 if (!Shl<PT_Uint8, PT_Uint8>(S, PC))
47448 return false;
47449#if USE_TAILCALLS
47450 MUSTTAIL return InterpNext(S, PC);
47451#else
47452 return true;
47453#endif
47454}
47455PRESERVE_NONE
47456static bool Interp_ShlUint8Sint16(InterpState &S, CodePtr &PC) {
47457 if (!Shl<PT_Uint8, PT_Sint16>(S, PC))
47458 return false;
47459#if USE_TAILCALLS
47460 MUSTTAIL return InterpNext(S, PC);
47461#else
47462 return true;
47463#endif
47464}
47465PRESERVE_NONE
47466static bool Interp_ShlUint8Uint16(InterpState &S, CodePtr &PC) {
47467 if (!Shl<PT_Uint8, PT_Uint16>(S, PC))
47468 return false;
47469#if USE_TAILCALLS
47470 MUSTTAIL return InterpNext(S, PC);
47471#else
47472 return true;
47473#endif
47474}
47475PRESERVE_NONE
47476static bool Interp_ShlUint8Sint32(InterpState &S, CodePtr &PC) {
47477 if (!Shl<PT_Uint8, PT_Sint32>(S, PC))
47478 return false;
47479#if USE_TAILCALLS
47480 MUSTTAIL return InterpNext(S, PC);
47481#else
47482 return true;
47483#endif
47484}
47485PRESERVE_NONE
47486static bool Interp_ShlUint8Uint32(InterpState &S, CodePtr &PC) {
47487 if (!Shl<PT_Uint8, PT_Uint32>(S, PC))
47488 return false;
47489#if USE_TAILCALLS
47490 MUSTTAIL return InterpNext(S, PC);
47491#else
47492 return true;
47493#endif
47494}
47495PRESERVE_NONE
47496static bool Interp_ShlUint8Sint64(InterpState &S, CodePtr &PC) {
47497 if (!Shl<PT_Uint8, PT_Sint64>(S, PC))
47498 return false;
47499#if USE_TAILCALLS
47500 MUSTTAIL return InterpNext(S, PC);
47501#else
47502 return true;
47503#endif
47504}
47505PRESERVE_NONE
47506static bool Interp_ShlUint8Uint64(InterpState &S, CodePtr &PC) {
47507 if (!Shl<PT_Uint8, PT_Uint64>(S, PC))
47508 return false;
47509#if USE_TAILCALLS
47510 MUSTTAIL return InterpNext(S, PC);
47511#else
47512 return true;
47513#endif
47514}
47515PRESERVE_NONE
47516static bool Interp_ShlUint8IntAP(InterpState &S, CodePtr &PC) {
47517 if (!Shl<PT_Uint8, PT_IntAP>(S, PC))
47518 return false;
47519#if USE_TAILCALLS
47520 MUSTTAIL return InterpNext(S, PC);
47521#else
47522 return true;
47523#endif
47524}
47525PRESERVE_NONE
47526static bool Interp_ShlUint8IntAPS(InterpState &S, CodePtr &PC) {
47527 if (!Shl<PT_Uint8, PT_IntAPS>(S, PC))
47528 return false;
47529#if USE_TAILCALLS
47530 MUSTTAIL return InterpNext(S, PC);
47531#else
47532 return true;
47533#endif
47534}
47535PRESERVE_NONE
47536static bool Interp_ShlSint16Sint8(InterpState &S, CodePtr &PC) {
47537 if (!Shl<PT_Sint16, PT_Sint8>(S, PC))
47538 return false;
47539#if USE_TAILCALLS
47540 MUSTTAIL return InterpNext(S, PC);
47541#else
47542 return true;
47543#endif
47544}
47545PRESERVE_NONE
47546static bool Interp_ShlSint16Uint8(InterpState &S, CodePtr &PC) {
47547 if (!Shl<PT_Sint16, PT_Uint8>(S, PC))
47548 return false;
47549#if USE_TAILCALLS
47550 MUSTTAIL return InterpNext(S, PC);
47551#else
47552 return true;
47553#endif
47554}
47555PRESERVE_NONE
47556static bool Interp_ShlSint16Sint16(InterpState &S, CodePtr &PC) {
47557 if (!Shl<PT_Sint16, PT_Sint16>(S, PC))
47558 return false;
47559#if USE_TAILCALLS
47560 MUSTTAIL return InterpNext(S, PC);
47561#else
47562 return true;
47563#endif
47564}
47565PRESERVE_NONE
47566static bool Interp_ShlSint16Uint16(InterpState &S, CodePtr &PC) {
47567 if (!Shl<PT_Sint16, PT_Uint16>(S, PC))
47568 return false;
47569#if USE_TAILCALLS
47570 MUSTTAIL return InterpNext(S, PC);
47571#else
47572 return true;
47573#endif
47574}
47575PRESERVE_NONE
47576static bool Interp_ShlSint16Sint32(InterpState &S, CodePtr &PC) {
47577 if (!Shl<PT_Sint16, PT_Sint32>(S, PC))
47578 return false;
47579#if USE_TAILCALLS
47580 MUSTTAIL return InterpNext(S, PC);
47581#else
47582 return true;
47583#endif
47584}
47585PRESERVE_NONE
47586static bool Interp_ShlSint16Uint32(InterpState &S, CodePtr &PC) {
47587 if (!Shl<PT_Sint16, PT_Uint32>(S, PC))
47588 return false;
47589#if USE_TAILCALLS
47590 MUSTTAIL return InterpNext(S, PC);
47591#else
47592 return true;
47593#endif
47594}
47595PRESERVE_NONE
47596static bool Interp_ShlSint16Sint64(InterpState &S, CodePtr &PC) {
47597 if (!Shl<PT_Sint16, PT_Sint64>(S, PC))
47598 return false;
47599#if USE_TAILCALLS
47600 MUSTTAIL return InterpNext(S, PC);
47601#else
47602 return true;
47603#endif
47604}
47605PRESERVE_NONE
47606static bool Interp_ShlSint16Uint64(InterpState &S, CodePtr &PC) {
47607 if (!Shl<PT_Sint16, PT_Uint64>(S, PC))
47608 return false;
47609#if USE_TAILCALLS
47610 MUSTTAIL return InterpNext(S, PC);
47611#else
47612 return true;
47613#endif
47614}
47615PRESERVE_NONE
47616static bool Interp_ShlSint16IntAP(InterpState &S, CodePtr &PC) {
47617 if (!Shl<PT_Sint16, PT_IntAP>(S, PC))
47618 return false;
47619#if USE_TAILCALLS
47620 MUSTTAIL return InterpNext(S, PC);
47621#else
47622 return true;
47623#endif
47624}
47625PRESERVE_NONE
47626static bool Interp_ShlSint16IntAPS(InterpState &S, CodePtr &PC) {
47627 if (!Shl<PT_Sint16, PT_IntAPS>(S, PC))
47628 return false;
47629#if USE_TAILCALLS
47630 MUSTTAIL return InterpNext(S, PC);
47631#else
47632 return true;
47633#endif
47634}
47635PRESERVE_NONE
47636static bool Interp_ShlUint16Sint8(InterpState &S, CodePtr &PC) {
47637 if (!Shl<PT_Uint16, PT_Sint8>(S, PC))
47638 return false;
47639#if USE_TAILCALLS
47640 MUSTTAIL return InterpNext(S, PC);
47641#else
47642 return true;
47643#endif
47644}
47645PRESERVE_NONE
47646static bool Interp_ShlUint16Uint8(InterpState &S, CodePtr &PC) {
47647 if (!Shl<PT_Uint16, PT_Uint8>(S, PC))
47648 return false;
47649#if USE_TAILCALLS
47650 MUSTTAIL return InterpNext(S, PC);
47651#else
47652 return true;
47653#endif
47654}
47655PRESERVE_NONE
47656static bool Interp_ShlUint16Sint16(InterpState &S, CodePtr &PC) {
47657 if (!Shl<PT_Uint16, PT_Sint16>(S, PC))
47658 return false;
47659#if USE_TAILCALLS
47660 MUSTTAIL return InterpNext(S, PC);
47661#else
47662 return true;
47663#endif
47664}
47665PRESERVE_NONE
47666static bool Interp_ShlUint16Uint16(InterpState &S, CodePtr &PC) {
47667 if (!Shl<PT_Uint16, PT_Uint16>(S, PC))
47668 return false;
47669#if USE_TAILCALLS
47670 MUSTTAIL return InterpNext(S, PC);
47671#else
47672 return true;
47673#endif
47674}
47675PRESERVE_NONE
47676static bool Interp_ShlUint16Sint32(InterpState &S, CodePtr &PC) {
47677 if (!Shl<PT_Uint16, PT_Sint32>(S, PC))
47678 return false;
47679#if USE_TAILCALLS
47680 MUSTTAIL return InterpNext(S, PC);
47681#else
47682 return true;
47683#endif
47684}
47685PRESERVE_NONE
47686static bool Interp_ShlUint16Uint32(InterpState &S, CodePtr &PC) {
47687 if (!Shl<PT_Uint16, PT_Uint32>(S, PC))
47688 return false;
47689#if USE_TAILCALLS
47690 MUSTTAIL return InterpNext(S, PC);
47691#else
47692 return true;
47693#endif
47694}
47695PRESERVE_NONE
47696static bool Interp_ShlUint16Sint64(InterpState &S, CodePtr &PC) {
47697 if (!Shl<PT_Uint16, PT_Sint64>(S, PC))
47698 return false;
47699#if USE_TAILCALLS
47700 MUSTTAIL return InterpNext(S, PC);
47701#else
47702 return true;
47703#endif
47704}
47705PRESERVE_NONE
47706static bool Interp_ShlUint16Uint64(InterpState &S, CodePtr &PC) {
47707 if (!Shl<PT_Uint16, PT_Uint64>(S, PC))
47708 return false;
47709#if USE_TAILCALLS
47710 MUSTTAIL return InterpNext(S, PC);
47711#else
47712 return true;
47713#endif
47714}
47715PRESERVE_NONE
47716static bool Interp_ShlUint16IntAP(InterpState &S, CodePtr &PC) {
47717 if (!Shl<PT_Uint16, PT_IntAP>(S, PC))
47718 return false;
47719#if USE_TAILCALLS
47720 MUSTTAIL return InterpNext(S, PC);
47721#else
47722 return true;
47723#endif
47724}
47725PRESERVE_NONE
47726static bool Interp_ShlUint16IntAPS(InterpState &S, CodePtr &PC) {
47727 if (!Shl<PT_Uint16, PT_IntAPS>(S, PC))
47728 return false;
47729#if USE_TAILCALLS
47730 MUSTTAIL return InterpNext(S, PC);
47731#else
47732 return true;
47733#endif
47734}
47735PRESERVE_NONE
47736static bool Interp_ShlSint32Sint8(InterpState &S, CodePtr &PC) {
47737 if (!Shl<PT_Sint32, PT_Sint8>(S, PC))
47738 return false;
47739#if USE_TAILCALLS
47740 MUSTTAIL return InterpNext(S, PC);
47741#else
47742 return true;
47743#endif
47744}
47745PRESERVE_NONE
47746static bool Interp_ShlSint32Uint8(InterpState &S, CodePtr &PC) {
47747 if (!Shl<PT_Sint32, PT_Uint8>(S, PC))
47748 return false;
47749#if USE_TAILCALLS
47750 MUSTTAIL return InterpNext(S, PC);
47751#else
47752 return true;
47753#endif
47754}
47755PRESERVE_NONE
47756static bool Interp_ShlSint32Sint16(InterpState &S, CodePtr &PC) {
47757 if (!Shl<PT_Sint32, PT_Sint16>(S, PC))
47758 return false;
47759#if USE_TAILCALLS
47760 MUSTTAIL return InterpNext(S, PC);
47761#else
47762 return true;
47763#endif
47764}
47765PRESERVE_NONE
47766static bool Interp_ShlSint32Uint16(InterpState &S, CodePtr &PC) {
47767 if (!Shl<PT_Sint32, PT_Uint16>(S, PC))
47768 return false;
47769#if USE_TAILCALLS
47770 MUSTTAIL return InterpNext(S, PC);
47771#else
47772 return true;
47773#endif
47774}
47775PRESERVE_NONE
47776static bool Interp_ShlSint32Sint32(InterpState &S, CodePtr &PC) {
47777 if (!Shl<PT_Sint32, PT_Sint32>(S, PC))
47778 return false;
47779#if USE_TAILCALLS
47780 MUSTTAIL return InterpNext(S, PC);
47781#else
47782 return true;
47783#endif
47784}
47785PRESERVE_NONE
47786static bool Interp_ShlSint32Uint32(InterpState &S, CodePtr &PC) {
47787 if (!Shl<PT_Sint32, PT_Uint32>(S, PC))
47788 return false;
47789#if USE_TAILCALLS
47790 MUSTTAIL return InterpNext(S, PC);
47791#else
47792 return true;
47793#endif
47794}
47795PRESERVE_NONE
47796static bool Interp_ShlSint32Sint64(InterpState &S, CodePtr &PC) {
47797 if (!Shl<PT_Sint32, PT_Sint64>(S, PC))
47798 return false;
47799#if USE_TAILCALLS
47800 MUSTTAIL return InterpNext(S, PC);
47801#else
47802 return true;
47803#endif
47804}
47805PRESERVE_NONE
47806static bool Interp_ShlSint32Uint64(InterpState &S, CodePtr &PC) {
47807 if (!Shl<PT_Sint32, PT_Uint64>(S, PC))
47808 return false;
47809#if USE_TAILCALLS
47810 MUSTTAIL return InterpNext(S, PC);
47811#else
47812 return true;
47813#endif
47814}
47815PRESERVE_NONE
47816static bool Interp_ShlSint32IntAP(InterpState &S, CodePtr &PC) {
47817 if (!Shl<PT_Sint32, PT_IntAP>(S, PC))
47818 return false;
47819#if USE_TAILCALLS
47820 MUSTTAIL return InterpNext(S, PC);
47821#else
47822 return true;
47823#endif
47824}
47825PRESERVE_NONE
47826static bool Interp_ShlSint32IntAPS(InterpState &S, CodePtr &PC) {
47827 if (!Shl<PT_Sint32, PT_IntAPS>(S, PC))
47828 return false;
47829#if USE_TAILCALLS
47830 MUSTTAIL return InterpNext(S, PC);
47831#else
47832 return true;
47833#endif
47834}
47835PRESERVE_NONE
47836static bool Interp_ShlUint32Sint8(InterpState &S, CodePtr &PC) {
47837 if (!Shl<PT_Uint32, PT_Sint8>(S, PC))
47838 return false;
47839#if USE_TAILCALLS
47840 MUSTTAIL return InterpNext(S, PC);
47841#else
47842 return true;
47843#endif
47844}
47845PRESERVE_NONE
47846static bool Interp_ShlUint32Uint8(InterpState &S, CodePtr &PC) {
47847 if (!Shl<PT_Uint32, PT_Uint8>(S, PC))
47848 return false;
47849#if USE_TAILCALLS
47850 MUSTTAIL return InterpNext(S, PC);
47851#else
47852 return true;
47853#endif
47854}
47855PRESERVE_NONE
47856static bool Interp_ShlUint32Sint16(InterpState &S, CodePtr &PC) {
47857 if (!Shl<PT_Uint32, PT_Sint16>(S, PC))
47858 return false;
47859#if USE_TAILCALLS
47860 MUSTTAIL return InterpNext(S, PC);
47861#else
47862 return true;
47863#endif
47864}
47865PRESERVE_NONE
47866static bool Interp_ShlUint32Uint16(InterpState &S, CodePtr &PC) {
47867 if (!Shl<PT_Uint32, PT_Uint16>(S, PC))
47868 return false;
47869#if USE_TAILCALLS
47870 MUSTTAIL return InterpNext(S, PC);
47871#else
47872 return true;
47873#endif
47874}
47875PRESERVE_NONE
47876static bool Interp_ShlUint32Sint32(InterpState &S, CodePtr &PC) {
47877 if (!Shl<PT_Uint32, PT_Sint32>(S, PC))
47878 return false;
47879#if USE_TAILCALLS
47880 MUSTTAIL return InterpNext(S, PC);
47881#else
47882 return true;
47883#endif
47884}
47885PRESERVE_NONE
47886static bool Interp_ShlUint32Uint32(InterpState &S, CodePtr &PC) {
47887 if (!Shl<PT_Uint32, PT_Uint32>(S, PC))
47888 return false;
47889#if USE_TAILCALLS
47890 MUSTTAIL return InterpNext(S, PC);
47891#else
47892 return true;
47893#endif
47894}
47895PRESERVE_NONE
47896static bool Interp_ShlUint32Sint64(InterpState &S, CodePtr &PC) {
47897 if (!Shl<PT_Uint32, PT_Sint64>(S, PC))
47898 return false;
47899#if USE_TAILCALLS
47900 MUSTTAIL return InterpNext(S, PC);
47901#else
47902 return true;
47903#endif
47904}
47905PRESERVE_NONE
47906static bool Interp_ShlUint32Uint64(InterpState &S, CodePtr &PC) {
47907 if (!Shl<PT_Uint32, PT_Uint64>(S, PC))
47908 return false;
47909#if USE_TAILCALLS
47910 MUSTTAIL return InterpNext(S, PC);
47911#else
47912 return true;
47913#endif
47914}
47915PRESERVE_NONE
47916static bool Interp_ShlUint32IntAP(InterpState &S, CodePtr &PC) {
47917 if (!Shl<PT_Uint32, PT_IntAP>(S, PC))
47918 return false;
47919#if USE_TAILCALLS
47920 MUSTTAIL return InterpNext(S, PC);
47921#else
47922 return true;
47923#endif
47924}
47925PRESERVE_NONE
47926static bool Interp_ShlUint32IntAPS(InterpState &S, CodePtr &PC) {
47927 if (!Shl<PT_Uint32, PT_IntAPS>(S, PC))
47928 return false;
47929#if USE_TAILCALLS
47930 MUSTTAIL return InterpNext(S, PC);
47931#else
47932 return true;
47933#endif
47934}
47935PRESERVE_NONE
47936static bool Interp_ShlSint64Sint8(InterpState &S, CodePtr &PC) {
47937 if (!Shl<PT_Sint64, PT_Sint8>(S, PC))
47938 return false;
47939#if USE_TAILCALLS
47940 MUSTTAIL return InterpNext(S, PC);
47941#else
47942 return true;
47943#endif
47944}
47945PRESERVE_NONE
47946static bool Interp_ShlSint64Uint8(InterpState &S, CodePtr &PC) {
47947 if (!Shl<PT_Sint64, PT_Uint8>(S, PC))
47948 return false;
47949#if USE_TAILCALLS
47950 MUSTTAIL return InterpNext(S, PC);
47951#else
47952 return true;
47953#endif
47954}
47955PRESERVE_NONE
47956static bool Interp_ShlSint64Sint16(InterpState &S, CodePtr &PC) {
47957 if (!Shl<PT_Sint64, PT_Sint16>(S, PC))
47958 return false;
47959#if USE_TAILCALLS
47960 MUSTTAIL return InterpNext(S, PC);
47961#else
47962 return true;
47963#endif
47964}
47965PRESERVE_NONE
47966static bool Interp_ShlSint64Uint16(InterpState &S, CodePtr &PC) {
47967 if (!Shl<PT_Sint64, PT_Uint16>(S, PC))
47968 return false;
47969#if USE_TAILCALLS
47970 MUSTTAIL return InterpNext(S, PC);
47971#else
47972 return true;
47973#endif
47974}
47975PRESERVE_NONE
47976static bool Interp_ShlSint64Sint32(InterpState &S, CodePtr &PC) {
47977 if (!Shl<PT_Sint64, PT_Sint32>(S, PC))
47978 return false;
47979#if USE_TAILCALLS
47980 MUSTTAIL return InterpNext(S, PC);
47981#else
47982 return true;
47983#endif
47984}
47985PRESERVE_NONE
47986static bool Interp_ShlSint64Uint32(InterpState &S, CodePtr &PC) {
47987 if (!Shl<PT_Sint64, PT_Uint32>(S, PC))
47988 return false;
47989#if USE_TAILCALLS
47990 MUSTTAIL return InterpNext(S, PC);
47991#else
47992 return true;
47993#endif
47994}
47995PRESERVE_NONE
47996static bool Interp_ShlSint64Sint64(InterpState &S, CodePtr &PC) {
47997 if (!Shl<PT_Sint64, PT_Sint64>(S, PC))
47998 return false;
47999#if USE_TAILCALLS
48000 MUSTTAIL return InterpNext(S, PC);
48001#else
48002 return true;
48003#endif
48004}
48005PRESERVE_NONE
48006static bool Interp_ShlSint64Uint64(InterpState &S, CodePtr &PC) {
48007 if (!Shl<PT_Sint64, PT_Uint64>(S, PC))
48008 return false;
48009#if USE_TAILCALLS
48010 MUSTTAIL return InterpNext(S, PC);
48011#else
48012 return true;
48013#endif
48014}
48015PRESERVE_NONE
48016static bool Interp_ShlSint64IntAP(InterpState &S, CodePtr &PC) {
48017 if (!Shl<PT_Sint64, PT_IntAP>(S, PC))
48018 return false;
48019#if USE_TAILCALLS
48020 MUSTTAIL return InterpNext(S, PC);
48021#else
48022 return true;
48023#endif
48024}
48025PRESERVE_NONE
48026static bool Interp_ShlSint64IntAPS(InterpState &S, CodePtr &PC) {
48027 if (!Shl<PT_Sint64, PT_IntAPS>(S, PC))
48028 return false;
48029#if USE_TAILCALLS
48030 MUSTTAIL return InterpNext(S, PC);
48031#else
48032 return true;
48033#endif
48034}
48035PRESERVE_NONE
48036static bool Interp_ShlUint64Sint8(InterpState &S, CodePtr &PC) {
48037 if (!Shl<PT_Uint64, PT_Sint8>(S, PC))
48038 return false;
48039#if USE_TAILCALLS
48040 MUSTTAIL return InterpNext(S, PC);
48041#else
48042 return true;
48043#endif
48044}
48045PRESERVE_NONE
48046static bool Interp_ShlUint64Uint8(InterpState &S, CodePtr &PC) {
48047 if (!Shl<PT_Uint64, PT_Uint8>(S, PC))
48048 return false;
48049#if USE_TAILCALLS
48050 MUSTTAIL return InterpNext(S, PC);
48051#else
48052 return true;
48053#endif
48054}
48055PRESERVE_NONE
48056static bool Interp_ShlUint64Sint16(InterpState &S, CodePtr &PC) {
48057 if (!Shl<PT_Uint64, PT_Sint16>(S, PC))
48058 return false;
48059#if USE_TAILCALLS
48060 MUSTTAIL return InterpNext(S, PC);
48061#else
48062 return true;
48063#endif
48064}
48065PRESERVE_NONE
48066static bool Interp_ShlUint64Uint16(InterpState &S, CodePtr &PC) {
48067 if (!Shl<PT_Uint64, PT_Uint16>(S, PC))
48068 return false;
48069#if USE_TAILCALLS
48070 MUSTTAIL return InterpNext(S, PC);
48071#else
48072 return true;
48073#endif
48074}
48075PRESERVE_NONE
48076static bool Interp_ShlUint64Sint32(InterpState &S, CodePtr &PC) {
48077 if (!Shl<PT_Uint64, PT_Sint32>(S, PC))
48078 return false;
48079#if USE_TAILCALLS
48080 MUSTTAIL return InterpNext(S, PC);
48081#else
48082 return true;
48083#endif
48084}
48085PRESERVE_NONE
48086static bool Interp_ShlUint64Uint32(InterpState &S, CodePtr &PC) {
48087 if (!Shl<PT_Uint64, PT_Uint32>(S, PC))
48088 return false;
48089#if USE_TAILCALLS
48090 MUSTTAIL return InterpNext(S, PC);
48091#else
48092 return true;
48093#endif
48094}
48095PRESERVE_NONE
48096static bool Interp_ShlUint64Sint64(InterpState &S, CodePtr &PC) {
48097 if (!Shl<PT_Uint64, PT_Sint64>(S, PC))
48098 return false;
48099#if USE_TAILCALLS
48100 MUSTTAIL return InterpNext(S, PC);
48101#else
48102 return true;
48103#endif
48104}
48105PRESERVE_NONE
48106static bool Interp_ShlUint64Uint64(InterpState &S, CodePtr &PC) {
48107 if (!Shl<PT_Uint64, PT_Uint64>(S, PC))
48108 return false;
48109#if USE_TAILCALLS
48110 MUSTTAIL return InterpNext(S, PC);
48111#else
48112 return true;
48113#endif
48114}
48115PRESERVE_NONE
48116static bool Interp_ShlUint64IntAP(InterpState &S, CodePtr &PC) {
48117 if (!Shl<PT_Uint64, PT_IntAP>(S, PC))
48118 return false;
48119#if USE_TAILCALLS
48120 MUSTTAIL return InterpNext(S, PC);
48121#else
48122 return true;
48123#endif
48124}
48125PRESERVE_NONE
48126static bool Interp_ShlUint64IntAPS(InterpState &S, CodePtr &PC) {
48127 if (!Shl<PT_Uint64, PT_IntAPS>(S, PC))
48128 return false;
48129#if USE_TAILCALLS
48130 MUSTTAIL return InterpNext(S, PC);
48131#else
48132 return true;
48133#endif
48134}
48135PRESERVE_NONE
48136static bool Interp_ShlIntAPSint8(InterpState &S, CodePtr &PC) {
48137 if (!Shl<PT_IntAP, PT_Sint8>(S, PC))
48138 return false;
48139#if USE_TAILCALLS
48140 MUSTTAIL return InterpNext(S, PC);
48141#else
48142 return true;
48143#endif
48144}
48145PRESERVE_NONE
48146static bool Interp_ShlIntAPUint8(InterpState &S, CodePtr &PC) {
48147 if (!Shl<PT_IntAP, PT_Uint8>(S, PC))
48148 return false;
48149#if USE_TAILCALLS
48150 MUSTTAIL return InterpNext(S, PC);
48151#else
48152 return true;
48153#endif
48154}
48155PRESERVE_NONE
48156static bool Interp_ShlIntAPSint16(InterpState &S, CodePtr &PC) {
48157 if (!Shl<PT_IntAP, PT_Sint16>(S, PC))
48158 return false;
48159#if USE_TAILCALLS
48160 MUSTTAIL return InterpNext(S, PC);
48161#else
48162 return true;
48163#endif
48164}
48165PRESERVE_NONE
48166static bool Interp_ShlIntAPUint16(InterpState &S, CodePtr &PC) {
48167 if (!Shl<PT_IntAP, PT_Uint16>(S, PC))
48168 return false;
48169#if USE_TAILCALLS
48170 MUSTTAIL return InterpNext(S, PC);
48171#else
48172 return true;
48173#endif
48174}
48175PRESERVE_NONE
48176static bool Interp_ShlIntAPSint32(InterpState &S, CodePtr &PC) {
48177 if (!Shl<PT_IntAP, PT_Sint32>(S, PC))
48178 return false;
48179#if USE_TAILCALLS
48180 MUSTTAIL return InterpNext(S, PC);
48181#else
48182 return true;
48183#endif
48184}
48185PRESERVE_NONE
48186static bool Interp_ShlIntAPUint32(InterpState &S, CodePtr &PC) {
48187 if (!Shl<PT_IntAP, PT_Uint32>(S, PC))
48188 return false;
48189#if USE_TAILCALLS
48190 MUSTTAIL return InterpNext(S, PC);
48191#else
48192 return true;
48193#endif
48194}
48195PRESERVE_NONE
48196static bool Interp_ShlIntAPSint64(InterpState &S, CodePtr &PC) {
48197 if (!Shl<PT_IntAP, PT_Sint64>(S, PC))
48198 return false;
48199#if USE_TAILCALLS
48200 MUSTTAIL return InterpNext(S, PC);
48201#else
48202 return true;
48203#endif
48204}
48205PRESERVE_NONE
48206static bool Interp_ShlIntAPUint64(InterpState &S, CodePtr &PC) {
48207 if (!Shl<PT_IntAP, PT_Uint64>(S, PC))
48208 return false;
48209#if USE_TAILCALLS
48210 MUSTTAIL return InterpNext(S, PC);
48211#else
48212 return true;
48213#endif
48214}
48215PRESERVE_NONE
48216static bool Interp_ShlIntAPIntAP(InterpState &S, CodePtr &PC) {
48217 if (!Shl<PT_IntAP, PT_IntAP>(S, PC))
48218 return false;
48219#if USE_TAILCALLS
48220 MUSTTAIL return InterpNext(S, PC);
48221#else
48222 return true;
48223#endif
48224}
48225PRESERVE_NONE
48226static bool Interp_ShlIntAPIntAPS(InterpState &S, CodePtr &PC) {
48227 if (!Shl<PT_IntAP, PT_IntAPS>(S, PC))
48228 return false;
48229#if USE_TAILCALLS
48230 MUSTTAIL return InterpNext(S, PC);
48231#else
48232 return true;
48233#endif
48234}
48235PRESERVE_NONE
48236static bool Interp_ShlIntAPSSint8(InterpState &S, CodePtr &PC) {
48237 if (!Shl<PT_IntAPS, PT_Sint8>(S, PC))
48238 return false;
48239#if USE_TAILCALLS
48240 MUSTTAIL return InterpNext(S, PC);
48241#else
48242 return true;
48243#endif
48244}
48245PRESERVE_NONE
48246static bool Interp_ShlIntAPSUint8(InterpState &S, CodePtr &PC) {
48247 if (!Shl<PT_IntAPS, PT_Uint8>(S, PC))
48248 return false;
48249#if USE_TAILCALLS
48250 MUSTTAIL return InterpNext(S, PC);
48251#else
48252 return true;
48253#endif
48254}
48255PRESERVE_NONE
48256static bool Interp_ShlIntAPSSint16(InterpState &S, CodePtr &PC) {
48257 if (!Shl<PT_IntAPS, PT_Sint16>(S, PC))
48258 return false;
48259#if USE_TAILCALLS
48260 MUSTTAIL return InterpNext(S, PC);
48261#else
48262 return true;
48263#endif
48264}
48265PRESERVE_NONE
48266static bool Interp_ShlIntAPSUint16(InterpState &S, CodePtr &PC) {
48267 if (!Shl<PT_IntAPS, PT_Uint16>(S, PC))
48268 return false;
48269#if USE_TAILCALLS
48270 MUSTTAIL return InterpNext(S, PC);
48271#else
48272 return true;
48273#endif
48274}
48275PRESERVE_NONE
48276static bool Interp_ShlIntAPSSint32(InterpState &S, CodePtr &PC) {
48277 if (!Shl<PT_IntAPS, PT_Sint32>(S, PC))
48278 return false;
48279#if USE_TAILCALLS
48280 MUSTTAIL return InterpNext(S, PC);
48281#else
48282 return true;
48283#endif
48284}
48285PRESERVE_NONE
48286static bool Interp_ShlIntAPSUint32(InterpState &S, CodePtr &PC) {
48287 if (!Shl<PT_IntAPS, PT_Uint32>(S, PC))
48288 return false;
48289#if USE_TAILCALLS
48290 MUSTTAIL return InterpNext(S, PC);
48291#else
48292 return true;
48293#endif
48294}
48295PRESERVE_NONE
48296static bool Interp_ShlIntAPSSint64(InterpState &S, CodePtr &PC) {
48297 if (!Shl<PT_IntAPS, PT_Sint64>(S, PC))
48298 return false;
48299#if USE_TAILCALLS
48300 MUSTTAIL return InterpNext(S, PC);
48301#else
48302 return true;
48303#endif
48304}
48305PRESERVE_NONE
48306static bool Interp_ShlIntAPSUint64(InterpState &S, CodePtr &PC) {
48307 if (!Shl<PT_IntAPS, PT_Uint64>(S, PC))
48308 return false;
48309#if USE_TAILCALLS
48310 MUSTTAIL return InterpNext(S, PC);
48311#else
48312 return true;
48313#endif
48314}
48315PRESERVE_NONE
48316static bool Interp_ShlIntAPSIntAP(InterpState &S, CodePtr &PC) {
48317 if (!Shl<PT_IntAPS, PT_IntAP>(S, PC))
48318 return false;
48319#if USE_TAILCALLS
48320 MUSTTAIL return InterpNext(S, PC);
48321#else
48322 return true;
48323#endif
48324}
48325PRESERVE_NONE
48326static bool Interp_ShlIntAPSIntAPS(InterpState &S, CodePtr &PC) {
48327 if (!Shl<PT_IntAPS, PT_IntAPS>(S, PC))
48328 return false;
48329#if USE_TAILCALLS
48330 MUSTTAIL return InterpNext(S, PC);
48331#else
48332 return true;
48333#endif
48334}
48335#endif
48336#ifdef GET_DISASM
48337case OP_ShlSint8Sint8:
48338 Text.Op = PrintName("ShlSint8Sint8");
48339 break;
48340case OP_ShlSint8Uint8:
48341 Text.Op = PrintName("ShlSint8Uint8");
48342 break;
48343case OP_ShlSint8Sint16:
48344 Text.Op = PrintName("ShlSint8Sint16");
48345 break;
48346case OP_ShlSint8Uint16:
48347 Text.Op = PrintName("ShlSint8Uint16");
48348 break;
48349case OP_ShlSint8Sint32:
48350 Text.Op = PrintName("ShlSint8Sint32");
48351 break;
48352case OP_ShlSint8Uint32:
48353 Text.Op = PrintName("ShlSint8Uint32");
48354 break;
48355case OP_ShlSint8Sint64:
48356 Text.Op = PrintName("ShlSint8Sint64");
48357 break;
48358case OP_ShlSint8Uint64:
48359 Text.Op = PrintName("ShlSint8Uint64");
48360 break;
48361case OP_ShlSint8IntAP:
48362 Text.Op = PrintName("ShlSint8IntAP");
48363 break;
48364case OP_ShlSint8IntAPS:
48365 Text.Op = PrintName("ShlSint8IntAPS");
48366 break;
48367case OP_ShlUint8Sint8:
48368 Text.Op = PrintName("ShlUint8Sint8");
48369 break;
48370case OP_ShlUint8Uint8:
48371 Text.Op = PrintName("ShlUint8Uint8");
48372 break;
48373case OP_ShlUint8Sint16:
48374 Text.Op = PrintName("ShlUint8Sint16");
48375 break;
48376case OP_ShlUint8Uint16:
48377 Text.Op = PrintName("ShlUint8Uint16");
48378 break;
48379case OP_ShlUint8Sint32:
48380 Text.Op = PrintName("ShlUint8Sint32");
48381 break;
48382case OP_ShlUint8Uint32:
48383 Text.Op = PrintName("ShlUint8Uint32");
48384 break;
48385case OP_ShlUint8Sint64:
48386 Text.Op = PrintName("ShlUint8Sint64");
48387 break;
48388case OP_ShlUint8Uint64:
48389 Text.Op = PrintName("ShlUint8Uint64");
48390 break;
48391case OP_ShlUint8IntAP:
48392 Text.Op = PrintName("ShlUint8IntAP");
48393 break;
48394case OP_ShlUint8IntAPS:
48395 Text.Op = PrintName("ShlUint8IntAPS");
48396 break;
48397case OP_ShlSint16Sint8:
48398 Text.Op = PrintName("ShlSint16Sint8");
48399 break;
48400case OP_ShlSint16Uint8:
48401 Text.Op = PrintName("ShlSint16Uint8");
48402 break;
48403case OP_ShlSint16Sint16:
48404 Text.Op = PrintName("ShlSint16Sint16");
48405 break;
48406case OP_ShlSint16Uint16:
48407 Text.Op = PrintName("ShlSint16Uint16");
48408 break;
48409case OP_ShlSint16Sint32:
48410 Text.Op = PrintName("ShlSint16Sint32");
48411 break;
48412case OP_ShlSint16Uint32:
48413 Text.Op = PrintName("ShlSint16Uint32");
48414 break;
48415case OP_ShlSint16Sint64:
48416 Text.Op = PrintName("ShlSint16Sint64");
48417 break;
48418case OP_ShlSint16Uint64:
48419 Text.Op = PrintName("ShlSint16Uint64");
48420 break;
48421case OP_ShlSint16IntAP:
48422 Text.Op = PrintName("ShlSint16IntAP");
48423 break;
48424case OP_ShlSint16IntAPS:
48425 Text.Op = PrintName("ShlSint16IntAPS");
48426 break;
48427case OP_ShlUint16Sint8:
48428 Text.Op = PrintName("ShlUint16Sint8");
48429 break;
48430case OP_ShlUint16Uint8:
48431 Text.Op = PrintName("ShlUint16Uint8");
48432 break;
48433case OP_ShlUint16Sint16:
48434 Text.Op = PrintName("ShlUint16Sint16");
48435 break;
48436case OP_ShlUint16Uint16:
48437 Text.Op = PrintName("ShlUint16Uint16");
48438 break;
48439case OP_ShlUint16Sint32:
48440 Text.Op = PrintName("ShlUint16Sint32");
48441 break;
48442case OP_ShlUint16Uint32:
48443 Text.Op = PrintName("ShlUint16Uint32");
48444 break;
48445case OP_ShlUint16Sint64:
48446 Text.Op = PrintName("ShlUint16Sint64");
48447 break;
48448case OP_ShlUint16Uint64:
48449 Text.Op = PrintName("ShlUint16Uint64");
48450 break;
48451case OP_ShlUint16IntAP:
48452 Text.Op = PrintName("ShlUint16IntAP");
48453 break;
48454case OP_ShlUint16IntAPS:
48455 Text.Op = PrintName("ShlUint16IntAPS");
48456 break;
48457case OP_ShlSint32Sint8:
48458 Text.Op = PrintName("ShlSint32Sint8");
48459 break;
48460case OP_ShlSint32Uint8:
48461 Text.Op = PrintName("ShlSint32Uint8");
48462 break;
48463case OP_ShlSint32Sint16:
48464 Text.Op = PrintName("ShlSint32Sint16");
48465 break;
48466case OP_ShlSint32Uint16:
48467 Text.Op = PrintName("ShlSint32Uint16");
48468 break;
48469case OP_ShlSint32Sint32:
48470 Text.Op = PrintName("ShlSint32Sint32");
48471 break;
48472case OP_ShlSint32Uint32:
48473 Text.Op = PrintName("ShlSint32Uint32");
48474 break;
48475case OP_ShlSint32Sint64:
48476 Text.Op = PrintName("ShlSint32Sint64");
48477 break;
48478case OP_ShlSint32Uint64:
48479 Text.Op = PrintName("ShlSint32Uint64");
48480 break;
48481case OP_ShlSint32IntAP:
48482 Text.Op = PrintName("ShlSint32IntAP");
48483 break;
48484case OP_ShlSint32IntAPS:
48485 Text.Op = PrintName("ShlSint32IntAPS");
48486 break;
48487case OP_ShlUint32Sint8:
48488 Text.Op = PrintName("ShlUint32Sint8");
48489 break;
48490case OP_ShlUint32Uint8:
48491 Text.Op = PrintName("ShlUint32Uint8");
48492 break;
48493case OP_ShlUint32Sint16:
48494 Text.Op = PrintName("ShlUint32Sint16");
48495 break;
48496case OP_ShlUint32Uint16:
48497 Text.Op = PrintName("ShlUint32Uint16");
48498 break;
48499case OP_ShlUint32Sint32:
48500 Text.Op = PrintName("ShlUint32Sint32");
48501 break;
48502case OP_ShlUint32Uint32:
48503 Text.Op = PrintName("ShlUint32Uint32");
48504 break;
48505case OP_ShlUint32Sint64:
48506 Text.Op = PrintName("ShlUint32Sint64");
48507 break;
48508case OP_ShlUint32Uint64:
48509 Text.Op = PrintName("ShlUint32Uint64");
48510 break;
48511case OP_ShlUint32IntAP:
48512 Text.Op = PrintName("ShlUint32IntAP");
48513 break;
48514case OP_ShlUint32IntAPS:
48515 Text.Op = PrintName("ShlUint32IntAPS");
48516 break;
48517case OP_ShlSint64Sint8:
48518 Text.Op = PrintName("ShlSint64Sint8");
48519 break;
48520case OP_ShlSint64Uint8:
48521 Text.Op = PrintName("ShlSint64Uint8");
48522 break;
48523case OP_ShlSint64Sint16:
48524 Text.Op = PrintName("ShlSint64Sint16");
48525 break;
48526case OP_ShlSint64Uint16:
48527 Text.Op = PrintName("ShlSint64Uint16");
48528 break;
48529case OP_ShlSint64Sint32:
48530 Text.Op = PrintName("ShlSint64Sint32");
48531 break;
48532case OP_ShlSint64Uint32:
48533 Text.Op = PrintName("ShlSint64Uint32");
48534 break;
48535case OP_ShlSint64Sint64:
48536 Text.Op = PrintName("ShlSint64Sint64");
48537 break;
48538case OP_ShlSint64Uint64:
48539 Text.Op = PrintName("ShlSint64Uint64");
48540 break;
48541case OP_ShlSint64IntAP:
48542 Text.Op = PrintName("ShlSint64IntAP");
48543 break;
48544case OP_ShlSint64IntAPS:
48545 Text.Op = PrintName("ShlSint64IntAPS");
48546 break;
48547case OP_ShlUint64Sint8:
48548 Text.Op = PrintName("ShlUint64Sint8");
48549 break;
48550case OP_ShlUint64Uint8:
48551 Text.Op = PrintName("ShlUint64Uint8");
48552 break;
48553case OP_ShlUint64Sint16:
48554 Text.Op = PrintName("ShlUint64Sint16");
48555 break;
48556case OP_ShlUint64Uint16:
48557 Text.Op = PrintName("ShlUint64Uint16");
48558 break;
48559case OP_ShlUint64Sint32:
48560 Text.Op = PrintName("ShlUint64Sint32");
48561 break;
48562case OP_ShlUint64Uint32:
48563 Text.Op = PrintName("ShlUint64Uint32");
48564 break;
48565case OP_ShlUint64Sint64:
48566 Text.Op = PrintName("ShlUint64Sint64");
48567 break;
48568case OP_ShlUint64Uint64:
48569 Text.Op = PrintName("ShlUint64Uint64");
48570 break;
48571case OP_ShlUint64IntAP:
48572 Text.Op = PrintName("ShlUint64IntAP");
48573 break;
48574case OP_ShlUint64IntAPS:
48575 Text.Op = PrintName("ShlUint64IntAPS");
48576 break;
48577case OP_ShlIntAPSint8:
48578 Text.Op = PrintName("ShlIntAPSint8");
48579 break;
48580case OP_ShlIntAPUint8:
48581 Text.Op = PrintName("ShlIntAPUint8");
48582 break;
48583case OP_ShlIntAPSint16:
48584 Text.Op = PrintName("ShlIntAPSint16");
48585 break;
48586case OP_ShlIntAPUint16:
48587 Text.Op = PrintName("ShlIntAPUint16");
48588 break;
48589case OP_ShlIntAPSint32:
48590 Text.Op = PrintName("ShlIntAPSint32");
48591 break;
48592case OP_ShlIntAPUint32:
48593 Text.Op = PrintName("ShlIntAPUint32");
48594 break;
48595case OP_ShlIntAPSint64:
48596 Text.Op = PrintName("ShlIntAPSint64");
48597 break;
48598case OP_ShlIntAPUint64:
48599 Text.Op = PrintName("ShlIntAPUint64");
48600 break;
48601case OP_ShlIntAPIntAP:
48602 Text.Op = PrintName("ShlIntAPIntAP");
48603 break;
48604case OP_ShlIntAPIntAPS:
48605 Text.Op = PrintName("ShlIntAPIntAPS");
48606 break;
48607case OP_ShlIntAPSSint8:
48608 Text.Op = PrintName("ShlIntAPSSint8");
48609 break;
48610case OP_ShlIntAPSUint8:
48611 Text.Op = PrintName("ShlIntAPSUint8");
48612 break;
48613case OP_ShlIntAPSSint16:
48614 Text.Op = PrintName("ShlIntAPSSint16");
48615 break;
48616case OP_ShlIntAPSUint16:
48617 Text.Op = PrintName("ShlIntAPSUint16");
48618 break;
48619case OP_ShlIntAPSSint32:
48620 Text.Op = PrintName("ShlIntAPSSint32");
48621 break;
48622case OP_ShlIntAPSUint32:
48623 Text.Op = PrintName("ShlIntAPSUint32");
48624 break;
48625case OP_ShlIntAPSSint64:
48626 Text.Op = PrintName("ShlIntAPSSint64");
48627 break;
48628case OP_ShlIntAPSUint64:
48629 Text.Op = PrintName("ShlIntAPSUint64");
48630 break;
48631case OP_ShlIntAPSIntAP:
48632 Text.Op = PrintName("ShlIntAPSIntAP");
48633 break;
48634case OP_ShlIntAPSIntAPS:
48635 Text.Op = PrintName("ShlIntAPSIntAPS");
48636 break;
48637#endif
48638#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
48639bool emitShlSint8Sint8(SourceInfo);
48640bool emitShlSint8Uint8(SourceInfo);
48641bool emitShlSint8Sint16(SourceInfo);
48642bool emitShlSint8Uint16(SourceInfo);
48643bool emitShlSint8Sint32(SourceInfo);
48644bool emitShlSint8Uint32(SourceInfo);
48645bool emitShlSint8Sint64(SourceInfo);
48646bool emitShlSint8Uint64(SourceInfo);
48647bool emitShlSint8IntAP(SourceInfo);
48648bool emitShlSint8IntAPS(SourceInfo);
48649bool emitShlUint8Sint8(SourceInfo);
48650bool emitShlUint8Uint8(SourceInfo);
48651bool emitShlUint8Sint16(SourceInfo);
48652bool emitShlUint8Uint16(SourceInfo);
48653bool emitShlUint8Sint32(SourceInfo);
48654bool emitShlUint8Uint32(SourceInfo);
48655bool emitShlUint8Sint64(SourceInfo);
48656bool emitShlUint8Uint64(SourceInfo);
48657bool emitShlUint8IntAP(SourceInfo);
48658bool emitShlUint8IntAPS(SourceInfo);
48659bool emitShlSint16Sint8(SourceInfo);
48660bool emitShlSint16Uint8(SourceInfo);
48661bool emitShlSint16Sint16(SourceInfo);
48662bool emitShlSint16Uint16(SourceInfo);
48663bool emitShlSint16Sint32(SourceInfo);
48664bool emitShlSint16Uint32(SourceInfo);
48665bool emitShlSint16Sint64(SourceInfo);
48666bool emitShlSint16Uint64(SourceInfo);
48667bool emitShlSint16IntAP(SourceInfo);
48668bool emitShlSint16IntAPS(SourceInfo);
48669bool emitShlUint16Sint8(SourceInfo);
48670bool emitShlUint16Uint8(SourceInfo);
48671bool emitShlUint16Sint16(SourceInfo);
48672bool emitShlUint16Uint16(SourceInfo);
48673bool emitShlUint16Sint32(SourceInfo);
48674bool emitShlUint16Uint32(SourceInfo);
48675bool emitShlUint16Sint64(SourceInfo);
48676bool emitShlUint16Uint64(SourceInfo);
48677bool emitShlUint16IntAP(SourceInfo);
48678bool emitShlUint16IntAPS(SourceInfo);
48679bool emitShlSint32Sint8(SourceInfo);
48680bool emitShlSint32Uint8(SourceInfo);
48681bool emitShlSint32Sint16(SourceInfo);
48682bool emitShlSint32Uint16(SourceInfo);
48683bool emitShlSint32Sint32(SourceInfo);
48684bool emitShlSint32Uint32(SourceInfo);
48685bool emitShlSint32Sint64(SourceInfo);
48686bool emitShlSint32Uint64(SourceInfo);
48687bool emitShlSint32IntAP(SourceInfo);
48688bool emitShlSint32IntAPS(SourceInfo);
48689bool emitShlUint32Sint8(SourceInfo);
48690bool emitShlUint32Uint8(SourceInfo);
48691bool emitShlUint32Sint16(SourceInfo);
48692bool emitShlUint32Uint16(SourceInfo);
48693bool emitShlUint32Sint32(SourceInfo);
48694bool emitShlUint32Uint32(SourceInfo);
48695bool emitShlUint32Sint64(SourceInfo);
48696bool emitShlUint32Uint64(SourceInfo);
48697bool emitShlUint32IntAP(SourceInfo);
48698bool emitShlUint32IntAPS(SourceInfo);
48699bool emitShlSint64Sint8(SourceInfo);
48700bool emitShlSint64Uint8(SourceInfo);
48701bool emitShlSint64Sint16(SourceInfo);
48702bool emitShlSint64Uint16(SourceInfo);
48703bool emitShlSint64Sint32(SourceInfo);
48704bool emitShlSint64Uint32(SourceInfo);
48705bool emitShlSint64Sint64(SourceInfo);
48706bool emitShlSint64Uint64(SourceInfo);
48707bool emitShlSint64IntAP(SourceInfo);
48708bool emitShlSint64IntAPS(SourceInfo);
48709bool emitShlUint64Sint8(SourceInfo);
48710bool emitShlUint64Uint8(SourceInfo);
48711bool emitShlUint64Sint16(SourceInfo);
48712bool emitShlUint64Uint16(SourceInfo);
48713bool emitShlUint64Sint32(SourceInfo);
48714bool emitShlUint64Uint32(SourceInfo);
48715bool emitShlUint64Sint64(SourceInfo);
48716bool emitShlUint64Uint64(SourceInfo);
48717bool emitShlUint64IntAP(SourceInfo);
48718bool emitShlUint64IntAPS(SourceInfo);
48719bool emitShlIntAPSint8(SourceInfo);
48720bool emitShlIntAPUint8(SourceInfo);
48721bool emitShlIntAPSint16(SourceInfo);
48722bool emitShlIntAPUint16(SourceInfo);
48723bool emitShlIntAPSint32(SourceInfo);
48724bool emitShlIntAPUint32(SourceInfo);
48725bool emitShlIntAPSint64(SourceInfo);
48726bool emitShlIntAPUint64(SourceInfo);
48727bool emitShlIntAPIntAP(SourceInfo);
48728bool emitShlIntAPIntAPS(SourceInfo);
48729bool emitShlIntAPSSint8(SourceInfo);
48730bool emitShlIntAPSUint8(SourceInfo);
48731bool emitShlIntAPSSint16(SourceInfo);
48732bool emitShlIntAPSUint16(SourceInfo);
48733bool emitShlIntAPSSint32(SourceInfo);
48734bool emitShlIntAPSUint32(SourceInfo);
48735bool emitShlIntAPSSint64(SourceInfo);
48736bool emitShlIntAPSUint64(SourceInfo);
48737bool emitShlIntAPSIntAP(SourceInfo);
48738bool emitShlIntAPSIntAPS(SourceInfo);
48739#endif
48740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
48741[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
48742#endif
48743#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
48744bool
48745#if defined(GET_EVAL_IMPL)
48746EvalEmitter
48747#else
48748ByteCodeEmitter
48749#endif
48750::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
48751 switch (T0) {
48752 case PT_Sint8:
48753 switch (T1) {
48754 case PT_Sint8:
48755 return emitShlSint8Sint8(I);
48756 case PT_Uint8:
48757 return emitShlSint8Uint8(I);
48758 case PT_Sint16:
48759 return emitShlSint8Sint16(I);
48760 case PT_Uint16:
48761 return emitShlSint8Uint16(I);
48762 case PT_Sint32:
48763 return emitShlSint8Sint32(I);
48764 case PT_Uint32:
48765 return emitShlSint8Uint32(I);
48766 case PT_Sint64:
48767 return emitShlSint8Sint64(I);
48768 case PT_Uint64:
48769 return emitShlSint8Uint64(I);
48770 case PT_IntAP:
48771 return emitShlSint8IntAP(I);
48772 case PT_IntAPS:
48773 return emitShlSint8IntAPS(I);
48774 default: llvm_unreachable("invalid type: emitShl");
48775 }
48776 llvm_unreachable("invalid enum value");
48777 case PT_Uint8:
48778 switch (T1) {
48779 case PT_Sint8:
48780 return emitShlUint8Sint8(I);
48781 case PT_Uint8:
48782 return emitShlUint8Uint8(I);
48783 case PT_Sint16:
48784 return emitShlUint8Sint16(I);
48785 case PT_Uint16:
48786 return emitShlUint8Uint16(I);
48787 case PT_Sint32:
48788 return emitShlUint8Sint32(I);
48789 case PT_Uint32:
48790 return emitShlUint8Uint32(I);
48791 case PT_Sint64:
48792 return emitShlUint8Sint64(I);
48793 case PT_Uint64:
48794 return emitShlUint8Uint64(I);
48795 case PT_IntAP:
48796 return emitShlUint8IntAP(I);
48797 case PT_IntAPS:
48798 return emitShlUint8IntAPS(I);
48799 default: llvm_unreachable("invalid type: emitShl");
48800 }
48801 llvm_unreachable("invalid enum value");
48802 case PT_Sint16:
48803 switch (T1) {
48804 case PT_Sint8:
48805 return emitShlSint16Sint8(I);
48806 case PT_Uint8:
48807 return emitShlSint16Uint8(I);
48808 case PT_Sint16:
48809 return emitShlSint16Sint16(I);
48810 case PT_Uint16:
48811 return emitShlSint16Uint16(I);
48812 case PT_Sint32:
48813 return emitShlSint16Sint32(I);
48814 case PT_Uint32:
48815 return emitShlSint16Uint32(I);
48816 case PT_Sint64:
48817 return emitShlSint16Sint64(I);
48818 case PT_Uint64:
48819 return emitShlSint16Uint64(I);
48820 case PT_IntAP:
48821 return emitShlSint16IntAP(I);
48822 case PT_IntAPS:
48823 return emitShlSint16IntAPS(I);
48824 default: llvm_unreachable("invalid type: emitShl");
48825 }
48826 llvm_unreachable("invalid enum value");
48827 case PT_Uint16:
48828 switch (T1) {
48829 case PT_Sint8:
48830 return emitShlUint16Sint8(I);
48831 case PT_Uint8:
48832 return emitShlUint16Uint8(I);
48833 case PT_Sint16:
48834 return emitShlUint16Sint16(I);
48835 case PT_Uint16:
48836 return emitShlUint16Uint16(I);
48837 case PT_Sint32:
48838 return emitShlUint16Sint32(I);
48839 case PT_Uint32:
48840 return emitShlUint16Uint32(I);
48841 case PT_Sint64:
48842 return emitShlUint16Sint64(I);
48843 case PT_Uint64:
48844 return emitShlUint16Uint64(I);
48845 case PT_IntAP:
48846 return emitShlUint16IntAP(I);
48847 case PT_IntAPS:
48848 return emitShlUint16IntAPS(I);
48849 default: llvm_unreachable("invalid type: emitShl");
48850 }
48851 llvm_unreachable("invalid enum value");
48852 case PT_Sint32:
48853 switch (T1) {
48854 case PT_Sint8:
48855 return emitShlSint32Sint8(I);
48856 case PT_Uint8:
48857 return emitShlSint32Uint8(I);
48858 case PT_Sint16:
48859 return emitShlSint32Sint16(I);
48860 case PT_Uint16:
48861 return emitShlSint32Uint16(I);
48862 case PT_Sint32:
48863 return emitShlSint32Sint32(I);
48864 case PT_Uint32:
48865 return emitShlSint32Uint32(I);
48866 case PT_Sint64:
48867 return emitShlSint32Sint64(I);
48868 case PT_Uint64:
48869 return emitShlSint32Uint64(I);
48870 case PT_IntAP:
48871 return emitShlSint32IntAP(I);
48872 case PT_IntAPS:
48873 return emitShlSint32IntAPS(I);
48874 default: llvm_unreachable("invalid type: emitShl");
48875 }
48876 llvm_unreachable("invalid enum value");
48877 case PT_Uint32:
48878 switch (T1) {
48879 case PT_Sint8:
48880 return emitShlUint32Sint8(I);
48881 case PT_Uint8:
48882 return emitShlUint32Uint8(I);
48883 case PT_Sint16:
48884 return emitShlUint32Sint16(I);
48885 case PT_Uint16:
48886 return emitShlUint32Uint16(I);
48887 case PT_Sint32:
48888 return emitShlUint32Sint32(I);
48889 case PT_Uint32:
48890 return emitShlUint32Uint32(I);
48891 case PT_Sint64:
48892 return emitShlUint32Sint64(I);
48893 case PT_Uint64:
48894 return emitShlUint32Uint64(I);
48895 case PT_IntAP:
48896 return emitShlUint32IntAP(I);
48897 case PT_IntAPS:
48898 return emitShlUint32IntAPS(I);
48899 default: llvm_unreachable("invalid type: emitShl");
48900 }
48901 llvm_unreachable("invalid enum value");
48902 case PT_Sint64:
48903 switch (T1) {
48904 case PT_Sint8:
48905 return emitShlSint64Sint8(I);
48906 case PT_Uint8:
48907 return emitShlSint64Uint8(I);
48908 case PT_Sint16:
48909 return emitShlSint64Sint16(I);
48910 case PT_Uint16:
48911 return emitShlSint64Uint16(I);
48912 case PT_Sint32:
48913 return emitShlSint64Sint32(I);
48914 case PT_Uint32:
48915 return emitShlSint64Uint32(I);
48916 case PT_Sint64:
48917 return emitShlSint64Sint64(I);
48918 case PT_Uint64:
48919 return emitShlSint64Uint64(I);
48920 case PT_IntAP:
48921 return emitShlSint64IntAP(I);
48922 case PT_IntAPS:
48923 return emitShlSint64IntAPS(I);
48924 default: llvm_unreachable("invalid type: emitShl");
48925 }
48926 llvm_unreachable("invalid enum value");
48927 case PT_Uint64:
48928 switch (T1) {
48929 case PT_Sint8:
48930 return emitShlUint64Sint8(I);
48931 case PT_Uint8:
48932 return emitShlUint64Uint8(I);
48933 case PT_Sint16:
48934 return emitShlUint64Sint16(I);
48935 case PT_Uint16:
48936 return emitShlUint64Uint16(I);
48937 case PT_Sint32:
48938 return emitShlUint64Sint32(I);
48939 case PT_Uint32:
48940 return emitShlUint64Uint32(I);
48941 case PT_Sint64:
48942 return emitShlUint64Sint64(I);
48943 case PT_Uint64:
48944 return emitShlUint64Uint64(I);
48945 case PT_IntAP:
48946 return emitShlUint64IntAP(I);
48947 case PT_IntAPS:
48948 return emitShlUint64IntAPS(I);
48949 default: llvm_unreachable("invalid type: emitShl");
48950 }
48951 llvm_unreachable("invalid enum value");
48952 case PT_IntAP:
48953 switch (T1) {
48954 case PT_Sint8:
48955 return emitShlIntAPSint8(I);
48956 case PT_Uint8:
48957 return emitShlIntAPUint8(I);
48958 case PT_Sint16:
48959 return emitShlIntAPSint16(I);
48960 case PT_Uint16:
48961 return emitShlIntAPUint16(I);
48962 case PT_Sint32:
48963 return emitShlIntAPSint32(I);
48964 case PT_Uint32:
48965 return emitShlIntAPUint32(I);
48966 case PT_Sint64:
48967 return emitShlIntAPSint64(I);
48968 case PT_Uint64:
48969 return emitShlIntAPUint64(I);
48970 case PT_IntAP:
48971 return emitShlIntAPIntAP(I);
48972 case PT_IntAPS:
48973 return emitShlIntAPIntAPS(I);
48974 default: llvm_unreachable("invalid type: emitShl");
48975 }
48976 llvm_unreachable("invalid enum value");
48977 case PT_IntAPS:
48978 switch (T1) {
48979 case PT_Sint8:
48980 return emitShlIntAPSSint8(I);
48981 case PT_Uint8:
48982 return emitShlIntAPSUint8(I);
48983 case PT_Sint16:
48984 return emitShlIntAPSSint16(I);
48985 case PT_Uint16:
48986 return emitShlIntAPSUint16(I);
48987 case PT_Sint32:
48988 return emitShlIntAPSSint32(I);
48989 case PT_Uint32:
48990 return emitShlIntAPSUint32(I);
48991 case PT_Sint64:
48992 return emitShlIntAPSSint64(I);
48993 case PT_Uint64:
48994 return emitShlIntAPSUint64(I);
48995 case PT_IntAP:
48996 return emitShlIntAPSIntAP(I);
48997 case PT_IntAPS:
48998 return emitShlIntAPSIntAPS(I);
48999 default: llvm_unreachable("invalid type: emitShl");
49000 }
49001 llvm_unreachable("invalid enum value");
49002 default: llvm_unreachable("invalid type: emitShl");
49003 }
49004 llvm_unreachable("invalid enum value");
49005}
49006#endif
49007#ifdef GET_LINK_IMPL
49008bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
49009 return emitOp<>(OP_ShlSint8Sint8, L);
49010}
49011bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
49012 return emitOp<>(OP_ShlSint8Uint8, L);
49013}
49014bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
49015 return emitOp<>(OP_ShlSint8Sint16, L);
49016}
49017bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
49018 return emitOp<>(OP_ShlSint8Uint16, L);
49019}
49020bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
49021 return emitOp<>(OP_ShlSint8Sint32, L);
49022}
49023bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
49024 return emitOp<>(OP_ShlSint8Uint32, L);
49025}
49026bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
49027 return emitOp<>(OP_ShlSint8Sint64, L);
49028}
49029bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
49030 return emitOp<>(OP_ShlSint8Uint64, L);
49031}
49032bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
49033 return emitOp<>(OP_ShlSint8IntAP, L);
49034}
49035bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
49036 return emitOp<>(OP_ShlSint8IntAPS, L);
49037}
49038bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
49039 return emitOp<>(OP_ShlUint8Sint8, L);
49040}
49041bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
49042 return emitOp<>(OP_ShlUint8Uint8, L);
49043}
49044bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
49045 return emitOp<>(OP_ShlUint8Sint16, L);
49046}
49047bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
49048 return emitOp<>(OP_ShlUint8Uint16, L);
49049}
49050bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
49051 return emitOp<>(OP_ShlUint8Sint32, L);
49052}
49053bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
49054 return emitOp<>(OP_ShlUint8Uint32, L);
49055}
49056bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
49057 return emitOp<>(OP_ShlUint8Sint64, L);
49058}
49059bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
49060 return emitOp<>(OP_ShlUint8Uint64, L);
49061}
49062bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
49063 return emitOp<>(OP_ShlUint8IntAP, L);
49064}
49065bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
49066 return emitOp<>(OP_ShlUint8IntAPS, L);
49067}
49068bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
49069 return emitOp<>(OP_ShlSint16Sint8, L);
49070}
49071bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
49072 return emitOp<>(OP_ShlSint16Uint8, L);
49073}
49074bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
49075 return emitOp<>(OP_ShlSint16Sint16, L);
49076}
49077bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
49078 return emitOp<>(OP_ShlSint16Uint16, L);
49079}
49080bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
49081 return emitOp<>(OP_ShlSint16Sint32, L);
49082}
49083bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
49084 return emitOp<>(OP_ShlSint16Uint32, L);
49085}
49086bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
49087 return emitOp<>(OP_ShlSint16Sint64, L);
49088}
49089bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
49090 return emitOp<>(OP_ShlSint16Uint64, L);
49091}
49092bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
49093 return emitOp<>(OP_ShlSint16IntAP, L);
49094}
49095bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
49096 return emitOp<>(OP_ShlSint16IntAPS, L);
49097}
49098bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
49099 return emitOp<>(OP_ShlUint16Sint8, L);
49100}
49101bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
49102 return emitOp<>(OP_ShlUint16Uint8, L);
49103}
49104bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
49105 return emitOp<>(OP_ShlUint16Sint16, L);
49106}
49107bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
49108 return emitOp<>(OP_ShlUint16Uint16, L);
49109}
49110bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
49111 return emitOp<>(OP_ShlUint16Sint32, L);
49112}
49113bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
49114 return emitOp<>(OP_ShlUint16Uint32, L);
49115}
49116bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
49117 return emitOp<>(OP_ShlUint16Sint64, L);
49118}
49119bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
49120 return emitOp<>(OP_ShlUint16Uint64, L);
49121}
49122bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
49123 return emitOp<>(OP_ShlUint16IntAP, L);
49124}
49125bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
49126 return emitOp<>(OP_ShlUint16IntAPS, L);
49127}
49128bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
49129 return emitOp<>(OP_ShlSint32Sint8, L);
49130}
49131bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
49132 return emitOp<>(OP_ShlSint32Uint8, L);
49133}
49134bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
49135 return emitOp<>(OP_ShlSint32Sint16, L);
49136}
49137bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
49138 return emitOp<>(OP_ShlSint32Uint16, L);
49139}
49140bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
49141 return emitOp<>(OP_ShlSint32Sint32, L);
49142}
49143bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
49144 return emitOp<>(OP_ShlSint32Uint32, L);
49145}
49146bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
49147 return emitOp<>(OP_ShlSint32Sint64, L);
49148}
49149bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
49150 return emitOp<>(OP_ShlSint32Uint64, L);
49151}
49152bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
49153 return emitOp<>(OP_ShlSint32IntAP, L);
49154}
49155bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
49156 return emitOp<>(OP_ShlSint32IntAPS, L);
49157}
49158bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
49159 return emitOp<>(OP_ShlUint32Sint8, L);
49160}
49161bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
49162 return emitOp<>(OP_ShlUint32Uint8, L);
49163}
49164bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
49165 return emitOp<>(OP_ShlUint32Sint16, L);
49166}
49167bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
49168 return emitOp<>(OP_ShlUint32Uint16, L);
49169}
49170bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
49171 return emitOp<>(OP_ShlUint32Sint32, L);
49172}
49173bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
49174 return emitOp<>(OP_ShlUint32Uint32, L);
49175}
49176bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
49177 return emitOp<>(OP_ShlUint32Sint64, L);
49178}
49179bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
49180 return emitOp<>(OP_ShlUint32Uint64, L);
49181}
49182bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
49183 return emitOp<>(OP_ShlUint32IntAP, L);
49184}
49185bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
49186 return emitOp<>(OP_ShlUint32IntAPS, L);
49187}
49188bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
49189 return emitOp<>(OP_ShlSint64Sint8, L);
49190}
49191bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
49192 return emitOp<>(OP_ShlSint64Uint8, L);
49193}
49194bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
49195 return emitOp<>(OP_ShlSint64Sint16, L);
49196}
49197bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
49198 return emitOp<>(OP_ShlSint64Uint16, L);
49199}
49200bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
49201 return emitOp<>(OP_ShlSint64Sint32, L);
49202}
49203bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
49204 return emitOp<>(OP_ShlSint64Uint32, L);
49205}
49206bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
49207 return emitOp<>(OP_ShlSint64Sint64, L);
49208}
49209bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
49210 return emitOp<>(OP_ShlSint64Uint64, L);
49211}
49212bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
49213 return emitOp<>(OP_ShlSint64IntAP, L);
49214}
49215bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
49216 return emitOp<>(OP_ShlSint64IntAPS, L);
49217}
49218bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
49219 return emitOp<>(OP_ShlUint64Sint8, L);
49220}
49221bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
49222 return emitOp<>(OP_ShlUint64Uint8, L);
49223}
49224bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
49225 return emitOp<>(OP_ShlUint64Sint16, L);
49226}
49227bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
49228 return emitOp<>(OP_ShlUint64Uint16, L);
49229}
49230bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
49231 return emitOp<>(OP_ShlUint64Sint32, L);
49232}
49233bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
49234 return emitOp<>(OP_ShlUint64Uint32, L);
49235}
49236bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
49237 return emitOp<>(OP_ShlUint64Sint64, L);
49238}
49239bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
49240 return emitOp<>(OP_ShlUint64Uint64, L);
49241}
49242bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
49243 return emitOp<>(OP_ShlUint64IntAP, L);
49244}
49245bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
49246 return emitOp<>(OP_ShlUint64IntAPS, L);
49247}
49248bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
49249 return emitOp<>(OP_ShlIntAPSint8, L);
49250}
49251bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
49252 return emitOp<>(OP_ShlIntAPUint8, L);
49253}
49254bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
49255 return emitOp<>(OP_ShlIntAPSint16, L);
49256}
49257bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
49258 return emitOp<>(OP_ShlIntAPUint16, L);
49259}
49260bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
49261 return emitOp<>(OP_ShlIntAPSint32, L);
49262}
49263bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
49264 return emitOp<>(OP_ShlIntAPUint32, L);
49265}
49266bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
49267 return emitOp<>(OP_ShlIntAPSint64, L);
49268}
49269bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
49270 return emitOp<>(OP_ShlIntAPUint64, L);
49271}
49272bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
49273 return emitOp<>(OP_ShlIntAPIntAP, L);
49274}
49275bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
49276 return emitOp<>(OP_ShlIntAPIntAPS, L);
49277}
49278bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
49279 return emitOp<>(OP_ShlIntAPSSint8, L);
49280}
49281bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
49282 return emitOp<>(OP_ShlIntAPSUint8, L);
49283}
49284bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
49285 return emitOp<>(OP_ShlIntAPSSint16, L);
49286}
49287bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
49288 return emitOp<>(OP_ShlIntAPSUint16, L);
49289}
49290bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
49291 return emitOp<>(OP_ShlIntAPSSint32, L);
49292}
49293bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
49294 return emitOp<>(OP_ShlIntAPSUint32, L);
49295}
49296bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
49297 return emitOp<>(OP_ShlIntAPSSint64, L);
49298}
49299bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
49300 return emitOp<>(OP_ShlIntAPSUint64, L);
49301}
49302bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
49303 return emitOp<>(OP_ShlIntAPSIntAP, L);
49304}
49305bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
49306 return emitOp<>(OP_ShlIntAPSIntAPS, L);
49307}
49308#endif
49309#ifdef GET_EVAL_IMPL
49310bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
49311 if (!isActive()) return true;
49312 CurrentSource = L;
49313 return Shl<PT_Sint8, PT_Sint8>(S, OpPC);
49314}
49315bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
49316 if (!isActive()) return true;
49317 CurrentSource = L;
49318 return Shl<PT_Sint8, PT_Uint8>(S, OpPC);
49319}
49320bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
49321 if (!isActive()) return true;
49322 CurrentSource = L;
49323 return Shl<PT_Sint8, PT_Sint16>(S, OpPC);
49324}
49325bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
49326 if (!isActive()) return true;
49327 CurrentSource = L;
49328 return Shl<PT_Sint8, PT_Uint16>(S, OpPC);
49329}
49330bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
49331 if (!isActive()) return true;
49332 CurrentSource = L;
49333 return Shl<PT_Sint8, PT_Sint32>(S, OpPC);
49334}
49335bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
49336 if (!isActive()) return true;
49337 CurrentSource = L;
49338 return Shl<PT_Sint8, PT_Uint32>(S, OpPC);
49339}
49340bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
49341 if (!isActive()) return true;
49342 CurrentSource = L;
49343 return Shl<PT_Sint8, PT_Sint64>(S, OpPC);
49344}
49345bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
49346 if (!isActive()) return true;
49347 CurrentSource = L;
49348 return Shl<PT_Sint8, PT_Uint64>(S, OpPC);
49349}
49350bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
49351 if (!isActive()) return true;
49352 CurrentSource = L;
49353 return Shl<PT_Sint8, PT_IntAP>(S, OpPC);
49354}
49355bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
49356 if (!isActive()) return true;
49357 CurrentSource = L;
49358 return Shl<PT_Sint8, PT_IntAPS>(S, OpPC);
49359}
49360bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
49361 if (!isActive()) return true;
49362 CurrentSource = L;
49363 return Shl<PT_Uint8, PT_Sint8>(S, OpPC);
49364}
49365bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
49366 if (!isActive()) return true;
49367 CurrentSource = L;
49368 return Shl<PT_Uint8, PT_Uint8>(S, OpPC);
49369}
49370bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
49371 if (!isActive()) return true;
49372 CurrentSource = L;
49373 return Shl<PT_Uint8, PT_Sint16>(S, OpPC);
49374}
49375bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
49376 if (!isActive()) return true;
49377 CurrentSource = L;
49378 return Shl<PT_Uint8, PT_Uint16>(S, OpPC);
49379}
49380bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
49381 if (!isActive()) return true;
49382 CurrentSource = L;
49383 return Shl<PT_Uint8, PT_Sint32>(S, OpPC);
49384}
49385bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
49386 if (!isActive()) return true;
49387 CurrentSource = L;
49388 return Shl<PT_Uint8, PT_Uint32>(S, OpPC);
49389}
49390bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
49391 if (!isActive()) return true;
49392 CurrentSource = L;
49393 return Shl<PT_Uint8, PT_Sint64>(S, OpPC);
49394}
49395bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
49396 if (!isActive()) return true;
49397 CurrentSource = L;
49398 return Shl<PT_Uint8, PT_Uint64>(S, OpPC);
49399}
49400bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
49401 if (!isActive()) return true;
49402 CurrentSource = L;
49403 return Shl<PT_Uint8, PT_IntAP>(S, OpPC);
49404}
49405bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
49406 if (!isActive()) return true;
49407 CurrentSource = L;
49408 return Shl<PT_Uint8, PT_IntAPS>(S, OpPC);
49409}
49410bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
49411 if (!isActive()) return true;
49412 CurrentSource = L;
49413 return Shl<PT_Sint16, PT_Sint8>(S, OpPC);
49414}
49415bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
49416 if (!isActive()) return true;
49417 CurrentSource = L;
49418 return Shl<PT_Sint16, PT_Uint8>(S, OpPC);
49419}
49420bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
49421 if (!isActive()) return true;
49422 CurrentSource = L;
49423 return Shl<PT_Sint16, PT_Sint16>(S, OpPC);
49424}
49425bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
49426 if (!isActive()) return true;
49427 CurrentSource = L;
49428 return Shl<PT_Sint16, PT_Uint16>(S, OpPC);
49429}
49430bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
49431 if (!isActive()) return true;
49432 CurrentSource = L;
49433 return Shl<PT_Sint16, PT_Sint32>(S, OpPC);
49434}
49435bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
49436 if (!isActive()) return true;
49437 CurrentSource = L;
49438 return Shl<PT_Sint16, PT_Uint32>(S, OpPC);
49439}
49440bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
49441 if (!isActive()) return true;
49442 CurrentSource = L;
49443 return Shl<PT_Sint16, PT_Sint64>(S, OpPC);
49444}
49445bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
49446 if (!isActive()) return true;
49447 CurrentSource = L;
49448 return Shl<PT_Sint16, PT_Uint64>(S, OpPC);
49449}
49450bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
49451 if (!isActive()) return true;
49452 CurrentSource = L;
49453 return Shl<PT_Sint16, PT_IntAP>(S, OpPC);
49454}
49455bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
49456 if (!isActive()) return true;
49457 CurrentSource = L;
49458 return Shl<PT_Sint16, PT_IntAPS>(S, OpPC);
49459}
49460bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
49461 if (!isActive()) return true;
49462 CurrentSource = L;
49463 return Shl<PT_Uint16, PT_Sint8>(S, OpPC);
49464}
49465bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
49466 if (!isActive()) return true;
49467 CurrentSource = L;
49468 return Shl<PT_Uint16, PT_Uint8>(S, OpPC);
49469}
49470bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
49471 if (!isActive()) return true;
49472 CurrentSource = L;
49473 return Shl<PT_Uint16, PT_Sint16>(S, OpPC);
49474}
49475bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
49476 if (!isActive()) return true;
49477 CurrentSource = L;
49478 return Shl<PT_Uint16, PT_Uint16>(S, OpPC);
49479}
49480bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
49481 if (!isActive()) return true;
49482 CurrentSource = L;
49483 return Shl<PT_Uint16, PT_Sint32>(S, OpPC);
49484}
49485bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
49486 if (!isActive()) return true;
49487 CurrentSource = L;
49488 return Shl<PT_Uint16, PT_Uint32>(S, OpPC);
49489}
49490bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
49491 if (!isActive()) return true;
49492 CurrentSource = L;
49493 return Shl<PT_Uint16, PT_Sint64>(S, OpPC);
49494}
49495bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
49496 if (!isActive()) return true;
49497 CurrentSource = L;
49498 return Shl<PT_Uint16, PT_Uint64>(S, OpPC);
49499}
49500bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
49501 if (!isActive()) return true;
49502 CurrentSource = L;
49503 return Shl<PT_Uint16, PT_IntAP>(S, OpPC);
49504}
49505bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
49506 if (!isActive()) return true;
49507 CurrentSource = L;
49508 return Shl<PT_Uint16, PT_IntAPS>(S, OpPC);
49509}
49510bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
49511 if (!isActive()) return true;
49512 CurrentSource = L;
49513 return Shl<PT_Sint32, PT_Sint8>(S, OpPC);
49514}
49515bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
49516 if (!isActive()) return true;
49517 CurrentSource = L;
49518 return Shl<PT_Sint32, PT_Uint8>(S, OpPC);
49519}
49520bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
49521 if (!isActive()) return true;
49522 CurrentSource = L;
49523 return Shl<PT_Sint32, PT_Sint16>(S, OpPC);
49524}
49525bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
49526 if (!isActive()) return true;
49527 CurrentSource = L;
49528 return Shl<PT_Sint32, PT_Uint16>(S, OpPC);
49529}
49530bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
49531 if (!isActive()) return true;
49532 CurrentSource = L;
49533 return Shl<PT_Sint32, PT_Sint32>(S, OpPC);
49534}
49535bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
49536 if (!isActive()) return true;
49537 CurrentSource = L;
49538 return Shl<PT_Sint32, PT_Uint32>(S, OpPC);
49539}
49540bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
49541 if (!isActive()) return true;
49542 CurrentSource = L;
49543 return Shl<PT_Sint32, PT_Sint64>(S, OpPC);
49544}
49545bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
49546 if (!isActive()) return true;
49547 CurrentSource = L;
49548 return Shl<PT_Sint32, PT_Uint64>(S, OpPC);
49549}
49550bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
49551 if (!isActive()) return true;
49552 CurrentSource = L;
49553 return Shl<PT_Sint32, PT_IntAP>(S, OpPC);
49554}
49555bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
49556 if (!isActive()) return true;
49557 CurrentSource = L;
49558 return Shl<PT_Sint32, PT_IntAPS>(S, OpPC);
49559}
49560bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
49561 if (!isActive()) return true;
49562 CurrentSource = L;
49563 return Shl<PT_Uint32, PT_Sint8>(S, OpPC);
49564}
49565bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
49566 if (!isActive()) return true;
49567 CurrentSource = L;
49568 return Shl<PT_Uint32, PT_Uint8>(S, OpPC);
49569}
49570bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
49571 if (!isActive()) return true;
49572 CurrentSource = L;
49573 return Shl<PT_Uint32, PT_Sint16>(S, OpPC);
49574}
49575bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
49576 if (!isActive()) return true;
49577 CurrentSource = L;
49578 return Shl<PT_Uint32, PT_Uint16>(S, OpPC);
49579}
49580bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
49581 if (!isActive()) return true;
49582 CurrentSource = L;
49583 return Shl<PT_Uint32, PT_Sint32>(S, OpPC);
49584}
49585bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
49586 if (!isActive()) return true;
49587 CurrentSource = L;
49588 return Shl<PT_Uint32, PT_Uint32>(S, OpPC);
49589}
49590bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
49591 if (!isActive()) return true;
49592 CurrentSource = L;
49593 return Shl<PT_Uint32, PT_Sint64>(S, OpPC);
49594}
49595bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
49596 if (!isActive()) return true;
49597 CurrentSource = L;
49598 return Shl<PT_Uint32, PT_Uint64>(S, OpPC);
49599}
49600bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
49601 if (!isActive()) return true;
49602 CurrentSource = L;
49603 return Shl<PT_Uint32, PT_IntAP>(S, OpPC);
49604}
49605bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
49606 if (!isActive()) return true;
49607 CurrentSource = L;
49608 return Shl<PT_Uint32, PT_IntAPS>(S, OpPC);
49609}
49610bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
49611 if (!isActive()) return true;
49612 CurrentSource = L;
49613 return Shl<PT_Sint64, PT_Sint8>(S, OpPC);
49614}
49615bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
49616 if (!isActive()) return true;
49617 CurrentSource = L;
49618 return Shl<PT_Sint64, PT_Uint8>(S, OpPC);
49619}
49620bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
49621 if (!isActive()) return true;
49622 CurrentSource = L;
49623 return Shl<PT_Sint64, PT_Sint16>(S, OpPC);
49624}
49625bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
49626 if (!isActive()) return true;
49627 CurrentSource = L;
49628 return Shl<PT_Sint64, PT_Uint16>(S, OpPC);
49629}
49630bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
49631 if (!isActive()) return true;
49632 CurrentSource = L;
49633 return Shl<PT_Sint64, PT_Sint32>(S, OpPC);
49634}
49635bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
49636 if (!isActive()) return true;
49637 CurrentSource = L;
49638 return Shl<PT_Sint64, PT_Uint32>(S, OpPC);
49639}
49640bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
49641 if (!isActive()) return true;
49642 CurrentSource = L;
49643 return Shl<PT_Sint64, PT_Sint64>(S, OpPC);
49644}
49645bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
49646 if (!isActive()) return true;
49647 CurrentSource = L;
49648 return Shl<PT_Sint64, PT_Uint64>(S, OpPC);
49649}
49650bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
49651 if (!isActive()) return true;
49652 CurrentSource = L;
49653 return Shl<PT_Sint64, PT_IntAP>(S, OpPC);
49654}
49655bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
49656 if (!isActive()) return true;
49657 CurrentSource = L;
49658 return Shl<PT_Sint64, PT_IntAPS>(S, OpPC);
49659}
49660bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
49661 if (!isActive()) return true;
49662 CurrentSource = L;
49663 return Shl<PT_Uint64, PT_Sint8>(S, OpPC);
49664}
49665bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
49666 if (!isActive()) return true;
49667 CurrentSource = L;
49668 return Shl<PT_Uint64, PT_Uint8>(S, OpPC);
49669}
49670bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
49671 if (!isActive()) return true;
49672 CurrentSource = L;
49673 return Shl<PT_Uint64, PT_Sint16>(S, OpPC);
49674}
49675bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
49676 if (!isActive()) return true;
49677 CurrentSource = L;
49678 return Shl<PT_Uint64, PT_Uint16>(S, OpPC);
49679}
49680bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
49681 if (!isActive()) return true;
49682 CurrentSource = L;
49683 return Shl<PT_Uint64, PT_Sint32>(S, OpPC);
49684}
49685bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
49686 if (!isActive()) return true;
49687 CurrentSource = L;
49688 return Shl<PT_Uint64, PT_Uint32>(S, OpPC);
49689}
49690bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
49691 if (!isActive()) return true;
49692 CurrentSource = L;
49693 return Shl<PT_Uint64, PT_Sint64>(S, OpPC);
49694}
49695bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
49696 if (!isActive()) return true;
49697 CurrentSource = L;
49698 return Shl<PT_Uint64, PT_Uint64>(S, OpPC);
49699}
49700bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
49701 if (!isActive()) return true;
49702 CurrentSource = L;
49703 return Shl<PT_Uint64, PT_IntAP>(S, OpPC);
49704}
49705bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
49706 if (!isActive()) return true;
49707 CurrentSource = L;
49708 return Shl<PT_Uint64, PT_IntAPS>(S, OpPC);
49709}
49710bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
49711 if (!isActive()) return true;
49712 CurrentSource = L;
49713 return Shl<PT_IntAP, PT_Sint8>(S, OpPC);
49714}
49715bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
49716 if (!isActive()) return true;
49717 CurrentSource = L;
49718 return Shl<PT_IntAP, PT_Uint8>(S, OpPC);
49719}
49720bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
49721 if (!isActive()) return true;
49722 CurrentSource = L;
49723 return Shl<PT_IntAP, PT_Sint16>(S, OpPC);
49724}
49725bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
49726 if (!isActive()) return true;
49727 CurrentSource = L;
49728 return Shl<PT_IntAP, PT_Uint16>(S, OpPC);
49729}
49730bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
49731 if (!isActive()) return true;
49732 CurrentSource = L;
49733 return Shl<PT_IntAP, PT_Sint32>(S, OpPC);
49734}
49735bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
49736 if (!isActive()) return true;
49737 CurrentSource = L;
49738 return Shl<PT_IntAP, PT_Uint32>(S, OpPC);
49739}
49740bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
49741 if (!isActive()) return true;
49742 CurrentSource = L;
49743 return Shl<PT_IntAP, PT_Sint64>(S, OpPC);
49744}
49745bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
49746 if (!isActive()) return true;
49747 CurrentSource = L;
49748 return Shl<PT_IntAP, PT_Uint64>(S, OpPC);
49749}
49750bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
49751 if (!isActive()) return true;
49752 CurrentSource = L;
49753 return Shl<PT_IntAP, PT_IntAP>(S, OpPC);
49754}
49755bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
49756 if (!isActive()) return true;
49757 CurrentSource = L;
49758 return Shl<PT_IntAP, PT_IntAPS>(S, OpPC);
49759}
49760bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
49761 if (!isActive()) return true;
49762 CurrentSource = L;
49763 return Shl<PT_IntAPS, PT_Sint8>(S, OpPC);
49764}
49765bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
49766 if (!isActive()) return true;
49767 CurrentSource = L;
49768 return Shl<PT_IntAPS, PT_Uint8>(S, OpPC);
49769}
49770bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
49771 if (!isActive()) return true;
49772 CurrentSource = L;
49773 return Shl<PT_IntAPS, PT_Sint16>(S, OpPC);
49774}
49775bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
49776 if (!isActive()) return true;
49777 CurrentSource = L;
49778 return Shl<PT_IntAPS, PT_Uint16>(S, OpPC);
49779}
49780bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
49781 if (!isActive()) return true;
49782 CurrentSource = L;
49783 return Shl<PT_IntAPS, PT_Sint32>(S, OpPC);
49784}
49785bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
49786 if (!isActive()) return true;
49787 CurrentSource = L;
49788 return Shl<PT_IntAPS, PT_Uint32>(S, OpPC);
49789}
49790bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
49791 if (!isActive()) return true;
49792 CurrentSource = L;
49793 return Shl<PT_IntAPS, PT_Sint64>(S, OpPC);
49794}
49795bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
49796 if (!isActive()) return true;
49797 CurrentSource = L;
49798 return Shl<PT_IntAPS, PT_Uint64>(S, OpPC);
49799}
49800bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
49801 if (!isActive()) return true;
49802 CurrentSource = L;
49803 return Shl<PT_IntAPS, PT_IntAP>(S, OpPC);
49804}
49805bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
49806 if (!isActive()) return true;
49807 CurrentSource = L;
49808 return Shl<PT_IntAPS, PT_IntAPS>(S, OpPC);
49809}
49810#endif
49811#ifdef GET_OPCODE_NAMES
49812OP_ShrSint8Sint8,
49813OP_ShrSint8Uint8,
49814OP_ShrSint8Sint16,
49815OP_ShrSint8Uint16,
49816OP_ShrSint8Sint32,
49817OP_ShrSint8Uint32,
49818OP_ShrSint8Sint64,
49819OP_ShrSint8Uint64,
49820OP_ShrSint8IntAP,
49821OP_ShrSint8IntAPS,
49822OP_ShrUint8Sint8,
49823OP_ShrUint8Uint8,
49824OP_ShrUint8Sint16,
49825OP_ShrUint8Uint16,
49826OP_ShrUint8Sint32,
49827OP_ShrUint8Uint32,
49828OP_ShrUint8Sint64,
49829OP_ShrUint8Uint64,
49830OP_ShrUint8IntAP,
49831OP_ShrUint8IntAPS,
49832OP_ShrSint16Sint8,
49833OP_ShrSint16Uint8,
49834OP_ShrSint16Sint16,
49835OP_ShrSint16Uint16,
49836OP_ShrSint16Sint32,
49837OP_ShrSint16Uint32,
49838OP_ShrSint16Sint64,
49839OP_ShrSint16Uint64,
49840OP_ShrSint16IntAP,
49841OP_ShrSint16IntAPS,
49842OP_ShrUint16Sint8,
49843OP_ShrUint16Uint8,
49844OP_ShrUint16Sint16,
49845OP_ShrUint16Uint16,
49846OP_ShrUint16Sint32,
49847OP_ShrUint16Uint32,
49848OP_ShrUint16Sint64,
49849OP_ShrUint16Uint64,
49850OP_ShrUint16IntAP,
49851OP_ShrUint16IntAPS,
49852OP_ShrSint32Sint8,
49853OP_ShrSint32Uint8,
49854OP_ShrSint32Sint16,
49855OP_ShrSint32Uint16,
49856OP_ShrSint32Sint32,
49857OP_ShrSint32Uint32,
49858OP_ShrSint32Sint64,
49859OP_ShrSint32Uint64,
49860OP_ShrSint32IntAP,
49861OP_ShrSint32IntAPS,
49862OP_ShrUint32Sint8,
49863OP_ShrUint32Uint8,
49864OP_ShrUint32Sint16,
49865OP_ShrUint32Uint16,
49866OP_ShrUint32Sint32,
49867OP_ShrUint32Uint32,
49868OP_ShrUint32Sint64,
49869OP_ShrUint32Uint64,
49870OP_ShrUint32IntAP,
49871OP_ShrUint32IntAPS,
49872OP_ShrSint64Sint8,
49873OP_ShrSint64Uint8,
49874OP_ShrSint64Sint16,
49875OP_ShrSint64Uint16,
49876OP_ShrSint64Sint32,
49877OP_ShrSint64Uint32,
49878OP_ShrSint64Sint64,
49879OP_ShrSint64Uint64,
49880OP_ShrSint64IntAP,
49881OP_ShrSint64IntAPS,
49882OP_ShrUint64Sint8,
49883OP_ShrUint64Uint8,
49884OP_ShrUint64Sint16,
49885OP_ShrUint64Uint16,
49886OP_ShrUint64Sint32,
49887OP_ShrUint64Uint32,
49888OP_ShrUint64Sint64,
49889OP_ShrUint64Uint64,
49890OP_ShrUint64IntAP,
49891OP_ShrUint64IntAPS,
49892OP_ShrIntAPSint8,
49893OP_ShrIntAPUint8,
49894OP_ShrIntAPSint16,
49895OP_ShrIntAPUint16,
49896OP_ShrIntAPSint32,
49897OP_ShrIntAPUint32,
49898OP_ShrIntAPSint64,
49899OP_ShrIntAPUint64,
49900OP_ShrIntAPIntAP,
49901OP_ShrIntAPIntAPS,
49902OP_ShrIntAPSSint8,
49903OP_ShrIntAPSUint8,
49904OP_ShrIntAPSSint16,
49905OP_ShrIntAPSUint16,
49906OP_ShrIntAPSSint32,
49907OP_ShrIntAPSUint32,
49908OP_ShrIntAPSSint64,
49909OP_ShrIntAPSUint64,
49910OP_ShrIntAPSIntAP,
49911OP_ShrIntAPSIntAPS,
49912#endif
49913#ifdef GET_INTERPFN_LIST
49914&Interp_ShrSint8Sint8,
49915&Interp_ShrSint8Uint8,
49916&Interp_ShrSint8Sint16,
49917&Interp_ShrSint8Uint16,
49918&Interp_ShrSint8Sint32,
49919&Interp_ShrSint8Uint32,
49920&Interp_ShrSint8Sint64,
49921&Interp_ShrSint8Uint64,
49922&Interp_ShrSint8IntAP,
49923&Interp_ShrSint8IntAPS,
49924&Interp_ShrUint8Sint8,
49925&Interp_ShrUint8Uint8,
49926&Interp_ShrUint8Sint16,
49927&Interp_ShrUint8Uint16,
49928&Interp_ShrUint8Sint32,
49929&Interp_ShrUint8Uint32,
49930&Interp_ShrUint8Sint64,
49931&Interp_ShrUint8Uint64,
49932&Interp_ShrUint8IntAP,
49933&Interp_ShrUint8IntAPS,
49934&Interp_ShrSint16Sint8,
49935&Interp_ShrSint16Uint8,
49936&Interp_ShrSint16Sint16,
49937&Interp_ShrSint16Uint16,
49938&Interp_ShrSint16Sint32,
49939&Interp_ShrSint16Uint32,
49940&Interp_ShrSint16Sint64,
49941&Interp_ShrSint16Uint64,
49942&Interp_ShrSint16IntAP,
49943&Interp_ShrSint16IntAPS,
49944&Interp_ShrUint16Sint8,
49945&Interp_ShrUint16Uint8,
49946&Interp_ShrUint16Sint16,
49947&Interp_ShrUint16Uint16,
49948&Interp_ShrUint16Sint32,
49949&Interp_ShrUint16Uint32,
49950&Interp_ShrUint16Sint64,
49951&Interp_ShrUint16Uint64,
49952&Interp_ShrUint16IntAP,
49953&Interp_ShrUint16IntAPS,
49954&Interp_ShrSint32Sint8,
49955&Interp_ShrSint32Uint8,
49956&Interp_ShrSint32Sint16,
49957&Interp_ShrSint32Uint16,
49958&Interp_ShrSint32Sint32,
49959&Interp_ShrSint32Uint32,
49960&Interp_ShrSint32Sint64,
49961&Interp_ShrSint32Uint64,
49962&Interp_ShrSint32IntAP,
49963&Interp_ShrSint32IntAPS,
49964&Interp_ShrUint32Sint8,
49965&Interp_ShrUint32Uint8,
49966&Interp_ShrUint32Sint16,
49967&Interp_ShrUint32Uint16,
49968&Interp_ShrUint32Sint32,
49969&Interp_ShrUint32Uint32,
49970&Interp_ShrUint32Sint64,
49971&Interp_ShrUint32Uint64,
49972&Interp_ShrUint32IntAP,
49973&Interp_ShrUint32IntAPS,
49974&Interp_ShrSint64Sint8,
49975&Interp_ShrSint64Uint8,
49976&Interp_ShrSint64Sint16,
49977&Interp_ShrSint64Uint16,
49978&Interp_ShrSint64Sint32,
49979&Interp_ShrSint64Uint32,
49980&Interp_ShrSint64Sint64,
49981&Interp_ShrSint64Uint64,
49982&Interp_ShrSint64IntAP,
49983&Interp_ShrSint64IntAPS,
49984&Interp_ShrUint64Sint8,
49985&Interp_ShrUint64Uint8,
49986&Interp_ShrUint64Sint16,
49987&Interp_ShrUint64Uint16,
49988&Interp_ShrUint64Sint32,
49989&Interp_ShrUint64Uint32,
49990&Interp_ShrUint64Sint64,
49991&Interp_ShrUint64Uint64,
49992&Interp_ShrUint64IntAP,
49993&Interp_ShrUint64IntAPS,
49994&Interp_ShrIntAPSint8,
49995&Interp_ShrIntAPUint8,
49996&Interp_ShrIntAPSint16,
49997&Interp_ShrIntAPUint16,
49998&Interp_ShrIntAPSint32,
49999&Interp_ShrIntAPUint32,
50000&Interp_ShrIntAPSint64,
50001&Interp_ShrIntAPUint64,
50002&Interp_ShrIntAPIntAP,
50003&Interp_ShrIntAPIntAPS,
50004&Interp_ShrIntAPSSint8,
50005&Interp_ShrIntAPSUint8,
50006&Interp_ShrIntAPSSint16,
50007&Interp_ShrIntAPSUint16,
50008&Interp_ShrIntAPSSint32,
50009&Interp_ShrIntAPSUint32,
50010&Interp_ShrIntAPSSint64,
50011&Interp_ShrIntAPSUint64,
50012&Interp_ShrIntAPSIntAP,
50013&Interp_ShrIntAPSIntAPS,
50014#endif
50015#ifdef GET_INTERPFN_DISPATCHERS
50016PRESERVE_NONE
50017static bool Interp_ShrSint8Sint8(InterpState &S, CodePtr &PC) {
50018 if (!Shr<PT_Sint8, PT_Sint8>(S, PC))
50019 return false;
50020#if USE_TAILCALLS
50021 MUSTTAIL return InterpNext(S, PC);
50022#else
50023 return true;
50024#endif
50025}
50026PRESERVE_NONE
50027static bool Interp_ShrSint8Uint8(InterpState &S, CodePtr &PC) {
50028 if (!Shr<PT_Sint8, PT_Uint8>(S, PC))
50029 return false;
50030#if USE_TAILCALLS
50031 MUSTTAIL return InterpNext(S, PC);
50032#else
50033 return true;
50034#endif
50035}
50036PRESERVE_NONE
50037static bool Interp_ShrSint8Sint16(InterpState &S, CodePtr &PC) {
50038 if (!Shr<PT_Sint8, PT_Sint16>(S, PC))
50039 return false;
50040#if USE_TAILCALLS
50041 MUSTTAIL return InterpNext(S, PC);
50042#else
50043 return true;
50044#endif
50045}
50046PRESERVE_NONE
50047static bool Interp_ShrSint8Uint16(InterpState &S, CodePtr &PC) {
50048 if (!Shr<PT_Sint8, PT_Uint16>(S, PC))
50049 return false;
50050#if USE_TAILCALLS
50051 MUSTTAIL return InterpNext(S, PC);
50052#else
50053 return true;
50054#endif
50055}
50056PRESERVE_NONE
50057static bool Interp_ShrSint8Sint32(InterpState &S, CodePtr &PC) {
50058 if (!Shr<PT_Sint8, PT_Sint32>(S, PC))
50059 return false;
50060#if USE_TAILCALLS
50061 MUSTTAIL return InterpNext(S, PC);
50062#else
50063 return true;
50064#endif
50065}
50066PRESERVE_NONE
50067static bool Interp_ShrSint8Uint32(InterpState &S, CodePtr &PC) {
50068 if (!Shr<PT_Sint8, PT_Uint32>(S, PC))
50069 return false;
50070#if USE_TAILCALLS
50071 MUSTTAIL return InterpNext(S, PC);
50072#else
50073 return true;
50074#endif
50075}
50076PRESERVE_NONE
50077static bool Interp_ShrSint8Sint64(InterpState &S, CodePtr &PC) {
50078 if (!Shr<PT_Sint8, PT_Sint64>(S, PC))
50079 return false;
50080#if USE_TAILCALLS
50081 MUSTTAIL return InterpNext(S, PC);
50082#else
50083 return true;
50084#endif
50085}
50086PRESERVE_NONE
50087static bool Interp_ShrSint8Uint64(InterpState &S, CodePtr &PC) {
50088 if (!Shr<PT_Sint8, PT_Uint64>(S, PC))
50089 return false;
50090#if USE_TAILCALLS
50091 MUSTTAIL return InterpNext(S, PC);
50092#else
50093 return true;
50094#endif
50095}
50096PRESERVE_NONE
50097static bool Interp_ShrSint8IntAP(InterpState &S, CodePtr &PC) {
50098 if (!Shr<PT_Sint8, PT_IntAP>(S, PC))
50099 return false;
50100#if USE_TAILCALLS
50101 MUSTTAIL return InterpNext(S, PC);
50102#else
50103 return true;
50104#endif
50105}
50106PRESERVE_NONE
50107static bool Interp_ShrSint8IntAPS(InterpState &S, CodePtr &PC) {
50108 if (!Shr<PT_Sint8, PT_IntAPS>(S, PC))
50109 return false;
50110#if USE_TAILCALLS
50111 MUSTTAIL return InterpNext(S, PC);
50112#else
50113 return true;
50114#endif
50115}
50116PRESERVE_NONE
50117static bool Interp_ShrUint8Sint8(InterpState &S, CodePtr &PC) {
50118 if (!Shr<PT_Uint8, PT_Sint8>(S, PC))
50119 return false;
50120#if USE_TAILCALLS
50121 MUSTTAIL return InterpNext(S, PC);
50122#else
50123 return true;
50124#endif
50125}
50126PRESERVE_NONE
50127static bool Interp_ShrUint8Uint8(InterpState &S, CodePtr &PC) {
50128 if (!Shr<PT_Uint8, PT_Uint8>(S, PC))
50129 return false;
50130#if USE_TAILCALLS
50131 MUSTTAIL return InterpNext(S, PC);
50132#else
50133 return true;
50134#endif
50135}
50136PRESERVE_NONE
50137static bool Interp_ShrUint8Sint16(InterpState &S, CodePtr &PC) {
50138 if (!Shr<PT_Uint8, PT_Sint16>(S, PC))
50139 return false;
50140#if USE_TAILCALLS
50141 MUSTTAIL return InterpNext(S, PC);
50142#else
50143 return true;
50144#endif
50145}
50146PRESERVE_NONE
50147static bool Interp_ShrUint8Uint16(InterpState &S, CodePtr &PC) {
50148 if (!Shr<PT_Uint8, PT_Uint16>(S, PC))
50149 return false;
50150#if USE_TAILCALLS
50151 MUSTTAIL return InterpNext(S, PC);
50152#else
50153 return true;
50154#endif
50155}
50156PRESERVE_NONE
50157static bool Interp_ShrUint8Sint32(InterpState &S, CodePtr &PC) {
50158 if (!Shr<PT_Uint8, PT_Sint32>(S, PC))
50159 return false;
50160#if USE_TAILCALLS
50161 MUSTTAIL return InterpNext(S, PC);
50162#else
50163 return true;
50164#endif
50165}
50166PRESERVE_NONE
50167static bool Interp_ShrUint8Uint32(InterpState &S, CodePtr &PC) {
50168 if (!Shr<PT_Uint8, PT_Uint32>(S, PC))
50169 return false;
50170#if USE_TAILCALLS
50171 MUSTTAIL return InterpNext(S, PC);
50172#else
50173 return true;
50174#endif
50175}
50176PRESERVE_NONE
50177static bool Interp_ShrUint8Sint64(InterpState &S, CodePtr &PC) {
50178 if (!Shr<PT_Uint8, PT_Sint64>(S, PC))
50179 return false;
50180#if USE_TAILCALLS
50181 MUSTTAIL return InterpNext(S, PC);
50182#else
50183 return true;
50184#endif
50185}
50186PRESERVE_NONE
50187static bool Interp_ShrUint8Uint64(InterpState &S, CodePtr &PC) {
50188 if (!Shr<PT_Uint8, PT_Uint64>(S, PC))
50189 return false;
50190#if USE_TAILCALLS
50191 MUSTTAIL return InterpNext(S, PC);
50192#else
50193 return true;
50194#endif
50195}
50196PRESERVE_NONE
50197static bool Interp_ShrUint8IntAP(InterpState &S, CodePtr &PC) {
50198 if (!Shr<PT_Uint8, PT_IntAP>(S, PC))
50199 return false;
50200#if USE_TAILCALLS
50201 MUSTTAIL return InterpNext(S, PC);
50202#else
50203 return true;
50204#endif
50205}
50206PRESERVE_NONE
50207static bool Interp_ShrUint8IntAPS(InterpState &S, CodePtr &PC) {
50208 if (!Shr<PT_Uint8, PT_IntAPS>(S, PC))
50209 return false;
50210#if USE_TAILCALLS
50211 MUSTTAIL return InterpNext(S, PC);
50212#else
50213 return true;
50214#endif
50215}
50216PRESERVE_NONE
50217static bool Interp_ShrSint16Sint8(InterpState &S, CodePtr &PC) {
50218 if (!Shr<PT_Sint16, PT_Sint8>(S, PC))
50219 return false;
50220#if USE_TAILCALLS
50221 MUSTTAIL return InterpNext(S, PC);
50222#else
50223 return true;
50224#endif
50225}
50226PRESERVE_NONE
50227static bool Interp_ShrSint16Uint8(InterpState &S, CodePtr &PC) {
50228 if (!Shr<PT_Sint16, PT_Uint8>(S, PC))
50229 return false;
50230#if USE_TAILCALLS
50231 MUSTTAIL return InterpNext(S, PC);
50232#else
50233 return true;
50234#endif
50235}
50236PRESERVE_NONE
50237static bool Interp_ShrSint16Sint16(InterpState &S, CodePtr &PC) {
50238 if (!Shr<PT_Sint16, PT_Sint16>(S, PC))
50239 return false;
50240#if USE_TAILCALLS
50241 MUSTTAIL return InterpNext(S, PC);
50242#else
50243 return true;
50244#endif
50245}
50246PRESERVE_NONE
50247static bool Interp_ShrSint16Uint16(InterpState &S, CodePtr &PC) {
50248 if (!Shr<PT_Sint16, PT_Uint16>(S, PC))
50249 return false;
50250#if USE_TAILCALLS
50251 MUSTTAIL return InterpNext(S, PC);
50252#else
50253 return true;
50254#endif
50255}
50256PRESERVE_NONE
50257static bool Interp_ShrSint16Sint32(InterpState &S, CodePtr &PC) {
50258 if (!Shr<PT_Sint16, PT_Sint32>(S, PC))
50259 return false;
50260#if USE_TAILCALLS
50261 MUSTTAIL return InterpNext(S, PC);
50262#else
50263 return true;
50264#endif
50265}
50266PRESERVE_NONE
50267static bool Interp_ShrSint16Uint32(InterpState &S, CodePtr &PC) {
50268 if (!Shr<PT_Sint16, PT_Uint32>(S, PC))
50269 return false;
50270#if USE_TAILCALLS
50271 MUSTTAIL return InterpNext(S, PC);
50272#else
50273 return true;
50274#endif
50275}
50276PRESERVE_NONE
50277static bool Interp_ShrSint16Sint64(InterpState &S, CodePtr &PC) {
50278 if (!Shr<PT_Sint16, PT_Sint64>(S, PC))
50279 return false;
50280#if USE_TAILCALLS
50281 MUSTTAIL return InterpNext(S, PC);
50282#else
50283 return true;
50284#endif
50285}
50286PRESERVE_NONE
50287static bool Interp_ShrSint16Uint64(InterpState &S, CodePtr &PC) {
50288 if (!Shr<PT_Sint16, PT_Uint64>(S, PC))
50289 return false;
50290#if USE_TAILCALLS
50291 MUSTTAIL return InterpNext(S, PC);
50292#else
50293 return true;
50294#endif
50295}
50296PRESERVE_NONE
50297static bool Interp_ShrSint16IntAP(InterpState &S, CodePtr &PC) {
50298 if (!Shr<PT_Sint16, PT_IntAP>(S, PC))
50299 return false;
50300#if USE_TAILCALLS
50301 MUSTTAIL return InterpNext(S, PC);
50302#else
50303 return true;
50304#endif
50305}
50306PRESERVE_NONE
50307static bool Interp_ShrSint16IntAPS(InterpState &S, CodePtr &PC) {
50308 if (!Shr<PT_Sint16, PT_IntAPS>(S, PC))
50309 return false;
50310#if USE_TAILCALLS
50311 MUSTTAIL return InterpNext(S, PC);
50312#else
50313 return true;
50314#endif
50315}
50316PRESERVE_NONE
50317static bool Interp_ShrUint16Sint8(InterpState &S, CodePtr &PC) {
50318 if (!Shr<PT_Uint16, PT_Sint8>(S, PC))
50319 return false;
50320#if USE_TAILCALLS
50321 MUSTTAIL return InterpNext(S, PC);
50322#else
50323 return true;
50324#endif
50325}
50326PRESERVE_NONE
50327static bool Interp_ShrUint16Uint8(InterpState &S, CodePtr &PC) {
50328 if (!Shr<PT_Uint16, PT_Uint8>(S, PC))
50329 return false;
50330#if USE_TAILCALLS
50331 MUSTTAIL return InterpNext(S, PC);
50332#else
50333 return true;
50334#endif
50335}
50336PRESERVE_NONE
50337static bool Interp_ShrUint16Sint16(InterpState &S, CodePtr &PC) {
50338 if (!Shr<PT_Uint16, PT_Sint16>(S, PC))
50339 return false;
50340#if USE_TAILCALLS
50341 MUSTTAIL return InterpNext(S, PC);
50342#else
50343 return true;
50344#endif
50345}
50346PRESERVE_NONE
50347static bool Interp_ShrUint16Uint16(InterpState &S, CodePtr &PC) {
50348 if (!Shr<PT_Uint16, PT_Uint16>(S, PC))
50349 return false;
50350#if USE_TAILCALLS
50351 MUSTTAIL return InterpNext(S, PC);
50352#else
50353 return true;
50354#endif
50355}
50356PRESERVE_NONE
50357static bool Interp_ShrUint16Sint32(InterpState &S, CodePtr &PC) {
50358 if (!Shr<PT_Uint16, PT_Sint32>(S, PC))
50359 return false;
50360#if USE_TAILCALLS
50361 MUSTTAIL return InterpNext(S, PC);
50362#else
50363 return true;
50364#endif
50365}
50366PRESERVE_NONE
50367static bool Interp_ShrUint16Uint32(InterpState &S, CodePtr &PC) {
50368 if (!Shr<PT_Uint16, PT_Uint32>(S, PC))
50369 return false;
50370#if USE_TAILCALLS
50371 MUSTTAIL return InterpNext(S, PC);
50372#else
50373 return true;
50374#endif
50375}
50376PRESERVE_NONE
50377static bool Interp_ShrUint16Sint64(InterpState &S, CodePtr &PC) {
50378 if (!Shr<PT_Uint16, PT_Sint64>(S, PC))
50379 return false;
50380#if USE_TAILCALLS
50381 MUSTTAIL return InterpNext(S, PC);
50382#else
50383 return true;
50384#endif
50385}
50386PRESERVE_NONE
50387static bool Interp_ShrUint16Uint64(InterpState &S, CodePtr &PC) {
50388 if (!Shr<PT_Uint16, PT_Uint64>(S, PC))
50389 return false;
50390#if USE_TAILCALLS
50391 MUSTTAIL return InterpNext(S, PC);
50392#else
50393 return true;
50394#endif
50395}
50396PRESERVE_NONE
50397static bool Interp_ShrUint16IntAP(InterpState &S, CodePtr &PC) {
50398 if (!Shr<PT_Uint16, PT_IntAP>(S, PC))
50399 return false;
50400#if USE_TAILCALLS
50401 MUSTTAIL return InterpNext(S, PC);
50402#else
50403 return true;
50404#endif
50405}
50406PRESERVE_NONE
50407static bool Interp_ShrUint16IntAPS(InterpState &S, CodePtr &PC) {
50408 if (!Shr<PT_Uint16, PT_IntAPS>(S, PC))
50409 return false;
50410#if USE_TAILCALLS
50411 MUSTTAIL return InterpNext(S, PC);
50412#else
50413 return true;
50414#endif
50415}
50416PRESERVE_NONE
50417static bool Interp_ShrSint32Sint8(InterpState &S, CodePtr &PC) {
50418 if (!Shr<PT_Sint32, PT_Sint8>(S, PC))
50419 return false;
50420#if USE_TAILCALLS
50421 MUSTTAIL return InterpNext(S, PC);
50422#else
50423 return true;
50424#endif
50425}
50426PRESERVE_NONE
50427static bool Interp_ShrSint32Uint8(InterpState &S, CodePtr &PC) {
50428 if (!Shr<PT_Sint32, PT_Uint8>(S, PC))
50429 return false;
50430#if USE_TAILCALLS
50431 MUSTTAIL return InterpNext(S, PC);
50432#else
50433 return true;
50434#endif
50435}
50436PRESERVE_NONE
50437static bool Interp_ShrSint32Sint16(InterpState &S, CodePtr &PC) {
50438 if (!Shr<PT_Sint32, PT_Sint16>(S, PC))
50439 return false;
50440#if USE_TAILCALLS
50441 MUSTTAIL return InterpNext(S, PC);
50442#else
50443 return true;
50444#endif
50445}
50446PRESERVE_NONE
50447static bool Interp_ShrSint32Uint16(InterpState &S, CodePtr &PC) {
50448 if (!Shr<PT_Sint32, PT_Uint16>(S, PC))
50449 return false;
50450#if USE_TAILCALLS
50451 MUSTTAIL return InterpNext(S, PC);
50452#else
50453 return true;
50454#endif
50455}
50456PRESERVE_NONE
50457static bool Interp_ShrSint32Sint32(InterpState &S, CodePtr &PC) {
50458 if (!Shr<PT_Sint32, PT_Sint32>(S, PC))
50459 return false;
50460#if USE_TAILCALLS
50461 MUSTTAIL return InterpNext(S, PC);
50462#else
50463 return true;
50464#endif
50465}
50466PRESERVE_NONE
50467static bool Interp_ShrSint32Uint32(InterpState &S, CodePtr &PC) {
50468 if (!Shr<PT_Sint32, PT_Uint32>(S, PC))
50469 return false;
50470#if USE_TAILCALLS
50471 MUSTTAIL return InterpNext(S, PC);
50472#else
50473 return true;
50474#endif
50475}
50476PRESERVE_NONE
50477static bool Interp_ShrSint32Sint64(InterpState &S, CodePtr &PC) {
50478 if (!Shr<PT_Sint32, PT_Sint64>(S, PC))
50479 return false;
50480#if USE_TAILCALLS
50481 MUSTTAIL return InterpNext(S, PC);
50482#else
50483 return true;
50484#endif
50485}
50486PRESERVE_NONE
50487static bool Interp_ShrSint32Uint64(InterpState &S, CodePtr &PC) {
50488 if (!Shr<PT_Sint32, PT_Uint64>(S, PC))
50489 return false;
50490#if USE_TAILCALLS
50491 MUSTTAIL return InterpNext(S, PC);
50492#else
50493 return true;
50494#endif
50495}
50496PRESERVE_NONE
50497static bool Interp_ShrSint32IntAP(InterpState &S, CodePtr &PC) {
50498 if (!Shr<PT_Sint32, PT_IntAP>(S, PC))
50499 return false;
50500#if USE_TAILCALLS
50501 MUSTTAIL return InterpNext(S, PC);
50502#else
50503 return true;
50504#endif
50505}
50506PRESERVE_NONE
50507static bool Interp_ShrSint32IntAPS(InterpState &S, CodePtr &PC) {
50508 if (!Shr<PT_Sint32, PT_IntAPS>(S, PC))
50509 return false;
50510#if USE_TAILCALLS
50511 MUSTTAIL return InterpNext(S, PC);
50512#else
50513 return true;
50514#endif
50515}
50516PRESERVE_NONE
50517static bool Interp_ShrUint32Sint8(InterpState &S, CodePtr &PC) {
50518 if (!Shr<PT_Uint32, PT_Sint8>(S, PC))
50519 return false;
50520#if USE_TAILCALLS
50521 MUSTTAIL return InterpNext(S, PC);
50522#else
50523 return true;
50524#endif
50525}
50526PRESERVE_NONE
50527static bool Interp_ShrUint32Uint8(InterpState &S, CodePtr &PC) {
50528 if (!Shr<PT_Uint32, PT_Uint8>(S, PC))
50529 return false;
50530#if USE_TAILCALLS
50531 MUSTTAIL return InterpNext(S, PC);
50532#else
50533 return true;
50534#endif
50535}
50536PRESERVE_NONE
50537static bool Interp_ShrUint32Sint16(InterpState &S, CodePtr &PC) {
50538 if (!Shr<PT_Uint32, PT_Sint16>(S, PC))
50539 return false;
50540#if USE_TAILCALLS
50541 MUSTTAIL return InterpNext(S, PC);
50542#else
50543 return true;
50544#endif
50545}
50546PRESERVE_NONE
50547static bool Interp_ShrUint32Uint16(InterpState &S, CodePtr &PC) {
50548 if (!Shr<PT_Uint32, PT_Uint16>(S, PC))
50549 return false;
50550#if USE_TAILCALLS
50551 MUSTTAIL return InterpNext(S, PC);
50552#else
50553 return true;
50554#endif
50555}
50556PRESERVE_NONE
50557static bool Interp_ShrUint32Sint32(InterpState &S, CodePtr &PC) {
50558 if (!Shr<PT_Uint32, PT_Sint32>(S, PC))
50559 return false;
50560#if USE_TAILCALLS
50561 MUSTTAIL return InterpNext(S, PC);
50562#else
50563 return true;
50564#endif
50565}
50566PRESERVE_NONE
50567static bool Interp_ShrUint32Uint32(InterpState &S, CodePtr &PC) {
50568 if (!Shr<PT_Uint32, PT_Uint32>(S, PC))
50569 return false;
50570#if USE_TAILCALLS
50571 MUSTTAIL return InterpNext(S, PC);
50572#else
50573 return true;
50574#endif
50575}
50576PRESERVE_NONE
50577static bool Interp_ShrUint32Sint64(InterpState &S, CodePtr &PC) {
50578 if (!Shr<PT_Uint32, PT_Sint64>(S, PC))
50579 return false;
50580#if USE_TAILCALLS
50581 MUSTTAIL return InterpNext(S, PC);
50582#else
50583 return true;
50584#endif
50585}
50586PRESERVE_NONE
50587static bool Interp_ShrUint32Uint64(InterpState &S, CodePtr &PC) {
50588 if (!Shr<PT_Uint32, PT_Uint64>(S, PC))
50589 return false;
50590#if USE_TAILCALLS
50591 MUSTTAIL return InterpNext(S, PC);
50592#else
50593 return true;
50594#endif
50595}
50596PRESERVE_NONE
50597static bool Interp_ShrUint32IntAP(InterpState &S, CodePtr &PC) {
50598 if (!Shr<PT_Uint32, PT_IntAP>(S, PC))
50599 return false;
50600#if USE_TAILCALLS
50601 MUSTTAIL return InterpNext(S, PC);
50602#else
50603 return true;
50604#endif
50605}
50606PRESERVE_NONE
50607static bool Interp_ShrUint32IntAPS(InterpState &S, CodePtr &PC) {
50608 if (!Shr<PT_Uint32, PT_IntAPS>(S, PC))
50609 return false;
50610#if USE_TAILCALLS
50611 MUSTTAIL return InterpNext(S, PC);
50612#else
50613 return true;
50614#endif
50615}
50616PRESERVE_NONE
50617static bool Interp_ShrSint64Sint8(InterpState &S, CodePtr &PC) {
50618 if (!Shr<PT_Sint64, PT_Sint8>(S, PC))
50619 return false;
50620#if USE_TAILCALLS
50621 MUSTTAIL return InterpNext(S, PC);
50622#else
50623 return true;
50624#endif
50625}
50626PRESERVE_NONE
50627static bool Interp_ShrSint64Uint8(InterpState &S, CodePtr &PC) {
50628 if (!Shr<PT_Sint64, PT_Uint8>(S, PC))
50629 return false;
50630#if USE_TAILCALLS
50631 MUSTTAIL return InterpNext(S, PC);
50632#else
50633 return true;
50634#endif
50635}
50636PRESERVE_NONE
50637static bool Interp_ShrSint64Sint16(InterpState &S, CodePtr &PC) {
50638 if (!Shr<PT_Sint64, PT_Sint16>(S, PC))
50639 return false;
50640#if USE_TAILCALLS
50641 MUSTTAIL return InterpNext(S, PC);
50642#else
50643 return true;
50644#endif
50645}
50646PRESERVE_NONE
50647static bool Interp_ShrSint64Uint16(InterpState &S, CodePtr &PC) {
50648 if (!Shr<PT_Sint64, PT_Uint16>(S, PC))
50649 return false;
50650#if USE_TAILCALLS
50651 MUSTTAIL return InterpNext(S, PC);
50652#else
50653 return true;
50654#endif
50655}
50656PRESERVE_NONE
50657static bool Interp_ShrSint64Sint32(InterpState &S, CodePtr &PC) {
50658 if (!Shr<PT_Sint64, PT_Sint32>(S, PC))
50659 return false;
50660#if USE_TAILCALLS
50661 MUSTTAIL return InterpNext(S, PC);
50662#else
50663 return true;
50664#endif
50665}
50666PRESERVE_NONE
50667static bool Interp_ShrSint64Uint32(InterpState &S, CodePtr &PC) {
50668 if (!Shr<PT_Sint64, PT_Uint32>(S, PC))
50669 return false;
50670#if USE_TAILCALLS
50671 MUSTTAIL return InterpNext(S, PC);
50672#else
50673 return true;
50674#endif
50675}
50676PRESERVE_NONE
50677static bool Interp_ShrSint64Sint64(InterpState &S, CodePtr &PC) {
50678 if (!Shr<PT_Sint64, PT_Sint64>(S, PC))
50679 return false;
50680#if USE_TAILCALLS
50681 MUSTTAIL return InterpNext(S, PC);
50682#else
50683 return true;
50684#endif
50685}
50686PRESERVE_NONE
50687static bool Interp_ShrSint64Uint64(InterpState &S, CodePtr &PC) {
50688 if (!Shr<PT_Sint64, PT_Uint64>(S, PC))
50689 return false;
50690#if USE_TAILCALLS
50691 MUSTTAIL return InterpNext(S, PC);
50692#else
50693 return true;
50694#endif
50695}
50696PRESERVE_NONE
50697static bool Interp_ShrSint64IntAP(InterpState &S, CodePtr &PC) {
50698 if (!Shr<PT_Sint64, PT_IntAP>(S, PC))
50699 return false;
50700#if USE_TAILCALLS
50701 MUSTTAIL return InterpNext(S, PC);
50702#else
50703 return true;
50704#endif
50705}
50706PRESERVE_NONE
50707static bool Interp_ShrSint64IntAPS(InterpState &S, CodePtr &PC) {
50708 if (!Shr<PT_Sint64, PT_IntAPS>(S, PC))
50709 return false;
50710#if USE_TAILCALLS
50711 MUSTTAIL return InterpNext(S, PC);
50712#else
50713 return true;
50714#endif
50715}
50716PRESERVE_NONE
50717static bool Interp_ShrUint64Sint8(InterpState &S, CodePtr &PC) {
50718 if (!Shr<PT_Uint64, PT_Sint8>(S, PC))
50719 return false;
50720#if USE_TAILCALLS
50721 MUSTTAIL return InterpNext(S, PC);
50722#else
50723 return true;
50724#endif
50725}
50726PRESERVE_NONE
50727static bool Interp_ShrUint64Uint8(InterpState &S, CodePtr &PC) {
50728 if (!Shr<PT_Uint64, PT_Uint8>(S, PC))
50729 return false;
50730#if USE_TAILCALLS
50731 MUSTTAIL return InterpNext(S, PC);
50732#else
50733 return true;
50734#endif
50735}
50736PRESERVE_NONE
50737static bool Interp_ShrUint64Sint16(InterpState &S, CodePtr &PC) {
50738 if (!Shr<PT_Uint64, PT_Sint16>(S, PC))
50739 return false;
50740#if USE_TAILCALLS
50741 MUSTTAIL return InterpNext(S, PC);
50742#else
50743 return true;
50744#endif
50745}
50746PRESERVE_NONE
50747static bool Interp_ShrUint64Uint16(InterpState &S, CodePtr &PC) {
50748 if (!Shr<PT_Uint64, PT_Uint16>(S, PC))
50749 return false;
50750#if USE_TAILCALLS
50751 MUSTTAIL return InterpNext(S, PC);
50752#else
50753 return true;
50754#endif
50755}
50756PRESERVE_NONE
50757static bool Interp_ShrUint64Sint32(InterpState &S, CodePtr &PC) {
50758 if (!Shr<PT_Uint64, PT_Sint32>(S, PC))
50759 return false;
50760#if USE_TAILCALLS
50761 MUSTTAIL return InterpNext(S, PC);
50762#else
50763 return true;
50764#endif
50765}
50766PRESERVE_NONE
50767static bool Interp_ShrUint64Uint32(InterpState &S, CodePtr &PC) {
50768 if (!Shr<PT_Uint64, PT_Uint32>(S, PC))
50769 return false;
50770#if USE_TAILCALLS
50771 MUSTTAIL return InterpNext(S, PC);
50772#else
50773 return true;
50774#endif
50775}
50776PRESERVE_NONE
50777static bool Interp_ShrUint64Sint64(InterpState &S, CodePtr &PC) {
50778 if (!Shr<PT_Uint64, PT_Sint64>(S, PC))
50779 return false;
50780#if USE_TAILCALLS
50781 MUSTTAIL return InterpNext(S, PC);
50782#else
50783 return true;
50784#endif
50785}
50786PRESERVE_NONE
50787static bool Interp_ShrUint64Uint64(InterpState &S, CodePtr &PC) {
50788 if (!Shr<PT_Uint64, PT_Uint64>(S, PC))
50789 return false;
50790#if USE_TAILCALLS
50791 MUSTTAIL return InterpNext(S, PC);
50792#else
50793 return true;
50794#endif
50795}
50796PRESERVE_NONE
50797static bool Interp_ShrUint64IntAP(InterpState &S, CodePtr &PC) {
50798 if (!Shr<PT_Uint64, PT_IntAP>(S, PC))
50799 return false;
50800#if USE_TAILCALLS
50801 MUSTTAIL return InterpNext(S, PC);
50802#else
50803 return true;
50804#endif
50805}
50806PRESERVE_NONE
50807static bool Interp_ShrUint64IntAPS(InterpState &S, CodePtr &PC) {
50808 if (!Shr<PT_Uint64, PT_IntAPS>(S, PC))
50809 return false;
50810#if USE_TAILCALLS
50811 MUSTTAIL return InterpNext(S, PC);
50812#else
50813 return true;
50814#endif
50815}
50816PRESERVE_NONE
50817static bool Interp_ShrIntAPSint8(InterpState &S, CodePtr &PC) {
50818 if (!Shr<PT_IntAP, PT_Sint8>(S, PC))
50819 return false;
50820#if USE_TAILCALLS
50821 MUSTTAIL return InterpNext(S, PC);
50822#else
50823 return true;
50824#endif
50825}
50826PRESERVE_NONE
50827static bool Interp_ShrIntAPUint8(InterpState &S, CodePtr &PC) {
50828 if (!Shr<PT_IntAP, PT_Uint8>(S, PC))
50829 return false;
50830#if USE_TAILCALLS
50831 MUSTTAIL return InterpNext(S, PC);
50832#else
50833 return true;
50834#endif
50835}
50836PRESERVE_NONE
50837static bool Interp_ShrIntAPSint16(InterpState &S, CodePtr &PC) {
50838 if (!Shr<PT_IntAP, PT_Sint16>(S, PC))
50839 return false;
50840#if USE_TAILCALLS
50841 MUSTTAIL return InterpNext(S, PC);
50842#else
50843 return true;
50844#endif
50845}
50846PRESERVE_NONE
50847static bool Interp_ShrIntAPUint16(InterpState &S, CodePtr &PC) {
50848 if (!Shr<PT_IntAP, PT_Uint16>(S, PC))
50849 return false;
50850#if USE_TAILCALLS
50851 MUSTTAIL return InterpNext(S, PC);
50852#else
50853 return true;
50854#endif
50855}
50856PRESERVE_NONE
50857static bool Interp_ShrIntAPSint32(InterpState &S, CodePtr &PC) {
50858 if (!Shr<PT_IntAP, PT_Sint32>(S, PC))
50859 return false;
50860#if USE_TAILCALLS
50861 MUSTTAIL return InterpNext(S, PC);
50862#else
50863 return true;
50864#endif
50865}
50866PRESERVE_NONE
50867static bool Interp_ShrIntAPUint32(InterpState &S, CodePtr &PC) {
50868 if (!Shr<PT_IntAP, PT_Uint32>(S, PC))
50869 return false;
50870#if USE_TAILCALLS
50871 MUSTTAIL return InterpNext(S, PC);
50872#else
50873 return true;
50874#endif
50875}
50876PRESERVE_NONE
50877static bool Interp_ShrIntAPSint64(InterpState &S, CodePtr &PC) {
50878 if (!Shr<PT_IntAP, PT_Sint64>(S, PC))
50879 return false;
50880#if USE_TAILCALLS
50881 MUSTTAIL return InterpNext(S, PC);
50882#else
50883 return true;
50884#endif
50885}
50886PRESERVE_NONE
50887static bool Interp_ShrIntAPUint64(InterpState &S, CodePtr &PC) {
50888 if (!Shr<PT_IntAP, PT_Uint64>(S, PC))
50889 return false;
50890#if USE_TAILCALLS
50891 MUSTTAIL return InterpNext(S, PC);
50892#else
50893 return true;
50894#endif
50895}
50896PRESERVE_NONE
50897static bool Interp_ShrIntAPIntAP(InterpState &S, CodePtr &PC) {
50898 if (!Shr<PT_IntAP, PT_IntAP>(S, PC))
50899 return false;
50900#if USE_TAILCALLS
50901 MUSTTAIL return InterpNext(S, PC);
50902#else
50903 return true;
50904#endif
50905}
50906PRESERVE_NONE
50907static bool Interp_ShrIntAPIntAPS(InterpState &S, CodePtr &PC) {
50908 if (!Shr<PT_IntAP, PT_IntAPS>(S, PC))
50909 return false;
50910#if USE_TAILCALLS
50911 MUSTTAIL return InterpNext(S, PC);
50912#else
50913 return true;
50914#endif
50915}
50916PRESERVE_NONE
50917static bool Interp_ShrIntAPSSint8(InterpState &S, CodePtr &PC) {
50918 if (!Shr<PT_IntAPS, PT_Sint8>(S, PC))
50919 return false;
50920#if USE_TAILCALLS
50921 MUSTTAIL return InterpNext(S, PC);
50922#else
50923 return true;
50924#endif
50925}
50926PRESERVE_NONE
50927static bool Interp_ShrIntAPSUint8(InterpState &S, CodePtr &PC) {
50928 if (!Shr<PT_IntAPS, PT_Uint8>(S, PC))
50929 return false;
50930#if USE_TAILCALLS
50931 MUSTTAIL return InterpNext(S, PC);
50932#else
50933 return true;
50934#endif
50935}
50936PRESERVE_NONE
50937static bool Interp_ShrIntAPSSint16(InterpState &S, CodePtr &PC) {
50938 if (!Shr<PT_IntAPS, PT_Sint16>(S, PC))
50939 return false;
50940#if USE_TAILCALLS
50941 MUSTTAIL return InterpNext(S, PC);
50942#else
50943 return true;
50944#endif
50945}
50946PRESERVE_NONE
50947static bool Interp_ShrIntAPSUint16(InterpState &S, CodePtr &PC) {
50948 if (!Shr<PT_IntAPS, PT_Uint16>(S, PC))
50949 return false;
50950#if USE_TAILCALLS
50951 MUSTTAIL return InterpNext(S, PC);
50952#else
50953 return true;
50954#endif
50955}
50956PRESERVE_NONE
50957static bool Interp_ShrIntAPSSint32(InterpState &S, CodePtr &PC) {
50958 if (!Shr<PT_IntAPS, PT_Sint32>(S, PC))
50959 return false;
50960#if USE_TAILCALLS
50961 MUSTTAIL return InterpNext(S, PC);
50962#else
50963 return true;
50964#endif
50965}
50966PRESERVE_NONE
50967static bool Interp_ShrIntAPSUint32(InterpState &S, CodePtr &PC) {
50968 if (!Shr<PT_IntAPS, PT_Uint32>(S, PC))
50969 return false;
50970#if USE_TAILCALLS
50971 MUSTTAIL return InterpNext(S, PC);
50972#else
50973 return true;
50974#endif
50975}
50976PRESERVE_NONE
50977static bool Interp_ShrIntAPSSint64(InterpState &S, CodePtr &PC) {
50978 if (!Shr<PT_IntAPS, PT_Sint64>(S, PC))
50979 return false;
50980#if USE_TAILCALLS
50981 MUSTTAIL return InterpNext(S, PC);
50982#else
50983 return true;
50984#endif
50985}
50986PRESERVE_NONE
50987static bool Interp_ShrIntAPSUint64(InterpState &S, CodePtr &PC) {
50988 if (!Shr<PT_IntAPS, PT_Uint64>(S, PC))
50989 return false;
50990#if USE_TAILCALLS
50991 MUSTTAIL return InterpNext(S, PC);
50992#else
50993 return true;
50994#endif
50995}
50996PRESERVE_NONE
50997static bool Interp_ShrIntAPSIntAP(InterpState &S, CodePtr &PC) {
50998 if (!Shr<PT_IntAPS, PT_IntAP>(S, PC))
50999 return false;
51000#if USE_TAILCALLS
51001 MUSTTAIL return InterpNext(S, PC);
51002#else
51003 return true;
51004#endif
51005}
51006PRESERVE_NONE
51007static bool Interp_ShrIntAPSIntAPS(InterpState &S, CodePtr &PC) {
51008 if (!Shr<PT_IntAPS, PT_IntAPS>(S, PC))
51009 return false;
51010#if USE_TAILCALLS
51011 MUSTTAIL return InterpNext(S, PC);
51012#else
51013 return true;
51014#endif
51015}
51016#endif
51017#ifdef GET_DISASM
51018case OP_ShrSint8Sint8:
51019 Text.Op = PrintName("ShrSint8Sint8");
51020 break;
51021case OP_ShrSint8Uint8:
51022 Text.Op = PrintName("ShrSint8Uint8");
51023 break;
51024case OP_ShrSint8Sint16:
51025 Text.Op = PrintName("ShrSint8Sint16");
51026 break;
51027case OP_ShrSint8Uint16:
51028 Text.Op = PrintName("ShrSint8Uint16");
51029 break;
51030case OP_ShrSint8Sint32:
51031 Text.Op = PrintName("ShrSint8Sint32");
51032 break;
51033case OP_ShrSint8Uint32:
51034 Text.Op = PrintName("ShrSint8Uint32");
51035 break;
51036case OP_ShrSint8Sint64:
51037 Text.Op = PrintName("ShrSint8Sint64");
51038 break;
51039case OP_ShrSint8Uint64:
51040 Text.Op = PrintName("ShrSint8Uint64");
51041 break;
51042case OP_ShrSint8IntAP:
51043 Text.Op = PrintName("ShrSint8IntAP");
51044 break;
51045case OP_ShrSint8IntAPS:
51046 Text.Op = PrintName("ShrSint8IntAPS");
51047 break;
51048case OP_ShrUint8Sint8:
51049 Text.Op = PrintName("ShrUint8Sint8");
51050 break;
51051case OP_ShrUint8Uint8:
51052 Text.Op = PrintName("ShrUint8Uint8");
51053 break;
51054case OP_ShrUint8Sint16:
51055 Text.Op = PrintName("ShrUint8Sint16");
51056 break;
51057case OP_ShrUint8Uint16:
51058 Text.Op = PrintName("ShrUint8Uint16");
51059 break;
51060case OP_ShrUint8Sint32:
51061 Text.Op = PrintName("ShrUint8Sint32");
51062 break;
51063case OP_ShrUint8Uint32:
51064 Text.Op = PrintName("ShrUint8Uint32");
51065 break;
51066case OP_ShrUint8Sint64:
51067 Text.Op = PrintName("ShrUint8Sint64");
51068 break;
51069case OP_ShrUint8Uint64:
51070 Text.Op = PrintName("ShrUint8Uint64");
51071 break;
51072case OP_ShrUint8IntAP:
51073 Text.Op = PrintName("ShrUint8IntAP");
51074 break;
51075case OP_ShrUint8IntAPS:
51076 Text.Op = PrintName("ShrUint8IntAPS");
51077 break;
51078case OP_ShrSint16Sint8:
51079 Text.Op = PrintName("ShrSint16Sint8");
51080 break;
51081case OP_ShrSint16Uint8:
51082 Text.Op = PrintName("ShrSint16Uint8");
51083 break;
51084case OP_ShrSint16Sint16:
51085 Text.Op = PrintName("ShrSint16Sint16");
51086 break;
51087case OP_ShrSint16Uint16:
51088 Text.Op = PrintName("ShrSint16Uint16");
51089 break;
51090case OP_ShrSint16Sint32:
51091 Text.Op = PrintName("ShrSint16Sint32");
51092 break;
51093case OP_ShrSint16Uint32:
51094 Text.Op = PrintName("ShrSint16Uint32");
51095 break;
51096case OP_ShrSint16Sint64:
51097 Text.Op = PrintName("ShrSint16Sint64");
51098 break;
51099case OP_ShrSint16Uint64:
51100 Text.Op = PrintName("ShrSint16Uint64");
51101 break;
51102case OP_ShrSint16IntAP:
51103 Text.Op = PrintName("ShrSint16IntAP");
51104 break;
51105case OP_ShrSint16IntAPS:
51106 Text.Op = PrintName("ShrSint16IntAPS");
51107 break;
51108case OP_ShrUint16Sint8:
51109 Text.Op = PrintName("ShrUint16Sint8");
51110 break;
51111case OP_ShrUint16Uint8:
51112 Text.Op = PrintName("ShrUint16Uint8");
51113 break;
51114case OP_ShrUint16Sint16:
51115 Text.Op = PrintName("ShrUint16Sint16");
51116 break;
51117case OP_ShrUint16Uint16:
51118 Text.Op = PrintName("ShrUint16Uint16");
51119 break;
51120case OP_ShrUint16Sint32:
51121 Text.Op = PrintName("ShrUint16Sint32");
51122 break;
51123case OP_ShrUint16Uint32:
51124 Text.Op = PrintName("ShrUint16Uint32");
51125 break;
51126case OP_ShrUint16Sint64:
51127 Text.Op = PrintName("ShrUint16Sint64");
51128 break;
51129case OP_ShrUint16Uint64:
51130 Text.Op = PrintName("ShrUint16Uint64");
51131 break;
51132case OP_ShrUint16IntAP:
51133 Text.Op = PrintName("ShrUint16IntAP");
51134 break;
51135case OP_ShrUint16IntAPS:
51136 Text.Op = PrintName("ShrUint16IntAPS");
51137 break;
51138case OP_ShrSint32Sint8:
51139 Text.Op = PrintName("ShrSint32Sint8");
51140 break;
51141case OP_ShrSint32Uint8:
51142 Text.Op = PrintName("ShrSint32Uint8");
51143 break;
51144case OP_ShrSint32Sint16:
51145 Text.Op = PrintName("ShrSint32Sint16");
51146 break;
51147case OP_ShrSint32Uint16:
51148 Text.Op = PrintName("ShrSint32Uint16");
51149 break;
51150case OP_ShrSint32Sint32:
51151 Text.Op = PrintName("ShrSint32Sint32");
51152 break;
51153case OP_ShrSint32Uint32:
51154 Text.Op = PrintName("ShrSint32Uint32");
51155 break;
51156case OP_ShrSint32Sint64:
51157 Text.Op = PrintName("ShrSint32Sint64");
51158 break;
51159case OP_ShrSint32Uint64:
51160 Text.Op = PrintName("ShrSint32Uint64");
51161 break;
51162case OP_ShrSint32IntAP:
51163 Text.Op = PrintName("ShrSint32IntAP");
51164 break;
51165case OP_ShrSint32IntAPS:
51166 Text.Op = PrintName("ShrSint32IntAPS");
51167 break;
51168case OP_ShrUint32Sint8:
51169 Text.Op = PrintName("ShrUint32Sint8");
51170 break;
51171case OP_ShrUint32Uint8:
51172 Text.Op = PrintName("ShrUint32Uint8");
51173 break;
51174case OP_ShrUint32Sint16:
51175 Text.Op = PrintName("ShrUint32Sint16");
51176 break;
51177case OP_ShrUint32Uint16:
51178 Text.Op = PrintName("ShrUint32Uint16");
51179 break;
51180case OP_ShrUint32Sint32:
51181 Text.Op = PrintName("ShrUint32Sint32");
51182 break;
51183case OP_ShrUint32Uint32:
51184 Text.Op = PrintName("ShrUint32Uint32");
51185 break;
51186case OP_ShrUint32Sint64:
51187 Text.Op = PrintName("ShrUint32Sint64");
51188 break;
51189case OP_ShrUint32Uint64:
51190 Text.Op = PrintName("ShrUint32Uint64");
51191 break;
51192case OP_ShrUint32IntAP:
51193 Text.Op = PrintName("ShrUint32IntAP");
51194 break;
51195case OP_ShrUint32IntAPS:
51196 Text.Op = PrintName("ShrUint32IntAPS");
51197 break;
51198case OP_ShrSint64Sint8:
51199 Text.Op = PrintName("ShrSint64Sint8");
51200 break;
51201case OP_ShrSint64Uint8:
51202 Text.Op = PrintName("ShrSint64Uint8");
51203 break;
51204case OP_ShrSint64Sint16:
51205 Text.Op = PrintName("ShrSint64Sint16");
51206 break;
51207case OP_ShrSint64Uint16:
51208 Text.Op = PrintName("ShrSint64Uint16");
51209 break;
51210case OP_ShrSint64Sint32:
51211 Text.Op = PrintName("ShrSint64Sint32");
51212 break;
51213case OP_ShrSint64Uint32:
51214 Text.Op = PrintName("ShrSint64Uint32");
51215 break;
51216case OP_ShrSint64Sint64:
51217 Text.Op = PrintName("ShrSint64Sint64");
51218 break;
51219case OP_ShrSint64Uint64:
51220 Text.Op = PrintName("ShrSint64Uint64");
51221 break;
51222case OP_ShrSint64IntAP:
51223 Text.Op = PrintName("ShrSint64IntAP");
51224 break;
51225case OP_ShrSint64IntAPS:
51226 Text.Op = PrintName("ShrSint64IntAPS");
51227 break;
51228case OP_ShrUint64Sint8:
51229 Text.Op = PrintName("ShrUint64Sint8");
51230 break;
51231case OP_ShrUint64Uint8:
51232 Text.Op = PrintName("ShrUint64Uint8");
51233 break;
51234case OP_ShrUint64Sint16:
51235 Text.Op = PrintName("ShrUint64Sint16");
51236 break;
51237case OP_ShrUint64Uint16:
51238 Text.Op = PrintName("ShrUint64Uint16");
51239 break;
51240case OP_ShrUint64Sint32:
51241 Text.Op = PrintName("ShrUint64Sint32");
51242 break;
51243case OP_ShrUint64Uint32:
51244 Text.Op = PrintName("ShrUint64Uint32");
51245 break;
51246case OP_ShrUint64Sint64:
51247 Text.Op = PrintName("ShrUint64Sint64");
51248 break;
51249case OP_ShrUint64Uint64:
51250 Text.Op = PrintName("ShrUint64Uint64");
51251 break;
51252case OP_ShrUint64IntAP:
51253 Text.Op = PrintName("ShrUint64IntAP");
51254 break;
51255case OP_ShrUint64IntAPS:
51256 Text.Op = PrintName("ShrUint64IntAPS");
51257 break;
51258case OP_ShrIntAPSint8:
51259 Text.Op = PrintName("ShrIntAPSint8");
51260 break;
51261case OP_ShrIntAPUint8:
51262 Text.Op = PrintName("ShrIntAPUint8");
51263 break;
51264case OP_ShrIntAPSint16:
51265 Text.Op = PrintName("ShrIntAPSint16");
51266 break;
51267case OP_ShrIntAPUint16:
51268 Text.Op = PrintName("ShrIntAPUint16");
51269 break;
51270case OP_ShrIntAPSint32:
51271 Text.Op = PrintName("ShrIntAPSint32");
51272 break;
51273case OP_ShrIntAPUint32:
51274 Text.Op = PrintName("ShrIntAPUint32");
51275 break;
51276case OP_ShrIntAPSint64:
51277 Text.Op = PrintName("ShrIntAPSint64");
51278 break;
51279case OP_ShrIntAPUint64:
51280 Text.Op = PrintName("ShrIntAPUint64");
51281 break;
51282case OP_ShrIntAPIntAP:
51283 Text.Op = PrintName("ShrIntAPIntAP");
51284 break;
51285case OP_ShrIntAPIntAPS:
51286 Text.Op = PrintName("ShrIntAPIntAPS");
51287 break;
51288case OP_ShrIntAPSSint8:
51289 Text.Op = PrintName("ShrIntAPSSint8");
51290 break;
51291case OP_ShrIntAPSUint8:
51292 Text.Op = PrintName("ShrIntAPSUint8");
51293 break;
51294case OP_ShrIntAPSSint16:
51295 Text.Op = PrintName("ShrIntAPSSint16");
51296 break;
51297case OP_ShrIntAPSUint16:
51298 Text.Op = PrintName("ShrIntAPSUint16");
51299 break;
51300case OP_ShrIntAPSSint32:
51301 Text.Op = PrintName("ShrIntAPSSint32");
51302 break;
51303case OP_ShrIntAPSUint32:
51304 Text.Op = PrintName("ShrIntAPSUint32");
51305 break;
51306case OP_ShrIntAPSSint64:
51307 Text.Op = PrintName("ShrIntAPSSint64");
51308 break;
51309case OP_ShrIntAPSUint64:
51310 Text.Op = PrintName("ShrIntAPSUint64");
51311 break;
51312case OP_ShrIntAPSIntAP:
51313 Text.Op = PrintName("ShrIntAPSIntAP");
51314 break;
51315case OP_ShrIntAPSIntAPS:
51316 Text.Op = PrintName("ShrIntAPSIntAPS");
51317 break;
51318#endif
51319#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51320bool emitShrSint8Sint8(SourceInfo);
51321bool emitShrSint8Uint8(SourceInfo);
51322bool emitShrSint8Sint16(SourceInfo);
51323bool emitShrSint8Uint16(SourceInfo);
51324bool emitShrSint8Sint32(SourceInfo);
51325bool emitShrSint8Uint32(SourceInfo);
51326bool emitShrSint8Sint64(SourceInfo);
51327bool emitShrSint8Uint64(SourceInfo);
51328bool emitShrSint8IntAP(SourceInfo);
51329bool emitShrSint8IntAPS(SourceInfo);
51330bool emitShrUint8Sint8(SourceInfo);
51331bool emitShrUint8Uint8(SourceInfo);
51332bool emitShrUint8Sint16(SourceInfo);
51333bool emitShrUint8Uint16(SourceInfo);
51334bool emitShrUint8Sint32(SourceInfo);
51335bool emitShrUint8Uint32(SourceInfo);
51336bool emitShrUint8Sint64(SourceInfo);
51337bool emitShrUint8Uint64(SourceInfo);
51338bool emitShrUint8IntAP(SourceInfo);
51339bool emitShrUint8IntAPS(SourceInfo);
51340bool emitShrSint16Sint8(SourceInfo);
51341bool emitShrSint16Uint8(SourceInfo);
51342bool emitShrSint16Sint16(SourceInfo);
51343bool emitShrSint16Uint16(SourceInfo);
51344bool emitShrSint16Sint32(SourceInfo);
51345bool emitShrSint16Uint32(SourceInfo);
51346bool emitShrSint16Sint64(SourceInfo);
51347bool emitShrSint16Uint64(SourceInfo);
51348bool emitShrSint16IntAP(SourceInfo);
51349bool emitShrSint16IntAPS(SourceInfo);
51350bool emitShrUint16Sint8(SourceInfo);
51351bool emitShrUint16Uint8(SourceInfo);
51352bool emitShrUint16Sint16(SourceInfo);
51353bool emitShrUint16Uint16(SourceInfo);
51354bool emitShrUint16Sint32(SourceInfo);
51355bool emitShrUint16Uint32(SourceInfo);
51356bool emitShrUint16Sint64(SourceInfo);
51357bool emitShrUint16Uint64(SourceInfo);
51358bool emitShrUint16IntAP(SourceInfo);
51359bool emitShrUint16IntAPS(SourceInfo);
51360bool emitShrSint32Sint8(SourceInfo);
51361bool emitShrSint32Uint8(SourceInfo);
51362bool emitShrSint32Sint16(SourceInfo);
51363bool emitShrSint32Uint16(SourceInfo);
51364bool emitShrSint32Sint32(SourceInfo);
51365bool emitShrSint32Uint32(SourceInfo);
51366bool emitShrSint32Sint64(SourceInfo);
51367bool emitShrSint32Uint64(SourceInfo);
51368bool emitShrSint32IntAP(SourceInfo);
51369bool emitShrSint32IntAPS(SourceInfo);
51370bool emitShrUint32Sint8(SourceInfo);
51371bool emitShrUint32Uint8(SourceInfo);
51372bool emitShrUint32Sint16(SourceInfo);
51373bool emitShrUint32Uint16(SourceInfo);
51374bool emitShrUint32Sint32(SourceInfo);
51375bool emitShrUint32Uint32(SourceInfo);
51376bool emitShrUint32Sint64(SourceInfo);
51377bool emitShrUint32Uint64(SourceInfo);
51378bool emitShrUint32IntAP(SourceInfo);
51379bool emitShrUint32IntAPS(SourceInfo);
51380bool emitShrSint64Sint8(SourceInfo);
51381bool emitShrSint64Uint8(SourceInfo);
51382bool emitShrSint64Sint16(SourceInfo);
51383bool emitShrSint64Uint16(SourceInfo);
51384bool emitShrSint64Sint32(SourceInfo);
51385bool emitShrSint64Uint32(SourceInfo);
51386bool emitShrSint64Sint64(SourceInfo);
51387bool emitShrSint64Uint64(SourceInfo);
51388bool emitShrSint64IntAP(SourceInfo);
51389bool emitShrSint64IntAPS(SourceInfo);
51390bool emitShrUint64Sint8(SourceInfo);
51391bool emitShrUint64Uint8(SourceInfo);
51392bool emitShrUint64Sint16(SourceInfo);
51393bool emitShrUint64Uint16(SourceInfo);
51394bool emitShrUint64Sint32(SourceInfo);
51395bool emitShrUint64Uint32(SourceInfo);
51396bool emitShrUint64Sint64(SourceInfo);
51397bool emitShrUint64Uint64(SourceInfo);
51398bool emitShrUint64IntAP(SourceInfo);
51399bool emitShrUint64IntAPS(SourceInfo);
51400bool emitShrIntAPSint8(SourceInfo);
51401bool emitShrIntAPUint8(SourceInfo);
51402bool emitShrIntAPSint16(SourceInfo);
51403bool emitShrIntAPUint16(SourceInfo);
51404bool emitShrIntAPSint32(SourceInfo);
51405bool emitShrIntAPUint32(SourceInfo);
51406bool emitShrIntAPSint64(SourceInfo);
51407bool emitShrIntAPUint64(SourceInfo);
51408bool emitShrIntAPIntAP(SourceInfo);
51409bool emitShrIntAPIntAPS(SourceInfo);
51410bool emitShrIntAPSSint8(SourceInfo);
51411bool emitShrIntAPSUint8(SourceInfo);
51412bool emitShrIntAPSSint16(SourceInfo);
51413bool emitShrIntAPSUint16(SourceInfo);
51414bool emitShrIntAPSSint32(SourceInfo);
51415bool emitShrIntAPSUint32(SourceInfo);
51416bool emitShrIntAPSSint64(SourceInfo);
51417bool emitShrIntAPSUint64(SourceInfo);
51418bool emitShrIntAPSIntAP(SourceInfo);
51419bool emitShrIntAPSIntAPS(SourceInfo);
51420#endif
51421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51422[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
51423#endif
51424#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51425bool
51426#if defined(GET_EVAL_IMPL)
51427EvalEmitter
51428#else
51429ByteCodeEmitter
51430#endif
51431::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
51432 switch (T0) {
51433 case PT_Sint8:
51434 switch (T1) {
51435 case PT_Sint8:
51436 return emitShrSint8Sint8(I);
51437 case PT_Uint8:
51438 return emitShrSint8Uint8(I);
51439 case PT_Sint16:
51440 return emitShrSint8Sint16(I);
51441 case PT_Uint16:
51442 return emitShrSint8Uint16(I);
51443 case PT_Sint32:
51444 return emitShrSint8Sint32(I);
51445 case PT_Uint32:
51446 return emitShrSint8Uint32(I);
51447 case PT_Sint64:
51448 return emitShrSint8Sint64(I);
51449 case PT_Uint64:
51450 return emitShrSint8Uint64(I);
51451 case PT_IntAP:
51452 return emitShrSint8IntAP(I);
51453 case PT_IntAPS:
51454 return emitShrSint8IntAPS(I);
51455 default: llvm_unreachable("invalid type: emitShr");
51456 }
51457 llvm_unreachable("invalid enum value");
51458 case PT_Uint8:
51459 switch (T1) {
51460 case PT_Sint8:
51461 return emitShrUint8Sint8(I);
51462 case PT_Uint8:
51463 return emitShrUint8Uint8(I);
51464 case PT_Sint16:
51465 return emitShrUint8Sint16(I);
51466 case PT_Uint16:
51467 return emitShrUint8Uint16(I);
51468 case PT_Sint32:
51469 return emitShrUint8Sint32(I);
51470 case PT_Uint32:
51471 return emitShrUint8Uint32(I);
51472 case PT_Sint64:
51473 return emitShrUint8Sint64(I);
51474 case PT_Uint64:
51475 return emitShrUint8Uint64(I);
51476 case PT_IntAP:
51477 return emitShrUint8IntAP(I);
51478 case PT_IntAPS:
51479 return emitShrUint8IntAPS(I);
51480 default: llvm_unreachable("invalid type: emitShr");
51481 }
51482 llvm_unreachable("invalid enum value");
51483 case PT_Sint16:
51484 switch (T1) {
51485 case PT_Sint8:
51486 return emitShrSint16Sint8(I);
51487 case PT_Uint8:
51488 return emitShrSint16Uint8(I);
51489 case PT_Sint16:
51490 return emitShrSint16Sint16(I);
51491 case PT_Uint16:
51492 return emitShrSint16Uint16(I);
51493 case PT_Sint32:
51494 return emitShrSint16Sint32(I);
51495 case PT_Uint32:
51496 return emitShrSint16Uint32(I);
51497 case PT_Sint64:
51498 return emitShrSint16Sint64(I);
51499 case PT_Uint64:
51500 return emitShrSint16Uint64(I);
51501 case PT_IntAP:
51502 return emitShrSint16IntAP(I);
51503 case PT_IntAPS:
51504 return emitShrSint16IntAPS(I);
51505 default: llvm_unreachable("invalid type: emitShr");
51506 }
51507 llvm_unreachable("invalid enum value");
51508 case PT_Uint16:
51509 switch (T1) {
51510 case PT_Sint8:
51511 return emitShrUint16Sint8(I);
51512 case PT_Uint8:
51513 return emitShrUint16Uint8(I);
51514 case PT_Sint16:
51515 return emitShrUint16Sint16(I);
51516 case PT_Uint16:
51517 return emitShrUint16Uint16(I);
51518 case PT_Sint32:
51519 return emitShrUint16Sint32(I);
51520 case PT_Uint32:
51521 return emitShrUint16Uint32(I);
51522 case PT_Sint64:
51523 return emitShrUint16Sint64(I);
51524 case PT_Uint64:
51525 return emitShrUint16Uint64(I);
51526 case PT_IntAP:
51527 return emitShrUint16IntAP(I);
51528 case PT_IntAPS:
51529 return emitShrUint16IntAPS(I);
51530 default: llvm_unreachable("invalid type: emitShr");
51531 }
51532 llvm_unreachable("invalid enum value");
51533 case PT_Sint32:
51534 switch (T1) {
51535 case PT_Sint8:
51536 return emitShrSint32Sint8(I);
51537 case PT_Uint8:
51538 return emitShrSint32Uint8(I);
51539 case PT_Sint16:
51540 return emitShrSint32Sint16(I);
51541 case PT_Uint16:
51542 return emitShrSint32Uint16(I);
51543 case PT_Sint32:
51544 return emitShrSint32Sint32(I);
51545 case PT_Uint32:
51546 return emitShrSint32Uint32(I);
51547 case PT_Sint64:
51548 return emitShrSint32Sint64(I);
51549 case PT_Uint64:
51550 return emitShrSint32Uint64(I);
51551 case PT_IntAP:
51552 return emitShrSint32IntAP(I);
51553 case PT_IntAPS:
51554 return emitShrSint32IntAPS(I);
51555 default: llvm_unreachable("invalid type: emitShr");
51556 }
51557 llvm_unreachable("invalid enum value");
51558 case PT_Uint32:
51559 switch (T1) {
51560 case PT_Sint8:
51561 return emitShrUint32Sint8(I);
51562 case PT_Uint8:
51563 return emitShrUint32Uint8(I);
51564 case PT_Sint16:
51565 return emitShrUint32Sint16(I);
51566 case PT_Uint16:
51567 return emitShrUint32Uint16(I);
51568 case PT_Sint32:
51569 return emitShrUint32Sint32(I);
51570 case PT_Uint32:
51571 return emitShrUint32Uint32(I);
51572 case PT_Sint64:
51573 return emitShrUint32Sint64(I);
51574 case PT_Uint64:
51575 return emitShrUint32Uint64(I);
51576 case PT_IntAP:
51577 return emitShrUint32IntAP(I);
51578 case PT_IntAPS:
51579 return emitShrUint32IntAPS(I);
51580 default: llvm_unreachable("invalid type: emitShr");
51581 }
51582 llvm_unreachable("invalid enum value");
51583 case PT_Sint64:
51584 switch (T1) {
51585 case PT_Sint8:
51586 return emitShrSint64Sint8(I);
51587 case PT_Uint8:
51588 return emitShrSint64Uint8(I);
51589 case PT_Sint16:
51590 return emitShrSint64Sint16(I);
51591 case PT_Uint16:
51592 return emitShrSint64Uint16(I);
51593 case PT_Sint32:
51594 return emitShrSint64Sint32(I);
51595 case PT_Uint32:
51596 return emitShrSint64Uint32(I);
51597 case PT_Sint64:
51598 return emitShrSint64Sint64(I);
51599 case PT_Uint64:
51600 return emitShrSint64Uint64(I);
51601 case PT_IntAP:
51602 return emitShrSint64IntAP(I);
51603 case PT_IntAPS:
51604 return emitShrSint64IntAPS(I);
51605 default: llvm_unreachable("invalid type: emitShr");
51606 }
51607 llvm_unreachable("invalid enum value");
51608 case PT_Uint64:
51609 switch (T1) {
51610 case PT_Sint8:
51611 return emitShrUint64Sint8(I);
51612 case PT_Uint8:
51613 return emitShrUint64Uint8(I);
51614 case PT_Sint16:
51615 return emitShrUint64Sint16(I);
51616 case PT_Uint16:
51617 return emitShrUint64Uint16(I);
51618 case PT_Sint32:
51619 return emitShrUint64Sint32(I);
51620 case PT_Uint32:
51621 return emitShrUint64Uint32(I);
51622 case PT_Sint64:
51623 return emitShrUint64Sint64(I);
51624 case PT_Uint64:
51625 return emitShrUint64Uint64(I);
51626 case PT_IntAP:
51627 return emitShrUint64IntAP(I);
51628 case PT_IntAPS:
51629 return emitShrUint64IntAPS(I);
51630 default: llvm_unreachable("invalid type: emitShr");
51631 }
51632 llvm_unreachable("invalid enum value");
51633 case PT_IntAP:
51634 switch (T1) {
51635 case PT_Sint8:
51636 return emitShrIntAPSint8(I);
51637 case PT_Uint8:
51638 return emitShrIntAPUint8(I);
51639 case PT_Sint16:
51640 return emitShrIntAPSint16(I);
51641 case PT_Uint16:
51642 return emitShrIntAPUint16(I);
51643 case PT_Sint32:
51644 return emitShrIntAPSint32(I);
51645 case PT_Uint32:
51646 return emitShrIntAPUint32(I);
51647 case PT_Sint64:
51648 return emitShrIntAPSint64(I);
51649 case PT_Uint64:
51650 return emitShrIntAPUint64(I);
51651 case PT_IntAP:
51652 return emitShrIntAPIntAP(I);
51653 case PT_IntAPS:
51654 return emitShrIntAPIntAPS(I);
51655 default: llvm_unreachable("invalid type: emitShr");
51656 }
51657 llvm_unreachable("invalid enum value");
51658 case PT_IntAPS:
51659 switch (T1) {
51660 case PT_Sint8:
51661 return emitShrIntAPSSint8(I);
51662 case PT_Uint8:
51663 return emitShrIntAPSUint8(I);
51664 case PT_Sint16:
51665 return emitShrIntAPSSint16(I);
51666 case PT_Uint16:
51667 return emitShrIntAPSUint16(I);
51668 case PT_Sint32:
51669 return emitShrIntAPSSint32(I);
51670 case PT_Uint32:
51671 return emitShrIntAPSUint32(I);
51672 case PT_Sint64:
51673 return emitShrIntAPSSint64(I);
51674 case PT_Uint64:
51675 return emitShrIntAPSUint64(I);
51676 case PT_IntAP:
51677 return emitShrIntAPSIntAP(I);
51678 case PT_IntAPS:
51679 return emitShrIntAPSIntAPS(I);
51680 default: llvm_unreachable("invalid type: emitShr");
51681 }
51682 llvm_unreachable("invalid enum value");
51683 default: llvm_unreachable("invalid type: emitShr");
51684 }
51685 llvm_unreachable("invalid enum value");
51686}
51687#endif
51688#ifdef GET_LINK_IMPL
51689bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
51690 return emitOp<>(OP_ShrSint8Sint8, L);
51691}
51692bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
51693 return emitOp<>(OP_ShrSint8Uint8, L);
51694}
51695bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
51696 return emitOp<>(OP_ShrSint8Sint16, L);
51697}
51698bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
51699 return emitOp<>(OP_ShrSint8Uint16, L);
51700}
51701bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
51702 return emitOp<>(OP_ShrSint8Sint32, L);
51703}
51704bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
51705 return emitOp<>(OP_ShrSint8Uint32, L);
51706}
51707bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
51708 return emitOp<>(OP_ShrSint8Sint64, L);
51709}
51710bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
51711 return emitOp<>(OP_ShrSint8Uint64, L);
51712}
51713bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
51714 return emitOp<>(OP_ShrSint8IntAP, L);
51715}
51716bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
51717 return emitOp<>(OP_ShrSint8IntAPS, L);
51718}
51719bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
51720 return emitOp<>(OP_ShrUint8Sint8, L);
51721}
51722bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
51723 return emitOp<>(OP_ShrUint8Uint8, L);
51724}
51725bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
51726 return emitOp<>(OP_ShrUint8Sint16, L);
51727}
51728bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
51729 return emitOp<>(OP_ShrUint8Uint16, L);
51730}
51731bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
51732 return emitOp<>(OP_ShrUint8Sint32, L);
51733}
51734bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
51735 return emitOp<>(OP_ShrUint8Uint32, L);
51736}
51737bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
51738 return emitOp<>(OP_ShrUint8Sint64, L);
51739}
51740bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
51741 return emitOp<>(OP_ShrUint8Uint64, L);
51742}
51743bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
51744 return emitOp<>(OP_ShrUint8IntAP, L);
51745}
51746bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
51747 return emitOp<>(OP_ShrUint8IntAPS, L);
51748}
51749bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
51750 return emitOp<>(OP_ShrSint16Sint8, L);
51751}
51752bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
51753 return emitOp<>(OP_ShrSint16Uint8, L);
51754}
51755bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
51756 return emitOp<>(OP_ShrSint16Sint16, L);
51757}
51758bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
51759 return emitOp<>(OP_ShrSint16Uint16, L);
51760}
51761bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
51762 return emitOp<>(OP_ShrSint16Sint32, L);
51763}
51764bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
51765 return emitOp<>(OP_ShrSint16Uint32, L);
51766}
51767bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
51768 return emitOp<>(OP_ShrSint16Sint64, L);
51769}
51770bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
51771 return emitOp<>(OP_ShrSint16Uint64, L);
51772}
51773bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
51774 return emitOp<>(OP_ShrSint16IntAP, L);
51775}
51776bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
51777 return emitOp<>(OP_ShrSint16IntAPS, L);
51778}
51779bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
51780 return emitOp<>(OP_ShrUint16Sint8, L);
51781}
51782bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
51783 return emitOp<>(OP_ShrUint16Uint8, L);
51784}
51785bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
51786 return emitOp<>(OP_ShrUint16Sint16, L);
51787}
51788bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
51789 return emitOp<>(OP_ShrUint16Uint16, L);
51790}
51791bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
51792 return emitOp<>(OP_ShrUint16Sint32, L);
51793}
51794bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
51795 return emitOp<>(OP_ShrUint16Uint32, L);
51796}
51797bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
51798 return emitOp<>(OP_ShrUint16Sint64, L);
51799}
51800bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
51801 return emitOp<>(OP_ShrUint16Uint64, L);
51802}
51803bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
51804 return emitOp<>(OP_ShrUint16IntAP, L);
51805}
51806bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
51807 return emitOp<>(OP_ShrUint16IntAPS, L);
51808}
51809bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
51810 return emitOp<>(OP_ShrSint32Sint8, L);
51811}
51812bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
51813 return emitOp<>(OP_ShrSint32Uint8, L);
51814}
51815bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
51816 return emitOp<>(OP_ShrSint32Sint16, L);
51817}
51818bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
51819 return emitOp<>(OP_ShrSint32Uint16, L);
51820}
51821bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
51822 return emitOp<>(OP_ShrSint32Sint32, L);
51823}
51824bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
51825 return emitOp<>(OP_ShrSint32Uint32, L);
51826}
51827bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
51828 return emitOp<>(OP_ShrSint32Sint64, L);
51829}
51830bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
51831 return emitOp<>(OP_ShrSint32Uint64, L);
51832}
51833bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
51834 return emitOp<>(OP_ShrSint32IntAP, L);
51835}
51836bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
51837 return emitOp<>(OP_ShrSint32IntAPS, L);
51838}
51839bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
51840 return emitOp<>(OP_ShrUint32Sint8, L);
51841}
51842bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
51843 return emitOp<>(OP_ShrUint32Uint8, L);
51844}
51845bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
51846 return emitOp<>(OP_ShrUint32Sint16, L);
51847}
51848bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
51849 return emitOp<>(OP_ShrUint32Uint16, L);
51850}
51851bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
51852 return emitOp<>(OP_ShrUint32Sint32, L);
51853}
51854bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
51855 return emitOp<>(OP_ShrUint32Uint32, L);
51856}
51857bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
51858 return emitOp<>(OP_ShrUint32Sint64, L);
51859}
51860bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
51861 return emitOp<>(OP_ShrUint32Uint64, L);
51862}
51863bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
51864 return emitOp<>(OP_ShrUint32IntAP, L);
51865}
51866bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
51867 return emitOp<>(OP_ShrUint32IntAPS, L);
51868}
51869bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
51870 return emitOp<>(OP_ShrSint64Sint8, L);
51871}
51872bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
51873 return emitOp<>(OP_ShrSint64Uint8, L);
51874}
51875bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
51876 return emitOp<>(OP_ShrSint64Sint16, L);
51877}
51878bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
51879 return emitOp<>(OP_ShrSint64Uint16, L);
51880}
51881bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
51882 return emitOp<>(OP_ShrSint64Sint32, L);
51883}
51884bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
51885 return emitOp<>(OP_ShrSint64Uint32, L);
51886}
51887bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
51888 return emitOp<>(OP_ShrSint64Sint64, L);
51889}
51890bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
51891 return emitOp<>(OP_ShrSint64Uint64, L);
51892}
51893bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
51894 return emitOp<>(OP_ShrSint64IntAP, L);
51895}
51896bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
51897 return emitOp<>(OP_ShrSint64IntAPS, L);
51898}
51899bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
51900 return emitOp<>(OP_ShrUint64Sint8, L);
51901}
51902bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
51903 return emitOp<>(OP_ShrUint64Uint8, L);
51904}
51905bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
51906 return emitOp<>(OP_ShrUint64Sint16, L);
51907}
51908bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
51909 return emitOp<>(OP_ShrUint64Uint16, L);
51910}
51911bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
51912 return emitOp<>(OP_ShrUint64Sint32, L);
51913}
51914bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
51915 return emitOp<>(OP_ShrUint64Uint32, L);
51916}
51917bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
51918 return emitOp<>(OP_ShrUint64Sint64, L);
51919}
51920bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
51921 return emitOp<>(OP_ShrUint64Uint64, L);
51922}
51923bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
51924 return emitOp<>(OP_ShrUint64IntAP, L);
51925}
51926bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
51927 return emitOp<>(OP_ShrUint64IntAPS, L);
51928}
51929bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
51930 return emitOp<>(OP_ShrIntAPSint8, L);
51931}
51932bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
51933 return emitOp<>(OP_ShrIntAPUint8, L);
51934}
51935bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
51936 return emitOp<>(OP_ShrIntAPSint16, L);
51937}
51938bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
51939 return emitOp<>(OP_ShrIntAPUint16, L);
51940}
51941bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
51942 return emitOp<>(OP_ShrIntAPSint32, L);
51943}
51944bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
51945 return emitOp<>(OP_ShrIntAPUint32, L);
51946}
51947bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
51948 return emitOp<>(OP_ShrIntAPSint64, L);
51949}
51950bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
51951 return emitOp<>(OP_ShrIntAPUint64, L);
51952}
51953bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
51954 return emitOp<>(OP_ShrIntAPIntAP, L);
51955}
51956bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
51957 return emitOp<>(OP_ShrIntAPIntAPS, L);
51958}
51959bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
51960 return emitOp<>(OP_ShrIntAPSSint8, L);
51961}
51962bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
51963 return emitOp<>(OP_ShrIntAPSUint8, L);
51964}
51965bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
51966 return emitOp<>(OP_ShrIntAPSSint16, L);
51967}
51968bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
51969 return emitOp<>(OP_ShrIntAPSUint16, L);
51970}
51971bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
51972 return emitOp<>(OP_ShrIntAPSSint32, L);
51973}
51974bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
51975 return emitOp<>(OP_ShrIntAPSUint32, L);
51976}
51977bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
51978 return emitOp<>(OP_ShrIntAPSSint64, L);
51979}
51980bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
51981 return emitOp<>(OP_ShrIntAPSUint64, L);
51982}
51983bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
51984 return emitOp<>(OP_ShrIntAPSIntAP, L);
51985}
51986bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
51987 return emitOp<>(OP_ShrIntAPSIntAPS, L);
51988}
51989#endif
51990#ifdef GET_EVAL_IMPL
51991bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
51992 if (!isActive()) return true;
51993 CurrentSource = L;
51994 return Shr<PT_Sint8, PT_Sint8>(S, OpPC);
51995}
51996bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
51997 if (!isActive()) return true;
51998 CurrentSource = L;
51999 return Shr<PT_Sint8, PT_Uint8>(S, OpPC);
52000}
52001bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
52002 if (!isActive()) return true;
52003 CurrentSource = L;
52004 return Shr<PT_Sint8, PT_Sint16>(S, OpPC);
52005}
52006bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
52007 if (!isActive()) return true;
52008 CurrentSource = L;
52009 return Shr<PT_Sint8, PT_Uint16>(S, OpPC);
52010}
52011bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
52012 if (!isActive()) return true;
52013 CurrentSource = L;
52014 return Shr<PT_Sint8, PT_Sint32>(S, OpPC);
52015}
52016bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
52017 if (!isActive()) return true;
52018 CurrentSource = L;
52019 return Shr<PT_Sint8, PT_Uint32>(S, OpPC);
52020}
52021bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
52022 if (!isActive()) return true;
52023 CurrentSource = L;
52024 return Shr<PT_Sint8, PT_Sint64>(S, OpPC);
52025}
52026bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
52027 if (!isActive()) return true;
52028 CurrentSource = L;
52029 return Shr<PT_Sint8, PT_Uint64>(S, OpPC);
52030}
52031bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
52032 if (!isActive()) return true;
52033 CurrentSource = L;
52034 return Shr<PT_Sint8, PT_IntAP>(S, OpPC);
52035}
52036bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
52037 if (!isActive()) return true;
52038 CurrentSource = L;
52039 return Shr<PT_Sint8, PT_IntAPS>(S, OpPC);
52040}
52041bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
52042 if (!isActive()) return true;
52043 CurrentSource = L;
52044 return Shr<PT_Uint8, PT_Sint8>(S, OpPC);
52045}
52046bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
52047 if (!isActive()) return true;
52048 CurrentSource = L;
52049 return Shr<PT_Uint8, PT_Uint8>(S, OpPC);
52050}
52051bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
52052 if (!isActive()) return true;
52053 CurrentSource = L;
52054 return Shr<PT_Uint8, PT_Sint16>(S, OpPC);
52055}
52056bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
52057 if (!isActive()) return true;
52058 CurrentSource = L;
52059 return Shr<PT_Uint8, PT_Uint16>(S, OpPC);
52060}
52061bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
52062 if (!isActive()) return true;
52063 CurrentSource = L;
52064 return Shr<PT_Uint8, PT_Sint32>(S, OpPC);
52065}
52066bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
52067 if (!isActive()) return true;
52068 CurrentSource = L;
52069 return Shr<PT_Uint8, PT_Uint32>(S, OpPC);
52070}
52071bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
52072 if (!isActive()) return true;
52073 CurrentSource = L;
52074 return Shr<PT_Uint8, PT_Sint64>(S, OpPC);
52075}
52076bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
52077 if (!isActive()) return true;
52078 CurrentSource = L;
52079 return Shr<PT_Uint8, PT_Uint64>(S, OpPC);
52080}
52081bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
52082 if (!isActive()) return true;
52083 CurrentSource = L;
52084 return Shr<PT_Uint8, PT_IntAP>(S, OpPC);
52085}
52086bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
52087 if (!isActive()) return true;
52088 CurrentSource = L;
52089 return Shr<PT_Uint8, PT_IntAPS>(S, OpPC);
52090}
52091bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
52092 if (!isActive()) return true;
52093 CurrentSource = L;
52094 return Shr<PT_Sint16, PT_Sint8>(S, OpPC);
52095}
52096bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
52097 if (!isActive()) return true;
52098 CurrentSource = L;
52099 return Shr<PT_Sint16, PT_Uint8>(S, OpPC);
52100}
52101bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
52102 if (!isActive()) return true;
52103 CurrentSource = L;
52104 return Shr<PT_Sint16, PT_Sint16>(S, OpPC);
52105}
52106bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
52107 if (!isActive()) return true;
52108 CurrentSource = L;
52109 return Shr<PT_Sint16, PT_Uint16>(S, OpPC);
52110}
52111bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
52112 if (!isActive()) return true;
52113 CurrentSource = L;
52114 return Shr<PT_Sint16, PT_Sint32>(S, OpPC);
52115}
52116bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
52117 if (!isActive()) return true;
52118 CurrentSource = L;
52119 return Shr<PT_Sint16, PT_Uint32>(S, OpPC);
52120}
52121bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
52122 if (!isActive()) return true;
52123 CurrentSource = L;
52124 return Shr<PT_Sint16, PT_Sint64>(S, OpPC);
52125}
52126bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
52127 if (!isActive()) return true;
52128 CurrentSource = L;
52129 return Shr<PT_Sint16, PT_Uint64>(S, OpPC);
52130}
52131bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
52132 if (!isActive()) return true;
52133 CurrentSource = L;
52134 return Shr<PT_Sint16, PT_IntAP>(S, OpPC);
52135}
52136bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
52137 if (!isActive()) return true;
52138 CurrentSource = L;
52139 return Shr<PT_Sint16, PT_IntAPS>(S, OpPC);
52140}
52141bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
52142 if (!isActive()) return true;
52143 CurrentSource = L;
52144 return Shr<PT_Uint16, PT_Sint8>(S, OpPC);
52145}
52146bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
52147 if (!isActive()) return true;
52148 CurrentSource = L;
52149 return Shr<PT_Uint16, PT_Uint8>(S, OpPC);
52150}
52151bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
52152 if (!isActive()) return true;
52153 CurrentSource = L;
52154 return Shr<PT_Uint16, PT_Sint16>(S, OpPC);
52155}
52156bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
52157 if (!isActive()) return true;
52158 CurrentSource = L;
52159 return Shr<PT_Uint16, PT_Uint16>(S, OpPC);
52160}
52161bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
52162 if (!isActive()) return true;
52163 CurrentSource = L;
52164 return Shr<PT_Uint16, PT_Sint32>(S, OpPC);
52165}
52166bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
52167 if (!isActive()) return true;
52168 CurrentSource = L;
52169 return Shr<PT_Uint16, PT_Uint32>(S, OpPC);
52170}
52171bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
52172 if (!isActive()) return true;
52173 CurrentSource = L;
52174 return Shr<PT_Uint16, PT_Sint64>(S, OpPC);
52175}
52176bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
52177 if (!isActive()) return true;
52178 CurrentSource = L;
52179 return Shr<PT_Uint16, PT_Uint64>(S, OpPC);
52180}
52181bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
52182 if (!isActive()) return true;
52183 CurrentSource = L;
52184 return Shr<PT_Uint16, PT_IntAP>(S, OpPC);
52185}
52186bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
52187 if (!isActive()) return true;
52188 CurrentSource = L;
52189 return Shr<PT_Uint16, PT_IntAPS>(S, OpPC);
52190}
52191bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
52192 if (!isActive()) return true;
52193 CurrentSource = L;
52194 return Shr<PT_Sint32, PT_Sint8>(S, OpPC);
52195}
52196bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
52197 if (!isActive()) return true;
52198 CurrentSource = L;
52199 return Shr<PT_Sint32, PT_Uint8>(S, OpPC);
52200}
52201bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
52202 if (!isActive()) return true;
52203 CurrentSource = L;
52204 return Shr<PT_Sint32, PT_Sint16>(S, OpPC);
52205}
52206bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
52207 if (!isActive()) return true;
52208 CurrentSource = L;
52209 return Shr<PT_Sint32, PT_Uint16>(S, OpPC);
52210}
52211bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
52212 if (!isActive()) return true;
52213 CurrentSource = L;
52214 return Shr<PT_Sint32, PT_Sint32>(S, OpPC);
52215}
52216bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
52217 if (!isActive()) return true;
52218 CurrentSource = L;
52219 return Shr<PT_Sint32, PT_Uint32>(S, OpPC);
52220}
52221bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
52222 if (!isActive()) return true;
52223 CurrentSource = L;
52224 return Shr<PT_Sint32, PT_Sint64>(S, OpPC);
52225}
52226bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
52227 if (!isActive()) return true;
52228 CurrentSource = L;
52229 return Shr<PT_Sint32, PT_Uint64>(S, OpPC);
52230}
52231bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
52232 if (!isActive()) return true;
52233 CurrentSource = L;
52234 return Shr<PT_Sint32, PT_IntAP>(S, OpPC);
52235}
52236bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
52237 if (!isActive()) return true;
52238 CurrentSource = L;
52239 return Shr<PT_Sint32, PT_IntAPS>(S, OpPC);
52240}
52241bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
52242 if (!isActive()) return true;
52243 CurrentSource = L;
52244 return Shr<PT_Uint32, PT_Sint8>(S, OpPC);
52245}
52246bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
52247 if (!isActive()) return true;
52248 CurrentSource = L;
52249 return Shr<PT_Uint32, PT_Uint8>(S, OpPC);
52250}
52251bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
52252 if (!isActive()) return true;
52253 CurrentSource = L;
52254 return Shr<PT_Uint32, PT_Sint16>(S, OpPC);
52255}
52256bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
52257 if (!isActive()) return true;
52258 CurrentSource = L;
52259 return Shr<PT_Uint32, PT_Uint16>(S, OpPC);
52260}
52261bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
52262 if (!isActive()) return true;
52263 CurrentSource = L;
52264 return Shr<PT_Uint32, PT_Sint32>(S, OpPC);
52265}
52266bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
52267 if (!isActive()) return true;
52268 CurrentSource = L;
52269 return Shr<PT_Uint32, PT_Uint32>(S, OpPC);
52270}
52271bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
52272 if (!isActive()) return true;
52273 CurrentSource = L;
52274 return Shr<PT_Uint32, PT_Sint64>(S, OpPC);
52275}
52276bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
52277 if (!isActive()) return true;
52278 CurrentSource = L;
52279 return Shr<PT_Uint32, PT_Uint64>(S, OpPC);
52280}
52281bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
52282 if (!isActive()) return true;
52283 CurrentSource = L;
52284 return Shr<PT_Uint32, PT_IntAP>(S, OpPC);
52285}
52286bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
52287 if (!isActive()) return true;
52288 CurrentSource = L;
52289 return Shr<PT_Uint32, PT_IntAPS>(S, OpPC);
52290}
52291bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
52292 if (!isActive()) return true;
52293 CurrentSource = L;
52294 return Shr<PT_Sint64, PT_Sint8>(S, OpPC);
52295}
52296bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
52297 if (!isActive()) return true;
52298 CurrentSource = L;
52299 return Shr<PT_Sint64, PT_Uint8>(S, OpPC);
52300}
52301bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
52302 if (!isActive()) return true;
52303 CurrentSource = L;
52304 return Shr<PT_Sint64, PT_Sint16>(S, OpPC);
52305}
52306bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
52307 if (!isActive()) return true;
52308 CurrentSource = L;
52309 return Shr<PT_Sint64, PT_Uint16>(S, OpPC);
52310}
52311bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
52312 if (!isActive()) return true;
52313 CurrentSource = L;
52314 return Shr<PT_Sint64, PT_Sint32>(S, OpPC);
52315}
52316bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
52317 if (!isActive()) return true;
52318 CurrentSource = L;
52319 return Shr<PT_Sint64, PT_Uint32>(S, OpPC);
52320}
52321bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
52322 if (!isActive()) return true;
52323 CurrentSource = L;
52324 return Shr<PT_Sint64, PT_Sint64>(S, OpPC);
52325}
52326bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
52327 if (!isActive()) return true;
52328 CurrentSource = L;
52329 return Shr<PT_Sint64, PT_Uint64>(S, OpPC);
52330}
52331bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
52332 if (!isActive()) return true;
52333 CurrentSource = L;
52334 return Shr<PT_Sint64, PT_IntAP>(S, OpPC);
52335}
52336bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
52337 if (!isActive()) return true;
52338 CurrentSource = L;
52339 return Shr<PT_Sint64, PT_IntAPS>(S, OpPC);
52340}
52341bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
52342 if (!isActive()) return true;
52343 CurrentSource = L;
52344 return Shr<PT_Uint64, PT_Sint8>(S, OpPC);
52345}
52346bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
52347 if (!isActive()) return true;
52348 CurrentSource = L;
52349 return Shr<PT_Uint64, PT_Uint8>(S, OpPC);
52350}
52351bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
52352 if (!isActive()) return true;
52353 CurrentSource = L;
52354 return Shr<PT_Uint64, PT_Sint16>(S, OpPC);
52355}
52356bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
52357 if (!isActive()) return true;
52358 CurrentSource = L;
52359 return Shr<PT_Uint64, PT_Uint16>(S, OpPC);
52360}
52361bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
52362 if (!isActive()) return true;
52363 CurrentSource = L;
52364 return Shr<PT_Uint64, PT_Sint32>(S, OpPC);
52365}
52366bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
52367 if (!isActive()) return true;
52368 CurrentSource = L;
52369 return Shr<PT_Uint64, PT_Uint32>(S, OpPC);
52370}
52371bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
52372 if (!isActive()) return true;
52373 CurrentSource = L;
52374 return Shr<PT_Uint64, PT_Sint64>(S, OpPC);
52375}
52376bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
52377 if (!isActive()) return true;
52378 CurrentSource = L;
52379 return Shr<PT_Uint64, PT_Uint64>(S, OpPC);
52380}
52381bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
52382 if (!isActive()) return true;
52383 CurrentSource = L;
52384 return Shr<PT_Uint64, PT_IntAP>(S, OpPC);
52385}
52386bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
52387 if (!isActive()) return true;
52388 CurrentSource = L;
52389 return Shr<PT_Uint64, PT_IntAPS>(S, OpPC);
52390}
52391bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
52392 if (!isActive()) return true;
52393 CurrentSource = L;
52394 return Shr<PT_IntAP, PT_Sint8>(S, OpPC);
52395}
52396bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
52397 if (!isActive()) return true;
52398 CurrentSource = L;
52399 return Shr<PT_IntAP, PT_Uint8>(S, OpPC);
52400}
52401bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
52402 if (!isActive()) return true;
52403 CurrentSource = L;
52404 return Shr<PT_IntAP, PT_Sint16>(S, OpPC);
52405}
52406bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
52407 if (!isActive()) return true;
52408 CurrentSource = L;
52409 return Shr<PT_IntAP, PT_Uint16>(S, OpPC);
52410}
52411bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
52412 if (!isActive()) return true;
52413 CurrentSource = L;
52414 return Shr<PT_IntAP, PT_Sint32>(S, OpPC);
52415}
52416bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
52417 if (!isActive()) return true;
52418 CurrentSource = L;
52419 return Shr<PT_IntAP, PT_Uint32>(S, OpPC);
52420}
52421bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
52422 if (!isActive()) return true;
52423 CurrentSource = L;
52424 return Shr<PT_IntAP, PT_Sint64>(S, OpPC);
52425}
52426bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
52427 if (!isActive()) return true;
52428 CurrentSource = L;
52429 return Shr<PT_IntAP, PT_Uint64>(S, OpPC);
52430}
52431bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
52432 if (!isActive()) return true;
52433 CurrentSource = L;
52434 return Shr<PT_IntAP, PT_IntAP>(S, OpPC);
52435}
52436bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
52437 if (!isActive()) return true;
52438 CurrentSource = L;
52439 return Shr<PT_IntAP, PT_IntAPS>(S, OpPC);
52440}
52441bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
52442 if (!isActive()) return true;
52443 CurrentSource = L;
52444 return Shr<PT_IntAPS, PT_Sint8>(S, OpPC);
52445}
52446bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
52447 if (!isActive()) return true;
52448 CurrentSource = L;
52449 return Shr<PT_IntAPS, PT_Uint8>(S, OpPC);
52450}
52451bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
52452 if (!isActive()) return true;
52453 CurrentSource = L;
52454 return Shr<PT_IntAPS, PT_Sint16>(S, OpPC);
52455}
52456bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
52457 if (!isActive()) return true;
52458 CurrentSource = L;
52459 return Shr<PT_IntAPS, PT_Uint16>(S, OpPC);
52460}
52461bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
52462 if (!isActive()) return true;
52463 CurrentSource = L;
52464 return Shr<PT_IntAPS, PT_Sint32>(S, OpPC);
52465}
52466bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
52467 if (!isActive()) return true;
52468 CurrentSource = L;
52469 return Shr<PT_IntAPS, PT_Uint32>(S, OpPC);
52470}
52471bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
52472 if (!isActive()) return true;
52473 CurrentSource = L;
52474 return Shr<PT_IntAPS, PT_Sint64>(S, OpPC);
52475}
52476bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
52477 if (!isActive()) return true;
52478 CurrentSource = L;
52479 return Shr<PT_IntAPS, PT_Uint64>(S, OpPC);
52480}
52481bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
52482 if (!isActive()) return true;
52483 CurrentSource = L;
52484 return Shr<PT_IntAPS, PT_IntAP>(S, OpPC);
52485}
52486bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
52487 if (!isActive()) return true;
52488 CurrentSource = L;
52489 return Shr<PT_IntAPS, PT_IntAPS>(S, OpPC);
52490}
52491#endif
52492#ifdef GET_OPCODE_NAMES
52493OP_SideEffect,
52494#endif
52495#ifdef GET_INTERPFN_LIST
52496&Interp_SideEffect,
52497#endif
52498#ifdef GET_INTERPFN_DISPATCHERS
52499PRESERVE_NONE
52500static bool Interp_SideEffect(InterpState &S, CodePtr &PC) {
52501 if (!SideEffect(S, PC))
52502 return false;
52503#if USE_TAILCALLS
52504 MUSTTAIL return InterpNext(S, PC);
52505#else
52506 return true;
52507#endif
52508}
52509#endif
52510#ifdef GET_DISASM
52511case OP_SideEffect:
52512 Text.Op = PrintName("SideEffect");
52513 break;
52514#endif
52515#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52516bool emitSideEffect(SourceInfo);
52517#endif
52518#ifdef GET_LINK_IMPL
52519bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
52520 return emitOp<>(OP_SideEffect, L);
52521}
52522#endif
52523#ifdef GET_EVAL_IMPL
52524bool EvalEmitter::emitSideEffect(SourceInfo L) {
52525 if (!isActive()) return true;
52526 CurrentSource = L;
52527 return SideEffect(S, OpPC);
52528}
52529#endif
52530#ifdef GET_OPCODE_NAMES
52531OP_SizelessVectorElementSize,
52532#endif
52533#ifdef GET_INTERPFN_LIST
52534&Interp_SizelessVectorElementSize,
52535#endif
52536#ifdef GET_INTERPFN_DISPATCHERS
52537PRESERVE_NONE
52538static bool Interp_SizelessVectorElementSize(InterpState &S, CodePtr &PC) {
52539 if (!SizelessVectorElementSize(S, PC))
52540 return false;
52541#if USE_TAILCALLS
52542 MUSTTAIL return InterpNext(S, PC);
52543#else
52544 return true;
52545#endif
52546}
52547#endif
52548#ifdef GET_DISASM
52549case OP_SizelessVectorElementSize:
52550 Text.Op = PrintName("SizelessVectorElementSize");
52551 break;
52552#endif
52553#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52554bool emitSizelessVectorElementSize(SourceInfo);
52555#endif
52556#ifdef GET_LINK_IMPL
52557bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
52558 return emitOp<>(OP_SizelessVectorElementSize, L);
52559}
52560#endif
52561#ifdef GET_EVAL_IMPL
52562bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
52563 if (!isActive()) return true;
52564 CurrentSource = L;
52565 return SizelessVectorElementSize(S, OpPC);
52566}
52567#endif
52568#ifdef GET_OPCODE_NAMES
52569OP_StartLifetime,
52570#endif
52571#ifdef GET_INTERPFN_LIST
52572&Interp_StartLifetime,
52573#endif
52574#ifdef GET_INTERPFN_DISPATCHERS
52575PRESERVE_NONE
52576static bool Interp_StartLifetime(InterpState &S, CodePtr &PC) {
52577 if (!StartLifetime(S, PC))
52578 return false;
52579#if USE_TAILCALLS
52580 MUSTTAIL return InterpNext(S, PC);
52581#else
52582 return true;
52583#endif
52584}
52585#endif
52586#ifdef GET_DISASM
52587case OP_StartLifetime:
52588 Text.Op = PrintName("StartLifetime");
52589 break;
52590#endif
52591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52592bool emitStartLifetime(SourceInfo);
52593#endif
52594#ifdef GET_LINK_IMPL
52595bool ByteCodeEmitter::emitStartLifetime(SourceInfo L) {
52596 return emitOp<>(OP_StartLifetime, L);
52597}
52598#endif
52599#ifdef GET_EVAL_IMPL
52600bool EvalEmitter::emitStartLifetime(SourceInfo L) {
52601 if (!isActive()) return true;
52602 CurrentSource = L;
52603 return StartLifetime(S, OpPC);
52604}
52605#endif
52606#ifdef GET_OPCODE_NAMES
52607OP_StartSpeculation,
52608#endif
52609#ifdef GET_INTERPFN_LIST
52610&Interp_StartSpeculation,
52611#endif
52612#ifdef GET_INTERPFN_DISPATCHERS
52613PRESERVE_NONE
52614static bool Interp_StartSpeculation(InterpState &S, CodePtr &PC) {
52615 if (!StartSpeculation(S, PC))
52616 return false;
52617#if USE_TAILCALLS
52618 MUSTTAIL return InterpNext(S, PC);
52619#else
52620 return true;
52621#endif
52622}
52623#endif
52624#ifdef GET_DISASM
52625case OP_StartSpeculation:
52626 Text.Op = PrintName("StartSpeculation");
52627 break;
52628#endif
52629#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52630bool emitStartSpeculation(SourceInfo);
52631#endif
52632#ifdef GET_LINK_IMPL
52633bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
52634 return emitOp<>(OP_StartSpeculation, L);
52635}
52636#endif
52637#ifdef GET_EVAL_IMPL
52638bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
52639 if (!isActive()) return true;
52640 CurrentSource = L;
52641 return StartSpeculation(S, OpPC);
52642}
52643#endif
52644#ifdef GET_OPCODE_NAMES
52645OP_StoreSint8,
52646OP_StoreUint8,
52647OP_StoreSint16,
52648OP_StoreUint16,
52649OP_StoreSint32,
52650OP_StoreUint32,
52651OP_StoreSint64,
52652OP_StoreUint64,
52653OP_StoreIntAP,
52654OP_StoreIntAPS,
52655OP_StoreBool,
52656OP_StoreFixedPoint,
52657OP_StorePtr,
52658OP_StoreMemberPtr,
52659OP_StoreFloat,
52660#endif
52661#ifdef GET_INTERPFN_LIST
52662&Interp_StoreSint8,
52663&Interp_StoreUint8,
52664&Interp_StoreSint16,
52665&Interp_StoreUint16,
52666&Interp_StoreSint32,
52667&Interp_StoreUint32,
52668&Interp_StoreSint64,
52669&Interp_StoreUint64,
52670&Interp_StoreIntAP,
52671&Interp_StoreIntAPS,
52672&Interp_StoreBool,
52673&Interp_StoreFixedPoint,
52674&Interp_StorePtr,
52675&Interp_StoreMemberPtr,
52676&Interp_StoreFloat,
52677#endif
52678#ifdef GET_INTERPFN_DISPATCHERS
52679PRESERVE_NONE
52680static bool Interp_StoreSint8(InterpState &S, CodePtr &PC) {
52681 if (!Store<PT_Sint8>(S, PC))
52682 return false;
52683#if USE_TAILCALLS
52684 MUSTTAIL return InterpNext(S, PC);
52685#else
52686 return true;
52687#endif
52688}
52689PRESERVE_NONE
52690static bool Interp_StoreUint8(InterpState &S, CodePtr &PC) {
52691 if (!Store<PT_Uint8>(S, PC))
52692 return false;
52693#if USE_TAILCALLS
52694 MUSTTAIL return InterpNext(S, PC);
52695#else
52696 return true;
52697#endif
52698}
52699PRESERVE_NONE
52700static bool Interp_StoreSint16(InterpState &S, CodePtr &PC) {
52701 if (!Store<PT_Sint16>(S, PC))
52702 return false;
52703#if USE_TAILCALLS
52704 MUSTTAIL return InterpNext(S, PC);
52705#else
52706 return true;
52707#endif
52708}
52709PRESERVE_NONE
52710static bool Interp_StoreUint16(InterpState &S, CodePtr &PC) {
52711 if (!Store<PT_Uint16>(S, PC))
52712 return false;
52713#if USE_TAILCALLS
52714 MUSTTAIL return InterpNext(S, PC);
52715#else
52716 return true;
52717#endif
52718}
52719PRESERVE_NONE
52720static bool Interp_StoreSint32(InterpState &S, CodePtr &PC) {
52721 if (!Store<PT_Sint32>(S, PC))
52722 return false;
52723#if USE_TAILCALLS
52724 MUSTTAIL return InterpNext(S, PC);
52725#else
52726 return true;
52727#endif
52728}
52729PRESERVE_NONE
52730static bool Interp_StoreUint32(InterpState &S, CodePtr &PC) {
52731 if (!Store<PT_Uint32>(S, PC))
52732 return false;
52733#if USE_TAILCALLS
52734 MUSTTAIL return InterpNext(S, PC);
52735#else
52736 return true;
52737#endif
52738}
52739PRESERVE_NONE
52740static bool Interp_StoreSint64(InterpState &S, CodePtr &PC) {
52741 if (!Store<PT_Sint64>(S, PC))
52742 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_StoreUint64(InterpState &S, CodePtr &PC) {
52751 if (!Store<PT_Uint64>(S, PC))
52752 return false;
52753#if USE_TAILCALLS
52754 MUSTTAIL return InterpNext(S, PC);
52755#else
52756 return true;
52757#endif
52758}
52759PRESERVE_NONE
52760static bool Interp_StoreIntAP(InterpState &S, CodePtr &PC) {
52761 if (!Store<PT_IntAP>(S, PC))
52762 return false;
52763#if USE_TAILCALLS
52764 MUSTTAIL return InterpNext(S, PC);
52765#else
52766 return true;
52767#endif
52768}
52769PRESERVE_NONE
52770static bool Interp_StoreIntAPS(InterpState &S, CodePtr &PC) {
52771 if (!Store<PT_IntAPS>(S, PC))
52772 return false;
52773#if USE_TAILCALLS
52774 MUSTTAIL return InterpNext(S, PC);
52775#else
52776 return true;
52777#endif
52778}
52779PRESERVE_NONE
52780static bool Interp_StoreBool(InterpState &S, CodePtr &PC) {
52781 if (!Store<PT_Bool>(S, PC))
52782 return false;
52783#if USE_TAILCALLS
52784 MUSTTAIL return InterpNext(S, PC);
52785#else
52786 return true;
52787#endif
52788}
52789PRESERVE_NONE
52790static bool Interp_StoreFixedPoint(InterpState &S, CodePtr &PC) {
52791 if (!Store<PT_FixedPoint>(S, PC))
52792 return false;
52793#if USE_TAILCALLS
52794 MUSTTAIL return InterpNext(S, PC);
52795#else
52796 return true;
52797#endif
52798}
52799PRESERVE_NONE
52800static bool Interp_StorePtr(InterpState &S, CodePtr &PC) {
52801 if (!Store<PT_Ptr>(S, PC))
52802 return false;
52803#if USE_TAILCALLS
52804 MUSTTAIL return InterpNext(S, PC);
52805#else
52806 return true;
52807#endif
52808}
52809PRESERVE_NONE
52810static bool Interp_StoreMemberPtr(InterpState &S, CodePtr &PC) {
52811 if (!Store<PT_MemberPtr>(S, PC))
52812 return false;
52813#if USE_TAILCALLS
52814 MUSTTAIL return InterpNext(S, PC);
52815#else
52816 return true;
52817#endif
52818}
52819PRESERVE_NONE
52820static bool Interp_StoreFloat(InterpState &S, CodePtr &PC) {
52821 if (!Store<PT_Float>(S, PC))
52822 return false;
52823#if USE_TAILCALLS
52824 MUSTTAIL return InterpNext(S, PC);
52825#else
52826 return true;
52827#endif
52828}
52829#endif
52830#ifdef GET_DISASM
52831case OP_StoreSint8:
52832 Text.Op = PrintName("StoreSint8");
52833 break;
52834case OP_StoreUint8:
52835 Text.Op = PrintName("StoreUint8");
52836 break;
52837case OP_StoreSint16:
52838 Text.Op = PrintName("StoreSint16");
52839 break;
52840case OP_StoreUint16:
52841 Text.Op = PrintName("StoreUint16");
52842 break;
52843case OP_StoreSint32:
52844 Text.Op = PrintName("StoreSint32");
52845 break;
52846case OP_StoreUint32:
52847 Text.Op = PrintName("StoreUint32");
52848 break;
52849case OP_StoreSint64:
52850 Text.Op = PrintName("StoreSint64");
52851 break;
52852case OP_StoreUint64:
52853 Text.Op = PrintName("StoreUint64");
52854 break;
52855case OP_StoreIntAP:
52856 Text.Op = PrintName("StoreIntAP");
52857 break;
52858case OP_StoreIntAPS:
52859 Text.Op = PrintName("StoreIntAPS");
52860 break;
52861case OP_StoreBool:
52862 Text.Op = PrintName("StoreBool");
52863 break;
52864case OP_StoreFixedPoint:
52865 Text.Op = PrintName("StoreFixedPoint");
52866 break;
52867case OP_StorePtr:
52868 Text.Op = PrintName("StorePtr");
52869 break;
52870case OP_StoreMemberPtr:
52871 Text.Op = PrintName("StoreMemberPtr");
52872 break;
52873case OP_StoreFloat:
52874 Text.Op = PrintName("StoreFloat");
52875 break;
52876#endif
52877#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52878bool emitStoreSint8(SourceInfo);
52879bool emitStoreUint8(SourceInfo);
52880bool emitStoreSint16(SourceInfo);
52881bool emitStoreUint16(SourceInfo);
52882bool emitStoreSint32(SourceInfo);
52883bool emitStoreUint32(SourceInfo);
52884bool emitStoreSint64(SourceInfo);
52885bool emitStoreUint64(SourceInfo);
52886bool emitStoreIntAP(SourceInfo);
52887bool emitStoreIntAPS(SourceInfo);
52888bool emitStoreBool(SourceInfo);
52889bool emitStoreFixedPoint(SourceInfo);
52890bool emitStorePtr(SourceInfo);
52891bool emitStoreMemberPtr(SourceInfo);
52892bool emitStoreFloat(SourceInfo);
52893#endif
52894#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52895[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
52896#endif
52897#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52898bool
52899#if defined(GET_EVAL_IMPL)
52900EvalEmitter
52901#else
52902ByteCodeEmitter
52903#endif
52904::emitStore(PrimType T0, SourceInfo I) {
52905 switch (T0) {
52906 case PT_Sint8:
52907 return emitStoreSint8(I);
52908 case PT_Uint8:
52909 return emitStoreUint8(I);
52910 case PT_Sint16:
52911 return emitStoreSint16(I);
52912 case PT_Uint16:
52913 return emitStoreUint16(I);
52914 case PT_Sint32:
52915 return emitStoreSint32(I);
52916 case PT_Uint32:
52917 return emitStoreUint32(I);
52918 case PT_Sint64:
52919 return emitStoreSint64(I);
52920 case PT_Uint64:
52921 return emitStoreUint64(I);
52922 case PT_IntAP:
52923 return emitStoreIntAP(I);
52924 case PT_IntAPS:
52925 return emitStoreIntAPS(I);
52926 case PT_Bool:
52927 return emitStoreBool(I);
52928 case PT_FixedPoint:
52929 return emitStoreFixedPoint(I);
52930 case PT_Ptr:
52931 return emitStorePtr(I);
52932 case PT_MemberPtr:
52933 return emitStoreMemberPtr(I);
52934 case PT_Float:
52935 return emitStoreFloat(I);
52936 }
52937 llvm_unreachable("invalid enum value");
52938}
52939#endif
52940#ifdef GET_LINK_IMPL
52941bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
52942 return emitOp<>(OP_StoreSint8, L);
52943}
52944bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
52945 return emitOp<>(OP_StoreUint8, L);
52946}
52947bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
52948 return emitOp<>(OP_StoreSint16, L);
52949}
52950bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
52951 return emitOp<>(OP_StoreUint16, L);
52952}
52953bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
52954 return emitOp<>(OP_StoreSint32, L);
52955}
52956bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
52957 return emitOp<>(OP_StoreUint32, L);
52958}
52959bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
52960 return emitOp<>(OP_StoreSint64, L);
52961}
52962bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
52963 return emitOp<>(OP_StoreUint64, L);
52964}
52965bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
52966 return emitOp<>(OP_StoreIntAP, L);
52967}
52968bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
52969 return emitOp<>(OP_StoreIntAPS, L);
52970}
52971bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
52972 return emitOp<>(OP_StoreBool, L);
52973}
52974bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
52975 return emitOp<>(OP_StoreFixedPoint, L);
52976}
52977bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
52978 return emitOp<>(OP_StorePtr, L);
52979}
52980bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
52981 return emitOp<>(OP_StoreMemberPtr, L);
52982}
52983bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
52984 return emitOp<>(OP_StoreFloat, L);
52985}
52986#endif
52987#ifdef GET_EVAL_IMPL
52988bool EvalEmitter::emitStoreSint8(SourceInfo L) {
52989 if (!isActive()) return true;
52990 CurrentSource = L;
52991 return Store<PT_Sint8>(S, OpPC);
52992}
52993bool EvalEmitter::emitStoreUint8(SourceInfo L) {
52994 if (!isActive()) return true;
52995 CurrentSource = L;
52996 return Store<PT_Uint8>(S, OpPC);
52997}
52998bool EvalEmitter::emitStoreSint16(SourceInfo L) {
52999 if (!isActive()) return true;
53000 CurrentSource = L;
53001 return Store<PT_Sint16>(S, OpPC);
53002}
53003bool EvalEmitter::emitStoreUint16(SourceInfo L) {
53004 if (!isActive()) return true;
53005 CurrentSource = L;
53006 return Store<PT_Uint16>(S, OpPC);
53007}
53008bool EvalEmitter::emitStoreSint32(SourceInfo L) {
53009 if (!isActive()) return true;
53010 CurrentSource = L;
53011 return Store<PT_Sint32>(S, OpPC);
53012}
53013bool EvalEmitter::emitStoreUint32(SourceInfo L) {
53014 if (!isActive()) return true;
53015 CurrentSource = L;
53016 return Store<PT_Uint32>(S, OpPC);
53017}
53018bool EvalEmitter::emitStoreSint64(SourceInfo L) {
53019 if (!isActive()) return true;
53020 CurrentSource = L;
53021 return Store<PT_Sint64>(S, OpPC);
53022}
53023bool EvalEmitter::emitStoreUint64(SourceInfo L) {
53024 if (!isActive()) return true;
53025 CurrentSource = L;
53026 return Store<PT_Uint64>(S, OpPC);
53027}
53028bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
53029 if (!isActive()) return true;
53030 CurrentSource = L;
53031 return Store<PT_IntAP>(S, OpPC);
53032}
53033bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
53034 if (!isActive()) return true;
53035 CurrentSource = L;
53036 return Store<PT_IntAPS>(S, OpPC);
53037}
53038bool EvalEmitter::emitStoreBool(SourceInfo L) {
53039 if (!isActive()) return true;
53040 CurrentSource = L;
53041 return Store<PT_Bool>(S, OpPC);
53042}
53043bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
53044 if (!isActive()) return true;
53045 CurrentSource = L;
53046 return Store<PT_FixedPoint>(S, OpPC);
53047}
53048bool EvalEmitter::emitStorePtr(SourceInfo L) {
53049 if (!isActive()) return true;
53050 CurrentSource = L;
53051 return Store<PT_Ptr>(S, OpPC);
53052}
53053bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
53054 if (!isActive()) return true;
53055 CurrentSource = L;
53056 return Store<PT_MemberPtr>(S, OpPC);
53057}
53058bool EvalEmitter::emitStoreFloat(SourceInfo L) {
53059 if (!isActive()) return true;
53060 CurrentSource = L;
53061 return Store<PT_Float>(S, OpPC);
53062}
53063#endif
53064#ifdef GET_OPCODE_NAMES
53065OP_StoreActivateSint8,
53066OP_StoreActivateUint8,
53067OP_StoreActivateSint16,
53068OP_StoreActivateUint16,
53069OP_StoreActivateSint32,
53070OP_StoreActivateUint32,
53071OP_StoreActivateSint64,
53072OP_StoreActivateUint64,
53073OP_StoreActivateIntAP,
53074OP_StoreActivateIntAPS,
53075OP_StoreActivateBool,
53076OP_StoreActivateFixedPoint,
53077OP_StoreActivatePtr,
53078OP_StoreActivateMemberPtr,
53079OP_StoreActivateFloat,
53080#endif
53081#ifdef GET_INTERPFN_LIST
53082&Interp_StoreActivateSint8,
53083&Interp_StoreActivateUint8,
53084&Interp_StoreActivateSint16,
53085&Interp_StoreActivateUint16,
53086&Interp_StoreActivateSint32,
53087&Interp_StoreActivateUint32,
53088&Interp_StoreActivateSint64,
53089&Interp_StoreActivateUint64,
53090&Interp_StoreActivateIntAP,
53091&Interp_StoreActivateIntAPS,
53092&Interp_StoreActivateBool,
53093&Interp_StoreActivateFixedPoint,
53094&Interp_StoreActivatePtr,
53095&Interp_StoreActivateMemberPtr,
53096&Interp_StoreActivateFloat,
53097#endif
53098#ifdef GET_INTERPFN_DISPATCHERS
53099PRESERVE_NONE
53100static bool Interp_StoreActivateSint8(InterpState &S, CodePtr &PC) {
53101 if (!StoreActivate<PT_Sint8>(S, PC))
53102 return false;
53103#if USE_TAILCALLS
53104 MUSTTAIL return InterpNext(S, PC);
53105#else
53106 return true;
53107#endif
53108}
53109PRESERVE_NONE
53110static bool Interp_StoreActivateUint8(InterpState &S, CodePtr &PC) {
53111 if (!StoreActivate<PT_Uint8>(S, PC))
53112 return false;
53113#if USE_TAILCALLS
53114 MUSTTAIL return InterpNext(S, PC);
53115#else
53116 return true;
53117#endif
53118}
53119PRESERVE_NONE
53120static bool Interp_StoreActivateSint16(InterpState &S, CodePtr &PC) {
53121 if (!StoreActivate<PT_Sint16>(S, PC))
53122 return false;
53123#if USE_TAILCALLS
53124 MUSTTAIL return InterpNext(S, PC);
53125#else
53126 return true;
53127#endif
53128}
53129PRESERVE_NONE
53130static bool Interp_StoreActivateUint16(InterpState &S, CodePtr &PC) {
53131 if (!StoreActivate<PT_Uint16>(S, PC))
53132 return false;
53133#if USE_TAILCALLS
53134 MUSTTAIL return InterpNext(S, PC);
53135#else
53136 return true;
53137#endif
53138}
53139PRESERVE_NONE
53140static bool Interp_StoreActivateSint32(InterpState &S, CodePtr &PC) {
53141 if (!StoreActivate<PT_Sint32>(S, PC))
53142 return false;
53143#if USE_TAILCALLS
53144 MUSTTAIL return InterpNext(S, PC);
53145#else
53146 return true;
53147#endif
53148}
53149PRESERVE_NONE
53150static bool Interp_StoreActivateUint32(InterpState &S, CodePtr &PC) {
53151 if (!StoreActivate<PT_Uint32>(S, PC))
53152 return false;
53153#if USE_TAILCALLS
53154 MUSTTAIL return InterpNext(S, PC);
53155#else
53156 return true;
53157#endif
53158}
53159PRESERVE_NONE
53160static bool Interp_StoreActivateSint64(InterpState &S, CodePtr &PC) {
53161 if (!StoreActivate<PT_Sint64>(S, PC))
53162 return false;
53163#if USE_TAILCALLS
53164 MUSTTAIL return InterpNext(S, PC);
53165#else
53166 return true;
53167#endif
53168}
53169PRESERVE_NONE
53170static bool Interp_StoreActivateUint64(InterpState &S, CodePtr &PC) {
53171 if (!StoreActivate<PT_Uint64>(S, PC))
53172 return false;
53173#if USE_TAILCALLS
53174 MUSTTAIL return InterpNext(S, PC);
53175#else
53176 return true;
53177#endif
53178}
53179PRESERVE_NONE
53180static bool Interp_StoreActivateIntAP(InterpState &S, CodePtr &PC) {
53181 if (!StoreActivate<PT_IntAP>(S, PC))
53182 return false;
53183#if USE_TAILCALLS
53184 MUSTTAIL return InterpNext(S, PC);
53185#else
53186 return true;
53187#endif
53188}
53189PRESERVE_NONE
53190static bool Interp_StoreActivateIntAPS(InterpState &S, CodePtr &PC) {
53191 if (!StoreActivate<PT_IntAPS>(S, PC))
53192 return false;
53193#if USE_TAILCALLS
53194 MUSTTAIL return InterpNext(S, PC);
53195#else
53196 return true;
53197#endif
53198}
53199PRESERVE_NONE
53200static bool Interp_StoreActivateBool(InterpState &S, CodePtr &PC) {
53201 if (!StoreActivate<PT_Bool>(S, PC))
53202 return false;
53203#if USE_TAILCALLS
53204 MUSTTAIL return InterpNext(S, PC);
53205#else
53206 return true;
53207#endif
53208}
53209PRESERVE_NONE
53210static bool Interp_StoreActivateFixedPoint(InterpState &S, CodePtr &PC) {
53211 if (!StoreActivate<PT_FixedPoint>(S, PC))
53212 return false;
53213#if USE_TAILCALLS
53214 MUSTTAIL return InterpNext(S, PC);
53215#else
53216 return true;
53217#endif
53218}
53219PRESERVE_NONE
53220static bool Interp_StoreActivatePtr(InterpState &S, CodePtr &PC) {
53221 if (!StoreActivate<PT_Ptr>(S, PC))
53222 return false;
53223#if USE_TAILCALLS
53224 MUSTTAIL return InterpNext(S, PC);
53225#else
53226 return true;
53227#endif
53228}
53229PRESERVE_NONE
53230static bool Interp_StoreActivateMemberPtr(InterpState &S, CodePtr &PC) {
53231 if (!StoreActivate<PT_MemberPtr>(S, PC))
53232 return false;
53233#if USE_TAILCALLS
53234 MUSTTAIL return InterpNext(S, PC);
53235#else
53236 return true;
53237#endif
53238}
53239PRESERVE_NONE
53240static bool Interp_StoreActivateFloat(InterpState &S, CodePtr &PC) {
53241 if (!StoreActivate<PT_Float>(S, PC))
53242 return false;
53243#if USE_TAILCALLS
53244 MUSTTAIL return InterpNext(S, PC);
53245#else
53246 return true;
53247#endif
53248}
53249#endif
53250#ifdef GET_DISASM
53251case OP_StoreActivateSint8:
53252 Text.Op = PrintName("StoreActivateSint8");
53253 break;
53254case OP_StoreActivateUint8:
53255 Text.Op = PrintName("StoreActivateUint8");
53256 break;
53257case OP_StoreActivateSint16:
53258 Text.Op = PrintName("StoreActivateSint16");
53259 break;
53260case OP_StoreActivateUint16:
53261 Text.Op = PrintName("StoreActivateUint16");
53262 break;
53263case OP_StoreActivateSint32:
53264 Text.Op = PrintName("StoreActivateSint32");
53265 break;
53266case OP_StoreActivateUint32:
53267 Text.Op = PrintName("StoreActivateUint32");
53268 break;
53269case OP_StoreActivateSint64:
53270 Text.Op = PrintName("StoreActivateSint64");
53271 break;
53272case OP_StoreActivateUint64:
53273 Text.Op = PrintName("StoreActivateUint64");
53274 break;
53275case OP_StoreActivateIntAP:
53276 Text.Op = PrintName("StoreActivateIntAP");
53277 break;
53278case OP_StoreActivateIntAPS:
53279 Text.Op = PrintName("StoreActivateIntAPS");
53280 break;
53281case OP_StoreActivateBool:
53282 Text.Op = PrintName("StoreActivateBool");
53283 break;
53284case OP_StoreActivateFixedPoint:
53285 Text.Op = PrintName("StoreActivateFixedPoint");
53286 break;
53287case OP_StoreActivatePtr:
53288 Text.Op = PrintName("StoreActivatePtr");
53289 break;
53290case OP_StoreActivateMemberPtr:
53291 Text.Op = PrintName("StoreActivateMemberPtr");
53292 break;
53293case OP_StoreActivateFloat:
53294 Text.Op = PrintName("StoreActivateFloat");
53295 break;
53296#endif
53297#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53298bool emitStoreActivateSint8(SourceInfo);
53299bool emitStoreActivateUint8(SourceInfo);
53300bool emitStoreActivateSint16(SourceInfo);
53301bool emitStoreActivateUint16(SourceInfo);
53302bool emitStoreActivateSint32(SourceInfo);
53303bool emitStoreActivateUint32(SourceInfo);
53304bool emitStoreActivateSint64(SourceInfo);
53305bool emitStoreActivateUint64(SourceInfo);
53306bool emitStoreActivateIntAP(SourceInfo);
53307bool emitStoreActivateIntAPS(SourceInfo);
53308bool emitStoreActivateBool(SourceInfo);
53309bool emitStoreActivateFixedPoint(SourceInfo);
53310bool emitStoreActivatePtr(SourceInfo);
53311bool emitStoreActivateMemberPtr(SourceInfo);
53312bool emitStoreActivateFloat(SourceInfo);
53313#endif
53314#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53315[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
53316#endif
53317#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53318bool
53319#if defined(GET_EVAL_IMPL)
53320EvalEmitter
53321#else
53322ByteCodeEmitter
53323#endif
53324::emitStoreActivate(PrimType T0, SourceInfo I) {
53325 switch (T0) {
53326 case PT_Sint8:
53327 return emitStoreActivateSint8(I);
53328 case PT_Uint8:
53329 return emitStoreActivateUint8(I);
53330 case PT_Sint16:
53331 return emitStoreActivateSint16(I);
53332 case PT_Uint16:
53333 return emitStoreActivateUint16(I);
53334 case PT_Sint32:
53335 return emitStoreActivateSint32(I);
53336 case PT_Uint32:
53337 return emitStoreActivateUint32(I);
53338 case PT_Sint64:
53339 return emitStoreActivateSint64(I);
53340 case PT_Uint64:
53341 return emitStoreActivateUint64(I);
53342 case PT_IntAP:
53343 return emitStoreActivateIntAP(I);
53344 case PT_IntAPS:
53345 return emitStoreActivateIntAPS(I);
53346 case PT_Bool:
53347 return emitStoreActivateBool(I);
53348 case PT_FixedPoint:
53349 return emitStoreActivateFixedPoint(I);
53350 case PT_Ptr:
53351 return emitStoreActivatePtr(I);
53352 case PT_MemberPtr:
53353 return emitStoreActivateMemberPtr(I);
53354 case PT_Float:
53355 return emitStoreActivateFloat(I);
53356 }
53357 llvm_unreachable("invalid enum value");
53358}
53359#endif
53360#ifdef GET_LINK_IMPL
53361bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
53362 return emitOp<>(OP_StoreActivateSint8, L);
53363}
53364bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
53365 return emitOp<>(OP_StoreActivateUint8, L);
53366}
53367bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
53368 return emitOp<>(OP_StoreActivateSint16, L);
53369}
53370bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
53371 return emitOp<>(OP_StoreActivateUint16, L);
53372}
53373bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
53374 return emitOp<>(OP_StoreActivateSint32, L);
53375}
53376bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
53377 return emitOp<>(OP_StoreActivateUint32, L);
53378}
53379bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
53380 return emitOp<>(OP_StoreActivateSint64, L);
53381}
53382bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
53383 return emitOp<>(OP_StoreActivateUint64, L);
53384}
53385bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
53386 return emitOp<>(OP_StoreActivateIntAP, L);
53387}
53388bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
53389 return emitOp<>(OP_StoreActivateIntAPS, L);
53390}
53391bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
53392 return emitOp<>(OP_StoreActivateBool, L);
53393}
53394bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
53395 return emitOp<>(OP_StoreActivateFixedPoint, L);
53396}
53397bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
53398 return emitOp<>(OP_StoreActivatePtr, L);
53399}
53400bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
53401 return emitOp<>(OP_StoreActivateMemberPtr, L);
53402}
53403bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
53404 return emitOp<>(OP_StoreActivateFloat, L);
53405}
53406#endif
53407#ifdef GET_EVAL_IMPL
53408bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
53409 if (!isActive()) return true;
53410 CurrentSource = L;
53411 return StoreActivate<PT_Sint8>(S, OpPC);
53412}
53413bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
53414 if (!isActive()) return true;
53415 CurrentSource = L;
53416 return StoreActivate<PT_Uint8>(S, OpPC);
53417}
53418bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
53419 if (!isActive()) return true;
53420 CurrentSource = L;
53421 return StoreActivate<PT_Sint16>(S, OpPC);
53422}
53423bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
53424 if (!isActive()) return true;
53425 CurrentSource = L;
53426 return StoreActivate<PT_Uint16>(S, OpPC);
53427}
53428bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
53429 if (!isActive()) return true;
53430 CurrentSource = L;
53431 return StoreActivate<PT_Sint32>(S, OpPC);
53432}
53433bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
53434 if (!isActive()) return true;
53435 CurrentSource = L;
53436 return StoreActivate<PT_Uint32>(S, OpPC);
53437}
53438bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
53439 if (!isActive()) return true;
53440 CurrentSource = L;
53441 return StoreActivate<PT_Sint64>(S, OpPC);
53442}
53443bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
53444 if (!isActive()) return true;
53445 CurrentSource = L;
53446 return StoreActivate<PT_Uint64>(S, OpPC);
53447}
53448bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
53449 if (!isActive()) return true;
53450 CurrentSource = L;
53451 return StoreActivate<PT_IntAP>(S, OpPC);
53452}
53453bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
53454 if (!isActive()) return true;
53455 CurrentSource = L;
53456 return StoreActivate<PT_IntAPS>(S, OpPC);
53457}
53458bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
53459 if (!isActive()) return true;
53460 CurrentSource = L;
53461 return StoreActivate<PT_Bool>(S, OpPC);
53462}
53463bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
53464 if (!isActive()) return true;
53465 CurrentSource = L;
53466 return StoreActivate<PT_FixedPoint>(S, OpPC);
53467}
53468bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
53469 if (!isActive()) return true;
53470 CurrentSource = L;
53471 return StoreActivate<PT_Ptr>(S, OpPC);
53472}
53473bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
53474 if (!isActive()) return true;
53475 CurrentSource = L;
53476 return StoreActivate<PT_MemberPtr>(S, OpPC);
53477}
53478bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
53479 if (!isActive()) return true;
53480 CurrentSource = L;
53481 return StoreActivate<PT_Float>(S, OpPC);
53482}
53483#endif
53484#ifdef GET_OPCODE_NAMES
53485OP_StoreActivatePopSint8,
53486OP_StoreActivatePopUint8,
53487OP_StoreActivatePopSint16,
53488OP_StoreActivatePopUint16,
53489OP_StoreActivatePopSint32,
53490OP_StoreActivatePopUint32,
53491OP_StoreActivatePopSint64,
53492OP_StoreActivatePopUint64,
53493OP_StoreActivatePopIntAP,
53494OP_StoreActivatePopIntAPS,
53495OP_StoreActivatePopBool,
53496OP_StoreActivatePopFixedPoint,
53497OP_StoreActivatePopPtr,
53498OP_StoreActivatePopMemberPtr,
53499OP_StoreActivatePopFloat,
53500#endif
53501#ifdef GET_INTERPFN_LIST
53502&Interp_StoreActivatePopSint8,
53503&Interp_StoreActivatePopUint8,
53504&Interp_StoreActivatePopSint16,
53505&Interp_StoreActivatePopUint16,
53506&Interp_StoreActivatePopSint32,
53507&Interp_StoreActivatePopUint32,
53508&Interp_StoreActivatePopSint64,
53509&Interp_StoreActivatePopUint64,
53510&Interp_StoreActivatePopIntAP,
53511&Interp_StoreActivatePopIntAPS,
53512&Interp_StoreActivatePopBool,
53513&Interp_StoreActivatePopFixedPoint,
53514&Interp_StoreActivatePopPtr,
53515&Interp_StoreActivatePopMemberPtr,
53516&Interp_StoreActivatePopFloat,
53517#endif
53518#ifdef GET_INTERPFN_DISPATCHERS
53519PRESERVE_NONE
53520static bool Interp_StoreActivatePopSint8(InterpState &S, CodePtr &PC) {
53521 if (!StoreActivatePop<PT_Sint8>(S, PC))
53522 return false;
53523#if USE_TAILCALLS
53524 MUSTTAIL return InterpNext(S, PC);
53525#else
53526 return true;
53527#endif
53528}
53529PRESERVE_NONE
53530static bool Interp_StoreActivatePopUint8(InterpState &S, CodePtr &PC) {
53531 if (!StoreActivatePop<PT_Uint8>(S, PC))
53532 return false;
53533#if USE_TAILCALLS
53534 MUSTTAIL return InterpNext(S, PC);
53535#else
53536 return true;
53537#endif
53538}
53539PRESERVE_NONE
53540static bool Interp_StoreActivatePopSint16(InterpState &S, CodePtr &PC) {
53541 if (!StoreActivatePop<PT_Sint16>(S, PC))
53542 return false;
53543#if USE_TAILCALLS
53544 MUSTTAIL return InterpNext(S, PC);
53545#else
53546 return true;
53547#endif
53548}
53549PRESERVE_NONE
53550static bool Interp_StoreActivatePopUint16(InterpState &S, CodePtr &PC) {
53551 if (!StoreActivatePop<PT_Uint16>(S, PC))
53552 return false;
53553#if USE_TAILCALLS
53554 MUSTTAIL return InterpNext(S, PC);
53555#else
53556 return true;
53557#endif
53558}
53559PRESERVE_NONE
53560static bool Interp_StoreActivatePopSint32(InterpState &S, CodePtr &PC) {
53561 if (!StoreActivatePop<PT_Sint32>(S, PC))
53562 return false;
53563#if USE_TAILCALLS
53564 MUSTTAIL return InterpNext(S, PC);
53565#else
53566 return true;
53567#endif
53568}
53569PRESERVE_NONE
53570static bool Interp_StoreActivatePopUint32(InterpState &S, CodePtr &PC) {
53571 if (!StoreActivatePop<PT_Uint32>(S, PC))
53572 return false;
53573#if USE_TAILCALLS
53574 MUSTTAIL return InterpNext(S, PC);
53575#else
53576 return true;
53577#endif
53578}
53579PRESERVE_NONE
53580static bool Interp_StoreActivatePopSint64(InterpState &S, CodePtr &PC) {
53581 if (!StoreActivatePop<PT_Sint64>(S, PC))
53582 return false;
53583#if USE_TAILCALLS
53584 MUSTTAIL return InterpNext(S, PC);
53585#else
53586 return true;
53587#endif
53588}
53589PRESERVE_NONE
53590static bool Interp_StoreActivatePopUint64(InterpState &S, CodePtr &PC) {
53591 if (!StoreActivatePop<PT_Uint64>(S, PC))
53592 return false;
53593#if USE_TAILCALLS
53594 MUSTTAIL return InterpNext(S, PC);
53595#else
53596 return true;
53597#endif
53598}
53599PRESERVE_NONE
53600static bool Interp_StoreActivatePopIntAP(InterpState &S, CodePtr &PC) {
53601 if (!StoreActivatePop<PT_IntAP>(S, PC))
53602 return false;
53603#if USE_TAILCALLS
53604 MUSTTAIL return InterpNext(S, PC);
53605#else
53606 return true;
53607#endif
53608}
53609PRESERVE_NONE
53610static bool Interp_StoreActivatePopIntAPS(InterpState &S, CodePtr &PC) {
53611 if (!StoreActivatePop<PT_IntAPS>(S, PC))
53612 return false;
53613#if USE_TAILCALLS
53614 MUSTTAIL return InterpNext(S, PC);
53615#else
53616 return true;
53617#endif
53618}
53619PRESERVE_NONE
53620static bool Interp_StoreActivatePopBool(InterpState &S, CodePtr &PC) {
53621 if (!StoreActivatePop<PT_Bool>(S, PC))
53622 return false;
53623#if USE_TAILCALLS
53624 MUSTTAIL return InterpNext(S, PC);
53625#else
53626 return true;
53627#endif
53628}
53629PRESERVE_NONE
53630static bool Interp_StoreActivatePopFixedPoint(InterpState &S, CodePtr &PC) {
53631 if (!StoreActivatePop<PT_FixedPoint>(S, PC))
53632 return false;
53633#if USE_TAILCALLS
53634 MUSTTAIL return InterpNext(S, PC);
53635#else
53636 return true;
53637#endif
53638}
53639PRESERVE_NONE
53640static bool Interp_StoreActivatePopPtr(InterpState &S, CodePtr &PC) {
53641 if (!StoreActivatePop<PT_Ptr>(S, PC))
53642 return false;
53643#if USE_TAILCALLS
53644 MUSTTAIL return InterpNext(S, PC);
53645#else
53646 return true;
53647#endif
53648}
53649PRESERVE_NONE
53650static bool Interp_StoreActivatePopMemberPtr(InterpState &S, CodePtr &PC) {
53651 if (!StoreActivatePop<PT_MemberPtr>(S, PC))
53652 return false;
53653#if USE_TAILCALLS
53654 MUSTTAIL return InterpNext(S, PC);
53655#else
53656 return true;
53657#endif
53658}
53659PRESERVE_NONE
53660static bool Interp_StoreActivatePopFloat(InterpState &S, CodePtr &PC) {
53661 if (!StoreActivatePop<PT_Float>(S, PC))
53662 return false;
53663#if USE_TAILCALLS
53664 MUSTTAIL return InterpNext(S, PC);
53665#else
53666 return true;
53667#endif
53668}
53669#endif
53670#ifdef GET_DISASM
53671case OP_StoreActivatePopSint8:
53672 Text.Op = PrintName("StoreActivatePopSint8");
53673 break;
53674case OP_StoreActivatePopUint8:
53675 Text.Op = PrintName("StoreActivatePopUint8");
53676 break;
53677case OP_StoreActivatePopSint16:
53678 Text.Op = PrintName("StoreActivatePopSint16");
53679 break;
53680case OP_StoreActivatePopUint16:
53681 Text.Op = PrintName("StoreActivatePopUint16");
53682 break;
53683case OP_StoreActivatePopSint32:
53684 Text.Op = PrintName("StoreActivatePopSint32");
53685 break;
53686case OP_StoreActivatePopUint32:
53687 Text.Op = PrintName("StoreActivatePopUint32");
53688 break;
53689case OP_StoreActivatePopSint64:
53690 Text.Op = PrintName("StoreActivatePopSint64");
53691 break;
53692case OP_StoreActivatePopUint64:
53693 Text.Op = PrintName("StoreActivatePopUint64");
53694 break;
53695case OP_StoreActivatePopIntAP:
53696 Text.Op = PrintName("StoreActivatePopIntAP");
53697 break;
53698case OP_StoreActivatePopIntAPS:
53699 Text.Op = PrintName("StoreActivatePopIntAPS");
53700 break;
53701case OP_StoreActivatePopBool:
53702 Text.Op = PrintName("StoreActivatePopBool");
53703 break;
53704case OP_StoreActivatePopFixedPoint:
53705 Text.Op = PrintName("StoreActivatePopFixedPoint");
53706 break;
53707case OP_StoreActivatePopPtr:
53708 Text.Op = PrintName("StoreActivatePopPtr");
53709 break;
53710case OP_StoreActivatePopMemberPtr:
53711 Text.Op = PrintName("StoreActivatePopMemberPtr");
53712 break;
53713case OP_StoreActivatePopFloat:
53714 Text.Op = PrintName("StoreActivatePopFloat");
53715 break;
53716#endif
53717#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53718bool emitStoreActivatePopSint8(SourceInfo);
53719bool emitStoreActivatePopUint8(SourceInfo);
53720bool emitStoreActivatePopSint16(SourceInfo);
53721bool emitStoreActivatePopUint16(SourceInfo);
53722bool emitStoreActivatePopSint32(SourceInfo);
53723bool emitStoreActivatePopUint32(SourceInfo);
53724bool emitStoreActivatePopSint64(SourceInfo);
53725bool emitStoreActivatePopUint64(SourceInfo);
53726bool emitStoreActivatePopIntAP(SourceInfo);
53727bool emitStoreActivatePopIntAPS(SourceInfo);
53728bool emitStoreActivatePopBool(SourceInfo);
53729bool emitStoreActivatePopFixedPoint(SourceInfo);
53730bool emitStoreActivatePopPtr(SourceInfo);
53731bool emitStoreActivatePopMemberPtr(SourceInfo);
53732bool emitStoreActivatePopFloat(SourceInfo);
53733#endif
53734#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53735[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
53736#endif
53737#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53738bool
53739#if defined(GET_EVAL_IMPL)
53740EvalEmitter
53741#else
53742ByteCodeEmitter
53743#endif
53744::emitStoreActivatePop(PrimType T0, SourceInfo I) {
53745 switch (T0) {
53746 case PT_Sint8:
53747 return emitStoreActivatePopSint8(I);
53748 case PT_Uint8:
53749 return emitStoreActivatePopUint8(I);
53750 case PT_Sint16:
53751 return emitStoreActivatePopSint16(I);
53752 case PT_Uint16:
53753 return emitStoreActivatePopUint16(I);
53754 case PT_Sint32:
53755 return emitStoreActivatePopSint32(I);
53756 case PT_Uint32:
53757 return emitStoreActivatePopUint32(I);
53758 case PT_Sint64:
53759 return emitStoreActivatePopSint64(I);
53760 case PT_Uint64:
53761 return emitStoreActivatePopUint64(I);
53762 case PT_IntAP:
53763 return emitStoreActivatePopIntAP(I);
53764 case PT_IntAPS:
53765 return emitStoreActivatePopIntAPS(I);
53766 case PT_Bool:
53767 return emitStoreActivatePopBool(I);
53768 case PT_FixedPoint:
53769 return emitStoreActivatePopFixedPoint(I);
53770 case PT_Ptr:
53771 return emitStoreActivatePopPtr(I);
53772 case PT_MemberPtr:
53773 return emitStoreActivatePopMemberPtr(I);
53774 case PT_Float:
53775 return emitStoreActivatePopFloat(I);
53776 }
53777 llvm_unreachable("invalid enum value");
53778}
53779#endif
53780#ifdef GET_LINK_IMPL
53781bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
53782 return emitOp<>(OP_StoreActivatePopSint8, L);
53783}
53784bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
53785 return emitOp<>(OP_StoreActivatePopUint8, L);
53786}
53787bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
53788 return emitOp<>(OP_StoreActivatePopSint16, L);
53789}
53790bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
53791 return emitOp<>(OP_StoreActivatePopUint16, L);
53792}
53793bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
53794 return emitOp<>(OP_StoreActivatePopSint32, L);
53795}
53796bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
53797 return emitOp<>(OP_StoreActivatePopUint32, L);
53798}
53799bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
53800 return emitOp<>(OP_StoreActivatePopSint64, L);
53801}
53802bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
53803 return emitOp<>(OP_StoreActivatePopUint64, L);
53804}
53805bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
53806 return emitOp<>(OP_StoreActivatePopIntAP, L);
53807}
53808bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
53809 return emitOp<>(OP_StoreActivatePopIntAPS, L);
53810}
53811bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
53812 return emitOp<>(OP_StoreActivatePopBool, L);
53813}
53814bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
53815 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
53816}
53817bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
53818 return emitOp<>(OP_StoreActivatePopPtr, L);
53819}
53820bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
53821 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
53822}
53823bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
53824 return emitOp<>(OP_StoreActivatePopFloat, L);
53825}
53826#endif
53827#ifdef GET_EVAL_IMPL
53828bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
53829 if (!isActive()) return true;
53830 CurrentSource = L;
53831 return StoreActivatePop<PT_Sint8>(S, OpPC);
53832}
53833bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
53834 if (!isActive()) return true;
53835 CurrentSource = L;
53836 return StoreActivatePop<PT_Uint8>(S, OpPC);
53837}
53838bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
53839 if (!isActive()) return true;
53840 CurrentSource = L;
53841 return StoreActivatePop<PT_Sint16>(S, OpPC);
53842}
53843bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
53844 if (!isActive()) return true;
53845 CurrentSource = L;
53846 return StoreActivatePop<PT_Uint16>(S, OpPC);
53847}
53848bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
53849 if (!isActive()) return true;
53850 CurrentSource = L;
53851 return StoreActivatePop<PT_Sint32>(S, OpPC);
53852}
53853bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
53854 if (!isActive()) return true;
53855 CurrentSource = L;
53856 return StoreActivatePop<PT_Uint32>(S, OpPC);
53857}
53858bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
53859 if (!isActive()) return true;
53860 CurrentSource = L;
53861 return StoreActivatePop<PT_Sint64>(S, OpPC);
53862}
53863bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
53864 if (!isActive()) return true;
53865 CurrentSource = L;
53866 return StoreActivatePop<PT_Uint64>(S, OpPC);
53867}
53868bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
53869 if (!isActive()) return true;
53870 CurrentSource = L;
53871 return StoreActivatePop<PT_IntAP>(S, OpPC);
53872}
53873bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
53874 if (!isActive()) return true;
53875 CurrentSource = L;
53876 return StoreActivatePop<PT_IntAPS>(S, OpPC);
53877}
53878bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
53879 if (!isActive()) return true;
53880 CurrentSource = L;
53881 return StoreActivatePop<PT_Bool>(S, OpPC);
53882}
53883bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
53884 if (!isActive()) return true;
53885 CurrentSource = L;
53886 return StoreActivatePop<PT_FixedPoint>(S, OpPC);
53887}
53888bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
53889 if (!isActive()) return true;
53890 CurrentSource = L;
53891 return StoreActivatePop<PT_Ptr>(S, OpPC);
53892}
53893bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
53894 if (!isActive()) return true;
53895 CurrentSource = L;
53896 return StoreActivatePop<PT_MemberPtr>(S, OpPC);
53897}
53898bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
53899 if (!isActive()) return true;
53900 CurrentSource = L;
53901 return StoreActivatePop<PT_Float>(S, OpPC);
53902}
53903#endif
53904#ifdef GET_OPCODE_NAMES
53905OP_StoreBitFieldSint8,
53906OP_StoreBitFieldUint8,
53907OP_StoreBitFieldSint16,
53908OP_StoreBitFieldUint16,
53909OP_StoreBitFieldSint32,
53910OP_StoreBitFieldUint32,
53911OP_StoreBitFieldSint64,
53912OP_StoreBitFieldUint64,
53913OP_StoreBitFieldIntAP,
53914OP_StoreBitFieldIntAPS,
53915OP_StoreBitFieldBool,
53916OP_StoreBitFieldFixedPoint,
53917#endif
53918#ifdef GET_INTERPFN_LIST
53919&Interp_StoreBitFieldSint8,
53920&Interp_StoreBitFieldUint8,
53921&Interp_StoreBitFieldSint16,
53922&Interp_StoreBitFieldUint16,
53923&Interp_StoreBitFieldSint32,
53924&Interp_StoreBitFieldUint32,
53925&Interp_StoreBitFieldSint64,
53926&Interp_StoreBitFieldUint64,
53927&Interp_StoreBitFieldIntAP,
53928&Interp_StoreBitFieldIntAPS,
53929&Interp_StoreBitFieldBool,
53930&Interp_StoreBitFieldFixedPoint,
53931#endif
53932#ifdef GET_INTERPFN_DISPATCHERS
53933PRESERVE_NONE
53934static bool Interp_StoreBitFieldSint8(InterpState &S, CodePtr &PC) {
53935 if (!StoreBitField<PT_Sint8>(S, PC))
53936 return false;
53937#if USE_TAILCALLS
53938 MUSTTAIL return InterpNext(S, PC);
53939#else
53940 return true;
53941#endif
53942}
53943PRESERVE_NONE
53944static bool Interp_StoreBitFieldUint8(InterpState &S, CodePtr &PC) {
53945 if (!StoreBitField<PT_Uint8>(S, PC))
53946 return false;
53947#if USE_TAILCALLS
53948 MUSTTAIL return InterpNext(S, PC);
53949#else
53950 return true;
53951#endif
53952}
53953PRESERVE_NONE
53954static bool Interp_StoreBitFieldSint16(InterpState &S, CodePtr &PC) {
53955 if (!StoreBitField<PT_Sint16>(S, PC))
53956 return false;
53957#if USE_TAILCALLS
53958 MUSTTAIL return InterpNext(S, PC);
53959#else
53960 return true;
53961#endif
53962}
53963PRESERVE_NONE
53964static bool Interp_StoreBitFieldUint16(InterpState &S, CodePtr &PC) {
53965 if (!StoreBitField<PT_Uint16>(S, PC))
53966 return false;
53967#if USE_TAILCALLS
53968 MUSTTAIL return InterpNext(S, PC);
53969#else
53970 return true;
53971#endif
53972}
53973PRESERVE_NONE
53974static bool Interp_StoreBitFieldSint32(InterpState &S, CodePtr &PC) {
53975 if (!StoreBitField<PT_Sint32>(S, PC))
53976 return false;
53977#if USE_TAILCALLS
53978 MUSTTAIL return InterpNext(S, PC);
53979#else
53980 return true;
53981#endif
53982}
53983PRESERVE_NONE
53984static bool Interp_StoreBitFieldUint32(InterpState &S, CodePtr &PC) {
53985 if (!StoreBitField<PT_Uint32>(S, PC))
53986 return false;
53987#if USE_TAILCALLS
53988 MUSTTAIL return InterpNext(S, PC);
53989#else
53990 return true;
53991#endif
53992}
53993PRESERVE_NONE
53994static bool Interp_StoreBitFieldSint64(InterpState &S, CodePtr &PC) {
53995 if (!StoreBitField<PT_Sint64>(S, PC))
53996 return false;
53997#if USE_TAILCALLS
53998 MUSTTAIL return InterpNext(S, PC);
53999#else
54000 return true;
54001#endif
54002}
54003PRESERVE_NONE
54004static bool Interp_StoreBitFieldUint64(InterpState &S, CodePtr &PC) {
54005 if (!StoreBitField<PT_Uint64>(S, PC))
54006 return false;
54007#if USE_TAILCALLS
54008 MUSTTAIL return InterpNext(S, PC);
54009#else
54010 return true;
54011#endif
54012}
54013PRESERVE_NONE
54014static bool Interp_StoreBitFieldIntAP(InterpState &S, CodePtr &PC) {
54015 if (!StoreBitField<PT_IntAP>(S, PC))
54016 return false;
54017#if USE_TAILCALLS
54018 MUSTTAIL return InterpNext(S, PC);
54019#else
54020 return true;
54021#endif
54022}
54023PRESERVE_NONE
54024static bool Interp_StoreBitFieldIntAPS(InterpState &S, CodePtr &PC) {
54025 if (!StoreBitField<PT_IntAPS>(S, PC))
54026 return false;
54027#if USE_TAILCALLS
54028 MUSTTAIL return InterpNext(S, PC);
54029#else
54030 return true;
54031#endif
54032}
54033PRESERVE_NONE
54034static bool Interp_StoreBitFieldBool(InterpState &S, CodePtr &PC) {
54035 if (!StoreBitField<PT_Bool>(S, PC))
54036 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_StoreBitFieldFixedPoint(InterpState &S, CodePtr &PC) {
54045 if (!StoreBitField<PT_FixedPoint>(S, PC))
54046 return false;
54047#if USE_TAILCALLS
54048 MUSTTAIL return InterpNext(S, PC);
54049#else
54050 return true;
54051#endif
54052}
54053#endif
54054#ifdef GET_DISASM
54055case OP_StoreBitFieldSint8:
54056 Text.Op = PrintName("StoreBitFieldSint8");
54057 break;
54058case OP_StoreBitFieldUint8:
54059 Text.Op = PrintName("StoreBitFieldUint8");
54060 break;
54061case OP_StoreBitFieldSint16:
54062 Text.Op = PrintName("StoreBitFieldSint16");
54063 break;
54064case OP_StoreBitFieldUint16:
54065 Text.Op = PrintName("StoreBitFieldUint16");
54066 break;
54067case OP_StoreBitFieldSint32:
54068 Text.Op = PrintName("StoreBitFieldSint32");
54069 break;
54070case OP_StoreBitFieldUint32:
54071 Text.Op = PrintName("StoreBitFieldUint32");
54072 break;
54073case OP_StoreBitFieldSint64:
54074 Text.Op = PrintName("StoreBitFieldSint64");
54075 break;
54076case OP_StoreBitFieldUint64:
54077 Text.Op = PrintName("StoreBitFieldUint64");
54078 break;
54079case OP_StoreBitFieldIntAP:
54080 Text.Op = PrintName("StoreBitFieldIntAP");
54081 break;
54082case OP_StoreBitFieldIntAPS:
54083 Text.Op = PrintName("StoreBitFieldIntAPS");
54084 break;
54085case OP_StoreBitFieldBool:
54086 Text.Op = PrintName("StoreBitFieldBool");
54087 break;
54088case OP_StoreBitFieldFixedPoint:
54089 Text.Op = PrintName("StoreBitFieldFixedPoint");
54090 break;
54091#endif
54092#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54093bool emitStoreBitFieldSint8(SourceInfo);
54094bool emitStoreBitFieldUint8(SourceInfo);
54095bool emitStoreBitFieldSint16(SourceInfo);
54096bool emitStoreBitFieldUint16(SourceInfo);
54097bool emitStoreBitFieldSint32(SourceInfo);
54098bool emitStoreBitFieldUint32(SourceInfo);
54099bool emitStoreBitFieldSint64(SourceInfo);
54100bool emitStoreBitFieldUint64(SourceInfo);
54101bool emitStoreBitFieldIntAP(SourceInfo);
54102bool emitStoreBitFieldIntAPS(SourceInfo);
54103bool emitStoreBitFieldBool(SourceInfo);
54104bool emitStoreBitFieldFixedPoint(SourceInfo);
54105#endif
54106#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54107[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
54108#endif
54109#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54110bool
54111#if defined(GET_EVAL_IMPL)
54112EvalEmitter
54113#else
54114ByteCodeEmitter
54115#endif
54116::emitStoreBitField(PrimType T0, SourceInfo I) {
54117 switch (T0) {
54118 case PT_Sint8:
54119 return emitStoreBitFieldSint8(I);
54120 case PT_Uint8:
54121 return emitStoreBitFieldUint8(I);
54122 case PT_Sint16:
54123 return emitStoreBitFieldSint16(I);
54124 case PT_Uint16:
54125 return emitStoreBitFieldUint16(I);
54126 case PT_Sint32:
54127 return emitStoreBitFieldSint32(I);
54128 case PT_Uint32:
54129 return emitStoreBitFieldUint32(I);
54130 case PT_Sint64:
54131 return emitStoreBitFieldSint64(I);
54132 case PT_Uint64:
54133 return emitStoreBitFieldUint64(I);
54134 case PT_IntAP:
54135 return emitStoreBitFieldIntAP(I);
54136 case PT_IntAPS:
54137 return emitStoreBitFieldIntAPS(I);
54138 case PT_Bool:
54139 return emitStoreBitFieldBool(I);
54140 case PT_FixedPoint:
54141 return emitStoreBitFieldFixedPoint(I);
54142 default: llvm_unreachable("invalid type: emitStoreBitField");
54143 }
54144 llvm_unreachable("invalid enum value");
54145}
54146#endif
54147#ifdef GET_LINK_IMPL
54148bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
54149 return emitOp<>(OP_StoreBitFieldSint8, L);
54150}
54151bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
54152 return emitOp<>(OP_StoreBitFieldUint8, L);
54153}
54154bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
54155 return emitOp<>(OP_StoreBitFieldSint16, L);
54156}
54157bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
54158 return emitOp<>(OP_StoreBitFieldUint16, L);
54159}
54160bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
54161 return emitOp<>(OP_StoreBitFieldSint32, L);
54162}
54163bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
54164 return emitOp<>(OP_StoreBitFieldUint32, L);
54165}
54166bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
54167 return emitOp<>(OP_StoreBitFieldSint64, L);
54168}
54169bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
54170 return emitOp<>(OP_StoreBitFieldUint64, L);
54171}
54172bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
54173 return emitOp<>(OP_StoreBitFieldIntAP, L);
54174}
54175bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
54176 return emitOp<>(OP_StoreBitFieldIntAPS, L);
54177}
54178bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
54179 return emitOp<>(OP_StoreBitFieldBool, L);
54180}
54181bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
54182 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
54183}
54184#endif
54185#ifdef GET_EVAL_IMPL
54186bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
54187 if (!isActive()) return true;
54188 CurrentSource = L;
54189 return StoreBitField<PT_Sint8>(S, OpPC);
54190}
54191bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
54192 if (!isActive()) return true;
54193 CurrentSource = L;
54194 return StoreBitField<PT_Uint8>(S, OpPC);
54195}
54196bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
54197 if (!isActive()) return true;
54198 CurrentSource = L;
54199 return StoreBitField<PT_Sint16>(S, OpPC);
54200}
54201bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
54202 if (!isActive()) return true;
54203 CurrentSource = L;
54204 return StoreBitField<PT_Uint16>(S, OpPC);
54205}
54206bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
54207 if (!isActive()) return true;
54208 CurrentSource = L;
54209 return StoreBitField<PT_Sint32>(S, OpPC);
54210}
54211bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
54212 if (!isActive()) return true;
54213 CurrentSource = L;
54214 return StoreBitField<PT_Uint32>(S, OpPC);
54215}
54216bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
54217 if (!isActive()) return true;
54218 CurrentSource = L;
54219 return StoreBitField<PT_Sint64>(S, OpPC);
54220}
54221bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
54222 if (!isActive()) return true;
54223 CurrentSource = L;
54224 return StoreBitField<PT_Uint64>(S, OpPC);
54225}
54226bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
54227 if (!isActive()) return true;
54228 CurrentSource = L;
54229 return StoreBitField<PT_IntAP>(S, OpPC);
54230}
54231bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
54232 if (!isActive()) return true;
54233 CurrentSource = L;
54234 return StoreBitField<PT_IntAPS>(S, OpPC);
54235}
54236bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
54237 if (!isActive()) return true;
54238 CurrentSource = L;
54239 return StoreBitField<PT_Bool>(S, OpPC);
54240}
54241bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
54242 if (!isActive()) return true;
54243 CurrentSource = L;
54244 return StoreBitField<PT_FixedPoint>(S, OpPC);
54245}
54246#endif
54247#ifdef GET_OPCODE_NAMES
54248OP_StoreBitFieldActivateSint8,
54249OP_StoreBitFieldActivateUint8,
54250OP_StoreBitFieldActivateSint16,
54251OP_StoreBitFieldActivateUint16,
54252OP_StoreBitFieldActivateSint32,
54253OP_StoreBitFieldActivateUint32,
54254OP_StoreBitFieldActivateSint64,
54255OP_StoreBitFieldActivateUint64,
54256OP_StoreBitFieldActivateIntAP,
54257OP_StoreBitFieldActivateIntAPS,
54258OP_StoreBitFieldActivateBool,
54259OP_StoreBitFieldActivateFixedPoint,
54260#endif
54261#ifdef GET_INTERPFN_LIST
54262&Interp_StoreBitFieldActivateSint8,
54263&Interp_StoreBitFieldActivateUint8,
54264&Interp_StoreBitFieldActivateSint16,
54265&Interp_StoreBitFieldActivateUint16,
54266&Interp_StoreBitFieldActivateSint32,
54267&Interp_StoreBitFieldActivateUint32,
54268&Interp_StoreBitFieldActivateSint64,
54269&Interp_StoreBitFieldActivateUint64,
54270&Interp_StoreBitFieldActivateIntAP,
54271&Interp_StoreBitFieldActivateIntAPS,
54272&Interp_StoreBitFieldActivateBool,
54273&Interp_StoreBitFieldActivateFixedPoint,
54274#endif
54275#ifdef GET_INTERPFN_DISPATCHERS
54276PRESERVE_NONE
54277static bool Interp_StoreBitFieldActivateSint8(InterpState &S, CodePtr &PC) {
54278 if (!StoreBitFieldActivate<PT_Sint8>(S, PC))
54279 return false;
54280#if USE_TAILCALLS
54281 MUSTTAIL return InterpNext(S, PC);
54282#else
54283 return true;
54284#endif
54285}
54286PRESERVE_NONE
54287static bool Interp_StoreBitFieldActivateUint8(InterpState &S, CodePtr &PC) {
54288 if (!StoreBitFieldActivate<PT_Uint8>(S, PC))
54289 return false;
54290#if USE_TAILCALLS
54291 MUSTTAIL return InterpNext(S, PC);
54292#else
54293 return true;
54294#endif
54295}
54296PRESERVE_NONE
54297static bool Interp_StoreBitFieldActivateSint16(InterpState &S, CodePtr &PC) {
54298 if (!StoreBitFieldActivate<PT_Sint16>(S, PC))
54299 return false;
54300#if USE_TAILCALLS
54301 MUSTTAIL return InterpNext(S, PC);
54302#else
54303 return true;
54304#endif
54305}
54306PRESERVE_NONE
54307static bool Interp_StoreBitFieldActivateUint16(InterpState &S, CodePtr &PC) {
54308 if (!StoreBitFieldActivate<PT_Uint16>(S, PC))
54309 return false;
54310#if USE_TAILCALLS
54311 MUSTTAIL return InterpNext(S, PC);
54312#else
54313 return true;
54314#endif
54315}
54316PRESERVE_NONE
54317static bool Interp_StoreBitFieldActivateSint32(InterpState &S, CodePtr &PC) {
54318 if (!StoreBitFieldActivate<PT_Sint32>(S, PC))
54319 return false;
54320#if USE_TAILCALLS
54321 MUSTTAIL return InterpNext(S, PC);
54322#else
54323 return true;
54324#endif
54325}
54326PRESERVE_NONE
54327static bool Interp_StoreBitFieldActivateUint32(InterpState &S, CodePtr &PC) {
54328 if (!StoreBitFieldActivate<PT_Uint32>(S, PC))
54329 return false;
54330#if USE_TAILCALLS
54331 MUSTTAIL return InterpNext(S, PC);
54332#else
54333 return true;
54334#endif
54335}
54336PRESERVE_NONE
54337static bool Interp_StoreBitFieldActivateSint64(InterpState &S, CodePtr &PC) {
54338 if (!StoreBitFieldActivate<PT_Sint64>(S, PC))
54339 return false;
54340#if USE_TAILCALLS
54341 MUSTTAIL return InterpNext(S, PC);
54342#else
54343 return true;
54344#endif
54345}
54346PRESERVE_NONE
54347static bool Interp_StoreBitFieldActivateUint64(InterpState &S, CodePtr &PC) {
54348 if (!StoreBitFieldActivate<PT_Uint64>(S, PC))
54349 return false;
54350#if USE_TAILCALLS
54351 MUSTTAIL return InterpNext(S, PC);
54352#else
54353 return true;
54354#endif
54355}
54356PRESERVE_NONE
54357static bool Interp_StoreBitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
54358 if (!StoreBitFieldActivate<PT_IntAP>(S, PC))
54359 return false;
54360#if USE_TAILCALLS
54361 MUSTTAIL return InterpNext(S, PC);
54362#else
54363 return true;
54364#endif
54365}
54366PRESERVE_NONE
54367static bool Interp_StoreBitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
54368 if (!StoreBitFieldActivate<PT_IntAPS>(S, PC))
54369 return false;
54370#if USE_TAILCALLS
54371 MUSTTAIL return InterpNext(S, PC);
54372#else
54373 return true;
54374#endif
54375}
54376PRESERVE_NONE
54377static bool Interp_StoreBitFieldActivateBool(InterpState &S, CodePtr &PC) {
54378 if (!StoreBitFieldActivate<PT_Bool>(S, PC))
54379 return false;
54380#if USE_TAILCALLS
54381 MUSTTAIL return InterpNext(S, PC);
54382#else
54383 return true;
54384#endif
54385}
54386PRESERVE_NONE
54387static bool Interp_StoreBitFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
54388 if (!StoreBitFieldActivate<PT_FixedPoint>(S, PC))
54389 return false;
54390#if USE_TAILCALLS
54391 MUSTTAIL return InterpNext(S, PC);
54392#else
54393 return true;
54394#endif
54395}
54396#endif
54397#ifdef GET_DISASM
54398case OP_StoreBitFieldActivateSint8:
54399 Text.Op = PrintName("StoreBitFieldActivateSint8");
54400 break;
54401case OP_StoreBitFieldActivateUint8:
54402 Text.Op = PrintName("StoreBitFieldActivateUint8");
54403 break;
54404case OP_StoreBitFieldActivateSint16:
54405 Text.Op = PrintName("StoreBitFieldActivateSint16");
54406 break;
54407case OP_StoreBitFieldActivateUint16:
54408 Text.Op = PrintName("StoreBitFieldActivateUint16");
54409 break;
54410case OP_StoreBitFieldActivateSint32:
54411 Text.Op = PrintName("StoreBitFieldActivateSint32");
54412 break;
54413case OP_StoreBitFieldActivateUint32:
54414 Text.Op = PrintName("StoreBitFieldActivateUint32");
54415 break;
54416case OP_StoreBitFieldActivateSint64:
54417 Text.Op = PrintName("StoreBitFieldActivateSint64");
54418 break;
54419case OP_StoreBitFieldActivateUint64:
54420 Text.Op = PrintName("StoreBitFieldActivateUint64");
54421 break;
54422case OP_StoreBitFieldActivateIntAP:
54423 Text.Op = PrintName("StoreBitFieldActivateIntAP");
54424 break;
54425case OP_StoreBitFieldActivateIntAPS:
54426 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
54427 break;
54428case OP_StoreBitFieldActivateBool:
54429 Text.Op = PrintName("StoreBitFieldActivateBool");
54430 break;
54431case OP_StoreBitFieldActivateFixedPoint:
54432 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
54433 break;
54434#endif
54435#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54436bool emitStoreBitFieldActivateSint8(SourceInfo);
54437bool emitStoreBitFieldActivateUint8(SourceInfo);
54438bool emitStoreBitFieldActivateSint16(SourceInfo);
54439bool emitStoreBitFieldActivateUint16(SourceInfo);
54440bool emitStoreBitFieldActivateSint32(SourceInfo);
54441bool emitStoreBitFieldActivateUint32(SourceInfo);
54442bool emitStoreBitFieldActivateSint64(SourceInfo);
54443bool emitStoreBitFieldActivateUint64(SourceInfo);
54444bool emitStoreBitFieldActivateIntAP(SourceInfo);
54445bool emitStoreBitFieldActivateIntAPS(SourceInfo);
54446bool emitStoreBitFieldActivateBool(SourceInfo);
54447bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
54448#endif
54449#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54450[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
54451#endif
54452#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54453bool
54454#if defined(GET_EVAL_IMPL)
54455EvalEmitter
54456#else
54457ByteCodeEmitter
54458#endif
54459::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
54460 switch (T0) {
54461 case PT_Sint8:
54462 return emitStoreBitFieldActivateSint8(I);
54463 case PT_Uint8:
54464 return emitStoreBitFieldActivateUint8(I);
54465 case PT_Sint16:
54466 return emitStoreBitFieldActivateSint16(I);
54467 case PT_Uint16:
54468 return emitStoreBitFieldActivateUint16(I);
54469 case PT_Sint32:
54470 return emitStoreBitFieldActivateSint32(I);
54471 case PT_Uint32:
54472 return emitStoreBitFieldActivateUint32(I);
54473 case PT_Sint64:
54474 return emitStoreBitFieldActivateSint64(I);
54475 case PT_Uint64:
54476 return emitStoreBitFieldActivateUint64(I);
54477 case PT_IntAP:
54478 return emitStoreBitFieldActivateIntAP(I);
54479 case PT_IntAPS:
54480 return emitStoreBitFieldActivateIntAPS(I);
54481 case PT_Bool:
54482 return emitStoreBitFieldActivateBool(I);
54483 case PT_FixedPoint:
54484 return emitStoreBitFieldActivateFixedPoint(I);
54485 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
54486 }
54487 llvm_unreachable("invalid enum value");
54488}
54489#endif
54490#ifdef GET_LINK_IMPL
54491bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
54492 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
54493}
54494bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
54495 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
54496}
54497bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
54498 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
54499}
54500bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
54501 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
54502}
54503bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
54504 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
54505}
54506bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
54507 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
54508}
54509bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
54510 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
54511}
54512bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
54513 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
54514}
54515bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
54516 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
54517}
54518bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
54519 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
54520}
54521bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
54522 return emitOp<>(OP_StoreBitFieldActivateBool, L);
54523}
54524bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
54525 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
54526}
54527#endif
54528#ifdef GET_EVAL_IMPL
54529bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
54530 if (!isActive()) return true;
54531 CurrentSource = L;
54532 return StoreBitFieldActivate<PT_Sint8>(S, OpPC);
54533}
54534bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
54535 if (!isActive()) return true;
54536 CurrentSource = L;
54537 return StoreBitFieldActivate<PT_Uint8>(S, OpPC);
54538}
54539bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
54540 if (!isActive()) return true;
54541 CurrentSource = L;
54542 return StoreBitFieldActivate<PT_Sint16>(S, OpPC);
54543}
54544bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
54545 if (!isActive()) return true;
54546 CurrentSource = L;
54547 return StoreBitFieldActivate<PT_Uint16>(S, OpPC);
54548}
54549bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
54550 if (!isActive()) return true;
54551 CurrentSource = L;
54552 return StoreBitFieldActivate<PT_Sint32>(S, OpPC);
54553}
54554bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
54555 if (!isActive()) return true;
54556 CurrentSource = L;
54557 return StoreBitFieldActivate<PT_Uint32>(S, OpPC);
54558}
54559bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
54560 if (!isActive()) return true;
54561 CurrentSource = L;
54562 return StoreBitFieldActivate<PT_Sint64>(S, OpPC);
54563}
54564bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
54565 if (!isActive()) return true;
54566 CurrentSource = L;
54567 return StoreBitFieldActivate<PT_Uint64>(S, OpPC);
54568}
54569bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
54570 if (!isActive()) return true;
54571 CurrentSource = L;
54572 return StoreBitFieldActivate<PT_IntAP>(S, OpPC);
54573}
54574bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
54575 if (!isActive()) return true;
54576 CurrentSource = L;
54577 return StoreBitFieldActivate<PT_IntAPS>(S, OpPC);
54578}
54579bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
54580 if (!isActive()) return true;
54581 CurrentSource = L;
54582 return StoreBitFieldActivate<PT_Bool>(S, OpPC);
54583}
54584bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
54585 if (!isActive()) return true;
54586 CurrentSource = L;
54587 return StoreBitFieldActivate<PT_FixedPoint>(S, OpPC);
54588}
54589#endif
54590#ifdef GET_OPCODE_NAMES
54591OP_StoreBitFieldActivatePopSint8,
54592OP_StoreBitFieldActivatePopUint8,
54593OP_StoreBitFieldActivatePopSint16,
54594OP_StoreBitFieldActivatePopUint16,
54595OP_StoreBitFieldActivatePopSint32,
54596OP_StoreBitFieldActivatePopUint32,
54597OP_StoreBitFieldActivatePopSint64,
54598OP_StoreBitFieldActivatePopUint64,
54599OP_StoreBitFieldActivatePopIntAP,
54600OP_StoreBitFieldActivatePopIntAPS,
54601OP_StoreBitFieldActivatePopBool,
54602OP_StoreBitFieldActivatePopFixedPoint,
54603#endif
54604#ifdef GET_INTERPFN_LIST
54605&Interp_StoreBitFieldActivatePopSint8,
54606&Interp_StoreBitFieldActivatePopUint8,
54607&Interp_StoreBitFieldActivatePopSint16,
54608&Interp_StoreBitFieldActivatePopUint16,
54609&Interp_StoreBitFieldActivatePopSint32,
54610&Interp_StoreBitFieldActivatePopUint32,
54611&Interp_StoreBitFieldActivatePopSint64,
54612&Interp_StoreBitFieldActivatePopUint64,
54613&Interp_StoreBitFieldActivatePopIntAP,
54614&Interp_StoreBitFieldActivatePopIntAPS,
54615&Interp_StoreBitFieldActivatePopBool,
54616&Interp_StoreBitFieldActivatePopFixedPoint,
54617#endif
54618#ifdef GET_INTERPFN_DISPATCHERS
54619PRESERVE_NONE
54620static bool Interp_StoreBitFieldActivatePopSint8(InterpState &S, CodePtr &PC) {
54621 if (!StoreBitFieldActivatePop<PT_Sint8>(S, PC))
54622 return false;
54623#if USE_TAILCALLS
54624 MUSTTAIL return InterpNext(S, PC);
54625#else
54626 return true;
54627#endif
54628}
54629PRESERVE_NONE
54630static bool Interp_StoreBitFieldActivatePopUint8(InterpState &S, CodePtr &PC) {
54631 if (!StoreBitFieldActivatePop<PT_Uint8>(S, PC))
54632 return false;
54633#if USE_TAILCALLS
54634 MUSTTAIL return InterpNext(S, PC);
54635#else
54636 return true;
54637#endif
54638}
54639PRESERVE_NONE
54640static bool Interp_StoreBitFieldActivatePopSint16(InterpState &S, CodePtr &PC) {
54641 if (!StoreBitFieldActivatePop<PT_Sint16>(S, PC))
54642 return false;
54643#if USE_TAILCALLS
54644 MUSTTAIL return InterpNext(S, PC);
54645#else
54646 return true;
54647#endif
54648}
54649PRESERVE_NONE
54650static bool Interp_StoreBitFieldActivatePopUint16(InterpState &S, CodePtr &PC) {
54651 if (!StoreBitFieldActivatePop<PT_Uint16>(S, PC))
54652 return false;
54653#if USE_TAILCALLS
54654 MUSTTAIL return InterpNext(S, PC);
54655#else
54656 return true;
54657#endif
54658}
54659PRESERVE_NONE
54660static bool Interp_StoreBitFieldActivatePopSint32(InterpState &S, CodePtr &PC) {
54661 if (!StoreBitFieldActivatePop<PT_Sint32>(S, PC))
54662 return false;
54663#if USE_TAILCALLS
54664 MUSTTAIL return InterpNext(S, PC);
54665#else
54666 return true;
54667#endif
54668}
54669PRESERVE_NONE
54670static bool Interp_StoreBitFieldActivatePopUint32(InterpState &S, CodePtr &PC) {
54671 if (!StoreBitFieldActivatePop<PT_Uint32>(S, PC))
54672 return false;
54673#if USE_TAILCALLS
54674 MUSTTAIL return InterpNext(S, PC);
54675#else
54676 return true;
54677#endif
54678}
54679PRESERVE_NONE
54680static bool Interp_StoreBitFieldActivatePopSint64(InterpState &S, CodePtr &PC) {
54681 if (!StoreBitFieldActivatePop<PT_Sint64>(S, PC))
54682 return false;
54683#if USE_TAILCALLS
54684 MUSTTAIL return InterpNext(S, PC);
54685#else
54686 return true;
54687#endif
54688}
54689PRESERVE_NONE
54690static bool Interp_StoreBitFieldActivatePopUint64(InterpState &S, CodePtr &PC) {
54691 if (!StoreBitFieldActivatePop<PT_Uint64>(S, PC))
54692 return false;
54693#if USE_TAILCALLS
54694 MUSTTAIL return InterpNext(S, PC);
54695#else
54696 return true;
54697#endif
54698}
54699PRESERVE_NONE
54700static bool Interp_StoreBitFieldActivatePopIntAP(InterpState &S, CodePtr &PC) {
54701 if (!StoreBitFieldActivatePop<PT_IntAP>(S, PC))
54702 return false;
54703#if USE_TAILCALLS
54704 MUSTTAIL return InterpNext(S, PC);
54705#else
54706 return true;
54707#endif
54708}
54709PRESERVE_NONE
54710static bool Interp_StoreBitFieldActivatePopIntAPS(InterpState &S, CodePtr &PC) {
54711 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, PC))
54712 return false;
54713#if USE_TAILCALLS
54714 MUSTTAIL return InterpNext(S, PC);
54715#else
54716 return true;
54717#endif
54718}
54719PRESERVE_NONE
54720static bool Interp_StoreBitFieldActivatePopBool(InterpState &S, CodePtr &PC) {
54721 if (!StoreBitFieldActivatePop<PT_Bool>(S, PC))
54722 return false;
54723#if USE_TAILCALLS
54724 MUSTTAIL return InterpNext(S, PC);
54725#else
54726 return true;
54727#endif
54728}
54729PRESERVE_NONE
54730static bool Interp_StoreBitFieldActivatePopFixedPoint(InterpState &S, CodePtr &PC) {
54731 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, PC))
54732 return false;
54733#if USE_TAILCALLS
54734 MUSTTAIL return InterpNext(S, PC);
54735#else
54736 return true;
54737#endif
54738}
54739#endif
54740#ifdef GET_DISASM
54741case OP_StoreBitFieldActivatePopSint8:
54742 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
54743 break;
54744case OP_StoreBitFieldActivatePopUint8:
54745 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
54746 break;
54747case OP_StoreBitFieldActivatePopSint16:
54748 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
54749 break;
54750case OP_StoreBitFieldActivatePopUint16:
54751 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
54752 break;
54753case OP_StoreBitFieldActivatePopSint32:
54754 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
54755 break;
54756case OP_StoreBitFieldActivatePopUint32:
54757 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
54758 break;
54759case OP_StoreBitFieldActivatePopSint64:
54760 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
54761 break;
54762case OP_StoreBitFieldActivatePopUint64:
54763 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
54764 break;
54765case OP_StoreBitFieldActivatePopIntAP:
54766 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
54767 break;
54768case OP_StoreBitFieldActivatePopIntAPS:
54769 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
54770 break;
54771case OP_StoreBitFieldActivatePopBool:
54772 Text.Op = PrintName("StoreBitFieldActivatePopBool");
54773 break;
54774case OP_StoreBitFieldActivatePopFixedPoint:
54775 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
54776 break;
54777#endif
54778#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54779bool emitStoreBitFieldActivatePopSint8(SourceInfo);
54780bool emitStoreBitFieldActivatePopUint8(SourceInfo);
54781bool emitStoreBitFieldActivatePopSint16(SourceInfo);
54782bool emitStoreBitFieldActivatePopUint16(SourceInfo);
54783bool emitStoreBitFieldActivatePopSint32(SourceInfo);
54784bool emitStoreBitFieldActivatePopUint32(SourceInfo);
54785bool emitStoreBitFieldActivatePopSint64(SourceInfo);
54786bool emitStoreBitFieldActivatePopUint64(SourceInfo);
54787bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
54788bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
54789bool emitStoreBitFieldActivatePopBool(SourceInfo);
54790bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
54791#endif
54792#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54793[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
54794#endif
54795#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54796bool
54797#if defined(GET_EVAL_IMPL)
54798EvalEmitter
54799#else
54800ByteCodeEmitter
54801#endif
54802::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
54803 switch (T0) {
54804 case PT_Sint8:
54805 return emitStoreBitFieldActivatePopSint8(I);
54806 case PT_Uint8:
54807 return emitStoreBitFieldActivatePopUint8(I);
54808 case PT_Sint16:
54809 return emitStoreBitFieldActivatePopSint16(I);
54810 case PT_Uint16:
54811 return emitStoreBitFieldActivatePopUint16(I);
54812 case PT_Sint32:
54813 return emitStoreBitFieldActivatePopSint32(I);
54814 case PT_Uint32:
54815 return emitStoreBitFieldActivatePopUint32(I);
54816 case PT_Sint64:
54817 return emitStoreBitFieldActivatePopSint64(I);
54818 case PT_Uint64:
54819 return emitStoreBitFieldActivatePopUint64(I);
54820 case PT_IntAP:
54821 return emitStoreBitFieldActivatePopIntAP(I);
54822 case PT_IntAPS:
54823 return emitStoreBitFieldActivatePopIntAPS(I);
54824 case PT_Bool:
54825 return emitStoreBitFieldActivatePopBool(I);
54826 case PT_FixedPoint:
54827 return emitStoreBitFieldActivatePopFixedPoint(I);
54828 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
54829 }
54830 llvm_unreachable("invalid enum value");
54831}
54832#endif
54833#ifdef GET_LINK_IMPL
54834bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
54835 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
54836}
54837bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
54838 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
54839}
54840bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
54841 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
54842}
54843bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
54844 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
54845}
54846bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
54847 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
54848}
54849bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
54850 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
54851}
54852bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
54853 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
54854}
54855bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
54856 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
54857}
54858bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
54859 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
54860}
54861bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
54862 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
54863}
54864bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
54865 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
54866}
54867bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
54868 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
54869}
54870#endif
54871#ifdef GET_EVAL_IMPL
54872bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
54873 if (!isActive()) return true;
54874 CurrentSource = L;
54875 return StoreBitFieldActivatePop<PT_Sint8>(S, OpPC);
54876}
54877bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
54878 if (!isActive()) return true;
54879 CurrentSource = L;
54880 return StoreBitFieldActivatePop<PT_Uint8>(S, OpPC);
54881}
54882bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
54883 if (!isActive()) return true;
54884 CurrentSource = L;
54885 return StoreBitFieldActivatePop<PT_Sint16>(S, OpPC);
54886}
54887bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
54888 if (!isActive()) return true;
54889 CurrentSource = L;
54890 return StoreBitFieldActivatePop<PT_Uint16>(S, OpPC);
54891}
54892bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
54893 if (!isActive()) return true;
54894 CurrentSource = L;
54895 return StoreBitFieldActivatePop<PT_Sint32>(S, OpPC);
54896}
54897bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
54898 if (!isActive()) return true;
54899 CurrentSource = L;
54900 return StoreBitFieldActivatePop<PT_Uint32>(S, OpPC);
54901}
54902bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
54903 if (!isActive()) return true;
54904 CurrentSource = L;
54905 return StoreBitFieldActivatePop<PT_Sint64>(S, OpPC);
54906}
54907bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
54908 if (!isActive()) return true;
54909 CurrentSource = L;
54910 return StoreBitFieldActivatePop<PT_Uint64>(S, OpPC);
54911}
54912bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
54913 if (!isActive()) return true;
54914 CurrentSource = L;
54915 return StoreBitFieldActivatePop<PT_IntAP>(S, OpPC);
54916}
54917bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
54918 if (!isActive()) return true;
54919 CurrentSource = L;
54920 return StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC);
54921}
54922bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
54923 if (!isActive()) return true;
54924 CurrentSource = L;
54925 return StoreBitFieldActivatePop<PT_Bool>(S, OpPC);
54926}
54927bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
54928 if (!isActive()) return true;
54929 CurrentSource = L;
54930 return StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC);
54931}
54932#endif
54933#ifdef GET_OPCODE_NAMES
54934OP_StoreBitFieldPopSint8,
54935OP_StoreBitFieldPopUint8,
54936OP_StoreBitFieldPopSint16,
54937OP_StoreBitFieldPopUint16,
54938OP_StoreBitFieldPopSint32,
54939OP_StoreBitFieldPopUint32,
54940OP_StoreBitFieldPopSint64,
54941OP_StoreBitFieldPopUint64,
54942OP_StoreBitFieldPopIntAP,
54943OP_StoreBitFieldPopIntAPS,
54944OP_StoreBitFieldPopBool,
54945OP_StoreBitFieldPopFixedPoint,
54946#endif
54947#ifdef GET_INTERPFN_LIST
54948&Interp_StoreBitFieldPopSint8,
54949&Interp_StoreBitFieldPopUint8,
54950&Interp_StoreBitFieldPopSint16,
54951&Interp_StoreBitFieldPopUint16,
54952&Interp_StoreBitFieldPopSint32,
54953&Interp_StoreBitFieldPopUint32,
54954&Interp_StoreBitFieldPopSint64,
54955&Interp_StoreBitFieldPopUint64,
54956&Interp_StoreBitFieldPopIntAP,
54957&Interp_StoreBitFieldPopIntAPS,
54958&Interp_StoreBitFieldPopBool,
54959&Interp_StoreBitFieldPopFixedPoint,
54960#endif
54961#ifdef GET_INTERPFN_DISPATCHERS
54962PRESERVE_NONE
54963static bool Interp_StoreBitFieldPopSint8(InterpState &S, CodePtr &PC) {
54964 if (!StoreBitFieldPop<PT_Sint8>(S, PC))
54965 return false;
54966#if USE_TAILCALLS
54967 MUSTTAIL return InterpNext(S, PC);
54968#else
54969 return true;
54970#endif
54971}
54972PRESERVE_NONE
54973static bool Interp_StoreBitFieldPopUint8(InterpState &S, CodePtr &PC) {
54974 if (!StoreBitFieldPop<PT_Uint8>(S, PC))
54975 return false;
54976#if USE_TAILCALLS
54977 MUSTTAIL return InterpNext(S, PC);
54978#else
54979 return true;
54980#endif
54981}
54982PRESERVE_NONE
54983static bool Interp_StoreBitFieldPopSint16(InterpState &S, CodePtr &PC) {
54984 if (!StoreBitFieldPop<PT_Sint16>(S, PC))
54985 return false;
54986#if USE_TAILCALLS
54987 MUSTTAIL return InterpNext(S, PC);
54988#else
54989 return true;
54990#endif
54991}
54992PRESERVE_NONE
54993static bool Interp_StoreBitFieldPopUint16(InterpState &S, CodePtr &PC) {
54994 if (!StoreBitFieldPop<PT_Uint16>(S, PC))
54995 return false;
54996#if USE_TAILCALLS
54997 MUSTTAIL return InterpNext(S, PC);
54998#else
54999 return true;
55000#endif
55001}
55002PRESERVE_NONE
55003static bool Interp_StoreBitFieldPopSint32(InterpState &S, CodePtr &PC) {
55004 if (!StoreBitFieldPop<PT_Sint32>(S, PC))
55005 return false;
55006#if USE_TAILCALLS
55007 MUSTTAIL return InterpNext(S, PC);
55008#else
55009 return true;
55010#endif
55011}
55012PRESERVE_NONE
55013static bool Interp_StoreBitFieldPopUint32(InterpState &S, CodePtr &PC) {
55014 if (!StoreBitFieldPop<PT_Uint32>(S, PC))
55015 return false;
55016#if USE_TAILCALLS
55017 MUSTTAIL return InterpNext(S, PC);
55018#else
55019 return true;
55020#endif
55021}
55022PRESERVE_NONE
55023static bool Interp_StoreBitFieldPopSint64(InterpState &S, CodePtr &PC) {
55024 if (!StoreBitFieldPop<PT_Sint64>(S, PC))
55025 return false;
55026#if USE_TAILCALLS
55027 MUSTTAIL return InterpNext(S, PC);
55028#else
55029 return true;
55030#endif
55031}
55032PRESERVE_NONE
55033static bool Interp_StoreBitFieldPopUint64(InterpState &S, CodePtr &PC) {
55034 if (!StoreBitFieldPop<PT_Uint64>(S, PC))
55035 return false;
55036#if USE_TAILCALLS
55037 MUSTTAIL return InterpNext(S, PC);
55038#else
55039 return true;
55040#endif
55041}
55042PRESERVE_NONE
55043static bool Interp_StoreBitFieldPopIntAP(InterpState &S, CodePtr &PC) {
55044 if (!StoreBitFieldPop<PT_IntAP>(S, PC))
55045 return false;
55046#if USE_TAILCALLS
55047 MUSTTAIL return InterpNext(S, PC);
55048#else
55049 return true;
55050#endif
55051}
55052PRESERVE_NONE
55053static bool Interp_StoreBitFieldPopIntAPS(InterpState &S, CodePtr &PC) {
55054 if (!StoreBitFieldPop<PT_IntAPS>(S, PC))
55055 return false;
55056#if USE_TAILCALLS
55057 MUSTTAIL return InterpNext(S, PC);
55058#else
55059 return true;
55060#endif
55061}
55062PRESERVE_NONE
55063static bool Interp_StoreBitFieldPopBool(InterpState &S, CodePtr &PC) {
55064 if (!StoreBitFieldPop<PT_Bool>(S, PC))
55065 return false;
55066#if USE_TAILCALLS
55067 MUSTTAIL return InterpNext(S, PC);
55068#else
55069 return true;
55070#endif
55071}
55072PRESERVE_NONE
55073static bool Interp_StoreBitFieldPopFixedPoint(InterpState &S, CodePtr &PC) {
55074 if (!StoreBitFieldPop<PT_FixedPoint>(S, PC))
55075 return false;
55076#if USE_TAILCALLS
55077 MUSTTAIL return InterpNext(S, PC);
55078#else
55079 return true;
55080#endif
55081}
55082#endif
55083#ifdef GET_DISASM
55084case OP_StoreBitFieldPopSint8:
55085 Text.Op = PrintName("StoreBitFieldPopSint8");
55086 break;
55087case OP_StoreBitFieldPopUint8:
55088 Text.Op = PrintName("StoreBitFieldPopUint8");
55089 break;
55090case OP_StoreBitFieldPopSint16:
55091 Text.Op = PrintName("StoreBitFieldPopSint16");
55092 break;
55093case OP_StoreBitFieldPopUint16:
55094 Text.Op = PrintName("StoreBitFieldPopUint16");
55095 break;
55096case OP_StoreBitFieldPopSint32:
55097 Text.Op = PrintName("StoreBitFieldPopSint32");
55098 break;
55099case OP_StoreBitFieldPopUint32:
55100 Text.Op = PrintName("StoreBitFieldPopUint32");
55101 break;
55102case OP_StoreBitFieldPopSint64:
55103 Text.Op = PrintName("StoreBitFieldPopSint64");
55104 break;
55105case OP_StoreBitFieldPopUint64:
55106 Text.Op = PrintName("StoreBitFieldPopUint64");
55107 break;
55108case OP_StoreBitFieldPopIntAP:
55109 Text.Op = PrintName("StoreBitFieldPopIntAP");
55110 break;
55111case OP_StoreBitFieldPopIntAPS:
55112 Text.Op = PrintName("StoreBitFieldPopIntAPS");
55113 break;
55114case OP_StoreBitFieldPopBool:
55115 Text.Op = PrintName("StoreBitFieldPopBool");
55116 break;
55117case OP_StoreBitFieldPopFixedPoint:
55118 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
55119 break;
55120#endif
55121#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55122bool emitStoreBitFieldPopSint8(SourceInfo);
55123bool emitStoreBitFieldPopUint8(SourceInfo);
55124bool emitStoreBitFieldPopSint16(SourceInfo);
55125bool emitStoreBitFieldPopUint16(SourceInfo);
55126bool emitStoreBitFieldPopSint32(SourceInfo);
55127bool emitStoreBitFieldPopUint32(SourceInfo);
55128bool emitStoreBitFieldPopSint64(SourceInfo);
55129bool emitStoreBitFieldPopUint64(SourceInfo);
55130bool emitStoreBitFieldPopIntAP(SourceInfo);
55131bool emitStoreBitFieldPopIntAPS(SourceInfo);
55132bool emitStoreBitFieldPopBool(SourceInfo);
55133bool emitStoreBitFieldPopFixedPoint(SourceInfo);
55134#endif
55135#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55136[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
55137#endif
55138#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
55139bool
55140#if defined(GET_EVAL_IMPL)
55141EvalEmitter
55142#else
55143ByteCodeEmitter
55144#endif
55145::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
55146 switch (T0) {
55147 case PT_Sint8:
55148 return emitStoreBitFieldPopSint8(I);
55149 case PT_Uint8:
55150 return emitStoreBitFieldPopUint8(I);
55151 case PT_Sint16:
55152 return emitStoreBitFieldPopSint16(I);
55153 case PT_Uint16:
55154 return emitStoreBitFieldPopUint16(I);
55155 case PT_Sint32:
55156 return emitStoreBitFieldPopSint32(I);
55157 case PT_Uint32:
55158 return emitStoreBitFieldPopUint32(I);
55159 case PT_Sint64:
55160 return emitStoreBitFieldPopSint64(I);
55161 case PT_Uint64:
55162 return emitStoreBitFieldPopUint64(I);
55163 case PT_IntAP:
55164 return emitStoreBitFieldPopIntAP(I);
55165 case PT_IntAPS:
55166 return emitStoreBitFieldPopIntAPS(I);
55167 case PT_Bool:
55168 return emitStoreBitFieldPopBool(I);
55169 case PT_FixedPoint:
55170 return emitStoreBitFieldPopFixedPoint(I);
55171 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
55172 }
55173 llvm_unreachable("invalid enum value");
55174}
55175#endif
55176#ifdef GET_LINK_IMPL
55177bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
55178 return emitOp<>(OP_StoreBitFieldPopSint8, L);
55179}
55180bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
55181 return emitOp<>(OP_StoreBitFieldPopUint8, L);
55182}
55183bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
55184 return emitOp<>(OP_StoreBitFieldPopSint16, L);
55185}
55186bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
55187 return emitOp<>(OP_StoreBitFieldPopUint16, L);
55188}
55189bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
55190 return emitOp<>(OP_StoreBitFieldPopSint32, L);
55191}
55192bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
55193 return emitOp<>(OP_StoreBitFieldPopUint32, L);
55194}
55195bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
55196 return emitOp<>(OP_StoreBitFieldPopSint64, L);
55197}
55198bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
55199 return emitOp<>(OP_StoreBitFieldPopUint64, L);
55200}
55201bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
55202 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
55203}
55204bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
55205 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
55206}
55207bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
55208 return emitOp<>(OP_StoreBitFieldPopBool, L);
55209}
55210bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
55211 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
55212}
55213#endif
55214#ifdef GET_EVAL_IMPL
55215bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
55216 if (!isActive()) return true;
55217 CurrentSource = L;
55218 return StoreBitFieldPop<PT_Sint8>(S, OpPC);
55219}
55220bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
55221 if (!isActive()) return true;
55222 CurrentSource = L;
55223 return StoreBitFieldPop<PT_Uint8>(S, OpPC);
55224}
55225bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
55226 if (!isActive()) return true;
55227 CurrentSource = L;
55228 return StoreBitFieldPop<PT_Sint16>(S, OpPC);
55229}
55230bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
55231 if (!isActive()) return true;
55232 CurrentSource = L;
55233 return StoreBitFieldPop<PT_Uint16>(S, OpPC);
55234}
55235bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
55236 if (!isActive()) return true;
55237 CurrentSource = L;
55238 return StoreBitFieldPop<PT_Sint32>(S, OpPC);
55239}
55240bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
55241 if (!isActive()) return true;
55242 CurrentSource = L;
55243 return StoreBitFieldPop<PT_Uint32>(S, OpPC);
55244}
55245bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
55246 if (!isActive()) return true;
55247 CurrentSource = L;
55248 return StoreBitFieldPop<PT_Sint64>(S, OpPC);
55249}
55250bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
55251 if (!isActive()) return true;
55252 CurrentSource = L;
55253 return StoreBitFieldPop<PT_Uint64>(S, OpPC);
55254}
55255bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
55256 if (!isActive()) return true;
55257 CurrentSource = L;
55258 return StoreBitFieldPop<PT_IntAP>(S, OpPC);
55259}
55260bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
55261 if (!isActive()) return true;
55262 CurrentSource = L;
55263 return StoreBitFieldPop<PT_IntAPS>(S, OpPC);
55264}
55265bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
55266 if (!isActive()) return true;
55267 CurrentSource = L;
55268 return StoreBitFieldPop<PT_Bool>(S, OpPC);
55269}
55270bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
55271 if (!isActive()) return true;
55272 CurrentSource = L;
55273 return StoreBitFieldPop<PT_FixedPoint>(S, OpPC);
55274}
55275#endif
55276#ifdef GET_OPCODE_NAMES
55277OP_StorePopSint8,
55278OP_StorePopUint8,
55279OP_StorePopSint16,
55280OP_StorePopUint16,
55281OP_StorePopSint32,
55282OP_StorePopUint32,
55283OP_StorePopSint64,
55284OP_StorePopUint64,
55285OP_StorePopIntAP,
55286OP_StorePopIntAPS,
55287OP_StorePopBool,
55288OP_StorePopFixedPoint,
55289OP_StorePopPtr,
55290OP_StorePopMemberPtr,
55291OP_StorePopFloat,
55292#endif
55293#ifdef GET_INTERPFN_LIST
55294&Interp_StorePopSint8,
55295&Interp_StorePopUint8,
55296&Interp_StorePopSint16,
55297&Interp_StorePopUint16,
55298&Interp_StorePopSint32,
55299&Interp_StorePopUint32,
55300&Interp_StorePopSint64,
55301&Interp_StorePopUint64,
55302&Interp_StorePopIntAP,
55303&Interp_StorePopIntAPS,
55304&Interp_StorePopBool,
55305&Interp_StorePopFixedPoint,
55306&Interp_StorePopPtr,
55307&Interp_StorePopMemberPtr,
55308&Interp_StorePopFloat,
55309#endif
55310#ifdef GET_INTERPFN_DISPATCHERS
55311PRESERVE_NONE
55312static bool Interp_StorePopSint8(InterpState &S, CodePtr &PC) {
55313 if (!StorePop<PT_Sint8>(S, PC))
55314 return false;
55315#if USE_TAILCALLS
55316 MUSTTAIL return InterpNext(S, PC);
55317#else
55318 return true;
55319#endif
55320}
55321PRESERVE_NONE
55322static bool Interp_StorePopUint8(InterpState &S, CodePtr &PC) {
55323 if (!StorePop<PT_Uint8>(S, PC))
55324 return false;
55325#if USE_TAILCALLS
55326 MUSTTAIL return InterpNext(S, PC);
55327#else
55328 return true;
55329#endif
55330}
55331PRESERVE_NONE
55332static bool Interp_StorePopSint16(InterpState &S, CodePtr &PC) {
55333 if (!StorePop<PT_Sint16>(S, PC))
55334 return false;
55335#if USE_TAILCALLS
55336 MUSTTAIL return InterpNext(S, PC);
55337#else
55338 return true;
55339#endif
55340}
55341PRESERVE_NONE
55342static bool Interp_StorePopUint16(InterpState &S, CodePtr &PC) {
55343 if (!StorePop<PT_Uint16>(S, PC))
55344 return false;
55345#if USE_TAILCALLS
55346 MUSTTAIL return InterpNext(S, PC);
55347#else
55348 return true;
55349#endif
55350}
55351PRESERVE_NONE
55352static bool Interp_StorePopSint32(InterpState &S, CodePtr &PC) {
55353 if (!StorePop<PT_Sint32>(S, PC))
55354 return false;
55355#if USE_TAILCALLS
55356 MUSTTAIL return InterpNext(S, PC);
55357#else
55358 return true;
55359#endif
55360}
55361PRESERVE_NONE
55362static bool Interp_StorePopUint32(InterpState &S, CodePtr &PC) {
55363 if (!StorePop<PT_Uint32>(S, PC))
55364 return false;
55365#if USE_TAILCALLS
55366 MUSTTAIL return InterpNext(S, PC);
55367#else
55368 return true;
55369#endif
55370}
55371PRESERVE_NONE
55372static bool Interp_StorePopSint64(InterpState &S, CodePtr &PC) {
55373 if (!StorePop<PT_Sint64>(S, PC))
55374 return false;
55375#if USE_TAILCALLS
55376 MUSTTAIL return InterpNext(S, PC);
55377#else
55378 return true;
55379#endif
55380}
55381PRESERVE_NONE
55382static bool Interp_StorePopUint64(InterpState &S, CodePtr &PC) {
55383 if (!StorePop<PT_Uint64>(S, PC))
55384 return false;
55385#if USE_TAILCALLS
55386 MUSTTAIL return InterpNext(S, PC);
55387#else
55388 return true;
55389#endif
55390}
55391PRESERVE_NONE
55392static bool Interp_StorePopIntAP(InterpState &S, CodePtr &PC) {
55393 if (!StorePop<PT_IntAP>(S, PC))
55394 return false;
55395#if USE_TAILCALLS
55396 MUSTTAIL return InterpNext(S, PC);
55397#else
55398 return true;
55399#endif
55400}
55401PRESERVE_NONE
55402static bool Interp_StorePopIntAPS(InterpState &S, CodePtr &PC) {
55403 if (!StorePop<PT_IntAPS>(S, PC))
55404 return false;
55405#if USE_TAILCALLS
55406 MUSTTAIL return InterpNext(S, PC);
55407#else
55408 return true;
55409#endif
55410}
55411PRESERVE_NONE
55412static bool Interp_StorePopBool(InterpState &S, CodePtr &PC) {
55413 if (!StorePop<PT_Bool>(S, PC))
55414 return false;
55415#if USE_TAILCALLS
55416 MUSTTAIL return InterpNext(S, PC);
55417#else
55418 return true;
55419#endif
55420}
55421PRESERVE_NONE
55422static bool Interp_StorePopFixedPoint(InterpState &S, CodePtr &PC) {
55423 if (!StorePop<PT_FixedPoint>(S, PC))
55424 return false;
55425#if USE_TAILCALLS
55426 MUSTTAIL return InterpNext(S, PC);
55427#else
55428 return true;
55429#endif
55430}
55431PRESERVE_NONE
55432static bool Interp_StorePopPtr(InterpState &S, CodePtr &PC) {
55433 if (!StorePop<PT_Ptr>(S, PC))
55434 return false;
55435#if USE_TAILCALLS
55436 MUSTTAIL return InterpNext(S, PC);
55437#else
55438 return true;
55439#endif
55440}
55441PRESERVE_NONE
55442static bool Interp_StorePopMemberPtr(InterpState &S, CodePtr &PC) {
55443 if (!StorePop<PT_MemberPtr>(S, PC))
55444 return false;
55445#if USE_TAILCALLS
55446 MUSTTAIL return InterpNext(S, PC);
55447#else
55448 return true;
55449#endif
55450}
55451PRESERVE_NONE
55452static bool Interp_StorePopFloat(InterpState &S, CodePtr &PC) {
55453 if (!StorePop<PT_Float>(S, PC))
55454 return false;
55455#if USE_TAILCALLS
55456 MUSTTAIL return InterpNext(S, PC);
55457#else
55458 return true;
55459#endif
55460}
55461#endif
55462#ifdef GET_DISASM
55463case OP_StorePopSint8:
55464 Text.Op = PrintName("StorePopSint8");
55465 break;
55466case OP_StorePopUint8:
55467 Text.Op = PrintName("StorePopUint8");
55468 break;
55469case OP_StorePopSint16:
55470 Text.Op = PrintName("StorePopSint16");
55471 break;
55472case OP_StorePopUint16:
55473 Text.Op = PrintName("StorePopUint16");
55474 break;
55475case OP_StorePopSint32:
55476 Text.Op = PrintName("StorePopSint32");
55477 break;
55478case OP_StorePopUint32:
55479 Text.Op = PrintName("StorePopUint32");
55480 break;
55481case OP_StorePopSint64:
55482 Text.Op = PrintName("StorePopSint64");
55483 break;
55484case OP_StorePopUint64:
55485 Text.Op = PrintName("StorePopUint64");
55486 break;
55487case OP_StorePopIntAP:
55488 Text.Op = PrintName("StorePopIntAP");
55489 break;
55490case OP_StorePopIntAPS:
55491 Text.Op = PrintName("StorePopIntAPS");
55492 break;
55493case OP_StorePopBool:
55494 Text.Op = PrintName("StorePopBool");
55495 break;
55496case OP_StorePopFixedPoint:
55497 Text.Op = PrintName("StorePopFixedPoint");
55498 break;
55499case OP_StorePopPtr:
55500 Text.Op = PrintName("StorePopPtr");
55501 break;
55502case OP_StorePopMemberPtr:
55503 Text.Op = PrintName("StorePopMemberPtr");
55504 break;
55505case OP_StorePopFloat:
55506 Text.Op = PrintName("StorePopFloat");
55507 break;
55508#endif
55509#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55510bool emitStorePopSint8(SourceInfo);
55511bool emitStorePopUint8(SourceInfo);
55512bool emitStorePopSint16(SourceInfo);
55513bool emitStorePopUint16(SourceInfo);
55514bool emitStorePopSint32(SourceInfo);
55515bool emitStorePopUint32(SourceInfo);
55516bool emitStorePopSint64(SourceInfo);
55517bool emitStorePopUint64(SourceInfo);
55518bool emitStorePopIntAP(SourceInfo);
55519bool emitStorePopIntAPS(SourceInfo);
55520bool emitStorePopBool(SourceInfo);
55521bool emitStorePopFixedPoint(SourceInfo);
55522bool emitStorePopPtr(SourceInfo);
55523bool emitStorePopMemberPtr(SourceInfo);
55524bool emitStorePopFloat(SourceInfo);
55525#endif
55526#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55527[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
55528#endif
55529#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
55530bool
55531#if defined(GET_EVAL_IMPL)
55532EvalEmitter
55533#else
55534ByteCodeEmitter
55535#endif
55536::emitStorePop(PrimType T0, SourceInfo I) {
55537 switch (T0) {
55538 case PT_Sint8:
55539 return emitStorePopSint8(I);
55540 case PT_Uint8:
55541 return emitStorePopUint8(I);
55542 case PT_Sint16:
55543 return emitStorePopSint16(I);
55544 case PT_Uint16:
55545 return emitStorePopUint16(I);
55546 case PT_Sint32:
55547 return emitStorePopSint32(I);
55548 case PT_Uint32:
55549 return emitStorePopUint32(I);
55550 case PT_Sint64:
55551 return emitStorePopSint64(I);
55552 case PT_Uint64:
55553 return emitStorePopUint64(I);
55554 case PT_IntAP:
55555 return emitStorePopIntAP(I);
55556 case PT_IntAPS:
55557 return emitStorePopIntAPS(I);
55558 case PT_Bool:
55559 return emitStorePopBool(I);
55560 case PT_FixedPoint:
55561 return emitStorePopFixedPoint(I);
55562 case PT_Ptr:
55563 return emitStorePopPtr(I);
55564 case PT_MemberPtr:
55565 return emitStorePopMemberPtr(I);
55566 case PT_Float:
55567 return emitStorePopFloat(I);
55568 }
55569 llvm_unreachable("invalid enum value");
55570}
55571#endif
55572#ifdef GET_LINK_IMPL
55573bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
55574 return emitOp<>(OP_StorePopSint8, L);
55575}
55576bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
55577 return emitOp<>(OP_StorePopUint8, L);
55578}
55579bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
55580 return emitOp<>(OP_StorePopSint16, L);
55581}
55582bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
55583 return emitOp<>(OP_StorePopUint16, L);
55584}
55585bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
55586 return emitOp<>(OP_StorePopSint32, L);
55587}
55588bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
55589 return emitOp<>(OP_StorePopUint32, L);
55590}
55591bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
55592 return emitOp<>(OP_StorePopSint64, L);
55593}
55594bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
55595 return emitOp<>(OP_StorePopUint64, L);
55596}
55597bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
55598 return emitOp<>(OP_StorePopIntAP, L);
55599}
55600bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
55601 return emitOp<>(OP_StorePopIntAPS, L);
55602}
55603bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
55604 return emitOp<>(OP_StorePopBool, L);
55605}
55606bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
55607 return emitOp<>(OP_StorePopFixedPoint, L);
55608}
55609bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
55610 return emitOp<>(OP_StorePopPtr, L);
55611}
55612bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
55613 return emitOp<>(OP_StorePopMemberPtr, L);
55614}
55615bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
55616 return emitOp<>(OP_StorePopFloat, L);
55617}
55618#endif
55619#ifdef GET_EVAL_IMPL
55620bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
55621 if (!isActive()) return true;
55622 CurrentSource = L;
55623 return StorePop<PT_Sint8>(S, OpPC);
55624}
55625bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
55626 if (!isActive()) return true;
55627 CurrentSource = L;
55628 return StorePop<PT_Uint8>(S, OpPC);
55629}
55630bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
55631 if (!isActive()) return true;
55632 CurrentSource = L;
55633 return StorePop<PT_Sint16>(S, OpPC);
55634}
55635bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
55636 if (!isActive()) return true;
55637 CurrentSource = L;
55638 return StorePop<PT_Uint16>(S, OpPC);
55639}
55640bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
55641 if (!isActive()) return true;
55642 CurrentSource = L;
55643 return StorePop<PT_Sint32>(S, OpPC);
55644}
55645bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
55646 if (!isActive()) return true;
55647 CurrentSource = L;
55648 return StorePop<PT_Uint32>(S, OpPC);
55649}
55650bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
55651 if (!isActive()) return true;
55652 CurrentSource = L;
55653 return StorePop<PT_Sint64>(S, OpPC);
55654}
55655bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
55656 if (!isActive()) return true;
55657 CurrentSource = L;
55658 return StorePop<PT_Uint64>(S, OpPC);
55659}
55660bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
55661 if (!isActive()) return true;
55662 CurrentSource = L;
55663 return StorePop<PT_IntAP>(S, OpPC);
55664}
55665bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
55666 if (!isActive()) return true;
55667 CurrentSource = L;
55668 return StorePop<PT_IntAPS>(S, OpPC);
55669}
55670bool EvalEmitter::emitStorePopBool(SourceInfo L) {
55671 if (!isActive()) return true;
55672 CurrentSource = L;
55673 return StorePop<PT_Bool>(S, OpPC);
55674}
55675bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
55676 if (!isActive()) return true;
55677 CurrentSource = L;
55678 return StorePop<PT_FixedPoint>(S, OpPC);
55679}
55680bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
55681 if (!isActive()) return true;
55682 CurrentSource = L;
55683 return StorePop<PT_Ptr>(S, OpPC);
55684}
55685bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
55686 if (!isActive()) return true;
55687 CurrentSource = L;
55688 return StorePop<PT_MemberPtr>(S, OpPC);
55689}
55690bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
55691 if (!isActive()) return true;
55692 CurrentSource = L;
55693 return StorePop<PT_Float>(S, OpPC);
55694}
55695#endif
55696#ifdef GET_OPCODE_NAMES
55697OP_SubSint8,
55698OP_SubUint8,
55699OP_SubSint16,
55700OP_SubUint16,
55701OP_SubSint32,
55702OP_SubUint32,
55703OP_SubSint64,
55704OP_SubUint64,
55705OP_SubIntAP,
55706OP_SubIntAPS,
55707OP_SubBool,
55708OP_SubFixedPoint,
55709#endif
55710#ifdef GET_INTERPFN_LIST
55711&Interp_SubSint8,
55712&Interp_SubUint8,
55713&Interp_SubSint16,
55714&Interp_SubUint16,
55715&Interp_SubSint32,
55716&Interp_SubUint32,
55717&Interp_SubSint64,
55718&Interp_SubUint64,
55719&Interp_SubIntAP,
55720&Interp_SubIntAPS,
55721&Interp_SubBool,
55722&Interp_SubFixedPoint,
55723#endif
55724#ifdef GET_INTERPFN_DISPATCHERS
55725PRESERVE_NONE
55726static bool Interp_SubSint8(InterpState &S, CodePtr &PC) {
55727 if (!Sub<PT_Sint8>(S, PC))
55728 return false;
55729#if USE_TAILCALLS
55730 MUSTTAIL return InterpNext(S, PC);
55731#else
55732 return true;
55733#endif
55734}
55735PRESERVE_NONE
55736static bool Interp_SubUint8(InterpState &S, CodePtr &PC) {
55737 if (!Sub<PT_Uint8>(S, PC))
55738 return false;
55739#if USE_TAILCALLS
55740 MUSTTAIL return InterpNext(S, PC);
55741#else
55742 return true;
55743#endif
55744}
55745PRESERVE_NONE
55746static bool Interp_SubSint16(InterpState &S, CodePtr &PC) {
55747 if (!Sub<PT_Sint16>(S, PC))
55748 return false;
55749#if USE_TAILCALLS
55750 MUSTTAIL return InterpNext(S, PC);
55751#else
55752 return true;
55753#endif
55754}
55755PRESERVE_NONE
55756static bool Interp_SubUint16(InterpState &S, CodePtr &PC) {
55757 if (!Sub<PT_Uint16>(S, PC))
55758 return false;
55759#if USE_TAILCALLS
55760 MUSTTAIL return InterpNext(S, PC);
55761#else
55762 return true;
55763#endif
55764}
55765PRESERVE_NONE
55766static bool Interp_SubSint32(InterpState &S, CodePtr &PC) {
55767 if (!Sub<PT_Sint32>(S, PC))
55768 return false;
55769#if USE_TAILCALLS
55770 MUSTTAIL return InterpNext(S, PC);
55771#else
55772 return true;
55773#endif
55774}
55775PRESERVE_NONE
55776static bool Interp_SubUint32(InterpState &S, CodePtr &PC) {
55777 if (!Sub<PT_Uint32>(S, PC))
55778 return false;
55779#if USE_TAILCALLS
55780 MUSTTAIL return InterpNext(S, PC);
55781#else
55782 return true;
55783#endif
55784}
55785PRESERVE_NONE
55786static bool Interp_SubSint64(InterpState &S, CodePtr &PC) {
55787 if (!Sub<PT_Sint64>(S, PC))
55788 return false;
55789#if USE_TAILCALLS
55790 MUSTTAIL return InterpNext(S, PC);
55791#else
55792 return true;
55793#endif
55794}
55795PRESERVE_NONE
55796static bool Interp_SubUint64(InterpState &S, CodePtr &PC) {
55797 if (!Sub<PT_Uint64>(S, PC))
55798 return false;
55799#if USE_TAILCALLS
55800 MUSTTAIL return InterpNext(S, PC);
55801#else
55802 return true;
55803#endif
55804}
55805PRESERVE_NONE
55806static bool Interp_SubIntAP(InterpState &S, CodePtr &PC) {
55807 if (!Sub<PT_IntAP>(S, PC))
55808 return false;
55809#if USE_TAILCALLS
55810 MUSTTAIL return InterpNext(S, PC);
55811#else
55812 return true;
55813#endif
55814}
55815PRESERVE_NONE
55816static bool Interp_SubIntAPS(InterpState &S, CodePtr &PC) {
55817 if (!Sub<PT_IntAPS>(S, PC))
55818 return false;
55819#if USE_TAILCALLS
55820 MUSTTAIL return InterpNext(S, PC);
55821#else
55822 return true;
55823#endif
55824}
55825PRESERVE_NONE
55826static bool Interp_SubBool(InterpState &S, CodePtr &PC) {
55827 if (!Sub<PT_Bool>(S, PC))
55828 return false;
55829#if USE_TAILCALLS
55830 MUSTTAIL return InterpNext(S, PC);
55831#else
55832 return true;
55833#endif
55834}
55835PRESERVE_NONE
55836static bool Interp_SubFixedPoint(InterpState &S, CodePtr &PC) {
55837 if (!Sub<PT_FixedPoint>(S, PC))
55838 return false;
55839#if USE_TAILCALLS
55840 MUSTTAIL return InterpNext(S, PC);
55841#else
55842 return true;
55843#endif
55844}
55845#endif
55846#ifdef GET_DISASM
55847case OP_SubSint8:
55848 Text.Op = PrintName("SubSint8");
55849 break;
55850case OP_SubUint8:
55851 Text.Op = PrintName("SubUint8");
55852 break;
55853case OP_SubSint16:
55854 Text.Op = PrintName("SubSint16");
55855 break;
55856case OP_SubUint16:
55857 Text.Op = PrintName("SubUint16");
55858 break;
55859case OP_SubSint32:
55860 Text.Op = PrintName("SubSint32");
55861 break;
55862case OP_SubUint32:
55863 Text.Op = PrintName("SubUint32");
55864 break;
55865case OP_SubSint64:
55866 Text.Op = PrintName("SubSint64");
55867 break;
55868case OP_SubUint64:
55869 Text.Op = PrintName("SubUint64");
55870 break;
55871case OP_SubIntAP:
55872 Text.Op = PrintName("SubIntAP");
55873 break;
55874case OP_SubIntAPS:
55875 Text.Op = PrintName("SubIntAPS");
55876 break;
55877case OP_SubBool:
55878 Text.Op = PrintName("SubBool");
55879 break;
55880case OP_SubFixedPoint:
55881 Text.Op = PrintName("SubFixedPoint");
55882 break;
55883#endif
55884#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55885bool emitSubSint8(SourceInfo);
55886bool emitSubUint8(SourceInfo);
55887bool emitSubSint16(SourceInfo);
55888bool emitSubUint16(SourceInfo);
55889bool emitSubSint32(SourceInfo);
55890bool emitSubUint32(SourceInfo);
55891bool emitSubSint64(SourceInfo);
55892bool emitSubUint64(SourceInfo);
55893bool emitSubIntAP(SourceInfo);
55894bool emitSubIntAPS(SourceInfo);
55895bool emitSubBool(SourceInfo);
55896bool emitSubFixedPoint(SourceInfo);
55897#endif
55898#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55899[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
55900#endif
55901#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
55902bool
55903#if defined(GET_EVAL_IMPL)
55904EvalEmitter
55905#else
55906ByteCodeEmitter
55907#endif
55908::emitSub(PrimType T0, SourceInfo I) {
55909 switch (T0) {
55910 case PT_Sint8:
55911 return emitSubSint8(I);
55912 case PT_Uint8:
55913 return emitSubUint8(I);
55914 case PT_Sint16:
55915 return emitSubSint16(I);
55916 case PT_Uint16:
55917 return emitSubUint16(I);
55918 case PT_Sint32:
55919 return emitSubSint32(I);
55920 case PT_Uint32:
55921 return emitSubUint32(I);
55922 case PT_Sint64:
55923 return emitSubSint64(I);
55924 case PT_Uint64:
55925 return emitSubUint64(I);
55926 case PT_IntAP:
55927 return emitSubIntAP(I);
55928 case PT_IntAPS:
55929 return emitSubIntAPS(I);
55930 case PT_Bool:
55931 return emitSubBool(I);
55932 case PT_FixedPoint:
55933 return emitSubFixedPoint(I);
55934 default: llvm_unreachable("invalid type: emitSub");
55935 }
55936 llvm_unreachable("invalid enum value");
55937}
55938#endif
55939#ifdef GET_LINK_IMPL
55940bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
55941 return emitOp<>(OP_SubSint8, L);
55942}
55943bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
55944 return emitOp<>(OP_SubUint8, L);
55945}
55946bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
55947 return emitOp<>(OP_SubSint16, L);
55948}
55949bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
55950 return emitOp<>(OP_SubUint16, L);
55951}
55952bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
55953 return emitOp<>(OP_SubSint32, L);
55954}
55955bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
55956 return emitOp<>(OP_SubUint32, L);
55957}
55958bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
55959 return emitOp<>(OP_SubSint64, L);
55960}
55961bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
55962 return emitOp<>(OP_SubUint64, L);
55963}
55964bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
55965 return emitOp<>(OP_SubIntAP, L);
55966}
55967bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
55968 return emitOp<>(OP_SubIntAPS, L);
55969}
55970bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
55971 return emitOp<>(OP_SubBool, L);
55972}
55973bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
55974 return emitOp<>(OP_SubFixedPoint, L);
55975}
55976#endif
55977#ifdef GET_EVAL_IMPL
55978bool EvalEmitter::emitSubSint8(SourceInfo L) {
55979 if (!isActive()) return true;
55980 CurrentSource = L;
55981 return Sub<PT_Sint8>(S, OpPC);
55982}
55983bool EvalEmitter::emitSubUint8(SourceInfo L) {
55984 if (!isActive()) return true;
55985 CurrentSource = L;
55986 return Sub<PT_Uint8>(S, OpPC);
55987}
55988bool EvalEmitter::emitSubSint16(SourceInfo L) {
55989 if (!isActive()) return true;
55990 CurrentSource = L;
55991 return Sub<PT_Sint16>(S, OpPC);
55992}
55993bool EvalEmitter::emitSubUint16(SourceInfo L) {
55994 if (!isActive()) return true;
55995 CurrentSource = L;
55996 return Sub<PT_Uint16>(S, OpPC);
55997}
55998bool EvalEmitter::emitSubSint32(SourceInfo L) {
55999 if (!isActive()) return true;
56000 CurrentSource = L;
56001 return Sub<PT_Sint32>(S, OpPC);
56002}
56003bool EvalEmitter::emitSubUint32(SourceInfo L) {
56004 if (!isActive()) return true;
56005 CurrentSource = L;
56006 return Sub<PT_Uint32>(S, OpPC);
56007}
56008bool EvalEmitter::emitSubSint64(SourceInfo L) {
56009 if (!isActive()) return true;
56010 CurrentSource = L;
56011 return Sub<PT_Sint64>(S, OpPC);
56012}
56013bool EvalEmitter::emitSubUint64(SourceInfo L) {
56014 if (!isActive()) return true;
56015 CurrentSource = L;
56016 return Sub<PT_Uint64>(S, OpPC);
56017}
56018bool EvalEmitter::emitSubIntAP(SourceInfo L) {
56019 if (!isActive()) return true;
56020 CurrentSource = L;
56021 return Sub<PT_IntAP>(S, OpPC);
56022}
56023bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
56024 if (!isActive()) return true;
56025 CurrentSource = L;
56026 return Sub<PT_IntAPS>(S, OpPC);
56027}
56028bool EvalEmitter::emitSubBool(SourceInfo L) {
56029 if (!isActive()) return true;
56030 CurrentSource = L;
56031 return Sub<PT_Bool>(S, OpPC);
56032}
56033bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
56034 if (!isActive()) return true;
56035 CurrentSource = L;
56036 return Sub<PT_FixedPoint>(S, OpPC);
56037}
56038#endif
56039#ifdef GET_OPCODE_NAMES
56040OP_SubOffsetSint8,
56041OP_SubOffsetUint8,
56042OP_SubOffsetSint16,
56043OP_SubOffsetUint16,
56044OP_SubOffsetSint32,
56045OP_SubOffsetUint32,
56046OP_SubOffsetSint64,
56047OP_SubOffsetUint64,
56048OP_SubOffsetIntAP,
56049OP_SubOffsetIntAPS,
56050OP_SubOffsetBool,
56051#endif
56052#ifdef GET_INTERPFN_LIST
56053&Interp_SubOffsetSint8,
56054&Interp_SubOffsetUint8,
56055&Interp_SubOffsetSint16,
56056&Interp_SubOffsetUint16,
56057&Interp_SubOffsetSint32,
56058&Interp_SubOffsetUint32,
56059&Interp_SubOffsetSint64,
56060&Interp_SubOffsetUint64,
56061&Interp_SubOffsetIntAP,
56062&Interp_SubOffsetIntAPS,
56063&Interp_SubOffsetBool,
56064#endif
56065#ifdef GET_INTERPFN_DISPATCHERS
56066PRESERVE_NONE
56067static bool Interp_SubOffsetSint8(InterpState &S, CodePtr &PC) {
56068 if (!SubOffset<PT_Sint8>(S, PC))
56069 return false;
56070#if USE_TAILCALLS
56071 MUSTTAIL return InterpNext(S, PC);
56072#else
56073 return true;
56074#endif
56075}
56076PRESERVE_NONE
56077static bool Interp_SubOffsetUint8(InterpState &S, CodePtr &PC) {
56078 if (!SubOffset<PT_Uint8>(S, PC))
56079 return false;
56080#if USE_TAILCALLS
56081 MUSTTAIL return InterpNext(S, PC);
56082#else
56083 return true;
56084#endif
56085}
56086PRESERVE_NONE
56087static bool Interp_SubOffsetSint16(InterpState &S, CodePtr &PC) {
56088 if (!SubOffset<PT_Sint16>(S, PC))
56089 return false;
56090#if USE_TAILCALLS
56091 MUSTTAIL return InterpNext(S, PC);
56092#else
56093 return true;
56094#endif
56095}
56096PRESERVE_NONE
56097static bool Interp_SubOffsetUint16(InterpState &S, CodePtr &PC) {
56098 if (!SubOffset<PT_Uint16>(S, PC))
56099 return false;
56100#if USE_TAILCALLS
56101 MUSTTAIL return InterpNext(S, PC);
56102#else
56103 return true;
56104#endif
56105}
56106PRESERVE_NONE
56107static bool Interp_SubOffsetSint32(InterpState &S, CodePtr &PC) {
56108 if (!SubOffset<PT_Sint32>(S, PC))
56109 return false;
56110#if USE_TAILCALLS
56111 MUSTTAIL return InterpNext(S, PC);
56112#else
56113 return true;
56114#endif
56115}
56116PRESERVE_NONE
56117static bool Interp_SubOffsetUint32(InterpState &S, CodePtr &PC) {
56118 if (!SubOffset<PT_Uint32>(S, PC))
56119 return false;
56120#if USE_TAILCALLS
56121 MUSTTAIL return InterpNext(S, PC);
56122#else
56123 return true;
56124#endif
56125}
56126PRESERVE_NONE
56127static bool Interp_SubOffsetSint64(InterpState &S, CodePtr &PC) {
56128 if (!SubOffset<PT_Sint64>(S, PC))
56129 return false;
56130#if USE_TAILCALLS
56131 MUSTTAIL return InterpNext(S, PC);
56132#else
56133 return true;
56134#endif
56135}
56136PRESERVE_NONE
56137static bool Interp_SubOffsetUint64(InterpState &S, CodePtr &PC) {
56138 if (!SubOffset<PT_Uint64>(S, PC))
56139 return false;
56140#if USE_TAILCALLS
56141 MUSTTAIL return InterpNext(S, PC);
56142#else
56143 return true;
56144#endif
56145}
56146PRESERVE_NONE
56147static bool Interp_SubOffsetIntAP(InterpState &S, CodePtr &PC) {
56148 if (!SubOffset<PT_IntAP>(S, PC))
56149 return false;
56150#if USE_TAILCALLS
56151 MUSTTAIL return InterpNext(S, PC);
56152#else
56153 return true;
56154#endif
56155}
56156PRESERVE_NONE
56157static bool Interp_SubOffsetIntAPS(InterpState &S, CodePtr &PC) {
56158 if (!SubOffset<PT_IntAPS>(S, PC))
56159 return false;
56160#if USE_TAILCALLS
56161 MUSTTAIL return InterpNext(S, PC);
56162#else
56163 return true;
56164#endif
56165}
56166PRESERVE_NONE
56167static bool Interp_SubOffsetBool(InterpState &S, CodePtr &PC) {
56168 if (!SubOffset<PT_Bool>(S, PC))
56169 return false;
56170#if USE_TAILCALLS
56171 MUSTTAIL return InterpNext(S, PC);
56172#else
56173 return true;
56174#endif
56175}
56176#endif
56177#ifdef GET_DISASM
56178case OP_SubOffsetSint8:
56179 Text.Op = PrintName("SubOffsetSint8");
56180 break;
56181case OP_SubOffsetUint8:
56182 Text.Op = PrintName("SubOffsetUint8");
56183 break;
56184case OP_SubOffsetSint16:
56185 Text.Op = PrintName("SubOffsetSint16");
56186 break;
56187case OP_SubOffsetUint16:
56188 Text.Op = PrintName("SubOffsetUint16");
56189 break;
56190case OP_SubOffsetSint32:
56191 Text.Op = PrintName("SubOffsetSint32");
56192 break;
56193case OP_SubOffsetUint32:
56194 Text.Op = PrintName("SubOffsetUint32");
56195 break;
56196case OP_SubOffsetSint64:
56197 Text.Op = PrintName("SubOffsetSint64");
56198 break;
56199case OP_SubOffsetUint64:
56200 Text.Op = PrintName("SubOffsetUint64");
56201 break;
56202case OP_SubOffsetIntAP:
56203 Text.Op = PrintName("SubOffsetIntAP");
56204 break;
56205case OP_SubOffsetIntAPS:
56206 Text.Op = PrintName("SubOffsetIntAPS");
56207 break;
56208case OP_SubOffsetBool:
56209 Text.Op = PrintName("SubOffsetBool");
56210 break;
56211#endif
56212#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56213bool emitSubOffsetSint8(SourceInfo);
56214bool emitSubOffsetUint8(SourceInfo);
56215bool emitSubOffsetSint16(SourceInfo);
56216bool emitSubOffsetUint16(SourceInfo);
56217bool emitSubOffsetSint32(SourceInfo);
56218bool emitSubOffsetUint32(SourceInfo);
56219bool emitSubOffsetSint64(SourceInfo);
56220bool emitSubOffsetUint64(SourceInfo);
56221bool emitSubOffsetIntAP(SourceInfo);
56222bool emitSubOffsetIntAPS(SourceInfo);
56223bool emitSubOffsetBool(SourceInfo);
56224#endif
56225#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56226[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
56227#endif
56228#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
56229bool
56230#if defined(GET_EVAL_IMPL)
56231EvalEmitter
56232#else
56233ByteCodeEmitter
56234#endif
56235::emitSubOffset(PrimType T0, SourceInfo I) {
56236 switch (T0) {
56237 case PT_Sint8:
56238 return emitSubOffsetSint8(I);
56239 case PT_Uint8:
56240 return emitSubOffsetUint8(I);
56241 case PT_Sint16:
56242 return emitSubOffsetSint16(I);
56243 case PT_Uint16:
56244 return emitSubOffsetUint16(I);
56245 case PT_Sint32:
56246 return emitSubOffsetSint32(I);
56247 case PT_Uint32:
56248 return emitSubOffsetUint32(I);
56249 case PT_Sint64:
56250 return emitSubOffsetSint64(I);
56251 case PT_Uint64:
56252 return emitSubOffsetUint64(I);
56253 case PT_IntAP:
56254 return emitSubOffsetIntAP(I);
56255 case PT_IntAPS:
56256 return emitSubOffsetIntAPS(I);
56257 case PT_Bool:
56258 return emitSubOffsetBool(I);
56259 default: llvm_unreachable("invalid type: emitSubOffset");
56260 }
56261 llvm_unreachable("invalid enum value");
56262}
56263#endif
56264#ifdef GET_LINK_IMPL
56265bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
56266 return emitOp<>(OP_SubOffsetSint8, L);
56267}
56268bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
56269 return emitOp<>(OP_SubOffsetUint8, L);
56270}
56271bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
56272 return emitOp<>(OP_SubOffsetSint16, L);
56273}
56274bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
56275 return emitOp<>(OP_SubOffsetUint16, L);
56276}
56277bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
56278 return emitOp<>(OP_SubOffsetSint32, L);
56279}
56280bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
56281 return emitOp<>(OP_SubOffsetUint32, L);
56282}
56283bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
56284 return emitOp<>(OP_SubOffsetSint64, L);
56285}
56286bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
56287 return emitOp<>(OP_SubOffsetUint64, L);
56288}
56289bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
56290 return emitOp<>(OP_SubOffsetIntAP, L);
56291}
56292bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
56293 return emitOp<>(OP_SubOffsetIntAPS, L);
56294}
56295bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
56296 return emitOp<>(OP_SubOffsetBool, L);
56297}
56298#endif
56299#ifdef GET_EVAL_IMPL
56300bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
56301 if (!isActive()) return true;
56302 CurrentSource = L;
56303 return SubOffset<PT_Sint8>(S, OpPC);
56304}
56305bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
56306 if (!isActive()) return true;
56307 CurrentSource = L;
56308 return SubOffset<PT_Uint8>(S, OpPC);
56309}
56310bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
56311 if (!isActive()) return true;
56312 CurrentSource = L;
56313 return SubOffset<PT_Sint16>(S, OpPC);
56314}
56315bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
56316 if (!isActive()) return true;
56317 CurrentSource = L;
56318 return SubOffset<PT_Uint16>(S, OpPC);
56319}
56320bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
56321 if (!isActive()) return true;
56322 CurrentSource = L;
56323 return SubOffset<PT_Sint32>(S, OpPC);
56324}
56325bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
56326 if (!isActive()) return true;
56327 CurrentSource = L;
56328 return SubOffset<PT_Uint32>(S, OpPC);
56329}
56330bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
56331 if (!isActive()) return true;
56332 CurrentSource = L;
56333 return SubOffset<PT_Sint64>(S, OpPC);
56334}
56335bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
56336 if (!isActive()) return true;
56337 CurrentSource = L;
56338 return SubOffset<PT_Uint64>(S, OpPC);
56339}
56340bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
56341 if (!isActive()) return true;
56342 CurrentSource = L;
56343 return SubOffset<PT_IntAP>(S, OpPC);
56344}
56345bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
56346 if (!isActive()) return true;
56347 CurrentSource = L;
56348 return SubOffset<PT_IntAPS>(S, OpPC);
56349}
56350bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
56351 if (!isActive()) return true;
56352 CurrentSource = L;
56353 return SubOffset<PT_Bool>(S, OpPC);
56354}
56355#endif
56356#ifdef GET_OPCODE_NAMES
56357OP_SubPtrSint8,
56358OP_SubPtrUint8,
56359OP_SubPtrSint16,
56360OP_SubPtrUint16,
56361OP_SubPtrSint32,
56362OP_SubPtrUint32,
56363OP_SubPtrSint64,
56364OP_SubPtrUint64,
56365OP_SubPtrIntAP,
56366OP_SubPtrIntAPS,
56367#endif
56368#ifdef GET_INTERPFN_LIST
56369&Interp_SubPtrSint8,
56370&Interp_SubPtrUint8,
56371&Interp_SubPtrSint16,
56372&Interp_SubPtrUint16,
56373&Interp_SubPtrSint32,
56374&Interp_SubPtrUint32,
56375&Interp_SubPtrSint64,
56376&Interp_SubPtrUint64,
56377&Interp_SubPtrIntAP,
56378&Interp_SubPtrIntAPS,
56379#endif
56380#ifdef GET_INTERPFN_DISPATCHERS
56381PRESERVE_NONE
56382static bool Interp_SubPtrSint8(InterpState &S, CodePtr &PC) {
56383 {
56384 CodePtr OpPC = PC;
56385 const auto V0 = ReadArg<bool>(S, PC);
56386 if (!SubPtr<PT_Sint8>(S, OpPC, V0))
56387 return false;
56388 }
56389#if USE_TAILCALLS
56390 MUSTTAIL return InterpNext(S, PC);
56391#else
56392 return true;
56393#endif
56394}
56395PRESERVE_NONE
56396static bool Interp_SubPtrUint8(InterpState &S, CodePtr &PC) {
56397 {
56398 CodePtr OpPC = PC;
56399 const auto V0 = ReadArg<bool>(S, PC);
56400 if (!SubPtr<PT_Uint8>(S, OpPC, V0))
56401 return false;
56402 }
56403#if USE_TAILCALLS
56404 MUSTTAIL return InterpNext(S, PC);
56405#else
56406 return true;
56407#endif
56408}
56409PRESERVE_NONE
56410static bool Interp_SubPtrSint16(InterpState &S, CodePtr &PC) {
56411 {
56412 CodePtr OpPC = PC;
56413 const auto V0 = ReadArg<bool>(S, PC);
56414 if (!SubPtr<PT_Sint16>(S, OpPC, V0))
56415 return false;
56416 }
56417#if USE_TAILCALLS
56418 MUSTTAIL return InterpNext(S, PC);
56419#else
56420 return true;
56421#endif
56422}
56423PRESERVE_NONE
56424static bool Interp_SubPtrUint16(InterpState &S, CodePtr &PC) {
56425 {
56426 CodePtr OpPC = PC;
56427 const auto V0 = ReadArg<bool>(S, PC);
56428 if (!SubPtr<PT_Uint16>(S, OpPC, V0))
56429 return false;
56430 }
56431#if USE_TAILCALLS
56432 MUSTTAIL return InterpNext(S, PC);
56433#else
56434 return true;
56435#endif
56436}
56437PRESERVE_NONE
56438static bool Interp_SubPtrSint32(InterpState &S, CodePtr &PC) {
56439 {
56440 CodePtr OpPC = PC;
56441 const auto V0 = ReadArg<bool>(S, PC);
56442 if (!SubPtr<PT_Sint32>(S, OpPC, V0))
56443 return false;
56444 }
56445#if USE_TAILCALLS
56446 MUSTTAIL return InterpNext(S, PC);
56447#else
56448 return true;
56449#endif
56450}
56451PRESERVE_NONE
56452static bool Interp_SubPtrUint32(InterpState &S, CodePtr &PC) {
56453 {
56454 CodePtr OpPC = PC;
56455 const auto V0 = ReadArg<bool>(S, PC);
56456 if (!SubPtr<PT_Uint32>(S, OpPC, V0))
56457 return false;
56458 }
56459#if USE_TAILCALLS
56460 MUSTTAIL return InterpNext(S, PC);
56461#else
56462 return true;
56463#endif
56464}
56465PRESERVE_NONE
56466static bool Interp_SubPtrSint64(InterpState &S, CodePtr &PC) {
56467 {
56468 CodePtr OpPC = PC;
56469 const auto V0 = ReadArg<bool>(S, PC);
56470 if (!SubPtr<PT_Sint64>(S, OpPC, V0))
56471 return false;
56472 }
56473#if USE_TAILCALLS
56474 MUSTTAIL return InterpNext(S, PC);
56475#else
56476 return true;
56477#endif
56478}
56479PRESERVE_NONE
56480static bool Interp_SubPtrUint64(InterpState &S, CodePtr &PC) {
56481 {
56482 CodePtr OpPC = PC;
56483 const auto V0 = ReadArg<bool>(S, PC);
56484 if (!SubPtr<PT_Uint64>(S, OpPC, V0))
56485 return false;
56486 }
56487#if USE_TAILCALLS
56488 MUSTTAIL return InterpNext(S, PC);
56489#else
56490 return true;
56491#endif
56492}
56493PRESERVE_NONE
56494static bool Interp_SubPtrIntAP(InterpState &S, CodePtr &PC) {
56495 {
56496 CodePtr OpPC = PC;
56497 const auto V0 = ReadArg<bool>(S, PC);
56498 if (!SubPtr<PT_IntAP>(S, OpPC, V0))
56499 return false;
56500 }
56501#if USE_TAILCALLS
56502 MUSTTAIL return InterpNext(S, PC);
56503#else
56504 return true;
56505#endif
56506}
56507PRESERVE_NONE
56508static bool Interp_SubPtrIntAPS(InterpState &S, CodePtr &PC) {
56509 {
56510 CodePtr OpPC = PC;
56511 const auto V0 = ReadArg<bool>(S, PC);
56512 if (!SubPtr<PT_IntAPS>(S, OpPC, V0))
56513 return false;
56514 }
56515#if USE_TAILCALLS
56516 MUSTTAIL return InterpNext(S, PC);
56517#else
56518 return true;
56519#endif
56520}
56521#endif
56522#ifdef GET_DISASM
56523case OP_SubPtrSint8:
56524 Text.Op = PrintName("SubPtrSint8");
56525 Text.Args.push_back(printArg<bool>(P, PC));
56526 break;
56527case OP_SubPtrUint8:
56528 Text.Op = PrintName("SubPtrUint8");
56529 Text.Args.push_back(printArg<bool>(P, PC));
56530 break;
56531case OP_SubPtrSint16:
56532 Text.Op = PrintName("SubPtrSint16");
56533 Text.Args.push_back(printArg<bool>(P, PC));
56534 break;
56535case OP_SubPtrUint16:
56536 Text.Op = PrintName("SubPtrUint16");
56537 Text.Args.push_back(printArg<bool>(P, PC));
56538 break;
56539case OP_SubPtrSint32:
56540 Text.Op = PrintName("SubPtrSint32");
56541 Text.Args.push_back(printArg<bool>(P, PC));
56542 break;
56543case OP_SubPtrUint32:
56544 Text.Op = PrintName("SubPtrUint32");
56545 Text.Args.push_back(printArg<bool>(P, PC));
56546 break;
56547case OP_SubPtrSint64:
56548 Text.Op = PrintName("SubPtrSint64");
56549 Text.Args.push_back(printArg<bool>(P, PC));
56550 break;
56551case OP_SubPtrUint64:
56552 Text.Op = PrintName("SubPtrUint64");
56553 Text.Args.push_back(printArg<bool>(P, PC));
56554 break;
56555case OP_SubPtrIntAP:
56556 Text.Op = PrintName("SubPtrIntAP");
56557 Text.Args.push_back(printArg<bool>(P, PC));
56558 break;
56559case OP_SubPtrIntAPS:
56560 Text.Op = PrintName("SubPtrIntAPS");
56561 Text.Args.push_back(printArg<bool>(P, PC));
56562 break;
56563#endif
56564#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56565bool emitSubPtrSint8( bool , SourceInfo);
56566bool emitSubPtrUint8( bool , SourceInfo);
56567bool emitSubPtrSint16( bool , SourceInfo);
56568bool emitSubPtrUint16( bool , SourceInfo);
56569bool emitSubPtrSint32( bool , SourceInfo);
56570bool emitSubPtrUint32( bool , SourceInfo);
56571bool emitSubPtrSint64( bool , SourceInfo);
56572bool emitSubPtrUint64( bool , SourceInfo);
56573bool emitSubPtrIntAP( bool , SourceInfo);
56574bool emitSubPtrIntAPS( bool , SourceInfo);
56575#endif
56576#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56577[[nodiscard]] bool emitSubPtr(PrimType, bool, SourceInfo I);
56578#endif
56579#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
56580bool
56581#if defined(GET_EVAL_IMPL)
56582EvalEmitter
56583#else
56584ByteCodeEmitter
56585#endif
56586::emitSubPtr(PrimType T0, bool A0, SourceInfo I) {
56587 switch (T0) {
56588 case PT_Sint8:
56589 return emitSubPtrSint8(A0, I);
56590 case PT_Uint8:
56591 return emitSubPtrUint8(A0, I);
56592 case PT_Sint16:
56593 return emitSubPtrSint16(A0, I);
56594 case PT_Uint16:
56595 return emitSubPtrUint16(A0, I);
56596 case PT_Sint32:
56597 return emitSubPtrSint32(A0, I);
56598 case PT_Uint32:
56599 return emitSubPtrUint32(A0, I);
56600 case PT_Sint64:
56601 return emitSubPtrSint64(A0, I);
56602 case PT_Uint64:
56603 return emitSubPtrUint64(A0, I);
56604 case PT_IntAP:
56605 return emitSubPtrIntAP(A0, I);
56606 case PT_IntAPS:
56607 return emitSubPtrIntAPS(A0, I);
56608 default: llvm_unreachable("invalid type: emitSubPtr");
56609 }
56610 llvm_unreachable("invalid enum value");
56611}
56612#endif
56613#ifdef GET_LINK_IMPL
56614bool ByteCodeEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
56615 return emitOp<bool>(OP_SubPtrSint8, A0, L);
56616}
56617bool ByteCodeEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
56618 return emitOp<bool>(OP_SubPtrUint8, A0, L);
56619}
56620bool ByteCodeEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
56621 return emitOp<bool>(OP_SubPtrSint16, A0, L);
56622}
56623bool ByteCodeEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
56624 return emitOp<bool>(OP_SubPtrUint16, A0, L);
56625}
56626bool ByteCodeEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
56627 return emitOp<bool>(OP_SubPtrSint32, A0, L);
56628}
56629bool ByteCodeEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
56630 return emitOp<bool>(OP_SubPtrUint32, A0, L);
56631}
56632bool ByteCodeEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
56633 return emitOp<bool>(OP_SubPtrSint64, A0, L);
56634}
56635bool ByteCodeEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
56636 return emitOp<bool>(OP_SubPtrUint64, A0, L);
56637}
56638bool ByteCodeEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
56639 return emitOp<bool>(OP_SubPtrIntAP, A0, L);
56640}
56641bool ByteCodeEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
56642 return emitOp<bool>(OP_SubPtrIntAPS, A0, L);
56643}
56644#endif
56645#ifdef GET_EVAL_IMPL
56646bool EvalEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
56647 if (!isActive()) return true;
56648 CurrentSource = L;
56649 return SubPtr<PT_Sint8>(S, OpPC, A0);
56650}
56651bool EvalEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
56652 if (!isActive()) return true;
56653 CurrentSource = L;
56654 return SubPtr<PT_Uint8>(S, OpPC, A0);
56655}
56656bool EvalEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
56657 if (!isActive()) return true;
56658 CurrentSource = L;
56659 return SubPtr<PT_Sint16>(S, OpPC, A0);
56660}
56661bool EvalEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
56662 if (!isActive()) return true;
56663 CurrentSource = L;
56664 return SubPtr<PT_Uint16>(S, OpPC, A0);
56665}
56666bool EvalEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
56667 if (!isActive()) return true;
56668 CurrentSource = L;
56669 return SubPtr<PT_Sint32>(S, OpPC, A0);
56670}
56671bool EvalEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
56672 if (!isActive()) return true;
56673 CurrentSource = L;
56674 return SubPtr<PT_Uint32>(S, OpPC, A0);
56675}
56676bool EvalEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
56677 if (!isActive()) return true;
56678 CurrentSource = L;
56679 return SubPtr<PT_Sint64>(S, OpPC, A0);
56680}
56681bool EvalEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
56682 if (!isActive()) return true;
56683 CurrentSource = L;
56684 return SubPtr<PT_Uint64>(S, OpPC, A0);
56685}
56686bool EvalEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
56687 if (!isActive()) return true;
56688 CurrentSource = L;
56689 return SubPtr<PT_IntAP>(S, OpPC, A0);
56690}
56691bool EvalEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
56692 if (!isActive()) return true;
56693 CurrentSource = L;
56694 return SubPtr<PT_IntAPS>(S, OpPC, A0);
56695}
56696#endif
56697#ifdef GET_OPCODE_NAMES
56698OP_Subf,
56699#endif
56700#ifdef GET_INTERPFN_LIST
56701&Interp_Subf,
56702#endif
56703#ifdef GET_INTERPFN_DISPATCHERS
56704PRESERVE_NONE
56705static bool Interp_Subf(InterpState &S, CodePtr &PC) {
56706 {
56707 CodePtr OpPC = PC;
56708 const auto V0 = ReadArg<uint32_t>(S, PC);
56709 if (!Subf(S, OpPC, V0))
56710 return false;
56711 }
56712#if USE_TAILCALLS
56713 MUSTTAIL return InterpNext(S, PC);
56714#else
56715 return true;
56716#endif
56717}
56718#endif
56719#ifdef GET_DISASM
56720case OP_Subf:
56721 Text.Op = PrintName("Subf");
56722 Text.Args.push_back(printArg<uint32_t>(P, PC));
56723 break;
56724#endif
56725#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56726bool emitSubf( uint32_t , SourceInfo);
56727#endif
56728#ifdef GET_LINK_IMPL
56729bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
56730 return emitOp<uint32_t>(OP_Subf, A0, L);
56731}
56732#endif
56733#ifdef GET_EVAL_IMPL
56734bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
56735 if (!isActive()) return true;
56736 CurrentSource = L;
56737 return Subf(S, OpPC, A0);
56738}
56739#endif
56740#ifdef GET_OPCODE_NAMES
56741OP_This,
56742#endif
56743#ifdef GET_INTERPFN_LIST
56744&Interp_This,
56745#endif
56746#ifdef GET_INTERPFN_DISPATCHERS
56747PRESERVE_NONE
56748static bool Interp_This(InterpState &S, CodePtr &PC) {
56749 if (!This(S, PC))
56750 return false;
56751#if USE_TAILCALLS
56752 MUSTTAIL return InterpNext(S, PC);
56753#else
56754 return true;
56755#endif
56756}
56757#endif
56758#ifdef GET_DISASM
56759case OP_This:
56760 Text.Op = PrintName("This");
56761 break;
56762#endif
56763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56764bool emitThis(SourceInfo);
56765#endif
56766#ifdef GET_LINK_IMPL
56767bool ByteCodeEmitter::emitThis(SourceInfo L) {
56768 return emitOp<>(OP_This, L);
56769}
56770#endif
56771#ifdef GET_EVAL_IMPL
56772bool EvalEmitter::emitThis(SourceInfo L) {
56773 if (!isActive()) return true;
56774 CurrentSource = L;
56775 return This(S, OpPC);
56776}
56777#endif
56778#ifdef GET_OPCODE_NAMES
56779OP_ToMemberPtr,
56780#endif
56781#ifdef GET_INTERPFN_LIST
56782&Interp_ToMemberPtr,
56783#endif
56784#ifdef GET_INTERPFN_DISPATCHERS
56785PRESERVE_NONE
56786static bool Interp_ToMemberPtr(InterpState &S, CodePtr &PC) {
56787 if (!ToMemberPtr(S, PC))
56788 return false;
56789#if USE_TAILCALLS
56790 MUSTTAIL return InterpNext(S, PC);
56791#else
56792 return true;
56793#endif
56794}
56795#endif
56796#ifdef GET_DISASM
56797case OP_ToMemberPtr:
56798 Text.Op = PrintName("ToMemberPtr");
56799 break;
56800#endif
56801#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56802bool emitToMemberPtr(SourceInfo);
56803#endif
56804#ifdef GET_LINK_IMPL
56805bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
56806 return emitOp<>(OP_ToMemberPtr, L);
56807}
56808#endif
56809#ifdef GET_EVAL_IMPL
56810bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
56811 if (!isActive()) return true;
56812 CurrentSource = L;
56813 return ToMemberPtr(S, OpPC);
56814}
56815#endif
56816#ifdef GET_OPCODE_NAMES
56817OP_Unsupported,
56818#endif
56819#ifdef GET_INTERPFN_LIST
56820&Interp_Unsupported,
56821#endif
56822#ifdef GET_INTERPFN_DISPATCHERS
56823PRESERVE_NONE
56824static bool Interp_Unsupported(InterpState &S, CodePtr &PC) {
56825 if (!Unsupported(S, PC))
56826 return false;
56827#if USE_TAILCALLS
56828 MUSTTAIL return InterpNext(S, PC);
56829#else
56830 return true;
56831#endif
56832}
56833#endif
56834#ifdef GET_DISASM
56835case OP_Unsupported:
56836 Text.Op = PrintName("Unsupported");
56837 break;
56838#endif
56839#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56840bool emitUnsupported(SourceInfo);
56841#endif
56842#ifdef GET_LINK_IMPL
56843bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
56844 return emitOp<>(OP_Unsupported, L);
56845}
56846#endif
56847#ifdef GET_EVAL_IMPL
56848bool EvalEmitter::emitUnsupported(SourceInfo L) {
56849 if (!isActive()) return true;
56850 CurrentSource = L;
56851 return Unsupported(S, OpPC);
56852}
56853#endif
56854#ifdef GET_OPCODE_NAMES
56855OP_ZeroSint8,
56856OP_ZeroUint8,
56857OP_ZeroSint16,
56858OP_ZeroUint16,
56859OP_ZeroSint32,
56860OP_ZeroUint32,
56861OP_ZeroSint64,
56862OP_ZeroUint64,
56863OP_ZeroBool,
56864#endif
56865#ifdef GET_INTERPFN_LIST
56866&Interp_ZeroSint8,
56867&Interp_ZeroUint8,
56868&Interp_ZeroSint16,
56869&Interp_ZeroUint16,
56870&Interp_ZeroSint32,
56871&Interp_ZeroUint32,
56872&Interp_ZeroSint64,
56873&Interp_ZeroUint64,
56874&Interp_ZeroBool,
56875#endif
56876#ifdef GET_INTERPFN_DISPATCHERS
56877PRESERVE_NONE
56878static bool Interp_ZeroSint8(InterpState &S, CodePtr &PC) {
56879 if (!Zero<PT_Sint8>(S, PC))
56880 return false;
56881#if USE_TAILCALLS
56882 MUSTTAIL return InterpNext(S, PC);
56883#else
56884 return true;
56885#endif
56886}
56887PRESERVE_NONE
56888static bool Interp_ZeroUint8(InterpState &S, CodePtr &PC) {
56889 if (!Zero<PT_Uint8>(S, PC))
56890 return false;
56891#if USE_TAILCALLS
56892 MUSTTAIL return InterpNext(S, PC);
56893#else
56894 return true;
56895#endif
56896}
56897PRESERVE_NONE
56898static bool Interp_ZeroSint16(InterpState &S, CodePtr &PC) {
56899 if (!Zero<PT_Sint16>(S, PC))
56900 return false;
56901#if USE_TAILCALLS
56902 MUSTTAIL return InterpNext(S, PC);
56903#else
56904 return true;
56905#endif
56906}
56907PRESERVE_NONE
56908static bool Interp_ZeroUint16(InterpState &S, CodePtr &PC) {
56909 if (!Zero<PT_Uint16>(S, PC))
56910 return false;
56911#if USE_TAILCALLS
56912 MUSTTAIL return InterpNext(S, PC);
56913#else
56914 return true;
56915#endif
56916}
56917PRESERVE_NONE
56918static bool Interp_ZeroSint32(InterpState &S, CodePtr &PC) {
56919 if (!Zero<PT_Sint32>(S, PC))
56920 return false;
56921#if USE_TAILCALLS
56922 MUSTTAIL return InterpNext(S, PC);
56923#else
56924 return true;
56925#endif
56926}
56927PRESERVE_NONE
56928static bool Interp_ZeroUint32(InterpState &S, CodePtr &PC) {
56929 if (!Zero<PT_Uint32>(S, PC))
56930 return false;
56931#if USE_TAILCALLS
56932 MUSTTAIL return InterpNext(S, PC);
56933#else
56934 return true;
56935#endif
56936}
56937PRESERVE_NONE
56938static bool Interp_ZeroSint64(InterpState &S, CodePtr &PC) {
56939 if (!Zero<PT_Sint64>(S, PC))
56940 return false;
56941#if USE_TAILCALLS
56942 MUSTTAIL return InterpNext(S, PC);
56943#else
56944 return true;
56945#endif
56946}
56947PRESERVE_NONE
56948static bool Interp_ZeroUint64(InterpState &S, CodePtr &PC) {
56949 if (!Zero<PT_Uint64>(S, PC))
56950 return false;
56951#if USE_TAILCALLS
56952 MUSTTAIL return InterpNext(S, PC);
56953#else
56954 return true;
56955#endif
56956}
56957PRESERVE_NONE
56958static bool Interp_ZeroBool(InterpState &S, CodePtr &PC) {
56959 if (!Zero<PT_Bool>(S, PC))
56960 return false;
56961#if USE_TAILCALLS
56962 MUSTTAIL return InterpNext(S, PC);
56963#else
56964 return true;
56965#endif
56966}
56967#endif
56968#ifdef GET_DISASM
56969case OP_ZeroSint8:
56970 Text.Op = PrintName("ZeroSint8");
56971 break;
56972case OP_ZeroUint8:
56973 Text.Op = PrintName("ZeroUint8");
56974 break;
56975case OP_ZeroSint16:
56976 Text.Op = PrintName("ZeroSint16");
56977 break;
56978case OP_ZeroUint16:
56979 Text.Op = PrintName("ZeroUint16");
56980 break;
56981case OP_ZeroSint32:
56982 Text.Op = PrintName("ZeroSint32");
56983 break;
56984case OP_ZeroUint32:
56985 Text.Op = PrintName("ZeroUint32");
56986 break;
56987case OP_ZeroSint64:
56988 Text.Op = PrintName("ZeroSint64");
56989 break;
56990case OP_ZeroUint64:
56991 Text.Op = PrintName("ZeroUint64");
56992 break;
56993case OP_ZeroBool:
56994 Text.Op = PrintName("ZeroBool");
56995 break;
56996#endif
56997#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
56998bool emitZeroSint8(SourceInfo);
56999bool emitZeroUint8(SourceInfo);
57000bool emitZeroSint16(SourceInfo);
57001bool emitZeroUint16(SourceInfo);
57002bool emitZeroSint32(SourceInfo);
57003bool emitZeroUint32(SourceInfo);
57004bool emitZeroSint64(SourceInfo);
57005bool emitZeroUint64(SourceInfo);
57006bool emitZeroBool(SourceInfo);
57007#endif
57008#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
57009[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
57010#endif
57011#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
57012bool
57013#if defined(GET_EVAL_IMPL)
57014EvalEmitter
57015#else
57016ByteCodeEmitter
57017#endif
57018::emitZero(PrimType T0, SourceInfo I) {
57019 switch (T0) {
57020 case PT_Sint8:
57021 return emitZeroSint8(I);
57022 case PT_Uint8:
57023 return emitZeroUint8(I);
57024 case PT_Sint16:
57025 return emitZeroSint16(I);
57026 case PT_Uint16:
57027 return emitZeroUint16(I);
57028 case PT_Sint32:
57029 return emitZeroSint32(I);
57030 case PT_Uint32:
57031 return emitZeroUint32(I);
57032 case PT_Sint64:
57033 return emitZeroSint64(I);
57034 case PT_Uint64:
57035 return emitZeroUint64(I);
57036 case PT_Bool:
57037 return emitZeroBool(I);
57038 default: llvm_unreachable("invalid type: emitZero");
57039 }
57040 llvm_unreachable("invalid enum value");
57041}
57042#endif
57043#ifdef GET_LINK_IMPL
57044bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
57045 return emitOp<>(OP_ZeroSint8, L);
57046}
57047bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
57048 return emitOp<>(OP_ZeroUint8, L);
57049}
57050bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
57051 return emitOp<>(OP_ZeroSint16, L);
57052}
57053bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
57054 return emitOp<>(OP_ZeroUint16, L);
57055}
57056bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
57057 return emitOp<>(OP_ZeroSint32, L);
57058}
57059bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
57060 return emitOp<>(OP_ZeroUint32, L);
57061}
57062bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
57063 return emitOp<>(OP_ZeroSint64, L);
57064}
57065bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
57066 return emitOp<>(OP_ZeroUint64, L);
57067}
57068bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
57069 return emitOp<>(OP_ZeroBool, L);
57070}
57071#endif
57072#ifdef GET_EVAL_IMPL
57073bool EvalEmitter::emitZeroSint8(SourceInfo L) {
57074 if (!isActive()) return true;
57075 CurrentSource = L;
57076 return Zero<PT_Sint8>(S, OpPC);
57077}
57078bool EvalEmitter::emitZeroUint8(SourceInfo L) {
57079 if (!isActive()) return true;
57080 CurrentSource = L;
57081 return Zero<PT_Uint8>(S, OpPC);
57082}
57083bool EvalEmitter::emitZeroSint16(SourceInfo L) {
57084 if (!isActive()) return true;
57085 CurrentSource = L;
57086 return Zero<PT_Sint16>(S, OpPC);
57087}
57088bool EvalEmitter::emitZeroUint16(SourceInfo L) {
57089 if (!isActive()) return true;
57090 CurrentSource = L;
57091 return Zero<PT_Uint16>(S, OpPC);
57092}
57093bool EvalEmitter::emitZeroSint32(SourceInfo L) {
57094 if (!isActive()) return true;
57095 CurrentSource = L;
57096 return Zero<PT_Sint32>(S, OpPC);
57097}
57098bool EvalEmitter::emitZeroUint32(SourceInfo L) {
57099 if (!isActive()) return true;
57100 CurrentSource = L;
57101 return Zero<PT_Uint32>(S, OpPC);
57102}
57103bool EvalEmitter::emitZeroSint64(SourceInfo L) {
57104 if (!isActive()) return true;
57105 CurrentSource = L;
57106 return Zero<PT_Sint64>(S, OpPC);
57107}
57108bool EvalEmitter::emitZeroUint64(SourceInfo L) {
57109 if (!isActive()) return true;
57110 CurrentSource = L;
57111 return Zero<PT_Uint64>(S, OpPC);
57112}
57113bool EvalEmitter::emitZeroBool(SourceInfo L) {
57114 if (!isActive()) return true;
57115 CurrentSource = L;
57116 return Zero<PT_Bool>(S, OpPC);
57117}
57118#endif
57119#ifdef GET_OPCODE_NAMES
57120OP_ZeroIntAP,
57121#endif
57122#ifdef GET_INTERPFN_LIST
57123&Interp_ZeroIntAP,
57124#endif
57125#ifdef GET_INTERPFN_DISPATCHERS
57126PRESERVE_NONE
57127static bool Interp_ZeroIntAP(InterpState &S, CodePtr &PC) {
57128 {
57129 CodePtr OpPC = PC;
57130 const auto V0 = ReadArg<uint32_t>(S, PC);
57131 if (!ZeroIntAP(S, OpPC, V0))
57132 return false;
57133 }
57134#if USE_TAILCALLS
57135 MUSTTAIL return InterpNext(S, PC);
57136#else
57137 return true;
57138#endif
57139}
57140#endif
57141#ifdef GET_DISASM
57142case OP_ZeroIntAP:
57143 Text.Op = PrintName("ZeroIntAP");
57144 Text.Args.push_back(printArg<uint32_t>(P, PC));
57145 break;
57146#endif
57147#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
57148bool emitZeroIntAP( uint32_t , SourceInfo);
57149#endif
57150#ifdef GET_LINK_IMPL
57151bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
57152 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
57153}
57154#endif
57155#ifdef GET_EVAL_IMPL
57156bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
57157 if (!isActive()) return true;
57158 CurrentSource = L;
57159 return ZeroIntAP(S, OpPC, A0);
57160}
57161#endif
57162#ifdef GET_OPCODE_NAMES
57163OP_ZeroIntAPS,
57164#endif
57165#ifdef GET_INTERPFN_LIST
57166&Interp_ZeroIntAPS,
57167#endif
57168#ifdef GET_INTERPFN_DISPATCHERS
57169PRESERVE_NONE
57170static bool Interp_ZeroIntAPS(InterpState &S, CodePtr &PC) {
57171 {
57172 CodePtr OpPC = PC;
57173 const auto V0 = ReadArg<uint32_t>(S, PC);
57174 if (!ZeroIntAPS(S, OpPC, V0))
57175 return false;
57176 }
57177#if USE_TAILCALLS
57178 MUSTTAIL return InterpNext(S, PC);
57179#else
57180 return true;
57181#endif
57182}
57183#endif
57184#ifdef GET_DISASM
57185case OP_ZeroIntAPS:
57186 Text.Op = PrintName("ZeroIntAPS");
57187 Text.Args.push_back(printArg<uint32_t>(P, PC));
57188 break;
57189#endif
57190#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
57191bool emitZeroIntAPS( uint32_t , SourceInfo);
57192#endif
57193#ifdef GET_LINK_IMPL
57194bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
57195 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
57196}
57197#endif
57198#ifdef GET_EVAL_IMPL
57199bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
57200 if (!isActive()) return true;
57201 CurrentSource = L;
57202 return ZeroIntAPS(S, OpPC, A0);
57203}
57204#endif
57205