2 ; Generic binary operations supporting all sizes
and their various
5 ; Some fairly big pseudorandom numbers we don
't want to compute
6 ; as differences in actual data or code.
8 .set const_int_32, 0x1b94452b
9 .set const_int_m32, -3513208907
10 .set two701867, 2701867
12 ; Other constants that are not differences
20 .syntax no_register_prefix
96 @OC@.w three2767+2,r13
98 @OC@.w -(three2767+1),r13
100 @OC@.w externalsym,r5
119 @OC@.d -0x7ec0cead,r1
120 @OC@.d const_int_m32,r1
121 @OC@.d const_int_32,r1
131 @OC@.d three2767+1,r5
132 @OC@.d three2767+2,r5
134 @OC@.d -(three2767+1),r13
135 @OC@.d -(three2767+2),r13
141 @OC@.d externalsym,r5
157 @OC@.b [r2+[r0].b],r5
158 @OC@.w [r2+[r5].b],r13
159 @OC@.d [r2+[r10].b],r1
165 @OC@.b [r2+[r0+].b],r5
166 @OC@.w [r2+[r5+].b],r13
167 @OC@.d [r2+[r10+].b],r1
169 @OC@.w [r2+[r5+].b],r13
171 @OC@.d [r2+[r10+].b],r1
174 @OC@ r12,[r2+[r10+].b]
183 @OC@.b [r2+[r0].w],r5
184 @OC@.w [r2+[r5].w],r13
185 @OC@.d [r2+[r10].w],r1
191 @OC@.b [r2+[r0+].w],r5
192 @OC@.w [r2+[r5+].w],r13
193 @OC@.d [r2+[r10+].w],r1
195 @OC@.w [r2+[r5+].w],r13
197 @OC@.d [r2+[r10+].w],r1
200 @OC@ r8,[r2+[r10+].w]
212 @OC@.b [r2+[r0].d],r5
213 @OC@.w [r2+[r5].d],r13
214 @OC@.d [r2+[r10].d],r1
220 @OC@.b [r2+[r0+].d],r5
221 @OC@.w [r2+[r5+].d],r13
222 @OC@.d [r2+[r10+].d],r1
224 @OC@.w [r2+[r5+].d],r13
226 @OC@.d [r2+[r10+].d],r1
229 @OC@ r5,[r2+[r10+].d]
233 ; Note that I forgot 16-bit offsets and 32-bit offsets here and later.
234 ; Maybe add them later if it feels necessary.
248 @OC@.b [r2+forty2],r5
249 @OC@.b [r2+mforty2],r5
250 @OC@.b [r2+-forty2],r5
251 @OC@.b [r2+-mforty2],r5
252 @OC@.b [r2-forty2],r5
253 @OC@.b [r2-mforty2],r5
254 @OC@.b [r2+externalsym],r5
256 ; Note that I missed 32-bit offsets (except -32769) here and later.
257 ; Maybe add them later if it feels necessary.
276 @OC@.w [r2+-8856],r13
283 @OC@.w [r2+forty2],r13
284 @OC@.w [r2+mforty2],r13
285 @OC@.w [r2+-forty2],r5
286 @OC@.w [r2-forty2],r5
287 @OC@.w [r2+-mforty2],r5
289 @OC@.w [r2+three2767],r5
290 @OC@.w [r2+three2767+1],r5
291 @OC@.w [r2+three2767+2],r13
292 @OC@.w [r2+-three2767],r13
293 @OC@.w [r2+-(three2767+1)],r13
294 @OC@.w [r2+-(three2767+2)],r5
295 @OC@.w [r2-three2767],r13
296 @OC@.w [r2-(three2767+1)],r13
297 @OC@.w [r2-(three2767+2)],r5
298 @OC@.w [r2+six5535],r5
299 @OC@.w [r2+externalsym],r5
321 @OC@.d [r2+2781868],r1
322 @OC@.d [r2+-2701867],r1
324 @OC@.d [r2+0x9ec0ceac],r1
325 @OC@.d [r2+-0x7ec0cead],r1
326 @OC@.d [r2-0x7ec0cead],r1
327 @OC@.d [r2+const_int_m32],r1
328 @OC@.d [r2+const_int_32],r1
333 @OC@.d [r2+forty2],r5
334 @OC@.d [r2+mforty2],r5
335 @OC@.d [r2-forty2],r5
336 @OC@.d [r2-mforty2],r5
337 @OC@.d [r2+-forty2],r5
338 @OC@.d [r2+-mforty2],r5
340 @OC@.d [r2+three2767],r5
341 @OC@.d [r2+three2767+1],r5
342 @OC@.d [r2+three2767+2],r5
343 @OC@.d [r2+-three2767],r5
344 @OC@.d [r2+-(three2767+1)],r13
345 @OC@.d [r2+-(three2767+2)],r13
346 @OC@.d [r2-three2767],r5
347 @OC@.d [r2-(three2767+1)],r13
348 @OC@.d [r2-(three2767+2)],r13
349 @OC@.d [r2+six5535],r5
350 @OC@.d [r2+six5535+1],r13
351 @OC@.d [r2+two701867],r5
352 @OC@.d [r2+-two701867],r5
353 @OC@.d [r2-two701867],r5
355 @OC@.d [r2+externalsym],r5
378 @OC@ r1,[r2+-2701867]
380 @OC@ r1,[r2+0x9ec0ceac]
381 @OC@ r1,[r2+-0x7ec0cead]
382 @OC@ r1,[r2-0x7ec0cead]
383 @OC@ r1,[r2+const_int_m32]
384 @OC@ r1,[r2+const_int_32]
394 @OC@ r5,[r2+-mforty2]
396 @OC@ r5,[r2+three2767]
397 @OC@ r5,[r2+three2767+1]
398 @OC@ r5,[r2+three2767+2]
399 @OC@ r5,[r2+-three2767]
400 @OC@ r13,[r2+-(three2767+1)]
401 @OC@ r13,[r2+-(three2767+2)]
402 @OC@ r5,[r2-three2767]
403 @OC@ r13,[r2-(three2767+1)]
404 @OC@ r13,[r2-(three2767+2)]
406 @OC@ r13,[r2+six5535+1]
407 @OC@ r5,[r2+two701867]
408 @OC@ r5,[r2+-two701867]
409 @OC@ r5,[r2-two701867]
411 @OC@ r5,[r2+externalsym]
419 @OC@.b [r2+r0.b],r5,r8
420 @OC@.w [r2+r5.b],r13,r8
421 @OC@.d [r2+r10.b],r1,r8
424 @OC@.b [r2+[r0].b],r5,r8
425 @OC@.w [r2+[r5].b],r13,r8
426 @OC@.d [r2+[r10].b],r1,r8
429 @OC@.b [r2+[r0+].b],r5,r8
430 @OC@.w [r2+[r5+].b],r13,r8
431 @OC@.d [r2+[r10+].b],r1,r8
433 @OC@.w [r2+[r5+].b],r13,r8
435 @OC@.d [r2+[r10+].b],r1,r8
439 @OC@.b [r2+r0.w],r5,r8
440 @OC@.w [r2+r5.w],r13,r8
441 @OC@.d [r2+r10.w],r1,r8
444 @OC@.b [r2+[r0].w],r5,r8
445 @OC@.w [r2+[r5].w],r13,r8
446 @OC@.d [r2+[r10].w],r1,r8
449 @OC@.b [r2+[r0+].w],r5,r8
450 @OC@.w [r2+[r5+].w],r13,r8
451 @OC@.d [r2+[r10+].w],r1,r8
453 @OC@.w [r2+[r5+].w],r13,r8
455 @OC@.d [r2+[r10+].w],r1,r8
459 @OC@.b [r2+r0.d],r5,r8
460 @OC@.w [r2+r5.d],r13,r8
461 @OC@.d [r2+r10.d],r1,r8
464 @OC@.b [r2+[r0].d],r5,r8
465 @OC@.w [r2+[r5].d],r13,r8
466 @OC@.d [r2+[r10].d],r1,r8
469 @OC@.b [r2+[r0+].d],r5,r8
470 @OC@.w [r2+[r5+].d],r13,r8
471 @OC@.d [r2+[r10+].d],r1,r8
473 @OC@.w [r2+[r5+].d],r13,r8
475 @OC@.d [r2+[r10+].d],r1,r8
480 @OC@.b [r2+127],r5,r8
481 @OC@.b [r2+128],r5,r8
483 @OC@.b [r2+-127],r5,r8
484 @OC@.b [r2+-128],r5,r8
485 @OC@.b [r2+255],r5,r8
488 @OC@.b [r2+-42],r5,r8
490 @OC@.b [r2+forty2],r5,r8
491 @OC@.b [r2+mforty2],r5,r8
492 @OC@.b [r2+-forty2],r5,r8
493 @OC@.b [r2+-mforty2],r5,r8
494 @OC@.b [r2-forty2],r5,r8
495 @OC@.b [r2-mforty2],r5,r8
496 @OC@.b [r2+externalsym],r5,r8
500 @OC@.w [r2+127],r13,r8
501 @OC@.w [r2+128],r13,r8
502 @OC@.w [r2+-1],r13,r8
504 @OC@.w [r2+-127],r13,r8
505 @OC@.w [r2+-128],r13,r8
506 @OC@.w [r2+-129],r13,r8
507 @OC@.w [r2-127],r13,r8
508 @OC@.w [r2-128],r13,r8
509 @OC@.w [r2-129],r13,r8
510 @OC@.w [r2+255],r13,r8
511 @OC@.w [r2+-255],r13,r8
512 @OC@.w [r2-255],r13,r8
513 @OC@.w [r2+256],r13,r8
514 @OC@.w [r2-256],r13,r8
515 @OC@.w [r2+-8856],r13,r8
516 @OC@.w [r2-8856],r13,r8
517 @OC@.w [r2+8856],r13,r8
519 @OC@.w [r2+42],r13,r8
520 @OC@.w [r2+-42],r13,r8
521 @OC@.w [r2-42],r13,r8
522 @OC@.w [r2+forty2],r13,r8
523 @OC@.w [r2+mforty2],r13,r8
524 @OC@.w [r2+-forty2],r5,r8
525 @OC@.w [r2-forty2],r5,r8
526 @OC@.w [r2+-mforty2],r5,r8
528 @OC@.w [r2+three2767],r5,r8
529 @OC@.w [r2+three2767+1],r5,r8
530 @OC@.w [r2+three2767+2],r13,r8
531 @OC@.w [r2+-three2767],r13,r8
532 @OC@.w [r2+-(three2767+1)],r13,r8
533 @OC@.w [r2+-(three2767+2)],r5,r8
534 @OC@.w [r2-three2767],r13,r8
535 @OC@.w [r2-(three2767+1)],r13,r8
536 @OC@.w [r2-(three2767+2)],r5,r8
537 @OC@.w [r2+six5535],r5,r8
538 @OC@.w [r2+externalsym],r5,r8
542 @OC@.d [r2+127],r1,r8
543 @OC@.d [r2+128],r1,r8
546 @OC@.d [r2+-127],r1,r8
547 @OC@.d [r2+-128],r1,r8
548 @OC@.d [r2-127],r1,r8
549 @OC@.d [r2-128],r1,r8
550 @OC@.d [r2+255],r1,r8
551 @OC@.d [r2+-255],r1,r8
552 @OC@.d [r2-255],r1,r8
553 @OC@.d [r2+256],r1,r8
554 @OC@.d [r2-256],r1,r8
555 @OC@.d [r2-8856],r1,r8
556 @OC@.d [r2+-256],r1,r8
557 @OC@.d [r2+-8856],r1,r8
558 @OC@.d [r2+8856],r1,r8
560 @OC@.d [r2+2781868],r1,r8
561 @OC@.d [r2+-2701867],r1,r8
563 @OC@.d [r2+0x9ec0ceac],r1,r8
564 @OC@.d [r2+-0x7ec0cead],r1,r8
565 @OC@.d [r2-0x7ec0cead],r1,r8
566 @OC@.d [r2+const_int_m32],r1,r8
567 @OC@.d [r2+const_int_32],r1,r8
569 @OC@.d [r2+42],r13,r8
571 @OC@.d [r2+-42],r5,r8
572 @OC@.d [r2+forty2],r5,r8
573 @OC@.d [r2+mforty2],r5,r8
574 @OC@.d [r2-forty2],r5,r8
575 @OC@.d [r2-mforty2],r5,r8
576 @OC@.d [r2+-forty2],r5,r8
577 @OC@.d [r2+-mforty2],r5,r8
579 @OC@.d [r2+three2767],r5,r8
580 @OC@.d [r2+three2767+1],r5,r8
581 @OC@.d [r2+three2767+2],r5,r8
582 @OC@.d [r2+-three2767],r5,r8
583 @OC@.d [r2+-(three2767+1)],r13,r8
584 @OC@.d [r2+-(three2767+2)],r13,r8
585 @OC@.d [r2-three2767],r5,r8
586 @OC@.d [r2-(three2767+1)],r13,r8
587 @OC@.d [r2-(three2767+2)],r13,r8
588 @OC@.d [r2+six5535],r5,r8
589 @OC@.d [r2+six5535+1],r13,r8
590 @OC@.d [r2+two701867],r5,r8
591 @OC@.d [r2+-two701867],r5,r8
592 @OC@.d [r2-two701867],r5,r8
594 @OC@.d [r2+externalsym],r5,r8
602 @OC@.b [r12=r2+r0.b],r5
603 @OC@.w [r12=r2+r5.b],r13
604 @OC@.d [r12=r2+r10.b],r1
606 @OC@ r13,[r12=r2+r5.b]
607 @OC@ r1,[r12=r2+r10.b]
610 @OC@.b [r12=r2+[r0].b],r5
611 @OC@.w [r12=r2+[r5].b],r13
612 @OC@.d [r12=r2+[r10].b],r1
614 @OC@ r4,[r12=r2+[r5].b]
615 @OC@ r6,[r12=r2+[r10].b]
618 @OC@.b [r12=r2+[r0+].b],r5
619 @OC@.w [r12=r2+[r5+].b],r13
620 @OC@.d [r12=r2+[r10+].b],r1
622 @OC@.w [r12=r2+[r5+].b],r13
624 @OC@.d [r12=r2+[r10+].b],r1
626 @OC@ r3,[r12=r2+[r5+].b]
627 @OC@ r2,[r12=r2+[r10+].b]
631 @OC@.b [r12=r2+r0.w],r5
632 @OC@.w [r12=r2+r5.w],r13
633 @OC@.d [r12=r2+r10.w],r1
635 @OC@ r5,[r12=r2+r5.w]
636 @OC@ r8,[r12=r2+r10.w]
639 @OC@.b [r12=r2+[r0].w],r5
640 @OC@.w [r12=r2+[r5].w],r13
641 @OC@.d [r12=r2+[r10].w],r1
643 @OC@ r4,[r12=r2+[r5].w]
644 @OC@ r3,[r12=r2+[r10].w]
647 @OC@.b [r12=r2+[r0+].w],r5
648 @OC@.w [r12=r2+[r5+].w],r13
649 @OC@.d [r12=r2+[r10+].w],r1
651 @OC@.w [r12=r2+[r5+].w],r13
653 @OC@.d [r12=r2+[r10+].w],r1
655 @OC@ r2,[r12=r2+[r5+].w]
656 @OC@ r7,[r12=r2+[r10+].w]
660 @OC@.b [r12=r2+r0.d],r5
661 @OC@.w [r12=r2+r5.d],r13
662 @OC@.d [r12=r2+r10.d],r1
664 @OC@ r4,[r12=r2+r5.d]
665 @OC@ r8,[r12=r2+r10.d]
668 @OC@.b [r12=r2+[r0].d],r5
669 @OC@.w [r12=r2+[r5].d],r13
670 @OC@.d [r12=r2+[r10].d],r1
672 @OC@ r2,[r12=r2+[r5].d]
673 @OC@ r0,[r12=r2+[r10].d]
676 @OC@.b [r12=r2+[r0+].d],r5
677 @OC@.w [r12=r2+[r5+].d],r13
678 @OC@.d [r12=r2+[r10+].d],r1
680 @OC@.w [r12=r2+[r5+].d],r13
682 @OC@.d [r12=r2+[r10+].d],r1
684 @OC@ r3,[r12=r2+[r5+].d]
685 @OC@ r2,[r12=r2+[r10+].d]
690 @OC@.b [r12=r2+127],r5
691 @OC@.b [r12=r2+128],r5
692 @OC@.b [r12=r2+-1],r5
693 @OC@.b [r12=r2+-127],r5
694 @OC@.b [r12=r2+-128],r5
695 @OC@.b [r12=r2+255],r5
697 @OC@.b [r12=r2+42],r5
698 @OC@.b [r12=r2+-42],r5
699 @OC@.b [r12=r2-42],r5
700 @OC@.b [r12=r2+forty2],r5
701 @OC@.b [r12=r2+mforty2],r5
702 @OC@.b [r12=r2+-forty2],r5
703 @OC@.b [r12=r2+-mforty2],r5
704 @OC@.b [r12=r2-forty2],r5
705 @OC@.b [r12=r2-mforty2],r5
706 @OC@.b [r12=r2+externalsym],r5
708 @OC@.w [r12=r2+0],r13
709 @OC@.w [r12=r2+1],r13
710 @OC@.w [r12=r2+127],r13
711 @OC@.w [r12=r2+128],r13
712 @OC@.w [r12=r2+-1],r13
713 @OC@.w [r12=r2-1],r13
714 @OC@.w [r12=r2+-127],r13
715 @OC@.w [r12=r2+-128],r13
716 @OC@.w [r12=r2+-129],r13
717 @OC@.w [r12=r2-127],r13
718 @OC@.w [r12=r2-128],r13
719 @OC@.w [r12=r2-129],r13
720 @OC@.w [r12=r2+255],r13
721 @OC@.w [r12=r2+-255],r13
722 @OC@.w [r12=r2-255],r13
723 @OC@.w [r12=r2+256],r13
724 @OC@.w [r12=r2-256],r13
725 @OC@.w [r12=r2+-8856],r13
726 @OC@.w [r12=r2-8856],r13
727 @OC@.w [r12=r2+8856],r13
729 @OC@.w [r12=r2+42],r13
730 @OC@.w [r12=r2+-42],r13
731 @OC@.w [r12=r2-42],r13
732 @OC@.w [r12=r2+forty2],r13
733 @OC@.w [r12=r2+mforty2],r13
734 @OC@.w [r12=r2+-forty2],r5
735 @OC@.w [r12=r2-forty2],r5
736 @OC@.w [r12=r2+-mforty2],r5
738 @OC@.w [r12=r2+three2767],r5
739 @OC@.w [r12=r2+three2767+1],r5
740 @OC@.w [r12=r2+three2767+2],r13
741 @OC@.w [r12=r2+-three2767],r13
742 @OC@.w [r12=r2+-(three2767+1)],r13
743 @OC@.w [r12=r2+-(three2767+2)],r5
744 @OC@.w [r12=r2-three2767],r13
745 @OC@.w [r12=r2-(three2767+1)],r13
746 @OC@.w [r12=r2-(three2767+2)],r5
747 @OC@.w [r12=r2+six5535],r5
748 @OC@.w [r12=r2+externalsym],r5
752 @OC@.d [r12=r2+127],r1
753 @OC@.d [r12=r2+128],r1
754 @OC@.d [r12=r2+-1],r1
756 @OC@.d [r12=r2+-127],r1
757 @OC@.d [r12=r2+-128],r1
758 @OC@.d [r12=r2-127],r1
759 @OC@.d [r12=r2-128],r1
760 @OC@.d [r12=r2+255],r1
761 @OC@.d [r12=r2+-255],r1
762 @OC@.d [r12=r2-255],r1
763 @OC@.d [r12=r2+256],r1
764 @OC@.d [r12=r2-256],r1
765 @OC@.d [r12=r2-8856],r1
766 @OC@.d [r12=r2+-256],r1
767 @OC@.d [r12=r2+-8856],r1
768 @OC@.d [r12=r2+8856],r1
770 @OC@.d [r12=r2+2781868],r1
771 @OC@.d [r12=r2+-2701867],r1
773 @OC@.d [r12=r2+0x9ec0ceac],r1
774 @OC@.d [r12=r2+-0x7ec0cead],r1
775 @OC@.d [r12=r2-0x7ec0cead],r1
776 @OC@.d [r12=r2+const_int_m32],r1
777 @OC@.d [r12=r2+const_int_32],r1
779 @OC@.d [r12=r2+42],r13
780 @OC@.d [r12=r2-42],r5
781 @OC@.d [r12=r2+-42],r5
782 @OC@.d [r12=r2+forty2],r5
783 @OC@.d [r12=r2+mforty2],r5
784 @OC@.d [r12=r2-forty2],r5
785 @OC@.d [r12=r2-mforty2],r5
786 @OC@.d [r12=r2+-forty2],r5
787 @OC@.d [r12=r2+-mforty2],r5
789 @OC@.d [r12=r2+three2767],r5
790 @OC@.d [r12=r2+three2767+1],r5
791 @OC@.d [r12=r2+three2767+2],r5
792 @OC@.d [r12=r2+-three2767],r5
793 @OC@.d [r12=r2+-(three2767+1)],r13
794 @OC@.d [r12=r2+-(three2767+2)],r13
795 @OC@.d [r12=r2-three2767],r5
796 @OC@.d [r12=r2-(three2767+1)],r13
797 @OC@.d [r12=r2-(three2767+2)],r13
798 @OC@.d [r12=r2+six5535],r5
799 @OC@.d [r12=r2+six5535+1],r13
800 @OC@.d [r12=r2+two701867],r5
801 @OC@.d [r12=r2+-two701867],r5
802 @OC@.d [r12=r2-two701867],r5
804 @OC@.d [r12=r2+externalsym],r5
812 @OC@ r1,[r12=r2+-127]
813 @OC@ r1,[r12=r2+-128]
817 @OC@ r1,[r12=r2+-255]
821 @OC@ r1,[r12=r2-8856]
822 @OC@ r1,[r12=r2+-256]
823 @OC@ r1,[r12=r2+-8856]
824 @OC@ r1,[r12=r2+8856]
826 @OC@ r1,[r12=r2+2781868]
827 @OC@ r1,[r12=r2+-2701867]
829 @OC@ r1,[r12=r2+0x9ec0ceac]
830 @OC@ r1,[r12=r2+-0x7ec0cead]
831 @OC@ r1,[r12=r2-0x7ec0cead]
832 @OC@ r1,[r12=r2+const_int_m32]
833 @OC@ r1,[r12=r2+const_int_32]
838 @OC@ r5,[r12=r2+forty2]
839 @OC@ r5,[r12=r2+mforty2]
840 @OC@ r5,[r12=r2-forty2]
841 @OC@ r5,[r12=r2-mforty2]
842 @OC@ r5,[r12=r2+-forty2]
843 @OC@ r5,[r12=r2+-mforty2]
845 @OC@ r5,[r12=r2+three2767]
846 @OC@ r5,[r12=r2+three2767+1]
847 @OC@ r5,[r12=r2+three2767+2]
848 @OC@ r5,[r12=r2+-three2767]
849 @OC@ r13,[r12=r2+-(three2767+1)]
850 @OC@ r13,[r12=r2+-(three2767+2)]
851 @OC@ r5,[r12=r2-three2767]
852 @OC@ r13,[r12=r2-(three2767+1)]
853 @OC@ r13,[r12=r2-(three2767+2)]
854 @OC@ r5,[r12=r2+six5535]
855 @OC@ r13,[r12=r2+six5535+1]
856 @OC@ r5,[r12=r2+two701867]
857 @OC@ r5,[r12=r2+-two701867]
858 @OC@ r5,[r12=r2-two701867]
860 @OC@ r5,[r12=r2+externalsym]
880 @OC@.b [externalsym],r5
881 @OC@.w [externalsym],r4
882 @OC@.d [externalsym],r7
884 @OC@ r4,[externalsym]
885 @OC@ r7,[externalsym]
902 @OC@.b [[r9+]],r7,r10
906 @OC@.b [externalsym],r5,r7
907 @OC@.w [externalsym],r4,r9
908 @OC@.d [externalsym],r7,r9
910 @OC@.b [notstart],r5,r9
911 @OC@.w [notstart],r4,r12
912 @OC@.d [notstart],r7,r9