Lines Matching defs:ProfileData

68 static void extractFromBranchWeightMD(const MDNode *ProfileData,
70 assert(isBranchWeightMD(ProfileData) && "wrong metadata");
72 unsigned NOps = ProfileData->getNumOperands();
73 unsigned WeightsIdx = getBranchWeightOffset(ProfileData);
79 mdconst::dyn_extract<ConstantInt>(ProfileData->getOperand(Idx));
95 bool isBranchWeightMD(const MDNode *ProfileData) {
96 return isTargetMD(ProfileData, "branch_weights", MinBWOps);
99 bool isValueProfileMD(const MDNode *ProfileData) {
100 return isTargetMD(ProfileData, "VP", MinVPOps);
104 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
105 return isBranchWeightMD(ProfileData);
109 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
111 if (isValueProfileMD(ProfileData))
115 return isa<CallBase>(I) && !isBranchWeightMD(ProfileData);
123 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
124 return hasBranchWeightOrigin(ProfileData);
127 bool hasBranchWeightOrigin(const MDNode *ProfileData) {
128 if (!isBranchWeightMD(ProfileData))
130 auto *ProfDataName = dyn_cast<MDString>(ProfileData->getOperand(1));
138 unsigned getBranchWeightOffset(const MDNode *ProfileData) {
139 return hasBranchWeightOrigin(ProfileData) ? 2 : 1;
142 unsigned getNumBranchWeights(const MDNode &ProfileData) {
143 return ProfileData.getNumOperands() - getBranchWeightOffset(&ProfileData);
147 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
148 if (!isBranchWeightMD(ProfileData))
150 return ProfileData;
154 auto *ProfileData = getBranchWeightMDNode(I);
155 if (ProfileData && getNumBranchWeights(*ProfileData) == I.getNumSuccessors())
156 return ProfileData;
160 void extractFromBranchWeightMD32(const MDNode *ProfileData,
162 extractFromBranchWeightMD(ProfileData, Weights);
165 void extractFromBranchWeightMD64(const MDNode *ProfileData,
167 extractFromBranchWeightMD(ProfileData, Weights);
170 bool extractBranchWeights(const MDNode *ProfileData,
172 if (!isBranchWeightMD(ProfileData))
174 extractFromBranchWeightMD(ProfileData, Weights);
180 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
181 return extractBranchWeights(ProfileData, Weights);
192 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
193 if (!extractBranchWeights(ProfileData, Weights))
204 bool extractProfTotalWeight(const MDNode *ProfileData, uint64_t &TotalVal) {
206 if (!ProfileData)
209 auto *ProfDataName = dyn_cast<MDString>(ProfileData->getOperand(0));
214 unsigned Offset = getBranchWeightOffset(ProfileData);
215 for (unsigned Idx = Offset; Idx < ProfileData->getNumOperands(); ++Idx) {
216 auto *V = mdconst::extract<ConstantInt>(ProfileData->getOperand(Idx));
222 if (ProfDataName->getString() == "VP" && ProfileData->getNumOperands() > 3) {
223 TotalVal = mdconst::dyn_extract<ConstantInt>(ProfileData->getOperand(2))
244 auto *ProfileData = I.getMetadata(LLVMContext::MD_prof);
245 if (ProfileData == nullptr)
248 auto *ProfDataName = dyn_cast<MDString>(ProfileData->getOperand(0));
260 Vals.push_back(ProfileData->getOperand(0));
263 ProfileData->getNumOperands() > 0) {
267 ProfileData->getOperand(getBranchWeightOffset(ProfileData)))
274 for (unsigned i = 1; i < ProfileData->getNumOperands(); i += 2) {
276 Vals.push_back(ProfileData->getOperand(i));
278 mdconst::dyn_extract<ConstantInt>(ProfileData->getOperand(i + 1))
283 Vals.push_back(ProfileData->getOperand(i + 1));