xref: /llvm-project/llvm/include/llvm/Support/CodeGenCoverage.h (revision 4e2ec7e38dc2c4604d527d29ecbc8ac0387b06f0)
1f76f3154SDaniel Sanders //== llvm/Support/CodeGenCoverage.h ------------------------------*- C++ -*-==//
2f76f3154SDaniel Sanders //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6f76f3154SDaniel Sanders //
7f76f3154SDaniel Sanders //===----------------------------------------------------------------------===//
8f76f3154SDaniel Sanders /// \file This file provides rule coverage tracking for tablegen-erated CodeGen.
9f76f3154SDaniel Sanders //===----------------------------------------------------------------------===//
10f76f3154SDaniel Sanders 
11f76f3154SDaniel Sanders #ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H
12f76f3154SDaniel Sanders #define LLVM_SUPPORT_CODEGENCOVERAGE_H
13f76f3154SDaniel Sanders 
14f76f3154SDaniel Sanders #include "llvm/ADT/BitVector.h"
15f76f3154SDaniel Sanders 
16f76f3154SDaniel Sanders namespace llvm {
17bd159d32SZachary Turner class MemoryBuffer;
18f76f3154SDaniel Sanders 
19f76f3154SDaniel Sanders class CodeGenCoverage {
20f76f3154SDaniel Sanders protected:
21f76f3154SDaniel Sanders   BitVector RuleCoverage;
22f76f3154SDaniel Sanders 
23f76f3154SDaniel Sanders public:
2438489ed4SRoman Tereshin   using const_covered_iterator = BitVector::const_set_bits_iterator;
2538489ed4SRoman Tereshin 
26f76f3154SDaniel Sanders   CodeGenCoverage();
27f76f3154SDaniel Sanders 
28f76f3154SDaniel Sanders   void setCovered(uint64_t RuleID);
2938489ed4SRoman Tereshin   bool isCovered(uint64_t RuleID) const;
3038489ed4SRoman Tereshin   iterator_range<const_covered_iterator> covered() const;
31f76f3154SDaniel Sanders 
32f76f3154SDaniel Sanders   bool parse(MemoryBuffer &Buffer, StringRef BackendName);
33f76f3154SDaniel Sanders   bool emit(StringRef FilePrefix, StringRef BackendName) const;
34f76f3154SDaniel Sanders   void reset();
35f76f3154SDaniel Sanders };
3638489ed4SRoman Tereshin } // namespace llvm
37f76f3154SDaniel Sanders 
38*aa5c09beSKazu Hirata #endif // LLVM_SUPPORT_CODEGENCOVERAGE_H
39