2 # output: pass\nexit 0 (0x0)\n
4 ;;; Tests for eBPF JMP32 instructions in simulator
6 .include "testutils.inc"
17 ;; ja - jump absolute (unconditional)
23 jeq32 %r1, %r2, 1b ; no
24 jeq32 %r1, 5, 2f ; yes
26 2: jeq32 %r1, %r1, 2f ; yes
29 2: ;; jgt - jump (unsigned) greater-than
31 jgt32 %r1, -5, 1b ; no - unsigned
32 jgt32 %r1, %r4, 1b ; no - unsigned
33 jgt32 %r1, 4, 2f ; yes
35 2: jgt32 %r1, %r2, 2f ; yes
38 2: ;; jge - jump (unsigned) greater-than-or-equal-to
40 jge32 %r1, 5, 2f ; yes
42 2: jge32 %r1, %r3, 1b ; no
43 jge32 %r1, -5, 1b ; no - unsigned
44 jge32 %r1, %r2, 2f ; yes
47 2: ;; jlt - jump (unsigned) less-than
49 jlt32 %r1, %r2, 1b ; no
50 jlt32 %r4, %r1, 1b ; no - unsigned
51 jlt32 %r1, 6, 2f ; yes
54 jlt32 %r1, %r3, 2f ; yes
57 2: ;; jle - jump (unsigned) less-than-or-equal-to
59 jle32 %r1, %r2, 1b ; no
60 jle32 %r4, %r1, 1b ; no
61 jle32 %r1, 5, 2f ; yes
63 2: jle32 %r1, %r1, 2f ; yes
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)
72 2: ;; jne - jump not-equal-to
74 jne32 %r1, %r1, 1b ; no
75 jne32 %r1, 6, 2f ; yes
77 2: jne32 %r1, %r4, 2f ; yes
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
86 2: jsgt32 %r1, %r4, 2f ; yes
89 2: ;; jsge - jump (signed) greater-than-or-equal-to
90 jsge32 %r1, %r3, 1b ; no
91 jsge32 %r1, %r1, 2f ; yes
93 2: jsge32 %r1, 7, 1b ; no
94 jsge32 %r1, -4, 2f ; yes
96 2: jsge32 %r1, %r4, 2f ; yes
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
104 2: jslt32 %r1, 6, 2f ; yes
106 2: jslt32 %r1, %r3, 2f ; yes
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
114 2: jsle32 %r1, 5, 2f ; yes
116 2: jsle32 %r1, %r3, 2f ; yes