# if !defined(__amd64__) && !defined(__x86_64__)
# error "F16C intrinsics are only available on x86_64"
# endif
+#if !defined __has_attribute
+# error "No __has_attribute() support"
+#endif
+#if !__has_attribute(ifunc)
+# error "ifunc not supported"
+#endif
+static int resolved_ifunc (void) { return 0; }
+static void *resolve_ifunc (void) { return resolved_ifunc; }
+int ifunc_test (void) __attribute__((ifunc ("resolve_ifunc")));
+#else
+int ifunc_test (void) { return 0; }
#endif
#if defined(__SSE__) || defined(_MSC_VER)
# include <immintrin.h>
#else
# error "No F16C intrinsics available"
#endif
+
int main () {
float f[4] = { 0, };
unsigned short h[4] = { 0, };
__builtin_cpu_supports ("f16c");
#endif
- return 0;
+ return ifunc_test ();
}'''
if cc.get_id() != 'msvc'
test_f16c_cflags = [ '-mf16c' ]