In virtio/vhost there is use of pragmas to get clang or gcc to unroll loops. This was originally done using compiler version checks in the meson.build file, but with all supported gcc and clang versions now supporting the needed pragmas, we can simplify things by just having the headers check directly for gcc or clang.
Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> --- drivers/net/virtio/meson.build | 5 ----- drivers/net/virtio/virtio_rxtx_packed.h | 16 ++++++---------- lib/vhost/meson.build | 5 ----- lib/vhost/vhost.h | 14 +++++--------- 4 files changed, 11 insertions(+), 29 deletions(-) diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build index be653edb34..54a28538c3 100644 --- a/drivers/net/virtio/meson.build +++ b/drivers/net/virtio/meson.build @@ -29,11 +29,6 @@ if arch_subdir == 'x86' if cc_has_avx512 cflags += ['-DVIRTIO_RXTX_PACKED_VEC'] sources_avx512 += files('virtio_rxtx_packed.c') - if toolchain == 'gcc' - cflags += '-DVIRTIO_GCC_UNROLL_PRAGMA' - elif toolchain == 'clang' - cflags += '-DVIRTIO_CLANG_UNROLL_PRAGMA' - endif endif cflags += ['-DVIRTIO_RXTX_VEC'] sources += files('virtio_rxtx_simple_sse.c') diff --git a/drivers/net/virtio/virtio_rxtx_packed.h b/drivers/net/virtio/virtio_rxtx_packed.h index 12bfcee809..f7cc60bb51 100644 --- a/drivers/net/virtio/virtio_rxtx_packed.h +++ b/drivers/net/virtio/virtio_rxtx_packed.h @@ -67,19 +67,15 @@ #endif #define PACKED_BATCH_MASK (PACKED_BATCH_SIZE - 1) -#ifdef VIRTIO_GCC_UNROLL_PRAGMA -#define virtio_for_each_try_unroll(iter, val, size) _Pragma("GCC unroll 4") \ - for (iter = val; iter < size; iter++) -#endif - -#ifdef VIRTIO_CLANG_UNROLL_PRAGMA +#if defined __clang__ #define virtio_for_each_try_unroll(iter, val, size) _Pragma("unroll 4") \ for (iter = val; iter < size; iter++) -#endif - -#ifndef virtio_for_each_try_unroll -#define virtio_for_each_try_unroll(iter, val, size) \ +#elif defined __GNUC__ +#define virtio_for_each_try_unroll(iter, val, size) _Pragma("GCC unroll 4") \ for (iter = val; iter < size; iter++) +#else +#define virtio_for_each_try_unroll(iter, val, num) \ + for (iter = val; iter < num; iter++) #endif static inline void diff --git a/lib/vhost/meson.build b/lib/vhost/meson.build index 0a7a76f6db..6a24981d10 100644 --- a/lib/vhost/meson.build +++ b/lib/vhost/meson.build @@ -8,11 +8,6 @@ endif if has_libnuma dpdk_conf.set10('RTE_LIBRTE_VHOST_NUMA', true) endif -if toolchain == 'gcc' - cflags += '-DVHOST_GCC_UNROLL_PRAGMA' -elif toolchain == 'clang' - cflags += '-DVHOST_CLANG_UNROLL_PRAGMA' -endif dpdk_conf.set('RTE_LIBRTE_VHOST_POSTCOPY', cc.has_header('linux/userfaultfd.h')) cflags += no_wvla_cflag diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h index 6ffc3f20c1..e9e71c1707 100644 --- a/lib/vhost/vhost.h +++ b/lib/vhost/vhost.h @@ -69,17 +69,13 @@ sizeof(struct vring_packed_desc)) #define PACKED_BATCH_MASK (PACKED_BATCH_SIZE - 1) -#ifdef VHOST_GCC_UNROLL_PRAGMA -#define vhost_for_each_try_unroll(iter, val, size) _Pragma("GCC unroll 4") \ - for (iter = val; iter < size; iter++) -#endif - -#ifdef VHOST_CLANG_UNROLL_PRAGMA +#if defined __clang__ #define vhost_for_each_try_unroll(iter, val, size) _Pragma("unroll 4") \ for (iter = val; iter < size; iter++) -#endif - -#ifndef vhost_for_each_try_unroll +#elif defined __GNUC__ +#define vhost_for_each_try_unroll(iter, val, size) _Pragma("GCC unroll 4") \ + for (iter = val; iter < size; iter++) +#else #define vhost_for_each_try_unroll(iter, val, num) \ for (iter = val; iter < num; iter++) #endif -- 2.48.1