Go to the documentation of this file.
13 #ifndef LLVM_IR_PSEUDOPROBE_H
14 #define LLVM_IR_PSEUDOPROBE_H
45 assert(Index <= 0xFFFF &&
"Probe index too big to encode, exceeding 2^16");
46 assert(
Type <= 0x7 &&
"Probe type too big to encode, exceeding 7");
49 "Probe distribution factor too big to encode, exceeding 100");
50 return (Index << 3) | (Factor << 19) | (
Type << 26) | 0x7;
54 return (
Value >> 3) & 0xFFFF;
58 return (
Value >> 26) & 0x7;
62 return (
Value >> 29) & 0x7;
66 return (
Value >> 19) & 0x7F;
88 #endif // LLVM_IR_PSEUDOPROBE_H
constexpr static uint64_t PseudoProbeFullDistributionFactor
static uint32_t extractProbeAttributes(uint32_t Value)
This is an optimization pass for GlobalISel generic memory operations.
constexpr static uint8_t FullDistributionFactor
static uint32_t extractProbeType(uint32_t Value)
The instances of the Type class are immutable: once they are created, they are never changed.
static uint32_t extractProbeFactor(uint32_t Value)
static uint32_t packProbeData(uint32_t Index, uint32_t Type, uint32_t Flags, uint32_t Factor)
constexpr const char * PseudoProbeDescMetadataName
void setProbeDistributionFactor(Instruction &Inst, float Factor)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static uint32_t extractProbeIndex(uint32_t Value)
Optional< PseudoProbe > extractProbe(const Instruction &Inst)
Align max(MaybeAlign Lhs, Align Rhs)
LLVM Value Representation.