aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/__wmmintrin_aes.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/__wmmintrin_pclmul.h4
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/adxintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/ammintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx2intrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/avxintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/bmi2intrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/bmiintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/emmintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/f16cintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/fma4intrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/fmaintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/immintrin.h74
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/lzcntintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/mm3dnow.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/mmintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/module.modulemap25
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/nmmintrin.h5
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/pmmintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/popcntintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/rdseedintrin.h5
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/rtmintrin.h2
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/shaintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/smmintrin.h15
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/tbmintrin.h6
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/tmmintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/wmmintrin.h9
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/x86intrin.h24
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/xmmintrin.h8
-rw-r--r--contrib/llvm/tools/clang/lib/Headers/xopintrin.h8
36 files changed, 262 insertions, 47 deletions
diff --git a/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_aes.h b/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_aes.h
index 81b2b8d0b0a4..9f594ee56092 100644
--- a/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_aes.h
+++ b/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_aes.h
@@ -25,8 +25,12 @@
#include <emmintrin.h>
+#if !defined (__AES__)
+# error "AES instructions not enabled"
+#else
+
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("aes")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_aesenc_si128(__m128i __V, __m128i __R)
@@ -63,4 +67,6 @@ _mm_aesimc_si128(__m128i __V)
#undef __DEFAULT_FN_ATTRS
+#endif
+
#endif /* _WMMINTRIN_AES_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_pclmul.h b/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_pclmul.h
index 48a85d24ee1b..8d1f1b7c0868 100644
--- a/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_pclmul.h
+++ b/contrib/llvm/tools/clang/lib/Headers/__wmmintrin_pclmul.h
@@ -23,8 +23,12 @@
#ifndef _WMMINTRIN_PCLMUL_H
#define _WMMINTRIN_PCLMUL_H
+#if !defined (__PCLMUL__)
+# error "PCLMUL instruction is not enabled"
+#else
#define _mm_clmulepi64_si128(__X, __Y, __I) \
((__m128i)__builtin_ia32_pclmulqdq128((__v2di)(__m128i)(__X), \
(__v2di)(__m128i)(__Y), (char)(__I)))
+#endif
#endif /* _WMMINTRIN_PCLMUL_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/adxintrin.h b/contrib/llvm/tools/clang/lib/Headers/adxintrin.h
index ee347284178e..b8eb9cbf6ebb 100644
--- a/contrib/llvm/tools/clang/lib/Headers/adxintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/adxintrin.h
@@ -32,7 +32,8 @@
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* Intrinsics that are available only if __ADX__ defined */
-static __inline unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx")))
+#ifdef __ADX__
+static __inline unsigned char __DEFAULT_FN_ATTRS
_addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y,
unsigned int *__p)
{
@@ -40,13 +41,14 @@ _addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y,
}
#ifdef __x86_64__
-static __inline unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx")))
+static __inline unsigned char __DEFAULT_FN_ATTRS
_addcarryx_u64(unsigned char __cf, unsigned long long __x,
unsigned long long __y, unsigned long long *__p)
{
return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);
}
#endif
+#endif
/* Intrinsics that are also available if __ADX__ undefined */
static __inline unsigned char __DEFAULT_FN_ATTRS
diff --git a/contrib/llvm/tools/clang/lib/Headers/ammintrin.h b/contrib/llvm/tools/clang/lib/Headers/ammintrin.h
index 91c633305b8b..4d0e770ff9e4 100644
--- a/contrib/llvm/tools/clang/lib/Headers/ammintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/ammintrin.h
@@ -24,10 +24,14 @@
#ifndef __AMMINTRIN_H
#define __AMMINTRIN_H
+#ifndef __SSE4A__
+#error "SSE4A instruction set not enabled"
+#else
+
#include <pmmintrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse4a")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/// \brief Extracts the specified bits from the lower 64 bits of the 128-bit
/// integer vector operand at the index idx and of the length len.
@@ -206,4 +210,6 @@ _mm_stream_ss(float *__p, __m128 __a)
#undef __DEFAULT_FN_ATTRS
+#endif /* __SSE4A__ */
+
#endif /* __AMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h b/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h
index cfa91410a338..d8b6b0aa4d23 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h
@@ -29,7 +29,7 @@
#define __AVX2INTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx2")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* SSE4 Multiple Packed Sums of Absolute Difference. */
#define _mm256_mpsadbw_epu8(X, Y, M) __builtin_ia32_mpsadbw256((X), (Y), (M))
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h
index b0d3462d4db6..9e8297a9c9a5 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h
@@ -34,7 +34,7 @@ typedef char __v64qi __attribute__ ((__vector_size__ (64)));
typedef short __v32hi __attribute__ ((__vector_size__ (64)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline __v64qi __DEFAULT_FN_ATTRS
_mm512_setzero_qi (void) {
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h
index 8a69f7ffbf34..c946de286742 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h
@@ -29,7 +29,7 @@
#define __AVX512DQINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h
index 099114453646..4f7cba0b1507 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h
@@ -47,7 +47,7 @@ typedef unsigned short __mmask16;
#define _MM_FROUND_CUR_DIRECTION 0x04
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* Create vectors with repeated elements */
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h
index eb198a5ade6f..74ec17583096 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h
@@ -29,7 +29,7 @@
#define __AVX512VLBWINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* Integer compare */
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h
index 032070bfb902..1edf29d128ee 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h
@@ -29,7 +29,7 @@
#define __AVX512VLDQINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512dq")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mullo_epi64 (__m256i __A, __m256i __B) {
diff --git a/contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h b/contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h
index 73f46d101a55..fc1b9d6e7a23 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h
@@ -29,7 +29,7 @@
#define __AVX512VLINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* Integer compare */
diff --git a/contrib/llvm/tools/clang/lib/Headers/avxintrin.h b/contrib/llvm/tools/clang/lib/Headers/avxintrin.h
index 6a9972b65bb0..c1bc85b39e82 100644
--- a/contrib/llvm/tools/clang/lib/Headers/avxintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/avxintrin.h
@@ -40,7 +40,7 @@ typedef double __m256d __attribute__((__vector_size__(32)));
typedef long long __m256i __attribute__((__vector_size__(32)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* Arithmetic */
static __inline __m256d __DEFAULT_FN_ATTRS
diff --git a/contrib/llvm/tools/clang/lib/Headers/bmi2intrin.h b/contrib/llvm/tools/clang/lib/Headers/bmi2intrin.h
index fdae82cf2ba7..c63397c96ebe 100644
--- a/contrib/llvm/tools/clang/lib/Headers/bmi2intrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/bmi2intrin.h
@@ -25,11 +25,15 @@
#error "Never use <bmi2intrin.h> directly; include <x86intrin.h> instead."
#endif
+#ifndef __BMI2__
+# error "BMI2 instruction set not enabled"
+#endif /* __BMI2__ */
+
#ifndef __BMI2INTRIN_H
#define __BMI2INTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi2")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ unsigned int __DEFAULT_FN_ATTRS
_bzhi_u32(unsigned int __X, unsigned int __Y)
diff --git a/contrib/llvm/tools/clang/lib/Headers/bmiintrin.h b/contrib/llvm/tools/clang/lib/Headers/bmiintrin.h
index dc2f83f3e2d1..0e93d575cb8b 100644
--- a/contrib/llvm/tools/clang/lib/Headers/bmiintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/bmiintrin.h
@@ -25,6 +25,10 @@
#error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."
#endif
+#ifndef __BMI__
+# error "BMI instruction set not enabled"
+#endif /* __BMI__ */
+
#ifndef __BMIINTRIN_H
#define __BMIINTRIN_H
@@ -37,7 +41,7 @@
#define _tzcnt_u32(a) (__tzcnt_u32((a)))
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ unsigned short __DEFAULT_FN_ATTRS
__tzcnt_u16(unsigned short __X)
diff --git a/contrib/llvm/tools/clang/lib/Headers/emmintrin.h b/contrib/llvm/tools/clang/lib/Headers/emmintrin.h
index e22ffaf19240..656bc19d3dea 100644
--- a/contrib/llvm/tools/clang/lib/Headers/emmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/emmintrin.h
@@ -24,6 +24,10 @@
#ifndef __EMMINTRIN_H
#define __EMMINTRIN_H
+#ifndef __SSE2__
+#error "SSE2 instruction set not enabled"
+#else
+
#include <xmmintrin.h>
typedef double __m128d __attribute__((__vector_size__(16)));
@@ -36,7 +40,7 @@ typedef short __v8hi __attribute__((__vector_size__(16)));
typedef char __v16qi __attribute__((__vector_size__(16)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse2")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_add_sd(__m128d __a, __m128d __b)
@@ -1471,4 +1475,6 @@ _mm_pause(void)
#define _MM_SHUFFLE2(x, y) (((x) << 1) | (y))
+#endif /* __SSE2__ */
+
#endif /* __EMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/f16cintrin.h b/contrib/llvm/tools/clang/lib/Headers/f16cintrin.h
index 9349b78fe84c..3730ae0d3eeb 100644
--- a/contrib/llvm/tools/clang/lib/Headers/f16cintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/f16cintrin.h
@@ -25,6 +25,10 @@
#error "Never use <f16cintrin.h> directly; include <x86intrin.h> instead."
#endif
+#ifndef __F16C__
+# error "F16C instruction is not enabled"
+#endif /* __F16C__ */
+
#ifndef __F16CINTRIN_H
#define __F16CINTRIN_H
@@ -32,7 +36,7 @@ typedef float __v8sf __attribute__ ((__vector_size__ (32)));
typedef float __m256 __attribute__ ((__vector_size__ (32)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("f16c")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
#define _mm_cvtps_ph(a, imm) __extension__ ({ \
__m128 __a = (a); \
diff --git a/contrib/llvm/tools/clang/lib/Headers/fma4intrin.h b/contrib/llvm/tools/clang/lib/Headers/fma4intrin.h
index f1178877b252..d6405cf02922 100644
--- a/contrib/llvm/tools/clang/lib/Headers/fma4intrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/fma4intrin.h
@@ -28,10 +28,14 @@
#ifndef __FMA4INTRIN_H
#define __FMA4INTRIN_H
+#ifndef __FMA4__
+# error "FMA4 instruction set is not enabled"
+#else
+
#include <pmmintrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("fma4")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_macc_ps(__m128 __A, __m128 __B, __m128 __C)
@@ -227,4 +231,6 @@ _mm256_msubadd_pd(__m256d __A, __m256d __B, __m256d __C)
#undef __DEFAULT_FN_ATTRS
+#endif /* __FMA4__ */
+
#endif /* __FMA4INTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/fmaintrin.h b/contrib/llvm/tools/clang/lib/Headers/fmaintrin.h
index 114a14380ea0..ad693fed0bfd 100644
--- a/contrib/llvm/tools/clang/lib/Headers/fmaintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/fmaintrin.h
@@ -28,8 +28,12 @@
#ifndef __FMAINTRIN_H
#define __FMAINTRIN_H
+#ifndef __FMA__
+# error "FMA instruction set is not enabled"
+#else
+
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("fma")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_fmadd_ps(__m128 __A, __m128 __B, __m128 __C)
@@ -225,4 +229,6 @@ _mm256_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C)
#undef __DEFAULT_FN_ATTRS
+#endif /* __FMA__ */
+
#endif /* __FMAINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/immintrin.h b/contrib/llvm/tools/clang/lib/Headers/immintrin.h
index 604bc8ca5b39..21ad3281f850 100644
--- a/contrib/llvm/tools/clang/lib/Headers/immintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/immintrin.h
@@ -24,123 +24,175 @@
#ifndef __IMMINTRIN_H
#define __IMMINTRIN_H
+#ifdef __MMX__
#include <mmintrin.h>
+#endif
+#ifdef __SSE__
#include <xmmintrin.h>
+#endif
+#ifdef __SSE2__
#include <emmintrin.h>
+#endif
+#ifdef __SSE3__
#include <pmmintrin.h>
+#endif
+#ifdef __SSSE3__
#include <tmmintrin.h>
+#endif
+#if defined (__SSE4_2__) || defined (__SSE4_1__)
#include <smmintrin.h>
+#endif
+#if defined (__AES__) || defined (__PCLMUL__)
#include <wmmintrin.h>
+#endif
+#ifdef __AVX__
#include <avxintrin.h>
+#endif
+#ifdef __AVX2__
#include <avx2intrin.h>
+#endif
+#ifdef __BMI__
#include <bmiintrin.h>
+#endif
+#ifdef __BMI2__
#include <bmi2intrin.h>
+#endif
+#ifdef __LZCNT__
#include <lzcntintrin.h>
+#endif
+#ifdef __FMA__
#include <fmaintrin.h>
+#endif
+#ifdef __AVX512F__
#include <avx512fintrin.h>
+#endif
+#ifdef __AVX512VL__
#include <avx512vlintrin.h>
+#endif
+#ifdef __AVX512BW__
#include <avx512bwintrin.h>
+#endif
+#ifdef __AVX512CD__
#include <avx512cdintrin.h>
+#endif
+#ifdef __AVX512DQ__
#include <avx512dqintrin.h>
+#endif
+#if defined (__AVX512VL__) && defined (__AVX512BW__)
#include <avx512vlbwintrin.h>
+#endif
+#if defined (__AVX512VL__) && defined (__AVX512DQ__)
#include <avx512vldqintrin.h>
+#endif
+#ifdef __AVX512ER__
#include <avx512erintrin.h>
+#endif
-static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
+#ifdef __RDRND__
+static __inline__ int __attribute__((__always_inline__, __nodebug__))
_rdrand16_step(unsigned short *__p)
{
return __builtin_ia32_rdrand16_step(__p);
}
-static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
+static __inline__ int __attribute__((__always_inline__, __nodebug__))
_rdrand32_step(unsigned int *__p)
{
return __builtin_ia32_rdrand32_step(__p);
}
#ifdef __x86_64__
-static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
+static __inline__ int __attribute__((__always_inline__, __nodebug__))
_rdrand64_step(unsigned long long *__p)
{
return __builtin_ia32_rdrand64_step(__p);
}
#endif
+#endif /* __RDRND__ */
+#ifdef __FSGSBASE__
#ifdef __x86_64__
-static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
_readfsbase_u32(void)
{
return __builtin_ia32_rdfsbase32();
}
-static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
_readfsbase_u64(void)
{
return __builtin_ia32_rdfsbase64();
}
-static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
_readgsbase_u32(void)
{
return __builtin_ia32_rdgsbase32();
}
-static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
_readgsbase_u64(void)
{
return __builtin_ia32_rdgsbase64();
}
-static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
_writefsbase_u32(unsigned int __V)
{
return __builtin_ia32_wrfsbase32(__V);
}
-static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
_writefsbase_u64(unsigned long long __V)
{
return __builtin_ia32_wrfsbase64(__V);
}
-static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
_writegsbase_u32(unsigned int __V)
{
return __builtin_ia32_wrgsbase32(__V);
}
-static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
_writegsbase_u64(unsigned long long __V)
{
return __builtin_ia32_wrgsbase64(__V);
}
#endif
+#endif /* __FSGSBASE__ */
+#ifdef __RTM__
#include <rtmintrin.h>
+#endif
+#ifdef __RTM__
#include <xtestintrin.h>
+#endif
+#ifdef __SHA__
#include <shaintrin.h>
+#endif
#include <fxsrintrin.h>
diff --git a/contrib/llvm/tools/clang/lib/Headers/lzcntintrin.h b/contrib/llvm/tools/clang/lib/Headers/lzcntintrin.h
index 4c00e42ac3a9..8ee29975c2eb 100644
--- a/contrib/llvm/tools/clang/lib/Headers/lzcntintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/lzcntintrin.h
@@ -25,11 +25,15 @@
#error "Never use <lzcntintrin.h> directly; include <x86intrin.h> instead."
#endif
+#ifndef __LZCNT__
+# error "LZCNT instruction is not enabled"
+#endif /* __LZCNT__ */
+
#ifndef __LZCNTINTRIN_H
#define __LZCNTINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("lzcnt")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ unsigned short __DEFAULT_FN_ATTRS
__lzcnt16(unsigned short __X)
diff --git a/contrib/llvm/tools/clang/lib/Headers/mm3dnow.h b/contrib/llvm/tools/clang/lib/Headers/mm3dnow.h
index 3218df827177..ac8e0f4af1bf 100644
--- a/contrib/llvm/tools/clang/lib/Headers/mm3dnow.h
+++ b/contrib/llvm/tools/clang/lib/Headers/mm3dnow.h
@@ -30,7 +30,7 @@
typedef float __v2sf __attribute__((__vector_size__(8)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("3dnow")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ void __DEFAULT_FN_ATTRS
_m_femms() {
diff --git a/contrib/llvm/tools/clang/lib/Headers/mmintrin.h b/contrib/llvm/tools/clang/lib/Headers/mmintrin.h
index 484b499dd7fc..0be5f32c7d02 100644
--- a/contrib/llvm/tools/clang/lib/Headers/mmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/mmintrin.h
@@ -24,6 +24,10 @@
#ifndef __MMINTRIN_H
#define __MMINTRIN_H
+#ifndef __MMX__
+#error "MMX instruction set not enabled"
+#else
+
typedef long long __m64 __attribute__((__vector_size__(8)));
typedef int __v2si __attribute__((__vector_size__(8)));
@@ -31,7 +35,7 @@ typedef short __v4hi __attribute__((__vector_size__(8)));
typedef char __v8qi __attribute__((__vector_size__(8)));
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("mmx")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ void __DEFAULT_FN_ATTRS
_mm_empty(void)
@@ -497,5 +501,7 @@ _mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
#define _m_pcmpgtw _mm_cmpgt_pi16
#define _m_pcmpgtd _mm_cmpgt_pi32
+#endif /* __MMX__ */
+
#endif /* __MMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/module.modulemap b/contrib/llvm/tools/clang/lib/Headers/module.modulemap
index 0fc70a8c9b06..8fcb5bc1b3d2 100644
--- a/contrib/llvm/tools/clang/lib/Headers/module.modulemap
+++ b/contrib/llvm/tools/clang/lib/Headers/module.modulemap
@@ -32,117 +32,142 @@ module _Builtin_intrinsics [system] [extern_c] {
}
explicit module cpuid {
+ requires x86
header "cpuid.h"
}
explicit module mmx {
+ requires mmx
header "mmintrin.h"
}
explicit module f16c {
+ requires f16c
header "f16cintrin.h"
}
explicit module sse {
+ requires sse
export mmx
export sse2 // note: for hackish <emmintrin.h> dependency
header "xmmintrin.h"
}
explicit module sse2 {
+ requires sse2
export sse
header "emmintrin.h"
}
explicit module sse3 {
+ requires sse3
export sse2
header "pmmintrin.h"
}
explicit module ssse3 {
+ requires ssse3
export sse3
header "tmmintrin.h"
}
explicit module sse4_1 {
+ requires sse41
export ssse3
header "smmintrin.h"
}
explicit module sse4_2 {
+ requires sse42
export sse4_1
header "nmmintrin.h"
}
explicit module sse4a {
+ requires sse4a
export sse3
header "ammintrin.h"
}
explicit module avx {
+ requires avx
export sse4_2
header "avxintrin.h"
}
explicit module avx2 {
+ requires avx2
export avx
header "avx2intrin.h"
}
explicit module avx512f {
+ requires avx512f
export avx2
header "avx512fintrin.h"
}
explicit module avx512er {
+ requires avx512er
header "avx512erintrin.h"
}
explicit module bmi {
+ requires bmi
header "bmiintrin.h"
}
explicit module bmi2 {
+ requires bmi2
header "bmi2intrin.h"
}
explicit module fma {
+ requires fma
header "fmaintrin.h"
}
explicit module fma4 {
+ requires fma4
export sse3
header "fma4intrin.h"
}
explicit module lzcnt {
+ requires lzcnt
header "lzcntintrin.h"
}
explicit module popcnt {
+ requires popcnt
header "popcntintrin.h"
}
explicit module mm3dnow {
+ requires mm3dnow
header "mm3dnow.h"
}
explicit module xop {
+ requires xop
export fma4
header "xopintrin.h"
}
explicit module aes_pclmul {
+ requires aes, pclmul
header "wmmintrin.h"
export aes
export pclmul
}
explicit module aes {
+ requires aes
header "__wmmintrin_aes.h"
}
explicit module pclmul {
+ requires pclmul
header "__wmmintrin_pclmul.h"
}
}
diff --git a/contrib/llvm/tools/clang/lib/Headers/nmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/nmmintrin.h
index 57fec15963d1..f12622d7be68 100644
--- a/contrib/llvm/tools/clang/lib/Headers/nmmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/nmmintrin.h
@@ -24,7 +24,12 @@
#ifndef _NMMINTRIN_H
#define _NMMINTRIN_H
+#ifndef __SSE4_2__
+#error "SSE4.2 instruction set not enabled"
+#else
+
/* To match expectations of gcc we put the sse4.2 definitions into smmintrin.h,
just include it now then. */
#include <smmintrin.h>
+#endif /* __SSE4_2__ */
#endif /* _NMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/pmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/pmmintrin.h
index e888b6fb7067..e1b8d9b603d1 100644
--- a/contrib/llvm/tools/clang/lib/Headers/pmmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/pmmintrin.h
@@ -24,10 +24,14 @@
#ifndef __PMMINTRIN_H
#define __PMMINTRIN_H
+#ifndef __SSE3__
+#error "SSE3 instruction set not enabled"
+#else
+
#include <emmintrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse3")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_lddqu_si128(__m128i const *__p)
@@ -113,4 +117,6 @@ _mm_mwait(unsigned __extensions, unsigned __hints)
#undef __DEFAULT_FN_ATTRS
+#endif /* __SSE3__ */
+
#endif /* __PMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/popcntintrin.h b/contrib/llvm/tools/clang/lib/Headers/popcntintrin.h
index 29c074b61d1c..1a4e9000aeb6 100644
--- a/contrib/llvm/tools/clang/lib/Headers/popcntintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/popcntintrin.h
@@ -21,11 +21,15 @@
*===-----------------------------------------------------------------------===
*/
+#ifndef __POPCNT__
+#error "POPCNT instruction set not enabled"
+#endif
+
#ifndef _POPCNTINTRIN_H
#define _POPCNTINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("popcnt")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ int __DEFAULT_FN_ATTRS
_mm_popcnt_u32(unsigned int __A)
diff --git a/contrib/llvm/tools/clang/lib/Headers/rdseedintrin.h b/contrib/llvm/tools/clang/lib/Headers/rdseedintrin.h
index 421f4ea48702..fdf7e18afa95 100644
--- a/contrib/llvm/tools/clang/lib/Headers/rdseedintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/rdseedintrin.h
@@ -28,8 +28,10 @@
#ifndef __RDSEEDINTRIN_H
#define __RDSEEDINTRIN_H
+#ifdef __RDSEED__
+
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("rdseed")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ int __DEFAULT_FN_ATTRS
_rdseed16_step(unsigned short *__p)
@@ -53,4 +55,5 @@ _rdseed64_step(unsigned long long *__p)
#undef __DEFAULT_FN_ATTRS
+#endif /* __RDSEED__ */
#endif /* __RDSEEDINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/rtmintrin.h b/contrib/llvm/tools/clang/lib/Headers/rtmintrin.h
index e6a58d743bc9..17256815fb8d 100644
--- a/contrib/llvm/tools/clang/lib/Headers/rtmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/rtmintrin.h
@@ -38,7 +38,7 @@
#define _XABORT_CODE(x) (((x) >> 24) & 0xFF)
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("rtm")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ unsigned int __DEFAULT_FN_ATTRS
_xbegin(void)
diff --git a/contrib/llvm/tools/clang/lib/Headers/shaintrin.h b/contrib/llvm/tools/clang/lib/Headers/shaintrin.h
index 8602d0249d48..960cced7a55c 100644
--- a/contrib/llvm/tools/clang/lib/Headers/shaintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/shaintrin.h
@@ -28,8 +28,12 @@
#ifndef __SHAINTRIN_H
#define __SHAINTRIN_H
+#if !defined (__SHA__)
+# error "SHA instructions not enabled"
+#endif
+
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sha")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
#define _mm_sha1rnds4_epu32(V1, V2, M) __extension__ ({ \
__builtin_ia32_sha1rnds4((V1), (V2), (M)); })
diff --git a/contrib/llvm/tools/clang/lib/Headers/smmintrin.h b/contrib/llvm/tools/clang/lib/Headers/smmintrin.h
index e197590a38e2..04bd0722b11f 100644
--- a/contrib/llvm/tools/clang/lib/Headers/smmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/smmintrin.h
@@ -24,10 +24,14 @@
#ifndef _SMMINTRIN_H
#define _SMMINTRIN_H
+#ifndef __SSE4_1__
+#error "SSE4.1 instruction set not enabled"
+#else
+
#include <tmmintrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse4.1")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
/* SSE4 Rounding macros. */
#define _MM_FROUND_TO_NEAREST_INT 0x00
@@ -375,13 +379,9 @@ _mm_minpos_epu16(__m128i __V)
return (__m128i) __builtin_ia32_phminposuw128((__v8hi)__V);
}
-/* Handle the sse4.2 definitions here. */
-
/* These definitions are normally in nmmintrin.h, but gcc puts them in here
so we'll do the same. */
-
-#undef __DEFAULT_FN_ATTRS
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse4.2")))
+#ifdef __SSE4_2__
/* These specify the type of data that we're comparing. */
#define _SIDD_UBYTE_OPS 0x00
@@ -481,4 +481,7 @@ _mm_crc32_u64(unsigned long long __C, unsigned long long __D)
#include <popcntintrin.h>
#endif
+#endif /* __SSE4_2__ */
+#endif /* __SSE4_1__ */
+
#endif /* _SMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/tbmintrin.h b/contrib/llvm/tools/clang/lib/Headers/tbmintrin.h
index 62f613f9ee5c..48c0b07f423f 100644
--- a/contrib/llvm/tools/clang/lib/Headers/tbmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/tbmintrin.h
@@ -21,6 +21,10 @@
*===-----------------------------------------------------------------------===
*/
+#ifndef __TBM__
+#error "TBM instruction set is not enabled"
+#endif
+
#ifndef __X86INTRIN_H
#error "Never use <tbmintrin.h> directly; include <x86intrin.h> instead."
#endif
@@ -29,7 +33,7 @@
#define __TBMINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("tbm")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
#define __bextri_u32(a, b) (__builtin_ia32_bextri_u32((a), (b)))
diff --git a/contrib/llvm/tools/clang/lib/Headers/tmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/tmmintrin.h
index 120d73c34f57..2ecc730e90e9 100644
--- a/contrib/llvm/tools/clang/lib/Headers/tmmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/tmmintrin.h
@@ -24,10 +24,14 @@
#ifndef __TMMINTRIN_H
#define __TMMINTRIN_H
+#ifndef __SSSE3__
+#error "SSSE3 instruction set not enabled"
+#else
+
#include <pmmintrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("ssse3")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_abs_pi8(__m64 __a)
@@ -221,4 +225,6 @@ _mm_sign_pi32(__m64 __a, __m64 __b)
#undef __DEFAULT_FN_ATTRS
+#endif /* __SSSE3__ */
+
#endif /* __TMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h
index a2d931010aea..369e3c208e53 100644
--- a/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h
@@ -26,8 +26,17 @@
#include <emmintrin.h>
+#if !defined (__AES__) && !defined (__PCLMUL__)
+# error "AES/PCLMUL instructions not enabled"
+#else
+
+#ifdef __AES__
#include <__wmmintrin_aes.h>
+#endif /* __AES__ */
+#ifdef __PCLMUL__
#include <__wmmintrin_pclmul.h>
+#endif /* __PCLMUL__ */
+#endif /* __AES__ || __PCLMUL__ */
#endif /* _WMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/x86intrin.h b/contrib/llvm/tools/clang/lib/Headers/x86intrin.h
index 4d8077e38291..21a43daf3c2d 100644
--- a/contrib/llvm/tools/clang/lib/Headers/x86intrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/x86intrin.h
@@ -28,29 +28,53 @@
#include <immintrin.h>
+#ifdef __3dNOW__
#include <mm3dnow.h>
+#endif
+#ifdef __BMI__
#include <bmiintrin.h>
+#endif
+#ifdef __BMI2__
#include <bmi2intrin.h>
+#endif
+#ifdef __LZCNT__
#include <lzcntintrin.h>
+#endif
+#ifdef __POPCNT__
#include <popcntintrin.h>
+#endif
+#ifdef __RDSEED__
#include <rdseedintrin.h>
+#endif
+#ifdef __PRFCHW__
#include <prfchwintrin.h>
+#endif
+#ifdef __SSE4A__
#include <ammintrin.h>
+#endif
+#ifdef __FMA4__
#include <fma4intrin.h>
+#endif
+#ifdef __XOP__
#include <xopintrin.h>
+#endif
+#ifdef __TBM__
#include <tbmintrin.h>
+#endif
+#ifdef __F16C__
#include <f16cintrin.h>
+#endif
/* FIXME: LWP */
diff --git a/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h
index 18aa8c1426a3..0d58c753029f 100644
--- a/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h
@@ -24,6 +24,10 @@
#ifndef __XMMINTRIN_H
#define __XMMINTRIN_H
+#ifndef __SSE__
+#error "SSE instruction set not enabled"
+#else
+
#include <mmintrin.h>
typedef int __v4si __attribute__((__vector_size__(16)));
@@ -37,7 +41,7 @@ typedef float __m128 __attribute__((__vector_size__(16)));
#endif
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_add_ss(__m128 __a, __m128 __b)
@@ -999,4 +1003,6 @@ do { \
#include <emmintrin.h>
#endif
+#endif /* __SSE__ */
+
#endif /* __XMMINTRIN_H */
diff --git a/contrib/llvm/tools/clang/lib/Headers/xopintrin.h b/contrib/llvm/tools/clang/lib/Headers/xopintrin.h
index 86188bb29fd7..2eb35c4be844 100644
--- a/contrib/llvm/tools/clang/lib/Headers/xopintrin.h
+++ b/contrib/llvm/tools/clang/lib/Headers/xopintrin.h
@@ -28,10 +28,14 @@
#ifndef __XOPINTRIN_H
#define __XOPINTRIN_H
+#ifndef __XOP__
+# error "XOP instruction set is not enabled"
+#else
+
#include <fma4intrin.h>
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xop")))
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
@@ -800,4 +804,6 @@ _mm256_frcz_pd(__m256d __A)
#undef __DEFAULT_FN_ATTRS
+#endif /* __XOP__ */
+
#endif /* __XOPINTRIN_H */