struct SCEVDivision

Declaration

struct SCEVDivision : public SCEVVisitor { /* full declaration omitted */ };

Description

This class defines a simple visitor class that may be used for various SCEV analysis purposes.

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:26

Inherits from: SCEVVisitor

Member Variables

private llvm::ScalarEvolution& SE
private const llvm::SCEV* Denominator
private const llvm::SCEV* Quotient
private const llvm::SCEV* Remainder
private const llvm::SCEV* Zero
private const llvm::SCEV* One

Method Overview

  • private SCEVDivision(llvm::ScalarEvolution & S, const llvm::SCEV * Numerator, const llvm::SCEV * Denominator)
  • private void cannotDivide(const llvm::SCEV * Numerator)
  • public static void divide(llvm::ScalarEvolution & SE, const llvm::SCEV * Numerator, const llvm::SCEV * Denominator, const llvm::SCEV ** Quotient, const llvm::SCEV ** Remainder)
  • public void visitAddExpr(const llvm::SCEVAddExpr * Numerator)
  • public void visitAddRecExpr(const llvm::SCEVAddRecExpr * Numerator)
  • public void visitConstant(const llvm::SCEVConstant * Numerator)
  • public void visitCouldNotCompute(const llvm::SCEVCouldNotCompute * Numerator)
  • public void visitMulExpr(const llvm::SCEVMulExpr * Numerator)
  • public void visitPtrToIntExpr(const llvm::SCEVPtrToIntExpr * Numerator)
  • public void visitSMaxExpr(const llvm::SCEVSMaxExpr * Numerator)
  • public void visitSMinExpr(const llvm::SCEVSMinExpr * Numerator)
  • public void visitSequentialUMinExpr(const llvm::SCEVSequentialUMinExpr * Numerator)
  • public void visitSignExtendExpr(const llvm::SCEVSignExtendExpr * Numerator)
  • public void visitTruncateExpr(const llvm::SCEVTruncateExpr * Numerator)
  • public void visitUDivExpr(const llvm::SCEVUDivExpr * Numerator)
  • public void visitUMaxExpr(const llvm::SCEVUMaxExpr * Numerator)
  • public void visitUMinExpr(const llvm::SCEVUMinExpr * Numerator)
  • public void visitUnknown(const llvm::SCEVUnknown * Numerator)
  • public void visitZeroExtendExpr(const llvm::SCEVZeroExtendExpr * Numerator)

Methods

SCEVDivision(llvm::ScalarEvolution& S,
             const llvm::SCEV* Numerator,
             const llvm::SCEV* Denominator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:58

Parameters

llvm::ScalarEvolution& S
const llvm::SCEV* Numerator
const llvm::SCEV* Denominator

void cannotDivide(const llvm::SCEV* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:63

Parameters

const llvm::SCEV* Numerator

static void divide(llvm::ScalarEvolution& SE,
                   const llvm::SCEV* Numerator,
                   const llvm::SCEV* Denominator,
                   const llvm::SCEV** Quotient,
                   const llvm::SCEV** Remainder)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:30

Parameters

llvm::ScalarEvolution& SE
const llvm::SCEV* Numerator
const llvm::SCEV* Denominator
const llvm::SCEV** Quotient
const llvm::SCEV** Remainder

void visitAddExpr(
    const llvm::SCEVAddExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:53

Parameters

const llvm::SCEVAddExpr* Numerator

void visitAddRecExpr(
    const llvm::SCEVAddRecExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:51

Parameters

const llvm::SCEVAddRecExpr* Numerator

void visitConstant(
    const llvm::SCEVConstant* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:49

Parameters

const llvm::SCEVConstant* Numerator

void visitCouldNotCompute(
    const llvm::SCEVCouldNotCompute* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:47

Parameters

const llvm::SCEVCouldNotCompute* Numerator

void visitMulExpr(
    const llvm::SCEVMulExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:55

Parameters

const llvm::SCEVMulExpr* Numerator

void visitPtrToIntExpr(
    const llvm::SCEVPtrToIntExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:36

Parameters

const llvm::SCEVPtrToIntExpr* Numerator

void visitSMaxExpr(
    const llvm::SCEVSMaxExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:41

Parameters

const llvm::SCEVSMaxExpr* Numerator

void visitSMinExpr(
    const llvm::SCEVSMinExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:43

Parameters

const llvm::SCEVSMinExpr* Numerator

void visitSequentialUMinExpr(
    const llvm::SCEVSequentialUMinExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:45

Parameters

const llvm::SCEVSequentialUMinExpr* Numerator

void visitSignExtendExpr(
    const llvm::SCEVSignExtendExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:39

Parameters

const llvm::SCEVSignExtendExpr* Numerator

void visitTruncateExpr(
    const llvm::SCEVTruncateExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:37

Parameters

const llvm::SCEVTruncateExpr* Numerator

void visitUDivExpr(
    const llvm::SCEVUDivExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:40

Parameters

const llvm::SCEVUDivExpr* Numerator

void visitUMaxExpr(
    const llvm::SCEVUMaxExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:42

Parameters

const llvm::SCEVUMaxExpr* Numerator

void visitUMinExpr(
    const llvm::SCEVUMinExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:44

Parameters

const llvm::SCEVUMinExpr* Numerator

void visitUnknown(
    const llvm::SCEVUnknown* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:46

Parameters

const llvm::SCEVUnknown* Numerator

void visitZeroExtendExpr(
    const llvm::SCEVZeroExtendExpr* Numerator)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionDivision.h:38

Parameters

const llvm::SCEVZeroExtendExpr* Numerator