reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify
// RUN: %clang_cc1 -fsyntax-only -ffreestanding -flax-vector-conversions=none %s -verify
// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify
// expected-no-diagnostics

#if defined(i386) || defined(__x86_64__)

// Include the metaheader that includes all x86 intrinsic headers.
#include <x86intrin.h>

void __attribute__((__target__("mmx"))) mm_empty_wrap(void) {
  _mm_empty();
}

__m128 __attribute__((__target__("sse"))) mm_add_ss_wrap(__m128 a, __m128 b) {
  return _mm_add_ss(a, b);
}

__m128d __attribute__((__target__("sse2"))) mm_sqrt_sd_wrap(__m128d a, __m128d b) {
  return _mm_sqrt_sd(a, b);
}

void __attribute__((__target__("sse3"))) mm_mwait_wrap(int a) {
  _mm_mwait(0, 0);
}

__m64 __attribute__((__target__("ssse3"))) mm_abs_pi8_wrap(__m64 a) {
  return _mm_abs_pi8(a);
}

__m128i __attribute__((__target__("sse4.1"))) mm_minpos_epu16_wrap(__m128i v) {
  return _mm_minpos_epu16(v);
}

unsigned int __attribute__((__target__("sse4.2"))) mm_crc32_u8_wrap(unsigned int c, unsigned char d) {
  return _mm_crc32_u8(c, d);
}

__m128i __attribute__((__target__("aes"))) mm_aesenc_si128_wrap(__m128i v, __m128i r) {
  return _mm_aesenc_si128(v, r);
}

__m256d __attribute__((__target__("avx"))) mm256_add_pd_wrap(__m256d a, __m256d b) {
  return _mm256_add_pd(a, b);
}

__m256i __attribute__((__target__("avx2"))) mm256_abs_epi8_wrap(__m256i a) {
  return _mm256_abs_epi8(a);
}

unsigned short __attribute__((__target__("bmi"))) tzcnt_u16_wrap(unsigned short x) {
  return __tzcnt_u16(x);
}

unsigned int __attribute__((__target__("bmi2"))) bzhi_u32_wrap(unsigned int x, unsigned int y) {
  return _bzhi_u32(x, y);
}

unsigned short __attribute__((__target__("lzcnt"))) lzcnt16_wrap(unsigned short x) {
  return __lzcnt16(x);
}

__m256d __attribute__((__target__("fma"))) mm256_fmsubadd_pd_wrap(__m256d a, __m256d b, __m256d c) {
  return _mm256_fmsubadd_pd(a, b, c);
}

__m512i __attribute__((__target__("avx512f"))) mm512_setzero_si512_wrap(void) {
  return _mm512_setzero_si512();
}

__mmask8 __attribute__((__target__("avx512vl"))) mm_cmpeq_epi32_mask_wrap(__m128i a, __m128i b) {
  return _mm_cmpeq_epi32_mask(a, b);
}

__m512i __attribute__((__target__("avx512dq"))) mm512_mullo_epi64_wrap(__m512i a, __m512i b) {
  return _mm512_mullo_epi64(a, b);
}

__mmask16 __attribute__((__target__("avx512vl,avx512bw"))) mm_cmpeq_epi8_mask_wrap(__m128i a, __m128i b) {
  return _mm_cmpeq_epi8_mask(a, b);
}

__m256i __attribute__((__target__("avx512vl,avx512dq"))) mm256_mullo_epi64_wrap(__m256i a, __m256i b) {
  return _mm256_mullo_epi64(a, b);
}

int __attribute__((__target__("rdrnd"))) rdrand16_step_wrap(unsigned short *p) {
  return _rdrand16_step(p);
}

#if defined(__x86_64__)
unsigned int __attribute__((__target__("fsgsbase"))) readfsbase_u32_wrap(void) {
  return _readfsbase_u32();
}
#endif

unsigned int __attribute__((__target__("rtm"))) xbegin_wrap(void) {
  return _xbegin();
}

__m128i __attribute__((__target__("sha"))) mm_sha1nexte_epu32_wrap(__m128i x, __m128i y) {
  return _mm_sha1nexte_epu32(x, y);
}

int __attribute__((__target__("rdseed"))) rdseed16_step_wrap(unsigned short *p) {
  return _rdseed16_step(p);
}

__m128i __attribute__((__target__("sse4a"))) mm_extract_si64_wrap(__m128i x, __m128i y) {
  return _mm_extract_si64(x, y);
}

__m128 __attribute__((__target__("fma4"))) mm_macc_ps_wrap(__m128 a, __m128 b, __m128 c) {
  return _mm_macc_ps(a, b, c);
}

__m256 __attribute__((__target__("xop"))) mm256_frcz_ps_wrap(__m256 a) {
  return _mm256_frcz_ps(a);
}

unsigned int __attribute__((__target__("tbm"))) blcfill_u32_wrap(unsigned int a) {
  return __blcfill_u32(a);
}

__m128 __attribute__((__target__("f16c"))) mm_cvtph_ps_wrap(__m128i a) {
  return _mm_cvtph_ps(a);
}

int __attribute__((__target__("rtm"))) xtest_wrap(void) {
  return _xtest();
}

#endif