64-bit ARM (AArch64) Support Merged Into LLVM

Posted by Michael Larabel on January 31, 2013

GCC has had support for 64-bit ARM, a.k.a. AArch64, going back to last summer for using the open-source compiler with next-generation ARMv8 hardware. Being merged today is finally support for the LLVM compiler infrastructure with an experimental 64-bit ARM/AArch64 back-end target.

Adding fourty-five thousand lines of new code to the LLVM tree is a patch that adds support for ARM's 64-bit architecture to LLVM. This target is currently experimental and not built by default, but requires a compile-time switch for enabling. However, there's already talk amongst developers about enabling 64-bit ARM support by default. This work was merged into mainline LLVM this morning and will thus be found in the LLVM 3.3 release due out in a couple months time.

This initial AArch64 LLVM compiler support covers Assembly for all scalar instructions except for the late addition CRC instructions, code generation features needed for C++0x and C99, compilation support for the small memory model, absolute and position-independent code support, GNU-style TLS, and debugging support.

The 64-bit ARM compiler support, however, has yet to undergo any performance tuning for the greatest compiler performance. With there still being a few months to go until LLVM 3.3 is released, this will likely be achieved before the AArch64 LLVM support is in any released version.

Another limitation is that there isn't any NEON support for the AArch64 experimental target because the developer says there was "an outbreak of batshit insanisty in [ARM's] legal department."

The initial AArch64/ARMv8 instruction set support for LLVM can be found by cloning the LLVM SVN/Git repository where this big patch landed today.

LLVM 3.3 should be a fantastic release since aside from the 64-bit ARM support will also be the AMD Radeon GPU back-end, likely the enabling by default of the new loop vectorizer, and many other features for this open-source compiler infrastructure.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  2. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  3. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
  4. AMD Radeon Gallium3D More Competitive With Catalyst On Linux
Latest Software Articles
  1. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. F2FS File-System Shows Regressions On Linux 3.10
  4. Previewing The Radeon Gallium3D Shader Optimizations
Latest Linux News
  1. Modern Intel Gallium3D Driver Still Being Toyed With
  2. Linux 3.10 Kernel Benchmarks On A Core i7 Laptop
  3. GCC 4.8.1 Compiler Due To Be Out Next Week
  4. Linux 3.10 Kernel Benchmarks For Intel Ivy Bridge
  5. Linux's "Ondemand" Governor Is No Longer Fit
  6. Firefox 22 Beta Enables WebRTC Support
  7. OpenSUSE 13.1 Milestone 1 Released
  8. DRM Graphics Driver Comes For Dove/Cubox
  9. JADE: An LLVM-Based Video Decoder For MPEG RVC
  10. Ubuntu 13.10 Likely Switching To Chromium Browser
  11. Unity 7, Compiz To Be Polished For Ubuntu 13.10
Latest Forum Talk
  1. Ubuntu 13.10 Likely Switching To Chromium Browser
  2. Unity 8, Mir To Be Experimental Choice In Ubuntu...
  3. Modern Intel Gallium3D Driver Still Being Toyed...
  4. Greater Radeon Gallium3D Shader Optimization Tests
  5. KDE's Krita Ported To OpenGL 3.1, OpenGL ES 2.0
  6. Firefox 22 Beta Enables WebRTC Support
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite