@@ -33,20 +33,15 @@ static bool bundleHasArgument(const CallBase::BundleOpInfo &BOI, unsigned Idx) {
33
33
return BOI.End - BOI.Begin > Idx;
34
34
}
35
35
36
- static Value *getValueFromBundleOpInfo (CallInst &Assume,
36
+ static Value *getValueFromBundleOpInfo (AssumeInst &Assume,
37
37
const CallBase::BundleOpInfo &BOI,
38
38
unsigned Idx) {
39
39
assert (bundleHasArgument (BOI, Idx) && " index out of range" );
40
40
return (Assume.op_begin () + BOI.Begin + Idx)->get ();
41
41
}
42
42
43
- bool llvm::hasAttributeInAssume (CallInst &AssumeCI , Value *IsOn,
43
+ bool llvm::hasAttributeInAssume (AssumeInst &Assume , Value *IsOn,
44
44
StringRef AttrName, uint64_t *ArgVal) {
45
- assert (isa<IntrinsicInst>(AssumeCI) &&
46
- " this function is intended to be used on llvm.assume" );
47
- IntrinsicInst &Assume = cast<IntrinsicInst>(AssumeCI);
48
- assert (Assume.getIntrinsicID () == Intrinsic::assume &&
49
- " this function is intended to be used on llvm.assume" );
50
45
assert (Attribute::isExistingAttribute (AttrName) &&
51
46
" this attribute doesn't exist" );
52
47
assert ((ArgVal == nullptr || Attribute::doesAttrKindHaveArgument (
@@ -72,10 +67,7 @@ bool llvm::hasAttributeInAssume(CallInst &AssumeCI, Value *IsOn,
72
67
return false ;
73
68
}
74
69
75
- void llvm::fillMapFromAssume (CallInst &AssumeCI, RetainedKnowledgeMap &Result) {
76
- IntrinsicInst &Assume = cast<IntrinsicInst>(AssumeCI);
77
- assert (Assume.getIntrinsicID () == Intrinsic::assume &&
78
- " this function is intended to be used on llvm.assume" );
70
+ void llvm::fillMapFromAssume (AssumeInst &Assume, RetainedKnowledgeMap &Result) {
79
71
for (auto &Bundles : Assume.bundle_op_infos ()) {
80
72
std::pair<Value *, Attribute::AttrKind> Key{
81
73
nullptr , Attribute::getAttrKindFromName (Bundles.Tag ->getKey ())};
@@ -104,7 +96,7 @@ void llvm::fillMapFromAssume(CallInst &AssumeCI, RetainedKnowledgeMap &Result) {
104
96
}
105
97
106
98
RetainedKnowledge
107
- llvm::getKnowledgeFromBundle (CallInst &Assume,
99
+ llvm::getKnowledgeFromBundle (AssumeInst &Assume,
108
100
const CallBase::BundleOpInfo &BOI) {
109
101
RetainedKnowledge Result;
110
102
Result.AttrKind = Attribute::getAttrKindFromName (BOI.Tag ->getKey ());
@@ -124,19 +116,13 @@ llvm::getKnowledgeFromBundle(CallInst &Assume,
124
116
return Result;
125
117
}
126
118
127
- RetainedKnowledge llvm::getKnowledgeFromOperandInAssume (CallInst &AssumeCI ,
119
+ RetainedKnowledge llvm::getKnowledgeFromOperandInAssume (AssumeInst &Assume ,
128
120
unsigned Idx) {
129
- IntrinsicInst &Assume = cast<IntrinsicInst>(AssumeCI);
130
- assert (Assume.getIntrinsicID () == Intrinsic::assume &&
131
- " this function is intended to be used on llvm.assume" );
132
121
CallBase::BundleOpInfo BOI = Assume.getBundleOpInfoForOperand (Idx);
133
- return getKnowledgeFromBundle (AssumeCI , BOI);
122
+ return getKnowledgeFromBundle (Assume , BOI);
134
123
}
135
124
136
- bool llvm::isAssumeWithEmptyBundle (CallInst &CI) {
137
- IntrinsicInst &Assume = cast<IntrinsicInst>(CI);
138
- assert (Assume.getIntrinsicID () == Intrinsic::assume &&
139
- " this function is intended to be used on llvm.assume" );
125
+ bool llvm::isAssumeWithEmptyBundle (AssumeInst &Assume) {
140
126
return none_of (Assume.bundle_op_infos (),
141
127
[](const CallBase::BundleOpInfo &BOI) {
142
128
return BOI.Tag ->getKey () != IgnoreBundleTag;
@@ -158,7 +144,7 @@ llvm::getKnowledgeFromUse(const Use *U,
158
144
if (!Bundle)
159
145
return RetainedKnowledge::none ();
160
146
RetainedKnowledge RK =
161
- getKnowledgeFromBundle (*cast<CallInst >(U->getUser ()), *Bundle);
147
+ getKnowledgeFromBundle (*cast<AssumeInst >(U->getUser ()), *Bundle);
162
148
if (llvm::is_contained (AttrKinds, RK.AttrKind ))
163
149
return RK;
164
150
return RetainedKnowledge::none ();
@@ -176,7 +162,7 @@ llvm::getKnowledgeForValue(const Value *V,
176
162
return RetainedKnowledge::none ();
177
163
if (AC) {
178
164
for (AssumptionCache::ResultElem &Elem : AC->assumptionsFor (V)) {
179
- IntrinsicInst *II = cast_or_null<IntrinsicInst >(Elem.Assume );
165
+ auto *II = cast_or_null<AssumeInst >(Elem.Assume );
180
166
if (!II || Elem.Index == AssumptionCache::ExprResultIdx)
181
167
continue ;
182
168
if (RetainedKnowledge RK = getKnowledgeFromBundle (
@@ -197,7 +183,7 @@ llvm::getKnowledgeForValue(const Value *V,
197
183
if (!Bundle)
198
184
continue ;
199
185
if (RetainedKnowledge RK =
200
- getKnowledgeFromBundle (*cast<CallInst >(U.getUser ()), *Bundle))
186
+ getKnowledgeFromBundle (*cast<AssumeInst >(U.getUser ()), *Bundle))
201
187
if (is_contained (AttrKinds, RK.AttrKind ) &&
202
188
Filter (RK, cast<Instruction>(U.getUser ()), Bundle)) {
203
189
NumUsefullAssumeQueries++;
0 commit comments