xref: /linux/tools/testing/selftests/bpf/progs/bpf_compiler.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __BPF_COMPILER_H__
3 #define __BPF_COMPILER_H__
4 
5 #define DO_PRAGMA_(X) _Pragma(#X)
6 
7 #if __clang__
8 #define __pragma_loop_unroll DO_PRAGMA_(clang loop unroll(enable))
9 #else
10 /* In GCC -funroll-loops, which is enabled with -O2, should have the
11    same impact than the loop-unroll-enable pragma above.  */
12 #define __pragma_loop_unroll
13 #endif
14 
15 #if __clang__
16 #define __pragma_loop_unroll_count(N) DO_PRAGMA_(clang loop unroll_count(N))
17 #else
18 #define __pragma_loop_unroll_count(N) DO_PRAGMA_(GCC unroll N)
19 #endif
20 
21 #if __clang__
22 #define __pragma_loop_unroll_full DO_PRAGMA_(clang loop unroll(full))
23 #else
24 #define __pragma_loop_unroll_full DO_PRAGMA_(GCC unroll 65534)
25 #endif
26 
27 #if __clang__
28 #define __pragma_loop_no_unroll DO_PRAGMA_(clang loop unroll(disable))
29 #else
30 #define __pragma_loop_no_unroll DO_PRAGMA_(GCC unroll 1)
31 #endif
32 
33 #endif
34