diff options
| author | David Marchand <[email protected]> | 2023-08-25 11:13:25 +0200 |
|---|---|---|
| committer | David Marchand <[email protected]> | 2023-09-05 17:22:27 +0200 |
| commit | 3d4e27fd7ff050d565c7450930c92fb945706518 (patch) | |
| tree | dfa0d2fab2ccdd15d37d3f151c3fd35040b3d7b2 /lib/table | |
| parent | 799d56f1192d72872e63fbb3d2c7f776b7ae89b0 (diff) | |
use abstracted bit count functions
Now that DPDK provides such bit count functions, make use of them.
This patch was prepared with a "brutal" commandline:
$ old=__builtin_clzll; new=rte_clz64;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
$ old=__builtin_clz; new=rte_clz32;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
$ old=__builtin_ctzll; new=rte_ctz64;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
$ old=__builtin_ctz; new=rte_ctz32;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
$ old=__builtin_popcountll; new=rte_popcount64;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
$ old=__builtin_popcount; new=rte_popcount32;
git grep -lw $old :^lib/eal/include/rte_bitops.h |
xargs sed -i -e "s#\<$old\>#$new#g"
Then inclusion of rte_bitops.h was added were necessary.
Signed-off-by: David Marchand <[email protected]>
Acked-by: Tyler Retzlaff <[email protected]>
Reviewed-by: Long Li <[email protected]>
Diffstat (limited to 'lib/table')
| -rw-r--r-- | lib/table/rte_swx_table_learner.c | 6 | ||||
| -rw-r--r-- | lib/table/rte_table_acl.c | 8 | ||||
| -rw-r--r-- | lib/table/rte_table_array.c | 6 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_cuckoo.c | 6 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_ext.c | 20 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_key16.c | 26 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_key32.c | 26 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_key8.c | 26 | ||||
| -rw-r--r-- | lib/table/rte_table_hash_lru.c | 20 | ||||
| -rw-r--r-- | lib/table/rte_table_lpm.c | 6 | ||||
| -rw-r--r-- | lib/table/rte_table_lpm_ipv6.c | 6 | ||||
| -rw-r--r-- | lib/table/rte_table_stub.c | 2 |
12 files changed, 79 insertions, 79 deletions
diff --git a/lib/table/rte_swx_table_learner.c b/lib/table/rte_swx_table_learner.c index 996fd3de5b..2b5e6bdce1 100644 --- a/lib/table/rte_swx_table_learner.c +++ b/lib/table/rte_swx_table_learner.c @@ -202,7 +202,7 @@ table_params_get(struct table_params *p, struct rte_swx_table_learner_params *pa p->key_size_pow2 = rte_align64pow2(p->key_size); - p->key_size_log2 = __builtin_ctzll(p->key_size_pow2); + p->key_size_log2 = rte_ctz64(p->key_size_pow2); p->key_offset = params->key_offset; @@ -211,7 +211,7 @@ table_params_get(struct table_params *p, struct rte_swx_table_learner_params *pa p->data_size_pow2 = rte_align64pow2(sizeof(uint64_t) + p->action_data_size); - p->data_size_log2 = __builtin_ctzll(p->data_size_pow2); + p->data_size_log2 = rte_ctz64(p->data_size_pow2); /* Buckets. */ p->n_buckets = rte_align32pow2(params->n_keys_max); @@ -224,7 +224,7 @@ table_params_get(struct table_params *p, struct rte_swx_table_learner_params *pa p->bucket_key_all_size + TABLE_KEYS_PER_BUCKET * p->data_size_pow2); - p->bucket_size_log2 = __builtin_ctzll(p->bucket_size); + p->bucket_size_log2 = rte_ctz64(p->bucket_size); p->hash_func = params->hash_func ? params->hash_func : rte_hash_crc; diff --git a/lib/table/rte_table_acl.c b/lib/table/rte_table_acl.c index 53fd5c66ad..902cb78eac 100644 --- a/lib/table/rte_table_acl.c +++ b/lib/table/rte_table_acl.c @@ -719,12 +719,12 @@ rte_table_acl_lookup( uint64_t pkts_out_mask; uint32_t n_pkts, i, j; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_ACL_STATS_PKTS_IN_ADD(acl, n_pkts_in); /* Input conversion */ for (i = 0, j = 0; i < (uint32_t)(RTE_PORT_IN_BURST_SIZE_MAX - - __builtin_clzll(pkts_mask)); i++) { + rte_clz64(pkts_mask)); i++) { uint64_t pkt_mask = 1LLU << i; if (pkt_mask & pkts_mask) { @@ -744,7 +744,7 @@ rte_table_acl_lookup( pkts_out_mask = 0; for (i = 0; i < n_pkts; i++) { uint32_t action_table_pos = results[i]; - uint32_t pkt_pos = __builtin_ctzll(pkts_mask); + uint32_t pkt_pos = rte_ctz64(pkts_mask); uint64_t pkt_mask = 1LLU << pkt_pos; pkts_mask &= ~pkt_mask; @@ -759,7 +759,7 @@ rte_table_acl_lookup( } *lookup_hit_mask = pkts_out_mask; - RTE_TABLE_ACL_STATS_PKTS_LOOKUP_MISS(acl, n_pkts_in - __builtin_popcountll(pkts_out_mask)); + RTE_TABLE_ACL_STATS_PKTS_LOOKUP_MISS(acl, n_pkts_in - rte_popcount64(pkts_out_mask)); return 0; } diff --git a/lib/table/rte_table_array.c b/lib/table/rte_table_array.c index 54a0c42f7d..a45b29ed6a 100644 --- a/lib/table/rte_table_array.c +++ b/lib/table/rte_table_array.c @@ -146,12 +146,12 @@ rte_table_array_lookup( void **entries) { struct rte_table_array *t = (struct rte_table_array *) table; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_ARRAY_STATS_PKTS_IN_ADD(t, n_pkts_in); *lookup_hit_mask = pkts_mask; if ((pkts_mask & (pkts_mask + 1)) == 0) { - uint64_t n_pkts = __builtin_popcountll(pkts_mask); + uint64_t n_pkts = rte_popcount64(pkts_mask); uint32_t i; for (i = 0; i < n_pkts; i++) { @@ -164,7 +164,7 @@ rte_table_array_lookup( } } else { for ( ; pkts_mask; ) { - uint32_t pkt_index = __builtin_ctzll(pkts_mask); + uint32_t pkt_index = rte_ctz64(pkts_mask); uint64_t pkt_mask = 1LLU << pkt_index; struct rte_mbuf *pkt = pkts[pkt_index]; uint32_t entry_pos = RTE_MBUF_METADATA_UINT32(pkt, diff --git a/lib/table/rte_table_hash_cuckoo.c b/lib/table/rte_table_hash_cuckoo.c index c77eccf527..86c960c103 100644 --- a/lib/table/rte_table_hash_cuckoo.c +++ b/lib/table/rte_table_hash_cuckoo.c @@ -237,7 +237,7 @@ rte_table_hash_cuckoo_lookup(void *table, uint64_t pkts_mask_out = 0; uint32_t i; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_CUCKOO_STATS_PKTS_IN_ADD(t, n_pkts_in); @@ -268,7 +268,7 @@ rte_table_hash_cuckoo_lookup(void *table, } } else for (i = 0; i < (uint32_t)(RTE_PORT_IN_BURST_SIZE_MAX - - __builtin_clzll(pkts_mask)); i++) { + - rte_clz64(pkts_mask)); i++) { uint64_t pkt_mask = 1LLU << i; if (pkt_mask & pkts_mask) { @@ -288,7 +288,7 @@ rte_table_hash_cuckoo_lookup(void *table, *lookup_hit_mask = pkts_mask_out; RTE_TABLE_HASH_CUCKOO_STATS_PKTS_LOOKUP_MISS(t, - n_pkts_in - __builtin_popcountll(pkts_mask_out)); + n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; diff --git a/lib/table/rte_table_hash_ext.c b/lib/table/rte_table_hash_ext.c index 4753ccb15c..51a20acbd7 100644 --- a/lib/table/rte_table_hash_ext.c +++ b/lib/table/rte_table_hash_ext.c @@ -469,7 +469,7 @@ static int rte_table_hash_ext_lookup_unoptimized( struct rte_table_hash *t = (struct rte_table_hash *) table; uint64_t pkts_mask_out = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); for ( ; pkts_mask; ) { struct bucket *bkt0, *bkt; @@ -478,7 +478,7 @@ static int rte_table_hash_ext_lookup_unoptimized( uint64_t pkt_mask, sig; uint32_t pkt_index, bkt_index, i; - pkt_index = __builtin_ctzll(pkts_mask); + pkt_index = rte_ctz64(pkts_mask); pkt_mask = 1LLU << pkt_index; pkts_mask &= ~pkt_mask; @@ -669,12 +669,12 @@ static int rte_table_hash_ext_lookup_unoptimized( struct rte_mbuf *mbuf00, *mbuf01; \ uint32_t key_offset = t->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ mbuf00 = pkts[pkt00_index]; \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ mbuf01 = pkts[pkt01_index]; \ @@ -690,12 +690,12 @@ static int rte_table_hash_ext_lookup_unoptimized( struct rte_mbuf *mbuf00, *mbuf01; \ uint32_t key_offset = t->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ mbuf00 = pkts[pkt00_index]; \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ if (pkts_mask == 0) \ pkt01_index = pkt00_index; \ pkt01_mask = 1LLU << pkt01_index; \ @@ -857,15 +857,15 @@ static int rte_table_hash_ext_lookup( uint64_t pkts_mask_out = 0, pkts_mask_match_many = 0; int status = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_EXT_STATS_PKTS_IN_ADD(t, n_pkts_in); /* Cannot run the pipeline with less than 7 packets */ - if (__builtin_popcountll(pkts_mask) < 7) { + if (rte_popcount64(pkts_mask) < 7) { status = rte_table_hash_ext_lookup_unoptimized(table, pkts, pkts_mask, lookup_hit_mask, entries); RTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - - __builtin_popcountll(*lookup_hit_mask)); + rte_popcount64(*lookup_hit_mask)); return status; } @@ -976,7 +976,7 @@ static int rte_table_hash_ext_lookup( } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - rte_popcount64(pkts_mask_out)); return status; } diff --git a/lib/table/rte_table_hash_key16.c b/lib/table/rte_table_hash_key16.c index 04d7fd64bd..584c3f2c98 100644 --- a/lib/table/rte_table_hash_key16.c +++ b/lib/table/rte_table_hash_key16.c @@ -636,7 +636,7 @@ rte_table_hash_entry_delete_key16_ext( uint64_t pkt_mask; \ uint32_t key_offset = f->key_offset;\ \ - pkt0_index = __builtin_ctzll(pkts_mask); \ + pkt0_index = rte_ctz64(pkts_mask); \ pkt_mask = 1LLU << pkt0_index; \ pkts_mask &= ~pkt_mask; \ \ @@ -741,14 +741,14 @@ rte_table_hash_entry_delete_key16_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ \ @@ -762,14 +762,14 @@ rte_table_hash_entry_delete_key16_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset)); \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ if (pkts_mask == 0) \ pkt01_index = pkt00_index; \ pkt01_mask = 1LLU << pkt01_index; \ @@ -882,12 +882,12 @@ rte_table_hash_lookup_key16_lru( uint32_t pkt11_index, pkt20_index, pkt21_index; uint64_t pkts_mask_out = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY16_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_16 *bucket; struct rte_mbuf *mbuf; @@ -901,7 +901,7 @@ rte_table_hash_lookup_key16_lru( *lookup_hit_mask = pkts_mask_out; RTE_TABLE_HASH_KEY16_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - - __builtin_popcountll(pkts_mask_out)); + rte_popcount64(pkts_mask_out)); return 0; } @@ -992,7 +992,7 @@ rte_table_hash_lookup_key16_lru( *lookup_hit_mask = pkts_mask_out; RTE_TABLE_HASH_KEY16_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - - __builtin_popcountll(pkts_mask_out)); + rte_popcount64(pkts_mask_out)); return 0; } /* lookup LRU */ @@ -1013,12 +1013,12 @@ rte_table_hash_lookup_key16_ext( struct rte_bucket_4_16 *buckets[RTE_PORT_IN_BURST_SIZE_MAX]; uint64_t *keys[RTE_PORT_IN_BURST_SIZE_MAX]; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY16_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_16 *bucket; struct rte_mbuf *mbuf; @@ -1131,7 +1131,7 @@ grind_next_buckets: uint64_t pkt_mask; uint32_t pkt_index; - pkt_index = __builtin_ctzll(buckets_mask); + pkt_index = rte_ctz64(buckets_mask); pkt_mask = 1LLU << pkt_index; buckets_mask &= ~pkt_mask; @@ -1144,7 +1144,7 @@ grind_next_buckets: *lookup_hit_mask = pkts_mask_out; RTE_TABLE_HASH_KEY16_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - - __builtin_popcountll(pkts_mask_out)); + rte_popcount64(pkts_mask_out)); return 0; } /* lookup EXT */ diff --git a/lib/table/rte_table_hash_key32.c b/lib/table/rte_table_hash_key32.c index 88d8f69c72..22b5ca9166 100644 --- a/lib/table/rte_table_hash_key32.c +++ b/lib/table/rte_table_hash_key32.c @@ -664,7 +664,7 @@ rte_table_hash_entry_delete_key32_ext( uint64_t pkt_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt0_index = __builtin_ctzll(pkts_mask); \ + pkt0_index = rte_ctz64(pkts_mask); \ pkt_mask = 1LLU << pkt0_index; \ pkts_mask &= ~pkt_mask; \ \ @@ -773,14 +773,14 @@ rte_table_hash_entry_delete_key32_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ \ @@ -794,14 +794,14 @@ rte_table_hash_entry_delete_key32_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset)); \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ if (pkts_mask == 0) \ pkt01_index = pkt00_index; \ \ @@ -919,11 +919,11 @@ rte_table_hash_lookup_key32_lru( uint32_t pkt11_index, pkt20_index, pkt21_index; uint64_t pkts_mask_out = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY32_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_32 *bucket; struct rte_mbuf *mbuf; @@ -936,7 +936,7 @@ rte_table_hash_lookup_key32_lru( } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } @@ -1027,7 +1027,7 @@ rte_table_hash_lookup_key32_lru( mbuf20, mbuf21, bucket20, bucket21, pkts_mask_out, entries, f); *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } /* rte_table_hash_lookup_key32_lru() */ @@ -1048,11 +1048,11 @@ rte_table_hash_lookup_key32_ext( struct rte_bucket_4_32 *buckets[RTE_PORT_IN_BURST_SIZE_MAX]; uint64_t *keys[RTE_PORT_IN_BURST_SIZE_MAX]; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY32_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_32 *bucket; struct rte_mbuf *mbuf; @@ -1165,7 +1165,7 @@ grind_next_buckets: uint64_t pkt_mask; uint32_t pkt_index; - pkt_index = __builtin_ctzll(buckets_mask); + pkt_index = rte_ctz64(buckets_mask); pkt_mask = 1LLU << pkt_index; buckets_mask &= ~pkt_mask; @@ -1177,7 +1177,7 @@ grind_next_buckets: } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY32_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } /* rte_table_hash_lookup_key32_ext() */ diff --git a/lib/table/rte_table_hash_key8.c b/lib/table/rte_table_hash_key8.c index 035d242769..bd0ec4aac0 100644 --- a/lib/table/rte_table_hash_key8.c +++ b/lib/table/rte_table_hash_key8.c @@ -608,7 +608,7 @@ rte_table_hash_entry_delete_key8_ext( uint64_t pkt_mask; \ uint32_t key_offset = f->key_offset;\ \ - pkt0_index = __builtin_ctzll(pkts_mask); \ + pkt0_index = rte_ctz64(pkts_mask); \ pkt_mask = 1LLU << pkt0_index; \ pkts_mask &= ~pkt_mask; \ \ @@ -710,14 +710,14 @@ rte_table_hash_entry_delete_key8_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ \ @@ -731,14 +731,14 @@ rte_table_hash_entry_delete_key8_ext( uint64_t pkt00_mask, pkt01_mask; \ uint32_t key_offset = f->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ if (pkts_mask == 0) \ pkt01_index = pkt00_index; \ \ @@ -854,11 +854,11 @@ rte_table_hash_lookup_key8_lru( uint32_t pkt11_index, pkt20_index, pkt21_index; uint64_t pkts_mask_out = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY8_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_8 *bucket; struct rte_mbuf *mbuf; @@ -871,7 +871,7 @@ rte_table_hash_lookup_key8_lru( } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } @@ -961,7 +961,7 @@ rte_table_hash_lookup_key8_lru( bucket20, bucket21, pkts_mask_out, entries, f); *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } /* lookup LRU */ @@ -982,11 +982,11 @@ rte_table_hash_lookup_key8_ext( struct rte_bucket_4_8 *buckets[RTE_PORT_IN_BURST_SIZE_MAX]; uint64_t *keys[RTE_PORT_IN_BURST_SIZE_MAX]; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_KEY8_STATS_PKTS_IN_ADD(f, n_pkts_in); /* Cannot run the pipeline with less than 5 packets */ - if (__builtin_popcountll(pkts_mask) < 5) { + if (rte_popcount64(pkts_mask) < 5) { for ( ; pkts_mask; ) { struct rte_bucket_4_8 *bucket; struct rte_mbuf *mbuf; @@ -1099,7 +1099,7 @@ grind_next_buckets: uint64_t pkt_mask; uint32_t pkt_index; - pkt_index = __builtin_ctzll(buckets_mask); + pkt_index = rte_ctz64(buckets_mask); pkt_mask = 1LLU << pkt_index; buckets_mask &= ~pkt_mask; @@ -1111,7 +1111,7 @@ grind_next_buckets: } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_KEY8_STATS_PKTS_LOOKUP_MISS(f, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } /* lookup EXT */ diff --git a/lib/table/rte_table_hash_lru.c b/lib/table/rte_table_hash_lru.c index f312d898c2..a4e1a0599c 100644 --- a/lib/table/rte_table_hash_lru.c +++ b/lib/table/rte_table_hash_lru.c @@ -404,7 +404,7 @@ static int rte_table_hash_lru_lookup_unoptimized( struct rte_table_hash *t = (struct rte_table_hash *) table; uint64_t pkts_mask_out = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_LRU_STATS_PKTS_IN_ADD(t, n_pkts_in); for ( ; pkts_mask; ) { @@ -414,7 +414,7 @@ static int rte_table_hash_lru_lookup_unoptimized( uint64_t pkt_mask, sig; uint32_t pkt_index, bkt_index, i; - pkt_index = __builtin_ctzll(pkts_mask); + pkt_index = rte_ctz64(pkts_mask); pkt_mask = 1LLU << pkt_index; pkts_mask &= ~pkt_mask; @@ -447,7 +447,7 @@ static int rte_table_hash_lru_lookup_unoptimized( } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_LRU_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_LRU_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - rte_popcount64(pkts_mask_out)); return 0; } @@ -606,12 +606,12 @@ static int rte_table_hash_lru_lookup_unoptimized( struct rte_mbuf *mbuf00, *mbuf01; \ uint32_t key_offset = t->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ mbuf00 = pkts[pkt00_index]; \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ mbuf01 = pkts[pkt01_index]; \ @@ -627,12 +627,12 @@ static int rte_table_hash_lru_lookup_unoptimized( struct rte_mbuf *mbuf00, *mbuf01; \ uint32_t key_offset = t->key_offset; \ \ - pkt00_index = __builtin_ctzll(pkts_mask); \ + pkt00_index = rte_ctz64(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ mbuf00 = pkts[pkt00_index]; \ \ - pkt01_index = __builtin_ctzll(pkts_mask); \ + pkt01_index = rte_ctz64(pkts_mask); \ if (pkts_mask == 0) \ pkt01_index = pkt00_index; \ \ @@ -809,11 +809,11 @@ static int rte_table_hash_lru_lookup( uint64_t pkts_mask_out = 0, pkts_mask_match_many = 0; int status = 0; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_HASH_LRU_STATS_PKTS_IN_ADD(t, n_pkts_in); /* Cannot run the pipeline with less than 7 packets */ - if (__builtin_popcountll(pkts_mask) < 7) + if (rte_popcount64(pkts_mask) < 7) return rte_table_hash_lru_lookup_unoptimized(table, pkts, pkts_mask, lookup_hit_mask, entries); @@ -924,7 +924,7 @@ static int rte_table_hash_lru_lookup( } *lookup_hit_mask = pkts_mask_out; - RTE_TABLE_HASH_LRU_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - __builtin_popcountll(pkts_mask_out)); + RTE_TABLE_HASH_LRU_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - rte_popcount64(pkts_mask_out)); return status; } diff --git a/lib/table/rte_table_lpm.c b/lib/table/rte_table_lpm.c index 9de9e8a20d..c2ef0d9ba0 100644 --- a/lib/table/rte_table_lpm.c +++ b/lib/table/rte_table_lpm.c @@ -309,12 +309,12 @@ rte_table_lpm_lookup( uint64_t pkts_out_mask = 0; uint32_t i; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_LPM_STATS_PKTS_IN_ADD(lpm, n_pkts_in); pkts_out_mask = 0; for (i = 0; i < (uint32_t)(RTE_PORT_IN_BURST_SIZE_MAX - - __builtin_clzll(pkts_mask)); i++) { + rte_clz64(pkts_mask)); i++) { uint64_t pkt_mask = 1LLU << i; if (pkt_mask & pkts_mask) { @@ -334,7 +334,7 @@ rte_table_lpm_lookup( } *lookup_hit_mask = pkts_out_mask; - RTE_TABLE_LPM_STATS_PKTS_LOOKUP_MISS(lpm, n_pkts_in - __builtin_popcountll(pkts_out_mask)); + RTE_TABLE_LPM_STATS_PKTS_LOOKUP_MISS(lpm, n_pkts_in - rte_popcount64(pkts_out_mask)); return 0; } diff --git a/lib/table/rte_table_lpm_ipv6.c b/lib/table/rte_table_lpm_ipv6.c index 8fde2c012f..6f3e11a14f 100644 --- a/lib/table/rte_table_lpm_ipv6.c +++ b/lib/table/rte_table_lpm_ipv6.c @@ -310,12 +310,12 @@ rte_table_lpm_ipv6_lookup( uint64_t pkts_out_mask = 0; uint32_t i; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_LPM_IPV6_STATS_PKTS_IN_ADD(lpm, n_pkts_in); pkts_out_mask = 0; for (i = 0; i < (uint32_t)(RTE_PORT_IN_BURST_SIZE_MAX - - __builtin_clzll(pkts_mask)); i++) { + rte_clz64(pkts_mask)); i++) { uint64_t pkt_mask = 1LLU << i; if (pkt_mask & pkts_mask) { @@ -335,7 +335,7 @@ rte_table_lpm_ipv6_lookup( } *lookup_hit_mask = pkts_out_mask; - RTE_TABLE_LPM_IPV6_STATS_PKTS_LOOKUP_MISS(lpm, n_pkts_in - __builtin_popcountll(pkts_out_mask)); + RTE_TABLE_LPM_IPV6_STATS_PKTS_LOOKUP_MISS(lpm, n_pkts_in - rte_popcount64(pkts_out_mask)); return 0; } diff --git a/lib/table/rte_table_stub.c b/lib/table/rte_table_stub.c index 23d0de5c79..cc21516995 100644 --- a/lib/table/rte_table_stub.c +++ b/lib/table/rte_table_stub.c @@ -56,7 +56,7 @@ rte_table_stub_lookup( __rte_unused void **entries) { __rte_unused struct rte_table_stub *stub = (struct rte_table_stub *) table; - __rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask); + __rte_unused uint32_t n_pkts_in = rte_popcount64(pkts_mask); RTE_TABLE_LPM_STATS_PKTS_IN_ADD(stub, n_pkts_in); *lookup_hit_mask = 0; |
