Ignore:
Timestamp:
Jun 9, 2018, 1:51:10 PM (11 months ago)
Author:
cameron
Message:

IDISA_SSSE3 builder; other IDISA operations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/IR_Gen/idisa_sse_builder.h

    r6050 r6076  
    55 *  Copyright (c) 2018 International Characters.
    66 *  This software is licensed to the public under the Open Software License 3.0.
    7  *  icgrep is a trademark of International Characters.
    87 */
    98
     
    4039    llvm::Value * hsimd_packl(unsigned fw, llvm::Value * a, llvm::Value * b) override;
    4140    std::pair<llvm::Value *, llvm::Value *> bitblock_advance(llvm::Value * a, llvm::Value * shiftin, unsigned shift) override;
    42     llvm::Value * mvmd_shuffle(unsigned fw, llvm::Value * a, llvm::Value * shuffle_table) override;
     41    llvm::Value * mvmd_shuffle(unsigned fw, llvm::Value * data_table, llvm::Value * index_vector) override;
    4342    ~IDISA_SSE2_Builder() {}
     43};
     44
     45class IDISA_SSSE3_Builder : public IDISA_SSE2_Builder {
     46public:
     47   
     48    IDISA_SSSE3_Builder(llvm::LLVMContext & C, unsigned bitBlockWidth, unsigned stride)
     49    : IDISA_Builder(C, bitBlockWidth, stride)
     50    , IDISA_SSE2_Builder(C, bitBlockWidth, stride)
     51    {
     52
     53    }
     54   
     55    virtual std::string getBuilderUniqueName() override;
     56    llvm::Value * esimd_mergeh(unsigned fw, llvm::Value * a, llvm::Value * b) override;
     57    llvm::Value * esimd_mergel(unsigned fw, llvm::Value * a, llvm::Value * b) override;
     58    llvm::Value * mvmd_shuffle(unsigned fw, llvm::Value * data_table, llvm::Value * index_vector) override;
     59    ~IDISA_SSSE3_Builder() {}
     60
     61private:
     62    llvm::Constant * bit_interleave_byteshuffle_table(unsigned fw);
    4463};
    4564
Note: See TracChangeset for help on using the changeset viewer.