1 // REQUIRES: aarch64-registered-target 2 // RUN: %clang --target=aarch64-linux-gnu --print-supported-extensions | FileCheck --strict-whitespace --implicit-check-not=FEAT_ %s 3 4 // CHECK: All available -march extensions for AArch64 5 // CHECK-EMPTY: 6 // CHECK-NEXT: Name Architecture Feature(s) Description 7 // CHECK-NEXT: aes FEAT_AES, FEAT_PMULL Enable AES support 8 // CHECK-NEXT: bf16 FEAT_BF16 Enable BFloat16 Extension 9 // CHECK-NEXT: brbe FEAT_BRBE Enable Branch Record Buffer Extension 10 // CHECK-NEXT: bti FEAT_BTI Enable Branch Target Identification 11 // CHECK-NEXT: cmpbr FEAT_CMPBR Enable Armv9.6-A base compare and branch instructions 12 // CHECK-NEXT: fcma FEAT_FCMA Enable Armv8.3-A Floating-point complex number support 13 // CHECK-NEXT: cpa FEAT_CPA Enable Armv9.5-A Checked Pointer Arithmetic 14 // CHECK-NEXT: crc FEAT_CRC32 Enable Armv8.0-A CRC-32 checksum instructions 15 // CHECK-NEXT: crypto FEAT_Crypto Enable cryptographic instructions 16 // CHECK-NEXT: cssc FEAT_CSSC Enable Common Short Sequence Compression (CSSC) instructions 17 // CHECK-NEXT: d128 FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128 Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and instructions 18 // CHECK-NEXT: dit FEAT_DIT Enable Armv8.4-A Data Independent Timing instructions 19 // CHECK-NEXT: dotprod FEAT_DotProd Enable dot product support 20 // CHECK-NEXT: f32mm FEAT_F32MM Enable Matrix Multiply FP32 Extension 21 // CHECK-NEXT: f64mm FEAT_F64MM Enable Matrix Multiply FP64 Extension 22 // CHECK-NEXT: f8f16mm FEAT_F8F16MM Enable Armv9.6-A FP8 to Half-Precision Matrix Multiplication 23 // CHECK-NEXT: f8f32mm FEAT_F8F32MM Enable Armv9.6-A FP8 to Single-Precision Matrix Multiplication 24 // CHECK-NEXT: faminmax FEAT_FAMINMAX Enable FAMIN and FAMAX instructions 25 // CHECK-NEXT: flagm FEAT_FlagM Enable Armv8.4-A Flag Manipulation instructions 26 // CHECK-NEXT: fp FEAT_FP Enable Armv8.0-A Floating Point Extensions 27 // CHECK-NEXT: fp16fml FEAT_FHM Enable FP16 FML instructions 28 // CHECK-NEXT: fp8 FEAT_FP8 Enable FP8 instructions 29 // CHECK-NEXT: fp8dot2 FEAT_FP8DOT2 Enable FP8 2-way dot instructions 30 // CHECK-NEXT: fp8dot4 FEAT_FP8DOT4 Enable FP8 4-way dot instructions 31 // CHECK-NEXT: fp8fma FEAT_FP8FMA Enable Armv9.5-A FP8 multiply-add instructions 32 // CHECK-NEXT: fprcvt FEAT_FPRCVT Enable Armv9.6-A base convert instructions for SIMD&FP scalar register operands of different input and output sizes 33 // CHECK-NEXT: fp16 FEAT_FP16 Enable half-precision floating-point data processing 34 // CHECK-NEXT: gcs FEAT_GCS Enable Armv9.4-A Guarded Call Stack Extension 35 // CHECK-NEXT: hbc FEAT_HBC Enable Armv8.8-A Hinted Conditional Branches Extension 36 // CHECK-NEXT: i8mm FEAT_I8MM Enable Matrix Multiply Int8 Extension 37 // CHECK-NEXT: ite FEAT_ITE Enable Armv9.4-A Instrumentation Extension 38 // CHECK-NEXT: jscvt FEAT_JSCVT Enable Armv8.3-A JavaScript FP conversion instructions 39 // CHECK-NEXT: ls64 FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA Enable Armv8.7-A LD64B/ST64B Accelerator Extension 40 // CHECK-NEXT: lse FEAT_LSE Enable Armv8.1-A Large System Extension (LSE) atomic instructions 41 // CHECK-NEXT: lse128 FEAT_LSE128 Enable Armv9.4-A 128-bit Atomic instructions 42 // CHECK-NEXT: lsfe FEAT_LSFE Enable Armv9.6-A base Atomic floating-point in-memory instructions 43 // CHECK-NEXT: lsui FEAT_LSUI Enable Armv9.6-A unprivileged load/store instructions 44 // CHECK-NEXT: lut FEAT_LUT Enable Lookup Table instructions 45 // CHECK-NEXT: mops FEAT_MOPS Enable Armv8.8-A memcpy and memset acceleration instructions 46 // CHECK-NEXT: memtag FEAT_MTE, FEAT_MTE2 Enable Memory Tagging Extension 47 // CHECK-NEXT: simd FEAT_AdvSIMD Enable Advanced SIMD instructions 48 // CHECK-NEXT: occmo FEAT_OCCMO Enable Armv9.6-A Outer cacheable cache maintenance operations 49 // CHECK-NEXT: pauth FEAT_PAuth Enable Armv8.3-A Pointer Authentication extension 50 // CHECK-NEXT: pauth-lr FEAT_PAuth_LR Enable Armv9.5-A PAC enhancements 51 // CHECK-NEXT: pcdphint FEAT_PCDPHINT Enable Armv9.6-A Producer Consumer Data Placement hints 52 // CHECK-NEXT: pmuv3 FEAT_PMUv3 Enable Armv8.0-A PMUv3 Performance Monitors extension 53 // CHECK-NEXT: pops FEAT_PoPS Enable Armv9.6-A Point Of Physical Storage (PoPS) DC instructions 54 // CHECK-NEXT: predres FEAT_SPECRES Enable Armv8.5-A execution and data prediction invalidation instructions 55 // CHECK-NEXT: rng FEAT_RNG Enable Random Number generation instructions 56 // CHECK-NEXT: ras FEAT_RAS, FEAT_RASv1p1 Enable Armv8.0-A Reliability, Availability and Serviceability Extensions 57 // CHECK-NEXT: rasv2 FEAT_RASv2 Enable Armv8.9-A Reliability, Availability and Serviceability Extensions 58 // CHECK-NEXT: rcpc FEAT_LRCPC Enable support for RCPC extension 59 // CHECK-NEXT: rcpc3 FEAT_LRCPC3 Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set 60 // CHECK-NEXT: rdm FEAT_RDM Enable Armv8.1-A Rounding Double Multiply Add/Subtract instructions 61 // CHECK-NEXT: sb FEAT_SB Enable Armv8.5-A Speculation Barrier 62 // CHECK-NEXT: sha2 FEAT_SHA1, FEAT_SHA256 Enable SHA1 and SHA256 support 63 // CHECK-NEXT: sha3 FEAT_SHA3, FEAT_SHA512 Enable SHA512 and SHA3 support 64 // CHECK-NEXT: sm4 FEAT_SM4, FEAT_SM3 Enable SM3 and SM4 support 65 // CHECK-NEXT: sme FEAT_SME Enable Scalable Matrix Extension (SME) 66 // CHECK-NEXT: sme-b16b16 FEAT_SME_B16B16 Enable SME2.1 ZA-targeting non-widening BFloat16 instructions 67 // CHECK-NEXT: sme-f16f16 FEAT_SME_F16F16 Enable SME non-widening Float16 instructions 68 // CHECK-NEXT: sme-f64f64 FEAT_SME_F64F64 Enable Scalable Matrix Extension (SME) F64F64 instructions 69 // CHECK-NEXT: sme-f8f16 FEAT_SME_F8F16 Enable Scalable Matrix Extension (SME) F8F16 instructions 70 // CHECK-NEXT: sme-f8f32 FEAT_SME_F8F32 Enable Scalable Matrix Extension (SME) F8F32 instructions 71 // CHECK-NEXT: sme-fa64 FEAT_SME_FA64 Enable the full A64 instruction set in streaming SVE mode 72 // CHECK-NEXT: sme-i16i64 FEAT_SME_I16I64 Enable Scalable Matrix Extension (SME) I16I64 instructions 73 // CHECK-NEXT: sme-lutv2 FEAT_SME_LUTv2 Enable Scalable Matrix Extension (SME) LUTv2 instructions 74 // CHECK-NEXT: sme-mop4 FEAT_SME_MOP4 Enable SME Quarter-tile outer product instructions 75 // CHECK-NEXT: sme-tmop FEAT_SME_TMOP Enable SME Structured sparsity outer product instructions 76 // CHECK-NEXT: sme2 FEAT_SME2 Enable Scalable Matrix Extension 2 (SME2) instructions 77 // CHECK-NEXT: sme2p1 FEAT_SME2p1 Enable Scalable Matrix Extension 2.1 instructions 78 // CHECK-NEXT: sme2p2 FEAT_SME2p2 Enable Armv9.6-A Scalable Matrix Extension 2.2 instructions 79 // CHECK-NEXT: profile FEAT_SPE Enable Statistical Profiling extension 80 // CHECK-NEXT: predres2 FEAT_SPECRES2 Enable Speculation Restriction Instruction 81 // CHECK-NEXT: ssbs FEAT_SSBS, FEAT_SSBS2 Enable Speculative Store Bypass Safe bit 82 // CHECK-NEXT: ssve-aes FEAT_SSVE_AES Enable Armv9.6-A SVE AES support in streaming SVE mode 83 // CHECK-NEXT: ssve-bitperm FEAT_SSVE_BitPerm Enable Armv9.6-A SVE BitPerm support in streaming SVE mode 84 // CHECK-NEXT: ssve-fp8dot2 FEAT_SSVE_FP8DOT2 Enable SVE2 FP8 2-way dot product instructions 85 // CHECK-NEXT: ssve-fp8dot4 FEAT_SSVE_FP8DOT4 Enable SVE2 FP8 4-way dot product instructions 86 // CHECK-NEXT: ssve-fp8fma FEAT_SSVE_FP8FMA Enable SVE2 FP8 multiply-add instructions 87 // CHECK-NEXT: sve FEAT_SVE Enable Scalable Vector Extension (SVE) instructions 88 // CHECK-NEXT: sve-aes FEAT_SVE_AES, FEAT_SVE_PMULL128 Enable SVE AES and quadword SVE polynomial multiply instructions 89 // CHECK-NEXT: sve-aes2 FEAT_SVE_AES2 Enable Armv9.6-A SVE multi-vector AES and multi-vector quadword polynomial multiply instructions 90 // CHECK-NEXT: sve-b16b16 FEAT_SVE_B16B16 Enable SVE2 non-widening and SME2 Z-targeting non-widening BFloat16 instructions 91 // CHECK-NEXT: sve-bfscale FEAT_SVE_BFSCALE Enable Armv9.6-A SVE BFloat16 scaling instructions 92 // CHECK-NEXT: sve-bitperm FEAT_SVE_BitPerm Enable bit permutation SVE2 instructions 93 // CHECK-NEXT: sve-f16f32mm FEAT_SVE_F16F32MM Enable Armv9.6-A FP16 to FP32 Matrix Multiply 94 // CHECK-NEXT: sve2 FEAT_SVE2 Enable Scalable Vector Extension 2 (SVE2) instructions 95 // CHECK-NEXT: sve2-aes Shorthand for +sve2+sve-aes 96 // CHECK-NEXT: sve2-bitperm Shorthand for +sve2+sve-bitperm 97 // CHECK-NEXT: sve2-sha3 FEAT_SVE_SHA3 Enable SHA3 SVE2 instructions 98 // CHECK-NEXT: sve2-sm4 FEAT_SVE_SM4 Enable SM4 SVE2 instructions 99 // CHECK-NEXT: sve2p1 FEAT_SVE2p1 Enable Scalable Vector Extension 2.1 instructions 100 // CHECK-NEXT: sve2p2 FEAT_SVE2p2 Enable Armv9.6-A Scalable Vector Extension 2.2 instructions 101 // CHECK-NEXT: the FEAT_THE Enable Armv8.9-A Translation Hardening Extension 102 // CHECK-NEXT: tlbiw FEAT_TLBIW Enable Armv9.5-A TLBI VMALL for Dirty State 103 // CHECK-NEXT: tme FEAT_TME Enable Transactional Memory Extension 104 // CHECK-NEXT: wfxt FEAT_WFxT Enable Armv8.7-A WFET and WFIT instruction 105