Lines Matching refs:vA
274 : VAForm_1a<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vC),
275 !strconcat(opc, " $vD, $vA, $vB, $vC"), IIC_VecFP,
276 [(set Ty:$vD, (IntID Ty:$vA, Ty:$vB, Ty:$vC))]>;
282 : VAForm_1a<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vC),
283 !strconcat(opc, " $vD, $vA, $vB, $vC"), IIC_VecFP,
284 [(set OutTy:$vD, (IntID InTy:$vA, InTy:$vB, InTy:$vC))]>;
290 : VAForm_1a<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vC),
291 !strconcat(opc, " $vD, $vA, $vB, $vC"), IIC_VecFP,
293 (IntID In1Ty:$vA, In1Ty:$vB, In2Ty:$vC))]>;
297 : VXForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
298 !strconcat(opc, " $vD, $vA, $vB"), IIC_VecFP,
299 [(set Ty:$vD, (IntID Ty:$vA, Ty:$vB))]>;
305 : VXForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
306 !strconcat(opc, " $vD, $vA, $vB"), IIC_VecFP,
307 [(set OutTy:$vD, (IntID InTy:$vA, InTy:$vB))]>;
313 : VXForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
314 !strconcat(opc, " $vD, $vA, $vB"), IIC_VecFP,
315 [(set OutTy:$vD, (IntID In1Ty:$vA, In2Ty:$vB))]>;
332 : VXForm_BX<xo, (outs vrrc:$vD), (ins vrrc:$vA),
333 !strconcat(opc, " $vD, $vA"), IIC_VecFP,
334 [(set Ty:$vD, (IntID Ty:$vA))]>;
337 : VXForm_CR<xo, (outs vrrc:$vD), (ins vrrc:$vA, u1imm:$ST, u4imm:$SIX),
338 !strconcat(opc, " $vD, $vA, $ST, $SIX"), IIC_VecFP,
339 [(set Ty:$vD, (IntID Ty:$vA, timm:$ST, timm:$SIX))]>;
462 def VMADDFP : VAForm_1<46, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vC, vrrc:$vB),
463 "vmaddfp $vD, $vA, $vC, $vB", IIC_VecFP,
465 (fma v4f32:$vA, v4f32:$vC, v4f32:$vB))]>;
468 def VNMSUBFP: VAForm_1<47, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vC, vrrc:$vB),
469 "vnmsubfp $vD, $vA, $vC, $vB", IIC_VecFP,
470 [(set v4f32:$vD, (fneg (fma v4f32:$vA, v4f32:$vC,
484 def VSLDOI : VAForm_2<44, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, u4imm:$SH),
485 "vsldoi $vD, $vA, $vB, $SH", IIC_VecFP,
487 (PPCvecshl v16i8:$vA, v16i8:$vB, imm32SExt16:$SH))]>;
491 def VADDFP : VXForm_1<10, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
492 "vaddfp $vD, $vA, $vB", IIC_VecFP,
493 [(set v4f32:$vD, (fadd v4f32:$vA, v4f32:$vB))]>;
495 def VADDUBM : VXForm_1<0, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
496 "vaddubm $vD, $vA, $vB", IIC_VecGeneral,
497 [(set v16i8:$vD, (add v16i8:$vA, v16i8:$vB))]>;
498 def VADDUHM : VXForm_1<64, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
499 "vadduhm $vD, $vA, $vB", IIC_VecGeneral,
500 [(set v8i16:$vD, (add v8i16:$vA, v8i16:$vB))]>;
501 def VADDUWM : VXForm_1<128, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
502 "vadduwm $vD, $vA, $vB", IIC_VecGeneral,
503 [(set v4i32:$vD, (add v4i32:$vA, v4i32:$vB))]>;
515 def VAND : VXForm_1<1028, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
516 "vand $vD, $vA, $vB", IIC_VecFP,
517 [(set v4i32:$vD, (and v4i32:$vA, v4i32:$vB))]>;
518 def VANDC : VXForm_1<1092, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
519 "vandc $vD, $vA, $vB", IIC_VecFP,
520 [(set v4i32:$vD, (and v4i32:$vA,
588 def VMRGHB : VXForm_1< 12, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
589 "vmrghb $vD, $vA, $vB", IIC_VecFP,
590 [(set v16i8:$vD, (vmrghb_shuffle v16i8:$vA, v16i8:$vB))]>;
591 def VMRGHH : VXForm_1< 76, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
592 "vmrghh $vD, $vA, $vB", IIC_VecFP,
593 [(set v16i8:$vD, (vmrghh_shuffle v16i8:$vA, v16i8:$vB))]>;
594 def VMRGHW : VXForm_1<140, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
595 "vmrghw $vD, $vA, $vB", IIC_VecFP,
596 [(set v16i8:$vD, (vmrghw_shuffle v16i8:$vA, v16i8:$vB))]>;
597 def VMRGLB : VXForm_1<268, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
598 "vmrglb $vD, $vA, $vB", IIC_VecFP,
599 [(set v16i8:$vD, (vmrglb_shuffle v16i8:$vA, v16i8:$vB))]>;
600 def VMRGLH : VXForm_1<332, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
601 "vmrglh $vD, $vA, $vB", IIC_VecFP,
602 [(set v16i8:$vD, (vmrglh_shuffle v16i8:$vA, v16i8:$vB))]>;
603 def VMRGLW : VXForm_1<396, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
604 "vmrglw $vD, $vA, $vB", IIC_VecFP,
605 [(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))]>;
678 def VNOR : VXForm_1<1284, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
679 "vnor $vD, $vA, $vB", IIC_VecFP,
680 [(set v4i32:$vD, (vnot_ppc (or v4i32:$vA,
683 def VOR : VXForm_1<1156, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
684 "vor $vD, $vA, $vB", IIC_VecFP,
685 [(set v4i32:$vD, (or v4i32:$vA, v4i32:$vB))]>;
686 def VXOR : VXForm_1<1220, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
687 "vxor $vD, $vA, $vB", IIC_VecFP,
688 [(set v4i32:$vD, (xor v4i32:$vA, v4i32:$vB))]>;
753 def VPKUHUM : VXForm_1<14, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
754 "vpkuhum $vD, $vA, $vB", IIC_VecFP,
756 (vpkuhum_shuffle v16i8:$vA, v16i8:$vB))]>;
759 def VPKUWUM : VXForm_1<78, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
760 "vpkuwum $vD, $vA, $vB", IIC_VecFP,
762 (vpkuwum_shuffle v16i8:$vA, v16i8:$vB))]>;
784 : VXRForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB), asmstr,
786 [(set Ty:$vD, (Ty (PPCvcmp Ty:$vA, Ty:$vB, xo)))]>;
788 : VXRForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB), asmstr,
790 [(set Ty:$vD, (Ty (PPCvcmp_rec Ty:$vA, Ty:$vB, xo)))]> {
796 def VCMPBFP : VCMP <966, "vcmpbfp $vD, $vA, $vB" , v4f32>;
797 def VCMPBFP_rec : VCMP_rec<966, "vcmpbfp. $vD, $vA, $vB" , v4f32>;
798 def VCMPEQFP : VCMP <198, "vcmpeqfp $vD, $vA, $vB" , v4f32>;
799 def VCMPEQFP_rec : VCMP_rec<198, "vcmpeqfp. $vD, $vA, $vB", v4f32>;
800 def VCMPGEFP : VCMP <454, "vcmpgefp $vD, $vA, $vB" , v4f32>;
801 def VCMPGEFP_rec : VCMP_rec<454, "vcmpgefp. $vD, $vA, $vB", v4f32>;
802 def VCMPGTFP : VCMP <710, "vcmpgtfp $vD, $vA, $vB" , v4f32>;
803 def VCMPGTFP_rec : VCMP_rec<710, "vcmpgtfp. $vD, $vA, $vB", v4f32>;
806 def VCMPEQUB : VCMP < 6, "vcmpequb $vD, $vA, $vB" , v16i8>;
807 def VCMPEQUB_rec : VCMP_rec< 6, "vcmpequb. $vD, $vA, $vB", v16i8>;
808 def VCMPGTSB : VCMP <774, "vcmpgtsb $vD, $vA, $vB" , v16i8>;
809 def VCMPGTSB_rec : VCMP_rec<774, "vcmpgtsb. $vD, $vA, $vB", v16i8>;
810 def VCMPGTUB : VCMP <518, "vcmpgtub $vD, $vA, $vB" , v16i8>;
811 def VCMPGTUB_rec : VCMP_rec<518, "vcmpgtub. $vD, $vA, $vB", v16i8>;
814 def VCMPEQUH : VCMP < 70, "vcmpequh $vD, $vA, $vB" , v8i16>;
815 def VCMPEQUH_rec : VCMP_rec< 70, "vcmpequh. $vD, $vA, $vB", v8i16>;
816 def VCMPGTSH : VCMP <838, "vcmpgtsh $vD, $vA, $vB" , v8i16>;
817 def VCMPGTSH_rec : VCMP_rec<838, "vcmpgtsh. $vD, $vA, $vB", v8i16>;
818 def VCMPGTUH : VCMP <582, "vcmpgtuh $vD, $vA, $vB" , v8i16>;
819 def VCMPGTUH_rec : VCMP_rec<582, "vcmpgtuh. $vD, $vA, $vB", v8i16>;
822 def VCMPEQUW : VCMP <134, "vcmpequw $vD, $vA, $vB" , v4i32>;
823 def VCMPEQUW_rec : VCMP_rec<134, "vcmpequw. $vD, $vA, $vB", v4i32>;
824 def VCMPGTSW : VCMP <902, "vcmpgtsw $vD, $vA, $vB" , v4i32>;
825 def VCMPGTSW_rec : VCMP_rec<902, "vcmpgtsw. $vD, $vA, $vB", v4i32>;
826 def VCMPGTUW : VCMP <646, "vcmpgtuw $vD, $vA, $vB" , v4i32>;
827 def VCMPGTUW_rec : VCMP_rec<646, "vcmpgtuw. $vD, $vA, $vB", v4i32>;
861 def : InstAlias<"vmr $vD, $vA", (VOR vrrc:$vD, vrrc:$vA, vrrc:$vA)>;
862 def : InstAlias<"vnot $vD, $vA", (VNOR vrrc:$vD, vrrc:$vA, vrrc:$vA)>;
865 def : Pat<(v16i8 (rotl v16i8:$vA, v16i8:$vB)),
866 (v16i8 (VRLB v16i8:$vA, v16i8:$vB))>;
867 def : Pat<(v8i16 (rotl v8i16:$vA, v8i16:$vB)),
868 (v8i16 (VRLH v8i16:$vA, v8i16:$vB))>;
869 def : Pat<(v4i32 (rotl v4i32:$vA, v4i32:$vB)),
870 (v4i32 (VRLW v4i32:$vA, v4i32:$vB))>;
873 def : Pat<(mul v8i16:$vA, v8i16:$vB), (VMLADDUHM $vA, $vB, (v8i16(V_SET0H)))>;
876 def : Pat<(add (mul v8i16:$vA, v8i16:$vB), v8i16:$vC), (VMLADDUHM $vA, $vB, $vC)>;
879 def : Pat<(v16i8 (saddsat v16i8:$vA, v16i8:$vB)), (v16i8 (VADDSBS $vA, $vB))>;
880 def : Pat<(v16i8 (uaddsat v16i8:$vA, v16i8:$vB)), (v16i8 (VADDUBS $vA, $vB))>;
881 def : Pat<(v8i16 (saddsat v8i16:$vA, v8i16:$vB)), (v8i16 (VADDSHS $vA, $vB))>;
882 def : Pat<(v8i16 (uaddsat v8i16:$vA, v8i16:$vB)), (v8i16 (VADDUHS $vA, $vB))>;
883 def : Pat<(v4i32 (saddsat v4i32:$vA, v4i32:$vB)), (v4i32 (VADDSWS $vA, $vB))>;
884 def : Pat<(v4i32 (uaddsat v4i32:$vA, v4i32:$vB)), (v4i32 (VADDUWS $vA, $vB))>;
885 def : Pat<(v16i8 (ssubsat v16i8:$vA, v16i8:$vB)), (v16i8 (VSUBSBS $vA, $vB))>;
886 def : Pat<(v16i8 (usubsat v16i8:$vA, v16i8:$vB)), (v16i8 (VSUBUBS $vA, $vB))>;
887 def : Pat<(v8i16 (ssubsat v8i16:$vA, v8i16:$vB)), (v8i16 (VSUBSHS $vA, $vB))>;
888 def : Pat<(v8i16 (usubsat v8i16:$vA, v8i16:$vB)), (v8i16 (VSUBUHS $vA, $vB))>;
889 def : Pat<(v4i32 (ssubsat v4i32:$vA, v4i32:$vB)), (v4i32 (VSUBSWS $vA, $vB))>;
890 def : Pat<(v4i32 (usubsat v4i32:$vA, v4i32:$vB)), (v4i32 (VSUBUWS $vA, $vB))>;
977 def:Pat<(vsldoi_unary_shuffle:$in v16i8:$vA, undef),
978 (VSLDOI $vA, $vA, (VSLDOI_unary_get_imm $in))>;
979 def:Pat<(vpkuwum_unary_shuffle v16i8:$vA, undef),
980 (VPKUWUM $vA, $vA)>;
981 def:Pat<(vpkuhum_unary_shuffle v16i8:$vA, undef),
982 (VPKUHUM $vA, $vA)>;
983 def:Pat<(vsldoi_shuffle:$SH v16i8:$vA, v16i8:$vB),
984 (VSLDOI v16i8:$vA, v16i8:$vB, (VSLDOI_get_imm $SH))>;
990 def:Pat<(vsldoi_swapped_shuffle:$in v16i8:$vA, v16i8:$vB),
991 (VSLDOI $vB, $vA, (VSLDOI_swapped_get_imm $in))>;
992 def:Pat<(vpkuwum_swapped_shuffle v16i8:$vA, v16i8:$vB),
993 (VPKUWUM $vB, $vA)>;
994 def:Pat<(vpkuhum_swapped_shuffle v16i8:$vA, v16i8:$vB),
995 (VPKUHUM $vB, $vA)>;
998 def:Pat<(vmrglb_unary_shuffle v16i8:$vA, undef),
999 (VMRGLB $vA, $vA)>;
1000 def:Pat<(vmrglh_unary_shuffle v16i8:$vA, undef),
1001 (VMRGLH $vA, $vA)>;
1002 def:Pat<(vmrglw_unary_shuffle v16i8:$vA, undef),
1003 (VMRGLW $vA, $vA)>;
1004 def:Pat<(vmrghb_unary_shuffle v16i8:$vA, undef),
1005 (VMRGHB $vA, $vA)>;
1006 def:Pat<(vmrghh_unary_shuffle v16i8:$vA, undef),
1007 (VMRGHH $vA, $vA)>;
1008 def:Pat<(vmrghw_unary_shuffle v16i8:$vA, undef),
1009 (VMRGHW $vA, $vA)>;
1014 def:Pat<(vmrglb_swapped_shuffle v16i8:$vA, v16i8:$vB),
1015 (VMRGLB $vB, $vA)>;
1016 def:Pat<(vmrglh_swapped_shuffle v16i8:$vA, v16i8:$vB),
1017 (VMRGLH $vB, $vA)>;
1018 def:Pat<(vmrglw_swapped_shuffle v16i8:$vA, v16i8:$vB),
1019 (VMRGLW $vB, $vA)>;
1020 def:Pat<(vmrghb_swapped_shuffle v16i8:$vA, v16i8:$vB),
1021 (VMRGHB $vB, $vA)>;
1022 def:Pat<(vmrghh_swapped_shuffle v16i8:$vA, v16i8:$vB),
1023 (VMRGHH $vB, $vA)>;
1024 def:Pat<(vmrghw_swapped_shuffle v16i8:$vA, v16i8:$vB),
1025 (VMRGHW $vB, $vA)>;
1028 def : Pat<(vnot_ppc v4i32:$vA), (VNOR $vA, $vA)>;
1035 def : Pat<(fmul v4f32:$vA, v4f32:$vB),
1036 (VMADDFP $vA, $vB,
1047 def : Pat<(PPCvperm v16i8:$vA, v16i8:$vB, v16i8:$vC),
1048 (VPERM $vA, $vB, $vC)>;
1054 def : Pat<(v16i8 (shl v16i8:$vA, v16i8:$vB)),
1055 (v16i8 (VSLB $vA, $vB))>;
1056 def : Pat<(v8i16 (shl v8i16:$vA, v8i16:$vB)),
1057 (v8i16 (VSLH $vA, $vB))>;
1058 def : Pat<(v4i32 (shl v4i32:$vA, v4i32:$vB)),
1059 (v4i32 (VSLW $vA, $vB))>;
1060 def : Pat<(v1i128 (shl v1i128:$vA, v1i128:$vB)),
1061 (v1i128 (VSL (v16i8 (VSLO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1062 def : Pat<(v16i8 (PPCshl v16i8:$vA, v16i8:$vB)),
1063 (v16i8 (VSLB $vA, $vB))>;
1064 def : Pat<(v8i16 (PPCshl v8i16:$vA, v8i16:$vB)),
1065 (v8i16 (VSLH $vA, $vB))>;
1066 def : Pat<(v4i32 (PPCshl v4i32:$vA, v4i32:$vB)),
1067 (v4i32 (VSLW $vA, $vB))>;
1068 def : Pat<(v1i128 (PPCshl v1i128:$vA, v1i128:$vB)),
1069 (v1i128 (VSL (v16i8 (VSLO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1071 def : Pat<(v16i8 (srl v16i8:$vA, v16i8:$vB)),
1072 (v16i8 (VSRB $vA, $vB))>;
1073 def : Pat<(v8i16 (srl v8i16:$vA, v8i16:$vB)),
1074 (v8i16 (VSRH $vA, $vB))>;
1075 def : Pat<(v4i32 (srl v4i32:$vA, v4i32:$vB)),
1076 (v4i32 (VSRW $vA, $vB))>;
1077 def : Pat<(v1i128 (srl v1i128:$vA, v1i128:$vB)),
1078 (v1i128 (VSR (v16i8 (VSRO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1079 def : Pat<(v16i8 (PPCsrl v16i8:$vA, v16i8:$vB)),
1080 (v16i8 (VSRB $vA, $vB))>;
1081 def : Pat<(v8i16 (PPCsrl v8i16:$vA, v8i16:$vB)),
1082 (v8i16 (VSRH $vA, $vB))>;
1083 def : Pat<(v4i32 (PPCsrl v4i32:$vA, v4i32:$vB)),
1084 (v4i32 (VSRW $vA, $vB))>;
1085 def : Pat<(v1i128 (PPCsrl v1i128:$vA, v1i128:$vB)),
1086 (v1i128 (VSR (v16i8 (VSRO $vA, $vB)), (v16i8 (VSPLTB 15, $vB))))>;
1088 def : Pat<(v16i8 (sra v16i8:$vA, v16i8:$vB)),
1089 (v16i8 (VSRAB $vA, $vB))>;
1090 def : Pat<(v8i16 (sra v8i16:$vA, v8i16:$vB)),
1091 (v8i16 (VSRAH $vA, $vB))>;
1092 def : Pat<(v4i32 (sra v4i32:$vA, v4i32:$vB)),
1093 (v4i32 (VSRAW $vA, $vB))>;
1094 def : Pat<(v16i8 (PPCsra v16i8:$vA, v16i8:$vB)),
1095 (v16i8 (VSRAB $vA, $vB))>;
1096 def : Pat<(v8i16 (PPCsra v8i16:$vA, v8i16:$vB)),
1097 (v8i16 (VSRAH $vA, $vB))>;
1098 def : Pat<(v4i32 (PPCsra v4i32:$vA, v4i32:$vB)),
1099 (v4i32 (VSRAW $vA, $vB))>;
1102 def : Pat<(v4i32 (fp_to_sint v4f32:$vA)),
1103 (VCTSXS_0 $vA)>;
1104 def : Pat<(v4i32 (fp_to_uint v4f32:$vA)),
1105 (VCTUXS_0 $vA)>;
1106 def : Pat<(v4f32 (sint_to_fp v4i32:$vA)),
1107 (VCFSX_0 $vA)>;
1108 def : Pat<(v4f32 (uint_to_fp v4i32:$vA)),
1109 (VCFUX_0 $vA)>;
1112 def : Pat<(v4f32 (ffloor v4f32:$vA)),
1113 (VRFIM $vA)>;
1114 def : Pat<(v4f32 (fceil v4f32:$vA)),
1115 (VRFIP $vA)>;
1116 def : Pat<(v4f32 (ftrunc v4f32:$vA)),
1117 (VRFIZ $vA)>;
1118 def : Pat<(v4f32 (fnearbyint v4f32:$vA)),
1119 (VRFIN $vA)>;
1122 def : Pat<(v16i8 (vselect v16i8:$vA, v16i8:$vB, v16i8:$vC)),
1123 (VSEL $vC, $vB, $vA)>;
1124 def : Pat<(v8i16 (vselect v8i16:$vA, v8i16:$vB, v8i16:$vC)),
1125 (VSEL $vC, $vB, $vA)>;
1126 def : Pat<(v4i32 (vselect v4i32:$vA, v4i32:$vB, v4i32:$vC)),
1127 (VSEL $vC, $vB, $vA)>;
1128 def : Pat<(v2i64 (vselect v2i64:$vA, v2i64:$vB, v2i64:$vC)),
1129 (VSEL $vC, $vB, $vA)>;
1130 def : Pat<(v4f32 (vselect v4i32:$vA, v4f32:$vB, v4f32:$vC)),
1131 (VSEL $vC, $vB, $vA)>;
1132 def : Pat<(v2f64 (vselect v2i64:$vA, v2f64:$vB, v2f64:$vC)),
1133 (VSEL $vC, $vB, $vA)>;
1136 def : Pat<(v4i32 (sra (sub v4i32:$vA, (vnot_ppc v4i32:$vB)),
1137 (v4i32 (immEQOneV)))), (v4i32 (VAVGSW $vA, $vB))>;
1138 def : Pat<(v8i16 (sra (sub v8i16:$vA, (v8i16 (bitconvert(vnot_ppc v4i32:$vB)))),
1139 (v8i16 (immEQOneV)))), (v8i16 (VAVGSH $vA, $vB))>;
1140 def : Pat<(v16i8 (sra (sub v16i8:$vA, (v16i8 (bitconvert(vnot_ppc v4i32:$vB)))),
1141 (v16i8 (immEQOneV)))), (v16i8 (VAVGSB $vA, $vB))>;
1142 def : Pat<(v4i32 (srl (sub v4i32:$vA, (vnot_ppc v4i32:$vB)),
1143 (v4i32 (immEQOneV)))), (v4i32 (VAVGUW $vA, $vB))>;
1144 def : Pat<(v8i16 (srl (sub v8i16:$vA, (v8i16 (bitconvert(vnot_ppc v4i32:$vB)))),
1145 (v8i16 (immEQOneV)))), (v8i16 (VAVGUH $vA, $vB))>;
1146 def : Pat<(v16i8 (srl (sub v16i8:$vA, (v16i8 (bitconvert(vnot_ppc v4i32:$vB)))),
1147 (v16i8 (immEQOneV)))), (v16i8 (VAVGUB $vA, $vB))>;
1164 def VMULUWM : VXForm_1<137, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1165 "vmuluwm $vD, $vA, $vB", IIC_VecGeneral,
1166 [(set v4i32:$vD, (mul v4i32:$vA, v4i32:$vB))]>;
1174 def VMRGEW : VXForm_1<1932, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1175 "vmrgew $vD, $vA, $vB", IIC_VecFP,
1177 (v16i8 (vmrgew_shuffle v16i8:$vA, v16i8:$vB)))]>;
1178 def VMRGOW : VXForm_1<1676, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1179 "vmrgow $vD, $vA, $vB", IIC_VecFP,
1181 (v16i8 (vmrgow_shuffle v16i8:$vA, v16i8:$vB)))]>;
1184 def:Pat<(vmrgew_unary_shuffle v16i8:$vA, undef),
1185 (VMRGEW $vA, $vA)>;
1186 def:Pat<(vmrgow_unary_shuffle v16i8:$vA, undef),
1187 (VMRGOW $vA, $vA)>;
1192 def:Pat<(vmrgew_swapped_shuffle v16i8:$vA, v16i8:$vB),
1193 (VMRGEW $vB, $vA)>;
1194 def:Pat<(vmrgow_swapped_shuffle v16i8:$vA, v16i8:$vB),
1195 (VMRGOW $vB, $vA)>;
1200 def : Pat<(v2i64 (rotl v2i64:$vA, v2i64:$vB)),
1201 (v2i64 (VRLD v2i64:$vA, v2i64:$vB))>;
1204 def VSLD : VXForm_1<1476, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1205 "vsld $vD, $vA, $vB", IIC_VecGeneral, []>;
1206 def VSRD : VXForm_1<1732, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1207 "vsrd $vD, $vA, $vB", IIC_VecGeneral, []>;
1208 def VSRAD : VXForm_1<964, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1209 "vsrad $vD, $vA, $vB", IIC_VecGeneral, []>;
1211 def : Pat<(v2i64 (shl v2i64:$vA, v2i64:$vB)),
1212 (v2i64 (VSLD $vA, $vB))>;
1213 def : Pat<(v2i64 (PPCshl v2i64:$vA, v2i64:$vB)),
1214 (v2i64 (VSLD $vA, $vB))>;
1215 def : Pat<(v2i64 (srl v2i64:$vA, v2i64:$vB)),
1216 (v2i64 (VSRD $vA, $vB))>;
1217 def : Pat<(v2i64 (PPCsrl v2i64:$vA, v2i64:$vB)),
1218 (v2i64 (VSRD $vA, $vB))>;
1219 def : Pat<(v2i64 (sra v2i64:$vA, v2i64:$vB)),
1220 (v2i64 (VSRAD $vA, $vB))>;
1221 def : Pat<(v2i64 (PPCsra v2i64:$vA, v2i64:$vB)),
1222 (v2i64 (VSRAD $vA, $vB))>;
1226 def VADDUDM : VXForm_1<192, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1227 "vaddudm $vD, $vA, $vB", IIC_VecGeneral,
1228 [(set v2i64:$vD, (add v2i64:$vA, v2i64:$vB))]>;
1229 def VADDUQM : VXForm_1<256, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1230 "vadduqm $vD, $vA, $vB", IIC_VecGeneral,
1231 [(set v1i128:$vD, (add v1i128:$vA, v1i128:$vB))]>;
1240 def VSUBUDM : VXForm_1<1216, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1241 "vsubudm $vD, $vA, $vB", IIC_VecGeneral,
1242 [(set v2i64:$vD, (sub v2i64:$vA, v2i64:$vB))]>;
1245 def VSUBUQM : VXForm_1<1280, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1246 "vsubuqm $vD, $vA, $vB", IIC_VecGeneral,
1247 [(set v1i128:$vD, (sub v1i128:$vA, v1i128:$vB))]>;
1291 def VEQV : VXForm_1<1668, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1292 "veqv $vD, $vA, $vB", IIC_VecGeneral,
1293 [(set v4i32:$vD, (vnot_ppc (xor v4i32:$vA, v4i32:$vB)))]>;
1294 def VNAND : VXForm_1<1412, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1295 "vnand $vD, $vA, $vB", IIC_VecGeneral,
1296 [(set v4i32:$vD, (vnot_ppc (and v4i32:$vA, v4i32:$vB)))]>;
1299 def VORC : VXForm_1<1348, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1300 "vorc $vD, $vA, $vB", IIC_VecGeneral,
1301 [(set v4i32:$vD, (or v4i32:$vA,
1305 def VCMPEQUD : VCMP <199, "vcmpequd $vD, $vA, $vB" , v2i64>;
1306 def VCMPEQUD_rec : VCMP_rec<199, "vcmpequd. $vD, $vA, $vB", v2i64>;
1307 def VCMPGTSD : VCMP <967, "vcmpgtsd $vD, $vA, $vB" , v2i64>;
1308 def VCMPGTSD_rec : VCMP_rec<967, "vcmpgtsd. $vD, $vA, $vB", v2i64>;
1309 def VCMPGTUD : VCMP <711, "vcmpgtud $vD, $vA, $vB" , v2i64>;
1310 def VCMPGTUD_rec : VCMP_rec<711, "vcmpgtud. $vD, $vA, $vB", v2i64>;
1329 def VPKUDUM : VXForm_1<1102, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1330 "vpkudum $vD, $vA, $vB", IIC_VecFP,
1332 (vpkudum_shuffle v16i8:$vA, v16i8:$vB))]>;
1341 def:Pat<(vpkudum_unary_shuffle v16i8:$vA, undef),
1342 (VPKUDUM $vA, $vA)>;
1343 def:Pat<(vpkudum_swapped_shuffle v16i8:$vA, v16i8:$vB),
1344 (VPKUDUM $vB, $vA)>;
1377 def VCMPNEB : VCMP < 7, "vcmpneb $vD, $vA, $vB" , v16i8>;
1378 def VCMPNEB_rec : VCMP_rec < 7, "vcmpneb. $vD, $vA, $vB" , v16i8>;
1379 def VCMPNEZB : VCMP <263, "vcmpnezb $vD, $vA, $vB" , v16i8>;
1380 def VCMPNEZB_rec : VCMP_rec<263, "vcmpnezb. $vD, $vA, $vB", v16i8>;
1383 def VCMPNEH : VCMP < 71, "vcmpneh $vD, $vA, $vB" , v8i16>;
1384 def VCMPNEH_rec : VCMP_rec< 71, "vcmpneh. $vD, $vA, $vB" , v8i16>;
1385 def VCMPNEZH : VCMP <327, "vcmpnezh $vD, $vA, $vB" , v8i16>;
1386 def VCMPNEZH_rec : VCMP_rec<327, "vcmpnezh. $vD, $vA, $vB", v8i16>;
1389 def VCMPNEW : VCMP <135, "vcmpnew $vD, $vA, $vB" , v4i32>;
1390 def VCMPNEW_rec : VCMP_rec<135, "vcmpnew. $vD, $vA, $vB" , v4i32>;
1391 def VCMPNEZW : VCMP <391, "vcmpnezw $vD, $vA, $vB" , v4i32>;
1392 def VCMPNEZW_rec : VCMP_rec<391, "vcmpnezw. $vD, $vA, $vB", v4i32>;
1507 def VBPERMD : VXForm_1<1484, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1508 "vbpermd $vD, $vA, $vB", IIC_VecFP, []>;
1509 def VPERMR : VAForm_1a<59, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vC),
1510 "vpermr $vD, $vA, $vB, $vC", IIC_VecFP, []>;
1513 : VXForm_1<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1514 !strconcat(opc, " $vD, $vA, $vB"), IIC_VecFP, pattern>;
1519 (int_ppc_altivec_vrlwnm v4i32:$vA,
1521 def VRLWMI : VXForm_1<133, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vDi),
1522 "vrlwmi $vD, $vA, $vB", IIC_VecFP,
1524 (int_ppc_altivec_vrlwmi v4i32:$vA, v4i32:$vB,
1529 (int_ppc_altivec_vrldnm v2i64:$vA,
1531 def VRLDMI : VXForm_1<197, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, vrrc:$vDi),
1532 "vrldmi $vD, $vA, $vB", IIC_VecFP,
1534 (int_ppc_altivec_vrldmi v2i64:$vA, v2i64:$vB,
1540 [(set v16i8 : $vD, (int_ppc_altivec_vslv v16i8 : $vA, v16i8 : $vB))]>;
1542 [(set v16i8 : $vD, (int_ppc_altivec_vsrv v16i8 : $vA, v16i8 : $vB))]>;
1545 def VMUL10UQ : VXForm_BX<513, (outs vrrc:$vD), (ins vrrc:$vA),
1546 "vmul10uq $vD, $vA", IIC_VecFP, []>;
1547 def VMUL10CUQ : VXForm_BX< 1, (outs vrrc:$vD), (ins vrrc:$vA),
1548 "vmul10cuq $vD, $vA", IIC_VecFP, []>;
1590 (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB, u1imm:$PS),
1591 !strconcat(opc, " $vD, $vA, $vB, $PS"), IIC_VecFP, pattern> {
1597 : VX_RD5_RSp5_PS1_XO9<xo, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1598 !strconcat(opc, " $vD, $vA, $vB"), IIC_VecFP, pattern> {
1613 def VABSDUB : VXForm_1<1027, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1614 "vabsdub $vD, $vA, $vB", IIC_VecGeneral,
1615 [(set v16i8:$vD, (int_ppc_altivec_vabsdub v16i8:$vA, v16i8:$vB))]>;
1616 def VABSDUH : VXForm_1<1091, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1617 "vabsduh $vD, $vA, $vB", IIC_VecGeneral,
1618 [(set v8i16:$vD, (int_ppc_altivec_vabsduh v8i16:$vA, v8i16:$vB))]>;
1619 def VABSDUW : VXForm_1<1155, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
1620 "vabsduw $vD, $vA, $vB", IIC_VecGeneral,
1621 [(set v4i32:$vD, (int_ppc_altivec_vabsduw v4i32:$vA, v4i32:$vB))]>;