class SMTSolver
Declaration
class SMTSolver { /* full declaration omitted */ };
Description
Generic base class for SMT Solvers This class is responsible for wrapping all sorts and expression generation, through the mk* methods. It also provides methods to create SMT expressions straight from clang's AST, through the from* methods.
Declared at: llvm/include/llvm/Support/SMTAPI.h:136
Method Overview
- public SMTSolver()
- public virtual void addConstraint(const llvm::SMTExprRef & Exp) const
- public virtual Optional<bool> check() const
- public void dump() const
- public virtual llvm::APSInt getBitvector(const llvm::SMTExprRef & Exp, unsigned int BitWidth, bool isUnsigned)
- public virtual llvm::SMTSortRef getBitvectorSort(const unsigned int BitWidth)
- public virtual llvm::SMTSortRef getBoolSort()
- public virtual bool getBoolean(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTSortRef getFloat128Sort()
- public virtual llvm::SMTSortRef getFloat16Sort()
- public virtual llvm::SMTSortRef getFloat32Sort()
- public virtual llvm::SMTSortRef getFloat64Sort()
- public virtual llvm::SMTExprRef getFloatRoundingMode()
- public llvm::SMTSortRef getFloatSort(unsigned int BitWidth)
- public virtual bool getInterpretation(const llvm::SMTExprRef & Exp, llvm::APFloat & Float)
- public virtual bool getInterpretation(const llvm::SMTExprRef & Exp, llvm::APSInt & Int)
- public virtual llvm::SMTSortRef getSort(const llvm::SMTExprRef & AST)
- public virtual bool isFPSupported()
- public virtual llvm::SMTExprRef mkAnd(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVAdd(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVAddNoOverflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS, bool isSigned)
- public virtual llvm::SMTExprRef mkBVAddNoUnderflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVAnd(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVAshr(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVConcat(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVExtract(unsigned int High, unsigned int Low, const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBVLshr(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVMul(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVMulNoOverflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS, bool isSigned)
- public virtual llvm::SMTExprRef mkBVMulNoUnderflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVNeg(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBVNegNoOverflow(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBVNot(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBVOr(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSDiv(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSDivNoOverflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSRem(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSge(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSgt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVShl(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSignExt(unsigned int i, const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBVSle(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSlt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSub(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSubNoOverflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVSubNoUnderflow(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS, bool isSigned)
- public virtual llvm::SMTExprRef mkBVUDiv(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVURem(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVUge(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVUgt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVUle(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVUlt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVXor(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkBVZeroExt(unsigned int i, const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkBitvector(const llvm::APSInt Int, unsigned int BitWidth)
- public virtual llvm::SMTExprRef mkBoolean(const bool b)
- public virtual llvm::SMTExprRef mkEqual(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPAdd(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPDiv(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPEqual(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPGe(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPGt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPIsInfinite(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkFPIsNaN(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkFPIsNormal(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkFPIsZero(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkFPLe(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPLt(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPMul(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPNeg(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkFPRem(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPSub(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkFPtoFP(const llvm::SMTExprRef & From, const llvm::SMTSortRef & To)
- public virtual llvm::SMTExprRef mkFPtoSBV(const llvm::SMTExprRef & From, unsigned int ToWidth)
- public virtual llvm::SMTExprRef mkFPtoUBV(const llvm::SMTExprRef & From, unsigned int ToWidth)
- public virtual llvm::SMTExprRef mkFloat(const llvm::APFloat Float)
- public virtual llvm::SMTExprRef mkIte(const llvm::SMTExprRef & Cond, const llvm::SMTExprRef & T, const llvm::SMTExprRef & F)
- public virtual llvm::SMTExprRef mkNot(const llvm::SMTExprRef & Exp)
- public virtual llvm::SMTExprRef mkOr(const llvm::SMTExprRef & LHS, const llvm::SMTExprRef & RHS)
- public virtual llvm::SMTExprRef mkSBVtoFP(const llvm::SMTExprRef & From, const llvm::SMTSortRef & To)
- public virtual llvm::SMTExprRef mkSymbol(const char * Name, llvm::SMTSortRef Sort)
- public virtual llvm::SMTExprRef mkUBVtoFP(const llvm::SMTExprRef & From, const llvm::SMTSortRef & To)
- public virtual void pop(unsigned int NumStates = 1)
- public virtual void print(llvm::raw_ostream & OS) const
- public virtual void push()
- public virtual void reset()
- public virtual ~SMTSolver()
Methods
¶SMTSolver()
SMTSolver()
Declared at: llvm/include/llvm/Support/SMTAPI.h:138
¶virtual void addConstraint(
const llvm::SMTExprRef& Exp) const
virtual void addConstraint(
const llvm::SMTExprRef& Exp) const
Description
Given a constraint, adds it to the solver
Declared at: llvm/include/llvm/Support/SMTAPI.h:181
Parameters
- const llvm::SMTExprRef& Exp
¶virtual Optional<bool> check() const
virtual Optional<bool> check() const
Description
Check if the constraints are satisfiable
Declared at: llvm/include/llvm/Support/SMTAPI.h:422
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/Support/SMTAPI.h:141
¶virtual llvm::APSInt getBitvector(
const llvm::SMTExprRef& Exp,
unsigned int BitWidth,
bool isUnsigned)
virtual llvm::APSInt getBitvector(
const llvm::SMTExprRef& Exp,
unsigned int BitWidth,
bool isUnsigned)
Declared at: llvm/include/llvm/Support/SMTAPI.h:399
Parameters
- const llvm::SMTExprRef& Exp
- unsigned int BitWidth
- bool isUnsigned
¶virtual llvm::SMTSortRef getBitvectorSort(
const unsigned int BitWidth)
virtual llvm::SMTSortRef getBitvectorSort(
const unsigned int BitWidth)
Declared at: llvm/include/llvm/Support/SMTAPI.h:163
Parameters
- const unsigned int BitWidth
¶virtual llvm::SMTSortRef getBoolSort()
virtual llvm::SMTSortRef getBoolSort()
Declared at: llvm/include/llvm/Support/SMTAPI.h:160
¶virtual bool getBoolean(
const llvm::SMTExprRef& Exp)
virtual bool getBoolean(
const llvm::SMTExprRef& Exp)
Declared at: llvm/include/llvm/Support/SMTAPI.h:403
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTSortRef getFloat128Sort()
virtual llvm::SMTSortRef getFloat128Sort()
Declared at: llvm/include/llvm/Support/SMTAPI.h:175
¶virtual llvm::SMTSortRef getFloat16Sort()
virtual llvm::SMTSortRef getFloat16Sort()
Declared at: llvm/include/llvm/Support/SMTAPI.h:166
¶virtual llvm::SMTSortRef getFloat32Sort()
virtual llvm::SMTSortRef getFloat32Sort()
Declared at: llvm/include/llvm/Support/SMTAPI.h:169
¶virtual llvm::SMTSortRef getFloat64Sort()
virtual llvm::SMTSortRef getFloat64Sort()
Declared at: llvm/include/llvm/Support/SMTAPI.h:172
¶virtual llvm::SMTExprRef getFloatRoundingMode()
virtual llvm::SMTExprRef getFloatRoundingMode()
Declared at: llvm/include/llvm/Support/SMTAPI.h:396
¶llvm::SMTSortRef getFloatSort(
unsigned int BitWidth)
llvm::SMTSortRef getFloatSort(
unsigned int BitWidth)
Declared at: llvm/include/llvm/Support/SMTAPI.h:144
Parameters
- unsigned int BitWidth
¶virtual bool getInterpretation(
const llvm::SMTExprRef& Exp,
llvm::APFloat& Float)
virtual bool getInterpretation(
const llvm::SMTExprRef& Exp,
llvm::APFloat& Float)
Description
Given an expression extract the value of this operand in the model.
Declared at: llvm/include/llvm/Support/SMTAPI.h:418
Parameters
- const llvm::SMTExprRef& Exp
- llvm::APFloat& Float
¶virtual bool getInterpretation(
const llvm::SMTExprRef& Exp,
llvm::APSInt& Int)
virtual bool getInterpretation(
const llvm::SMTExprRef& Exp,
llvm::APSInt& Int)
Description
Given an expression, extract the value of this operand in the model.
Declared at: llvm/include/llvm/Support/SMTAPI.h:415
Parameters
- const llvm::SMTExprRef& Exp
- llvm::APSInt& Int
¶virtual llvm::SMTSortRef getSort(
const llvm::SMTExprRef& AST)
virtual llvm::SMTSortRef getSort(
const llvm::SMTExprRef& AST)
Declared at: llvm/include/llvm/Support/SMTAPI.h:178
Parameters
- const llvm::SMTExprRef& AST
¶virtual bool isFPSupported()
virtual bool isFPSupported()
Description
Checks if the solver supports floating-points.
Declared at: llvm/include/llvm/Support/SMTAPI.h:434
¶virtual llvm::SMTExprRef mkAnd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkAnd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a boolean and operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:259
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVAdd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVAdd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector addition operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:184
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVAddNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
virtual llvm::SMTExprRef mkBVAddNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
Description
Creates a predicate that checks for overflow in a bitvector addition operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:284
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
- bool isSigned
¶virtual llvm::SMTExprRef mkBVAddNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVAddNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a predicate that checks for underflow in a signed bitvector addition operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:290
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVAnd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVAnd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector and operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:226
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVAshr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVAshr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector arithmetic shift right operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:208
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVConcat(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVConcat(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector concat operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:279
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVExtract(
unsigned int High,
unsigned int Low,
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVExtract(
unsigned int High,
unsigned int Low,
const llvm::SMTExprRef& Exp)
Description
Creates a bitvector extract operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:275
Parameters
- unsigned int High
- unsigned int Low
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBVLshr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVLshr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector logical shift right operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:211
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVMul(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVMul(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector multiplication operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:190
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVMulNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
virtual llvm::SMTExprRef mkBVMulNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
Description
Creates a predicate that checks for overflow in a bitvector multiplication operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:315
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
- bool isSigned
¶virtual llvm::SMTExprRef mkBVMulNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVMulNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a predicate that checks for underflow in a signed bitvector multiplication operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:321
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVNeg(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVNeg(
const llvm::SMTExprRef& Exp)
Description
Creates a bitvector negation operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:214
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBVNegNoOverflow(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVNegNoOverflow(
const llvm::SMTExprRef& Exp)
Description
Creates a predicate that checks for overflow in a bitvector negation operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:311
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBVNot(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVNot(
const llvm::SMTExprRef& Exp)
Description
Creates a bitvector not operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:217
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBVOr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVOr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector or operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:223
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed division operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:199
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSDivNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSDivNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a predicate that checks for overflow in a signed bitvector division/modulus operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:306
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSRem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSRem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed modulus operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:193
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSge(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSge(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed greater-equal-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:250
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSgt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSgt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed greater-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:238
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVShl(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVShl(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector logical shift left operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:205
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSignExt(
unsigned int i,
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVSignExt(
unsigned int i,
const llvm::SMTExprRef& Exp)
Description
Creates a bitvector sign extension operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:269
Parameters
- unsigned int i
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBVSle(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSle(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed less-equal-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:244
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSlt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSlt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector signed less-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:232
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSub(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSub(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector subtraction operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:187
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSubNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVSubNoOverflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a predicate that checks for overflow in a signed bitvector subtraction operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:295
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVSubNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
virtual llvm::SMTExprRef mkBVSubNoUnderflow(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS,
bool isSigned)
Description
Creates a predicate that checks for underflow in a bitvector subtraction operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:300
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
- bool isSigned
¶virtual llvm::SMTExprRef mkBVUDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVUDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned division operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:202
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVURem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVURem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned modulus operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:196
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVUge(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVUge(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned greater-equal-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:247
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVUgt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVUgt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned greater-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:235
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVUle(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVUle(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned less-equal-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:241
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVUlt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVUlt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector unsigned less-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:229
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVXor(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkBVXor(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a bitvector xor operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:220
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkBVZeroExt(
unsigned int i,
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkBVZeroExt(
unsigned int i,
const llvm::SMTExprRef& Exp)
Description
Creates a bitvector zero extension operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:272
Parameters
- unsigned int i
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkBitvector(
const llvm::APSInt Int,
unsigned int BitWidth)
virtual llvm::SMTExprRef mkBitvector(
const llvm::APSInt Int,
unsigned int BitWidth)
Description
Constructs an SMTExprRef from an APSInt and its bit width
Declared at: llvm/include/llvm/Support/SMTAPI.h:412
Parameters
- const llvm::APSInt Int
- unsigned int BitWidth
¶virtual llvm::SMTExprRef mkBoolean(const bool b)
virtual llvm::SMTExprRef mkBoolean(const bool b)
Description
Constructs an SMTExprRef from a boolean.
Declared at: llvm/include/llvm/Support/SMTAPI.h:406
Parameters
- const bool b
¶virtual llvm::SMTExprRef mkEqual(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkEqual(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a boolean equality operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:256
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPAdd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPAdd(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point addition operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:349
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPDiv(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point division operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:343
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPEqual(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPEqual(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point equality operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:367
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPGe(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPGe(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point greater-than-or-equal operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:364
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPGt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPGt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point greater-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:358
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPIsInfinite(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkFPIsInfinite(
const llvm::SMTExprRef& Exp)
Description
Creates a floating-point isInfinite operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:328
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkFPIsNaN(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkFPIsNaN(
const llvm::SMTExprRef& Exp)
Description
Creates a floating-point isNaN operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:331
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkFPIsNormal(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkFPIsNormal(
const llvm::SMTExprRef& Exp)
Description
Creates a floating-point isNormal operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:334
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkFPIsZero(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkFPIsZero(
const llvm::SMTExprRef& Exp)
Description
Creates a floating-point isZero operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:337
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkFPLe(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPLe(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point less-than-or-equal operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:361
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPLt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPLt(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point less-than operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:355
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPMul(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPMul(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point multiplication operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:340
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPNeg(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkFPNeg(
const llvm::SMTExprRef& Exp)
Description
Creates a floating-point negation operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:325
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkFPRem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPRem(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point remainder operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:346
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPSub(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkFPSub(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a floating-point subtraction operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:352
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkFPtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
virtual llvm::SMTExprRef mkFPtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
Description
Creates a floating-point conversion from floatint-point to floating-point operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:372
Parameters
- const llvm::SMTExprRef& From
- const llvm::SMTSortRef& To
¶virtual llvm::SMTExprRef mkFPtoSBV(
const llvm::SMTExprRef& From,
unsigned int ToWidth)
virtual llvm::SMTExprRef mkFPtoSBV(
const llvm::SMTExprRef& From,
unsigned int ToWidth)
Description
Creates a floating-point conversion from floatint-point to signed bitvector operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:386
Parameters
- const llvm::SMTExprRef& From
- unsigned int ToWidth
¶virtual llvm::SMTExprRef mkFPtoUBV(
const llvm::SMTExprRef& From,
unsigned int ToWidth)
virtual llvm::SMTExprRef mkFPtoUBV(
const llvm::SMTExprRef& From,
unsigned int ToWidth)
Description
Creates a floating-point conversion from floatint-point to unsigned bitvector operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:390
Parameters
- const llvm::SMTExprRef& From
- unsigned int ToWidth
¶virtual llvm::SMTExprRef mkFloat(
const llvm::APFloat Float)
virtual llvm::SMTExprRef mkFloat(
const llvm::APFloat Float)
Description
Constructs an SMTExprRef from a finite APFloat.
Declared at: llvm/include/llvm/Support/SMTAPI.h:409
Parameters
- const llvm::APFloat Float
¶virtual llvm::SMTExprRef mkIte(
const llvm::SMTExprRef& Cond,
const llvm::SMTExprRef& T,
const llvm::SMTExprRef& F)
virtual llvm::SMTExprRef mkIte(
const llvm::SMTExprRef& Cond,
const llvm::SMTExprRef& T,
const llvm::SMTExprRef& F)
Description
Creates a boolean ite operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:265
Parameters
- const llvm::SMTExprRef& Cond
- const llvm::SMTExprRef& T
- const llvm::SMTExprRef& F
¶virtual llvm::SMTExprRef mkNot(
const llvm::SMTExprRef& Exp)
virtual llvm::SMTExprRef mkNot(
const llvm::SMTExprRef& Exp)
Description
Creates a boolean not operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:253
Parameters
- const llvm::SMTExprRef& Exp
¶virtual llvm::SMTExprRef mkOr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
virtual llvm::SMTExprRef mkOr(
const llvm::SMTExprRef& LHS,
const llvm::SMTExprRef& RHS)
Description
Creates a boolean or operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:262
Parameters
- const llvm::SMTExprRef& LHS
- const llvm::SMTExprRef& RHS
¶virtual llvm::SMTExprRef mkSBVtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
virtual llvm::SMTExprRef mkSBVtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
Description
Creates a floating-point conversion from signed bitvector to floatint-point operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:376
Parameters
- const llvm::SMTExprRef& From
- const llvm::SMTSortRef& To
¶virtual llvm::SMTExprRef mkSymbol(
const char* Name,
llvm::SMTSortRef Sort)
virtual llvm::SMTExprRef mkSymbol(
const char* Name,
llvm::SMTSortRef Sort)
Description
Creates a new symbol, given a name and a sort
Declared at: llvm/include/llvm/Support/SMTAPI.h:393
Parameters
- const char* Name
- llvm::SMTSortRef Sort
¶virtual llvm::SMTExprRef mkUBVtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
virtual llvm::SMTExprRef mkUBVtoFP(
const llvm::SMTExprRef& From,
const llvm::SMTSortRef& To)
Description
Creates a floating-point conversion from unsigned bitvector to floatint-point operation
Declared at: llvm/include/llvm/Support/SMTAPI.h:381
Parameters
- const llvm::SMTExprRef& From
- const llvm::SMTSortRef& To
¶virtual void pop(unsigned int NumStates = 1)
virtual void pop(unsigned int NumStates = 1)
Description
Pop the previous solver state
Declared at: llvm/include/llvm/Support/SMTAPI.h:428
Parameters
- unsigned int NumStates = 1
¶virtual void print(llvm::raw_ostream& OS) const
virtual void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/Support/SMTAPI.h:436
Parameters
¶virtual void push()
virtual void push()
Description
Push the current solver state
Declared at: llvm/include/llvm/Support/SMTAPI.h:425
¶virtual void reset()
virtual void reset()
Description
Reset the solver and remove all constraints.
Declared at: llvm/include/llvm/Support/SMTAPI.h:431
¶virtual ~SMTSolver()
virtual ~SMTSolver()
Declared at: llvm/include/llvm/Support/SMTAPI.h:139