mirror of
https://gitlab.com/brendanhaines/cpu.git
synced 2024-12-25 18:46:53 -07:00
sub, and, or don't always work
This commit is contained in:
parent
18892acec9
commit
3fbd96ca27
|
@ -244,13 +244,13 @@ always @(*) begin
|
|||
s_ex_alu_out = s_ex_data1 + (s_ex_data2 ^ {32{r_ex_alu_seed}}) + r_ex_alu_seed;
|
||||
end
|
||||
ALUOP_XOR: begin
|
||||
s_ex_alu_out = (|s_ex_data1) ^ (|s_ex_data2);
|
||||
s_ex_alu_out = s_ex_data1 ^ s_ex_data2;
|
||||
end
|
||||
ALUOP_OR: begin
|
||||
s_ex_alu_out = (|s_ex_data1) | (|s_ex_data2);
|
||||
s_ex_alu_out = s_ex_data1 | s_ex_data2;
|
||||
end
|
||||
ALUOP_AND: begin
|
||||
s_ex_alu_out = (|s_ex_data1) & (|s_ex_data2);
|
||||
s_ex_alu_out = s_ex_data1 & s_ex_data2;
|
||||
end
|
||||
ALUOP_SL: begin
|
||||
s_ex_alu_out = s_ex_data1 << s_ex_data2;
|
||||
|
|
|
@ -2,7 +2,7 @@ all: test.hex
|
|||
|
||||
CC = riscv64-linux-gnu-gcc
|
||||
# CFLAGS = -march=rv32i -mabi=ilp32
|
||||
CFLAGS = -march=rv64i -mabi=lp64
|
||||
CFLAGS = -march=rv64i -mabi=lp64 -o0
|
||||
|
||||
AS = riscv64-linux-gnu-as
|
||||
ASFLAGS = $(CFLAGS)
|
||||
|
|
157
test/test.S
157
test/test.S
|
@ -1,64 +1,107 @@
|
|||
.global _start
|
||||
.text
|
||||
_start:
|
||||
add x1, x0, x0
|
||||
add x2, x0, x0
|
||||
add x3, x0, x0
|
||||
add x4, x0, x0
|
||||
add x5, x0, x0
|
||||
add x6, x0, x0
|
||||
add x7, x0, x0
|
||||
add x8, x0, x0
|
||||
add x9, x0, x0
|
||||
add x10, x0, x0
|
||||
add x11, x0, x0
|
||||
add x12, x0, x0
|
||||
add x13, x0, x0
|
||||
add x14, x0, x0
|
||||
add x15, x0, x0
|
||||
add x16, x0, x0
|
||||
add x17, x0, x0
|
||||
add x18, x0, x0
|
||||
add x19, x0, x0
|
||||
add x20, x0, x0
|
||||
add x21, x0, x0
|
||||
add x22, x0, x0
|
||||
add x23, x0, x0
|
||||
add x24, x0, x0
|
||||
add x25, x0, x0
|
||||
add x26, x0, x0
|
||||
add x27, x0, x0
|
||||
add x28, x0, x0
|
||||
add x29, x0, x0
|
||||
add x30, x0, x0
|
||||
add x31, x0, x0
|
||||
add x1, x0, x0
|
||||
add x2, x0, x0
|
||||
add x3, x0, x0
|
||||
add x4, x0, x0
|
||||
add x5, x0, x0
|
||||
add x6, x0, x0
|
||||
add x7, x0, x0
|
||||
add x8, x0, x0
|
||||
add x9, x0, x0
|
||||
add x10, x0, x0
|
||||
add x11, x0, x0
|
||||
add x12, x0, x0
|
||||
add x13, x0, x0
|
||||
add x14, x0, x0
|
||||
add x15, x0, x0
|
||||
add x16, x0, x0
|
||||
add x17, x0, x0
|
||||
add x18, x0, x0
|
||||
add x19, x0, x0
|
||||
add x20, x0, x0
|
||||
add x21, x0, x0
|
||||
add x22, x0, x0
|
||||
add x23, x0, x0
|
||||
add x24, x0, x0
|
||||
add x25, x0, x0
|
||||
add x26, x0, x0
|
||||
add x27, x0, x0
|
||||
add x28, x0, x0
|
||||
add x29, x0, x0
|
||||
add x30, x0, x0
|
||||
add x31, x0, x0
|
||||
|
||||
# NOTE: nop required because cpu currently does not detect when something is needed from a later stage of the pipeline.
|
||||
# 4 clocks allows one instruction to finish before the next starts
|
||||
|
||||
# lui
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
lui x1, 0xfedcb # x1 = 0xfedcb000
|
||||
|
||||
# addi
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x1, x1, 0x789 # x1 = 0xfedcb789
|
||||
addi x2, x0, -1 # x2 = 0xffffffff
|
||||
nop
|
||||
nop
|
||||
addi x3, x1, -0x777 # x3 = 0xfedcb012
|
||||
|
||||
# add
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
add x4, x1, x2 # x4 = 0xfedcb788
|
||||
|
||||
# sub
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
add x5, x1, x3 # x5 = 0x00000777 incorrect
|
||||
|
||||
# and
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
and x6, x1, x2 # x6 = 0xfedcb789
|
||||
and x7, x1, x0 # x7 = 0x00000000
|
||||
and x8, x4, x3 # x8 = 0xfedcb002 incorrect
|
||||
|
||||
# or
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
or x9, x1, x2 # x9 = 0xffffffff
|
||||
or x10, x1, x0 # x10 = 0xfedcb789
|
||||
or x11, x4, x3 # x11 = 0x0xfedcb798 incorrect
|
||||
|
||||
|
||||
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x31, x0, 1 # x1 = 1
|
||||
|
||||
# nop required because cpu currently does not detect when something is needed from a later stage of the pipeline.
|
||||
# 5 clocks allows one instruction to finish before the next starts
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x1, x0, 0x12
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x2, x0, 0x11
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
add x3, x2, x1
|
||||
loop:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
j loop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x31, x31, 1 # increment x1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
j loop # loop forever
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
.data
|
||||
|
|
Loading…
Reference in New Issue
Block a user