Ignore:
Timestamp:
Dec 9, 2015, 4:59:02 PM (3 years ago)
Author:
nmedfort
Message:

Continued work on multiplexing pass.

File:
1 edited

Legend:

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

    r4886 r4890  
    141141    if (isReassociative(stmt)) {
    142142        return fold(cast<Variadic>(stmt), block);
     143    } else if (isa<Not>(stmt)) {
     144        PabloAST * value = stmt->getOperand(0);
     145        if (LLVM_UNLIKELY(isa<Not>(value))) {
     146            return cast<Not>(value)->getOperand(0);
     147        } else if (LLVM_UNLIKELY(isa<Zeroes>(value))) {
     148            return block->createOnes();
     149        }  else if (LLVM_UNLIKELY(isa<Ones>(value))) {
     150            return block->createZeroes();
     151        }
     152    } else if (isa<Advance>(stmt)) {
     153        if (LLVM_UNLIKELY(isa<Zeroes>(stmt->getOperand(0)))) {
     154            return block->createZeroes();
     155        }
    143156    } else {
    144157        for (unsigned i = 0; i != stmt->getNumOperands(); ++i) {
    145158            if (LLVM_UNLIKELY(isa<Zeroes>(stmt->getOperand(i)))) {
    146159                switch (stmt->getClassTypeId()) {
    147                     case PabloAST::ClassTypeId::Advance:
    148                         return block->createZeroes();
    149                     case PabloAST::ClassTypeId::Not:
    150                         return block->createOnes();
    151160                    case PabloAST::ClassTypeId::Sel:
    152161                        block->setInsertPoint(stmt->getPrevNode());
     
    164173                block->setInsertPoint(stmt->getPrevNode());
    165174                switch (stmt->getClassTypeId()) {
    166                     case PabloAST::ClassTypeId::Not:
    167                         return block->createZeroes();
    168175                    case PabloAST::ClassTypeId::Sel:
    169176                        block->setInsertPoint(stmt->getPrevNode());
     
    186193                }
    187194            }
    188         }
    189         return nullptr;
    190     }
     195        }       
     196    }
     197    return nullptr;
    191198}
    192199
Note: See TracChangeset for help on using the changeset viewer.