aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeel Gala <neelgala@incoresemi.com>2022-04-08 19:14:00 +0530
committerNeel Gala <neelgala@incoresemi.com>2022-04-08 20:11:59 +0530
commit98ef45900fbdbe1edf0ce9220e08d60b2912233e (patch)
tree6db9d9408cbf331f34299d6e53d187241aa9f856
parent9a255844c2726ed301fd4fc9371489f4901d30b0 (diff)
downloadriscv-opcodes-98ef45900fbdbe1edf0ce9220e08d60b2912233e.zip
riscv-opcodes-98ef45900fbdbe1edf0ce9220e08d60b2912233e.tar.gz
riscv-opcodes-98ef45900fbdbe1edf0ce9220e08d60b2912233e.tar.bz2
migrate Zk*-extension opcodes (major)
- significant restructuring of opcodes into files as per new file naming policy
-rw-r--r--opcodes-rv32zk20
-rw-r--r--opcodes-rv64zk21
-rw-r--r--opcodes-rvzk20
-rw-r--r--rv32_zk25
-rw-r--r--rv32_zkn25
-rw-r--r--rv32_zknd4
-rw-r--r--rv32_zkne5
-rw-r--r--rv32_zknh8
-rw-r--r--rv32_zks6
-rw-r--r--rv64_zk28
-rw-r--r--rv64_zkn28
-rw-r--r--rv64_zknd7
-rw-r--r--rv64_zkne5
-rw-r--r--rv64_zknh6
-rw-r--r--rv64_zks7
-rw-r--r--rv_zk24
-rw-r--r--rv_zkn24
-rw-r--r--rv_zknh5
-rw-r--r--rv_zks26
-rw-r--r--rv_zksed4
-rw-r--r--rv_zksh4
21 files changed, 241 insertions, 61 deletions
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
+