Lines Matching full:vb

292   : VXForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
293 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecFP,
294 [(set Ty:$VD, (IntID Ty:$VA, Ty:$VB))]>;
300 : VXForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
301 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecFP,
302 [(set OutTy:$VD, (IntID InTy:$VA, InTy:$VB))]>;
308 : VXForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
309 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecFP,
310 [(set OutTy:$VD, (IntID In1Ty:$VA, In2Ty:$VB))]>;
314 : VXForm_2<xo, (outs vrrc:$VD), (ins vrrc:$VB),
315 !strconcat(opc, " $VD, $VB"), IIC_VecFP,
316 [(set v4f32:$VD, (IntID v4f32:$VB))]>;
322 : VXForm_2<xo, (outs vrrc:$VD), (ins vrrc:$VB),
323 !strconcat(opc, " $VD, $VB"), IIC_VecFP,
324 [(set OutTy:$VD, (IntID InTy:$VB))]>;
406 def MTVSCR : VXForm_5<1604, (outs), (ins vrrc:$VB),
407 "mtvscr $VB", IIC_LdStLoad,
408 [(int_ppc_altivec_mtvscr v4i32:$VB)]>;
489 def VADDFP : VXForm_1<10, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
490 "vaddfp $VD, $VA, $VB", IIC_VecFP,
491 [(set v4f32:$VD, (fadd v4f32:$VA, v4f32:$VB))]>;
493 def VADDUBM : VXForm_1<0, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
494 "vaddubm $VD, $VA, $VB", IIC_VecGeneral,
495 [(set v16i8:$VD, (add v16i8:$VA, v16i8:$VB))]>;
496 def VADDUHM : VXForm_1<64, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
497 "vadduhm $VD, $VA, $VB", IIC_VecGeneral,
498 [(set v8i16:$VD, (add v8i16:$VA, v8i16:$VB))]>;
499 def VADDUWM : VXForm_1<128, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
500 "vadduwm $VD, $VA, $VB", IIC_VecGeneral,
501 [(set v4i32:$VD, (add v4i32:$VA, v4i32:$VB))]>;
513 def VAND : VXForm_1<1028, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
514 "vand $VD, $VA, $VB", IIC_VecFP,
515 [(set v4i32:$VD, (and v4i32:$VA, v4i32:$VB))]>;
516 def VANDC : VXForm_1<1092, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
517 "vandc $VD, $VA, $VB", IIC_VecFP,
519 (vnot v4i32:$VB)))]>;
521 def VCFSX : VXForm_1<842, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
522 "vcfsx $VD, $VB, $VA", IIC_VecFP,
524 (int_ppc_altivec_vcfsx v4i32:$VB, timm:$VA))]>;
525 def VCFUX : VXForm_1<778, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
526 "vcfux $VD, $VB, $VA", IIC_VecFP,
528 (int_ppc_altivec_vcfux v4i32:$VB, timm:$VA))]>;
529 def VCTSXS : VXForm_1<970, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
530 "vctsxs $VD, $VB, $VA", IIC_VecFP,
532 (int_ppc_altivec_vctsxs v4f32:$VB, timm:$VA))]>;
533 def VCTUXS : VXForm_1<906, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
534 "vctuxs $VD, $VB, $VA", IIC_VecFP,
536 (int_ppc_altivec_vctuxs v4f32:$VB, timm:$VA))]>;
542 def VCFSX_0 : VXForm_1<842, (outs vrrc:$VD), (ins vrrc:$VB),
543 "vcfsx $VD, $VB, 0", IIC_VecFP,
545 (int_ppc_altivec_vcfsx v4i32:$VB, 0))]>;
546 def VCTUXS_0 : VXForm_1<906, (outs vrrc:$VD), (ins vrrc:$VB),
547 "vctuxs $VD, $VB, 0", IIC_VecFP,
549 (int_ppc_altivec_vctuxs v4f32:$VB, 0))]>;
550 def VCFUX_0 : VXForm_1<778, (outs vrrc:$VD), (ins vrrc:$VB),
551 "vcfux $VD, $VB, 0", IIC_VecFP,
553 (int_ppc_altivec_vcfux v4i32:$VB, 0))]>;
554 def VCTSXS_0 : VXForm_1<970, (outs vrrc:$VD), (ins vrrc:$VB),
555 "vctsxs $VD, $VB, 0", IIC_VecFP,
557 (int_ppc_altivec_vctsxs v4f32:$VB, 0))]>;
586 def VMRGHB : VXForm_1< 12, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
587 "vmrghb $VD, $VA, $VB", IIC_VecFP,
588 [(set v16i8:$VD, (vmrghb_shuffle v16i8:$VA, v16i8:$VB))]>;
589 def VMRGHH : VXForm_1< 76, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
590 "vmrghh $VD, $VA, $VB", IIC_VecFP,
591 [(set v16i8:$VD, (vmrghh_shuffle v16i8:$VA, v16i8:$VB))]>;
592 def VMRGHW : VXForm_1<140, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
593 "vmrghw $VD, $VA, $VB", IIC_VecFP,
594 [(set v16i8:$VD, (vmrghw_shuffle v16i8:$VA, v16i8:$VB))]>;
595 def VMRGLB : VXForm_1<268, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
596 "vmrglb $VD, $VA, $VB", IIC_VecFP,
597 [(set v16i8:$VD, (vmrglb_shuffle v16i8:$VA, v16i8:$VB))]>;
598 def VMRGLH : VXForm_1<332, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
599 "vmrglh $VD, $VA, $VB", IIC_VecFP,
600 [(set v16i8:$VD, (vmrglh_shuffle v16i8:$VA, v16i8:$VB))]>;
601 def VMRGLW : VXForm_1<396, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
602 "vmrglw $VD, $VA, $VB", IIC_VecFP,
603 [(set v16i8:$VD, (vmrglw_shuffle v16i8:$VA, v16i8:$VB))]>;
648 def VSUBFP : VXForm_1<74, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
649 "vsubfp $VD, $VA, $VB", IIC_VecGeneral,
650 [(set v4f32:$VD, (fsub v4f32:$VA, v4f32:$VB))]>;
651 def VSUBUBM : VXForm_1<1024, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
652 "vsububm $VD, $VA, $VB", IIC_VecGeneral,
653 [(set v16i8:$VD, (sub v16i8:$VA, v16i8:$VB))]>;
654 def VSUBUHM : VXForm_1<1088, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
655 "vsubuhm $VD, $VA, $VB", IIC_VecGeneral,
656 [(set v8i16:$VD, (sub v8i16:$VA, v8i16:$VB))]>;
657 def VSUBUWM : VXForm_1<1152, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
658 "vsubuwm $VD, $VA, $VB", IIC_VecGeneral,
659 [(set v4i32:$VD, (sub v4i32:$VA, v4i32:$VB))]>;
680 def VNOR : VXForm_1<1284, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
681 "vnor $VD, $VA, $VB", IIC_VecFP,
683 v4i32:$VB)))]>;
685 def VOR : VXForm_1<1156, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
686 "vor $VD, $VA, $VB", IIC_VecFP,
687 [(set v4i32:$VD, (or v4i32:$VA, v4i32:$VB))]>;
688 def VXOR : VXForm_1<1220, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
689 "vxor $VD, $VA, $VB", IIC_VecFP,
690 [(set v4i32:$VD, (xor v4i32:$VA, v4i32:$VB))]>;
704 def VSPLTB : VXForm_1<524, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
705 "vspltb $VD, $VB, $VA", IIC_VecPerm,
707 (vspltb_shuffle:$VA v16i8:$VB, (undef)))]>;
708 def VSPLTH : VXForm_1<588, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
709 "vsplth $VD, $VB, $VA", IIC_VecPerm,
711 (vsplth_shuffle:$VA v16i8:$VB, (undef)))]>;
712 def VSPLTW : VXForm_1<652, (outs vrrc:$VD), (ins u5imm:$VA, vrrc:$VB),
713 "vspltw $VD, $VB, $VA", IIC_VecPerm,
715 (vspltw_shuffle:$VA v16i8:$VB, (undef)))]>;
717 def VSPLTBs : VXForm_1<524, (outs vrrc:$VD), (ins u5imm:$VA, vfrc:$VB),
718 "vspltb $VD, $VB, $VA", IIC_VecPerm, []>;
719 def VSPLTHs : VXForm_1<588, (outs vrrc:$VD), (ins u5imm:$VA, vfrc:$VB),
720 "vsplth $VD, $VB, $VA", IIC_VecPerm, []>;
761 def VPKUHUM : VXForm_1<14, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
762 "vpkuhum $VD, $VA, $VB", IIC_VecFP,
764 (vpkuhum_shuffle v16i8:$VA, v16i8:$VB))]>;
765 def VPKUWUM : VXForm_1<78, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
766 "vpkuwum $VD, $VA, $VB", IIC_VecFP,
768 (vpkuwum_shuffle v16i8:$VA, v16i8:$VB))]>;
788 : VXRForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB), asmstr,
790 [(set Ty:$VD, (Ty (PPCvcmp Ty:$VA, Ty:$VB, xo)))]>;
792 : VXRForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB), asmstr,
794 [(set Ty:$VD, (Ty (PPCvcmp_rec Ty:$VA, Ty:$VB, xo)))]> {
800 def VCMPBFP : VCMP <966, "vcmpbfp $VD, $VA, $VB" , v4f32>;
801 def VCMPBFP_rec : VCMP_rec<966, "vcmpbfp. $VD, $VA, $VB" , v4f32>;
802 def VCMPEQFP : VCMP <198, "vcmpeqfp $VD, $VA, $VB" , v4f32>;
803 def VCMPEQFP_rec : VCMP_rec<198, "vcmpeqfp. $VD, $VA, $VB", v4f32>;
804 def VCMPGEFP : VCMP <454, "vcmpgefp $VD, $VA, $VB" , v4f32>;
805 def VCMPGEFP_rec : VCMP_rec<454, "vcmpgefp. $VD, $VA, $VB", v4f32>;
806 def VCMPGTFP : VCMP <710, "vcmpgtfp $VD, $VA, $VB" , v4f32>;
807 def VCMPGTFP_rec : VCMP_rec<710, "vcmpgtfp. $VD, $VA, $VB", v4f32>;
810 def VCMPEQUB : VCMP < 6, "vcmpequb $VD, $VA, $VB" , v16i8>;
811 def VCMPEQUB_rec : VCMP_rec< 6, "vcmpequb. $VD, $VA, $VB", v16i8>;
812 def VCMPGTSB : VCMP <774, "vcmpgtsb $VD, $VA, $VB" , v16i8>;
813 def VCMPGTSB_rec : VCMP_rec<774, "vcmpgtsb. $VD, $VA, $VB", v16i8>;
814 def VCMPGTUB : VCMP <518, "vcmpgtub $VD, $VA, $VB" , v16i8>;
815 def VCMPGTUB_rec : VCMP_rec<518, "vcmpgtub. $VD, $VA, $VB", v16i8>;
818 def VCMPEQUH : VCMP < 70, "vcmpequh $VD, $VA, $VB" , v8i16>;
819 def VCMPEQUH_rec : VCMP_rec< 70, "vcmpequh. $VD, $VA, $VB", v8i16>;
820 def VCMPGTSH : VCMP <838, "vcmpgtsh $VD, $VA, $VB" , v8i16>;
821 def VCMPGTSH_rec : VCMP_rec<838, "vcmpgtsh. $VD, $VA, $VB", v8i16>;
822 def VCMPGTUH : VCMP <582, "vcmpgtuh $VD, $VA, $VB" , v8i16>;
823 def VCMPGTUH_rec : VCMP_rec<582, "vcmpgtuh. $VD, $VA, $VB", v8i16>;
826 def VCMPEQUW : VCMP <134, "vcmpequw $VD, $VA, $VB" , v4i32>;
827 def VCMPEQUW_rec : VCMP_rec<134, "vcmpequw. $VD, $VA, $VB", v4i32>;
828 def VCMPGTSW : VCMP <902, "vcmpgtsw $VD, $VA, $VB" , v4i32>;
829 def VCMPGTSW_rec : VCMP_rec<902, "vcmpgtsw. $VD, $VA, $VB", v4i32>;
830 def VCMPGTUW : VCMP <646, "vcmpgtuw $VD, $VA, $VB" , v4i32>;
831 def VCMPGTUW_rec : VCMP_rec<646, "vcmpgtuw. $VD, $VA, $VB", v4i32>;
876 def : Pat<(v16i8 (rotl v16i8:$vA, v16i8:$vB)),
877 (v16i8 (VRLB v16i8:$vA, v16i8:$vB))>;
878 def : Pat<(v8i16 (rotl v8i16:$vA, v8i16:$vB)),
879 (v8i16 (VRLH v8i16:$vA, v8i16:$vB))>;
880 def : Pat<(v4i32 (rotl v4i32:$vA, v4i32:$vB)),
881 (v4i32 (VRLW v4i32:$vA, v4i32:$vB))>;
884 def : Pat<(mul v8i16:$vA, v8i16:$vB), (VMLADDUHM $vA, $vB, (v8i16(V_SET0H)))>;
887 def : Pat<(add (mul v8i16:$vA, v8i16:$vB), v8i16:$vC), (VMLADDUHM $vA, $vB, $vC)>;
890 def : Pat<(v16i8 (saddsat v16i8:$vA, v16i8:$vB)), (v16i8 (VADDSBS $vA, $vB))>;
891 def : Pat<(v16i8 (uaddsat v16i8:$vA, v16i8:$vB)), (v16i8 (VADDUBS $vA, $vB))>;
892 def : Pat<(v8i16 (saddsat v8i16:$vA, v8i16:$vB)), (v8i16 (VADDSHS $vA, $vB))>;
893 def : Pat<(v8i16 (uaddsat v8i16:$vA, v8i16:$vB)), (v8i16 (VADDUHS $vA, $vB))>;
894 def : Pat<(v4i32 (saddsat v4i32:$vA, v4i32:$vB)), (v4i32 (VADDSWS $vA, $vB))>;
895 def : Pat<(v4i32 (uaddsat v4i32:$vA, v4i32:$vB)), (v4i32 (VADDUWS $vA, $vB))>;
896 def : Pat<(v16i8 (ssubsat v16i8:$vA, v16i8:$vB)), (v16i8 (VSUBSBS $vA, $vB))>;
897 def : Pat<(v16i8 (usubsat v16i8:$vA, v16i8:$vB)), (v16i8 (VSUBUBS $vA, $vB))>;
898 def : Pat<(v8i16 (ssubsat v8i16:$vA, v8i16:$vB)), (v8i16 (VSUBSHS $vA, $vB))>;
899 def : Pat<(v8i16 (usubsat v8i16:$vA, v8i16:$vB)), (v8i16 (VSUBUHS $vA, $vB))>;
900 def : Pat<(v4i32 (ssubsat v4i32:$vA, v4i32:$vB)), (v4i32 (VSUBSWS $vA, $vB))>;
901 def : Pat<(v4i32 (usubsat v4i32:$vA, v4i32:$vB)), (v4i32 (VSUBUWS $vA, $vB))>;
994 def:Pat<(vsldoi_shuffle:$SH v16i8:$vA, v16i8:$vB),
995 (VSLDOI v16i8:$vA, v16i8:$vB, (VSLDOI_get_imm $SH))>;
1001 def:Pat<(vsldoi_swapped_shuffle:$in v16i8:$vA, v16i8:$vB),
1002 (VSLDOI $vB, $vA, (VSLDOI_swapped_get_imm $in))>;
1003 def:Pat<(vpkuwum_swapped_shuffle v16i8:$vA, v16i8:$vB),
1004 (VPKUWUM $vB, $vA)>;
1005 def:Pat<(vpkuhum_swapped_shuffle v16i8:$vA, v16i8:$vB),
1006 (VPKUHUM $vB, $vA)>;
1025 def:Pat<(vmrglb_swapped_shuffle v16i8:$vA, v16i8:$vB),
1026 (VMRGLB $vB, $vA)>;
1027 def:Pat<(vmrglh_swapped_shuffle v16i8:$vA, v16i8:$vB),
1028 (VMRGLH $vB, $vA)>;
1029 def:Pat<(vmrglw_swapped_shuffle v16i8:$vA, v16i8:$vB),
1030 (VMRGLW $vB, $vA)>;
1031 def:Pat<(vmrghb_swapped_shuffle v16i8:$vA, v16i8:$vB),
1032 (VMRGHB $vB, $vA)>;
1033 def:Pat<(vmrghh_swapped_shuffle v16i8:$vA, v16i8:$vB),
1034 (VMRGHH $vB, $vA)>;
1035 def:Pat<(vmrghw_swapped_shuffle v16i8:$vA, v16i8:$vB),
1036 (VMRGHW $vB, $vA)>;
1046 def : Pat<(fmul v4f32:$vA, v4f32:$vB),
1047 (VMADDFP $vA, $vB,
1058 def : Pat<(PPCvperm v16i8:$vA, v16i8:$vB, v16i8:$vC),
1059 (VPERM $vA, $vB, $vC)>;
1060 def : Pat<(PPCvperm v2f64:$vA, v2f64:$vB, v16i8:$vC),
1061 (VPERM $vA, $vB, $vC)>;
1067 def : Pat<(v16i8 (shl v16i8:$vA, v16i8:$vB)),
1068 (v16i8 (VSLB $vA, $vB))>;
1069 def : Pat<(v8i16 (shl v8i16:$vA, v8i16:$vB)),
1070 (v8i16 (VSLH $vA, $vB))>;
1071 def : Pat<(v4i32 (shl v4i32:$vA, v4i32:$vB)),
1072 (v4i32 (VSLW $vA, $vB))>;
1073 def : Pat<(v1i128 (shl v1i128:$vA, v1i128:$vB)),
1074 (v1i128 (VSL (v16i8 (VSLO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1075 def : Pat<(v16i8 (PPCshl v16i8:$vA, v16i8:$vB)),
1076 (v16i8 (VSLB $vA, $vB))>;
1077 def : Pat<(v8i16 (PPCshl v8i16:$vA, v8i16:$vB)),
1078 (v8i16 (VSLH $vA, $vB))>;
1079 def : Pat<(v4i32 (PPCshl v4i32:$vA, v4i32:$vB)),
1080 (v4i32 (VSLW $vA, $vB))>;
1081 def : Pat<(v1i128 (PPCshl v1i128:$vA, v1i128:$vB)),
1082 (v1i128 (VSL (v16i8 (VSLO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1084 def : Pat<(v16i8 (srl v16i8:$vA, v16i8:$vB)),
1085 (v16i8 (VSRB $vA, $vB))>;
1086 def : Pat<(v8i16 (srl v8i16:$vA, v8i16:$vB)),
1087 (v8i16 (VSRH $vA, $vB))>;
1088 def : Pat<(v4i32 (srl v4i32:$vA, v4i32:$vB)),
1089 (v4i32 (VSRW $vA, $vB))>;
1090 def : Pat<(v1i128 (srl v1i128:$vA, v1i128:$vB)),
1091 (v1i128 (VSR (v16i8 (VSRO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1092 def : Pat<(v16i8 (PPCsrl v16i8:$vA, v16i8:$vB)),
1093 (v16i8 (VSRB $vA, $vB))>;
1094 def : Pat<(v8i16 (PPCsrl v8i16:$vA, v8i16:$vB)),
1095 (v8i16 (VSRH $vA, $vB))>;
1096 def : Pat<(v4i32 (PPCsrl v4i32:$vA, v4i32:$vB)),
1097 (v4i32 (VSRW $vA, $vB))>;
1098 def : Pat<(v1i128 (PPCsrl v1i128:$vA, v1i128:$vB)),
1099 (v1i128 (VSR (v16i8 (VSRO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1101 def : Pat<(v16i8 (sra v16i8:$vA, v16i8:$vB)),
1102 (v16i8 (VSRAB $vA, $vB))>;
1103 def : Pat<(v8i16 (sra v8i16:$vA, v8i16:$vB)),
1104 (v8i16 (VSRAH $vA, $vB))>;
1105 def : Pat<(v4i32 (sra v4i32:$vA, v4i32:$vB)),
1106 (v4i32 (VSRAW $vA, $vB))>;
1107 def : Pat<(v16i8 (PPCsra v16i8:$vA, v16i8:$vB)),
1108 (v16i8 (VSRAB $vA, $vB))>;
1109 def : Pat<(v8i16 (PPCsra v8i16:$vA, v8i16:$vB)),
1110 (v8i16 (VSRAH $vA, $vB))>;
1111 def : Pat<(v4i32 (PPCsra v4i32:$vA, v4i32:$vB)),
1112 (v4i32 (VSRAW $vA, $vB))>;
1135 def : Pat<(v16i8 (vselect v16i8:$vA, v16i8:$vB, v16i8:$vC)),
1136 (VSEL $vC, $vB, $vA)>;
1137 def : Pat<(v8i16 (vselect v8i16:$vA, v8i16:$vB, v8i16:$vC)),
1138 (VSEL $vC, $vB, $vA)>;
1139 def : Pat<(v4i32 (vselect v4i32:$vA, v4i32:$vB, v4i32:$vC)),
1140 (VSEL $vC, $vB, $vA)>;
1141 def : Pat<(v2i64 (vselect v2i64:$vA, v2i64:$vB, v2i64:$vC)),
1142 (VSEL $vC, $vB, $vA)>;
1143 def : Pat<(v4f32 (vselect v4i32:$vA, v4f32:$vB, v4f32:$vC)),
1144 (VSEL $vC, $vB, $vA)>;
1145 def : Pat<(v2f64 (vselect v2i64:$vA, v2f64:$vB, v2f64:$vC)),
1146 (VSEL $vC, $vB, $vA)>;
1147 def : Pat<(v1i128 (vselect v1i128:$vA, v1i128:$vB, v1i128:$vC)),
1148 (VSEL $vC, $vB, $vA)>;
1151 def : Pat<(v4i32 (sra (sub v4i32:$vA, (vnot v4i32:$vB)),
1152 (v4i32 (immEQOneV)))), (v4i32 (VAVGSW $vA, $vB))>;
1153 def : Pat<(v8i16 (sra (sub v8i16:$vA, (v8i16 (bitconvert(vnot v4i32:$vB)))),
1154 (v8i16 (immEQOneV)))), (v8i16 (VAVGSH $vA, $vB))>;
1155 def : Pat<(v16i8 (sra (sub v16i8:$vA, (v16i8 (bitconvert(vnot v4i32:$vB)))),
1156 (v16i8 (immEQOneV)))), (v16i8 (VAVGSB $vA, $vB))>;
1157 def : Pat<(v4i32 (srl (sub v4i32:$vA, (vnot v4i32:$vB)),
1158 (v4i32 (immEQOneV)))), (v4i32 (VAVGUW $vA, $vB))>;
1159 def : Pat<(v8i16 (srl (sub v8i16:$vA, (v8i16 (bitconvert(vnot v4i32:$vB)))),
1160 (v8i16 (immEQOneV)))), (v8i16 (VAVGUH $vA, $vB))>;
1161 def : Pat<(v16i8 (srl (sub v16i8:$vA, (v16i8 (bitconvert(vnot v4i32:$vB)))),
1162 (v16i8 (immEQOneV)))), (v16i8 (VAVGUB $vA, $vB))>;
1176 (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB, u1imm:$PS),
1177 !strconcat(opc, " $VD, $VA, $VB, $PS"), IIC_VecFP, pattern> {
1183 : VX_RD5_RSp5_PS1_XO9<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1184 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecFP, pattern> {
1202 def VMULUWM : VXForm_1<137, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1203 "vmuluwm $VD, $VA, $VB", IIC_VecGeneral,
1204 [(set v4i32:$VD, (mul v4i32:$VA, v4i32:$VB))]>;
1212 def VMRGEW : VXForm_1<1932, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1213 "vmrgew $VD, $VA, $VB", IIC_VecFP,
1215 (v16i8 (vmrgew_shuffle v16i8:$VA, v16i8:$VB)))]>;
1216 def VMRGOW : VXForm_1<1676, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1217 "vmrgow $VD, $VA, $VB", IIC_VecFP,
1219 (v16i8 (vmrgow_shuffle v16i8:$VA, v16i8:$VB)))]>;
1230 def:Pat<(vmrgew_swapped_shuffle v16i8:$vA, v16i8:$vB),
1231 (VMRGEW $vB, $vA)>;
1232 def:Pat<(vmrgow_swapped_shuffle v16i8:$vA, v16i8:$vB),
1233 (VMRGOW $vB, $vA)>;
1238 def : Pat<(v2i64 (rotl v2i64:$vA, v2i64:$vB)),
1239 (v2i64 (VRLD v2i64:$vA, v2i64:$vB))>;
1242 def VSLD : VXForm_1<1476, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1243 "vsld $VD, $VA, $VB", IIC_VecGeneral, []>;
1244 def VSRD : VXForm_1<1732, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1245 "vsrd $VD, $VA, $VB", IIC_VecGeneral, []>;
1246 def VSRAD : VXForm_1<964, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1247 "vsrad $VD, $VA, $VB", IIC_VecGeneral, []>;
1249 def : Pat<(v2i64 (shl v2i64:$vA, v2i64:$vB)),
1250 (v2i64 (VSLD $vA, $vB))>;
1251 def : Pat<(v2i64 (PPCshl v2i64:$vA, v2i64:$vB)),
1252 (v2i64 (VSLD $vA, $vB))>;
1253 def : Pat<(v2i64 (srl v2i64:$vA, v2i64:$vB)),
1254 (v2i64 (VSRD $vA, $vB))>;
1255 def : Pat<(v2i64 (PPCsrl v2i64:$vA, v2i64:$vB)),
1256 (v2i64 (VSRD $vA, $vB))>;
1257 def : Pat<(v2i64 (sra v2i64:$vA, v2i64:$vB)),
1258 (v2i64 (VSRAD $vA, $vB))>;
1259 def : Pat<(v2i64 (PPCsra v2i64:$vA, v2i64:$vB)),
1260 (v2i64 (VSRAD $vA, $vB))>;
1264 def VADDUDM : VXForm_1<192, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1265 "vaddudm $VD, $VA, $VB", IIC_VecGeneral,
1266 [(set v2i64:$VD, (add v2i64:$VA, v2i64:$VB))]>;
1267 def VADDUQM : VXForm_1<256, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1268 "vadduqm $VD, $VA, $VB", IIC_VecGeneral,
1269 [(set v1i128:$VD, (add v1i128:$VA, v1i128:$VB))]>;
1278 def VSUBUDM : VXForm_1<1216, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1279 "vsubudm $VD, $VA, $VB", IIC_VecGeneral,
1280 [(set v2i64:$VD, (sub v2i64:$VA, v2i64:$VB))]>;
1283 def VSUBUQM : VXForm_1<1280, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1284 "vsubuqm $VD, $VA, $VB", IIC_VecGeneral,
1285 [(set v1i128:$VD, (sub v1i128:$VA, v1i128:$VB))]>;
1291 def VCLZB : VXForm_2<1794, (outs vrrc:$VD), (ins vrrc:$VB),
1292 "vclzb $VD, $VB", IIC_VecGeneral,
1293 [(set v16i8:$VD, (ctlz v16i8:$VB))]>;
1294 def VCLZH : VXForm_2<1858, (outs vrrc:$VD), (ins vrrc:$VB),
1295 "vclzh $VD, $VB", IIC_VecGeneral,
1296 [(set v8i16:$VD, (ctlz v8i16:$VB))]>;
1297 def VCLZW : VXForm_2<1922, (outs vrrc:$VD), (ins vrrc:$VB),
1298 "vclzw $VD, $VB", IIC_VecGeneral,
1299 [(set v4i32:$VD, (ctlz v4i32:$VB))]>;
1300 def VCLZD : VXForm_2<1986, (outs vrrc:$VD), (ins vrrc:$VB),
1301 "vclzd $VD, $VB", IIC_VecGeneral,
1302 [(set v2i64:$VD, (ctlz v2i64:$VB))]>;
1305 def VPOPCNTB : VXForm_2<1795, (outs vrrc:$VD), (ins vrrc:$VB),
1306 "vpopcntb $VD, $VB", IIC_VecGeneral,
1307 [(set v16i8:$VD, (ctpop v16i8:$VB))]>;
1308 def VPOPCNTH : VXForm_2<1859, (outs vrrc:$VD), (ins vrrc:$VB),
1309 "vpopcnth $VD, $VB", IIC_VecGeneral,
1310 [(set v8i16:$VD, (ctpop v8i16:$VB))]>;
1311 def VPOPCNTW : VXForm_2<1923, (outs vrrc:$VD), (ins vrrc:$VB),
1312 "vpopcntw $VD, $VB", IIC_VecGeneral,
1313 [(set v4i32:$VD, (ctpop v4i32:$VB))]>;
1314 def VPOPCNTD : VXForm_2<1987, (outs vrrc:$VD), (ins vrrc:$VB),
1315 "vpopcntd $VD, $VB", IIC_VecGeneral,
1316 [(set v2i64:$VD, (ctpop v2i64:$VB))]>;
1329 def VEQV : VXForm_1<1668, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1330 "veqv $VD, $VA, $VB", IIC_VecGeneral,
1331 [(set v4i32:$VD, (vnot (xor v4i32:$VA, v4i32:$VB)))]>;
1332 def VNAND : VXForm_1<1412, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1333 "vnand $VD, $VA, $VB", IIC_VecGeneral,
1334 [(set v4i32:$VD, (vnot (and v4i32:$VA, v4i32:$VB)))]>;
1337 def VORC : VXForm_1<1348, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1338 "vorc $VD, $VA, $VB", IIC_VecGeneral,
1340 (vnot v4i32:$VB)))]>;
1343 def VCMPEQUD : VCMP <199, "vcmpequd $VD, $VA, $VB" , v2i64>;
1344 def VCMPEQUD_rec : VCMP_rec<199, "vcmpequd. $VD, $VA, $VB", v2i64>;
1345 def VCMPGTSD : VCMP <967, "vcmpgtsd $VD, $VA, $VB" , v2i64>;
1346 def VCMPGTSD_rec : VCMP_rec<967, "vcmpgtsd. $VD, $VA, $VB", v2i64>;
1347 def VCMPGTUD : VCMP <711, "vcmpgtud $VD, $VA, $VB" , v2i64>;
1348 def VCMPGTUD_rec : VCMP_rec<711, "vcmpgtud. $VD, $VA, $VB", v2i64>;
1371 def VPKUDUM : VXForm_1<1102, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1372 "vpkudum $VD, $VA, $VB", IIC_VecFP,
1374 (vpkudum_shuffle v16i8:$VA, v16i8:$VB))]>;
1382 def : Pat<(v16i8 (int_ppc_bcdadd v16i8:$vA, v16i8:$vB, timm:$PS)),
1383 (BCDADD_rec $vA, $vB, $PS)>;
1384 def : Pat<(v16i8 (int_ppc_bcdsub v16i8:$vA, v16i8:$vB, timm:$PS)),
1385 (BCDSUB_rec $vA, $vB, $PS)>;
1390 def:Pat<(vpkudum_swapped_shuffle v16i8:$vA, v16i8:$vB),
1391 (VPKUDUM $vB, $vA)>;
1424 def VCMPNEB : VCMP < 7, "vcmpneb $VD, $VA, $VB" , v16i8>;
1425 def VCMPNEB_rec : VCMP_rec < 7, "vcmpneb. $VD, $VA, $VB" , v16i8>;
1426 def VCMPNEZB : VCMP <263, "vcmpnezb $VD, $VA, $VB" , v16i8>;
1427 def VCMPNEZB_rec : VCMP_rec<263, "vcmpnezb. $VD, $VA, $VB", v16i8>;
1430 def VCMPNEH : VCMP < 71, "vcmpneh $VD, $VA, $VB" , v8i16>;
1431 def VCMPNEH_rec : VCMP_rec< 71, "vcmpneh. $VD, $VA, $VB" , v8i16>;
1432 def VCMPNEZH : VCMP <327, "vcmpnezh $VD, $VA, $VB" , v8i16>;
1433 def VCMPNEZH_rec : VCMP_rec<327, "vcmpnezh. $VD, $VA, $VB", v8i16>;
1436 def VCMPNEW : VCMP <135, "vcmpnew $VD, $VA, $VB" , v4i32>;
1437 def VCMPNEW_rec : VCMP_rec<135, "vcmpnew. $VD, $VA, $VB" , v4i32>;
1438 def VCMPNEZW : VCMP <391, "vcmpnezw $VD, $VA, $VB" , v4i32>;
1439 def VCMPNEZW_rec : VCMP_rec<391, "vcmpnezw. $VD, $VA, $VB", v4i32>;
1445 : VXForm_1<xo, (outs vrrc:$VD), (ins u4imm:$VA, vrrc:$VB),
1446 !strconcat(opc, " $VD, $VB, $VA"), IIC_VecGeneral, pattern>;
1449 : VXForm_1<xo, (outs g8rc:$VD), (ins g8rc:$VA, vrrc:$VB),
1450 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecGeneral, pattern>;
1470 (ins vrrc:$VDi, u4imm:$VA, vrrc:$VB),
1471 "vinsertb $VD, $VB, $VA", IIC_VecGeneral,
1472 [(set v16i8:$VD, (PPCvecinsert v16i8:$VDi, v16i8:$VB,
1476 (ins vrrc:$VDi, u4imm:$VA, vrrc:$VB),
1477 "vinserth $VD, $VB, $VA", IIC_VecGeneral,
1478 [(set v8i16:$VD, (PPCvecinsert v8i16:$VDi, v8i16:$VB,
1485 : VXForm_RD5_XO5_RS5<xo, eo, (outs vrrc:$VD), (ins vrrc:$VB),
1486 !strconcat(opc, " $VD, $VB"), IIC_VecGeneral, pattern>;
1488 : VXForm_RD5_XO5_RS5<xo, eo, (outs vfrc:$VD), (ins vfrc:$VB),
1489 !strconcat(opc, " $VD, $VB"), IIC_VecGeneral, pattern>;
1492 def VCLZLSBB : VXForm_RD5_XO5_RS5<1538, 0, (outs gprc:$VD), (ins vrrc:$VB),
1493 "vclzlsbb $VD, $VB", IIC_VecGeneral,
1495 v16i8:$VB))]>;
1496 def VCTZLSBB : VXForm_RD5_XO5_RS5<1538, 1, (outs gprc:$VD), (ins vrrc:$VB),
1497 "vctzlsbb $VD, $VB", IIC_VecGeneral,
1499 v16i8:$VB))]>;
1502 [(set v16i8:$VD, (cttz v16i8:$VB))]>;
1504 [(set v8i16:$VD, (cttz v8i16:$VB))]>;
1506 [(set v4i32:$VD, (cttz v4i32:$VB))]>;
1508 [(set v2i64:$VD, (cttz v2i64:$VB))]>;
1512 [(set v4i32:$VD, (int_ppc_altivec_vextsb2w v16i8:$VB))]>;
1514 [(set v4i32:$VD, (int_ppc_altivec_vextsh2w v8i16:$VB))]>;
1516 [(set v2i64:$VD, (int_ppc_altivec_vextsb2d v16i8:$VB))]>;
1518 [(set v2i64:$VD, (int_ppc_altivec_vextsh2d v8i16:$VB))]>;
1520 [(set v2i64:$VD, (int_ppc_altivec_vextsw2d v4i32:$VB))]>;
1538 (sub (v4i32 immAllZerosV), v4i32:$VB))]>;
1542 (sub (v2i64 immAllZerosV), v2i64:$VB))]>;
1546 (int_ppc_altivec_vprtybw v4i32:$VB))]>;
1548 (int_ppc_altivec_vprtybd v2i64:$VB))]>;
1550 (int_ppc_altivec_vprtybq v1i128:$VB))]>;
1559 : VXForm_1<xo, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1560 !strconcat(opc, " $VD, $VA, $VB"), IIC_VecFP, pattern>;
1566 v4i32:$VB))]>;
1567 def VRLWMI : VXForm_1<133, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB, vrrc:$VDi),
1568 "vrlwmi $VD, $VA, $VB", IIC_VecFP,
1570 (int_ppc_altivec_vrlwmi v4i32:$VA, v4i32:$VB,
1576 v2i64:$VB))]>;
1577 def VRLDMI : VXForm_1<197, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB, vrrc:$VDi),
1578 "vrldmi $VD, $VA, $VB", IIC_VecFP,
1580 (int_ppc_altivec_vrldmi v2i64:$VA, v2i64:$VB,
1586 [(set v16i8 : $VD, (int_ppc_altivec_vslv v16i8 : $VA, v16i8 : $VB))]>;
1588 [(set v16i8 : $VD, (int_ppc_altivec_vsrv v16i8 : $VA, v16i8 : $VB))]>;
1605 : VX_RD5_EO5_RS5_PS1_XO9<eo, xo, (outs vrrc:$VD), (ins vrrc:$VB, u1imm:$PS),
1606 !strconcat(opc, " $VD, $VB, $PS"), IIC_VecFP, pattern> {
1613 : VX_RD5_EO5_RS5_PS1_XO9<eo, xo, (outs vrrc:$VD), (ins vrrc:$VB),
1614 !strconcat(opc, " $VD, $VB"), IIC_VecFP, pattern> {
1643 def VABSDUB : VXForm_1<1027, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1644 "vabsdub $VD, $VA, $VB", IIC_VecGeneral,
1645 [(set v16i8:$VD, (int_ppc_altivec_vabsdub v16i8:$VA, v16i8:$VB))]>;
1646 def VABSDUH : VXForm_1<1091, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1647 "vabsduh $VD, $VA, $VB", IIC_VecGeneral,
1648 [(set v8i16:$VD, (int_ppc_altivec_vabsduh v8i16:$VA, v8i16:$VB))]>;
1649 def VABSDUW : VXForm_1<1155, (outs vrrc:$VD), (ins vrrc:$VA, vrrc:$VB),
1650 "vabsduw $VD, $VA, $VB", IIC_VecGeneral,
1651 [(set v4i32:$VD, (int_ppc_altivec_vabsduw v4i32:$VA, v4i32:$VB))]>;