Match a simple ternary‐intrinsic value‐accumulating recurrence.
Synopsis
Declared in <llvm/Analysis/ValueTracking.h>
bool
matchSimpleTernaryIntrinsicRecurrence(
IntrinsicInst const* I,
PHINode*& P,
Value*& Init,
Value*& OtherOp0,
Value*& OtherOp1);
Description
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(%OtherOp0, %OtherOp1, %llvm.intrinsic.acc) OR %llvm.intrinsic.acc = phi Ty [%Init, %Entry], [%llvm.intrinsic, %backedge] %llvm.intrinsic = call Ty llvm.intrinsic(%llvm.intrinsic.acc, %OtherOp0, %OtherOp1)
The recurrence relation is of kind: X_0 = %a (initial value), X_i = call llvm.ternary.intrinsic(X_i‐1, %b, %c) Where %b, %c are not required to be loop‐invariant.
Return Value
True if a simple ternary intrinsic recurrence was matched.
Parameters
Name |
Description |
I |
Intrinsic call that may be the recurrence update. |
P |
Output phi accumulator of the matched recurrence. |
Init |
Output initial value of the accumulator. |
OtherOp0 |
Output first non‐accumulator operand of the intrinsic. |
OtherOp1 |
Output second non‐accumulator operand of the intrinsic. |
Created with MrDocs