9#ifndef LLVM_SANDBOXIR_OPERATOR_H
10#define LLVM_SANDBOXIR_OPERATOR_H
23 void *
operator new(
size_t s) =
delete;
31 return cast<llvm::Operator>(
Val)->hasPoisonGeneratingFlags();
38 return cast<llvm::OverflowingBinaryOperator>(
Val)->hasNoUnsignedWrap();
41 return cast<llvm::OverflowingBinaryOperator>(
Val)->hasNoSignedWrap();
44 return cast<llvm::OverflowingBinaryOperator>(
Val)->getNoWrapKind();
48 cast<llvm::Instruction>(
From->Val));
52 cast<llvm::ConstantExpr>(
From->Val));
61 bool isFast()
const {
return cast<llvm::FPMathOperator>(
Val)->isFast(); }
63 return cast<llvm::FPMathOperator>(
Val)->hasAllowReassoc();
66 return cast<llvm::FPMathOperator>(
Val)->hasNoNaNs();
69 return cast<llvm::FPMathOperator>(
Val)->hasNoInfs();
72 return cast<llvm::FPMathOperator>(
Val)->hasNoSignedZeros();
75 return cast<llvm::FPMathOperator>(
Val)->hasAllowReciprocal();
78 return cast<llvm::FPMathOperator>(
Val)->hasAllowContract();
81 return cast<llvm::FPMathOperator>(
Val)->hasApproxFunc();
84 return cast<llvm::FPMathOperator>(
Val)->getFastMathFlags();
87 return cast<llvm::FPMathOperator>(
Val)->getFPAccuracy();
BlockVerifier::State From
static bool classof(const Value *V)
static bool isSupportedFloatingPointType(Type *Ty)
Returns true if Ty is a supported floating-point type for phi, select, or call FPMathOperators.
Convenience struct for specifying and reasoning about fast-math flags.
static bool classof(const Instruction *)
static bool classof(const Instruction *I)
bool hasAllowContract() const
bool hasAllowReassoc() const
FastMathFlags getFastMathFlags() const
bool hasAllowReciprocal() const
bool hasNoSignedZeros() const
float getFPAccuracy() const
static bool isSupportedFloatingPointType(Type *Ty)
bool hasApproxFunc() const
static bool classof(const Value *V)
A sandboxir::User with operands, opcode and linked with previous/next instructions in an instruction ...
bool hasPoisonGeneratingFlags() const
static bool classof(const Value *From)
static bool classof(const Instruction *)
static bool classof(const ConstantExpr *)
static bool classof(const ConstantExpr *From)
bool hasNoSignedWrap() const
static bool classof(const Value *From)
bool hasNoUnsignedWrap() const
unsigned getNoWrapKind() const
static bool classof(const Instruction *From)
Just like llvm::Type these are immutable, unique, never get freed and can only be created via static ...
A sandboxir::User has operands.
A SandboxIR Value has users. This is the base class.
llvm::Value * Val
The LLVM Value that corresponds to this SandboxIR Value.