Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512pf -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 void test_mm512_mask_prefetch_i32gather_pd(__m256i index, __mmask8 mask, void const *addr, int hint) {
      9   // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_pd
     10   // CHECK: @llvm.x86.avx512.gatherpf.dpd
     11   return _mm512_mask_prefetch_i32gather_pd(index, mask, addr, 2, 1);
     12 }
     13 
     14 void test_mm512_prefetch_i32gather_pd(__m256i index, void const *addr, int hint) {
     15   // CHECK-LABEL: @test_mm512_prefetch_i32gather_pd
     16   // CHECK: @llvm.x86.avx512.gatherpf.dpd
     17   return _mm512_prefetch_i32gather_pd(index, addr, 2, 1);
     18 }
     19 
     20 void test_mm512_mask_prefetch_i32gather_ps(__m512i index, __mmask16 mask, void const *addr, int hint) {
     21   // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_ps
     22   // CHECK: @llvm.x86.avx512.gatherpf.dps
     23   return _mm512_mask_prefetch_i32gather_ps(index, mask, addr, 2, 1);
     24 }
     25 
     26 void test_mm512_prefetch_i32gather_ps(__m512i index,  void const *addr, int hint) {
     27   // CHECK-LABEL: @test_mm512_prefetch_i32gather_ps
     28   // CHECK: @llvm.x86.avx512.gatherpf.dps
     29   return _mm512_prefetch_i32gather_ps(index, addr, 2, 1);
     30 }
     31 
     32 void test_mm512_mask_prefetch_i64gather_pd(__m512i index, __mmask8 mask, void const *addr, int hint) {
     33   // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_pd
     34   // CHECK: @llvm.x86.avx512.gatherpf.qpd
     35   return _mm512_mask_prefetch_i64gather_pd(index, mask, addr, 2, 1);
     36 }
     37 
     38 void test_mm512_prefetch_i64gather_pd(__m512i index, void const *addr, int hint) {
     39   // CHECK-LABEL: @test_mm512_prefetch_i64gather_pd
     40   // CHECK: @llvm.x86.avx512.gatherpf.qpd
     41   return _mm512_prefetch_i64gather_pd(index, addr, 2, 1);
     42 }
     43 
     44 void test_mm512_mask_prefetch_i64gather_ps(__m512i index, __mmask8 mask, void const *addr, int hint) {
     45   // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_ps
     46   // CHECK: @llvm.x86.avx512.gatherpf.qps
     47   return _mm512_mask_prefetch_i64gather_ps(index, mask, addr, 2, 1);
     48 }
     49 
     50 void test_mm512_prefetch_i64gather_ps(__m512i index, void const *addr, int hint) {
     51   // CHECK-LABEL: @test_mm512_prefetch_i64gather_ps
     52   // CHECK: @llvm.x86.avx512.gatherpf.qps
     53   return _mm512_prefetch_i64gather_ps(index, addr, 2, 1);
     54 }
     55 
     56 void test_mm512_prefetch_i32scatter_pd(void *addr, __m256i index) {
     57   // CHECK-LABEL: @test_mm512_prefetch_i32scatter_pd
     58   // CHECK: @llvm.x86.avx512.scatterpf.dpd.512
     59   return _mm512_prefetch_i32scatter_pd(addr, index, 1, 2);
     60 }
     61 
     62 void test_mm512_mask_prefetch_i32scatter_pd(void *addr, __mmask8 mask, __m256i index) {
     63   // CHECK-LABEL: @test_mm512_mask_prefetch_i32scatter_pd
     64   // CHECK: @llvm.x86.avx512.scatterpf.dpd.512
     65   return _mm512_mask_prefetch_i32scatter_pd(addr, mask, index, 1, 2);
     66 }
     67 
     68 void test_mm512_prefetch_i32scatter_ps(void *addr, __m512i index) {
     69   // CHECK-LABEL: @test_mm512_prefetch_i32scatter_ps
     70   // CHECK: @llvm.x86.avx512.scatterpf.dps.512
     71   return _mm512_prefetch_i32scatter_ps(addr, index, 1, 2);
     72 }
     73 
     74 void test_mm512_mask_prefetch_i32scatter_ps(void *addr, __mmask16 mask, __m512i index) {
     75   // CHECK-LABEL: @test_mm512_mask_prefetch_i32scatter_ps
     76   // CHECK: @llvm.x86.avx512.scatterpf.dps.512
     77   return _mm512_mask_prefetch_i32scatter_ps(addr, mask, index, 1, 2);
     78 }
     79 
     80 void test_mm512_prefetch_i64scatter_pd(void *addr, __m512i index) {
     81   // CHECK-LABEL: @test_mm512_prefetch_i64scatter_pd
     82   // CHECK: @llvm.x86.avx512.scatterpf.qpd.512
     83   return _mm512_prefetch_i64scatter_pd(addr, index, 1, 2);
     84 }
     85 
     86 void test_mm512_mask_prefetch_i64scatter_pd(void *addr, __mmask16 mask, __m512i index) {
     87   // CHECK-LABEL: @test_mm512_mask_prefetch_i64scatter_pd
     88   // CHECK: @llvm.x86.avx512.scatterpf.qpd.512
     89   return _mm512_mask_prefetch_i64scatter_pd(addr, mask, index, 1, 2);
     90 }
     91 
     92 void test_mm512_prefetch_i64scatter_ps(void *addr, __m512i index) {
     93   // CHECK-LABEL: @test_mm512_prefetch_i64scatter_ps
     94   // CHECK: @llvm.x86.avx512.scatterpf.qps.512
     95   return _mm512_prefetch_i64scatter_ps(addr, index, 1, 2);
     96 }
     97 
     98 void test_mm512_mask_prefetch_i64scatter_ps(void *addr, __mmask16 mask, __m512i index) {
     99   // CHECK-LABEL: @test_mm512_mask_prefetch_i64scatter_ps
    100   // CHECK: @llvm.x86.avx512.scatterpf.qps.512
    101   return _mm512_mask_prefetch_i64scatter_ps(addr, mask, index, 1, 2);
    102 }
    103