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 11main: 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 191: fail 20 212: ;; jeq - jump eq 22 jeq32 %r1, 4, 1b ; no 23 jeq32 %r1, %r2, 1b ; no 24 jeq32 %r1, 5, 2f ; yes 25 fail 262: jeq32 %r1, %r1, 2f ; yes 27 fail 28 292: ;; 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 352: jgt32 %r1, %r2, 2f ; yes 36 fail 37 382: ;; jge - jump (unsigned) greater-than-or-equal-to 39 jge32 %r1, 6, 1b ; no 40 jge32 %r1, 5, 2f ; yes 41 fail 422: jge32 %r1, %r3, 1b ; no 43 jge32 %r1, -5, 1b ; no - unsigned 44 jge32 %r1, %r2, 2f ; yes 45 fail 46 472: ;; 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 532: 54 jlt32 %r1, %r3, 2f ; yes 55 fail 56 572: ;; 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 632: jle32 %r1, %r1, 2f ; yes 64 fail 65 662: ;; 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 722: ;; 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 772: jne32 %r1, %r4, 2f ; yes 78 fail 79 802: ;; 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 862: jsgt32 %r1, %r4, 2f ; yes 87 fail 88 892: ;; jsge - jump (signed) greater-than-or-equal-to 90 jsge32 %r1, %r3, 1b ; no 91 jsge32 %r1, %r1, 2f ; yes 92 fail 932: jsge32 %r1, 7, 1b ; no 94 jsge32 %r1, -4, 2f ; yes 95 fail 962: jsge32 %r1, %r4, 2f ; yes 97 fail 98 992: ;; 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 1042: jslt32 %r1, 6, 2f ; yes 105 fail 1062: jslt32 %r1, %r3, 2f ; yes 107 fail 108 1092: ;; 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 1142: jsle32 %r1, 5, 2f ; yes 115 fail 1162: jsle32 %r1, %r3, 2f ; yes 117 fail 118 1192: 120 pass 121