μHAL (v2.8.17)
Part of the IPbus software repository
Toggle main menu visibility
Main Page
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
w
x
Variables
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
z
Typedefs
Enumerations
Enumerator
b
c
d
e
f
h
i
m
n
r
s
u
v
w
x
y
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Typedefs
_
a
b
c
d
f
h
i
k
m
o
p
r
s
t
u
v
w
Enumerations
Enumerator
a
b
c
f
n
t
v
Related Functions
c
d
g
h
i
l
n
o
p
q
r
s
t
v
x
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
Typedefs
a
b
c
d
e
f
h
i
l
m
n
o
r
s
t
v
w
x
Enumerations
Enumerator
a
c
e
i
l
n
o
p
x
y
Macros
a
b
c
d
e
g
m
n
p
s
t
u
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
uhal
src
common
utilities
bits.cpp
Go to the documentation of this file.
1
/*
2
---------------------------------------------------------------------------
3
4
This file is part of uHAL.
5
6
uHAL is a hardware access library and programming framework
7
originally developed for upgrades of the Level-1 trigger of the CMS
8
experiment at CERN.
9
10
uHAL is free software: you can redistribute it and/or modify
11
it under the terms of the GNU General Public License as published by
12
the Free Software Foundation, either version 3 of the License, or
13
(at your option) any later version.
14
15
uHAL is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU General Public License for more details.
19
20
You should have received a copy of the GNU General Public License
21
along with uHAL. If not, see <http://www.gnu.org/licenses/>.
22
23
24
Andrew Rose, Imperial College, London
25
email: awr01 <AT> imperial.ac.uk
26
27
Marc Magrans de Abril, CERN
28
email: marc.magrans.de.abril <AT> cern.ch
29
30
Tom Williams, Rutherford Appleton Laboratory, Oxfordshire
31
email: tom.williams <AT> cern.ch
32
33
---------------------------------------------------------------------------
34
*/
35
36
#include "
uhal/utilities/bits.hpp
"
37
38
39
40
namespace
uhal
41
{
42
namespace
utilities
43
{
44
unsigned
int
TrailingRightBits
( uint32_t aValue )
45
{
46
// unsigned int lReturn = sizeof ( aValue ) * 8; // lReturn will be the number of zero bits on the right
47
unsigned
int
lReturn =
sizeof
( aValue ) << 3;
// lReturn will be the number of zero bits on the right
48
aValue &= -signed ( aValue );
49
50
if
( aValue )
51
{
52
lReturn--;
53
}
54
55
if
( aValue & 0x0000FFFF )
56
{
57
lReturn -= 16;
58
}
59
60
if
( aValue & 0x00FF00FF )
61
{
62
lReturn -= 8;
63
}
64
65
if
( aValue & 0x0F0F0F0F )
66
{
67
lReturn -= 4;
68
}
69
70
if
( aValue & 0x33333333 )
71
{
72
lReturn -= 2;
73
}
74
75
if
( aValue & 0x55555555 )
76
{
77
lReturn -= 1;
78
}
79
80
return
lReturn;
81
}
82
}
83
}
bits.hpp
uhal::utilities::TrailingRightBits
unsigned int TrailingRightBits(uint32_t aValue)
Helper function to calculate the number of zero-bits at the righthand end of a 32-bit number.
Definition:
bits.cpp:44
uhal
Definition:
HttpResponseGrammar.hpp:49
Generated on Sat Mar 15 2025 17:14:12 for μHAL (v2.8.17) by
1.9.5