Ignore:
Timestamp:
Jan 7, 2015, 3:40:23 PM (5 years ago)
Author:
nmedfort
Message:

Changes to support 3-operand form for all instructions. CSE disabled but partially redundant now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/pe_sel.cpp

    r4359 r4410  
    1010namespace pablo {
    1111
    12 PabloAST * OptimizeSel::operator()(PabloAST * if_expr, PabloAST * t_expr, PabloAST * f_expr) {
     12Sel::Sel(PabloAST* if_expr, PabloAST* t_expr, PabloAST* f_expr, PabloBlock * parent)
     13: Statement(ClassTypeId::Sel, parent->makeName("sel"), parent)
     14, mExprs({{if_expr, t_expr, f_expr}})
     15{
     16    if_expr->addUser(this);
     17    t_expr->addUser(this);
     18    f_expr->addUser(this);
     19}
     20
     21PabloAST * OptimizeSel::operator()(PabloAST * if_expr, PabloAST * t_expr, PabloAST * f_expr, PabloBlock * pb) {
    1322    if (isa<Ones>(if_expr)) {
    1423        return t_expr;
     
    1827    }
    1928    else if (isa<Ones>(t_expr)) {
    20         return cg.createOr(if_expr, f_expr);
     29    return pb->createOr(if_expr, f_expr);
    2130    }
    2231    else if (isa<Zeroes>(t_expr)){
    23         return cg.createAnd(cg.createNot(if_expr), f_expr);   
     32        return pb->createAnd(pb->createNot(if_expr), f_expr);
    2433    }
    2534    else if (isa<Ones>(f_expr)) {
    26         return cg.createOr(cg.createNot(if_expr), t_expr);
     35    return pb->createOr(pb->createNot(if_expr), t_expr);
    2736    }
    2837    else if (isa<Zeroes>(f_expr)){
    29         return cg.createAnd(if_expr, t_expr);       
     38        return pb->createAnd(if_expr, t_expr);
    3039    }
    3140    else if (equals(t_expr, f_expr)) {
     
    3342    }
    3443    else if (isa<Not>(t_expr) && equals(cast<Not>(t_expr)->getExpr(), f_expr)) {
    35         return cg.createXor(if_expr, f_expr);
     44        return pb->createXor(if_expr, f_expr);
    3645    }
    3746    else if (isa<Not>(f_expr) && equals(t_expr, cast<Not>(f_expr)->getExpr())){
    38         return cg.createXor(if_expr, f_expr);
     47        return pb->createXor(if_expr, f_expr);
    3948    }
    40     return new Sel(if_expr, t_expr, f_expr);
     49    return pb->createSelImm(if_expr, t_expr, f_expr);
    4150}
    4251
Note: See TracChangeset for help on using the changeset viewer.