llvm::matchSimpleBinaryIntrinsicRecurrence

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)

Synopsis

Declared in <llvm/Analysis/ValueTracking.h>

bool
matchSimpleBinaryIntrinsicRecurrence(
    IntrinsicInst const* I,
    PHINode*& P,
    Value*& Init,
    Value*& OtherOp);

Description

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.

Parameters

NameDescription
IA wrapper class for inspecting calls to intrinsic functions. This allows the standard isa/dyncast/cast functionality to work with calls to intrinsic functions.
InitLLVM Value Representation
OtherOpLLVM Value Representation