diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-08-29 21:06:09 +0200 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2020-10-22 17:00:11 -0700 |
commit | a4a2ce20caf756e39e109f5cc047238c35e03857 (patch) | |
tree | a1065a6b64971db881515105f5b26c1ec578e19a /riscv/encoding.h | |
parent | 98864d1ceafe5578608f598f4c6e20a55f62bf9c (diff) | |
download | spike-a4a2ce20caf756e39e109f5cc047238c35e03857.zip spike-a4a2ce20caf756e39e109f5cc047238c35e03857.tar.gz spike-a4a2ce20caf756e39e109f5cc047238c35e03857.tar.bz2 |
[riscv-bitmanip] Changes for RISC-V Bitmanip Spec 0.91
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'riscv/encoding.h')
-rw-r--r-- | riscv/encoding.h | 68 |
1 files changed, 43 insertions, 25 deletions
diff --git a/riscv/encoding.h b/riscv/encoding.h index 417fe64..ee0a184 100644 --- a/riscv/encoding.h +++ b/riscv/encoding.h @@ -454,8 +454,6 @@ #define MASK_ORN 0xfe00707f #define MATCH_XNOR 0x40004033 #define MASK_XNOR 0xfe00707f -#define MATCH_GREV 0x40001033 -#define MASK_GREV 0xfe00707f #define MATCH_SLO 0x20001033 #define MASK_SLO 0xfe00707f #define MATCH_SRO 0x20005033 @@ -464,30 +462,36 @@ #define MASK_ROL 0xfe00707f #define MATCH_ROR 0x60005033 #define MASK_ROR 0xfe00707f -#define MATCH_SBSET 0x28001033 -#define MASK_SBSET 0xfe00707f #define MATCH_SBCLR 0x48001033 #define MASK_SBCLR 0xfe00707f +#define MATCH_SBSET 0x28001033 +#define MASK_SBSET 0xfe00707f #define MATCH_SBINV 0x68001033 #define MASK_SBINV 0xfe00707f #define MATCH_SBEXT 0x48005033 #define MASK_SBEXT 0xfe00707f -#define MATCH_GREVI 0x40001013 -#define MASK_GREVI 0xfc00707f +#define MATCH_GORC 0x28005033 +#define MASK_GORC 0xfe00707f +#define MATCH_GREV 0x68005033 +#define MASK_GREV 0xfe00707f #define MATCH_SLOI 0x20001013 #define MASK_SLOI 0xfc00707f #define MATCH_SROI 0x20005013 #define MASK_SROI 0xfc00707f #define MATCH_RORI 0x60005013 #define MASK_RORI 0xfc00707f -#define MATCH_SBSETI 0x28001013 -#define MASK_SBSETI 0xfc00707f #define MATCH_SBCLRI 0x48001013 #define MASK_SBCLRI 0xfc00707f +#define MATCH_SBSETI 0x28001013 +#define MASK_SBSETI 0xfc00707f #define MATCH_SBINVI 0x68001013 #define MASK_SBINVI 0xfc00707f #define MATCH_SBEXTI 0x48005013 #define MASK_SBEXTI 0xfc00707f +#define MATCH_GORCI 0x28005013 +#define MASK_GORCI 0xfc00707f +#define MATCH_GREVI 0x68005013 +#define MASK_GREVI 0xfc00707f #define MATCH_CMIX 0x6001033 #define MASK_CMIX 0x600707f #define MATCH_CMOV 0x6005033 @@ -540,6 +544,8 @@ #define MASK_BEXT 0xfe00707f #define MATCH_PACK 0x8004033 #define MASK_PACK 0xfe00707f +#define MATCH_BFP 0x8007033 +#define MASK_BFP 0xfe00707f #define MATCH_SHFLI 0x8001013 #define MASK_SHFLI 0xfe00707f #define MATCH_UNSHFLI 0x8005013 @@ -552,7 +558,7 @@ #define MASK_CRC32C_D 0xfff0707f #define MATCH_BMATOR 0x8003033 #define MASK_BMATOR 0xfe00707f -#define MATCH_BMATXOR 0x8007033 +#define MATCH_BMATXOR 0x48003033 #define MASK_BMATXOR 0xfe00707f #define MATCH_ADDIWU 0x401b #define MASK_ADDIWU 0x707f @@ -566,8 +572,6 @@ #define MASK_ADDU_W 0xfe00707f #define MATCH_SUBU_W 0x4800003b #define MASK_SUBU_W 0xfe00707f -#define MATCH_GREVW 0x4000103b -#define MASK_GREVW 0xfe00707f #define MATCH_SLOW 0x2000103b #define MASK_SLOW 0xfe00707f #define MATCH_SROW 0x2000503b @@ -576,28 +580,34 @@ #define MASK_ROLW 0xfe00707f #define MATCH_RORW 0x6000503b #define MASK_RORW 0xfe00707f -#define MATCH_SBSETW 0x2800103b -#define MASK_SBSETW 0xfe00707f #define MATCH_SBCLRW 0x4800103b #define MASK_SBCLRW 0xfe00707f +#define MATCH_SBSETW 0x2800103b +#define MASK_SBSETW 0xfe00707f #define MATCH_SBINVW 0x6800103b #define MASK_SBINVW 0xfe00707f #define MATCH_SBEXTW 0x4800503b #define MASK_SBEXTW 0xfe00707f -#define MATCH_GREVIW 0x4000101b -#define MASK_GREVIW 0xfe00707f +#define MATCH_GORCW 0x2800503b +#define MASK_GORCW 0xfe00707f +#define MATCH_GREVW 0x6800503b +#define MASK_GREVW 0xfe00707f #define MATCH_SLOIW 0x2000101b #define MASK_SLOIW 0xfe00707f #define MATCH_SROIW 0x2000501b #define MASK_SROIW 0xfe00707f #define MATCH_RORIW 0x6000501b #define MASK_RORIW 0xfe00707f -#define MATCH_SBSETIW 0x2800101b -#define MASK_SBSETIW 0xfe00707f #define MATCH_SBCLRIW 0x4800101b #define MASK_SBCLRIW 0xfe00707f +#define MATCH_SBSETIW 0x2800101b +#define MASK_SBSETIW 0xfe00707f #define MATCH_SBINVIW 0x6800101b #define MASK_SBINVIW 0xfe00707f +#define MATCH_GORCIW 0x2800501b +#define MASK_GORCIW 0xfe00707f +#define MATCH_GREVIW 0x6800501b +#define MASK_GREVIW 0xfe00707f #define MATCH_FSLW 0x400103b #define MASK_FSLW 0x600707f #define MATCH_FSRW 0x400503b @@ -626,6 +636,8 @@ #define MASK_BEXTW 0xfe00707f #define MATCH_PACKW 0x800403b #define MASK_PACKW 0xfe00707f +#define MATCH_BFPW 0x800703b +#define MASK_BFPW 0xfe00707f #define MATCH_AMOADD_W 0x202f #define MASK_AMOADD_W 0xf800707f #define MATCH_AMOXOR_W 0x2000202f @@ -2404,23 +2416,25 @@ DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW) DECLARE_INSN(andn, MATCH_ANDN, MASK_ANDN) DECLARE_INSN(orn, MATCH_ORN, MASK_ORN) DECLARE_INSN(xnor, MATCH_XNOR, MASK_XNOR) -DECLARE_INSN(grev, MATCH_GREV, MASK_GREV) DECLARE_INSN(slo, MATCH_SLO, MASK_SLO) DECLARE_INSN(sro, MATCH_SRO, MASK_SRO) DECLARE_INSN(rol, MATCH_ROL, MASK_ROL) DECLARE_INSN(ror, MATCH_ROR, MASK_ROR) -DECLARE_INSN(sbset, MATCH_SBSET, MASK_SBSET) DECLARE_INSN(sbclr, MATCH_SBCLR, MASK_SBCLR) +DECLARE_INSN(sbset, MATCH_SBSET, MASK_SBSET) DECLARE_INSN(sbinv, MATCH_SBINV, MASK_SBINV) DECLARE_INSN(sbext, MATCH_SBEXT, MASK_SBEXT) -DECLARE_INSN(grevi, MATCH_GREVI, MASK_GREVI) +DECLARE_INSN(gorc, MATCH_GORC, MASK_GORC) +DECLARE_INSN(grev, MATCH_GREV, MASK_GREV) DECLARE_INSN(sloi, MATCH_SLOI, MASK_SLOI) DECLARE_INSN(sroi, MATCH_SROI, MASK_SROI) DECLARE_INSN(rori, MATCH_RORI, MASK_RORI) -DECLARE_INSN(sbseti, MATCH_SBSETI, MASK_SBSETI) DECLARE_INSN(sbclri, MATCH_SBCLRI, MASK_SBCLRI) +DECLARE_INSN(sbseti, MATCH_SBSETI, MASK_SBSETI) DECLARE_INSN(sbinvi, MATCH_SBINVI, MASK_SBINVI) DECLARE_INSN(sbexti, MATCH_SBEXTI, MASK_SBEXTI) +DECLARE_INSN(gorci, MATCH_GORCI, MASK_GORCI) +DECLARE_INSN(grevi, MATCH_GREVI, MASK_GREVI) DECLARE_INSN(cmix, MATCH_CMIX, MASK_CMIX) DECLARE_INSN(cmov, MATCH_CMOV, MASK_CMOV) DECLARE_INSN(fsl, MATCH_FSL, MASK_FSL) @@ -2447,6 +2461,7 @@ DECLARE_INSN(unshfl, MATCH_UNSHFL, MASK_UNSHFL) DECLARE_INSN(bdep, MATCH_BDEP, MASK_BDEP) DECLARE_INSN(bext, MATCH_BEXT, MASK_BEXT) DECLARE_INSN(pack, MATCH_PACK, MASK_PACK) +DECLARE_INSN(bfp, MATCH_BFP, MASK_BFP) DECLARE_INSN(shfli, MATCH_SHFLI, MASK_SHFLI) DECLARE_INSN(unshfli, MATCH_UNSHFLI, MASK_UNSHFLI) DECLARE_INSN(bmatflip, MATCH_BMATFLIP, MASK_BMATFLIP) @@ -2460,22 +2475,24 @@ DECLARE_INSN(addwu, MATCH_ADDWU, MASK_ADDWU) DECLARE_INSN(subwu, MATCH_SUBWU, MASK_SUBWU) DECLARE_INSN(addu_w, MATCH_ADDU_W, MASK_ADDU_W) DECLARE_INSN(subu_w, MATCH_SUBU_W, MASK_SUBU_W) -DECLARE_INSN(grevw, MATCH_GREVW, MASK_GREVW) DECLARE_INSN(slow, MATCH_SLOW, MASK_SLOW) DECLARE_INSN(srow, MATCH_SROW, MASK_SROW) DECLARE_INSN(rolw, MATCH_ROLW, MASK_ROLW) DECLARE_INSN(rorw, MATCH_RORW, MASK_RORW) -DECLARE_INSN(sbsetw, MATCH_SBSETW, MASK_SBSETW) DECLARE_INSN(sbclrw, MATCH_SBCLRW, MASK_SBCLRW) +DECLARE_INSN(sbsetw, MATCH_SBSETW, MASK_SBSETW) DECLARE_INSN(sbinvw, MATCH_SBINVW, MASK_SBINVW) DECLARE_INSN(sbextw, MATCH_SBEXTW, MASK_SBEXTW) -DECLARE_INSN(greviw, MATCH_GREVIW, MASK_GREVIW) +DECLARE_INSN(gorcw, MATCH_GORCW, MASK_GORCW) +DECLARE_INSN(grevw, MATCH_GREVW, MASK_GREVW) DECLARE_INSN(sloiw, MATCH_SLOIW, MASK_SLOIW) DECLARE_INSN(sroiw, MATCH_SROIW, MASK_SROIW) DECLARE_INSN(roriw, MATCH_RORIW, MASK_RORIW) -DECLARE_INSN(sbsetiw, MATCH_SBSETIW, MASK_SBSETIW) DECLARE_INSN(sbclriw, MATCH_SBCLRIW, MASK_SBCLRIW) +DECLARE_INSN(sbsetiw, MATCH_SBSETIW, MASK_SBSETIW) DECLARE_INSN(sbinviw, MATCH_SBINVIW, MASK_SBINVIW) +DECLARE_INSN(gorciw, MATCH_GORCIW, MASK_GORCIW) +DECLARE_INSN(greviw, MATCH_GREVIW, MASK_GREVIW) DECLARE_INSN(fslw, MATCH_FSLW, MASK_FSLW) DECLARE_INSN(fsrw, MATCH_FSRW, MASK_FSRW) DECLARE_INSN(fsriw, MATCH_FSRIW, MASK_FSRIW) @@ -2490,6 +2507,7 @@ DECLARE_INSN(unshflw, MATCH_UNSHFLW, MASK_UNSHFLW) DECLARE_INSN(bdepw, MATCH_BDEPW, MASK_BDEPW) DECLARE_INSN(bextw, MATCH_BEXTW, MASK_BEXTW) DECLARE_INSN(packw, MATCH_PACKW, MASK_PACKW) +DECLARE_INSN(bfpw, MATCH_BFPW, MASK_BFPW) DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W) DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W) DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W) |