]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/testsuite/sim/bpf/jmp.s
sim: eBPF simulator
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / bpf / jmp.s
CommitLineData
b26e2ae7
JM
1# mach: bpf
2# output: pass\nexit 0 (0x0)\n
3;;; jmp.s
4;;; Tests for eBPF JMP instructions in simulator
5
6 .include "testutils.inc"
7
8 .text
9 .global main
10 .type main, @function
11main:
12 mov %r1, 5
13 mov %r2, 2
14 mov %r3, 7
15 mov %r4, -1
16
17 ;; ja - jump absolute (unconditional)
18 ja 2f
191: fail
20
212: ;; jeq - jump eq
22 jeq %r1, 4, 1b ; no
23 jeq %r1, %r2, 1b ; no
24 jeq %r1, 5, 2f ; yes
25 fail
262: jeq %r1, %r1, 2f ; yes
27 fail
28
292: ;; jgt - jump (unsigned) greater-than
30 jgt %r1, 6, 1b ; no
31 jgt %r1, -5, 1b ; no - unsigned
32 jgt %r1, %r4, 1b ; no - unsigned
33 jgt %r1, 4, 2f ; yes
34 fail
352: jgt %r1, %r2, 2f ; yes
36 fail
37
382: ;; jge - jump (unsigned) greater-than-or-equal-to
39 jge %r1, 6, 1b ; no
40 jge %r1, 5, 2f ; yes
41 fail
422: jge %r1, %r3, 1b ; no
43 jge %r1, -5, 1b ; no - unsigned
44 jge %r1, %r2, 2f ; yes
45 fail
46
472: ;; jlt - jump (unsigned) less-than
48 jlt %r1, 5, 1b ; no
49 jlt %r1, %r2, 1b ; no
50 jlt %r4, %r1, 1b ; no - unsigned
51 jlt %r1, 6, 2f ; yes
52 fail
532:
54 jlt %r1, %r3, 2f ; yes
55 fail
56
572: ;; jle - jump (unsigned) less-than-or-equal-to
58 jle %r1, 4, 1b ; no
59 jle %r1, %r2, 1b ; no
60 jle %r4, %r1, 1b ; no
61 jle %r1, 5, 2f ; yes
62 fail
632: jle %r1, %r1, 2f ; yes
64 fail
65
662: ;; jset - jump "test" (AND)
67 jset %r1, 2, 1b ; no (5 & 2 = 0)
68 jset %r1, %r2, 1b ; no (same)
69 jset %r1, 4, 2f ; yes (5 & 4 != 0)
70 fail
71
722: ;; jne - jump not-equal-to
73 jne %r1, 5, 1b ; no
74 jne %r1, %r1, 1b ; no
75 jne %r1, 6, 2f ; yes
76 fail
772: jne %r1, %r4, 2f ; yes
78 fail
79
802: ;; jsgt - jump (signed) greater-than
81 jsgt %r1, %r3, 1b ; no
82 jsgt %r1, %r1, 1b ; no
83 jsgt %r1, 5, 1b ; no
84 jsgt %r1, -4, 2f ; yes
85 fail
862: jsgt %r1, %r4, 2f ; yes
87 fail
88
892: ;; jsge - jump (signed) greater-than-or-equal-to
90 jsge %r1, %r3, 1b ; no
91 jsge %r1, %r1, 2f ; yes
92 fail
932: jsge %r1, 7, 1b ; no
94 jsge %r1, -4, 2f ; yes
95 fail
962: jsge %r1, %r4, 2f ; yes
97 fail
98
992: ;; jslt - jump (signed) less-than
100 jslt %r1, 5, 1b ; no
101 jslt %r1, %r2, 1b ; no
102 jslt %r4, %r1, 2f ; yes
103 fail
1042: jslt %r1, 6, 2f ; yes
105 fail
1062: jslt %r1, %r3, 2f ; yes
107 fail
108
1092: ;; jsle - jump (signed) less-than-or-equal-to
110 jsle %r1, 4, 1b ; no
111 jsle %r1, %r2, 1b ; no
112 jsle %r4, %r1, 2f ; yes
113 fail
1142: jsle %r1, 5, 2f ; yes
115 fail
1162: jsle %r1, %r3, 2f ; yes
117 fail
118
1192:
120 pass