[v4,14/39] acl: use C11 alignas
Checks
Commit Message
* Move __rte_aligned from the end of {struct,union} definitions to
be between {struct,union} and tag.
The placement between {struct,union} and the tag allows the desired
alignment to be imparted on the type regardless of the toolchain being
used for all of GCC, LLVM, MSVC compilers building both C and C++.
* Replace use of __rte_aligned(a) on variables/fields with alignas(a).
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/acl/acl_run.h | 4 ++--
lib/acl/acl_run_altivec.h | 6 ++++--
lib/acl/acl_run_neon.h | 6 ++++--
3 files changed, 10 insertions(+), 6 deletions(-)
@@ -55,12 +55,12 @@ struct acl_flow_data {
* Structure to maintain running results for
* a single packet (up to 4 tries).
*/
-struct completion {
+struct __rte_aligned(XMM_SIZE) completion {
uint32_t *results; /* running results. */
int32_t priority[RTE_ACL_MAX_CATEGORIES]; /* running priorities. */
uint32_t count; /* num of remaining tries */
/* true for allocated struct */
-} __rte_aligned(XMM_SIZE);
+};
/*
* One parms structure for each slot in the search engine.
@@ -3,15 +3,17 @@
* Copyright (C) IBM Corporation 2016.
*/
+#include <stdalign.h>
+
#include "acl_run.h"
#include "acl_vect.h"
-struct _altivec_acl_const {
+alignas(RTE_CACHE_LINE_SIZE) struct _altivec_acl_const {
rte_xmm_t xmm_shuffle_input;
rte_xmm_t xmm_index_mask;
rte_xmm_t xmm_ones_16;
rte_xmm_t range_base;
-} altivec_acl_const __rte_cache_aligned = {
+} altivec_acl_const = {
{
.u32 = {0x00000000, 0x04040404, 0x08080808, 0x0c0c0c0c}
},
@@ -2,14 +2,16 @@
* Copyright(c) 2015 Cavium, Inc
*/
+#include <stdalign.h>
+
#include "acl_run.h"
#include "acl_vect.h"
-struct _neon_acl_const {
+alignas(RTE_CACHE_LINE_SIZE) struct _neon_acl_const {
rte_xmm_t xmm_shuffle_input;
rte_xmm_t xmm_index_mask;
rte_xmm_t range_base;
-} neon_acl_const __rte_cache_aligned = {
+} neon_acl_const = {
{
.u32 = {0x00000000, 0x04040404, 0x08080808, 0x0c0c0c0c}
},