Commit | Line | Data |
---|---|---|
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 | |
11 | main: | |
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 | |
19 | 1: fail | |
20 | ||
21 | 2: ;; jeq - jump eq | |
22 | jeq %r1, 4, 1b ; no | |
23 | jeq %r1, %r2, 1b ; no | |
24 | jeq %r1, 5, 2f ; yes | |
25 | fail | |
26 | 2: jeq %r1, %r1, 2f ; yes | |
27 | fail | |
28 | ||
29 | 2: ;; 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 | |
35 | 2: jgt %r1, %r2, 2f ; yes | |
36 | fail | |
37 | ||
38 | 2: ;; jge - jump (unsigned) greater-than-or-equal-to | |
39 | jge %r1, 6, 1b ; no | |
40 | jge %r1, 5, 2f ; yes | |
41 | fail | |
42 | 2: jge %r1, %r3, 1b ; no | |
43 | jge %r1, -5, 1b ; no - unsigned | |
44 | jge %r1, %r2, 2f ; yes | |
45 | fail | |
46 | ||
47 | 2: ;; 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 | |
53 | 2: | |
54 | jlt %r1, %r3, 2f ; yes | |
55 | fail | |
56 | ||
57 | 2: ;; 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 | |
63 | 2: jle %r1, %r1, 2f ; yes | |
64 | fail | |
65 | ||
66 | 2: ;; 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 | ||
72 | 2: ;; 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 | |
77 | 2: jne %r1, %r4, 2f ; yes | |
78 | fail | |
79 | ||
80 | 2: ;; 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 | |
86 | 2: jsgt %r1, %r4, 2f ; yes | |
87 | fail | |
88 | ||
89 | 2: ;; jsge - jump (signed) greater-than-or-equal-to | |
90 | jsge %r1, %r3, 1b ; no | |
91 | jsge %r1, %r1, 2f ; yes | |
92 | fail | |
93 | 2: jsge %r1, 7, 1b ; no | |
94 | jsge %r1, -4, 2f ; yes | |
95 | fail | |
96 | 2: jsge %r1, %r4, 2f ; yes | |
97 | fail | |
98 | ||
99 | 2: ;; 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 | |
104 | 2: jslt %r1, 6, 2f ; yes | |
105 | fail | |
106 | 2: jslt %r1, %r3, 2f ; yes | |
107 | fail | |
108 | ||
109 | 2: ;; 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 | |
114 | 2: jsle %r1, 5, 2f ; yes | |
115 | fail | |
116 | 2: jsle %r1, %r3, 2f ; yes | |
117 | fail | |
118 | ||
119 | 2: | |
120 | pass |