source: icGREP/icgrep-devel/icgrep/pablo/pe_pack.h

Last change on this file was 5829, checked in by nmedfort, 21 months ago

Missing files

File size: 1.5 KB
Line 
1#ifndef PE_PACK_H
2#define PE_PACK_H
3
4#include <pablo/pabloAST.h>
5
6namespace pablo {
7
8class Integer;
9
10class PackH final : public Statement {
11    friend class PabloBlock;
12public:
13    static inline bool classof(const PabloAST * e) {
14        return e->getClassTypeId() == ClassTypeId::PackH;
15    }
16    static inline bool classof(const void *) {
17        return false;
18    }
19    virtual ~PackH() {
20    }
21    inline Integer * getFieldWidth() const {
22        return llvm::cast<Integer>(getOperand(0));
23    }
24    inline PabloAST * getValue() const {
25        return getOperand(1);
26    }
27protected:
28    PackH(Integer * width, PabloAST * const value, const String * name, llvm::Type * type, Allocator & allocator)
29    : Statement(ClassTypeId::PackH, type, { width, value }, name, allocator) {
30
31    }
32};
33
34class PackL final : public Statement {
35    friend class PabloBlock;
36public:
37    static inline bool classof(const PabloAST * e) {
38        return e->getClassTypeId() == ClassTypeId::PackL;
39    }
40    static inline bool classof(const void *) {
41        return false;
42    }
43    virtual ~PackL() {
44    }
45    inline Integer * getFieldWidth() const {
46        return llvm::cast<Integer>(getOperand(0));
47    }
48    inline PabloAST * getValue() const {
49        return getOperand(1);
50    }
51protected:
52    PackL(Integer * width, PabloAST * const value, const String * name, llvm::Type * type, Allocator & allocator)
53    : Statement(ClassTypeId::PackL, type, { width, value }, name, allocator) {
54
55    }
56};
57
58
59}
60
61#endif // PE_PACK_H
Note: See TracBrowser for help on using the repository browser.