diff options
author | Eric Biggers <ebiggers3@gmail.com> | 2023-12-18 22:04:22 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-18 22:04:22 -0800 |
commit | 09058654f68dd4cc5435f49502de33bac2b7f8fa (patch) | |
tree | 4ad3da3eb43d3a4a6e65c37d7f24190a4cee6863 /llvm/lib/Target/RISCV/RISCVFeatures.td | |
parent | 108989b7176651d7a0f3161a7baba588f7c4ea52 (diff) | |
download | llvm-09058654f68dd4cc5435f49502de33bac2b7f8fa.zip llvm-09058654f68dd4cc5435f49502de33bac2b7f8fa.tar.gz llvm-09058654f68dd4cc5435f49502de33bac2b7f8fa.tar.bz2 |
[RISCV] Remove experimental from Vector Crypto extensions (#74213)
The RISC-V vector crypto extensions have been ratified. This patch
updates the Clang and LLVM support for these extensions to be
non-experimental, while leaving the C intrinsics as experimental since
the C intrinsics are not yet standardized.
Co-authored-by: Brandon Wu <brandon.wu@sifive.com>
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVFeatures.td')
-rw-r--r-- | llvm/lib/Target/RISCV/RISCVFeatures.td | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVFeatures.td b/llvm/lib/Target/RISCV/RISCVFeatures.td index 60bb3ad..5aea6b5 100644 --- a/llvm/lib/Target/RISCV/RISCVFeatures.td +++ b/llvm/lib/Target/RISCV/RISCVFeatures.td @@ -561,14 +561,14 @@ def HasStdExtZawrs : Predicate<"Subtarget->hasStdExtZawrs()">, "'Zawrs' (Wait on Reservation Set)">; def FeatureStdExtZvkb - : SubtargetFeature<"experimental-zvkb", "HasStdExtZvkb", "true", + : SubtargetFeature<"zvkb", "HasStdExtZvkb", "true", "'Zvkb' (Vector Bit-manipulation used in Cryptography)">; def HasStdExtZvkb : Predicate<"Subtarget->hasStdExtZvkb()">, AssemblerPredicate<(all_of FeatureStdExtZvkb), "'Zvkb' (Vector Bit-manipulation used in Cryptography)">; def FeatureStdExtZvbb - : SubtargetFeature<"experimental-zvbb", "HasStdExtZvbb", "true", + : SubtargetFeature<"zvbb", "HasStdExtZvbb", "true", "'Zvbb' (Vector basic bit-manipulation instructions.)", [FeatureStdExtZvkb]>; def HasStdExtZvbb : Predicate<"Subtarget->hasStdExtZvbb()">, @@ -576,35 +576,35 @@ def HasStdExtZvbb : Predicate<"Subtarget->hasStdExtZvbb()">, "'Zvbb' (Vector basic bit-manipulation instructions.)">; def FeatureStdExtZvbc - : SubtargetFeature<"experimental-zvbc", "HasStdExtZvbc", "true", + : SubtargetFeature<"zvbc", "HasStdExtZvbc", "true", "'Zvbc' (Vector Carryless Multiplication)">; def HasStdExtZvbc : Predicate<"Subtarget->hasStdExtZvbc()">, AssemblerPredicate<(all_of FeatureStdExtZvbc), "'Zvbc' (Vector Carryless Multiplication)">; def FeatureStdExtZvkg - : SubtargetFeature<"experimental-zvkg", "HasStdExtZvkg", "true", + : SubtargetFeature<"zvkg", "HasStdExtZvkg", "true", "'Zvkg' (Vector GCM instructions for Cryptography)">; def HasStdExtZvkg : Predicate<"Subtarget->hasStdExtZvkg()">, AssemblerPredicate<(all_of FeatureStdExtZvkg), "'Zvkg' (Vector GCM instructions for Cryptography)">; def FeatureStdExtZvkned - : SubtargetFeature<"experimental-zvkned", "HasStdExtZvkned", "true", + : SubtargetFeature<"zvkned", "HasStdExtZvkned", "true", "'Zvkned' (Vector AES Encryption & Decryption (Single Round))">; def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, AssemblerPredicate<(all_of FeatureStdExtZvkned), "'Zvkned' (Vector AES Encryption & Decryption (Single Round))">; def FeatureStdExtZvknha - : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", + : SubtargetFeature<"zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; def FeatureStdExtZvknhb - : SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + : SubtargetFeature<"zvknhb", "HasStdExtZvknhb", "true", "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", [FeatureStdExtZve64x]>; def HasStdExtZvknhb : Predicate<"Subtarget->hasStdExtZvknhb()">, @@ -616,59 +616,59 @@ def HasStdExtZvknhaOrZvknhb : Predicate<"Subtarget->hasStdExtZvknha() || Subtarg "'Zvknha' or 'Zvknhb' (Vector SHA-2)">; def FeatureStdExtZvksed - : SubtargetFeature<"experimental-zvksed", "HasStdExtZvksed", "true", + : SubtargetFeature<"zvksed", "HasStdExtZvksed", "true", "'Zvksed' (SM4 Block Cipher Instructions)">; def HasStdExtZvksed : Predicate<"Subtarget->hasStdExtZvksed()">, AssemblerPredicate<(all_of FeatureStdExtZvksed), "'Zvksed' (SM4 Block Cipher Instructions)">; def FeatureStdExtZvksh - : SubtargetFeature<"experimental-zvksh", "HasStdExtZvksh", "true", + : SubtargetFeature<"zvksh", "HasStdExtZvksh", "true", "'Zvksh' (SM3 Hash Function Instructions)">; def HasStdExtZvksh : Predicate<"Subtarget->hasStdExtZvksh()">, AssemblerPredicate<(all_of FeatureStdExtZvksh), "'Zvksh' (SM3 Hash Function Instructions)">; def FeatureStdExtZvkt - : SubtargetFeature<"experimental-zvkt", "HasStdExtZvkt", "true", + : SubtargetFeature<"zvkt", "HasStdExtZvkt", "true", "'Zvkt' (Vector Data-Independent Execution Latency)">; // Zvk short-hand extensions def FeatureStdExtZvkn - : SubtargetFeature<"experimental-zvkn", "HasStdExtZvkn", "true", + : SubtargetFeature<"zvkn", "HasStdExtZvkn", "true", "This extension is shorthand for the following set of " "other extensions: Zvkned, Zvknhb, Zvkb and Zvkt.", [FeatureStdExtZvkned, FeatureStdExtZvknhb, FeatureStdExtZvkb, FeatureStdExtZvkt]>; def FeatureStdExtZvknc - : SubtargetFeature<"experimental-zvknc", "HasStdExtZvknc", "true", + : SubtargetFeature<"zvknc", "HasStdExtZvknc", "true", "This extension is shorthand for the following set of " "other extensions: Zvkn and Zvbc.", [FeatureStdExtZvkn, FeatureStdExtZvbc]>; def FeatureStdExtZvkng - : SubtargetFeature<"experimental-zvkng", "HasStdExtZvkng", "true", + : SubtargetFeature<"zvkng", "HasStdExtZvkng", "true", "This extension is shorthand for the following set of " "other extensions: Zvkn and Zvkg.", [FeatureStdExtZvkn, FeatureStdExtZvkg]>; def FeatureStdExtZvks - : SubtargetFeature<"experimental-zvks", "HasStdExtZvks", "true", + : SubtargetFeature<"zvks", "HasStdExtZvks", "true", "This extension is shorthand for the following set of " "other extensions: Zvksed, Zvksh, Zvkb and Zvkt.", [FeatureStdExtZvksed, FeatureStdExtZvksh, FeatureStdExtZvkb, FeatureStdExtZvkt]>; def FeatureStdExtZvksc - : SubtargetFeature<"experimental-zvksc", "HasStdExtZvksc", "true", + : SubtargetFeature<"zvksc", "HasStdExtZvksc", "true", "This extension is shorthand for the following set of " "other extensions: Zvks and Zvbc.", [FeatureStdExtZvks, FeatureStdExtZvbc]>; def FeatureStdExtZvksg - : SubtargetFeature<"experimental-zvksg", "HasStdExtZvksg", "true", + : SubtargetFeature<"zvksg", "HasStdExtZvksg", "true", "This extension is shorthand for the following set of " "other extensions: Zvks and Zvkg.", [FeatureStdExtZvks, FeatureStdExtZvkg]>; @@ -959,6 +959,10 @@ def TuneNoOptimizedZeroStrideLoad "false", "Hasn't optimized (perform fewer memory operations)" "zero-stride vector load">; +def Experimental + : SubtargetFeature<"experimental", "HasExperimental", + "true", "Experimental intrinsics">; + // Some vector hardware implementations do not process all VLEN bits in parallel // and instead split over multiple cycles. DLEN refers to the datapath width // that can be done in parallel. |