Lines Matching +full:integer +full:- +full:n
1 /*===---- smmintrin.h - SSE4 intrinsics ------------------------------------===
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *===-----------------------------------------------------------------------===
22 __target__("sse4.1,no-evex512"), __min_vector_width__(128)))
41 /// Rounds up each element of the 128-bit vector of [4 x float] to an
42 /// integer and returns the rounded values in a 128-bit vector of
54 /// A 128-bit vector of [4 x float] values to be rounded up.
55 /// \returns A 128-bit vector of [4 x float] containing the rounded values.
58 /// Rounds up each element of the 128-bit vector of [2 x double] to an
59 /// integer and returns the rounded values in a 128-bit vector of
71 /// A 128-bit vector of [2 x double] values to be rounded up.
72 /// \returns A 128-bit vector of [2 x double] containing the rounded values.
75 /// Copies three upper elements of the first 128-bit vector operand to
76 /// the corresponding three upper elements of the 128-bit result vector of
77 /// [4 x float]. Rounds up the lowest element of the second 128-bit vector
78 /// operand to an integer and copies it to the lowest element of the 128-bit
90 /// A 128-bit vector of [4 x float]. The values stored in bits [127:32] are
93 /// A 128-bit vector of [4 x float]. The value stored in bits [31:0] is
94 /// rounded up to the nearest integer and copied to the corresponding bits
96 /// \returns A 128-bit vector of [4 x float] containing the copied and rounded
100 /// Copies the upper element of the first 128-bit vector operand to the
101 /// corresponding upper element of the 128-bit result vector of [2 x double].
102 /// Rounds up the lower element of the second 128-bit vector operand to an
103 /// integer and copies it to the lower element of the 128-bit result vector
115 /// A 128-bit vector of [2 x double]. The value stored in bits [127:64] is
118 /// A 128-bit vector of [2 x double]. The value stored in bits [63:0] is
119 /// rounded up to the nearest integer and copied to the corresponding bits
121 /// \returns A 128-bit vector of [2 x double] containing the copied and rounded
125 /// Rounds down each element of the 128-bit vector of [4 x float] to an
126 /// an integer and returns the rounded values in a 128-bit vector of
138 /// A 128-bit vector of [4 x float] values to be rounded down.
139 /// \returns A 128-bit vector of [4 x float] containing the rounded values.
142 /// Rounds down each element of the 128-bit vector of [2 x double] to an
143 /// integer and returns the rounded values in a 128-bit vector of
155 /// A 128-bit vector of [2 x double].
156 /// \returns A 128-bit vector of [2 x double] containing the rounded values.
159 /// Copies three upper elements of the first 128-bit vector operand to
160 /// the corresponding three upper elements of the 128-bit result vector of
161 /// [4 x float]. Rounds down the lowest element of the second 128-bit vector
162 /// operand to an integer and copies it to the lowest element of the 128-bit
174 /// A 128-bit vector of [4 x float]. The values stored in bits [127:32] are
177 /// A 128-bit vector of [4 x float]. The value stored in bits [31:0] is
178 /// rounded down to the nearest integer and copied to the corresponding bits
180 /// \returns A 128-bit vector of [4 x float] containing the copied and rounded
184 /// Copies the upper element of the first 128-bit vector operand to the
185 /// corresponding upper element of the 128-bit result vector of [2 x double].
186 /// Rounds down the lower element of the second 128-bit vector operand to an
187 /// integer and copies it to the lower element of the 128-bit result vector
199 /// A 128-bit vector of [2 x double]. The value stored in bits [127:64] is
202 /// A 128-bit vector of [2 x double]. The value stored in bits [63:0] is
203 /// rounded down to the nearest integer and copied to the corresponding bits
205 /// \returns A 128-bit vector of [2 x double] containing the copied and rounded
209 /// Rounds each element of the 128-bit vector of [4 x float] to an
210 /// integer value according to the rounding control specified by the second
211 /// argument and returns the rounded values in a 128-bit vector of
223 /// A 128-bit vector of [4 x float].
225 /// An integer value that specifies the rounding operation. \n
226 /// Bits [7:4] are reserved. \n
227 /// Bit [3] is a precision exception value: \n
228 /// 0: A normal PE exception is used \n
229 /// 1: The PE field is not updated \n
230 /// Bit [2] is the rounding control source: \n
231 /// 0: Use bits [1:0] of \a M \n
232 /// 1: Use the current MXCSR setting \n
233 /// Bits [1:0] contain the rounding control definition: \n
234 /// 00: Nearest \n
235 /// 01: Downward (toward negative infinity) \n
236 /// 10: Upward (toward positive infinity) \n
238 /// \returns A 128-bit vector of [4 x float] containing the rounded values.
242 /// Copies three upper elements of the first 128-bit vector operand to
243 /// the corresponding three upper elements of the 128-bit result vector of
244 /// [4 x float]. Rounds the lowest element of the second 128-bit vector
245 /// operand to an integer value according to the rounding control specified
246 /// by the third argument and copies it to the lowest element of the 128-bit
258 /// A 128-bit vector of [4 x float]. The values stored in bits [127:32] are
261 /// A 128-bit vector of [4 x float]. The value stored in bits [31:0] is
262 /// rounded to the nearest integer using the specified rounding control and
265 /// An integer value that specifies the rounding operation. \n
266 /// Bits [7:4] are reserved. \n
267 /// Bit [3] is a precision exception value: \n
268 /// 0: A normal PE exception is used \n
269 /// 1: The PE field is not updated \n
270 /// Bit [2] is the rounding control source: \n
271 /// 0: Use bits [1:0] of \a M \n
272 /// 1: Use the current MXCSR setting \n
273 /// Bits [1:0] contain the rounding control definition: \n
274 /// 00: Nearest \n
275 /// 01: Downward (toward negative infinity) \n
276 /// 10: Upward (toward positive infinity) \n
278 /// \returns A 128-bit vector of [4 x float] containing the copied and rounded
284 /// Rounds each element of the 128-bit vector of [2 x double] to an
285 /// integer value according to the rounding control specified by the second
286 /// argument and returns the rounded values in a 128-bit vector of
298 /// A 128-bit vector of [2 x double].
300 /// An integer value that specifies the rounding operation. \n
301 /// Bits [7:4] are reserved. \n
302 /// Bit [3] is a precision exception value: \n
303 /// 0: A normal PE exception is used \n
304 /// 1: The PE field is not updated \n
305 /// Bit [2] is the rounding control source: \n
306 /// 0: Use bits [1:0] of \a M \n
307 /// 1: Use the current MXCSR setting \n
308 /// Bits [1:0] contain the rounding control definition: \n
309 /// 00: Nearest \n
310 /// 01: Downward (toward negative infinity) \n
311 /// 10: Upward (toward positive infinity) \n
313 /// \returns A 128-bit vector of [2 x double] containing the rounded values.
317 /// Copies the upper element of the first 128-bit vector operand to the
318 /// corresponding upper element of the 128-bit result vector of [2 x double].
319 /// Rounds the lower element of the second 128-bit vector operand to an
320 /// integer value according to the rounding control specified by the third
321 /// argument and copies it to the lower element of the 128-bit result vector
333 /// A 128-bit vector of [2 x double]. The value stored in bits [127:64] is
336 /// A 128-bit vector of [2 x double]. The value stored in bits [63:0] is
337 /// rounded to the nearest integer using the specified rounding control and
340 /// An integer value that specifies the rounding operation. \n
341 /// Bits [7:4] are reserved. \n
342 /// Bit [3] is a precision exception value: \n
343 /// 0: A normal PE exception is used \n
344 /// 1: The PE field is not updated \n
345 /// Bit [2] is the rounding control source: \n
346 /// 0: Use bits [1:0] of \a M \n
347 /// 1: Use the current MXCSR setting \n
348 /// Bits [1:0] contain the rounding control definition: \n
349 /// 00: Nearest \n
350 /// 01: Downward (toward negative infinity) \n
351 /// 10: Upward (toward positive infinity) \n
353 /// \returns A 128-bit vector of [2 x double] containing the copied and rounded
360 /// Returns a 128-bit vector of [2 x double] where the values are
373 /// A 128-bit vector of [2 x double].
375 /// A 128-bit vector of [2 x double].
377 /// An immediate integer operand, with mask bits [1:0] specifying how the
379 /// index of a copied value. When a mask bit is 0, the corresponding 64-bit
381 /// When a mask bit is 1, the corresponding 64-bit element in operand \a V2
383 /// \returns A 128-bit vector of [2 x double] containing the copied values.
388 /// Returns a 128-bit vector of [4 x float] where the values are selected
401 /// A 128-bit vector of [4 x float].
403 /// A 128-bit vector of [4 x float].
405 /// An immediate integer operand, with mask bits [3:0] specifying how the
407 /// index of a copied value. When a mask bit is 0, the corresponding 32-bit
409 /// When a mask bit is 1, the corresponding 32-bit element in operand \a V2
411 /// \returns A 128-bit vector of [4 x float] containing the copied values.
416 /// Returns a 128-bit vector of [2 x double] where the values are
425 /// A 128-bit vector of [2 x double].
427 /// A 128-bit vector of [2 x double].
429 /// A 128-bit vector operand, with mask bits 127 and 63 specifying how the
432 /// corresponding 64-bit element in operand \a __V1 is copied to the same
433 /// position in the result. When a mask bit is 1, the corresponding 64-bit
435 /// \returns A 128-bit vector of [2 x double] containing the copied values.
443 /// Returns a 128-bit vector of [4 x float] where the values are
452 /// A 128-bit vector of [4 x float].
454 /// A 128-bit vector of [4 x float].
456 /// A 128-bit vector operand, with mask bits 127, 95, 63, and 31 specifying
459 /// corresponding 32-bit element in operand \a __V1 is copied to the same
460 /// position in the result. When a mask bit is 1, the corresponding 32-bit
462 /// \returns A 128-bit vector of [4 x float] containing the copied values.
470 /// Returns a 128-bit vector of [16 x i8] where the values are selected
479 /// A 128-bit vector of [16 x i8].
481 /// A 128-bit vector of [16 x i8].
483 /// A 128-bit vector operand, with mask bits 127, 119, 111...7 specifying
486 /// corresponding 8-bit element in operand \a __V1 is copied to the same
487 /// position in the result. When a mask bit is 1, the corresponding 8-bit
489 /// \returns A 128-bit vector of [16 x i8] containing the copied values.
497 /// Returns a 128-bit vector of [8 x i16] where the values are selected
510 /// A 128-bit vector of [8 x i16].
512 /// A 128-bit vector of [8 x i16].
514 /// An immediate integer operand, with mask bits [7:0] specifying how the
516 /// index of a copied value. When a mask bit is 0, the corresponding 16-bit
518 /// When a mask bit is 1, the corresponding 16-bit element in operand \a V2
520 /// \returns A 128-bit vector of [8 x i16] containing the copied values.
526 /// Multiples corresponding elements of two 128-bit vectors of [4 x i32]
527 /// and returns the lower 32 bits of the each product in a 128-bit vector of
535 /// A 128-bit integer vector.
537 /// A 128-bit integer vector.
538 /// \returns A 128-bit integer vector containing the products of both operands.
544 /// Multiplies corresponding even-indexed elements of two 128-bit
545 /// vectors of [4 x i32] and returns a 128-bit vector of [2 x i64]
553 /// A 128-bit vector of [4 x i32].
555 /// A 128-bit vector of [4 x i32].
556 /// \returns A 128-bit vector of [2 x i64] containing the products of both
564 /// Computes the dot product of the two 128-bit vectors of [4 x float]
565 /// and returns it in the elements of the 128-bit result vector of
568 /// The immediate integer operand controls which input elements
581 /// A 128-bit vector of [4 x float].
583 /// A 128-bit vector of [4 x float].
585 /// An immediate integer operand. Mask bits [7:4] determine which elements
595 /// \returns A 128-bit vector of [4 x float] containing the dot product.
599 /// Computes the dot product of the two 128-bit vectors of [2 x double]
600 /// and returns it in the elements of the 128-bit result vector of
603 /// The immediate integer operand controls which input
616 /// A 128-bit vector of [2 x double].
618 /// A 128-bit vector of [2 x double].
620 /// An immediate integer operand. Mask bits [5:4] determine which elements
635 /// Loads integer values from a 128-bit aligned memory location to a
636 /// 128-bit integer vector.
643 /// A pointer to a 128-bit aligned memory location that contains the integer
645 /// \returns A 128-bit integer vector containing the data stored at the
652 /* SSE4 Packed Integer Min/Max Instructions. */
653 /// Compares the corresponding elements of two 128-bit vectors of
654 /// [16 x i8] and returns a 128-bit vector of [16 x i8] containing the lesser
662 /// A 128-bit vector of [16 x i8].
664 /// A 128-bit vector of [16 x i8]
665 /// \returns A 128-bit vector of [16 x i8] containing the lesser values.
671 /// Compares the corresponding elements of two 128-bit vectors of
672 /// [16 x i8] and returns a 128-bit vector of [16 x i8] containing the
680 /// A 128-bit vector of [16 x i8].
682 /// A 128-bit vector of [16 x i8].
683 /// \returns A 128-bit vector of [16 x i8] containing the greater values.
689 /// Compares the corresponding elements of two 128-bit vectors of
690 /// [8 x u16] and returns a 128-bit vector of [8 x u16] containing the lesser
698 /// A 128-bit vector of [8 x u16].
700 /// A 128-bit vector of [8 x u16].
701 /// \returns A 128-bit vector of [8 x u16] containing the lesser values.
707 /// Compares the corresponding elements of two 128-bit vectors of
708 /// [8 x u16] and returns a 128-bit vector of [8 x u16] containing the
716 /// A 128-bit vector of [8 x u16].
718 /// A 128-bit vector of [8 x u16].
719 /// \returns A 128-bit vector of [8 x u16] containing the greater values.
725 /// Compares the corresponding elements of two 128-bit vectors of
726 /// [4 x i32] and returns a 128-bit vector of [4 x i32] containing the lesser
734 /// A 128-bit vector of [4 x i32].
736 /// A 128-bit vector of [4 x i32].
737 /// \returns A 128-bit vector of [4 x i32] containing the lesser values.
743 /// Compares the corresponding elements of two 128-bit vectors of
744 /// [4 x i32] and returns a 128-bit vector of [4 x i32] containing the
752 /// A 128-bit vector of [4 x i32].
754 /// A 128-bit vector of [4 x i32].
755 /// \returns A 128-bit vector of [4 x i32] containing the greater values.
761 /// Compares the corresponding elements of two 128-bit vectors of
762 /// [4 x u32] and returns a 128-bit vector of [4 x u32] containing the lesser
770 /// A 128-bit vector of [4 x u32].
772 /// A 128-bit vector of [4 x u32].
773 /// \returns A 128-bit vector of [4 x u32] containing the lesser values.
779 /// Compares the corresponding elements of two 128-bit vectors of
780 /// [4 x u32] and returns a 128-bit vector of [4 x u32] containing the
788 /// A 128-bit vector of [4 x u32].
790 /// A 128-bit vector of [4 x u32].
791 /// \returns A 128-bit vector of [4 x u32] containing the greater values.
799 /// argument \a Y as selected by the third argument \a N. That result then
800 /// has elements zeroed out also as selected by the third argument \a N. The
801 /// resulting 128-bit vector of [4 x float] is then returned.
806 /// __m128 _mm_insert_ps(__m128 X, __m128 Y, const int N);
812 /// A 128-bit vector source operand of [4 x float]. With the exception of
814 /// [3:0] of \a N, all bits from this parameter are copied to the result.
816 /// A 128-bit vector source operand of [4 x float]. One single-precision
817 /// floating-point element from this source, as determined by the immediate
819 /// \param N
822 /// cleared. The following assignments are made: \n
823 /// Bits [7:6] specify the bits to copy from operand \a Y: \n
824 /// 00: Selects bits [31:0] from operand \a Y. \n
825 /// 01: Selects bits [63:32] from operand \a Y. \n
826 /// 10: Selects bits [95:64] from operand \a Y. \n
827 /// 11: Selects bits [127:96] from operand \a Y. \n
829 /// from operand \a Y are copied: \n
830 /// 00: Copies the selected bits from \a Y to result bits [31:0]. \n
831 /// 01: Copies the selected bits from \a Y to result bits [63:32]. \n
832 /// 10: Copies the selected bits from \a Y to result bits [95:64]. \n
833 /// 11: Copies the selected bits from \a Y to result bits [127:96]. \n
836 /// \returns A 128-bit vector of [4 x float] containing the copied
837 /// single-precision floating point elements from the operands.
838 #define _mm_insert_ps(X, Y, N) __builtin_ia32_insertps128((X), (Y), (N)) argument
840 /// Extracts a 32-bit integer from a 128-bit vector of [4 x float] and
841 /// returns it, using the immediate value parameter \a N as a selector.
846 /// int _mm_extract_ps(__m128 X, const int N);
853 /// A 128-bit vector of [4 x float].
854 /// \param N
856 /// \a X are extracted and returned: \n
857 /// 00: Bits [31:0] of parameter \a X are returned. \n
858 /// 01: Bits [63:32] of parameter \a X are returned. \n
859 /// 10: Bits [95:64] of parameter \a X are returned. \n
861 /// \returns A 32-bit integer containing the extracted 32 bits of float data.
862 #define _mm_extract_ps(X, N) \ argument
864 int, __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)))
867 /* Extract a single-precision float from X at index N into D. */
868 #define _MM_EXTRACT_FLOAT(D, X, N) \ argument
870 (D) = __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)); \
877 /* Extract a float from X at index N into the first index of the return. */
878 #define _MM_PICK_OUT_PS(X, N) \ argument
879 _mm_insert_ps(_mm_setzero_ps(), (X), _MM_MK_INSERTPS_NDX((N), 0, 0x0e))
881 /* Insert int into packed integer array at index. */
882 /// Constructs a 128-bit vector of [16 x i8] by first making a copy of
883 /// the 128-bit integer vector parameter, and then inserting the lower 8 bits
884 /// of an integer parameter \a I into an offset specified by the immediate
885 /// value parameter \a N.
890 /// __m128i _mm_insert_epi8(__m128i X, int I, const int N);
896 /// A 128-bit integer vector of [16 x i8]. This vector is copied to the
900 /// An integer. The lower 8 bits of this operand are written to the result
901 /// beginning at the offset specified by \a N.
902 /// \param N
904 /// which the lower 8 bits of \a I are written. \n
905 /// 0000: Bits [7:0] of the result are used for insertion. \n
906 /// 0001: Bits [15:8] of the result are used for insertion. \n
907 /// 0010: Bits [23:16] of the result are used for insertion. \n
908 /// 0011: Bits [31:24] of the result are used for insertion. \n
909 /// 0100: Bits [39:32] of the result are used for insertion. \n
910 /// 0101: Bits [47:40] of the result are used for insertion. \n
911 /// 0110: Bits [55:48] of the result are used for insertion. \n
912 /// 0111: Bits [63:56] of the result are used for insertion. \n
913 /// 1000: Bits [71:64] of the result are used for insertion. \n
914 /// 1001: Bits [79:72] of the result are used for insertion. \n
915 /// 1010: Bits [87:80] of the result are used for insertion. \n
916 /// 1011: Bits [95:88] of the result are used for insertion. \n
917 /// 1100: Bits [103:96] of the result are used for insertion. \n
918 /// 1101: Bits [111:104] of the result are used for insertion. \n
919 /// 1110: Bits [119:112] of the result are used for insertion. \n
921 /// \returns A 128-bit integer vector containing the constructed values.
922 #define _mm_insert_epi8(X, I, N) \ argument
924 (int)(N)))
926 /// Constructs a 128-bit vector of [4 x i32] by first making a copy of
927 /// the 128-bit integer vector parameter, and then inserting the 32-bit
928 /// integer parameter \a I at the offset specified by the immediate value
929 /// parameter \a N.
934 /// __m128i _mm_insert_epi32(__m128i X, int I, const int N);
940 /// A 128-bit integer vector of [4 x i32]. This vector is copied to the
944 /// A 32-bit integer that is written to the result beginning at the offset
945 /// specified by \a N.
946 /// \param N
948 /// which the integer \a I is written. \n
949 /// 00: Bits [31:0] of the result are used for insertion. \n
950 /// 01: Bits [63:32] of the result are used for insertion. \n
951 /// 10: Bits [95:64] of the result are used for insertion. \n
953 /// \returns A 128-bit integer vector containing the constructed values.
954 #define _mm_insert_epi32(X, I, N) \ argument
956 (int)(N)))
959 /// Constructs a 128-bit vector of [2 x i64] by first making a copy of
960 /// the 128-bit integer vector parameter, and then inserting the 64-bit
961 /// integer parameter \a I, using the immediate value parameter \a N as an
967 /// __m128i _mm_insert_epi64(__m128i X, long long I, const int N);
973 /// A 128-bit integer vector of [2 x i64]. This vector is copied to the
977 /// A 64-bit integer that is written to the result beginning at the offset
978 /// specified by \a N.
979 /// \param N
981 /// which the integer \a I is written. \n
982 /// 0: Bits [63:0] of the result are used for insertion. \n
983 /// 1: Bits [127:64] of the result are used for insertion. \n
984 /// \returns A 128-bit integer vector containing the constructed values.
985 #define _mm_insert_epi64(X, I, N) \ argument
987 (int)(N)))
990 /* Extract int from packed integer array at index. This returns the element
993 /// Extracts an 8-bit element from the 128-bit integer vector of
994 /// [16 x i8], using the immediate value parameter \a N as a selector.
999 /// int _mm_extract_epi8(__m128i X, const int N);
1005 /// A 128-bit integer vector.
1006 /// \param N
1007 /// An immediate value. Bits [3:0] specify which 8-bit vector element from
1008 /// the argument \a X to extract and copy to the result. \n
1009 /// 0000: Bits [7:0] of parameter \a X are extracted. \n
1010 /// 0001: Bits [15:8] of the parameter \a X are extracted. \n
1011 /// 0010: Bits [23:16] of the parameter \a X are extracted. \n
1012 /// 0011: Bits [31:24] of the parameter \a X are extracted. \n
1013 /// 0100: Bits [39:32] of the parameter \a X are extracted. \n
1014 /// 0101: Bits [47:40] of the parameter \a X are extracted. \n
1015 /// 0110: Bits [55:48] of the parameter \a X are extracted. \n
1016 /// 0111: Bits [63:56] of the parameter \a X are extracted. \n
1017 /// 1000: Bits [71:64] of the parameter \a X are extracted. \n
1018 /// 1001: Bits [79:72] of the parameter \a X are extracted. \n
1019 /// 1010: Bits [87:80] of the parameter \a X are extracted. \n
1020 /// 1011: Bits [95:88] of the parameter \a X are extracted. \n
1021 /// 1100: Bits [103:96] of the parameter \a X are extracted. \n
1022 /// 1101: Bits [111:104] of the parameter \a X are extracted. \n
1023 /// 1110: Bits [119:112] of the parameter \a X are extracted. \n
1025 /// \returns An unsigned integer, whose lower 8 bits are selected from the
1026 /// 128-bit integer vector parameter and the remaining bits are assigned
1028 #define _mm_extract_epi8(X, N) \ argument
1030 (int)(N)))
1032 /// Extracts a 32-bit element from the 128-bit integer vector of
1033 /// [4 x i32], using the immediate value parameter \a N as a selector.
1038 /// int _mm_extract_epi32(__m128i X, const int N);
1044 /// A 128-bit integer vector.
1045 /// \param N
1046 /// An immediate value. Bits [1:0] specify which 32-bit vector element from
1047 /// the argument \a X to extract and copy to the result. \n
1048 /// 00: Bits [31:0] of the parameter \a X are extracted. \n
1049 /// 01: Bits [63:32] of the parameter \a X are extracted. \n
1050 /// 10: Bits [95:64] of the parameter \a X are extracted. \n
1052 /// \returns An integer, whose lower 32 bits are selected from the 128-bit
1053 /// integer vector parameter and the remaining bits are assigned zeros.
1054 #define _mm_extract_epi32(X, N) \ argument
1055 ((int)__builtin_ia32_vec_ext_v4si((__v4si)(__m128i)(X), (int)(N)))
1057 /// Extracts a 64-bit element from the 128-bit integer vector of
1058 /// [2 x i64], using the immediate value parameter \a N as a selector.
1063 /// long long _mm_extract_epi64(__m128i X, const int N);
1067 /// in 64-bit mode.
1070 /// A 128-bit integer vector.
1071 /// \param N
1072 /// An immediate value. Bit [0] specifies which 64-bit vector element from
1073 /// the argument \a X to return. \n
1074 /// 0: Bits [63:0] are returned. \n
1075 /// 1: Bits [127:64] are returned. \n
1076 /// \returns A 64-bit integer.
1077 #define _mm_extract_epi64(X, N) \ argument
1078 ((long long)__builtin_ia32_vec_ext_v2di((__v2di)(__m128i)(X), (int)(N)))
1080 /* SSE4 128-bit Packed Integer Comparisons. */
1081 /// Tests whether the specified bits in a 128-bit integer vector are all
1089 /// A 128-bit integer vector containing the bits to be tested.
1091 /// A 128-bit integer vector selecting which bits to test in operand \a __M.
1098 /// Tests whether the specified bits in a 128-bit integer vector are all
1106 /// A 128-bit integer vector containing the bits to be tested.
1108 /// A 128-bit integer vector selecting which bits to test in operand \a __M.
1115 /// Tests whether the specified bits in a 128-bit integer vector are
1123 /// A 128-bit integer vector containing the bits to be tested.
1125 /// A 128-bit integer vector selecting which bits to test in operand \a __M.
1133 /// Tests whether the specified bits in a 128-bit integer vector are all
1145 /// A 128-bit integer vector containing the bits to be tested.
1148 #define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_set1_epi32(-1))
1150 /// Tests whether the specified bits in a 128-bit integer vector are
1162 /// A 128-bit integer vector containing the bits to be tested.
1164 /// A 128-bit integer vector selecting which bits to test in operand \a M.
1169 /// Tests whether the specified bits in a 128-bit integer vector are all
1181 /// A 128-bit integer vector containing the bits to be tested.
1183 /// A 128-bit integer vector selecting which bits to test in operand \a M.
1187 /* SSE4 64-bit Packed Integer Comparisons. */
1188 /// Compares each of the corresponding 64-bit values of the 128-bit
1189 /// integer vectors for equality.
1198 /// A 128-bit integer vector.
1200 /// A 128-bit integer vector.
1201 /// \returns A 128-bit integer vector containing the comparison results.
1207 /* SSE4 Packed Integer Sign-Extension. */
1208 /// Sign-extends each of the lower eight 8-bit integer elements of a
1209 /// 128-bit vector of [16 x i8] to 16-bit values and returns them in a
1210 /// 128-bit vector of [8 x i16]. The upper eight elements of the input vector
1218 /// A 128-bit vector of [16 x i8]. The lower eight 8-bit elements are
1219 /// sign-extended to 16-bit values.
1220 /// \returns A 128-bit vector of [8 x i16] containing the sign-extended values.
1230 /// Sign-extends each of the lower four 8-bit integer elements of a
1231 /// 128-bit vector of [16 x i8] to 32-bit values and returns them in a
1232 /// 128-bit vector of [4 x i32]. The upper twelve elements of the input
1240 /// A 128-bit vector of [16 x i8]. The lower four 8-bit elements are
1241 /// sign-extended to 32-bit values.
1242 /// \returns A 128-bit vector of [4 x i32] containing the sign-extended values.
1250 /// Sign-extends each of the lower two 8-bit integer elements of a
1251 /// 128-bit integer vector of [16 x i8] to 64-bit values and returns them in
1252 /// a 128-bit vector of [2 x i64]. The upper fourteen elements of the input
1260 /// A 128-bit vector of [16 x i8]. The lower two 8-bit elements are
1261 /// sign-extended to 64-bit values.
1262 /// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
1270 /// Sign-extends each of the lower four 16-bit integer elements of a
1271 /// 128-bit integer vector of [8 x i16] to 32-bit values and returns them in
1272 /// a 128-bit vector of [4 x i32]. The upper four elements of the input
1280 /// A 128-bit vector of [8 x i16]. The lower four 16-bit elements are
1281 /// sign-extended to 32-bit values.
1282 /// \returns A 128-bit vector of [4 x i32] containing the sign-extended values.
1288 /// Sign-extends each of the lower two 16-bit integer elements of a
1289 /// 128-bit integer vector of [8 x i16] to 64-bit values and returns them in
1290 /// a 128-bit vector of [2 x i64]. The upper six elements of the input
1298 /// A 128-bit vector of [8 x i16]. The lower two 16-bit elements are
1299 /// sign-extended to 64-bit values.
1300 /// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
1306 /// Sign-extends each of the lower two 32-bit integer elements of a
1307 /// 128-bit integer vector of [4 x i32] to 64-bit values and returns them in
1308 /// a 128-bit vector of [2 x i64]. The upper two elements of the input vector
1316 /// A 128-bit vector of [4 x i32]. The lower two 32-bit elements are
1317 /// sign-extended to 64-bit values.
1318 /// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
1324 /* SSE4 Packed Integer Zero-Extension. */
1325 /// Zero-extends each of the lower eight 8-bit integer elements of a
1326 /// 128-bit vector of [16 x i8] to 16-bit values and returns them in a
1327 /// 128-bit vector of [8 x i16]. The upper eight elements of the input vector
1335 /// A 128-bit vector of [16 x i8]. The lower eight 8-bit elements are
1336 /// zero-extended to 16-bit values.
1337 /// \returns A 128-bit vector of [8 x i16] containing the zero-extended values.
1345 /// Zero-extends each of the lower four 8-bit integer elements of a
1346 /// 128-bit vector of [16 x i8] to 32-bit values and returns them in a
1347 /// 128-bit vector of [4 x i32]. The upper twelve elements of the input
1355 /// A 128-bit vector of [16 x i8]. The lower four 8-bit elements are
1356 /// zero-extended to 32-bit values.
1357 /// \returns A 128-bit vector of [4 x i32] containing the zero-extended values.
1363 /// Zero-extends each of the lower two 8-bit integer elements of a
1364 /// 128-bit integer vector of [16 x i8] to 64-bit values and returns them in
1365 /// a 128-bit vector of [2 x i64]. The upper fourteen elements of the input
1373 /// A 128-bit vector of [16 x i8]. The lower two 8-bit elements are
1374 /// zero-extended to 64-bit values.
1375 /// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
1381 /// Zero-extends each of the lower four 16-bit integer elements of a
1382 /// 128-bit integer vector of [8 x i16] to 32-bit values and returns them in
1383 /// a 128-bit vector of [4 x i32]. The upper four elements of the input
1391 /// A 128-bit vector of [8 x i16]. The lower four 16-bit elements are
1392 /// zero-extended to 32-bit values.
1393 /// \returns A 128-bit vector of [4 x i32] containing the zero-extended values.
1399 /// Zero-extends each of the lower two 16-bit integer elements of a
1400 /// 128-bit integer vector of [8 x i16] to 64-bit values and returns them in
1401 /// a 128-bit vector of [2 x i64]. The upper six elements of the input vector
1409 /// A 128-bit vector of [8 x i16]. The lower two 16-bit elements are
1410 /// zero-extended to 64-bit values.
1411 /// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
1417 /// Zero-extends each of the lower two 32-bit integer elements of a
1418 /// 128-bit integer vector of [4 x i32] to 64-bit values and returns them in
1419 /// a 128-bit vector of [2 x i64]. The upper two elements of the input vector
1427 /// A 128-bit vector of [4 x i32]. The lower two 32-bit elements are
1428 /// zero-extended to 64-bit values.
1429 /// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
1436 /// Converts, with saturation, 32-bit signed integers from both 128-bit integer
1437 /// vector operands into 16-bit unsigned integers, and returns the packed
1448 /// A 128-bit vector of [4 x i32]. The converted [4 x i16] values are
1451 /// A 128-bit vector of [4 x i32]. The converted [4 x i16] values are
1453 /// \returns A 128-bit vector of [8 x i16] containing the converted values.
1460 /// Subtracts 8-bit unsigned integer values and computes the absolute
1474 /// A 128-bit vector of [16 x i8].
1476 /// A 128-bit vector of [16 x i8].
1478 /// An 8-bit immediate operand specifying how the absolute differences are to
1486 /// d0 = abs(X[i + k + 0] - Y[j + 0]);
1487 /// d1 = abs(X[i + k + 1] - Y[j + 1]);
1488 /// d2 = abs(X[i + k + 2] - Y[j + 2]);
1489 /// d3 = abs(X[i + k + 3] - Y[j + 3]);
1493 /// \returns A 128-bit integer vector containing the sums of the sets of
1499 /// Finds the minimum unsigned 16-bit element in the input 128-bit
1508 /// A 128-bit vector of [8 x u16].
1509 /// \returns A 128-bit value where bits [15:0] contain the minimum value found
1554 /// \a A and \a B. Returns a 128-bit integer vector representing the result
1567 /// A 128-bit integer vector containing one of the source operands to be
1570 /// A 128-bit integer vector containing one of the source operands to be
1573 /// An 8-bit immediate operand specifying whether the characters are bytes or
1575 /// value. \n
1576 /// Bits [1:0]: Determine source data format. \n
1577 /// 00: 16 unsigned bytes \n
1578 /// 01: 8 unsigned words \n
1579 /// 10: 16 signed bytes \n
1580 /// 11: 8 signed words \n
1581 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1583 /// the characters in \a A. \n
1585 /// basis is greater than or equal for even-indexed elements in \a A,
1586 /// and less than or equal for odd-indexed elements in \a A. \n
1588 /// \a B for equality. \n
1589 /// 11: Substring: Search \a B for substring matches of \a A. \n
1591 /// mask of the comparison results. \n
1592 /// 00: No effect. \n
1593 /// 01: Negate the bit mask. \n
1594 /// 10: No effect. \n
1596 /// to the size of \a A or \a B. \n
1597 /// Bit [6]: Determines whether the result is zero-extended or expanded to 16
1598 /// bytes. \n
1599 /// 0: The result is zero-extended to 16 bytes. \n
1602 /// \returns Returns a 128-bit integer vector representing the result mask of
1610 /// \a A and \a B. Returns an integer representing the result index of the
1623 /// A 128-bit integer vector containing one of the source operands to be
1626 /// A 128-bit integer vector containing one of the source operands to be
1629 /// An 8-bit immediate operand specifying whether the characters are bytes or
1631 /// value. \n
1632 /// Bits [1:0]: Determine source data format. \n
1633 /// 00: 16 unsigned bytes \n
1634 /// 01: 8 unsigned words \n
1635 /// 10: 16 signed bytes \n
1636 /// 11: 8 signed words \n
1637 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1639 /// the characters in \a A. \n
1641 /// basis is greater than or equal for even-indexed elements in \a A,
1642 /// and less than or equal for odd-indexed elements in \a A. \n
1644 /// \a B for equality. \n
1645 /// 11: Substring: Search B for substring matches of \a A. \n
1647 /// mask of the comparison results. \n
1648 /// 00: No effect. \n
1649 /// 01: Negate the bit mask. \n
1650 /// 10: No effect. \n
1652 /// to the size of \a A or \a B. \n
1654 /// highest set bit is returned. \n
1655 /// 0: The index of the least significant set bit. \n
1656 /// 1: The index of the most significant set bit. \n
1657 /// \returns Returns an integer representing the result index of the comparison.
1664 /// \a A and \a B. Returns a 128-bit integer vector representing the result
1677 /// A 128-bit integer vector containing one of the source operands to be
1680 /// An integer that specifies the length of the string in \a A.
1682 /// A 128-bit integer vector containing one of the source operands to be
1685 /// An integer that specifies the length of the string in \a B.
1687 /// An 8-bit immediate operand specifying whether the characters are bytes or
1689 /// value. \n
1690 /// Bits [1:0]: Determine source data format. \n
1691 /// 00: 16 unsigned bytes \n
1692 /// 01: 8 unsigned words \n
1693 /// 10: 16 signed bytes \n
1694 /// 11: 8 signed words \n
1695 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1697 /// the characters in \a A. \n
1699 /// basis is greater than or equal for even-indexed elements in \a A,
1700 /// and less than or equal for odd-indexed elements in \a A. \n
1702 /// \a B for equality. \n
1703 /// 11: Substring: Search \a B for substring matches of \a A. \n
1705 /// mask of the comparison results. \n
1706 /// 00: No effect. \n
1707 /// 01: Negate the bit mask. \n
1708 /// 10: No effect. \n
1710 /// to the size of \a A or \a B. \n
1711 /// Bit [6]: Determines whether the result is zero-extended or expanded to 16
1712 /// bytes. \n
1713 /// 0: The result is zero-extended to 16 bytes. \n
1715 /// repeating each bit 8 or 16 times). \n
1716 /// \returns Returns a 128-bit integer vector representing the result mask of
1725 /// \a A and \a B. Returns an integer representing the result index of the
1738 /// A 128-bit integer vector containing one of the source operands to be
1741 /// An integer that specifies the length of the string in \a A.
1743 /// A 128-bit integer vector containing one of the source operands to be
1746 /// An integer that specifies the length of the string in \a B.
1748 /// An 8-bit immediate operand specifying whether the characters are bytes or
1750 /// value. \n
1751 /// Bits [1:0]: Determine source data format. \n
1752 /// 00: 16 unsigned bytes \n
1753 /// 01: 8 unsigned words \n
1754 /// 10: 16 signed bytes \n
1755 /// 11: 8 signed words \n
1756 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1758 /// the characters in \a A. \n
1760 /// basis is greater than or equal for even-indexed elements in \a A,
1761 /// and less than or equal for odd-indexed elements in \a A. \n
1763 /// \a B for equality. \n
1764 /// 11: Substring: Search B for substring matches of \a A. \n
1766 /// mask of the comparison results. \n
1767 /// 00: No effect. \n
1768 /// 01: Negate the bit mask. \n
1769 /// 10: No effect. \n
1771 /// to the size of \a A or \a B. \n
1773 /// highest set bit is returned. \n
1774 /// 0: The index of the least significant set bit. \n
1775 /// 1: The index of the most significant set bit. \n
1776 /// \returns Returns an integer representing the result index of the comparison.
1798 /// A 128-bit integer vector containing one of the source operands to be
1801 /// A 128-bit integer vector containing one of the source operands to be
1804 /// An 8-bit immediate operand specifying whether the characters are bytes or
1805 /// words and the type of comparison to perform. \n
1806 /// Bits [1:0]: Determine source data format. \n
1807 /// 00: 16 unsigned bytes \n
1808 /// 01: 8 unsigned words \n
1809 /// 10: 16 signed bytes \n
1810 /// 11: 8 signed words \n
1811 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1813 /// the characters in \a A. \n
1815 /// basis is greater than or equal for even-indexed elements in \a A,
1816 /// and less than or equal for odd-indexed elements in \a A. \n
1818 /// \a B for equality. \n
1819 /// 11: Substring: Search \a B for substring matches of \a A. \n
1821 /// mask of the comparison results. \n
1822 /// 00: No effect. \n
1823 /// 01: Negate the bit mask. \n
1824 /// 10: No effect. \n
1826 /// to the size of \a A or \a B. \n
1835 /// \a A and \a B. Returns 1 if the bit mask is non-zero, otherwise, returns
1848 /// A 128-bit integer vector containing one of the source operands to be
1851 /// A 128-bit integer vector containing one of the source operands to be
1854 /// An 8-bit immediate operand specifying whether the characters are bytes or
1855 /// words and the type of comparison to perform. \n
1856 /// Bits [1:0]: Determine source data format. \n
1857 /// 00: 16 unsigned bytes \n
1858 /// 01: 8 unsigned words \n
1859 /// 10: 16 signed bytes \n
1860 /// 11: 8 signed words \n
1861 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1863 /// the characters in \a A. \n
1865 /// basis is greater than or equal for even-indexed elements in \a A,
1866 /// and less than or equal for odd-indexed elements in \a A. \n
1868 /// \a B for equality. \n
1869 /// 11: Substring: Search B for substring matches of \a A. \n
1871 /// mask of the comparison results. \n
1872 /// 00: No effect. \n
1873 /// 01: Negate the bit mask. \n
1874 /// 10: No effect. \n
1877 /// \returns Returns 1 if the bit mask is non-zero, otherwise, returns 0.
1896 /// A 128-bit integer vector containing one of the source operands to be
1899 /// A 128-bit integer vector containing one of the source operands to be
1902 /// An 8-bit immediate operand specifying whether the characters are bytes or
1903 /// words and the type of comparison to perform. \n
1904 /// Bits [1:0]: Determine source data format. \n
1905 /// 00: 16 unsigned bytes \n
1906 /// 01: 8 unsigned words \n
1907 /// 10: 16 signed bytes \n
1908 /// 11: 8 signed words \n
1909 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1911 /// the characters in \a A. \n
1913 /// basis is greater than or equal for even-indexed elements in \a A,
1914 /// and less than or equal for odd-indexed elements in \a A. \n
1916 /// \a B for equality. \n
1917 /// 11: Substring: Search B for substring matches of \a A. \n
1919 /// mask of the comparison results. \n
1920 /// 00: No effect. \n
1921 /// 01: Negate the bit mask. \n
1922 /// 10: No effect. \n
1924 /// to the size of \a A or \a B. \n
1945 /// A 128-bit integer vector containing one of the source operands to be
1948 /// A 128-bit integer vector containing one of the source operands to be
1951 /// An 8-bit immediate operand specifying whether the characters are bytes or
1952 /// words and the type of comparison to perform. \n
1953 /// Bits [1:0]: Determine source data format. \n
1954 /// 00: 16 unsigned bytes \n
1955 /// 01: 8 unsigned words \n
1956 /// 10: 16 signed bytes \n
1957 /// 11: 8 signed words \n
1958 /// Bits [3:2]: Determine comparison type and aggregation method. \n
1960 /// the characters in \a A. \n
1962 /// basis is greater than or equal for even-indexed elements in \a A,
1963 /// and less than or equal for odd-indexed elements in \a A. \n
1965 /// \a B for equality. \n
1966 /// 11: Substring: Search \a B for substring matches of \a A. \n
1968 /// mask of the comparison results. \n
1969 /// 00: No effect. \n
1970 /// 01: Negate the bit mask. \n
1971 /// 10: No effect. \n
1973 /// to the size of \a A or \a B. \n
1995 /// A 128-bit integer vector containing one of the source operands to be
1998 /// A 128-bit integer vector containing one of the source operands to be
2001 /// An 8-bit immediate operand specifying whether the characters are bytes or
2002 /// words and the type of comparison to perform. \n
2003 /// Bits [1:0]: Determine source data format. \n
2004 /// 00: 16 unsigned bytes \n
2005 /// 01: 8 unsigned words \n
2006 /// 10: 16 signed bytes \n
2007 /// 11: 8 signed words \n
2008 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2010 /// the characters in \a A. \n
2012 /// basis is greater than or equal for even-indexed elements in \a A,
2013 /// and less than or equal for odd-indexed elements in \a A. \n
2015 /// \a B for equality. \n
2016 /// 11: Substring: Search \a B for substring matches of \a A. \n
2018 /// mask of the comparison results. \n
2019 /// 00: No effect. \n
2020 /// 01: Negate the bit mask. \n
2021 /// 10: No effect. \n
2045 /// A 128-bit integer vector containing one of the source operands to be
2048 /// An integer that specifies the length of the string in \a A.
2050 /// A 128-bit integer vector containing one of the source operands to be
2053 /// An integer that specifies the length of the string in \a B.
2055 /// An 8-bit immediate operand specifying whether the characters are bytes or
2056 /// words and the type of comparison to perform. \n
2057 /// Bits [1:0]: Determine source data format. \n
2058 /// 00: 16 unsigned bytes \n
2059 /// 01: 8 unsigned words \n
2060 /// 10: 16 signed bytes \n
2061 /// 11: 8 signed words \n
2062 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2064 /// the characters in \a A. \n
2066 /// basis is greater than or equal for even-indexed elements in \a A,
2067 /// and less than or equal for odd-indexed elements in \a A. \n
2069 /// \a B for equality. \n
2070 /// 11: Substring: Search \a B for substring matches of \a A. \n
2072 /// mask of the comparison results. \n
2073 /// 00: No effect. \n
2074 /// 01: Negate the bit mask. \n
2075 /// 10: No effect. \n
2087 /// \a A and \a B. Returns 1 if the resulting mask is non-zero, otherwise,
2100 /// A 128-bit integer vector containing one of the source operands to be
2103 /// An integer that specifies the length of the string in \a A.
2105 /// A 128-bit integer vector containing one of the source operands to be
2108 /// An integer that specifies the length of the string in \a B.
2110 /// An 8-bit immediate operand specifying whether the characters are bytes or
2111 /// words and the type of comparison to perform. \n
2112 /// Bits [1:0]: Determine source data format. \n
2113 /// 00: 16 unsigned bytes \n
2114 /// 01: 8 unsigned words \n
2115 /// 10: 16 signed bytes \n
2116 /// 11: 8 signed words \n
2117 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2119 /// the characters in \a A. \n
2121 /// basis is greater than or equal for even-indexed elements in \a A,
2122 /// and less than or equal for odd-indexed elements in \a A. \n
2124 /// \a B for equality. \n
2125 /// 11: Substring: Search \a B for substring matches of \a A. \n
2127 /// mask of the comparison results. \n
2128 /// 00: No effect. \n
2129 /// 01: Negate the bit mask. \n
2130 /// 10: No effect. \n
2132 /// to the size of \a A or \a B. \n
2133 /// \returns Returns 1 if the resulting mask is non-zero, otherwise, returns 0.
2153 /// A 128-bit integer vector containing one of the source operands to be
2156 /// An integer that specifies the length of the string in \a A.
2158 /// A 128-bit integer vector containing one of the source operands to be
2161 /// An integer that specifies the length of the string in \a B.
2163 /// An 8-bit immediate operand specifying whether the characters are bytes or
2164 /// words and the type of comparison to perform. \n
2165 /// Bits [1:0]: Determine source data format. \n
2166 /// 00: 16 unsigned bytes \n
2167 /// 01: 8 unsigned words \n
2168 /// 10: 16 signed bytes \n
2169 /// 11: 8 signed words \n
2170 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2172 /// the characters in \a A. \n
2174 /// basis is greater than or equal for even-indexed elements in \a A,
2175 /// and less than or equal for odd-indexed elements in \a A. \n
2177 /// \a B for equality. \n
2178 /// 11: Substring: Search \a B for substring matches of \a A. \n
2180 /// mask of the comparison results. \n
2181 /// 00: No effect. \n
2182 /// 01: Negate the bit mask. \n
2183 /// 10: No effect. \n
2207 /// A 128-bit integer vector containing one of the source operands to be
2210 /// An integer that specifies the length of the string in \a A.
2212 /// A 128-bit integer vector containing one of the source operands to be
2215 /// An integer that specifies the length of the string in \a B.
2217 /// An 8-bit immediate operand specifying whether the characters are bytes or
2218 /// words and the type of comparison to perform. \n
2219 /// Bits [1:0]: Determine source data format. \n
2220 /// 00: 16 unsigned bytes \n
2221 /// 01: 8 unsigned words \n
2222 /// 10: 16 signed bytes \n
2223 /// 11: 8 signed words \n
2224 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2226 /// the characters in \a A. \n
2228 /// basis is greater than or equal for even-indexed elements in \a A,
2229 /// and less than or equal for odd-indexed elements in \a A. \n
2231 /// \a B for equality. \n
2232 /// 11: Substring: Search \a B for substring matches of \a A. \n
2234 /// mask of the comparison results. \n
2235 /// 00: No effect. \n
2236 /// 01: Negate the bit mask. \n
2237 /// 10: No effect. \n
2239 /// to the size of \a A or \a B. \n
2261 /// A 128-bit integer vector containing one of the source operands to be
2264 /// An integer that specifies the length of the string in \a A.
2266 /// A 128-bit integer vector containing one of the source operands to be
2269 /// An integer that specifies the length of the string in \a B.
2271 /// An 8-bit immediate operand specifying whether the characters are bytes or
2272 /// words and the type of comparison to perform. \n
2273 /// Bits [1:0]: Determine source data format. \n
2274 /// 00: 16 unsigned bytes \n
2275 /// 01: 8 unsigned words \n
2276 /// 10: 16 signed bytes \n
2277 /// 11: 8 signed words \n
2278 /// Bits [3:2]: Determine comparison type and aggregation method. \n
2280 /// the characters in \a A. \n
2282 /// basis is greater than or equal for even-indexed elements in \a A,
2283 /// and less than or equal for odd-indexed elements in \a A. \n
2285 /// \a B for equality. \n
2286 /// 11: Substring: Search \a B for substring matches of \a A. \n
2288 /// mask of the comparison results. \n
2289 /// 00: No effect. \n
2290 /// 01: Negate the bit mask. \n
2291 /// 10: No effect. \n
2301 /* SSE4.2 Compare Packed Data -- Greater Than. */
2302 /// Compares each of the corresponding 64-bit values of the 128-bit
2303 /// integer vectors to determine if the values in the first operand are
2313 /// A 128-bit integer vector.
2315 /// A 128-bit integer vector.
2316 /// \returns A 128-bit integer vector containing the comparison results.