llvm.org GIT mirror llvm / 6166d4c
[X86] Tidied up shuffle decode function doxygen descriptions As discussed on D18441 - auto brief is used so we don't need /brief, we don't need to include the function name and added some missing descriptions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265785 91177308-0d34-0410-b5e6-96231b3b80d8 Simon Pilgrim 4 years ago
2 changed file(s) with 41 addition(s) and 30 deletion(s). Raw diff Collapse all Expand all
2626
2727 enum { SM_SentinelUndef = -1, SM_SentinelZero = -2 };
2828
29 /// Decode a 128-bit INSERTPS instruction as a v4f32 shuffle mask.
2930 void DecodeINSERTPSMask(unsigned Imm, SmallVectorImpl &ShuffleMask);
3031
3132 // Insert the bottom Len elements from a second source into a vector starting at
3334 void DecodeInsertElementMask(MVT VT, unsigned Idx, unsigned Len,
3435 SmallVectorImpl &ShuffleMask);
3536
36 // <3,1> or <6,7,2,3>
37 /// Decode a MOVHLPS instruction as a v2f64/v4f32 shuffle mask.
38 /// i.e. <3,1> or <6,7,2,3>
3739 void DecodeMOVHLPSMask(unsigned NElts, SmallVectorImpl &ShuffleMask);
3840
39 // <0,2> or <0,1,4,5>
41 /// Decode a MOVLHPS instruction as a v2f64/v4f32 shuffle mask.
42 /// i.e. <0,2> or <0,1,4,5>
4043 void DecodeMOVLHPSMask(unsigned NElts, SmallVectorImpl &ShuffleMask);
4144
4245 void DecodeMOVSLDUPMask(MVT VT, SmallVectorImpl &ShuffleMask);
5154
5255 void DecodePALIGNRMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
5356
57 /// Decodes the shuffle masks for pshufd/pshufw/vpermilpd/vpermilps.
58 /// VT indicates the type of the vector allowing it to handle different
59 /// datatypes and vector widths.
5460 void DecodePSHUFMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
5561
62 /// Decodes the shuffle masks for pshufhw.
63 /// VT indicates the type of the vector allowing it to handle different
64 /// datatypes and vector widths.
5665 void DecodePSHUFHWMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
5766
58 void DecodePSHUFLWMask(MVT, unsigned Imm, SmallVectorImpl &ShuffleMask);
67 /// Decodes the shuffle masks for pshuflw.
68 /// VT indicates the type of the vector allowing it to handle different
69 /// datatypes and vector widths.
70 void DecodePSHUFLWMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
5971
60 /// \brief Decodes a PSWAPD 3DNow! instruction.
72 /// Decodes a PSWAPD 3DNow! instruction.
6173 void DecodePSWAPMask(MVT VT, SmallVectorImpl &ShuffleMask);
6274
63 /// DecodeSHUFPMask - This decodes the shuffle masks for shufp*. VT indicates
64 /// the type of the vector allowing it to handle different datatypes and vector
65 /// widths.
75 /// Decodes the shuffle masks for shufp*.
76 /// VT indicates the type of the vector allowing it to handle different
77 /// datatypes and vector widths.
6678 void DecodeSHUFPMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
6779
68 /// DecodeUNPCKHMask - This decodes the shuffle masks for unpckhps/unpckhpd
69 /// and punpckh*. VT indicates the type of the vector allowing it to handle
70 /// different datatypes and vector widths.
80 /// Decodes the shuffle masks for unpckhps/unpckhpd and punpckh*.
81 /// VT indicates the type of the vector allowing it to handle different
82 /// datatypes and vector widths.
7183 void DecodeUNPCKHMask(MVT VT, SmallVectorImpl &ShuffleMask);
7284
73 /// DecodeUNPCKLMask - This decodes the shuffle masks for unpcklps/unpcklpd
74 /// and punpckl*. VT indicates the type of the vector allowing it to handle
75 /// different datatypes and vector widths.
85 /// Decodes the shuffle masks for unpcklps/unpcklpd and punpckl*.
86 /// VT indicates the type of the vector allowing it to handle different
87 /// datatypes and vector widths.
7688 void DecodeUNPCKLMask(MVT VT, SmallVectorImpl &ShuffleMask);
7789
78 /// \brief Decode a PSHUFB mask from a raw array of constants such as from
90 /// Decode a PSHUFB mask from a raw array of constants such as from
7991 /// BUILD_VECTOR.
8092 void DecodePSHUFBMask(ArrayRef RawMask,
8193 SmallVectorImpl &ShuffleMask);
8294
83 /// \brief Decode a BLEND immediate mask into a shuffle mask.
95 /// Decode a BLEND immediate mask into a shuffle mask.
8496 void DecodeBLENDMask(MVT VT, unsigned Imm, SmallVectorImpl &ShuffleMask);
8597
8698 void DecodeVPERM2X128Mask(MVT VT, unsigned Imm,
8799 SmallVectorImpl &ShuffleMask);
88100
89 /// \brief Decode a shuffle packed values at 128-bit granularity
101 /// Decode a shuffle packed values at 128-bit granularity
90102 /// immediate mask into a shuffle mask.
91103 void decodeVSHUF64x2FamilyMask(MVT VT, unsigned Imm,
92104 SmallVectorImpl &ShuffleMask);
93105
94 /// DecodeVPERMMask - this decodes the shuffle masks for VPERMQ/VPERMPD.
106 /// Decodes the shuffle masks for VPERMQ/VPERMPD.
95107 /// No VT provided since it only works on 256-bit, 4 element vectors.
96108 void DecodeVPERMMask(unsigned Imm, SmallVectorImpl &ShuffleMask);
97109
98 /// \brief Decode a zero extension instruction as a shuffle mask.
110 /// Decode a zero extension instruction as a shuffle mask.
99111 void DecodeZeroExtendMask(MVT SrcScalarVT, MVT DstVT,
100112 SmallVectorImpl &ShuffleMask);
101113
102 /// \brief Decode a move lower and zero upper instruction as a shuffle mask.
114 /// Decode a move lower and zero upper instruction as a shuffle mask.
103115 void DecodeZeroMoveLowMask(MVT VT, SmallVectorImpl &ShuffleMask);
104116
105 /// \brief Decode a scalar float move instruction as a shuffle mask.
117 /// Decode a scalar float move instruction as a shuffle mask.
106118 void DecodeScalarMoveMask(MVT VT, bool IsLoad,
107119 SmallVectorImpl &ShuffleMask);
108120
109 /// \brief Decode a SSE4A EXTRQ instruction as a v16i8 shuffle mask.
121 /// Decode a SSE4A EXTRQ instruction as a v16i8 shuffle mask.
110122 void DecodeEXTRQIMask(int Len, int Idx,
111123 SmallVectorImpl &ShuffleMask);
112124
113 /// \brief Decode a SSE4A INSERTQ instruction as a v16i8 shuffle mask.
125 /// Decode a SSE4A INSERTQ instruction as a v16i8 shuffle mask.
114126 void DecodeINSERTQIMask(int Len, int Idx,
115127 SmallVectorImpl &ShuffleMask);
116128
117 /// \brief Decode a VPERMILPD/VPERMILPS variable mask from a raw
118 /// array of constants.
129 /// Decode a VPERMILPD/VPERMILPS variable mask from a raw array of constants.
119130 void DecodeVPERMILPMask(MVT VT, ArrayRef RawMask,
120131 SmallVectorImpl &ShuffleMask);
121132
122 /// \brief Decode a VPERM W/D/Q/PS/PD mask from a raw array of constants.
133 /// Decode a VPERM W/D/Q/PS/PD mask from a raw array of constants.
123134 void DecodeVPERMVMask(ArrayRef RawMask,
124135 SmallVectorImpl &ShuffleMask);
125136
126 /// \brief Decode a VPERMT2 W/D/Q/PS/PD mask from a raw array of constants.
137 /// Decode a VPERMT2 W/D/Q/PS/PD mask from a raw array of constants.
127138 void DecodeVPERMV3Mask(ArrayRef RawMask,
128139 SmallVectorImpl &ShuffleMask);
129140 } // llvm namespace
2424 class Constant;
2525 class MVT;
2626
27 /// \brief Decode a PSHUFB mask from an IR-level vector constant.
27 /// Decode a PSHUFB mask from an IR-level vector constant.
2828 void DecodePSHUFBMask(const Constant *C, SmallVectorImpl &ShuffleMask);
2929
30 /// \brief Decode a VPERMILP variable mask from an IR-level vector constant.
30 /// Decode a VPERMILP variable mask from an IR-level vector constant.
3131 void DecodeVPERMILPMask(const Constant *C, unsigned ElSize,
3232 SmallVectorImpl &ShuffleMask);
3333
34 /// \brief Decode a VPERM W/D/Q/PS/PD mask from an IR-level vector constant.
34 /// Decode a VPERM W/D/Q/PS/PD mask from an IR-level vector constant.
3535 void DecodeVPERMVMask(const Constant *C, MVT VT,
3636 SmallVectorImpl &ShuffleMask);
3737
38 /// \brief Decode a VPERMT2 W/D/Q/PS/PD mask from an IR-level vector constant.
38 /// Decode a VPERMT2 W/D/Q/PS/PD mask from an IR-level vector constant.
3939 void DecodeVPERMV3Mask(const Constant *C, MVT VT,
4040 SmallVectorImpl &ShuffleMask);
4141