diff options
author | Michael Holzheu <holzheu@linux.vnet.ibm.com> | 2015-05-12 01:22:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-05-12 23:15:25 -0400 |
commit | cffc642d93f9324a06dfbd7da9af29652952a248 (patch) | |
tree | aff9454a155b39880d89e327ef40114cff9a776c /lib | |
parent | b88c06e36dcb9b4ae285f7821f62d68dc34b25d3 (diff) |
test_bpf: add 173 new testcases for eBPF
add an exhaustive set of eBPF tests bringing total to:
test_bpf: Summary: 233 PASSED, 0 FAILED, [0/226 JIT'ed]
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/test_bpf.c | 2192 |
1 files changed, 2192 insertions, 0 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c index 3c41049d72d8..8bca780e3613 100644 --- a/lib/test_bpf.c +++ b/lib/test_bpf.c | |||
@@ -1806,6 +1806,2198 @@ static struct bpf_test tests[] = { | |||
1806 | 0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6}, | 1806 | 0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6}, |
1807 | { { 38, 256 } } | 1807 | { { 38, 256 } } |
1808 | }, | 1808 | }, |
1809 | /* BPF_ALU | BPF_MOV | BPF_X */ | ||
1810 | { | ||
1811 | "ALU_MOV_X: dst = 2", | ||
1812 | .u.insns_int = { | ||
1813 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
1814 | BPF_ALU32_REG(BPF_MOV, R0, R1), | ||
1815 | BPF_EXIT_INSN(), | ||
1816 | }, | ||
1817 | INTERNAL, | ||
1818 | { }, | ||
1819 | { { 0, 2 } }, | ||
1820 | }, | ||
1821 | { | ||
1822 | "ALU_MOV_X: dst = 4294967295", | ||
1823 | .u.insns_int = { | ||
1824 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967295), | ||
1825 | BPF_ALU32_REG(BPF_MOV, R0, R1), | ||
1826 | BPF_EXIT_INSN(), | ||
1827 | }, | ||
1828 | INTERNAL, | ||
1829 | { }, | ||
1830 | { { 0, 4294967295 } }, | ||
1831 | }, | ||
1832 | { | ||
1833 | "ALU64_MOV_X: dst = 2", | ||
1834 | .u.insns_int = { | ||
1835 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
1836 | BPF_ALU64_REG(BPF_MOV, R0, R1), | ||
1837 | BPF_EXIT_INSN(), | ||
1838 | }, | ||
1839 | INTERNAL, | ||
1840 | { }, | ||
1841 | { { 0, 2 } }, | ||
1842 | }, | ||
1843 | { | ||
1844 | "ALU64_MOV_X: dst = 4294967295", | ||
1845 | .u.insns_int = { | ||
1846 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967295), | ||
1847 | BPF_ALU64_REG(BPF_MOV, R0, R1), | ||
1848 | BPF_EXIT_INSN(), | ||
1849 | }, | ||
1850 | INTERNAL, | ||
1851 | { }, | ||
1852 | { { 0, 4294967295 } }, | ||
1853 | }, | ||
1854 | /* BPF_ALU | BPF_MOV | BPF_K */ | ||
1855 | { | ||
1856 | "ALU_MOV_K: dst = 2", | ||
1857 | .u.insns_int = { | ||
1858 | BPF_ALU32_IMM(BPF_MOV, R0, 2), | ||
1859 | BPF_EXIT_INSN(), | ||
1860 | }, | ||
1861 | INTERNAL, | ||
1862 | { }, | ||
1863 | { { 0, 2 } }, | ||
1864 | }, | ||
1865 | { | ||
1866 | "ALU_MOV_K: dst = 4294967295", | ||
1867 | .u.insns_int = { | ||
1868 | BPF_ALU32_IMM(BPF_MOV, R0, 4294967295), | ||
1869 | BPF_EXIT_INSN(), | ||
1870 | }, | ||
1871 | INTERNAL, | ||
1872 | { }, | ||
1873 | { { 0, 4294967295 } }, | ||
1874 | }, | ||
1875 | { | ||
1876 | "ALU_MOV_K: 0x0000ffffffff0000 = 0x00000000ffffffff", | ||
1877 | .u.insns_int = { | ||
1878 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
1879 | BPF_LD_IMM64(R3, 0x00000000ffffffff), | ||
1880 | BPF_ALU32_IMM(BPF_MOV, R2, 0xffffffff), | ||
1881 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
1882 | BPF_MOV32_IMM(R0, 2), | ||
1883 | BPF_EXIT_INSN(), | ||
1884 | BPF_MOV32_IMM(R0, 1), | ||
1885 | BPF_EXIT_INSN(), | ||
1886 | }, | ||
1887 | INTERNAL, | ||
1888 | { }, | ||
1889 | { { 0, 0x1 } }, | ||
1890 | }, | ||
1891 | { | ||
1892 | "ALU64_MOV_K: dst = 2", | ||
1893 | .u.insns_int = { | ||
1894 | BPF_ALU64_IMM(BPF_MOV, R0, 2), | ||
1895 | BPF_EXIT_INSN(), | ||
1896 | }, | ||
1897 | INTERNAL, | ||
1898 | { }, | ||
1899 | { { 0, 2 } }, | ||
1900 | }, | ||
1901 | { | ||
1902 | "ALU64_MOV_K: dst = 2147483647", | ||
1903 | .u.insns_int = { | ||
1904 | BPF_ALU64_IMM(BPF_MOV, R0, 2147483647), | ||
1905 | BPF_EXIT_INSN(), | ||
1906 | }, | ||
1907 | INTERNAL, | ||
1908 | { }, | ||
1909 | { { 0, 2147483647 } }, | ||
1910 | }, | ||
1911 | { | ||
1912 | "ALU64_OR_K: dst = 0x0", | ||
1913 | .u.insns_int = { | ||
1914 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
1915 | BPF_LD_IMM64(R3, 0x0), | ||
1916 | BPF_ALU64_IMM(BPF_MOV, R2, 0x0), | ||
1917 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
1918 | BPF_MOV32_IMM(R0, 2), | ||
1919 | BPF_EXIT_INSN(), | ||
1920 | BPF_MOV32_IMM(R0, 1), | ||
1921 | BPF_EXIT_INSN(), | ||
1922 | }, | ||
1923 | INTERNAL, | ||
1924 | { }, | ||
1925 | { { 0, 0x1 } }, | ||
1926 | }, | ||
1927 | { | ||
1928 | "ALU64_MOV_K: dst = -1", | ||
1929 | .u.insns_int = { | ||
1930 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
1931 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
1932 | BPF_ALU64_IMM(BPF_MOV, R2, 0xffffffff), | ||
1933 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
1934 | BPF_MOV32_IMM(R0, 2), | ||
1935 | BPF_EXIT_INSN(), | ||
1936 | BPF_MOV32_IMM(R0, 1), | ||
1937 | BPF_EXIT_INSN(), | ||
1938 | }, | ||
1939 | INTERNAL, | ||
1940 | { }, | ||
1941 | { { 0, 0x1 } }, | ||
1942 | }, | ||
1943 | /* BPF_ALU | BPF_ADD | BPF_X */ | ||
1944 | { | ||
1945 | "ALU_ADD_X: 1 + 2 = 3", | ||
1946 | .u.insns_int = { | ||
1947 | BPF_LD_IMM64(R0, 1), | ||
1948 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
1949 | BPF_ALU32_REG(BPF_ADD, R0, R1), | ||
1950 | BPF_EXIT_INSN(), | ||
1951 | }, | ||
1952 | INTERNAL, | ||
1953 | { }, | ||
1954 | { { 0, 3 } }, | ||
1955 | }, | ||
1956 | { | ||
1957 | "ALU_ADD_X: 1 + 4294967294 = 4294967295", | ||
1958 | .u.insns_int = { | ||
1959 | BPF_LD_IMM64(R0, 1), | ||
1960 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967294), | ||
1961 | BPF_ALU32_REG(BPF_ADD, R0, R1), | ||
1962 | BPF_EXIT_INSN(), | ||
1963 | }, | ||
1964 | INTERNAL, | ||
1965 | { }, | ||
1966 | { { 0, 4294967295 } }, | ||
1967 | }, | ||
1968 | { | ||
1969 | "ALU64_ADD_X: 1 + 2 = 3", | ||
1970 | .u.insns_int = { | ||
1971 | BPF_LD_IMM64(R0, 1), | ||
1972 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
1973 | BPF_ALU64_REG(BPF_ADD, R0, R1), | ||
1974 | BPF_EXIT_INSN(), | ||
1975 | }, | ||
1976 | INTERNAL, | ||
1977 | { }, | ||
1978 | { { 0, 3 } }, | ||
1979 | }, | ||
1980 | { | ||
1981 | "ALU64_ADD_X: 1 + 4294967294 = 4294967295", | ||
1982 | .u.insns_int = { | ||
1983 | BPF_LD_IMM64(R0, 1), | ||
1984 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967294), | ||
1985 | BPF_ALU64_REG(BPF_ADD, R0, R1), | ||
1986 | BPF_EXIT_INSN(), | ||
1987 | }, | ||
1988 | INTERNAL, | ||
1989 | { }, | ||
1990 | { { 0, 4294967295 } }, | ||
1991 | }, | ||
1992 | /* BPF_ALU | BPF_ADD | BPF_K */ | ||
1993 | { | ||
1994 | "ALU_ADD_K: 1 + 2 = 3", | ||
1995 | .u.insns_int = { | ||
1996 | BPF_LD_IMM64(R0, 1), | ||
1997 | BPF_ALU32_IMM(BPF_ADD, R0, 2), | ||
1998 | BPF_EXIT_INSN(), | ||
1999 | }, | ||
2000 | INTERNAL, | ||
2001 | { }, | ||
2002 | { { 0, 3 } }, | ||
2003 | }, | ||
2004 | { | ||
2005 | "ALU_ADD_K: 3 + 0 = 3", | ||
2006 | .u.insns_int = { | ||
2007 | BPF_LD_IMM64(R0, 3), | ||
2008 | BPF_ALU32_IMM(BPF_ADD, R0, 0), | ||
2009 | BPF_EXIT_INSN(), | ||
2010 | }, | ||
2011 | INTERNAL, | ||
2012 | { }, | ||
2013 | { { 0, 3 } }, | ||
2014 | }, | ||
2015 | { | ||
2016 | "ALU_ADD_K: 1 + 4294967294 = 4294967295", | ||
2017 | .u.insns_int = { | ||
2018 | BPF_LD_IMM64(R0, 1), | ||
2019 | BPF_ALU32_IMM(BPF_ADD, R0, 4294967294), | ||
2020 | BPF_EXIT_INSN(), | ||
2021 | }, | ||
2022 | INTERNAL, | ||
2023 | { }, | ||
2024 | { { 0, 4294967295 } }, | ||
2025 | }, | ||
2026 | { | ||
2027 | "ALU_ADD_K: 0 + (-1) = 0x00000000ffffffff", | ||
2028 | .u.insns_int = { | ||
2029 | BPF_LD_IMM64(R2, 0x0), | ||
2030 | BPF_LD_IMM64(R3, 0x00000000ffffffff), | ||
2031 | BPF_ALU32_IMM(BPF_ADD, R2, 0xffffffff), | ||
2032 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2033 | BPF_MOV32_IMM(R0, 2), | ||
2034 | BPF_EXIT_INSN(), | ||
2035 | BPF_MOV32_IMM(R0, 1), | ||
2036 | BPF_EXIT_INSN(), | ||
2037 | }, | ||
2038 | INTERNAL, | ||
2039 | { }, | ||
2040 | { { 0, 0x1 } }, | ||
2041 | }, | ||
2042 | { | ||
2043 | "ALU64_ADD_K: 1 + 2 = 3", | ||
2044 | .u.insns_int = { | ||
2045 | BPF_LD_IMM64(R0, 1), | ||
2046 | BPF_ALU64_IMM(BPF_ADD, R0, 2), | ||
2047 | BPF_EXIT_INSN(), | ||
2048 | }, | ||
2049 | INTERNAL, | ||
2050 | { }, | ||
2051 | { { 0, 3 } }, | ||
2052 | }, | ||
2053 | { | ||
2054 | "ALU64_ADD_K: 3 + 0 = 3", | ||
2055 | .u.insns_int = { | ||
2056 | BPF_LD_IMM64(R0, 3), | ||
2057 | BPF_ALU64_IMM(BPF_ADD, R0, 0), | ||
2058 | BPF_EXIT_INSN(), | ||
2059 | }, | ||
2060 | INTERNAL, | ||
2061 | { }, | ||
2062 | { { 0, 3 } }, | ||
2063 | }, | ||
2064 | { | ||
2065 | "ALU64_ADD_K: 1 + 2147483646 = 2147483647", | ||
2066 | .u.insns_int = { | ||
2067 | BPF_LD_IMM64(R0, 1), | ||
2068 | BPF_ALU64_IMM(BPF_ADD, R0, 2147483646), | ||
2069 | BPF_EXIT_INSN(), | ||
2070 | }, | ||
2071 | INTERNAL, | ||
2072 | { }, | ||
2073 | { { 0, 2147483647 } }, | ||
2074 | }, | ||
2075 | { | ||
2076 | "ALU64_ADD_K: 2147483646 + -2147483647 = -1", | ||
2077 | .u.insns_int = { | ||
2078 | BPF_LD_IMM64(R0, 2147483646), | ||
2079 | BPF_ALU64_IMM(BPF_ADD, R0, -2147483647), | ||
2080 | BPF_EXIT_INSN(), | ||
2081 | }, | ||
2082 | INTERNAL, | ||
2083 | { }, | ||
2084 | { { 0, -1 } }, | ||
2085 | }, | ||
2086 | { | ||
2087 | "ALU64_ADD_K: 1 + 0 = 1", | ||
2088 | .u.insns_int = { | ||
2089 | BPF_LD_IMM64(R2, 0x1), | ||
2090 | BPF_LD_IMM64(R3, 0x1), | ||
2091 | BPF_ALU64_IMM(BPF_ADD, R2, 0x0), | ||
2092 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2093 | BPF_MOV32_IMM(R0, 2), | ||
2094 | BPF_EXIT_INSN(), | ||
2095 | BPF_MOV32_IMM(R0, 1), | ||
2096 | BPF_EXIT_INSN(), | ||
2097 | }, | ||
2098 | INTERNAL, | ||
2099 | { }, | ||
2100 | { { 0, 0x1 } }, | ||
2101 | }, | ||
2102 | { | ||
2103 | "ALU64_ADD_K: 0 + (-1) = 0xffffffffffffffff", | ||
2104 | .u.insns_int = { | ||
2105 | BPF_LD_IMM64(R2, 0x0), | ||
2106 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
2107 | BPF_ALU64_IMM(BPF_ADD, R2, 0xffffffff), | ||
2108 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2109 | BPF_MOV32_IMM(R0, 2), | ||
2110 | BPF_EXIT_INSN(), | ||
2111 | BPF_MOV32_IMM(R0, 1), | ||
2112 | BPF_EXIT_INSN(), | ||
2113 | }, | ||
2114 | INTERNAL, | ||
2115 | { }, | ||
2116 | { { 0, 0x1 } }, | ||
2117 | }, | ||
2118 | /* BPF_ALU | BPF_SUB | BPF_X */ | ||
2119 | { | ||
2120 | "ALU_SUB_X: 3 - 1 = 2", | ||
2121 | .u.insns_int = { | ||
2122 | BPF_LD_IMM64(R0, 3), | ||
2123 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
2124 | BPF_ALU32_REG(BPF_SUB, R0, R1), | ||
2125 | BPF_EXIT_INSN(), | ||
2126 | }, | ||
2127 | INTERNAL, | ||
2128 | { }, | ||
2129 | { { 0, 2 } }, | ||
2130 | }, | ||
2131 | { | ||
2132 | "ALU_SUB_X: 4294967295 - 4294967294 = 1", | ||
2133 | .u.insns_int = { | ||
2134 | BPF_LD_IMM64(R0, 4294967295), | ||
2135 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967294), | ||
2136 | BPF_ALU32_REG(BPF_SUB, R0, R1), | ||
2137 | BPF_EXIT_INSN(), | ||
2138 | }, | ||
2139 | INTERNAL, | ||
2140 | { }, | ||
2141 | { { 0, 1 } }, | ||
2142 | }, | ||
2143 | { | ||
2144 | "ALU64_SUB_X: 3 - 1 = 2", | ||
2145 | .u.insns_int = { | ||
2146 | BPF_LD_IMM64(R0, 3), | ||
2147 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
2148 | BPF_ALU64_REG(BPF_SUB, R0, R1), | ||
2149 | BPF_EXIT_INSN(), | ||
2150 | }, | ||
2151 | INTERNAL, | ||
2152 | { }, | ||
2153 | { { 0, 2 } }, | ||
2154 | }, | ||
2155 | { | ||
2156 | "ALU64_SUB_X: 4294967295 - 4294967294 = 1", | ||
2157 | .u.insns_int = { | ||
2158 | BPF_LD_IMM64(R0, 4294967295), | ||
2159 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967294), | ||
2160 | BPF_ALU64_REG(BPF_SUB, R0, R1), | ||
2161 | BPF_EXIT_INSN(), | ||
2162 | }, | ||
2163 | INTERNAL, | ||
2164 | { }, | ||
2165 | { { 0, 1 } }, | ||
2166 | }, | ||
2167 | /* BPF_ALU | BPF_SUB | BPF_K */ | ||
2168 | { | ||
2169 | "ALU_SUB_K: 3 - 1 = 2", | ||
2170 | .u.insns_int = { | ||
2171 | BPF_LD_IMM64(R0, 3), | ||
2172 | BPF_ALU32_IMM(BPF_SUB, R0, 1), | ||
2173 | BPF_EXIT_INSN(), | ||
2174 | }, | ||
2175 | INTERNAL, | ||
2176 | { }, | ||
2177 | { { 0, 2 } }, | ||
2178 | }, | ||
2179 | { | ||
2180 | "ALU_SUB_K: 3 - 0 = 3", | ||
2181 | .u.insns_int = { | ||
2182 | BPF_LD_IMM64(R0, 3), | ||
2183 | BPF_ALU32_IMM(BPF_SUB, R0, 0), | ||
2184 | BPF_EXIT_INSN(), | ||
2185 | }, | ||
2186 | INTERNAL, | ||
2187 | { }, | ||
2188 | { { 0, 3 } }, | ||
2189 | }, | ||
2190 | { | ||
2191 | "ALU_SUB_K: 4294967295 - 4294967294 = 1", | ||
2192 | .u.insns_int = { | ||
2193 | BPF_LD_IMM64(R0, 4294967295), | ||
2194 | BPF_ALU32_IMM(BPF_SUB, R0, 4294967294), | ||
2195 | BPF_EXIT_INSN(), | ||
2196 | }, | ||
2197 | INTERNAL, | ||
2198 | { }, | ||
2199 | { { 0, 1 } }, | ||
2200 | }, | ||
2201 | { | ||
2202 | "ALU64_SUB_K: 3 - 1 = 2", | ||
2203 | .u.insns_int = { | ||
2204 | BPF_LD_IMM64(R0, 3), | ||
2205 | BPF_ALU64_IMM(BPF_SUB, R0, 1), | ||
2206 | BPF_EXIT_INSN(), | ||
2207 | }, | ||
2208 | INTERNAL, | ||
2209 | { }, | ||
2210 | { { 0, 2 } }, | ||
2211 | }, | ||
2212 | { | ||
2213 | "ALU64_SUB_K: 3 - 0 = 3", | ||
2214 | .u.insns_int = { | ||
2215 | BPF_LD_IMM64(R0, 3), | ||
2216 | BPF_ALU64_IMM(BPF_SUB, R0, 0), | ||
2217 | BPF_EXIT_INSN(), | ||
2218 | }, | ||
2219 | INTERNAL, | ||
2220 | { }, | ||
2221 | { { 0, 3 } }, | ||
2222 | }, | ||
2223 | { | ||
2224 | "ALU64_SUB_K: 4294967294 - 4294967295 = -1", | ||
2225 | .u.insns_int = { | ||
2226 | BPF_LD_IMM64(R0, 4294967294), | ||
2227 | BPF_ALU64_IMM(BPF_SUB, R0, 4294967295), | ||
2228 | BPF_EXIT_INSN(), | ||
2229 | }, | ||
2230 | INTERNAL, | ||
2231 | { }, | ||
2232 | { { 0, -1 } }, | ||
2233 | }, | ||
2234 | { | ||
2235 | "ALU64_ADD_K: 2147483646 - 2147483647 = -1", | ||
2236 | .u.insns_int = { | ||
2237 | BPF_LD_IMM64(R0, 2147483646), | ||
2238 | BPF_ALU64_IMM(BPF_SUB, R0, 2147483647), | ||
2239 | BPF_EXIT_INSN(), | ||
2240 | }, | ||
2241 | INTERNAL, | ||
2242 | { }, | ||
2243 | { { 0, -1 } }, | ||
2244 | }, | ||
2245 | /* BPF_ALU | BPF_MUL | BPF_X */ | ||
2246 | { | ||
2247 | "ALU_MUL_X: 2 * 3 = 6", | ||
2248 | .u.insns_int = { | ||
2249 | BPF_LD_IMM64(R0, 2), | ||
2250 | BPF_ALU32_IMM(BPF_MOV, R1, 3), | ||
2251 | BPF_ALU32_REG(BPF_MUL, R0, R1), | ||
2252 | BPF_EXIT_INSN(), | ||
2253 | }, | ||
2254 | INTERNAL, | ||
2255 | { }, | ||
2256 | { { 0, 6 } }, | ||
2257 | }, | ||
2258 | { | ||
2259 | "ALU_MUL_X: 2 * 0x7FFFFFF8 = 0xFFFFFFF0", | ||
2260 | .u.insns_int = { | ||
2261 | BPF_LD_IMM64(R0, 2), | ||
2262 | BPF_ALU32_IMM(BPF_MOV, R1, 0x7FFFFFF8), | ||
2263 | BPF_ALU32_REG(BPF_MUL, R0, R1), | ||
2264 | BPF_EXIT_INSN(), | ||
2265 | }, | ||
2266 | INTERNAL, | ||
2267 | { }, | ||
2268 | { { 0, 0xFFFFFFF0 } }, | ||
2269 | }, | ||
2270 | { | ||
2271 | "ALU_MUL_X: -1 * -1 = 1", | ||
2272 | .u.insns_int = { | ||
2273 | BPF_LD_IMM64(R0, -1), | ||
2274 | BPF_ALU32_IMM(BPF_MOV, R1, -1), | ||
2275 | BPF_ALU32_REG(BPF_MUL, R0, R1), | ||
2276 | BPF_EXIT_INSN(), | ||
2277 | }, | ||
2278 | INTERNAL, | ||
2279 | { }, | ||
2280 | { { 0, 1 } }, | ||
2281 | }, | ||
2282 | { | ||
2283 | "ALU64_MUL_X: 2 * 3 = 6", | ||
2284 | .u.insns_int = { | ||
2285 | BPF_LD_IMM64(R0, 2), | ||
2286 | BPF_ALU32_IMM(BPF_MOV, R1, 3), | ||
2287 | BPF_ALU64_REG(BPF_MUL, R0, R1), | ||
2288 | BPF_EXIT_INSN(), | ||
2289 | }, | ||
2290 | INTERNAL, | ||
2291 | { }, | ||
2292 | { { 0, 6 } }, | ||
2293 | }, | ||
2294 | { | ||
2295 | "ALU64_MUL_X: 1 * 2147483647 = 2147483647", | ||
2296 | .u.insns_int = { | ||
2297 | BPF_LD_IMM64(R0, 1), | ||
2298 | BPF_ALU32_IMM(BPF_MOV, R1, 2147483647), | ||
2299 | BPF_ALU64_REG(BPF_MUL, R0, R1), | ||
2300 | BPF_EXIT_INSN(), | ||
2301 | }, | ||
2302 | INTERNAL, | ||
2303 | { }, | ||
2304 | { { 0, 2147483647 } }, | ||
2305 | }, | ||
2306 | /* BPF_ALU | BPF_MUL | BPF_K */ | ||
2307 | { | ||
2308 | "ALU_MUL_K: 2 * 3 = 6", | ||
2309 | .u.insns_int = { | ||
2310 | BPF_LD_IMM64(R0, 2), | ||
2311 | BPF_ALU32_IMM(BPF_MUL, R0, 3), | ||
2312 | BPF_EXIT_INSN(), | ||
2313 | }, | ||
2314 | INTERNAL, | ||
2315 | { }, | ||
2316 | { { 0, 6 } }, | ||
2317 | }, | ||
2318 | { | ||
2319 | "ALU_MUL_K: 3 * 1 = 3", | ||
2320 | .u.insns_int = { | ||
2321 | BPF_LD_IMM64(R0, 3), | ||
2322 | BPF_ALU32_IMM(BPF_MUL, R0, 1), | ||
2323 | BPF_EXIT_INSN(), | ||
2324 | }, | ||
2325 | INTERNAL, | ||
2326 | { }, | ||
2327 | { { 0, 3 } }, | ||
2328 | }, | ||
2329 | { | ||
2330 | "ALU_MUL_K: 2 * 0x7FFFFFF8 = 0xFFFFFFF0", | ||
2331 | .u.insns_int = { | ||
2332 | BPF_LD_IMM64(R0, 2), | ||
2333 | BPF_ALU32_IMM(BPF_MUL, R0, 0x7FFFFFF8), | ||
2334 | BPF_EXIT_INSN(), | ||
2335 | }, | ||
2336 | INTERNAL, | ||
2337 | { }, | ||
2338 | { { 0, 0xFFFFFFF0 } }, | ||
2339 | }, | ||
2340 | { | ||
2341 | "ALU_MUL_K: 1 * (-1) = 0x00000000ffffffff", | ||
2342 | .u.insns_int = { | ||
2343 | BPF_LD_IMM64(R2, 0x1), | ||
2344 | BPF_LD_IMM64(R3, 0x00000000ffffffff), | ||
2345 | BPF_ALU32_IMM(BPF_MUL, R2, 0xffffffff), | ||
2346 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2347 | BPF_MOV32_IMM(R0, 2), | ||
2348 | BPF_EXIT_INSN(), | ||
2349 | BPF_MOV32_IMM(R0, 1), | ||
2350 | BPF_EXIT_INSN(), | ||
2351 | }, | ||
2352 | INTERNAL, | ||
2353 | { }, | ||
2354 | { { 0, 0x1 } }, | ||
2355 | }, | ||
2356 | { | ||
2357 | "ALU64_MUL_K: 2 * 3 = 6", | ||
2358 | .u.insns_int = { | ||
2359 | BPF_LD_IMM64(R0, 2), | ||
2360 | BPF_ALU64_IMM(BPF_MUL, R0, 3), | ||
2361 | BPF_EXIT_INSN(), | ||
2362 | }, | ||
2363 | INTERNAL, | ||
2364 | { }, | ||
2365 | { { 0, 6 } }, | ||
2366 | }, | ||
2367 | { | ||
2368 | "ALU64_MUL_K: 3 * 1 = 3", | ||
2369 | .u.insns_int = { | ||
2370 | BPF_LD_IMM64(R0, 3), | ||
2371 | BPF_ALU64_IMM(BPF_MUL, R0, 1), | ||
2372 | BPF_EXIT_INSN(), | ||
2373 | }, | ||
2374 | INTERNAL, | ||
2375 | { }, | ||
2376 | { { 0, 3 } }, | ||
2377 | }, | ||
2378 | { | ||
2379 | "ALU64_MUL_K: 1 * 2147483647 = 2147483647", | ||
2380 | .u.insns_int = { | ||
2381 | BPF_LD_IMM64(R0, 1), | ||
2382 | BPF_ALU64_IMM(BPF_MUL, R0, 2147483647), | ||
2383 | BPF_EXIT_INSN(), | ||
2384 | }, | ||
2385 | INTERNAL, | ||
2386 | { }, | ||
2387 | { { 0, 2147483647 } }, | ||
2388 | }, | ||
2389 | { | ||
2390 | "ALU64_MUL_K: 1 * -2147483647 = -2147483647", | ||
2391 | .u.insns_int = { | ||
2392 | BPF_LD_IMM64(R0, 1), | ||
2393 | BPF_ALU64_IMM(BPF_MUL, R0, -2147483647), | ||
2394 | BPF_EXIT_INSN(), | ||
2395 | }, | ||
2396 | INTERNAL, | ||
2397 | { }, | ||
2398 | { { 0, -2147483647 } }, | ||
2399 | }, | ||
2400 | { | ||
2401 | "ALU64_MUL_K: 1 * (-1) = 0xffffffffffffffff", | ||
2402 | .u.insns_int = { | ||
2403 | BPF_LD_IMM64(R2, 0x1), | ||
2404 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
2405 | BPF_ALU64_IMM(BPF_MUL, R2, 0xffffffff), | ||
2406 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2407 | BPF_MOV32_IMM(R0, 2), | ||
2408 | BPF_EXIT_INSN(), | ||
2409 | BPF_MOV32_IMM(R0, 1), | ||
2410 | BPF_EXIT_INSN(), | ||
2411 | }, | ||
2412 | INTERNAL, | ||
2413 | { }, | ||
2414 | { { 0, 0x1 } }, | ||
2415 | }, | ||
2416 | /* BPF_ALU | BPF_DIV | BPF_X */ | ||
2417 | { | ||
2418 | "ALU_DIV_X: 6 / 2 = 3", | ||
2419 | .u.insns_int = { | ||
2420 | BPF_LD_IMM64(R0, 6), | ||
2421 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2422 | BPF_ALU32_REG(BPF_DIV, R0, R1), | ||
2423 | BPF_EXIT_INSN(), | ||
2424 | }, | ||
2425 | INTERNAL, | ||
2426 | { }, | ||
2427 | { { 0, 3 } }, | ||
2428 | }, | ||
2429 | { | ||
2430 | "ALU_DIV_X: 4294967295 / 4294967295 = 1", | ||
2431 | .u.insns_int = { | ||
2432 | BPF_LD_IMM64(R0, 4294967295), | ||
2433 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967295), | ||
2434 | BPF_ALU32_REG(BPF_DIV, R0, R1), | ||
2435 | BPF_EXIT_INSN(), | ||
2436 | }, | ||
2437 | INTERNAL, | ||
2438 | { }, | ||
2439 | { { 0, 1 } }, | ||
2440 | }, | ||
2441 | { | ||
2442 | "ALU64_DIV_X: 6 / 2 = 3", | ||
2443 | .u.insns_int = { | ||
2444 | BPF_LD_IMM64(R0, 6), | ||
2445 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2446 | BPF_ALU64_REG(BPF_DIV, R0, R1), | ||
2447 | BPF_EXIT_INSN(), | ||
2448 | }, | ||
2449 | INTERNAL, | ||
2450 | { }, | ||
2451 | { { 0, 3 } }, | ||
2452 | }, | ||
2453 | { | ||
2454 | "ALU64_DIV_X: 2147483647 / 2147483647 = 1", | ||
2455 | .u.insns_int = { | ||
2456 | BPF_LD_IMM64(R0, 2147483647), | ||
2457 | BPF_ALU32_IMM(BPF_MOV, R1, 2147483647), | ||
2458 | BPF_ALU64_REG(BPF_DIV, R0, R1), | ||
2459 | BPF_EXIT_INSN(), | ||
2460 | }, | ||
2461 | INTERNAL, | ||
2462 | { }, | ||
2463 | { { 0, 1 } }, | ||
2464 | }, | ||
2465 | { | ||
2466 | "ALU64_DIV_X: 0xffffffffffffffff / (-1) = 0x0000000000000001", | ||
2467 | .u.insns_int = { | ||
2468 | BPF_LD_IMM64(R2, 0xffffffffffffffffUL), | ||
2469 | BPF_LD_IMM64(R4, 0xffffffffffffffffUL), | ||
2470 | BPF_LD_IMM64(R3, 0x0000000000000001UL), | ||
2471 | BPF_ALU64_REG(BPF_DIV, R2, R4), | ||
2472 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2473 | BPF_MOV32_IMM(R0, 2), | ||
2474 | BPF_EXIT_INSN(), | ||
2475 | BPF_MOV32_IMM(R0, 1), | ||
2476 | BPF_EXIT_INSN(), | ||
2477 | }, | ||
2478 | INTERNAL, | ||
2479 | { }, | ||
2480 | { { 0, 0x1 } }, | ||
2481 | }, | ||
2482 | /* BPF_ALU | BPF_DIV | BPF_K */ | ||
2483 | { | ||
2484 | "ALU_DIV_K: 6 / 2 = 3", | ||
2485 | .u.insns_int = { | ||
2486 | BPF_LD_IMM64(R0, 6), | ||
2487 | BPF_ALU32_IMM(BPF_DIV, R0, 2), | ||
2488 | BPF_EXIT_INSN(), | ||
2489 | }, | ||
2490 | INTERNAL, | ||
2491 | { }, | ||
2492 | { { 0, 3 } }, | ||
2493 | }, | ||
2494 | { | ||
2495 | "ALU_DIV_K: 3 / 1 = 3", | ||
2496 | .u.insns_int = { | ||
2497 | BPF_LD_IMM64(R0, 3), | ||
2498 | BPF_ALU32_IMM(BPF_DIV, R0, 1), | ||
2499 | BPF_EXIT_INSN(), | ||
2500 | }, | ||
2501 | INTERNAL, | ||
2502 | { }, | ||
2503 | { { 0, 3 } }, | ||
2504 | }, | ||
2505 | { | ||
2506 | "ALU_DIV_K: 4294967295 / 4294967295 = 1", | ||
2507 | .u.insns_int = { | ||
2508 | BPF_LD_IMM64(R0, 4294967295), | ||
2509 | BPF_ALU32_IMM(BPF_DIV, R0, 4294967295), | ||
2510 | BPF_EXIT_INSN(), | ||
2511 | }, | ||
2512 | INTERNAL, | ||
2513 | { }, | ||
2514 | { { 0, 1 } }, | ||
2515 | }, | ||
2516 | { | ||
2517 | "ALU_DIV_K: 0xffffffffffffffff / (-1) = 0x1", | ||
2518 | .u.insns_int = { | ||
2519 | BPF_LD_IMM64(R2, 0xffffffffffffffffUL), | ||
2520 | BPF_LD_IMM64(R3, 0x1UL), | ||
2521 | BPF_ALU32_IMM(BPF_DIV, R2, 0xffffffff), | ||
2522 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2523 | BPF_MOV32_IMM(R0, 2), | ||
2524 | BPF_EXIT_INSN(), | ||
2525 | BPF_MOV32_IMM(R0, 1), | ||
2526 | BPF_EXIT_INSN(), | ||
2527 | }, | ||
2528 | INTERNAL, | ||
2529 | { }, | ||
2530 | { { 0, 0x1 } }, | ||
2531 | }, | ||
2532 | { | ||
2533 | "ALU64_DIV_K: 6 / 2 = 3", | ||
2534 | .u.insns_int = { | ||
2535 | BPF_LD_IMM64(R0, 6), | ||
2536 | BPF_ALU64_IMM(BPF_DIV, R0, 2), | ||
2537 | BPF_EXIT_INSN(), | ||
2538 | }, | ||
2539 | INTERNAL, | ||
2540 | { }, | ||
2541 | { { 0, 3 } }, | ||
2542 | }, | ||
2543 | { | ||
2544 | "ALU64_DIV_K: 3 / 1 = 3", | ||
2545 | .u.insns_int = { | ||
2546 | BPF_LD_IMM64(R0, 3), | ||
2547 | BPF_ALU64_IMM(BPF_DIV, R0, 1), | ||
2548 | BPF_EXIT_INSN(), | ||
2549 | }, | ||
2550 | INTERNAL, | ||
2551 | { }, | ||
2552 | { { 0, 3 } }, | ||
2553 | }, | ||
2554 | { | ||
2555 | "ALU64_DIV_K: 2147483647 / 2147483647 = 1", | ||
2556 | .u.insns_int = { | ||
2557 | BPF_LD_IMM64(R0, 2147483647), | ||
2558 | BPF_ALU64_IMM(BPF_DIV, R0, 2147483647), | ||
2559 | BPF_EXIT_INSN(), | ||
2560 | }, | ||
2561 | INTERNAL, | ||
2562 | { }, | ||
2563 | { { 0, 1 } }, | ||
2564 | }, | ||
2565 | { | ||
2566 | "ALU64_DIV_K: 0xffffffffffffffff / (-1) = 0x0000000000000001", | ||
2567 | .u.insns_int = { | ||
2568 | BPF_LD_IMM64(R2, 0xffffffffffffffffUL), | ||
2569 | BPF_LD_IMM64(R3, 0x0000000000000001UL), | ||
2570 | BPF_ALU64_IMM(BPF_DIV, R2, 0xffffffff), | ||
2571 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2572 | BPF_MOV32_IMM(R0, 2), | ||
2573 | BPF_EXIT_INSN(), | ||
2574 | BPF_MOV32_IMM(R0, 1), | ||
2575 | BPF_EXIT_INSN(), | ||
2576 | }, | ||
2577 | INTERNAL, | ||
2578 | { }, | ||
2579 | { { 0, 0x1 } }, | ||
2580 | }, | ||
2581 | /* BPF_ALU | BPF_MOD | BPF_X */ | ||
2582 | { | ||
2583 | "ALU_MOD_X: 3 % 2 = 1", | ||
2584 | .u.insns_int = { | ||
2585 | BPF_LD_IMM64(R0, 3), | ||
2586 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2587 | BPF_ALU32_REG(BPF_MOD, R0, R1), | ||
2588 | BPF_EXIT_INSN(), | ||
2589 | }, | ||
2590 | INTERNAL, | ||
2591 | { }, | ||
2592 | { { 0, 1 } }, | ||
2593 | }, | ||
2594 | { | ||
2595 | "ALU_MOD_X: 4294967295 % 4294967293 = 2", | ||
2596 | .u.insns_int = { | ||
2597 | BPF_LD_IMM64(R0, 4294967295), | ||
2598 | BPF_ALU32_IMM(BPF_MOV, R1, 4294967293), | ||
2599 | BPF_ALU32_REG(BPF_MOD, R0, R1), | ||
2600 | BPF_EXIT_INSN(), | ||
2601 | }, | ||
2602 | INTERNAL, | ||
2603 | { }, | ||
2604 | { { 0, 2 } }, | ||
2605 | }, | ||
2606 | { | ||
2607 | "ALU64_MOD_X: 3 % 2 = 1", | ||
2608 | .u.insns_int = { | ||
2609 | BPF_LD_IMM64(R0, 3), | ||
2610 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2611 | BPF_ALU64_REG(BPF_MOD, R0, R1), | ||
2612 | BPF_EXIT_INSN(), | ||
2613 | }, | ||
2614 | INTERNAL, | ||
2615 | { }, | ||
2616 | { { 0, 1 } }, | ||
2617 | }, | ||
2618 | { | ||
2619 | "ALU64_MOD_X: 2147483647 % 2147483645 = 2", | ||
2620 | .u.insns_int = { | ||
2621 | BPF_LD_IMM64(R0, 2147483647), | ||
2622 | BPF_ALU32_IMM(BPF_MOV, R1, 2147483645), | ||
2623 | BPF_ALU64_REG(BPF_MOD, R0, R1), | ||
2624 | BPF_EXIT_INSN(), | ||
2625 | }, | ||
2626 | INTERNAL, | ||
2627 | { }, | ||
2628 | { { 0, 2 } }, | ||
2629 | }, | ||
2630 | /* BPF_ALU | BPF_MOD | BPF_K */ | ||
2631 | { | ||
2632 | "ALU_MOD_K: 3 % 2 = 1", | ||
2633 | .u.insns_int = { | ||
2634 | BPF_LD_IMM64(R0, 3), | ||
2635 | BPF_ALU32_IMM(BPF_MOD, R0, 2), | ||
2636 | BPF_EXIT_INSN(), | ||
2637 | }, | ||
2638 | INTERNAL, | ||
2639 | { }, | ||
2640 | { { 0, 1 } }, | ||
2641 | }, | ||
2642 | { | ||
2643 | "ALU_MOD_K: 3 % 1 = 0", | ||
2644 | .u.insns_int = { | ||
2645 | BPF_LD_IMM64(R0, 3), | ||
2646 | BPF_ALU32_IMM(BPF_MOD, R0, 1), | ||
2647 | BPF_EXIT_INSN(), | ||
2648 | }, | ||
2649 | INTERNAL, | ||
2650 | { }, | ||
2651 | { { 0, 0 } }, | ||
2652 | }, | ||
2653 | { | ||
2654 | "ALU_MOD_K: 4294967295 % 4294967293 = 2", | ||
2655 | .u.insns_int = { | ||
2656 | BPF_LD_IMM64(R0, 4294967295), | ||
2657 | BPF_ALU32_IMM(BPF_MOD, R0, 4294967293), | ||
2658 | BPF_EXIT_INSN(), | ||
2659 | }, | ||
2660 | INTERNAL, | ||
2661 | { }, | ||
2662 | { { 0, 2 } }, | ||
2663 | }, | ||
2664 | { | ||
2665 | "ALU64_MOD_K: 3 % 2 = 1", | ||
2666 | .u.insns_int = { | ||
2667 | BPF_LD_IMM64(R0, 3), | ||
2668 | BPF_ALU64_IMM(BPF_MOD, R0, 2), | ||
2669 | BPF_EXIT_INSN(), | ||
2670 | }, | ||
2671 | INTERNAL, | ||
2672 | { }, | ||
2673 | { { 0, 1 } }, | ||
2674 | }, | ||
2675 | { | ||
2676 | "ALU64_MOD_K: 3 % 1 = 0", | ||
2677 | .u.insns_int = { | ||
2678 | BPF_LD_IMM64(R0, 3), | ||
2679 | BPF_ALU64_IMM(BPF_MOD, R0, 1), | ||
2680 | BPF_EXIT_INSN(), | ||
2681 | }, | ||
2682 | INTERNAL, | ||
2683 | { }, | ||
2684 | { { 0, 0 } }, | ||
2685 | }, | ||
2686 | { | ||
2687 | "ALU64_MOD_K: 2147483647 % 2147483645 = 2", | ||
2688 | .u.insns_int = { | ||
2689 | BPF_LD_IMM64(R0, 2147483647), | ||
2690 | BPF_ALU64_IMM(BPF_MOD, R0, 2147483645), | ||
2691 | BPF_EXIT_INSN(), | ||
2692 | }, | ||
2693 | INTERNAL, | ||
2694 | { }, | ||
2695 | { { 0, 2 } }, | ||
2696 | }, | ||
2697 | /* BPF_ALU | BPF_AND | BPF_X */ | ||
2698 | { | ||
2699 | "ALU_AND_X: 3 & 2 = 2", | ||
2700 | .u.insns_int = { | ||
2701 | BPF_LD_IMM64(R0, 3), | ||
2702 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2703 | BPF_ALU32_REG(BPF_AND, R0, R1), | ||
2704 | BPF_EXIT_INSN(), | ||
2705 | }, | ||
2706 | INTERNAL, | ||
2707 | { }, | ||
2708 | { { 0, 2 } }, | ||
2709 | }, | ||
2710 | { | ||
2711 | "ALU_AND_X: 0xffffffff & 0xffffffff = 0xffffffff", | ||
2712 | .u.insns_int = { | ||
2713 | BPF_LD_IMM64(R0, 0xffffffff), | ||
2714 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
2715 | BPF_ALU32_REG(BPF_AND, R0, R1), | ||
2716 | BPF_EXIT_INSN(), | ||
2717 | }, | ||
2718 | INTERNAL, | ||
2719 | { }, | ||
2720 | { { 0, 0xffffffff } }, | ||
2721 | }, | ||
2722 | { | ||
2723 | "ALU64_AND_X: 3 & 2 = 2", | ||
2724 | .u.insns_int = { | ||
2725 | BPF_LD_IMM64(R0, 3), | ||
2726 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2727 | BPF_ALU64_REG(BPF_AND, R0, R1), | ||
2728 | BPF_EXIT_INSN(), | ||
2729 | }, | ||
2730 | INTERNAL, | ||
2731 | { }, | ||
2732 | { { 0, 2 } }, | ||
2733 | }, | ||
2734 | { | ||
2735 | "ALU64_AND_X: 0xffffffff & 0xffffffff = 0xffffffff", | ||
2736 | .u.insns_int = { | ||
2737 | BPF_LD_IMM64(R0, 0xffffffff), | ||
2738 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
2739 | BPF_ALU64_REG(BPF_AND, R0, R1), | ||
2740 | BPF_EXIT_INSN(), | ||
2741 | }, | ||
2742 | INTERNAL, | ||
2743 | { }, | ||
2744 | { { 0, 0xffffffff } }, | ||
2745 | }, | ||
2746 | /* BPF_ALU | BPF_AND | BPF_K */ | ||
2747 | { | ||
2748 | "ALU_AND_K: 3 & 2 = 2", | ||
2749 | .u.insns_int = { | ||
2750 | BPF_LD_IMM64(R0, 3), | ||
2751 | BPF_ALU32_IMM(BPF_AND, R0, 2), | ||
2752 | BPF_EXIT_INSN(), | ||
2753 | }, | ||
2754 | INTERNAL, | ||
2755 | { }, | ||
2756 | { { 0, 2 } }, | ||
2757 | }, | ||
2758 | { | ||
2759 | "ALU_AND_K: 0xffffffff & 0xffffffff = 0xffffffff", | ||
2760 | .u.insns_int = { | ||
2761 | BPF_LD_IMM64(R0, 0xffffffff), | ||
2762 | BPF_ALU32_IMM(BPF_AND, R0, 0xffffffff), | ||
2763 | BPF_EXIT_INSN(), | ||
2764 | }, | ||
2765 | INTERNAL, | ||
2766 | { }, | ||
2767 | { { 0, 0xffffffff } }, | ||
2768 | }, | ||
2769 | { | ||
2770 | "ALU64_AND_K: 3 & 2 = 2", | ||
2771 | .u.insns_int = { | ||
2772 | BPF_LD_IMM64(R0, 3), | ||
2773 | BPF_ALU64_IMM(BPF_AND, R0, 2), | ||
2774 | BPF_EXIT_INSN(), | ||
2775 | }, | ||
2776 | INTERNAL, | ||
2777 | { }, | ||
2778 | { { 0, 2 } }, | ||
2779 | }, | ||
2780 | { | ||
2781 | "ALU64_AND_K: 0xffffffff & 0xffffffff = 0xffffffff", | ||
2782 | .u.insns_int = { | ||
2783 | BPF_LD_IMM64(R0, 0xffffffff), | ||
2784 | BPF_ALU64_IMM(BPF_AND, R0, 0xffffffff), | ||
2785 | BPF_EXIT_INSN(), | ||
2786 | }, | ||
2787 | INTERNAL, | ||
2788 | { }, | ||
2789 | { { 0, 0xffffffff } }, | ||
2790 | }, | ||
2791 | { | ||
2792 | "ALU64_AND_K: 0x0000ffffffff0000 & 0x0 = 0x0000ffff00000000", | ||
2793 | .u.insns_int = { | ||
2794 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
2795 | BPF_LD_IMM64(R3, 0x0000000000000000), | ||
2796 | BPF_ALU64_IMM(BPF_AND, R2, 0x0), | ||
2797 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2798 | BPF_MOV32_IMM(R0, 2), | ||
2799 | BPF_EXIT_INSN(), | ||
2800 | BPF_MOV32_IMM(R0, 1), | ||
2801 | BPF_EXIT_INSN(), | ||
2802 | }, | ||
2803 | INTERNAL, | ||
2804 | { }, | ||
2805 | { { 0, 0x1 } }, | ||
2806 | }, | ||
2807 | { | ||
2808 | "ALU64_AND_K: 0x0000ffffffff0000 & -1 = 0x0000ffffffffffff", | ||
2809 | .u.insns_int = { | ||
2810 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
2811 | BPF_LD_IMM64(R3, 0x0000ffffffff0000), | ||
2812 | BPF_ALU64_IMM(BPF_AND, R2, 0xffffffff), | ||
2813 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2814 | BPF_MOV32_IMM(R0, 2), | ||
2815 | BPF_EXIT_INSN(), | ||
2816 | BPF_MOV32_IMM(R0, 1), | ||
2817 | BPF_EXIT_INSN(), | ||
2818 | }, | ||
2819 | INTERNAL, | ||
2820 | { }, | ||
2821 | { { 0, 0x1 } }, | ||
2822 | }, | ||
2823 | { | ||
2824 | "ALU64_AND_K: 0xffffffffffffffff & -1 = 0xffffffffffffffff", | ||
2825 | .u.insns_int = { | ||
2826 | BPF_LD_IMM64(R2, 0xffffffffffffffff), | ||
2827 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
2828 | BPF_ALU64_IMM(BPF_AND, R2, 0xffffffff), | ||
2829 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2830 | BPF_MOV32_IMM(R0, 2), | ||
2831 | BPF_EXIT_INSN(), | ||
2832 | BPF_MOV32_IMM(R0, 1), | ||
2833 | BPF_EXIT_INSN(), | ||
2834 | }, | ||
2835 | INTERNAL, | ||
2836 | { }, | ||
2837 | { { 0, 0x1 } }, | ||
2838 | }, | ||
2839 | /* BPF_ALU | BPF_OR | BPF_X */ | ||
2840 | { | ||
2841 | "ALU_OR_X: 1 | 2 = 3", | ||
2842 | .u.insns_int = { | ||
2843 | BPF_LD_IMM64(R0, 1), | ||
2844 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2845 | BPF_ALU32_REG(BPF_OR, R0, R1), | ||
2846 | BPF_EXIT_INSN(), | ||
2847 | }, | ||
2848 | INTERNAL, | ||
2849 | { }, | ||
2850 | { { 0, 3 } }, | ||
2851 | }, | ||
2852 | { | ||
2853 | "ALU_OR_X: 0x0 | 0xffffffff = 0xffffffff", | ||
2854 | .u.insns_int = { | ||
2855 | BPF_LD_IMM64(R0, 0), | ||
2856 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
2857 | BPF_ALU32_REG(BPF_OR, R0, R1), | ||
2858 | BPF_EXIT_INSN(), | ||
2859 | }, | ||
2860 | INTERNAL, | ||
2861 | { }, | ||
2862 | { { 0, 0xffffffff } }, | ||
2863 | }, | ||
2864 | { | ||
2865 | "ALU64_OR_X: 1 | 2 = 3", | ||
2866 | .u.insns_int = { | ||
2867 | BPF_LD_IMM64(R0, 1), | ||
2868 | BPF_ALU32_IMM(BPF_MOV, R1, 2), | ||
2869 | BPF_ALU64_REG(BPF_OR, R0, R1), | ||
2870 | BPF_EXIT_INSN(), | ||
2871 | }, | ||
2872 | INTERNAL, | ||
2873 | { }, | ||
2874 | { { 0, 3 } }, | ||
2875 | }, | ||
2876 | { | ||
2877 | "ALU64_OR_X: 0 | 0xffffffff = 0xffffffff", | ||
2878 | .u.insns_int = { | ||
2879 | BPF_LD_IMM64(R0, 0), | ||
2880 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
2881 | BPF_ALU64_REG(BPF_OR, R0, R1), | ||
2882 | BPF_EXIT_INSN(), | ||
2883 | }, | ||
2884 | INTERNAL, | ||
2885 | { }, | ||
2886 | { { 0, 0xffffffff } }, | ||
2887 | }, | ||
2888 | /* BPF_ALU | BPF_OR | BPF_K */ | ||
2889 | { | ||
2890 | "ALU_OR_K: 1 | 2 = 3", | ||
2891 | .u.insns_int = { | ||
2892 | BPF_LD_IMM64(R0, 1), | ||
2893 | BPF_ALU32_IMM(BPF_OR, R0, 2), | ||
2894 | BPF_EXIT_INSN(), | ||
2895 | }, | ||
2896 | INTERNAL, | ||
2897 | { }, | ||
2898 | { { 0, 3 } }, | ||
2899 | }, | ||
2900 | { | ||
2901 | "ALU_OR_K: 0 & 0xffffffff = 0xffffffff", | ||
2902 | .u.insns_int = { | ||
2903 | BPF_LD_IMM64(R0, 0), | ||
2904 | BPF_ALU32_IMM(BPF_OR, R0, 0xffffffff), | ||
2905 | BPF_EXIT_INSN(), | ||
2906 | }, | ||
2907 | INTERNAL, | ||
2908 | { }, | ||
2909 | { { 0, 0xffffffff } }, | ||
2910 | }, | ||
2911 | { | ||
2912 | "ALU64_OR_K: 1 | 2 = 3", | ||
2913 | .u.insns_int = { | ||
2914 | BPF_LD_IMM64(R0, 1), | ||
2915 | BPF_ALU64_IMM(BPF_OR, R0, 2), | ||
2916 | BPF_EXIT_INSN(), | ||
2917 | }, | ||
2918 | INTERNAL, | ||
2919 | { }, | ||
2920 | { { 0, 3 } }, | ||
2921 | }, | ||
2922 | { | ||
2923 | "ALU64_OR_K: 0 & 0xffffffff = 0xffffffff", | ||
2924 | .u.insns_int = { | ||
2925 | BPF_LD_IMM64(R0, 0), | ||
2926 | BPF_ALU64_IMM(BPF_OR, R0, 0xffffffff), | ||
2927 | BPF_EXIT_INSN(), | ||
2928 | }, | ||
2929 | INTERNAL, | ||
2930 | { }, | ||
2931 | { { 0, 0xffffffff } }, | ||
2932 | }, | ||
2933 | { | ||
2934 | "ALU64_OR_K: 0x0000ffffffff0000 | 0x0 = 0x0000ffff00000000", | ||
2935 | .u.insns_int = { | ||
2936 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
2937 | BPF_LD_IMM64(R3, 0x0000ffffffff0000), | ||
2938 | BPF_ALU64_IMM(BPF_OR, R2, 0x0), | ||
2939 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2940 | BPF_MOV32_IMM(R0, 2), | ||
2941 | BPF_EXIT_INSN(), | ||
2942 | BPF_MOV32_IMM(R0, 1), | ||
2943 | BPF_EXIT_INSN(), | ||
2944 | }, | ||
2945 | INTERNAL, | ||
2946 | { }, | ||
2947 | { { 0, 0x1 } }, | ||
2948 | }, | ||
2949 | { | ||
2950 | "ALU64_OR_K: 0x0000ffffffff0000 | -1 = 0xffffffffffffffff", | ||
2951 | .u.insns_int = { | ||
2952 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
2953 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
2954 | BPF_ALU64_IMM(BPF_OR, R2, 0xffffffff), | ||
2955 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2956 | BPF_MOV32_IMM(R0, 2), | ||
2957 | BPF_EXIT_INSN(), | ||
2958 | BPF_MOV32_IMM(R0, 1), | ||
2959 | BPF_EXIT_INSN(), | ||
2960 | }, | ||
2961 | INTERNAL, | ||
2962 | { }, | ||
2963 | { { 0, 0x1 } }, | ||
2964 | }, | ||
2965 | { | ||
2966 | "ALU64_OR_K: 0x000000000000000 | -1 = 0xffffffffffffffff", | ||
2967 | .u.insns_int = { | ||
2968 | BPF_LD_IMM64(R2, 0x0000000000000000), | ||
2969 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
2970 | BPF_ALU64_IMM(BPF_OR, R2, 0xffffffff), | ||
2971 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
2972 | BPF_MOV32_IMM(R0, 2), | ||
2973 | BPF_EXIT_INSN(), | ||
2974 | BPF_MOV32_IMM(R0, 1), | ||
2975 | BPF_EXIT_INSN(), | ||
2976 | }, | ||
2977 | INTERNAL, | ||
2978 | { }, | ||
2979 | { { 0, 0x1 } }, | ||
2980 | }, | ||
2981 | /* BPF_ALU | BPF_XOR | BPF_X */ | ||
2982 | { | ||
2983 | "ALU_XOR_X: 5 ^ 6 = 3", | ||
2984 | .u.insns_int = { | ||
2985 | BPF_LD_IMM64(R0, 5), | ||
2986 | BPF_ALU32_IMM(BPF_MOV, R1, 6), | ||
2987 | BPF_ALU32_REG(BPF_XOR, R0, R1), | ||
2988 | BPF_EXIT_INSN(), | ||
2989 | }, | ||
2990 | INTERNAL, | ||
2991 | { }, | ||
2992 | { { 0, 3 } }, | ||
2993 | }, | ||
2994 | { | ||
2995 | "ALU_XOR_X: 0x1 ^ 0xffffffff = 0xfffffffe", | ||
2996 | .u.insns_int = { | ||
2997 | BPF_LD_IMM64(R0, 1), | ||
2998 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
2999 | BPF_ALU32_REG(BPF_XOR, R0, R1), | ||
3000 | BPF_EXIT_INSN(), | ||
3001 | }, | ||
3002 | INTERNAL, | ||
3003 | { }, | ||
3004 | { { 0, 0xfffffffe } }, | ||
3005 | }, | ||
3006 | { | ||
3007 | "ALU64_XOR_X: 5 ^ 6 = 3", | ||
3008 | .u.insns_int = { | ||
3009 | BPF_LD_IMM64(R0, 5), | ||
3010 | BPF_ALU32_IMM(BPF_MOV, R1, 6), | ||
3011 | BPF_ALU64_REG(BPF_XOR, R0, R1), | ||
3012 | BPF_EXIT_INSN(), | ||
3013 | }, | ||
3014 | INTERNAL, | ||
3015 | { }, | ||
3016 | { { 0, 3 } }, | ||
3017 | }, | ||
3018 | { | ||
3019 | "ALU64_XOR_X: 1 ^ 0xffffffff = 0xfffffffe", | ||
3020 | .u.insns_int = { | ||
3021 | BPF_LD_IMM64(R0, 1), | ||
3022 | BPF_ALU32_IMM(BPF_MOV, R1, 0xffffffff), | ||
3023 | BPF_ALU64_REG(BPF_XOR, R0, R1), | ||
3024 | BPF_EXIT_INSN(), | ||
3025 | }, | ||
3026 | INTERNAL, | ||
3027 | { }, | ||
3028 | { { 0, 0xfffffffe } }, | ||
3029 | }, | ||
3030 | /* BPF_ALU | BPF_XOR | BPF_K */ | ||
3031 | { | ||
3032 | "ALU_XOR_K: 5 ^ 6 = 3", | ||
3033 | .u.insns_int = { | ||
3034 | BPF_LD_IMM64(R0, 5), | ||
3035 | BPF_ALU32_IMM(BPF_XOR, R0, 6), | ||
3036 | BPF_EXIT_INSN(), | ||
3037 | }, | ||
3038 | INTERNAL, | ||
3039 | { }, | ||
3040 | { { 0, 3 } }, | ||
3041 | }, | ||
3042 | { | ||
3043 | "ALU_XOR_K: 1 ^ 0xffffffff = 0xfffffffe", | ||
3044 | .u.insns_int = { | ||
3045 | BPF_LD_IMM64(R0, 1), | ||
3046 | BPF_ALU32_IMM(BPF_XOR, R0, 0xffffffff), | ||
3047 | BPF_EXIT_INSN(), | ||
3048 | }, | ||
3049 | INTERNAL, | ||
3050 | { }, | ||
3051 | { { 0, 0xfffffffe } }, | ||
3052 | }, | ||
3053 | { | ||
3054 | "ALU64_XOR_K: 5 ^ 6 = 3", | ||
3055 | .u.insns_int = { | ||
3056 | BPF_LD_IMM64(R0, 5), | ||
3057 | BPF_ALU64_IMM(BPF_XOR, R0, 6), | ||
3058 | BPF_EXIT_INSN(), | ||
3059 | }, | ||
3060 | INTERNAL, | ||
3061 | { }, | ||
3062 | { { 0, 3 } }, | ||
3063 | }, | ||
3064 | { | ||
3065 | "ALU64_XOR_K: 1 & 0xffffffff = 0xfffffffe", | ||
3066 | .u.insns_int = { | ||
3067 | BPF_LD_IMM64(R0, 1), | ||
3068 | BPF_ALU64_IMM(BPF_XOR, R0, 0xffffffff), | ||
3069 | BPF_EXIT_INSN(), | ||
3070 | }, | ||
3071 | INTERNAL, | ||
3072 | { }, | ||
3073 | { { 0, 0xfffffffe } }, | ||
3074 | }, | ||
3075 | { | ||
3076 | "ALU64_XOR_K: 0x0000ffffffff0000 ^ 0x0 = 0x0000ffffffff0000", | ||
3077 | .u.insns_int = { | ||
3078 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
3079 | BPF_LD_IMM64(R3, 0x0000ffffffff0000), | ||
3080 | BPF_ALU64_IMM(BPF_XOR, R2, 0x0), | ||
3081 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
3082 | BPF_MOV32_IMM(R0, 2), | ||
3083 | BPF_EXIT_INSN(), | ||
3084 | BPF_MOV32_IMM(R0, 1), | ||
3085 | BPF_EXIT_INSN(), | ||
3086 | }, | ||
3087 | INTERNAL, | ||
3088 | { }, | ||
3089 | { { 0, 0x1 } }, | ||
3090 | }, | ||
3091 | { | ||
3092 | "ALU64_XOR_K: 0x0000ffffffff0000 ^ -1 = 0xffff00000000ffff", | ||
3093 | .u.insns_int = { | ||
3094 | BPF_LD_IMM64(R2, 0x0000ffffffff0000), | ||
3095 | BPF_LD_IMM64(R3, 0xffff00000000ffff), | ||
3096 | BPF_ALU64_IMM(BPF_XOR, R2, 0xffffffff), | ||
3097 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
3098 | BPF_MOV32_IMM(R0, 2), | ||
3099 | BPF_EXIT_INSN(), | ||
3100 | BPF_MOV32_IMM(R0, 1), | ||
3101 | BPF_EXIT_INSN(), | ||
3102 | }, | ||
3103 | INTERNAL, | ||
3104 | { }, | ||
3105 | { { 0, 0x1 } }, | ||
3106 | }, | ||
3107 | { | ||
3108 | "ALU64_XOR_K: 0x000000000000000 ^ -1 = 0xffffffffffffffff", | ||
3109 | .u.insns_int = { | ||
3110 | BPF_LD_IMM64(R2, 0x0000000000000000), | ||
3111 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
3112 | BPF_ALU64_IMM(BPF_XOR, R2, 0xffffffff), | ||
3113 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
3114 | BPF_MOV32_IMM(R0, 2), | ||
3115 | BPF_EXIT_INSN(), | ||
3116 | BPF_MOV32_IMM(R0, 1), | ||
3117 | BPF_EXIT_INSN(), | ||
3118 | }, | ||
3119 | INTERNAL, | ||
3120 | { }, | ||
3121 | { { 0, 0x1 } }, | ||
3122 | }, | ||
3123 | /* BPF_ALU | BPF_LSH | BPF_X */ | ||
3124 | { | ||
3125 | "ALU_LSH_X: 1 << 1 = 2", | ||
3126 | .u.insns_int = { | ||
3127 | BPF_LD_IMM64(R0, 1), | ||
3128 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
3129 | BPF_ALU32_REG(BPF_LSH, R0, R1), | ||
3130 | BPF_EXIT_INSN(), | ||
3131 | }, | ||
3132 | INTERNAL, | ||
3133 | { }, | ||
3134 | { { 0, 2 } }, | ||
3135 | }, | ||
3136 | { | ||
3137 | "ALU_LSH_X: 1 << 31 = 0x80000000", | ||
3138 | .u.insns_int = { | ||
3139 | BPF_LD_IMM64(R0, 1), | ||
3140 | BPF_ALU32_IMM(BPF_MOV, R1, 31), | ||
3141 | BPF_ALU32_REG(BPF_LSH, R0, R1), | ||
3142 | BPF_EXIT_INSN(), | ||
3143 | }, | ||
3144 | INTERNAL, | ||
3145 | { }, | ||
3146 | { { 0, 0x80000000 } }, | ||
3147 | }, | ||
3148 | { | ||
3149 | "ALU64_LSH_X: 1 << 1 = 2", | ||
3150 | .u.insns_int = { | ||
3151 | BPF_LD_IMM64(R0, 1), | ||
3152 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
3153 | BPF_ALU64_REG(BPF_LSH, R0, R1), | ||
3154 | BPF_EXIT_INSN(), | ||
3155 | }, | ||
3156 | INTERNAL, | ||
3157 | { }, | ||
3158 | { { 0, 2 } }, | ||
3159 | }, | ||
3160 | { | ||
3161 | "ALU64_LSH_X: 1 << 31 = 0x80000000", | ||
3162 | .u.insns_int = { | ||
3163 | BPF_LD_IMM64(R0, 1), | ||
3164 | BPF_ALU32_IMM(BPF_MOV, R1, 31), | ||
3165 | BPF_ALU64_REG(BPF_LSH, R0, R1), | ||
3166 | BPF_EXIT_INSN(), | ||
3167 | }, | ||
3168 | INTERNAL, | ||
3169 | { }, | ||
3170 | { { 0, 0x80000000 } }, | ||
3171 | }, | ||
3172 | /* BPF_ALU | BPF_LSH | BPF_K */ | ||
3173 | { | ||
3174 | "ALU_LSH_K: 1 << 1 = 2", | ||
3175 | .u.insns_int = { | ||
3176 | BPF_LD_IMM64(R0, 1), | ||
3177 | BPF_ALU32_IMM(BPF_LSH, R0, 1), | ||
3178 | BPF_EXIT_INSN(), | ||
3179 | }, | ||
3180 | INTERNAL, | ||
3181 | { }, | ||
3182 | { { 0, 2 } }, | ||
3183 | }, | ||
3184 | { | ||
3185 | "ALU_LSH_K: 1 << 31 = 0x80000000", | ||
3186 | .u.insns_int = { | ||
3187 | BPF_LD_IMM64(R0, 1), | ||
3188 | BPF_ALU32_IMM(BPF_LSH, R0, 31), | ||
3189 | BPF_EXIT_INSN(), | ||
3190 | }, | ||
3191 | INTERNAL, | ||
3192 | { }, | ||
3193 | { { 0, 0x80000000 } }, | ||
3194 | }, | ||
3195 | { | ||
3196 | "ALU64_LSH_K: 1 << 1 = 2", | ||
3197 | .u.insns_int = { | ||
3198 | BPF_LD_IMM64(R0, 1), | ||
3199 | BPF_ALU64_IMM(BPF_LSH, R0, 1), | ||
3200 | BPF_EXIT_INSN(), | ||
3201 | }, | ||
3202 | INTERNAL, | ||
3203 | { }, | ||
3204 | { { 0, 2 } }, | ||
3205 | }, | ||
3206 | { | ||
3207 | "ALU64_LSH_K: 1 << 31 = 0x80000000", | ||
3208 | .u.insns_int = { | ||
3209 | BPF_LD_IMM64(R0, 1), | ||
3210 | BPF_ALU64_IMM(BPF_LSH, R0, 31), | ||
3211 | BPF_EXIT_INSN(), | ||
3212 | }, | ||
3213 | INTERNAL, | ||
3214 | { }, | ||
3215 | { { 0, 0x80000000 } }, | ||
3216 | }, | ||
3217 | /* BPF_ALU | BPF_RSH | BPF_X */ | ||
3218 | { | ||
3219 | "ALU_RSH_X: 2 >> 1 = 1", | ||
3220 | .u.insns_int = { | ||
3221 | BPF_LD_IMM64(R0, 2), | ||
3222 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
3223 | BPF_ALU32_REG(BPF_RSH, R0, R1), | ||
3224 | BPF_EXIT_INSN(), | ||
3225 | }, | ||
3226 | INTERNAL, | ||
3227 | { }, | ||
3228 | { { 0, 1 } }, | ||
3229 | }, | ||
3230 | { | ||
3231 | "ALU_RSH_X: 0x80000000 >> 31 = 1", | ||
3232 | .u.insns_int = { | ||
3233 | BPF_LD_IMM64(R0, 0x80000000), | ||
3234 | BPF_ALU32_IMM(BPF_MOV, R1, 31), | ||
3235 | BPF_ALU32_REG(BPF_RSH, R0, R1), | ||
3236 | BPF_EXIT_INSN(), | ||
3237 | }, | ||
3238 | INTERNAL, | ||
3239 | { }, | ||
3240 | { { 0, 1 } }, | ||
3241 | }, | ||
3242 | { | ||
3243 | "ALU64_RSH_X: 2 >> 1 = 1", | ||
3244 | .u.insns_int = { | ||
3245 | BPF_LD_IMM64(R0, 2), | ||
3246 | BPF_ALU32_IMM(BPF_MOV, R1, 1), | ||
3247 | BPF_ALU64_REG(BPF_RSH, R0, R1), | ||
3248 | BPF_EXIT_INSN(), | ||
3249 | }, | ||
3250 | INTERNAL, | ||
3251 | { }, | ||
3252 | { { 0, 1 } }, | ||
3253 | }, | ||
3254 | { | ||
3255 | "ALU64_RSH_X: 0x80000000 >> 31 = 1", | ||
3256 | .u.insns_int = { | ||
3257 | BPF_LD_IMM64(R0, 0x80000000), | ||
3258 | BPF_ALU32_IMM(BPF_MOV, R1, 31), | ||
3259 | BPF_ALU64_REG(BPF_RSH, R0, R1), | ||
3260 | BPF_EXIT_INSN(), | ||
3261 | }, | ||
3262 | INTERNAL, | ||
3263 | { }, | ||
3264 | { { 0, 1 } }, | ||
3265 | }, | ||
3266 | /* BPF_ALU | BPF_RSH | BPF_K */ | ||
3267 | { | ||
3268 | "ALU_RSH_K: 2 >> 1 = 1", | ||
3269 | .u.insns_int = { | ||
3270 | BPF_LD_IMM64(R0, 2), | ||
3271 | BPF_ALU32_IMM(BPF_RSH, R0, 1), | ||
3272 | BPF_EXIT_INSN(), | ||
3273 | }, | ||
3274 | INTERNAL, | ||
3275 | { }, | ||
3276 | { { 0, 1 } }, | ||
3277 | }, | ||
3278 | { | ||
3279 | "ALU_RSH_K: 0x80000000 >> 31 = 1", | ||
3280 | .u.insns_int = { | ||
3281 | BPF_LD_IMM64(R0, 0x80000000), | ||
3282 | BPF_ALU32_IMM(BPF_RSH, R0, 31), | ||
3283 | BPF_EXIT_INSN(), | ||
3284 | }, | ||
3285 | INTERNAL, | ||
3286 | { }, | ||
3287 | { { 0, 1 } }, | ||
3288 | }, | ||
3289 | { | ||
3290 | "ALU64_RSH_K: 2 >> 1 = 1", | ||
3291 | .u.insns_int = { | ||
3292 | BPF_LD_IMM64(R0, 2), | ||
3293 | BPF_ALU64_IMM(BPF_RSH, R0, 1), | ||
3294 | BPF_EXIT_INSN(), | ||
3295 | }, | ||
3296 | INTERNAL, | ||
3297 | { }, | ||
3298 | { { 0, 1 } }, | ||
3299 | }, | ||
3300 | { | ||
3301 | "ALU64_RSH_K: 0x80000000 >> 31 = 1", | ||
3302 | .u.insns_int = { | ||
3303 | BPF_LD_IMM64(R0, 0x80000000), | ||
3304 | BPF_ALU64_IMM(BPF_RSH, R0, 31), | ||
3305 | BPF_EXIT_INSN(), | ||
3306 | }, | ||
3307 | INTERNAL, | ||
3308 | { }, | ||
3309 | { { 0, 1 } }, | ||
3310 | }, | ||
3311 | /* BPF_ALU | BPF_ARSH | BPF_X */ | ||
3312 | { | ||
3313 | "ALU_ARSH_X: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ff", | ||
3314 | .u.insns_int = { | ||
3315 | BPF_LD_IMM64(R0, 0xff00ff0000000000LL), | ||
3316 | BPF_ALU32_IMM(BPF_MOV, R1, 40), | ||
3317 | BPF_ALU64_REG(BPF_ARSH, R0, R1), | ||
3318 | BPF_EXIT_INSN(), | ||
3319 | }, | ||
3320 | INTERNAL, | ||
3321 | { }, | ||
3322 | { { 0, 0xffff00ff } }, | ||
3323 | }, | ||
3324 | /* BPF_ALU | BPF_ARSH | BPF_K */ | ||
3325 | { | ||
3326 | "ALU_ARSH_K: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ff", | ||
3327 | .u.insns_int = { | ||
3328 | BPF_LD_IMM64(R0, 0xff00ff0000000000LL), | ||
3329 | BPF_ALU64_IMM(BPF_ARSH, R0, 40), | ||
3330 | BPF_EXIT_INSN(), | ||
3331 | }, | ||
3332 | INTERNAL, | ||
3333 | { }, | ||
3334 | { { 0, 0xffff00ff } }, | ||
3335 | }, | ||
3336 | /* BPF_ALU | BPF_NEG */ | ||
3337 | { | ||
3338 | "ALU_NEG: -(3) = -3", | ||
3339 | .u.insns_int = { | ||
3340 | BPF_ALU32_IMM(BPF_MOV, R0, 3), | ||
3341 | BPF_ALU32_IMM(BPF_NEG, R0, 0), | ||
3342 | BPF_EXIT_INSN(), | ||
3343 | }, | ||
3344 | INTERNAL, | ||
3345 | { }, | ||
3346 | { { 0, -3 } }, | ||
3347 | }, | ||
3348 | { | ||
3349 | "ALU_NEG: -(-3) = 3", | ||
3350 | .u.insns_int = { | ||
3351 | BPF_ALU32_IMM(BPF_MOV, R0, -3), | ||
3352 | BPF_ALU32_IMM(BPF_NEG, R0, 0), | ||
3353 | BPF_EXIT_INSN(), | ||
3354 | }, | ||
3355 | INTERNAL, | ||
3356 | { }, | ||
3357 | { { 0, 3 } }, | ||
3358 | }, | ||
3359 | { | ||
3360 | "ALU64_NEG: -(3) = -3", | ||
3361 | .u.insns_int = { | ||
3362 | BPF_LD_IMM64(R0, 3), | ||
3363 | BPF_ALU64_IMM(BPF_NEG, R0, 0), | ||
3364 | BPF_EXIT_INSN(), | ||
3365 | }, | ||
3366 | INTERNAL, | ||
3367 | { }, | ||
3368 | { { 0, -3 } }, | ||
3369 | }, | ||
3370 | { | ||
3371 | "ALU64_NEG: -(-3) = 3", | ||
3372 | .u.insns_int = { | ||
3373 | BPF_LD_IMM64(R0, -3), | ||
3374 | BPF_ALU64_IMM(BPF_NEG, R0, 0), | ||
3375 | BPF_EXIT_INSN(), | ||
3376 | }, | ||
3377 | INTERNAL, | ||
3378 | { }, | ||
3379 | { { 0, 3 } }, | ||
3380 | }, | ||
3381 | /* BPF_ALU | BPF_END | BPF_FROM_BE */ | ||
3382 | { | ||
3383 | "ALU_END_FROM_BE 16: 0x0123456789abcdef -> 0xcdef", | ||
3384 | .u.insns_int = { | ||
3385 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3386 | BPF_ENDIAN(BPF_FROM_BE, R0, 16), | ||
3387 | BPF_EXIT_INSN(), | ||
3388 | }, | ||
3389 | INTERNAL, | ||
3390 | { }, | ||
3391 | { { 0, cpu_to_be16(0xcdef) } }, | ||
3392 | }, | ||
3393 | { | ||
3394 | "ALU_END_FROM_BE 32: 0x0123456789abcdef -> 0x89abcdef", | ||
3395 | .u.insns_int = { | ||
3396 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3397 | BPF_ENDIAN(BPF_FROM_BE, R0, 32), | ||
3398 | BPF_EXIT_INSN(), | ||
3399 | }, | ||
3400 | INTERNAL, | ||
3401 | { }, | ||
3402 | { { 0, cpu_to_be32(0x89abcdef) } }, | ||
3403 | }, | ||
3404 | { | ||
3405 | "ALU_END_FROM_BE 64: 0x0123456789abcdef -> 0x89abcdef", | ||
3406 | .u.insns_int = { | ||
3407 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3408 | BPF_ENDIAN(BPF_FROM_BE, R0, 64), | ||
3409 | BPF_EXIT_INSN(), | ||
3410 | }, | ||
3411 | INTERNAL, | ||
3412 | { }, | ||
3413 | { { 0, (u32) cpu_to_be64(0x0123456789abcdefLL) } }, | ||
3414 | }, | ||
3415 | /* BPF_ALU | BPF_END | BPF_FROM_LE */ | ||
3416 | { | ||
3417 | "ALU_END_FROM_LE 16: 0x0123456789abcdef -> 0xefcd", | ||
3418 | .u.insns_int = { | ||
3419 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3420 | BPF_ENDIAN(BPF_FROM_LE, R0, 16), | ||
3421 | BPF_EXIT_INSN(), | ||
3422 | }, | ||
3423 | INTERNAL, | ||
3424 | { }, | ||
3425 | { { 0, cpu_to_le16(0xcdef) } }, | ||
3426 | }, | ||
3427 | { | ||
3428 | "ALU_END_FROM_LE 32: 0x0123456789abcdef -> 0xefcdab89", | ||
3429 | .u.insns_int = { | ||
3430 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3431 | BPF_ENDIAN(BPF_FROM_LE, R0, 32), | ||
3432 | BPF_EXIT_INSN(), | ||
3433 | }, | ||
3434 | INTERNAL, | ||
3435 | { }, | ||
3436 | { { 0, cpu_to_le32(0x89abcdef) } }, | ||
3437 | }, | ||
3438 | { | ||
3439 | "ALU_END_FROM_LE 64: 0x0123456789abcdef -> 0x67452301", | ||
3440 | .u.insns_int = { | ||
3441 | BPF_LD_IMM64(R0, 0x0123456789abcdefLL), | ||
3442 | BPF_ENDIAN(BPF_FROM_LE, R0, 64), | ||
3443 | BPF_EXIT_INSN(), | ||
3444 | }, | ||
3445 | INTERNAL, | ||
3446 | { }, | ||
3447 | { { 0, (u32) cpu_to_le64(0x0123456789abcdefLL) } }, | ||
3448 | }, | ||
3449 | /* BPF_ST(X) | BPF_MEM | BPF_B/H/W/DW */ | ||
3450 | { | ||
3451 | "ST_MEM_B: Store/Load byte: max negative", | ||
3452 | .u.insns_int = { | ||
3453 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3454 | BPF_ST_MEM(BPF_B, R10, -40, 0xff), | ||
3455 | BPF_LDX_MEM(BPF_B, R0, R10, -40), | ||
3456 | BPF_EXIT_INSN(), | ||
3457 | }, | ||
3458 | INTERNAL, | ||
3459 | { }, | ||
3460 | { { 0, 0xff } }, | ||
3461 | }, | ||
3462 | { | ||
3463 | "ST_MEM_B: Store/Load byte: max positive", | ||
3464 | .u.insns_int = { | ||
3465 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3466 | BPF_ST_MEM(BPF_H, R10, -40, 0x7f), | ||
3467 | BPF_LDX_MEM(BPF_H, R0, R10, -40), | ||
3468 | BPF_EXIT_INSN(), | ||
3469 | }, | ||
3470 | INTERNAL, | ||
3471 | { }, | ||
3472 | { { 0, 0x7f } }, | ||
3473 | }, | ||
3474 | { | ||
3475 | "STX_MEM_B: Store/Load byte: max negative", | ||
3476 | .u.insns_int = { | ||
3477 | BPF_LD_IMM64(R0, 0), | ||
3478 | BPF_LD_IMM64(R1, 0xffLL), | ||
3479 | BPF_STX_MEM(BPF_B, R10, R1, -40), | ||
3480 | BPF_LDX_MEM(BPF_B, R0, R10, -40), | ||
3481 | BPF_EXIT_INSN(), | ||
3482 | }, | ||
3483 | INTERNAL, | ||
3484 | { }, | ||
3485 | { { 0, 0xff } }, | ||
3486 | }, | ||
3487 | { | ||
3488 | "ST_MEM_H: Store/Load half word: max negative", | ||
3489 | .u.insns_int = { | ||
3490 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3491 | BPF_ST_MEM(BPF_H, R10, -40, 0xffff), | ||
3492 | BPF_LDX_MEM(BPF_H, R0, R10, -40), | ||
3493 | BPF_EXIT_INSN(), | ||
3494 | }, | ||
3495 | INTERNAL, | ||
3496 | { }, | ||
3497 | { { 0, 0xffff } }, | ||
3498 | }, | ||
3499 | { | ||
3500 | "ST_MEM_H: Store/Load half word: max positive", | ||
3501 | .u.insns_int = { | ||
3502 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3503 | BPF_ST_MEM(BPF_H, R10, -40, 0x7fff), | ||
3504 | BPF_LDX_MEM(BPF_H, R0, R10, -40), | ||
3505 | BPF_EXIT_INSN(), | ||
3506 | }, | ||
3507 | INTERNAL, | ||
3508 | { }, | ||
3509 | { { 0, 0x7fff } }, | ||
3510 | }, | ||
3511 | { | ||
3512 | "STX_MEM_H: Store/Load half word: max negative", | ||
3513 | .u.insns_int = { | ||
3514 | BPF_LD_IMM64(R0, 0), | ||
3515 | BPF_LD_IMM64(R1, 0xffffLL), | ||
3516 | BPF_STX_MEM(BPF_H, R10, R1, -40), | ||
3517 | BPF_LDX_MEM(BPF_H, R0, R10, -40), | ||
3518 | BPF_EXIT_INSN(), | ||
3519 | }, | ||
3520 | INTERNAL, | ||
3521 | { }, | ||
3522 | { { 0, 0xffff } }, | ||
3523 | }, | ||
3524 | { | ||
3525 | "ST_MEM_W: Store/Load word: max negative", | ||
3526 | .u.insns_int = { | ||
3527 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3528 | BPF_ST_MEM(BPF_W, R10, -40, 0xffffffff), | ||
3529 | BPF_LDX_MEM(BPF_W, R0, R10, -40), | ||
3530 | BPF_EXIT_INSN(), | ||
3531 | }, | ||
3532 | INTERNAL, | ||
3533 | { }, | ||
3534 | { { 0, 0xffffffff } }, | ||
3535 | }, | ||
3536 | { | ||
3537 | "ST_MEM_W: Store/Load word: max positive", | ||
3538 | .u.insns_int = { | ||
3539 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3540 | BPF_ST_MEM(BPF_W, R10, -40, 0x7fffffff), | ||
3541 | BPF_LDX_MEM(BPF_W, R0, R10, -40), | ||
3542 | BPF_EXIT_INSN(), | ||
3543 | }, | ||
3544 | INTERNAL, | ||
3545 | { }, | ||
3546 | { { 0, 0x7fffffff } }, | ||
3547 | }, | ||
3548 | { | ||
3549 | "STX_MEM_W: Store/Load word: max negative", | ||
3550 | .u.insns_int = { | ||
3551 | BPF_LD_IMM64(R0, 0), | ||
3552 | BPF_LD_IMM64(R1, 0xffffffffLL), | ||
3553 | BPF_STX_MEM(BPF_W, R10, R1, -40), | ||
3554 | BPF_LDX_MEM(BPF_W, R0, R10, -40), | ||
3555 | BPF_EXIT_INSN(), | ||
3556 | }, | ||
3557 | INTERNAL, | ||
3558 | { }, | ||
3559 | { { 0, 0xffffffff } }, | ||
3560 | }, | ||
3561 | { | ||
3562 | "ST_MEM_DW: Store/Load double word: max negative", | ||
3563 | .u.insns_int = { | ||
3564 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3565 | BPF_ST_MEM(BPF_DW, R10, -40, 0xffffffff), | ||
3566 | BPF_LDX_MEM(BPF_DW, R0, R10, -40), | ||
3567 | BPF_EXIT_INSN(), | ||
3568 | }, | ||
3569 | INTERNAL, | ||
3570 | { }, | ||
3571 | { { 0, 0xffffffff } }, | ||
3572 | }, | ||
3573 | { | ||
3574 | "ST_MEM_DW: Store/Load double word: max negative 2", | ||
3575 | .u.insns_int = { | ||
3576 | BPF_LD_IMM64(R2, 0xffff00000000ffff), | ||
3577 | BPF_LD_IMM64(R3, 0xffffffffffffffff), | ||
3578 | BPF_ST_MEM(BPF_DW, R10, -40, 0xffffffff), | ||
3579 | BPF_LDX_MEM(BPF_DW, R2, R10, -40), | ||
3580 | BPF_JMP_REG(BPF_JEQ, R2, R3, 2), | ||
3581 | BPF_MOV32_IMM(R0, 2), | ||
3582 | BPF_EXIT_INSN(), | ||
3583 | BPF_MOV32_IMM(R0, 1), | ||
3584 | BPF_EXIT_INSN(), | ||
3585 | }, | ||
3586 | INTERNAL, | ||
3587 | { }, | ||
3588 | { { 0, 0x1 } }, | ||
3589 | }, | ||
3590 | { | ||
3591 | "ST_MEM_DW: Store/Load double word: max positive", | ||
3592 | .u.insns_int = { | ||
3593 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3594 | BPF_ST_MEM(BPF_DW, R10, -40, 0x7fffffff), | ||
3595 | BPF_LDX_MEM(BPF_DW, R0, R10, -40), | ||
3596 | BPF_EXIT_INSN(), | ||
3597 | }, | ||
3598 | INTERNAL, | ||
3599 | { }, | ||
3600 | { { 0, 0x7fffffff } }, | ||
3601 | }, | ||
3602 | { | ||
3603 | "STX_MEM_DW: Store/Load double word: max negative", | ||
3604 | .u.insns_int = { | ||
3605 | BPF_LD_IMM64(R0, 0), | ||
3606 | BPF_LD_IMM64(R1, 0xffffffffffffffffLL), | ||
3607 | BPF_STX_MEM(BPF_W, R10, R1, -40), | ||
3608 | BPF_LDX_MEM(BPF_W, R0, R10, -40), | ||
3609 | BPF_EXIT_INSN(), | ||
3610 | }, | ||
3611 | INTERNAL, | ||
3612 | { }, | ||
3613 | { { 0, 0xffffffff } }, | ||
3614 | }, | ||
3615 | /* BPF_STX | BPF_XADD | BPF_W/DW */ | ||
3616 | { | ||
3617 | "STX_XADD_W: Test: 0x12 + 0x10 = 0x22", | ||
3618 | .u.insns_int = { | ||
3619 | BPF_ALU32_IMM(BPF_MOV, R0, 0x12), | ||
3620 | BPF_ST_MEM(BPF_W, R10, -40, 0x10), | ||
3621 | BPF_STX_XADD(BPF_W, R10, R0, -40), | ||
3622 | BPF_LDX_MEM(BPF_W, R0, R10, -40), | ||
3623 | BPF_EXIT_INSN(), | ||
3624 | }, | ||
3625 | INTERNAL, | ||
3626 | { }, | ||
3627 | { { 0, 0x22 } }, | ||
3628 | }, | ||
3629 | { | ||
3630 | "STX_XADD_DW: Test: 0x12 + 0x10 = 0x22", | ||
3631 | .u.insns_int = { | ||
3632 | BPF_ALU32_IMM(BPF_MOV, R0, 0x12), | ||
3633 | BPF_ST_MEM(BPF_DW, R10, -40, 0x10), | ||
3634 | BPF_STX_XADD(BPF_DW, R10, R0, -40), | ||
3635 | BPF_LDX_MEM(BPF_DW, R0, R10, -40), | ||
3636 | BPF_EXIT_INSN(), | ||
3637 | }, | ||
3638 | INTERNAL, | ||
3639 | { }, | ||
3640 | { { 0, 0x22 } }, | ||
3641 | }, | ||
3642 | /* BPF_JMP | BPF_EXIT */ | ||
3643 | { | ||
3644 | "JMP_EXIT", | ||
3645 | .u.insns_int = { | ||
3646 | BPF_ALU32_IMM(BPF_MOV, R0, 0x4711), | ||
3647 | BPF_EXIT_INSN(), | ||
3648 | BPF_ALU32_IMM(BPF_MOV, R0, 0x4712), | ||
3649 | }, | ||
3650 | INTERNAL, | ||
3651 | { }, | ||
3652 | { { 0, 0x4711 } }, | ||
3653 | }, | ||
3654 | /* BPF_JMP | BPF_JA */ | ||
3655 | { | ||
3656 | "JMP_JA: Unconditional jump: if (true) return 1", | ||
3657 | .u.insns_int = { | ||
3658 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3659 | BPF_JMP_IMM(BPF_JA, 0, 0, 1), | ||
3660 | BPF_EXIT_INSN(), | ||
3661 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3662 | BPF_EXIT_INSN(), | ||
3663 | }, | ||
3664 | INTERNAL, | ||
3665 | { }, | ||
3666 | { { 0, 1 } }, | ||
3667 | }, | ||
3668 | /* BPF_JMP | BPF_JSGT | BPF_K */ | ||
3669 | { | ||
3670 | "JMP_JSGT_K: Signed jump: if (-1 > -2) return 1", | ||
3671 | .u.insns_int = { | ||
3672 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3673 | BPF_LD_IMM64(R1, 0xffffffffffffffffLL), | ||
3674 | BPF_JMP_IMM(BPF_JSGT, R1, -2, 1), | ||
3675 | BPF_EXIT_INSN(), | ||
3676 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3677 | BPF_EXIT_INSN(), | ||
3678 | }, | ||
3679 | INTERNAL, | ||
3680 | { }, | ||
3681 | { { 0, 1 } }, | ||
3682 | }, | ||
3683 | { | ||
3684 | "JMP_JSGT_K: Signed jump: if (-1 > -1) return 0", | ||
3685 | .u.insns_int = { | ||
3686 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3687 | BPF_LD_IMM64(R1, 0xffffffffffffffffLL), | ||
3688 | BPF_JMP_IMM(BPF_JSGT, R1, -1, 1), | ||
3689 | BPF_EXIT_INSN(), | ||
3690 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3691 | BPF_EXIT_INSN(), | ||
3692 | }, | ||
3693 | INTERNAL, | ||
3694 | { }, | ||
3695 | { { 0, 1 } }, | ||
3696 | }, | ||
3697 | /* BPF_JMP | BPF_JSGE | BPF_K */ | ||
3698 | { | ||
3699 | "JMP_JSGE_K: Signed jump: if (-1 >= -2) return 1", | ||
3700 | .u.insns_int = { | ||
3701 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3702 | BPF_LD_IMM64(R1, 0xffffffffffffffffLL), | ||
3703 | BPF_JMP_IMM(BPF_JSGE, R1, -2, 1), | ||
3704 | BPF_EXIT_INSN(), | ||
3705 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3706 | BPF_EXIT_INSN(), | ||
3707 | }, | ||
3708 | INTERNAL, | ||
3709 | { }, | ||
3710 | { { 0, 1 } }, | ||
3711 | }, | ||
3712 | { | ||
3713 | "JMP_JSGE_K: Signed jump: if (-1 >= -1) return 1", | ||
3714 | .u.insns_int = { | ||
3715 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3716 | BPF_LD_IMM64(R1, 0xffffffffffffffffLL), | ||
3717 | BPF_JMP_IMM(BPF_JSGE, R1, -1, 1), | ||
3718 | BPF_EXIT_INSN(), | ||
3719 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3720 | BPF_EXIT_INSN(), | ||
3721 | }, | ||
3722 | INTERNAL, | ||
3723 | { }, | ||
3724 | { { 0, 1 } }, | ||
3725 | }, | ||
3726 | /* BPF_JMP | BPF_JGT | BPF_K */ | ||
3727 | { | ||
3728 | "JMP_JGT_K: if (3 > 2) return 1", | ||
3729 | .u.insns_int = { | ||
3730 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3731 | BPF_LD_IMM64(R1, 3), | ||
3732 | BPF_JMP_IMM(BPF_JGT, R1, 2, 1), | ||
3733 | BPF_EXIT_INSN(), | ||
3734 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3735 | BPF_EXIT_INSN(), | ||
3736 | }, | ||
3737 | INTERNAL, | ||
3738 | { }, | ||
3739 | { { 0, 1 } }, | ||
3740 | }, | ||
3741 | /* BPF_JMP | BPF_JGE | BPF_K */ | ||
3742 | { | ||
3743 | "JMP_JGE_K: if (3 >= 2) return 1", | ||
3744 | .u.insns_int = { | ||
3745 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3746 | BPF_LD_IMM64(R1, 3), | ||
3747 | BPF_JMP_IMM(BPF_JGE, R1, 2, 1), | ||
3748 | BPF_EXIT_INSN(), | ||
3749 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3750 | BPF_EXIT_INSN(), | ||
3751 | }, | ||
3752 | INTERNAL, | ||
3753 | { }, | ||
3754 | { { 0, 1 } }, | ||
3755 | }, | ||
3756 | { | ||
3757 | "JMP_JGE_K: if (3 >= 3) return 1", | ||
3758 | .u.insns_int = { | ||
3759 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3760 | BPF_LD_IMM64(R1, 3), | ||
3761 | BPF_JMP_IMM(BPF_JGE, R1, 3, 1), | ||
3762 | BPF_EXIT_INSN(), | ||
3763 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3764 | BPF_EXIT_INSN(), | ||
3765 | }, | ||
3766 | INTERNAL, | ||
3767 | { }, | ||
3768 | { { 0, 1 } }, | ||
3769 | }, | ||
3770 | /* BPF_JMP | BPF_JNE | BPF_K */ | ||
3771 | { | ||
3772 | "JMP_JNE_K: if (3 != 2) return 1", | ||
3773 | .u.insns_int = { | ||
3774 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3775 | BPF_LD_IMM64(R1, 3), | ||
3776 | BPF_JMP_IMM(BPF_JNE, R1, 2, 1), | ||
3777 | BPF_EXIT_INSN(), | ||
3778 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3779 | BPF_EXIT_INSN(), | ||
3780 | }, | ||
3781 | INTERNAL, | ||
3782 | { }, | ||
3783 | { { 0, 1 } }, | ||
3784 | }, | ||
3785 | /* BPF_JMP | BPF_JEQ | BPF_K */ | ||
3786 | { | ||
3787 | "JMP_JEQ_K: if (3 == 3) return 1", | ||
3788 | .u.insns_int = { | ||
3789 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3790 | BPF_LD_IMM64(R1, 3), | ||
3791 | BPF_JMP_IMM(BPF_JEQ, R1, 3, 1), | ||
3792 | BPF_EXIT_INSN(), | ||
3793 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3794 | BPF_EXIT_INSN(), | ||
3795 | }, | ||
3796 | INTERNAL, | ||
3797 | { }, | ||
3798 | { { 0, 1 } }, | ||
3799 | }, | ||
3800 | /* BPF_JMP | BPF_JSET | BPF_K */ | ||
3801 | { | ||
3802 | "JMP_JSET_K: if (0x3 & 0x2) return 1", | ||
3803 | .u.insns_int = { | ||
3804 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3805 | BPF_LD_IMM64(R1, 3), | ||
3806 | BPF_JMP_IMM(BPF_JNE, R1, 2, 1), | ||
3807 | BPF_EXIT_INSN(), | ||
3808 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3809 | BPF_EXIT_INSN(), | ||
3810 | }, | ||
3811 | INTERNAL, | ||
3812 | { }, | ||
3813 | { { 0, 1 } }, | ||
3814 | }, | ||
3815 | { | ||
3816 | "JMP_JSET_K: if (0x3 & 0xffffffff) return 1", | ||
3817 | .u.insns_int = { | ||
3818 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3819 | BPF_LD_IMM64(R1, 3), | ||
3820 | BPF_JMP_IMM(BPF_JNE, R1, 0xffffffff, 1), | ||
3821 | BPF_EXIT_INSN(), | ||
3822 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3823 | BPF_EXIT_INSN(), | ||
3824 | }, | ||
3825 | INTERNAL, | ||
3826 | { }, | ||
3827 | { { 0, 1 } }, | ||
3828 | }, | ||
3829 | /* BPF_JMP | BPF_JSGT | BPF_X */ | ||
3830 | { | ||
3831 | "JMP_JSGT_X: Signed jump: if (-1 > -2) return 1", | ||
3832 | .u.insns_int = { | ||
3833 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3834 | BPF_LD_IMM64(R1, -1), | ||
3835 | BPF_LD_IMM64(R2, -2), | ||
3836 | BPF_JMP_REG(BPF_JSGT, R1, R2, 1), | ||
3837 | BPF_EXIT_INSN(), | ||
3838 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3839 | BPF_EXIT_INSN(), | ||
3840 | }, | ||
3841 | INTERNAL, | ||
3842 | { }, | ||
3843 | { { 0, 1 } }, | ||
3844 | }, | ||
3845 | { | ||
3846 | "JMP_JSGT_X: Signed jump: if (-1 > -1) return 0", | ||
3847 | .u.insns_int = { | ||
3848 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3849 | BPF_LD_IMM64(R1, -1), | ||
3850 | BPF_LD_IMM64(R2, -1), | ||
3851 | BPF_JMP_REG(BPF_JSGT, R1, R2, 1), | ||
3852 | BPF_EXIT_INSN(), | ||
3853 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3854 | BPF_EXIT_INSN(), | ||
3855 | }, | ||
3856 | INTERNAL, | ||
3857 | { }, | ||
3858 | { { 0, 1 } }, | ||
3859 | }, | ||
3860 | /* BPF_JMP | BPF_JSGE | BPF_X */ | ||
3861 | { | ||
3862 | "JMP_JSGE_X: Signed jump: if (-1 >= -2) return 1", | ||
3863 | .u.insns_int = { | ||
3864 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3865 | BPF_LD_IMM64(R1, -1), | ||
3866 | BPF_LD_IMM64(R2, -2), | ||
3867 | BPF_JMP_REG(BPF_JSGE, R1, R2, 1), | ||
3868 | BPF_EXIT_INSN(), | ||
3869 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3870 | BPF_EXIT_INSN(), | ||
3871 | }, | ||
3872 | INTERNAL, | ||
3873 | { }, | ||
3874 | { { 0, 1 } }, | ||
3875 | }, | ||
3876 | { | ||
3877 | "JMP_JSGE_X: Signed jump: if (-1 >= -1) return 1", | ||
3878 | .u.insns_int = { | ||
3879 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3880 | BPF_LD_IMM64(R1, -1), | ||
3881 | BPF_LD_IMM64(R2, -1), | ||
3882 | BPF_JMP_REG(BPF_JSGE, R1, R2, 1), | ||
3883 | BPF_EXIT_INSN(), | ||
3884 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3885 | BPF_EXIT_INSN(), | ||
3886 | }, | ||
3887 | INTERNAL, | ||
3888 | { }, | ||
3889 | { { 0, 1 } }, | ||
3890 | }, | ||
3891 | /* BPF_JMP | BPF_JGT | BPF_X */ | ||
3892 | { | ||
3893 | "JMP_JGT_X: if (3 > 2) return 1", | ||
3894 | .u.insns_int = { | ||
3895 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3896 | BPF_LD_IMM64(R1, 3), | ||
3897 | BPF_LD_IMM64(R2, 2), | ||
3898 | BPF_JMP_REG(BPF_JGT, R1, R2, 1), | ||
3899 | BPF_EXIT_INSN(), | ||
3900 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3901 | BPF_EXIT_INSN(), | ||
3902 | }, | ||
3903 | INTERNAL, | ||
3904 | { }, | ||
3905 | { { 0, 1 } }, | ||
3906 | }, | ||
3907 | /* BPF_JMP | BPF_JGE | BPF_X */ | ||
3908 | { | ||
3909 | "JMP_JGE_X: if (3 >= 2) return 1", | ||
3910 | .u.insns_int = { | ||
3911 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3912 | BPF_LD_IMM64(R1, 3), | ||
3913 | BPF_LD_IMM64(R2, 2), | ||
3914 | BPF_JMP_REG(BPF_JGE, R1, R2, 1), | ||
3915 | BPF_EXIT_INSN(), | ||
3916 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3917 | BPF_EXIT_INSN(), | ||
3918 | }, | ||
3919 | INTERNAL, | ||
3920 | { }, | ||
3921 | { { 0, 1 } }, | ||
3922 | }, | ||
3923 | { | ||
3924 | "JMP_JGE_X: if (3 >= 3) return 1", | ||
3925 | .u.insns_int = { | ||
3926 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3927 | BPF_LD_IMM64(R1, 3), | ||
3928 | BPF_LD_IMM64(R2, 3), | ||
3929 | BPF_JMP_REG(BPF_JGE, R1, R2, 1), | ||
3930 | BPF_EXIT_INSN(), | ||
3931 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3932 | BPF_EXIT_INSN(), | ||
3933 | }, | ||
3934 | INTERNAL, | ||
3935 | { }, | ||
3936 | { { 0, 1 } }, | ||
3937 | }, | ||
3938 | /* BPF_JMP | BPF_JNE | BPF_X */ | ||
3939 | { | ||
3940 | "JMP_JNE_X: if (3 != 2) return 1", | ||
3941 | .u.insns_int = { | ||
3942 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3943 | BPF_LD_IMM64(R1, 3), | ||
3944 | BPF_LD_IMM64(R2, 2), | ||
3945 | BPF_JMP_REG(BPF_JNE, R1, R2, 1), | ||
3946 | BPF_EXIT_INSN(), | ||
3947 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3948 | BPF_EXIT_INSN(), | ||
3949 | }, | ||
3950 | INTERNAL, | ||
3951 | { }, | ||
3952 | { { 0, 1 } }, | ||
3953 | }, | ||
3954 | /* BPF_JMP | BPF_JEQ | BPF_X */ | ||
3955 | { | ||
3956 | "JMP_JEQ_X: if (3 == 3) return 1", | ||
3957 | .u.insns_int = { | ||
3958 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3959 | BPF_LD_IMM64(R1, 3), | ||
3960 | BPF_LD_IMM64(R2, 3), | ||
3961 | BPF_JMP_REG(BPF_JEQ, R1, R2, 1), | ||
3962 | BPF_EXIT_INSN(), | ||
3963 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3964 | BPF_EXIT_INSN(), | ||
3965 | }, | ||
3966 | INTERNAL, | ||
3967 | { }, | ||
3968 | { { 0, 1 } }, | ||
3969 | }, | ||
3970 | /* BPF_JMP | BPF_JSET | BPF_X */ | ||
3971 | { | ||
3972 | "JMP_JSET_X: if (0x3 & 0x2) return 1", | ||
3973 | .u.insns_int = { | ||
3974 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3975 | BPF_LD_IMM64(R1, 3), | ||
3976 | BPF_LD_IMM64(R2, 2), | ||
3977 | BPF_JMP_REG(BPF_JNE, R1, R2, 1), | ||
3978 | BPF_EXIT_INSN(), | ||
3979 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3980 | BPF_EXIT_INSN(), | ||
3981 | }, | ||
3982 | INTERNAL, | ||
3983 | { }, | ||
3984 | { { 0, 1 } }, | ||
3985 | }, | ||
3986 | { | ||
3987 | "JMP_JSET_X: if (0x3 & 0xffffffff) return 1", | ||
3988 | .u.insns_int = { | ||
3989 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
3990 | BPF_LD_IMM64(R1, 3), | ||
3991 | BPF_LD_IMM64(R2, 0xffffffff), | ||
3992 | BPF_JMP_REG(BPF_JNE, R1, R2, 1), | ||
3993 | BPF_EXIT_INSN(), | ||
3994 | BPF_ALU32_IMM(BPF_MOV, R0, 1), | ||
3995 | BPF_EXIT_INSN(), | ||
3996 | }, | ||
3997 | INTERNAL, | ||
3998 | { }, | ||
3999 | { { 0, 1 } }, | ||
4000 | }, | ||
1809 | }; | 4001 | }; |
1810 | 4002 | ||
1811 | static struct net_device dev; | 4003 | static struct net_device dev; |