Changeset 5354 for icGREP


Ignore:
Timestamp:
Mar 2, 2017, 11:20:19 AM (2 years ago)
Author:
nmedfort
Message:

Bug fix for last check in

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

Legend:

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

    r5353 r5354  
    3333
    3434    CarryData()
    35     : summaryType(NoSummary)   
    36     , carryCollapsingMode(false) {
     35    : mSummaryType(NoSummary)
     36    , mNonCarryCollapsingMode(false) {
    3737
    3838    }
    3939             
    4040    bool hasSummary() const {
    41         return (summaryType != NoSummary);
     41        return (mSummaryType != NoSummary);
    4242    }
    4343   
    4444    bool hasImplicitSummary() const {
    45         return (summaryType == ImplicitSummary);
     45        return (mSummaryType == ImplicitSummary);
    4646    }
    4747
    4848    bool hasBorrowedSummary() const {
    49         return (summaryType == BorrowedSummary);
     49        return (mSummaryType == BorrowedSummary);
    5050    }
    5151
    5252    bool hasExplicitSummary() const {
    53         return (summaryType == ExplicitSummary);
     53        return (mSummaryType == ExplicitSummary);
     54    }
     55
     56    void setSummaryType(const SummaryType value) {
     57        mSummaryType = value;
    5458    }
    5559
    5660    bool nonCarryCollapsingMode() const {
    57         return carryCollapsingMode;
     61        return mNonCarryCollapsingMode;
    5862    }
    5963
    6064    void setNonCarryCollapsingMode(const bool value = true) {
    61         carryCollapsingMode = value;
     65        mNonCarryCollapsingMode = value;
    6266    }
    6367   
    64 protected:
     68private:
    6569
    66     SummaryType             summaryType;
    67     bool                    carryCollapsingMode;
     70    SummaryType             mSummaryType;
     71    bool                    mNonCarryCollapsingMode;
    6872
    6973};
  • icGREP/icgrep-devel/icgrep/pablo/carry_manager.cpp

    r5353 r5354  
    258258        }
    259259        const bool useLoopSelector = mCarryInfo->hasImplicitSummary() && mLoopDepth > 0;
    260         const auto length = count + (useLoopSelector ? 2 : 0);
     260        const auto length = count + (useLoopSelector ? 1 : 0);
    261261        Value * indicies[length];
    262         std::fill(indicies, indicies + (count + (useLoopSelector ? 1 : 0)), iBuilder->getInt32(0));
     262        std::fill(indicies, indicies + count, iBuilder->getInt32(0));
    263263        if (LLVM_UNLIKELY(useLoopSelector)) {
    264             indicies[count + 1] = mLoopSelector;
     264            indicies[count] = mLoopSelector;
    265265        }
    266266        ArrayRef<Value *> ar(indicies, length);
     
    623623
    624624    // Add the summary pack if needed.
    625     cd.summaryType = CarryData::NoSummary;
     625    CarryData::SummaryType summaryType = CarryData::NoSummary;
    626626    if (LLVM_UNLIKELY(state.empty())) {
    627627        carryState = StructType::get(iBuilder->getContext());
     
    632632            // we have a non-collapsing While within an If scope with an implicit summary, the If
    633633            // scope requires an explicit summary.
    634 
    635             if (LLVM_LIKELY(state.size() > 1 || hasLongAdvances)) {
    636                 cd.summaryType = CarryData::ExplicitSummary;
    637                 state.insert(state.begin(), mCarryPackType);
    638             } else {
    639                 cd.summaryType = CarryData::ImplicitSummary;
    640                 if (state[0]->isStructTy()) {
    641                     cd.summaryType = CarryData::BorrowedSummary;
     634            if (cd.nonCarryCollapsingMode() || isa<If>(scope->getBranch())) {
     635                if (LLVM_LIKELY(state.size() > 1 || hasLongAdvances)) {
     636                    summaryType = CarryData::ExplicitSummary;
     637                    state.insert(state.begin(), mCarryPackType);
     638                } else {
     639                    summaryType = CarryData::ImplicitSummary;
     640                    if (state[0]->isStructTy()) {
     641                        summaryType = CarryData::BorrowedSummary;
     642                    }
    642643                }
    643644            }
     
    650651        }
    651652    }
     653    cd.setSummaryType(summaryType);
    652654
    653655    return carryState;
Note: See TracChangeset for help on using the changeset viewer.