Lines Matching refs:r0

400   masm.Add(r0, r0, r1);
403 "add r0, r1\n");
414 COMPARE_BOTH(Orn(r0, r1, 0), "mvn r0, #0\n");
415 COMPARE_BOTH(Orn(r0, r0, 0xffffffff), "");
420 // Use r0 as the temporary register.
421 COMPARE_A32(Orn(r0, r1, 1),
422 "mvn r0, #1\n"
423 "orr r0, r1, r0\n");
425 COMPARE_A32(Orns(r0, r0, 1),
427 "orrs r0, ip\n");
430 COMPARE_BOTH(Orn(r0, r1, 0x00ffffff), "orr r0, r1, #0xff000000\n");
431 COMPARE_BOTH(Orn(r0, r1, 0xff00ffff), "orr r0, r1, #0xff0000\n");
432 COMPARE_BOTH(Orns(r0, r1, 0x00ffffff), "orrs r0, r1, #0xff000000\n");
434 COMPARE_A32(Orns(r0, r1, 0xabcd2345),
437 "mvn r0, ip\n"
438 "orrs r0, r1, r0\n");
439 COMPARE_T32(Orn(r0, r1, 0xabcd2345),
440 "mov r0, #9029\n"
441 "movt r0, #43981\n"
442 "orn r0, r1, r0\n");
447 // Use r0 as the temporary register.
448 COMPARE_A32(Orn(r0, r1, r2),
449 "mvn r0, r2\n"
450 "orr r0, r1, r0\n");
452 COMPARE_A32(Orn(r0, r0, r1),
454 "orr r0, ip\n");
455 // Use r0 as the temporary register.
456 COMPARE_A32(Orn(r0, r1, r0),
457 "mvn r0, r0\n"
458 "orr r0, r1, r0\n");
460 COMPARE_A32(Orn(r0, r0, r0),
461 "mvn ip, r0\n"
462 "orr r0, ip\n");
467 // Use r0 as the temporary register.
468 COMPARE_A32(Orn(r0, r1, Operand(r2, LSL, 1)),
469 "mvn r0, r2, lsl #1\n"
470 "orr r0, r1, r0\n");
472 COMPARE_A32(Orns(r0, r0, Operand(r2, LSR, 2)),
474 "orrs r0, ip\n");
478 // Use r0 as the temporary register.
479 COMPARE_A32(Orn(r0, r1, Operand(r2, LSL, r3)),
480 "mvn r0, r2, lsl r3\n"
481 "orr r0, r1, r0\n");
482 COMPARE_T32(Orn(r0, r1, Operand(r2, LSL, r3)),
483 "lsl r0, r2, r3\n"
484 "orn r0, r1, r0\n");
486 COMPARE_A32(Orns(r0, r0, Operand(r2, LSR, r3)),
488 "orrs r0, ip\n");
489 COMPARE_T32(Orns(r0, r0, Operand(r2, LSR, r3)),
491 "orns r0, ip\n");
493 COMPARE_A32(Orn(r0, r0, Operand(r0, ASR, r3)),
494 "mvn ip, r0, asr r3\n"
495 "orr r0, ip\n");
496 COMPARE_T32(Orn(r0, r0, Operand(r0, ASR, r3)),
497 "asr ip, r0, r3\n"
498 "orn r0, ip\n");
509 COMPARE_T32(Rsc(r0, r1, 1),
510 "mvn r0, r1\n"
511 "adc r0, #1\n");
513 COMPARE_T32(Rscs(r0, r0, 2),
514 "mvn r0, r0\n"
515 "adcs r0, #2\n");
520 COMPARE_A32(Rsc(r0, r1, 0x00ffffff),
521 "mvn r0, #4278190080\n"
522 "rsc r0, r1, r0\n");
523 COMPARE_T32(Rscs(r0, r1, 0x00ffffff),
524 "mvn r0, r1\n"
526 "adcs r0, ip\n");
527 COMPARE_A32(Rsc(r0, r0, 0x00ffffff),
529 "rsc r0, ip\n");
530 COMPARE_T32(Rscs(r0, r0, 0x00ffffff),
531 "mvn r0, r0\n"
533 "adcs r0, ip\n");
535 COMPARE_A32(Rsc(r0, r1, 0xabcd2345),
536 "mov r0, #9029\n"
537 "movt r0, #43981\n"
538 "rsc r0, r1, r0\n");
539 COMPARE_T32(Rscs(r0, r1, 0xabcd2345),
540 "mvn r0, r1\n"
543 "sbcs r0, ip\n");
544 COMPARE_A32(Rsc(r0, r0, 0xabcd2345),
547 "rsc r0, ip\n");
548 COMPARE_T32(Rscs(r0, r0, 0xabcd2345),
549 "mvn r0, r0\n"
552 "sbcs r0, ip\n");
557 COMPARE_T32(Rscs(r0, r1, r2),
558 "mvn r0, r1\n"
559 "adcs r0, r2\n");
560 // Use r0 as the temporary register.
561 COMPARE_T32(Rscs(r0, r1, r1),
562 "mvn r0, r1\n"
563 "adcs r0, r1\n");
565 COMPARE_T32(Rscs(r0, r0, r0),
566 "mvn ip, r0\n"
567 "adcs r0, ip, r0\n");
572 COMPARE_T32(Rsc(r0, r1, Operand(r2, LSL, 1)),
573 "mvn r0, r1\n"
574 "adc r0, r2, lsl #1\n");
576 COMPARE_T32(Rscs(r0, r1, Operand(r0, LSR, 2)),
578 "adcs r0, ip, r0, lsr #2\n");
579 // Use r0 as the temporary register.
580 COMPARE_T32(Rsc(r0, r1, Operand(r1, ASR, 3)),
581 "mvn r0, r1\n"
582 "adc r0, r1, asr #3\n");
584 COMPARE_T32(Rscs(r0, r0, Operand(r0, ROR, 4)),
585 "mvn ip, r0\n"
586 "adcs r0, ip, r0, ror #4\n");
592 COMPARE_T32(Rsc(r0, r1, Operand(r2, LSL, r3)),
593 "lsl r0, r2, r3\n"
595 "adc r0, ip, r0\n");
596 // Use r0 and ip as the temporary register.
597 COMPARE_T32(Rscs(r0, r1, Operand(r1, LSR, r3)),
598 "lsr r0, r1, r3\n"
600 "adcs r0, ip, r0\n");
601 // Use ip and r0 as the temporary register.
602 COMPARE_T32(Rsc(r0, r0, Operand(r2, ASR, r3)),
604 "mvn r0, r0\n"
605 "adc r0, ip\n");
606 // Use ip and r0 as the temporary register.
607 COMPARE_T32(Rscs(r0, r0, Operand(r0, ROR, r3)),
608 "ror ip, r0, r3\n"
609 "mvn r0, r0\n"
610 "adcs r0, ip\n");
611 // Use ip and r0 as the temporary register.
612 COMPARE_T32(Rsc(r0, r0, Operand(r0, LSL, r0)),
613 "lsl ip, r0, r0\n"
614 "mvn r0, r0\n"
615 "adc r0, ip\n");
624 COMPARE_T32(Adc(r0, r1, Operand(r2, LSL, r3)),
625 "lsl r0, r2, r3\n"
626 "adc r0, r1, r0\n");
627 COMPARE_T32(Adcs(r0, r0, Operand(r2, LSR, r3)),
629 "adcs r0, ip\n");
630 COMPARE_T32(Add(r0, r0, Operand(r0, ASR, r3)),
631 "asr ip, r0, r3\n"
632 "add r0, ip\n");
633 COMPARE_T32(Adds(r0, r0, Operand(r0, ROR, r0)),
634 "ror ip, r0, r0\n"
635 "adds r0, ip\n");
644 COMPARE_BOTH(Ldr(r0, MemOperand(r1, 0xfff123)),
645 "add r0, r1, #1044480\n" // #0xff000
646 "add r0, #15728640\n" // #0x00f00000
647 "ldr r0, [r0, #291]\n"); // #0x123
648 COMPARE_BOTH(Ldr(r0, MemOperand(r1, 0xff123)),
649 "add r0, r1, #1044480\n" // #0xff000
650 "ldr r0, [r0, #291]\n"); // #0x123
651 COMPARE_BOTH(Ldr(r0, MemOperand(r1, -0xff123)),
652 "sub r0, r1, #1048576\n" // #0x100000
653 "ldr r0, [r0, #3805]\n"); // #0xedd
655 COMPARE_A32(Ldr(r0, MemOperand(r1, 0xfff123, PreIndex)),
658 "ldr r0, [r1, #291]!\n"); // #0x123
659 COMPARE_A32(Ldr(r0, MemOperand(r1, 0xff123, PreIndex)),
661 "ldr r0, [r1, #291]!\n"); // #0x123
662 COMPARE_A32(Ldr(r0, MemOperand(r1, -0xff123, PreIndex)),
664 "ldr r0, [r1, #3805]!\n"); // #0xedd
666 COMPARE_T32(Ldr(r0, MemOperand(r1, 0xfff12, PreIndex)),
669 "ldr r0, [r1, #18]!\n"); // #0x12
670 COMPARE_T32(Ldr(r0, MemOperand(r1, 0xff12, PreIndex)),
672 "ldr r0, [r1, #18]!\n"); // #0x12
673 COMPARE_T32(Ldr(r0, MemOperand(r1, -0xff12, PreIndex)),
675 "ldr r0, [r1, #238]!\n"); // #0xee
677 COMPARE_A32(Ldr(r0, MemOperand(r1, 0xfff123, PostIndex)),
678 "ldr r0, [r1], #291\n" // #0x123
681 COMPARE_A32(Ldr(r0, MemOperand(r1, 0xff123, PostIndex)),
682 "ldr r0, [r1], #291\n" // #0x123
684 COMPARE_A32(Ldr(r0, MemOperand(r1, -0xff123, PostIndex)),
685 "ldr r0, [r1], #3805\n" // #0xedd
688 COMPARE_T32(Ldr(r0, MemOperand(r1, 0xfff12, PostIndex)),
689 "ldr r0, [r1], #18\n" // #0x12
692 COMPARE_T32(Ldr(r0, MemOperand(r1, 0xff12, PostIndex)),
693 "ldr r0, [r1], #18\n" // #0x12
695 COMPARE_T32(Ldr(r0, MemOperand(r1, -0xff12, PostIndex)),
696 "ldr r0, [r1], #238\n" // #0xee
699 COMPARE_A32(Ldrh(r0, MemOperand(r1, 0xfff123)),
700 "add r0, r1, #61696\n" // #0xf100
701 "add r0, #16711680\n" // #0x00ff0000
702 "ldrh r0, [r0, #35]\n"); // #0x23
703 COMPARE_T32(Ldrh(r0, MemOperand(r1, 0xfff123)),
704 "add r0, r1, #1044480\n" // #0xff000
705 "add r0, #15728640\n" // #0x00f00000
706 "ldrh r0, [r0, #291]\n"); // #0x123
708 COMPARE_A32(Ldrh(r0, MemOperand(r1, 0xff123)),
709 "add r0, r1, #61696\n" // #0xf100
710 "add r0, #983040\n" // #0x000f0000
711 "ldrh r0, [r0, #35]\n"); // #0x23
712 COMPARE_T32(Ldrh(r0, MemOperand(r1, 0xff123)),
713 "add r0, r1, #1044480\n" // #0xff000
714 "ldrh r0, [r0, #291]\n"); // #0x123
715 COMPARE_A32(Ldrh(r0, MemOperand(r1, -0xff123)),
716 "sub r0, r1, #61952\n" // #0xf200
717 "sub r0, #983040\n" // #0x000f0000
718 "ldrh r0, [r0, #221]\n"); // #0xdd
719 COMPARE_T32(Ldrh(r0, MemOperand(r1, -0xff123)),
720 "sub r0, r1, #1048576\n" // #0x100000
721 "ldrh r0, [r0, #3805]\n"); // #0xedd
723 MUST_FAIL_TEST_BOTH(Ldr(r0, MemOperand(r0, 0xfff12, PreIndex)),
725 MUST_FAIL_TEST_BOTH(Ldr(r0, MemOperand(r0, 0xfff12, PostIndex)),
735 COMPARE_BOTH(Ldr(r0, MemOperand(r1, r8, Offset)), "ldr r0, [r1, r8]\n");
739 COMPARE_T32(Ldr(r0, MemOperand(r0, minus, r0, Offset)),
740 "sub r0, r0\n"
741 "ldr r0, [r0]\n");
743 COMPARE_T32(Ldr(r0, MemOperand(r0, minus, r1, Offset)),
744 "sub r0, r1\n"
745 "ldr r0, [r0]\n");
747 COMPARE_T32(Ldr(r0, MemOperand(r1, minus, r0, Offset)),
748 "sub r0, r1, r0\n"
749 "ldr r0, [r0]\n");
751 COMPARE_T32(Ldr(r0, MemOperand(r1, minus, r2, Offset)),
752 "sub r0, r1, r2\n"
753 "ldr r0, [r0]\n");
756 COMPARE_T32(Ldr(r0, MemOperand(r1, minus, r2, PreIndex)),
758 "ldr r0, [r1]\n");
761 COMPARE_T32(Ldr(r0, MemOperand(r1, minus, r2, PostIndex)),
762 "ldr r0, [r1]\n"
770 COMPARE_BOTH(Ldr(pc, MemOperand(r0, r0, Offset)), "ldr pc, [r0, r0]\n");
771 COMPARE_A32(Ldr(pc, MemOperand(r0, r0, PreIndex)), "ldr pc, [r0, r0]!\n");
772 COMPARE_T32(Ldr(pc, MemOperand(r0, r0, PreIndex)),
773 "add r0, r0\n"
774 "ldr pc, [r0]\n");
775 COMPARE_A32(Ldr(pc, MemOperand(r0, r0, PostIndex)), "ldr pc, [r0], r0\n");
776 COMPARE_T32(Ldr(pc, MemOperand(r0, r0, PostIndex)),
777 "ldr pc, [r0]\n"
778 "add r0, r0\n");
781 COMPARE_A32(Ldr(r0, MemOperand(pc, r0, Offset)), "ldr r0, [pc, r0]\n");
782 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(pc, r0, Offset)),
788 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(pc, r0, PreIndex)),
792 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(pc, r0, PostIndex)),
798 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(r0, minus, pc, Offset)),
801 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(r0, pc, PreIndex)),
804 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(r0, pc, PostIndex)),
808 MUST_FAIL_TEST_BOTH(Ldr(r0, MemOperand(r0, Sign(plus), pc, Offset)),
813 SHOULD_FAIL_TEST_A32(Ldr(r0, MemOperand(pc, r0, PreIndex)));
814 SHOULD_FAIL_TEST_A32(Ldr(r0, MemOperand(pc, r0, PostIndex)));
818 SHOULD_FAIL_TEST_A32(Ldr(r0, MemOperand(r0, r1, PreIndex)));
819 SHOULD_FAIL_TEST_A32(Ldr(r0, MemOperand(r0, r1, PostIndex)));
820 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(r0, r1, PreIndex)),
822 MUST_FAIL_TEST_T32(Ldr(r0, MemOperand(r0, r1, PostIndex)),
833 COMPARE_BOTH(Str(r0, MemOperand(r1, r8, Offset)), "str r0, [r1, r8]\n");
836 COMPARE_T32(Str(r0, MemOperand(r0, minus, r0, Offset)),
837 "sub ip, r0, r0\n"
838 "str r0, [ip]\n");
840 COMPARE_T32(Str(r0, MemOperand(r0, minus, r1, Offset)),
841 "sub ip, r0, r1\n"
842 "str r0, [ip]\n");
844 COMPARE_T32(Str(r0, MemOperand(r1, minus, r0, Offset)),
845 "sub ip, r1, r0\n"
846 "str r0, [ip]\n");
848 COMPARE_T32(Str(r0, MemOperand(r1, minus, r2, Offset)),
850 "str r0, [ip]\n");
853 COMPARE_T32(Str(r0, MemOperand(r1, minus, r2, PreIndex)),
855 "str r0, [r1]\n");
858 COMPARE_T32(Str(r0, MemOperand(r1, minus, r2, PostIndex)),
859 "str r0, [r1]\n"
865 COMPARE_A32(Str(pc, MemOperand(r0, r0, Offset)), "str pc, [r0, r0]\n");
866 COMPARE_A32(Str(pc, MemOperand(r0, r0, PreIndex)), "str pc, [r0, r0]!\n");
867 COMPARE_A32(Str(pc, MemOperand(r0, r0, PostIndex)), "str pc, [r0], r0\n");
868 MUST_FAIL_TEST_T32(Str(pc, MemOperand(r0, r0, Offset)),
870 MUST_FAIL_TEST_T32(Str(pc, MemOperand(r0, r0, PreIndex)),
872 MUST_FAIL_TEST_T32(Str(pc, MemOperand(r0, r0, PostIndex)),
876 COMPARE_A32(Str(r0, MemOperand(pc, r0, Offset)), "str r0, [pc, r0]\n");
877 MUST_FAIL_TEST_T32(Str(r0, MemOperand(pc, r0, Offset)),
883 MUST_FAIL_TEST_T32(Str(r0, MemOperand(pc, r0, PreIndex)),
887 MUST_FAIL_TEST_T32(Str(r0, MemOperand(pc, r0, PostIndex)),
893 MUST_FAIL_TEST_T32(Str(r0, MemOperand(r0, minus, pc, Offset)),
896 MUST_FAIL_TEST_T32(Str(r0, MemOperand(r0, pc, PreIndex)),
899 MUST_FAIL_TEST_T32(Str(r0, MemOperand(r0, pc, PostIndex)),
903 MUST_FAIL_TEST_BOTH(Str(r0, MemOperand(r0, Sign(plus), pc, Offset)),
908 SHOULD_FAIL_TEST_A32(Str(r0, MemOperand(pc, r0, PreIndex)));
909 SHOULD_FAIL_TEST_A32(Str(r0, MemOperand(pc, r0, PostIndex)));
913 SHOULD_FAIL_TEST_A32(Str(r0, MemOperand(r0, r1, PreIndex)));
914 SHOULD_FAIL_TEST_A32(Str(r0, MemOperand(r0, r1, PostIndex)));
915 MUST_FAIL_TEST_T32(Str(r0, MemOperand(r0, r1, PreIndex)),
917 MUST_FAIL_TEST_T32(Str(r0, MemOperand(r0, r1, PostIndex)),
929 COMPARE_BOTH(Ldrd(r0, r1, MemOperand(r3)), "ldrd r0, r1, [r3]\n");
935 MUST_FAIL_TEST_A32(Ldrd(r0, r2, MemOperand(r1)),
937 COMPARE_T32(Ldrd(r0, r2, MemOperand(r1)), "ldrd r0, r2, [r1]\n");
939 COMPARE_BOTH(Ldrd(r0, r1, MemOperand(r2)), "ldrd r0, r1, [r2]\n");
943 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 1020)),
944 "add r0, r2, #1020\n"
945 "ldrd r0, r1, [r0]\n");
946 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 1020)), "ldrd r0, r1, [r2, #1020]\n");
947 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -1020)),
948 "sub r0, r2, #1020\n"
949 "ldrd r0, r1, [r0]\n");
950 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -1020)),
951 "ldrd r0, r1, [r2, #-1020]\n");
953 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcc)),
954 "add r0, r2, #43776\n"
955 "ldrd r0, r1, [r0, #204]\n");
956 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcc)),
957 "add r0, r2, #43008\n"
958 "ldrd r0, r1, [r0, #972]\n");
959 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcc)),
960 "sub r0, r2, #44032\n"
961 "ldrd r0, r1, [r0, #52]\n");
962 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcc)),
963 "sub r0, r2, #44032\n"
964 "ldrd r0, r1, [r0, #52]\n");
965 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec)),
966 "add r0, r2, #52480\n"
967 "add r0, #11206656\n"
968 "ldrd r0, r1, [r0, #236]\n");
969 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec)),
970 "add r0, r2, #248832\n"
971 "add r0, #11010048\n"
972 "ldrd r0, r1, [r0, #492]\n");
973 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec)),
974 "sub r0, r2, #52736\n"
975 "sub r0, #11206656\n"
976 "ldrd r0, r1, [r0, #20]\n");
977 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec)),
978 "sub r0, r2, #774144\n"
979 "sub r0, #10485760\n"
980 "ldrd r0, r1, [r0, #532]\n");
982 COMPARE_A32(Ldrd(r0, r1, MemOperand(r0, 0xabcc)),
983 "add r1, r0, #43776\n"
984 "ldrd r0, r1, [r1, #204]\n");
985 COMPARE_T32(Ldrd(r0, r1, MemOperand(r0, 0xabcc)),
986 "add r1, r0, #43008\n"
987 "ldrd r0, r1, [r1, #972]\n");
988 COMPARE_A32(Ldrd(r0, r1, MemOperand(r0, -0xabcc)),
989 "sub r1, r0, #44032\n"
990 "ldrd r0, r1, [r1, #52]\n");
991 COMPARE_T32(Ldrd(r0, r1, MemOperand(r0, -0xabcc)),
992 "sub r1, r0, #44032\n"
993 "ldrd r0, r1, [r1, #52]\n");
994 COMPARE_A32(Ldrd(r0, r1, MemOperand(r0, 0xabcdec)),
995 "add r1, r0, #52480\n"
997 "ldrd r0, r1, [r1, #236]\n");
998 COMPARE_T32(Ldrd(r0, r1, MemOperand(r0, 0xabcdec)),
999 "add r1, r0, #248832\n"
1001 "ldrd r0, r1, [r1, #492]\n");
1002 COMPARE_A32(Ldrd(r0, r1, MemOperand(r0, -0xabcdec)),
1003 "sub r1, r0, #52736\n"
1005 "ldrd r0, r1, [r1, #20]\n");
1006 COMPARE_T32(Ldrd(r0, r1, MemOperand(r0, -0xabcdec)),
1007 "sub r1, r0, #774144\n"
1009 "ldrd r0, r1, [r1, #532]\n");
1011 COMPARE_A32(Ldrd(r0, r1, MemOperand(r1, 0xabcc)),
1012 "add r0, r1, #43776\n"
1013 "ldrd r0, r1, [r0, #204]\n");
1014 COMPARE_T32(Ldrd(r0, r1, MemOperand(r1, 0xabcc)),
1015 "add r0, r1, #43008\n"
1016 "ldrd r0, r1, [r0, #972]\n");
1017 COMPARE_A32(Ldrd(r0, r1, MemOperand(r1, -0xabcc)),
1018 "sub r0, r1, #44032\n"
1019 "ldrd r0, r1, [r0, #52]\n");
1020 COMPARE_T32(Ldrd(r0, r1, MemOperand(r1, -0xabcc)),
1021 "sub r0, r1, #44032\n"
1022 "ldrd r0, r1, [r0, #52]\n");
1023 COMPARE_A32(Ldrd(r0, r1, MemOperand(r1, 0xabcdec)),
1024 "add r0, r1, #52480\n"
1025 "add r0, #11206656\n"
1026 "ldrd r0, r1, [r0, #236]\n");
1027 COMPARE_T32(Ldrd(r0, r1, MemOperand(r1, 0xabcdec)),
1028 "add r0, r1, #248832\n"
1029 "add r0, #11010048\n"
1030 "ldrd r0, r1, [r0, #492]\n");
1031 COMPARE_A32(Ldrd(r0, r1, MemOperand(r1, -0xabcdec)),
1032 "sub r0, r1, #52736\n"
1033 "sub r0, #11206656\n"
1034 "ldrd r0, r1, [r0, #20]\n");
1035 COMPARE_T32(Ldrd(r0, r1, MemOperand(r1, -0xabcdec)),
1036 "sub r0, r1, #774144\n"
1037 "sub r0, #10485760\n"
1038 "ldrd r0, r1, [r0, #532]\n");
1040 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcc, PostIndex)),
1041 "ldrd r0, r1, [r2], #204\n"
1043 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcc, PostIndex)),
1044 "ldrd r0, r1, [r2], #972\n"
1046 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcc, PostIndex)),
1047 "ldrd r0, r1, [r2], #52\n"
1049 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcc, PostIndex)),
1050 "ldrd r0, r1, [r2], #52\n"
1052 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec, PostIndex)),
1053 "ldrd r0, r1, [r2], #236\n"
1056 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec, PostIndex)),
1057 "ldrd r0, r1, [r2], #492\n"
1060 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec, PostIndex)),
1061 "ldrd r0, r1, [r2], #20\n"
1064 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec, PostIndex)),
1065 "ldrd r0, r1, [r2], #532\n"
1070 MUST_FAIL_TEST_BOTH(Ldrd(r0, r1, MemOperand(r0, 0xabcd, PostIndex)),
1072 MUST_FAIL_TEST_BOTH(Ldrd(r0, r1, MemOperand(r1, 0xabcdef, PostIndex)),
1075 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcc, PreIndex)),
1077 "ldrd r0, r1, [r2, #204]!\n");
1078 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcc, PreIndex)),
1080 "ldrd r0, r1, [r2, #972]!\n");
1081 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcc, PreIndex)),
1083 "ldrd r0, r1, [r2, #52]!\n");
1084 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcc, PreIndex)),
1086 "ldrd r0, r1, [r2, #52]!\n");
1087 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec, PreIndex)),
1090 "ldrd r0, r1, [r2, #236]!\n");
1091 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, 0xabcdec, PreIndex)),
1094 "ldrd r0, r1, [r2, #492]!\n");
1095 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec, PreIndex)),
1098 "ldrd r0, r1, [r2, #20]!\n");
1099 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, -0xabcdec, PreIndex)),
1102 "ldrd r0, r1, [r2, #532]!\n");
1106 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, r3)), "ldrd r0, r1, [r2, r3]\n");
1107 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, r3)),
1108 "add r0, r2, r3\n"
1109 "ldrd r0, r1, [r0]\n");
1111 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, minus, r3)),
1112 "ldrd r0, r1, [r2, -r3]\n");
1113 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, minus, r3)),
1114 "sub r0, r2, r3\n"
1115 "ldrd r0, r1, [r0]\n");
1117 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, r3, PostIndex)),
1118 "ldrd r0, r1, [r2], r3\n");
1119 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, r3, PostIndex)),
1120 "ldrd r0, r1, [r2]\n"
1123 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, minus, r3, PostIndex)),
1124 "ldrd r0, r1, [r2], -r3\n");
1125 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, minus, r3, PostIndex)),
1126 "ldrd r0, r1, [r2]\n"
1129 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, r3, PreIndex)),
1130 "ldrd r0, r1, [r2, r3]!\n");
1131 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, r3, PreIndex)),
1133 "ldrd r0, r1, [r2]\n");
1135 COMPARE_A32(Ldrd(r0, r1, MemOperand(r2, minus, r3, PreIndex)),
1136 "ldrd r0, r1, [r2, -r3]!\n");
1137 COMPARE_T32(Ldrd(r0, r1, MemOperand(r2, minus, r3, PreIndex)),
1139 "ldrd r0, r1, [r2]\n");
1143 MUST_FAIL_TEST_BOTH(Ldrd(r0, r1, MemOperand(r2, r3, LSL, 4)),
1147 MUST_FAIL_TEST_A32(Ldrd(r1, r2, MemOperand(r0)),
1149 MUST_FAIL_TEST_A32(Ldrd(r1, r2, MemOperand(r0, r0, PreIndex)),
1152 MUST_FAIL_TEST_A32(Ldrd(r1, r2, MemOperand(r0, 0xabcd, PreIndex)),
1156 MUST_FAIL_TEST_A32(Ldrd(lr, pc, MemOperand(r0)),
1158 MUST_FAIL_TEST_A32(Ldrd(lr, pc, MemOperand(r0, r0, PreIndex)),
1161 MUST_FAIL_TEST_A32(Ldrd(lr, pc, MemOperand(r0, 0xabcd, PreIndex)),
1165 MUST_FAIL_TEST_A32(Ldrd(r0, r2, MemOperand(r0)),
1176 COMPARE_BOTH(Strd(r0, r1, MemOperand(r3)), "strd r0, r1, [r3]\n");
1182 MUST_FAIL_TEST_A32(Strd(r0, r2, MemOperand(r1)),
1184 COMPARE_T32(Strd(r0, r2, MemOperand(r1)), "strd r0, r2, [r1]\n");
1186 COMPARE_BOTH(Strd(r0, r1, MemOperand(r2)), "strd r0, r1, [r2]\n");
1190 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 1020)),
1192 "strd r0, r1, [ip]\n");
1193 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 1020)), "strd r0, r1, [r2, #1020]\n");
1194 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -1020)),
1196 "strd r0, r1, [ip]\n");
1197 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -1020)),
1198 "strd r0, r1, [r2, #-1020]\n");
1200 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcc)),
1202 "strd r0, r1, [ip, #204]\n");
1203 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcc)),
1205 "strd r0, r1, [ip, #972]\n");
1206 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcc)),
1208 "strd r0, r1, [ip, #52]\n");
1209 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcc)),
1211 "strd r0, r1, [ip, #52]\n");
1212 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcdec)),
1215 "strd r0, r1, [ip, #236]\n");
1216 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcdec)),
1219 "strd r0, r1, [ip, #492]\n");
1220 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcdec)),
1223 "strd r0, r1, [ip, #20]\n");
1224 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcdec)),
1227 "strd r0, r1, [ip, #532]\n");
1229 COMPARE_A32(Strd(r0, r1, MemOperand(r0, 0xabcc)),
1230 "add ip, r0, #43776\n"
1231 "strd r0, r1, [ip, #204]\n");
1232 COMPARE_T32(Strd(r0, r1, MemOperand(r0, 0xabcc)),
1233 "add ip, r0, #43008\n"
1234 "strd r0, r1, [ip, #972]\n");
1235 COMPARE_A32(Strd(r0, r1, MemOperand(r0, -0xabcc)),
1236 "sub ip, r0, #44032\n"
1237 "strd r0, r1, [ip, #52]\n");
1238 COMPARE_T32(Strd(r0, r1, MemOperand(r0, -0xabcc)),
1239 "sub ip, r0, #44032\n"
1240 "strd r0, r1, [ip, #52]\n");
1241 COMPARE_A32(Strd(r0, r1, MemOperand(r0, 0xabcdec)),
1242 "add ip, r0, #52480\n"
1244 "strd r0, r1, [ip, #236]\n");
1245 COMPARE_T32(Strd(r0, r1, MemOperand(r0, 0xabcdec)),
1246 "add ip, r0, #248832\n"
1248 "strd r0, r1, [ip, #492]\n");
1249 COMPARE_A32(Strd(r0, r1, MemOperand(r0, -0xabcdec)),
1250 "sub ip, r0, #52736\n"
1252 "strd r0, r1, [ip, #20]\n");
1253 COMPARE_T32(Strd(r0, r1, MemOperand(r0, -0xabcdec)),
1254 "sub ip, r0, #774144\n"
1256 "strd r0, r1, [ip, #532]\n");
1258 COMPARE_A32(Strd(r0, r1, MemOperand(r1, 0xabcc)),
1260 "strd r0, r1, [ip, #204]\n");
1261 COMPARE_T32(Strd(r0, r1, MemOperand(r1, 0xabcc)),
1263 "strd r0, r1, [ip, #972]\n");
1264 COMPARE_A32(Strd(r0, r1, MemOperand(r1, -0xabcc)),
1266 "strd r0, r1, [ip, #52]\n");
1267 COMPARE_T32(Strd(r0, r1, MemOperand(r1, -0xabcc)),
1269 "strd r0, r1, [ip, #52]\n");
1270 COMPARE_A32(Strd(r0, r1, MemOperand(r1, 0xabcdec)),
1273 "strd r0, r1, [ip, #236]\n");
1274 COMPARE_T32(Strd(r0, r1, MemOperand(r1, 0xabcdec)),
1277 "strd r0, r1, [ip, #492]\n");
1278 COMPARE_A32(Strd(r0, r1, MemOperand(r1, -0xabcdec)),
1281 "strd r0, r1, [ip, #20]\n");
1282 COMPARE_T32(Strd(r0, r1, MemOperand(r1, -0xabcdec)),
1285 "strd r0, r1, [ip, #532]\n");
1287 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcc, PostIndex)),
1288 "strd r0, r1, [r2], #204\n"
1290 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcc, PostIndex)),
1291 "strd r0, r1, [r2], #972\n"
1293 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcc, PostIndex)),
1294 "strd r0, r1, [r2], #52\n"
1296 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcc, PostIndex)),
1297 "strd r0, r1, [r2], #52\n"
1299 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcdec, PostIndex)),
1300 "strd r0, r1, [r2], #236\n"
1303 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcdec, PostIndex)),
1304 "strd r0, r1, [r2], #492\n"
1307 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcdec, PostIndex)),
1308 "strd r0, r1, [r2], #20\n"
1311 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcdec, PostIndex)),
1312 "strd r0, r1, [r2], #532\n"
1317 MUST_FAIL_TEST_BOTH(Strd(r0, r1, MemOperand(r0, 0xabcd, PostIndex)),
1319 MUST_FAIL_TEST_BOTH(Strd(r0, r1, MemOperand(r1, 0xabcdef, PostIndex)),
1322 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcc, PreIndex)),
1324 "strd r0, r1, [r2, #204]!\n");
1325 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcc, PreIndex)),
1327 "strd r0, r1, [r2, #972]!\n");
1328 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcc, PreIndex)),
1330 "strd r0, r1, [r2, #52]!\n");
1331 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcc, PreIndex)),
1333 "strd r0, r1, [r2, #52]!\n");
1334 COMPARE_A32(Strd(r0, r1, MemOperand(r2, 0xabcdec, PreIndex)),
1337 "strd r0, r1, [r2, #236]!\n");
1338 COMPARE_T32(Strd(r0, r1, MemOperand(r2, 0xabcdec, PreIndex)),
1341 "strd r0, r1, [r2, #492]!\n");
1342 COMPARE_A32(Strd(r0, r1, MemOperand(r2, -0xabcdec, PreIndex)),
1345 "strd r0, r1, [r2, #20]!\n");
1346 COMPARE_T32(Strd(r0, r1, MemOperand(r2, -0xabcdec, PreIndex)),
1349 "strd r0, r1, [r2, #532]!\n");
1353 COMPARE_A32(Strd(r0, r1, MemOperand(r2, r3)), "strd r0, r1, [r2, r3]\n");
1354 COMPARE_T32(Strd(r0, r1, MemOperand(r2, r3)),
1356 "strd r0, r1, [ip]\n");
1358 COMPARE_A32(Strd(r0, r1, MemOperand(r2, minus, r3)),
1359 "strd r0, r1, [r2, -r3]\n");
1360 COMPARE_T32(Strd(r0, r1, MemOperand(r2, minus, r3)),
1362 "strd r0, r1, [ip]\n");
1364 COMPARE_A32(Strd(r0, r1, MemOperand(r2, r3, PostIndex)),
1365 "strd r0, r1, [r2], r3\n");
1366 COMPARE_T32(Strd(r0, r1, MemOperand(r2, r3, PostIndex)),
1367 "strd r0, r1, [r2]\n"
1370 COMPARE_A32(Strd(r0, r1, MemOperand(r2, minus, r3, PostIndex)),
1371 "strd r0, r1, [r2], -r3\n");
1372 COMPARE_T32(Strd(r0, r1, MemOperand(r2, minus, r3, PostIndex)),
1373 "strd r0, r1, [r2]\n"
1376 COMPARE_A32(Strd(r0, r1, MemOperand(r2, r3, PreIndex)),
1377 "strd r0, r1, [r2, r3]!\n");
1378 COMPARE_T32(Strd(r0, r1, MemOperand(r2, r3, PreIndex)),
1380 "strd r0, r1, [r2]\n");
1382 COMPARE_A32(Strd(r0, r1, MemOperand(r2, minus, r3, PreIndex)),
1383 "strd r0, r1, [r2, -r3]!\n");
1384 COMPARE_T32(Strd(r0, r1, MemOperand(r2, minus, r3, PreIndex)),
1386 "strd r0, r1, [r2]\n");
1390 MUST_FAIL_TEST_BOTH(Strd(r0, r1, MemOperand(r2, r3, LSL, 4)),
1394 MUST_FAIL_TEST_A32(Strd(r1, r2, MemOperand(r0)),
1396 MUST_FAIL_TEST_A32(Strd(r1, r2, MemOperand(r0, r0, PreIndex)),
1399 MUST_FAIL_TEST_A32(Strd(r1, r2, MemOperand(r0, 0xabcd, PreIndex)),
1403 MUST_FAIL_TEST_A32(Strd(lr, pc, MemOperand(r0)),
1405 MUST_FAIL_TEST_A32(Strd(lr, pc, MemOperand(r0, r0, PreIndex)),
1408 MUST_FAIL_TEST_A32(Strd(lr, pc, MemOperand(r0, 0xabcd, PreIndex)),
1412 MUST_FAIL_TEST_A32(Strd(r0, r2, MemOperand(r0)),
1422 COMPARE_BOTH(Adc(r0, r1, 0xbadbeef),
1423 "mov r0, #48879\n"
1424 "movt r0, #2989\n"
1425 "adc r0, r1, r0\n");
1427 COMPARE_BOTH(Add(r0, r0, 0xbadbeef),
1430 "add r0, ip\n");
1432 COMPARE_BOTH(Mov(r0, 0xbadbeef),
1433 "mov r0, #48879\n"
1434 "movt r0, #2989\n");
1435 COMPARE_A32(Mov(eq, r0, 0xbadbeef),
1436 "moveq r0, #48879\n"
1437 "movteq r0, #2989\n");
1438 COMPARE_T32(Mov(eq, r0, 0xbadbeef),
1440 "mov r0, #48879\n"
1441 "movt r0, #2989\n");
1443 COMPARE_BOTH(Movs(r0, 0xbadbeef),
1444 "mov r0, #48879\n"
1445 "movt r0, #2989\n"
1446 "tst r0, r0\n");
1447 COMPARE_A32(Movs(eq, r0, 0xbadbeef),
1448 "moveq r0, #48879\n"
1449 "movteq r0, #2989\n"
1450 "tsteq r0, r0\n");
1451 COMPARE_T32(Movs(eq, r0, 0xbadbeef),
1453 "mov r0, #48879\n"
1454 "movt r0, #2989\n"
1455 "tst r0, r0\n");
1482 COMPARE_BOTH(And(r0, r1, 0), "mov r0, #0\n");
1483 COMPARE_BOTH(And(r0, r0, 0xffffffff), "");
1492 COMPARE_BOTH(Bic(r0, r1, 0xffffffff), "mov r0, #0\n");
1493 COMPARE_BOTH(Bic(r0, r0, 0), "");
1502 COMPARE_BOTH(Orr(r0, r1, 0xffffffff), "mvn r0, #0\n");
1503 COMPARE_BOTH(Orr(r0, r0, 0), "");
1513 COMPARE_T32(Orr(r0, r1, 0x00ffffff), "orn r0, r1, #0xff000000\n");
1514 COMPARE_T32(Orrs(r0, r1, 0x00ffffff), "orns r0, r1, #0xff000000\n");
1518 COMPARE_A32(Add(r0, r1, -1), "sub r0, r1, #1\n");
1519 COMPARE_A32(Adds(r0, r1, -1), "subs r0, r1, #1\n");
1521 COMPARE_T32(Add(r0, r1, -1), "add r0, r1, #4294967295\n");
1522 COMPARE_T32(Adds(r0, r1, -1), "adds r0, r1, #4294967295\n");
1524 COMPARE_BOTH(Add(r0, r1, -4), "sub r0, r1, #4\n");
1525 COMPARE_BOTH(Adds(r0, r1, -4), "subs r0, r1, #4\n");
1527 COMPARE_BOTH(Adc(r0, r1, -2), "sbc r0, r1, #1\n");
1528 COMPARE_BOTH(Adcs(r0, r1, -2), "sbcs r0, r1, #1\n");
1530 COMPARE_A32(Sub(r0, r1, -1), "add r0, r1, #1\n");
1531 COMPARE_A32(Subs(r0, r1, -1), "adds r0, r1, #1\n");
1533 COMPARE_T32(Sub(r0, r1, -1), "sub r0, r1, #4294967295\n");
1534 COMPARE_T32(Subs(r0, r1, -1), "subs r0, r1, #4294967295\n");
1536 COMPARE_BOTH(Sub(r0, r1, -4), "add r0, r1, #4\n");
1537 COMPARE_BOTH(Subs(r0, r1, -4), "adds r0, r1, #4\n");
1539 COMPARE_BOTH(Sbc(r0, r1, -5), "adc r0, r1, #4\n");
1540 COMPARE_BOTH(Sbcs(r0, r1, -5), "adcs r0, r1, #4\n");
1544 COMPARE_BOTH(Adc(r0, r1, 0xabcd),
1545 "mov r0, #43981\n"
1546 "adc r0, r1, r0\n");
1548 COMPARE_BOTH(Adc(r0, r1, -0xabcd),
1549 "mov r0, #43980\n" // This represents #0xabcd - 1.
1550 "sbc r0, r1, r0\n");
1552 COMPARE_BOTH(Adc(r0, r1, 0x1234abcd),
1553 "mov r0, #43981\n"
1554 "movt r0, #4660\n"
1555 "adc r0, r1, r0\n");
1557 COMPARE_BOTH(Adc(r0, r1, -0x1234abcd),
1558 "mov r0, #43980\n" // This represents #0x1234abcd - 1.
1559 "movt r0, #4660\n"
1560 "sbc r0, r1, r0\n");
1564 COMPARE_BOTH(Sbc(r0, r0, 0xabcd),
1566 "sbc r0, ip\n");
1568 COMPARE_BOTH(Sbc(r0, r0, -0xabcd),
1570 "adc r0, ip\n");
1572 COMPARE_BOTH(Sbc(r0, r0, 0x1234abcd),
1575 "sbc r0, ip\n");
1577 COMPARE_BOTH(Sbc(r0, r0, -0x1234abcd),
1580 "adc r0, ip\n");
1585 COMPARE_T32(Adc(r0, r1, Operand(r2, LSL, r3)),
1586 "lsl r0, r2, r3\n"
1587 "adc r0, r1, r0\n");
1613 COMPARE_BOTH(Teq(r0, 0xbad),
1615 "teq r0, ip\n");
1616 COMPARE_BOTH(Teq(r0, 0xbadbeef),
1619 "teq r0, ip\n");
1620 MUST_FAIL_TEST_T32(Teq(r0, Operand(r1, LSL, r2)),
1631 MUST_FAIL_TEST_BOTH(Movt(r0, 0x10000), "`Movt` expects a 16-bit immediate.");
1645 MUST_FAIL_TEST_A32(Cbz(r0, &label_64), "Cbz is only available for T32.\n");
1646 MUST_FAIL_TEST_A32(Cbnz(r0, &label_64), "Cbnz is only available for T32.\n");
1655 COMPARE_T32(Cbz(r0, &label_126), "cbz r0, 0x00000082\n");
1656 COMPARE_T32(Cbnz(r0, &label_126), "cbnz r0, 0x00000082\n");
1661 COMPARE_T32(Cbz(r0, &label_128),
1662 "cbnz r0, 0x00000004\n"
1664 COMPARE_T32(Cbnz(r0, &label_128),
1665 "cbz r0, 0x00000004\n"
1671 COMPARE_T32(Cbz(r0, &label_8192),
1672 "cbnz r0, 0x00000006\n"
1674 COMPARE_T32(Cbnz(r0, &label_8192),
1675 "cbz r0, 0x00000006\n"
1681 COMPARE_T32(Cbz(r0, &label_neg),
1682 "cbnz r0, 0x00000004\n"
1684 COMPARE_T32(Cbnz(r0, &label_neg),
1685 "cbz r0, 0x00000004\n"
1691 COMPARE_T32(Cbz(r0, &label_neg128),
1692 "cbnz r0, 0x00000004\n"
1694 COMPARE_T32(Cbnz(r0, &label_neg128),
1695 "cbz r0, 0x00000004\n"
1711 MUST_FAIL_TEST_T32(crc32b(eq, r0, r1, r2), "Unpredictable instruction.\n");
1712 MUST_FAIL_TEST_T32(crc32cb(eq, r0, r1, r2), "Unpredictable instruction.\n");
1713 MUST_FAIL_TEST_T32(crc32ch(eq, r0, r1, r2), "Unpredictable instruction.\n");
1714 MUST_FAIL_TEST_T32(crc32cw(eq, r0, r1, r2), "Unpredictable instruction.\n");
1715 MUST_FAIL_TEST_T32(crc32h(eq, r0, r1, r2), "Unpredictable instruction.\n");
1716 MUST_FAIL_TEST_T32(crc32w(eq, r0, r1, r2), "Unpredictable instruction.\n");
2261 MUST_FAIL_TEST_BOTH(Vldr(s0, MemOperand(pc, r0, PreIndex)),
2268 MUST_FAIL_TEST_BOTH(Vstr(s0, MemOperand(pc, r0, PreIndex)),
2275 MUST_FAIL_TEST_BOTH(Vldr(d0, MemOperand(pc, r0, PreIndex)),
2282 MUST_FAIL_TEST_BOTH(Vstr(d0, MemOperand(pc, r0, PreIndex)),
2288 COMPARE_T32(Inst(r0, Operand(r1, LSL, r2)), \
2289 "lsl ip, r1, r2\n" name " r0, ip\n"); \
2290 COMPARE_T32(Inst(r0, Operand(r1, LSR, r2)), \
2291 "lsr ip, r1, r2\n" name " r0, ip\n"); \
2292 COMPARE_T32(Inst(r0, Operand(r1, ASR, r2)), \
2293 "asr ip, r1, r2\n" name " r0, ip\n"); \
2294 COMPARE_T32(Inst(r0, Operand(r1, ROR, r2)), \
2295 "ror ip, r1, r2\n" name " r0, ip\n"); \
2296 COMPARE_T32(Inst(eq, r0, Operand(r1, LSL, r2)), \
2299 "lsl ip, r1, r2\n" name " r0, ip\n"); \
2300 COMPARE_T32(Inst(le, r0, Operand(r1, LSL, r2)), \
2303 "lsl ip, r1, r2\n" name " r0, ip\n");
2306 COMPARE_T32(Inst(r0, Operand(r1, LSL, r2)), "lsl" s " r0, r1, r2\n"); \
2307 COMPARE_T32(Inst(r0, Operand(r1, LSR, r2)), "lsr" s " r0, r1, r2\n"); \
2308 COMPARE_T32(Inst(r0, Operand(r1, ASR, r2)), "asr" s " r0, r1, r2\n"); \
2309 COMPARE_T32(Inst(r0, Operand(r1, ROR, r2)), "ror" s " r0, r1, r2\n"); \
2310 COMPARE_T32(Inst(eq, r0, Operand(r1, LSL, r2)), \
2313 "lsl" s " r0, r1, r2\n"); \
2314 COMPARE_T32(Inst(le, r0, Operand(r1, LSL, r2)), \
2317 "lsl" s " r0, r1, r2\n");
2320 COMPARE_BOTH(Inst(r0, 0xbadbeef), \
2322 "movt ip, #2989\n" name " r0, ip\n"); \
2323 COMPARE_A32(Inst(eq, r0, 0xbadbeef), \
2325 "movteq ip, #2989\n" name "eq r0, ip\n"); \
2326 COMPARE_T32(Inst(eq, r0, 0xbadbeef), \
2330 "movt ip, #2989\n" name " r0, ip\n");
2361 MUST_FAIL_TEST_BOTH(Movs(pc, r0), "Unpredictable instruction.\n");
2362 MUST_FAIL_TEST_BOTH(Movs(pc, Operand(r0, LSL, 0x4)),
2364 MUST_FAIL_TEST_BOTH(Movs(pc, Operand(r0, ASR, r2)),
2386 MUST_FAIL_TEST_BOTH(Sxtb(r0, 0x1), "Ill-formed 'sxtb' instruction.\n");
2387 MUST_FAIL_TEST_BOTH(Sxth(r0, 0x1), "Ill-formed 'sxth' instruction.\n");
2388 MUST_FAIL_TEST_BOTH(Uxtb(r0, 0x1), "Ill-formed 'uxtb' instruction.\n");
2389 MUST_FAIL_TEST_BOTH(Uxth(r0, 0x1), "Ill-formed 'uxth' instruction.\n");
2414 MUST_FAIL_TEST_BOTH(Msr(APSR_nzcvq, Operand(r0, LSR, r1)),
2496 COMPARE_BOTH(Push(RegisterList(0x1111)), "push {r0,r4,r8,ip}\n");
2499 "push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2502 "push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip,lr}\n");
2505 "pushne {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2509 "push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2512 COMPARE_T32(Pop(RegisterList(r0)), "pop {r0}\n");
2517 MUST_FAIL_TEST_BOTH(Push(RegisterList(r0, sp)),
2529 SHOULD_FAIL_TEST_A32(Push(RegisterList(r0, pc)));
2534 MUST_FAIL_TEST_T32(Push(RegisterList(r0, pc)),
2539 COMPARE_BOTH(Push(RegisterList(r0)), "push {r0}\n");
2559 COMPARE_BOTH(Pop(RegisterList(0x1111)), "pop {r0,r4,r8,ip}\n");
2562 "pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2565 "pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip,lr}\n");
2568 "popne {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2572 "pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,ip}\n");
2575 COMPARE_T32(Pop(RegisterList(r0)), "pop {r0}\n");
2580 MUST_FAIL_TEST_BOTH(Pop(RegisterList(r0, sp)),
2588 COMPARE_BOTH(Pop(RegisterList(r0)), "pop {r0}\n");
2610 COMPARE_A32(Adc(pc, r0, 1), "adc pc, r0, #1\n");
2611 COMPARE_A32(Adc(r0, pc, 1), "adc r0, pc, #1\n");
2612 MUST_FAIL_TEST_T32(Adc(pc, r0, 1), "Unpredictable instruction.\n");
2613 MUST_FAIL_TEST_T32(Adc(r0, pc, 1), "Unpredictable instruction.\n");
2614 COMPARE_A32(Adcs(pc, r0, 1), "adcs pc, r0, #1\n");
2615 COMPARE_A32(Adcs(r0, pc, 1), "adcs r0, pc, #1\n");
2616 MUST_FAIL_TEST_T32(Adcs(pc, r0, 1), "Unpredictable instruction.\n");
2617 MUST_FAIL_TEST_T32(Adcs(r0, pc, 1), "Unpredictable instruction.\n");
2620 COMPARE_A32(Adc(pc, r0, r1), "adc pc, r0, r1\n");
2621 COMPARE_A32(Adc(r0, pc, r1), "adc r0, pc, r1\n");
2622 COMPARE_A32(Adc(r0, r1, pc), "adc r0, r1, pc\n");
2623 MUST_FAIL_TEST_T32(Adc(pc, r0, r1), "Unpredictable instruction.\n");
2624 MUST_FAIL_TEST_T32(Adc(r0, pc, r1), "Unpredictable instruction.\n");
2625 MUST_FAIL_TEST_T32(Adc(r0, r1, pc), "Unpredictable instruction.\n");
2626 COMPARE_A32(Adcs(pc, r0, r1), "adcs pc, r0, r1\n");
2627 COMPARE_A32(Adcs(r0, pc, r1), "adcs r0, pc, r1\n");
2628 COMPARE_A32(Adcs(r0, r1, pc), "adcs r0, r1, pc\n");
2629 MUST_FAIL_TEST_T32(Adcs(pc, r0, r1), "Unpredictable instruction.\n");
2630 MUST_FAIL_TEST_T32(Adcs(r0, pc, r1), "Unpredictable instruction.\n");
2631 MUST_FAIL_TEST_T32(Adcs(r0, r1, pc), "Unpredictable instruction.\n");
2634 MUST_FAIL_TEST_A32(Adc(pc, r0, Operand(r1, LSL, r2)),
2636 MUST_FAIL_TEST_A32(Adc(r0, pc, Operand(r1, LSL, r2)),
2638 MUST_FAIL_TEST_A32(Adc(r0, r1, Operand(pc, LSL, r2)),
2640 MUST_FAIL_TEST_A32(Adc(r0, r1, Operand(r2, LSL, pc)),
2642 MUST_FAIL_TEST_A32(Adcs(pc, r0, Operand(r1, LSL, r2)),
2644 MUST_FAIL_TEST_A32(Adcs(r0, pc, Operand(r1, LSL, r2)),
2646 MUST_FAIL_TEST_A32(Adcs(r0, r1, Operand(pc, LSL, r2)),
2648 MUST_FAIL_TEST_A32(Adcs(r0, r1, Operand(r2, LSL, pc)),
2652 COMPARE_A32(Add(r0, pc, 1), "adr r0, 0x00000009\n");
2653 COMPARE_T32(Add(r0, pc, 1), "adr r0, 0x00000005\n");
2658 COMPARE_A32(Add(pc, r0, 1), "add pc, r0, #1\n");
2659 MUST_FAIL_TEST_T32(Add(pc, r0, 1), "Unpredictable instruction.\n");
2660 MUST_FAIL_TEST_T32(Add(pc, r0, 0x123), "Unpredictable instruction.\n");
2661 COMPARE_A32(Adds(pc, r0, 1), "adds pc, r0, #1\n");
2662 COMPARE_A32(Adds(r0, pc, 1), "adds r0, pc, #1\n");
2664 MUST_FAIL_TEST_T32(Adds(r0, pc, 1), "Unpredictable instruction.\n");
2665 MUST_FAIL_TEST_T32(Adds(r0, pc, 0x123), "Ill-formed 'adds' instruction.\n");
2668 COMPARE_A32(Add(pc, r0, r1), "add pc, r0, r1\n");
2669 COMPARE_A32(Add(r0, pc, r1), "add r0, pc, r1\n");
2670 COMPARE_A32(Add(r0, r1, pc), "add r0, r1, pc\n");
2671 COMPARE_T32(Add(r0, r0, pc), "add r0, pc\n");
2672 COMPARE_T32(Add(pc, pc, r0), "add pc, r0\n");
2674 MUST_FAIL_TEST_T32(Add(pc, r0, r1), "Unpredictable instruction.\n");
2675 MUST_FAIL_TEST_T32(Add(r0, pc, r1), "Unpredictable instruction.\n");
2676 MUST_FAIL_TEST_T32(Add(r0, r1, pc), "Unpredictable instruction.\n");
2677 COMPARE_A32(Adds(pc, r0, r1), "adds pc, r0, r1\n");
2678 COMPARE_A32(Adds(r0, pc, r1), "adds r0, pc, r1\n");
2679 COMPARE_A32(Adds(r0, r1, pc), "adds r0, r1, pc\n");
2680 MUST_FAIL_TEST_T32(Adds(r0, pc, r1), "Unpredictable instruction.\n");
2681 MUST_FAIL_TEST_T32(Adds(r0, r1, pc), "Unpredictable instruction.\n");
2684 MUST_FAIL_TEST_A32(Add(pc, r0, Operand(r1, LSL, r2)),
2686 MUST_FAIL_TEST_A32(Add(r0, pc, Operand(r1, LSL, r2)),
2688 MUST_FAIL_TEST_A32(Add(r0, r1, Operand(pc, LSL, r2)),
2690 MUST_FAIL_TEST_A32(Add(r0, r1, Operand(r2, LSL, pc)),
2694 MUST_FAIL_TEST_A32(Adds(pc, r0, Operand(r1, LSL, r2)),
2696 MUST_FAIL_TEST_A32(Adds(r0, pc, Operand(r1, LSL, r2)),
2698 MUST_FAIL_TEST_A32(Adds(r0, r1, Operand(pc, LSL, r2)),
2700 MUST_FAIL_TEST_A32(Adds(r0, r1, Operand(r2, LSL, pc)),
2710 COMPARE_A32(Add(pc, sp, r0), "add pc, sp, r0\n");
2711 MUST_FAIL_TEST_T32(Add(pc, sp, r0), "Unpredictable instruction.\n");
2712 COMPARE_A32(Add(r0, sp, pc), "add r0, sp, pc\n");
2713 MUST_FAIL_TEST_T32(Add(r0, sp, pc), "Unpredictable instruction.\n");
2716 COMPARE_A32(Adds(pc, sp, r0), "adds pc, sp, r0\n");
2717 MUST_FAIL_TEST_T32(Adds(pc, sp, r0), "Ill-formed 'adds' instruction.\n");
2718 COMPARE_A32(Adds(r0, sp, pc), "adds r0, sp, pc\n");
2719 MUST_FAIL_TEST_T32(Adds(r0, sp, pc), "Unpredictable instruction.\n");
2735 MUST_FAIL_TEST_BOTH(Clz(pc, r0), "Unpredictable instruction.\n");
2736 MUST_FAIL_TEST_BOTH(Clz(r0, pc), "Unpredictable instruction.\n");
2751 COMPARE_BOTH(Mov(pc, r0), "mov pc, r0\n");
2752 COMPARE_BOTH(Mov(r0, pc), "mov r0, pc\n");
2753 MUST_FAIL_TEST_BOTH(Movs(pc, r0), "Unpredictable instruction.\n");
2754 COMPARE_A32(Movs(r0, pc), "movs r0, pc\n");
2755 MUST_FAIL_TEST_T32(Movs(r0, pc), "Unpredictable instruction.\n");
2758 MUST_FAIL_TEST_BOTH(Mov(pc, Operand(r0, ASR, r1)),
2760 MUST_FAIL_TEST_BOTH(Mov(r0, Operand(pc, ASR, r1)),
2762 MUST_FAIL_TEST_BOTH(Mov(r0, Operand(r1, ASR, pc)),
2764 MUST_FAIL_TEST_BOTH(Movs(pc, Operand(r0, ASR, r1)),
2766 MUST_FAIL_TEST_BOTH(Movs(r0, Operand(pc, ASR, r1)),
2768 MUST_FAIL_TEST_BOTH(Movs(r0, Operand(r1, ASR, pc)),
2778 COMPARE_A32(Add(r0, pc, -8), "adr r0, 0x00000000\n");
2779 COMPARE_A32(Add(r0, pc, 255), "adr r0, 0x00000107\n");
2780 COMPARE_A32(Add(r0, pc, 256), "adr r0, 0x00000108\n");
2781 COMPARE_A32(Add(r0, pc, 1024), "adr r0, 0x00000408\n");
2782 COMPARE_A32(Add(r0, pc, -9), "adr r0, 0xffffffff\n");
2783 COMPARE_A32(Add(r0, pc, -1024), "adr r0, 0xfffffc08\n");
2784 COMPARE_A32(Add(r0, pc, UINT32_C(0x80000000)), "adr r0, 0x80000008\n");
2785 COMPARE_A32(Add(r0, pc, -0x7fffffff), "adr r0, 0x80000009\n");
2787 COMPARE_A32(Sub(r0, pc, 8), "adr r0, 0x00000000\n");
2788 COMPARE_A32(Sub(r0, pc, -255), "adr r0, 0x00000107\n");
2789 COMPARE_A32(Sub(r0, pc, -256), "adr r0, 0x00000108\n");
2790 COMPARE_A32(Sub(r0, pc, -1024), "adr r0, 0x00000408\n");
2791 COMPARE_A32(Sub(r0, pc, 9), "adr r0, 0xffffffff\n");
2792 COMPARE_A32(Sub(r0, pc, 1024), "adr r0, 0xfffffc08\n");
2793 COMPARE_A32(Sub(r0, pc, UINT32_C(0x80000000)), "adr r0, 0x80000008\n");
2794 COMPARE_A32(Sub(r0, pc, -0x7fffffff), "adr r0, 0x80000007\n");
2799 MUST_FAIL_TEST_A32(Add(r0, pc, 1025), "Ill-formed 'add' instruction.\n");
2800 MUST_FAIL_TEST_A32(Add(r0, pc, 0xffff), "Ill-formed 'add' instruction.\n");
2801 MUST_FAIL_TEST_A32(Add(r0, pc, 0x10001), "Ill-formed 'add' instruction.\n");
2802 MUST_FAIL_TEST_A32(Add(r0, pc, 0x12345678),
2804 MUST_FAIL_TEST_A32(Add(r0, pc, 0x7fffffff),
2806 COMPARE_A32(Add(r0, pc, -1025),
2807 "adr r0, 0x00000007\n"
2808 "sub r0, #1024\n");
2809 COMPARE_A32(Add(r0, pc, -0xffff),
2810 "adr r0, 0xffffff09\n"
2811 "sub r0, #65280\n");
2812 COMPARE_A32(Add(r0, pc, -0x10001),
2813 "adr r0, 0x00000007\n"
2814 "sub r0, #65536\n");
2815 COMPARE_A32(Add(r0, pc, -0x2345678),
2816 "adr r0, 0xfffffd90\n"
2817 "sub r0, #21504\n"
2818 "sub r0, #36962304\n");
2819 COMPARE_A32(Add(r0, pc, -0x12345678),
2820 "adr r0, 0xfffffd90\n"
2823 "sub r0, ip\n");
2825 MUST_FAIL_TEST_A32(Sub(r0, pc, -1025), "Ill-formed 'add' instruction.\n");
2826 MUST_FAIL_TEST_A32(Sub(r0, pc, -0xffff), "Ill-formed 'add' instruction.\n");
2827 MUST_FAIL_TEST_A32(Sub(r0, pc, -0x10001), "Ill-formed 'add' instruction.\n");
2828 MUST_FAIL_TEST_A32(Sub(r0, pc, -0x12345678),
2830 COMPARE_A32(Sub(r0, pc, 1025),
2831 "adr r0, 0x00000007\n"
2832 "sub r0, #1024\n");
2833 COMPARE_A32(Sub(r0, pc, 0xffff),
2834 "adr r0, 0xffffff09\n"
2835 "sub r0, #65280\n");
2836 COMPARE_A32(Sub(r0, pc, 0x10001),
2837 "adr r0, 0x00000007\n"
2838 "sub r0, #65536\n");
2839 COMPARE_A32(Sub(r0, pc, 0x2345678),
2840 "adr r0, 0xfffffd90\n"
2841 "sub r0, #21504\n"
2842 "sub r0, #36962304\n");
2843 COMPARE_A32(Sub(r0, pc, 0x12345678),
2844 "adr r0, 0xfffffd90\n"
2847 "sub r0, ip\n");
2848 COMPARE_A32(Sub(r0, pc, 0x7fffffff),
2849 "adr r0, 0xffffff09\n"
2850 "add r0, #256\n"
2851 "add r0, #2147483648\n");
2860 COMPARE_T32(Add(r0, pc, -4), "adr r0, 0x00000000\n"); // T1
2861 COMPARE_T32(Add(r0, pc, 1020), "adr r0, 0x00000400\n"); // T1
2862 COMPARE_T32(Add(r0, pc, -5), "adr r0, 0xffffffff\n"); // T2
2863 COMPARE_T32(Add(r0, pc, -4095), "adr r0, 0xfffff005\n"); // T2
2864 COMPARE_T32(Add(r0, pc, -3), "adr r0, 0x00000001\n"); // T3
2865 COMPARE_T32(Add(r0, pc, 1021), "adr r0, 0x00000401\n"); // T3
2866 COMPARE_T32(Add(r0, pc, 1019), "adr r0, 0x000003ff\n"); // T3
2867 COMPARE_T32(Add(r0, pc, 4095), "adr r0, 0x00001003\n"); // T3
2869 COMPARE_T32(Sub(r0, pc, 4), "adr r0, 0x00000000\n"); // T1
2870 COMPARE_T32(Sub(r0, pc, -1020), "adr r0, 0x00000400\n"); // T1
2871 COMPARE_T32(Sub(r0, pc, 5), "adr r0, 0xffffffff\n"); // T2
2872 COMPARE_T32(Sub(r0, pc, 4095), "adr r0, 0xfffff005\n"); // T2
2873 COMPARE_T32(Sub(r0, pc, 3), "adr r0, 0x00000001\n"); // T3
2874 COMPARE_T32(Sub(r0, pc, -1021), "adr r0, 0x00000401\n"); // T3
2875 COMPARE_T32(Sub(r0, pc, -1019), "adr r0, 0x000003ff\n"); // T3
2876 COMPARE_T32(Sub(r0, pc, -4095), "adr r0, 0x00001003\n"); // T3
2882 MUST_FAIL_TEST_T32(Add(r0, pc, 4096), "Unpredictable instruction.\n");
2884 MUST_FAIL_TEST_T32(Add(r0, pc, -4096), "Unpredictable instruction.\n");
2886 MUST_FAIL_TEST_T32(Add(r0, pc, 0xffff), "Ill-formed 'add' instruction.\n");
2887 MUST_FAIL_TEST_T32(Add(r0, pc, 0x10002), "Ill-formed 'add' instruction.\n");
2888 MUST_FAIL_TEST_T32(Add(r0, pc, 0x12345678),
2890 MUST_FAIL_TEST_T32(Add(r0, pc, 0x7fffffff),
2892 COMPARE_T32(Add(r0, pc, -0x12345678),
2893 "mov r0, pc\n"
2896 "sub r0, ip\n");
2897 COMPARE_T32(Add(r0, pc, -0x7fffffff),
2898 "mov r0, pc\n"
2899 "add r0, #1\n"
2900 "add r0, #2147483648\n");
2905 // COMPARE_T32(Sub(r0, pc, -4096), "mov r0, pc\n"
2906 // "add r0, #4096\n");
2908 MUST_FAIL_TEST_T32(Sub(r0, pc, 4096), "Unpredictable instruction.\n");
2910 MUST_FAIL_TEST_T32(Sub(r0, pc, -0xffff), "Ill-formed 'add' instruction.\n");
2911 MUST_FAIL_TEST_T32(Sub(r0, pc, -0x10002), "Ill-formed 'add' instruction.\n");
2912 MUST_FAIL_TEST_T32(Sub(r0, pc, -0x12345678),
2914 MUST_FAIL_TEST_T32(Sub(r0, pc, -0x7fffffff),
2916 COMPARE_T32(Sub(r0, pc, 0x12345678),
2917 "mov r0, pc\n"
2920 "sub r0, ip\n");
2921 COMPARE_T32(Sub(r0, pc, 0x7fffffff),
2922 "mov r0, pc\n"
2923 "add r0, #1\n"
2924 "add r0, #2147483648\n");
2932 MUST_FAIL_TEST_BOTH(Sxtab(r0, r1, Operand(r2, ROR, 1)),
2934 MUST_FAIL_TEST_BOTH(Sxtab16(r0, r1, Operand(r0, ASR, 2)),
2936 MUST_FAIL_TEST_BOTH(Sxtah(r0, r1, Operand(r0, LSL, r1)),
2938 MUST_FAIL_TEST_BOTH(Uxtab(r0, r1, Operand(r0, LSR, r2)),
2940 MUST_FAIL_TEST_BOTH(Uxtab16(r0, r1, Operand(r0, ROR, 1)),
2942 MUST_FAIL_TEST_BOTH(Uxtah(r0, r1, Operand(r0, ASR, 2)),
2944 MUST_FAIL_TEST_BOTH(Pkhbt(r0, r1, Operand(r0, LSL, r1)),
2946 MUST_FAIL_TEST_BOTH(Pkhtb(r0, r1, Operand(r0, LSR, r2)),
2949 MUST_FAIL_TEST_BOTH(Pld(MemOperand(r0, 1, PreIndex)),
2951 MUST_FAIL_TEST_BOTH(Pldw(MemOperand(r0, 1, PostIndex)),
2953 MUST_FAIL_TEST_BOTH(Pli(MemOperand(r0, 1, PreIndex)),
2956 MUST_FAIL_TEST_BOTH(Pld(MemOperand(r0, r0, PreIndex)),
2958 MUST_FAIL_TEST_BOTH(Pldw(MemOperand(r0, r1, PostIndex)),
2960 MUST_FAIL_TEST_BOTH(Pli(MemOperand(r0, r2, PreIndex)),
2963 MUST_FAIL_TEST_BOTH(Pld(MemOperand(r0, r0, LSL, 1, PreIndex)),
2965 MUST_FAIL_TEST_BOTH(Pldw(MemOperand(r0, r1, LSR, 2, PostIndex)),
2967 MUST_FAIL_TEST_BOTH(Pli(MemOperand(r0, r2, ASR, 3, PreIndex)),
2970 MUST_FAIL_TEST_BOTH(Lda(r0, MemOperand(r0, 1)),
2972 MUST_FAIL_TEST_BOTH(Ldab(r0, MemOperand(r0, 1)),
2974 MUST_FAIL_TEST_BOTH(Ldaex(r0, MemOperand(r0, 1)),
2976 MUST_FAIL_TEST_BOTH(Ldaexb(r0, MemOperand(r0, 1)),
2978 MUST_FAIL_TEST_BOTH(Ldaexh(r0, MemOperand(r0, 1)),
2980 MUST_FAIL_TEST_BOTH(Ldah(r0, MemOperand(r0, 1)),
2982 MUST_FAIL_TEST_BOTH(Ldrex(r0, MemOperand(r0, 1)),
2984 MUST_FAIL_TEST_BOTH(Ldrexb(r0, MemOperand(r0, 1)),
2986 MUST_FAIL_TEST_BOTH(Ldrexh(r0, MemOperand(r0, 1)),
2988 MUST_FAIL_TEST_BOTH(Stl(r0, MemOperand(r0, 1)),
2990 MUST_FAIL_TEST_BOTH(Stlb(r0, MemOperand(r0, 1)),
2992 MUST_FAIL_TEST_BOTH(Stlh(r0, MemOperand(r0, 1)),
2995 MUST_FAIL_TEST_BOTH(Ldaexd(r0, r1, MemOperand(r0, 1)),
2997 MUST_FAIL_TEST_BOTH(Ldrexd(r0, r1, MemOperand(r0, 1)),
2999 MUST_FAIL_TEST_BOTH(Stlex(r0, r1, MemOperand(r0, 1)),
3001 MUST_FAIL_TEST_BOTH(Stlexb(r0, r1, MemOperand(r0, 1)),
3003 MUST_FAIL_TEST_BOTH(Stlexh(r0, r1, MemOperand(r0, 1)),
3005 MUST_FAIL_TEST_BOTH(Strex(r0, r1, MemOperand(r0, 1)),
3007 MUST_FAIL_TEST_BOTH(Strexb(r0, r1, MemOperand(r0, 1)),
3009 MUST_FAIL_TEST_BOTH(Strexh(r0, r1, MemOperand(r0, 1)),
3012 MUST_FAIL_TEST_BOTH(Stlexd(r0, r1, r2, MemOperand(r0, 1)),
3014 MUST_FAIL_TEST_BOTH(Strexd(r0, r1, r2, MemOperand(r0, 1)),
3197 COMPARE_T32(Adc(eq, r0, r0, r1),
3199 "adceq r0, r1\n");
3201 COMPARE_T32(Adc(eq, r0, r1, r2),
3203 "adc r0, r1, r2\n");
3206 COMPARE_T32(Add(eq, r0, r1, 0x1),
3208 "addeq r0, r1, #1\n");
3210 COMPARE_T32(Add(eq, r0, r1, 0x8),
3212 "add r0, r1, #8\n");
3215 COMPARE_T32(Add(eq, r0, r0, 0xff),
3217 "addeq r0, #255\n");
3220 COMPARE_T32(Add(eq, r0, r1, r7),
3222 "addeq r0, r1, r7\n");
3261 COMPARE_T32(And(eq, r7, r7, r0),
3263 "andeq r7, r0\n");
3265 COMPARE_T32(And(eq, r8, r8, r0),
3267 "and r8, r0\n");
3270 COMPARE_T32(Asr(eq, r0, r1, 16),
3272 "asreq r0, r1, #16\n");
3274 COMPARE_T32(Asr(eq, r0, r1, 32),
3276 "asreq r0, r1, #32\n");
3278 COMPARE_T32(Asr(eq, r0, r1, 0),
3280 "mov r0, #0\n"
3281 "asr r0, r1, r0\n");
3318 COMPARE_T32(Cmn(eq, r0, r1),
3320 "cmneq r0, r1\n");
3322 COMPARE_T32(Cmn(eq, r0, r8),
3324 "cmn r0, r8\n");
3341 COMPARE_T32(Cmp(eq, r0, 0x100),
3343 "cmp r0, #256\n");
3346 COMPARE_T32(Eor(eq, r0, r0, r7),
3348 "eoreq r0, r7\n");
3350 COMPARE_T32(Eor(eq, r0, r0, 0x1),
3352 "eor r0, #0x1\n");
3448 COMPARE_T32(Lsl(eq, r0, r1, 16),
3450 "lsleq r0, r1, #16\n");
3452 COMPARE_T32(Lsl(eq, r0, r1, 0),
3454 "mov r0, #0\n"
3455 "lsl r0, r1, r0\n");
3457 COMPARE_T32(Lsl(eq, r0, r1, 32),
3459 "mov r0, #32\n"
3460 "lsl r0, r1, r0\n");
3472 COMPARE_T32(Lsr(eq, r0, r1, 16),
3474 "lsreq r0, r1, #16\n");
3476 COMPARE_T32(Lsr(eq, r0, r1, 32),
3478 "lsreq r0, r1, #32\n");
3480 COMPARE_T32(Lsr(eq, r0, r1, 0),
3482 "mov r0, #0\n"
3483 "lsr r0, r1, r0\n");
3505 COMPARE_T32(Mov(eq, r0, Operand(r1, LSR, 16)),
3507 "lsreq r0, r1, #16\n");
3509 COMPARE_T32(Mov(eq, r0, Operand(r1, ROR, 16)),
3511 "ror r0, r1, #16\n");
3514 COMPARE_T32(Mov(eq, r0, Operand(r0, LSR, r1)),
3516 "lsreq r0, r1\n");
3518 COMPARE_T32(Mov(eq, r0, Operand(r1, LSR, r2)),
3520 "lsr r0, r1, r2\n");
3523 COMPARE_T32(Mul(eq, r0, r1, r0),
3525 "muleq r0, r1, r0\n");
3527 COMPARE_T32(Mul(eq, r0, r1, r2),
3529 "mul r0, r1, r2\n");
3541 COMPARE_T32(Orr(eq, r0, r0, r1),
3543 "orreq r0, r1\n");
3545 COMPARE_T32(Orr(eq, r0, r1, r2),
3547 "orr r0, r1, r2\n");
3558 COMPARE_T32(Ror(eq, r0, r1, 16),
3560 "ror r0, r1, #16\n");
3563 COMPARE_T32(Rsb(eq, r0, r1, 0),
3565 "rsbeq r0, r1, #0\n");
3567 COMPARE_T32(Rsb(eq, r0, r1, 1),
3569 "rsb r0, r1, #1\n");
3572 COMPARE_T32(Sbc(eq, r0, r0, r1),
3574 "sbceq r0, r1\n");
3576 COMPARE_T32(Sbc(eq, r0, r1, r2),
3578 "sbc r0, r1, r2\n");
3656 COMPARE_T32(Sub(eq, r0, r1, 0x1),
3658 "subeq r0, r1, #1\n");
3660 COMPARE_T32(Sub(eq, r0, r1, 0x8),
3662 "sub r0, r1, #8\n");
3665 COMPARE_T32(Sub(eq, r0, r0, 0xff),
3667 "subeq r0, #255\n");
3670 COMPARE_T32(Sub(eq, r0, r1, r7),
3672 "subeq r0, r1, r7\n");
3685 COMPARE_T32(Tst(eq, r0, r1),
3687 "tsteq r0, r1\n");
3718 masm.Cbz(r0, &label);
3738 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r1, r1, 0xfff, 0xfff)),
3739 "ldr r0, [r1, #4095]\n");
3740 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r1, r1, 1, 0xfff)),
3741 "ldr r0, [r1, #1]\n");
3742 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r1, r1, 0, 0xfff)),
3743 "ldr r0, [r1]\n");
3747 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r2, r1, 0xfff, 0xfff)),
3748 "ldr r0, [r1, #4095]\n");
3755 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r1, r1, 0x1000, 0xfff)),
3757 "ldr r0, [r1]\n");
3758 COMPARE_A32(Ldr(r0, masm.MemOperandComputationHelper(r2, r1, 0x1000, 0xfff)),
3760 "ldr r0, [r2]\n");
3761 COMPARE_A32(Ldr(r0,
3764 "ldr r0, [r2]\n");
3768 COMPARE_A32(Ldr(r0,
3773 "ldr r0, [r2, #1656]\n");
3774 COMPARE_A32(Ldr(r0,
3778 "ldr r0, [r2]\n");
3779 COMPARE_A32(Ldr(r0,
3783 "ldr r0, [r2]\n");
3824 COMPARE_BOTH(Pld(MemOperand(r0, 0)), "pld [r0]\n");
3831 COMPARE_BOTH(Pldw(MemOperand(r0, 0)), "pldw [r0]\n");
3838 COMPARE_BOTH(Pld(MemOperand(r0, r1)), "pld [r0, r1]\n");
3839 COMPARE_BOTH(Pld(MemOperand(r0, r1, LSL, 1)), "pld [r0, r1, lsl #1]\n");
3841 COMPARE_A32(Pld(MemOperand(r0, r1, LSL, 20)), "pld [r0, r1, lsl #20]\n");
3844 COMPARE_BOTH(Pldw(MemOperand(r0, r1)), "pldw [r0, r1]\n");
3845 COMPARE_BOTH(Pldw(MemOperand(r0, r1, LSL, 1)), "pldw [r0, r1, lsl #1]\n");
3847 COMPARE_A32(Pldw(MemOperand(r0, r1, LSL, 20)), "pldw [r0, r1, lsl #20]\n");
3853 COMPARE_BOTH(Pli(MemOperand(r0, 0)), "pli [r0]\n");
3860 COMPARE_BOTH(Pli(MemOperand(r0, r1)), "pli [r0, r1]\n");
3861 COMPARE_BOTH(Pli(MemOperand(r0, r1, LSL, 1)), "pli [r0, r1, lsl #1]\n");
3863 COMPARE_A32(Pli(MemOperand(r0, r1, LSL, 20)), "pli [r0, r1, lsl #20]\n");
3892 COMPARE_BOTH(Vmsr(FPSCR, r0), "vmsr FPSCR, r0\n");
3908 COMPARE_BOTH(Ldm(r0, NO_WRITE_BACK, RegisterList(r1)), "ldm r0, {r1}\n");
3913 COMPARE_BOTH(Ldm(r0, WRITE_BACK, RegisterList(r1, r2)), "ldm r0!, {r1,r2}\n");
3918 COMPARE_BOTH(Stm(r0, WRITE_BACK, RegisterList(r1, r2)), "stm r0!, {r1,r2}\n");
3921 COMPARE_A32(Ldmda(r11, WRITE_BACK, RegisterList(r0, r1)),
3922 "ldmda r11!, {r0,r1}\n");
3927 COMPARE_A32(Stmda(r11, WRITE_BACK, RegisterList(r0, r1)),
3928 "stmda r11!, {r0,r1}\n");
3934 COMPARE_A32(Ldmib(r11, WRITE_BACK, RegisterList(r0, r1)),
3935 "ldmib r11!, {r0,r1}\n");
3940 COMPARE_A32(Stmib(r11, WRITE_BACK, RegisterList(r0, r1)),
3941 "stmib r11!, {r0,r1}\n");
3947 COMPARE_BOTH(Ldmdb(r11, WRITE_BACK, RegisterList(r0, r1)),
3948 "ldmdb r11!, {r0,r1}\n");
3953 COMPARE_BOTH(Stmdb(r11, WRITE_BACK, RegisterList(r0, r1)),
3954 "stmdb r11!, {r0,r1}\n");
4009 CHECK_T32_16(Add(DontCare, r0, sp, 1020), "add r0, sp, #1020\n");
4011 CHECK_T32_16_IT_BLOCK(Add(DontCare, ge, r0, sp, 1020),
4013 "addge r0, sp, #1020\n");
4036 CHECK_T32_16(Asr(DontCare, r0, r1, 32), "asrs r0, r1, #32\n");
4038 CHECK_T32_16_IT_BLOCK(Asr(DontCare, eq, r0, r1, 32),
4040 "asreq r0, r1, #32\n");
4042 CHECK_T32_16(Asr(DontCare, r0, r0, r1), "asrs r0, r1\n");
4044 CHECK_T32_16_IT_BLOCK(Asr(DontCare, eq, r0, r0, r1),
4046 "asreq r0, r1\n");
4060 CHECK_T32_16(Lsl(DontCare, r0, r1, 31), "lsls r0, r1, #31\n");
4062 CHECK_T32_16_IT_BLOCK(Lsl(DontCare, eq, r0, r1, 31),
4064 "lsleq r0, r1, #31\n");
4066 CHECK_T32_16(Lsl(DontCare, r0, r0, r1), "lsls r0, r1\n");
4068 CHECK_T32_16_IT_BLOCK(Lsl(DontCare, eq, r0, r0, r1),
4070 "lsleq r0, r1\n");
4072 CHECK_T32_16(Lsr(DontCare, r0, r1, 32), "lsrs r0, r1, #32\n");
4074 CHECK_T32_16_IT_BLOCK(Lsr(DontCare, eq, r0, r1, 32),
4076 "lsreq r0, r1, #32\n");
4078 CHECK_T32_16(Lsr(DontCare, r0, r0, r1), "lsrs r0, r1\n");
4080 CHECK_T32_16_IT_BLOCK(Lsr(DontCare, eq, r0, r0, r1),
4082 "lsreq r0, r1\n");
4159 CHECK_T32_16(Mul(DontCare, r0, r1, r0), "muls r0, r1, r0\n");
4161 CHECK_T32_16_IT_BLOCK(Mul(DontCare, eq, r0, r1, r0),
4163 "muleq r0, r1, r0\n");
4177 CHECK_T32_16(Ror(DontCare, r0, r0, r1), "rors r0, r1\n");
4179 CHECK_T32_16_IT_BLOCK(Ror(DontCare, eq, r0, r0, r1),
4181 "roreq r0, r1\n");
4217 CHECK_T32_16(Add(DontCare, r0, r1, -1), "subs r0, r1, #1\n");
4219 CHECK_T32_16(Add(DontCare, r0, r1, -7), "subs r0, r1, #7\n");
4226 CHECK_T32_16(Sub(DontCare, r0, r1, -1), "adds r0, r1, #1\n");
4228 CHECK_T32_16(Sub(DontCare, r0, r1, -7), "adds r0, r1, #7\n");
4249 COMPARE_BOTH(And(r0, r0, r0), "");
4250 COMPARE_BOTH(And(DontCare, r0, r0, r0), "");
4252 COMPARE_BOTH(Mov(r0, r0), "");
4253 COMPARE_BOTH(Mov(DontCare, r0, r0), "");
4255 COMPARE_BOTH(Orr(r0, r0, r0), "");
4256 COMPARE_BOTH(Orr(DontCare, r0, r0, r0), "");
4265 COMPARE_A32(Ldr(r0, MemOperand(pc, minus, 0)), "ldr r0, [pc, #-0]\n");
4266 COMPARE_T32(Ldr(r0, MemOperand(pc, minus, 0)), "ldr.w r0, [pc, #-0]\n");
4267 COMPARE_BOTH(Ldrb(r0, MemOperand(pc, minus, 0)), "ldrb r0, [pc, #-0]\n");
4268 COMPARE_BOTH(Ldrh(r0, MemOperand(pc, minus, 0)), "ldrh r0, [pc, #-0]\n");
4269 COMPARE_BOTH(Ldrd(r0, r1, MemOperand(pc, minus, 0)),
4270 "ldrd r0, r1, [pc, #-0]\n");
4271 COMPARE_BOTH(Ldrsb(r0, MemOperand(pc, minus, 0)), "ldrsb r0, [pc, #-0]\n");
4272 COMPARE_BOTH(Ldrsh(r0, MemOperand(pc, minus, 0)), "ldrsh r0, [pc, #-0]\n");
4279 COMPARE_BOTH(Sub(r0, pc, 0), "sub r0, pc, #0\n");
4288 COMPARE_A32(Add(r0, r1, 0x4321),
4289 "add r0, r1, #33\n"
4290 "add r0, #17152\n");
4291 COMPARE_T32(Add(r0, r1, 0x4321),
4292 "add r0, r1, #801\n"
4293 "add r0, #16384\n");
4294 COMPARE_BOTH(Add(r0, r1, 0x432100),
4295 "add r0, r1, #8448\n"
4296 "add r0, #4390912\n");
4297 COMPARE_BOTH(Add(r0, r1, 0x43000210),
4298 "add r0, r1, #528\n"
4299 "add r0, #1124073472\n");
4300 COMPARE_BOTH(Add(r0, r1, 0x30c00210),
4301 "add r0, r1, #528\n"
4302 "add r0, #817889280\n");
4303 COMPARE_BOTH(Add(r0, r1, 0x43000021),
4304 "add r0, r1, #33\n"
4305 "add r0, #1124073472\n");
4306 COMPARE_T32(Add(r0, r1, 0x54321),
4307 "add r0, r1, #801\n"
4308 "add r0, #344064\n");
4309 COMPARE_T32(Add(r0, r1, 0x54000321),
4310 "add r0, r1, #801\n"
4311 "add r0, #1409286144\n");
4313 COMPARE_A32(Sub(r0, r1, 0x4321),
4314 "sub r0, r1, #33\n"
4315 "sub r0, #17152\n");
4316 COMPARE_T32(Sub(r0, r1, 0x4321),
4317 "sub r0, r1, #801\n"
4318 "sub r0, #16384\n");
4319 COMPARE_BOTH(Sub(r0, r1, 0x432100),
4320 "sub r0, r1, #8448\n"
4321 "sub r0, #4390912\n");
4322 COMPARE_BOTH(Sub(r0, r1, 0x43000210),
4323 "sub r0, r1, #528\n"
4324 "sub r0, #1124073472\n");
4325 COMPARE_BOTH(Sub(r0, r1, 0x30c00210),
4326 "sub r0, r1, #528\n"
4327 "sub r0, #817889280\n");
4328 COMPARE_BOTH(Sub(r0, r1, 0x43000021),
4329 "sub r0, r1, #33\n"
4330 "sub r0, #1124073472\n");
4331 COMPARE_T32(Sub(r0, r1, 0x54321),
4332 "sub r0, r1, #801\n"
4333 "sub r0, #344064\n");
4334 COMPARE_T32(Sub(r0, r1, 0x54000321),
4335 "sub r0, r1, #801\n"
4336 "sub r0, #1409286144\n");