diff options
Diffstat (limited to 'llvm/lib/Target/AVR/AVRSubtarget.cpp')
| -rw-r--r-- | llvm/lib/Target/AVR/AVRSubtarget.cpp | 54 | 
1 files changed, 54 insertions, 0 deletions
diff --git a/llvm/lib/Target/AVR/AVRSubtarget.cpp b/llvm/lib/Target/AVR/AVRSubtarget.cpp new file mode 100644 index 000000000000..6a41036fdd6c --- /dev/null +++ b/llvm/lib/Target/AVR/AVRSubtarget.cpp @@ -0,0 +1,54 @@ +//===-- AVRSubtarget.cpp - AVR Subtarget Information ----------------------===// +// +// 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 implements the AVR specific subclass of TargetSubtargetInfo. +// +//===----------------------------------------------------------------------===// + +#include "AVRSubtarget.h" + +#include "llvm/BinaryFormat/ELF.h" +#include "llvm/Support/TargetRegistry.h" + +#include "AVR.h" +#include "AVRTargetMachine.h" +#include "MCTargetDesc/AVRMCTargetDesc.h" + +#define DEBUG_TYPE "avr-subtarget" + +#define GET_SUBTARGETINFO_TARGET_DESC +#define GET_SUBTARGETINFO_CTOR +#include "AVRGenSubtargetInfo.inc" + +namespace llvm { + +AVRSubtarget::AVRSubtarget(const Triple &TT, const std::string &CPU, +                           const std::string &FS, const AVRTargetMachine &TM) +    : AVRGenSubtargetInfo(TT, CPU, FS), InstrInfo(), FrameLowering(), +      TLInfo(TM, initializeSubtargetDependencies(CPU, FS, TM)), TSInfo(), + +      // Subtarget features +      m_hasSRAM(false), m_hasJMPCALL(false), m_hasIJMPCALL(false), +      m_hasEIJMPCALL(false), m_hasADDSUBIW(false), m_hasSmallStack(false), +      m_hasMOVW(false), m_hasLPM(false), m_hasLPMX(false),  m_hasELPM(false), +      m_hasELPMX(false), m_hasSPM(false), m_hasSPMX(false), m_hasDES(false), +      m_supportsRMW(false), m_supportsMultiplication(false), m_hasBREAK(false), +      m_hasTinyEncoding(false), ELFArch(false), m_FeatureSetDummy(false) { +  // Parse features string. +  ParseSubtargetFeatures(CPU, FS); +} + +AVRSubtarget & +AVRSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS, +                                              const TargetMachine &TM) { +  // Parse features string. +  ParseSubtargetFeatures(CPU, FS); +  return *this; +} + +} // end of namespace llvm  | 
