Lines Matching full:ra

218                               (ins (memrix $D, $RA):$src),
228 (ins (memrix $D, $RA):$src),
335 def LDARX : XForm_1_memOp<31, 84, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
339 def LQARX : XForm_1_memOp<31, 276, (outs g8prc:$RST), (ins (memrr $RA, $RB):$addr),
344 def LDARXL : XForm_1<31, 84, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
350 def LQARXL : XForm_1<31, 276, (outs g8prc:$RST), (ins (memrr $RA, $RB):$addr),
355 def LDAT : X_RD5_RS5_IM5<31, 614, (outs g8rc:$RST), (ins g8rc:$RA, u5imm:$RB),
356 "ldat $RST, $RA, $RB", IIC_LdStLoad>, isPPC64,
361 def STDCX : XForm_1_memOp<31, 214, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
365 def STQCX : XForm_1_memOp<31, 182, (outs), (ins g8prc:$RST, (memrr $RA, $RB):$addr),
382 // Atomic pseudo instructions expanded post-ra.
426 def STDAT : X_RD5_RS5_IM5<31, 742, (outs), (ins g8rc:$RST, g8rc:$RA, u5imm:$RB),
427 "stdat $RST, $RA, $RB", IIC_LdStStore>, isPPC64,
482 // on the cr register selected. Thus, post-ra anti-dep breaking must not
497 // on the cr register selected. Thus, post-ra anti-dep breaking must not
630 defm NAND8: XForm_6r<31, 476, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
631 "nand", "$RA, $RST, $RB", IIC_IntSimple,
632 [(set i64:$RA, (not (and i64:$RST, i64:$RB)))]>;
633 defm AND8 : XForm_6r<31, 28, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
634 "and", "$RA, $RST, $RB", IIC_IntSimple,
635 [(set i64:$RA, (and i64:$RST, i64:$RB))]>;
637 defm ANDC8: XForm_6r<31, 60, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
638 "andc", "$RA, $RST, $RB", IIC_IntSimple,
639 [(set i64:$RA, (and i64:$RST, (not i64:$RB)))]>;
641 defm OR8 : XForm_6r<31, 444, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
642 "or", "$RA, $RST, $RB", IIC_IntSimple,
643 [(set i64:$RA, (or i64:$RST, i64:$RB))]>;
644 defm NOR8 : XForm_6r<31, 124, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
645 "nor", "$RA, $RST, $RB", IIC_IntSimple,
646 [(set i64:$RA, (not (or i64:$RST, i64:$RB)))]>;
648 defm ORC8 : XForm_6r<31, 412, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
649 "orc", "$RA, $RST, $RB", IIC_IntSimple,
650 [(set i64:$RA, (or i64:$RST, (not i64:$RB)))]>;
652 defm EQV8 : XForm_6r<31, 284, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
653 "eqv", "$RA, $RST, $RB", IIC_IntSimple,
654 [(set i64:$RA, (not (xor i64:$RST, i64:$RB)))]>;
655 defm XOR8 : XForm_6r<31, 316, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
656 "xor", "$RA, $RST, $RB", IIC_IntSimple,
657 [(set i64:$RA, (xor i64:$RST, i64:$RB))]>;
662 def ANDI8_rec : DForm_4<28, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
663 "andi. $RA, $RST, $D", IIC_IntGeneral,
664 [(set i64:$RA, (and i64:$RST, immZExt16:$D))]>,
666 def ANDIS8_rec : DForm_4<29, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
667 "andis. $RA, $RST, $D", IIC_IntGeneral,
668 [(set i64:$RA, (and i64:$RST, imm16ShiftedZExt:$D))]>,
671 def ORI8 : DForm_4<24, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
672 "ori $RA, $RST, $D", IIC_IntSimple,
673 [(set i64:$RA, (or i64:$RST, immZExt16:$D))]>;
674 def ORIS8 : DForm_4<25, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
675 "oris $RA, $RST, $D", IIC_IntSimple,
676 [(set i64:$RA, (or i64:$RST, imm16ShiftedZExt:$D))]>;
677 def XORI8 : DForm_4<26, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
678 "xori $RA, $RST, $D", IIC_IntSimple,
679 [(set i64:$RA, (xor i64:$RST, immZExt16:$D))]>;
680 def XORIS8 : DForm_4<27, (outs g8rc:$RA), (ins g8rc:$RST, u16imm64:$D),
681 "xoris $RA, $RST, $D", IIC_IntSimple,
682 [(set i64:$RA, (xor i64:$RST, imm16ShiftedZExt:$D))]>;
685 defm ADD8 : XOForm_1rx<31, 266, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
686 "add", "$RT, $RA, $RB", IIC_IntSimple,
687 [(set i64:$RT, (add i64:$RA, i64:$RB))]>;
692 def ADD8TLS : XOForm_1<31, 266, 0, (outs g8rc:$RT), (ins g8rc_nox0:$RA, tlsreg:$RB),
693 "add $RT, $RA, $RB", IIC_IntSimple,
694 [(set i64:$RT, (add i64:$RA, tglobaltlsaddr:$RB))]>;
696 def LBZXTLS : XForm_1<31, 87, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
697 "lbzx $RST, $RA, $RB", IIC_LdStLoad, []>;
698 def LHZXTLS : XForm_1<31, 279, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
699 "lhzx $RST, $RA, $RB", IIC_LdStLoad, []>;
700 def LHAXTLS : XForm_1<31, 343, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
701 "lhax $RST, $RA, $RB", IIC_LdStLoad, []>;
702 def LWZXTLS : XForm_1<31, 23, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
703 "lwzx $RST, $RA, $RB", IIC_LdStLoad, []>;
704 def LWAXTLS : XForm_1<31, 341, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
705 "lwax $RST, $RA, $RB", IIC_LdStLoad, []>;
706 def LDXTLS : XForm_1<31, 21, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
707 "ldx $RST, $RA, $RB", IIC_LdStLD, []>, isPPC64;
708 def LBZXTLS_32 : XForm_1<31, 87, (outs gprc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
709 "lbzx $RST, $RA, $RB", IIC_LdStLoad, []>;
710 def LHZXTLS_32 : XForm_1<31, 279, (outs gprc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
711 "lhzx $RST, $RA, $RB", IIC_LdStLoad, []>;
712 def LHAXTLS_32 : XForm_1<31, 343, (outs gprc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
713 "lhax $RST, $RA, $RB", IIC_LdStLoad, []>;
714 def LWZXTLS_32 : XForm_1<31, 23, (outs gprc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
715 "lwzx $RST, $RA, $RB", IIC_LdStLoad, []>;
716 def LWAXTLS_32 : XForm_1<31, 341, (outs gprc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
717 "lwax $RST, $RA, $RB", IIC_LdStLoad, []>;
721 def LFSXTLS : XForm_25<31, 535, (outs f4rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
722 "lfsx $RST, $RA, $RB", IIC_LdStLFD, []>;
723 def LFDXTLS : XForm_25<31, 599, (outs f8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
724 "lfdx $RST, $RA, $RB", IIC_LdStLFD, []>;
728 def STBXTLS : XForm_8<31, 215, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
729 "stbx $RST, $RA, $RB", IIC_LdStStore, []>,
731 def STHXTLS : XForm_8<31, 407, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
732 "sthx $RST, $RA, $RB", IIC_LdStStore, []>,
734 def STWXTLS : XForm_8<31, 151, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
735 "stwx $RST, $RA, $RB", IIC_LdStStore, []>,
737 def STDXTLS : XForm_8<31, 149, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
738 "stdx $RST, $RA, $RB", IIC_LdStSTD, []>, isPPC64,
740 def STBXTLS_32 : XForm_8<31, 215, (outs), (ins gprc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
741 "stbx $RST, $RA, $RB", IIC_LdStStore, []>,
743 def STHXTLS_32 : XForm_8<31, 407, (outs), (ins gprc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
744 "sthx $RST, $RA, $RB", IIC_LdStStore, []>,
746 def STWXTLS_32 : XForm_8<31, 151, (outs), (ins gprc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
747 "stwx $RST, $RA, $RB", IIC_LdStStore, []>,
752 def STFSXTLS : XForm_8<31, 663, (outs), (ins f4rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
753 "stfsx $RST, $RA, $RB", IIC_LdStSTFD, []>,
755 def STFDXTLS : XForm_8<31, 727, (outs), (ins f8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
756 "stfdx $RST, $RA, $RB", IIC_LdStSTFD, []>,
761 defm ADDC8 : XOForm_1rc<31, 10, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
762 "addc", "$RT, $RA, $RB", IIC_IntGeneral,
763 [(set i64:$RT, (addc i64:$RA, i64:$RB))]>,
767 def ADDIC8 : DForm_2<12, (outs g8rc:$RST), (ins g8rc:$RA, s16imm64:$D),
768 "addic $RST, $RA, $D", IIC_IntGeneral,
769 [(set i64:$RST, (addc i64:$RA, imm64SExt16:$D))]>;
770 def ADDI8 : DForm_2<14, (outs g8rc:$RST), (ins g8rc_nox0:$RA, s16imm64:$D),
771 "addi $RST, $RA, $D", IIC_IntSimple,
772 [(set i64:$RST, (add i64:$RA, imm64SExt16:$D))]>;
773 def ADDIS8 : DForm_2<15, (outs g8rc:$RST), (ins g8rc_nox0:$RA, s17imm64:$D),
774 "addis $RST, $RA, $D", IIC_IntSimple,
775 [(set i64:$RST, (add i64:$RA, imm16ShiftedSExt:$D))]>;
777 def LA8 : DForm_2<14, (outs g8rc:$RST), (ins g8rc_nox0:$RA, s16imm64:$D),
778 "la $RST, $D($RA)", IIC_IntGeneral,
779 [(set i64:$RST, (add i64:$RA,
783 def SUBFIC8: DForm_2< 8, (outs g8rc:$RST), (ins g8rc:$RA, s16imm64:$D),
784 "subfic $RST, $RA, $D", IIC_IntGeneral,
785 [(set i64:$RST, (subc imm64SExt16:$D, i64:$RA))]>;
787 defm SUBFC8 : XOForm_1rc<31, 8, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
788 "subfc", "$RT, $RA, $RB", IIC_IntGeneral,
789 [(set i64:$RT, (subc i64:$RB, i64:$RA))]>,
791 defm SUBF8 : XOForm_1rx<31, 40, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
792 "subf", "$RT, $RA, $RB", IIC_IntGeneral,
793 [(set i64:$RT, (sub i64:$RB, i64:$RA))]>;
794 defm NEG8 : XOForm_3r<31, 104, 0, (outs g8rc:$RT), (ins g8rc:$RA),
795 "neg", "$RT, $RA", IIC_IntSimple,
796 [(set i64:$RT, (ineg i64:$RA))]>;
799 defm ADDE8 : XOForm_1rc<31, 138, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
800 "adde", "$RT, $RA, $RB", IIC_IntGeneral,
801 [(set i64:$RT, (adde i64:$RA, i64:$RB))]>;
802 defm ADDME8 : XOForm_3rc<31, 234, 0, (outs g8rc:$RT), (ins g8rc:$RA),
803 "addme", "$RT, $RA", IIC_IntGeneral,
804 [(set i64:$RT, (adde i64:$RA, -1))]>;
805 defm ADDZE8 : XOForm_3rc<31, 202, 0, (outs g8rc:$RT), (ins g8rc:$RA),
806 "addze", "$RT, $RA", IIC_IntGeneral,
807 [(set i64:$RT, (adde i64:$RA, 0))]>;
808 defm SUBFE8 : XOForm_1rc<31, 136, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
809 "subfe", "$RT, $RA, $RB", IIC_IntGeneral,
810 [(set i64:$RT, (sube i64:$RB, i64:$RA))]>;
811 defm SUBFME8 : XOForm_3rc<31, 232, 0, (outs g8rc:$RT), (ins g8rc:$RA),
812 "subfme", "$RT, $RA", IIC_IntGeneral,
813 [(set i64:$RT, (sube -1, i64:$RA))]>;
814 defm SUBFZE8 : XOForm_3rc<31, 200, 0, (outs g8rc:$RT), (ins g8rc:$RA),
815 "subfze", "$RT, $RA", IIC_IntGeneral,
816 [(set i64:$RT, (sube 0, i64:$RA))]>;
824 def ADD8TLS_ : XOForm_1<31, 266, 0, (outs g8rc:$RT), (ins g8rc:$RA, tlsreg:$RB),
825 "add $RT, $RA, $RB", IIC_IntSimple, []>;
828 def LBZXTLS_ : XForm_1<31, 87, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
829 "lbzx $RST, $RA, $RB", IIC_LdStLoad, []>;
830 def LHZXTLS_ : XForm_1<31, 279, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
831 "lhzx $RST, $RA, $RB", IIC_LdStLoad, []>;
832 def LHAXTLS_ : XForm_1<31, 343, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
833 "lhax $RST, $RA, $RB", IIC_LdStLoad, []>;
834 def LWZXTLS_ : XForm_1<31, 23, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
835 "lwzx $RST, $RA, $RB", IIC_LdStLoad, []>;
836 def LWAXTLS_ : XForm_1<31, 341, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
837 "lwax $RST, $RA, $RB", IIC_LdStLoad, []>;
838 def LDXTLS_ : XForm_1<31, 21, (outs g8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
839 "ldx $RST, $RA, $RB", IIC_LdStLD, []>, isPPC64;
843 def LFSXTLS_ : XForm_25<31, 535, (outs f4rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
844 "lfsx $RST, $RA, $RB", IIC_LdStLFD, []>;
845 def LFDXTLS_ : XForm_25<31, 599, (outs f8rc:$RST), (ins ptr_rc_nor0:$RA, tlsreg:$RB),
846 "lfdx $RST, $RA, $RB", IIC_LdStLFD, []>;
850 def STBXTLS_ : XForm_8<31, 215, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
851 "stbx $RST, $RA, $RB", IIC_LdStStore, []>,
853 def STHXTLS_ : XForm_8<31, 407, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
854 "sthx $RST, $RA, $RB", IIC_LdStStore, []>,
856 def STWXTLS_ : XForm_8<31, 151, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
857 "stwx $RST, $RA, $RB", IIC_LdStStore, []>,
859 def STDXTLS_ : XForm_8<31, 149, (outs), (ins g8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
860 "stdx $RST, $RA, $RB", IIC_LdStSTD, []>, isPPC64,
865 def STFSXTLS_ : XForm_8<31, 663, (outs), (ins f4rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
866 "stfsx $RST, $RA, $RB", IIC_LdStSTFD, []>,
868 def STFDXTLS_ : XForm_8<31, 727, (outs), (ins f8rc:$RST, ptr_rc_nor0:$RA, tlsreg:$RB),
869 "stfdx $RST, $RA, $RB", IIC_LdStSTFD, []>,
875 defm MULHD : XOForm_1r<31, 73, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
876 "mulhd", "$RT, $RA, $RB", IIC_IntMulHW,
877 [(set i64:$RT, (mulhs i64:$RA, i64:$RB))]>;
878 defm MULHDU : XOForm_1r<31, 9, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
879 "mulhdu", "$RT, $RA, $RB", IIC_IntMulHWU,
880 [(set i64:$RT, (mulhu i64:$RA, i64:$RB))]>;
886 def CMPD : XForm_16_ext<31, 0, (outs crrc:$BF), (ins g8rc:$RA, g8rc:$RB),
887 "cmpd $BF, $RA, $RB", IIC_IntCompare>, isPPC64;
888 def CMPLD : XForm_16_ext<31, 32, (outs crrc:$BF), (ins g8rc:$RA, g8rc:$RB),
889 "cmpld $BF, $RA, $RB", IIC_IntCompare>, isPPC64;
890 def CMPDI : DForm_5_ext<11, (outs crrc:$BF), (ins g8rc:$RA, s16imm64:$D),
891 "cmpdi $BF, $RA, $D", IIC_IntCompare>, isPPC64;
892 def CMPLDI : DForm_6_ext<10, (outs crrc:$BF), (ins g8rc:$RA, u16imm64:$D),
893 "cmpldi $BF, $RA, $D",
897 (ins u1imm:$L, g8rc:$RA, g8rc:$RB),
898 "cmprb $BF, $L, $RA, $RB", IIC_IntCompare, []>,
901 (ins g8rc:$RA, g8rc:$RB), "cmpeqb $BF, $RA, $RB",
906 defm SLD : XForm_6r<31, 27, (outs g8rc:$RA), (ins g8rc:$RST, gprc:$RB),
907 "sld", "$RA, $RST, $RB", IIC_IntRotateD,
908 [(set i64:$RA, (PPCshl i64:$RST, i32:$RB))]>, isPPC64;
909 defm SRD : XForm_6r<31, 539, (outs g8rc:$RA), (ins g8rc:$RST, gprc:$RB),
910 "srd", "$RA, $RST, $RB", IIC_IntRotateD,
911 [(set i64:$RA, (PPCsrl i64:$RST, i32:$RB))]>, isPPC64;
912 defm SRAD : XForm_6rc<31, 794, (outs g8rc:$RA), (ins g8rc:$RST, gprc:$RB),
913 "srad", "$RA, $RST, $RB", IIC_IntRotateD,
914 [(set i64:$RA, (PPCsra i64:$RST, i32:$RB))]>, isPPC64;
917 defm CNTLZW8 : XForm_11r<31, 26, (outs g8rc:$RA), (ins g8rc:$RST),
918 "cntlzw", "$RA, $RST", IIC_IntGeneral, []>,
920 defm CNTTZW8 : XForm_11r<31, 538, (outs g8rc:$RA), (ins g8rc:$RST),
921 "cnttzw", "$RA, $RST", IIC_IntGeneral, []>,
924 defm EXTSB8 : XForm_11r<31, 954, (outs g8rc:$RA), (ins g8rc:$RST),
925 "extsb", "$RA, $RST", IIC_IntSimple,
926 [(set i64:$RA, (sext_inreg i64:$RST, i8))]>, SExt32To64;
927 defm EXTSH8 : XForm_11r<31, 922, (outs g8rc:$RA), (ins g8rc:$RST),
928 "extsh", "$RA, $RST", IIC_IntSimple,
929 [(set i64:$RA, (sext_inreg i64:$RST, i16))]>, SExt32To64;
931 defm SLW8 : XForm_6r<31, 24, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
932 "slw", "$RA, $RST, $RB", IIC_IntGeneral, []>, ZExt32To64;
933 defm SRW8 : XForm_6r<31, 536, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
934 "srw", "$RA, $RST, $RB", IIC_IntGeneral, []>, ZExt32To64;
939 def EXTSB8_32_64 : XForm_11<31, 954, (outs g8rc:$RA), (ins gprc:$RST),
940 "extsb $RA, $RST", IIC_IntSimple, []>, isPPC64,
942 def EXTSH8_32_64 : XForm_11<31, 922, (outs g8rc:$RA), (ins gprc:$RST),
943 "extsh $RA, $RST", IIC_IntSimple, []>, isPPC64,
947 defm EXTSW : XForm_11r<31, 986, (outs g8rc:$RA), (ins g8rc:$RST),
948 "extsw", "$RA, $RST", IIC_IntSimple,
949 [(set i64:$RA, (sext_inreg i64:$RST, i32))]>, isPPC64,
952 defm EXTSW_32_64 : XForm_11r<31, 986, (outs g8rc:$RA), (ins gprc:$RST),
953 "extsw", "$RA, $RST", IIC_IntSimple,
954 [(set i64:$RA, (sext i32:$RST))]>, isPPC64,
957 def EXTSW_32 : XForm_11<31, 986, (outs gprc:$RA), (ins gprc:$RST),
958 "extsw $RA, $RST", IIC_IntSimple,
961 defm SRADI : XSForm_1rc<31, 413, (outs g8rc:$RA), (ins g8rc:$RS, u6imm:$SH),
962 "sradi", "$RA, $RS, $SH", IIC_IntRotateDI,
963 [(set i64:$RA, (sra i64:$RS, (i32 imm:$SH)))]>, isPPC64;
966 defm EXTSWSLI_32_64 : XSForm_1r<31, 445, (outs g8rc:$RA),
968 "extswsli", "$RA, $RS, $SH", IIC_IntRotateDI,
969 [(set i64:$RA,
973 defm EXTSWSLI : XSForm_1rc<31, 445, (outs g8rc:$RA), (ins g8rc:$RS, u6imm:$SH),
974 "extswsli", "$RA, $RS, $SH", IIC_IntRotateDI,
979 def SRADI_32 : XSForm_1<31, 413, (outs gprc:$RA), (ins gprc:$RS, u6imm:$SH),
980 "sradi $RA, $RS, $SH", IIC_IntRotateDI, []>, isPPC64;
982 defm CNTLZD : XForm_11r<31, 58, (outs g8rc:$RA), (ins g8rc:$RST),
983 "cntlzd", "$RA, $RST", IIC_IntGeneral,
984 [(set i64:$RA, (ctlz i64:$RST))]>,
986 defm CNTTZD : XForm_11r<31, 570, (outs g8rc:$RA), (ins g8rc:$RST),
987 "cnttzd", "$RA, $RST", IIC_IntGeneral,
988 [(set i64:$RA, (cttz i64:$RST))]>, Requires<[IsISA3_0]>,
990 def POPCNTD : XForm_11<31, 506, (outs g8rc:$RA), (ins g8rc:$RST),
991 "popcntd $RA, $RST", IIC_IntGeneral,
992 [(set i64:$RA, (ctpop i64:$RST))]>,
994 def BPERMD : XForm_6<31, 252, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
995 "bpermd $RA, $RST, $RB", IIC_IntGeneral,
996 [(set i64:$RA, (int_ppc_bpermd g8rc:$RST, g8rc:$RB))]>,
1000 def CMPB8 : XForm_6<31, 508, (outs g8rc:$RA), (ins g8rc:$RST, g8rc:$RB),
1001 "cmpb $RA, $RST, $RB", IIC_IntGeneral,
1002 [(set i64:$RA, (PPCcmpb i64:$RST, i64:$RB))]>;
1007 def POPCNTW : XForm_11<31, 378, (outs gprc:$RA), (ins gprc:$RST),
1008 "popcntw $RA, $RST", IIC_IntGeneral,
1009 [(set i32:$RA, (ctpop i32:$RST))]>;
1012 def POPCNTB8 : XForm_11<31, 122, (outs g8rc:$RA), (ins g8rc:$RST),
1013 "popcntb $RA, $RST", IIC_IntGeneral,
1014 [(set i64:$RA, (int_ppc_popcntb i64:$RST))]>;
1016 def CDTBCD8 : XForm_11<31, 282, (outs g8rc:$RA), (ins g8rc:$RST),
1017 "cdtbcd $RA, $RST", IIC_IntGeneral, []>;
1018 def CBCDTD8 : XForm_11<31, 314, (outs g8rc:$RA), (ins g8rc:$RST),
1019 "cbcdtd $RA, $RST", IIC_IntGeneral, []>;
1021 def ADDG6S8 : XOForm_1<31, 74, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1022 "addg6s $RT, $RA, $RB", IIC_IntGeneral, []>;
1025 defm DIVD : XOForm_1rcr<31, 489, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1026 "divd", "$RT, $RA, $RB", IIC_IntDivD,
1027 [(set i64:$RT, (sdiv i64:$RA, i64:$RB))]>, isPPC64;
1028 defm DIVDU : XOForm_1rcr<31, 457, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1029 "divdu", "$RT, $RA, $RB", IIC_IntDivD,
1030 [(set i64:$RT, (udiv i64:$RA, i64:$RB))]>, isPPC64;
1031 defm DIVDE : XOForm_1rcr<31, 425, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1032 "divde", "$RT, $RA, $RB", IIC_IntDivD,
1033 [(set i64:$RT, (int_ppc_divde g8rc:$RA, g8rc:$RB))]>,
1037 def MADDHD : VAForm_1a<48, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB, g8rc:$RC),
1038 "maddhd $RT, $RA, $RB, $RC", IIC_IntMulHD, []>, isPPC64;
1040 (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB, g8rc:$RC),
1041 "maddhdu $RT, $RA, $RB, $RC", IIC_IntMulHD, []>, isPPC64;
1042 def MADDLD : VAForm_1a<51, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB, gprc:$RC),
1043 "maddld $RT, $RA, $RB, $RC", IIC_IntMulHD,
1044 [(set i32:$RT, (add_without_simm16 (mul_without_simm16 i32:$RA, i32:$RB), i32:$RC))]>,
1048 (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB, g8rc:$RC),
1049 "maddld $RT, $RA, $RB, $RC", IIC_IntMulHD,
1050 [(set i64:$RT, (add_without_simm16 (mul_without_simm16 i64:$RA, i64:$RB), i64:$RC))]>,
1057 def MODSD : XForm_8<31, 777, (outs g8rc:$RST), (ins g8rc:$RA, g8rc:$RB),
1058 "modsd $RST, $RA, $RB", IIC_IntDivW,
1059 [(set i64:$RST, (srem i64:$RA, i64:$RB))]>;
1060 def MODUD : XForm_8<31, 265, (outs g8rc:$RST), (ins g8rc:$RA, g8rc:$RB),
1061 "modud $RST, $RA, $RB", IIC_IntDivW,
1062 [(set i64:$RST, (urem i64:$RA, i64:$RB))]>;
1065 defm DIVDEU : XOForm_1rcr<31, 393, 0, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1066 "divdeu", "$RT, $RA, $RB", IIC_IntDivD,
1067 [(set i64:$RT, (int_ppc_divdeu g8rc:$RA, g8rc:$RB))]>,
1070 defm MULLD : XOForm_1rx<31, 233, (outs g8rc:$RT), (ins g8rc:$RA, g8rc:$RB),
1071 "mulld", "$RT, $RA, $RB", IIC_IntMulHD,
1072 [(set i64:$RT, (mul i64:$RA, i64:$RB))]>, isPPC64;
1074 def MULLI8 : DForm_2<7, (outs g8rc:$RST), (ins g8rc:$RA, s16imm64:$D),
1075 "mulli $RST, $RA, $D", IIC_IntMulLI,
1076 [(set i64:$RST, (mul i64:$RA, imm64SExt16:$D))]>;
1085 defm RLDIMI : MDForm_1r<30, 3, (outs g8rc:$RA),
1087 "rldimi", "$RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1088 []>, isPPC64, RegConstraint<"$RAi = $RA">,
1093 (outs g8rc:$RA), (ins g8rc:$RS, gprc:$RB, u6imm:$MBE),
1094 "rldcl", "$RA, $RS, $RB, $MBE", IIC_IntRotateD,
1097 (outs g8rc:$RA), (ins g8rc:$RS, gprc:$RB, u6imm:$MBE),
1098 "rldcr", "$RA, $RS, $RB, $MBE", IIC_IntRotateD,
1101 (outs g8rc:$RA), (ins g8rc:$RS, u6imm:$SH, u6imm:$MBE),
1102 "rldicl", "$RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1107 (outs g8rc:$RA),
1109 "rldicl $RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1114 (outs gprc:$RA),
1116 "rldicl", "$RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1119 (outs g8rc:$RA), (ins g8rc:$RS, u6imm:$SH, u6imm:$MBE),
1120 "rldicr", "$RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1124 (outs gprc:$RA), (ins gprc:$RS, u6imm:$SH, u6imm:$MBE),
1125 "rldicr $RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1128 (outs g8rc:$RA), (ins g8rc:$RS, u6imm:$SH, u6imm:$MBE),
1129 "rldic", "$RA, $RS, $SH, $MBE", IIC_IntRotateDI,
1133 defm RLWINM8 : MForm_2r<21, (outs g8rc:$RA),
1135 "rlwinm", "$RA, $RS, $SH, $MB, $ME", IIC_IntGeneral,
1138 defm RLWNM8 : MForm_1r<23, (outs g8rc:$RA),
1140 "rlwnm", "$RA, $RS, $RB, $MB, $ME", IIC_IntGeneral,
1145 defm RLWIMI8 : MForm_2r<20, (outs g8rc:$RA),
1147 u5imm:$ME), "rlwimi", "$RA, $RS, $SH, $MB, $ME",
1149 RegConstraint<"$RAi = $RA">, NoEncode<"$RAi">;
1153 (outs g8rc:$RT), (ins g8rc_nox0:$RA, g8rc:$RB, crbitrc:$COND),
1154 "isel $RT, $RA, $RB, $COND", IIC_IntISEL,
1163 def : InstAlias<"mr $rA, $rB", (OR8 g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
1164 def : InstAlias<"mr. $rA, $rB", (OR8_rec g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
1166 def : InstAlias<"not $rA, $rB", (NOR8 g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
1167 def : InstAlias<"not. $rA, $rB", (NOR8_rec g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
1169 def : InstAlias<"mtcr $rA", (MTCRF8 255, g8rc:$rA)>;
1171 def : InstAlias<"sub $rA, $rB, $rC", (SUBF8 g8rc:$rA, g8rc:$rC, g8rc:$rB)>;
1172 def : InstAlias<"sub. $rA, $rB, $rC", (SUBF8_rec g8rc:$rA, g8rc:$rC, g8rc:$rB)>;
1173 def : InstAlias<"subc $rA, $rB, $rC", (SUBFC8 g8rc:$rA, g8rc:$rC, g8rc:$rB)>;
1174 def : InstAlias<"subc. $rA, $rB, $rC", (SUBFC8_rec g8rc:$rA, g8rc:$rC, g8rc:$rB)>;
1176 def : InstAlias<"rotlwi $rA, $rS, $n", (RLWINM8 g8rc:$rA, g8rc:$rS, u5imm:$n, 0, 31)>;
1177 def : InstAlias<"rotlwi. $rA, $rS, $n", (RLWINM8_rec g8rc:$rA, g8rc:$rS, u5imm:$n, 0, 31)>;
1178 def : InstAlias<"rotlw $rA, $rS, $rB", (RLWNM8 g8rc:$rA, g8rc:$rS, g8rc:$rB, 0, 31)>;
1179 def : InstAlias<"rotlw. $rA, $rS, $rB", (RLWNM8_rec g8rc:$rA, g8rc:$rS, g8rc:$rB, 0, 31)>;
1180 def : InstAlias<"clrlwi $rA, $rS, $n", (RLWINM8 g8rc:$rA, g8rc:$rS, 0, u5imm:$n, 31)>;
1181 def : InstAlias<"clrlwi. $rA, $rS, $n", (RLWINM8_rec g8rc:$rA, g8rc:$rS, 0, u5imm:$n, 31)>;
1183 def : InstAlias<"isellt $rT, $rA, $rB",
1184 (ISEL8 g8rc:$rT, g8rc_nox0:$rA, g8rc:$rB, CR0LT)>;
1185 def : InstAlias<"iselgt $rT, $rA, $rB",
1186 (ISEL8 g8rc:$rT, g8rc_nox0:$rA, g8rc:$rB, CR0GT)>;
1187 def : InstAlias<"iseleq $rT, $rA, $rB",
1188 (ISEL8 g8rc:$rT, g8rc_nox0:$rA, g8rc:$rB, CR0EQ)>;
1193 def : InstAlias<"cntlzw $rA, $rS", (CNTLZW8 g8rc:$rA, g8rc:$rS)>;
1194 def : InstAlias<"cntlzw. $rA, $rS", (CNTLZW8_rec g8rc:$rA, g8rc:$rS)>;
1272 def LHA8: DForm_1<42, (outs g8rc:$RST), (ins (memri $D, $RA):$addr),
1276 def LWA : DSForm_1<58, 2, (outs g8rc:$RST), (ins (memrix $D, $RA):$addr),
1282 def LHAX8: XForm_1_memOp<31, 343, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1286 def LWAX : XForm_1_memOp<31, 341, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1292 def LWA_32 : DSForm_1<58, 2, (outs gprc:$RST), (ins (memrix $D, $RA):$addr),
1295 def LWAX_32 : XForm_1_memOp<31, 341, (outs gprc:$RST), (ins (memrr $RA, $RB):$addr),
1304 (ins (memri $D, $RA):$addr),
1312 (ins (memrr $RA, $RB):$addr),
1317 (ins (memrr $RA, $RB):$addr),
1327 def LBZ8 : DForm_1<34, (outs g8rc:$RST), (ins (memri $D, $RA):$addr),
1331 def LHZ8 : DForm_1<40, (outs g8rc:$RST), (ins (memri $D, $RA):$addr),
1335 def LWZ8 : DForm_1<32, (outs g8rc:$RST), (ins (memri $D, $RA):$addr),
1340 def LBZX8 : XForm_1_memOp<31, 87, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1344 def LHZX8 : XForm_1_memOp<31, 279, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1348 def LWZX8 : XForm_1_memOp<31, 23, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1357 (ins (memri $D, $RA):$addr),
1362 (ins (memri $D, $RA):$addr),
1367 (ins (memri $D, $RA):$addr),
1373 (ins (memrr $RA, $RB):$addr),
1378 (ins (memrr $RA, $RB):$addr),
1383 (ins (memrr $RA, $RB):$addr),
1394 def LD : DSForm_1<58, 0, (outs g8rc:$RST), (ins (memrix $D, $RA):$addr),
1417 def LDX : XForm_1_memOp<31, 21, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1422 def LDBRX : XForm_1_memOp<31, 532, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1428 def LHBRX8 : XForm_1_memOp<31, 790, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1430 def LWBRX8 : XForm_1_memOp<31, 534, (outs g8rc:$RST), (ins (memrr $RA, $RB):$addr),
1436 (ins (memrix $D, $RA):$addr),
1442 (ins (memrr $RA, $RB):$addr),
1450 // Early clobber $RTp to avoid assigned to the same register as RA.
1454 (ins (memrix16 $DQ, $RA):$addr),
1460 // handle x-form during isel. Make it pre-ra may expose
1462 // RA and RB.
1639 def STB8 : DForm_1<38, (outs), (ins g8rc:$RST, (memri $D, $RA):$addr),
1642 def STH8 : DForm_1<44, (outs), (ins g8rc:$RST, (memri $D, $RA):$addr),
1645 def STW8 : DForm_1<36, (outs), (ins g8rc:$RST, (memri $D, $RA):$addr),
1648 def STBX8 : XForm_8_memOp<31, 215, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1652 def STHX8 : XForm_8_memOp<31, 407, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1656 def STWX8 : XForm_8_memOp<31, 151, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1663 def STD : DSForm_1<62, 0, (outs), (ins g8rc:$RST, (memrix $D, $RA):$addr),
1666 def STDX : XForm_8_memOp<31, 149, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1672 def STDBRX: XForm_8_memOp<31, 660, (outs), (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1681 def STQ : DSForm_1<62, 2, (outs), (ins g8prc:$RST, (memrix $D, $RA):$addr),
1709 def STBU8 : DForm_1<39, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$RST, (memri $D, $RA):$addr),
1712 def STHU8 : DForm_1<45, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$RST, (memri $D, $RA):$addr),
1715 def STWU8 : DForm_1<37, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$RST, (memri $D, $RA):$addr),
1720 (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1726 (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1732 (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1740 (ins g8rc:$RST, (memrix $D, $RA):$addr),
1746 (ins g8rc:$RST, (memrr $RA, $RB):$addr),
1816 (ins g8rc:$RB, (memrihash $D, $RA):$addr),
1819 (ins g8rc:$RB, (memrihash $D, $RA):$addr),
1830 (ins g8rc:$RB, (memrihash $D, $RA):$addr),
1833 (ins g8rc:$RB, (memrihash $D, $RA):$addr),
1839 (ins g8rc:$RA, g8rc:$RB, u2imm:$CY),
1840 "addex $RT, $RA, $RB, $CY", IIC_IntGeneral,
1841 [(set i64:$RT, (int_ppc_addex i64:$RA, i64:$RB,
1993 : X_L1_RS5_RS5<opcode, xo, (outs), (ins ty:$RA, ty:$RB, u1imm:$L),
1994 !strconcat(opc, " $RA, $RB"), itin, pattern>{
2000 : X_L1_RS5_RS5<opcode, xo, (outs), (ins ty:$RA, ty:$RB, u1imm:$L),
2001 !strconcat(opc, " $RA, $RB, $L"), itin, pattern>;