aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes-rv32xbitmanip42
-rw-r--r--opcodes-rv64xbitmanip35
-rw-r--r--unratified/rv32_zbp7
-rw-r--r--unratified/rv32_zbpbo5
-rw-r--r--unratified/rv32_zbt2
-rw-r--r--unratified/rv64_zbe4
-rw-r--r--unratified/rv64_zbf3
-rw-r--r--unratified/rv64_zbm7
-rw-r--r--unratified/rv64_zbp17
-rw-r--r--unratified/rv64_zbpbo2
-rw-r--r--unratified/rv64_zbr3
-rw-r--r--unratified/rv64_zbt6
-rw-r--r--unratified/rv_zbe5
-rw-r--r--unratified/rv_zbf4
-rw-r--r--unratified/rv_zbr7
-rw-r--r--unratified/rv_zbt6
16 files changed, 78 insertions, 77 deletions
diff --git a/opcodes-rv32xbitmanip b/opcodes-rv32xbitmanip
deleted file mode 100644
index 173fb8c..0000000
--- a/opcodes-rv32xbitmanip
+++ /dev/null
@@ -1,42 +0,0 @@
-# This file contains unratified instructions that have been proposed
-# by the Bit Manipulation TG but have not been ratified. (Spike
-# supports them via the Xbitmanip extension, hence the filename.)
-
-slo rd rs1 rs2 31..25=16 14..12=1 6..2=0x0C 1..0=3
-sro rd rs1 rs2 31..25=16 14..12=5 6..2=0x0C 1..0=3
-
-gorc rd rs1 rs2 31..25=20 14..12=5 6..2=0x0C 1..0=3
-grev rd rs1 rs2 31..25=52 14..12=5 6..2=0x0C 1..0=3
-
-sloi rd rs1 31..26=8 shamt 14..12=1 6..2=0x04 1..0=3
-sroi rd rs1 31..26=8 shamt 14..12=5 6..2=0x04 1..0=3
-
-# These are marked as pseudos to avoid conflicting with orc.b and rev8
-@gorci rd rs1 31..26=10 shamt 14..12=5 6..2=0x04 1..0=3
-@grevi rd rs1 31..26=26 shamt 14..12=5 6..2=0x04 1..0=3
-
-cmix rd rs1 rs2 rs3 26..25=3 14..12=1 6..2=0x0C 1..0=3
-cmov rd rs1 rs2 rs3 26..25=3 14..12=5 6..2=0x0C 1..0=3
-
-fsl rd rs1 rs2 rs3 26..25=2 14..12=1 6..2=0x0C 1..0=3
-fsr rd rs1 rs2 rs3 26..25=2 14..12=5 6..2=0x0C 1..0=3
-fsri rd rs1 shamt rs3 26=1 14..12=5 6..2=0x04 1..0=3
-
-crc32.b rd rs1 31..20=0x610 14..12=1 6..2=0x04 1..0=3
-crc32.h rd rs1 31..20=0x611 14..12=1 6..2=0x04 1..0=3
-crc32.w rd rs1 31..20=0x612 14..12=1 6..2=0x04 1..0=3
-crc32c.b rd rs1 31..20=0x618 14..12=1 6..2=0x04 1..0=3
-crc32c.h rd rs1 31..20=0x619 14..12=1 6..2=0x04 1..0=3
-crc32c.w rd rs1 31..20=0x61A 14..12=1 6..2=0x04 1..0=3
-
-shfl rd rs1 rs2 31..25=4 14..12=1 6..2=0x0C 1..0=3
-unshfl rd rs1 rs2 31..25=4 14..12=5 6..2=0x0C 1..0=3
-bcompress rd rs1 rs2 31..25=4 14..12=6 6..2=0x0C 1..0=3
-bdecompress rd rs1 rs2 31..25=36 14..12=6 6..2=0x0C 1..0=3
-packu rd rs1 rs2 31..25=36 14..12=4 6..2=0x0C 1..0=3
-bfp rd rs1 rs2 31..25=36 14..12=7 6..2=0x0C 1..0=3
-
-shfli rd rs1 31..25=4 shamtw 14..12=1 6..2=0x04 1..0=3
-unshfli rd rs1 31..25=4 shamtw 14..12=5 6..2=0x04 1..0=3
-
-xperm16 rd rs1 rs2 31..25=20 14..12=6 6..2=0x0C 1..0=3
diff --git a/opcodes-rv64xbitmanip b/opcodes-rv64xbitmanip
deleted file mode 100644
index 6e6a595..0000000
--- a/opcodes-rv64xbitmanip
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file contains unratified instructions that have been proposed
-# by the Bit Manipulation TG but have not been ratified. (Spike
-# supports them via the Xbitmanip extension, hence the filename.)
-
-bmatflip rd rs1 31..20=0x603 14..12=1 6..2=0x04 1..0=3
-crc32.d rd rs1 31..20=0x613 14..12=1 6..2=0x04 1..0=3
-crc32c.d rd rs1 31..20=0x61B 14..12=1 6..2=0x04 1..0=3
-
-bmator rd rs1 rs2 31..25=4 14..12=3 6..2=0x0C 1..0=3
-bmatxor rd rs1 rs2 31..25=36 14..12=3 6..2=0x0C 1..0=3
-
-slow rd rs1 rs2 31..25=16 14..12=1 6..2=0x0E 1..0=3
-srow rd rs1 rs2 31..25=16 14..12=5 6..2=0x0E 1..0=3
-
-gorcw rd rs1 rs2 31..25=20 14..12=5 6..2=0x0E 1..0=3
-grevw rd rs1 rs2 31..25=52 14..12=5 6..2=0x0E 1..0=3
-
-sloiw rd rs1 31..26=8 25=0 shamtw 14..12=1 6..2=0x06 1..0=3
-sroiw rd rs1 31..26=8 25=0 shamtw 14..12=5 6..2=0x06 1..0=3
-
-gorciw rd rs1 31..26=10 25=0 shamtw 14..12=5 6..2=0x06 1..0=3
-greviw rd rs1 31..26=26 25=0 shamtw 14..12=5 6..2=0x06 1..0=3
-
-fslw rd rs1 rs2 rs3 26..25=2 14..12=1 6..2=0x0E 1..0=3
-fsrw rd rs1 rs2 rs3 26..25=2 14..12=5 6..2=0x0E 1..0=3
-fsriw rd rs1 shamtw rs3 26..25=2 14..12=5 6..2=0x06 1..0=3
-
-shflw rd rs1 rs2 31..25=4 14..12=1 6..2=0x0E 1..0=3
-unshflw rd rs1 rs2 31..25=4 14..12=5 6..2=0x0E 1..0=3
-bcompressw rd rs1 rs2 31..25=4 14..12=6 6..2=0x0E 1..0=3
-bdecompressw rd rs1 rs2 31..25=36 14..12=6 6..2=0x0E 1..0=3
-packuw rd rs1 rs2 31..25=36 14..12=4 6..2=0x0E 1..0=3
-bfpw rd rs1 rs2 31..25=36 14..12=7 6..2=0x0E 1..0=3
-
-xperm32 rd rs1 rs2 31..25=20 14..12=0 6..2=0x0C 1..0=3
diff --git a/unratified/rv32_zbp b/unratified/rv32_zbp
new file mode 100644
index 0000000..ac8a564
--- /dev/null
+++ b/unratified/rv32_zbp
@@ -0,0 +1,7 @@
+$pseudo_op rv64_zbp::grevi grevi rd rs1 31..25=0x34 shamtw 14..12=5 6..2=0x04 1..0=3
+$pseudo_op rv64_zbp::gorci gorci rd rs1 31..25=0x14 shamtw 14..12=5 6..2=0x04 1..0=3
+$pseudo_op rv64_zbp::shfli shfli rd rs1 31..25=4 24=0 shamtw4 14..12=1 6..2=0x04 1..0=3
+$pseudo_op rv64_zbp::unshfli unshfli rd rs1 31..25=4 24=0 shamtw4 14..12=5 6..2=0x04 1..0=3
+$pseudo_op rv64_zbb::rori rori rd rs1 31..25=0x30 shamtw 14..12=5 6..2=0x04 1..0=3
+
+
diff --git a/unratified/rv32_zbpbo b/unratified/rv32_zbpbo
new file mode 100644
index 0000000..6ecc566
--- /dev/null
+++ b/unratified/rv32_zbpbo
@@ -0,0 +1,5 @@
+$import rv_zbb::clz
+$import rv_zbt::fsr
+$import rv32_zbt::fsri
+$pseudo_op rv64_zbp::grevi rev rd rs1 31..20=0x69F 14..12=5 6..0=0x13
+
diff --git a/unratified/rv32_zbt b/unratified/rv32_zbt
new file mode 100644
index 0000000..4b5a286
--- /dev/null
+++ b/unratified/rv32_zbt
@@ -0,0 +1,2 @@
+$pseudo_op rv64_zbt::fsri fsri rd rs1 rs3 26=1 25=0 shamtw 14..12=5 6..2=0x04 1..0=3
+
diff --git a/unratified/rv64_zbe b/unratified/rv64_zbe
new file mode 100644
index 0000000..d36b80c
--- /dev/null
+++ b/unratified/rv64_zbe
@@ -0,0 +1,4 @@
+bcompressw rd rs1 rs2 31..25=4 14..12=6 6..2=0x0E 1..0=3
+bdecompressw rd rs1 rs2 31..25=36 14..12=6 6..2=0x0E 1..0=3
+packw rd rs1 rs2 31..25=4 14..12=4 6..2=0x0E 1..0=3
+
diff --git a/unratified/rv64_zbf b/unratified/rv64_zbf
new file mode 100644
index 0000000..d02b59d
--- /dev/null
+++ b/unratified/rv64_zbf
@@ -0,0 +1,3 @@
+bfpw rd rs1 rs2 31..25=36 14..12=7 6..2=0x0E 1..0=3
+$import rv64_zbe::packw
+
diff --git a/unratified/rv64_zbm b/unratified/rv64_zbm
new file mode 100644
index 0000000..46a5ebf
--- /dev/null
+++ b/unratified/rv64_zbm
@@ -0,0 +1,7 @@
+bmatflip rd rs1 31..20=0x603 14..12=1 6..2=0x04 1..0=3
+bmator rd rs1 rs2 31..25=4 14..12=3 6..2=0x0C 1..0=3
+bmatxor rd rs1 rs2 31..25=36 14..12=3 6..2=0x0C 1..0=3
+$pseudo_op rv64_zbp::unshfli unzip16 rd rs1 31..25=4 24..20=16 14..12=5 6..2=4 1..0=3
+$pseudo_op rv64_zbp::unshfli unzip8 rd rs1 31..25=4 24..20=24 14..12=5 6..2=4 1..0=3
+$import rv_zbe::pack
+$import rv_zbp::packu
diff --git a/unratified/rv64_zbp b/unratified/rv64_zbp
new file mode 100644
index 0000000..f4c0bca
--- /dev/null
+++ b/unratified/rv64_zbp
@@ -0,0 +1,17 @@
+grevi rd rs1 31..26=26 shamt 14..12=5 6..2=0x04 1..0=3
+gorci rd rs1 31..26=10 shamt 14..12=5 6..2=0x04 1..0=3
+shfli rd rs1 31..26=2 25=0 shamtw 14..12=1 6..2=0x04 1..0=3
+unshfli rd rs1 31..26=2 25=0 shamtw 14..12=5 6..2=0x04 1..0=3
+$import rv64_zbe::packw
+packuw rd rs1 rs2 31..25=36 14..12=4 6..2=0x0E 1..0=3
+$import rv64_zbb::rolw
+$import rv64_zbb::rorw
+$import rv64_zbb::roriw
+$import rv64_zbb::rori
+gorcw rd rs1 rs2 31..25=20 14..12=5 6..2=0x0E 1..0=3
+grevw rd rs1 rs2 31..25=52 14..12=5 6..2=0x0E 1..0=3
+gorciw rd rs1 31..26=10 25=0 shamtw 14..12=5 6..2=0x06 1..0=3
+greviw rd rs1 31..26=26 25=0 shamtw 14..12=5 6..2=0x06 1..0=3
+shflw rd rs1 rs2 31..25=4 14..12=1 6..2=0x0E 1..0=3
+unshflw rd rs1 rs2 31..25=4 14..12=5 6..2=0x0E 1..0=3
+xperm.w rd rs1 rs2 31..25=20 14..12=0 6..2=0x0C 1..0=3
diff --git a/unratified/rv64_zbpbo b/unratified/rv64_zbpbo
new file mode 100644
index 0000000..f88bd03
--- /dev/null
+++ b/unratified/rv64_zbpbo
@@ -0,0 +1,2 @@
+$import rv64_zbt::fsrw
+$pseudo_op rv64_zbp::grevi rev rd rs1 31..20=0x6BF 14..12=5 6..0=0x13
diff --git a/unratified/rv64_zbr b/unratified/rv64_zbr
new file mode 100644
index 0000000..3b470f1
--- /dev/null
+++ b/unratified/rv64_zbr
@@ -0,0 +1,3 @@
+crc32.d rd rs1 31..20=0x613 14..12=1 6..2=0x04 1..0=3
+crc32c.d rd rs1 31..20=0x61B 14..12=1 6..2=0x04 1..0=3
+
diff --git a/unratified/rv64_zbt b/unratified/rv64_zbt
new file mode 100644
index 0000000..fcb84b5
--- /dev/null
+++ b/unratified/rv64_zbt
@@ -0,0 +1,6 @@
+fslw rd rs1 rs2 rs3 26..25=2 14..12=1 6..2=0x0E 1..0=3
+fsrw rd rs1 rs2 rs3 26..25=2 14..12=5 6..2=0x0E 1..0=3
+fsriw rd rs1 rs3 26..25=2 shamtw 14..12=5 6..2=0x06 1..0=3
+fsri rd rs1 rs3 26=1 shamt 14..12=5 6..2=0x04 1..0=3
+
+
diff --git a/unratified/rv_zbe b/unratified/rv_zbe
new file mode 100644
index 0000000..1e8a037
--- /dev/null
+++ b/unratified/rv_zbe
@@ -0,0 +1,5 @@
+bcompress rd rs1 rs2 31..25=4 14..12=6 6..2=0x0C 1..0=3
+bdecompress rd rs1 rs2 31..25=36 14..12=6 6..2=0x0C 1..0=3
+pack rd rs1 rs2 31..25=4 14..12=4 6..2=0x0C 1..0=3
+packh rd rs1 rs2 31..25=4 14..12=7 6..2=0x0C 1..0=3
+
diff --git a/unratified/rv_zbf b/unratified/rv_zbf
new file mode 100644
index 0000000..33dd0a6
--- /dev/null
+++ b/unratified/rv_zbf
@@ -0,0 +1,4 @@
+bfp rd rs1 rs2 31..25=36 14..12=7 6..2=0x0C 1..0=3
+$import rv_zbe::pack
+$import rv_zbe::packh
+
diff --git a/unratified/rv_zbr b/unratified/rv_zbr
new file mode 100644
index 0000000..3cfd5a7
--- /dev/null
+++ b/unratified/rv_zbr
@@ -0,0 +1,7 @@
+crc32.b rd rs1 31..20=0x610 14..12=1 6..2=0x04 1..0=3
+crc32.h rd rs1 31..20=0x611 14..12=1 6..2=0x04 1..0=3
+crc32.w rd rs1 31..20=0x612 14..12=1 6..2=0x04 1..0=3
+crc32c.b rd rs1 31..20=0x618 14..12=1 6..2=0x04 1..0=3
+crc32c.h rd rs1 31..20=0x619 14..12=1 6..2=0x04 1..0=3
+crc32c.w rd rs1 31..20=0x61A 14..12=1 6..2=0x04 1..0=3
+
diff --git a/unratified/rv_zbt b/unratified/rv_zbt
new file mode 100644
index 0000000..9e7b98b
--- /dev/null
+++ b/unratified/rv_zbt
@@ -0,0 +1,6 @@
+cmix rd rs1 rs2 rs3 26..25=3 14..12=1 6..2=0x0C 1..0=3
+cmov rd rs1 rs2 rs3 26..25=3 14..12=5 6..2=0x0C 1..0=3
+
+fsl rd rs1 rs2 rs3 26..25=2 14..12=1 6..2=0x0C 1..0=3
+fsr rd rs1 rs2 rs3 26..25=2 14..12=5 6..2=0x0C 1..0=3
+