cpu/test/test.S

180 lines
4.6 KiB
ArmAsm
Raw Normal View History

2020-09-27 18:04:08 -06:00
.global _start
.text
_start:
2020-10-03 13:49:14 -06:00
# 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 reads the regfile
# AUIPC
# JAL
# JALR
# SLTI
# SLTUI
# SLT
# SLTU
2020-10-03 13:49:14 -06:00
# lui
2020-10-11 23:36:11 -06:00
lui x1, 0xfedcb # x1 = 0xfedcb000
2020-10-03 13:49:14 -06:00
nop
nop
nop
# addi
2020-10-11 23:36:11 -06:00
addi x1, x1, 0x789 # x1 = 0xfedcb789
addi x2, x0, -1 # x2 = 0xffffffff
2020-10-03 13:49:14 -06:00
nop
nop
2020-10-11 23:36:11 -06:00
addi x3, x1, -0x777 # x3 = 0xfedcb012
nop
nop
nop
2020-10-03 13:49:14 -06:00
# add
2020-10-11 23:36:11 -06:00
add x4, x1, x2 # x4 = 0xfedcb788
2020-10-03 13:49:14 -06:00
nop
nop
nop
# sub
2020-10-11 23:36:11 -06:00
sub x5, x1, x3 # x5 = 0x00000777
2020-10-03 13:49:14 -06:00
nop
nop
nop
# and
2020-10-11 23:36:11 -06:00
and x6, x1, x2 # x6 = 0xfedcb789
and x7, x1, x0 # x7 = 0x00000000
and x8, x4, x3 # x8 = 0xfedcb000
2020-10-03 13:49:14 -06:00
nop
nop
nop
# or
2020-10-11 23:36:11 -06:00
or x9, x1, x2 # x9 = 0xffffffff
or x10, x1, x0 # x10 = 0xfedcb789
or x11, x4, x3 # x11 = 0x0xfedcb79a
2020-10-03 13:49:14 -06:00
nop
nop
nop
# xor
xor x12, x1, x2 # x12 = 0x01234876
xor x13, x1, x1 # x13 = 0x00000000
xor x14, x0, x2 # x14 = 0xffffffff
nop
nop
nop
# andi
andi x15, x2, -1348 # x15 = 0xfffffabc -1348 = 0xfffffabc
andi x16, x2, 0x123 # x16 = 0x00000123
andi x17, x1, -1645 # x17 = 0xfedcb181 -1645 = 0xfffff993
nop
nop
nop
2020-10-11 23:06:29 -06:00
# ori
ori x18, x2, 0x000 # x18 = 0xffffffff
ori x19, x0, 0x768 # x19 = 0x768
ori x20, x1, 0x7ff # x20 = 0xfedcb7ff
nop
nop
nop
2020-10-11 23:09:08 -06:00
# xori
xori x21, x2, 0x123 # x21 = 0xfffffedc
xori x22, x1, 0x788 # x22 = 0xfedcb001
xori x23, x0, 0x788 # x23 = 0x00000788
nop
nop
nop
2020-10-03 13:49:14 -06:00
2020-10-11 23:36:11 -06:00
# slli
slli x24, x23, 4 # x24 = 0x00007880
slli x25, x2, 1 # x25 = 0xfffffffe
2020-10-16 18:25:10 -06:00
slli x26, x2, 63 # x26 = 0x80000000 # NOTE: gcc should not allow this since shamt is only 5 bits. discarding high bit so 63 = 31
2020-10-11 23:36:11 -06:00
slli x27, x2, 31 # x27 = 0x80000000
nop
nop
nop
# srli
srli x28, x23, 4 # x28 = 0x00000078
srli x29, x2, 1 # x29 = 0x7fffffff
2020-10-16 18:25:10 -06:00
srli x30, x2, 63 # x30 = 0x00000001 # NOTE: gcc should not allow this since shamt is only 5 bits. discarding high bit so 63 = 31
2020-10-11 23:36:11 -06:00
srli x3, x2, 31 # x3 = 0x00000001
nop
nop
nop
# srai
2020-10-16 18:25:10 -06:00
srai x4, x23, 4 # x4 = 0x00000078
srai x5, x2, 1 # x5 = 0xffffffff
srai x6, x2, 63 # x6 = 0xffffffff # NOTE: gcc should not allow this since shamt is only 5 bits. discarding high bit so 63 = 31
srai x7, x2, 31 # x7 = 0xffffffff
nop
nop
nop
# sll
addi x8, x0, 4 # x8 = 0x00000004
addi x9, x0, 1 # x9 = 0x00000001
addi x10, x0, 63 # x10 = 0x0000003f
addi x11, x0, 31 # x11 = 0x0000001f
sll x12, x23, x8 # x12 = 0x00007880 # 4
sll x13, x2, x9 # x13 = 0xfffffffe # 1
sll x14, x2, x10 # x14 = 0x80000000 # 63 = 31
sll x15, x2, x11 # x15 = 0x80000000 # 31
sll x16, x1, x0 # x16 = 0xfedcb789 # 0
sll x17, x1, x2 # x17 = 0x80000000 # -1=31
nop
nop
nop
# srl
srl x18, x23, x8 # x18 = 0x00000078 # 4
srl x19, x2, x9 # x17 = 0x7fffffff # 1
srl x20, x2, x10 # x20 = 0x00000001 # 63 = 31
srl x21, x2, x11 # x21 = 0x00000001 # 31
srl x22, x1, x0 # x22 = 0xfedcb789 # 0
srl x24, x1, x2 # x24 = 0x00000001 # -1=31
nop
nop
nop
# sra
sra x25, x23, x8 # x25 = 0x00000078 # 4
sra x26, x2, x9 # x26 = 0xffffffff # 1
sra x27, x2, x10 # x27 = 0xffffffff # 63 = 31
sra x28, x2, x11 # x28 = 0xffffffff # 31
sra x29, x1, x0 # x29 = 0xfedcb789 # 0
sra x30, x1, x2 # x30 = 0xffffffff # -1=31
2020-10-11 23:36:11 -06:00
nop
nop
nop
2020-10-03 13:49:14 -06:00
# counter and infinite loop
2020-10-03 13:49:14 -06:00
nop
nop
nop
2020-10-11 23:36:11 -06:00
addi x31, x0, 1 # x1 = 1
2020-09-27 18:04:08 -06:00
loop:
2020-10-03 13:49:14 -06:00
nop
nop
nop
2020-10-11 23:36:11 -06:00
addi x31, x31, 1 # increment x1
2020-10-03 13:49:14 -06:00
nop
nop
nop
j loop # loop forever
nop
nop
nop
nop
nop
nop
2020-09-27 18:04:08 -06:00
.data