OpenCoverage

bitrotate.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/bitrotate.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/* bitrotate.h - Rotate bits in integers-
2 Copyright (C) 2008-2018 Free Software Foundation, Inc.-
3-
4 This program is free software: you can redistribute it and/or modify-
5 it under the terms of the GNU General Public License as published by-
6 the Free Software Foundation; either version 3 of the License, or-
7 (at your option) any later version.-
8-
9 This program is distributed in the hope that it will be useful,-
10 but WITHOUT ANY WARRANTY; without even the implied warranty of-
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
12 GNU General Public License for more details.-
13-
14 You should have received a copy of the GNU General Public License-
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
16-
17/* Written by Simon Josefsson <simon@josefsson.org>, 2008. */-
18-
19#ifndef _GL_BITROTATE_H-
20#define _GL_BITROTATE_H-
21-
22#include <limits.h>-
23#include <stdint.h>-
24#include <sys/types.h>-
25-
26#ifndef _GL_INLINE_HEADER_BEGIN-
27 #error "Please include config.h first."-
28#endif-
29_GL_INLINE_HEADER_BEGIN-
30#ifndef BITROTATE_INLINE-
31# define BITROTATE_INLINE _GL_INLINE-
32#endif-
33-
34#ifdef UINT64_MAX-
35/* Given an unsigned 64-bit argument X, return the value corresponding-
36 to rotating the bits N steps to the left. N must be between 1 and-
37 63 inclusive. */-
38BITROTATE_INLINE uint64_t-
39rotl64 (uint64_t x, int n)-
40{-
41 return ((x << n) | (x >> (64 - n))) & UINT64_MAX;
never executed: return ((x << n) | (x >> (64 - n))) & (18446744073709551615UL) ;
0
42}-
43-
44/* Given an unsigned 64-bit argument X, return the value corresponding-
45 to rotating the bits N steps to the right. N must be between 1 to-
46 63 inclusive.*/-
47BITROTATE_INLINE uint64_t-
48rotr64 (uint64_t x, int n)-
49{-
50 return ((x >> n) | (x << (64 - n))) & UINT64_MAX;
never executed: return ((x >> n) | (x << (64 - n))) & (18446744073709551615UL) ;
0
51}-
52#endif-
53-
54/* Given an unsigned 32-bit argument X, return the value corresponding-
55 to rotating the bits N steps to the left. N must be between 1 and-
56 31 inclusive. */-
57BITROTATE_INLINE uint32_t-
58rotl32 (uint32_t x, int n)-
59{-
60 return ((x << n) | (x >> (32 - n))) & UINT32_MAX;
never executed: return ((x << n) | (x >> (32 - n))) & (4294967295U) ;
0
61}-
62-
63/* Given an unsigned 32-bit argument X, return the value corresponding-
64 to rotating the bits N steps to the right. N must be between 1 to-
65 31 inclusive.*/-
66BITROTATE_INLINE uint32_t-
67rotr32 (uint32_t x, int n)-
68{-
69 return ((x >> n) | (x << (32 - n))) & UINT32_MAX;
never executed: return ((x >> n) | (x << (32 - n))) & (4294967295U) ;
0
70}-
71-
72/* Given a size_t argument X, return the value corresponding-
73 to rotating the bits N steps to the left. N must be between 1 and-
74 (CHAR_BIT * sizeof (size_t) - 1) inclusive. */-
75BITROTATE_INLINE size_t-
76rotl_sz (size_t x, int n)-
77{-
78 return ((x << n) | (x >> ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
never executed: return ((x << n) | (x >> ((8 * sizeof x) - n))) & (18446744073709551615UL) ;
0
79}-
80-
81/* Given a size_t argument X, return the value corresponding-
82 to rotating the bits N steps to the right. N must be between 1 to-
83 (CHAR_BIT * sizeof (size_t) - 1) inclusive. */-
84BITROTATE_INLINE size_t-
85rotr_sz (size_t x, int n)-
86{-
87 return ((x >> n) | (x << ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
never executed: return ((x >> n) | (x << ((8 * sizeof x) - n))) & (18446744073709551615UL) ;
0
88}-
89-
90/* Given an unsigned 16-bit argument X, return the value corresponding-
91 to rotating the bits N steps to the left. N must be between 1 to-
92 15 inclusive, but on most relevant targets N can also be 0 and 16-
93 because 'int' is at least 32 bits and the arguments must widen-
94 before shifting. */-
95BITROTATE_INLINE uint16_t-
96rotl16 (uint16_t x, int n)-
97{-
98 return ((x << n) | (x >> (16 - n))) & UINT16_MAX;
never executed: return ((x << n) | (x >> (16 - n))) & (65535) ;
0
99}-
100-
101/* Given an unsigned 16-bit argument X, return the value corresponding-
102 to rotating the bits N steps to the right. N must be in 1 to 15-
103 inclusive, but on most relevant targets N can also be 0 and 16-
104 because 'int' is at least 32 bits and the arguments must widen-
105 before shifting. */-
106BITROTATE_INLINE uint16_t-
107rotr16 (uint16_t x, int n)-
108{-
109 return ((x >> n) | (x << (16 - n))) & UINT16_MAX;
never executed: return ((x >> n) | (x << (16 - n))) & (65535) ;
0
110}-
111-
112/* Given an unsigned 8-bit argument X, return the value corresponding-
113 to rotating the bits N steps to the left. N must be between 1 to 7-
114 inclusive, but on most relevant targets N can also be 0 and 8-
115 because 'int' is at least 32 bits and the arguments must widen-
116 before shifting. */-
117BITROTATE_INLINE uint8_t-
118rotl8 (uint8_t x, int n)-
119{-
120 return ((x << n) | (x >> (8 - n))) & UINT8_MAX;
never executed: return ((x << n) | (x >> (8 - n))) & (255) ;
0
121}-
122-
123/* Given an unsigned 8-bit argument X, return the value corresponding-
124 to rotating the bits N steps to the right. N must be in 1 to 7-
125 inclusive, but on most relevant targets N can also be 0 and 8-
126 because 'int' is at least 32 bits and the arguments must widen-
127 before shifting. */-
128BITROTATE_INLINE uint8_t-
129rotr8 (uint8_t x, int n)-
130{-
131 return ((x >> n) | (x << (8 - n))) & UINT8_MAX;
never executed: return ((x >> n) | (x << (8 - n))) & (255) ;
0
132}-
133-
134_GL_INLINE_HEADER_END-
135-
136#endif /* _GL_BITROTATE_H */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2