x86intrin-2.c
3.92 KB
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
134
135
136
137
// RUN: %clang_cc1 -fsyntax-only -ffreestanding -Wcast-qual %s -verify
// RUN: %clang_cc1 -fsyntax-only -ffreestanding -flax-vector-conversions=none -Wcast-qual %s -verify
// RUN: %clang_cc1 -fsyntax-only -ffreestanding -Wcast-qual -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);
}
void __attribute__((__target__("sse"))) mm_prefetch_wrap(const void *p) {
_mm_prefetch(p, 0x3);
}
__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