llvm.org GIT mirror llvm / release_70 lib / Target / X86 / X86TargetMachine.h
release_70

Tree @release_70 (Download .tar.gz)

X86TargetMachine.h @release_70

b4f68ed
0e0a7a4
856ba76
 
4ee451d
 
0e0a7a4
856ba76
0e0a7a4
b4f68ed
 
 
 
00e08fc
 
5fcc26d
3346491
5fcc26d
 
 
 
a1514e2
5fcc26d
b4f68ed
d0fde30
8247e0d
4396613
f167493
 
d0fde30
9385cf1
847729d
e6f32be
 
b4f68ed
4ddb0ce
ac8db59
9aafb85
 
d124340
5fcc26d
e6f32be
dd35be2
 
 
f0dc005
9920f56
b166e67
aeef83c
1911fd4
f2c9fef
5fcc26d
847729d
 
 
664dca2
 
 
 
b4f68ed
25ab690
5fcc26d
d0fde30
5fcc26d
//===-- X86TargetMachine.h - Define TargetMachine for the X86 ---*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file declares the X86 specific subclass of TargetMachine.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_LIB_TARGET_X86_X86TARGETMACHINE_H
#define LLVM_LIB_TARGET_X86_X86TARGETMACHINE_H

#include "X86Subtarget.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Target/TargetMachine.h"
#include <memory>

namespace llvm {

class StringRef;
class X86Subtarget;
class X86RegisterBankInfo;

class X86TargetMachine final : public LLVMTargetMachine {
  std::unique_ptr<TargetLoweringObjectFile> TLOF;
  mutable StringMap<std::unique_ptr<X86Subtarget>> SubtargetMap;

public:
  X86TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
                   StringRef FS, const TargetOptions &Options,
                   Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
                   CodeGenOpt::Level OL, bool JIT);
  ~X86TargetMachine() override;

  const X86Subtarget *getSubtargetImpl(const Function &F) const override;
  // DO NOT IMPLEMENT: There is no such thing as a valid default subtarget,
  // subtargets are per-function entities based on the target-specific
  // attributes of each function.
  const X86Subtarget *getSubtargetImpl() const = delete;

  TargetTransformInfo getTargetTransformInfo(const Function &F) override;

  // Set up the pass pipeline.
  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;

  TargetLoweringObjectFile *getObjFileLowering() const override {
    return TLOF.get();
  }

  bool isMachineVerifierClean() const override {
    return false;
  }
};

} // end namespace llvm

#endif // LLVM_LIB_TARGET_X86_X86TARGETMACHINE_H