1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //===-- NVPTXMachineFunctionInfo.h - NVPTX-specific Function Info --------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This class is attached to a MachineFunction instance and tracks target-
- // dependent information
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_LIB_TARGET_NVPTX_NVPTXMACHINEFUNCTIONINFO_H
- #define LLVM_LIB_TARGET_NVPTX_NVPTXMACHINEFUNCTIONINFO_H
- #include "llvm/CodeGen/MachineFunction.h"
- namespace llvm {
- class NVPTXMachineFunctionInfo : public MachineFunctionInfo {
- private:
- /// Stores a mapping from index to symbol name for removing image handles
- /// on Fermi.
- SmallVector<std::string, 8> ImageHandleList;
- public:
- NVPTXMachineFunctionInfo(MachineFunction &MF) {}
- /// Returns the index for the symbol \p Symbol. If the symbol was previously,
- /// added, the same index is returned. Otherwise, the symbol is added and the
- /// new index is returned.
- unsigned getImageHandleSymbolIndex(const char *Symbol) {
- // Is the symbol already present?
- for (unsigned i = 0, e = ImageHandleList.size(); i != e; ++i)
- if (ImageHandleList[i] == std::string(Symbol))
- return i;
- // Nope, insert it
- ImageHandleList.push_back(Symbol);
- return ImageHandleList.size()-1;
- }
- /// Returns the symbol name at the given index.
- const char *getImageHandleSymbol(unsigned Idx) const {
- assert(ImageHandleList.size() > Idx && "Bad index");
- return ImageHandleList[Idx].c_str();
- }
- };
- }
- #endif
|