Skip to content

ARM 32/64 bit logic & version? #129

@jcelerier

Description

@jcelerier

The ARM macros define the version to 8 if __aarch64__ is defined.
But I believe this is not correct: ARMv8 can run in aarch32 mode, where only __arm__ and not __aarch64__ is defined (and conversely, AArch64 mode does not define __arm__).

The correct thing I believe would be to use __ARM_ARCH which expands to e.g. 7 in ARMv7, 8 in ARMv8 etc for the version, and use the existence of __arm__ / __aarch64__ to distinguish between 32 & 64.

see repro: https://gcc.godbolt.org/z/xqqYWEaz6

ideally I would argue that AArch64 ought to be treated as an entirely different architecture, like PPC / PPC64

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions