/src/capstonenext/MathExtras.h
Line | Count | Source |
1 | | //===-- llvm/Support/MathExtras.h - Useful math functions -------*- C++ -*-===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // |
10 | | // This file contains some functions that are useful for math stuff. |
11 | | // |
12 | | //===----------------------------------------------------------------------===// |
13 | | |
14 | | /* Capstone Disassembly Engine */ |
15 | | /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */ |
16 | | |
17 | | #ifndef CS_LLVM_SUPPORT_MATHEXTRAS_H |
18 | | #define CS_LLVM_SUPPORT_MATHEXTRAS_H |
19 | | |
20 | | #if defined(_WIN32_WCE) && (_WIN32_WCE < 0x800) |
21 | | #include "windowsce/intrin.h" |
22 | | #elif defined(_MSC_VER) |
23 | | #include <intrin.h> |
24 | | #endif |
25 | | |
26 | | #ifndef __cplusplus |
27 | | #ifdef _MSC_VER |
28 | | #define inline /* inline */ |
29 | | #endif |
30 | | #endif |
31 | | |
32 | | #include <limits.h> |
33 | | |
34 | | // NOTE: The following support functions use the _32/_64 extensions instead of |
35 | | // type overloading so that signed and unsigned integers can be used without |
36 | | // ambiguity. |
37 | | |
38 | | /// Hi_32 - This function returns the high 32 bits of a 64 bit value. |
39 | | static inline uint32_t Hi_32(uint64_t Value) |
40 | 0 | { |
41 | 0 | return (uint32_t)(Value >> 32); |
42 | 0 | } Unexecuted instantiation: SparcModule.c:Hi_32 Unexecuted instantiation: ARMMapping.c:Hi_32 Unexecuted instantiation: AArch64Mapping.c:Hi_32 Unexecuted instantiation: PPCMapping.c:Hi_32 Unexecuted instantiation: SparcMapping.c:Hi_32 Unexecuted instantiation: XCoreDisassembler.c:Hi_32 Unexecuted instantiation: XCoreInstPrinter.c:Hi_32 Unexecuted instantiation: M68KDisassembler.c:Hi_32 Unexecuted instantiation: TMS320C64xDisassembler.c:Hi_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:Hi_32 Unexecuted instantiation: RISCVDisassembler.c:Hi_32 Unexecuted instantiation: RISCVInstPrinter.c:Hi_32 Unexecuted instantiation: TriCoreDisassembler.c:Hi_32 Unexecuted instantiation: HPPADisassembler.c:Hi_32 Unexecuted instantiation: XtensaMapping.c:Hi_32 Unexecuted instantiation: ARMDisassembler.c:Hi_32 Unexecuted instantiation: ARMDisassemblerExtension.c:Hi_32 Unexecuted instantiation: ARMInstPrinter.c:Hi_32 Unexecuted instantiation: AArch64Disassembler.c:Hi_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:Hi_32 Unexecuted instantiation: AArch64InstPrinter.c:Hi_32 Unexecuted instantiation: MipsDisassembler.c:Hi_32 Unexecuted instantiation: PPCDisassembler.c:Hi_32 Unexecuted instantiation: PPCInstPrinter.c:Hi_32 Unexecuted instantiation: SparcDisassembler.c:Hi_32 Unexecuted instantiation: SparcDisassemblerExtension.c:Hi_32 Unexecuted instantiation: SparcInstPrinter.c:Hi_32 Unexecuted instantiation: SystemZDisassembler.c:Hi_32 Unexecuted instantiation: SystemZInstPrinter.c:Hi_32 Unexecuted instantiation: TriCoreInstPrinter.c:Hi_32 Unexecuted instantiation: LoongArchDisassembler.c:Hi_32 Unexecuted instantiation: XtensaDisassembler.c:Hi_32 Unexecuted instantiation: XtensaInstPrinter.c:Hi_32 Unexecuted instantiation: ARCDisassembler.c:Hi_32 |
43 | | |
44 | | /// Lo_32 - This function returns the low 32 bits of a 64 bit value. |
45 | | static inline uint32_t Lo_32(uint64_t Value) |
46 | 0 | { |
47 | 0 | return (uint32_t)(Value); |
48 | 0 | } Unexecuted instantiation: SparcModule.c:Lo_32 Unexecuted instantiation: ARMMapping.c:Lo_32 Unexecuted instantiation: AArch64Mapping.c:Lo_32 Unexecuted instantiation: PPCMapping.c:Lo_32 Unexecuted instantiation: SparcMapping.c:Lo_32 Unexecuted instantiation: XCoreDisassembler.c:Lo_32 Unexecuted instantiation: XCoreInstPrinter.c:Lo_32 Unexecuted instantiation: M68KDisassembler.c:Lo_32 Unexecuted instantiation: TMS320C64xDisassembler.c:Lo_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:Lo_32 Unexecuted instantiation: RISCVDisassembler.c:Lo_32 Unexecuted instantiation: RISCVInstPrinter.c:Lo_32 Unexecuted instantiation: TriCoreDisassembler.c:Lo_32 Unexecuted instantiation: HPPADisassembler.c:Lo_32 Unexecuted instantiation: XtensaMapping.c:Lo_32 Unexecuted instantiation: ARMDisassembler.c:Lo_32 Unexecuted instantiation: ARMDisassemblerExtension.c:Lo_32 Unexecuted instantiation: ARMInstPrinter.c:Lo_32 Unexecuted instantiation: AArch64Disassembler.c:Lo_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:Lo_32 Unexecuted instantiation: AArch64InstPrinter.c:Lo_32 Unexecuted instantiation: MipsDisassembler.c:Lo_32 Unexecuted instantiation: PPCDisassembler.c:Lo_32 Unexecuted instantiation: PPCInstPrinter.c:Lo_32 Unexecuted instantiation: SparcDisassembler.c:Lo_32 Unexecuted instantiation: SparcDisassemblerExtension.c:Lo_32 Unexecuted instantiation: SparcInstPrinter.c:Lo_32 Unexecuted instantiation: SystemZDisassembler.c:Lo_32 Unexecuted instantiation: SystemZInstPrinter.c:Lo_32 Unexecuted instantiation: TriCoreInstPrinter.c:Lo_32 Unexecuted instantiation: LoongArchDisassembler.c:Lo_32 Unexecuted instantiation: XtensaDisassembler.c:Lo_32 Unexecuted instantiation: XtensaInstPrinter.c:Lo_32 Unexecuted instantiation: ARCDisassembler.c:Lo_32 |
49 | | |
50 | | /// isUIntN - Checks if an unsigned integer fits into the given (dynamic) |
51 | | /// bit width. |
52 | | static inline bool isUIntN(unsigned N, uint64_t x) |
53 | 260k | { |
54 | 260k | return x == (x & (~0ULL >> (64 - N))); |
55 | 260k | } Unexecuted instantiation: SparcModule.c:isUIntN Unexecuted instantiation: ARMMapping.c:isUIntN Unexecuted instantiation: AArch64Mapping.c:isUIntN Unexecuted instantiation: PPCMapping.c:isUIntN Unexecuted instantiation: SparcMapping.c:isUIntN Unexecuted instantiation: XCoreDisassembler.c:isUIntN Unexecuted instantiation: XCoreInstPrinter.c:isUIntN Unexecuted instantiation: M68KDisassembler.c:isUIntN Unexecuted instantiation: TMS320C64xDisassembler.c:isUIntN Unexecuted instantiation: TMS320C64xInstPrinter.c:isUIntN RISCVDisassembler.c:isUIntN Line | Count | Source | 53 | 1.13k | { | 54 | 1.13k | return x == (x & (~0ULL >> (64 - N))); | 55 | 1.13k | } |
RISCVInstPrinter.c:isUIntN Line | Count | Source | 53 | 9.38k | { | 54 | 9.38k | return x == (x & (~0ULL >> (64 - N))); | 55 | 9.38k | } |
Unexecuted instantiation: TriCoreDisassembler.c:isUIntN Unexecuted instantiation: HPPADisassembler.c:isUIntN Unexecuted instantiation: XtensaMapping.c:isUIntN Unexecuted instantiation: ARMDisassembler.c:isUIntN Unexecuted instantiation: ARMDisassemblerExtension.c:isUIntN Unexecuted instantiation: ARMInstPrinter.c:isUIntN Unexecuted instantiation: AArch64Disassembler.c:isUIntN Unexecuted instantiation: AArch64DisassemblerExtension.c:isUIntN Unexecuted instantiation: AArch64InstPrinter.c:isUIntN Unexecuted instantiation: MipsDisassembler.c:isUIntN PPCDisassembler.c:isUIntN Line | Count | Source | 53 | 45.3k | { | 54 | 45.3k | return x == (x & (~0ULL >> (64 - N))); | 55 | 45.3k | } |
Unexecuted instantiation: PPCInstPrinter.c:isUIntN Unexecuted instantiation: SparcDisassembler.c:isUIntN Unexecuted instantiation: SparcDisassemblerExtension.c:isUIntN Unexecuted instantiation: SparcInstPrinter.c:isUIntN SystemZDisassembler.c:isUIntN Line | Count | Source | 53 | 129k | { | 54 | 129k | return x == (x & (~0ULL >> (64 - N))); | 55 | 129k | } |
Unexecuted instantiation: SystemZInstPrinter.c:isUIntN Unexecuted instantiation: TriCoreInstPrinter.c:isUIntN Unexecuted instantiation: LoongArchDisassembler.c:isUIntN XtensaDisassembler.c:isUIntN Line | Count | Source | 53 | 74.4k | { | 54 | 74.4k | return x == (x & (~0ULL >> (64 - N))); | 55 | 74.4k | } |
Unexecuted instantiation: XtensaInstPrinter.c:isUIntN Unexecuted instantiation: ARCDisassembler.c:isUIntN |
56 | | |
57 | | /// isIntN - Checks if an signed integer fits into the given (dynamic) |
58 | | /// bit width. |
59 | | static inline bool isIntN(unsigned N, int64_t x) |
60 | 79.8k | { |
61 | 79.8k | return N >= 64 || |
62 | 79.8k | (-(INT64_C(1) << (N - 1)) <= x && x < (INT64_C(1) << (N - 1))); |
63 | 79.8k | } Unexecuted instantiation: SparcModule.c:isIntN Unexecuted instantiation: ARMMapping.c:isIntN Unexecuted instantiation: AArch64Mapping.c:isIntN Unexecuted instantiation: PPCMapping.c:isIntN Unexecuted instantiation: SparcMapping.c:isIntN Unexecuted instantiation: XCoreDisassembler.c:isIntN Unexecuted instantiation: XCoreInstPrinter.c:isIntN Unexecuted instantiation: M68KDisassembler.c:isIntN Unexecuted instantiation: TMS320C64xDisassembler.c:isIntN Unexecuted instantiation: TMS320C64xInstPrinter.c:isIntN Unexecuted instantiation: RISCVDisassembler.c:isIntN RISCVInstPrinter.c:isIntN Line | Count | Source | 60 | 70.5k | { | 61 | 70.5k | return N >= 64 || | 62 | 70.5k | (-(INT64_C(1) << (N - 1)) <= x && x < (INT64_C(1) << (N - 1))); | 63 | 70.5k | } |
Unexecuted instantiation: TriCoreDisassembler.c:isIntN Unexecuted instantiation: HPPADisassembler.c:isIntN Unexecuted instantiation: XtensaMapping.c:isIntN Unexecuted instantiation: ARMDisassembler.c:isIntN Unexecuted instantiation: ARMDisassemblerExtension.c:isIntN Unexecuted instantiation: ARMInstPrinter.c:isIntN Unexecuted instantiation: AArch64Disassembler.c:isIntN Unexecuted instantiation: AArch64DisassemblerExtension.c:isIntN Unexecuted instantiation: AArch64InstPrinter.c:isIntN Unexecuted instantiation: MipsDisassembler.c:isIntN Unexecuted instantiation: PPCDisassembler.c:isIntN Unexecuted instantiation: PPCInstPrinter.c:isIntN Unexecuted instantiation: SparcDisassembler.c:isIntN Unexecuted instantiation: SparcDisassemblerExtension.c:isIntN Unexecuted instantiation: SparcInstPrinter.c:isIntN Unexecuted instantiation: SystemZDisassembler.c:isIntN Unexecuted instantiation: SystemZInstPrinter.c:isIntN Unexecuted instantiation: TriCoreInstPrinter.c:isIntN Unexecuted instantiation: LoongArchDisassembler.c:isIntN XtensaDisassembler.c:isIntN Line | Count | Source | 60 | 8.14k | { | 61 | 8.14k | return N >= 64 || | 62 | 8.14k | (-(INT64_C(1) << (N - 1)) <= x && x < (INT64_C(1) << (N - 1))); | 63 | 8.14k | } |
XtensaInstPrinter.c:isIntN Line | Count | Source | 60 | 1.13k | { | 61 | 1.13k | return N >= 64 || | 62 | 1.13k | (-(INT64_C(1) << (N - 1)) <= x && x < (INT64_C(1) << (N - 1))); | 63 | 1.13k | } |
Unexecuted instantiation: ARCDisassembler.c:isIntN |
64 | | |
65 | | /// isShiftedIntN - Checks if a signed integer is an N bit number shifted left by S. |
66 | | static inline bool isShiftedIntN(unsigned N, unsigned S, int64_t x) |
67 | 13.9k | { |
68 | 13.9k | return isIntN(N + S, x) && (x % (UINT64_C(1) << S) == 0); |
69 | 13.9k | } Unexecuted instantiation: SparcModule.c:isShiftedIntN Unexecuted instantiation: ARMMapping.c:isShiftedIntN Unexecuted instantiation: AArch64Mapping.c:isShiftedIntN Unexecuted instantiation: PPCMapping.c:isShiftedIntN Unexecuted instantiation: SparcMapping.c:isShiftedIntN Unexecuted instantiation: XCoreDisassembler.c:isShiftedIntN Unexecuted instantiation: XCoreInstPrinter.c:isShiftedIntN Unexecuted instantiation: M68KDisassembler.c:isShiftedIntN Unexecuted instantiation: TMS320C64xDisassembler.c:isShiftedIntN Unexecuted instantiation: TMS320C64xInstPrinter.c:isShiftedIntN Unexecuted instantiation: RISCVDisassembler.c:isShiftedIntN RISCVInstPrinter.c:isShiftedIntN Line | Count | Source | 67 | 13.9k | { | 68 | 13.9k | return isIntN(N + S, x) && (x % (UINT64_C(1) << S) == 0); | 69 | 13.9k | } |
Unexecuted instantiation: TriCoreDisassembler.c:isShiftedIntN Unexecuted instantiation: HPPADisassembler.c:isShiftedIntN Unexecuted instantiation: XtensaMapping.c:isShiftedIntN Unexecuted instantiation: ARMDisassembler.c:isShiftedIntN Unexecuted instantiation: ARMDisassemblerExtension.c:isShiftedIntN Unexecuted instantiation: ARMInstPrinter.c:isShiftedIntN Unexecuted instantiation: AArch64Disassembler.c:isShiftedIntN Unexecuted instantiation: AArch64DisassemblerExtension.c:isShiftedIntN Unexecuted instantiation: AArch64InstPrinter.c:isShiftedIntN Unexecuted instantiation: MipsDisassembler.c:isShiftedIntN Unexecuted instantiation: PPCDisassembler.c:isShiftedIntN Unexecuted instantiation: PPCInstPrinter.c:isShiftedIntN Unexecuted instantiation: SparcDisassembler.c:isShiftedIntN Unexecuted instantiation: SparcDisassemblerExtension.c:isShiftedIntN Unexecuted instantiation: SparcInstPrinter.c:isShiftedIntN Unexecuted instantiation: SystemZDisassembler.c:isShiftedIntN Unexecuted instantiation: SystemZInstPrinter.c:isShiftedIntN Unexecuted instantiation: TriCoreInstPrinter.c:isShiftedIntN Unexecuted instantiation: LoongArchDisassembler.c:isShiftedIntN Unexecuted instantiation: XtensaDisassembler.c:isShiftedIntN Unexecuted instantiation: XtensaInstPrinter.c:isShiftedIntN Unexecuted instantiation: ARCDisassembler.c:isShiftedIntN |
70 | | |
71 | | static inline bool isShiftedUIntN(unsigned N, unsigned S, uint64_t x) |
72 | 0 | { |
73 | 0 | return isUIntN(N + S, x) && (x % (UINT64_C(1) << S) == 0); |
74 | 0 | } Unexecuted instantiation: SparcModule.c:isShiftedUIntN Unexecuted instantiation: ARMMapping.c:isShiftedUIntN Unexecuted instantiation: AArch64Mapping.c:isShiftedUIntN Unexecuted instantiation: PPCMapping.c:isShiftedUIntN Unexecuted instantiation: SparcMapping.c:isShiftedUIntN Unexecuted instantiation: XCoreDisassembler.c:isShiftedUIntN Unexecuted instantiation: XCoreInstPrinter.c:isShiftedUIntN Unexecuted instantiation: M68KDisassembler.c:isShiftedUIntN Unexecuted instantiation: TMS320C64xDisassembler.c:isShiftedUIntN Unexecuted instantiation: TMS320C64xInstPrinter.c:isShiftedUIntN Unexecuted instantiation: RISCVDisassembler.c:isShiftedUIntN Unexecuted instantiation: RISCVInstPrinter.c:isShiftedUIntN Unexecuted instantiation: TriCoreDisassembler.c:isShiftedUIntN Unexecuted instantiation: HPPADisassembler.c:isShiftedUIntN Unexecuted instantiation: XtensaMapping.c:isShiftedUIntN Unexecuted instantiation: ARMDisassembler.c:isShiftedUIntN Unexecuted instantiation: ARMDisassemblerExtension.c:isShiftedUIntN Unexecuted instantiation: ARMInstPrinter.c:isShiftedUIntN Unexecuted instantiation: AArch64Disassembler.c:isShiftedUIntN Unexecuted instantiation: AArch64DisassemblerExtension.c:isShiftedUIntN Unexecuted instantiation: AArch64InstPrinter.c:isShiftedUIntN Unexecuted instantiation: MipsDisassembler.c:isShiftedUIntN Unexecuted instantiation: PPCDisassembler.c:isShiftedUIntN Unexecuted instantiation: PPCInstPrinter.c:isShiftedUIntN Unexecuted instantiation: SparcDisassembler.c:isShiftedUIntN Unexecuted instantiation: SparcDisassemblerExtension.c:isShiftedUIntN Unexecuted instantiation: SparcInstPrinter.c:isShiftedUIntN Unexecuted instantiation: SystemZDisassembler.c:isShiftedUIntN Unexecuted instantiation: SystemZInstPrinter.c:isShiftedUIntN Unexecuted instantiation: TriCoreInstPrinter.c:isShiftedUIntN Unexecuted instantiation: LoongArchDisassembler.c:isShiftedUIntN Unexecuted instantiation: XtensaDisassembler.c:isShiftedUIntN Unexecuted instantiation: XtensaInstPrinter.c:isShiftedUIntN Unexecuted instantiation: ARCDisassembler.c:isShiftedUIntN |
75 | | |
76 | | /// isMask_32 - This function returns true if the argument is a sequence of ones |
77 | | /// starting at the least significant bit with the remainder zero (32 bit |
78 | | /// version). Ex. isMask_32(0x0000FFFFU) == true. |
79 | | static inline bool isMask_32(uint32_t Value) |
80 | 0 | { |
81 | 0 | return Value && ((Value + 1) & Value) == 0; |
82 | 0 | } Unexecuted instantiation: SparcModule.c:isMask_32 Unexecuted instantiation: ARMMapping.c:isMask_32 Unexecuted instantiation: AArch64Mapping.c:isMask_32 Unexecuted instantiation: PPCMapping.c:isMask_32 Unexecuted instantiation: SparcMapping.c:isMask_32 Unexecuted instantiation: XCoreDisassembler.c:isMask_32 Unexecuted instantiation: XCoreInstPrinter.c:isMask_32 Unexecuted instantiation: M68KDisassembler.c:isMask_32 Unexecuted instantiation: TMS320C64xDisassembler.c:isMask_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:isMask_32 Unexecuted instantiation: RISCVDisassembler.c:isMask_32 Unexecuted instantiation: RISCVInstPrinter.c:isMask_32 Unexecuted instantiation: TriCoreDisassembler.c:isMask_32 Unexecuted instantiation: HPPADisassembler.c:isMask_32 Unexecuted instantiation: XtensaMapping.c:isMask_32 Unexecuted instantiation: ARMDisassembler.c:isMask_32 Unexecuted instantiation: ARMDisassemblerExtension.c:isMask_32 Unexecuted instantiation: ARMInstPrinter.c:isMask_32 Unexecuted instantiation: AArch64Disassembler.c:isMask_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:isMask_32 Unexecuted instantiation: AArch64InstPrinter.c:isMask_32 Unexecuted instantiation: MipsDisassembler.c:isMask_32 Unexecuted instantiation: PPCDisassembler.c:isMask_32 Unexecuted instantiation: PPCInstPrinter.c:isMask_32 Unexecuted instantiation: SparcDisassembler.c:isMask_32 Unexecuted instantiation: SparcDisassemblerExtension.c:isMask_32 Unexecuted instantiation: SparcInstPrinter.c:isMask_32 Unexecuted instantiation: SystemZDisassembler.c:isMask_32 Unexecuted instantiation: SystemZInstPrinter.c:isMask_32 Unexecuted instantiation: TriCoreInstPrinter.c:isMask_32 Unexecuted instantiation: LoongArchDisassembler.c:isMask_32 Unexecuted instantiation: XtensaDisassembler.c:isMask_32 Unexecuted instantiation: XtensaInstPrinter.c:isMask_32 Unexecuted instantiation: ARCDisassembler.c:isMask_32 |
83 | | |
84 | | /// isMask_64 - This function returns true if the argument is a sequence of ones |
85 | | /// starting at the least significant bit with the remainder zero (64 bit |
86 | | /// version). |
87 | | static inline bool isMask_64(uint64_t Value) |
88 | 4.09k | { |
89 | 4.09k | return Value && ((Value + 1) & Value) == 0; |
90 | 4.09k | } Unexecuted instantiation: SparcModule.c:isMask_64 Unexecuted instantiation: ARMMapping.c:isMask_64 Unexecuted instantiation: AArch64Mapping.c:isMask_64 Unexecuted instantiation: PPCMapping.c:isMask_64 Unexecuted instantiation: SparcMapping.c:isMask_64 Unexecuted instantiation: XCoreDisassembler.c:isMask_64 Unexecuted instantiation: XCoreInstPrinter.c:isMask_64 Unexecuted instantiation: M68KDisassembler.c:isMask_64 Unexecuted instantiation: TMS320C64xDisassembler.c:isMask_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:isMask_64 Unexecuted instantiation: RISCVDisassembler.c:isMask_64 Unexecuted instantiation: RISCVInstPrinter.c:isMask_64 Unexecuted instantiation: TriCoreDisassembler.c:isMask_64 Unexecuted instantiation: HPPADisassembler.c:isMask_64 Unexecuted instantiation: XtensaMapping.c:isMask_64 Unexecuted instantiation: ARMDisassembler.c:isMask_64 Unexecuted instantiation: ARMDisassemblerExtension.c:isMask_64 Unexecuted instantiation: ARMInstPrinter.c:isMask_64 Unexecuted instantiation: AArch64Disassembler.c:isMask_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:isMask_64 AArch64InstPrinter.c:isMask_64 Line | Count | Source | 88 | 4.09k | { | 89 | 4.09k | return Value && ((Value + 1) & Value) == 0; | 90 | 4.09k | } |
Unexecuted instantiation: MipsDisassembler.c:isMask_64 Unexecuted instantiation: PPCDisassembler.c:isMask_64 Unexecuted instantiation: PPCInstPrinter.c:isMask_64 Unexecuted instantiation: SparcDisassembler.c:isMask_64 Unexecuted instantiation: SparcDisassemblerExtension.c:isMask_64 Unexecuted instantiation: SparcInstPrinter.c:isMask_64 Unexecuted instantiation: SystemZDisassembler.c:isMask_64 Unexecuted instantiation: SystemZInstPrinter.c:isMask_64 Unexecuted instantiation: TriCoreInstPrinter.c:isMask_64 Unexecuted instantiation: LoongArchDisassembler.c:isMask_64 Unexecuted instantiation: XtensaDisassembler.c:isMask_64 Unexecuted instantiation: XtensaInstPrinter.c:isMask_64 Unexecuted instantiation: ARCDisassembler.c:isMask_64 |
91 | | |
92 | | /// isShiftedMask_32 - This function returns true if the argument contains a |
93 | | /// sequence of ones with the remainder zero (32 bit version.) |
94 | | /// Ex. isShiftedMask_32(0x0000FF00U) == true. |
95 | | static inline bool isShiftedMask_32(uint32_t Value) |
96 | 0 | { |
97 | 0 | return isMask_32((Value - 1) | Value); |
98 | 0 | } Unexecuted instantiation: SparcModule.c:isShiftedMask_32 Unexecuted instantiation: ARMMapping.c:isShiftedMask_32 Unexecuted instantiation: AArch64Mapping.c:isShiftedMask_32 Unexecuted instantiation: PPCMapping.c:isShiftedMask_32 Unexecuted instantiation: SparcMapping.c:isShiftedMask_32 Unexecuted instantiation: XCoreDisassembler.c:isShiftedMask_32 Unexecuted instantiation: XCoreInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: M68KDisassembler.c:isShiftedMask_32 Unexecuted instantiation: TMS320C64xDisassembler.c:isShiftedMask_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: RISCVDisassembler.c:isShiftedMask_32 Unexecuted instantiation: RISCVInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: TriCoreDisassembler.c:isShiftedMask_32 Unexecuted instantiation: HPPADisassembler.c:isShiftedMask_32 Unexecuted instantiation: XtensaMapping.c:isShiftedMask_32 Unexecuted instantiation: ARMDisassembler.c:isShiftedMask_32 Unexecuted instantiation: ARMDisassemblerExtension.c:isShiftedMask_32 Unexecuted instantiation: ARMInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: AArch64Disassembler.c:isShiftedMask_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:isShiftedMask_32 Unexecuted instantiation: AArch64InstPrinter.c:isShiftedMask_32 Unexecuted instantiation: MipsDisassembler.c:isShiftedMask_32 Unexecuted instantiation: PPCDisassembler.c:isShiftedMask_32 Unexecuted instantiation: PPCInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: SparcDisassembler.c:isShiftedMask_32 Unexecuted instantiation: SparcDisassemblerExtension.c:isShiftedMask_32 Unexecuted instantiation: SparcInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: SystemZDisassembler.c:isShiftedMask_32 Unexecuted instantiation: SystemZInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: TriCoreInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: LoongArchDisassembler.c:isShiftedMask_32 Unexecuted instantiation: XtensaDisassembler.c:isShiftedMask_32 Unexecuted instantiation: XtensaInstPrinter.c:isShiftedMask_32 Unexecuted instantiation: ARCDisassembler.c:isShiftedMask_32 |
99 | | |
100 | | /// isShiftedMask_64 - This function returns true if the argument contains a |
101 | | /// sequence of ones with the remainder zero (64 bit version.) |
102 | | static inline bool isShiftedMask_64(uint64_t Value) |
103 | 4.09k | { |
104 | 4.09k | return isMask_64((Value - 1) | Value); |
105 | 4.09k | } Unexecuted instantiation: SparcModule.c:isShiftedMask_64 Unexecuted instantiation: ARMMapping.c:isShiftedMask_64 Unexecuted instantiation: AArch64Mapping.c:isShiftedMask_64 Unexecuted instantiation: PPCMapping.c:isShiftedMask_64 Unexecuted instantiation: SparcMapping.c:isShiftedMask_64 Unexecuted instantiation: XCoreDisassembler.c:isShiftedMask_64 Unexecuted instantiation: XCoreInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: M68KDisassembler.c:isShiftedMask_64 Unexecuted instantiation: TMS320C64xDisassembler.c:isShiftedMask_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: RISCVDisassembler.c:isShiftedMask_64 Unexecuted instantiation: RISCVInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: TriCoreDisassembler.c:isShiftedMask_64 Unexecuted instantiation: HPPADisassembler.c:isShiftedMask_64 Unexecuted instantiation: XtensaMapping.c:isShiftedMask_64 Unexecuted instantiation: ARMDisassembler.c:isShiftedMask_64 Unexecuted instantiation: ARMDisassemblerExtension.c:isShiftedMask_64 Unexecuted instantiation: ARMInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: AArch64Disassembler.c:isShiftedMask_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:isShiftedMask_64 AArch64InstPrinter.c:isShiftedMask_64 Line | Count | Source | 103 | 4.09k | { | 104 | 4.09k | return isMask_64((Value - 1) | Value); | 105 | 4.09k | } |
Unexecuted instantiation: MipsDisassembler.c:isShiftedMask_64 Unexecuted instantiation: PPCDisassembler.c:isShiftedMask_64 Unexecuted instantiation: PPCInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: SparcDisassembler.c:isShiftedMask_64 Unexecuted instantiation: SparcDisassemblerExtension.c:isShiftedMask_64 Unexecuted instantiation: SparcInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: SystemZDisassembler.c:isShiftedMask_64 Unexecuted instantiation: SystemZInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: TriCoreInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: LoongArchDisassembler.c:isShiftedMask_64 Unexecuted instantiation: XtensaDisassembler.c:isShiftedMask_64 Unexecuted instantiation: XtensaInstPrinter.c:isShiftedMask_64 Unexecuted instantiation: ARCDisassembler.c:isShiftedMask_64 |
106 | | |
107 | | /// isPowerOf2_32 - This function returns true if the argument is a power of |
108 | | /// two > 0. Ex. isPowerOf2_32(0x00100000U) == true (32 bit edition.) |
109 | | static inline bool isPowerOf2_32(uint32_t Value) |
110 | 0 | { |
111 | 0 | return Value && !(Value & (Value - 1)); |
112 | 0 | } Unexecuted instantiation: SparcModule.c:isPowerOf2_32 Unexecuted instantiation: ARMMapping.c:isPowerOf2_32 Unexecuted instantiation: AArch64Mapping.c:isPowerOf2_32 Unexecuted instantiation: PPCMapping.c:isPowerOf2_32 Unexecuted instantiation: SparcMapping.c:isPowerOf2_32 Unexecuted instantiation: XCoreDisassembler.c:isPowerOf2_32 Unexecuted instantiation: XCoreInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: M68KDisassembler.c:isPowerOf2_32 Unexecuted instantiation: TMS320C64xDisassembler.c:isPowerOf2_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: RISCVDisassembler.c:isPowerOf2_32 Unexecuted instantiation: RISCVInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: TriCoreDisassembler.c:isPowerOf2_32 Unexecuted instantiation: HPPADisassembler.c:isPowerOf2_32 Unexecuted instantiation: XtensaMapping.c:isPowerOf2_32 Unexecuted instantiation: ARMDisassembler.c:isPowerOf2_32 Unexecuted instantiation: ARMDisassemblerExtension.c:isPowerOf2_32 Unexecuted instantiation: ARMInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: AArch64Disassembler.c:isPowerOf2_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:isPowerOf2_32 Unexecuted instantiation: AArch64InstPrinter.c:isPowerOf2_32 Unexecuted instantiation: MipsDisassembler.c:isPowerOf2_32 Unexecuted instantiation: PPCDisassembler.c:isPowerOf2_32 Unexecuted instantiation: PPCInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: SparcDisassembler.c:isPowerOf2_32 Unexecuted instantiation: SparcDisassemblerExtension.c:isPowerOf2_32 Unexecuted instantiation: SparcInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: SystemZDisassembler.c:isPowerOf2_32 Unexecuted instantiation: SystemZInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: TriCoreInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: LoongArchDisassembler.c:isPowerOf2_32 Unexecuted instantiation: XtensaDisassembler.c:isPowerOf2_32 Unexecuted instantiation: XtensaInstPrinter.c:isPowerOf2_32 Unexecuted instantiation: ARCDisassembler.c:isPowerOf2_32 |
113 | | |
114 | | /// CountLeadingZeros_32 - this function performs the platform optimal form of |
115 | | /// counting the number of zeros from the most significant bit to the first one |
116 | | /// bit. Ex. CountLeadingZeros_32(0x00F000FF) == 8. |
117 | | /// Returns 32 if the word is zero. |
118 | | static inline unsigned CountLeadingZeros_32(uint32_t Value) |
119 | 34.9k | { |
120 | 34.9k | unsigned Count; // result |
121 | 34.9k | #if __GNUC__ >= 4 |
122 | | // PowerPC is defined for __builtin_clz(0) |
123 | 34.9k | #if !defined(__ppc__) && !defined(__ppc64__) |
124 | 34.9k | if (!Value) |
125 | 0 | return 32; |
126 | 34.9k | #endif |
127 | 34.9k | Count = __builtin_clz(Value); |
128 | | #else |
129 | | unsigned Shift; |
130 | | if (!Value) |
131 | | return 32; |
132 | | Count = 0; |
133 | | // bisection method for count leading zeros |
134 | | for (Shift = 32 >> 1; Shift; Shift >>= 1) { |
135 | | uint32_t Tmp = Value >> Shift; |
136 | | if (Tmp) { |
137 | | Value = Tmp; |
138 | | } else { |
139 | | Count |= Shift; |
140 | | } |
141 | | } |
142 | | #endif |
143 | 34.9k | return Count; |
144 | 34.9k | } Unexecuted instantiation: SparcModule.c:CountLeadingZeros_32 Unexecuted instantiation: ARMMapping.c:CountLeadingZeros_32 AArch64Mapping.c:CountLeadingZeros_32 Line | Count | Source | 119 | 17.4k | { | 120 | 17.4k | unsigned Count; // result | 121 | 17.4k | #if __GNUC__ >= 4 | 122 | | // PowerPC is defined for __builtin_clz(0) | 123 | 17.4k | #if !defined(__ppc__) && !defined(__ppc64__) | 124 | 17.4k | if (!Value) | 125 | 0 | return 32; | 126 | 17.4k | #endif | 127 | 17.4k | Count = __builtin_clz(Value); | 128 | | #else | 129 | | unsigned Shift; | 130 | | if (!Value) | 131 | | return 32; | 132 | | Count = 0; | 133 | | // bisection method for count leading zeros | 134 | | for (Shift = 32 >> 1; Shift; Shift >>= 1) { | 135 | | uint32_t Tmp = Value >> Shift; | 136 | | if (Tmp) { | 137 | | Value = Tmp; | 138 | | } else { | 139 | | Count |= Shift; | 140 | | } | 141 | | } | 142 | | #endif | 143 | 17.4k | return Count; | 144 | 17.4k | } |
Unexecuted instantiation: PPCMapping.c:CountLeadingZeros_32 Unexecuted instantiation: SparcMapping.c:CountLeadingZeros_32 Unexecuted instantiation: XCoreDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: XCoreInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: M68KDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: TMS320C64xDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: RISCVDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: RISCVInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: TriCoreDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: HPPADisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: XtensaMapping.c:CountLeadingZeros_32 Unexecuted instantiation: ARMDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: ARMDisassemblerExtension.c:CountLeadingZeros_32 Unexecuted instantiation: ARMInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: AArch64Disassembler.c:CountLeadingZeros_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountLeadingZeros_32 AArch64InstPrinter.c:CountLeadingZeros_32 Line | Count | Source | 119 | 17.4k | { | 120 | 17.4k | unsigned Count; // result | 121 | 17.4k | #if __GNUC__ >= 4 | 122 | | // PowerPC is defined for __builtin_clz(0) | 123 | 17.4k | #if !defined(__ppc__) && !defined(__ppc64__) | 124 | 17.4k | if (!Value) | 125 | 0 | return 32; | 126 | 17.4k | #endif | 127 | 17.4k | Count = __builtin_clz(Value); | 128 | | #else | 129 | | unsigned Shift; | 130 | | if (!Value) | 131 | | return 32; | 132 | | Count = 0; | 133 | | // bisection method for count leading zeros | 134 | | for (Shift = 32 >> 1; Shift; Shift >>= 1) { | 135 | | uint32_t Tmp = Value >> Shift; | 136 | | if (Tmp) { | 137 | | Value = Tmp; | 138 | | } else { | 139 | | Count |= Shift; | 140 | | } | 141 | | } | 142 | | #endif | 143 | 17.4k | return Count; | 144 | 17.4k | } |
Unexecuted instantiation: MipsDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: PPCDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: PPCInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: SparcDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: SparcDisassemblerExtension.c:CountLeadingZeros_32 Unexecuted instantiation: SparcInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: SystemZDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: SystemZInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: TriCoreInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: LoongArchDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: XtensaDisassembler.c:CountLeadingZeros_32 Unexecuted instantiation: XtensaInstPrinter.c:CountLeadingZeros_32 Unexecuted instantiation: ARCDisassembler.c:CountLeadingZeros_32 |
145 | | |
146 | | /// CountLeadingOnes_32 - this function performs the operation of |
147 | | /// counting the number of ones from the most significant bit to the first zero |
148 | | /// bit. Ex. CountLeadingOnes_32(0xFF0FFF00) == 8. |
149 | | /// Returns 32 if the word is all ones. |
150 | | static inline unsigned CountLeadingOnes_32(uint32_t Value) |
151 | 0 | { |
152 | 0 | return CountLeadingZeros_32(~Value); |
153 | 0 | } Unexecuted instantiation: SparcModule.c:CountLeadingOnes_32 Unexecuted instantiation: ARMMapping.c:CountLeadingOnes_32 Unexecuted instantiation: AArch64Mapping.c:CountLeadingOnes_32 Unexecuted instantiation: PPCMapping.c:CountLeadingOnes_32 Unexecuted instantiation: SparcMapping.c:CountLeadingOnes_32 Unexecuted instantiation: XCoreDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: XCoreInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: M68KDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: TMS320C64xDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: RISCVDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: RISCVInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: TriCoreDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: HPPADisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: XtensaMapping.c:CountLeadingOnes_32 Unexecuted instantiation: ARMDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: ARMDisassemblerExtension.c:CountLeadingOnes_32 Unexecuted instantiation: ARMInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: AArch64Disassembler.c:CountLeadingOnes_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountLeadingOnes_32 Unexecuted instantiation: AArch64InstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: MipsDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: PPCDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: PPCInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: SparcDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: SparcDisassemblerExtension.c:CountLeadingOnes_32 Unexecuted instantiation: SparcInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: SystemZDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: SystemZInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: TriCoreInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: LoongArchDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: XtensaDisassembler.c:CountLeadingOnes_32 Unexecuted instantiation: XtensaInstPrinter.c:CountLeadingOnes_32 Unexecuted instantiation: ARCDisassembler.c:CountLeadingOnes_32 |
154 | | |
155 | | /// CountLeadingZeros_64 - This function performs the platform optimal form |
156 | | /// of counting the number of zeros from the most significant bit to the first |
157 | | /// one bit (64 bit edition.) |
158 | | /// Returns 64 if the word is zero. |
159 | | static inline unsigned CountLeadingZeros_64(uint64_t Value) |
160 | 863 | { |
161 | 863 | unsigned Count; // result |
162 | 863 | #if __GNUC__ >= 4 |
163 | | // PowerPC is defined for __builtin_clzll(0) |
164 | 863 | #if !defined(__ppc__) && !defined(__ppc64__) |
165 | 863 | if (!Value) |
166 | 0 | return 64; |
167 | 863 | #endif |
168 | 863 | Count = __builtin_clzll(Value); |
169 | | #else |
170 | | #ifndef _MSC_VER |
171 | | unsigned Shift; |
172 | | if (sizeof(long) == sizeof(int64_t)) { |
173 | | if (!Value) |
174 | | return 64; |
175 | | Count = 0; |
176 | | // bisection method for count leading zeros |
177 | | for (Shift = 64 >> 1; Shift; Shift >>= 1) { |
178 | | uint64_t Tmp = Value >> Shift; |
179 | | if (Tmp) { |
180 | | Value = Tmp; |
181 | | } else { |
182 | | Count |= Shift; |
183 | | } |
184 | | } |
185 | | } else |
186 | | #endif |
187 | | { |
188 | | // get hi portion |
189 | | uint32_t Hi = Hi_32(Value); |
190 | | |
191 | | // if some bits in hi portion |
192 | | if (Hi) { |
193 | | // leading zeros in hi portion plus all bits in lo portion |
194 | | Count = CountLeadingZeros_32(Hi); |
195 | | } else { |
196 | | // get lo portion |
197 | | uint32_t Lo = Lo_32(Value); |
198 | | // same as 32 bit value |
199 | | Count = CountLeadingZeros_32(Lo) + 32; |
200 | | } |
201 | | } |
202 | | #endif |
203 | 863 | return Count; |
204 | 863 | } Unexecuted instantiation: SparcModule.c:CountLeadingZeros_64 Unexecuted instantiation: ARMMapping.c:CountLeadingZeros_64 Unexecuted instantiation: AArch64Mapping.c:CountLeadingZeros_64 Unexecuted instantiation: PPCMapping.c:CountLeadingZeros_64 Unexecuted instantiation: SparcMapping.c:CountLeadingZeros_64 Unexecuted instantiation: XCoreDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: XCoreInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: M68KDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: TMS320C64xDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: RISCVDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: RISCVInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: TriCoreDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: HPPADisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: XtensaMapping.c:CountLeadingZeros_64 Unexecuted instantiation: ARMDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: ARMDisassemblerExtension.c:CountLeadingZeros_64 Unexecuted instantiation: ARMInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: AArch64Disassembler.c:CountLeadingZeros_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountLeadingZeros_64 AArch64InstPrinter.c:CountLeadingZeros_64 Line | Count | Source | 160 | 863 | { | 161 | 863 | unsigned Count; // result | 162 | 863 | #if __GNUC__ >= 4 | 163 | | // PowerPC is defined for __builtin_clzll(0) | 164 | 863 | #if !defined(__ppc__) && !defined(__ppc64__) | 165 | 863 | if (!Value) | 166 | 0 | return 64; | 167 | 863 | #endif | 168 | 863 | Count = __builtin_clzll(Value); | 169 | | #else | 170 | | #ifndef _MSC_VER | 171 | | unsigned Shift; | 172 | | if (sizeof(long) == sizeof(int64_t)) { | 173 | | if (!Value) | 174 | | return 64; | 175 | | Count = 0; | 176 | | // bisection method for count leading zeros | 177 | | for (Shift = 64 >> 1; Shift; Shift >>= 1) { | 178 | | uint64_t Tmp = Value >> Shift; | 179 | | if (Tmp) { | 180 | | Value = Tmp; | 181 | | } else { | 182 | | Count |= Shift; | 183 | | } | 184 | | } | 185 | | } else | 186 | | #endif | 187 | | { | 188 | | // get hi portion | 189 | | uint32_t Hi = Hi_32(Value); | 190 | | | 191 | | // if some bits in hi portion | 192 | | if (Hi) { | 193 | | // leading zeros in hi portion plus all bits in lo portion | 194 | | Count = CountLeadingZeros_32(Hi); | 195 | | } else { | 196 | | // get lo portion | 197 | | uint32_t Lo = Lo_32(Value); | 198 | | // same as 32 bit value | 199 | | Count = CountLeadingZeros_32(Lo) + 32; | 200 | | } | 201 | | } | 202 | | #endif | 203 | 863 | return Count; | 204 | 863 | } |
Unexecuted instantiation: MipsDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: PPCDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: PPCInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: SparcDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: SparcDisassemblerExtension.c:CountLeadingZeros_64 Unexecuted instantiation: SparcInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: SystemZDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: SystemZInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: TriCoreInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: LoongArchDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: XtensaDisassembler.c:CountLeadingZeros_64 Unexecuted instantiation: XtensaInstPrinter.c:CountLeadingZeros_64 Unexecuted instantiation: ARCDisassembler.c:CountLeadingZeros_64 |
205 | | |
206 | | /// CountLeadingOnes_64 - This function performs the operation |
207 | | /// of counting the number of ones from the most significant bit to the first |
208 | | /// zero bit (64 bit edition.) |
209 | | /// Returns 64 if the word is all ones. |
210 | | static inline unsigned CountLeadingOnes_64(uint64_t Value) |
211 | 863 | { |
212 | 863 | return CountLeadingZeros_64(~Value); |
213 | 863 | } Unexecuted instantiation: SparcModule.c:CountLeadingOnes_64 Unexecuted instantiation: ARMMapping.c:CountLeadingOnes_64 Unexecuted instantiation: AArch64Mapping.c:CountLeadingOnes_64 Unexecuted instantiation: PPCMapping.c:CountLeadingOnes_64 Unexecuted instantiation: SparcMapping.c:CountLeadingOnes_64 Unexecuted instantiation: XCoreDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: XCoreInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: M68KDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: TMS320C64xDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: RISCVDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: RISCVInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: TriCoreDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: HPPADisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: XtensaMapping.c:CountLeadingOnes_64 Unexecuted instantiation: ARMDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: ARMDisassemblerExtension.c:CountLeadingOnes_64 Unexecuted instantiation: ARMInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: AArch64Disassembler.c:CountLeadingOnes_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountLeadingOnes_64 AArch64InstPrinter.c:CountLeadingOnes_64 Line | Count | Source | 211 | 863 | { | 212 | 863 | return CountLeadingZeros_64(~Value); | 213 | 863 | } |
Unexecuted instantiation: MipsDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: PPCDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: PPCInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: SparcDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: SparcDisassemblerExtension.c:CountLeadingOnes_64 Unexecuted instantiation: SparcInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: SystemZDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: SystemZInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: TriCoreInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: LoongArchDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: XtensaDisassembler.c:CountLeadingOnes_64 Unexecuted instantiation: XtensaInstPrinter.c:CountLeadingOnes_64 Unexecuted instantiation: ARCDisassembler.c:CountLeadingOnes_64 |
214 | | |
215 | | /// CountTrailingZeros_32 - this function performs the platform optimal form of |
216 | | /// counting the number of zeros from the least significant bit to the first one |
217 | | /// bit. Ex. CountTrailingZeros_32(0xFF00FF00) == 8. |
218 | | /// Returns 32 if the word is zero. |
219 | | static inline unsigned CountTrailingZeros_32(uint32_t Value) |
220 | 53.6k | { |
221 | 53.6k | #if __GNUC__ >= 4 |
222 | 53.6k | return Value ? __builtin_ctz(Value) : 32; |
223 | | #else |
224 | | static const unsigned Mod37BitPosition[] = { |
225 | | 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, |
226 | | 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, |
227 | | 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 |
228 | | }; |
229 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid |
230 | | // MSVC warning C4146 |
231 | | // return Mod37BitPosition[(-Value & Value) % 37]; |
232 | | return Mod37BitPosition[((1 + ~Value) & Value) % 37]; |
233 | | #endif |
234 | 53.6k | } Unexecuted instantiation: SparcModule.c:CountTrailingZeros_32 ARMMapping.c:CountTrailingZeros_32 Line | Count | Source | 220 | 26.6k | { | 221 | 26.6k | #if __GNUC__ >= 4 | 222 | 26.6k | return Value ? __builtin_ctz(Value) : 32; | 223 | | #else | 224 | | static const unsigned Mod37BitPosition[] = { | 225 | | 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, | 226 | | 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, | 227 | | 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 | 228 | | }; | 229 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid | 230 | | // MSVC warning C4146 | 231 | | // return Mod37BitPosition[(-Value & Value) % 37]; | 232 | | return Mod37BitPosition[((1 + ~Value) & Value) % 37]; | 233 | | #endif | 234 | 26.6k | } |
Unexecuted instantiation: AArch64Mapping.c:CountTrailingZeros_32 Unexecuted instantiation: PPCMapping.c:CountTrailingZeros_32 Unexecuted instantiation: SparcMapping.c:CountTrailingZeros_32 Unexecuted instantiation: XCoreDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: XCoreInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: M68KDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: TMS320C64xDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: RISCVDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: RISCVInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: TriCoreDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: HPPADisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: XtensaMapping.c:CountTrailingZeros_32 Unexecuted instantiation: ARMDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: ARMDisassemblerExtension.c:CountTrailingZeros_32 ARMInstPrinter.c:CountTrailingZeros_32 Line | Count | Source | 220 | 26.6k | { | 221 | 26.6k | #if __GNUC__ >= 4 | 222 | 26.6k | return Value ? __builtin_ctz(Value) : 32; | 223 | | #else | 224 | | static const unsigned Mod37BitPosition[] = { | 225 | | 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, | 226 | | 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, | 227 | | 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 | 228 | | }; | 229 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid | 230 | | // MSVC warning C4146 | 231 | | // return Mod37BitPosition[(-Value & Value) % 37]; | 232 | | return Mod37BitPosition[((1 + ~Value) & Value) % 37]; | 233 | | #endif | 234 | 26.6k | } |
Unexecuted instantiation: AArch64Disassembler.c:CountTrailingZeros_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountTrailingZeros_32 Unexecuted instantiation: AArch64InstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: MipsDisassembler.c:CountTrailingZeros_32 PPCDisassembler.c:CountTrailingZeros_32 Line | Count | Source | 220 | 403 | { | 221 | 403 | #if __GNUC__ >= 4 | 222 | 403 | return Value ? __builtin_ctz(Value) : 32; | 223 | | #else | 224 | | static const unsigned Mod37BitPosition[] = { | 225 | | 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, | 226 | | 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, | 227 | | 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 | 228 | | }; | 229 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid | 230 | | // MSVC warning C4146 | 231 | | // return Mod37BitPosition[(-Value & Value) % 37]; | 232 | | return Mod37BitPosition[((1 + ~Value) & Value) % 37]; | 233 | | #endif | 234 | 403 | } |
Unexecuted instantiation: PPCInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: SparcDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: SparcDisassemblerExtension.c:CountTrailingZeros_32 Unexecuted instantiation: SparcInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: SystemZDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: SystemZInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: TriCoreInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: LoongArchDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: XtensaDisassembler.c:CountTrailingZeros_32 Unexecuted instantiation: XtensaInstPrinter.c:CountTrailingZeros_32 Unexecuted instantiation: ARCDisassembler.c:CountTrailingZeros_32 |
235 | | |
236 | | // Count trailing zeros as in: |
237 | | // https://graphics.stanford.edu/~seander/bithacks.html#ZerosOnRightParallel |
238 | | static inline unsigned CountTrailingZeros_8(uint8_t Value) |
239 | 18.9k | { |
240 | 18.9k | uint8_t c = 8; |
241 | 18.9k | Value &= -((int8_t)Value); |
242 | 18.9k | if (Value) |
243 | 18.9k | c--; |
244 | 18.9k | if (Value & 0x0F) |
245 | 18.9k | c -= 4; |
246 | 18.9k | if (Value & 0x33) |
247 | 16.4k | c -= 2; |
248 | 18.9k | if (Value & 0x55) |
249 | 15.7k | c -= 1; |
250 | 18.9k | return c; |
251 | 18.9k | } Unexecuted instantiation: SparcModule.c:CountTrailingZeros_8 Unexecuted instantiation: ARMMapping.c:CountTrailingZeros_8 Unexecuted instantiation: AArch64Mapping.c:CountTrailingZeros_8 Unexecuted instantiation: PPCMapping.c:CountTrailingZeros_8 Unexecuted instantiation: SparcMapping.c:CountTrailingZeros_8 Unexecuted instantiation: XCoreDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: XCoreInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: M68KDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: TMS320C64xDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: RISCVDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: RISCVInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: TriCoreDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: HPPADisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: XtensaMapping.c:CountTrailingZeros_8 Unexecuted instantiation: ARMDisassembler.c:CountTrailingZeros_8 ARMDisassemblerExtension.c:CountTrailingZeros_8 Line | Count | Source | 239 | 18.9k | { | 240 | 18.9k | uint8_t c = 8; | 241 | 18.9k | Value &= -((int8_t)Value); | 242 | 18.9k | if (Value) | 243 | 18.9k | c--; | 244 | 18.9k | if (Value & 0x0F) | 245 | 18.9k | c -= 4; | 246 | 18.9k | if (Value & 0x33) | 247 | 16.4k | c -= 2; | 248 | 18.9k | if (Value & 0x55) | 249 | 15.7k | c -= 1; | 250 | 18.9k | return c; | 251 | 18.9k | } |
Unexecuted instantiation: ARMInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: AArch64Disassembler.c:CountTrailingZeros_8 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountTrailingZeros_8 Unexecuted instantiation: AArch64InstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: MipsDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: PPCDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: PPCInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: SparcDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: SparcDisassemblerExtension.c:CountTrailingZeros_8 Unexecuted instantiation: SparcInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: SystemZDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: SystemZInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: TriCoreInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: LoongArchDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: XtensaDisassembler.c:CountTrailingZeros_8 Unexecuted instantiation: XtensaInstPrinter.c:CountTrailingZeros_8 Unexecuted instantiation: ARCDisassembler.c:CountTrailingZeros_8 |
252 | | |
253 | | /// CountTrailingOnes_32 - this function performs the operation of |
254 | | /// counting the number of ones from the least significant bit to the first zero |
255 | | /// bit. Ex. CountTrailingOnes_32(0x00FF00FF) == 8. |
256 | | /// Returns 32 if the word is all ones. |
257 | | static inline unsigned CountTrailingOnes_32(uint32_t Value) |
258 | 0 | { |
259 | 0 | return CountTrailingZeros_32(~Value); |
260 | 0 | } Unexecuted instantiation: SparcModule.c:CountTrailingOnes_32 Unexecuted instantiation: ARMMapping.c:CountTrailingOnes_32 Unexecuted instantiation: AArch64Mapping.c:CountTrailingOnes_32 Unexecuted instantiation: PPCMapping.c:CountTrailingOnes_32 Unexecuted instantiation: SparcMapping.c:CountTrailingOnes_32 Unexecuted instantiation: XCoreDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: XCoreInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: M68KDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: TMS320C64xDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: RISCVDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: RISCVInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: TriCoreDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: HPPADisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: XtensaMapping.c:CountTrailingOnes_32 Unexecuted instantiation: ARMDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: ARMDisassemblerExtension.c:CountTrailingOnes_32 Unexecuted instantiation: ARMInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: AArch64Disassembler.c:CountTrailingOnes_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountTrailingOnes_32 Unexecuted instantiation: AArch64InstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: MipsDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: PPCDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: PPCInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: SparcDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: SparcDisassemblerExtension.c:CountTrailingOnes_32 Unexecuted instantiation: SparcInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: SystemZDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: SystemZInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: TriCoreInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: LoongArchDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: XtensaDisassembler.c:CountTrailingOnes_32 Unexecuted instantiation: XtensaInstPrinter.c:CountTrailingOnes_32 Unexecuted instantiation: ARCDisassembler.c:CountTrailingOnes_32 |
261 | | |
262 | | /// CountTrailingZeros_64 - This function performs the platform optimal form |
263 | | /// of counting the number of zeros from the least significant bit to the first |
264 | | /// one bit (64 bit edition.) |
265 | | /// Returns 64 if the word is zero. |
266 | | static inline unsigned CountTrailingZeros_64(uint64_t Value) |
267 | 5.60k | { |
268 | 5.60k | #if __GNUC__ >= 4 |
269 | 5.60k | return Value ? __builtin_ctzll(Value) : 64; |
270 | | #else |
271 | | static const unsigned Mod67Position[] = { |
272 | | 64, 0, 1, 39, 2, 15, 40, 23, 3, 12, 16, 59, 41, 19, |
273 | | 24, 54, 4, 64, 13, 10, 17, 62, 60, 28, 42, 30, 20, 51, |
274 | | 25, 44, 55, 47, 5, 32, 65, 38, 14, 22, 11, 58, 18, 53, |
275 | | 63, 9, 61, 27, 29, 50, 43, 46, 31, 37, 21, 57, 52, 8, |
276 | | 26, 49, 45, 36, 56, 7, 48, 35, 6, 34, 33, 0 |
277 | | }; |
278 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid |
279 | | // MSVC warning C4146 |
280 | | // return Mod67Position[(-Value & Value) % 67]; |
281 | | return Mod67Position[((1 + ~Value) & Value) % 67]; |
282 | | #endif |
283 | 5.60k | } Unexecuted instantiation: SparcModule.c:CountTrailingZeros_64 Unexecuted instantiation: ARMMapping.c:CountTrailingZeros_64 Unexecuted instantiation: AArch64Mapping.c:CountTrailingZeros_64 Unexecuted instantiation: PPCMapping.c:CountTrailingZeros_64 Unexecuted instantiation: SparcMapping.c:CountTrailingZeros_64 Unexecuted instantiation: XCoreDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: XCoreInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: M68KDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: TMS320C64xDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: RISCVDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: RISCVInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: TriCoreDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: HPPADisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: XtensaMapping.c:CountTrailingZeros_64 Unexecuted instantiation: ARMDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: ARMDisassemblerExtension.c:CountTrailingZeros_64 Unexecuted instantiation: ARMInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: AArch64Disassembler.c:CountTrailingZeros_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountTrailingZeros_64 AArch64InstPrinter.c:CountTrailingZeros_64 Line | Count | Source | 267 | 5.60k | { | 268 | 5.60k | #if __GNUC__ >= 4 | 269 | 5.60k | return Value ? __builtin_ctzll(Value) : 64; | 270 | | #else | 271 | | static const unsigned Mod67Position[] = { | 272 | | 64, 0, 1, 39, 2, 15, 40, 23, 3, 12, 16, 59, 41, 19, | 273 | | 24, 54, 4, 64, 13, 10, 17, 62, 60, 28, 42, 30, 20, 51, | 274 | | 25, 44, 55, 47, 5, 32, 65, 38, 14, 22, 11, 58, 18, 53, | 275 | | 63, 9, 61, 27, 29, 50, 43, 46, 31, 37, 21, 57, 52, 8, | 276 | | 26, 49, 45, 36, 56, 7, 48, 35, 6, 34, 33, 0 | 277 | | }; | 278 | | // Replace "-Value" by "1+~Value" in the following commented code to avoid | 279 | | // MSVC warning C4146 | 280 | | // return Mod67Position[(-Value & Value) % 67]; | 281 | | return Mod67Position[((1 + ~Value) & Value) % 67]; | 282 | | #endif | 283 | 5.60k | } |
Unexecuted instantiation: MipsDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: PPCDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: PPCInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: SparcDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: SparcDisassemblerExtension.c:CountTrailingZeros_64 Unexecuted instantiation: SparcInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: SystemZDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: SystemZInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: TriCoreInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: LoongArchDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: XtensaDisassembler.c:CountTrailingZeros_64 Unexecuted instantiation: XtensaInstPrinter.c:CountTrailingZeros_64 Unexecuted instantiation: ARCDisassembler.c:CountTrailingZeros_64 |
284 | | |
285 | | /// CountTrailingOnes_64 - This function performs the operation |
286 | | /// of counting the number of ones from the least significant bit to the first |
287 | | /// zero bit (64 bit edition.) |
288 | | /// Returns 64 if the word is all ones. |
289 | | static inline unsigned CountTrailingOnes_64(uint64_t Value) |
290 | 3.23k | { |
291 | 3.23k | return CountTrailingZeros_64(~Value); |
292 | 3.23k | } Unexecuted instantiation: SparcModule.c:CountTrailingOnes_64 Unexecuted instantiation: ARMMapping.c:CountTrailingOnes_64 Unexecuted instantiation: AArch64Mapping.c:CountTrailingOnes_64 Unexecuted instantiation: PPCMapping.c:CountTrailingOnes_64 Unexecuted instantiation: SparcMapping.c:CountTrailingOnes_64 Unexecuted instantiation: XCoreDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: XCoreInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: M68KDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: TMS320C64xDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: RISCVDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: RISCVInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: TriCoreDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: HPPADisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: XtensaMapping.c:CountTrailingOnes_64 Unexecuted instantiation: ARMDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: ARMDisassemblerExtension.c:CountTrailingOnes_64 Unexecuted instantiation: ARMInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: AArch64Disassembler.c:CountTrailingOnes_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountTrailingOnes_64 AArch64InstPrinter.c:CountTrailingOnes_64 Line | Count | Source | 290 | 3.23k | { | 291 | 3.23k | return CountTrailingZeros_64(~Value); | 292 | 3.23k | } |
Unexecuted instantiation: MipsDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: PPCDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: PPCInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: SparcDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: SparcDisassemblerExtension.c:CountTrailingOnes_64 Unexecuted instantiation: SparcInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: SystemZDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: SystemZInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: TriCoreInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: LoongArchDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: XtensaDisassembler.c:CountTrailingOnes_64 Unexecuted instantiation: XtensaInstPrinter.c:CountTrailingOnes_64 Unexecuted instantiation: ARCDisassembler.c:CountTrailingOnes_64 |
293 | | |
294 | | /// CountPopulation_32 - this function counts the number of set bits in a value. |
295 | | /// Ex. CountPopulation(0xF000F000) = 8 |
296 | | /// Returns 0 if the word is zero. |
297 | | static inline unsigned CountPopulation_32(uint32_t Value) |
298 | 0 | { |
299 | 0 | #if __GNUC__ >= 4 |
300 | 0 | return __builtin_popcount(Value); |
301 | 0 | #else |
302 | 0 | uint32_t v = Value - ((Value >> 1) & 0x55555555); |
303 | 0 | v = (v & 0x33333333) + ((v >> 2) & 0x33333333); |
304 | 0 | return (((v + (v >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; |
305 | 0 | #endif |
306 | 0 | } Unexecuted instantiation: SparcModule.c:CountPopulation_32 Unexecuted instantiation: ARMMapping.c:CountPopulation_32 Unexecuted instantiation: AArch64Mapping.c:CountPopulation_32 Unexecuted instantiation: PPCMapping.c:CountPopulation_32 Unexecuted instantiation: SparcMapping.c:CountPopulation_32 Unexecuted instantiation: XCoreDisassembler.c:CountPopulation_32 Unexecuted instantiation: XCoreInstPrinter.c:CountPopulation_32 Unexecuted instantiation: M68KDisassembler.c:CountPopulation_32 Unexecuted instantiation: TMS320C64xDisassembler.c:CountPopulation_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountPopulation_32 Unexecuted instantiation: RISCVDisassembler.c:CountPopulation_32 Unexecuted instantiation: RISCVInstPrinter.c:CountPopulation_32 Unexecuted instantiation: TriCoreDisassembler.c:CountPopulation_32 Unexecuted instantiation: HPPADisassembler.c:CountPopulation_32 Unexecuted instantiation: XtensaMapping.c:CountPopulation_32 Unexecuted instantiation: ARMDisassembler.c:CountPopulation_32 Unexecuted instantiation: ARMDisassemblerExtension.c:CountPopulation_32 Unexecuted instantiation: ARMInstPrinter.c:CountPopulation_32 Unexecuted instantiation: AArch64Disassembler.c:CountPopulation_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountPopulation_32 Unexecuted instantiation: AArch64InstPrinter.c:CountPopulation_32 Unexecuted instantiation: MipsDisassembler.c:CountPopulation_32 Unexecuted instantiation: PPCDisassembler.c:CountPopulation_32 Unexecuted instantiation: PPCInstPrinter.c:CountPopulation_32 Unexecuted instantiation: SparcDisassembler.c:CountPopulation_32 Unexecuted instantiation: SparcDisassemblerExtension.c:CountPopulation_32 Unexecuted instantiation: SparcInstPrinter.c:CountPopulation_32 Unexecuted instantiation: SystemZDisassembler.c:CountPopulation_32 Unexecuted instantiation: SystemZInstPrinter.c:CountPopulation_32 Unexecuted instantiation: TriCoreInstPrinter.c:CountPopulation_32 Unexecuted instantiation: LoongArchDisassembler.c:CountPopulation_32 Unexecuted instantiation: XtensaDisassembler.c:CountPopulation_32 Unexecuted instantiation: XtensaInstPrinter.c:CountPopulation_32 Unexecuted instantiation: ARCDisassembler.c:CountPopulation_32 |
307 | | |
308 | | /// CountPopulation_64 - this function counts the number of set bits in a value, |
309 | | /// (64 bit edition.) |
310 | | static inline unsigned CountPopulation_64(uint64_t Value) |
311 | 0 | { |
312 | 0 | #if __GNUC__ >= 4 |
313 | 0 | return __builtin_popcountll(Value); |
314 | 0 | #else |
315 | 0 | uint64_t v = Value - ((Value >> 1) & 0x5555555555555555ULL); |
316 | 0 | v = (v & 0x3333333333333333ULL) + ((v >> 2) & 0x3333333333333333ULL); |
317 | 0 | v = (v + (v >> 4)) & 0x0F0F0F0F0F0F0F0FULL; |
318 | 0 | return (uint64_t)((v * 0x0101010101010101ULL) >> 56); |
319 | 0 | #endif |
320 | 0 | } Unexecuted instantiation: SparcModule.c:CountPopulation_64 Unexecuted instantiation: ARMMapping.c:CountPopulation_64 Unexecuted instantiation: AArch64Mapping.c:CountPopulation_64 Unexecuted instantiation: PPCMapping.c:CountPopulation_64 Unexecuted instantiation: SparcMapping.c:CountPopulation_64 Unexecuted instantiation: XCoreDisassembler.c:CountPopulation_64 Unexecuted instantiation: XCoreInstPrinter.c:CountPopulation_64 Unexecuted instantiation: M68KDisassembler.c:CountPopulation_64 Unexecuted instantiation: TMS320C64xDisassembler.c:CountPopulation_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:CountPopulation_64 Unexecuted instantiation: RISCVDisassembler.c:CountPopulation_64 Unexecuted instantiation: RISCVInstPrinter.c:CountPopulation_64 Unexecuted instantiation: TriCoreDisassembler.c:CountPopulation_64 Unexecuted instantiation: HPPADisassembler.c:CountPopulation_64 Unexecuted instantiation: XtensaMapping.c:CountPopulation_64 Unexecuted instantiation: ARMDisassembler.c:CountPopulation_64 Unexecuted instantiation: ARMDisassemblerExtension.c:CountPopulation_64 Unexecuted instantiation: ARMInstPrinter.c:CountPopulation_64 Unexecuted instantiation: AArch64Disassembler.c:CountPopulation_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:CountPopulation_64 Unexecuted instantiation: AArch64InstPrinter.c:CountPopulation_64 Unexecuted instantiation: MipsDisassembler.c:CountPopulation_64 Unexecuted instantiation: PPCDisassembler.c:CountPopulation_64 Unexecuted instantiation: PPCInstPrinter.c:CountPopulation_64 Unexecuted instantiation: SparcDisassembler.c:CountPopulation_64 Unexecuted instantiation: SparcDisassemblerExtension.c:CountPopulation_64 Unexecuted instantiation: SparcInstPrinter.c:CountPopulation_64 Unexecuted instantiation: SystemZDisassembler.c:CountPopulation_64 Unexecuted instantiation: SystemZInstPrinter.c:CountPopulation_64 Unexecuted instantiation: TriCoreInstPrinter.c:CountPopulation_64 Unexecuted instantiation: LoongArchDisassembler.c:CountPopulation_64 Unexecuted instantiation: XtensaDisassembler.c:CountPopulation_64 Unexecuted instantiation: XtensaInstPrinter.c:CountPopulation_64 Unexecuted instantiation: ARCDisassembler.c:CountPopulation_64 |
321 | | |
322 | | /// Log2_32 - This function returns the floor log base 2 of the specified value, |
323 | | /// UINT_MAX if the value is zero. (32 bit edition.) |
324 | | /// Ex. Log2_32(32) == 5, Log2_32(1) == 0, Log2_32(0) == -1, Log2_32(6) == 2 |
325 | | static inline unsigned Log2_32(uint32_t Value) |
326 | 34.9k | { |
327 | 34.9k | if (Value == 0) { |
328 | 0 | return UINT_MAX; |
329 | 0 | } |
330 | 34.9k | return 31 - CountLeadingZeros_32(Value); |
331 | 34.9k | } Unexecuted instantiation: SparcModule.c:Log2_32 Unexecuted instantiation: ARMMapping.c:Log2_32 Line | Count | Source | 326 | 17.4k | { | 327 | 17.4k | if (Value == 0) { | 328 | 0 | return UINT_MAX; | 329 | 0 | } | 330 | 17.4k | return 31 - CountLeadingZeros_32(Value); | 331 | 17.4k | } |
Unexecuted instantiation: PPCMapping.c:Log2_32 Unexecuted instantiation: SparcMapping.c:Log2_32 Unexecuted instantiation: XCoreDisassembler.c:Log2_32 Unexecuted instantiation: XCoreInstPrinter.c:Log2_32 Unexecuted instantiation: M68KDisassembler.c:Log2_32 Unexecuted instantiation: TMS320C64xDisassembler.c:Log2_32 Unexecuted instantiation: TMS320C64xInstPrinter.c:Log2_32 Unexecuted instantiation: RISCVDisassembler.c:Log2_32 Unexecuted instantiation: RISCVInstPrinter.c:Log2_32 Unexecuted instantiation: TriCoreDisassembler.c:Log2_32 Unexecuted instantiation: HPPADisassembler.c:Log2_32 Unexecuted instantiation: XtensaMapping.c:Log2_32 Unexecuted instantiation: ARMDisassembler.c:Log2_32 Unexecuted instantiation: ARMDisassemblerExtension.c:Log2_32 Unexecuted instantiation: ARMInstPrinter.c:Log2_32 Unexecuted instantiation: AArch64Disassembler.c:Log2_32 Unexecuted instantiation: AArch64DisassemblerExtension.c:Log2_32 AArch64InstPrinter.c:Log2_32 Line | Count | Source | 326 | 17.4k | { | 327 | 17.4k | if (Value == 0) { | 328 | 0 | return UINT_MAX; | 329 | 0 | } | 330 | 17.4k | return 31 - CountLeadingZeros_32(Value); | 331 | 17.4k | } |
Unexecuted instantiation: MipsDisassembler.c:Log2_32 Unexecuted instantiation: PPCDisassembler.c:Log2_32 Unexecuted instantiation: PPCInstPrinter.c:Log2_32 Unexecuted instantiation: SparcDisassembler.c:Log2_32 Unexecuted instantiation: SparcDisassemblerExtension.c:Log2_32 Unexecuted instantiation: SparcInstPrinter.c:Log2_32 Unexecuted instantiation: SystemZDisassembler.c:Log2_32 Unexecuted instantiation: SystemZInstPrinter.c:Log2_32 Unexecuted instantiation: TriCoreInstPrinter.c:Log2_32 Unexecuted instantiation: LoongArchDisassembler.c:Log2_32 Unexecuted instantiation: XtensaDisassembler.c:Log2_32 Unexecuted instantiation: XtensaInstPrinter.c:Log2_32 Unexecuted instantiation: ARCDisassembler.c:Log2_32 |
332 | | |
333 | | /// Log2_64 - This function returns the floor log base 2 of the specified value, |
334 | | /// UINT_MAX if the value is zero. (64 bit edition.) |
335 | | static inline unsigned Log2_64(uint64_t Value) |
336 | 0 | { |
337 | 0 | if (Value == 0) { |
338 | 0 | return UINT32_MAX; |
339 | 0 | } |
340 | 0 | return 63 - CountLeadingZeros_64(Value); |
341 | 0 | } Unexecuted instantiation: SparcModule.c:Log2_64 Unexecuted instantiation: ARMMapping.c:Log2_64 Unexecuted instantiation: AArch64Mapping.c:Log2_64 Unexecuted instantiation: PPCMapping.c:Log2_64 Unexecuted instantiation: SparcMapping.c:Log2_64 Unexecuted instantiation: XCoreDisassembler.c:Log2_64 Unexecuted instantiation: XCoreInstPrinter.c:Log2_64 Unexecuted instantiation: M68KDisassembler.c:Log2_64 Unexecuted instantiation: TMS320C64xDisassembler.c:Log2_64 Unexecuted instantiation: TMS320C64xInstPrinter.c:Log2_64 Unexecuted instantiation: RISCVDisassembler.c:Log2_64 Unexecuted instantiation: RISCVInstPrinter.c:Log2_64 Unexecuted instantiation: TriCoreDisassembler.c:Log2_64 Unexecuted instantiation: HPPADisassembler.c:Log2_64 Unexecuted instantiation: XtensaMapping.c:Log2_64 Unexecuted instantiation: ARMDisassembler.c:Log2_64 Unexecuted instantiation: ARMDisassemblerExtension.c:Log2_64 Unexecuted instantiation: ARMInstPrinter.c:Log2_64 Unexecuted instantiation: AArch64Disassembler.c:Log2_64 Unexecuted instantiation: AArch64DisassemblerExtension.c:Log2_64 Unexecuted instantiation: AArch64InstPrinter.c:Log2_64 Unexecuted instantiation: MipsDisassembler.c:Log2_64 Unexecuted instantiation: PPCDisassembler.c:Log2_64 Unexecuted instantiation: PPCInstPrinter.c:Log2_64 Unexecuted instantiation: SparcDisassembler.c:Log2_64 Unexecuted instantiation: SparcDisassemblerExtension.c:Log2_64 Unexecuted instantiation: SparcInstPrinter.c:Log2_64 Unexecuted instantiation: SystemZDisassembler.c:Log2_64 Unexecuted instantiation: SystemZInstPrinter.c:Log2_64 Unexecuted instantiation: TriCoreInstPrinter.c:Log2_64 Unexecuted instantiation: LoongArchDisassembler.c:Log2_64 Unexecuted instantiation: XtensaDisassembler.c:Log2_64 Unexecuted instantiation: XtensaInstPrinter.c:Log2_64 Unexecuted instantiation: ARCDisassembler.c:Log2_64 |
342 | | |
343 | | /// Log2_32_Ceil - This function returns the ceil log base 2 of the specified |
344 | | /// value, 32 if the value is zero. (32 bit edition). |
345 | | /// Ex. Log2_32_Ceil(32) == 5, Log2_32_Ceil(1) == 0, Log2_32_Ceil(6) == 3 |
346 | | static inline unsigned Log2_32_Ceil(uint32_t Value) |
347 | 0 | { |
348 | 0 | return 32 - CountLeadingZeros_32(Value - 1); |
349 | 0 | } Unexecuted instantiation: SparcModule.c:Log2_32_Ceil Unexecuted instantiation: ARMMapping.c:Log2_32_Ceil Unexecuted instantiation: AArch64Mapping.c:Log2_32_Ceil Unexecuted instantiation: PPCMapping.c:Log2_32_Ceil Unexecuted instantiation: SparcMapping.c:Log2_32_Ceil Unexecuted instantiation: XCoreDisassembler.c:Log2_32_Ceil Unexecuted instantiation: XCoreInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: M68KDisassembler.c:Log2_32_Ceil Unexecuted instantiation: TMS320C64xDisassembler.c:Log2_32_Ceil Unexecuted instantiation: TMS320C64xInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: RISCVDisassembler.c:Log2_32_Ceil Unexecuted instantiation: RISCVInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: TriCoreDisassembler.c:Log2_32_Ceil Unexecuted instantiation: HPPADisassembler.c:Log2_32_Ceil Unexecuted instantiation: XtensaMapping.c:Log2_32_Ceil Unexecuted instantiation: ARMDisassembler.c:Log2_32_Ceil Unexecuted instantiation: ARMDisassemblerExtension.c:Log2_32_Ceil Unexecuted instantiation: ARMInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: AArch64Disassembler.c:Log2_32_Ceil Unexecuted instantiation: AArch64DisassemblerExtension.c:Log2_32_Ceil Unexecuted instantiation: AArch64InstPrinter.c:Log2_32_Ceil Unexecuted instantiation: MipsDisassembler.c:Log2_32_Ceil Unexecuted instantiation: PPCDisassembler.c:Log2_32_Ceil Unexecuted instantiation: PPCInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: SparcDisassembler.c:Log2_32_Ceil Unexecuted instantiation: SparcDisassemblerExtension.c:Log2_32_Ceil Unexecuted instantiation: SparcInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: SystemZDisassembler.c:Log2_32_Ceil Unexecuted instantiation: SystemZInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: TriCoreInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: LoongArchDisassembler.c:Log2_32_Ceil Unexecuted instantiation: XtensaDisassembler.c:Log2_32_Ceil Unexecuted instantiation: XtensaInstPrinter.c:Log2_32_Ceil Unexecuted instantiation: ARCDisassembler.c:Log2_32_Ceil |
350 | | |
351 | | /// Log2_64_Ceil - This function returns the ceil log base 2 of the specified |
352 | | /// value, 64 if the value is zero. (64 bit edition.) |
353 | | static inline unsigned Log2_64_Ceil(uint64_t Value) |
354 | 0 | { |
355 | 0 | return 64 - CountLeadingZeros_64(Value - 1); |
356 | 0 | } Unexecuted instantiation: SparcModule.c:Log2_64_Ceil Unexecuted instantiation: ARMMapping.c:Log2_64_Ceil Unexecuted instantiation: AArch64Mapping.c:Log2_64_Ceil Unexecuted instantiation: PPCMapping.c:Log2_64_Ceil Unexecuted instantiation: SparcMapping.c:Log2_64_Ceil Unexecuted instantiation: XCoreDisassembler.c:Log2_64_Ceil Unexecuted instantiation: XCoreInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: M68KDisassembler.c:Log2_64_Ceil Unexecuted instantiation: TMS320C64xDisassembler.c:Log2_64_Ceil Unexecuted instantiation: TMS320C64xInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: RISCVDisassembler.c:Log2_64_Ceil Unexecuted instantiation: RISCVInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: TriCoreDisassembler.c:Log2_64_Ceil Unexecuted instantiation: HPPADisassembler.c:Log2_64_Ceil Unexecuted instantiation: XtensaMapping.c:Log2_64_Ceil Unexecuted instantiation: ARMDisassembler.c:Log2_64_Ceil Unexecuted instantiation: ARMDisassemblerExtension.c:Log2_64_Ceil Unexecuted instantiation: ARMInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: AArch64Disassembler.c:Log2_64_Ceil Unexecuted instantiation: AArch64DisassemblerExtension.c:Log2_64_Ceil Unexecuted instantiation: AArch64InstPrinter.c:Log2_64_Ceil Unexecuted instantiation: MipsDisassembler.c:Log2_64_Ceil Unexecuted instantiation: PPCDisassembler.c:Log2_64_Ceil Unexecuted instantiation: PPCInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: SparcDisassembler.c:Log2_64_Ceil Unexecuted instantiation: SparcDisassemblerExtension.c:Log2_64_Ceil Unexecuted instantiation: SparcInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: SystemZDisassembler.c:Log2_64_Ceil Unexecuted instantiation: SystemZInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: TriCoreInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: LoongArchDisassembler.c:Log2_64_Ceil Unexecuted instantiation: XtensaDisassembler.c:Log2_64_Ceil Unexecuted instantiation: XtensaInstPrinter.c:Log2_64_Ceil Unexecuted instantiation: ARCDisassembler.c:Log2_64_Ceil |
357 | | |
358 | | /// GreatestCommonDivisor64 - Return the greatest common divisor of the two |
359 | | /// values using Euclid's algorithm. |
360 | | static inline uint64_t GreatestCommonDivisor64(uint64_t A, uint64_t B) |
361 | 0 | { |
362 | 0 | while (B) { |
363 | 0 | uint64_t T = B; |
364 | 0 | B = A % B; |
365 | 0 | A = T; |
366 | 0 | } |
367 | 0 | return A; |
368 | 0 | } Unexecuted instantiation: SparcModule.c:GreatestCommonDivisor64 Unexecuted instantiation: ARMMapping.c:GreatestCommonDivisor64 Unexecuted instantiation: AArch64Mapping.c:GreatestCommonDivisor64 Unexecuted instantiation: PPCMapping.c:GreatestCommonDivisor64 Unexecuted instantiation: SparcMapping.c:GreatestCommonDivisor64 Unexecuted instantiation: XCoreDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: XCoreInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: M68KDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: TMS320C64xDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: TMS320C64xInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: RISCVDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: RISCVInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: TriCoreDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: HPPADisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: XtensaMapping.c:GreatestCommonDivisor64 Unexecuted instantiation: ARMDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: ARMDisassemblerExtension.c:GreatestCommonDivisor64 Unexecuted instantiation: ARMInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: AArch64Disassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: AArch64DisassemblerExtension.c:GreatestCommonDivisor64 Unexecuted instantiation: AArch64InstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: MipsDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: PPCDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: PPCInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: SparcDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: SparcDisassemblerExtension.c:GreatestCommonDivisor64 Unexecuted instantiation: SparcInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: SystemZDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: SystemZInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: TriCoreInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: LoongArchDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: XtensaDisassembler.c:GreatestCommonDivisor64 Unexecuted instantiation: XtensaInstPrinter.c:GreatestCommonDivisor64 Unexecuted instantiation: ARCDisassembler.c:GreatestCommonDivisor64 |
369 | | |
370 | | /// BitsToDouble - This function takes a 64-bit integer and returns the bit |
371 | | /// equivalent double. |
372 | | static inline double BitsToDouble(uint64_t Bits) |
373 | 0 | { |
374 | 0 | union { |
375 | 0 | uint64_t L; |
376 | 0 | double D; |
377 | 0 | } T; |
378 | 0 | T.L = Bits; |
379 | 0 | return T.D; |
380 | 0 | } Unexecuted instantiation: SparcModule.c:BitsToDouble Unexecuted instantiation: ARMMapping.c:BitsToDouble Unexecuted instantiation: AArch64Mapping.c:BitsToDouble Unexecuted instantiation: PPCMapping.c:BitsToDouble Unexecuted instantiation: SparcMapping.c:BitsToDouble Unexecuted instantiation: XCoreDisassembler.c:BitsToDouble Unexecuted instantiation: XCoreInstPrinter.c:BitsToDouble Unexecuted instantiation: M68KDisassembler.c:BitsToDouble Unexecuted instantiation: TMS320C64xDisassembler.c:BitsToDouble Unexecuted instantiation: TMS320C64xInstPrinter.c:BitsToDouble Unexecuted instantiation: RISCVDisassembler.c:BitsToDouble Unexecuted instantiation: RISCVInstPrinter.c:BitsToDouble Unexecuted instantiation: TriCoreDisassembler.c:BitsToDouble Unexecuted instantiation: HPPADisassembler.c:BitsToDouble Unexecuted instantiation: XtensaMapping.c:BitsToDouble Unexecuted instantiation: ARMDisassembler.c:BitsToDouble Unexecuted instantiation: ARMDisassemblerExtension.c:BitsToDouble Unexecuted instantiation: ARMInstPrinter.c:BitsToDouble Unexecuted instantiation: AArch64Disassembler.c:BitsToDouble Unexecuted instantiation: AArch64DisassemblerExtension.c:BitsToDouble Unexecuted instantiation: AArch64InstPrinter.c:BitsToDouble Unexecuted instantiation: MipsDisassembler.c:BitsToDouble Unexecuted instantiation: PPCDisassembler.c:BitsToDouble Unexecuted instantiation: PPCInstPrinter.c:BitsToDouble Unexecuted instantiation: SparcDisassembler.c:BitsToDouble Unexecuted instantiation: SparcDisassemblerExtension.c:BitsToDouble Unexecuted instantiation: SparcInstPrinter.c:BitsToDouble Unexecuted instantiation: SystemZDisassembler.c:BitsToDouble Unexecuted instantiation: SystemZInstPrinter.c:BitsToDouble Unexecuted instantiation: TriCoreInstPrinter.c:BitsToDouble Unexecuted instantiation: LoongArchDisassembler.c:BitsToDouble Unexecuted instantiation: XtensaDisassembler.c:BitsToDouble Unexecuted instantiation: XtensaInstPrinter.c:BitsToDouble Unexecuted instantiation: ARCDisassembler.c:BitsToDouble |
381 | | |
382 | | /// BitsToFloat - This function takes a 32-bit integer and returns the bit |
383 | | /// equivalent float. |
384 | | static inline float BitsToFloat(uint32_t Bits) |
385 | 4.51k | { |
386 | 4.51k | union { |
387 | 4.51k | uint32_t I; |
388 | 4.51k | float F; |
389 | 4.51k | } T; |
390 | 4.51k | T.I = Bits; |
391 | 4.51k | return T.F; |
392 | 4.51k | } Unexecuted instantiation: SparcModule.c:BitsToFloat Line | Count | Source | 385 | 705 | { | 386 | 705 | union { | 387 | 705 | uint32_t I; | 388 | 705 | float F; | 389 | 705 | } T; | 390 | 705 | T.I = Bits; | 391 | 705 | return T.F; | 392 | 705 | } |
AArch64Mapping.c:BitsToFloat Line | Count | Source | 385 | 984 | { | 386 | 984 | union { | 387 | 984 | uint32_t I; | 388 | 984 | float F; | 389 | 984 | } T; | 390 | 984 | T.I = Bits; | 391 | 984 | return T.F; | 392 | 984 | } |
Unexecuted instantiation: PPCMapping.c:BitsToFloat Unexecuted instantiation: SparcMapping.c:BitsToFloat Unexecuted instantiation: XCoreDisassembler.c:BitsToFloat Unexecuted instantiation: XCoreInstPrinter.c:BitsToFloat M68KDisassembler.c:BitsToFloat Line | Count | Source | 385 | 1.13k | { | 386 | 1.13k | union { | 387 | 1.13k | uint32_t I; | 388 | 1.13k | float F; | 389 | 1.13k | } T; | 390 | 1.13k | T.I = Bits; | 391 | 1.13k | return T.F; | 392 | 1.13k | } |
Unexecuted instantiation: TMS320C64xDisassembler.c:BitsToFloat Unexecuted instantiation: TMS320C64xInstPrinter.c:BitsToFloat Unexecuted instantiation: RISCVDisassembler.c:BitsToFloat Unexecuted instantiation: RISCVInstPrinter.c:BitsToFloat Unexecuted instantiation: TriCoreDisassembler.c:BitsToFloat Unexecuted instantiation: HPPADisassembler.c:BitsToFloat Unexecuted instantiation: XtensaMapping.c:BitsToFloat Unexecuted instantiation: ARMDisassembler.c:BitsToFloat Unexecuted instantiation: ARMDisassemblerExtension.c:BitsToFloat ARMInstPrinter.c:BitsToFloat Line | Count | Source | 385 | 705 | { | 386 | 705 | union { | 387 | 705 | uint32_t I; | 388 | 705 | float F; | 389 | 705 | } T; | 390 | 705 | T.I = Bits; | 391 | 705 | return T.F; | 392 | 705 | } |
Unexecuted instantiation: AArch64Disassembler.c:BitsToFloat Unexecuted instantiation: AArch64DisassemblerExtension.c:BitsToFloat AArch64InstPrinter.c:BitsToFloat Line | Count | Source | 385 | 984 | { | 386 | 984 | union { | 387 | 984 | uint32_t I; | 388 | 984 | float F; | 389 | 984 | } T; | 390 | 984 | T.I = Bits; | 391 | 984 | return T.F; | 392 | 984 | } |
Unexecuted instantiation: MipsDisassembler.c:BitsToFloat Unexecuted instantiation: PPCDisassembler.c:BitsToFloat Unexecuted instantiation: PPCInstPrinter.c:BitsToFloat Unexecuted instantiation: SparcDisassembler.c:BitsToFloat Unexecuted instantiation: SparcDisassemblerExtension.c:BitsToFloat Unexecuted instantiation: SparcInstPrinter.c:BitsToFloat Unexecuted instantiation: SystemZDisassembler.c:BitsToFloat Unexecuted instantiation: SystemZInstPrinter.c:BitsToFloat Unexecuted instantiation: TriCoreInstPrinter.c:BitsToFloat Unexecuted instantiation: LoongArchDisassembler.c:BitsToFloat Unexecuted instantiation: XtensaDisassembler.c:BitsToFloat Unexecuted instantiation: XtensaInstPrinter.c:BitsToFloat Unexecuted instantiation: ARCDisassembler.c:BitsToFloat |
393 | | |
394 | | /// DoubleToBits - This function takes a double and returns the bit |
395 | | /// equivalent 64-bit integer. Note that copying doubles around |
396 | | /// changes the bits of NaNs on some hosts, notably x86, so this |
397 | | /// routine cannot be used if these bits are needed. |
398 | | static inline uint64_t DoubleToBits(double Double) |
399 | 0 | { |
400 | 0 | union { |
401 | 0 | uint64_t L; |
402 | 0 | double D; |
403 | 0 | } T; |
404 | 0 | T.D = Double; |
405 | 0 | return T.L; |
406 | 0 | } Unexecuted instantiation: SparcModule.c:DoubleToBits Unexecuted instantiation: ARMMapping.c:DoubleToBits Unexecuted instantiation: AArch64Mapping.c:DoubleToBits Unexecuted instantiation: PPCMapping.c:DoubleToBits Unexecuted instantiation: SparcMapping.c:DoubleToBits Unexecuted instantiation: XCoreDisassembler.c:DoubleToBits Unexecuted instantiation: XCoreInstPrinter.c:DoubleToBits Unexecuted instantiation: M68KDisassembler.c:DoubleToBits Unexecuted instantiation: TMS320C64xDisassembler.c:DoubleToBits Unexecuted instantiation: TMS320C64xInstPrinter.c:DoubleToBits Unexecuted instantiation: RISCVDisassembler.c:DoubleToBits Unexecuted instantiation: RISCVInstPrinter.c:DoubleToBits Unexecuted instantiation: TriCoreDisassembler.c:DoubleToBits Unexecuted instantiation: HPPADisassembler.c:DoubleToBits Unexecuted instantiation: XtensaMapping.c:DoubleToBits Unexecuted instantiation: ARMDisassembler.c:DoubleToBits Unexecuted instantiation: ARMDisassemblerExtension.c:DoubleToBits Unexecuted instantiation: ARMInstPrinter.c:DoubleToBits Unexecuted instantiation: AArch64Disassembler.c:DoubleToBits Unexecuted instantiation: AArch64DisassemblerExtension.c:DoubleToBits Unexecuted instantiation: AArch64InstPrinter.c:DoubleToBits Unexecuted instantiation: MipsDisassembler.c:DoubleToBits Unexecuted instantiation: PPCDisassembler.c:DoubleToBits Unexecuted instantiation: PPCInstPrinter.c:DoubleToBits Unexecuted instantiation: SparcDisassembler.c:DoubleToBits Unexecuted instantiation: SparcDisassemblerExtension.c:DoubleToBits Unexecuted instantiation: SparcInstPrinter.c:DoubleToBits Unexecuted instantiation: SystemZDisassembler.c:DoubleToBits Unexecuted instantiation: SystemZInstPrinter.c:DoubleToBits Unexecuted instantiation: TriCoreInstPrinter.c:DoubleToBits Unexecuted instantiation: LoongArchDisassembler.c:DoubleToBits Unexecuted instantiation: XtensaDisassembler.c:DoubleToBits Unexecuted instantiation: XtensaInstPrinter.c:DoubleToBits Unexecuted instantiation: ARCDisassembler.c:DoubleToBits |
407 | | |
408 | | /// FloatToBits - This function takes a float and returns the bit |
409 | | /// equivalent 32-bit integer. Note that copying floats around |
410 | | /// changes the bits of NaNs on some hosts, notably x86, so this |
411 | | /// routine cannot be used if these bits are needed. |
412 | | static inline uint32_t FloatToBits(float Float) |
413 | 0 | { |
414 | 0 | union { |
415 | 0 | uint32_t I; |
416 | 0 | float F; |
417 | 0 | } T; |
418 | 0 | T.F = Float; |
419 | 0 | return T.I; |
420 | 0 | } Unexecuted instantiation: SparcModule.c:FloatToBits Unexecuted instantiation: ARMMapping.c:FloatToBits Unexecuted instantiation: AArch64Mapping.c:FloatToBits Unexecuted instantiation: PPCMapping.c:FloatToBits Unexecuted instantiation: SparcMapping.c:FloatToBits Unexecuted instantiation: XCoreDisassembler.c:FloatToBits Unexecuted instantiation: XCoreInstPrinter.c:FloatToBits Unexecuted instantiation: M68KDisassembler.c:FloatToBits Unexecuted instantiation: TMS320C64xDisassembler.c:FloatToBits Unexecuted instantiation: TMS320C64xInstPrinter.c:FloatToBits Unexecuted instantiation: RISCVDisassembler.c:FloatToBits Unexecuted instantiation: RISCVInstPrinter.c:FloatToBits Unexecuted instantiation: TriCoreDisassembler.c:FloatToBits Unexecuted instantiation: HPPADisassembler.c:FloatToBits Unexecuted instantiation: XtensaMapping.c:FloatToBits Unexecuted instantiation: ARMDisassembler.c:FloatToBits Unexecuted instantiation: ARMDisassemblerExtension.c:FloatToBits Unexecuted instantiation: ARMInstPrinter.c:FloatToBits Unexecuted instantiation: AArch64Disassembler.c:FloatToBits Unexecuted instantiation: AArch64DisassemblerExtension.c:FloatToBits Unexecuted instantiation: AArch64InstPrinter.c:FloatToBits Unexecuted instantiation: MipsDisassembler.c:FloatToBits Unexecuted instantiation: PPCDisassembler.c:FloatToBits Unexecuted instantiation: PPCInstPrinter.c:FloatToBits Unexecuted instantiation: SparcDisassembler.c:FloatToBits Unexecuted instantiation: SparcDisassemblerExtension.c:FloatToBits Unexecuted instantiation: SparcInstPrinter.c:FloatToBits Unexecuted instantiation: SystemZDisassembler.c:FloatToBits Unexecuted instantiation: SystemZInstPrinter.c:FloatToBits Unexecuted instantiation: TriCoreInstPrinter.c:FloatToBits Unexecuted instantiation: LoongArchDisassembler.c:FloatToBits Unexecuted instantiation: XtensaDisassembler.c:FloatToBits Unexecuted instantiation: XtensaInstPrinter.c:FloatToBits Unexecuted instantiation: ARCDisassembler.c:FloatToBits |
421 | | |
422 | | /// MinAlign - A and B are either alignments or offsets. Return the minimum |
423 | | /// alignment that may be assumed after adding the two together. |
424 | | static inline uint64_t MinAlign(uint64_t A, uint64_t B) |
425 | 0 | { |
426 | 0 | // The largest power of 2 that divides both A and B. |
427 | 0 | // |
428 | 0 | // Replace "-Value" by "1+~Value" in the following commented code to avoid |
429 | 0 | // MSVC warning C4146 |
430 | 0 | // return (A | B) & -(A | B); |
431 | 0 | return (A | B) & (1 + ~(A | B)); |
432 | 0 | } Unexecuted instantiation: SparcModule.c:MinAlign Unexecuted instantiation: ARMMapping.c:MinAlign Unexecuted instantiation: AArch64Mapping.c:MinAlign Unexecuted instantiation: PPCMapping.c:MinAlign Unexecuted instantiation: SparcMapping.c:MinAlign Unexecuted instantiation: XCoreDisassembler.c:MinAlign Unexecuted instantiation: XCoreInstPrinter.c:MinAlign Unexecuted instantiation: M68KDisassembler.c:MinAlign Unexecuted instantiation: TMS320C64xDisassembler.c:MinAlign Unexecuted instantiation: TMS320C64xInstPrinter.c:MinAlign Unexecuted instantiation: RISCVDisassembler.c:MinAlign Unexecuted instantiation: RISCVInstPrinter.c:MinAlign Unexecuted instantiation: TriCoreDisassembler.c:MinAlign Unexecuted instantiation: HPPADisassembler.c:MinAlign Unexecuted instantiation: XtensaMapping.c:MinAlign Unexecuted instantiation: ARMDisassembler.c:MinAlign Unexecuted instantiation: ARMDisassemblerExtension.c:MinAlign Unexecuted instantiation: ARMInstPrinter.c:MinAlign Unexecuted instantiation: AArch64Disassembler.c:MinAlign Unexecuted instantiation: AArch64DisassemblerExtension.c:MinAlign Unexecuted instantiation: AArch64InstPrinter.c:MinAlign Unexecuted instantiation: MipsDisassembler.c:MinAlign Unexecuted instantiation: PPCDisassembler.c:MinAlign Unexecuted instantiation: PPCInstPrinter.c:MinAlign Unexecuted instantiation: SparcDisassembler.c:MinAlign Unexecuted instantiation: SparcDisassemblerExtension.c:MinAlign Unexecuted instantiation: SparcInstPrinter.c:MinAlign Unexecuted instantiation: SystemZDisassembler.c:MinAlign Unexecuted instantiation: SystemZInstPrinter.c:MinAlign Unexecuted instantiation: TriCoreInstPrinter.c:MinAlign Unexecuted instantiation: LoongArchDisassembler.c:MinAlign Unexecuted instantiation: XtensaDisassembler.c:MinAlign Unexecuted instantiation: XtensaInstPrinter.c:MinAlign Unexecuted instantiation: ARCDisassembler.c:MinAlign |
433 | | |
434 | | /// NextPowerOf2 - Returns the next power of two (in 64-bits) |
435 | | /// that is strictly greater than A. Returns zero on overflow. |
436 | | static inline uint64_t NextPowerOf2(uint64_t A) |
437 | 0 | { |
438 | 0 | A |= (A >> 1); |
439 | 0 | A |= (A >> 2); |
440 | 0 | A |= (A >> 4); |
441 | 0 | A |= (A >> 8); |
442 | 0 | A |= (A >> 16); |
443 | 0 | A |= (A >> 32); |
444 | 0 | return A + 1; |
445 | 0 | } Unexecuted instantiation: SparcModule.c:NextPowerOf2 Unexecuted instantiation: ARMMapping.c:NextPowerOf2 Unexecuted instantiation: AArch64Mapping.c:NextPowerOf2 Unexecuted instantiation: PPCMapping.c:NextPowerOf2 Unexecuted instantiation: SparcMapping.c:NextPowerOf2 Unexecuted instantiation: XCoreDisassembler.c:NextPowerOf2 Unexecuted instantiation: XCoreInstPrinter.c:NextPowerOf2 Unexecuted instantiation: M68KDisassembler.c:NextPowerOf2 Unexecuted instantiation: TMS320C64xDisassembler.c:NextPowerOf2 Unexecuted instantiation: TMS320C64xInstPrinter.c:NextPowerOf2 Unexecuted instantiation: RISCVDisassembler.c:NextPowerOf2 Unexecuted instantiation: RISCVInstPrinter.c:NextPowerOf2 Unexecuted instantiation: TriCoreDisassembler.c:NextPowerOf2 Unexecuted instantiation: HPPADisassembler.c:NextPowerOf2 Unexecuted instantiation: XtensaMapping.c:NextPowerOf2 Unexecuted instantiation: ARMDisassembler.c:NextPowerOf2 Unexecuted instantiation: ARMDisassemblerExtension.c:NextPowerOf2 Unexecuted instantiation: ARMInstPrinter.c:NextPowerOf2 Unexecuted instantiation: AArch64Disassembler.c:NextPowerOf2 Unexecuted instantiation: AArch64DisassemblerExtension.c:NextPowerOf2 Unexecuted instantiation: AArch64InstPrinter.c:NextPowerOf2 Unexecuted instantiation: MipsDisassembler.c:NextPowerOf2 Unexecuted instantiation: PPCDisassembler.c:NextPowerOf2 Unexecuted instantiation: PPCInstPrinter.c:NextPowerOf2 Unexecuted instantiation: SparcDisassembler.c:NextPowerOf2 Unexecuted instantiation: SparcDisassemblerExtension.c:NextPowerOf2 Unexecuted instantiation: SparcInstPrinter.c:NextPowerOf2 Unexecuted instantiation: SystemZDisassembler.c:NextPowerOf2 Unexecuted instantiation: SystemZInstPrinter.c:NextPowerOf2 Unexecuted instantiation: TriCoreInstPrinter.c:NextPowerOf2 Unexecuted instantiation: LoongArchDisassembler.c:NextPowerOf2 Unexecuted instantiation: XtensaDisassembler.c:NextPowerOf2 Unexecuted instantiation: XtensaInstPrinter.c:NextPowerOf2 Unexecuted instantiation: ARCDisassembler.c:NextPowerOf2 |
446 | | |
447 | | /// Returns the next integer (mod 2**64) that is greater than or equal to |
448 | | /// \p Value and is a multiple of \p Align. \p Align must be non-zero. |
449 | | /// |
450 | | /// Examples: |
451 | | /// \code |
452 | | /// RoundUpToAlignment(5, 8) = 8 |
453 | | /// RoundUpToAlignment(17, 8) = 24 |
454 | | /// RoundUpToAlignment(~0LL, 8) = 0 |
455 | | /// \endcode |
456 | | static inline uint64_t RoundUpToAlignment(uint64_t Value, uint64_t Align) |
457 | 0 | { |
458 | 0 | return ((Value + Align - 1) / Align) * Align; |
459 | 0 | } Unexecuted instantiation: SparcModule.c:RoundUpToAlignment Unexecuted instantiation: ARMMapping.c:RoundUpToAlignment Unexecuted instantiation: AArch64Mapping.c:RoundUpToAlignment Unexecuted instantiation: PPCMapping.c:RoundUpToAlignment Unexecuted instantiation: SparcMapping.c:RoundUpToAlignment Unexecuted instantiation: XCoreDisassembler.c:RoundUpToAlignment Unexecuted instantiation: XCoreInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: M68KDisassembler.c:RoundUpToAlignment Unexecuted instantiation: TMS320C64xDisassembler.c:RoundUpToAlignment Unexecuted instantiation: TMS320C64xInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: RISCVDisassembler.c:RoundUpToAlignment Unexecuted instantiation: RISCVInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: TriCoreDisassembler.c:RoundUpToAlignment Unexecuted instantiation: HPPADisassembler.c:RoundUpToAlignment Unexecuted instantiation: XtensaMapping.c:RoundUpToAlignment Unexecuted instantiation: ARMDisassembler.c:RoundUpToAlignment Unexecuted instantiation: ARMDisassemblerExtension.c:RoundUpToAlignment Unexecuted instantiation: ARMInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: AArch64Disassembler.c:RoundUpToAlignment Unexecuted instantiation: AArch64DisassemblerExtension.c:RoundUpToAlignment Unexecuted instantiation: AArch64InstPrinter.c:RoundUpToAlignment Unexecuted instantiation: MipsDisassembler.c:RoundUpToAlignment Unexecuted instantiation: PPCDisassembler.c:RoundUpToAlignment Unexecuted instantiation: PPCInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: SparcDisassembler.c:RoundUpToAlignment Unexecuted instantiation: SparcDisassemblerExtension.c:RoundUpToAlignment Unexecuted instantiation: SparcInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: SystemZDisassembler.c:RoundUpToAlignment Unexecuted instantiation: SystemZInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: TriCoreInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: LoongArchDisassembler.c:RoundUpToAlignment Unexecuted instantiation: XtensaDisassembler.c:RoundUpToAlignment Unexecuted instantiation: XtensaInstPrinter.c:RoundUpToAlignment Unexecuted instantiation: ARCDisassembler.c:RoundUpToAlignment |
460 | | |
461 | | /// Returns the offset to the next integer (mod 2**64) that is greater than |
462 | | /// or equal to \p Value and is a multiple of \p Align. \p Align must be |
463 | | /// non-zero. |
464 | | static inline uint64_t OffsetToAlignment(uint64_t Value, uint64_t Align) |
465 | 0 | { |
466 | 0 | return RoundUpToAlignment(Value, Align) - Value; |
467 | 0 | } Unexecuted instantiation: SparcModule.c:OffsetToAlignment Unexecuted instantiation: ARMMapping.c:OffsetToAlignment Unexecuted instantiation: AArch64Mapping.c:OffsetToAlignment Unexecuted instantiation: PPCMapping.c:OffsetToAlignment Unexecuted instantiation: SparcMapping.c:OffsetToAlignment Unexecuted instantiation: XCoreDisassembler.c:OffsetToAlignment Unexecuted instantiation: XCoreInstPrinter.c:OffsetToAlignment Unexecuted instantiation: M68KDisassembler.c:OffsetToAlignment Unexecuted instantiation: TMS320C64xDisassembler.c:OffsetToAlignment Unexecuted instantiation: TMS320C64xInstPrinter.c:OffsetToAlignment Unexecuted instantiation: RISCVDisassembler.c:OffsetToAlignment Unexecuted instantiation: RISCVInstPrinter.c:OffsetToAlignment Unexecuted instantiation: TriCoreDisassembler.c:OffsetToAlignment Unexecuted instantiation: HPPADisassembler.c:OffsetToAlignment Unexecuted instantiation: XtensaMapping.c:OffsetToAlignment Unexecuted instantiation: ARMDisassembler.c:OffsetToAlignment Unexecuted instantiation: ARMDisassemblerExtension.c:OffsetToAlignment Unexecuted instantiation: ARMInstPrinter.c:OffsetToAlignment Unexecuted instantiation: AArch64Disassembler.c:OffsetToAlignment Unexecuted instantiation: AArch64DisassemblerExtension.c:OffsetToAlignment Unexecuted instantiation: AArch64InstPrinter.c:OffsetToAlignment Unexecuted instantiation: MipsDisassembler.c:OffsetToAlignment Unexecuted instantiation: PPCDisassembler.c:OffsetToAlignment Unexecuted instantiation: PPCInstPrinter.c:OffsetToAlignment Unexecuted instantiation: SparcDisassembler.c:OffsetToAlignment Unexecuted instantiation: SparcDisassemblerExtension.c:OffsetToAlignment Unexecuted instantiation: SparcInstPrinter.c:OffsetToAlignment Unexecuted instantiation: SystemZDisassembler.c:OffsetToAlignment Unexecuted instantiation: SystemZInstPrinter.c:OffsetToAlignment Unexecuted instantiation: TriCoreInstPrinter.c:OffsetToAlignment Unexecuted instantiation: LoongArchDisassembler.c:OffsetToAlignment Unexecuted instantiation: XtensaDisassembler.c:OffsetToAlignment Unexecuted instantiation: XtensaInstPrinter.c:OffsetToAlignment Unexecuted instantiation: ARCDisassembler.c:OffsetToAlignment |
468 | | |
469 | | /// abs64 - absolute value of a 64-bit int. Not all environments support |
470 | | /// "abs" on whatever their name for the 64-bit int type is. The absolute |
471 | | /// value of the largest negative number is undefined, as with "abs". |
472 | | static inline int64_t abs64(int64_t x) |
473 | 0 | { |
474 | 0 | return (x < 0) ? -x : x; |
475 | 0 | } Unexecuted instantiation: SparcModule.c:abs64 Unexecuted instantiation: ARMMapping.c:abs64 Unexecuted instantiation: AArch64Mapping.c:abs64 Unexecuted instantiation: PPCMapping.c:abs64 Unexecuted instantiation: SparcMapping.c:abs64 Unexecuted instantiation: XCoreDisassembler.c:abs64 Unexecuted instantiation: XCoreInstPrinter.c:abs64 Unexecuted instantiation: M68KDisassembler.c:abs64 Unexecuted instantiation: TMS320C64xDisassembler.c:abs64 Unexecuted instantiation: TMS320C64xInstPrinter.c:abs64 Unexecuted instantiation: RISCVDisassembler.c:abs64 Unexecuted instantiation: RISCVInstPrinter.c:abs64 Unexecuted instantiation: TriCoreDisassembler.c:abs64 Unexecuted instantiation: HPPADisassembler.c:abs64 Unexecuted instantiation: XtensaMapping.c:abs64 Unexecuted instantiation: ARMDisassembler.c:abs64 Unexecuted instantiation: ARMDisassemblerExtension.c:abs64 Unexecuted instantiation: ARMInstPrinter.c:abs64 Unexecuted instantiation: AArch64Disassembler.c:abs64 Unexecuted instantiation: AArch64DisassemblerExtension.c:abs64 Unexecuted instantiation: AArch64InstPrinter.c:abs64 Unexecuted instantiation: MipsDisassembler.c:abs64 Unexecuted instantiation: PPCDisassembler.c:abs64 Unexecuted instantiation: PPCInstPrinter.c:abs64 Unexecuted instantiation: SparcDisassembler.c:abs64 Unexecuted instantiation: SparcDisassemblerExtension.c:abs64 Unexecuted instantiation: SparcInstPrinter.c:abs64 Unexecuted instantiation: SystemZDisassembler.c:abs64 Unexecuted instantiation: SystemZInstPrinter.c:abs64 Unexecuted instantiation: TriCoreInstPrinter.c:abs64 Unexecuted instantiation: LoongArchDisassembler.c:abs64 Unexecuted instantiation: XtensaDisassembler.c:abs64 Unexecuted instantiation: XtensaInstPrinter.c:abs64 Unexecuted instantiation: ARCDisassembler.c:abs64 |
476 | | |
477 | | /// \brief Sign extend number in the bottom B bits of X to a 32-bit int. |
478 | | /// Requires 0 < B <= 32. |
479 | | /// Note that this implementation relies on right shift of signed |
480 | | /// integers being an arithmetic shift. |
481 | | static inline int32_t SignExtend32(uint32_t X, unsigned B) |
482 | 159k | { |
483 | 159k | return (int32_t)(X << (32 - B)) >> (32 - B); |
484 | 159k | } Unexecuted instantiation: SparcModule.c:SignExtend32 Unexecuted instantiation: ARMMapping.c:SignExtend32 Unexecuted instantiation: AArch64Mapping.c:SignExtend32 PPCMapping.c:SignExtend32 Line | Count | Source | 482 | 7.33k | { | 483 | 7.33k | return (int32_t)(X << (32 - B)) >> (32 - B); | 484 | 7.33k | } |
Unexecuted instantiation: SparcMapping.c:SignExtend32 Unexecuted instantiation: XCoreDisassembler.c:SignExtend32 Unexecuted instantiation: XCoreInstPrinter.c:SignExtend32 Unexecuted instantiation: M68KDisassembler.c:SignExtend32 Unexecuted instantiation: TMS320C64xDisassembler.c:SignExtend32 Unexecuted instantiation: TMS320C64xInstPrinter.c:SignExtend32 Unexecuted instantiation: RISCVDisassembler.c:SignExtend32 Unexecuted instantiation: RISCVInstPrinter.c:SignExtend32 Unexecuted instantiation: TriCoreDisassembler.c:SignExtend32 Unexecuted instantiation: HPPADisassembler.c:SignExtend32 Unexecuted instantiation: XtensaMapping.c:SignExtend32 ARMDisassembler.c:SignExtend32 Line | Count | Source | 482 | 85.6k | { | 483 | 85.6k | return (int32_t)(X << (32 - B)) >> (32 - B); | 484 | 85.6k | } |
Unexecuted instantiation: ARMDisassemblerExtension.c:SignExtend32 Unexecuted instantiation: ARMInstPrinter.c:SignExtend32 Unexecuted instantiation: AArch64Disassembler.c:SignExtend32 Unexecuted instantiation: AArch64DisassemblerExtension.c:SignExtend32 Unexecuted instantiation: AArch64InstPrinter.c:SignExtend32 MipsDisassembler.c:SignExtend32 Line | Count | Source | 482 | 48.1k | { | 483 | 48.1k | return (int32_t)(X << (32 - B)) >> (32 - B); | 484 | 48.1k | } |
PPCDisassembler.c:SignExtend32 Line | Count | Source | 482 | 10.1k | { | 483 | 10.1k | return (int32_t)(X << (32 - B)) >> (32 - B); | 484 | 10.1k | } |
PPCInstPrinter.c:SignExtend32 Line | Count | Source | 482 | 8.00k | { | 483 | 8.00k | return (int32_t)(X << (32 - B)) >> (32 - B); | 484 | 8.00k | } |
Unexecuted instantiation: SparcDisassembler.c:SignExtend32 Unexecuted instantiation: SparcDisassemblerExtension.c:SignExtend32 Unexecuted instantiation: SparcInstPrinter.c:SignExtend32 Unexecuted instantiation: SystemZDisassembler.c:SignExtend32 Unexecuted instantiation: SystemZInstPrinter.c:SignExtend32 Unexecuted instantiation: TriCoreInstPrinter.c:SignExtend32 Unexecuted instantiation: LoongArchDisassembler.c:SignExtend32 Unexecuted instantiation: XtensaDisassembler.c:SignExtend32 Unexecuted instantiation: XtensaInstPrinter.c:SignExtend32 Unexecuted instantiation: ARCDisassembler.c:SignExtend32 |
485 | | |
486 | | /// \brief Sign extend number in the bottom B bits of X to a 64-bit int. |
487 | | /// Requires 0 < B <= 64. |
488 | | /// Note that this implementation relies on right shift of signed |
489 | | /// integers being an arithmetic shift. |
490 | | static inline int64_t SignExtend64(uint64_t X, unsigned B) |
491 | 128k | { |
492 | 128k | return (int64_t)(X << (64 - B)) >> (64 - B); |
493 | 128k | } Unexecuted instantiation: SparcModule.c:SignExtend64 Unexecuted instantiation: ARMMapping.c:SignExtend64 Unexecuted instantiation: AArch64Mapping.c:SignExtend64 PPCMapping.c:SignExtend64 Line | Count | Source | 491 | 676 | { | 492 | 676 | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 676 | } |
Unexecuted instantiation: SparcMapping.c:SignExtend64 Unexecuted instantiation: XCoreDisassembler.c:SignExtend64 Unexecuted instantiation: XCoreInstPrinter.c:SignExtend64 Unexecuted instantiation: M68KDisassembler.c:SignExtend64 Unexecuted instantiation: TMS320C64xDisassembler.c:SignExtend64 Unexecuted instantiation: TMS320C64xInstPrinter.c:SignExtend64 RISCVDisassembler.c:SignExtend64 Line | Count | Source | 491 | 17.5k | { | 492 | 17.5k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 17.5k | } |
Unexecuted instantiation: RISCVInstPrinter.c:SignExtend64 Unexecuted instantiation: TriCoreDisassembler.c:SignExtend64 Unexecuted instantiation: HPPADisassembler.c:SignExtend64 Unexecuted instantiation: XtensaMapping.c:SignExtend64 Unexecuted instantiation: ARMDisassembler.c:SignExtend64 Unexecuted instantiation: ARMDisassemblerExtension.c:SignExtend64 Unexecuted instantiation: ARMInstPrinter.c:SignExtend64 Unexecuted instantiation: AArch64Disassembler.c:SignExtend64 Unexecuted instantiation: AArch64DisassemblerExtension.c:SignExtend64 AArch64InstPrinter.c:SignExtend64 Line | Count | Source | 491 | 4.80k | { | 492 | 4.80k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 4.80k | } |
MipsDisassembler.c:SignExtend64 Line | Count | Source | 491 | 11.0k | { | 492 | 11.0k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 11.0k | } |
PPCDisassembler.c:SignExtend64 Line | Count | Source | 491 | 10.1k | { | 492 | 10.1k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 10.1k | } |
Unexecuted instantiation: PPCInstPrinter.c:SignExtend64 SparcDisassembler.c:SignExtend64 Line | Count | Source | 491 | 14.2k | { | 492 | 14.2k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 14.2k | } |
Unexecuted instantiation: SparcDisassemblerExtension.c:SignExtend64 Unexecuted instantiation: SparcInstPrinter.c:SignExtend64 SystemZDisassembler.c:SignExtend64 Line | Count | Source | 491 | 25.5k | { | 492 | 25.5k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 25.5k | } |
Unexecuted instantiation: SystemZInstPrinter.c:SignExtend64 Unexecuted instantiation: TriCoreInstPrinter.c:SignExtend64 Unexecuted instantiation: LoongArchDisassembler.c:SignExtend64 XtensaDisassembler.c:SignExtend64 Line | Count | Source | 491 | 44.2k | { | 492 | 44.2k | return (int64_t)(X << (64 - B)) >> (64 - B); | 493 | 44.2k | } |
Unexecuted instantiation: XtensaInstPrinter.c:SignExtend64 Unexecuted instantiation: ARCDisassembler.c:SignExtend64 |
494 | | |
495 | | /// \brief Removes the rightmost bit of x and extends the field to the left with that |
496 | | /// bit to form a 64-bit quantity. The field is of size len |
497 | | static inline int64_t LowSignExtend64(uint64_t x, unsigned len) |
498 | 0 | { |
499 | 0 | return (x >> 1) - ((x & 1) << (len - 1)); |
500 | 0 | } Unexecuted instantiation: SparcModule.c:LowSignExtend64 Unexecuted instantiation: ARMMapping.c:LowSignExtend64 Unexecuted instantiation: AArch64Mapping.c:LowSignExtend64 Unexecuted instantiation: PPCMapping.c:LowSignExtend64 Unexecuted instantiation: SparcMapping.c:LowSignExtend64 Unexecuted instantiation: XCoreDisassembler.c:LowSignExtend64 Unexecuted instantiation: XCoreInstPrinter.c:LowSignExtend64 Unexecuted instantiation: M68KDisassembler.c:LowSignExtend64 Unexecuted instantiation: TMS320C64xDisassembler.c:LowSignExtend64 Unexecuted instantiation: TMS320C64xInstPrinter.c:LowSignExtend64 Unexecuted instantiation: RISCVDisassembler.c:LowSignExtend64 Unexecuted instantiation: RISCVInstPrinter.c:LowSignExtend64 Unexecuted instantiation: TriCoreDisassembler.c:LowSignExtend64 Unexecuted instantiation: HPPADisassembler.c:LowSignExtend64 Unexecuted instantiation: XtensaMapping.c:LowSignExtend64 Unexecuted instantiation: ARMDisassembler.c:LowSignExtend64 Unexecuted instantiation: ARMDisassemblerExtension.c:LowSignExtend64 Unexecuted instantiation: ARMInstPrinter.c:LowSignExtend64 Unexecuted instantiation: AArch64Disassembler.c:LowSignExtend64 Unexecuted instantiation: AArch64DisassemblerExtension.c:LowSignExtend64 Unexecuted instantiation: AArch64InstPrinter.c:LowSignExtend64 Unexecuted instantiation: MipsDisassembler.c:LowSignExtend64 Unexecuted instantiation: PPCDisassembler.c:LowSignExtend64 Unexecuted instantiation: PPCInstPrinter.c:LowSignExtend64 Unexecuted instantiation: SparcDisassembler.c:LowSignExtend64 Unexecuted instantiation: SparcDisassemblerExtension.c:LowSignExtend64 Unexecuted instantiation: SparcInstPrinter.c:LowSignExtend64 Unexecuted instantiation: SystemZDisassembler.c:LowSignExtend64 Unexecuted instantiation: SystemZInstPrinter.c:LowSignExtend64 Unexecuted instantiation: TriCoreInstPrinter.c:LowSignExtend64 Unexecuted instantiation: LoongArchDisassembler.c:LowSignExtend64 Unexecuted instantiation: XtensaDisassembler.c:LowSignExtend64 Unexecuted instantiation: XtensaInstPrinter.c:LowSignExtend64 Unexecuted instantiation: ARCDisassembler.c:LowSignExtend64 |
501 | | |
502 | | /// \brief One extend number X starting at bit B and returns it as int32_t. |
503 | | /// Requires 0 < B <= 32. |
504 | | static inline int32_t OneExtend32(uint32_t X, unsigned B) |
505 | 0 | { |
506 | 0 | return (~0U << B) | X; |
507 | 0 | } Unexecuted instantiation: SparcModule.c:OneExtend32 Unexecuted instantiation: ARMMapping.c:OneExtend32 Unexecuted instantiation: AArch64Mapping.c:OneExtend32 Unexecuted instantiation: PPCMapping.c:OneExtend32 Unexecuted instantiation: SparcMapping.c:OneExtend32 Unexecuted instantiation: XCoreDisassembler.c:OneExtend32 Unexecuted instantiation: XCoreInstPrinter.c:OneExtend32 Unexecuted instantiation: M68KDisassembler.c:OneExtend32 Unexecuted instantiation: TMS320C64xDisassembler.c:OneExtend32 Unexecuted instantiation: TMS320C64xInstPrinter.c:OneExtend32 Unexecuted instantiation: RISCVDisassembler.c:OneExtend32 Unexecuted instantiation: RISCVInstPrinter.c:OneExtend32 Unexecuted instantiation: TriCoreDisassembler.c:OneExtend32 Unexecuted instantiation: HPPADisassembler.c:OneExtend32 Unexecuted instantiation: XtensaMapping.c:OneExtend32 Unexecuted instantiation: ARMDisassembler.c:OneExtend32 Unexecuted instantiation: ARMDisassemblerExtension.c:OneExtend32 Unexecuted instantiation: ARMInstPrinter.c:OneExtend32 Unexecuted instantiation: AArch64Disassembler.c:OneExtend32 Unexecuted instantiation: AArch64DisassemblerExtension.c:OneExtend32 Unexecuted instantiation: AArch64InstPrinter.c:OneExtend32 Unexecuted instantiation: MipsDisassembler.c:OneExtend32 Unexecuted instantiation: PPCDisassembler.c:OneExtend32 Unexecuted instantiation: PPCInstPrinter.c:OneExtend32 Unexecuted instantiation: SparcDisassembler.c:OneExtend32 Unexecuted instantiation: SparcDisassemblerExtension.c:OneExtend32 Unexecuted instantiation: SparcInstPrinter.c:OneExtend32 Unexecuted instantiation: SystemZDisassembler.c:OneExtend32 Unexecuted instantiation: SystemZInstPrinter.c:OneExtend32 Unexecuted instantiation: TriCoreInstPrinter.c:OneExtend32 Unexecuted instantiation: LoongArchDisassembler.c:OneExtend32 Unexecuted instantiation: XtensaDisassembler.c:OneExtend32 Unexecuted instantiation: XtensaInstPrinter.c:OneExtend32 Unexecuted instantiation: ARCDisassembler.c:OneExtend32 |
508 | | |
509 | | /// \brief One extend number X starting at bit B and returns it as int64_t. |
510 | | /// Requires 0 < B <= 64. |
511 | | static inline int64_t OneExtend64(uint64_t X, unsigned B) |
512 | 5.87k | { |
513 | 5.87k | return (~0ULL << B) | X; |
514 | 5.87k | } Unexecuted instantiation: SparcModule.c:OneExtend64 Unexecuted instantiation: ARMMapping.c:OneExtend64 Unexecuted instantiation: AArch64Mapping.c:OneExtend64 Unexecuted instantiation: PPCMapping.c:OneExtend64 Unexecuted instantiation: SparcMapping.c:OneExtend64 Unexecuted instantiation: XCoreDisassembler.c:OneExtend64 Unexecuted instantiation: XCoreInstPrinter.c:OneExtend64 Unexecuted instantiation: M68KDisassembler.c:OneExtend64 Unexecuted instantiation: TMS320C64xDisassembler.c:OneExtend64 Unexecuted instantiation: TMS320C64xInstPrinter.c:OneExtend64 Unexecuted instantiation: RISCVDisassembler.c:OneExtend64 Unexecuted instantiation: RISCVInstPrinter.c:OneExtend64 Unexecuted instantiation: TriCoreDisassembler.c:OneExtend64 Unexecuted instantiation: HPPADisassembler.c:OneExtend64 Unexecuted instantiation: XtensaMapping.c:OneExtend64 Unexecuted instantiation: ARMDisassembler.c:OneExtend64 Unexecuted instantiation: ARMDisassemblerExtension.c:OneExtend64 Unexecuted instantiation: ARMInstPrinter.c:OneExtend64 Unexecuted instantiation: AArch64Disassembler.c:OneExtend64 Unexecuted instantiation: AArch64DisassemblerExtension.c:OneExtend64 Unexecuted instantiation: AArch64InstPrinter.c:OneExtend64 Unexecuted instantiation: MipsDisassembler.c:OneExtend64 Unexecuted instantiation: PPCDisassembler.c:OneExtend64 Unexecuted instantiation: PPCInstPrinter.c:OneExtend64 Unexecuted instantiation: SparcDisassembler.c:OneExtend64 Unexecuted instantiation: SparcDisassemblerExtension.c:OneExtend64 Unexecuted instantiation: SparcInstPrinter.c:OneExtend64 Unexecuted instantiation: SystemZDisassembler.c:OneExtend64 Unexecuted instantiation: SystemZInstPrinter.c:OneExtend64 Unexecuted instantiation: TriCoreInstPrinter.c:OneExtend64 Unexecuted instantiation: LoongArchDisassembler.c:OneExtend64 XtensaDisassembler.c:OneExtend64 Line | Count | Source | 512 | 5.87k | { | 513 | 5.87k | return (~0ULL << B) | X; | 514 | 5.87k | } |
Unexecuted instantiation: XtensaInstPrinter.c:OneExtend64 Unexecuted instantiation: ARCDisassembler.c:OneExtend64 |
515 | | |
516 | | /// \brief Count number of 0's from the most significant bit to the least |
517 | | /// stopping at the first 1. |
518 | | /// |
519 | | /// Only unsigned integral types are allowed. |
520 | | /// |
521 | | /// \param ZB the behavior on an input of 0. Only ZB_Width and ZB_Undefined are |
522 | | /// valid arguments. |
523 | | static inline unsigned int countLeadingZeros(int x) |
524 | 60.2k | { |
525 | 60.2k | int i; |
526 | 60.2k | const unsigned bits = sizeof(x) * 8; |
527 | 60.2k | unsigned count = bits; |
528 | | |
529 | 60.2k | if (x < 0) { |
530 | 222 | return 0; |
531 | 222 | } |
532 | 399k | for (i = bits; --i;) { |
533 | 399k | if (x == 0) |
534 | 60.0k | break; |
535 | 339k | count--; |
536 | 339k | x >>= 1; |
537 | 339k | } |
538 | | |
539 | 60.0k | return count; |
540 | 60.2k | } Unexecuted instantiation: SparcModule.c:countLeadingZeros ARMMapping.c:countLeadingZeros Line | Count | Source | 524 | 783 | { | 525 | 783 | int i; | 526 | 783 | const unsigned bits = sizeof(x) * 8; | 527 | 783 | unsigned count = bits; | 528 | | | 529 | 783 | if (x < 0) { | 530 | 111 | return 0; | 531 | 111 | } | 532 | 6.50k | for (i = bits; --i;) { | 533 | 6.49k | if (x == 0) | 534 | 671 | break; | 535 | 5.82k | count--; | 536 | 5.82k | x >>= 1; | 537 | 5.82k | } | 538 | | | 539 | 672 | return count; | 540 | 783 | } |
AArch64Mapping.c:countLeadingZeros Line | Count | Source | 524 | 10.2k | { | 525 | 10.2k | int i; | 526 | 10.2k | const unsigned bits = sizeof(x) * 8; | 527 | 10.2k | unsigned count = bits; | 528 | | | 529 | 10.2k | if (x < 0) { | 530 | 0 | return 0; | 531 | 0 | } | 532 | 67.9k | for (i = bits; --i;) { | 533 | 67.9k | if (x == 0) | 534 | 10.2k | break; | 535 | 57.6k | count--; | 536 | 57.6k | x >>= 1; | 537 | 57.6k | } | 538 | | | 539 | 10.2k | return count; | 540 | 10.2k | } |
Unexecuted instantiation: PPCMapping.c:countLeadingZeros Unexecuted instantiation: SparcMapping.c:countLeadingZeros Unexecuted instantiation: XCoreDisassembler.c:countLeadingZeros Unexecuted instantiation: XCoreInstPrinter.c:countLeadingZeros Unexecuted instantiation: M68KDisassembler.c:countLeadingZeros Unexecuted instantiation: TMS320C64xDisassembler.c:countLeadingZeros Unexecuted instantiation: TMS320C64xInstPrinter.c:countLeadingZeros Unexecuted instantiation: RISCVDisassembler.c:countLeadingZeros Unexecuted instantiation: RISCVInstPrinter.c:countLeadingZeros Unexecuted instantiation: TriCoreDisassembler.c:countLeadingZeros Unexecuted instantiation: HPPADisassembler.c:countLeadingZeros Unexecuted instantiation: XtensaMapping.c:countLeadingZeros Unexecuted instantiation: ARMDisassembler.c:countLeadingZeros Unexecuted instantiation: ARMDisassemblerExtension.c:countLeadingZeros ARMInstPrinter.c:countLeadingZeros Line | Count | Source | 524 | 783 | { | 525 | 783 | int i; | 526 | 783 | const unsigned bits = sizeof(x) * 8; | 527 | 783 | unsigned count = bits; | 528 | | | 529 | 783 | if (x < 0) { | 530 | 111 | return 0; | 531 | 111 | } | 532 | 6.50k | for (i = bits; --i;) { | 533 | 6.49k | if (x == 0) | 534 | 671 | break; | 535 | 5.82k | count--; | 536 | 5.82k | x >>= 1; | 537 | 5.82k | } | 538 | | | 539 | 672 | return count; | 540 | 783 | } |
AArch64Disassembler.c:countLeadingZeros Line | Count | Source | 524 | 11.2k | { | 525 | 11.2k | int i; | 526 | 11.2k | const unsigned bits = sizeof(x) * 8; | 527 | 11.2k | unsigned count = bits; | 528 | | | 529 | 11.2k | if (x < 0) { | 530 | 0 | return 0; | 531 | 0 | } | 532 | 74.3k | for (i = bits; --i;) { | 533 | 74.3k | if (x == 0) | 534 | 11.2k | break; | 535 | 63.0k | count--; | 536 | 63.0k | x >>= 1; | 537 | 63.0k | } | 538 | | | 539 | 11.2k | return count; | 540 | 11.2k | } |
Unexecuted instantiation: AArch64DisassemblerExtension.c:countLeadingZeros AArch64InstPrinter.c:countLeadingZeros Line | Count | Source | 524 | 37.2k | { | 525 | 37.2k | int i; | 526 | 37.2k | const unsigned bits = sizeof(x) * 8; | 527 | 37.2k | unsigned count = bits; | 528 | | | 529 | 37.2k | if (x < 0) { | 530 | 0 | return 0; | 531 | 0 | } | 532 | 244k | for (i = bits; --i;) { | 533 | 244k | if (x == 0) | 534 | 37.2k | break; | 535 | 206k | count--; | 536 | 206k | x >>= 1; | 537 | 206k | } | 538 | | | 539 | 37.2k | return count; | 540 | 37.2k | } |
Unexecuted instantiation: MipsDisassembler.c:countLeadingZeros Unexecuted instantiation: PPCDisassembler.c:countLeadingZeros Unexecuted instantiation: PPCInstPrinter.c:countLeadingZeros Unexecuted instantiation: SparcDisassembler.c:countLeadingZeros Unexecuted instantiation: SparcDisassemblerExtension.c:countLeadingZeros Unexecuted instantiation: SparcInstPrinter.c:countLeadingZeros Unexecuted instantiation: SystemZDisassembler.c:countLeadingZeros Unexecuted instantiation: SystemZInstPrinter.c:countLeadingZeros Unexecuted instantiation: TriCoreInstPrinter.c:countLeadingZeros Unexecuted instantiation: LoongArchDisassembler.c:countLeadingZeros Unexecuted instantiation: XtensaDisassembler.c:countLeadingZeros Unexecuted instantiation: XtensaInstPrinter.c:countLeadingZeros Unexecuted instantiation: ARCDisassembler.c:countLeadingZeros |
541 | | |
542 | | /// \brief Get specified field from 32-bit instruction. Returns bits from the segment [from, to] |
543 | | /// The right most bit of insn is bit 31. |
544 | | static inline uint32_t get_insn_field(uint32_t insn, uint8_t from, uint8_t to) |
545 | 0 | { |
546 | 0 | return insn >> (31 - to) & ((1 << (to - from + 1)) - 1); |
547 | 0 | } Unexecuted instantiation: SparcModule.c:get_insn_field Unexecuted instantiation: ARMMapping.c:get_insn_field Unexecuted instantiation: AArch64Mapping.c:get_insn_field Unexecuted instantiation: PPCMapping.c:get_insn_field Unexecuted instantiation: SparcMapping.c:get_insn_field Unexecuted instantiation: XCoreDisassembler.c:get_insn_field Unexecuted instantiation: XCoreInstPrinter.c:get_insn_field Unexecuted instantiation: M68KDisassembler.c:get_insn_field Unexecuted instantiation: TMS320C64xDisassembler.c:get_insn_field Unexecuted instantiation: TMS320C64xInstPrinter.c:get_insn_field Unexecuted instantiation: RISCVDisassembler.c:get_insn_field Unexecuted instantiation: RISCVInstPrinter.c:get_insn_field Unexecuted instantiation: TriCoreDisassembler.c:get_insn_field Unexecuted instantiation: HPPADisassembler.c:get_insn_field Unexecuted instantiation: XtensaMapping.c:get_insn_field Unexecuted instantiation: ARMDisassembler.c:get_insn_field Unexecuted instantiation: ARMDisassemblerExtension.c:get_insn_field Unexecuted instantiation: ARMInstPrinter.c:get_insn_field Unexecuted instantiation: AArch64Disassembler.c:get_insn_field Unexecuted instantiation: AArch64DisassemblerExtension.c:get_insn_field Unexecuted instantiation: AArch64InstPrinter.c:get_insn_field Unexecuted instantiation: MipsDisassembler.c:get_insn_field Unexecuted instantiation: PPCDisassembler.c:get_insn_field Unexecuted instantiation: PPCInstPrinter.c:get_insn_field Unexecuted instantiation: SparcDisassembler.c:get_insn_field Unexecuted instantiation: SparcDisassemblerExtension.c:get_insn_field Unexecuted instantiation: SparcInstPrinter.c:get_insn_field Unexecuted instantiation: SystemZDisassembler.c:get_insn_field Unexecuted instantiation: SystemZInstPrinter.c:get_insn_field Unexecuted instantiation: TriCoreInstPrinter.c:get_insn_field Unexecuted instantiation: LoongArchDisassembler.c:get_insn_field Unexecuted instantiation: XtensaDisassembler.c:get_insn_field Unexecuted instantiation: XtensaInstPrinter.c:get_insn_field Unexecuted instantiation: ARCDisassembler.c:get_insn_field |
548 | | |
549 | | /// \brief Get specified field from 32-bit instruction. Returns bits from the segment [from, to] |
550 | | /// The right most bit of insn is bit 0. |
551 | | static inline uint32_t get_insn_field_r(uint32_t insn, uint8_t from, uint8_t to) |
552 | 44.8k | { |
553 | 44.8k | return insn >> from & ((1 << (to - from + 1)) - 1); |
554 | 44.8k | } Unexecuted instantiation: SparcModule.c:get_insn_field_r Unexecuted instantiation: ARMMapping.c:get_insn_field_r Unexecuted instantiation: AArch64Mapping.c:get_insn_field_r Unexecuted instantiation: PPCMapping.c:get_insn_field_r SparcMapping.c:get_insn_field_r Line | Count | Source | 552 | 44.8k | { | 553 | 44.8k | return insn >> from & ((1 << (to - from + 1)) - 1); | 554 | 44.8k | } |
Unexecuted instantiation: XCoreDisassembler.c:get_insn_field_r Unexecuted instantiation: XCoreInstPrinter.c:get_insn_field_r Unexecuted instantiation: M68KDisassembler.c:get_insn_field_r Unexecuted instantiation: TMS320C64xDisassembler.c:get_insn_field_r Unexecuted instantiation: TMS320C64xInstPrinter.c:get_insn_field_r Unexecuted instantiation: RISCVDisassembler.c:get_insn_field_r Unexecuted instantiation: RISCVInstPrinter.c:get_insn_field_r Unexecuted instantiation: TriCoreDisassembler.c:get_insn_field_r Unexecuted instantiation: HPPADisassembler.c:get_insn_field_r Unexecuted instantiation: XtensaMapping.c:get_insn_field_r Unexecuted instantiation: ARMDisassembler.c:get_insn_field_r Unexecuted instantiation: ARMDisassemblerExtension.c:get_insn_field_r Unexecuted instantiation: ARMInstPrinter.c:get_insn_field_r Unexecuted instantiation: AArch64Disassembler.c:get_insn_field_r Unexecuted instantiation: AArch64DisassemblerExtension.c:get_insn_field_r Unexecuted instantiation: AArch64InstPrinter.c:get_insn_field_r Unexecuted instantiation: MipsDisassembler.c:get_insn_field_r Unexecuted instantiation: PPCDisassembler.c:get_insn_field_r Unexecuted instantiation: PPCInstPrinter.c:get_insn_field_r Unexecuted instantiation: SparcDisassembler.c:get_insn_field_r Unexecuted instantiation: SparcDisassemblerExtension.c:get_insn_field_r Unexecuted instantiation: SparcInstPrinter.c:get_insn_field_r Unexecuted instantiation: SystemZDisassembler.c:get_insn_field_r Unexecuted instantiation: SystemZInstPrinter.c:get_insn_field_r Unexecuted instantiation: TriCoreInstPrinter.c:get_insn_field_r Unexecuted instantiation: LoongArchDisassembler.c:get_insn_field_r Unexecuted instantiation: XtensaDisassembler.c:get_insn_field_r Unexecuted instantiation: XtensaInstPrinter.c:get_insn_field_r Unexecuted instantiation: ARCDisassembler.c:get_insn_field_r |
555 | | |
556 | | /// \brief Get specified bit from 32-bit instruction |
557 | | static inline uint32_t get_insn_bit(uint32_t insn, uint8_t bit) |
558 | 0 | { |
559 | 0 | return get_insn_field(insn, bit, bit); |
560 | 0 | } Unexecuted instantiation: SparcModule.c:get_insn_bit Unexecuted instantiation: ARMMapping.c:get_insn_bit Unexecuted instantiation: AArch64Mapping.c:get_insn_bit Unexecuted instantiation: PPCMapping.c:get_insn_bit Unexecuted instantiation: SparcMapping.c:get_insn_bit Unexecuted instantiation: XCoreDisassembler.c:get_insn_bit Unexecuted instantiation: XCoreInstPrinter.c:get_insn_bit Unexecuted instantiation: M68KDisassembler.c:get_insn_bit Unexecuted instantiation: TMS320C64xDisassembler.c:get_insn_bit Unexecuted instantiation: TMS320C64xInstPrinter.c:get_insn_bit Unexecuted instantiation: RISCVDisassembler.c:get_insn_bit Unexecuted instantiation: RISCVInstPrinter.c:get_insn_bit Unexecuted instantiation: TriCoreDisassembler.c:get_insn_bit Unexecuted instantiation: HPPADisassembler.c:get_insn_bit Unexecuted instantiation: XtensaMapping.c:get_insn_bit Unexecuted instantiation: ARMDisassembler.c:get_insn_bit Unexecuted instantiation: ARMDisassemblerExtension.c:get_insn_bit Unexecuted instantiation: ARMInstPrinter.c:get_insn_bit Unexecuted instantiation: AArch64Disassembler.c:get_insn_bit Unexecuted instantiation: AArch64DisassemblerExtension.c:get_insn_bit Unexecuted instantiation: AArch64InstPrinter.c:get_insn_bit Unexecuted instantiation: MipsDisassembler.c:get_insn_bit Unexecuted instantiation: PPCDisassembler.c:get_insn_bit Unexecuted instantiation: PPCInstPrinter.c:get_insn_bit Unexecuted instantiation: SparcDisassembler.c:get_insn_bit Unexecuted instantiation: SparcDisassemblerExtension.c:get_insn_bit Unexecuted instantiation: SparcInstPrinter.c:get_insn_bit Unexecuted instantiation: SystemZDisassembler.c:get_insn_bit Unexecuted instantiation: SystemZInstPrinter.c:get_insn_bit Unexecuted instantiation: TriCoreInstPrinter.c:get_insn_bit Unexecuted instantiation: LoongArchDisassembler.c:get_insn_bit Unexecuted instantiation: XtensaDisassembler.c:get_insn_bit Unexecuted instantiation: XtensaInstPrinter.c:get_insn_bit Unexecuted instantiation: ARCDisassembler.c:get_insn_bit |
561 | | |
562 | | /// \brief Create a bitmask with the N right-most bits set to 1, and all other |
563 | | /// bits set to 0. Only unsigned types are allowed. |
564 | | static inline uint32_t maskTrailingOnes32(uint32_t N) |
565 | 0 | { |
566 | 0 | const unsigned Bits = CHAR_BIT * sizeof(uint32_t); |
567 | 0 | return N == 0 ? 0 : (((uint32_t)-1) >> (Bits - N)); |
568 | 0 | } Unexecuted instantiation: SparcModule.c:maskTrailingOnes32 Unexecuted instantiation: ARMMapping.c:maskTrailingOnes32 Unexecuted instantiation: AArch64Mapping.c:maskTrailingOnes32 Unexecuted instantiation: PPCMapping.c:maskTrailingOnes32 Unexecuted instantiation: SparcMapping.c:maskTrailingOnes32 Unexecuted instantiation: XCoreDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: XCoreInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: M68KDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: TMS320C64xDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: TMS320C64xInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: RISCVDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: RISCVInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: TriCoreDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: HPPADisassembler.c:maskTrailingOnes32 Unexecuted instantiation: XtensaMapping.c:maskTrailingOnes32 Unexecuted instantiation: ARMDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: ARMDisassemblerExtension.c:maskTrailingOnes32 Unexecuted instantiation: ARMInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: AArch64Disassembler.c:maskTrailingOnes32 Unexecuted instantiation: AArch64DisassemblerExtension.c:maskTrailingOnes32 Unexecuted instantiation: AArch64InstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: MipsDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: PPCDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: PPCInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: SparcDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: SparcDisassemblerExtension.c:maskTrailingOnes32 Unexecuted instantiation: SparcInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: SystemZDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: SystemZInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: TriCoreInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: LoongArchDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: XtensaDisassembler.c:maskTrailingOnes32 Unexecuted instantiation: XtensaInstPrinter.c:maskTrailingOnes32 Unexecuted instantiation: ARCDisassembler.c:maskTrailingOnes32 |
569 | | |
570 | | #endif |