forked from OSchip/llvm-project
X86 Intrinsics: _bit_scan_forward should not be under #ifdef __RDRND__
Summary: The _bit_scan_forward and _bit_scan_reverse intrinsics were accidentally masked under the preprocessor checks that prune intrinsics definitions for the benefit of faster compile-time on Windows. This patch moves the definitons out of that region. Fixes pr33722 Reviewers: craig.topper, aaboud, thakis Reviewed By: craig.topper Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D35184 llvm-svn: 307524
This commit is contained in:
parent
70b1af5921
commit
064f00061b
|
@ -212,6 +212,15 @@ _rdrand32_step(unsigned int *__p)
|
||||||
return __builtin_ia32_rdrand32_step(__p);
|
return __builtin_ia32_rdrand32_step(__p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
||||||
|
_rdrand64_step(unsigned long long *__p)
|
||||||
|
{
|
||||||
|
return __builtin_ia32_rdrand64_step(__p);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* __RDRND__ */
|
||||||
|
|
||||||
/* __bit_scan_forward */
|
/* __bit_scan_forward */
|
||||||
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
||||||
_bit_scan_forward(int __A) {
|
_bit_scan_forward(int __A) {
|
||||||
|
@ -224,15 +233,6 @@ _bit_scan_reverse(int __A) {
|
||||||
return 31 - __builtin_clz(__A);
|
return 31 - __builtin_clz(__A);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __x86_64__
|
|
||||||
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
||||||
_rdrand64_step(unsigned long long *__p)
|
|
||||||
{
|
|
||||||
return __builtin_ia32_rdrand64_step(__p);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* __RDRND__ */
|
|
||||||
|
|
||||||
#if !defined(_MSC_VER) || __has_feature(modules) || defined(__FSGSBASE__)
|
#if !defined(_MSC_VER) || __has_feature(modules) || defined(__FSGSBASE__)
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
|
static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
// RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
|
// RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
// PR33722
|
||||||
|
// RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -D_MSC_VER -emit-llvm -o - %s | FileCheck %s
|
||||||
|
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
|
|
||||||
int test_bit_scan_forward(int a) {
|
int test_bit_scan_forward(int a) {
|
||||||
|
|
Loading…
Reference in New Issue