Ignore:
Timestamp:
Aug 10, 2018, 3:07:59 AM (10 months ago)
Author:
xwa163
Message:

lz4_grep: some bug fixing and refactor

File:
1 edited

Legend:

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

    r6136 r6143  
    6767        }
    6868    }
     69
     70    StreamCompareKernel::StreamCompareKernel(const std::unique_ptr<kernel::KernelBuilder> &b,
     71                                             unsigned int numberOfStream):
     72            BlockOrientedKernel("UntwistByPEXTKernel",
     73                                {
     74                                        Binding{b->getStreamSetTy(numberOfStream, 1), "stream1", FixedRate(), Principal()},
     75                                        Binding{b->getStreamSetTy(numberOfStream, 1), "stream2", FixedRate()}
     76                                },
     77                                {
     78//                                        Binding{b->getStreamSetTy(numberOfOutputStream, 1), "basisBits"}
     79                                }, {}, {}, {}),mNumberOfStream(numberOfStream)
     80    {
     81//        this->setStride(4 * 1024 * 1024);
     82        this->addScalar(b->getSizeTy(), "pos");
     83    }
     84
     85    void StreamCompareKernel::generateDoBlockMethod(const std::unique_ptr<KernelBuilder> &b) {
     86        Value* s1 = b->loadInputStreamBlock("stream1", b->getSize(0));
     87        Value* s2 = b->loadInputStreamBlock("stream2", b->getSize(0));
     88
     89        for (unsigned i = 0 ; i < 4; i++) {
     90            Value* v1 = b->CreateExtractElement(s1, i);
     91            Value* v2 = b->CreateExtractElement(s2, i);
     92            Value* shouldPrint = b->CreateICmpNE(v1, v2);
     93            b->CallPrintIntCond("---pos", b->getScalarField("pos"), shouldPrint);
     94
     95//            b->CallPrintIntCond("s1_available", b->getAvailableItemCount("stream1"), shouldPrint);
     96            b->CallPrintRegisterCond("s1", s1, shouldPrint);
     97            b->CallPrintRegisterCond("s2", s2, shouldPrint);
     98        }
     99        b->setScalarField("pos", b->CreateAdd(b->getScalarField("pos"), b->getSize(b->getBitBlockWidth())));
     100    };
    69101}
Note: See TracChangeset for help on using the changeset viewer.