| Craig Topper | 880f60b | 2015-11-11 08:00:39 +0000 | [diff] [blame] | 1 | /*===---- avx512vldqintrin.h - AVX512VL and AVX512DQ intrinsics ------------=== | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 2 | * | 
|  | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy | 
|  | 4 | * of this software and associated documentation files (the "Software"), to deal | 
|  | 5 | * in the Software without restriction, including without limitation the rights | 
|  | 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
|  | 7 | * copies of the Software, and to permit persons to whom the Software is | 
|  | 8 | * furnished to do so, subject to the following conditions: | 
|  | 9 | * | 
|  | 10 | * The above copyright notice and this permission notice shall be included in | 
|  | 11 | * all copies or substantial portions of the Software. | 
|  | 12 | * | 
|  | 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
|  | 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|  | 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
|  | 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
|  | 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
|  | 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
|  | 19 | * THE SOFTWARE. | 
|  | 20 | * | 
|  | 21 | *===-----------------------------------------------------------------------=== | 
|  | 22 | */ | 
| Sean Silva | e4c3760 | 2015-09-12 02:55:19 +0000 | [diff] [blame] | 23 |  | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 24 | #ifndef __IMMINTRIN_H | 
|  | 25 | #error "Never use <avx512vldqintrin.h> directly; include <immintrin.h> instead." | 
|  | 26 | #endif | 
|  | 27 |  | 
|  | 28 | #ifndef __AVX512VLDQINTRIN_H | 
|  | 29 | #define __AVX512VLDQINTRIN_H | 
|  | 30 |  | 
| Eric Christopher | 4d185168 | 2015-06-17 07:09:20 +0000 | [diff] [blame] | 31 | /* Define the default attributes for the functions in this file. */ | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 32 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512dq"))) | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 33 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 34 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 35 | _mm256_mullo_epi64 (__m256i __A, __m256i __B) { | 
| Craig Topper | 6a77b62 | 2016-06-04 05:43:41 +0000 | [diff] [blame] | 36 | return (__m256i) ((__v4du) __A * (__v4du) __B); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 37 | } | 
|  | 38 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 39 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
| Craig Topper | f43e4a1 | 2016-09-03 19:19:49 +0000 | [diff] [blame] | 40 | _mm256_mask_mullo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | 
|  | 41 | return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, | 
|  | 42 | (__v4di)_mm256_mullo_epi64(__A, __B), | 
|  | 43 | (__v4di)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 44 | } | 
|  | 45 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 46 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
| Craig Topper | f43e4a1 | 2016-09-03 19:19:49 +0000 | [diff] [blame] | 47 | _mm256_maskz_mullo_epi64(__mmask8 __U, __m256i __A, __m256i __B) { | 
|  | 48 | return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, | 
|  | 49 | (__v4di)_mm256_mullo_epi64(__A, __B), | 
|  | 50 | (__v4di)_mm256_setzero_si256()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 51 | } | 
|  | 52 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 53 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 54 | _mm_mullo_epi64 (__m128i __A, __m128i __B) { | 
| Craig Topper | 6a77b62 | 2016-06-04 05:43:41 +0000 | [diff] [blame] | 55 | return (__m128i) ((__v2du) __A * (__v2du) __B); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 56 | } | 
|  | 57 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 58 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
| Craig Topper | f43e4a1 | 2016-09-03 19:19:49 +0000 | [diff] [blame] | 59 | _mm_mask_mullo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | 
|  | 60 | return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, | 
|  | 61 | (__v2di)_mm_mullo_epi64(__A, __B), | 
|  | 62 | (__v2di)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 63 | } | 
|  | 64 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 65 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
| Craig Topper | f43e4a1 | 2016-09-03 19:19:49 +0000 | [diff] [blame] | 66 | _mm_maskz_mullo_epi64(__mmask8 __U, __m128i __A, __m128i __B) { | 
|  | 67 | return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, | 
|  | 68 | (__v2di)_mm_mullo_epi64(__A, __B), | 
|  | 69 | (__v2di)_mm_setzero_si128()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 70 | } | 
|  | 71 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 72 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 73 | _mm256_mask_andnot_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 74 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 75 | (__v4df)_mm256_andnot_pd(__A, __B), | 
|  | 76 | (__v4df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 77 | } | 
|  | 78 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 79 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 80 | _mm256_maskz_andnot_pd(__mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 81 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 82 | (__v4df)_mm256_andnot_pd(__A, __B), | 
|  | 83 | (__v4df)_mm256_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 84 | } | 
|  | 85 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 86 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 87 | _mm_mask_andnot_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 88 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 89 | (__v2df)_mm_andnot_pd(__A, __B), | 
|  | 90 | (__v2df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 91 | } | 
|  | 92 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 93 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 94 | _mm_maskz_andnot_pd(__mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 95 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 96 | (__v2df)_mm_andnot_pd(__A, __B), | 
|  | 97 | (__v2df)_mm_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 98 | } | 
|  | 99 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 100 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 101 | _mm256_mask_andnot_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 102 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 103 | (__v8sf)_mm256_andnot_ps(__A, __B), | 
|  | 104 | (__v8sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 105 | } | 
|  | 106 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 107 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 108 | _mm256_maskz_andnot_ps(__mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 109 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 110 | (__v8sf)_mm256_andnot_ps(__A, __B), | 
|  | 111 | (__v8sf)_mm256_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 112 | } | 
|  | 113 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 114 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 115 | _mm_mask_andnot_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 116 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 117 | (__v4sf)_mm_andnot_ps(__A, __B), | 
|  | 118 | (__v4sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 119 | } | 
|  | 120 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 121 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 122 | _mm_maskz_andnot_ps(__mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 123 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 124 | (__v4sf)_mm_andnot_ps(__A, __B), | 
|  | 125 | (__v4sf)_mm_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 126 | } | 
|  | 127 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 128 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 129 | _mm256_mask_and_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 130 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 131 | (__v4df)_mm256_and_pd(__A, __B), | 
|  | 132 | (__v4df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 133 | } | 
|  | 134 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 135 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 136 | _mm256_maskz_and_pd(__mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 137 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 138 | (__v4df)_mm256_and_pd(__A, __B), | 
|  | 139 | (__v4df)_mm256_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 140 | } | 
|  | 141 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 142 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 143 | _mm_mask_and_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 144 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 145 | (__v2df)_mm_and_pd(__A, __B), | 
|  | 146 | (__v2df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 147 | } | 
|  | 148 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 149 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 150 | _mm_maskz_and_pd(__mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 151 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 152 | (__v2df)_mm_and_pd(__A, __B), | 
|  | 153 | (__v2df)_mm_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 154 | } | 
|  | 155 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 156 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 157 | _mm256_mask_and_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 158 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 159 | (__v8sf)_mm256_and_ps(__A, __B), | 
|  | 160 | (__v8sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 161 | } | 
|  | 162 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 163 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 164 | _mm256_maskz_and_ps(__mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 165 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 166 | (__v8sf)_mm256_and_ps(__A, __B), | 
|  | 167 | (__v8sf)_mm256_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 168 | } | 
|  | 169 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 170 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 171 | _mm_mask_and_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 172 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 173 | (__v4sf)_mm_and_ps(__A, __B), | 
|  | 174 | (__v4sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 175 | } | 
|  | 176 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 177 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 178 | _mm_maskz_and_ps(__mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 179 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 180 | (__v4sf)_mm_and_ps(__A, __B), | 
|  | 181 | (__v4sf)_mm_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 182 | } | 
|  | 183 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 184 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 185 | _mm256_mask_xor_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 186 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 187 | (__v4df)_mm256_xor_pd(__A, __B), | 
|  | 188 | (__v4df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 189 | } | 
|  | 190 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 191 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 192 | _mm256_maskz_xor_pd(__mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 193 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 194 | (__v4df)_mm256_xor_pd(__A, __B), | 
|  | 195 | (__v4df)_mm256_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 196 | } | 
|  | 197 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 198 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 199 | _mm_mask_xor_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 200 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 201 | (__v2df)_mm_xor_pd(__A, __B), | 
|  | 202 | (__v2df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 203 | } | 
|  | 204 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 205 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 206 | _mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) { | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 207 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 208 | (__v2df)_mm_xor_pd(__A, __B), | 
|  | 209 | (__v2df)_mm_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 210 | } | 
|  | 211 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 212 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 213 | _mm256_mask_xor_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 214 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 215 | (__v8sf)_mm256_xor_ps(__A, __B), | 
|  | 216 | (__v8sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 217 | } | 
|  | 218 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 219 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 220 | _mm256_maskz_xor_ps(__mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 221 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 222 | (__v8sf)_mm256_xor_ps(__A, __B), | 
|  | 223 | (__v8sf)_mm256_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 224 | } | 
|  | 225 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 226 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 227 | _mm_mask_xor_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 228 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 229 | (__v4sf)_mm_xor_ps(__A, __B), | 
|  | 230 | (__v4sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 231 | } | 
|  | 232 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 233 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 234 | _mm_maskz_xor_ps(__mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 235 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 236 | (__v4sf)_mm_xor_ps(__A, __B), | 
|  | 237 | (__v4sf)_mm_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 238 | } | 
|  | 239 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 240 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 241 | _mm256_mask_or_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 242 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 243 | (__v4df)_mm256_or_pd(__A, __B), | 
|  | 244 | (__v4df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 245 | } | 
|  | 246 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 247 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 248 | _mm256_maskz_or_pd(__mmask8 __U, __m256d __A, __m256d __B) { | 
|  | 249 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 250 | (__v4df)_mm256_or_pd(__A, __B), | 
|  | 251 | (__v4df)_mm256_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 252 | } | 
|  | 253 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 254 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 255 | _mm_mask_or_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 256 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 257 | (__v2df)_mm_or_pd(__A, __B), | 
|  | 258 | (__v2df)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 259 | } | 
|  | 260 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 261 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 262 | _mm_maskz_or_pd(__mmask8 __U, __m128d __A, __m128d __B) { | 
|  | 263 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 264 | (__v2df)_mm_or_pd(__A, __B), | 
|  | 265 | (__v2df)_mm_setzero_pd()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 266 | } | 
|  | 267 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 268 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 269 | _mm256_mask_or_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 270 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 271 | (__v8sf)_mm256_or_ps(__A, __B), | 
|  | 272 | (__v8sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 273 | } | 
|  | 274 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 275 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 276 | _mm256_maskz_or_ps(__mmask8 __U, __m256 __A, __m256 __B) { | 
|  | 277 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__U, | 
|  | 278 | (__v8sf)_mm256_or_ps(__A, __B), | 
|  | 279 | (__v8sf)_mm256_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 280 | } | 
|  | 281 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 282 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 283 | _mm_mask_or_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 284 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 285 | (__v4sf)_mm_or_ps(__A, __B), | 
|  | 286 | (__v4sf)__W); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 287 | } | 
|  | 288 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 289 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
| Craig Topper | a815f48 | 2016-08-31 05:38:58 +0000 | [diff] [blame] | 290 | _mm_maskz_or_ps(__mmask8 __U, __m128 __A, __m128 __B) { | 
|  | 291 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | 
|  | 292 | (__v4sf)_mm_or_ps(__A, __B), | 
|  | 293 | (__v4sf)_mm_setzero_ps()); | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 294 | } | 
|  | 295 |  | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 296 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 297 | _mm_cvtpd_epi64 (__m128d __A) { | 
|  | 298 | return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A, | 
|  | 299 | (__v2di) _mm_setzero_si128(), | 
|  | 300 | (__mmask8) -1); | 
|  | 301 | } | 
|  | 302 |  | 
|  | 303 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 304 | _mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) { | 
|  | 305 | return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A, | 
|  | 306 | (__v2di) __W, | 
|  | 307 | (__mmask8) __U); | 
|  | 308 | } | 
|  | 309 |  | 
|  | 310 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 311 | _mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A) { | 
|  | 312 | return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A, | 
|  | 313 | (__v2di) _mm_setzero_si128(), | 
|  | 314 | (__mmask8) __U); | 
|  | 315 | } | 
|  | 316 |  | 
|  | 317 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 318 | _mm256_cvtpd_epi64 (__m256d __A) { | 
|  | 319 | return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A, | 
|  | 320 | (__v4di) _mm256_setzero_si256(), | 
|  | 321 | (__mmask8) -1); | 
|  | 322 | } | 
|  | 323 |  | 
|  | 324 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 325 | _mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) { | 
|  | 326 | return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A, | 
|  | 327 | (__v4di) __W, | 
|  | 328 | (__mmask8) __U); | 
|  | 329 | } | 
|  | 330 |  | 
|  | 331 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 332 | _mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A) { | 
|  | 333 | return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A, | 
|  | 334 | (__v4di) _mm256_setzero_si256(), | 
|  | 335 | (__mmask8) __U); | 
|  | 336 | } | 
|  | 337 |  | 
|  | 338 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 339 | _mm_cvtpd_epu64 (__m128d __A) { | 
|  | 340 | return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A, | 
|  | 341 | (__v2di) _mm_setzero_si128(), | 
|  | 342 | (__mmask8) -1); | 
|  | 343 | } | 
|  | 344 |  | 
|  | 345 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 346 | _mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) { | 
|  | 347 | return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A, | 
|  | 348 | (__v2di) __W, | 
|  | 349 | (__mmask8) __U); | 
|  | 350 | } | 
|  | 351 |  | 
|  | 352 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 353 | _mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A) { | 
|  | 354 | return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A, | 
|  | 355 | (__v2di) _mm_setzero_si128(), | 
|  | 356 | (__mmask8) __U); | 
|  | 357 | } | 
|  | 358 |  | 
|  | 359 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 360 | _mm256_cvtpd_epu64 (__m256d __A) { | 
|  | 361 | return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A, | 
|  | 362 | (__v4di) _mm256_setzero_si256(), | 
|  | 363 | (__mmask8) -1); | 
|  | 364 | } | 
|  | 365 |  | 
|  | 366 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 367 | _mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) { | 
|  | 368 | return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A, | 
|  | 369 | (__v4di) __W, | 
|  | 370 | (__mmask8) __U); | 
|  | 371 | } | 
|  | 372 |  | 
|  | 373 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 374 | _mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A) { | 
|  | 375 | return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A, | 
|  | 376 | (__v4di) _mm256_setzero_si256(), | 
|  | 377 | (__mmask8) __U); | 
|  | 378 | } | 
|  | 379 |  | 
|  | 380 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 381 | _mm_cvtps_epi64 (__m128 __A) { | 
|  | 382 | return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A, | 
|  | 383 | (__v2di) _mm_setzero_si128(), | 
|  | 384 | (__mmask8) -1); | 
|  | 385 | } | 
|  | 386 |  | 
|  | 387 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 388 | _mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) { | 
|  | 389 | return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A, | 
|  | 390 | (__v2di) __W, | 
|  | 391 | (__mmask8) __U); | 
|  | 392 | } | 
|  | 393 |  | 
|  | 394 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 395 | _mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) { | 
|  | 396 | return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A, | 
|  | 397 | (__v2di) _mm_setzero_si128(), | 
|  | 398 | (__mmask8) __U); | 
|  | 399 | } | 
|  | 400 |  | 
|  | 401 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 402 | _mm256_cvtps_epi64 (__m128 __A) { | 
|  | 403 | return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A, | 
|  | 404 | (__v4di) _mm256_setzero_si256(), | 
|  | 405 | (__mmask8) -1); | 
|  | 406 | } | 
|  | 407 |  | 
|  | 408 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 409 | _mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) { | 
|  | 410 | return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A, | 
|  | 411 | (__v4di) __W, | 
|  | 412 | (__mmask8) __U); | 
|  | 413 | } | 
|  | 414 |  | 
|  | 415 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 416 | _mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) { | 
|  | 417 | return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A, | 
|  | 418 | (__v4di) _mm256_setzero_si256(), | 
|  | 419 | (__mmask8) __U); | 
|  | 420 | } | 
|  | 421 |  | 
|  | 422 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 423 | _mm_cvtps_epu64 (__m128 __A) { | 
|  | 424 | return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A, | 
|  | 425 | (__v2di) _mm_setzero_si128(), | 
|  | 426 | (__mmask8) -1); | 
|  | 427 | } | 
|  | 428 |  | 
|  | 429 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 430 | _mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) { | 
|  | 431 | return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A, | 
|  | 432 | (__v2di) __W, | 
|  | 433 | (__mmask8) __U); | 
|  | 434 | } | 
|  | 435 |  | 
|  | 436 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 437 | _mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) { | 
|  | 438 | return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A, | 
|  | 439 | (__v2di) _mm_setzero_si128(), | 
|  | 440 | (__mmask8) __U); | 
|  | 441 | } | 
|  | 442 |  | 
|  | 443 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 444 | _mm256_cvtps_epu64 (__m128 __A) { | 
|  | 445 | return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A, | 
|  | 446 | (__v4di) _mm256_setzero_si256(), | 
|  | 447 | (__mmask8) -1); | 
|  | 448 | } | 
|  | 449 |  | 
|  | 450 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 451 | _mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) { | 
|  | 452 | return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A, | 
|  | 453 | (__v4di) __W, | 
|  | 454 | (__mmask8) __U); | 
|  | 455 | } | 
|  | 456 |  | 
|  | 457 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 458 | _mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) { | 
|  | 459 | return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A, | 
|  | 460 | (__v4di) _mm256_setzero_si256(), | 
|  | 461 | (__mmask8) __U); | 
|  | 462 | } | 
|  | 463 |  | 
|  | 464 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 465 | _mm_cvtepi64_pd (__m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 466 | return (__m128d)__builtin_convertvector((__v2di)__A, __v2df); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 467 | } | 
|  | 468 |  | 
|  | 469 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 470 | _mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 471 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 472 | (__v2df)_mm_cvtepi64_pd(__A), | 
|  | 473 | (__v2df)__W); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 474 | } | 
|  | 475 |  | 
|  | 476 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 477 | _mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 478 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 479 | (__v2df)_mm_cvtepi64_pd(__A), | 
|  | 480 | (__v2df)_mm_setzero_pd()); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 481 | } | 
|  | 482 |  | 
|  | 483 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 484 | _mm256_cvtepi64_pd (__m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 485 | return (__m256d)__builtin_convertvector((__v4di)__A, __v4df); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 486 | } | 
|  | 487 |  | 
|  | 488 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 489 | _mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 490 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 491 | (__v4df)_mm256_cvtepi64_pd(__A), | 
|  | 492 | (__v4df)__W); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 493 | } | 
|  | 494 |  | 
|  | 495 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 496 | _mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 497 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 498 | (__v4df)_mm256_cvtepi64_pd(__A), | 
|  | 499 | (__v4df)_mm256_setzero_pd()); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 500 | } | 
|  | 501 |  | 
|  | 502 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 503 | _mm_cvtepi64_ps (__m128i __A) { | 
|  | 504 | return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A, | 
|  | 505 | (__v4sf) _mm_setzero_ps(), | 
|  | 506 | (__mmask8) -1); | 
|  | 507 | } | 
|  | 508 |  | 
|  | 509 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 510 | _mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A) { | 
|  | 511 | return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A, | 
|  | 512 | (__v4sf) __W, | 
|  | 513 | (__mmask8) __U); | 
|  | 514 | } | 
|  | 515 |  | 
|  | 516 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 517 | _mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) { | 
|  | 518 | return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A, | 
|  | 519 | (__v4sf) _mm_setzero_ps(), | 
|  | 520 | (__mmask8) __U); | 
|  | 521 | } | 
|  | 522 |  | 
|  | 523 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 524 | _mm256_cvtepi64_ps (__m256i __A) { | 
|  | 525 | return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A, | 
|  | 526 | (__v4sf) _mm_setzero_ps(), | 
|  | 527 | (__mmask8) -1); | 
|  | 528 | } | 
|  | 529 |  | 
|  | 530 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 531 | _mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) { | 
|  | 532 | return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A, | 
|  | 533 | (__v4sf) __W, | 
|  | 534 | (__mmask8) __U); | 
|  | 535 | } | 
|  | 536 |  | 
|  | 537 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 538 | _mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) { | 
|  | 539 | return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A, | 
|  | 540 | (__v4sf) _mm_setzero_ps(), | 
|  | 541 | (__mmask8) __U); | 
|  | 542 | } | 
|  | 543 |  | 
|  | 544 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 545 | _mm_cvttpd_epi64 (__m128d __A) { | 
|  | 546 | return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A, | 
|  | 547 | (__v2di) _mm_setzero_si128(), | 
|  | 548 | (__mmask8) -1); | 
|  | 549 | } | 
|  | 550 |  | 
|  | 551 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 552 | _mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) { | 
|  | 553 | return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A, | 
|  | 554 | (__v2di) __W, | 
|  | 555 | (__mmask8) __U); | 
|  | 556 | } | 
|  | 557 |  | 
|  | 558 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 559 | _mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A) { | 
|  | 560 | return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A, | 
|  | 561 | (__v2di) _mm_setzero_si128(), | 
|  | 562 | (__mmask8) __U); | 
|  | 563 | } | 
|  | 564 |  | 
|  | 565 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 566 | _mm256_cvttpd_epi64 (__m256d __A) { | 
|  | 567 | return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A, | 
|  | 568 | (__v4di) _mm256_setzero_si256(), | 
|  | 569 | (__mmask8) -1); | 
|  | 570 | } | 
|  | 571 |  | 
|  | 572 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 573 | _mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) { | 
|  | 574 | return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A, | 
|  | 575 | (__v4di) __W, | 
|  | 576 | (__mmask8) __U); | 
|  | 577 | } | 
|  | 578 |  | 
|  | 579 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 580 | _mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A) { | 
|  | 581 | return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A, | 
|  | 582 | (__v4di) _mm256_setzero_si256(), | 
|  | 583 | (__mmask8) __U); | 
|  | 584 | } | 
|  | 585 |  | 
|  | 586 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 587 | _mm_cvttpd_epu64 (__m128d __A) { | 
|  | 588 | return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A, | 
|  | 589 | (__v2di) _mm_setzero_si128(), | 
|  | 590 | (__mmask8) -1); | 
|  | 591 | } | 
|  | 592 |  | 
|  | 593 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 594 | _mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) { | 
|  | 595 | return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A, | 
|  | 596 | (__v2di) __W, | 
|  | 597 | (__mmask8) __U); | 
|  | 598 | } | 
|  | 599 |  | 
|  | 600 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 601 | _mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A) { | 
|  | 602 | return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A, | 
|  | 603 | (__v2di) _mm_setzero_si128(), | 
|  | 604 | (__mmask8) __U); | 
|  | 605 | } | 
|  | 606 |  | 
|  | 607 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 608 | _mm256_cvttpd_epu64 (__m256d __A) { | 
|  | 609 | return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A, | 
|  | 610 | (__v4di) _mm256_setzero_si256(), | 
|  | 611 | (__mmask8) -1); | 
|  | 612 | } | 
|  | 613 |  | 
|  | 614 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 615 | _mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) { | 
|  | 616 | return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A, | 
|  | 617 | (__v4di) __W, | 
|  | 618 | (__mmask8) __U); | 
|  | 619 | } | 
|  | 620 |  | 
|  | 621 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 622 | _mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A) { | 
|  | 623 | return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A, | 
|  | 624 | (__v4di) _mm256_setzero_si256(), | 
|  | 625 | (__mmask8) __U); | 
|  | 626 | } | 
|  | 627 |  | 
|  | 628 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 629 | _mm_cvttps_epi64 (__m128 __A) { | 
|  | 630 | return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A, | 
|  | 631 | (__v2di) _mm_setzero_si128(), | 
|  | 632 | (__mmask8) -1); | 
|  | 633 | } | 
|  | 634 |  | 
|  | 635 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 636 | _mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) { | 
|  | 637 | return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A, | 
|  | 638 | (__v2di) __W, | 
|  | 639 | (__mmask8) __U); | 
|  | 640 | } | 
|  | 641 |  | 
|  | 642 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 643 | _mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) { | 
|  | 644 | return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A, | 
|  | 645 | (__v2di) _mm_setzero_si128(), | 
|  | 646 | (__mmask8) __U); | 
|  | 647 | } | 
|  | 648 |  | 
|  | 649 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 650 | _mm256_cvttps_epi64 (__m128 __A) { | 
|  | 651 | return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A, | 
|  | 652 | (__v4di) _mm256_setzero_si256(), | 
|  | 653 | (__mmask8) -1); | 
|  | 654 | } | 
|  | 655 |  | 
|  | 656 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 657 | _mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) { | 
|  | 658 | return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A, | 
|  | 659 | (__v4di) __W, | 
|  | 660 | (__mmask8) __U); | 
|  | 661 | } | 
|  | 662 |  | 
|  | 663 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 664 | _mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) { | 
|  | 665 | return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A, | 
|  | 666 | (__v4di) _mm256_setzero_si256(), | 
|  | 667 | (__mmask8) __U); | 
|  | 668 | } | 
|  | 669 |  | 
|  | 670 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 671 | _mm_cvttps_epu64 (__m128 __A) { | 
|  | 672 | return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A, | 
|  | 673 | (__v2di) _mm_setzero_si128(), | 
|  | 674 | (__mmask8) -1); | 
|  | 675 | } | 
|  | 676 |  | 
|  | 677 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 678 | _mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) { | 
|  | 679 | return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A, | 
|  | 680 | (__v2di) __W, | 
|  | 681 | (__mmask8) __U); | 
|  | 682 | } | 
|  | 683 |  | 
|  | 684 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 685 | _mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) { | 
|  | 686 | return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A, | 
|  | 687 | (__v2di) _mm_setzero_si128(), | 
|  | 688 | (__mmask8) __U); | 
|  | 689 | } | 
|  | 690 |  | 
|  | 691 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 692 | _mm256_cvttps_epu64 (__m128 __A) { | 
|  | 693 | return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A, | 
|  | 694 | (__v4di) _mm256_setzero_si256(), | 
|  | 695 | (__mmask8) -1); | 
|  | 696 | } | 
|  | 697 |  | 
|  | 698 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 699 | _mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) { | 
|  | 700 | return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A, | 
|  | 701 | (__v4di) __W, | 
|  | 702 | (__mmask8) __U); | 
|  | 703 | } | 
|  | 704 |  | 
|  | 705 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 706 | _mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) { | 
|  | 707 | return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A, | 
|  | 708 | (__v4di) _mm256_setzero_si256(), | 
|  | 709 | (__mmask8) __U); | 
|  | 710 | } | 
|  | 711 |  | 
|  | 712 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 713 | _mm_cvtepu64_pd (__m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 714 | return (__m128d)__builtin_convertvector((__v2du)__A, __v2df); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 715 | } | 
|  | 716 |  | 
|  | 717 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 718 | _mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 719 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 720 | (__v2df)_mm_cvtepu64_pd(__A), | 
|  | 721 | (__v2df)__W); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 722 | } | 
|  | 723 |  | 
|  | 724 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 
|  | 725 | _mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 726 | return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U, | 
|  | 727 | (__v2df)_mm_cvtepu64_pd(__A), | 
|  | 728 | (__v2df)_mm_setzero_pd()); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 729 | } | 
|  | 730 |  | 
|  | 731 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 732 | _mm256_cvtepu64_pd (__m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 733 | return (__m256d)__builtin_convertvector((__v4du)__A, __v4df); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 734 | } | 
|  | 735 |  | 
|  | 736 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 737 | _mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 738 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 739 | (__v4df)_mm256_cvtepu64_pd(__A), | 
|  | 740 | (__v4df)__W); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 741 | } | 
|  | 742 |  | 
|  | 743 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 744 | _mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) { | 
| Craig Topper | 842171d | 2018-05-21 20:19:17 +0000 | [diff] [blame] | 745 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U, | 
|  | 746 | (__v4df)_mm256_cvtepu64_pd(__A), | 
|  | 747 | (__v4df)_mm256_setzero_pd()); | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 748 | } | 
|  | 749 |  | 
|  | 750 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 751 | _mm_cvtepu64_ps (__m128i __A) { | 
|  | 752 | return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A, | 
|  | 753 | (__v4sf) _mm_setzero_ps(), | 
|  | 754 | (__mmask8) -1); | 
|  | 755 | } | 
|  | 756 |  | 
|  | 757 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 758 | _mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A) { | 
|  | 759 | return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A, | 
|  | 760 | (__v4sf) __W, | 
|  | 761 | (__mmask8) __U); | 
|  | 762 | } | 
|  | 763 |  | 
|  | 764 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 765 | _mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) { | 
|  | 766 | return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A, | 
|  | 767 | (__v4sf) _mm_setzero_ps(), | 
|  | 768 | (__mmask8) __U); | 
|  | 769 | } | 
|  | 770 |  | 
|  | 771 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 772 | _mm256_cvtepu64_ps (__m256i __A) { | 
|  | 773 | return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A, | 
|  | 774 | (__v4sf) _mm_setzero_ps(), | 
|  | 775 | (__mmask8) -1); | 
|  | 776 | } | 
|  | 777 |  | 
|  | 778 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 779 | _mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) { | 
|  | 780 | return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A, | 
|  | 781 | (__v4sf) __W, | 
|  | 782 | (__mmask8) __U); | 
|  | 783 | } | 
|  | 784 |  | 
|  | 785 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 
|  | 786 | _mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) { | 
|  | 787 | return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A, | 
|  | 788 | (__v4sf) _mm_setzero_ps(), | 
|  | 789 | (__mmask8) __U); | 
|  | 790 | } | 
|  | 791 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 792 | #define _mm_range_pd(A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 793 | (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \ | 
|  | 794 | (__v2df)(__m128d)(B), (int)(C), \ | 
|  | 795 | (__v2df)_mm_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 796 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 797 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 798 | #define _mm_mask_range_pd(W, U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 799 | (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \ | 
|  | 800 | (__v2df)(__m128d)(B), (int)(C), \ | 
|  | 801 | (__v2df)(__m128d)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 802 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 803 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 804 | #define _mm_maskz_range_pd(U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 805 | (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \ | 
|  | 806 | (__v2df)(__m128d)(B), (int)(C), \ | 
|  | 807 | (__v2df)_mm_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 808 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 809 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 810 | #define _mm256_range_pd(A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 811 | (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \ | 
|  | 812 | (__v4df)(__m256d)(B), (int)(C), \ | 
|  | 813 | (__v4df)_mm256_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 814 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 815 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 816 | #define _mm256_mask_range_pd(W, U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 817 | (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \ | 
|  | 818 | (__v4df)(__m256d)(B), (int)(C), \ | 
|  | 819 | (__v4df)(__m256d)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 820 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 821 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 822 | #define _mm256_maskz_range_pd(U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 823 | (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \ | 
|  | 824 | (__v4df)(__m256d)(B), (int)(C), \ | 
|  | 825 | (__v4df)_mm256_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 826 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 827 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 828 | #define _mm_range_ps(A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 829 | (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \ | 
|  | 830 | (__v4sf)(__m128)(B), (int)(C), \ | 
|  | 831 | (__v4sf)_mm_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 832 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 833 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 834 | #define _mm_mask_range_ps(W, U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 835 | (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \ | 
|  | 836 | (__v4sf)(__m128)(B), (int)(C), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 837 | (__v4sf)(__m128)(W), (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 838 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 839 | #define _mm_maskz_range_ps(U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 840 | (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \ | 
|  | 841 | (__v4sf)(__m128)(B), (int)(C), \ | 
|  | 842 | (__v4sf)_mm_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 843 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 844 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 845 | #define _mm256_range_ps(A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 846 | (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \ | 
|  | 847 | (__v8sf)(__m256)(B), (int)(C), \ | 
|  | 848 | (__v8sf)_mm256_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 849 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 850 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 851 | #define _mm256_mask_range_ps(W, U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 852 | (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \ | 
|  | 853 | (__v8sf)(__m256)(B), (int)(C), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 854 | (__v8sf)(__m256)(W), (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 855 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 856 | #define _mm256_maskz_range_ps(U, A, B, C) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 857 | (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \ | 
|  | 858 | (__v8sf)(__m256)(B), (int)(C), \ | 
|  | 859 | (__v8sf)_mm256_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 860 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 861 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 862 | #define _mm_reduce_pd(A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 863 | (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \ | 
|  | 864 | (__v2df)_mm_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 865 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 866 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 867 | #define _mm_mask_reduce_pd(W, U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 868 | (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \ | 
|  | 869 | (__v2df)(__m128d)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 870 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 871 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 872 | #define _mm_maskz_reduce_pd(U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 873 | (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \ | 
|  | 874 | (__v2df)_mm_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 875 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 876 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 877 | #define _mm256_reduce_pd(A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 878 | (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \ | 
|  | 879 | (__v4df)_mm256_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 880 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 881 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 882 | #define _mm256_mask_reduce_pd(W, U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 883 | (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \ | 
|  | 884 | (__v4df)(__m256d)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 885 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 886 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 887 | #define _mm256_maskz_reduce_pd(U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 888 | (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \ | 
|  | 889 | (__v4df)_mm256_setzero_pd(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 890 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 891 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 892 | #define _mm_reduce_ps(A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 893 | (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \ | 
|  | 894 | (__v4sf)_mm_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 895 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 896 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 897 | #define _mm_mask_reduce_ps(W, U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 898 | (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \ | 
|  | 899 | (__v4sf)(__m128)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 900 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 901 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 902 | #define _mm_maskz_reduce_ps(U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 903 | (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \ | 
|  | 904 | (__v4sf)_mm_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 905 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 906 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 907 | #define _mm256_reduce_ps(A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 908 | (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \ | 
|  | 909 | (__v8sf)_mm256_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 910 | (__mmask8)-1) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 911 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 912 | #define _mm256_mask_reduce_ps(W, U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 913 | (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \ | 
|  | 914 | (__v8sf)(__m256)(W), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 915 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 916 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 917 | #define _mm256_maskz_reduce_ps(U, A, B) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 918 | (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \ | 
|  | 919 | (__v8sf)_mm256_setzero_ps(), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 920 | (__mmask8)(U)) | 
| Asaf Badouh | 73b639f | 2015-08-02 12:43:08 +0000 | [diff] [blame] | 921 |  | 
| Michael Zuckerman | 074edd7 | 2016-04-13 10:49:37 +0000 | [diff] [blame] | 922 | static __inline__ __mmask8 __DEFAULT_FN_ATTRS | 
|  | 923 | _mm_movepi32_mask (__m128i __A) | 
|  | 924 | { | 
|  | 925 | return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A); | 
|  | 926 | } | 
|  | 927 |  | 
|  | 928 | static __inline__ __mmask8 __DEFAULT_FN_ATTRS | 
|  | 929 | _mm256_movepi32_mask (__m256i __A) | 
|  | 930 | { | 
|  | 931 | return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A); | 
|  | 932 | } | 
|  | 933 |  | 
|  | 934 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 935 | _mm_movm_epi32 (__mmask8 __A) | 
|  | 936 | { | 
|  | 937 | return (__m128i) __builtin_ia32_cvtmask2d128 (__A); | 
|  | 938 | } | 
|  | 939 |  | 
|  | 940 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 941 | _mm256_movm_epi32 (__mmask8 __A) | 
|  | 942 | { | 
|  | 943 | return (__m256i) __builtin_ia32_cvtmask2d256 (__A); | 
|  | 944 | } | 
|  | 945 |  | 
|  | 946 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 947 | _mm_movm_epi64 (__mmask8 __A) | 
|  | 948 | { | 
|  | 949 | return (__m128i) __builtin_ia32_cvtmask2q128 (__A); | 
|  | 950 | } | 
|  | 951 |  | 
|  | 952 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 953 | _mm256_movm_epi64 (__mmask8 __A) | 
|  | 954 | { | 
|  | 955 | return (__m256i) __builtin_ia32_cvtmask2q256 (__A); | 
|  | 956 | } | 
|  | 957 |  | 
|  | 958 | static __inline__ __mmask8 __DEFAULT_FN_ATTRS | 
|  | 959 | _mm_movepi64_mask (__m128i __A) | 
|  | 960 | { | 
|  | 961 | return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A); | 
|  | 962 | } | 
|  | 963 |  | 
|  | 964 | static __inline__ __mmask8 __DEFAULT_FN_ATTRS | 
|  | 965 | _mm256_movepi64_mask (__m256i __A) | 
|  | 966 | { | 
|  | 967 | return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A); | 
|  | 968 | } | 
|  | 969 |  | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 970 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
|  | 971 | _mm256_broadcast_f32x2 (__m128 __A) | 
|  | 972 | { | 
| Craig Topper | 95ed88a | 2018-06-04 19:28:09 +0000 | [diff] [blame] | 973 | return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A, | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 974 | 0, 1, 0, 1, 0, 1, 0, 1); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 975 | } | 
|  | 976 |  | 
|  | 977 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
|  | 978 | _mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A) | 
|  | 979 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 980 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__M, | 
|  | 981 | (__v8sf)_mm256_broadcast_f32x2(__A), | 
|  | 982 | (__v8sf)__O); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 983 | } | 
|  | 984 |  | 
|  | 985 | static __inline__ __m256 __DEFAULT_FN_ATTRS | 
|  | 986 | _mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A) | 
|  | 987 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 988 | return (__m256)__builtin_ia32_selectps_256((__mmask8)__M, | 
|  | 989 | (__v8sf)_mm256_broadcast_f32x2(__A), | 
|  | 990 | (__v8sf)_mm256_setzero_ps()); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 991 | } | 
|  | 992 |  | 
|  | 993 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 994 | _mm256_broadcast_f64x2(__m128d __A) | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 995 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 996 | return (__m256d)__builtin_shufflevector((__v2df)__A, (__v2df)__A, | 
|  | 997 | 0, 1, 0, 1); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 998 | } | 
|  | 999 |  | 
|  | 1000 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1001 | _mm256_mask_broadcast_f64x2(__m256d __O, __mmask8 __M, __m128d __A) | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1002 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1003 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M, | 
|  | 1004 | (__v4df)_mm256_broadcast_f64x2(__A), | 
|  | 1005 | (__v4df)__O); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1006 | } | 
|  | 1007 |  | 
|  | 1008 | static __inline__ __m256d __DEFAULT_FN_ATTRS | 
|  | 1009 | _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A) | 
|  | 1010 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1011 | return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M, | 
|  | 1012 | (__v4df)_mm256_broadcast_f64x2(__A), | 
|  | 1013 | (__v4df)_mm256_setzero_pd()); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1014 | } | 
|  | 1015 |  | 
|  | 1016 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 1017 | _mm_broadcast_i32x2 (__m128i __A) | 
|  | 1018 | { | 
| Craig Topper | 95ed88a | 2018-06-04 19:28:09 +0000 | [diff] [blame] | 1019 | return (__m128i)__builtin_shufflevector((__v4si)__A, (__v4si)__A, | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1020 | 0, 1, 0, 1); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1021 | } | 
|  | 1022 |  | 
|  | 1023 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 1024 | _mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A) | 
|  | 1025 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1026 | return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M, | 
|  | 1027 | (__v4si)_mm_broadcast_i32x2(__A), | 
|  | 1028 | (__v4si)__O); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1029 | } | 
|  | 1030 |  | 
|  | 1031 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 
|  | 1032 | _mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A) | 
|  | 1033 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1034 | return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M, | 
|  | 1035 | (__v4si)_mm_broadcast_i32x2(__A), | 
|  | 1036 | (__v4si)_mm_setzero_si128()); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1037 | } | 
|  | 1038 |  | 
|  | 1039 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 1040 | _mm256_broadcast_i32x2 (__m128i __A) | 
|  | 1041 | { | 
| Craig Topper | 95ed88a | 2018-06-04 19:28:09 +0000 | [diff] [blame] | 1042 | return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A, | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1043 | 0, 1, 0, 1, 0, 1, 0, 1); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1044 | } | 
|  | 1045 |  | 
|  | 1046 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 1047 | _mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A) | 
|  | 1048 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1049 | return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M, | 
|  | 1050 | (__v8si)_mm256_broadcast_i32x2(__A), | 
|  | 1051 | (__v8si)__O); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1052 | } | 
|  | 1053 |  | 
|  | 1054 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 1055 | _mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A) | 
|  | 1056 | { | 
| Craig Topper | 5ece4cf | 2017-08-30 16:15:12 +0000 | [diff] [blame] | 1057 | return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M, | 
|  | 1058 | (__v8si)_mm256_broadcast_i32x2(__A), | 
|  | 1059 | (__v8si)_mm256_setzero_si256()); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1060 | } | 
|  | 1061 |  | 
|  | 1062 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1063 | _mm256_broadcast_i64x2(__m128i __A) | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1064 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1065 | return (__m256i)__builtin_shufflevector((__v2di)__A, (__v2di)__A, | 
|  | 1066 | 0, 1, 0, 1); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1067 | } | 
|  | 1068 |  | 
|  | 1069 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1070 | _mm256_mask_broadcast_i64x2(__m256i __O, __mmask8 __M, __m128i __A) | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1071 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1072 | return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M, | 
|  | 1073 | (__v4di)_mm256_broadcast_i64x2(__A), | 
|  | 1074 | (__v4di)__O); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1075 | } | 
|  | 1076 |  | 
|  | 1077 | static __inline__ __m256i __DEFAULT_FN_ATTRS | 
|  | 1078 | _mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A) | 
|  | 1079 | { | 
| Craig Topper | 367c86d | 2017-01-18 02:17:10 +0000 | [diff] [blame] | 1080 | return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M, | 
|  | 1081 | (__v4di)_mm256_broadcast_i64x2(__A), | 
|  | 1082 | (__v4di)_mm256_setzero_si256()); | 
| Michael Zuckerman | c2b6128 | 2016-04-13 12:58:01 +0000 | [diff] [blame] | 1083 | } | 
|  | 1084 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1085 | #define _mm256_extractf64x2_pd(A, imm) \ | 
| Craig Topper | 3428bee | 2018-06-08 03:24:47 +0000 | [diff] [blame] | 1086 | (__m128d)__builtin_ia32_extractf64x2_256((__v4df)(__m256d)(A), (int)(imm)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1087 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1088 | #define _mm256_mask_extractf64x2_pd(W, U, A, imm) \ | 
| Craig Topper | 93ffabd | 2016-10-31 04:30:56 +0000 | [diff] [blame] | 1089 | (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \ | 
|  | 1090 | (__v2df)_mm256_extractf64x2_pd((A), (imm)), \ | 
| Craig Topper | cbf3929 | 2018-05-31 01:24:40 +0000 | [diff] [blame] | 1091 | (__v2df)(__m128d)(W)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1092 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1093 | #define _mm256_maskz_extractf64x2_pd(U, A, imm) \ | 
| Craig Topper | 93ffabd | 2016-10-31 04:30:56 +0000 | [diff] [blame] | 1094 | (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \ | 
|  | 1095 | (__v2df)_mm256_extractf64x2_pd((A), (imm)), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1096 | (__v2df)_mm_setzero_pd()) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1097 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1098 | #define _mm256_extracti64x2_epi64(A, imm) \ | 
| Craig Topper | 3428bee | 2018-06-08 03:24:47 +0000 | [diff] [blame] | 1099 | (__m128i)__builtin_ia32_extracti64x2_256((__v4di)(__m256i)(A), (int)(imm)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1100 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1101 | #define _mm256_mask_extracti64x2_epi64(W, U, A, imm) \ | 
| Craig Topper | 93ffabd | 2016-10-31 04:30:56 +0000 | [diff] [blame] | 1102 | (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \ | 
|  | 1103 | (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \ | 
| Craig Topper | cbf3929 | 2018-05-31 01:24:40 +0000 | [diff] [blame] | 1104 | (__v2di)(__m128i)(W)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1105 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1106 | #define _mm256_maskz_extracti64x2_epi64(U, A, imm) \ | 
| Craig Topper | 93ffabd | 2016-10-31 04:30:56 +0000 | [diff] [blame] | 1107 | (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \ | 
|  | 1108 | (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1109 | (__v2di)_mm_setzero_si128()) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1110 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1111 | #define _mm256_insertf64x2(A, B, imm) \ | 
| Craig Topper | 3428bee | 2018-06-08 03:24:47 +0000 | [diff] [blame] | 1112 | (__m256d)__builtin_ia32_insertf64x2_256((__v4df)(__m256d)(A), \ | 
|  | 1113 | (__v2df)(__m128d)(B), (int)(imm)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1114 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1115 | #define _mm256_mask_insertf64x2(W, U, A, B, imm) \ | 
| Craig Topper | 08bf53f | 2016-11-01 05:47:56 +0000 | [diff] [blame] | 1116 | (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \ | 
|  | 1117 | (__v4df)_mm256_insertf64x2((A), (B), (imm)), \ | 
| Craig Topper | cbf3929 | 2018-05-31 01:24:40 +0000 | [diff] [blame] | 1118 | (__v4df)(__m256d)(W)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1119 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1120 | #define _mm256_maskz_insertf64x2(U, A, B, imm) \ | 
| Craig Topper | 08bf53f | 2016-11-01 05:47:56 +0000 | [diff] [blame] | 1121 | (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \ | 
|  | 1122 | (__v4df)_mm256_insertf64x2((A), (B), (imm)), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1123 | (__v4df)_mm256_setzero_pd()) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1124 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1125 | #define _mm256_inserti64x2(A, B, imm) \ | 
| Craig Topper | 3428bee | 2018-06-08 03:24:47 +0000 | [diff] [blame] | 1126 | (__m256i)__builtin_ia32_inserti64x2_256((__v4di)(__m256i)(A), \ | 
|  | 1127 | (__v2di)(__m128i)(B), (int)(imm)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1128 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1129 | #define _mm256_mask_inserti64x2(W, U, A, B, imm) \ | 
| Craig Topper | 08bf53f | 2016-11-01 05:47:56 +0000 | [diff] [blame] | 1130 | (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \ | 
|  | 1131 | (__v4di)_mm256_inserti64x2((A), (B), (imm)), \ | 
| Craig Topper | cbf3929 | 2018-05-31 01:24:40 +0000 | [diff] [blame] | 1132 | (__v4di)(__m256i)(W)) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1133 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1134 | #define _mm256_maskz_inserti64x2(U, A, B, imm) \ | 
| Craig Topper | 08bf53f | 2016-11-01 05:47:56 +0000 | [diff] [blame] | 1135 | (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \ | 
|  | 1136 | (__v4di)_mm256_inserti64x2((A), (B), (imm)), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1137 | (__v4di)_mm256_setzero_si256()) | 
| Michael Zuckerman | ef2979a | 2016-04-19 15:18:23 +0000 | [diff] [blame] | 1138 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1139 | #define _mm_mask_fpclass_pd_mask(U, A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1140 | (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1141 | (__mmask8)(U)) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1142 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1143 | #define _mm_fpclass_pd_mask(A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1144 | (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1145 | (__mmask8)-1) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1146 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1147 | #define _mm256_mask_fpclass_pd_mask(U, A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1148 | (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1149 | (__mmask8)(U)) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1150 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1151 | #define _mm256_fpclass_pd_mask(A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1152 | (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1153 | (__mmask8)-1) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1154 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1155 | #define _mm_mask_fpclass_ps_mask(U, A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1156 | (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1157 | (__mmask8)(U)) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1158 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1159 | #define _mm_fpclass_ps_mask(A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1160 | (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1161 | (__mmask8)-1) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1162 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1163 | #define _mm256_mask_fpclass_ps_mask(U, A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1164 | (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1165 | (__mmask8)(U)) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1166 |  | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1167 | #define _mm256_fpclass_ps_mask(A, imm) \ | 
| Craig Topper | f2e67a0 | 2016-05-17 04:41:46 +0000 | [diff] [blame] | 1168 | (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \ | 
| Craig Topper | c633867 | 2018-05-31 00:51:20 +0000 | [diff] [blame] | 1169 | (__mmask8)-1) | 
| Michael Zuckerman | edc82fe | 2016-04-25 14:48:23 +0000 | [diff] [blame] | 1170 |  | 
| Michael Kuperstein | e45af54 | 2015-06-30 13:36:19 +0000 | [diff] [blame] | 1171 | #undef __DEFAULT_FN_ATTRS | 
| Eric Christopher | 4d185168 | 2015-06-17 07:09:20 +0000 | [diff] [blame] | 1172 |  | 
| Elena Demikhovsky | e7d4c2e | 2015-04-30 09:24:29 +0000 | [diff] [blame] | 1173 | #endif |