diff options
author | Ben Marshall <ben.marshall@bristol.ac.uk> | 2021-06-04 10:21:48 +0100 |
---|---|---|
committer | Ben Marshall <ben.marshall@bristol.ac.uk> | 2021-06-04 10:26:58 +0100 |
commit | facb985dac8e3126e94d23f9e2b02dc162155cf0 (patch) | |
tree | 46c07b247de63c5d4c8a1552cff7041311f764c1 | |
parent | 9d91c7abe019c0e46f609508b5db1bbecf07dbf0 (diff) | |
download | spike-facb985dac8e3126e94d23f9e2b02dc162155cf0.zip spike-facb985dac8e3126e94d23f9e2b02dc162155cf0.tar.gz spike-facb985dac8e3126e94d23f9e2b02dc162155cf0.tar.bz2 |
scalar-crypto: Encoding fixes for v0.9.2
- Reverts the AES32 and SM4 instruction encodings back to a normal R-type
encoding, per the advice of the architecture reviewers.
On branch scalar-crypto-v0.9.2
Changes to be committed:
modified: riscv/encoding.h
modified: riscv/insns/aes32dsi.h
modified: riscv/insns/aes32dsmi.h
modified: riscv/insns/aes32esi.h
modified: riscv/insns/aes32esmi.h
modified: riscv/insns/sm4ed.h
modified: riscv/insns/sm4ks.h
-rw-r--r-- | riscv/encoding.h | 12 | ||||
-rw-r--r-- | riscv/insns/aes32dsi.h | 4 | ||||
-rw-r--r-- | riscv/insns/aes32dsmi.h | 4 | ||||
-rw-r--r-- | riscv/insns/aes32esi.h | 4 | ||||
-rw-r--r-- | riscv/insns/aes32esmi.h | 4 | ||||
-rw-r--r-- | riscv/insns/sm4ed.h | 3 | ||||
-rw-r--r-- | riscv/insns/sm4ks.h | 3 |
7 files changed, 12 insertions, 22 deletions
diff --git a/riscv/encoding.h b/riscv/encoding.h index 7c02e14..ebd401c 100644 --- a/riscv/encoding.h +++ b/riscv/encoding.h @@ -927,9 +927,9 @@ #define MATCH_POLLENTROPY 0xf1500073 #define MASK_GETNOISE 0xfffff07f #define MATCH_GETNOISE 0x7a900073 -#define MASK_SM4ED 0x3e007fff +#define MASK_SM4ED 0x3e00707f #define MATCH_SM4ED 0x30000033 -#define MASK_SM4KS 0x3e007fff +#define MASK_SM4KS 0x3e00707f #define MATCH_SM4KS 0x34000033 #define MASK_SM3P0 0xfff0707f #define MATCH_SM3P0 0x10801013 @@ -961,13 +961,13 @@ #define MATCH_AES64IM 0x30001013 #define MASK_AES64KS2 0xfe00707f #define MATCH_AES64KS2 0x7e000033 -#define MASK_AES32ESMI 0x3e007fff +#define MASK_AES32ESMI 0x3e00707f #define MATCH_AES32ESMI 0x36000033 -#define MASK_AES32ESI 0x3e007fff +#define MASK_AES32ESI 0x3e00707f #define MATCH_AES32ESI 0x32000033 -#define MASK_AES32DSMI 0x3e007fff +#define MASK_AES32DSMI 0x3e00707f #define MATCH_AES32DSMI 0x3e000033 -#define MASK_AES32DSI 0x3e007fff +#define MASK_AES32DSI 0x3e00707f #define MATCH_AES32DSI 0x3a000033 #define MASK_AES64KS1I 0xff00707f #define MATCH_AES64KS1I 0x31001013 diff --git a/riscv/insns/aes32dsi.h b/riscv/insns/aes32dsi.h index 07d0363..81534f0 100644 --- a/riscv/insns/aes32dsi.h +++ b/riscv/insns/aes32dsi.h @@ -3,7 +3,6 @@ require_rv32; require_extension('K'); -require(RD == 0); // Additional decoding required for RV32 uint8_t bs = insn.bs(); @@ -13,6 +12,5 @@ uint32_t u = x; u = (u << (8*bs)) | (u >> (32-8*bs)); -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, u ^ RS1); +WRITE_RD(u ^ RS1); diff --git a/riscv/insns/aes32dsmi.h b/riscv/insns/aes32dsmi.h index 6d157ac..417b128 100644 --- a/riscv/insns/aes32dsmi.h +++ b/riscv/insns/aes32dsmi.h @@ -3,7 +3,6 @@ require_rv32; require_extension('K'); -require(RD == 0); // Additional decoding required for RV32 uint8_t bs = insn.bs(); @@ -18,6 +17,5 @@ u = (AES_GFMUL(x,0xb) << 24) | u = (u << (8*bs)) | (u >> (32-8*bs)); -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, u ^ RS1); +WRITE_RD(u ^ RS1); diff --git a/riscv/insns/aes32esi.h b/riscv/insns/aes32esi.h index e24124d..afa38c9 100644 --- a/riscv/insns/aes32esi.h +++ b/riscv/insns/aes32esi.h @@ -3,7 +3,6 @@ require_rv32; require_extension('K'); -require(RD == 0); // Additional decoding required for RV32 uint8_t bs = insn.bs(); @@ -13,6 +12,5 @@ uint32_t u = x; u = (u << (8*bs)) | (u >> (32-8*bs)); -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, u ^ RS1); +WRITE_RD(u ^ RS1); diff --git a/riscv/insns/aes32esmi.h b/riscv/insns/aes32esmi.h index 9768201..411195e 100644 --- a/riscv/insns/aes32esmi.h +++ b/riscv/insns/aes32esmi.h @@ -3,7 +3,6 @@ require_rv32; require_extension('K'); -require(RD == 0); // Additional decoding required for RV32 uint8_t bs = insn.bs(); @@ -18,6 +17,5 @@ u = (AES_GFMUL(x,3) << 24) | u = (u << (8*bs)) | (u >> (32-8*bs)); -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, u ^ RS1); +WRITE_RD(u ^ RS1); diff --git a/riscv/insns/sm4ed.h b/riscv/insns/sm4ed.h index 5583335..738bc69 100644 --- a/riscv/insns/sm4ed.h +++ b/riscv/insns/sm4ed.h @@ -17,7 +17,6 @@ uint32_t linear = sb_out ^ (sb_out << 8) ^ uint32_t rotl = (linear << (8*bs)) | (linear >> (32-8*bs)); uint32_t result = rotl ^ RS1; -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, zext_xlen(result)); +WRITE_RD(zext_xlen(result)); diff --git a/riscv/insns/sm4ks.h b/riscv/insns/sm4ks.h index 589eb97..5758d57 100644 --- a/riscv/insns/sm4ks.h +++ b/riscv/insns/sm4ks.h @@ -15,7 +15,6 @@ uint32_t x = sb_out ^ uint32_t rotl = (x << (8*bs)) | (x >> (32-8*bs)); uint32_t result = rotl ^ RS1; -uint64_t rd = insn.rs1(); // RD sourced from RS1 field. -WRITE_REG(rd, zext_xlen(result)); +WRITE_RD(zext_xlen(result)); |