LLVM 19.0.0git
Namespaces | Functions
GuardUtils.h File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Functions

bool llvm::isGuard (const User *U)
 Returns true iff U has semantics of a guard expressed in a form of call of llvm.experimental.guard intrinsic.
 
bool llvm::isWidenableCondition (const Value *V)
 Returns true iff V has semantics of llvm.experimental.widenable.condition call.
 
bool llvm::isWidenableBranch (const User *U)
 Returns true iff U is a widenable branch (that is, extractWidenableCondition returns widenable condition).
 
bool llvm::isGuardAsWidenableBranch (const User *U)
 Returns true iff U has semantics of a guard expressed in a form of a widenable conditional branch to deopt block.
 
bool llvm::parseWidenableBranch (const User *U, Value *&Condition, Value *&WidenableCondition, BasicBlock *&IfTrueBB, BasicBlock *&IfFalseBB)
 If U is widenable branch looking like: cond = ... wc = call i1 @llvm.experimental.widenable.condition() branch_cond = and i1 cond, wc br i1 branch_cond, label if_true_bb, label if_false_bb ; <— U The function returns true, and the values cond and wc and blocks if_true_bb, if_false_bb are returned in the parameters (Condition, WidenableCondition, IfTrueBB and IfFalseFF) respectively.
 
bool llvm::parseWidenableBranch (User *U, Use *&Cond, Use *&WC, BasicBlock *&IfTrueBB, BasicBlock *&IfFalseBB)
 Analogous to the above, but return the Uses so that they can be modified.
 
void llvm::parseWidenableGuard (const User *U, llvm::SmallVectorImpl< Value * > &Checks)
 
Valuellvm::extractWidenableCondition (const User *U)