@@ -226,52 +226,84 @@ Reference Manual], or elsewhere on [developer.arm.com].
226
226
> The following pairs of features should both be marked as enabled or disabled together if used:
227
227
> - ` paca ` and ` pacg ` , which LLVM currently implements as one feature.
228
228
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
275
307
276
308
r[ attributes.codegen.target_feature.riscv]
277
309
#### ` riscv32 ` or ` riscv64 `
0 commit comments