1a9de470cSBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2a9de470cSBruce Richardson * Copyright(c) 2010-2014 Intel Corporation
3a9de470cSBruce Richardson */
4a9de470cSBruce Richardson
5a9de470cSBruce Richardson #include <stdio.h>
6a9de470cSBruce Richardson #include <stdint.h>
7a9de470cSBruce Richardson #include <unistd.h>
8a9de470cSBruce Richardson #include <inttypes.h>
9a9de470cSBruce Richardson
10a9de470cSBruce Richardson #include <rte_byteorder.h>
11a9de470cSBruce Richardson
12a9de470cSBruce Richardson #include "test.h"
13a9de470cSBruce Richardson
14a9de470cSBruce Richardson static volatile uint16_t u16 = 0x1337;
15a9de470cSBruce Richardson static volatile uint32_t u32 = 0xdeadbeefUL;
16a9de470cSBruce Richardson static volatile uint64_t u64 = 0xdeadcafebabefaceULL;
17a9de470cSBruce Richardson
18a9de470cSBruce Richardson /*
19a9de470cSBruce Richardson * Byteorder functions
20a9de470cSBruce Richardson * ===================
21a9de470cSBruce Richardson *
22a9de470cSBruce Richardson * - check that optimized byte swap functions are working for each
23a9de470cSBruce Richardson * size (16, 32, 64 bits)
24a9de470cSBruce Richardson */
25a9de470cSBruce Richardson
26a9de470cSBruce Richardson static int
test_byteorder(void)27a9de470cSBruce Richardson test_byteorder(void)
28a9de470cSBruce Richardson {
29a9de470cSBruce Richardson uint16_t res_u16;
30a9de470cSBruce Richardson uint32_t res_u32;
31a9de470cSBruce Richardson uint64_t res_u64;
32a9de470cSBruce Richardson
33a9de470cSBruce Richardson res_u16 = rte_bswap16(u16);
34a9de470cSBruce Richardson printf("%"PRIx16" -> %"PRIx16"\n", u16, res_u16);
35a9de470cSBruce Richardson if (res_u16 != 0x3713)
36a9de470cSBruce Richardson return -1;
37a9de470cSBruce Richardson
38a9de470cSBruce Richardson res_u32 = rte_bswap32(u32);
39a9de470cSBruce Richardson printf("%"PRIx32" -> %"PRIx32"\n", u32, res_u32);
40a9de470cSBruce Richardson if (res_u32 != 0xefbeaddeUL)
41a9de470cSBruce Richardson return -1;
42a9de470cSBruce Richardson
43a9de470cSBruce Richardson res_u64 = rte_bswap64(u64);
44a9de470cSBruce Richardson printf("%"PRIx64" -> %"PRIx64"\n", u64, res_u64);
45a9de470cSBruce Richardson if (res_u64 != 0xcefabebafecaaddeULL)
46a9de470cSBruce Richardson return -1;
47a9de470cSBruce Richardson
48a9de470cSBruce Richardson res_u16 = rte_bswap16(0x1337);
49987d40a0SJie Zhou printf("const %"PRIx16" -> %"PRIx16"\n", (uint16_t)0x1337, res_u16);
50a9de470cSBruce Richardson if (res_u16 != 0x3713)
51a9de470cSBruce Richardson return -1;
52a9de470cSBruce Richardson
53a9de470cSBruce Richardson res_u32 = rte_bswap32(0xdeadbeefUL);
54a9de470cSBruce Richardson printf("const %"PRIx32" -> %"PRIx32"\n", (uint32_t) 0xdeadbeef, res_u32);
55a9de470cSBruce Richardson if (res_u32 != 0xefbeaddeUL)
56a9de470cSBruce Richardson return -1;
57a9de470cSBruce Richardson
58a9de470cSBruce Richardson res_u64 = rte_bswap64(0xdeadcafebabefaceULL);
59a9de470cSBruce Richardson printf("const %"PRIx64" -> %"PRIx64"\n", (uint64_t) 0xdeadcafebabefaceULL, res_u64);
60a9de470cSBruce Richardson if (res_u64 != 0xcefabebafecaaddeULL)
61a9de470cSBruce Richardson return -1;
62a9de470cSBruce Richardson
63a9de470cSBruce Richardson return 0;
64a9de470cSBruce Richardson }
65a9de470cSBruce Richardson
66*e0a8442cSBruce Richardson REGISTER_FAST_TEST(byteorder_autotest, true, true, test_byteorder);
67