- The ARMv7 architecture (as implemented by the Cortex series of CPUs) introduces two major new features:
- GCC currently supports generating ARM (32-bit) and Thumb-1 (16-bit) instructions. Thumb-2 extends the Thumb instruction set to include 32-bit instructions, providing most of the functionality available in ARM mode. While Thumb-2 is technically a superset of Thumb-1, its functionality is closer to ARM.
- NEON SIMD
- NEON is a vector coprocessor supporting a variety of 64 and 128-bit vector types. Compiler support includes intrinsic function for manual vector code (using the same interface as the ARM's commercial compiler), and GCC generic vector support, including autovectorization.
- The NEON archirecture provides features not currently supported by the GCC autovectorizer (eg. different vector sizes and sophisticated load/store instructions). Extending the vectorizer to support these additional features is not part of this project, and may come later.
- Paul Brook
- Thumb-2 has been present and in use on branches/csl/sourcerygxx-4_1 for some time. NEON is relatively new, but is rapidly approaching stability.
- I don't anticipate any major changes when merging to 4.3. Internal schedules mean I won't have time to do the merge before 2006-10-15. The initial NEON implementation should be complete by that date.
- GCC will gain the ability to generate ARMv7 code, to take full advantage of modern ARM cores.
- The changes are confined to the ARM backend.
- The new Thumb-2 mode is a hybryd of the existing Arm and Thumb modes so code changes are relatively limited, plus a set of new instruction patterns.
- NEON has some overlap with the existing iWMMXt vector support. However iWMMXT is not useable by the vectorizer, and no hardware supports both vector extensions, so the interaction is limited. Mainly just adding define_expand for the comon patterns.