@@ -340,6 +340,9 @@ def IIT_ONE_FIFTH_VEC_ARG : IIT_Base<63>;
340340def IIT_ONE_SEVENTH_VEC_ARG : IIT_Base<64>;
341341def IIT_V2048: IIT_Vec<2048, 65>;
342342def IIT_V4096: IIT_Vec<4096, 66>;
343+ def IIT_ONE_FOURTH_VEC_ARG : IIT_Base<67>;
344+ def IIT_ONE_SIXTH_VEC_ARG : IIT_Base<68>;
345+ def IIT_ONE_EIGHTH_VEC_ARG : IIT_Base<69>;
343346}
344347
345348defvar IIT_all_FixedTypes = !filter(iit, IIT_all,
@@ -483,12 +486,21 @@ class LLVMHalfElementsVectorType<int num>
483486class LLVMOneThirdElementsVectorType<int num>
484487 : LLVMMatchType<num, IIT_ONE_THIRD_VEC_ARG>;
485488
489+ class LLVMOneFourthElementsVectorType<int num>
490+ : LLVMMatchType<num, IIT_ONE_FOURTH_VEC_ARG>;
491+
486492class LLVMOneFifthElementsVectorType<int num>
487493 : LLVMMatchType<num, IIT_ONE_FIFTH_VEC_ARG>;
488494
495+ class LLVMOneSixthElementsVectorType<int num>
496+ : LLVMMatchType<num, IIT_ONE_SIXTH_VEC_ARG>;
497+
489498class LLVMOneSeventhElementsVectorType<int num>
490499 : LLVMMatchType<num, IIT_ONE_SEVENTH_VEC_ARG>;
491500
501+ class LLVMOneEighthElementsVectorType<int num>
502+ : LLVMMatchType<num, IIT_ONE_EIGHTH_VEC_ARG>;
503+
492504// Match the type of another intrinsic parameter that is expected to be a
493505// vector type (i.e. <N x iM>) but with each element subdivided to
494506// form a vector with more elements that are smaller than the original.
@@ -2776,6 +2788,20 @@ def int_vector_deinterleave3 : DefaultAttrsIntrinsic<[LLVMOneThirdElementsVector
27762788 [llvm_anyvector_ty],
27772789 [IntrNoMem]>;
27782790
2791+ def int_vector_interleave4 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
2792+ [LLVMOneFourthElementsVectorType<0>,
2793+ LLVMOneFourthElementsVectorType<0>,
2794+ LLVMOneFourthElementsVectorType<0>,
2795+ LLVMOneFourthElementsVectorType<0>],
2796+ [IntrNoMem]>;
2797+
2798+ def int_vector_deinterleave4 : DefaultAttrsIntrinsic<[LLVMOneFourthElementsVectorType<0>,
2799+ LLVMOneFourthElementsVectorType<0>,
2800+ LLVMOneFourthElementsVectorType<0>,
2801+ LLVMOneFourthElementsVectorType<0>],
2802+ [llvm_anyvector_ty],
2803+ [IntrNoMem]>;
2804+
27792805def int_vector_interleave5 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
27802806 [LLVMOneFifthElementsVectorType<0>,
27812807 LLVMOneFifthElementsVectorType<0>,
@@ -2792,6 +2818,24 @@ def int_vector_deinterleave5 : DefaultAttrsIntrinsic<[LLVMOneFifthElementsVector
27922818 [llvm_anyvector_ty],
27932819 [IntrNoMem]>;
27942820
2821+ def int_vector_interleave6 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
2822+ [LLVMOneSixthElementsVectorType<0>,
2823+ LLVMOneSixthElementsVectorType<0>,
2824+ LLVMOneSixthElementsVectorType<0>,
2825+ LLVMOneSixthElementsVectorType<0>,
2826+ LLVMOneSixthElementsVectorType<0>,
2827+ LLVMOneSixthElementsVectorType<0>],
2828+ [IntrNoMem]>;
2829+
2830+ def int_vector_deinterleave6 : DefaultAttrsIntrinsic<[LLVMOneSixthElementsVectorType<0>,
2831+ LLVMOneSixthElementsVectorType<0>,
2832+ LLVMOneSixthElementsVectorType<0>,
2833+ LLVMOneSixthElementsVectorType<0>,
2834+ LLVMOneSixthElementsVectorType<0>,
2835+ LLVMOneSixthElementsVectorType<0>],
2836+ [llvm_anyvector_ty],
2837+ [IntrNoMem]>;
2838+
27952839def int_vector_interleave7 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
27962840 [LLVMOneSeventhElementsVectorType<0>,
27972841 LLVMOneSeventhElementsVectorType<0>,
@@ -2812,6 +2856,28 @@ def int_vector_deinterleave7 : DefaultAttrsIntrinsic<[LLVMOneSeventhElementsVect
28122856 [llvm_anyvector_ty],
28132857 [IntrNoMem]>;
28142858
2859+ def int_vector_interleave8 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
2860+ [LLVMOneEighthElementsVectorType<0>,
2861+ LLVMOneEighthElementsVectorType<0>,
2862+ LLVMOneEighthElementsVectorType<0>,
2863+ LLVMOneEighthElementsVectorType<0>,
2864+ LLVMOneEighthElementsVectorType<0>,
2865+ LLVMOneEighthElementsVectorType<0>,
2866+ LLVMOneEighthElementsVectorType<0>,
2867+ LLVMOneEighthElementsVectorType<0>],
2868+ [IntrNoMem]>;
2869+
2870+ def int_vector_deinterleave8 : DefaultAttrsIntrinsic<[LLVMOneEighthElementsVectorType<0>,
2871+ LLVMOneEighthElementsVectorType<0>,
2872+ LLVMOneEighthElementsVectorType<0>,
2873+ LLVMOneEighthElementsVectorType<0>,
2874+ LLVMOneEighthElementsVectorType<0>,
2875+ LLVMOneEighthElementsVectorType<0>,
2876+ LLVMOneEighthElementsVectorType<0>,
2877+ LLVMOneEighthElementsVectorType<0>],
2878+ [llvm_anyvector_ty],
2879+ [IntrNoMem]>;
2880+
28152881//===-------------- Intrinsics to perform partial reduction ---------------===//
28162882
28172883def int_experimental_vector_partial_reduce_add : DefaultAttrsIntrinsic<[LLVMMatchType<0>],
0 commit comments