diff --git a/CryptoZknh.scala b/CryptoZknh.scala index 61d6a44..5bc9591 100644 --- a/CryptoZknh.scala +++ b/CryptoZknh.scala @@ -114,16 +114,16 @@ class CryptoZknhPlugin extends Plugin[VexRiscv] { RS3_USE -> True, IS_CryptoZknh -> True ) - def sha256sig0_KEY = M"000011100000-----111-----0101011" - def sha256sig1_KEY = M"000011100001-----111-----0101011" - def sha256sum0_KEY = M"000011100010-----111-----0101011" - def sha256sum1_KEY = M"000011100011-----111-----0101011" - def sha512sig0l_KEY = M"0001000----------111-----0101011" - def sha512sig0h_KEY = M"0001001----------111-----0101011" - def sha512sig1l_KEY = M"0001010----------111-----0101011" - def sha512sig1h_KEY = M"0001011----------111-----0101011" - def sha512sum0r_KEY = M"0001100----------111-----0101011" - def sha512sum1r_KEY = M"0001101----------111-----0101011" + def sha256sig0_KEY = M"000100000010-----001-----0010011" + def sha256sig1_KEY = M"000100000011-----001-----0010011" + def sha256sum0_KEY = M"000100000000-----001-----0010011" + def sha256sum1_KEY = M"000100000001-----001-----0010011" + def sha512sig0l_KEY = M"0101010----------000-----0110011" + def sha512sig0h_KEY = M"0101110----------000-----0110011" + def sha512sig1l_KEY = M"0101011----------000-----0110011" + def sha512sig1h_KEY = M"0101111----------000-----0110011" + def sha512sum0r_KEY = M"0101000----------000-----0110011" + def sha512sum1r_KEY = M"0101001----------000-----0110011" val decoderService = pipeline.service(classOf[DecoderService]) decoderService.addDefault(IS_CryptoZknh, False) decoderService.add(List( diff --git a/data_sha.txt b/data_sha.txt index 9641264..a783f91 100644 --- a/data_sha.txt +++ b/data_sha.txt @@ -1,61 +1,52 @@ -//#define MATCH_SHA256SIG0 0xe00702b -//#define MASK_SHA256SIG0 0xfff0707f -//#define MATCH_SHA256SIG1 0xe10702b -//#define MASK_SHA256SIG1 0xfff0707f -//#define MATCH_SHA256SUM0 0xe20702b -//#define MASK_SHA256SUM0 0xfff0707f -//#define MATCH_SHA256SUM1 0xe30702b -//#define MASK_SHA256SUM1 0xfff0707f -//{"sha256sig0" , 0, INSN_CLASS_I, "d,s", MATCH_SHA256SIG0, MASK_SHA256SIG0, match_opcode, 0}, -//{"sha256sig1" , 0, INSN_CLASS_I, "d,s", MATCH_SHA256SIG1, MASK_SHA256SIG1, match_opcode, 0}, -//{"sha256sum0" , 0, INSN_CLASS_I, "d,s", MATCH_SHA256SUM0, MASK_SHA256SUM0, match_opcode, 0}, -//{"sha256sum1" , 0, INSN_CLASS_I, "d,s", MATCH_SHA256SUM1, MASK_SHA256SUM1, match_opcode, 0}, -//0000111 00000 rs1 111 rd 0101011 sha256sig0 -//0000111 00001 rs1 111 rd 0101011 sha256sig1 -//0000111 00010 rs1 111 rd 0101011 sha256sum0 -//0000111 00011 rs1 111 rd 0101011 sha256sum1 +//#define MASK_SHA256SUM0 0xfff0707f +//#define MATCH_SHA256SUM0 0x10001013 +//#define MASK_SHA256SUM1 0xfff0707f +//#define MATCH_SHA256SUM1 0x10101013 +//#define MASK_SHA256SIG0 0xfff0707f +//#define MATCH_SHA256SIG0 0x10201013 +//#define MASK_SHA256SIG1 0xfff0707f +//#define MATCH_SHA256SIG1 0x10301013 +//00 01000 00010 rs1 001 rd 0010011 sha256sig0 +//00 01000 00011 rs1 001 rd 0010011 sha256sig1 +//00 01000 00000 rs1 001 rd 0010011 sha256sum0 +//00 01000 00001 rs1 001 rd 0010011 sha256sum1 -I sha256sig0 sha256sig0 000011100000-----111-----0101011 sha256sig Zknh -I sha256sig1 sha256sig1 000011100001-----111-----0101011 sha256sig Zknh -I sha256sum0 sha256sum0 000011100010-----111-----0101011 sha256sum Zknh -I sha256sum1 sha256sum1 000011100011-----111-----0101011 sha256sum Zknh +I sha256sig0 sha256sig0 000100000010-----001-----0010011 sha256sig Zknh +I sha256sig1 sha256sig1 000100000011-----001-----0010011 sha256sig Zknh +I sha256sum0 sha256sum0 000100000000-----001-----0010011 sha256sum Zknh +I sha256sum1 sha256sum1 000100000001-----001-----0010011 sha256sum Zknh S sha256sig0 "fun_sha256sig0(input(SRC1))" S sha256sig1 "fun_sha256sig1(input(SRC1))" S sha256sum0 "fun_sha256sum0(input(SRC1))" S sha256sum1 "fun_sha256sum1(input(SRC1))" -//#define MATCH_SHA512SIG0L 0x1000702b -//#define MASK_SHA512SIG0L 0xfe00707f -//#define MATCH_SHA512SIG0H 0x1200702b -//#define MASK_SHA512SIG0H 0xfe00707f -//#define MATCH_SHA512SIG1L 0x1400702b -//#define MASK_SHA512SIG1L 0xfe00707f -//#define MATCH_SHA512SIG1H 0x1600702b -//#define MASK_SHA512SIG1H 0xfe00707f -//#define MATCH_SHA512SUM0R 0x1800702b -//#define MASK_SHA512SUM0R 0xfe00707f -//#define MATCH_SHA512SUM1R 0x1a00702b -//#define MASK_SHA512SUM1R 0xfe00707f -//{"sha512sig0l" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SIG0L, MASK_SHA512SIG0L, match_opcode, 0}, -//{"sha512sig0h" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SIG0H, MASK_SHA512SIG0H, match_opcode, 0}, -//{"sha512sig1l" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SIG1L, MASK_SHA512SIG1L, match_opcode, 0}, -//{"sha512sig1h" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SIG1H, MASK_SHA512SIG1H, match_opcode, 0}, -//{"sha512sum0r" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SUM0R, MASK_SHA512SUM0R, match_opcode, 0}, -//{"sha512sum1r" , 0, INSN_CLASS_I, "d,s,t", MATCH_SHA512SUM1R, MASK_SHA512SUM1R, match_opcode, 0}, -//0001000 rs2 rs1 111 rd 0101011 sha512sig0l -//0001001 rs2 rs1 111 rd 0101011 sha512sig0h -//0001010 rs2 rs1 111 rd 0101011 sha512sig1l -//0001011 rs2 rs1 111 rd 0101011 sha512sig1h -//0001100 rs2 rs1 111 rd 0101011 sha512sum0r -//0001101 rs2 rs1 111 rd 0101011 sha512sum1r +//#define MASK_SHA512SUM0R 0xfe00707f +//#define MATCH_SHA512SUM0R 0x50000033 +//#define MASK_SHA512SUM1R 0xfe00707f +//#define MATCH_SHA512SUM1R 0x52000033 +//#define MASK_SHA512SIG0L 0xfe00707f +//#define MATCH_SHA512SIG0L 0x54000033 +//#define MASK_SHA512SIG0H 0xfe00707f +//#define MATCH_SHA512SIG0H 0x5c000033 +//#define MASK_SHA512SIG1L 0xfe00707f +//#define MATCH_SHA512SIG1L 0x56000033 +//#define MASK_SHA512SIG1H 0xfe00707f +//#define MATCH_SHA512SIG1H 0x5e000033 -I sha512sig0l sha512sig0l 0001000----------111-----0101011 sha512sig Zknh -I sha512sig0h sha512sig0h 0001001----------111-----0101011 sha512sig Zknh -I sha512sig1l sha512sig1l 0001010----------111-----0101011 sha512sig Zknh -I sha512sig1h sha512sig1h 0001011----------111-----0101011 sha512sig Zknh -I sha512sum0r sha512sum0r 0001100----------111-----0101011 sha512sum Zknh -I sha512sum1r sha512sum1r 0001101----------111-----0101011 sha512sum Zknh +//01 01010 rs2 rs1 000 rd 0110011 sha512sig0l +//01 01110 rs2 rs1 000 rd 0110011 sha512sig0h +//01 01011 rs2 rs1 000 rd 0110011 sha512sig1l +//01 01111 rs2 rs1 000 rd 0110011 sha512sig1h +//01 01000 rs2 rs1 000 rd 0110011 sha512sum0r +//01 01001 rs2 rs1 000 rd 0110011 sha512sum1r + +I sha512sig0l sha512sig0l 0101010----------000-----0110011 sha512sig Zknh +I sha512sig0h sha512sig0h 0101110----------000-----0110011 sha512sig Zknh +I sha512sig1l sha512sig1l 0101011----------000-----0110011 sha512sig Zknh +I sha512sig1h sha512sig1h 0101111----------000-----0110011 sha512sig Zknh +I sha512sum0r sha512sum0r 0101000----------000-----0110011 sha512sum Zknh +I sha512sum1r sha512sum1r 0101001----------000-----0110011 sha512sum Zknh S sha512sig0l "fun_sha512sig0l(input(SRC1),input(SRC2))" S sha512sig0h "fun_sha512sig0h(input(SRC1),input(SRC2))" diff --git a/sha256standalone-rv32/blocks.c b/sha256standalone-rv32/blocks.c index ed458af..ac15c8f 100644 --- a/sha256standalone-rv32/blocks.c +++ b/sha256standalone-rv32/blocks.c @@ -60,10 +60,10 @@ asm("#define reg_t6 31\n"); return r; \ } -ASM1MACRO(SHA256SIG0,0x0e00702b) -ASM1MACRO(SHA256SIG1,0x0e10702b) -ASM1MACRO(SHA256SUM0,0x0e20702b) -ASM1MACRO(SHA256SUM1,0x0e30702b) +ASM1MACRO(SHA256SIG0,0x10201013) +ASM1MACRO(SHA256SIG1,0x10301013) +ASM1MACRO(SHA256SUM0,0x10001013) +ASM1MACRO(SHA256SUM1,0x10101013) FUN1(sha256sig0,SHA256SIG0) FUN1(sha256sig1,SHA256SIG1) FUN1(sha256sum0,SHA256SUM0) diff --git a/sha512standalone-rv32/blocks.c b/sha512standalone-rv32/blocks.c index 15189f7..38b5215 100644 --- a/sha512standalone-rv32/blocks.c +++ b/sha512standalone-rv32/blocks.c @@ -61,12 +61,12 @@ asm("#define reg_t6 31\n"); return r; \ } -ASM2MACRO(SHA512SIG0L,0x1000702b) -ASM2MACRO(SHA512SIG0H,0x1200702b) -ASM2MACRO(SHA512SIG1L,0x1400702b) -ASM2MACRO(SHA512SIG1H,0x1600702b) -ASM2MACRO(SHA512SUM0R,0x1800702b) -ASM2MACRO(SHA512SUM1R,0x1a00702b) +ASM2MACRO(SHA512SIG0L,0x54000033) +ASM2MACRO(SHA512SIG0H,0x5c000033) +ASM2MACRO(SHA512SIG1L,0x56000033) +ASM2MACRO(SHA512SIG1H,0x5e000033) +ASM2MACRO(SHA512SUM0R,0x50000033) +ASM2MACRO(SHA512SUM1R,0x52000033) FUN2(sha512sig0l, SHA512SIG0L) FUN2(sha512sig0h, SHA512SIG0H) FUN2(sha512sig1l, SHA512SIG1L)