LLVM: lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.h Source File (original) (raw)
39 bool ReportErrors;
40
41
42 using PredSense = std::pair<MCRegister, bool>;
43 static const PredSense Unconditional;
44 using PredSet = std::multiset;
45 using PredSetIterator = std::multiset::iterator;
46
49
50
51 using SoftDefsIterator = std::set::iterator;
52 std::set SoftDefs;
53
54
55 using TmpDefsIterator = std::set::iterator;
56 std::set TmpDefs;
57
58
59 using NewPredsIterator = std::set::iterator;
60 std::set NewPreds;
61
62
63 using LatePredsIterator = std::multiset::iterator;
64 std::multiset LatePreds;
65
66
67 using UsesIterator = std::set::iterator;
68 std::set Uses;
69
70
71 using ReadOnlyIterator = std::set::iterator;
72 std::set ReadOnly;
73
74
75
76 std::set ReversePairs;
77
78 void init();
79 void init(MCInst const &);
81
83
84
85
86
87 std::tuple<MCInst const *, unsigned, HexagonMCInstrInfo::PredicateInfo>
90
91
92 bool checkBranches();
93 bool checkPredicates();
94 bool checkNewValues();
95 bool checkRegisters();
96 bool checkRegistersReadOnly();
97 void checkRegisterCurDefs();
98 bool checkSolo();
99 bool checkShuffle();
100 bool checkSlots();
101 bool checkAXOK();
102 bool checkHWLoop();
103 bool checkCOFMax1();
104 bool checkLegalVecRegPair();
105 bool checkValidTmpDst();
106 bool checkHVXAccum();
107
108 static void compoundRegisterMap(unsigned &);
109
110 bool isLoopRegister(MCRegister R) const {
111 return (Hexagon::SA0 == R || Hexagon::LC0 == R || Hexagon::SA1 == R ||
112 Hexagon::LC1 == R);
113 }
114
115public:
121
122 bool check(bool FullCheck = true);
130};
Context object for machine code objects.