1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Werror | FileCheck %s 2 3 // Don't include mm_malloc.h, it's system specific. 4 #define __MM_MALLOC_H 5 6 #include <immintrin.h> 7 8 __m512i test_mm512_mullo_epi64 (__m512i __A, __m512i __B) { 9 // CHECK-LABEL: @test_mm512_mullo_epi64 10 // CHECK: mul <8 x i64> 11 return (__m512i) ((__v8di) __A * (__v8di) __B); 12 } 13 14 __m512i test_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 15 // CHECK-LABEL: @test_mm512_mask_mullo_epi64 16 // CHECK: @llvm.x86.avx512.mask.pmull.q.512 17 return (__m512i) _mm512_mask_mullo_epi64(__W, __U, __A, __B); 18 } 19 20 __m512i test_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) { 21 // CHECK-LABEL: @test_mm512_maskz_mullo_epi64 22 // CHECK: @llvm.x86.avx512.mask.pmull.q.512 23 return (__m512i) _mm512_maskz_mullo_epi64(__U, __A, __B); 24 } 25 26 __m512d test_mm512_xor_pd (__m512d __A, __m512d __B) { 27 // CHECK-LABEL: @test_mm512_xor_pd 28 // CHECK: xor <8 x i64> 29 return (__m512d) _mm512_xor_pd(__A, __B); 30 } 31 32 __m512d test_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 33 // CHECK-LABEL: @test_mm512_mask_xor_pd 34 // CHECK: @llvm.x86.avx512.mask.xor.pd.512 35 return (__m512d) _mm512_mask_xor_pd(__W, __U, __A, __B); 36 } 37 38 __m512d test_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) { 39 // CHECK-LABEL: @test_mm512_maskz_xor_pd 40 // CHECK: @llvm.x86.avx512.mask.xor.pd.512 41 return (__m512d) _mm512_maskz_xor_pd(__U, __A, __B); 42 } 43 44 __m512 test_mm512_xor_ps (__m512 __A, __m512 __B) { 45 // CHECK-LABEL: @test_mm512_xor_ps 46 // CHECK: xor <16 x i32> 47 return (__m512) _mm512_xor_ps(__A, __B); 48 } 49 50 __m512 test_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 51 // CHECK-LABEL: @test_mm512_mask_xor_ps 52 // CHECK: @llvm.x86.avx512.mask.xor.ps.512 53 return (__m512) _mm512_mask_xor_ps(__W, __U, __A, __B); 54 } 55 56 __m512 test_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) { 57 // CHECK-LABEL: @test_mm512_maskz_xor_ps 58 // CHECK: @llvm.x86.avx512.mask.xor.ps.512 59 return (__m512) _mm512_maskz_xor_ps(__U, __A, __B); 60 } 61 62 __m512d test_mm512_or_pd (__m512d __A, __m512d __B) { 63 // CHECK-LABEL: @test_mm512_or_pd 64 // CHECK: or <8 x i64> 65 return (__m512d) _mm512_or_pd(__A, __B); 66 } 67 68 __m512d test_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 69 // CHECK-LABEL: @test_mm512_mask_or_pd 70 // CHECK: @llvm.x86.avx512.mask.or.pd.512 71 return (__m512d) _mm512_mask_or_pd(__W, __U, __A, __B); 72 } 73 74 __m512d test_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) { 75 // CHECK-LABEL: @test_mm512_maskz_or_pd 76 // CHECK: @llvm.x86.avx512.mask.or.pd.512 77 return (__m512d) _mm512_maskz_or_pd(__U, __A, __B); 78 } 79 80 __m512 test_mm512_or_ps (__m512 __A, __m512 __B) { 81 // CHECK-LABEL: @test_mm512_or_ps 82 // CHECK: or <16 x i32> 83 return (__m512) _mm512_or_ps(__A, __B); 84 } 85 86 __m512 test_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 87 // CHECK-LABEL: @test_mm512_mask_or_ps 88 // CHECK: @llvm.x86.avx512.mask.or.ps.512 89 return (__m512) _mm512_mask_or_ps(__W, __U, __A, __B); 90 } 91 92 __m512 test_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) { 93 // CHECK-LABEL: @test_mm512_maskz_or_ps 94 // CHECK: @llvm.x86.avx512.mask.or.ps.512 95 return (__m512) _mm512_maskz_or_ps(__U, __A, __B); 96 } 97 98 __m512d test_mm512_and_pd (__m512d __A, __m512d __B) { 99 // CHECK-LABEL: @test_mm512_and_pd 100 // CHECK: and <8 x i64> 101 return (__m512d) _mm512_and_pd(__A, __B); 102 } 103 104 __m512d test_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 105 // CHECK-LABEL: @test_mm512_mask_and_pd 106 // CHECK: @llvm.x86.avx512.mask.and.pd.512 107 return (__m512d) _mm512_mask_and_pd(__W, __U, __A, __B); 108 } 109 110 __m512d test_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) { 111 // CHECK-LABEL: @test_mm512_maskz_and_pd 112 // CHECK: @llvm.x86.avx512.mask.and.pd.512 113 return (__m512d) _mm512_maskz_and_pd(__U, __A, __B); 114 } 115 116 __m512 test_mm512_and_ps (__m512 __A, __m512 __B) { 117 // CHECK-LABEL: @test_mm512_and_ps 118 // CHECK: and <16 x i32> 119 return (__m512) _mm512_and_ps(__A, __B); 120 } 121 122 __m512 test_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 123 // CHECK-LABEL: @test_mm512_mask_and_ps 124 // CHECK: @llvm.x86.avx512.mask.and.ps.512 125 return (__m512) _mm512_mask_and_ps(__W, __U, __A, __B); 126 } 127 128 __m512 test_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) { 129 // CHECK-LABEL: @test_mm512_maskz_and_ps 130 // CHECK: @llvm.x86.avx512.mask.and.ps.512 131 return (__m512) _mm512_maskz_and_ps(__U, __A, __B); 132 } 133 134 __m512d test_mm512_andnot_pd (__m512d __A, __m512d __B) { 135 // CHECK-LABEL: @test_mm512_andnot_pd 136 // CHECK: @llvm.x86.avx512.mask.andn.pd.512 137 return (__m512d) _mm512_andnot_pd(__A, __B); 138 } 139 140 __m512d test_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 141 // CHECK-LABEL: @test_mm512_mask_andnot_pd 142 // CHECK: @llvm.x86.avx512.mask.andn.pd.512 143 return (__m512d) _mm512_mask_andnot_pd(__W, __U, __A, __B); 144 } 145 146 __m512d test_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) { 147 // CHECK-LABEL: @test_mm512_maskz_andnot_pd 148 // CHECK: @llvm.x86.avx512.mask.andn.pd.512 149 return (__m512d) _mm512_maskz_andnot_pd(__U, __A, __B); 150 } 151 152 __m512 test_mm512_andnot_ps (__m512 __A, __m512 __B) { 153 // CHECK-LABEL: @test_mm512_andnot_ps 154 // CHECK: @llvm.x86.avx512.mask.andn.ps.512 155 return (__m512) _mm512_andnot_ps(__A, __B); 156 } 157 158 __m512 test_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 159 // CHECK-LABEL: @test_mm512_mask_andnot_ps 160 // CHECK: @llvm.x86.avx512.mask.andn.ps.512 161 return (__m512) _mm512_mask_andnot_ps(__W, __U, __A, __B); 162 } 163 164 __m512 test_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) { 165 // CHECK-LABEL: @test_mm512_maskz_andnot_ps 166 // CHECK: @llvm.x86.avx512.mask.andn.ps.512 167 return (__m512) _mm512_maskz_andnot_ps(__U, __A, __B); 168 } 169 170 __m512i test_mm512_cvtpd_epi64(__m512d __A) { 171 // CHECK-LABEL: @test_mm512_cvtpd_epi64 172 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 173 return _mm512_cvtpd_epi64(__A); 174 } 175 176 __m512i test_mm512_mask_cvtpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) { 177 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi64 178 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 179 return _mm512_mask_cvtpd_epi64(__W, __U, __A); 180 } 181 182 __m512i test_mm512_maskz_cvtpd_epi64(__mmask8 __U, __m512d __A) { 183 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi64 184 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 185 return _mm512_maskz_cvtpd_epi64(__U, __A); 186 } 187 188 __m512i test_mm512_cvt_roundpd_epi64(__m512d __A) { 189 // CHECK-LABEL: @test_mm512_cvt_roundpd_epi64 190 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 191 return _mm512_cvt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT); 192 } 193 194 __m512i test_mm512_mask_cvt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) { 195 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi64 196 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 197 return _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 198 } 199 200 __m512i test_mm512_maskz_cvt_roundpd_epi64(__mmask8 __U, __m512d __A) { 201 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi64 202 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512 203 return _mm512_maskz_cvt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 204 } 205 206 __m512i test_mm512_cvtpd_epu64(__m512d __A) { 207 // CHECK-LABEL: @test_mm512_cvtpd_epu64 208 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 209 return _mm512_cvtpd_epu64(__A); 210 } 211 212 __m512i test_mm512_mask_cvtpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) { 213 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu64 214 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 215 return _mm512_mask_cvtpd_epu64(__W, __U, __A); 216 } 217 218 __m512i test_mm512_maskz_cvtpd_epu64(__mmask8 __U, __m512d __A) { 219 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu64 220 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 221 return _mm512_maskz_cvtpd_epu64(__U, __A); 222 } 223 224 __m512i test_mm512_cvt_roundpd_epu64(__m512d __A) { 225 // CHECK-LABEL: @test_mm512_cvt_roundpd_epu64 226 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 227 return _mm512_cvt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT); 228 } 229 230 __m512i test_mm512_mask_cvt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) { 231 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu64 232 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 233 return _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 234 } 235 236 __m512i test_mm512_maskz_cvt_roundpd_epu64(__mmask8 __U, __m512d __A) { 237 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu64 238 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512 239 return _mm512_maskz_cvt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 240 } 241 242 __m512i test_mm512_cvtps_epi64(__m256 __A) { 243 // CHECK-LABEL: @test_mm512_cvtps_epi64 244 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 245 return _mm512_cvtps_epi64(__A); 246 } 247 248 __m512i test_mm512_mask_cvtps_epi64(__m512i __W, __mmask8 __U, __m256 __A) { 249 // CHECK-LABEL: @test_mm512_mask_cvtps_epi64 250 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 251 return _mm512_mask_cvtps_epi64(__W, __U, __A); 252 } 253 254 __m512i test_mm512_maskz_cvtps_epi64(__mmask8 __U, __m256 __A) { 255 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi64 256 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 257 return _mm512_maskz_cvtps_epi64(__U, __A); 258 } 259 260 __m512i test_mm512_cvt_roundps_epi64(__m256 __A) { 261 // CHECK-LABEL: @test_mm512_cvt_roundps_epi64 262 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 263 return _mm512_cvt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT); 264 } 265 266 __m512i test_mm512_mask_cvt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) { 267 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi64 268 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 269 return _mm512_mask_cvt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 270 } 271 272 __m512i test_mm512_maskz_cvt_roundps_epi64(__mmask8 __U, __m256 __A) { 273 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi64 274 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512 275 return _mm512_maskz_cvt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 276 } 277 278 __m512i test_mm512_cvtps_epu64(__m256 __A) { 279 // CHECK-LABEL: @test_mm512_cvtps_epu64 280 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 281 return _mm512_cvtps_epu64(__A); 282 } 283 284 __m512i test_mm512_mask_cvtps_epu64(__m512i __W, __mmask8 __U, __m256 __A) { 285 // CHECK-LABEL: @test_mm512_mask_cvtps_epu64 286 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 287 return _mm512_mask_cvtps_epu64(__W, __U, __A); 288 } 289 290 __m512i test_mm512_maskz_cvtps_epu64(__mmask8 __U, __m256 __A) { 291 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu64 292 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 293 return _mm512_maskz_cvtps_epu64(__U, __A); 294 } 295 296 __m512i test_mm512_cvt_roundps_epu64(__m256 __A) { 297 // CHECK-LABEL: @test_mm512_cvt_roundps_epu64 298 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 299 return _mm512_cvt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT); 300 } 301 302 __m512i test_mm512_mask_cvt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) { 303 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu64 304 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 305 return _mm512_mask_cvt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 306 } 307 308 __m512i test_mm512_maskz_cvt_roundps_epu64(__mmask8 __U, __m256 __A) { 309 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu64 310 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512 311 return _mm512_maskz_cvt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 312 } 313 314 __m512d test_mm512_cvtepi64_pd(__m512i __A) { 315 // CHECK-LABEL: @test_mm512_cvtepi64_pd 316 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 317 return _mm512_cvtepi64_pd(__A); 318 } 319 320 __m512d test_mm512_mask_cvtepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) { 321 // CHECK-LABEL: @test_mm512_mask_cvtepi64_pd 322 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 323 return _mm512_mask_cvtepi64_pd(__W, __U, __A); 324 } 325 326 __m512d test_mm512_maskz_cvtepi64_pd(__mmask8 __U, __m512i __A) { 327 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_pd 328 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 329 return _mm512_maskz_cvtepi64_pd(__U, __A); 330 } 331 332 __m512d test_mm512_cvt_roundepi64_pd(__m512i __A) { 333 // CHECK-LABEL: @test_mm512_cvt_roundepi64_pd 334 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 335 return _mm512_cvt_roundepi64_pd(__A, _MM_FROUND_TO_NEAREST_INT); 336 } 337 338 __m512d test_mm512_mask_cvt_roundepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) { 339 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_pd 340 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 341 return _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 342 } 343 344 __m512d test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U, __m512i __A) { 345 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_pd 346 // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512 347 return _mm512_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT); 348 } 349 350 __m256 test_mm512_cvtepi64_ps(__m512i __A) { 351 // CHECK-LABEL: @test_mm512_cvtepi64_ps 352 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 353 return _mm512_cvtepi64_ps(__A); 354 } 355 356 __m256 test_mm512_mask_cvtepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) { 357 // CHECK-LABEL: @test_mm512_mask_cvtepi64_ps 358 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 359 return _mm512_mask_cvtepi64_ps(__W, __U, __A); 360 } 361 362 __m256 test_mm512_maskz_cvtepi64_ps(__mmask8 __U, __m512i __A) { 363 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_ps 364 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 365 return _mm512_maskz_cvtepi64_ps(__U, __A); 366 } 367 368 __m256 test_mm512_cvt_roundepi64_ps(__m512i __A) { 369 // CHECK-LABEL: @test_mm512_cvt_roundepi64_ps 370 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 371 return _mm512_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT); 372 } 373 374 __m256 test_mm512_mask_cvt_roundepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) { 375 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_ps 376 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 377 return _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 378 } 379 380 __m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) { 381 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_ps 382 // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512 383 return _mm512_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT); 384 } 385 386 __m512i test_mm512_cvttpd_epi64(__m512d __A) { 387 // CHECK-LABEL: @test_mm512_cvttpd_epi64 388 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 389 return _mm512_cvttpd_epi64(__A); 390 } 391 392 __m512i test_mm512_mask_cvttpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) { 393 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi64 394 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 395 return _mm512_mask_cvttpd_epi64(__W, __U, __A); 396 } 397 398 __m512i test_mm512_maskz_cvttpd_epi64(__mmask8 __U, __m512d __A) { 399 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi64 400 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 401 return _mm512_maskz_cvttpd_epi64(__U, __A); 402 } 403 404 __m512i test_mm512_cvtt_roundpd_epi64(__m512d __A) { 405 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi64 406 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 407 return _mm512_cvtt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT); 408 } 409 410 __m512i test_mm512_mask_cvtt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) { 411 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi64 412 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 413 return _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 414 } 415 416 __m512i test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m512d __A) { 417 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi64 418 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512 419 return _mm512_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 420 } 421 422 __m512i test_mm512_cvttpd_epu64(__m512d __A) { 423 // CHECK-LABEL: @test_mm512_cvttpd_epu64 424 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 425 return _mm512_cvttpd_epu64(__A); 426 } 427 428 __m512i test_mm512_mask_cvttpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) { 429 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu64 430 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 431 return _mm512_mask_cvttpd_epu64(__W, __U, __A); 432 } 433 434 __m512i test_mm512_maskz_cvttpd_epu64(__mmask8 __U, __m512d __A) { 435 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu64 436 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 437 return _mm512_maskz_cvttpd_epu64(__U, __A); 438 } 439 440 __m512i test_mm512_cvtt_roundpd_epu64(__m512d __A) { 441 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu64 442 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 443 return _mm512_cvtt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT); 444 } 445 446 __m512i test_mm512_mask_cvtt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) { 447 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu64 448 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 449 return _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 450 } 451 452 __m512i test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m512d __A) { 453 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu64 454 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512 455 return _mm512_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 456 } 457 458 __m512i test_mm512_cvttps_epi64(__m256 __A) { 459 // CHECK-LABEL: @test_mm512_cvttps_epi64 460 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 461 return _mm512_cvttps_epi64(__A); 462 } 463 464 __m512i test_mm512_mask_cvttps_epi64(__m512i __W, __mmask8 __U, __m256 __A) { 465 // CHECK-LABEL: @test_mm512_mask_cvttps_epi64 466 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 467 return _mm512_mask_cvttps_epi64(__W, __U, __A); 468 } 469 470 __m512i test_mm512_maskz_cvttps_epi64(__mmask8 __U, __m256 __A) { 471 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi64 472 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 473 return _mm512_maskz_cvttps_epi64(__U, __A); 474 } 475 476 __m512i test_mm512_cvtt_roundps_epi64(__m256 __A) { 477 // CHECK-LABEL: @test_mm512_cvtt_roundps_epi64 478 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 479 return _mm512_cvtt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT); 480 } 481 482 __m512i test_mm512_mask_cvtt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) { 483 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi64 484 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 485 return _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 486 } 487 488 __m512i test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U, __m256 __A) { 489 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi64 490 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512 491 return _mm512_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 492 } 493 494 __m512i test_mm512_cvttps_epu64(__m256 __A) { 495 // CHECK-LABEL: @test_mm512_cvttps_epu64 496 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 497 return _mm512_cvttps_epu64(__A); 498 } 499 500 __m512i test_mm512_mask_cvttps_epu64(__m512i __W, __mmask8 __U, __m256 __A) { 501 // CHECK-LABEL: @test_mm512_mask_cvttps_epu64 502 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 503 return _mm512_mask_cvttps_epu64(__W, __U, __A); 504 } 505 506 __m512i test_mm512_maskz_cvttps_epu64(__mmask8 __U, __m256 __A) { 507 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu64 508 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 509 return _mm512_maskz_cvttps_epu64(__U, __A); 510 } 511 512 __m512i test_mm512_cvtt_roundps_epu64(__m256 __A) { 513 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu64 514 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 515 return _mm512_cvtt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT); 516 } 517 518 __m512i test_mm512_mask_cvtt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) { 519 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu64 520 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 521 return _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 522 } 523 524 __m512i test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U, __m256 __A) { 525 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu64 526 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512 527 return _mm512_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT); 528 } 529 530 __m512d test_mm512_cvtepu64_pd(__m512i __A) { 531 // CHECK-LABEL: @test_mm512_cvtepu64_pd 532 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 533 return _mm512_cvtepu64_pd(__A); 534 } 535 536 __m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) { 537 // CHECK-LABEL: @test_mm512_mask_cvtepu64_pd 538 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 539 return _mm512_mask_cvtepu64_pd(__W, __U, __A); 540 } 541 542 __m512d test_mm512_maskz_cvtepu64_pd(__mmask8 __U, __m512i __A) { 543 // CHECK-LABEL: @test_mm512_maskz_cvtepu64_pd 544 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 545 return _mm512_maskz_cvtepu64_pd(__U, __A); 546 } 547 548 __m512d test_mm512_cvt_roundepu64_pd(__m512i __A) { 549 // CHECK-LABEL: @test_mm512_cvt_roundepu64_pd 550 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 551 return _mm512_cvt_roundepu64_pd(__A, _MM_FROUND_TO_NEAREST_INT); 552 } 553 554 __m512d test_mm512_mask_cvt_roundepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) { 555 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_pd 556 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 557 return _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 558 } 559 560 __m512d test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U, __m512i __A) { 561 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_pd 562 // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512 563 return _mm512_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT); 564 } 565 566 __m256 test_mm512_cvtepu64_ps(__m512i __A) { 567 // CHECK-LABEL: @test_mm512_cvtepu64_ps 568 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 569 return _mm512_cvtepu64_ps(__A); 570 } 571 572 __m256 test_mm512_mask_cvtepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) { 573 // CHECK-LABEL: @test_mm512_mask_cvtepu64_ps 574 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 575 return _mm512_mask_cvtepu64_ps(__W, __U, __A); 576 } 577 578 __m256 test_mm512_maskz_cvtepu64_ps(__mmask8 __U, __m512i __A) { 579 // CHECK-LABEL: @test_mm512_maskz_cvtepu64_ps 580 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 581 return _mm512_maskz_cvtepu64_ps(__U, __A); 582 } 583 584 __m256 test_mm512_cvt_roundepu64_ps(__m512i __A) { 585 // CHECK-LABEL: @test_mm512_cvt_roundepu64_ps 586 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 587 return _mm512_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT); 588 } 589 590 __m256 test_mm512_mask_cvt_roundepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) { 591 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_ps 592 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 593 return _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT); 594 } 595 596 __m256 test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U, __m512i __A) { 597 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_ps 598 // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512 599 return _mm512_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT); 600 } 601 602 __m512d test_mm512_range_pd(__m512d __A, __m512d __B) { 603 // CHECK-LABEL: @test_mm512_range_pd 604 // CHECK: @llvm.x86.avx512.mask.range.pd.512 605 return _mm512_range_pd(__A, __B, 4); 606 } 607 608 __m512d test_mm512_mask_range_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 609 // CHECK-LABEL: @test_mm512_mask_range_pd 610 // CHECK: @llvm.x86.avx512.mask.range.pd.512 611 return _mm512_mask_range_pd(__W, __U, __A, __B, 4); 612 } 613 614 __m512d test_mm512_maskz_range_pd(__mmask8 __U, __m512d __A, __m512d __B) { 615 // CHECK-LABEL: @test_mm512_maskz_range_pd 616 // CHECK: @llvm.x86.avx512.mask.range.pd.512 617 return _mm512_maskz_range_pd(__U, __A, __B, 4); 618 } 619 620 __m512d test_mm512_range_round_pd(__m512d __A, __m512d __B) { 621 // CHECK-LABEL: @test_mm512_range_round_pd 622 // CHECK: @llvm.x86.avx512.mask.range.pd.512 623 return _mm512_range_round_pd(__A, __B, 4, 8); 624 } 625 626 __m512d test_mm512_mask_range_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 627 // CHECK-LABEL: @test_mm512_mask_range_round_pd 628 // CHECK: @llvm.x86.avx512.mask.range.pd.512 629 return _mm512_mask_range_round_pd(__W, __U, __A, __B, 4, 8); 630 } 631 632 __m512d test_mm512_maskz_range_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 633 // CHECK-LABEL: @test_mm512_maskz_range_round_pd 634 // CHECK: @llvm.x86.avx512.mask.range.pd.512 635 return _mm512_maskz_range_round_pd(__U, __A, __B, 4, 8); 636 } 637 638 __m128d test_mm512_range_round_sd(__m128d __A, __m128d __B) { 639 // CHECK-LABEL: @test_mm512_range_round_sd 640 // CHECK: @llvm.x86.avx512.mask.range.sd 641 return _mm_range_round_sd(__A, __B, 4, 8); 642 } 643 644 __m128d test_mm512_mask_range_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 645 // CHECK-LABEL: test_mm512_mask_range_round_sd 646 // CHECK: @llvm.x86.avx512.mask.range.sd 647 return _mm_mask_range_round_sd(__W, __U, __A, __B, 4, 8); 648 } 649 650 __m128d test_mm512_maskz_range_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 651 // CHECK-LABEL: @test_mm512_maskz_range_round_sd 652 // CHECK: @llvm.x86.avx512.mask.range.sd 653 return _mm_maskz_range_round_sd(__U, __A, __B, 4, 8); 654 } 655 656 __m128d test_mm512_range_round_ss(__m128d __A, __m128d __B) { 657 // CHECK-LABEL: @test_mm512_range_round_ss 658 // CHECK: @llvm.x86.avx512.mask.range.ss 659 return _mm_range_round_ss(__A, __B, 4, 8); 660 } 661 662 __m128d test_mm512_mask_range_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 663 // CHECK-LABEL: @test_mm512_mask_range_round_ss 664 // CHECK: @llvm.x86.avx512.mask.range.ss 665 return _mm_mask_range_round_ss(__W, __U, __A, __B, 4, 8); 666 } 667 668 __m128 test_mm512_maskz_range_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 669 // CHECK-LABEL: @test_mm512_maskz_range_round_ss 670 // CHECK: @llvm.x86.avx512.mask.range.ss 671 return _mm_maskz_range_round_ss(__U, __A, __B, 4, 8); 672 } 673 674 __m128d test_mm_range_sd(__m128d __A, __m128d __B) { 675 // CHECK-LABEL: @test_mm_range_sd 676 // CHECK: @llvm.x86.avx512.mask.range.sd 677 return _mm_range_sd(__A, __B, 4); 678 } 679 680 __m128d test_mm_mask_range_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 681 // CHECK-LABEL: test_mm_mask_range_sd 682 // CHECK: @llvm.x86.avx512.mask.range.sd 683 return _mm_mask_range_sd(__W, __U, __A, __B, 4); 684 } 685 686 __m128d test_mm_maskz_range_sd(__mmask8 __U, __m128d __A, __m128d __B) { 687 // CHECK-LABEL: @test_mm_maskz_range_sd 688 // CHECK: @llvm.x86.avx512.mask.range.sd 689 return _mm_maskz_range_sd(__U, __A, __B, 4); 690 } 691 692 __m128d test_mm_range_ss(__m128d __A, __m128d __B) { 693 // CHECK-LABEL: @test_mm_range_ss 694 // CHECK: @llvm.x86.avx512.mask.range.ss 695 return _mm_range_ss(__A, __B, 4); 696 } 697 698 __m128d test_mm_mask_range_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 699 // CHECK-LABEL: @test_mm_mask_range_ss 700 // CHECK: @llvm.x86.avx512.mask.range.ss 701 return _mm_mask_range_ss(__W, __U, __A, __B, 4); 702 } 703 704 __m128 test_mm_maskz_range_ss(__mmask8 __U, __m128 __A, __m128 __B) { 705 // CHECK-LABEL: @test_mm_maskz_range_ss 706 // CHECK: @llvm.x86.avx512.mask.range.ss 707 return _mm_maskz_range_ss(__U, __A, __B, 4); 708 } 709 710 __m512 test_mm512_range_ps(__m512 __A, __m512 __B) { 711 // CHECK-LABEL: @test_mm512_range_ps 712 // CHECK: @llvm.x86.avx512.mask.range.ps.512 713 return _mm512_range_ps(__A, __B, 4); 714 } 715 716 __m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 717 // CHECK-LABEL: @test_mm512_mask_range_ps 718 // CHECK: @llvm.x86.avx512.mask.range.ps.512 719 return _mm512_mask_range_ps(__W, __U, __A, __B, 4); 720 } 721 722 __m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) { 723 // CHECK-LABEL: @test_mm512_maskz_range_ps 724 // CHECK: @llvm.x86.avx512.mask.range.ps.512 725 return _mm512_maskz_range_ps(__U, __A, __B, 4); 726 } 727 728 __m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) { 729 // CHECK-LABEL: @test_mm512_range_round_ps 730 // CHECK: @llvm.x86.avx512.mask.range.ps.512 731 return _mm512_range_round_ps(__A, __B, 4, 8); 732 } 733 734 __m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 735 // CHECK-LABEL: @test_mm512_mask_range_round_ps 736 // CHECK: @llvm.x86.avx512.mask.range.ps.512 737 return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 738 } 739 740 __m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 741 // CHECK-LABEL: @test_mm512_maskz_range_round_ps 742 // CHECK: @llvm.x86.avx512.mask.range.ps.512 743 return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8); 744 } 745 746 __m512d test_mm512_reduce_pd(__m512d __A) { 747 // CHECK-LABEL: @test_mm512_reduce_pd 748 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 749 return _mm512_reduce_pd(__A, 4); 750 } 751 752 __m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) { 753 // CHECK-LABEL: @test_mm512_mask_reduce_pd 754 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 755 return _mm512_mask_reduce_pd(__W, __U, __A, 4); 756 } 757 758 __m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) { 759 // CHECK-LABEL: @test_mm512_maskz_reduce_pd 760 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 761 return _mm512_maskz_reduce_pd(__U, __A, 4); 762 } 763 764 __m512 test_mm512_reduce_ps(__m512 __A) { 765 // CHECK-LABEL: @test_mm512_reduce_ps 766 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 767 return _mm512_reduce_ps(__A, 4); 768 } 769 770 __m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) { 771 // CHECK-LABEL: @test_mm512_mask_reduce_ps 772 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 773 return _mm512_mask_reduce_ps(__W, __U, __A, 4); 774 } 775 776 __m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) { 777 // CHECK-LABEL: @test_mm512_maskz_reduce_ps 778 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 779 return _mm512_maskz_reduce_ps(__U, __A, 4); 780 } 781 782 __m512d test_mm512_reduce_round_pd(__m512d __A) { 783 // CHECK-LABEL: @test_mm512_reduce_round_pd 784 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 785 return _mm512_reduce_round_pd(__A, 4, 8); 786 } 787 788 __m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) { 789 // CHECK-LABEL: @test_mm512_mask_reduce_round_pd 790 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 791 return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8); 792 } 793 794 __m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) { 795 // CHECK-LABEL: @test_mm512_maskz_reduce_round_pd 796 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 797 return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8); 798 } 799 800 __m512 test_mm512_reduce_round_ps(__m512 __A) { 801 // CHECK-LABEL: @test_mm512_reduce_round_ps 802 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 803 return _mm512_reduce_round_ps(__A, 4, 8); 804 } 805 806 __m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) { 807 // CHECK-LABEL: @test_mm512_mask_reduce_round_ps 808 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 809 return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8); 810 } 811 812 __m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) { 813 // CHECK-LABEL: @test_mm512_maskz_reduce_round_ps 814 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 815 return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8); 816 } 817 818 __m128 test_mm_reduce_ss(__m128 __A, __m128 __B) { 819 // CHECK-LABEL: @test_mm_reduce_ss 820 // CHECK: @llvm.x86.avx512.mask.reduce.ss 821 return _mm_reduce_ss(__A, __B, 4); 822 } 823 824 __m128 test_mm_mask_reduce_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 825 // CHECK-LABEL: @test_mm_mask_reduce_ss 826 // CHECK: @llvm.x86.avx512.mask.reduce.ss 827 return _mm_mask_reduce_ss(__W, __U, __A, __B, 4); 828 } 829 830 __m128 test_mm_maskz_reduce_ss(__mmask8 __U, __m128 __A, __m128 __B) { 831 // CHECK-LABEL: @test_mm_maskz_reduce_ss 832 // CHECK: @llvm.x86.avx512.mask.reduce.ss 833 return _mm_maskz_reduce_ss(__U, __A, __B, 4); 834 } 835 836 __m128 test_mm_reduce_round_ss(__m128 __A, __m128 __B) { 837 // CHECK-LABEL: @test_mm_reduce_round_ss 838 // CHECK: @llvm.x86.avx512.mask.reduce.ss 839 return _mm_reduce_round_ss(__A, __B, 4, 8); 840 } 841 842 __m128 test_mm_mask_reduce_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 843 // CHECK-LABEL: @test_mm_mask_reduce_round_ss 844 // CHECK: @llvm.x86.avx512.mask.reduce.ss 845 return _mm_mask_reduce_round_ss(__W, __U, __A, __B, 4, 8); 846 } 847 848 __m128 test_mm_maskz_reduce_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 849 // CHECK-LABEL: @test_mm_maskz_reduce_round_ss 850 // CHECK: @llvm.x86.avx512.mask.reduce.ss 851 return _mm_maskz_reduce_round_ss(__U, __A, __B, 4, 8); 852 } 853 854 __m128d test_mm_reduce_sd(__m128d __A, __m128d __B) { 855 // CHECK-LABEL: @test_mm_reduce_sd 856 // CHECK: @llvm.x86.avx512.mask.reduce.sd 857 return _mm_reduce_sd(__A, __B, 4); 858 } 859 860 __m128d test_mm_mask_reduce_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 861 // CHECK-LABEL: @test_mm_mask_reduce_sd 862 // CHECK: @llvm.x86.avx512.mask.reduce.sd 863 return _mm_mask_reduce_sd(__W, __U, __A, __B, 4); 864 } 865 866 __m128d test_mm_maskz_reduce_sd(__mmask8 __U, __m128d __A, __m128d __B) { 867 // CHECK-LABEL: @test_mm_maskz_reduce_sd 868 // CHECK: @llvm.x86.avx512.mask.reduce.sd 869 return _mm_maskz_reduce_sd(__U, __A, __B, 4); 870 } 871 872 __m128d test_mm_reduce_round_sd(__m128d __A, __m128d __B) { 873 // CHECK-LABEL: @test_mm_reduce_round_sd 874 // CHECK: @llvm.x86.avx512.mask.reduce.sd 875 return _mm_reduce_round_sd(__A, __B, 4, 8); 876 } 877 878 __m128d test_mm_mask_reduce_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 879 // CHECK-LABEL: @test_mm_mask_reduce_round_sd 880 // CHECK: @llvm.x86.avx512.mask.reduce.sd 881 return _mm_mask_reduce_round_sd(__W, __U, __A, __B, 4, 8); 882 } 883 884 __m128d test_mm_maskz_reduce_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 885 // CHECK-LABEL: @test_mm_maskz_reduce_round_sd 886 // CHECK: @llvm.x86.avx512.mask.reduce.sd 887 return _mm_maskz_reduce_round_sd(__U, __A, __B, 4, 8); 888 } 889 890 __mmask16 test_mm512_movepi32_mask(__m512i __A) { 891 // CHECK-LABEL: @test_mm512_movepi32_mask 892 // CHECK: @llvm.x86.avx512.cvtd2mask.512 893 return _mm512_movepi32_mask(__A); 894 } 895 896 __m512i test_mm512_movm_epi32(__mmask16 __A) { 897 // CHECK-LABEL: @test_mm512_movm_epi32 898 // CHECK: @llvm.x86.avx512.cvtmask2d.512 899 return _mm512_movm_epi32(__A); 900 } 901 902 __m512i test_mm512_movm_epi64(__mmask8 __A) { 903 // CHECK-LABEL: @test_mm512_movm_epi64 904 // CHECK: @llvm.x86.avx512.cvtmask2q.512 905 return _mm512_movm_epi64(__A); 906 } 907 908 __mmask8 test_mm512_movepi64_mask(__m512i __A) { 909 // CHECK-LABEL: @test_mm512_movepi64_mask 910 // CHECK: @llvm.x86.avx512.cvtq2mask.512 911 return _mm512_movepi64_mask(__A); 912 } 913 914 __m512 test_mm512_broadcast_f32x2(__m128 __A) { 915 // CHECK-LABEL: @test_mm512_broadcast_f32x2 916 // CHECK: @llvm.x86.avx512.mask.broadcastf32x2 917 return _mm512_broadcast_f32x2(__A); 918 } 919 920 __m512 test_mm512_mask_broadcast_f32x2(__m512 __O, __mmask16 __M, __m128 __A) { 921 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x2 922 // CHECK: @llvm.x86.avx512.mask.broadcastf32x2 923 return _mm512_mask_broadcast_f32x2(__O, __M, __A); 924 } 925 926 __m512 test_mm512_maskz_broadcast_f32x2(__mmask16 __M, __m128 __A) { 927 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x2 928 // CHECK: @llvm.x86.avx512.mask.broadcastf32x2 929 return _mm512_maskz_broadcast_f32x2(__M, __A); 930 } 931 932 __m512 test_mm512_broadcast_f32x8(__m256 __A) { 933 // CHECK-LABEL: @test_mm512_broadcast_f32x8 934 // CHECK: @llvm.x86.avx512.mask.broadcastf32x8 935 return _mm512_broadcast_f32x8(__A); 936 } 937 938 __m512 test_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A) { 939 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x8 940 // CHECK: @llvm.x86.avx512.mask.broadcastf32x8 941 return _mm512_mask_broadcast_f32x8(__O, __M, __A); 942 } 943 944 __m512 test_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A) { 945 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x8 946 // CHECK: @llvm.x86.avx512.mask.broadcastf32x8 947 return _mm512_maskz_broadcast_f32x8(__M, __A); 948 } 949 950 __m512d test_mm512_broadcast_f64x2(__m128d __A) { 951 // CHECK-LABEL: @test_mm512_broadcast_f64x2 952 // CHECK: @llvm.x86.avx512.mask.broadcastf64x2 953 return _mm512_broadcast_f64x2(__A); 954 } 955 956 __m512d test_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A) { 957 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x2 958 // CHECK: @llvm.x86.avx512.mask.broadcastf64x2 959 return _mm512_mask_broadcast_f64x2(__O, __M, __A); 960 } 961 962 __m512d test_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A) { 963 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x2 964 // CHECK: @llvm.x86.avx512.mask.broadcastf64x2 965 return _mm512_maskz_broadcast_f64x2(__M, __A); 966 } 967 968 __m512i test_mm512_broadcast_i32x2(__m128i __A) { 969 // CHECK-LABEL: @test_mm512_broadcast_i32x2 970 // CHECK: @llvm.x86.avx512.mask.broadcasti32x2 971 return _mm512_broadcast_i32x2(__A); 972 } 973 974 __m512i test_mm512_mask_broadcast_i32x2(__m512i __O, __mmask16 __M, __m128i __A) { 975 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x2 976 // CHECK: @llvm.x86.avx512.mask.broadcasti32x2 977 return _mm512_mask_broadcast_i32x2(__O, __M, __A); 978 } 979 980 __m512i test_mm512_maskz_broadcast_i32x2(__mmask16 __M, __m128i __A) { 981 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x2 982 // CHECK: @llvm.x86.avx512.mask.broadcasti32x2 983 return _mm512_maskz_broadcast_i32x2(__M, __A); 984 } 985 986 __m512i test_mm512_broadcast_i32x8(__m256i __A) { 987 // CHECK-LABEL: @test_mm512_broadcast_i32x8 988 // CHECK: @llvm.x86.avx512.mask.broadcasti32x8 989 return _mm512_broadcast_i32x8(__A); 990 } 991 992 __m512i test_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A) { 993 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x8 994 // CHECK: @llvm.x86.avx512.mask.broadcasti32x8 995 return _mm512_mask_broadcast_i32x8(__O, __M, __A); 996 } 997 998 __m512i test_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A) { 999 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x8 1000 // CHECK: @llvm.x86.avx512.mask.broadcasti32x8 1001 return _mm512_maskz_broadcast_i32x8(__M, __A); 1002 } 1003 1004 __m512i test_mm512_broadcast_i64x2(__m128i __A) { 1005 // CHECK-LABEL: @test_mm512_broadcast_i64x2 1006 // CHECK: @llvm.x86.avx512.mask.broadcasti64x2 1007 return _mm512_broadcast_i64x2(__A); 1008 } 1009 1010 __m512i test_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A) { 1011 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x2 1012 // CHECK: @llvm.x86.avx512.mask.broadcasti64x2 1013 return _mm512_mask_broadcast_i64x2(__O, __M, __A); 1014 } 1015 1016 __m512i test_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A) { 1017 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x2 1018 // CHECK: @llvm.x86.avx512.mask.broadcasti64x2 1019 return _mm512_maskz_broadcast_i64x2(__M, __A); 1020 } 1021 __m256 test_mm512_extractf32x8_ps(__m512 __A) { 1022 // CHECK-LABEL: @test_mm512_extractf32x8_ps 1023 // CHECK: @llvm.x86.avx512.mask.vextractf32x8 1024 return _mm512_extractf32x8_ps(__A, 1); 1025 } 1026 1027 __m256 test_mm512_mask_extractf32x8_ps(__m256 __W, __mmask8 __U, __m512 __A) { 1028 // CHECK-LABEL: @test_mm512_mask_extractf32x8_ps 1029 // CHECK: @llvm.x86.avx512.mask.vextractf32x8 1030 return _mm512_mask_extractf32x8_ps(__W, __U, __A, 1); 1031 } 1032 1033 __m256 test_mm512_maskz_extractf32x8_ps(__mmask8 __U, __m512 __A) { 1034 // CHECK-LABEL: @test_mm512_maskz_extractf32x8_ps 1035 // CHECK: @llvm.x86.avx512.mask.vextractf32x8 1036 return _mm512_maskz_extractf32x8_ps(__U, __A, 1); 1037 } 1038 1039 __m128d test_mm512_extractf64x2_pd(__m512d __A) { 1040 // CHECK-LABEL: @test_mm512_extractf64x2_pd 1041 // CHECK: @llvm.x86.avx512.mask.vextractf64x2 1042 return _mm512_extractf64x2_pd(__A, 3); 1043 } 1044 1045 __m128d test_mm512_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m512d __A) { 1046 // CHECK-LABEL: @test_mm512_mask_extractf64x2_pd 1047 // CHECK: @llvm.x86.avx512.mask.vextractf64x2 1048 return _mm512_mask_extractf64x2_pd(__W, __U, __A, 3); 1049 } 1050 1051 __m128d test_mm512_maskz_extractf64x2_pd(__mmask8 __U, __m512d __A) { 1052 // CHECK-LABEL: @test_mm512_maskz_extractf64x2_pd 1053 // CHECK: @llvm.x86.avx512.mask.vextractf64x2 1054 return _mm512_maskz_extractf64x2_pd(__U, __A, 3); 1055 } 1056 1057 __m256i test_mm512_extracti32x8_epi32(__m512i __A) { 1058 // CHECK-LABEL: @test_mm512_extracti32x8_epi32 1059 // CHECK: @llvm.x86.avx512.mask.vextracti32x8 1060 return _mm512_extracti32x8_epi32(__A, 1); 1061 } 1062 1063 __m256i test_mm512_mask_extracti32x8_epi32(__m256i __W, __mmask8 __U, __m512i __A) { 1064 // CHECK-LABEL: @test_mm512_mask_extracti32x8_epi32 1065 // CHECK: @llvm.x86.avx512.mask.vextracti32x8 1066 return _mm512_mask_extracti32x8_epi32(__W, __U, __A, 1); 1067 } 1068 1069 __m256i test_mm512_maskz_extracti32x8_epi32(__mmask8 __U, __m512i __A) { 1070 // CHECK-LABEL: @test_mm512_maskz_extracti32x8_epi32 1071 // CHECK: @llvm.x86.avx512.mask.vextracti32x8 1072 return _mm512_maskz_extracti32x8_epi32(__U, __A, 1); 1073 } 1074 1075 __m128i test_mm512_extracti64x2_epi64(__m512i __A) { 1076 // CHECK-LABEL: @test_mm512_extracti64x2_epi64 1077 // CHECK: @llvm.x86.avx512.mask.vextracti64x2 1078 return _mm512_extracti64x2_epi64(__A, 3); 1079 } 1080 1081 __m128i test_mm512_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m512i __A) { 1082 // CHECK-LABEL: @test_mm512_mask_extracti64x2_epi64 1083 // CHECK: @llvm.x86.avx512.mask.vextracti64x2 1084 return _mm512_mask_extracti64x2_epi64(__W, __U, __A, 3); 1085 } 1086 1087 __m128i test_mm512_maskz_extracti64x2_epi64(__mmask8 __U, __m512i __A) { 1088 // CHECK-LABEL: @test_mm512_maskz_extracti64x2_epi64 1089 // CHECK: @llvm.x86.avx512.mask.vextracti64x2 1090 return _mm512_maskz_extracti64x2_epi64(__U, __A, 3); 1091 } 1092 1093 __m512 test_mm512_insertf32x8(__m512 __A, __m256 __B) { 1094 // CHECK-LABEL: @test_mm512_insertf32x8 1095 // CHECK: @llvm.x86.avx512.mask.insertf32x8 1096 return _mm512_insertf32x8(__A, __B, 1); 1097 } 1098 1099 __m512 test_mm512_mask_insertf32x8(__m512 __W, __mmask16 __U, __m512 __A, __m256 __B) { 1100 // CHECK-LABEL: @test_mm512_mask_insertf32x8 1101 // CHECK: @llvm.x86.avx512.mask.insertf32x8 1102 return _mm512_mask_insertf32x8(__W, __U, __A, __B, 1); 1103 } 1104 1105 __m512 test_mm512_maskz_insertf32x8(__mmask16 __U, __m512 __A, __m256 __B) { 1106 // CHECK-LABEL: @test_mm512_maskz_insertf32x8 1107 // CHECK: @llvm.x86.avx512.mask.insertf32x8 1108 return _mm512_maskz_insertf32x8(__U, __A, __B, 1); 1109 } 1110 1111 __m512d test_mm512_insertf64x2(__m512d __A, __m128d __B) { 1112 // CHECK-LABEL: @test_mm512_insertf64x2 1113 // CHECK: @llvm.x86.avx512.mask.insertf64x2 1114 return _mm512_insertf64x2(__A, __B, 3); 1115 } 1116 1117 __m512d test_mm512_mask_insertf64x2(__m512d __W, __mmask8 __U, __m512d __A, __m128d __B) { 1118 // CHECK-LABEL: @test_mm512_mask_insertf64x2 1119 // CHECK: @llvm.x86.avx512.mask.insertf64x2 1120 return _mm512_mask_insertf64x2(__W, __U, __A, __B, 3); 1121 } 1122 1123 __m512d test_mm512_maskz_insertf64x2(__mmask8 __U, __m512d __A, __m128d __B) { 1124 // CHECK-LABEL: @test_mm512_maskz_insertf64x2 1125 // CHECK: @llvm.x86.avx512.mask.insertf64x2 1126 return _mm512_maskz_insertf64x2(__U, __A, __B, 3); 1127 } 1128 1129 __m512i test_mm512_inserti32x8(__m512i __A, __m256i __B) { 1130 // CHECK-LABEL: @test_mm512_inserti32x8 1131 // CHECK: @llvm.x86.avx512.mask.inserti32x8 1132 return _mm512_inserti32x8(__A, __B, 1); 1133 } 1134 1135 __m512i test_mm512_mask_inserti32x8(__m512i __W, __mmask16 __U, __m512i __A, __m256i __B) { 1136 // CHECK-LABEL: @test_mm512_mask_inserti32x8 1137 // CHECK: @llvm.x86.avx512.mask.inserti32x8 1138 return _mm512_mask_inserti32x8(__W, __U, __A, __B, 1); 1139 } 1140 1141 __m512i test_mm512_maskz_inserti32x8(__mmask16 __U, __m512i __A, __m256i __B) { 1142 // CHECK-LABEL: @test_mm512_maskz_inserti32x8 1143 // CHECK: @llvm.x86.avx512.mask.inserti32x8 1144 return _mm512_maskz_inserti32x8(__U, __A, __B, 1); 1145 } 1146 1147 __m512i test_mm512_inserti64x2(__m512i __A, __m128i __B) { 1148 // CHECK-LABEL: @test_mm512_inserti64x2 1149 // CHECK: @llvm.x86.avx512.mask.inserti64x2 1150 return _mm512_inserti64x2(__A, __B, 1); 1151 } 1152 1153 __m512i test_mm512_mask_inserti64x2(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) { 1154 // CHECK-LABEL: @test_mm512_mask_inserti64x2 1155 // CHECK: @llvm.x86.avx512.mask.inserti64x2 1156 return _mm512_mask_inserti64x2(__W, __U, __A, __B, 1); 1157 } 1158 1159 __m512i test_mm512_maskz_inserti64x2(__mmask8 __U, __m512i __A, __m128i __B) { 1160 // CHECK-LABEL: @test_mm512_maskz_inserti64x2 1161 // CHECK: @llvm.x86.avx512.mask.inserti64x2 1162 return _mm512_maskz_inserti64x2(__U, __A, __B, 1); 1163 } 1164 __mmask8 test_mm512_mask_fpclass_pd_mask(__mmask8 __U, __m512d __A) { 1165 // CHECK-LABEL: @test_mm512_mask_fpclass_pd_mask 1166 // CHECK: @llvm.x86.avx512.mask.fpclass.pd.512 1167 return _mm512_mask_fpclass_pd_mask(__U, __A, 4); 1168 } 1169 1170 __mmask8 test_mm512_fpclass_pd_mask(__m512d __A) { 1171 // CHECK-LABEL: @test_mm512_fpclass_pd_mask 1172 // CHECK: @llvm.x86.avx512.mask.fpclass.pd.512 1173 return _mm512_fpclass_pd_mask(__A, 4); 1174 } 1175 1176 __mmask16 test_mm512_mask_fpclass_ps_mask(__mmask16 __U, __m512 __A) { 1177 // CHECK-LABEL: @test_mm512_mask_fpclass_ps_mask 1178 // CHECK: @llvm.x86.avx512.mask.fpclass.ps.512 1179 return _mm512_mask_fpclass_ps_mask(__U, __A, 4); 1180 } 1181 1182 __mmask16 test_mm512_fpclass_ps_mask(__m512 __A) { 1183 // CHECK-LABEL: @test_mm512_fpclass_ps_mask 1184 // CHECK: @llvm.x86.avx512.mask.fpclass.ps.512 1185 return _mm512_fpclass_ps_mask(__A, 4); 1186 } 1187 1188 __mmask8 test_mm_fpclass_sd_mask(__m128 __A) { 1189 // CHECK-LABEL: @test_mm_fpclass_sd_mask 1190 // CHECK: @llvm.x86.avx512.mask.fpclass.sd 1191 return _mm_fpclass_sd_mask (__A, 2); 1192 } 1193 1194 __mmask8 test_mm_mask_fpclass_sd_mask(__mmask8 __U, __m128 __A) { 1195 // CHECK-LABEL: @test_mm_mask_fpclass_sd_mask 1196 // CHECK: @llvm.x86.avx512.mask.fpclass.sd 1197 return _mm_mask_fpclass_sd_mask (__U, __A, 2); 1198 } 1199 1200 __mmask8 test_mm_fpclass_ss_mask(__m128 __A) { 1201 // CHECK-LABEL: @test_mm_fpclass_ss_mask 1202 // CHECK: @llvm.x86.avx512.mask.fpclass.ss 1203 return _mm_fpclass_ss_mask ( __A, 2); 1204 } 1205 1206 __mmask8 test_mm_mask_fpclass_ss_mask(__mmask8 __U, __m128 __A) { 1207 // CHECK-LABEL: @test_mm_mask_fpclass_ss_mask 1208 // CHECK: @llvm.x86.avx512.mask.fpclass.ss 1209 return _mm_mask_fpclass_ss_mask (__U, __A, 2); 1210 } 1211 1212