This document describes the Vector Cryptography extensions to the RISC-V Instruction Set Architecture.
This document is Ratified. No changes are allowed. Any desired or needed changes can be the subject of a follow-on new extension. Ratified extensions are never revised. For more information, see here.
Note
|
Copyright and licensure:
This work is licensed under a
Creative Commons Attribution 4.0 International License
|
Note
|
Document Version Information:
See github.com/riscv/riscv-crypto for more information. |
Contributors to this specification (in alphabetical order)
include:
Allen Baum,
Barna Ibrahim,
Barry Spinney,
Ben Marshall,
Derek Atkins,
Ken Dockser (Editor),
Markku-Juhani O. Saarinen,
Nicolas Brunie,
Richard Newell
We are all very grateful to the many other people who have helped to improve this specification through their comments, reviews, feedback and questions.
The section introduces all of the extensions in the Vector Cryptography Instruction Set Extension Specification.
The Zvknhb and [zvbc] Vector Crypto Extensions --and accordingly the composite extensions [Zvkn] and [Zvks]-- require a Zve64x base, or application ("V") base Vector Extension.
All of the other Vector Crypto Extensions can be built on any embedded (Zve*) or application ("V") base Vector Extension.
All cryptography-specific instructions defined in this Vector Crypto specification (i.e., those
in [zvkned], Zvknh[ab], [Zvkg], [Zvksed] and [zvksh] but not [zvbb],[zvkb], or [zvbc]) shall
be executed with data-independent execution latency as defined in the
RISC-V Scalar Cryptography Extensions specification.
It is important to note that the Vector Crypto instructions are independent of the
implementation of the Zkt
extension and do not require that Zkt
is implemented.
This specification includes a [Zvkt] extension that, when implemented, requires certain vector instructions (including [zvbb], [zvkb], and [zvbc]) to be executed with data-independent execution latency.
Detection of individual cryptography extensions uses the unified software-based RISC-V discovery method.
Note
|
At the time of writing, these discovery mechanisms are still a work in progress. |
./riscv-crypto-vector-zvbb.adoc <<< ./riscv-crypto-vector-zvbc.adoc <<< ./riscv-crypto-vector-zvkb.adoc <<< ./riscv-crypto-vector-zvkg.adoc <<< ./riscv-crypto-vector-zvkned.adoc <<< ./riscv-crypto-vector-zvknh.adoc <<< ./riscv-crypto-vector-zvksed.adoc <<< ./riscv-crypto-vector-zvksh.adoc <<< ./riscv-crypto-vector-zvkn.adoc <<< ./riscv-crypto-vector-zvknc.adoc <<< ./riscv-crypto-vector-zvkng.adoc <<< ./riscv-crypto-vector-zvks.adoc <<< ./riscv-crypto-vector-zvksc.adoc <<< ./riscv-crypto-vector-zvksg.adoc <<< ./riscv-crypto-vector-zvkt.adoc <<<
insns/vaesdf.adoc <<< insns/vaesdm.adoc <<< insns/vaesef.adoc <<< insns/vaesem.adoc <<< insns/vaeskf1.adoc <<< insns/vaeskf2.adoc <<< insns/vaesz.adoc <<< insns/vandn.adoc <<< insns/vbrev.adoc <<< insns/vbrev8.adoc <<< insns/vclmul.adoc <<< insns/vclmulh.adoc <<< insns/vclz.adoc <<< insns/vcpop.adoc <<< insns/vctz.adoc <<< insns/vghsh.adoc <<< insns/vgmul.adoc <<< insns/vrev8.adoc <<< insns/vrol.adoc <<< insns/vror.adoc <<< insns/vsha2c.adoc <<< insns/vsha2ms.adoc <<< insns/vsm3c.adoc <<< insns/vsm3me.adoc <<< insns/vsm4k.adoc <<< insns/vsm4r.adoc <<< insns/vwsll.adoc <<<