# Language extensions The Hexagon LLVM compilers support language features that are not defined in the standard LLVM compilers. These features are specific to the Hexagon processor and are known as *language extensions*. The compilers predefine several symbols to simplify the development of portable software. For example: #if __hexagon__ ... // Hexagon processor-specific code #endif Copy to clipboard ## Predefined symbols for processor versions The Hexagon compiler defines these macros: __hexagon__ Copy to clipboard Defined when compiling code for any version of the Hexagon processor. This macro allows you to ascertain that the compiler is being asked to generate Hexagon code. __HEXAGON_V__ Copy to clipboard Indicate the Hexagon version, where `NN` is the specific Hexagon processor number described in [Processor version](https://docs.qualcomm.com/doc/80-N3040-23/topic/use-the-compilers.html#hccpp-compiler-options-processor-version-sub). For example, if the compiler is generating code for Hexagon V73, `NN` is set to `73`. ## Predefined symbols for HVX coprocessor versions When compiling code for specific versions of the HVX coprocessor, the compiler defines three symbols: __HVX__ Copy to clipboard Set to 1 if HVX is enabled. For information on how to enable HVX and select an HVX coprocessor version, see [Processor version](https://docs.qualcomm.com/doc/80-N3040-23/topic/use-the-compilers.html#hccpp-compiler-options-processor-version-sub). __HVX___ Copy to clipboard Numerical value set to the version of the Hexagon processor. For example, if codes is being compiled for Hexagon V68, `ARCH` is set to `68`. __HVX_LENGTH__ Copy to clipboard Set to either 64 or 128, based on the vector length that is selected for compilation. Last Published: Oct 06, 2026 [Previous Topic Parameter name lookup](https://docs.qualcomm.com/bundle/publicresource/80-N3040-23/topics/language-compatibility.md) [Next Topic Inline assembly language](https://docs.qualcomm.com/bundle/publicresource/80-N3040-23/topics/inline-assembly-language.md)