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