======================================================== Architecture & Platform Information for Compiler Writers ======================================================== .. contents:: :local: .. note:: This document is a work-in-progress. Additions and clarifications are welcome. Hardware ======== AArch64 & ARM ------------- * `ARMv8-A Architecture Reference Manual `_ This document covers both AArch64 and ARM instructions * `ARMv7-A Architecture Reference Manual `_ This has some useful info on what is supported by older architecture versions. * `ARMv7-M Architecture Reference Manual `_ This covers the Thumb2-only microcontrollers * `ARMv6-M Architecture Reference Manual `_ This covers the Thumb1-only microcontrollers * `ARM C Language Extensions `_ * `ARM NEON Intrinsics Reference `_ * AArch32 `ABI Addenda and Errata `_ * `Cortex-A57 Software Optimization Guide `_ * `Run-time ABI for the ARM Architecture `_ This documents the __aeabi_* helper functions. Itanium (ia64) -------------- * `Itanium documentation `_ Lanai ----- * `Lanai Instruction Set Architecture `_ MIPS ---- * `MIPS Processor Architecture `_ * `MIPS 64-bit ELF Object File Specification `_ PowerPC ------- IBM - Official manuals and docs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * `Power Instruction Set Architecture, Version 3.0B `_ * `POWER9 Processor User's Manual `_ * `Power Instruction Set Architecture, Version 2.07B `_ * `POWER8 Processor User's Manual `_ * `Power Instruction Set Architecture, Versions 2.03 through 2.06 (Internet Archive) `_ * `IBM AIX 7.2 POWER Assembly Reference `_ * `IBM AIX/5L for POWER Assembly Reference `_ Other documents, collections, notes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * `PowerPC Compiler Writer's Guide `_ * `Intro to PowerPC Architecture `_ * `PowerPC Processor Manuals (embedded) `_ * `Various IBM specifications and white papers `_ * `PowerPC ABI documents `_ * `PowerPC64 alignment of long doubles (from GCC) `_ * `Long branch stubs for powerpc64-linux (from binutils) `_ AMDGPU ------ Refer to :doc:`AMDGPUUsage` for additional documentation. RISC-V ------ * `RISC-V User-Level ISA Specification `_ SPARC ----- * `SPARC standards `_ * `SPARC V9 ABI `_ * `SPARC V8 ABI `_ SystemZ ------- * `z/Architecture Principles of Operation (registration required, free sign-up) `_ X86 --- * `AMD processor manuals `_ * `Intel 64 and IA-32 manuals `_ * `Intel Itanium documentation `_ * `X86 and X86-64 SysV psABI `_ * `Calling conventions for different C++ compilers and operating systems `_ XCore ----- * `The XMOS XS1 Architecture (ISA) `_ * `Tools Development Guide (includes ABI) `_ Hexagon ------- * `Hexagon Programmer's Reference Manuals and Hexagon ABI Specification (registration required, free sign-up) `_ Other relevant lists -------------------- * `GCC reading list `_ ABI === * `System V Application Binary Interface `_ * `Itanium C++ ABI `_ (This is used for all non-Windows targets.) Linux ----- * `Linux extensions to gabi `_ * `64-Bit ELF V2 ABI Specification: Power Architecture `_ * `OpenPOWER ELFv2 Errata: ELFv2 ABI Version 1.4 `_ * `PowerPC 64-bit ELF ABI Supplement `_ * `Procedure Call Standard for the AArch64 Architecture `_ * `Procedure Call Standard for the ARM Architecture `_ * `ELF for the ARM Architecture `_ * `ELF for the ARM 64-bit Architecture (AArch64) `_ * `System z ELF ABI Supplement `_ macOS ----- * `Mach-O Runtime Architecture `_ * `Notes on Mach-O ABI `_ * `ARM64 Function Calling Conventions `_ Windows ------- * `Microsoft PE/COFF Specification `_ * `ARM64 exception handling `_ * `ARM exception handling `_ * `Overview of ARM64 ABI conventions `_ * `Overview of ARM32 ABI Conventions `_ NVPTX ===== * `CUDA Documentation `_ includes the PTX ISA and Driver API documentation Miscellaneous Resources ======================= * `Executable File Format library `_ * `GCC prefetch project `_ page has a good survey of the prefetching capabilities of a variety of modern processors.