WebAssemblySubtarget.cpp revision 344779
1//===-- WebAssemblySubtarget.cpp - WebAssembly Subtarget Information ------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// 10/// \file 11/// This file implements the WebAssembly-specific subclass of 12/// TargetSubtarget. 13/// 14//===----------------------------------------------------------------------===// 15 16#include "WebAssemblySubtarget.h" 17#include "MCTargetDesc/WebAssemblyMCTargetDesc.h" 18#include "WebAssemblyInstrInfo.h" 19#include "llvm/Support/TargetRegistry.h" 20using namespace llvm; 21 22#define DEBUG_TYPE "wasm-subtarget" 23 24#define GET_SUBTARGETINFO_CTOR 25#define GET_SUBTARGETINFO_TARGET_DESC 26#include "WebAssemblyGenSubtargetInfo.inc" 27 28WebAssemblySubtarget & 29WebAssemblySubtarget::initializeSubtargetDependencies(StringRef FS) { 30 // Determine default and user-specified characteristics 31 32 if (CPUString.empty()) 33 CPUString = "generic"; 34 35 ParseSubtargetFeatures(CPUString, FS); 36 return *this; 37} 38 39WebAssemblySubtarget::WebAssemblySubtarget(const Triple &TT, 40 const std::string &CPU, 41 const std::string &FS, 42 const TargetMachine &TM) 43 : WebAssemblyGenSubtargetInfo(TT, CPU, FS), CPUString(CPU), 44 TargetTriple(TT), FrameLowering(), 45 InstrInfo(initializeSubtargetDependencies(FS)), TSInfo(), 46 TLInfo(TM, *this) {} 47 48bool WebAssemblySubtarget::enableMachineScheduler() const { 49 // Disable the MachineScheduler for now. Even with ShouldTrackPressure set and 50 // enableMachineSchedDefaultSched overridden, it appears to have an overall 51 // negative effect for the kinds of register optimizations we're doing. 52 return false; 53} 54 55bool WebAssemblySubtarget::useAA() const { return true; } 56