LLVM: include/llvm/CodeGen/GlobalISel/GISelValueTracking.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_CODEGEN_GLOBALISEL_GISELVALUETRACKING_H
15#define LLVM_CODEGEN_GLOBALISEL_GISELVALUETRACKING_H
16
28
29namespace llvm {
30
33
39 unsigned MaxDepth;
40
42 const APInt &DemandedElts, unsigned Depth = 0);
43
45 const APInt &DemandedElts, unsigned Depth = 0);
46
49
51 const APInt &DemandedElts,
54
58
59public:
62
64
66
68 const APInt &DemandedElts, unsigned Depth = 0);
69
70 unsigned computeNumSignBits(Register R, const APInt &DemandedElts,
71 unsigned Depth = 0);
72 unsigned computeNumSignBits(Register R, unsigned Depth = 0);
73
74
77 unsigned Depth = 0);
78
79
83
84
85
86
90
91
92
94
99
100
102
103
104
105
106 std::optional
107 getValidShiftAmountRange(Register R, const APInt &DemandedElts,
109
110
111
112
113 std::optional<uint64_t> getValidMinimumShiftAmount(Register R,
114 const APInt &DemandedElts,
115 unsigned Depth = 0);
116
117
118
119
120
121
122
123
124
125
126
130
133 unsigned Depth = 0);
134
135
140
144
145
150
151protected:
153};
154
155
156
157
158
159
160
161
162
164 std::unique_ptr Info;
165
166public:
173 void getAnalysisUsage(AnalysisUsage &AU) const override;
176};
177
189
191 : public PassInfoMixin {
193
194public:
196
199};
200}
201
202#endif
This file declares a class to represent arbitrary precision floating point values and provide a varie...
This file defines the DenseMap class.
This contains common code to allow clients to notify changes to machine instr.
This header defines various interfaces for pass management in LLVM.
void computeKnownFPClass(const Value *V, const APInt &DemandedElts, FPClassTest InterestedClasses, KnownFPClass &Known, const SimplifyQuery &Q, unsigned Depth)
static void computeKnownFPClassForFPTrunc(const Operator *Op, const APInt &DemandedElts, FPClassTest InterestedClasses, KnownFPClass &Known, const SimplifyQuery &Q, unsigned Depth)
Class for arbitrary precision integers.
void setLowBits(unsigned loBits)
Set the bottom loBits bits.
Represent the analysis usage information of a pass.
A parsed version of the target data layout string in and methods for querying it.
Abstract class that contains various methods for clients to notify about changes.
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
Definition GISelValueTracking.h:175
GISelValueTrackingAnalysisLegacy()
Definition GISelValueTracking.h:168
static char ID
Definition GISelValueTracking.h:167
GISelValueTracking Result
Definition GISelValueTracking.h:184
LLVM_ABI Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
GISelValueTrackingPrinterPass(raw_ostream &OS)
Definition GISelValueTracking.h:195
LLVM_ABI PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
unsigned getMaxDepth() const
Definition GISelValueTracking.h:152
KnownBits getKnownBits(Register R)
void createdInstr(MachineInstr &MI) override
An instruction has been created and inserted into the function.
Definition GISelValueTracking.h:147
static void computeKnownBitsForAlignment(KnownBits &Known, Align Alignment)
Definition GISelValueTracking.h:95
bool maskedValueIsZero(Register Val, const APInt &Mask)
Definition GISelValueTracking.h:87
const DataLayout & getDataLayout() const
Definition GISelValueTracking.h:65
const MachineFunction & getMachineFunction() const
Definition GISelValueTracking.h:63
void changedInstr(MachineInstr &MI) override
This instruction was mutated in some way.
Definition GISelValueTracking.h:149
void erasingInstr(MachineInstr &MI) override
An instruction is about to be erased.
Definition GISelValueTracking.h:146
~GISelValueTracking() override=default
void changingInstr(MachineInstr &MI) override
This instruction is about to be mutated in some way.
Definition GISelValueTracking.h:148
GISelValueTracking(MachineFunction &MF, unsigned MaxDepth=6)
MachineFunctionPass(char &ID)
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
static LLVM_ABI PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
A set of analyses that are preserved following a run of a transformation pass.
Wrapper class representing virtual and physical registers.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
decltype(auto) get(const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &Pair)
FPClassTest
Floating-point class tests, supported by 'is_fpclass' intrinsic.
LLVM_ABI void initializeGISelValueTrackingAnalysisLegacyPass(PassRegistry &)
DWARFExpression::Operation Op
unsigned Log2(Align A)
Returns the log2 of the alignment.
This struct is a compact representation of a valid (non-zero power of two) alignment.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
A CRTP mix-in to automatically provide informational APIs needed for passes.