aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Schmidt <colins@eecs.berkeley.edu>2018-10-29 12:11:30 -0700
committerColin Schmidt <colins@eecs.berkeley.edu>2018-10-29 19:16:39 -0700
commitdd3bbcd0ed4d7c86938c5c8b4ed32ecfeb11ee04 (patch)
tree50281bd1bd780c7b7ab167a3effdd29f1f29352c
parentaa27a19c0419552c29f26e518981b3dc5dc2b7bc (diff)
downloadriscv-opcodes-dd3bbcd0ed4d7c86938c5c8b4ed32ecfeb11ee04.zip
riscv-opcodes-dd3bbcd0ed4d7c86938c5c8b4ed32ecfeb11ee04.tar.gz
riscv-opcodes-dd3bbcd0ed4d7c86938c5c8b4ed32ecfeb11ee04.tar.bz2
Add reduction encodings
-rw-r--r--opcodes-v15
-rwxr-xr-xparse-opcodes6
2 files changed, 20 insertions, 1 deletions
diff --git a/opcodes-v b/opcodes-v
index 6ad7c09..051f2b8 100644
--- a/opcodes-v
+++ b/opcodes-v
@@ -166,6 +166,9 @@ vselect m vd vs1 vs2 27..25=2 31..28=12 14=1 6..0=0x57
vclass m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=0
vpopc m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=1
vsqrt m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=2
+vredsum m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=4
+vredmax m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=5
+vredmin m vd vs1 27..25=7 31..28=12 14=1 6..0=0x57 24..20=6
# group 31..28=13
vseq m vd vs1 vs2 27..25=0 31..28=13 14=1 6..0=0x57
@@ -194,6 +197,9 @@ vfmin.s m vd vs1 vs2 31..27=0x07 26..25=0 14=0 6..0=0x57
vfmax.s m vd vs1 vs2 31..27=0x08 26..25=0 14=0 6..0=0x57
vfsqrt.s m vd vs1 24..20=0 31..27=0x09 26..25=0 14=0 6..0=0x57
vfclass.s m vd vs1 24..20=1 31..27=0x09 26..25=0 14=0 6..0=0x57
+vfredsum.s m vd vs1 24..20=4 31..27=0x09 26..25=0 14=0 6..0=0x57
+vfredmax.s m vd vs1 24..20=5 31..27=0x09 26..25=0 14=0 6..0=0x57
+vfredmin.s m vd vs1 24..20=6 31..27=0x09 26..25=0 14=0 6..0=0x57
vfle.s m vd vs1 vs2 31..27=0x0A 26..25=0 14=0 6..0=0x57
vflt.s m vd vs1 vs2 31..27=0x0B 26..25=0 14=0 6..0=0x57
vfeq.s m vd vs1 vs2 31..27=0x0C 26..25=0 14=0 6..0=0x57
@@ -220,6 +226,9 @@ vfmin.d m vd vs1 vs2 31..27=0x07 26..25=1 14=0 6..0=0x57
vfmax.d m vd vs1 vs2 31..27=0x08 26..25=1 14=0 6..0=0x57
vfsqrt.d m vd vs1 24..20=0 31..27=0x09 26..25=1 14=0 6..0=0x57
vfclass.d m vd vs1 24..20=1 31..27=0x09 26..25=1 14=0 6..0=0x57
+vfredsum.d m vd vs1 24..20=4 31..27=0x09 26..25=1 14=0 6..0=0x57
+vfredmax.d m vd vs1 24..20=5 31..27=0x09 26..25=1 14=0 6..0=0x57
+vfredmin.d m vd vs1 24..20=6 31..27=0x09 26..25=1 14=0 6..0=0x57
vfle.d m vd vs1 vs2 31..27=0x0A 26..25=1 14=0 6..0=0x57
vflt.d m vd vs1 vs2 31..27=0x0B 26..25=1 14=0 6..0=0x57
vfeq.d m vd vs1 vs2 31..27=0x0C 26..25=1 14=0 6..0=0x57
@@ -248,6 +257,9 @@ vfmin.h m vd vs1 vs2 31..27=0x07 26..25=2 14=0 6..0=0x57
vfmax.h m vd vs1 vs2 31..27=0x08 26..25=2 14=0 6..0=0x57
vfsqrt.h m vd vs1 24..20=0 31..27=0x09 26..25=2 14=0 6..0=0x57
vfclass.h m vd vs1 24..20=1 31..27=0x09 26..25=2 14=0 6..0=0x57
+vfredsum.h m vd vs1 24..20=4 31..27=0x09 26..25=2 14=0 6..0=0x57
+vfredmax.h m vd vs1 24..20=5 31..27=0x09 26..25=2 14=0 6..0=0x57
+vfredmin.h m vd vs1 24..20=6 31..27=0x09 26..25=2 14=0 6..0=0x57
vfle.h m vd vs1 vs2 31..27=0x0A 26..25=2 14=0 6..0=0x57
vflt.h m vd vs1 vs2 31..27=0x0B 26..25=2 14=0 6..0=0x57
vfeq.h m vd vs1 vs2 31..27=0x0C 26..25=2 14=0 6..0=0x57
@@ -276,6 +288,9 @@ vfmin.q m vd vs1 vs2 31..27=0x07 26..25=3 14=0 6..0=0x57
vfmax.q m vd vs1 vs2 31..27=0x08 26..25=3 14=0 6..0=0x57
vfsqrt.q m vd vs1 24..20=0 31..27=0x09 26..25=3 14=0 6..0=0x57
vfclass.q m vd vs1 24..20=1 31..27=0x09 26..25=3 14=0 6..0=0x57
+vfredsum.q m vd vs1 24..20=4 31..27=0x09 26..25=3 14=0 6..0=0x57
+vfredmax.q m vd vs1 24..20=5 31..27=0x09 26..25=3 14=0 6..0=0x57
+vfredmin.q m vd vs1 24..20=6 31..27=0x09 26..25=3 14=0 6..0=0x57
vfle.q m vd vs1 vs2 31..27=0x0A 26..25=3 14=0 6..0=0x57
vflt.q m vd vs1 vs2 31..27=0x0B 26..25=3 14=0 6..0=0x57
vfeq.q m vd vs1 vs2 31..27=0x0C 26..25=3 14=0 6..0=0x57
diff --git a/parse-opcodes b/parse-opcodes
index 7f90495..1bdf8ae 100755
--- a/parse-opcodes
+++ b/parse-opcodes
@@ -957,13 +957,14 @@ def make_vector_adoc_table():
print_vec_insts('vseq', 'vsne', 'vslt', 'vsge', 'vsltu', 'vsgeu')
print_vec_insts('vclip', 'vcvt', 'vmpop', 'vmfirst', 'vextract', 'vinsert', 'vmerge', 'vselect', 'vslide', 'vrgather')
print_vec_insts('vdiv', 'vrem', 'vmul', 'vmulh', 'vmulhu', 'vmulhsu')
- print_vec_insts('vpopc')
+ print_vec_insts('vpopc', 'vredsum', 'vredmax', 'vredmin')
print_vec_insts('vaddi', 'vsli', 'vsrli', 'vsrai', 'vclipi', 'vandi', 'vori', 'vxori')
print_vec_insts('vconfig')
print_vec_footer()
print_vec_header()
print_vec_insts('vfmadd.s', 'vfmsub.s')
print_vec_insts('vfadd.s', 'vfsub.s', 'vfmul.s', 'vfdiv.s', 'vfsqrt.s')
+ print_vec_insts('vfredsum.s', 'vfredmax.s', 'vfredmin.s')
print_vec_insts('vfsgnj.s', 'vfsgnjn.s', 'vfsgnjx.s', 'vfmin.s', 'vfmax.s')
print_vec_insts('vfeq.s', 'vfne.s', 'vflt.s', 'vfle.s', 'vfclass.s')
print_vec_insts('vfcvt.w.s', 'vfcvt.wu.s', 'vfmv.x.w')
@@ -974,6 +975,7 @@ def make_vector_adoc_table():
print_vec_header()
print_vec_insts('vfmadd.d', 'vfmsub.d')
print_vec_insts('vfadd.d', 'vfsub.d', 'vfmul.d', 'vfdiv.d', 'vfsqrt.d')
+ print_vec_insts('vfredsum.d', 'vfredmax.d', 'vfredmin.d')
print_vec_insts('vfsgnj.d', 'vfsgnjn.d', 'vfsgnjx.d', 'vfmin.d', 'vfmax.d')
print_vec_insts('vfeq.d', 'vfne.d', 'vflt.d', 'vfle.d', 'vfclass.d')
print_vec_insts('vfcvt.s.d', 'vfcvt.d.s')
@@ -985,6 +987,7 @@ def make_vector_adoc_table():
print_vec_header()
print_vec_insts('vfmadd.h', 'vfmsub.h')
print_vec_insts('vfadd.h', 'vfsub.h', 'vfmul.h', 'vfdiv.h', 'vfsqrt.h')
+ print_vec_insts('vfredsum.h', 'vfredmax.h', 'vfredmin.h')
print_vec_insts('vfsgnj.h', 'vfsgnjn.h', 'vfsgnjx.h', 'vfmin.h', 'vfmax.h')
print_vec_insts('vfeq.h', 'vfne.h', 'vflt.h', 'vfle.h', 'vfclass.h')
print_vec_insts('vfcvt.s.h', 'vfcvt.h.s')
@@ -996,6 +999,7 @@ def make_vector_adoc_table():
print_vec_header()
print_vec_insts('vfmadd.q', 'vfmsub.q')
print_vec_insts('vfadd.q', 'vfsub.q', 'vfmul.q', 'vfdiv.q', 'vfsqrt.q')
+ print_vec_insts('vfredsum.q', 'vfredmax.q', 'vfredmin.q')
print_vec_insts('vfsgnj.q', 'vfsgnjn.q', 'vfsgnjx.q', 'vfmin.q', 'vfmax.q')
print_vec_insts('vfeq.q', 'vfne.q', 'vflt.q', 'vfle.q', 'vfclass.q')
print_vec_insts('vfcvt.s.q', 'vfcvt.q.s')