@@ -56,13 +56,6 @@ POSSIBILITY OF SUCH DAMAGE.
56
56
57
57
namespace simdjson {
58
58
59
- namespace {
60
- // Can be found on Intel ISA Reference for CPUID
61
- constexpr uint32_t cpuid_avx2_bit = 1 << 5 ; // /< @private Bit 5 of EBX for EAX=0x7
62
- constexpr uint32_t cpuid_bmi1_bit = 1 << 3 ; // /< @private bit 3 of EBX for EAX=0x7
63
- constexpr uint32_t cpuid_bmi2_bit = 1 << 8 ; // /< @private bit 8 of EBX for EAX=0x7
64
- constexpr uint32_t cpuid_sse42_bit = 1 << 20 ; // /< @private bit 20 of ECX for EAX=0x1
65
- constexpr uint32_t cpuid_pclmulqdq_bit = 1 << 1 ; // /< @private bit 1 of ECX for EAX=0x1
66
59
67
60
enum instruction_set {
68
61
DEFAULT = 0x0 ,
@@ -73,7 +66,6 @@ enum instruction_set {
73
66
BMI1 = 0x20 ,
74
67
BMI2 = 0x40
75
68
};
76
- }
77
69
78
70
#if defined(__arm__) || defined(__aarch64__) // incl. armel, armhf, arm64
79
71
@@ -91,7 +83,20 @@ static inline uint32_t detect_supported_architectures() {
91
83
92
84
#endif
93
85
94
- #else // x86
86
+ #elif defined(__x86_64__) || defined(_M_AMD64) // x64
87
+
88
+
89
+ namespace {
90
+ // Can be found on Intel ISA Reference for CPUID
91
+ constexpr uint32_t cpuid_avx2_bit = 1 << 5 ; // /< @private Bit 5 of EBX for EAX=0x7
92
+ constexpr uint32_t cpuid_bmi1_bit = 1 << 3 ; // /< @private bit 3 of EBX for EAX=0x7
93
+ constexpr uint32_t cpuid_bmi2_bit = 1 << 8 ; // /< @private bit 8 of EBX for EAX=0x7
94
+ constexpr uint32_t cpuid_sse42_bit = 1 << 20 ; // /< @private bit 20 of ECX for EAX=0x1
95
+ constexpr uint32_t cpuid_pclmulqdq_bit = 1 << 1 ; // /< @private bit 1 of ECX for EAX=0x1
96
+ }
97
+
98
+
99
+
95
100
static inline void cpuid (uint32_t *eax, uint32_t *ebx, uint32_t *ecx,
96
101
uint32_t *edx) {
97
102
#if defined(_MSC_VER)
@@ -147,6 +152,13 @@ static inline uint32_t detect_supported_architectures() {
147
152
148
153
return host_isa;
149
154
}
155
+ #else // fallback
156
+
157
+
158
+ static inline uint32_t detect_supported_architectures () {
159
+ return instruction_set::DEFAULT;
160
+ }
161
+
150
162
151
163
#endif // end SIMD extension detection code
152
164
0 commit comments