Changeset 5855


Ignore:
Timestamp:
Jan 31, 2018, 12:13:25 AM (10 months ago)
Author:
nmedfort
Message:

Bug fix for Pablo Repeat and Operator

Location:
icGREP/icgrep-devel/icgrep/pablo
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/arithmetic.h

    r5454 r5855  
    4343    }
    4444private:
    45     PabloAST *          mLH;
    46     PabloAST *          mRH;
     45    PabloAST * const    mLH;
     46    PabloAST * const    mRH;
    4747};
    4848
  • icGREP/icgrep-devel/icgrep/pablo/expression_map.hpp

    r5836 r5855  
    151151            case PabloAST::ClassTypeId::Assign:
    152152            case PabloAST::ClassTypeId::Extract:
    153             return mBinary.findOrAdd(stmt, stmt->getClassTypeId(), stmt->getOperand(0), stmt->getOperand(1));
    154153            case PabloAST::ClassTypeId::Repeat:
    155                 return mBinary.findOrAdd(stmt, stmt->getClassTypeId(), stmt->getOperand(0), stmt->getType());
     154                return mBinary.findOrAdd(stmt, stmt->getClassTypeId(), stmt->getOperand(0), stmt->getOperand(1));
    156155            case PabloAST::ClassTypeId::Sel:
    157156            case PabloAST::ClassTypeId::IndexedAdvance:
  • icGREP/icgrep-devel/icgrep/pablo/pablo_compiler.cpp

    r5847 r5855  
    673673                } else if (isa<Extract>(lh)) {
    674674                    lhvStreamIndex = compileExpression(b, cast<Extract>(lh)->getIndex());
     675                    lh = cast<Extract>(lh)->getArray();
    675676                } else {
    676677                    baseLhv = compileExpression(b, lh);
     
    683684                } else if (isa<Extract>(rh)) {
    684685                    rhvStreamIndex = compileExpression(b, cast<Extract>(rh)->getIndex());
     686                    rh = cast<Extract>(rh)->getArray();
    685687                } else {
    686688                    baseRhv = compileExpression(b, rh);
     
    817819
    818820Value * PabloCompiler::getPointerToVar(const std::unique_ptr<kernel::KernelBuilder> & b, const Var * var, Value * index1, Value * index2)  {
    819     assert (var && index1 && (index2 == nullptr || index1->getType() == index2->getType()));
     821    assert (var && index1);
    820822    if (LLVM_LIKELY(var->isKernelParameter())) {
    821823        if (LLVM_UNLIKELY(var->isScalar())) {
  • icGREP/icgrep-devel/icgrep/pablo/printer_pablos.cpp

    r5837 r5855  
    3535
    3636void PabloPrinter::print(const PabloKernel * kernel, raw_ostream & out) {
     37    out << kernel->getName() << "\n\n";
    3738    print(kernel->getEntryScope(), out, true);
    3839}
     
    177178    if (expr == nullptr) {
    178179        out << "<null-expr>";
     180    } else if (isa<Integer>(expr)) {
     181        out << cast<Integer>(expr)->value();
    179182    } else if (isa<Zeroes>(expr)) {
    180183        out << "0";
     
    231234        print(op->getRH(), out);
    232235    } else if (const Statement * stmt = dyn_cast<Statement>(expr)) {
     236        assert (stmt->getParent());
    233237        out << stmt->getName();
    234     } else if (isa<Integer>(expr)) {
    235         out << cast<Integer>(expr)->value();
     238    } else if (LLVM_UNLIKELY(isa<PabloKernel>(expr))) {
     239        print(cast<PabloKernel>(expr), out);
    236240    } else {
    237241        out << "???";
     
    241245void PabloPrinter::print(const PabloBlock * block, raw_ostream & strm, const bool expandNested, const unsigned indent) {
    242246    for (const Statement * stmt : *block) {
     247        assert (stmt->getParent() == block);
    243248        print(stmt, strm, expandNested, indent);
    244249        if (LLVM_LIKELY(!isa<Branch>(stmt) || !expandNested)) {
Note: See TracChangeset for help on using the changeset viewer.