Line data Source code
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"
20 : using 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 :
28 : WebAssemblySubtarget &
29 293 : WebAssemblySubtarget::initializeSubtargetDependencies(StringRef FS) {
30 : // Determine default and user-specified characteristics
31 :
32 293 : if (CPUString.empty())
33 276 : CPUString = "generic";
34 :
35 293 : ParseSubtargetFeatures(CPUString, FS);
36 293 : return *this;
37 : }
38 :
39 293 : WebAssemblySubtarget::WebAssemblySubtarget(const Triple &TT,
40 : const std::string &CPU,
41 : const std::string &FS,
42 293 : const TargetMachine &TM)
43 : : WebAssemblyGenSubtargetInfo(TT, CPU, FS), HasSIMD128(false),
44 : HasAtomics(false), HasNontrappingFPToInt(false), HasSignExt(false),
45 : HasExceptionHandling(false), CPUString(CPU), TargetTriple(TT),
46 586 : FrameLowering(), InstrInfo(initializeSubtargetDependencies(FS)), TSInfo(),
47 586 : TLInfo(TM, *this) {}
48 :
49 9075 : bool WebAssemblySubtarget::enableMachineScheduler() const {
50 : // Disable the MachineScheduler for now. Even with ShouldTrackPressure set and
51 : // enableMachineSchedDefaultSched overridden, it appears to have an overall
52 : // negative effect for the kinds of register optimizations we're doing.
53 9075 : return false;
54 : }
55 :
56 63 : bool WebAssemblySubtarget::useAA() const { return true; }
|