LLVM-STUDY
computeKnownBitsFromICmpCond
die4taoam
2024. 5. 1. 18:08
computeKnownBitsFromCond
ㄴ computeKnownBitsFromICmpCond
void llvm::computeKnownBitsFromICmpCond(const Value *V, ICmpInst *Cmp,
KnownBits &Known,
const SimplifyQuery &SQ, bool Invert) {
ICmpInst::Predicate Pred =
Invert ? Cmp->getInversePredicate() : Cmp->getPredicate();
Value *LHS = Cmp->getOperand(0);
Value *RHS = Cmp->getOperand(1);
// Handle icmp pred (trunc V), C
if (match(LHS, m_Trunc(m_Specific(V)))) {
KnownBits DstKnown(LHS->getType()->getScalarSizeInBits());
computeKnownBitsFromCmp(LHS, Pred, LHS, RHS, DstKnown, SQ);
Known = Known.unionWith(DstKnown.anyext(Known.getBitWidth()));
return;
}
computeKnownBitsFromCmp(V, Pred, LHS, RHS, Known, SQ);
}
computeKnownBitsFromICmpCond 함수는 computeKnownBitsFromCond 에서 Condition이 ICmpInst 인 경우 호출된다.
이 함수는 위에서 보이다시피 ICmpInst 의 요소를 추출해 computeKnownBitsFromCmp 를 호출하는 일종의 래핑 함수라고 생각하면 된다.
computeKnownBitsFromCmp 에 대한 자세한 설명은 여기서