Factorize R5 compilers in Makefiles

This commit is contained in:
Romain Dolbeau 2021-02-19 03:24:47 -05:00
parent f445689eea
commit 3de1b5bf23
13 changed files with 119 additions and 177 deletions

View file

@ -4,6 +4,8 @@ DEPXX=$(SRCXX:.cpp=.d)
OBJ=inst_par.o inst_lex.o
LEX=flex
YACC=bison -d #--report-file=bison.log --report=all
CC=gcc
CFLAGS=-O2
CXX=g++
CXXFLAGS=-O2
@ -134,19 +136,22 @@ R5B_OPT=-Os -march=rv32imab -mabi=ilp32 -I.
R5IMA_TOOLCHAIN=/home/dolbeau2/LITEX/buildroot-rv32/output/host
R5IMA_GCC=$(R5IMA_TOOLCHAIN)/bin/riscv32-buildroot-linux-gnu-gcc
R5IMA_OPT=-Os -march=rv32ima -mabi=ilp32 -I.
R5IMA_STRIP=$(R5IMA_TOOLCHAIN)/riscv32-buildroot-linux-gnu-strip
NEWINST_H=new_instructions_support_b.h new_instructions_support.h new_instructions_support_k.h new_instructions_support_p.h
tests: test_b test_p
signal.o: signal.c
$(R5IMA_GCC) $(R5IMA_OPT) -c $< -o $@
test_b.S: test_b.c
test_b.S: test_b.c $(NEWINST_H)
$(R5B_GCC) $(R5B_OPT) -DCHECK_SIGILL -S $< -o $@
test_p.S: test_p.c
$(R5B_GCC) $(R5B_OPT) -DCHECK_SIGILL -S $< -o $@
test_b.o: test_b.S
test_b.o: test_b.S $(NEWINST_H)
$(R5B_GCC) $(R5B_OPT) -DCHECK_SIGILL -c $< -o $@
test_p.o: test_p.S

View file

@ -2,17 +2,10 @@ SRCs=encrypt.c try-anything.c verify.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: aeadaes256ocbtaglen128v1 aeadaes256ocbtaglen128v1_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o encrypt.o aeadaes256ocbtaglen128v1 aeadaes256ocbtaglen128v1_small
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
encrypt.S: encrypt.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
encrypt.o: encrypt.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
aeadaes256ocbtaglen128v1: $(OBJs) encrypt.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
aeadaes256ocbtaglen128v1_small: $(OBJs) encrypt.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,17 +2,10 @@ SRCs=riscv32.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: aes256ctr aes256ctr_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o riscv32.o aes256ctr aes256ctr_small
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
riscv32.S: riscv32.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
riscv32.o: riscv32.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
aes256ctr: $(OBJs) riscv32.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
aes256ctr_small: $(OBJs) riscv32.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,23 +2,10 @@ SRCs=core.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
# CC=gcc
# CXX=g++
# ALTCC=$(CC)
# OPT=-O2
# NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: aes256decrypt aes256decrypt_small
@ -26,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o core.o aes256decrypt aes256decrypt_small
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
core.S: core.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
core.o: core.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
aes256decrypt: $(OBJs) core.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
aes256decrypt_small: $(OBJs) core.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,17 +2,10 @@ SRCs=core.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: aes256encrypt aes256encrypt_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o core.o aes256encrypt aes256encrypt_small
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
core.S: core.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
core.o: core.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
aes256encrypt: $(OBJs) core.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
aes256encrypt_small: $(OBJs) core.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,17 +2,10 @@ SRCs=encrypt.c try-anything.c verify.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: aes256gcmv1 aes256gcmv1_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o encrypt.o aes256gcmv1 aes256gcmv1_small
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
encrypt.S: encrypt.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
encrypt.o: encrypt.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
aes256gcmv1: $(OBJs) encrypt.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
aes256gcmv1_small: $(OBJs) encrypt.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,17 +2,10 @@ SRCs=api.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32B #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: chacha20 chacha20_small
@ -20,31 +13,31 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o chacha.o chacha20 chacha20_small chacha20_small_var chacha.s chacha_var.s
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
chacha.S: chacha.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
chacha.o: chacha.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
chacha20: $(OBJs) chacha.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
chacha20_small: $(OBJs) chacha.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
strip:
$(STRIP) chacha20 chacha20_small
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -9,15 +9,14 @@
ASM2MACRO(XPERM_N,0x28002033)
ASM2MACRO(XPERM_B,0x28004033)
ASM2MACRO(XPERM_H,0x28006033)
ASM2MACRO(SH1ADD,0x20002033)
ASM2MACRO(SH2ADD,0x20004033)
ASM2MACRO(SH3ADD,0x20006033)
ASM2MACRO(_SH1ADD,0x20002033)
ASM2MACRO(_SH2ADD,0x20004033)
ASM2MACRO(_SH3ADD,0x20006033)
FUN2(xperm_n,XPERM_N)
FUN2(xperm_b,XPERM_B)
FUN2(xperm_h,XPERM_H)
FUN2(sh1add,SH1ADD)
FUN2(sh2add,SH2ADD)
FUN2(sh3add,SH3ADD)
FUN2(_sh1add,_SH1ADD)
FUN2(_sh2add,_SH2ADD)
FUN2(_sh3add,_SH3ADD)
#endif // __NEW_INSTRUCTION_SUPPORT_B_H__

View file

@ -2,17 +2,10 @@ SRCs=blocks.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32ZKNH #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: sha256 sha256_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o blocks.o sha256 sha256_small blocks.S
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
blocks.S: blocks.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
blocks.o: blocks.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
sha256: $(OBJs) blocks.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
sha256_small: $(OBJs) blocks.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,7 +2,7 @@
#include <stdint.h>
#ifdef RV32ZKNH
#ifdef RV32K
#include "new_instructions_support_k.h"
#endif
@ -29,7 +29,7 @@ static void store_bigendian(unsigned char *x,uint32_t u)
#define Ch(x,y,z) ((x & y) ^ (~x & z))
#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z))
#ifndef RV32ZKNH
#ifndef RV32K
#define Sigma0(x) (ROTR(x, 2) ^ ROTR(x,13) ^ ROTR(x,22))
#define Sigma1(x) (ROTR(x, 6) ^ ROTR(x,11) ^ ROTR(x,25))
#define sigma0(x) (ROTR(x, 7) ^ ROTR(x,18) ^ SHR(x, 3))

View file

@ -2,17 +2,10 @@ SRCs=blocks.c try-anything.c
OBJs=$(SRCs:.c=.o)
SCLIBS=cpucycles.o kernelrandombytes.o
COMPDIR=~dolbeau2/LITEX/buildroot-rv32/output/host
ALTCOMPDIR=/opt/riscv64b
include ../r5.mk
CC=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-gcc
ALTCC=$(ALTCOMPDIR)/bin/riscv64-unknown-elf-gcc
CXX=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-g++
STRIP=$(COMPDIR)/bin/riscv32-buildroot-linux-gnu-strip
NEWOPT=-march=rv32imab -mabi=ilp32 -I. -I.. -O3 -DRV32ZKNH #-fno-vectorize #-DUSE_EPI_CUSTOM
OPT=-march=rv32ima -mabi=ilp32 -I. -I.. -O3 #-fno-vectorize #-DUSE_EPI_CUSTOM
#ALTCC=$(CC)
#NEWOPT=$(OPT)
R5IMA_OPT+=-I..
R5B_OPT+=-I.. -DRV32B -DRV32K
all: sha512 sha512_small
@ -20,28 +13,28 @@ clean:
rm -f $(OBJs) *.S try.o try_small.o blocks.o sha512 sha512_small blocks.S
%.o: %.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try.o: try.c
$(CC) $(OPT) $< -c -o $@
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@
try_small.o: try.c
$(CC) $(OPT) $< -c -o $@ -DSMALL
$(R5IMA_GCC) $(R5IMA_OPT) $< -c -o $@ -DSMALL
blocks.S: blocks.c
$(ALTCC) $(NEWOPT) $< -S -o $@
$(R5B_GCC) $(R5B_OPT) $< -S -o $@
blocks.o: blocks.S
$(ALTCC) $(NEWOPT) $< -c -o $@
$(R5B_GCC) $(R5B_OPT) $< -c -o $@
sha512: $(OBJs) blocks.o try.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
sha512_small: $(OBJs) blocks.o try_small.o $(SCLIBS)
$(CXX) $(OPT) $^ -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $^ -o $@
kernelrandombytes.o: random.cpp
$(CXX) $(OPT) $< -c -o $@
$(R5IMA_GXX) $(R5IMA_OPT) $< -c -o $@
cpucycles.o: riscv.c
$(CC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@
$(R5IMA_GCC) $< -march=rv32ima -mabi=ilp32 -I. -O1 -c -o $@

View file

@ -2,7 +2,7 @@
#include <stdint.h>
#ifdef RV32ZKNH
#ifdef RV32K
#include "new_instructions_support_k.h"
#endif
@ -39,7 +39,7 @@ static void store_bigendian(unsigned char *x,uint64_t u)
#define Ch(x,y,z) ((x & y) ^ (~x & z))
#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z))
#ifndef RV32ZKNH
#ifndef RV32K
#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39))
#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41))
#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7))

View file

@ -57,15 +57,15 @@ uint_xlen_t xperm_h (uint_xlen_t rs1, uint_xlen_t rs2) { return xperm(rs1, rs2,
uint_xlen_t xperm_w (uint_xlen_t rs1, uint_xlen_t rs2) { return xperm(rs1, rs2, 5); }
uint_xlen_t sh1add(uint_xlen_t rs1, uint_xlen_t rs2)
uint_xlen_t _sh1add(uint_xlen_t rs1, uint_xlen_t rs2)
{
return (rs1 << 1) + rs2;
}
uint_xlen_t sh2add(uint_xlen_t rs1, uint_xlen_t rs2)
uint_xlen_t _sh2add(uint_xlen_t rs1, uint_xlen_t rs2)
{
return (rs1 << 2) + rs2;
}
uint_xlen_t sh3add(uint_xlen_t rs1, uint_xlen_t rs2)
uint_xlen_t _sh3add(uint_xlen_t rs1, uint_xlen_t rs2)
{
return (rs1 << 3) + rs2;
}
@ -226,9 +226,9 @@ int main(int argc, char **argv) {
}
// extra stuff
T2(sh1add);
T2(sh2add);
T2(sh3add);
T2(_sh1add);
T2(_sh2add);
T2(_sh3add);
T2(xperm_n);
T2(xperm_b);