sim: eBPF simulator
[deliverable/binutils-gdb.git] / sim / testsuite / sim / bpf / jmp32.s
1 # mach: bpf
2 # output: pass\nexit 0 (0x0)\n
3 ;;; jmp32.s
4 ;;; Tests for eBPF JMP32 instructions in simulator
5
6 .include "testutils.inc"
7
8 .text
9 .global main
10 .type main, @function
11 main:
12 mov32 %r1, 5
13 mov32 %r2, 2
14 mov32 %r3, 7
15 mov32 %r4, -1
16
17 ;; ja - jump absolute (unconditional)
18 ja 2f
19 1: fail
20
21 2: ;; jeq - jump eq
22 jeq32 %r1, 4, 1b ; no
23 jeq32 %r1, %r2, 1b ; no
24 jeq32 %r1, 5, 2f ; yes
25 fail
26 2: jeq32 %r1, %r1, 2f ; yes
27 fail
28
29 2: ;; jgt - jump (unsigned) greater-than
30 jgt32 %r1, 6, 1b ; no
31 jgt32 %r1, -5, 1b ; no - unsigned
32 jgt32 %r1, %r4, 1b ; no - unsigned
33 jgt32 %r1, 4, 2f ; yes
34 fail
35 2: jgt32 %r1, %r2, 2f ; yes
36 fail
37
38 2: ;; jge - jump (unsigned) greater-than-or-equal-to
39 jge32 %r1, 6, 1b ; no
40 jge32 %r1, 5, 2f ; yes
41 fail
42 2: jge32 %r1, %r3, 1b ; no
43 jge32 %r1, -5, 1b ; no - unsigned
44 jge32 %r1, %r2, 2f ; yes
45 fail
46
47 2: ;; jlt - jump (unsigned) less-than
48 jlt32 %r1, 5, 1b ; no
49 jlt32 %r1, %r2, 1b ; no
50 jlt32 %r4, %r1, 1b ; no - unsigned
51 jlt32 %r1, 6, 2f ; yes
52 fail
53 2:
54 jlt32 %r1, %r3, 2f ; yes
55 fail
56
57 2: ;; jle - jump (unsigned) less-than-or-equal-to
58 jle32 %r1, 4, 1b ; no
59 jle32 %r1, %r2, 1b ; no
60 jle32 %r4, %r1, 1b ; no
61 jle32 %r1, 5, 2f ; yes
62 fail
63 2: jle32 %r1, %r1, 2f ; yes
64 fail
65
66 2: ;; jset - jump "test" (AND)
67 jset32 %r1, 2, 1b ; no (5 & 2 = 0)
68 jset32 %r1, %r2, 1b ; no (same)
69 jset32 %r1, 4, 2f ; yes (5 & 4 != 0)
70 fail
71
72 2: ;; jne - jump not-equal-to
73 jne32 %r1, 5, 1b ; no
74 jne32 %r1, %r1, 1b ; no
75 jne32 %r1, 6, 2f ; yes
76 fail
77 2: jne32 %r1, %r4, 2f ; yes
78 fail
79
80 2: ;; jsgt - jump (signed) greater-than
81 jsgt32 %r1, %r3, 1b ; no
82 jsgt32 %r1, %r1, 1b ; no
83 jsgt32 %r1, 5, 1b ; no
84 jsgt32 %r1, -4, 2f ; yes
85 fail
86 2: jsgt32 %r1, %r4, 2f ; yes
87 fail
88
89 2: ;; jsge - jump (signed) greater-than-or-equal-to
90 jsge32 %r1, %r3, 1b ; no
91 jsge32 %r1, %r1, 2f ; yes
92 fail
93 2: jsge32 %r1, 7, 1b ; no
94 jsge32 %r1, -4, 2f ; yes
95 fail
96 2: jsge32 %r1, %r4, 2f ; yes
97 fail
98
99 2: ;; jslt - jump (signed) less-than
100 jslt32 %r1, 5, 1b ; no
101 jslt32 %r1, %r2, 1b ; no
102 jslt32 %r4, %r1, 2f ; yes
103 fail
104 2: jslt32 %r1, 6, 2f ; yes
105 fail
106 2: jslt32 %r1, %r3, 2f ; yes
107 fail
108
109 2: ;; jsle - jump (signed) less-than-or-equal-to
110 jsle32 %r1, 4, 1b ; no
111 jsle32 %r1, %r2, 1b ; no
112 jsle32 %r4, %r1, 2f ; yes
113 fail
114 2: jsle32 %r1, 5, 2f ; yes
115 fail
116 2: jsle32 %r1, %r3, 2f ; yes
117 fail
118
119 2:
120 pass
This page took 0.032555 seconds and 4 git commands to generate.