Attempt to match a simple value-accumulating recurrence of the form: %llvm.intrinsic.acc = phi Ty [%Init, %Entry], [%llvm.intrinsic, %backedge] %llvm.intrinsic = call Ty llvm.intrinsic(%OtherOp, %llvm.intrinsic.acc) OR %llvm.intrinsic.acc = phi Ty [%Init, %Entry], [%llvm.intrinsic, %backedge] %llvm.intrinsic = call Ty llvm.intrinsic(%llvm.intrinsic.acc, %OtherOp)
Declared in <llvm/Analysis/ValueTracking.h>
bool
matchSimpleBinaryIntrinsicRecurrence(
IntrinsicInst const* I,
PHINode*& P,
Value*& Init,
Value*& OtherOp);
The recurrence relation is of kind: X_0 = %a (initial value), X_i = call llvm.binary.intrinsic(X_i-1, %b) Where %b is not required to be loop-invariant.
| Name | Description |
|---|---|
| I | A wrapper class for inspecting calls to intrinsic functions. This allows the standard isa/dyncast/cast functionality to work with calls to intrinsic functions. |
| Init | LLVM Value Representation |
| OtherOp | LLVM Value Representation |