46 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H10#define LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H11 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 linear26 // sequence of instructions in a specific order. We put all the instructions27 // 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 llvm44 45#endif // LLVM_LIB_TARGET_SPIRV_SPIRVTARGETOBJECTFILE_H46