@@ -226,52 +226,84 @@ Reference Manual], or elsewhere on [developer.arm.com].
226226> The following pairs of features should both be marked as enabled or disabled together if used:
227227> - ` paca ` and ` pacg ` , which LLVM currently implements as one feature.
228228
229- Feature | Implicitly Enables | Feature Name
230- ---------------|--------------------|-------------------
231- ` aes ` | ` neon ` | FEAT_AES & FEAT_PMULL --- Advanced <abbr title =" Single Instruction Multiple Data " >SIMD</abbr > AES & PMULL instructions
232- ` bf16 ` | | FEAT_BF16 --- BFloat16 instructions
233- ` bti ` | | FEAT_BTI --- Branch Target Identification
234- ` crc ` | | FEAT_CRC --- CRC32 checksum instructions
235- ` dit ` | | FEAT_DIT --- Data Independent Timing instructions
236- ` dotprod ` | | FEAT_DotProd --- Advanced SIMD Int8 dot product instructions
237- ` dpb ` | | FEAT_DPB --- Data cache clean to point of persistence
238- ` dpb2 ` | | FEAT_DPB2 --- Data cache clean to point of deep persistence
239- ` f32mm ` | ` sve ` | FEAT_F32MM --- SVE single-precision FP matrix multiply instruction
240- ` f64mm ` | ` sve ` | FEAT_F64MM --- SVE double-precision FP matrix multiply instruction
241- ` fcma ` | ` neon ` | FEAT_FCMA --- Floating point complex number support
242- ` fhm ` | ` fp16 ` | FEAT_FHM --- Half-precision FP FMLAL instructions
243- ` flagm ` | | FEAT_FlagM --- Conditional flag manipulation
244- ` fp16 ` | ` neon ` | FEAT_FP16 --- Half-precision FP data processing
245- ` frintts ` | | FEAT_FRINTTS --- Floating-point to int helper instructions
246- ` i8mm ` | | FEAT_I8MM --- Int8 Matrix Multiplication
247- ` jsconv ` | ` neon ` | FEAT_JSCVT --- JavaScript conversion instruction
248- ` lse ` | | FEAT_LSE --- Large System Extension
249- ` lor ` | | FEAT_LOR --- Limited Ordering Regions extension
250- ` mte ` | | FEAT_MTE & FEAT_MTE2 --- Memory Tagging Extension
251- ` neon ` | | FEAT_FP & FEAT_AdvSIMD --- Floating Point and Advanced SIMD extension
252- ` pan ` | | FEAT_PAN --- Privileged Access-Never extension
253- ` paca ` | | FEAT_PAuth --- Pointer Authentication (address authentication)
254- ` pacg ` | | FEAT_PAuth --- Pointer Authentication (generic authentication)
255- ` pmuv3 ` | | FEAT_PMUv3 --- Performance Monitors extension (v3)
256- ` rand ` | | FEAT_RNG --- Random Number Generator
257- ` ras ` | | FEAT_RAS & FEAT_RASv1p1 --- Reliability, Availability and Serviceability extension
258- ` rcpc ` | | FEAT_LRCPC --- Release consistent Processor Consistent
259- ` rcpc2 ` | ` rcpc ` | FEAT_LRCPC2 --- RcPc with immediate offsets
260- ` rdm ` | | FEAT_RDM --- Rounding Double Multiply accumulate
261- ` sb ` | | FEAT_SB --- Speculation Barrier
262- ` sha2 ` | ` neon ` | FEAT_SHA1 & FEAT_SHA256 --- Advanced SIMD SHA instructions
263- ` sha3 ` | ` sha2 ` | FEAT_SHA512 & FEAT_SHA3 --- Advanced SIMD SHA instructions
264- ` sm4 ` | ` neon ` | FEAT_SM3 & FEAT_SM4 --- Advanced SIMD SM3/4 instructions
265- ` spe ` | | FEAT_SPE --- Statistical Profiling Extension
266- ` ssbs ` | | FEAT_SSBS & FEAT_SSBS2 --- Speculative Store Bypass Safe
267- ` sve ` | ` fp16 ` | FEAT_SVE --- Scalable Vector Extension
268- ` sve2 ` | ` sve ` | FEAT_SVE2 --- Scalable Vector Extension 2
269- ` sve2-aes ` | ` sve2 ` , ` aes ` | FEAT_SVE_AES --- SVE AES instructions
270- ` sve2-sm4 ` | ` sve2 ` , ` sm4 ` | FEAT_SVE_SM4 --- SVE SM4 instructions
271- ` sve2-sha3 ` | ` sve2 ` , ` sha3 ` | FEAT_SVE_SHA3 --- SVE SHA3 instructions
272- ` sve2-bitperm ` | ` sve2 ` | FEAT_SVE_BitPerm --- SVE Bit Permute
273- ` tme ` | | FEAT_TME --- Transactional Memory Extension
274- ` vh ` | | FEAT_VHE --- Virtualization Host Extensions
229+ Feature | Stability | Implicity Enables | Feature Name
230+ ------- | --------- | ----------------- | ------------
231+ ` aes ` | Stable | ` neon ` | FEAT_AES & FEAT_PMULL --- Advanced <abbr title =" Single Instruction Multiple Data " >SIMD</abbr > AES & PMULL instructions
232+ ` bf16 ` | Stable | | FEAT_BF16 --- BFloat16 instructions
233+ ` bti ` | Stable | | FEAT_BTI --- Branch Target Identification
234+ ` crc ` | Stable | | FEAT_CRC --- CRC32 checksum instructions
235+ ` cssc ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_CSSC --- Common Short Sequence Compression (CSSC) instructions
236+ ` dit ` | Stable | | FEAT_DIT --- Data Independent Timing instructions
237+ ` dotprod ` | Stable | ` neon ` | FEAT_DotProd --- Advanced SIMD Int8 dot product instructions
238+ ` dpb ` | Stable | | FEAT_DPB --- Data cache clean to point of persistence
239+ ` dpb2 ` | Stable | ` dpb ` | FEAT_DPB2 --- Data cache clean to point of deep persistence
240+ ` ecv ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_ECV --- Enhanced counter virtualization extension
241+ ` f32mm ` | Stable | ` sve ` | FEAT_F32MM --- SVE single-precision FP matrix multiply instruction
242+ ` f64mm ` | Stable | ` sve ` | FEAT_F64MM --- SVE double-precision FP matrix multiply instruction
243+ ` faminmax ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_FAMINMAX --- Enable FAMIN and FAMAX instructions
244+ ` fcma ` | Stable | ` neon ` | FEAT_FCMA --- Floating point complex number support
245+ ` fhm ` | Stable | ` fp16 ` | FEAT_FHM --- Half-precision FP FMLAL instructions
246+ ` flagm ` | Stable | | FEAT_FLAGM --- Conditional flag manipulation
247+ ` flagm2 ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_FLAGM2 --- Enhancements to flag manipulation instructions
248+ ` fp16 ` | Stable | ` neon ` | FEAT_FP16 --- Half-precision FP data processing
249+ ` fp8 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` faminmax ` ` lut ` , ` bf16 ` , | FEAT_FP8 --- FP8 (F8CVT Instructions)
250+ ` fp8dot2 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` fp8dot4 ` | FEAT_FP8DOT2 --- FP8 2-way dot product instructions
251+ ` fp8dot4 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` fp8fma ` | FEAT_FP8DOT4 --- FP8 4-way dot product instructions
252+ ` fp8fma ` | Unstable (` aarch64_unstable_target_feature ` ) | ` fp8 ` | FEAT_FP8FMA --- FP8 multiply-add instructions
253+ ` frintts ` | Stable | | FEAT_FRINTTS --- Floating-point to int helper instructions
254+ ` hbc ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_HBC --- Hinted conditional branches
255+ ` i8mm ` | Stable | | FEAT_I8MM --- Int8 Matrix Multiplication
256+ ` jsconv ` | Stable | ` neon ` | FEAT_JSCVT --- JavaScript conversion instruction
257+ ` lor ` | Stable | | FEAT_LOR --- Limited Ordering Regions extension
258+ ` lse ` | Stable | | FEAT_LSE --- Large System Extensions
259+ ` lse128 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` lse ` | FEAT_LSE128 --- 128-bit Atomics
260+ ` lse2 ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_LSE2 --- Large System Extensions version 2
261+ ` lut ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_LUT --- Lookup Table instructions
262+ ` mops ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_MOPS --- memcpy and memset acceleration instructions
263+ ` mte ` | Stable | | FEAT_MTE & FEAT_MTE2 --- Memory Tagging Extension
264+ ` neon ` | Stable | | FEAT_AdvSimd & FEAT_FP --- Floating Point and Advanced SIMD extension
265+ ` paca ` | Stable | | FEAT_PAUTH --- Pointer Authentication (address authentication)
266+ ` pacg ` | Stable | | FEAT_PAUTH --- Pointer Authentication (generic authentication)
267+ ` pan ` | Stable | | FEAT_PAN --- Privileged Access-Never extension
268+ ` pauth-lr ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_PAuth_LR --- Pointer authentication instructions that allow signing of LR using SP and PC as diversifiers
269+ ` pmuv3 ` | Stable | | FEAT_PMUv3 --- Performance Monitors extension (v3)
270+ ` rand ` | Stable | | FEAT_RNG --- Random Number Generator
271+ ` ras ` | Stable | | FEAT_RAS & FEAT_RASv1p1 --- Reliability, Availability and Serviceability extension
272+ ` rcpc ` | Stable | | FEAT_LRCPC --- Release consistent Processor Consistent
273+ ` rcpc2 ` | Stable | ` rcpc ` | FEAT_LRCPC2 --- RcPc with immediate offsets
274+ ` rcpc3 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` rcpc2 ` | FEAT_LRCPC3 --- RcPc instructions version 3
275+ ` rdm ` | Stable | ` neon ` | FEAT_RDM --- Rounding Double Multiply accumulate
276+ ` sb ` | Stable | | FEAT_SB --- Speculation Barrier
277+ ` sha2 ` | Stable | ` neon ` | FEAT_SHA1 & FEAT_SHA256 --- Advanced SIMD SHA instructions
278+ ` sha3 ` | Stable | ` sha2 ` | FEAT_SHA512 & FEAT_SHA3 --- Advanced SIMD SHA instructions
279+ ` sm4 ` | Stable | ` neon ` | FEAT_SM3 & FEAT_SM4 --- Advanced SIMD SM3/4 instructions
280+ ` sme ` | Unstable (` aarch64_unstable_target_feature ` ) | ` bf16 ` | FEAT_SME --- Scalable Matrix Extension
281+ ` sme-b16b16 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` bf16 ` ` sme2 ` , ` sve-b16b16 ` , | FEAT_SME_B16B16 --- Non-widening BFloat16 to BFloat16 SME ZA-targeting arithmetic
282+ ` sme-f16f16 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme2 ` | FEAT_SME_F16F16 --- Non-widening half-precision FP16 to FP16 arithmetic for SME2
283+ ` sme-f64f64 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme ` | FEAT_SME_F64F64 --- Double-precision floating-point outer product instructions
284+ ` sme-f8f16 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme-f8f32 ` | FEAT_SME_F8F16 --- SME F8F16 instructions
285+ ` sme-f8f32 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme2 ` ` fp8 ` , | FEAT_SME_F8F32 --- SME F8F32 instructions
286+ ` sme-fa64 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme ` ` sve2 ` , | FEAT_SME_FA64 --- Full A64 instruction set support in Streaming SVE mode
287+ ` sme-i16i64 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme ` | FEAT_SME_I16I64 --- 16-bit to 64-bit integer widening outer product instructions
288+ ` sme-lutv2 ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_SME_LUTv2 --- LUTI4 instruction
289+ ` sme2 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme ` | FEAT_SME2 --- SME Version 2
290+ ` sme2p1 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme2 ` | FEAT_SME2p1 --- SME Version 2.1
291+ ` spe ` | Stable | | FEAT_SPE --- Statistical Profiling Extension
292+ ` ssbs ` | Stable | | FEAT_SSBS & FEAT_SSBS2 --- Speculative Store Bypass Safe
293+ ` ssve-fp8dot2 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` ssve-fp8dot4 ` | FEAT_SSVE_FP8FDOT2 --- SVE FP8 2-way dot product to half-precision instructions in Streaming SVE mode
294+ ` ssve-fp8dot4 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` ssve-fp8fma ` | FEAT_SSVE_FP8FDOT4 --- SVE2 FP8 4-way dot product to single-precision instructions in Streaming SVE mode
295+ ` ssve-fp8fma ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sme2 ` ` fp8 ` , | FEAT_SSVE_FP8FMA --- SVE2 FP8 multiply-accumulate to half-precision and single-precision instructions in Streaming SVE mode
296+ ` sve ` | Stable | ` neon ` | FEAT_SVE --- Scalable Vector Extension
297+ ` sve-b16b16 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` bf16 ` | FEAT_SVE_B16B16 --- Non-widening BFloat16 to BFloat16 arithmetic for SVE2 and SME2
298+ ` sve2 ` | Stable | ` sve ` | FEAT_SVE2 --- Scalable Vector Extension 2
299+ ` sve2-aes ` | Stable | ` sve2 ` ` aes ` , | FEAT_SVE_AES & FEAT_SVE_PMULL128 --- SVE AES instructions
300+ ` sve2-bitperm ` | Stable | ` sve2 ` | FEAT_SVE2_BitPerm --- SVE Bit Permute
301+ ` sve2-sha3 ` | Stable | ` sve2 ` ` sha3 ` , | FEAT_SVE2_SHA3 --- SVE SHA3 instructions
302+ ` sve2-sm4 ` | Stable | ` sve2 ` ` sm4 ` , | FEAT_SVE2_SM4 --- SVE SM4 instructions
303+ ` sve2p1 ` | Unstable (` aarch64_unstable_target_feature ` ) | ` sve2 ` | FEAT_SVE2p1 --- Scalable Vector Extension 2.1
304+ ` tme ` | Stable | | FEAT_TME --- Transactional Memory Extension
305+ ` vh ` | Stable | | FEAT_VHE --- Virtualization Host Extensions
306+ ` wfxt ` | Unstable (` aarch64_unstable_target_feature ` ) | | FEAT_WFxT --- WFET and WFIT instructions
275307
276308r[ attributes.codegen.target_feature.riscv]
277309#### ` riscv32 ` or ` riscv64 `
0 commit comments