From 37435c667739043f5686683f8b297742c1c87c52 Mon Sep 17 00:00:00 2001 From: supersurviveur Date: Thu, 6 Nov 2025 18:52:31 +0100 Subject: [PATCH] Add tests for stage 7 --- bench/tests/op/add.s | 16 ++++++++++++++++ bench/tests/op/and.s | 11 +++++++++++ bench/tests/op/or.s | 11 +++++++++++ bench/tests/op/sll.s | 13 +++++++++++++ bench/tests/op/slt.s | 19 +++++++++++++++++++ bench/tests/op/sltu.s | 14 ++++++++++++++ bench/tests/op/sra.s | 14 ++++++++++++++ bench/tests/op/srl.s | 14 ++++++++++++++ bench/tests/op/xor.s | 16 ++++++++++++++++ 9 files changed, 128 insertions(+) create mode 100644 bench/tests/op/add.s create mode 100644 bench/tests/op/and.s create mode 100644 bench/tests/op/or.s create mode 100644 bench/tests/op/sll.s create mode 100644 bench/tests/op/slt.s create mode 100644 bench/tests/op/sltu.s create mode 100644 bench/tests/op/sra.s create mode 100644 bench/tests/op/srl.s create mode 100644 bench/tests/op/xor.s diff --git a/bench/tests/op/add.s b/bench/tests/op/add.s new file mode 100644 index 0000000..9dcef14 --- /dev/null +++ b/bench/tests/op/add.s @@ -0,0 +1,16 @@ +# expected: dead0000, dead0001, 00000000 + .text +_start: + lui x2, 0xdead0 + lui x3, 0x0 + lui x4, 0x1 + addi x5, x0, (-1) + + # Add 0 + add x31, x2, x3 + + # Basic addition + add x31, x2, x4 + + # Overflow + add x31, x5, x4 diff --git a/bench/tests/op/and.s b/bench/tests/op/and.s new file mode 100644 index 0000000..5aa3b11 --- /dev/null +++ b/bench/tests/op/and.s @@ -0,0 +1,11 @@ +# expected: 00000000, 00000010 + .text +_start: + addi x1, x0, 0x100 + addi x2, x0, 0x0FF + and x31, x1, x2 + + addi x1, x0, -1 + addi x2, x0, 0x010 + and x31, x1, x2 + diff --git a/bench/tests/op/or.s b/bench/tests/op/or.s new file mode 100644 index 0000000..75c98ef --- /dev/null +++ b/bench/tests/op/or.s @@ -0,0 +1,11 @@ +# expected: 000001FF, FFFFFFFF + .text +_start: + addi x1, x0, 0x100 + addi x2, x0, 0x0FF + or x31, x1, x2 + + addi x1, x0, -1 + addi x2, x0, 0x010 + or x31, x1, x2 + diff --git a/bench/tests/op/sll.s b/bench/tests/op/sll.s new file mode 100644 index 0000000..8027053 --- /dev/null +++ b/bench/tests/op/sll.s @@ -0,0 +1,13 @@ +# expected: 000003FC, 80000000, 00000000 + .text +_start: + addi x1, x0, 0x0FF + addi x2, x0, 2 + sll x31, x1, x2 + + addi x1, x0, 0x001 + addi x2, x0, 31 + sll x31, x1, x2 + + addi x1, x0, 0x0F0 + sll x31, x1, x2 diff --git a/bench/tests/op/slt.s b/bench/tests/op/slt.s new file mode 100644 index 0000000..3f380ec --- /dev/null +++ b/bench/tests/op/slt.s @@ -0,0 +1,19 @@ +# expected: 00000000, 00000001, 00000001, 00000000 + .text +_start: + addi x1, x0, (-1) + addi x2, x0, (-37) + slt x31, x1, x2 + + addi x1, x0, (-37) + addi x2, x0, (-1) + slt x31, x1, x2 + + addi x1, x0, (-38) + addi x2, x0, (-38) + slt x31, x1, x2 + + addi x1, x0, 129 + addi x2, x0, (-7) + slt x31, x1, x2 + diff --git a/bench/tests/op/sltu.s b/bench/tests/op/sltu.s new file mode 100644 index 0000000..4a13f0e --- /dev/null +++ b/bench/tests/op/sltu.s @@ -0,0 +1,14 @@ +# expected: 00000001, 00000001, 00000000 + .text +_start: + addi x1, x0, 0 + addi x2, x0, (-1) + sltu x31, x1, x2 + + addi x1, x0, 98 + addi x2, x0, 99 + sltu x31, x1, x2 + + addi x1, x0, 99 + addi x2, x0, 98 + sltu x31, x1, x2 diff --git a/bench/tests/op/sra.s b/bench/tests/op/sra.s new file mode 100644 index 0000000..3f7cc5c --- /dev/null +++ b/bench/tests/op/sra.s @@ -0,0 +1,14 @@ +# expected: 000000FF, FFFFFFFF, 00000000 + .text +_start: + addi x1, x0, 0x3FC + addi x2, x0, 2 + sra x31, x1, x2 + + lui x1, 0xA0000 + addi x2, x0, 31 + sra x31, x1, x2 + + lui x1, 0x0A000 + addi x2, x0, 31 + sra x31, x1, x2 diff --git a/bench/tests/op/srl.s b/bench/tests/op/srl.s new file mode 100644 index 0000000..6fed2c8 --- /dev/null +++ b/bench/tests/op/srl.s @@ -0,0 +1,14 @@ +# expected: 000000FF, 00000001, 00000000 + .text +_start: + addi x1, x0, 0x3FC + addi x2, x0, 2 + srl x31, x1, x2 + + lui x1, 0xA0000 + addi x2, x0, 31 + srl x31, x1, x2 + + lui x1, 0x0A000 + addi x2, x0, 31 + srl x31, x1, x2 diff --git a/bench/tests/op/xor.s b/bench/tests/op/xor.s new file mode 100644 index 0000000..1c5c54b --- /dev/null +++ b/bench/tests/op/xor.s @@ -0,0 +1,16 @@ +# expected: 00000000, 000001EF + .text +_start: + # 1 XOR 1 should equal 0000000 + addi x1, x0, -1 + addi x2, x0, -1 + xor x31, x1, x2 + + addi x1, x0, 0x1BC + addi x2, x0, 0x1EF + + addi x3, x0, 0x1BC + + # Xor is involutive and commutative, applying it twice should give us the original operand + xor x1, x1, x2 + xor x31, x1, x3