1// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx2 -emit-llvm -o - | 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__m256i test_mm256_mpsadbw_epu8(__m256i x, __m256i y) { 9 // CHECK: @llvm.x86.avx2.mpsadbw({{.*}}, {{.*}}, i32 3) 10 return _mm256_mpsadbw_epu8(x, y, 3); 11} 12 13__m256i test_mm256_abs_epi8(__m256i a) { 14 // CHECK: @llvm.x86.avx2.pabs.b 15 return _mm256_abs_epi8(a); 16} 17 18__m256i test_mm256_abs_epi16(__m256i a) { 19 // CHECK: @llvm.x86.avx2.pabs.w 20 return _mm256_abs_epi16(a); 21} 22 23__m256i test_mm256_abs_epi32(__m256i a) { 24 // CHECK: @llvm.x86.avx2.pabs.d 25 return _mm256_abs_epi32(a); 26} 27 28__m256i test_mm256_packs_epi16(__m256i a, __m256i b) { 29 // CHECK: @llvm.x86.avx2.packsswb 30 return _mm256_packs_epi16(a, b); 31} 32 33__m256i test_mm256_packs_epi32(__m256i a, __m256i b) { 34 // CHECK: @llvm.x86.avx2.packssdw 35 return _mm256_packs_epi32(a, b); 36} 37 38__m256i test_mm256_packs_epu16(__m256i a, __m256i b) { 39 // CHECK: @llvm.x86.avx2.packuswb 40 return _mm256_packus_epi16(a, b); 41} 42 43__m256i test_mm256_packs_epu32(__m256i a, __m256i b) { 44 // CHECK: @llvm.x86.avx2.packusdw 45 return _mm256_packus_epi32(a, b); 46} 47 48__m256i test_mm256_add_epi8(__m256i a, __m256i b) { 49 // CHECK: add <32 x i8> 50 return _mm256_add_epi8(a, b); 51} 52 53__m256i test_mm256_add_epi16(__m256i a, __m256i b) { 54 // CHECK: add <16 x i16> 55 return _mm256_add_epi16(a, b); 56} 57 58__m256i test_mm256_add_epi32(__m256i a, __m256i b) { 59 // CHECK: add <8 x i32> 60 return _mm256_add_epi32(a, b); 61} 62 63__m256i test_mm256_add_epi64(__m256i a, __m256i b) { 64 // CHECK: add <4 x i64> 65 return _mm256_add_epi64(a, b); 66} 67 68__m256i test_mm256_adds_epi8(__m256i a, __m256i b) { 69 // CHECK: @llvm.x86.avx2.padds.b 70 return _mm256_adds_epi8(a, b); 71} 72 73__m256i test_mm256_adds_epi16(__m256i a, __m256i b) { 74 // CHECK: @llvm.x86.avx2.padds.w 75 return _mm256_adds_epi16(a, b); 76} 77 78__m256i test_mm256_adds_epu8(__m256i a, __m256i b) { 79 // CHECK: @llvm.x86.avx2.paddus.b 80 return _mm256_adds_epu8(a, b); 81} 82 83__m256i test_mm256_adds_epu16(__m256i a, __m256i b) { 84 // CHECK: @llvm.x86.avx2.paddus.w 85 return _mm256_adds_epu16(a, b); 86} 87 88__m256i test_mm256_alignr_epi8(__m256i a, __m256i b) { 89 // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 32, i32 33, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 48, i32 49> 90 return _mm256_alignr_epi8(a, b, 2); 91} 92 93__m256i test2_mm256_alignr_epi8(__m256i a, __m256i b) { 94 // CHECK: @llvm.x86.avx2.psrl.dq({{.*}}, i32 8) 95 return _mm256_alignr_epi8(a, b, 17); 96} 97 98__m256i test_mm256_sub_epi8(__m256i a, __m256i b) { 99 // CHECK: sub <32 x i8> 100 return _mm256_sub_epi8(a, b); 101} 102 103__m256i test_mm256_sub_epi16(__m256i a, __m256i b) { 104 // CHECK: sub <16 x i16> 105 return _mm256_sub_epi16(a, b); 106} 107 108__m256i test_mm256_sub_epi32(__m256i a, __m256i b) { 109 // CHECK: sub <8 x i32> 110 return _mm256_sub_epi32(a, b); 111} 112 113__m256i test_mm256_sub_epi64(__m256i a, __m256i b) { 114 // CHECK: sub <4 x i64> 115 return _mm256_sub_epi64(a, b); 116} 117 118__m256i test_mm256_subs_epi8(__m256i a, __m256i b) { 119 // CHECK: @llvm.x86.avx2.psubs.b 120 return _mm256_subs_epi8(a, b); 121} 122 123__m256i test_mm256_subs_epi16(__m256i a, __m256i b) { 124 // CHECK: @llvm.x86.avx2.psubs.w 125 return _mm256_subs_epi16(a, b); 126} 127 128__m256i test_mm256_subs_epu8(__m256i a, __m256i b) { 129 // CHECK: @llvm.x86.avx2.psubus.b 130 return _mm256_subs_epu8(a, b); 131} 132 133__m256i test_mm256_subs_epu16(__m256i a, __m256i b) { 134 // CHECK: @llvm.x86.avx2.psubus.w 135 return _mm256_subs_epu16(a, b); 136} 137 138__m256i test_mm256_and_si256(__m256i a, __m256i b) { 139 // CHECK: and <4 x i64> 140 return _mm256_and_si256(a, b); 141} 142 143__m256i test_mm256_andnot_si256(__m256i a, __m256i b) { 144 // CHECK: xor <4 x i64> 145 // CHECK: and <4 x i64> 146 return _mm256_andnot_si256(a, b); 147} 148 149__m256i test_mm256_or_si256(__m256i a, __m256i b) { 150 // CHECK: or <4 x i64> 151 return _mm256_or_si256(a, b); 152} 153 154__m256i test_mm256_xor_si256(__m256i a, __m256i b) { 155 // CHECK: xor <4 x i64> 156 return _mm256_xor_si256(a, b); 157} 158 159__m256i test_mm256_avg_epu8(__m256i a, __m256i b) { 160 // CHECK: @llvm.x86.avx2.pavg.b 161 return _mm256_avg_epu8(a, b); 162} 163 164__m256i test_mm256_avg_epu16(__m256i a, __m256i b) { 165 // CHECK: @llvm.x86.avx2.pavg.w 166 return _mm256_avg_epu16(a, b); 167} 168 169__m256i test_mm256_blendv_epi8(__m256i a, __m256i b, __m256i m) { 170 // CHECK: @llvm.x86.avx2.pblendvb 171 return _mm256_blendv_epi8(a, b, m); 172} 173 174__m256i test_mm256_blend_epi16(__m256i a, __m256i b) { 175 // CHECK: @llvm.x86.avx2.pblendw(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, i32 2) 176 return _mm256_blend_epi16(a, b, 2); 177} 178 179__m256i test_mm256_cmpeq_epi8(__m256i a, __m256i b) { 180 // CHECK: icmp eq <32 x i8> 181 return _mm256_cmpeq_epi8(a, b); 182} 183 184__m256i test_mm256_cmpeq_epi16(__m256i a, __m256i b) { 185 // CHECK: icmp eq <16 x i16> 186 return _mm256_cmpeq_epi16(a, b); 187} 188 189__m256i test_mm256_cmpeq_epi32(__m256i a, __m256i b) { 190 // CHECK: icmp eq <8 x i32> 191 return _mm256_cmpeq_epi32(a, b); 192} 193 194__m256i test_mm256_cmpeq_epi64(__m256i a, __m256i b) { 195 // CHECK: icmp eq <4 x i64> 196 return _mm256_cmpeq_epi64(a, b); 197} 198 199__m256i test_mm256_cmpgt_epi8(__m256i a, __m256i b) { 200 // CHECK: icmp sgt <32 x i8> 201 return _mm256_cmpgt_epi8(a, b); 202} 203 204__m256i test_mm256_cmpgt_epi16(__m256i a, __m256i b) { 205 // CHECK: icmp sgt <16 x i16> 206 return _mm256_cmpgt_epi16(a, b); 207} 208 209__m256i test_mm256_cmpgt_epi32(__m256i a, __m256i b) { 210 // CHECK: icmp sgt <8 x i32> 211 return _mm256_cmpgt_epi32(a, b); 212} 213 214__m256i test_mm256_cmpgt_epi64(__m256i a, __m256i b) { 215 // CHECK: icmp sgt <4 x i64> 216 return _mm256_cmpgt_epi64(a, b); 217} 218 219__m256i test_mm256_hadd_epi16(__m256i a, __m256i b) { 220 // CHECK: @llvm.x86.avx2.phadd.w 221 return _mm256_hadd_epi16(a, b); 222} 223 224__m256i test_mm256_hadd_epi32(__m256i a, __m256i b) { 225 // CHECK: @llvm.x86.avx2.phadd.d 226 return _mm256_hadd_epi32(a, b); 227} 228 229__m256i test_mm256_hadds_epi16(__m256i a, __m256i b) { 230 // CHECK: @llvm.x86.avx2.phadd.sw 231 return _mm256_hadds_epi16(a, b); 232} 233 234__m256i test_mm256_hsub_epi16(__m256i a, __m256i b) { 235 // CHECK: @llvm.x86.avx2.phsub.w 236 return _mm256_hsub_epi16(a, b); 237} 238 239__m256i test_mm256_hsub_epi32(__m256i a, __m256i b) { 240 // CHECK: @llvm.x86.avx2.phsub.d 241 return _mm256_hsub_epi32(a, b); 242} 243 244__m256i test_mm256_hsubs_epi16(__m256i a, __m256i b) { 245 // CHECK: @llvm.x86.avx2.phsub.sw 246 return _mm256_hsubs_epi16(a, b); 247} 248 249__m256i test_mm256_maddubs_epi16(__m256i a, __m256i b) { 250 // CHECK: @llvm.x86.avx2.pmadd.ub.sw 251 return _mm256_maddubs_epi16(a, b); 252} 253 254__m256i test_mm256_madd_epi16(__m256i a, __m256i b) { 255 // CHECK: @llvm.x86.avx2.pmadd.wd 256 return _mm256_madd_epi16(a, b); 257} 258 259__m256i test_mm256_max_epi8(__m256i a, __m256i b) { 260 // CHECK: @llvm.x86.avx2.pmaxs.b 261 return _mm256_max_epi8(a, b); 262} 263 264__m256i test_mm256_max_epi16(__m256i a, __m256i b) { 265 // CHECK: @llvm.x86.avx2.pmaxs.w 266 return _mm256_max_epi16(a, b); 267} 268 269__m256i test_mm256_max_epi32(__m256i a, __m256i b) { 270 // CHECK: @llvm.x86.avx2.pmaxs.d 271 return _mm256_max_epi32(a, b); 272} 273 274__m256i test_mm256_max_epu8(__m256i a, __m256i b) { 275 // CHECK: @llvm.x86.avx2.pmaxu.b 276 return _mm256_max_epu8(a, b); 277} 278 279__m256i test_mm256_max_epu16(__m256i a, __m256i b) { 280 // CHECK: @llvm.x86.avx2.pmaxu.w 281 return _mm256_max_epu16(a, b); 282} 283 284__m256i test_mm256_max_epu32(__m256i a, __m256i b) { 285 // CHECK: @llvm.x86.avx2.pmaxu.d 286 return _mm256_max_epu32(a, b); 287} 288 289__m256i test_mm256_min_epi8(__m256i a, __m256i b) { 290 // CHECK: @llvm.x86.avx2.pmins.b 291 return _mm256_min_epi8(a, b); 292} 293 294__m256i test_mm256_min_epi16(__m256i a, __m256i b) { 295 // CHECK: @llvm.x86.avx2.pmins.w 296 return _mm256_min_epi16(a, b); 297} 298 299__m256i test_mm256_min_epi32(__m256i a, __m256i b) { 300 // CHECK: @llvm.x86.avx2.pmins.d 301 return _mm256_min_epi32(a, b); 302} 303 304__m256i test_mm256_min_epu8(__m256i a, __m256i b) { 305 // CHECK: @llvm.x86.avx2.pminu.b 306 return _mm256_min_epu8(a, b); 307} 308 309__m256i test_mm256_min_epu16(__m256i a, __m256i b) { 310 // CHECK: @llvm.x86.avx2.pminu.w 311 return _mm256_min_epu16(a, b); 312} 313 314__m256i test_mm256_min_epu32(__m256i a, __m256i b) { 315 // CHECK: @llvm.x86.avx2.pminu.d 316 return _mm256_min_epu32(a, b); 317} 318 319int test_mm256_movemask_epi8(__m256i a) { 320 // CHECK: @llvm.x86.avx2.pmovmskb 321 return _mm256_movemask_epi8(a); 322} 323 324__m256i test_mm256_cvtepi8_epi16(__m128i a) { 325 // CHECK: @llvm.x86.avx2.pmovsxbw 326 return _mm256_cvtepi8_epi16(a); 327} 328 329__m256i test_mm256_cvtepi8_epi32(__m128i a) { 330 // CHECK: @llvm.x86.avx2.pmovsxbd 331 return _mm256_cvtepi8_epi32(a); 332} 333 334__m256i test_mm256_cvtepi8_epi64(__m128i a) { 335 // CHECK: @llvm.x86.avx2.pmovsxbq 336 return _mm256_cvtepi8_epi64(a); 337} 338 339__m256i test_mm256_cvtepi16_epi32(__m128i a) { 340 // CHECK: @llvm.x86.avx2.pmovsxwd 341 return _mm256_cvtepi16_epi32(a); 342} 343 344__m256i test_mm256_cvtepi16_epi64(__m128i a) { 345 // CHECK: @llvm.x86.avx2.pmovsxwq 346 return _mm256_cvtepi16_epi64(a); 347} 348 349__m256i test_mm256_cvtepi32_epi64(__m128i a) { 350 // CHECK: @llvm.x86.avx2.pmovsxdq 351 return _mm256_cvtepi32_epi64(a); 352} 353 354__m256i test_mm256_cvtepu8_epi16(__m128i a) { 355 // CHECK: @llvm.x86.avx2.pmovzxbw 356 return _mm256_cvtepu8_epi16(a); 357} 358 359__m256i test_mm256_cvtepu8_epi32(__m128i a) { 360 // CHECK: @llvm.x86.avx2.pmovzxbd 361 return _mm256_cvtepu8_epi32(a); 362} 363 364__m256i test_mm256_cvtepu8_epi64(__m128i a) { 365 // CHECK: @llvm.x86.avx2.pmovzxbq 366 return _mm256_cvtepu8_epi64(a); 367} 368 369__m256i test_mm256_cvtepu16_epi32(__m128i a) { 370 // CHECK: @llvm.x86.avx2.pmovzxwd 371 return _mm256_cvtepu16_epi32(a); 372} 373 374__m256i test_mm256_cvtepu16_epi64(__m128i a) { 375 // CHECK: @llvm.x86.avx2.pmovzxwq 376 return _mm256_cvtepu16_epi64(a); 377} 378 379__m256i test_mm256_cvtepu32_epi64(__m128i a) { 380 // CHECK: @llvm.x86.avx2.pmovzxdq 381 return _mm256_cvtepu32_epi64(a); 382} 383 384__m256i test_mm256_mul_epi32(__m256i a, __m256i b) { 385 // CHECK: @llvm.x86.avx2.pmul.dq 386 return _mm256_mul_epi32(a, b); 387} 388 389__m256i test_mm256_mulhrs_epi16(__m256i a, __m256i b) { 390 // CHECK: @llvm.x86.avx2.pmul.hr.sw 391 return _mm256_mulhrs_epi16(a, b); 392} 393 394__m256i test_mm256_mulhi_epu16(__m256i a, __m256i b) { 395 // CHECK: @llvm.x86.avx2.pmulhu.w 396 return _mm256_mulhi_epu16(a, b); 397} 398 399__m256i test_mm256_mulhi_epi16(__m256i a, __m256i b) { 400 // CHECK: @llvm.x86.avx2.pmulh.w 401 return _mm256_mulhi_epi16(a, b); 402} 403 404__m256i test_mm256_mullo_epi16(__m256i a, __m256i b) { 405 // CHECK: mul <16 x i16> 406 return _mm256_mullo_epi16(a, b); 407} 408 409__m256i test_mm256_mullo_epi32(__m256i a, __m256i b) { 410 // CHECK: mul <8 x i32> 411 return _mm256_mullo_epi32(a, b); 412} 413 414__m256i test_mm256_mul_epu32(__m256i a, __m256i b) { 415 // CHECK: @llvm.x86.avx2.pmulu.dq 416 return _mm256_mul_epu32(a, b); 417} 418 419__m256i test_mm256_shuffle_epi8(__m256i a, __m256i b) { 420 // CHECK: @llvm.x86.avx2.pshuf.b 421 return _mm256_shuffle_epi8(a, b); 422} 423 424__m256i test_mm256_shuffle_epi32(__m256i a) { 425 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 3, i32 3, i32 0, i32 0, i32 7, i32 7, i32 4, i32 4> 426 return _mm256_shuffle_epi32(a, 15); 427} 428 429__m256i test_mm256_shufflehi_epi16(__m256i a) { 430 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 6, i32 5, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 14, i32 13> 431 return _mm256_shufflehi_epi16(a, 107); 432} 433 434__m256i test_mm256_shufflelo_epi16(__m256i a) { 435 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 3, i32 0, i32 1, i32 1, i32 4, i32 5, i32 6, i32 7, i32 11, i32 8, i32 9, i32 9, i32 12, i32 13, i32 14, i32 15> 436 return _mm256_shufflelo_epi16(a, 83); 437} 438 439__m256i test_mm256_sign_epi8(__m256i a, __m256i b) { 440 // CHECK: @llvm.x86.avx2.psign.b 441 return _mm256_sign_epi8(a, b); 442} 443 444__m256i test_mm256_sign_epi16(__m256i a, __m256i b) { 445 // CHECK: @llvm.x86.avx2.psign.w 446 return _mm256_sign_epi16(a, b); 447} 448 449__m256i test_mm256_sign_epi32(__m256i a, __m256i b) { 450 // CHECK: @llvm.x86.avx2.psign.d 451 return _mm256_sign_epi32(a, b); 452} 453 454__m256i test_mm256_slli_si256(__m256i a) { 455 // CHECK: @llvm.x86.avx2.psll.dq 456 return _mm256_slli_si256(a, 3); 457} 458 459__m256i test_mm256_slli_epi16(__m256i a) { 460 // CHECK: @llvm.x86.avx2.pslli.w 461 return _mm256_slli_epi16(a, 3); 462} 463 464__m256i test_mm256_sll_epi16(__m256i a, __m128i b) { 465 // CHECK: @llvm.x86.avx2.psll.w 466 return _mm256_sll_epi16(a, b); 467} 468 469__m256i test_mm256_slli_epi32(__m256i a) { 470 // CHECK: @llvm.x86.avx2.pslli.d 471 return _mm256_slli_epi32(a, 3); 472} 473 474__m256i test_mm256_sll_epi32(__m256i a, __m128i b) { 475 // CHECK: @llvm.x86.avx2.psll.d 476 return _mm256_sll_epi32(a, b); 477} 478 479__m256i test_mm256_slli_epi64(__m256i a) { 480 // CHECK: @llvm.x86.avx2.pslli.q 481 return _mm256_slli_epi64(a, 3); 482} 483 484__m256i test_mm256_sll_epi64(__m256i a, __m128i b) { 485 // CHECK: @llvm.x86.avx2.psll.q 486 return _mm256_sll_epi64(a, b); 487} 488 489__m256i test_mm256_srai_epi16(__m256i a) { 490 // CHECK: @llvm.x86.avx2.psrai.w 491 return _mm256_srai_epi16(a, 3); 492} 493 494__m256i test_mm256_sra_epi16(__m256i a, __m128i b) { 495 // CHECK: @llvm.x86.avx2.psra.w 496 return _mm256_sra_epi16(a, b); 497} 498 499__m256i test_mm256_srai_epi32(__m256i a) { 500 // CHECK: @llvm.x86.avx2.psrai.d 501 return _mm256_srai_epi32(a, 3); 502} 503 504__m256i test_mm256_sra_epi32(__m256i a, __m128i b) { 505 // CHECK: @llvm.x86.avx2.psra.d 506 return _mm256_sra_epi32(a, b); 507} 508 509__m256i test_mm256_srli_si256(__m256i a) { 510 // CHECK: @llvm.x86.avx2.psrl.dq 511 return _mm256_srli_si256(a, 3); 512} 513 514__m256i test_mm256_srli_epi16(__m256i a) { 515 // CHECK: @llvm.x86.avx2.psrli.w 516 return _mm256_srli_epi16(a, 3); 517} 518 519__m256i test_mm256_srl_epi16(__m256i a, __m128i b) { 520 // CHECK: @llvm.x86.avx2.psrl.w 521 return _mm256_srl_epi16(a, b); 522} 523 524__m256i test_mm256_srli_epi32(__m256i a) { 525 // CHECK: @llvm.x86.avx2.psrli.d 526 return _mm256_srli_epi32(a, 3); 527} 528 529__m256i test_mm256_srl_epi32(__m256i a, __m128i b) { 530 // CHECK: @llvm.x86.avx2.psrl.d 531 return _mm256_srl_epi32(a, b); 532} 533 534__m256i test_mm256_srli_epi64(__m256i a) { 535 // CHECK: @llvm.x86.avx2.psrli.q 536 return _mm256_srli_epi64(a, 3); 537} 538 539__m256i test_mm256_srl_epi64(__m256i a, __m128i b) { 540 // CHECK: @llvm.x86.avx2.psrl.q 541 return _mm256_srl_epi64(a, b); 542} 543 544__m256i test_mm256_unpackhi_epi8(__m256i a, __m256i b) { 545 // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63> 546 return _mm256_unpackhi_epi8(a, b); 547} 548 549__m256i test_mm256_unpackhi_epi16(__m256i a, __m256i b) { 550 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 551 return _mm256_unpackhi_epi16(a, b); 552} 553 554__m256i test_mm256_unpackhi_epi32(__m256i a, __m256i b) { 555 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15> 556 return _mm256_unpackhi_epi32(a, b); 557} 558 559__m256i test_mm256_unpackhi_epi64(__m256i a, __m256i b) { 560 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 561 return _mm256_unpackhi_epi64(a, b); 562} 563 564__m256i test_mm256_unpacklo_epi8(__m256i a, __m256i b) { 565 // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55> 566 return _mm256_unpacklo_epi8(a, b); 567} 568 569__m256i test_mm256_unpacklo_epi16(__m256i a, __m256i b) { 570 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27> 571 return _mm256_unpacklo_epi16(a, b); 572} 573 574__m256i test_mm256_unpacklo_epi32(__m256i a, __m256i b) { 575 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13> 576 return _mm256_unpacklo_epi32(a, b); 577} 578 579__m256i test_mm256_unpacklo_epi64(__m256i a, __m256i b) { 580 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 581 return _mm256_unpacklo_epi64(a, b); 582} 583 584__m256i test_mm256_stream_load_si256(__m256i *a) { 585 // CHECK: @llvm.x86.avx2.movntdqa 586 return _mm256_stream_load_si256(a); 587} 588 589__m128 test_mm_broadcastss_ps(__m128 a) { 590 // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps 591 return _mm_broadcastss_ps(a); 592} 593 594__m256 test_mm256_broadcastss_ps(__m128 a) { 595 // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps.256 596 return _mm256_broadcastss_ps(a); 597} 598 599__m256d test_mm256_broadcastsd_pd(__m128d a) { 600 // check: @llvm.x86.avx2.vbroadcast.sd.pd.256 601 return _mm256_broadcastsd_pd(a); 602} 603 604__m256i test_mm_broadcastsi128_si256(__m128i *a) { 605 // CHECK: @llvm.x86.avx2.vbroadcasti128 606 return _mm_broadcastsi128_si256(a); 607} 608 609__m128i test_mm_blend_epi32(__m128i a, __m128i b) { 610 // CHECK: @llvm.x86.avx2.pblendd.128 611 return _mm_blend_epi32(a, b, 57); 612} 613 614__m256i test_mm256_blend_epi32(__m256i a, __m256i b) { 615 // CHECK: @llvm.x86.avx2.pblendd.256 616 return _mm256_blend_epi32(a, b, 57); 617} 618 619__m256i test_mm256_broadcastb_epi8(__m128i a) { 620 // CHECK: @llvm.x86.avx2.pbroadcastb.256 621 return _mm256_broadcastb_epi8(a); 622} 623 624__m256i test_mm256_broadcastw_epi16(__m128i a) { 625 // CHECK: @llvm.x86.avx2.pbroadcastw.256 626 return _mm256_broadcastw_epi16(a); 627} 628 629__m256i test_mm256_broadcastd_epi32(__m128i a) { 630 // CHECK: @llvm.x86.avx2.pbroadcastd.256 631 return _mm256_broadcastd_epi32(a); 632} 633 634__m256i test_mm256_broadcastq_epi64(__m128i a) { 635 // CHECK: @llvm.x86.avx2.pbroadcastq.256 636 return _mm256_broadcastq_epi64(a); 637} 638 639__m128i test_mm_broadcastb_epi8(__m128i a) { 640 // CHECK: @llvm.x86.avx2.pbroadcastb.128 641 return _mm_broadcastb_epi8(a); 642} 643 644__m128i test_mm_broadcastw_epi16(__m128i a) { 645 // CHECK: @llvm.x86.avx2.pbroadcastw.128 646 return _mm_broadcastw_epi16(a); 647} 648 649__m128i test_mm_broadcastd_epi32(__m128i a) { 650 // CHECK: @llvm.x86.avx2.pbroadcastd.128 651 return _mm_broadcastd_epi32(a); 652} 653 654__m128i test_mm_broadcastq_epi64(__m128i a) { 655 // CHECK: @llvm.x86.avx2.pbroadcastq.128 656 return _mm_broadcastq_epi64(a); 657} 658 659__m256i test_mm256_permutevar8x32_epi32(__m256i a, __m256i b) { 660 // CHECK: @llvm.x86.avx2.permd 661 return _mm256_permutevar8x32_epi32(a, b); 662} 663 664__m256d test_mm256_permute4x64_pd(__m256d a) { 665 // CHECK: shufflevector{{.*}}<i32 1, i32 2, i32 1, i32 0> 666 return _mm256_permute4x64_pd(a, 25); 667} 668 669__m256 test_mm256_permutevar8x32_ps(__m256 a, __m256 b) { 670 // CHECK: @llvm.x86.avx2.permps 671 return _mm256_permutevar8x32_ps(a, b); 672} 673 674__m256i test_mm256_permute4x64_epi64(__m256i a) { 675 // CHECK: shufflevector{{.*}}<i32 3, i32 0, i32 2, i32 0> 676 return _mm256_permute4x64_epi64(a, 35); 677} 678 679__m256i test_mm256_permute2x128_si256(__m256i a, __m256i b) { 680 // CHECK: @llvm.x86.avx2.vperm2i128 681 return _mm256_permute2x128_si256(a, b, 0x31); 682} 683 684__m128i test_mm256_extracti128_si256(__m256i a) { 685 // CHECK: @llvm.x86.avx2.vextracti128 686 return _mm256_extracti128_si256(a, 1); 687} 688 689__m256i test_mm256_inserti128_si256(__m256i a, __m128i b) { 690 // CHECK: @llvm.x86.avx2.vinserti128 691 return _mm256_inserti128_si256(a, b, 1); 692} 693 694__m256i test_mm256_maskload_epi32(int const *a, __m256i m) { 695 // CHECK: @llvm.x86.avx2.maskload.d.256 696 return _mm256_maskload_epi32(a, m); 697} 698 699__m256i test_mm256_maskload_epi64(long long const *a, __m256i m) { 700 // CHECK: @llvm.x86.avx2.maskload.q.256 701 return _mm256_maskload_epi64(a, m); 702} 703 704__m128i test_mm_maskload_epi32(int const *a, __m128i m) { 705 // CHECK: @llvm.x86.avx2.maskload.d 706 return _mm_maskload_epi32(a, m); 707} 708 709__m128i test_mm_maskload_epi64(long long const *a, __m128i m) { 710 // CHECK: @llvm.x86.avx2.maskload.q 711 return _mm_maskload_epi64(a, m); 712} 713 714void test_mm256_maskstore_epi32(int *a, __m256i m, __m256i b) { 715 // CHECK: @llvm.x86.avx2.maskstore.d.256 716 _mm256_maskstore_epi32(a, m, b); 717} 718 719void test_mm256_maskstore_epi64(long long *a, __m256i m, __m256i b) { 720 // CHECK: @llvm.x86.avx2.maskstore.q.256 721 _mm256_maskstore_epi64(a, m, b); 722} 723 724void test_mm_maskstore_epi32(int *a, __m128i m, __m128i b) { 725 // CHECK: @llvm.x86.avx2.maskstore.d 726 _mm_maskstore_epi32(a, m, b); 727} 728 729void test_mm_maskstore_epi64(long long *a, __m128i m, __m128i b) { 730 // CHECK: @llvm.x86.avx2.maskstore.q 731 _mm_maskstore_epi64(a, m, b); 732} 733 734__m256i test_mm256_sllv_epi32(__m256i a, __m256i b) { 735 // CHECK: @llvm.x86.avx2.psllv.d.256 736 return _mm256_sllv_epi32(a, b); 737} 738 739__m128i test_mm_sllv_epi32(__m128i a, __m128i b) { 740 // CHECK: @llvm.x86.avx2.psllv.d 741 return _mm_sllv_epi32(a, b); 742} 743 744__m256i test_mm256_sllv_epi64(__m256i a, __m256i b) { 745 // CHECK: @llvm.x86.avx2.psllv.q.256 746 return _mm256_sllv_epi64(a, b); 747} 748 749__m128i test_mm_sllv_epi64(__m128i a, __m128i b) { 750 // CHECK: @llvm.x86.avx2.psllv.q 751 return _mm_sllv_epi64(a, b); 752} 753 754__m256i test_mm256_srav_epi32(__m256i a, __m256i b) { 755 // CHECK: @llvm.x86.avx2.psrav.d.256 756 return _mm256_srav_epi32(a, b); 757} 758 759__m128i test_mm_srav_epi32(__m128i a, __m128i b) { 760 // CHECK: @llvm.x86.avx2.psrav.d 761 return _mm_srav_epi32(a, b); 762} 763 764__m256i test_mm256_srlv_epi32(__m256i a, __m256i b) { 765 // CHECK: @llvm.x86.avx2.psrlv.d.256 766 return _mm256_srlv_epi32(a, b); 767} 768 769__m128i test_mm_srlv_epi32(__m128i a, __m128i b) { 770 // CHECK: @llvm.x86.avx2.psrlv.d 771 return _mm_srlv_epi32(a, b); 772} 773 774__m256i test_mm256_srlv_epi64(__m256i a, __m256i b) { 775 // CHECK: @llvm.x86.avx2.psrlv.q.256 776 return _mm256_srlv_epi64(a, b); 777} 778 779__m128i test_mm_srlv_epi64(__m128i a, __m128i b) { 780 // CHECK: @llvm.x86.avx2.psrlv.q 781 return _mm_srlv_epi64(a, b); 782} 783