1.. contents:: 2.. sectnum:: 3 4========================== 5Clang implementation notes 6========================== 7 8This document provides more details specific to the Clang/LLVM implementation of the eBPF instruction set. 9 10Versions 11======== 12 13Clang defined "CPU" versions, where a CPU version of 3 corresponds to the current eBPF ISA. 14 15Clang can select the eBPF ISA version using ``-mcpu=v3`` for example to select version 3. 16 17Arithmetic instructions 18======================= 19 20For CPU versions prior to 3, Clang v7.0 and later can enable ``BPF_ALU`` support with 21``-Xclang -target-feature -Xclang +alu32``. In CPU version 3, support is automatically included. 22 23Atomic operations 24================= 25 26Clang can generate atomic instructions by default when ``-mcpu=v3`` is 27enabled. If a lower version for ``-mcpu`` is set, the only atomic instruction 28Clang can generate is ``BPF_ADD`` *without* ``BPF_FETCH``. If you need to enable 29the atomics features, while keeping a lower ``-mcpu`` version, you can use 30``-Xclang -target-feature -Xclang +alu32``. 31