Warning, file /include/QtCore/qprocessordetection.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006 #if 0
0007 #pragma qt_class(QtProcessorDetection)
0008 #pragma qt_sync_skip_header_check
0009 #pragma qt_sync_stop_processing
0010 #endif
0011
0012 #ifndef QPROCESSORDETECTION_H
0013 #define QPROCESSORDETECTION_H
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #if defined(__ORDER_BIG_ENDIAN__)
0039 # define Q_BIG_ENDIAN __ORDER_BIG_ENDIAN__
0040 #else
0041 # define Q_BIG_ENDIAN 4321
0042 #endif
0043 #if defined(__ORDER_LITTLE_ENDIAN__)
0044 # define Q_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
0045 #else
0046 # define Q_LITTLE_ENDIAN 1234
0047 #endif
0048
0049
0050
0051
0052
0053
0054 #if defined(__alpha__) || defined(_M_ALPHA)
0055 # define Q_PROCESSOR_ALPHA
0056
0057
0058
0059
0060
0061
0062
0063
0064 #elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
0065 # if defined(__aarch64__) || defined(__ARM64__) || defined(_M_ARM64)
0066 # define Q_PROCESSOR_ARM_64
0067 # define Q_PROCESSOR_WORDSIZE 8
0068 # else
0069 # define Q_PROCESSOR_ARM_32
0070 # endif
0071 # if defined(__ARM_ARCH) && __ARM_ARCH > 1
0072 # define Q_PROCESSOR_ARM __ARM_ARCH
0073 # elif defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM > 1
0074 # define Q_PROCESSOR_ARM __TARGET_ARCH_ARM
0075 # elif defined(_M_ARM) && _M_ARM > 1
0076 # define Q_PROCESSOR_ARM _M_ARM
0077 # elif defined(__ARM64_ARCH_8__) \
0078 || defined(__aarch64__) \
0079 || defined(__ARMv8__) \
0080 || defined(__ARMv8_A__) \
0081 || defined(_M_ARM64)
0082 # define Q_PROCESSOR_ARM 8
0083 # elif defined(__ARM_ARCH_7__) \
0084 || defined(__ARM_ARCH_7A__) \
0085 || defined(__ARM_ARCH_7R__) \
0086 || defined(__ARM_ARCH_7M__) \
0087 || defined(__ARM_ARCH_7S__) \
0088 || defined(_ARM_ARCH_7) \
0089 || defined(__CORE_CORTEXA__)
0090 # define Q_PROCESSOR_ARM 7
0091 # elif defined(__ARM_ARCH_6__) \
0092 || defined(__ARM_ARCH_6J__) \
0093 || defined(__ARM_ARCH_6T2__) \
0094 || defined(__ARM_ARCH_6Z__) \
0095 || defined(__ARM_ARCH_6K__) \
0096 || defined(__ARM_ARCH_6ZK__) \
0097 || defined(__ARM_ARCH_6M__)
0098 # define Q_PROCESSOR_ARM 6
0099 # elif defined(__ARM_ARCH_5TEJ__) \
0100 || defined(__ARM_ARCH_5TE__)
0101 # define Q_PROCESSOR_ARM 5
0102 # else
0103 # define Q_PROCESSOR_ARM 0
0104 # endif
0105 # if Q_PROCESSOR_ARM >= 8
0106 # define Q_PROCESSOR_ARM_V8
0107 # endif
0108 # if Q_PROCESSOR_ARM >= 7
0109 # define Q_PROCESSOR_ARM_V7
0110 # endif
0111 # if Q_PROCESSOR_ARM >= 6
0112 # define Q_PROCESSOR_ARM_V6
0113 # endif
0114 # if Q_PROCESSOR_ARM >= 5
0115 # define Q_PROCESSOR_ARM_V5
0116 # else
0117 # error "ARM architecture too old"
0118 # endif
0119 # if defined(__ARMEL__) || defined(_M_ARM64)
0120 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0121 # elif defined(__ARMEB__)
0122 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0123 # else
0124
0125 #endif
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150 #elif defined(__hppa__)
0151 # define Q_PROCESSOR_HPPA
0152 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0153
0154
0155
0156
0157
0158
0159 #elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
0160 # define Q_PROCESSOR_X86_32
0161 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0162 # define Q_PROCESSOR_WORDSIZE 4
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174 # if defined(_M_IX86)
0175 # define Q_PROCESSOR_X86 (_M_IX86/100)
0176 # elif defined(__i686__) || defined(__athlon__) || defined(__SSE__) || defined(__pentiumpro__)
0177 # define Q_PROCESSOR_X86 6
0178 # elif defined(__i586__) || defined(__k6__) || defined(__pentium__)
0179 # define Q_PROCESSOR_X86 5
0180 # elif defined(__i486__) || defined(__80486__)
0181 # define Q_PROCESSOR_X86 4
0182 # else
0183 # define Q_PROCESSOR_X86 3
0184 # endif
0185
0186 #elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
0187 # define Q_PROCESSOR_X86 6
0188 # define Q_PROCESSOR_X86_64
0189 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0190 # define Q_PROCESSOR_WORDSIZE 8
0191
0192
0193
0194
0195
0196
0197 #elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
0198 # define Q_PROCESSOR_IA64
0199 # define Q_PROCESSOR_WORDSIZE 8
0200
0201
0202
0203
0204
0205
0206
0207 #elif defined(__loongarch__)
0208 # define Q_PROCESSOR_LOONGARCH
0209 # if __loongarch_grlen == 64
0210 # define Q_PROCESSOR_LOONGARCH_64
0211 # else
0212 # define Q_PROCESSOR_LOONGARCH_32
0213 # endif
0214 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0215
0216
0217
0218
0219
0220
0221 #elif defined(__m68k__)
0222 # define Q_PROCESSOR_M68K
0223 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0224
0225
0226
0227
0228
0229
0230 #elif defined(__mips) || defined(__mips__) || defined(_M_MRX000)
0231 # define Q_PROCESSOR_MIPS
0232 # if defined(_MIPS_ARCH_MIPS1) || (defined(__mips) && __mips - 0 >= 1)
0233 # define Q_PROCESSOR_MIPS_I
0234 # endif
0235 # if defined(_MIPS_ARCH_MIPS2) || (defined(__mips) && __mips - 0 >= 2)
0236 # define Q_PROCESSOR_MIPS_II
0237 # endif
0238 # if defined(_MIPS_ARCH_MIPS3) || (defined(__mips) && __mips - 0 >= 3)
0239 # define Q_PROCESSOR_MIPS_III
0240 # endif
0241 # if defined(_MIPS_ARCH_MIPS4) || (defined(__mips) && __mips - 0 >= 4)
0242 # define Q_PROCESSOR_MIPS_IV
0243 # endif
0244 # if defined(_MIPS_ARCH_MIPS5) || (defined(__mips) && __mips - 0 >= 5)
0245 # define Q_PROCESSOR_MIPS_V
0246 # endif
0247 # if defined(_MIPS_ARCH_MIPS32) || defined(__mips32) || (defined(__mips) && __mips - 0 >= 32)
0248 # define Q_PROCESSOR_MIPS_32
0249 # endif
0250 # if defined(_MIPS_ARCH_MIPS64) || defined(__mips64)
0251 # define Q_PROCESSOR_MIPS_64
0252 # define Q_PROCESSOR_WORDSIZE 8
0253 # endif
0254 # if defined(__MIPSEL__)
0255 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0256 # elif defined(__MIPSEB__)
0257 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0258 # else
0259
0260 # endif
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271 #elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \
0272 || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \
0273 || defined(_M_MPPC) || defined(_M_PPC)
0274 # define Q_PROCESSOR_POWER
0275 # if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
0276 # define Q_PROCESSOR_POWER_64
0277 # define Q_PROCESSOR_WORDSIZE 8
0278 # else
0279 # define Q_PROCESSOR_POWER_32
0280 # endif
0281
0282
0283
0284
0285
0286
0287
0288 #elif defined(__riscv)
0289 # define Q_PROCESSOR_RISCV
0290 # if __riscv_xlen == 64
0291 # define Q_PROCESSOR_RISCV_64
0292 # else
0293 # define Q_PROCESSOR_RISCV_32
0294 # endif
0295 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0296
0297
0298
0299
0300
0301
0302 #elif defined(__s390__)
0303 # define Q_PROCESSOR_S390
0304 # if defined(__s390x__)
0305 # define Q_PROCESSOR_S390_X
0306 # endif
0307 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327 #elif defined(__sparc__)
0328 # define Q_PROCESSOR_SPARC
0329 # if defined(__sparc_v9__) || defined(__sparcv9)
0330 # define Q_PROCESSOR_SPARC_V9
0331 # endif
0332 # if defined(__sparc64__)
0333 # define Q_PROCESSOR_SPARC_64
0334 # endif
0335 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0336
0337
0338 #elif defined(__EMSCRIPTEN__)
0339 # define Q_PROCESSOR_WASM
0340 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0341 # define Q_PROCESSOR_WORDSIZE 8
0342 #ifdef QT_COMPILER_SUPPORTS_SSE2
0343 # define Q_PROCESSOR_X86 6
0344 # define Q_PROCESSOR_X86_64
0345 # define Q_PROCESSOR_WASM_64
0346 #endif
0347
0348 #endif
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359 #if !defined(Q_BYTE_ORDER)
0360 # if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == Q_BIG_ENDIAN || __BYTE_ORDER__ == Q_LITTLE_ENDIAN)
0361
0362 # define Q_BYTE_ORDER __BYTE_ORDER__
0363 # elif defined(__BIG_ENDIAN__) || defined(_big_endian__) || defined(_BIG_ENDIAN)
0364 # define Q_BYTE_ORDER Q_BIG_ENDIAN
0365 # elif defined(__LITTLE_ENDIAN__) || defined(_little_endian__) || defined(_LITTLE_ENDIAN)
0366 # define Q_BYTE_ORDER Q_LITTLE_ENDIAN
0367 # else
0368 # error "Unable to determine byte order!"
0369 # endif
0370 #endif
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384 #if defined __SIZEOF_POINTER__
0385 # define QT_POINTER_SIZE __SIZEOF_POINTER__
0386 #elif defined(__LP64__) || defined(_LP64)
0387 # define QT_POINTER_SIZE 8
0388 #elif defined(Q_PROCESSOR_WORDSIZE)
0389 # define QT_POINTER_SIZE Q_PROCESSOR_WORDSIZE
0390 #else
0391 # define QT_POINTER_SIZE 4
0392 #endif
0393
0394
0395
0396
0397
0398
0399
0400
0401 #ifndef Q_PROCESSOR_WORDSIZE
0402 # define Q_PROCESSOR_WORDSIZE QT_POINTER_SIZE
0403 #endif
0404
0405
0406 #endif