Ignore:
Timestamp:
Aug 11, 2018, 1:17:11 AM (9 months ago)
Author:
xwa163
Message:

lz4_grep: Init checkin for utf8 character class multiplexing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/kernels/lz4/twist_kernel.cpp

    r6140 r6144  
    4242    }
    4343
    44 
    45 
    46 
    4744    TwistByPDEPKernel::TwistByPDEPKernel(const std::unique_ptr <kernel::KernelBuilder> &b, unsigned numberOfInputStream, unsigned twistWidth)
    4845            : BlockOrientedKernel("TwistByPDEPKernel",
     
    7572
    7673    TwistMultipleByPDEPKernel::TwistMultipleByPDEPKernel(const std::unique_ptr<kernel::KernelBuilder> &b,
    77                                                          unsigned numberOfInputStreamSet, unsigned twistWidth)
     74                     std::vector<unsigned> numberOfInputStreams, unsigned twistWidth)
    7875            : BlockOrientedKernel("TwistMultipleByPDEPKernel",
    7976                                  {},
    8077                                  {Binding{b->getStreamSetTy(1, twistWidth), "byteStream"}},
    8178                                  {}, {}, {}),
    82               mNumberOfInputStreamSet(numberOfInputStreamSet),
     79              mNumberOfInputStreams(numberOfInputStreams),
    8380              mTwistWidth(twistWidth)
    8481    {
    85         for (unsigned i = 0; i < numberOfInputStreamSet; i++) {
    86             mStreamSetInputs.push_back(Binding{b->getStreamSetTy(1), "basisBits_" + std::to_string(i) });
     82        assert(twistWidth == 2 || twistWidth == 4);
     83        size_t totalNumOfStreams = 0;
     84        for (unsigned i = 0; i < numberOfInputStreams.size(); i++) {
     85            totalNumOfStreams += numberOfInputStreams[i];
     86            mStreamSetInputs.push_back(Binding{b->getStreamSetTy(numberOfInputStreams[i]), "basisBits_" + std::to_string(i) });
    8787        }
     88        assert(totalNumOfStreams < twistWidth);
    8889    }
    8990
     
    9192        Value *inputBlocks[mTwistWidth];
    9293
    93         for (unsigned i = 0; i < mTwistWidth; i++) {
    94             if (i < mNumberOfInputStreamSet) {
    95                 inputBlocks[i] = b->loadInputStreamBlock("basisBits_" + std::to_string(i), b->getInt32(0));
    96                 if (i == 0) {
    97                     b->CallPrintRegister("basisBits_" + std::to_string(i), inputBlocks[i]);
    98                 }
    99             } else {
    100                 inputBlocks[i] = ConstantVector::getNullValue(b->getBitBlockType());
     94        unsigned iStreamIndex = 0;
     95        for (unsigned i = 0; i < mNumberOfInputStreams.size(); i++) {
     96            for (unsigned j = 0; j < mNumberOfInputStreams[i]; j++) {
     97                inputBlocks[iStreamIndex] = b->loadInputStreamBlock("basisBits_" + std::to_string(i), b->getInt32(j));
     98                ++iStreamIndex;
    10199            }
    102100        }
     101
     102        for (; iStreamIndex < mTwistWidth; iStreamIndex++) {
     103            inputBlocks[iStreamIndex] = ConstantVector::getNullValue(b->getBitBlockType());
     104        }
     105
    103106
    104107        Value *outputBasePtr = b->CreatePointerCast(b->getOutputStreamBlockPtr("byteStream", b->getSize(0)),
Note: See TracChangeset for help on using the changeset viewer.