Coverage Report

Created: 2022-06-23 06:44

/src/botan/build/include/botan/internal/rotate.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* Word Rotation Operations
3
* (C) 1999-2008,2017 Jack Lloyd
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#ifndef BOTAN_WORD_ROTATE_H_
9
#define BOTAN_WORD_ROTATE_H_
10
11
#include <botan/types.h>
12
13
namespace Botan {
14
15
/**
16
* Bit rotation left by a compile-time constant amount
17
* @param input the input word
18
* @return input rotated left by ROT bits
19
*/
20
template<size_t ROT, typename T>
21
inline constexpr T rotl(T input)
22
29.5M
   {
23
29.5M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
29.5M
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
29.5M
   }
Unexecuted instantiation: unsigned int Botan::rotl<3ul, unsigned int>(unsigned int)
unsigned int Botan::rotl<7ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<11ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
Unexecuted instantiation: unsigned int Botan::rotl<19ul, unsigned int>(unsigned int)
unsigned int Botan::rotl<5ul, unsigned int>(unsigned int)
Line
Count
Source
22
14.6M
   {
23
14.6M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
14.6M
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
14.6M
   }
unsigned int Botan::rotl<9ul, unsigned int>(unsigned int)
Line
Count
Source
22
13.8k
   {
23
13.8k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
13.8k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
13.8k
   }
Unexecuted instantiation: unsigned int Botan::rotl<13ul, unsigned int>(unsigned int)
unsigned int Botan::rotl<15ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<12ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<17ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<22ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<14ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<20ul, unsigned int>(unsigned int)
Line
Count
Source
22
13.8k
   {
23
13.8k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
13.8k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
13.8k
   }
unsigned int Botan::rotl<4ul, unsigned int>(unsigned int)
Line
Count
Source
22
13.8k
   {
23
13.8k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
13.8k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
13.8k
   }
unsigned int Botan::rotl<16ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<23ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<6ul, unsigned int>(unsigned int)
Line
Count
Source
22
13.8k
   {
23
13.8k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
13.8k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
13.8k
   }
unsigned int Botan::rotl<10ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
unsigned int Botan::rotl<21ul, unsigned int>(unsigned int)
Line
Count
Source
22
9.74k
   {
23
9.74k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
9.74k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
9.74k
   }
Unexecuted instantiation: unsigned int Botan::rotl<8ul, unsigned int>(unsigned int)
unsigned int Botan::rotl<1ul, unsigned int>(unsigned int)
Line
Count
Source
22
18.1k
   {
23
18.1k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
18.1k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
18.1k
   }
unsigned int Botan::rotl<30ul, unsigned int>(unsigned int)
Line
Count
Source
22
14.6M
   {
23
14.6M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
14.6M
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
14.6M
   }
Unexecuted instantiation: unsigned long Botan::rotl<1ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<44ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<43ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<21ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<14ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<28ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<20ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<3ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<45ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<61ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<6ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<25ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<8ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<18ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<27ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<36ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<10ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<15ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<56ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<62ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<55ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<39ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<41ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<2ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<46ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<19ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<37ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<33ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<42ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<17ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<49ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<9ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<54ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<30ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<34ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<24ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<13ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<50ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<29ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<35ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<22ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned int Botan::rotl<27ul, unsigned int>(unsigned int)
unsigned int Botan::rotl<18ul, unsigned int>(unsigned int)
Line
Count
Source
22
4.15k
   {
23
4.15k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
24
4.15k
   return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
25
4.15k
   }
Unexecuted instantiation: unsigned int Botan::rotl<2ul, unsigned int>(unsigned int)
Unexecuted instantiation: unsigned int Botan::rotl<24ul, unsigned int>(unsigned int)
Unexecuted instantiation: unsigned long Botan::rotl<16ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotl<32ul, unsigned long>(unsigned long)
26
27
/**
28
* Bit rotation right by a compile-time constant amount
29
* @param input the input word
30
* @return input rotated right by ROT bits
31
*/
32
template<size_t ROT, typename T>
33
inline constexpr T rotr(T input)
34
704M
   {
35
704M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
704M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
704M
   }
unsigned int Botan::rotr<2ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<13ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<22ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<6ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<11ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<25ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<17ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<19ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<7ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned int Botan::rotr<18ul, unsigned int>(unsigned int)
Line
Count
Source
34
58.9M
   {
35
58.9M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
58.9M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
58.9M
   }
unsigned long Botan::rotr<14ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<18ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<41ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<28ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<34ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<39ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<19ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<61ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<1ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
unsigned long Botan::rotr<8ul, unsigned long>(unsigned long)
Line
Count
Source
34
11.4M
   {
35
11.4M
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
11.4M
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
11.4M
   }
Unexecuted instantiation: unsigned long Botan::rotr<16ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<24ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<32ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<40ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<48ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<56ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<35ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<22ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<25ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<29ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<43ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<13ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<50ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<10ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<17ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<30ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<44ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<9ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<54ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<49ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<36ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<33ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<27ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<42ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<46ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<37ul, unsigned long>(unsigned long)
Unexecuted instantiation: unsigned long Botan::rotr<63ul, unsigned long>(unsigned long)
unsigned int Botan::rotr<20ul, unsigned int>(unsigned int)
Line
Count
Source
34
4.15k
   {
35
4.15k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
4.15k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
4.15k
   }
unsigned int Botan::rotr<4ul, unsigned int>(unsigned int)
Line
Count
Source
34
203k
   {
35
203k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
203k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
203k
   }
unsigned int Botan::rotr<1ul, unsigned int>(unsigned int)
Line
Count
Source
34
4.15k
   {
35
4.15k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
4.15k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
4.15k
   }
unsigned int Botan::rotr<9ul, unsigned int>(unsigned int)
Line
Count
Source
34
4.15k
   {
35
4.15k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
4.15k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
4.15k
   }
unsigned int Botan::rotr<8ul, unsigned int>(unsigned int)
Line
Count
Source
34
3.08k
   {
35
3.08k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
3.08k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
3.08k
   }
Unexecuted instantiation: unsigned int Botan::rotr<5ul, unsigned int>(unsigned int)
Unexecuted instantiation: unsigned int Botan::rotr<3ul, unsigned int>(unsigned int)
unsigned int Botan::rotr<16ul, unsigned int>(unsigned int)
Line
Count
Source
34
33.3k
   {
35
33.3k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
33.3k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
33.3k
   }
unsigned int Botan::rotr<24ul, unsigned int>(unsigned int)
Line
Count
Source
34
3.08k
   {
35
3.08k
   static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
36
3.08k
   return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
37
3.08k
   }
38
39
/**
40
* Bit rotation left, variable rotation amount
41
* @param input the input word
42
* @param rot the number of bits to rotate, must be between 0 and sizeof(T)*8-1
43
* @return input rotated left by rot bits
44
*/
45
template<typename T>
46
inline constexpr T rotl_var(T input, size_t rot)
47
   {
48
   return rot ? static_cast<T>((input << rot) | (input >> (sizeof(T)*8 - rot))) : input;
49
   }
50
51
/**
52
* Bit rotation right, variable rotation amount
53
* @param input the input word
54
* @param rot the number of bits to rotate, must be between 0 and sizeof(T)*8-1
55
* @return input rotated right by rot bits
56
*/
57
template<typename T>
58
inline constexpr T rotr_var(T input, size_t rot)
59
   {
60
   return rot ? static_cast<T>((input >> rot) | (input << (sizeof(T)*8 - rot))) : input;
61
   }
62
63
#if defined(BOTAN_USE_GCC_INLINE_ASM)
64
65
#if defined(BOTAN_TARGET_ARCH_IS_X86_64) || defined(BOTAN_TARGET_ARCH_IS_X86_32)
66
67
template<>
68
inline uint32_t rotl_var(uint32_t input, size_t rot)
69
0
   {
70
0
   asm("roll %1,%0"
71
0
       : "+r" (input)
72
0
       : "c" (static_cast<uint8_t>(rot))
73
0
       : "cc");
74
0
   return input;
75
0
   }
76
77
template<>
78
inline uint32_t rotr_var(uint32_t input, size_t rot)
79
0
   {
80
0
   asm("rorl %1,%0"
81
0
       : "+r" (input)
82
0
       : "c" (static_cast<uint8_t>(rot))
83
0
       : "cc");
84
0
   return input;
85
0
   }
86
87
#endif
88
89
#endif
90
91
}
92
93
#endif