NVPTXSection.h revision dce4a407a24b04eebc6a376f8e62b41aaa7b071f
15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines//===- NVPTXSection.h - NVPTX-specific section representation -*- C++ -*-===//
25d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines//
35d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines//                     The LLVM Compiler Infrastructure
42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//
52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file is distributed under the University of Illinois Open Source
62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// License. See LICENSE.TXT for details.
72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//
82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===//
92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//
102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file declares the NVPTXSection class.
112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//
122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===//
132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#ifndef LLVM_NVPTXSECTION_H
152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define LLVM_NVPTXSECTION_H
162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "llvm/IR/GlobalVariable.h"
182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "llvm/MC/MCSection.h"
192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include <vector>
202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesnamespace llvm {
222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines/// NVPTXSection - Represents a section in PTX
232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines/// PTX does not have sections. We create this class in order to use
242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines/// the ASMPrint interface.
25///
26class NVPTXSection : public MCSection {
27  virtual void anchor();
28public:
29  NVPTXSection(SectionVariant V, SectionKind K) : MCSection(V, K) {}
30  virtual ~NVPTXSection() {}
31
32  /// Override this as NVPTX has its own way of printing switching
33  /// to a section.
34  void PrintSwitchToSection(const MCAsmInfo &MAI,
35                            raw_ostream &OS,
36                            const MCExpr *Subsection) const override {}
37
38  /// Base address of PTX sections is zero.
39  bool isBaseAddressKnownZero() const override { return true; }
40  bool UseCodeAlign() const override { return false; }
41  bool isVirtualSection() const override { return false; }
42  std::string getLabelBeginName() const override { return ""; }
43  std::string getLabelEndName() const override { return ""; }
44};
45
46} // end namespace llvm
47
48#endif
49