@@ -193,6 +193,13 @@ class PowerPC_Vec_QQQ_Intrinsic<string GCCIntSuffix>
193
193
[llvm_v1i128_ty], [llvm_v1i128_ty, llvm_v1i128_ty],
194
194
[IntrNoMem]>;
195
195
196
+ /// PowerPC_Vec_QDD_Intrinsic - A PowerPC intrinsic that takes two v2i64
197
+ /// vectors and returns one v1i128. These intrinsics have no side effects.
198
+ class PowerPC_Vec_QDD_Intrinsic<string GCCIntSuffix>
199
+ : PowerPC_Vec_Intrinsic<GCCIntSuffix,
200
+ [llvm_v1i128_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
201
+ [IntrNoMem]>;
202
+
196
203
//===----------------------------------------------------------------------===//
197
204
// PowerPC VSX Intrinsic Class Definitions.
198
205
//
@@ -673,6 +680,9 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
673
680
def int_ppc_altivec_vmsumuhs : GCCBuiltin<"__builtin_altivec_vmsumuhs">,
674
681
Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty,
675
682
llvm_v4i32_ty], [IntrNoMem]>;
683
+ def int_ppc_altivec_vmsumcud : GCCBuiltin<"__builtin_altivec_vmsumcud">,
684
+ Intrinsic<[llvm_v1i128_ty],
685
+ [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v1i128_ty], [IntrNoMem]>;
676
686
677
687
// Vector Multiply Instructions.
678
688
def int_ppc_altivec_vmulesb : GCCBuiltin<"__builtin_altivec_vmulesb">,
@@ -684,6 +694,7 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
684
694
def int_ppc_altivec_vmulesw : GCCBuiltin<"__builtin_altivec_vmulesw">,
685
695
Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
686
696
[IntrNoMem]>;
697
+ def int_ppc_altivec_vmulesd : PowerPC_Vec_QDD_Intrinsic<"vmulesd">;
687
698
def int_ppc_altivec_vmuleub : GCCBuiltin<"__builtin_altivec_vmuleub">,
688
699
Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
689
700
[IntrNoMem]>;
@@ -693,6 +704,7 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
693
704
def int_ppc_altivec_vmuleuw : GCCBuiltin<"__builtin_altivec_vmuleuw">,
694
705
Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
695
706
[IntrNoMem]>;
707
+ def int_ppc_altivec_vmuleud : PowerPC_Vec_QDD_Intrinsic<"vmuleud">;
696
708
697
709
def int_ppc_altivec_vmulosb : GCCBuiltin<"__builtin_altivec_vmulosb">,
698
710
Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
@@ -703,6 +715,7 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
703
715
def int_ppc_altivec_vmulosw : GCCBuiltin<"__builtin_altivec_vmulosw">,
704
716
Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
705
717
[IntrNoMem]>;
718
+ def int_ppc_altivec_vmulosd : PowerPC_Vec_QDD_Intrinsic<"vmulosd">;
706
719
def int_ppc_altivec_vmuloub : GCCBuiltin<"__builtin_altivec_vmuloub">,
707
720
Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
708
721
[IntrNoMem]>;
@@ -712,6 +725,7 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
712
725
def int_ppc_altivec_vmulouw : GCCBuiltin<"__builtin_altivec_vmulouw">,
713
726
Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
714
727
[IntrNoMem]>;
728
+ def int_ppc_altivec_vmuloud : PowerPC_Vec_QDD_Intrinsic<"vmuloud">;
715
729
716
730
// Vector Sum Instructions.
717
731
def int_ppc_altivec_vsumsws : GCCBuiltin<"__builtin_altivec_vsumsws">,
0 commit comments