llvm-project/llvm/lib/Target/DirectX/DirectXSubtarget.h
Chris Bieneman 2af61e620e [DirectX] Add DirectX target object writer
This is the last piece to bring together writing DXContainer files
containing DXIL through the DirectX backend.

While this change only has one test, all of the tests under
llvm/test/tools/dxil-dis also exercise this code. With this change the
output object file type for the dxil target is now DXContainer. Each of
the existing tests will generate DXContainer files, and the dxil-dis
tests additionally verify that the DXContainers generated are
well-formed and can be parsed by the DirectXShaderCompiler tools.

Depends on D127153 and D127165

Differential Revision: https://reviews.llvm.org/D127166
2022-06-17 21:33:08 -05:00

57 lines
1.8 KiB
C++

//===-- DirectXSubtarget.h - Define Subtarget for DirectX -------*- C++ -*-===//
//
// 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 file declares the DirectX specific subclass of TargetSubtargetInfo.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_DIRECTX_DIRECTXSUBTARGET_H
#define LLVM_DIRECTX_DIRECTXSUBTARGET_H
#include "DirectXFrameLowering.h"
#include "DirectXInstrInfo.h"
#include "DirectXTargetLowering.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/Target/TargetMachine.h"
#define GET_SUBTARGETINFO_HEADER
#include "DirectXGenSubtargetInfo.inc"
namespace llvm {
class DirectXTargetMachine;
class DirectXSubtarget : public DirectXGenSubtargetInfo {
DirectXFrameLowering FL;
DirectXTargetLowering TL;
DirectXInstrInfo InstrInfo;
virtual void anchor(); // virtual anchor method
public:
DirectXSubtarget(const Triple &TT, StringRef CPU, StringRef FS,
const DirectXTargetMachine &TM);
/// Parses a subtarget feature string, setting appropriate options.
/// \note Definition of function is auto generated by `tblgen`.
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
const DirectXTargetLowering *getTargetLowering() const override {
return &TL;
}
const DirectXFrameLowering *getFrameLowering() const override { return &FL; }
const DirectXInstrInfo *getInstrInfo() const override { return &InstrInfo; }
};
} // end namespace llvm
#endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H