zemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/zemu/config.rb +312 -0
- data/lib/zemu/instance.rb +179 -0
- data/lib/zemu.rb +172 -0
- data/src/debug.c +118 -0
- data/src/debug.h +30 -0
- data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
- data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
- data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
- data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
- data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
- data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
- data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
- data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
- data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
- data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
- data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
- data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
- data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
- data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
- data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
- data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
- data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
- data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
- data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
- data/src/external/Z/API/Z/constants/base.h +35 -0
- data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
- data/src/external/Z/API/Z/constants/numbers.h +963 -0
- data/src/external/Z/API/Z/constants/version.h +15 -0
- data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
- data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
- data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
- data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
- data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
- data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
- data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
- data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
- data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
- data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
- data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
- data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
- data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
- data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
- data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
- data/src/external/Z/API/Z/functions/base/all.h +16 -0
- data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
- data/src/external/Z/API/Z/functions/base/character.h +38 -0
- data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
- data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
- data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
- data/src/external/Z/API/Z/functions/base/value.h +1901 -0
- data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
- data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
- data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
- data/src/external/Z/API/Z/functions/time/date.h +29 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
- data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
- data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
- data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
- data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
- data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
- data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
- data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
- data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
- data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
- data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
- data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
- data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
- data/src/external/Z/API/Z/inspection/C++.h +78 -0
- data/src/external/Z/API/Z/inspection/C.h +79 -0
- data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
- data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
- data/src/external/Z/API/Z/inspection/CPU.h +209 -0
- data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
- data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
- data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
- data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
- data/src/external/Z/API/Z/inspection/OS.h +236 -0
- data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
- data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
- data/src/external/Z/API/Z/inspection/Z.h +19 -0
- data/src/external/Z/API/Z/inspection/build.h +22 -0
- data/src/external/Z/API/Z/inspection/character set.h +66 -0
- data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
- data/src/external/Z/API/Z/inspection/compiler.h +299 -0
- data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
- data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
- data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
- data/src/external/Z/API/Z/inspection/data model.h +362 -0
- data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
- data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
- data/src/external/Z/API/Z/inspection/language.h +163 -0
- data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
- data/src/external/Z/API/Z/inspection/platform.h +29 -0
- data/src/external/Z/API/Z/keys/C++.h +27 -0
- data/src/external/Z/API/Z/keys/C.h +29 -0
- data/src/external/Z/API/Z/keys/CPU.h +80 -0
- data/src/external/Z/API/Z/keys/OS.h +182 -0
- data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
- data/src/external/Z/API/Z/keys/chemistry.h +26 -0
- data/src/external/Z/API/Z/keys/compiler.h +178 -0
- data/src/external/Z/API/Z/keys/data model.h +32 -0
- data/src/external/Z/API/Z/keys/endianness.h +24 -0
- data/src/external/Z/API/Z/keys/language.h +21 -0
- data/src/external/Z/API/Z/keys/layout.h +20 -0
- data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
- data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
- data/src/external/Z/API/Z/keys/order.h +18 -0
- data/src/external/Z/API/Z/keys/platform.h +87 -0
- data/src/external/Z/API/Z/keys/program.h +39 -0
- data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
- data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
- data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
- data/src/external/Z/API/Z/keys/status.h +69 -0
- data/src/external/Z/API/Z/keys/text.h +27 -0
- data/src/external/Z/API/Z/keys/value.h +88 -0
- data/src/external/Z/API/Z/macros/arguments.h +25 -0
- data/src/external/Z/API/Z/macros/casting.h +22 -0
- data/src/external/Z/API/Z/macros/character.h +159 -0
- data/src/external/Z/API/Z/macros/date.h +14 -0
- data/src/external/Z/API/Z/macros/key.h +20 -0
- data/src/external/Z/API/Z/macros/language.h +126 -0
- data/src/external/Z/API/Z/macros/language.hpp +81 -0
- data/src/external/Z/API/Z/macros/members.h +86 -0
- data/src/external/Z/API/Z/macros/pasting.h +308 -0
- data/src/external/Z/API/Z/macros/pointer.h +33 -0
- data/src/external/Z/API/Z/macros/repetition.h +283 -0
- data/src/external/Z/API/Z/macros/structure.h +104 -0
- data/src/external/Z/API/Z/macros/templating.h +407 -0
- data/src/external/Z/API/Z/macros/tokens.h +14 -0
- data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
- data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
- data/src/external/Z/API/Z/macros/value.h +489 -0
- data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
- data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
- data/src/external/Z/API/Z/macros/variadic.h +46 -0
- data/src/external/Z/API/Z/macros/version.h +17 -0
- data/src/external/Z/API/Z/network/3/IP.h +36 -0
- data/src/external/Z/API/Z/network/4/TCP.h +24 -0
- data/src/external/Z/API/Z/network/4/UDP.h +26 -0
- data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
- data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
- data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
- data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
- data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
- data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
- data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
- data/src/external/Z/API/Z/traits/base.hpp +19 -0
- data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
- data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
- data/src/external/Z/API/Z/types/arguments.h +19 -0
- data/src/external/Z/API/Z/types/base.h +1655 -0
- data/src/external/Z/API/Z/types/base.hpp +169 -0
- data/src/external/Z/API/Z/types/buffering.h +27 -0
- data/src/external/Z/API/Z/types/mathematics.h +135 -0
- data/src/external/Z/API/Z/types/time.h +23 -0
- data/src/external/Z/COPYING.LESSER +165 -0
- data/src/external/Z/development/Qt Creator/Z.pro +253 -0
- data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
- data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
- data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
- data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
- data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
- data/src/external/z80/README.md +229 -0
- data/src/external/z80/building/premake4.lua +33 -0
- data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
- data/src/external/z80/sources/Z80.c +1660 -0
- data/src/interrupt.c +6 -0
- data/src/interrupt.h +3 -0
- data/src/io.c.erb +115 -0
- data/src/io.h.erb +18 -0
- data/src/main.c +69 -0
- data/src/memory.c.erb +43 -0
- data/src/memory.h.erb +9 -0
- metadata +329 -0
@@ -0,0 +1,1366 @@
|
|
1
|
+
/* Z Kit - inspection/modules/compiler/GCC.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3. */
|
7
|
+
|
8
|
+
#ifndef _Z_inspection_modules_compiler_GCC_H_
|
9
|
+
#define _Z_inspection_modules_compiler_GCC_H_
|
10
|
+
|
11
|
+
#include <Z/macros/version.h>
|
12
|
+
#include <Z/keys/order.h>
|
13
|
+
|
14
|
+
/* MARK: - Identification */
|
15
|
+
|
16
|
+
#define Z_COMPILER Z_COMPILER_GCC
|
17
|
+
#define Z_COMPILER_STRING Z_COMPILER_STRING_GCC
|
18
|
+
#define Z_COMPILER_VERSION Z_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
|
19
|
+
#define Z_COMPILER_VERSION_STRING __VERSION__
|
20
|
+
|
21
|
+
/* MARK: - Bit field order */
|
22
|
+
|
23
|
+
/* MARK: - OS */
|
24
|
+
|
25
|
+
#if defined(__gnu_linux) || \
|
26
|
+
defined(__linux ) || \
|
27
|
+
defined(__linux__ ) || \
|
28
|
+
defined(linux )
|
29
|
+
|
30
|
+
# define Z_COMPILER_OS Z_OS_LINUX
|
31
|
+
|
32
|
+
#elif defined(__FreeBSD__)
|
33
|
+
# define Z_COMPILER_OS Z_OS_FREE_BSD
|
34
|
+
|
35
|
+
#elif defined(__NetBSD__)
|
36
|
+
# define Z_COMPILER_OS Z_OS_NET_BSD
|
37
|
+
|
38
|
+
#elif defined(__OpenBSD__)
|
39
|
+
# define Z_COMPILER_OS Z_OS_OPEN_BSD
|
40
|
+
|
41
|
+
#elif defined(__WIN32 ) || \
|
42
|
+
defined(__WIN32__) || \
|
43
|
+
defined(__WIN64 ) || \
|
44
|
+
defined(__WIN64__) || \
|
45
|
+
defined(__WINNT ) || \
|
46
|
+
defined(__WINNT__) || \
|
47
|
+
defined(_WIN32 ) || \
|
48
|
+
defined(_WIN64 ) || \
|
49
|
+
defined(WIN32 ) || \
|
50
|
+
defined(WIN64 ) || \
|
51
|
+
defined(WINNT )
|
52
|
+
|
53
|
+
# define Z_COMPILER_OS Z_OS_WINDOWS
|
54
|
+
|
55
|
+
#elif defined(_AIX)
|
56
|
+
# define Z_COMPILER_OS Z_OS_AIX
|
57
|
+
|
58
|
+
#elif defined(__amigaos__)
|
59
|
+
# define Z_COMPILER_OS Z_OS_AMIGA_OS
|
60
|
+
|
61
|
+
#elif defined(__bg__)
|
62
|
+
# define Z_COMPILER_OS Z_OS_BLUE_GENE
|
63
|
+
|
64
|
+
#elif defined(__hpux) || defined(hpux)
|
65
|
+
# define Z_COMPILER_OS Z_OS_HP_UX
|
66
|
+
|
67
|
+
#elif defined(__netware__)
|
68
|
+
# define Z_COMPILER_OS Z_OS_NETWARE
|
69
|
+
|
70
|
+
#elif defined(__palmos__)
|
71
|
+
# define Z_COMPILER_OS Z_OS_PALM_OS
|
72
|
+
|
73
|
+
#elif defined(M_XENIX)
|
74
|
+
# define Z_COMPILER_OS Z_OS_SCO_UNIX_SYSTEM_V
|
75
|
+
|
76
|
+
#elif defined(__sun ) || \
|
77
|
+
defined(__sun__) || \
|
78
|
+
defined(sun )
|
79
|
+
|
80
|
+
# if defined(__svr4__) || \
|
81
|
+
defined(__SVR4 )
|
82
|
+
|
83
|
+
# define Z_COMPILER_OS Z_COMPILER_OS_SOLARIS
|
84
|
+
# else
|
85
|
+
# define Z_COMPILER_OS Z_COMPILER_OS_SUN_OS
|
86
|
+
# endif
|
87
|
+
|
88
|
+
#elif defined(__vxworks ) || \
|
89
|
+
defined(__VXWORKS__)
|
90
|
+
|
91
|
+
# define Z_COMPILER_OS Z_OS_VX_WORKS
|
92
|
+
|
93
|
+
#endif
|
94
|
+
|
95
|
+
/* MARK: - CPU */
|
96
|
+
|
97
|
+
#if defined(__amd64 ) || \
|
98
|
+
defined(__amd64__ ) || \
|
99
|
+
defined(__x86_64 ) || \
|
100
|
+
defined(__x86_64__) || \
|
101
|
+
defined(_M_AMD64 ) || \
|
102
|
+
defined(_M_X64 )
|
103
|
+
|
104
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_X86_64
|
105
|
+
|
106
|
+
#elif defined(__386__ ) || \
|
107
|
+
defined(__i386 ) || \
|
108
|
+
defined(__i386__) || \
|
109
|
+
defined(_M_IX86 ) || \
|
110
|
+
defined(i386 )
|
111
|
+
|
112
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_X86_32
|
113
|
+
|
114
|
+
#endif
|
115
|
+
|
116
|
+
/* MARK: - Endianness and Bit field order */
|
117
|
+
|
118
|
+
#ifdef __BYTE_ORDER__
|
119
|
+
|
120
|
+
# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
121
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_LITTLE
|
122
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_REVERSED
|
123
|
+
|
124
|
+
# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
125
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_BIG
|
126
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_NORMAL
|
127
|
+
|
128
|
+
# elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__
|
129
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_PDP
|
130
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_NORMAL
|
131
|
+
# endif
|
132
|
+
|
133
|
+
#endif
|
134
|
+
|
135
|
+
/*#define Z_COMPIER_INTEGER_ENDIANNESS_8BIT*/
|
136
|
+
/*#define Z_COMPIER_INTEGER_ENDIANNESS_16BIT*/
|
137
|
+
/*#define Z_COMPIER_INTEGER_ENDIANNESS_32BIT*/
|
138
|
+
/*#define Z_COMPIER_INTEGER_ENDIANNESS_64BIT*/
|
139
|
+
/*#define Z_COMPIER_INTEGER_ENDIANNESS_128BIT*/
|
140
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_8BIT*/
|
141
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_16BIT*/
|
142
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_32BIT*/
|
143
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_64BIT*/
|
144
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_128BIT*/
|
145
|
+
|
146
|
+
/* MARK: - Data model */
|
147
|
+
|
148
|
+
#if defined(__LP64__) || defined(_LP64)
|
149
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_LP64
|
150
|
+
|
151
|
+
#elif defined(_WIN64)
|
152
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_LLP64
|
153
|
+
|
154
|
+
#elif defined(__ILP32__) || defined(_ILP32) || defined(_WIN32)
|
155
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_ILP32
|
156
|
+
#endif
|
157
|
+
|
158
|
+
/* MARK: - K&R C support */
|
159
|
+
|
160
|
+
#define Z_COMPILER_C_HAS_OPERATOR_SIZE_OF TRUE
|
161
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_AUTO TRUE
|
162
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_EXTERN TRUE
|
163
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_REGISTER TRUE
|
164
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_STATIC TRUE
|
165
|
+
#define Z_COMPILER_C_HAS_TYPE_FLOAT TRUE
|
166
|
+
#define Z_COMPILER_C_HAS_TYPE_DOUBLE TRUE
|
167
|
+
|
168
|
+
/* MARK: - C89 support */
|
169
|
+
|
170
|
+
#define Z_COMPILER_C_HAS_ENUMERATION TRUE
|
171
|
+
#define Z_COMPILER_C_HAS_VOID_POINTER TRUE
|
172
|
+
#define Z_COMPILER_C_HAS_TYPE_LDOUBLE TRUE
|
173
|
+
#define Z_COMPILER_C_HAS_TYPE_QUALIFIER_CONSTANT TRUE
|
174
|
+
#define Z_COMPILER_C_HAS_TYPE_QUALIFIER_VOLATILE TRUE
|
175
|
+
|
176
|
+
/* MARK: - C90 support */
|
177
|
+
|
178
|
+
/* MARK: - C94 support */
|
179
|
+
|
180
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 7, 0)
|
181
|
+
# define Z_COMPILER_C_HAS_DIGRAPHS TRUE
|
182
|
+
#endif
|
183
|
+
|
184
|
+
/* MARK: - C99 support
|
185
|
+
.---------------------------------------------------------------------------.
|
186
|
+
| GCC implements several features of C99 as extensions in C90 and in C++98, |
|
187
|
+
| but some of them generate warnings with "-pedantic" when compiling using |
|
188
|
+
| a standard previous to C99. |
|
189
|
+
| Reference: http://gcc.gnu.org/c99status.html |
|
190
|
+
'--------------------------------------------------------------------------*/
|
191
|
+
|
192
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(1, 21, 0)
|
193
|
+
# define Z_COMPILER_C_HAS_INLINE_FUNCION TRUE
|
194
|
+
#endif
|
195
|
+
|
196
|
+
#if defined(__UINTMAX_MAX__) && 0U - 1U == __UINTMAX_MAX__
|
197
|
+
# define Z_COMPILER_C_HAS_PREPROCESSOR_ARITHMETIC_DONE_IN_MAXIMUM_INTEGRAL TRUE
|
198
|
+
#endif
|
199
|
+
|
200
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 95, 0)
|
201
|
+
# define Z_COMPILER_C_HAS_TYPE_QUALIFIER_RESTRICT TRUE
|
202
|
+
#endif
|
203
|
+
|
204
|
+
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
205
|
+
|
206
|
+
# if /*Z_COMPILER_VERSION >= Z_VERSION(0, 9, 0) &&*/ !defined(__STDC_NO_VLA__)
|
207
|
+
# define Z_COMPILER_C_HAS_VLA TRUE
|
208
|
+
# endif
|
209
|
+
|
210
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0)
|
211
|
+
# define Z_COMPILER_C_HAS_DESIGNATED_INITIALIZER TRUE
|
212
|
+
# define Z_COMPILER_C_HAS_FLEXIBLE_ARRAY_MEMBER TRUE
|
213
|
+
# endif
|
214
|
+
|
215
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 1, 0)
|
216
|
+
# define Z_COMPILER_C_HAS_COMPOUND_LITERAL TRUE
|
217
|
+
# endif
|
218
|
+
|
219
|
+
#endif
|
220
|
+
|
221
|
+
#if defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
|
222
|
+
|
223
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(2, 7, 0)
|
224
|
+
# define Z_COMPILER_C_HAS_CPP_STYLE_COMMENT TRUE
|
225
|
+
# endif
|
226
|
+
|
227
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0)
|
228
|
+
# define Z_COMPILER_C_HAS_MIXED_DECLARATIONS_AND_CODE TRUE
|
229
|
+
# endif
|
230
|
+
|
231
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 3, 0)
|
232
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_INLINE TRUE
|
233
|
+
# endif
|
234
|
+
|
235
|
+
#endif
|
236
|
+
|
237
|
+
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
|
238
|
+
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
|
239
|
+
|
240
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(1, 27, 0) && !defined(__DARWIN_NO_LONG_LONG)
|
241
|
+
# define Z_COMPILER_C_HAS_TYPE_ULLONG TRUE
|
242
|
+
# define Z_COMPILER_C_HAS_TYPE_LLONG TRUE
|
243
|
+
# endif
|
244
|
+
|
245
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(2, 95, 0)
|
246
|
+
# define Z_COMPILER_C_HAS_VARIADIC_MACRO TRUE
|
247
|
+
# endif
|
248
|
+
|
249
|
+
# if !defined(Z_COMPILER_C_HAS_PREPROCESSOR_ARITHMETIC_DONE_IN_MAXIMUM_INTEGRAL) && \
|
250
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 3, 0)
|
251
|
+
|
252
|
+
# define Z_COMPILER_C_HAS_PREPROCESSOR_ARITHMETIC_DONE_IN_MAXIMUM_INTEGRAL TRUE
|
253
|
+
# endif
|
254
|
+
|
255
|
+
#endif
|
256
|
+
|
257
|
+
/* MARK: - C11 support
|
258
|
+
.----------------------------------------------.
|
259
|
+
| Reference: http://gcc.gnu.org/wiki/C11Status |
|
260
|
+
'---------------------------------------------*/
|
261
|
+
|
262
|
+
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
263
|
+
|
264
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 6, 0)
|
265
|
+
# define Z_COMPILER_C_HAS_ANONYMOUS_STRUCTURE TRUE
|
266
|
+
# define Z_COMPILER_C_HAS_STATIC_ASSERTION TRUE
|
267
|
+
|
268
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 7, 0)
|
269
|
+
# define Z_COMPILER_C_HAS_OPERATOR_ALIGN_OF TRUE
|
270
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_ALIGN_AS TRUE
|
271
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_NO_RETURN TRUE
|
272
|
+
|
273
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 9, 0)
|
274
|
+
# define Z_COMPILER_C_HAS_GENERIC_SELECTION TRUE
|
275
|
+
# define Z_COMPILER_C_HAS_STORATE_CLASS_THREAD_LOCAL TRUE
|
276
|
+
|
277
|
+
# ifndef __STDC_NO_ATOMICS__
|
278
|
+
# define Z_COMPILER_C_HAS_ATOMIC_OPERATIONS TRUE
|
279
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_ATOMIC TRUE
|
280
|
+
# define Z_COMPILER_C_HAS_TYPE_QUALIFIER_ATOMIC TRUE
|
281
|
+
# endif
|
282
|
+
# endif
|
283
|
+
# endif
|
284
|
+
# endif
|
285
|
+
#endif
|
286
|
+
|
287
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(4, 6, 0) && \
|
288
|
+
(defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
|
289
|
+
|
290
|
+
# define Z_COMPILER_C_HAS_ANONYMOUS_UNION TRUE
|
291
|
+
#endif
|
292
|
+
|
293
|
+
/* MARK: - C18 support */
|
294
|
+
|
295
|
+
/* MARK: - Apple C extensions support */
|
296
|
+
|
297
|
+
#ifdef __BLOCKS__
|
298
|
+
# define Z_COMPILER_C_HAS_CLOSURE TRUE
|
299
|
+
#endif
|
300
|
+
|
301
|
+
#if defined(__cplusplus)
|
302
|
+
|
303
|
+
/* MARK: - C++98 support */
|
304
|
+
|
305
|
+
# if __cplusplus >= 199711L
|
306
|
+
# define Z_COMPILER_CPP_HAS_SFINAE TRUE /* TODO: from version...? */
|
307
|
+
# define Z_COMPILER_CPP_HAS_TYPE_BOOLEAN TRUE /* TODO: from version...? */
|
308
|
+
# endif
|
309
|
+
|
310
|
+
/* MARK: - C++11 support */
|
311
|
+
|
312
|
+
# if __cplusplus >= 201103L
|
313
|
+
|
314
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 3, 0)
|
315
|
+
# define Z_COMPILER_CPP_HAS_C99_PREPROCESSOR TRUE
|
316
|
+
# define Z_COMPILER_CPP_HAS_CONCURRENT_STATIC_LOCAL_VARIABLE TRUE
|
317
|
+
# define Z_COMPILER_CPP_HAS_DEFAULT_TEMPLATE_ARGUMENTS_FOR_FUNCTION_TEMPLATE TRUE
|
318
|
+
# define Z_COMPILER_CPP_HAS_RVALUE_REFERENCE TRUE
|
319
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_DECLARED_TYPE TRUE
|
320
|
+
# define Z_COMPILER_CPP_HAS_VARIADIC_TEMPLATE TRUE
|
321
|
+
# define Z_COMPILER_CPP_HAS_TYPE_ULLONG TRUE
|
322
|
+
# define Z_COMPILER_CPP_HAS_TYPE_LLONG TRUE
|
323
|
+
|
324
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 4, 0)
|
325
|
+
# define Z_COMPILER_CPP_HAS_COPY_LIST_INITIALIZATION TRUE
|
326
|
+
# define Z_COMPILER_CPP_HAS_DIRECT_LIST_INITIALIZATION TRUE
|
327
|
+
# define Z_COMPILER_CPP_HAS_INITIALIZER_LIST TRUE
|
328
|
+
# define Z_COMPILER_CPP_HAS_STRONGLY_TYPED_ENUMERATION TRUE
|
329
|
+
# define Z_COMPILER_CPP_HAS_TRAILING_RETURN_TYPE TRUE
|
330
|
+
# define Z_COMPILER_CPP_HAS_VARIADIC_TEMPLATE_EXTENDED_PARAMETERS TRUE
|
331
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_AUTO TRUE
|
332
|
+
|
333
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 5, 0)
|
334
|
+
# define Z_COMPILER_CPP_HAS_EXPLICIT_CONVERSION TRUE
|
335
|
+
# define Z_COMPILER_CPP_HAS_EXPRESSION_SFINAE TRUE
|
336
|
+
# define Z_COMPILER_CPP_HAS_LAMBDA TRUE
|
337
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_ALIGN_OF TRUE
|
338
|
+
|
339
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 6, 0)
|
340
|
+
# define Z_COMPILER_CPP_HAS_RANGE_BASED_FOR TRUE
|
341
|
+
# define Z_COMPILER_CPP_HAS_UNRESTRICTED_UNION TRUE
|
342
|
+
# define Z_COMPILER_CPP_HAS_MOVE_SPECIAL_MEMBER_FUNCTIONS TRUE
|
343
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_NULL_POINTER TRUE
|
344
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_NO_EXCEPTION TRUE
|
345
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_CONSTANT_EXPRESSION TRUE
|
346
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_NO_EXCEPTION TRUE
|
347
|
+
|
348
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 7, 0)
|
349
|
+
# define Z_COMPILER_CPP_HAS_DEFAULT_MEMBER_INITIALIZER TRUE
|
350
|
+
# define Z_COMPILER_CPP_HAS_TEMPLATE_ALIAS TRUE
|
351
|
+
|
352
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 8, 0)
|
353
|
+
# define Z_COMPILER_CPP_HAS_INHERITING_CONSTRUCTORS TRUE
|
354
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_ALIGN_AS TRUE
|
355
|
+
|
356
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(4, 8 ,1)
|
357
|
+
# define Z_COMPILER_CPP_HAS_REFERENCE_QUALIFIED_NON_STATIC_MEMBER_FUNCTION TRUE
|
358
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_DECLARED_TYPE_OF_INCOMPLETE_RETURN TRUE
|
359
|
+
# endif
|
360
|
+
# endif
|
361
|
+
# endif
|
362
|
+
# endif
|
363
|
+
# endif
|
364
|
+
# endif
|
365
|
+
# endif
|
366
|
+
|
367
|
+
# endif
|
368
|
+
|
369
|
+
#endif
|
370
|
+
|
371
|
+
/* MARK: - Attributes
|
372
|
+
.---------------------------------------------------------------------------.
|
373
|
+
| There is no official documentation where to consult since what version is |
|
374
|
+
| available each attribute. The following list has been used as reference: |
|
375
|
+
| https://ohse.de/uwe/articles/gcc-attributes.html |
|
376
|
+
'--------------------------------------------------------------------------*/
|
377
|
+
|
378
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_ALIAS*/
|
379
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_EXPORT_ALIAS*/
|
380
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_WEAK_EXPORT*/
|
381
|
+
|
382
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 3, 0)
|
383
|
+
# define Z_COMPILER_ATTRIBUTE_STRICT_SIZE_BEGIN
|
384
|
+
# define Z_COMPILER_ATTRIBUTE_STRICT_SIZE_END __attribute__((packed))
|
385
|
+
#endif
|
386
|
+
|
387
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 5, 0)
|
388
|
+
# define Z_COMPILER_ATTRIBUTE_NO_RETURN __attribute__((noreturn))
|
389
|
+
#endif
|
390
|
+
|
391
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 7, 0)
|
392
|
+
# define Z_COMPILER_ATTRIBUTE_ALIAS(name) __attribute__((alias(name)))
|
393
|
+
# define Z_COMPILER_ATTRIBUTE_WEAK __attribute__((weak))
|
394
|
+
#endif
|
395
|
+
|
396
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(2, 8, 0) && \
|
397
|
+
defined(Z_COMPILER_OS) && Z_COMPILER_OS == Z_OS_WINDOWS
|
398
|
+
|
399
|
+
# define Z_COMPILER_ATTRIBUTE_API __attribute__((dllimport))
|
400
|
+
# define Z_COMPILER_ATTRIBUTE_API_EXPORT __attribute__((dllexport))
|
401
|
+
#endif
|
402
|
+
|
403
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(3, 1, 0)
|
404
|
+
# define Z_COMPILER_ATTRIBUTE_INLINE __inline__ __attribute__((always_inline))
|
405
|
+
|
406
|
+
#elif Z_COMPILER_VERSION >= Z_VERSION(1, 21, 0)
|
407
|
+
# define Z_COMPILER_ATTRIBUTE_INLINE __inline__
|
408
|
+
#endif
|
409
|
+
|
410
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(3, 3, 0)
|
411
|
+
|
412
|
+
# define Z_COMPILER_ATTRIBUTE_PRIVATE __attribute__((visibility("hidden")))
|
413
|
+
# define Z_COMPILER_ATTRIBUTE_PUBLIC __attribute__((visibility("default")))
|
414
|
+
|
415
|
+
/*----------------------------------------------------------.
|
416
|
+
| See: http://gcc.gnu.org/ml/gcc-help/2006-08/msg00232.html |
|
417
|
+
'----------------------------------------------------------*/
|
418
|
+
# if defined(Z_COMPILER_CPU_ARCHITECTURE) && \
|
419
|
+
(Z_COMPILER_CPU_ARCHITECTURE == Z_CPU_ARCHITECTURE_X86_32 || \
|
420
|
+
Z_COMPILER_CPU_ARCHITECTURE == Z_CPU_ARCHITECTURE_X86_64)
|
421
|
+
|
422
|
+
# define Z_COMPILER_ATTRIBUTE_THREAD_LOCAL __thread
|
423
|
+
# endif
|
424
|
+
|
425
|
+
#endif
|
426
|
+
|
427
|
+
/*----------------------------------------------------------------------.
|
428
|
+
| "sentinel" first appeared in the documentation of GCC v4.0.0: |
|
429
|
+
| https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html |
|
430
|
+
'----------------------------------------------------------------------*/
|
431
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(4, 0, 0)
|
432
|
+
# define Z_COMPILER_ATTRIBUTE_NULL_TERMINATED __attribute__((sentinel))
|
433
|
+
#endif
|
434
|
+
|
435
|
+
/* MARK: - Built-in constants */
|
436
|
+
|
437
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT16_INFINITY*/
|
438
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT16_NAN*/
|
439
|
+
|
440
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT24_INFINITY*/
|
441
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT24_NAN*/
|
442
|
+
|
443
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT32_INFINITY*/
|
444
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT32_NAN*/
|
445
|
+
|
446
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT48_INFINITY*/
|
447
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT48_NAN*/
|
448
|
+
|
449
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT64_INFINITY*/
|
450
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT64_NAN*/
|
451
|
+
|
452
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT72_INFINITY*/
|
453
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT72_NAN*/
|
454
|
+
|
455
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT80_INFINITY*/
|
456
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT80_NAN*/
|
457
|
+
|
458
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT96_INFINITY*/
|
459
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT96_NAN*/
|
460
|
+
|
461
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_INFINITY*/
|
462
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_NAN*/
|
463
|
+
|
464
|
+
#ifdef __CHAR_BIT__
|
465
|
+
# define Z_COMPILER_CONSTANT_UCHAR_BITS __CHAR_BIT__
|
466
|
+
# define Z_COMPILER_CONSTANT_UCHAR_SIZE (__CHAR_BIT__ / 8)
|
467
|
+
# define Z_COMPILER_CONSTANT_CHAR_BITS __CHAR_BIT__
|
468
|
+
# define Z_COMPILER_CONSTANT_CHAR_SIZE (__CHAR_BIT__ / 8)
|
469
|
+
#endif
|
470
|
+
|
471
|
+
#ifdef __SCHAR_MAX__
|
472
|
+
# define Z_COMPILER_CONSTANT_UCHAR_MAXIMUM ( __SCHAR_MAX__ * 2 + 1)
|
473
|
+
# define Z_COMPILER_CONSTANT_CHAR_MINIMUM (-__SCHAR_MAX__ - 1)
|
474
|
+
# define Z_COMPILER_CONSTANT_CHAR_MAXIMUM __SCHAR_MAX__
|
475
|
+
#endif
|
476
|
+
|
477
|
+
#ifdef __SIZEOF_SHORT__
|
478
|
+
# define Z_COMPILER_CONSTANT_USHORT_BITS (__SIZEOF_SHORT__ * 8)
|
479
|
+
# define Z_COMPILER_CONSTANT_USHORT_SIZE __SIZEOF_SHORT__
|
480
|
+
# define Z_COMPILER_CONSTANT_SHORT_BITS (__SIZEOF_SHORT__ * 8)
|
481
|
+
# define Z_COMPILER_CONSTANT_SHORT_SIZE __SIZEOF_SHORT__
|
482
|
+
#endif
|
483
|
+
|
484
|
+
#ifdef __SHRT_MAX__
|
485
|
+
# define Z_COMPILER_CONSTANT_USHORT_MAXIMUM ( __SHRT_MAX__ * 2 + 1)
|
486
|
+
# define Z_COMPILER_CONSTANT_SHORT_MINIMUM (-__SHRT_MAX__ - 1)
|
487
|
+
# define Z_COMPILER_CONSTANT_SHORT_MAXIMUM __SHRT_MAX__
|
488
|
+
#endif
|
489
|
+
|
490
|
+
#ifdef __SIZEOF_INT__
|
491
|
+
# define Z_COMPILER_CONSTANT_UINT_BITS (__SIZEOF_INT__ * 8)
|
492
|
+
# define Z_COMPILER_CONSTANT_UINT_SIZE __SIZEOF_INT__
|
493
|
+
# define Z_COMPILER_CONSTANT_INT_BITS (__SIZEOF_INT__ * 8)
|
494
|
+
# define Z_COMPILER_CONSTANT_INT_SIZE __SIZEOF_INT__
|
495
|
+
#endif
|
496
|
+
|
497
|
+
#ifdef __INT_MAX__
|
498
|
+
# define Z_COMPILER_CONSTANT_UINT_MAXIMUM ( __INT_MAX__ * 2 + 1)
|
499
|
+
# define Z_COMPILER_CONSTANT_INT_MINIMUM (-__INT_MAX__ - 1)
|
500
|
+
# define Z_COMPILER_CONSTANT_INT_MAXIMUM __INT_MAX__
|
501
|
+
#endif
|
502
|
+
|
503
|
+
#ifdef __SIZEOF_LONG__
|
504
|
+
# define Z_COMPILER_CONSTANT_ULONG_BITS (__SIZEOF_LONG__ * 8)
|
505
|
+
# define Z_COMPILER_CONSTANT_ULONG_SIZE __SIZEOF_LONG__
|
506
|
+
# define Z_COMPILER_CONSTANT_LONG_BITS (__SIZEOF_LONG__ * 8)
|
507
|
+
# define Z_COMPILER_CONSTANT_LONG_SIZE __SIZEOF_LONG__
|
508
|
+
#endif
|
509
|
+
|
510
|
+
/*#define Z_COMPILER_CONSTANT_ULONG_MAXIMUM*/
|
511
|
+
|
512
|
+
#ifdef __LONG_MAX__
|
513
|
+
# define Z_COMPILER_CONSTANT_LONG_MINIMUM (-__LONG_MAX__ - 1L)
|
514
|
+
# define Z_COMPILER_CONSTANT_LONG_MAXIMUM __LONG_MAX__
|
515
|
+
#endif
|
516
|
+
|
517
|
+
#ifdef __SIZEOF_LONG_LONG__
|
518
|
+
# define Z_COMPILER_CONSTANT_ULLONG_BITS (__SIZEOF_LONG_LONG__ * 8)
|
519
|
+
# define Z_COMPILER_CONSTANT_ULLONG_SIZE __SIZEOF_LONG_LONG__
|
520
|
+
# define Z_COMPILER_CONSTANT_LLONG_BITS (__SIZEOF_LONG_LONG__ * 8)
|
521
|
+
# define Z_COMPILER_CONSTANT_LLONG_SIZE __SIZEOF_LONG_LONG__
|
522
|
+
#endif
|
523
|
+
|
524
|
+
/*#define Z_COMPILER_CONSTANT_ULLONG_MAXIMUM*/
|
525
|
+
|
526
|
+
#ifdef __LONG_LONG_MAX__
|
527
|
+
# define Z_COMPILER_CONSTANT_LLONG_MINIMUM (-__LONG_LONG_MAX__ - 1LL)
|
528
|
+
# define Z_COMPILER_CONSTANT_LLONG_MAXIMUM __LONG_LONG_MAX__
|
529
|
+
#endif
|
530
|
+
|
531
|
+
#ifdef __SIZEOF_FLOAT__
|
532
|
+
# define Z_COMPILER_CONSTANT_FLOAT_BITS (__SIZEOF_FLOAT__ * 8)
|
533
|
+
# define Z_COMPILER_CONSTANT_FLOAT_SIZE __SIZEOF_FLOAT__
|
534
|
+
#endif
|
535
|
+
|
536
|
+
#ifdef __SIZEOF_DOUBLE__
|
537
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_BITS (__SIZEOF_DOUBLE__ * 8)
|
538
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_SIZE __SIZEOF_DOUBLE__
|
539
|
+
#endif
|
540
|
+
|
541
|
+
#ifdef __SIZEOF_LONG_DOUBLE__
|
542
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_BITS (__SIZEOF_LONG_DOUBLE__ * 8)
|
543
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_SIZE __SIZEOF_LONG_DOUBLE__
|
544
|
+
#endif
|
545
|
+
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
|
552
|
+
#if __has_builtin(__builtin_huge_valf)
|
553
|
+
# define Z_COMPILER_CONSTANT_FLOAT_INFINITY __builtin_huge_valf()
|
554
|
+
#elif __has_builtin(__builtin_inff)
|
555
|
+
# define Z_COMPILER_CONSTANT_FLOAT_INFINITY __builtin_inff()
|
556
|
+
#endif
|
557
|
+
|
558
|
+
#if __has_builtin(__builtin_nanf)
|
559
|
+
# define Z_COMPILER_CONSTANT_FLOAT_NAN __builtin_nanf("")
|
560
|
+
#endif
|
561
|
+
|
562
|
+
#if __has_builtin(__builtin_huge_val)
|
563
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_INFINITY __builtin_huge_val()
|
564
|
+
#elif __has_builtin(__builtin_inf)
|
565
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_INFINITY __builtin_inf()
|
566
|
+
#endif
|
567
|
+
|
568
|
+
#if __has_builtin(__builtin_nan)
|
569
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_NAN __builtin_nan("")
|
570
|
+
#endif
|
571
|
+
|
572
|
+
#if __has_builtin(__builtin_huge_vall)
|
573
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_INFINITY __builtin_huge_vall()
|
574
|
+
#elif __has_builtin(__builtin_infl)
|
575
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_INFINITY __builtin_infl()
|
576
|
+
#endif
|
577
|
+
|
578
|
+
#if __has_builtin(__builtin_nanl)
|
579
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_NAN __builtin_nanl("")
|
580
|
+
#endif
|
581
|
+
|
582
|
+
#if defined(__SIZEOF_SIZE_T__)
|
583
|
+
# define Z_COMPILER_CONSTANT_SIZE_BITS (__SIZEOF_SIZE_T__ * 8)
|
584
|
+
# define Z_COMPILER_CONSTANT_SIZE_SIZE __SIZEOF_SIZE_T__
|
585
|
+
# define Z_COMPILER_CONSTANT_SSIZE_BITS (__SIZEOF_SIZE_T__ * 8)
|
586
|
+
# define Z_COMPILER_CONSTANT_SSIZE_SIZE __SIZEOF_SIZE_T__
|
587
|
+
#elif defined(__SIZE_WIDTH__)
|
588
|
+
# define Z_COMPILER_CONSTANT_SIZE_BITS __SIZE_WIDTH__
|
589
|
+
# define Z_COMPILER_CONSTANT_SIZE_SIZE (__SIZE_WIDTH__ / 8)
|
590
|
+
# define Z_COMPILER_CONSTANT_SSIZE_BITS __SIZE_WIDTH__
|
591
|
+
# define Z_COMPILER_CONSTANT_SSIZE_SIZE (__SIZE_WIDTH__ / 8)
|
592
|
+
#endif
|
593
|
+
|
594
|
+
#if defined(__SIZEOF_POINTER__)
|
595
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS (__SIZEOF_POINTER__ * 8)
|
596
|
+
# define Z_COMPILER_CONSTANT_POINTER_SIZE __SIZEOF_POINTER__
|
597
|
+
#elif defined(__UINTPTR_WIDTH__)
|
598
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS __UINTPTR_WIDTH__
|
599
|
+
# define Z_COMPILER_CONSTANT_POINTER_SIZE (__UINTPTR_WIDTH__ / 8)
|
600
|
+
#elif defined(__INTPTR_WIDTH__)
|
601
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS __INTPTR_WIDTH__
|
602
|
+
# define Z_COMPILER_CONSTANT_POINTER_SIZE (__INTPTR_WIDTH__ / 8)
|
603
|
+
#endif
|
604
|
+
|
605
|
+
/* MARK: - Built-in types */
|
606
|
+
|
607
|
+
/*#define Z_COMPILER_TYPE_UINT8*/
|
608
|
+
/*#define Z_COMPILER_TYPE_UINT16*/
|
609
|
+
/*#define Z_COMPILER_TYPE_UINT32*/
|
610
|
+
/*#define Z_COMPILER_TYPE_UINT64*/
|
611
|
+
|
612
|
+
/*#define Z_COMPILER_TYPE_SINT8*/
|
613
|
+
/*#define Z_COMPILER_TYPE_SINT16*/
|
614
|
+
/*#define Z_COMPILER_TYPE_SINT32*/
|
615
|
+
/*#define Z_COMPILER_TYPE_SINT64*/
|
616
|
+
|
617
|
+
#ifdef __SIZEOF_INT128__
|
618
|
+
# define Z_COMPILER_TYPE_UINT128 __uint128_t
|
619
|
+
# define Z_COMPILER_TYPE_SINT128 __int128_t
|
620
|
+
#endif
|
621
|
+
|
622
|
+
/*#define Z_COMPILER_TYPE_FLOAT16*/
|
623
|
+
/*#define Z_COMPILER_TYPE_FLOAT24*/
|
624
|
+
/*#define Z_COMPILER_TYPE_FLOAT32*/
|
625
|
+
/*#define Z_COMPILER_TYPE_FLOAT48*/
|
626
|
+
/*#define Z_COMPILER_TYPE_FLOAT64*/
|
627
|
+
/*#define Z_COMPILER_TYPE_FLOAT72*/
|
628
|
+
/*#define Z_COMPILER_TYPE_FLOAT80*/
|
629
|
+
/*#define Z_COMPILER_TYPE_FLOAT96*/
|
630
|
+
/*#define Z_COMPILER_TYPE_FLOAT128*/
|
631
|
+
|
632
|
+
#define Z_COMPILER_TYPE_VAL __builtin_va_list
|
633
|
+
|
634
|
+
/* MARK: - Built-in literals */
|
635
|
+
|
636
|
+
/*#define Z_COMPILER_LITERAL_UINT8*/
|
637
|
+
/*#define Z_COMPILER_LITERAL_UINT16*/
|
638
|
+
/*#define Z_COMPILER_LITERAL_UINT32*/
|
639
|
+
/*#define Z_COMPILER_LITERAL_UINT64*/
|
640
|
+
/*#define Z_COMPILER_LITERAL_UINT128*/
|
641
|
+
|
642
|
+
/*#define Z_COMPILER_LITERAL_SINT8*/
|
643
|
+
/*#define Z_COMPILER_LITERAL_SINT16*/
|
644
|
+
/*#define Z_COMPILER_LITERAL_SINT32*/
|
645
|
+
/*#define Z_COMPILER_LITERAL_SINT64*/
|
646
|
+
/*#define Z_COMPILER_LITERAL_SINT128*/
|
647
|
+
|
648
|
+
/*#define Z_COMPILER_LITERAL_FLOAT16*/
|
649
|
+
/*#define Z_COMPILER_LITERAL_FLOAT24*/
|
650
|
+
/*#define Z_COMPILER_LITERAL_FLOAT32*/
|
651
|
+
/*#define Z_COMPILER_LITERAL_FLOAT48*/
|
652
|
+
/*#define Z_COMPILER_LITERAL_FLOAT64*/
|
653
|
+
/*#define Z_COMPILER_LITERAL_FLOAT72*/
|
654
|
+
/*#define Z_COMPILER_LITERAL_FLOAT80*/
|
655
|
+
/*#define Z_COMPILER_LITERAL_FLOAT96*/
|
656
|
+
/*#define Z_COMPILER_LITERAL_FLOAT128*/
|
657
|
+
|
658
|
+
/* MARK: - Built-in macros: Struture */
|
659
|
+
|
660
|
+
#define Z_COMPILER_MACRO_OFFSET_OF __builtin_offsetof
|
661
|
+
|
662
|
+
/* MARK: - Built-in macros: VAL
|
663
|
+
.-----------------------------------------------------------------.
|
664
|
+
| Please, read the comments for this section in the GCC's header. |
|
665
|
+
'----------------------------------------------------------------*/
|
666
|
+
|
667
|
+
#define Z_COMPILER_MACRO_VAL_INITIALIZE __builtin_va_start
|
668
|
+
#define Z_COMPILER_MACRO_VAL_FINALIZE __builtin_va_end
|
669
|
+
#define Z_COMPILER_MACRO_VAL_READ __builtin_va_arg
|
670
|
+
|
671
|
+
#if __has_builtin(__builtin_va_copy)
|
672
|
+
# define Z_COMPILER_MACRO_VAL_COPY(object, output) __builtin_va_copy(output, object)
|
673
|
+
#endif
|
674
|
+
|
675
|
+
/* MARK: - Built-in functions: Atomic operations */
|
676
|
+
|
677
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
|
678
|
+
|
679
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
680
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
681
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
682
|
+
# endif
|
683
|
+
|
684
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_SET*/
|
685
|
+
/*#define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_SET*/
|
686
|
+
|
687
|
+
# if __has_builtin(__sync_fetch_and_add)
|
688
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
689
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
690
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
691
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
692
|
+
# endif
|
693
|
+
|
694
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
695
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
696
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
697
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
698
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
699
|
+
# endif
|
700
|
+
|
701
|
+
# if __has_builtin(__sync_fetch_and_and)
|
702
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
703
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
704
|
+
# endif
|
705
|
+
|
706
|
+
# if __has_builtin(__sync_fetch_and_or)
|
707
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
708
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
709
|
+
# endif
|
710
|
+
|
711
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
712
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
713
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
714
|
+
# endif
|
715
|
+
|
716
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
717
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
718
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
719
|
+
# endif
|
720
|
+
|
721
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_NOT*/
|
722
|
+
/*#define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_NOT*/
|
723
|
+
|
724
|
+
# if __has_builtin(__sync_add_and_fetch)
|
725
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
726
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
727
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
728
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
729
|
+
# endif
|
730
|
+
|
731
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
732
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
733
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
734
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
735
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
736
|
+
# endif
|
737
|
+
|
738
|
+
# if __has_builtin(__sync_and_and_fetch)
|
739
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
740
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
741
|
+
# endif
|
742
|
+
|
743
|
+
# if __has_builtin(__sync_or_and_fetch)
|
744
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
745
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
746
|
+
# endif
|
747
|
+
|
748
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
749
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
750
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
751
|
+
# endif
|
752
|
+
|
753
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
754
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
755
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
756
|
+
# endif
|
757
|
+
|
758
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_NOT_THEN_GET*/
|
759
|
+
/*#define Z_COMPILER_FUNCTION_INT8_ATOMIC_NOT_THEN_GET*/
|
760
|
+
|
761
|
+
#endif
|
762
|
+
|
763
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
|
764
|
+
|
765
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
766
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
767
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
768
|
+
# endif
|
769
|
+
|
770
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_SET*/
|
771
|
+
/*#define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_SET*/
|
772
|
+
|
773
|
+
# if __has_builtin(__sync_fetch_and_add)
|
774
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
775
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
776
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
777
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
778
|
+
# endif
|
779
|
+
|
780
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
781
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
782
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
783
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
784
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
785
|
+
# endif
|
786
|
+
|
787
|
+
# if __has_builtin(__sync_fetch_and_and)
|
788
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
789
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
790
|
+
# endif
|
791
|
+
|
792
|
+
# if __has_builtin(__sync_fetch_and_or)
|
793
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
794
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
795
|
+
# endif
|
796
|
+
|
797
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
798
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
799
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
800
|
+
# endif
|
801
|
+
|
802
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
803
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
804
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
805
|
+
# endif
|
806
|
+
|
807
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_NOT*/
|
808
|
+
/*#define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_NOT*/
|
809
|
+
|
810
|
+
# if __has_builtin(__sync_add_and_fetch)
|
811
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
812
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
813
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
814
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
815
|
+
# endif
|
816
|
+
|
817
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
818
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
819
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
820
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
821
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
822
|
+
# endif
|
823
|
+
|
824
|
+
# if __has_builtin(__sync_and_and_fetch)
|
825
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
826
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
827
|
+
# endif
|
828
|
+
|
829
|
+
# if __has_builtin(__sync_or_and_fetch)
|
830
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
831
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
832
|
+
# endif
|
833
|
+
|
834
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
835
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
836
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
837
|
+
# endif
|
838
|
+
|
839
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
840
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
841
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
842
|
+
# endif
|
843
|
+
|
844
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_NOT_THEN_GET*/
|
845
|
+
/*#define Z_COMPILER_FUNCTION_INT16_ATOMIC_NOT_THEN_GET*/
|
846
|
+
|
847
|
+
#endif
|
848
|
+
|
849
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
850
|
+
|
851
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
852
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
853
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
854
|
+
# endif
|
855
|
+
|
856
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_SET*/
|
857
|
+
/*#define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_SET*/
|
858
|
+
|
859
|
+
# if __has_builtin(__sync_fetch_and_add)
|
860
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
861
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
862
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
863
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
864
|
+
# endif
|
865
|
+
|
866
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
867
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
868
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
869
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
870
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
871
|
+
# endif
|
872
|
+
|
873
|
+
# if __has_builtin(__sync_fetch_and_and)
|
874
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
875
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
876
|
+
# endif
|
877
|
+
|
878
|
+
# if __has_builtin(__sync_fetch_and_or)
|
879
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
880
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
881
|
+
# endif
|
882
|
+
|
883
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
884
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
885
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
886
|
+
# endif
|
887
|
+
|
888
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
889
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
890
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
891
|
+
# endif
|
892
|
+
|
893
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_NOT*/
|
894
|
+
/*#define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_NOT*/
|
895
|
+
|
896
|
+
# if __has_builtin(__sync_add_and_fetch)
|
897
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
898
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
899
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
900
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
901
|
+
# endif
|
902
|
+
|
903
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
904
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
905
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
906
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
907
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
908
|
+
# endif
|
909
|
+
|
910
|
+
# if __has_builtin(__sync_and_and_fetch)
|
911
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
912
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
913
|
+
# endif
|
914
|
+
|
915
|
+
# if __has_builtin(__sync_or_and_fetch)
|
916
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
917
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
918
|
+
# endif
|
919
|
+
|
920
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
921
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
922
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
923
|
+
# endif
|
924
|
+
|
925
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
926
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
927
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
928
|
+
# endif
|
929
|
+
|
930
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_NOT_THEN_GET*/
|
931
|
+
/*#define Z_COMPILER_FUNCTION_INT32_ATOMIC_NOT_THEN_GET*/
|
932
|
+
|
933
|
+
#endif
|
934
|
+
|
935
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
936
|
+
|
937
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
938
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
939
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
940
|
+
# endif
|
941
|
+
|
942
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_SET*/
|
943
|
+
/*#define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_SET*/
|
944
|
+
|
945
|
+
# if __has_builtin(__sync_fetch_and_add)
|
946
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
947
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
948
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
949
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
950
|
+
# endif
|
951
|
+
|
952
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
953
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
954
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
955
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
956
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
957
|
+
# endif
|
958
|
+
|
959
|
+
# if __has_builtin(__sync_fetch_and_and)
|
960
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
961
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
962
|
+
# endif
|
963
|
+
|
964
|
+
# if __has_builtin(__sync_fetch_and_or)
|
965
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
966
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
967
|
+
# endif
|
968
|
+
|
969
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
970
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
971
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
972
|
+
# endif
|
973
|
+
|
974
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
975
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
976
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
977
|
+
# endif
|
978
|
+
|
979
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_NOT*/
|
980
|
+
/*#define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_NOT*/
|
981
|
+
|
982
|
+
# if __has_builtin(__sync_add_and_fetch)
|
983
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
984
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
985
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
986
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
987
|
+
# endif
|
988
|
+
|
989
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
990
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
991
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
992
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
993
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
994
|
+
# endif
|
995
|
+
|
996
|
+
# if __has_builtin(__sync_and_and_fetch)
|
997
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
998
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
999
|
+
# endif
|
1000
|
+
|
1001
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1002
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1003
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1004
|
+
# endif
|
1005
|
+
|
1006
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1007
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1008
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1009
|
+
# endif
|
1010
|
+
|
1011
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1012
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1013
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1014
|
+
# endif
|
1015
|
+
|
1016
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_NOT_THEN_GET*/
|
1017
|
+
/*#define Z_COMPILER_FUNCTION_INT64_ATOMIC_NOT_THEN_GET*/
|
1018
|
+
|
1019
|
+
#endif
|
1020
|
+
|
1021
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
1022
|
+
|
1023
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1024
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1025
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1026
|
+
# endif
|
1027
|
+
|
1028
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_SET*/
|
1029
|
+
/*#define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_SET*/
|
1030
|
+
|
1031
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1032
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1033
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1034
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1035
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1036
|
+
# endif
|
1037
|
+
|
1038
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1039
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1040
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1041
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1042
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1043
|
+
# endif
|
1044
|
+
|
1045
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1046
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1047
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1048
|
+
# endif
|
1049
|
+
|
1050
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1051
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1052
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1053
|
+
# endif
|
1054
|
+
|
1055
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1056
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1057
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1058
|
+
# endif
|
1059
|
+
|
1060
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1061
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1062
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1063
|
+
# endif
|
1064
|
+
|
1065
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_NOT*/
|
1066
|
+
/*#define Z_COMPILER_FUNCTION_INT128_ATOMIC_GET_THEN_NOT*/
|
1067
|
+
|
1068
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1069
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1070
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1071
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1072
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1073
|
+
# endif
|
1074
|
+
|
1075
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1076
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1077
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1078
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1079
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1080
|
+
# endif
|
1081
|
+
|
1082
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1083
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1084
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1085
|
+
# endif
|
1086
|
+
|
1087
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1088
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1089
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1090
|
+
# endif
|
1091
|
+
|
1092
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1093
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1094
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1095
|
+
# endif
|
1096
|
+
|
1097
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1098
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1099
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1100
|
+
# endif
|
1101
|
+
|
1102
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_NOT_THEN_GET*/
|
1103
|
+
/*#define Z_COMPILER_FUNCTION_INT128_ATOMIC_NOT_THEN_GET*/
|
1104
|
+
|
1105
|
+
#endif
|
1106
|
+
|
1107
|
+
#endif /* _Z_inspection_modules_compiler_Clang_H_ */
|
1108
|
+
|
1109
|
+
|
1110
|
+
|
1111
|
+
|
1112
|
+
|
1113
|
+
|
1114
|
+
|
1115
|
+
|
1116
|
+
|
1117
|
+
|
1118
|
+
|
1119
|
+
|
1120
|
+
|
1121
|
+
|
1122
|
+
|
1123
|
+
|
1124
|
+
|
1125
|
+
|
1126
|
+
|
1127
|
+
|
1128
|
+
|
1129
|
+
|
1130
|
+
|
1131
|
+
|
1132
|
+
|
1133
|
+
|
1134
|
+
|
1135
|
+
|
1136
|
+
|
1137
|
+
|
1138
|
+
|
1139
|
+
|
1140
|
+
|
1141
|
+
|
1142
|
+
|
1143
|
+
|
1144
|
+
|
1145
|
+
|
1146
|
+
|
1147
|
+
|
1148
|
+
|
1149
|
+
|
1150
|
+
|
1151
|
+
|
1152
|
+
|
1153
|
+
|
1154
|
+
|
1155
|
+
|
1156
|
+
|
1157
|
+
|
1158
|
+
|
1159
|
+
|
1160
|
+
|
1161
|
+
|
1162
|
+
|
1163
|
+
|
1164
|
+
|
1165
|
+
|
1166
|
+
|
1167
|
+
|
1168
|
+
|
1169
|
+
|
1170
|
+
|
1171
|
+
|
1172
|
+
|
1173
|
+
/* MARK: - Built-in types */
|
1174
|
+
|
1175
|
+
#ifdef __SIZEOF_INT128__
|
1176
|
+
# define Z_COMPILER_TYPE_UINT128 __uint128_t
|
1177
|
+
# define Z_COMPILER_TYPE_INT128 __int128_t
|
1178
|
+
#endif
|
1179
|
+
|
1180
|
+
#define Z_COMPILER_TYPE_VAL __builtin_va_list
|
1181
|
+
|
1182
|
+
/* MARK: - Built-in macros: Struture */
|
1183
|
+
|
1184
|
+
#define Z_COMPILER_MACRO_OFFSET_OF __builtin_offsetof
|
1185
|
+
|
1186
|
+
/* MARK: - Built-in macros: VAL
|
1187
|
+
.------------------------------------------------------------------------------.
|
1188
|
+
| GCC has a BIG __BUG__ which breaks the CDECL calling convention on x86-32. |
|
1189
|
+
| This makes necessary to always use the GCC's internal built-in macros for |
|
1190
|
+
| dealing with variable argument lists. |
|
1191
|
+
| |
|
1192
|
+
| Read the complete story: |
|
1193
|
+
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45249 |
|
1194
|
+
| |
|
1195
|
+
| This should not be a problem, after all the built-in macros work well, but |
|
1196
|
+
| some versions of GCC create dependencies with the C standard library under |
|
1197
|
+
| certain conditions if they are used. The way to fix this is to use the |
|
1198
|
+
| "-fno-builtin" option to make GCC, paradoxically, generate true built-ins. |
|
1199
|
+
'-----------------------------------------------------------------------------*/
|
1200
|
+
|
1201
|
+
#define Z_COMPILER_MACRO_VAL_INITIALIZE __builtin_va_start
|
1202
|
+
#define Z_COMPILER_MACRO_VAL_FINALIZE __builtin_va_end
|
1203
|
+
#define Z_COMPILER_MACRO_VAL_READ __builtin_va_arg
|
1204
|
+
|
1205
|
+
#if __STDC_VERSION__ >= 199900L || !defined(__STRICT_ANSI__)
|
1206
|
+
# define Z_COMPILER_MACRO_VAL_COPY(object, output) __builtin_va_copy(output, object)
|
1207
|
+
#endif
|
1208
|
+
|
1209
|
+
/* MARK: - Built-in functions: Atomic operations */
|
1210
|
+
|
1211
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(4, 1, 0)
|
1212
|
+
|
1213
|
+
# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
|
1214
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1215
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1216
|
+
# endif
|
1217
|
+
|
1218
|
+
# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
|
1219
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1220
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1221
|
+
# endif
|
1222
|
+
|
1223
|
+
# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
1224
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1225
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1226
|
+
# endif
|
1227
|
+
|
1228
|
+
# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
1229
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1230
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1231
|
+
# endif
|
1232
|
+
|
1233
|
+
# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
1234
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1235
|
+
# define Z_COMPILER_FUNCTION_INT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1236
|
+
# endif
|
1237
|
+
|
1238
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1239
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1240
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1241
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1242
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1243
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1244
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1245
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_INCREMENT( pointer) __sync_fetch_and_add(pointer, 1)
|
1246
|
+
|
1247
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1248
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1249
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1250
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1251
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1252
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1253
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1254
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1255
|
+
|
1256
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1257
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1258
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1259
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1260
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1261
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1262
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1263
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_DECREMENT( pointer) __sync_fetch_and_sub(pointer, 1)
|
1264
|
+
|
1265
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1266
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1267
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1268
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1269
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1270
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1271
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1272
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1273
|
+
|
1274
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1275
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1276
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1277
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1278
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1279
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1280
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1281
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1282
|
+
|
1283
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1284
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1285
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1286
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1287
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1288
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1289
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1290
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1291
|
+
|
1292
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1293
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1294
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1295
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1296
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1297
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1298
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1299
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1300
|
+
|
1301
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1302
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1303
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1304
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1305
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1306
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1307
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1308
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_INCREMENT_THEN_GET( pointer) __sync_add_and_fetch(pointer, 1)
|
1309
|
+
|
1310
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1311
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1312
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1313
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1314
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1315
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1316
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1317
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1318
|
+
|
1319
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1320
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1321
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1322
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1323
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1324
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1325
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1326
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_DECREMENT_THEN_GET( pointer) __sync_sub_and_fetch(pointer, 1)
|
1327
|
+
|
1328
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1329
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1330
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1331
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1332
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1333
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1334
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1335
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1336
|
+
|
1337
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1338
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1339
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1340
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1341
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1342
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1343
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1344
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1345
|
+
|
1346
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1347
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1348
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1349
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1350
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1351
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1352
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1353
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1354
|
+
|
1355
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1356
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1357
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1358
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1359
|
+
# define Z_COMPILER_FUNCTION_INT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1360
|
+
# define Z_COMPILER_FUNCTION_INT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1361
|
+
# define Z_COMPILER_FUNCTION_INT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1362
|
+
# define Z_COMPILER_FUNCTION_INT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1363
|
+
|
1364
|
+
#endif
|
1365
|
+
|
1366
|
+
#endif /* _Z_inspection_modules_compiler_GCC_H_ */
|