From 98ef45900fbdbe1edf0ce9220e08d60b2912233e Mon Sep 17 00:00:00 2001 From: Neel Gala Date: Fri, 8 Apr 2022 19:14:00 +0530 Subject: migrate Zk*-extension opcodes (major) - significant restructuring of opcodes into files as per new file naming policy --- opcodes-rv32zk | 20 -------------------- opcodes-rv64zk | 21 --------------------- opcodes-rvzk | 20 -------------------- rv32_zk | 25 +++++++++++++++++++++++++ rv32_zkn | 25 +++++++++++++++++++++++++ rv32_zknd | 4 ++++ rv32_zkne | 5 +++++ rv32_zknh | 8 ++++++++ rv32_zks | 6 ++++++ rv64_zk | 28 ++++++++++++++++++++++++++++ rv64_zkn | 28 ++++++++++++++++++++++++++++ rv64_zknd | 7 +++++++ rv64_zkne | 5 +++++ rv64_zknh | 6 ++++++ rv64_zks | 7 +++++++ rv_zk | 24 ++++++++++++++++++++++++ rv_zkn | 24 ++++++++++++++++++++++++ rv_zknh | 5 +++++ rv_zks | 26 ++++++++++++++++++++++++++ rv_zksed | 4 ++++ rv_zksh | 4 ++++ 21 files changed, 241 insertions(+), 61 deletions(-) delete mode 100644 opcodes-rv32zk delete mode 100644 opcodes-rv64zk delete mode 100644 opcodes-rvzk create mode 100644 rv32_zk create mode 100644 rv32_zkn create mode 100644 rv32_zknd create mode 100644 rv32_zkne create mode 100644 rv32_zknh create mode 100644 rv32_zks create mode 100644 rv64_zk create mode 100644 rv64_zkn create mode 100644 rv64_zknd create mode 100644 rv64_zkne create mode 100644 rv64_zknh create mode 100644 rv64_zks create mode 100644 rv_zk create mode 100644 rv_zkn create mode 100644 rv_zknh create mode 100644 rv_zks create mode 100644 rv_zksed create mode 100644 rv_zksh diff --git a/opcodes-rv32zk b/opcodes-rv32zk deleted file mode 100644 index 56ed607..0000000 --- a/opcodes-rv32zk +++ /dev/null @@ -1,20 +0,0 @@ - -# -# This file contains opcode specifications for the RISC-V -# Scalar Cryptographic instruction set extension. -# These instructions appear _only_ in RV32. -# ------------------------------------------------------------ - -# Scalar AES - RV32 -aes32esmi rd rs1 rs2 bs 29..25=0b10011 14..12=0 6..0=0x33 -aes32esi rd rs1 rs2 bs 29..25=0b10001 14..12=0 6..0=0x33 -aes32dsmi rd rs1 rs2 bs 29..25=0b10111 14..12=0 6..0=0x33 -aes32dsi rd rs1 rs2 bs 29..25=0b10101 14..12=0 6..0=0x33 - -# Scalar SHA512 - RV32 -sha512sum0r rd rs1 rs2 31..30=1 29..25=0b01000 14..12=0 6..0=0x33 -sha512sum1r rd rs1 rs2 31..30=1 29..25=0b01001 14..12=0 6..0=0x33 -sha512sig0l rd rs1 rs2 31..30=1 29..25=0b01010 14..12=0 6..0=0x33 -sha512sig0h rd rs1 rs2 31..30=1 29..25=0b01110 14..12=0 6..0=0x33 -sha512sig1l rd rs1 rs2 31..30=1 29..25=0b01011 14..12=0 6..0=0x33 -sha512sig1h rd rs1 rs2 31..30=1 29..25=0b01111 14..12=0 6..0=0x33 diff --git a/opcodes-rv64zk b/opcodes-rv64zk deleted file mode 100644 index 85fac51..0000000 --- a/opcodes-rv64zk +++ /dev/null @@ -1,21 +0,0 @@ - -# -# This file contains opcode specifications for the RISC-V -# Scalar Cryptographic instruction set extension. -# These instructions appear _only_ in RV64. -# ------------------------------------------------------------ - -# Scalar AES - RV64 -aes64ks1i rd rs1 rnum 31..30=0 29..25=0b11000 24=1 14..12=0b001 6..0=0x13 -aes64im rd rs1 31..30=0 29..25=0b11000 24..20=0b0000 14..12=0b001 6..0=0x13 -aes64ks2 rd rs1 rs2 31..30=1 29..25=0b11111 14..12=0b000 6..0=0x33 -aes64esm rd rs1 rs2 31..30=0 29..25=0b11011 14..12=0b000 6..0=0x33 -aes64es rd rs1 rs2 31..30=0 29..25=0b11001 14..12=0b000 6..0=0x33 -aes64dsm rd rs1 rs2 31..30=0 29..25=0b11111 14..12=0b000 6..0=0x33 -aes64ds rd rs1 rs2 31..30=0 29..25=0b11101 14..12=0b000 6..0=0x33 - -# Scalar SHA512 - RV64 -sha512sum0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00100 14..12=1 6..0=0x13 -sha512sum1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00101 14..12=1 6..0=0x13 -sha512sig0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00110 14..12=1 6..0=0x13 -sha512sig1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00111 14..12=1 6..0=0x13 diff --git a/opcodes-rvzk b/opcodes-rvzk deleted file mode 100644 index 956a97d..0000000 --- a/opcodes-rvzk +++ /dev/null @@ -1,20 +0,0 @@ - -# -# This file contains opcode specifications for the RISC-V -# Scalar Cryptographic instruction set extension. -# These instructions appear in _both_ RV32 and RV64. -# ------------------------------------------------------------ - -# Scalar SM4 - RV32, RV64 -sm4ed rd rs1 rs2 bs 29..25=0b11000 14..12=0 6..0=0x33 -sm4ks rd rs1 rs2 bs 29..25=0b11010 14..12=0 6..0=0x33 - -# Scalar SM3 - RV32, RV64 -sm3p0 rd rs1 31..30=0 29..25=0b01000 24..20=0b01000 14..12=1 6..0=0x13 -sm3p1 rd rs1 31..30=0 29..25=0b01000 24..20=0b01001 14..12=1 6..0=0x13 - -# Scalar SHA256 - RV32/RV64 -sha256sum0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00000 14..12=1 6..0=0x13 -sha256sum1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00001 14..12=1 6..0=0x13 -sha256sig0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00010 14..12=1 6..0=0x13 -sha256sig1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00011 14..12=1 6..0=0x13 diff --git a/rv32_zk b/rv32_zk new file mode 100644 index 0000000..e491103 --- /dev/null +++ b/rv32_zk @@ -0,0 +1,25 @@ +#import zbkb +$pseudo_op rv64_zbp::shfli zip rd rs1 31..25=4 24..20=15 14..12=1 6..2=4 1..0=3 +$pseudo_op rv64_zbp::unshfli unzip rd rs1 31..25=4 24..20=15 14..12=5 6..2=4 1..0=3 +$pseudo_op rv64_zbb::rori rori rd rs1 31..25=0x30 shamtw 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x698 14..12=5 6..0=0x13 + +#import zkne +$import rv32_zkne::aes32esmi +$import rv32_zkne::aes32esi + +#import zknd +# Scalar AES - RV32 +$import rv32_zknd::aes32dsmi +$import rv32_zknd::aes32dsi + + +#import zknh +# Scalar SHA512 - RV32 +$import rv32_zknh::sha512sum0r +$import rv32_zknh::sha512sum1r +$import rv32_zknh::sha512sig0l +$import rv32_zknh::sha512sig0h +$import rv32_zknh::sha512sig1l +$import rv32_zknh::sha512sig1h + diff --git a/rv32_zkn b/rv32_zkn new file mode 100644 index 0000000..e491103 --- /dev/null +++ b/rv32_zkn @@ -0,0 +1,25 @@ +#import zbkb +$pseudo_op rv64_zbp::shfli zip rd rs1 31..25=4 24..20=15 14..12=1 6..2=4 1..0=3 +$pseudo_op rv64_zbp::unshfli unzip rd rs1 31..25=4 24..20=15 14..12=5 6..2=4 1..0=3 +$pseudo_op rv64_zbb::rori rori rd rs1 31..25=0x30 shamtw 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x698 14..12=5 6..0=0x13 + +#import zkne +$import rv32_zkne::aes32esmi +$import rv32_zkne::aes32esi + +#import zknd +# Scalar AES - RV32 +$import rv32_zknd::aes32dsmi +$import rv32_zknd::aes32dsi + + +#import zknh +# Scalar SHA512 - RV32 +$import rv32_zknh::sha512sum0r +$import rv32_zknh::sha512sum1r +$import rv32_zknh::sha512sig0l +$import rv32_zknh::sha512sig0h +$import rv32_zknh::sha512sig1l +$import rv32_zknh::sha512sig1h + diff --git a/rv32_zknd b/rv32_zknd new file mode 100644 index 0000000..f367d5e --- /dev/null +++ b/rv32_zknd @@ -0,0 +1,4 @@ +# Scalar AES - RV32 +aes32dsmi rd rs1 rs2 bs 29..25=0b10111 14..12=0 6..0=0x33 +aes32dsi rd rs1 rs2 bs 29..25=0b10101 14..12=0 6..0=0x33 + diff --git a/rv32_zkne b/rv32_zkne new file mode 100644 index 0000000..72bd617 --- /dev/null +++ b/rv32_zkne @@ -0,0 +1,5 @@ +# Scalar AES - RV32 + +aes32esmi rd rs1 rs2 bs 29..25=0b10011 14..12=0 6..0=0x33 +aes32esi rd rs1 rs2 bs 29..25=0b10001 14..12=0 6..0=0x33 + diff --git a/rv32_zknh b/rv32_zknh new file mode 100644 index 0000000..675bf54 --- /dev/null +++ b/rv32_zknh @@ -0,0 +1,8 @@ +# Scalar SHA512 - RV32 +sha512sum0r rd rs1 rs2 31..30=1 29..25=0b01000 14..12=0 6..0=0x33 +sha512sum1r rd rs1 rs2 31..30=1 29..25=0b01001 14..12=0 6..0=0x33 +sha512sig0l rd rs1 rs2 31..30=1 29..25=0b01010 14..12=0 6..0=0x33 +sha512sig0h rd rs1 rs2 31..30=1 29..25=0b01110 14..12=0 6..0=0x33 +sha512sig1l rd rs1 rs2 31..30=1 29..25=0b01011 14..12=0 6..0=0x33 +sha512sig1h rd rs1 rs2 31..30=1 29..25=0b01111 14..12=0 6..0=0x33 + diff --git a/rv32_zks b/rv32_zks new file mode 100644 index 0000000..034c532 --- /dev/null +++ b/rv32_zks @@ -0,0 +1,6 @@ +#import zbkb +$pseudo_op rv64_zbp::shfli zip rd rs1 31..25=4 24..20=15 14..12=1 6..2=4 1..0=3 +$pseudo_op rv64_zbp::unshfli unzip rd rs1 31..25=4 24..20=15 14..12=5 6..2=4 1..0=3 +$pseudo_op rv64_zbb::rori rori rd rs1 31..25=0x30 shamtw 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x698 14..12=5 6..0=0x13 + diff --git a/rv64_zk b/rv64_zk new file mode 100644 index 0000000..0ebf71d --- /dev/null +++ b/rv64_zk @@ -0,0 +1,28 @@ +#import zbkb +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x6B8 14..12=5 6..0=0x13 +$import rv64_zbb::rolw +$import rv64_zbb::rorw +$import rv64_zbb::roriw +$import rv64_zbb::rori +$import rv64_zbe::packw + +#import zkne +# Scalar AES - RV64 +$import rv64_zkne::aes64esm +$import rv64_zkne::aes64es +$import rv64_zknd::aes64ks1i +$import rv64_zknd::aes64ks2 + +#import zknd +# Scalar AES - RV64 +$import rv64_zknd::aes64dsm +$import rv64_zknd::aes64ds +$import rv64_zknd::aes64im + +#import zknh +# Scalar SHA512 - RV64 +$import rv64_zknh::sha512sum0 +$import rv64_zknh::sha512sum1 +$import rv64_zknh::sha512sig0 +$import rv64_zknh::sha512sig1 + diff --git a/rv64_zkn b/rv64_zkn new file mode 100644 index 0000000..0ebf71d --- /dev/null +++ b/rv64_zkn @@ -0,0 +1,28 @@ +#import zbkb +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x6B8 14..12=5 6..0=0x13 +$import rv64_zbb::rolw +$import rv64_zbb::rorw +$import rv64_zbb::roriw +$import rv64_zbb::rori +$import rv64_zbe::packw + +#import zkne +# Scalar AES - RV64 +$import rv64_zkne::aes64esm +$import rv64_zkne::aes64es +$import rv64_zknd::aes64ks1i +$import rv64_zknd::aes64ks2 + +#import zknd +# Scalar AES - RV64 +$import rv64_zknd::aes64dsm +$import rv64_zknd::aes64ds +$import rv64_zknd::aes64im + +#import zknh +# Scalar SHA512 - RV64 +$import rv64_zknh::sha512sum0 +$import rv64_zknh::sha512sum1 +$import rv64_zknh::sha512sig0 +$import rv64_zknh::sha512sig1 + diff --git a/rv64_zknd b/rv64_zknd new file mode 100644 index 0000000..f1507d6 --- /dev/null +++ b/rv64_zknd @@ -0,0 +1,7 @@ +# Scalar AES - RV64 +aes64dsm rd rs1 rs2 31..30=0 29..25=0b11111 14..12=0b000 6..0=0x33 +aes64ds rd rs1 rs2 31..30=0 29..25=0b11101 14..12=0b000 6..0=0x33 +aes64ks1i rd rs1 rnum 31..30=0 29..25=0b11000 24=1 14..12=0b001 6..0=0x13 +aes64im rd rs1 31..30=0 29..25=0b11000 24..20=0b0000 14..12=0b001 6..0=0x13 +aes64ks2 rd rs1 rs2 31..30=1 29..25=0b11111 14..12=0b000 6..0=0x33 + diff --git a/rv64_zkne b/rv64_zkne new file mode 100644 index 0000000..3323b7f --- /dev/null +++ b/rv64_zkne @@ -0,0 +1,5 @@ +# Scalar AES - RV64 +aes64esm rd rs1 rs2 31..30=0 29..25=0b11011 14..12=0b000 6..0=0x33 +aes64es rd rs1 rs2 31..30=0 29..25=0b11001 14..12=0b000 6..0=0x33 +$import rv64_zknd::aes64ks1i +$import rv64_zknd::aes64ks2 diff --git a/rv64_zknh b/rv64_zknh new file mode 100644 index 0000000..431a1bc --- /dev/null +++ b/rv64_zknh @@ -0,0 +1,6 @@ +# Scalar SHA512 - RV64 +sha512sum0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00100 14..12=1 6..0=0x13 +sha512sum1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00101 14..12=1 6..0=0x13 +sha512sig0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00110 14..12=1 6..0=0x13 +sha512sig1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00111 14..12=1 6..0=0x13 + diff --git a/rv64_zks b/rv64_zks new file mode 100644 index 0000000..6bbad27 --- /dev/null +++ b/rv64_zks @@ -0,0 +1,7 @@ +#import zbkb +$pseudo_op rv64_zbp::grevi rev8 rd rs1 31..20=0x6B8 14..12=5 6..0=0x13 +$import rv64_zbb::rolw +$import rv64_zbb::rorw +$import rv64_zbb::roriw +$import rv64_zbb::rori +$import rv64_zbe::packw diff --git a/rv_zk b/rv_zk new file mode 100644 index 0000000..bdd8514 --- /dev/null +++ b/rv_zk @@ -0,0 +1,24 @@ +# import zbkb +$import rv_zbb::rol +$import rv_zbb::ror +$import rv_zbb::andn +$import rv_zbb::orn +$import rv_zbb::xnor +$import rv_zbe::pack +$import rv_zbe::packh +$pseudo_op rv64_zbp::grevi brev8 rd rs1 31..20=0x687 14..12=5 6..2=0x4 1..0=0x3 + +#import zbkc +$import rv_zbc::clmul +$import rv_zbc::clmulh + +#import zbkx +$import rv_zbkx::xperm4 +$import rv_zbkx::xperm8 + +#import zknh +# Scalar SHA256 - RV32/RV64 +$import rv_zknh::sha256sum0 +$import rv_zknh::sha256sum1 +$import rv_zknh::sha256sig0 +$import rv_zknh::sha256sig1 diff --git a/rv_zkn b/rv_zkn new file mode 100644 index 0000000..bdd8514 --- /dev/null +++ b/rv_zkn @@ -0,0 +1,24 @@ +# import zbkb +$import rv_zbb::rol +$import rv_zbb::ror +$import rv_zbb::andn +$import rv_zbb::orn +$import rv_zbb::xnor +$import rv_zbe::pack +$import rv_zbe::packh +$pseudo_op rv64_zbp::grevi brev8 rd rs1 31..20=0x687 14..12=5 6..2=0x4 1..0=0x3 + +#import zbkc +$import rv_zbc::clmul +$import rv_zbc::clmulh + +#import zbkx +$import rv_zbkx::xperm4 +$import rv_zbkx::xperm8 + +#import zknh +# Scalar SHA256 - RV32/RV64 +$import rv_zknh::sha256sum0 +$import rv_zknh::sha256sum1 +$import rv_zknh::sha256sig0 +$import rv_zknh::sha256sig1 diff --git a/rv_zknh b/rv_zknh new file mode 100644 index 0000000..2079628 --- /dev/null +++ b/rv_zknh @@ -0,0 +1,5 @@ +# Scalar SHA256 - RV32/RV64 +sha256sum0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00000 14..12=1 6..0=0x13 +sha256sum1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00001 14..12=1 6..0=0x13 +sha256sig0 rd rs1 31..30=0 29..25=0b01000 24..20=0b00010 14..12=1 6..0=0x13 +sha256sig1 rd rs1 31..30=0 29..25=0b01000 24..20=0b00011 14..12=1 6..0=0x13 diff --git a/rv_zks b/rv_zks new file mode 100644 index 0000000..20516f3 --- /dev/null +++ b/rv_zks @@ -0,0 +1,26 @@ +# import zbkb +$import rv_zbb::rol +$import rv_zbb::ror +$import rv_zbb::andn +$import rv_zbb::orn +$import rv_zbb::xnor +$import rv_zbe::pack +$import rv_zbe::packh +$pseudo_op rv64_zbp::grevi brev8 rd rs1 31..20=0x687 14..12=5 6..2=0x4 1..0=0x3 + +#import zbkc +$import rv_zbc::clmul +$import rv_zbc::clmulh + +#import zbkx +$import rv_zbkx::xperm4 +$import rv_zbkx::xperm8 + +# Scalar SM4 - RV32, RV64 +$import rv_zksed::sm4ed +$import rv_zksed::sm4ks + +# Scalar SM3 - RV32, RV64 +$import rv_zksh::sm3p0 +$import rv_zksh::sm3p1 + diff --git a/rv_zksed b/rv_zksed new file mode 100644 index 0000000..92e17c5 --- /dev/null +++ b/rv_zksed @@ -0,0 +1,4 @@ +# Scalar SM4 - RV32, RV64 +sm4ed rd rs1 rs2 bs 29..25=0b11000 14..12=0 6..0=0x33 +sm4ks rd rs1 rs2 bs 29..25=0b11010 14..12=0 6..0=0x33 + diff --git a/rv_zksh b/rv_zksh new file mode 100644 index 0000000..f21eaa8 --- /dev/null +++ b/rv_zksh @@ -0,0 +1,4 @@ +# Scalar SM3 - RV32, RV64 +sm3p0 rd rs1 31..30=0 29..25=0b01000 24..20=0b01000 14..12=1 6..0=0x13 +sm3p1 rd rs1 31..30=0 29..25=0b01000 24..20=0b01001 14..12=1 6..0=0x13 + -- cgit v1.1