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 __m512 test_mm512_range_ps(__m512 __A, __m512 __B) { 639 // CHECK-LABEL: @test_mm512_range_ps 640 // CHECK: @llvm.x86.avx512.mask.range.ps.512 641 return _mm512_range_ps(__A, __B, 4); 642 } 643 644 __m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 645 // CHECK-LABEL: @test_mm512_mask_range_ps 646 // CHECK: @llvm.x86.avx512.mask.range.ps.512 647 return _mm512_mask_range_ps(__W, __U, __A, __B, 4); 648 } 649 650 __m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) { 651 // CHECK-LABEL: @test_mm512_maskz_range_ps 652 // CHECK: @llvm.x86.avx512.mask.range.ps.512 653 return _mm512_maskz_range_ps(__U, __A, __B, 4); 654 } 655 656 __m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) { 657 // CHECK-LABEL: @test_mm512_range_round_ps 658 // CHECK: @llvm.x86.avx512.mask.range.ps.512 659 return _mm512_range_round_ps(__A, __B, 4, 8); 660 } 661 662 __m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 663 // CHECK-LABEL: @test_mm512_mask_range_round_ps 664 // CHECK: @llvm.x86.avx512.mask.range.ps.512 665 return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 666 } 667 668 __m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 669 // CHECK-LABEL: @test_mm512_maskz_range_round_ps 670 // CHECK: @llvm.x86.avx512.mask.range.ps.512 671 return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8); 672 } 673 674 __m512d test_mm512_reduce_pd(__m512d __A) { 675 // CHECK-LABEL: @test_mm512_reduce_pd 676 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 677 return _mm512_reduce_pd(__A, 4); 678 } 679 680 __m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) { 681 // CHECK-LABEL: @test_mm512_mask_reduce_pd 682 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 683 return _mm512_mask_reduce_pd(__W, __U, __A, 4); 684 } 685 686 __m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) { 687 // CHECK-LABEL: @test_mm512_maskz_reduce_pd 688 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 689 return _mm512_maskz_reduce_pd(__U, __A, 4); 690 } 691 692 __m512 test_mm512_reduce_ps(__m512 __A) { 693 // CHECK-LABEL: @test_mm512_reduce_ps 694 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 695 return _mm512_reduce_ps(__A, 4); 696 } 697 698 __m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) { 699 // CHECK-LABEL: @test_mm512_mask_reduce_ps 700 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 701 return _mm512_mask_reduce_ps(__W, __U, __A, 4); 702 } 703 704 __m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) { 705 // CHECK-LABEL: @test_mm512_maskz_reduce_ps 706 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 707 return _mm512_maskz_reduce_ps(__U, __A, 4); 708 } 709 710 __m512d test_mm512_reduce_round_pd(__m512d __A) { 711 // CHECK-LABEL: @test_mm512_reduce_round_pd 712 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 713 return _mm512_reduce_round_pd(__A, 4, 8); 714 } 715 716 __m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) { 717 // CHECK-LABEL: @test_mm512_mask_reduce_round_pd 718 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 719 return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8); 720 } 721 722 __m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) { 723 // CHECK-LABEL: @test_mm512_maskz_reduce_round_pd 724 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512 725 return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8); 726 } 727 728 __m512 test_mm512_reduce_round_ps(__m512 __A) { 729 // CHECK-LABEL: @test_mm512_reduce_round_ps 730 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 731 return _mm512_reduce_round_ps(__A, 4, 8); 732 } 733 734 __m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) { 735 // CHECK-LABEL: @test_mm512_mask_reduce_round_ps 736 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 737 return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8); 738 } 739 740 __m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) { 741 // CHECK-LABEL: @test_mm512_maskz_reduce_round_ps 742 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512 743 return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8); 744 } 745 746