source: icGREP/icgrep-devel/icgrep/IDISA/idisa_avx_builder.h @ 5118

Last change on this file since 5118 was 5118, checked in by cameron, 3 years ago

AVX builders should inherit from SSE2 not just SSE

File size: 1.3 KB
Line 
1#ifndef IDISA_AVX_BUILDER_H
2#define IDISA_AVX_BUILDER_H
3
4/*
5 *  Copyright (c) 2015 International Characters.
6 *  This software is licensed to the public under the Open Software License 3.0.
7*/
8
9#include <IDISA/idisa_builder.h>
10#include <IDISA/idisa_sse_builder.h>
11
12using namespace llvm;
13
14namespace IDISA {
15
16class IDISA_AVX_Builder : public IDISA_SSE2_Builder {
17public:
18   
19    IDISA_AVX_Builder(Module * m, Type * bitBlockType) : IDISA_SSE2_Builder(m, bitBlockType) {
20    }
21    Value * hsimd_signmask(unsigned fw, Value * a) override;
22    ~IDISA_AVX_Builder() {};
23
24};
25
26class IDISA_AVX2_Builder : public IDISA_AVX_Builder {
27public:
28   
29    IDISA_AVX2_Builder(Module * m, Type * bitBlockType) : IDISA_AVX_Builder(m, bitBlockType) {
30    }
31    Value * hsimd_packh(unsigned fw, Value * a, Value * b) override;
32    Value * hsimd_packl(unsigned fw, Value * a, Value * b) override;
33    Value * esimd_mergeh(unsigned fw, Value * a, Value * b) override;
34    Value * esimd_mergel(unsigned fw, Value * a, Value * b) override;
35    Value * hsimd_packh_in_lanes(unsigned lanes, unsigned fw, Value * a, Value * b) override;
36    Value * hsimd_packl_in_lanes(unsigned lanes, unsigned fw, Value * a, Value * b) override;
37    std::pair<Value *, Value *> bitblock_add_with_carry(Value * a, Value * b, Value * carryin) override;
38
39    ~IDISA_AVX2_Builder() {};
40};
41   
42}
43#endif // IDISA_AVX_BUILDER_H
Note: See TracBrowser for help on using the repository browser.