From dd3bbcd0ed4d7c86938c5c8b4ed32ecfeb11ee04 Mon Sep 17 00:00:00 2001 From: Colin Schmidt Date: Mon, 29 Oct 2018 12:11:30 -0700 Subject: Add reduction encodings --- opcodes-v | 15 +++++++++++++++ parse-opcodes | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) 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') -- cgit v1.1