> From: Marat Khalili [mailto:[email protected]] > Sent: Tuesday, 16 December 2025 19.21 > > Macros RTE_SHIFT_VAL32 and RTE_SHIFT_VAL64 were implemented by applying > UINT32_C or UINT64_C correspondingly to its first argument. As a > consequence first argument had to be a constant. Replace UINT32_C and > UINT64_C with casts to uint32_t and uint64_t to allow these arguments > be > variable. For constants the result should be the same. > > (Yes, technically UINT64_C promotes to uint_least64_t, not uint64_t, > but > I think most users of RTE_SHIFT_VAL64 expect the result to be > uint64_t.)
Interesting detail. And yes, I agree about expectations. > > Signed-off-by: Marat Khalili <[email protected]> > --- > lib/eal/include/rte_bitops.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/eal/include/rte_bitops.h > b/lib/eal/include/rte_bitops.h > index 2d1b9d281c..aa6ac73abb 100644 > --- a/lib/eal/include/rte_bitops.h > +++ b/lib/eal/include/rte_bitops.h > @@ -51,7 +51,7 @@ extern "C" { > * @param nr > * The shift number in range of 0 to (32 - width of val). > */ > -#define RTE_SHIFT_VAL32(val, nr) (UINT32_C(val) << (nr)) > +#define RTE_SHIFT_VAL32(val, nr) ((uint32_t)(val) << (nr)) > > /** > * Get the uint64_t shifted value. > @@ -61,7 +61,7 @@ extern "C" { > * @param nr > * The shift number in range of 0 to (64 - width of val). > */ > -#define RTE_SHIFT_VAL64(val, nr) (UINT64_C(val) << (nr)) > +#define RTE_SHIFT_VAL64(val, nr) ((uint64_t)(val) << (nr)) > > /** > * Generate a contiguous 32-bit mask > -- > 2.43.0 Reviewed-by: Morten Brørup <[email protected]>

