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