class BinaryOperator

Declaration

class BinaryOperator : public Instruction { /* full declaration omitted */ };

Declared at: llvm/include/llvm/IR/InstrTypes.h:188

Inherits from: Instruction

Member Variables

Inherited from Value:

protected SubclassOptionalData
protected NumUserOperands
protected IsUsedByMD
protected HasName
protected HasHungOffUses
protected HasDescriptor
public static MaxAlignmentExponent = 29
public static MaximumAlignment = 1U << MaxAlignmentExponent

Method Overview

  • protected BinaryOperator(llvm::Instruction::BinaryOps iType, llvm::Value * S1, llvm::Value * S2, llvm::Type * Ty, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • protected BinaryOperator(llvm::Instruction::BinaryOps iType, llvm::Value * S1, llvm::Value * S2, llvm::Type * Ty, const llvm::Twine & Name, llvm::Instruction * InsertBefore)
  • public static llvm::BinaryOperator * Create(llvm::Instruction::BinaryOps Op, llvm::Value * S1, llvm::Value * S2, const llvm::Twine & Name = llvm::Twine(), llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * Create(llvm::Instruction::BinaryOps Op, llvm::Value * S1, llvm::Value * S2, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateExact(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::Instruction * I)
  • public static llvm::BinaryOperator * CreateExact(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::BasicBlock * BB)
  • public static llvm::BinaryOperator * CreateExact(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFAddFMF(llvm::Value * V1, llvm::Value * V2, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFDivFMF(llvm::Value * V1, llvm::Value * V2, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFMulFMF(llvm::Value * V1, llvm::Value * V2, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFNeg(llvm::Value * Op, const llvm::Twine & Name = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * CreateFNeg(llvm::Value * Op, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateFNegFMF(llvm::Value * Op, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFRemFMF(llvm::Value * V1, llvm::Value * V2, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateFSubFMF(llvm::Value * V1, llvm::Value * V2, llvm::Instruction * FMFSource, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateNSW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateNSW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::BasicBlock * BB)
  • public static llvm::BinaryOperator * CreateNSW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::Instruction * I)
  • public static llvm::BinaryOperator * CreateNSWNeg(llvm::Value * Op, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateNSWNeg(llvm::Value * Op, const llvm::Twine & Name = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * CreateNUW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::Instruction * I)
  • public static llvm::BinaryOperator * CreateNUW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name, llvm::BasicBlock * BB)
  • public static llvm::BinaryOperator * CreateNUW(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, const llvm::Twine & Name = "")
  • public static llvm::BinaryOperator * CreateNUWNeg(llvm::Value * Op, const llvm::Twine & Name = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * CreateNUWNeg(llvm::Value * Op, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateNeg(llvm::Value * Op, const llvm::Twine & Name = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * CreateNeg(llvm::Value * Op, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateNot(llvm::Value * Op, const llvm::Twine & Name = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::BinaryOperator * CreateNot(llvm::Value * Op, const llvm::Twine & Name, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::BinaryOperator * CreateWithCopiedFlags(llvm::Instruction::BinaryOps Opc, llvm::Value * V1, llvm::Value * V2, llvm::Instruction * CopyO, const llvm::Twine & Name = "")
  • public static bool classof(const llvm::Instruction * I)
  • public static bool classof(const llvm::Value * V)
  • protected llvm::BinaryOperator * cloneImpl() const
  • public llvm::Instruction::BinaryOps getOpcode() const
  • public bool swapOperands()

Inherited from Instruction:

Inherited from User:

Inherited from Value:

Methods

BinaryOperator(llvm::Instruction::BinaryOps iType,
               llvm::Value* S1,
               llvm::Value* S2,
               llvm::Type* Ty,
               const llvm::Twine& Name,
               llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:194

Parameters

llvm::Instruction::BinaryOps iType
llvm::Value* S1
llvm::Value* S2
llvm::Type* Ty
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

BinaryOperator(llvm::Instruction::BinaryOps iType,
               llvm::Value* S1,
               llvm::Value* S2,
               llvm::Type* Ty,
               const llvm::Twine& Name,
               llvm::Instruction* InsertBefore)

Declared at: llvm/include/llvm/IR/InstrTypes.h:192

Parameters

llvm::Instruction::BinaryOps iType
llvm::Value* S1
llvm::Value* S2
llvm::Type* Ty
const llvm::Twine& Name
llvm::Instruction* InsertBefore

static llvm::BinaryOperator* Create(
    llvm::Instruction::BinaryOps Op,
    llvm::Value* S1,
    llvm::Value* S2,
    const llvm::Twine& Name = llvm::Twine(),
    llvm::Instruction* InsertBefore = nullptr)

Description

Construct a binary instruction, given the opcode and the two operands. Optionally (if InstBefore is specified) insert the instruction into a BasicBlock right before the specified instruction. The specified Instruction is allowed to be a dereferenced end iterator.

Declared at: llvm/include/llvm/IR/InstrTypes.h:216

Parameters

llvm::Instruction::BinaryOps Op
llvm::Value* S1
llvm::Value* S2
const llvm::Twine& Name = llvm::Twine()
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* Create(
    llvm::Instruction::BinaryOps Op,
    llvm::Value* S1,
    llvm::Value* S2,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Description

Construct a binary instruction, given the opcode and the two operands. Also automatically insert this instruction to the end of the BasicBlock specified.

Declared at: llvm/include/llvm/IR/InstrTypes.h:224

Parameters

llvm::Instruction::BinaryOps Op
llvm::Value* S1
llvm::Value* S2
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator* CreateExact(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::Instruction* I)

Declared at: llvm/include/llvm/IR/InstrTypes.h:339

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::Instruction* I

static llvm::BinaryOperator* CreateExact(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::BasicBlock* BB)

Declared at: llvm/include/llvm/IR/InstrTypes.h:333

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::BasicBlock* BB

static llvm::BinaryOperator* CreateExact(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:327

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFAddFMF(
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:258

Parameters

llvm::Value* V1
llvm::Value* V2
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFDivFMF(
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:273

Parameters

llvm::Value* V1
llvm::Value* V2
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFMulFMF(
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:268

Parameters

llvm::Value* V1
llvm::Value* V2
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFNeg(
    llvm::Value* Op,
    const llvm::Twine& Name = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/InstrTypes.h:393

Parameters

llvm::Value* Op
const llvm::Twine& Name = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* CreateFNeg(
    llvm::Value* Op,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:395

Parameters

llvm::Value* Op
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator* CreateFNegFMF(
    llvm::Value* Op,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:283

Parameters

llvm::Value* Op
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFRemFMF(
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:278

Parameters

llvm::Value* V1
llvm::Value* V2
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateFSubFMF(
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* FMFSource,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:263

Parameters

llvm::Value* V1
llvm::Value* V2
llvm::Instruction* FMFSource
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateNSW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:289

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateNSW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::BasicBlock* BB)

Declared at: llvm/include/llvm/IR/InstrTypes.h:295

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::BasicBlock* BB

static llvm::BinaryOperator* CreateNSW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::Instruction* I)

Declared at: llvm/include/llvm/IR/InstrTypes.h:301

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::Instruction* I

static llvm::BinaryOperator* CreateNSWNeg(
    llvm::Value* Op,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:387

Parameters

llvm::Value* Op
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator* CreateNSWNeg(
    llvm::Value* Op,
    const llvm::Twine& Name = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/InstrTypes.h:385

Parameters

llvm::Value* Op
const llvm::Twine& Name = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* CreateNUW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::Instruction* I)

Declared at: llvm/include/llvm/IR/InstrTypes.h:320

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::Instruction* I

static llvm::BinaryOperator* CreateNUW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name,
    llvm::BasicBlock* BB)

Declared at: llvm/include/llvm/IR/InstrTypes.h:314

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name
llvm::BasicBlock* BB

static llvm::BinaryOperator* CreateNUW(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:308

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
const llvm::Twine& Name = ""

static llvm::BinaryOperator* CreateNUWNeg(
    llvm::Value* Op,
    const llvm::Twine& Name = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/InstrTypes.h:389

Parameters

llvm::Value* Op
const llvm::Twine& Name = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* CreateNUWNeg(
    llvm::Value* Op,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:391

Parameters

llvm::Value* Op
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator* CreateNeg(
    llvm::Value* Op,
    const llvm::Twine& Name = "",
    llvm::Instruction* InsertBefore = nullptr)

Description

Helper functions to construct and inspect unary operations (NEG and NOT) via binary operators SUB and XOR: Create the NEG and NOT instructions out of SUB and XOR instructions.

Declared at: llvm/include/llvm/IR/InstrTypes.h:381

Parameters

llvm::Value* Op
const llvm::Twine& Name = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* CreateNeg(
    llvm::Value* Op,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:383

Parameters

llvm::Value* Op
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator* CreateNot(
    llvm::Value* Op,
    const llvm::Twine& Name = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/InstrTypes.h:397

Parameters

llvm::Value* Op
const llvm::Twine& Name = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::BinaryOperator* CreateNot(
    llvm::Value* Op,
    const llvm::Twine& Name,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/InstrTypes.h:399

Parameters

llvm::Value* Op
const llvm::Twine& Name
llvm::BasicBlock* InsertAtEnd

static llvm::BinaryOperator*
CreateWithCopiedFlags(
    llvm::Instruction::BinaryOps Opc,
    llvm::Value* V1,
    llvm::Value* V2,
    llvm::Instruction* CopyO,
    const llvm::Twine& Name = "")

Declared at: llvm/include/llvm/IR/InstrTypes.h:249

Parameters

llvm::Instruction::BinaryOps Opc
llvm::Value* V1
llvm::Value* V2
llvm::Instruction* CopyO
const llvm::Twine& Name = ""

static bool classof(const llvm::Instruction* I)

Declared at: llvm/include/llvm/IR/InstrTypes.h:414

Parameters

const llvm::Instruction* I

static bool classof(const llvm::Value* V)

Declared at: llvm/include/llvm/IR/InstrTypes.h:417

Parameters

const llvm::Value* V

llvm::BinaryOperator* cloneImpl() const

Declared at: llvm/include/llvm/IR/InstrTypes.h:200

llvm::Instruction::BinaryOps getOpcode() const

Declared at: llvm/include/llvm/IR/InstrTypes.h:402

bool swapOperands()

Description

Exchange the two operands to this instruction. This instruction is safe to use on any binary instruction and does not modify the semantics of the instruction. If the instruction cannot be reversed (ie, it's a Div), then return true.

Declared at: llvm/include/llvm/IR/InstrTypes.h:411