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.