1//===-- SPIRVTargetObjectFile.h - SPIRV Object Info -------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H
10#define LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H
11
12#include "llvm/MC/MCSection.h"
13#include "llvm/MC/SectionKind.h"
14#include "llvm/Target/TargetLoweringObjectFile.h"
15
16namespace llvm {
17
18class SPIRVTargetObjectFile : public TargetLoweringObjectFile {
19public:
20 ~SPIRVTargetObjectFile() override;
21
22 void Initialize(MCContext &ctx, const TargetMachine &TM) override {
23 TargetLoweringObjectFile::Initialize(ctx, TM);
24 }
25 // All words in a SPIR-V module (excepting the first 5 ones) are a linear
26 // sequence of instructions in a specific order. We put all the instructions
27 // in the single text section.
28 MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
29 const Constant *C,
30 Align &Alignment) const override {
31 return TextSection;
32 }
33 MCSection *getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind,
34 const TargetMachine &TM) const override {
35 return TextSection;
36 }
37 MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
38 const TargetMachine &TM) const override {
39 return TextSection;
40 }
41};
42
43} // end namespace llvm
44
45#endif // LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H
46

source code of llvm/lib/Target/SPIRV/SPIRVTargetObjectFile.h