LLVM
17.0.0git
lib
Support
LEB128.cpp
Go to the documentation of this file.
1
//===- LEB128.cpp - LEB128 utility functions implementation -----*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements some utility functions for encoding SLEB128 and
10
// ULEB128 values.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#include "
llvm/Support/LEB128.h
"
15
16
namespace
llvm
{
17
18
/// Utility function to get the size of the ULEB128-encoded value.
19
unsigned
getULEB128Size
(
uint64_t
Value
) {
20
unsigned
Size = 0;
21
do
{
22
Value
>>= 7;
23
Size +=
sizeof
(int8_t);
24
}
while
(
Value
);
25
return
Size;
26
}
27
28
/// Utility function to get the size of the SLEB128-encoded value.
29
unsigned
getSLEB128Size
(int64_t
Value
) {
30
unsigned
Size = 0;
31
int
Sign =
Value
>> (8 *
sizeof
(
Value
) - 1);
32
bool
IsMore;
33
34
do
{
35
unsigned
Byte =
Value
& 0x7f;
36
Value
>>= 7;
37
IsMore =
Value
!= Sign || ((Byte ^ Sign) & 0x40) != 0;
38
Size +=
sizeof
(int8_t);
39
}
while
(IsMore);
40
return
Size;
41
}
42
43
}
// namespace llvm
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::getULEB128Size
unsigned getULEB128Size(uint64_t Value)
Utility function to get the size of the ULEB128-encoded value.
Definition:
LEB128.cpp:19
uint64_t
LEB128.h
llvm::getSLEB128Size
unsigned getSLEB128Size(int64_t Value)
Utility function to get the size of the SLEB128-encoded value.
Definition:
LEB128.cpp:29
llvm::TargetStackID::Value
Value
Definition:
TargetFrameLowering.h:27
llvm::Value
LLVM Value Representation.
Definition:
Value.h:74
Generated on Sat Jan 28 2023 09:50:29 for LLVM by
1.8.17