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_sel.cpp

    r4199 r4200  
    66
    77#include "pe_sel.h"
     8#include "pe_all.h"
     9#include "pe_and.h"
     10#include "pe_or.h"
     11#include "pe_not.h"
     12
     13namespace pablo {
     14
     15PabloE * make_sel(PabloE * if_expr, PabloE * t_expr, PabloE * f_expr) {
     16    if (All * all_if_expr = dyn_cast<All>(if_expr)) {
     17        if (all_if_expr->getValue()) {
     18            return t_expr;
     19        }
     20        else {
     21            return f_expr;
     22        }
     23    }
     24    else if (All * all_t_expr = dyn_cast<All>(t_expr)) {
     25        if (all_t_expr->getValue()) {
     26            return make_or(if_expr, f_expr);
     27        }
     28        else {
     29            return make_and(make_not(if_expr), f_expr);
     30        }
     31    }
     32    else if (All * all_f_expr = dyn_cast<All>(f_expr)) {
     33        if (all_f_expr->getValue()) {
     34            return make_or(make_not(if_expr), t_expr);
     35        }
     36        else {
     37            return make_and(if_expr, t_expr);
     38        }
     39    }
     40    else if (equals(t_expr, f_expr)) {
     41        return t_expr;
     42    }
     43    return new Sel(if_expr, t_expr, f_expr);
     44}
     45
     46}
Note: See TracChangeset for help on using the changeset viewer.