Forráskód Böngészése

Merge pull request #69 from bidhan-a/fix/regression-tests

Fix/regression tests
Claire Fan 3 napja
szülő
commit
e85d6e45be

+ 2 - 3
Makefile

@@ -14,11 +14,10 @@ web:
 test-examples:
 	@set -e; \
 	cargo build; \
-	cargo install --path .; \
 	for d in examples/*; do \
 		if [ -d "$$d" ]; then \
 			echo "=== Building and testing $$d ==="; \
-			( cd "$$d" && sbpf build || exit 1 ); \
-			( cd "$$d" && sbpf test || exit 1 ); \
+			( cd "$$d" && cargo run --manifest-path ../../Cargo.toml --bin sbpf -- build || exit 1 ); \
+			( cd "$$d" && cargo run --manifest-path ../../Cargo.toml --bin sbpf -- test || exit 1 ); \
 		fi; \
 	done

+ 18 - 0
crates/assembler/tests/fixtures/alu_32_imm.s

@@ -0,0 +1,18 @@
+.globl entrypoint
+
+entrypoint:
+  add32 r1, 0x10
+  sub32 r2, 0x5
+  mul32 r3, 0x2
+  div32 r4, 0x3
+  // sdiv32 r5, 0x4
+  mod32 r6, 0x7
+  smod32 r7, 0x6
+  or32 r8, 0xff
+  and32 r9, 0xf0
+  xor32 r1, 0xaa
+  mov32 r1, 0x100
+  lsh32 r2, 0x4
+  rsh32 r3, 0x2
+  arsh32 r4, 0x1
+  exit

+ 19 - 0
crates/assembler/tests/fixtures/alu_32_reg.s

@@ -0,0 +1,19 @@
+.globl entrypoint
+
+entrypoint:
+  add32 r1, r2
+  sub32 r2, r3
+  mul32 r3, r1
+  lddw r1, 0x1
+  div32 r4, r1
+  // sdiv32 r5, r6
+  mod32 r6, r1
+  smod32 r7, r8
+  or32 r8, r9
+  and32 r9, r1
+  xor32 r1, r2
+  mov32 r1, r2
+  lsh32 r2, r1
+  rsh32 r3, r1
+  arsh32 r4, r5
+  exit

+ 18 - 0
crates/assembler/tests/fixtures/alu_64_imm.s

@@ -0,0 +1,18 @@
+.globl entrypoint
+
+entrypoint:
+  add64 r1, 0x10
+  sub64 r2, 0x5
+  mul64 r3, 0x2
+  div64 r4, 0x3
+  // sdiv64 r5, 0x4
+  mod64 r6, 0x7
+  smod64 r7, 0x6
+  or64 r8, 0xff
+  and64 r9, 0xf0
+  xor64 r1, 0x1
+  mov64 r1, 0x100
+  lsh64 r2, 0x4
+  rsh64 r3, 0x2
+  arsh64 r4, 0x1
+  exit

+ 19 - 0
crates/assembler/tests/fixtures/alu_64_reg.s

@@ -0,0 +1,19 @@
+.globl entrypoint
+
+entrypoint:
+  add64 r1, r2
+  sub64 r2, r3
+  mul64 r3, r1
+  lddw r1, 0x1
+  div64 r4, r1
+  // sdiv64 r5, r6
+  mod64 r6, r1
+  smod64 r7, r8
+  or64 r8, r9
+  and64 r9, r1
+  xor64 r1, r2
+  mov64 r1, r2
+  lsh64 r2, r1
+  rsh64 r3, r1
+  arsh64 r4, r5
+  exit

+ 0 - 9
crates/assembler/tests/fixtures/be_le_callx.s

@@ -1,9 +0,0 @@
-.globl e
-
-e: 
-  be16 r3
-  le16 r4
-  // program is not deployable because of this line but generated bytecode 
-  // for callx instruction matches llvm
-  callx r3
-  exit

+ 8 - 4
crates/assembler/tests/fixtures/calls.s

@@ -1,5 +1,9 @@
-.globl e
+.globl entrypoint
 
-e:
-    call sol_log_64_
-    exit
+entrypoint:
+  call helper_function
+  call sol_log_64_
+  exit
+
+helper_function:
+  exit

+ 9 - 0
crates/assembler/tests/fixtures/callx.s

@@ -0,0 +1,9 @@
+.globl entrypoint
+
+entrypoint:
+  lddw r8, helper_function
+  callx r8
+  exit
+
+helper_function:
+  exit

+ 16 - 0
crates/assembler/tests/fixtures/endian.s

@@ -0,0 +1,16 @@
+.globl entrypoint
+
+entrypoint:
+  lddw r1, 0x1234
+  be16 r1
+  lddw r2, 0x12345678
+  be32 r2
+  lddw r3, 0x123456789abcdef0
+  be64 r3
+  lddw r4, 0x1234
+  le16 r4
+  lddw r5, 0x12345678
+  le32 r5
+  lddw r6, 0x123456789abcdef0
+  le64 r6
+  exit

+ 50 - 14
crates/assembler/tests/fixtures/index.toml

@@ -1,27 +1,63 @@
-[cases.be_le_callx]
-file = "be_le_callx.s"
-hash = "c13b88606e194b06e9acba56b2cdc46c92895b17006a8df0eb8e80df6a8e94b9"
+[cases.alu_32_imm]
+file = "alu_32_imm.s"
+hash = "cf304c2cb384d02b041ad90dc7837f37d633f454e3e6ad431de8d6fd71d5daa7"
+
+[cases.alu_32_reg]
+file = "alu_32_reg.s"
+hash = "01776829b2d174b5364b3f14aea34cd2b41c2f631be244519502807996d2239b"
+
+[cases.alu_64_imm]
+file = "alu_64_imm.s"
+hash = "897fbaab994b3e80d2b12902818c2447fabf75fa86abb4116807b80d42c59cc3"
+
+[cases.alu_64_reg]
+file = "alu_64_reg.s"
+hash = "6aa6cbf02e43654aa6edc4f9baccc5ea5388f26d1f81ec7dda8893a6a2e586a0"
 
 [cases.calls]
 file = "calls.s"
-hash = "721f1b40d11288f841a71d84378da9c1fb1227008dc3b9493d326bf39e1466c1"
+hash = "64934ea68d9e2b5c503fabeb21ce2a133a431f2bcc16530ac87f986e9974d998"
+
+[cases.callx]
+file = "callx.s"
+hash = "394d7843fbe545405be96085be387e374308dc5188857cc483df633ae31cc016"
+
+[cases.endian]
+file = "endian.s"
+hash = "af0ebc4f2d5f56c66696cdb4b3faa50e0545d31a0224541b78b85d5c58f478ea"
 
 [cases.equ]
 file = "equ.s"
 hash = "4763e97761337179bb07738141c2d4787e277bfc20eea99c23427368424fb8aa"
 
-[cases.jumps]
-file = "jumps.s"
-hash = "7be6d8971386a6fb59845d0353d688183677b3115cc683cddfc2d636efa01bc0"
+[cases.jumps_imm]
+file = "jumps_imm.s"
+hash = "2cdc92d0421e71b3d4ae45baf5ec85f8b213cfee3faf119f43142153756a9e84"
 
-[cases.neg64]
-file = "neg64.s"
-hash = "330570ef597e21b67aa44abe00f31766739c81dbbb2e8a555734dd727d1e7851"
+[cases.jumps_reg]
+file = "jumps_reg.s"
+hash = "9397c54a33c4ad6a4459e3c2170eb24ef7282bfb79b218bde74f66ad764f36b7"
 
-[cases.ro_bytearray]
-file = "ro_bytearray.s"
-hash = "f2967906640257efdddd7684bd818109efb2857af8a3bb2bff1578c47265481f"
+[cases.jumps_uncond]
+file = "jumps_uncond.s"
+hash = "72e86e0945fb88bac0f059c926398b059e1915200873ab4c628b5c3c35129407"
+
+[cases.load]
+file = "load.s"
+hash = "e80c56ff4dfdd2d55822581202dc917beb661e82efc407dddf8b56e8c3e9071b"
+
+[cases.neg]
+file = "neg.s"
+hash = "8611102bfd01ef3a8842774a638dbeaf1099a5b3ec29ac5556c5c0c43cf04c1e"
 
 [cases.rodata]
 file = "rodata.s"
-hash = "b5bf26be95f734324c4aeb29ec94ac6456e051ad931f6167a391f64fde9a0647"
+hash = "1220a8e5abe1346012bb5ca02b7000627fdbdaffb3465b4b45c5d91ec931eddc"
+
+[cases.store_imm]
+file = "store_imm.s"
+hash = "30e07a5041d7787e4ff87fbd70115f20565f769bf777de8ae74c3056a5b48883"
+
+[cases.store_reg]
+file = "store_reg.s"
+hash = "03ddbd8ee4390cd1f1efc96d42684ba0350088d79c4586882edf6332b80fd8c0"

+ 0 - 13
crates/assembler/tests/fixtures/jumps.s

@@ -1,13 +0,0 @@
-.globl e
-
-e:
-    lddw r1, 0x1
-    jeq r1, 0x1, target_1
-    jeq r1, 0x2, target_2
-    exit
-    
-target_1:
-    exit
-
-target_2:
-    exit

+ 19 - 0
crates/assembler/tests/fixtures/jumps_imm.s

@@ -0,0 +1,19 @@
+.globl entrypoint
+
+entrypoint:
+  lddw r1, 0x10
+  jeq r1, 0x10, target
+  jne r1, 0x20, target
+  jgt r1, 0x5, target
+  jge r1, 0x10, target
+  jlt r1, 0x20, target
+  jle r1, 0x10, target
+  jsgt r1, 0x5, target
+  jsge r1, 0x10, target
+  jslt r1, 0x20, target
+  jsle r1, 0x10, target
+  jset r1, 0x10, target
+  exit
+
+target:
+  exit

+ 20 - 0
crates/assembler/tests/fixtures/jumps_reg.s

@@ -0,0 +1,20 @@
+.globl entrypoint
+
+entrypoint:
+  lddw r1, 0x10
+  lddw r2, 0x10
+  jeq r1, r2, target
+  jne r1, r2, target
+  jgt r1, r2, target
+  jge r1, r2, target
+  jlt r1, r2, target
+  jle r1, r2, target
+  jsgt r1, r2, target
+  jsge r1, r2, target
+  jslt r1, r2, target
+  jsle r1, r2, target
+  jset r1, r2, target
+  exit
+
+target:
+  exit

+ 16 - 0
crates/assembler/tests/fixtures/jumps_uncond.s

@@ -0,0 +1,16 @@
+.globl entrypoint
+
+entrypoint:
+  ja target1
+
+1:
+  ja 2f
+
+target1:
+  ja 1b
+
+2:
+  ja target2
+
+target2:
+  exit

+ 9 - 0
crates/assembler/tests/fixtures/load.s

@@ -0,0 +1,9 @@
+.globl entrypoint
+
+entrypoint:
+  ldxb r2, [r1+0x0]
+  ldxh r3, [r1+0x1]
+  ldxw r4, [r1+0x2]
+  ldxdw r5, [r1+0x4]
+  lddw r6, 0x1234
+  exit

+ 8 - 0
crates/assembler/tests/fixtures/neg.s

@@ -0,0 +1,8 @@
+.globl entrypoint
+
+entrypoint:
+  lddw r1, 0x4
+  neg64 r1
+  lddw r2, 0x10
+  neg32 r2
+  exit

+ 0 - 9
crates/assembler/tests/fixtures/neg64.s

@@ -1,9 +0,0 @@
-.globl entrypoint
-
-entrypoint:
-    lddw r1, 0x4
-    call sol_log_64_
-    neg64 r1
-    # should log 0xfffffffffffffffc
-    call sol_log_64_
-    exit

+ 0 - 13
crates/assembler/tests/fixtures/ro_bytearray.s

@@ -1,13 +0,0 @@
-.rodata
-  x: .byte 0, 0x01, 2, 0x10
-
-.text
-.globl entrypoint
-entrypoint:
-  lddw r6, x
-  ldxb r1, [r6 + 0]   # Load x[0] into r1
-  ldxb r2, [r6 + 1]   # Load x[1] into r2
-  ldxb r3, [r6 + 2]   # Load x[2] into r3
-  ldxb r4, [r6 + 3]   # Load x[3] into r4
-  call sol_log_64_
-  exit

+ 18 - 8
crates/assembler/tests/fixtures/rodata.s

@@ -1,10 +1,20 @@
-.globl e
-
-e:
-    lddw r1, msg
-    lddw r2, 12
-    call sol_log_
-    exit
+.rodata
+  x: .byte 0, 0x01, 2, 0x10
 
 .rodata
-    msg: .ascii "Hello world."
+  msg: .ascii "Hello world."
+
+.text
+.globl entrypoint
+entrypoint:
+  lddw r6, x
+  ldxb r1, [r6 + 0]   # Load x[0] into r1
+  ldxb r2, [r6 + 1]   # Load x[1] into r2
+  ldxb r3, [r6 + 2]   # Load x[2] into r3
+  ldxb r4, [r6 + 3]   # Load x[3] into r4
+  call sol_log_64_
+
+  lddw r1, msg
+  lddw r2, 12
+  call sol_log_
+  exit

+ 8 - 0
crates/assembler/tests/fixtures/store_imm.s

@@ -0,0 +1,8 @@
+.globl entrypoint
+
+entrypoint:
+  stb [r1+0x0], 0x42
+  sth [r1+0x1], 0x1234
+  stw [r1+0x4], 0xabcd
+  stdw [r1+0x8], 0xdeadbeef
+  exit

+ 8 - 0
crates/assembler/tests/fixtures/store_reg.s

@@ -0,0 +1,8 @@
+.globl entrypoint
+
+entrypoint:
+  stxb [r1+0x0], r2
+  stxh [r1+0x1], r3
+  stxw [r1+0x4], r4
+  stxdw [r1+0x8], r5
+  exit