[1/3] stdlib: Add internal stdc_rotate_left implementation
Checks
| Context |
Check |
Description |
| redhat-pt-bot/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
Commit Message
It follows the C2y N3367 proposed interface, along with some tests
imported from gnulib (and adapted to glibc libsupport).
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
SHARED-FILES | 1 +
include/stdbit.h | 62 ++++-
stdlib/Makefile | 1 +
stdlib/tst-stdc_rotate_left.c | 457 ++++++++++++++++++++++++++++++++++
4 files changed, 520 insertions(+), 1 deletion(-)
create mode 100644 stdlib/tst-stdc_rotate_left.c
Comments
On 06/05/26 15:42, Uros Bizjak wrote:
> It follows the C2y N3367 proposed interface, along with some tests
> imported from gnulib (and adapted to glibc libsupport).
>
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> SHARED-FILES | 1 +
> include/stdbit.h | 62 ++++-
> stdlib/Makefile | 1 +
> stdlib/tst-stdc_rotate_left.c | 457 ++++++++++++++++++++++++++++++++++
> 4 files changed, 520 insertions(+), 1 deletion(-)
> create mode 100644 stdlib/tst-stdc_rotate_left.c
>
> diff --git a/SHARED-FILES b/SHARED-FILES
> index 645040d7e1..c0260d6615 100644
> --- a/SHARED-FILES
> +++ b/SHARED-FILES
> @@ -113,6 +113,7 @@ gnulib:
> stdlib/setenv.c
> stdlib/strtoll.c
> stdlib/strtoul.c
> + stdlib/tst-stdc_rotate_left.c
> stdlib/tst-stdc_rotate_right.c
> # Merged from gnulib 2014-6-26, needs merge back
> string/memchr.c
> diff --git a/include/stdbit.h b/include/stdbit.h
> index d5aeada2b9..9734144ef5 100644
> --- a/include/stdbit.h
> +++ b/include/stdbit.h
> @@ -5,6 +5,66 @@
> #ifndef _ISOMAC
> # include <stdint.h>
>
> +# if __glibc_has_builtin (__builtin_stdc_rotate_left)
> +# define stdc_rotate_left(__x, __n) (__builtin_stdc_rotate_left (__x, __n))
> +# define stdc_rotate_left_uc(__x, __n) (stdc_rotate_left (__x, __n))
> +# define stdc_rotate_left_us(__x, __n) (stdc_rotate_left (__x, __n))
> +# define stdc_rotate_left_ui(__x, __n) (stdc_rotate_left (__x, __n))
> +# define stdc_rotate_left_ul(__x, __n) (stdc_rotate_left (__x, __n))
> +# define stdc_rotate_left_ull(__x, __n) (stdc_rotate_left (__x, __n))
> +# else
> +# if __WORDSIZE == 64
> +# define __ROL_UL_GENERIC __rol64_inline
> +# else
> +# define __ROL_UL_GENERIC __rol32_inline
> +# endif
> +# define stdc_rotate_left(__x, __n) \
> + _Generic((__x), \
> + unsigned char: __rol8_inline, \
> + unsigned short: __rol16_inline, \
> + unsigned int: __rol32_inline, \
> + unsigned long: __ROL_UL_GENERIC, \
> + unsigned long long: __rol64_inline \
> + )(__x, __n)
> +
> +# define __rol_generic(__v, __n) \
> + ((__v << (__n & (sizeof __v * 8 - 1))) \
> + | (__v >> ((-__n) & (sizeof __v * 8 - 1))))
> +
> +static __always_inline uint8_t
> +__rol8_inline (uint8_t __x, unsigned int __n)
> +{
> + return __rol_generic (__x, __n);
> +}
> +
> +static __always_inline uint16_t
> +__rol16_inline (uint16_t __x, unsigned int __n)
> +{
> + return __rol_generic (__x, __n);
> +}
> +
> +static __always_inline uint32_t
> +__rol32_inline (uint32_t __x, unsigned int __n)
> +{
> + return __rol_generic (__x, __n);
> +}
> +
> +static __always_inline uint64_t
> +__rol64_inline (uint64_t __x, unsigned int __n)
> +{
> + return __rol_generic (__x, __n);
> +}
> +# define stdc_rotate_left_uc(__x, __n) (__rol8_inline (__x, __n))
> +# define stdc_rotate_left_us(__x, __n) (__rol16_inline (__x, __n))
> +# define stdc_rotate_left_ui(__x, __n) (__rol32_inline (__x, __n))
> +# if __WORDSIZE == 64
> +# define stdc_rotate_left_ul(__x, __n) (__rol64_inline (__x, __n))
> +# else
> +# define stdc_rotate_left_ul(__x, __n) (__rol32_inline (__x, __n))
> +# endif
> +# define stdc_rotate_left_ull(__x, __n) (__rol64_inline (__x, __n))
> +# endif /* __glibc_has_builtin (__builtin_stdc_rotate_left) */
> +
> # if __glibc_has_builtin (__builtin_stdc_rotate_right)
> # define stdc_rotate_right(__x, __n) (__builtin_stdc_rotate_right (__x, __n))
> # define stdc_rotate_right_uc(__x, __n) (stdc_rotate_right (__x, __n))
> @@ -49,7 +109,7 @@ __ror32_inline (uint32_t __x, unsigned int __n)
> return __ror_generic (__x, __n);
> }
>
> -static __always_inline uint64_t
> +static __always_inline uint64_t
> __ror64_inline (uint64_t __x, unsigned int __n)
> {
> return __ror_generic (__x, __n);
> diff --git a/stdlib/Makefile b/stdlib/Makefile
> index b5f136ca1a..addf7dc99f 100644
> --- a/stdlib/Makefile
> +++ b/stdlib/Makefile
> @@ -388,6 +388,7 @@ endif
>
> tests-internal := \
> tst-qsort4 \
> + tst-stdc_rotate_left \
> tst-stdc_rotate_right \
> tst-strtod1i \
> tst-strtod3 \
> diff --git a/stdlib/tst-stdc_rotate_left.c b/stdlib/tst-stdc_rotate_left.c
> new file mode 100644
> index 0000000000..e4b8052969
> --- /dev/null
> +++ b/stdlib/tst-stdc_rotate_left.c
> @@ -0,0 +1,457 @@
> +/* Test the stdc_rotate_left_* functions and macro.
> + Copyright (C) 2026 Free Software Foundation, Inc.
> +
> + The GNU C Library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + The GNU C Library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with the GNU C Library; if not, see
> + <https://www.gnu.org/licenses/>. */
> +
> +#include <stdbit.h>
> +#include <support/check.h>
> +
> +#define TEST_CASE(type, function, value, shift, expect) \
> + do \
> + { \
> + type v = value; \
> + TEST_COMPARE (function (v, shift), expect); \
> + TEST_COMPARE (stdc_rotate_left (v, shift), expect); \
> + } \
> + while (false)
> +
> +static void
> +test_stdc_rotate_left_uc (void)
> +{
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 0, 0x96);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 1, 0x2d);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 2, 0x5a);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 3, 0xb4);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 4, 0x69);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 5, 0xd2);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 6, 0xa5);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 7, 0x4b);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 8, 0x96);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 9, 0x2d);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 10, 0x5a);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 11, 0xb4);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 12, 0x69);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 13, 0xd2);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 14, 0xa5);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 15, 0x4b);
> + TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 16, 0x96);
> +}
> +
> +static void
> +test_stdc_rotate_left_us (void)
> +{
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 0, 0x5e1aU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 1, 0xbc34U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 2, 0x7869U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 3, 0xf0d2U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 4, 0xe1a5U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 5, 0xc34bU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 6, 0x8697U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 7, 0x0d2fU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 8, 0x1a5eU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 9, 0x34bcU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 10, 0x6978U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 11, 0xd2f0U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 12, 0xa5e1U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 13, 0x4bc3U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 14, 0x9786U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 15, 0x2f0dU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 16, 0x5e1aU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 17, 0xbc34U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 18, 0x7869U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 19, 0xf0d2U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 20, 0xe1a5U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 21, 0xc34bU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 22, 0x8697U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 23, 0x0d2fU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 24, 0x1a5eU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 25, 0x34bcU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 26, 0x6978U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 27, 0xd2f0U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 28, 0xa5e1U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 29, 0x4bc3U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 30, 0x9786U);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 31, 0x2f0dU);
> + TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 32, 0x5e1aU);
> +}
> +
> +#define TEST_CASES_32(type, function) \
> + do \
> + { \
> + TEST_CASE (type, function, 0x51af3678UL, 0, 0x51af3678UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 1, 0xa35e6cf0UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 2, 0x46bcd9e1UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 3, 0x8d79b3c2UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 4, 0x1af36785UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 5, 0x35e6cf0aUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 6, 0x6bcd9e14UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 7, 0xd79b3c28UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 8, 0xaf367851UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 9, 0x5e6cf0a3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 10, 0xbcd9e146UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 11, 0x79b3c28dUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 12, 0xf367851aUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 13, 0xe6cf0a35UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 14, 0xcd9e146bUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 15, 0x9b3c28d7UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 16, 0x367851afUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 17, 0x6cf0a35eUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 18, 0xd9e146bcUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 19, 0xb3c28d79UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 20, 0x67851af3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 21, 0xcf0a35e6UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 22, 0x9e146bcdUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 23, 0x3c28d79bUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 24, 0x7851af36UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 25, 0xf0a35e6cUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 26, 0xe146bcd9UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 27, 0xc28d79b3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 28, 0x851af367UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 29, 0x0a35e6cfUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 30, 0x146bcd9eUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 31, 0x28d79b3cUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 32, 0x51af3678UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 33, 0xa35e6cf0UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 34, 0x46bcd9e1UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 35, 0x8d79b3c2UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 36, 0x1af36785UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 37, 0x35e6cf0aUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 38, 0x6bcd9e14UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 39, 0xd79b3c28UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 40, 0xaf367851UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 41, 0x5e6cf0a3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 42, 0xbcd9e146UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 43, 0x79b3c28dUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 44, 0xf367851aUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 45, 0xe6cf0a35UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 46, 0xcd9e146bUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 47, 0x9b3c28d7UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 48, 0x367851afUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 49, 0x6cf0a35eUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 50, 0xd9e146bcUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 51, 0xb3c28d79UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 52, 0x67851af3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 53, 0xcf0a35e6UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 54, 0x9e146bcdUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 55, 0x3c28d79bUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 56, 0x7851af36UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 57, 0xf0a35e6cUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 58, 0xe146bcd9UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 59, 0xc28d79b3UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 60, 0x851af367UL); \
> + TEST_CASE (type, function, 0x51af3678UL, 61, 0x0a35e6cfUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 62, 0x146bcd9eUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 63, 0x28d79b3cUL); \
> + TEST_CASE (type, function, 0x51af3678UL, 64, 0x51af3678UL); \
> + } \
> + while (false)
> +
> +static void
> +test_stdc_rotate_left_ui (void)
> +{
> + TEST_CASES_32 (unsigned int, stdc_rotate_left_ui);
> +}
> +
> +#define TEST_CASES_64(type, function) \
> + do \
> + { \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 0, \
> + 0x59ae28915a84db37ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 1, \
> + 0xb35c5122b509b66eULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 2, \
> + 0x66b8a2456a136cddULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 3, \
> + 0xcd71448ad426d9baULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 4, \
> + 0x9ae28915a84db375ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 5, \
> + 0x35c5122b509b66ebULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 6, \
> + 0x6b8a2456a136cdd6ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 7, \
> + 0xd71448ad426d9bacULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 8, \
> + 0xae28915a84db3759ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 9, \
> + 0x5c5122b509b66eb3ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 10, \
> + 0xb8a2456a136cdd66ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 11, \
> + 0x71448ad426d9bacdULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 12, \
> + 0xe28915a84db3759aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 13, \
> + 0xc5122b509b66eb35ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 14, \
> + 0x8a2456a136cdd66bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 15, \
> + 0x1448ad426d9bacd7ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 16, \
> + 0x28915a84db3759aeULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 17, \
> + 0x5122b509b66eb35cULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 18, \
> + 0xa2456a136cdd66b8ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 19, \
> + 0x448ad426d9bacd71ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 20, \
> + 0x8915a84db3759ae2ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 21, \
> + 0x122b509b66eb35c5ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 22, \
> + 0x2456a136cdd66b8aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 23, \
> + 0x48ad426d9bacd714ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 24, \
> + 0x915a84db3759ae28ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 25, \
> + 0x22b509b66eb35c51ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 26, \
> + 0x456a136cdd66b8a2ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 27, \
> + 0x8ad426d9bacd7144ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 28, \
> + 0x15a84db3759ae289ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 29, \
> + 0x2b509b66eb35c512ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 30, \
> + 0x56a136cdd66b8a24ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 31, \
> + 0xad426d9bacd71448ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 32, \
> + 0x5a84db3759ae2891ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 33, \
> + 0xb509b66eb35c5122ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 34, \
> + 0x6a136cdd66b8a245ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 35, \
> + 0xd426d9bacd71448aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 36, \
> + 0xa84db3759ae28915ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 37, \
> + 0x509b66eb35c5122bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 38, \
> + 0xa136cdd66b8a2456ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 39, \
> + 0x426d9bacd71448adULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 40, \
> + 0x84db3759ae28915aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 41, \
> + 0x09b66eb35c5122b5ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 42, \
> + 0x136cdd66b8a2456aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 43, \
> + 0x26d9bacd71448ad4ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 44, \
> + 0x4db3759ae28915a8ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 45, \
> + 0x9b66eb35c5122b50ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 46, \
> + 0x36cdd66b8a2456a1ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 47, \
> + 0x6d9bacd71448ad42ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 48, \
> + 0xdb3759ae28915a84ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 49, \
> + 0xb66eb35c5122b509ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 50, \
> + 0x6cdd66b8a2456a13ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 51, \
> + 0xd9bacd71448ad426ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 52, \
> + 0xb3759ae28915a84dULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 53, \
> + 0x66eb35c5122b509bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 54, \
> + 0xcdd66b8a2456a136ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 55, \
> + 0x9bacd71448ad426dULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 56, \
> + 0x3759ae28915a84dbULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 57, \
> + 0x6eb35c5122b509b6ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 58, \
> + 0xdd66b8a2456a136cULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 59, \
> + 0xbacd71448ad426d9ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 60, \
> + 0x759ae28915a84db3ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 61, \
> + 0xeb35c5122b509b66ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 62, \
> + 0xd66b8a2456a136cdULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 63, \
> + 0xacd71448ad426d9bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 64, \
> + 0x59ae28915a84db37ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 65, \
> + 0xb35c5122b509b66eULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 66, \
> + 0x66b8a2456a136cddULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 67, \
> + 0xcd71448ad426d9baULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 68, \
> + 0x9ae28915a84db375ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 69, \
> + 0x35c5122b509b66ebULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 70, \
> + 0x6b8a2456a136cdd6ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 71, \
> + 0xd71448ad426d9bacULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 72, \
> + 0xae28915a84db3759ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 73, \
> + 0x5c5122b509b66eb3ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 74, \
> + 0xb8a2456a136cdd66ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 75, \
> + 0x71448ad426d9bacdULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 76, \
> + 0xe28915a84db3759aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 77, \
> + 0xc5122b509b66eb35ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 78, \
> + 0x8a2456a136cdd66bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 79, \
> + 0x1448ad426d9bacd7ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 80, \
> + 0x28915a84db3759aeULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 81, \
> + 0x5122b509b66eb35cULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 82, \
> + 0xa2456a136cdd66b8ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 83, \
> + 0x448ad426d9bacd71ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 84, \
> + 0x8915a84db3759ae2ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 85, \
> + 0x122b509b66eb35c5ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 86, \
> + 0x2456a136cdd66b8aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 87, \
> + 0x48ad426d9bacd714ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 88, \
> + 0x915a84db3759ae28ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 89, \
> + 0x22b509b66eb35c51ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 90, \
> + 0x456a136cdd66b8a2ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 91, \
> + 0x8ad426d9bacd7144ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 92, \
> + 0x15a84db3759ae289ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 93, \
> + 0x2b509b66eb35c512ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 94, \
> + 0x56a136cdd66b8a24ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 95, \
> + 0xad426d9bacd71448ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 96, \
> + 0x5a84db3759ae2891ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 97, \
> + 0xb509b66eb35c5122ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 98, \
> + 0x6a136cdd66b8a245ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 99, \
> + 0xd426d9bacd71448aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 100, \
> + 0xa84db3759ae28915ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 101, \
> + 0x509b66eb35c5122bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 102, \
> + 0xa136cdd66b8a2456ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 103, \
> + 0x426d9bacd71448adULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 104, \
> + 0x84db3759ae28915aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 105, \
> + 0x09b66eb35c5122b5ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 106, \
> + 0x136cdd66b8a2456aULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 107, \
> + 0x26d9bacd71448ad4ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 108, \
> + 0x4db3759ae28915a8ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 109, \
> + 0x9b66eb35c5122b50ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 110, \
> + 0x36cdd66b8a2456a1ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 111, \
> + 0x6d9bacd71448ad42ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 112, \
> + 0xdb3759ae28915a84ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 113, \
> + 0xb66eb35c5122b509ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 114, \
> + 0x6cdd66b8a2456a13ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 115, \
> + 0xd9bacd71448ad426ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 116, \
> + 0xb3759ae28915a84dULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 117, \
> + 0x66eb35c5122b509bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 118, \
> + 0xcdd66b8a2456a136ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 119, \
> + 0x9bacd71448ad426dULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 120, \
> + 0x3759ae28915a84dbULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 121, \
> + 0x6eb35c5122b509b6ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 122, \
> + 0xdd66b8a2456a136cULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 123, \
> + 0xbacd71448ad426d9ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 124, \
> + 0x759ae28915a84db3ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 125, \
> + 0xeb35c5122b509b66ULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 126, \
> + 0xd66b8a2456a136cdULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 127, \
> + 0xacd71448ad426d9bULL); \
> + TEST_CASE (type, function, 0x59ae28915a84db37ULL, 128, \
> + 0x59ae28915a84db37ULL); \
> + } \
> + while (false)
> +
> +static void
> +test_stdc_rotate_left_ul (void)
> +{
> + if (sizeof 0ul < sizeof 0ull)
> + TEST_CASES_32 (unsigned long int, stdc_rotate_left_ul);
> + else
> + TEST_CASES_64 (unsigned long long int, stdc_rotate_left_ul);
> +}
> +
> +static void
> +test_stdc_rotate_left_ull (void)
> +{
> + TEST_CASES_64 (unsigned long long int, stdc_rotate_left_ull);
> +}
> +
> +static int
> +do_test (void)
> +{
> + test_stdc_rotate_left_uc ();
> + test_stdc_rotate_left_us ();
> + test_stdc_rotate_left_ui ();
> + test_stdc_rotate_left_ul ();
> + test_stdc_rotate_left_ull ();
> + return 0;
> +}
> +
> +#include <support/test-driver.c>
@@ -113,6 +113,7 @@ gnulib:
stdlib/setenv.c
stdlib/strtoll.c
stdlib/strtoul.c
+ stdlib/tst-stdc_rotate_left.c
stdlib/tst-stdc_rotate_right.c
# Merged from gnulib 2014-6-26, needs merge back
string/memchr.c
@@ -5,6 +5,66 @@
#ifndef _ISOMAC
# include <stdint.h>
+# if __glibc_has_builtin (__builtin_stdc_rotate_left)
+# define stdc_rotate_left(__x, __n) (__builtin_stdc_rotate_left (__x, __n))
+# define stdc_rotate_left_uc(__x, __n) (stdc_rotate_left (__x, __n))
+# define stdc_rotate_left_us(__x, __n) (stdc_rotate_left (__x, __n))
+# define stdc_rotate_left_ui(__x, __n) (stdc_rotate_left (__x, __n))
+# define stdc_rotate_left_ul(__x, __n) (stdc_rotate_left (__x, __n))
+# define stdc_rotate_left_ull(__x, __n) (stdc_rotate_left (__x, __n))
+# else
+# if __WORDSIZE == 64
+# define __ROL_UL_GENERIC __rol64_inline
+# else
+# define __ROL_UL_GENERIC __rol32_inline
+# endif
+# define stdc_rotate_left(__x, __n) \
+ _Generic((__x), \
+ unsigned char: __rol8_inline, \
+ unsigned short: __rol16_inline, \
+ unsigned int: __rol32_inline, \
+ unsigned long: __ROL_UL_GENERIC, \
+ unsigned long long: __rol64_inline \
+ )(__x, __n)
+
+# define __rol_generic(__v, __n) \
+ ((__v << (__n & (sizeof __v * 8 - 1))) \
+ | (__v >> ((-__n) & (sizeof __v * 8 - 1))))
+
+static __always_inline uint8_t
+__rol8_inline (uint8_t __x, unsigned int __n)
+{
+ return __rol_generic (__x, __n);
+}
+
+static __always_inline uint16_t
+__rol16_inline (uint16_t __x, unsigned int __n)
+{
+ return __rol_generic (__x, __n);
+}
+
+static __always_inline uint32_t
+__rol32_inline (uint32_t __x, unsigned int __n)
+{
+ return __rol_generic (__x, __n);
+}
+
+static __always_inline uint64_t
+__rol64_inline (uint64_t __x, unsigned int __n)
+{
+ return __rol_generic (__x, __n);
+}
+# define stdc_rotate_left_uc(__x, __n) (__rol8_inline (__x, __n))
+# define stdc_rotate_left_us(__x, __n) (__rol16_inline (__x, __n))
+# define stdc_rotate_left_ui(__x, __n) (__rol32_inline (__x, __n))
+# if __WORDSIZE == 64
+# define stdc_rotate_left_ul(__x, __n) (__rol64_inline (__x, __n))
+# else
+# define stdc_rotate_left_ul(__x, __n) (__rol32_inline (__x, __n))
+# endif
+# define stdc_rotate_left_ull(__x, __n) (__rol64_inline (__x, __n))
+# endif /* __glibc_has_builtin (__builtin_stdc_rotate_left) */
+
# if __glibc_has_builtin (__builtin_stdc_rotate_right)
# define stdc_rotate_right(__x, __n) (__builtin_stdc_rotate_right (__x, __n))
# define stdc_rotate_right_uc(__x, __n) (stdc_rotate_right (__x, __n))
@@ -49,7 +109,7 @@ __ror32_inline (uint32_t __x, unsigned int __n)
return __ror_generic (__x, __n);
}
-static __always_inline uint64_t
+static __always_inline uint64_t
__ror64_inline (uint64_t __x, unsigned int __n)
{
return __ror_generic (__x, __n);
@@ -388,6 +388,7 @@ endif
tests-internal := \
tst-qsort4 \
+ tst-stdc_rotate_left \
tst-stdc_rotate_right \
tst-strtod1i \
tst-strtod3 \
new file mode 100644
@@ -0,0 +1,457 @@
+/* Test the stdc_rotate_left_* functions and macro.
+ Copyright (C) 2026 Free Software Foundation, Inc.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdbit.h>
+#include <support/check.h>
+
+#define TEST_CASE(type, function, value, shift, expect) \
+ do \
+ { \
+ type v = value; \
+ TEST_COMPARE (function (v, shift), expect); \
+ TEST_COMPARE (stdc_rotate_left (v, shift), expect); \
+ } \
+ while (false)
+
+static void
+test_stdc_rotate_left_uc (void)
+{
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 0, 0x96);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 1, 0x2d);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 2, 0x5a);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 3, 0xb4);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 4, 0x69);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 5, 0xd2);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 6, 0xa5);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 7, 0x4b);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 8, 0x96);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 9, 0x2d);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 10, 0x5a);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 11, 0xb4);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 12, 0x69);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 13, 0xd2);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 14, 0xa5);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 15, 0x4b);
+ TEST_CASE (unsigned char, stdc_rotate_left_uc, 0x96, 16, 0x96);
+}
+
+static void
+test_stdc_rotate_left_us (void)
+{
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 0, 0x5e1aU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 1, 0xbc34U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 2, 0x7869U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 3, 0xf0d2U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 4, 0xe1a5U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 5, 0xc34bU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 6, 0x8697U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 7, 0x0d2fU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 8, 0x1a5eU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 9, 0x34bcU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 10, 0x6978U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 11, 0xd2f0U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 12, 0xa5e1U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 13, 0x4bc3U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 14, 0x9786U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 15, 0x2f0dU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 16, 0x5e1aU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 17, 0xbc34U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 18, 0x7869U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 19, 0xf0d2U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 20, 0xe1a5U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 21, 0xc34bU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 22, 0x8697U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 23, 0x0d2fU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 24, 0x1a5eU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 25, 0x34bcU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 26, 0x6978U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 27, 0xd2f0U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 28, 0xa5e1U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 29, 0x4bc3U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 30, 0x9786U);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 31, 0x2f0dU);
+ TEST_CASE (unsigned short int, stdc_rotate_left_us, 0x5e1aU, 32, 0x5e1aU);
+}
+
+#define TEST_CASES_32(type, function) \
+ do \
+ { \
+ TEST_CASE (type, function, 0x51af3678UL, 0, 0x51af3678UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 1, 0xa35e6cf0UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 2, 0x46bcd9e1UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 3, 0x8d79b3c2UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 4, 0x1af36785UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 5, 0x35e6cf0aUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 6, 0x6bcd9e14UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 7, 0xd79b3c28UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 8, 0xaf367851UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 9, 0x5e6cf0a3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 10, 0xbcd9e146UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 11, 0x79b3c28dUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 12, 0xf367851aUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 13, 0xe6cf0a35UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 14, 0xcd9e146bUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 15, 0x9b3c28d7UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 16, 0x367851afUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 17, 0x6cf0a35eUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 18, 0xd9e146bcUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 19, 0xb3c28d79UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 20, 0x67851af3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 21, 0xcf0a35e6UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 22, 0x9e146bcdUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 23, 0x3c28d79bUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 24, 0x7851af36UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 25, 0xf0a35e6cUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 26, 0xe146bcd9UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 27, 0xc28d79b3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 28, 0x851af367UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 29, 0x0a35e6cfUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 30, 0x146bcd9eUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 31, 0x28d79b3cUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 32, 0x51af3678UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 33, 0xa35e6cf0UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 34, 0x46bcd9e1UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 35, 0x8d79b3c2UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 36, 0x1af36785UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 37, 0x35e6cf0aUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 38, 0x6bcd9e14UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 39, 0xd79b3c28UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 40, 0xaf367851UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 41, 0x5e6cf0a3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 42, 0xbcd9e146UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 43, 0x79b3c28dUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 44, 0xf367851aUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 45, 0xe6cf0a35UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 46, 0xcd9e146bUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 47, 0x9b3c28d7UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 48, 0x367851afUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 49, 0x6cf0a35eUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 50, 0xd9e146bcUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 51, 0xb3c28d79UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 52, 0x67851af3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 53, 0xcf0a35e6UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 54, 0x9e146bcdUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 55, 0x3c28d79bUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 56, 0x7851af36UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 57, 0xf0a35e6cUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 58, 0xe146bcd9UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 59, 0xc28d79b3UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 60, 0x851af367UL); \
+ TEST_CASE (type, function, 0x51af3678UL, 61, 0x0a35e6cfUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 62, 0x146bcd9eUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 63, 0x28d79b3cUL); \
+ TEST_CASE (type, function, 0x51af3678UL, 64, 0x51af3678UL); \
+ } \
+ while (false)
+
+static void
+test_stdc_rotate_left_ui (void)
+{
+ TEST_CASES_32 (unsigned int, stdc_rotate_left_ui);
+}
+
+#define TEST_CASES_64(type, function) \
+ do \
+ { \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 0, \
+ 0x59ae28915a84db37ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 1, \
+ 0xb35c5122b509b66eULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 2, \
+ 0x66b8a2456a136cddULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 3, \
+ 0xcd71448ad426d9baULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 4, \
+ 0x9ae28915a84db375ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 5, \
+ 0x35c5122b509b66ebULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 6, \
+ 0x6b8a2456a136cdd6ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 7, \
+ 0xd71448ad426d9bacULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 8, \
+ 0xae28915a84db3759ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 9, \
+ 0x5c5122b509b66eb3ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 10, \
+ 0xb8a2456a136cdd66ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 11, \
+ 0x71448ad426d9bacdULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 12, \
+ 0xe28915a84db3759aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 13, \
+ 0xc5122b509b66eb35ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 14, \
+ 0x8a2456a136cdd66bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 15, \
+ 0x1448ad426d9bacd7ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 16, \
+ 0x28915a84db3759aeULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 17, \
+ 0x5122b509b66eb35cULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 18, \
+ 0xa2456a136cdd66b8ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 19, \
+ 0x448ad426d9bacd71ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 20, \
+ 0x8915a84db3759ae2ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 21, \
+ 0x122b509b66eb35c5ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 22, \
+ 0x2456a136cdd66b8aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 23, \
+ 0x48ad426d9bacd714ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 24, \
+ 0x915a84db3759ae28ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 25, \
+ 0x22b509b66eb35c51ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 26, \
+ 0x456a136cdd66b8a2ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 27, \
+ 0x8ad426d9bacd7144ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 28, \
+ 0x15a84db3759ae289ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 29, \
+ 0x2b509b66eb35c512ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 30, \
+ 0x56a136cdd66b8a24ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 31, \
+ 0xad426d9bacd71448ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 32, \
+ 0x5a84db3759ae2891ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 33, \
+ 0xb509b66eb35c5122ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 34, \
+ 0x6a136cdd66b8a245ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 35, \
+ 0xd426d9bacd71448aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 36, \
+ 0xa84db3759ae28915ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 37, \
+ 0x509b66eb35c5122bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 38, \
+ 0xa136cdd66b8a2456ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 39, \
+ 0x426d9bacd71448adULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 40, \
+ 0x84db3759ae28915aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 41, \
+ 0x09b66eb35c5122b5ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 42, \
+ 0x136cdd66b8a2456aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 43, \
+ 0x26d9bacd71448ad4ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 44, \
+ 0x4db3759ae28915a8ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 45, \
+ 0x9b66eb35c5122b50ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 46, \
+ 0x36cdd66b8a2456a1ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 47, \
+ 0x6d9bacd71448ad42ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 48, \
+ 0xdb3759ae28915a84ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 49, \
+ 0xb66eb35c5122b509ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 50, \
+ 0x6cdd66b8a2456a13ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 51, \
+ 0xd9bacd71448ad426ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 52, \
+ 0xb3759ae28915a84dULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 53, \
+ 0x66eb35c5122b509bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 54, \
+ 0xcdd66b8a2456a136ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 55, \
+ 0x9bacd71448ad426dULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 56, \
+ 0x3759ae28915a84dbULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 57, \
+ 0x6eb35c5122b509b6ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 58, \
+ 0xdd66b8a2456a136cULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 59, \
+ 0xbacd71448ad426d9ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 60, \
+ 0x759ae28915a84db3ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 61, \
+ 0xeb35c5122b509b66ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 62, \
+ 0xd66b8a2456a136cdULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 63, \
+ 0xacd71448ad426d9bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 64, \
+ 0x59ae28915a84db37ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 65, \
+ 0xb35c5122b509b66eULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 66, \
+ 0x66b8a2456a136cddULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 67, \
+ 0xcd71448ad426d9baULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 68, \
+ 0x9ae28915a84db375ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 69, \
+ 0x35c5122b509b66ebULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 70, \
+ 0x6b8a2456a136cdd6ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 71, \
+ 0xd71448ad426d9bacULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 72, \
+ 0xae28915a84db3759ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 73, \
+ 0x5c5122b509b66eb3ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 74, \
+ 0xb8a2456a136cdd66ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 75, \
+ 0x71448ad426d9bacdULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 76, \
+ 0xe28915a84db3759aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 77, \
+ 0xc5122b509b66eb35ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 78, \
+ 0x8a2456a136cdd66bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 79, \
+ 0x1448ad426d9bacd7ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 80, \
+ 0x28915a84db3759aeULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 81, \
+ 0x5122b509b66eb35cULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 82, \
+ 0xa2456a136cdd66b8ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 83, \
+ 0x448ad426d9bacd71ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 84, \
+ 0x8915a84db3759ae2ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 85, \
+ 0x122b509b66eb35c5ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 86, \
+ 0x2456a136cdd66b8aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 87, \
+ 0x48ad426d9bacd714ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 88, \
+ 0x915a84db3759ae28ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 89, \
+ 0x22b509b66eb35c51ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 90, \
+ 0x456a136cdd66b8a2ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 91, \
+ 0x8ad426d9bacd7144ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 92, \
+ 0x15a84db3759ae289ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 93, \
+ 0x2b509b66eb35c512ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 94, \
+ 0x56a136cdd66b8a24ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 95, \
+ 0xad426d9bacd71448ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 96, \
+ 0x5a84db3759ae2891ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 97, \
+ 0xb509b66eb35c5122ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 98, \
+ 0x6a136cdd66b8a245ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 99, \
+ 0xd426d9bacd71448aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 100, \
+ 0xa84db3759ae28915ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 101, \
+ 0x509b66eb35c5122bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 102, \
+ 0xa136cdd66b8a2456ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 103, \
+ 0x426d9bacd71448adULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 104, \
+ 0x84db3759ae28915aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 105, \
+ 0x09b66eb35c5122b5ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 106, \
+ 0x136cdd66b8a2456aULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 107, \
+ 0x26d9bacd71448ad4ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 108, \
+ 0x4db3759ae28915a8ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 109, \
+ 0x9b66eb35c5122b50ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 110, \
+ 0x36cdd66b8a2456a1ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 111, \
+ 0x6d9bacd71448ad42ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 112, \
+ 0xdb3759ae28915a84ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 113, \
+ 0xb66eb35c5122b509ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 114, \
+ 0x6cdd66b8a2456a13ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 115, \
+ 0xd9bacd71448ad426ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 116, \
+ 0xb3759ae28915a84dULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 117, \
+ 0x66eb35c5122b509bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 118, \
+ 0xcdd66b8a2456a136ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 119, \
+ 0x9bacd71448ad426dULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 120, \
+ 0x3759ae28915a84dbULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 121, \
+ 0x6eb35c5122b509b6ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 122, \
+ 0xdd66b8a2456a136cULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 123, \
+ 0xbacd71448ad426d9ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 124, \
+ 0x759ae28915a84db3ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 125, \
+ 0xeb35c5122b509b66ULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 126, \
+ 0xd66b8a2456a136cdULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 127, \
+ 0xacd71448ad426d9bULL); \
+ TEST_CASE (type, function, 0x59ae28915a84db37ULL, 128, \
+ 0x59ae28915a84db37ULL); \
+ } \
+ while (false)
+
+static void
+test_stdc_rotate_left_ul (void)
+{
+ if (sizeof 0ul < sizeof 0ull)
+ TEST_CASES_32 (unsigned long int, stdc_rotate_left_ul);
+ else
+ TEST_CASES_64 (unsigned long long int, stdc_rotate_left_ul);
+}
+
+static void
+test_stdc_rotate_left_ull (void)
+{
+ TEST_CASES_64 (unsigned long long int, stdc_rotate_left_ull);
+}
+
+static int
+do_test (void)
+{
+ test_stdc_rotate_left_uc ();
+ test_stdc_rotate_left_us ();
+ test_stdc_rotate_left_ui ();
+ test_stdc_rotate_left_ul ();
+ test_stdc_rotate_left_ull ();
+ return 0;
+}
+
+#include <support/test-driver.c>