P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
P4::DoStrengthReduction Class Referencefinal
Inheritance diagram for P4::DoStrengthReduction:

Public Member Functions

const IR::Node * postorder (IR::Add *expr) override
 
const IR::Node * postorder (IR::ArrayIndex *expr) override
 
const IR::Node * postorder (IR::BAnd *expr) override
 
const IR::Node * postorder (IR::BOr *expr) override
 
const IR::Node * postorder (IR::BXor *expr) override
 
const IR::Node * postorder (IR::Cmpl *expr) override
 
const IR::Node * postorder (IR::Concat *expr) override
 
const IR::Node * postorder (IR::Div *expr) override
 
const IR::Node * postorder (IR::Equ *expr) override
 
const IR::Node * postorder (IR::LAnd *expr) override
 
const IR::Node * postorder (IR::LNot *expr) override
 
const IR::Node * postorder (IR::LOr *expr) override
 
const IR::Node * postorder (IR::Mask *expr) override
 
const IR::Node * postorder (IR::Mod *expr) override
 
const IR::Node * postorder (IR::Mul *expr) override
 
const IR::Node * postorder (IR::Mux *expr) override
 
const IR::Node * postorder (IR::Neq *expr) override
 
const IR::Node * postorder (IR::Range *expr) override
 
const IR::Node * postorder (IR::Shl *expr) override
 
const IR::Node * postorder (IR::Shr *expr) override
 
const IR::Node * postorder (IR::Slice *expr) override
 
const IR::Node * postorder (IR::Sub *expr) override
 
const IR::Node * postorder (IR::UPlus *expr) override
 
const IR::BlockStatement * preorder (IR::BlockStatement *bs) override
 

Detailed Description

Implements a pass that replaces expensive arithmetic and boolean operations with cheaper ones – i.e., strength reduction

Specifically, it provides:

  1. A collection of helper methods that determine whether a given expression is 0, 1, true, or false, or a power of 2
  2. A visitor that transforms arithmetic and boolean expressions
Precondition
: None
Postcondition
: Ensure that
  • most arithmetic and boolean expressions are simplified
  • division and modulus by 0

Member Function Documentation

◆ postorder()

const IR::Node * P4::DoStrengthReduction::postorder ( IR::Cmpl * expr)
override

Methods