| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __BPF_COMPILER_H__ |
| #define __BPF_COMPILER_H__ |
| |
| #define DO_PRAGMA_(X) _Pragma(#X) |
| |
| #if __clang__ |
| #define __pragma_loop_unroll DO_PRAGMA_(clang loop unroll(enable)) |
| #else |
| /* In GCC -funroll-loops, which is enabled with -O2, should have the |
| same impact than the loop-unroll-enable pragma above. */ |
| #define __pragma_loop_unroll |
| #endif |
| |
| #if __clang__ |
| #define __pragma_loop_unroll_count(N) DO_PRAGMA_(clang loop unroll_count(N)) |
| #else |
| #define __pragma_loop_unroll_count(N) DO_PRAGMA_(GCC unroll N) |
| #endif |
| |
| #if __clang__ |
| #define __pragma_loop_unroll_full DO_PRAGMA_(clang loop unroll(full)) |
| #else |
| #define __pragma_loop_unroll_full DO_PRAGMA_(GCC unroll 65534) |
| #endif |
| |
| #if __clang__ |
| #define __pragma_loop_no_unroll DO_PRAGMA_(clang loop unroll(disable)) |
| #else |
| #define __pragma_loop_no_unroll DO_PRAGMA_(GCC unroll 1) |
| #endif |
| |
| #endif |