Ignore:
Timestamp:
Sep 30, 2014, 2:44:40 PM (5 years ago)
Author:
nmedfort
Message:

Replaced dynamic_cast with llvm::dyn_cast in pablo code; implemented make functions for pablo constructors. Disabled RTTI.

File:
1 edited

Legend:

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

    r4199 r4200  
    66
    77#include "pe_xor.h"
     8#include "pe_all.h"
     9#include "pe_not.h"
     10
     11namespace pablo {
     12
     13PabloE * make_xor(PabloE * expr1, PabloE * expr2) {
     14    if (All * all1 = dyn_cast<All>(expr1)) {
     15        if (all1->getValue()) {
     16            return make_not(expr2);
     17        }
     18        else {
     19            return expr2;
     20        }
     21    }
     22    else if (All* all2 = dyn_cast<All>(expr2)) {
     23        if (all2->getValue() == 1) {
     24            return make_not(expr1);
     25        }
     26        else { //if (all_expr2->getNum() == 0)
     27            return expr1;
     28        }
     29    }
     30    else if (Not * not1 = dyn_cast<Not>(expr1)) {
     31        if (Not * not2 = dyn_cast<Not>(expr2)) {
     32            return make_xor(not1->getExpr(), not2->getExpr());
     33        }
     34    }
     35    return new Xor(expr1, expr2);
     36}
     37
     38}
Note: See TracChangeset for help on using the changeset viewer.