WebAssembly.td revision 341825
1285163Sdim//- WebAssembly.td - Describe the WebAssembly Target Machine --*- tablegen -*-// 2285163Sdim// 3285163Sdim// The LLVM Compiler Infrastructure 4285163Sdim// 5285163Sdim// This file is distributed under the University of Illinois Open Source 6285163Sdim// License. See LICENSE.TXT for details. 7285163Sdim// 8285163Sdim//===----------------------------------------------------------------------===// 9296417Sdim/// 10296417Sdim/// \file 11341825Sdim/// This is a target description file for the WebAssembly architecture, 12296417Sdim/// which is also known as "wasm". 13296417Sdim/// 14285163Sdim//===----------------------------------------------------------------------===// 15285163Sdim 16285163Sdim//===----------------------------------------------------------------------===// 17285163Sdim// Target-independent interfaces which we are implementing 18285163Sdim//===----------------------------------------------------------------------===// 19285163Sdim 20285163Sdiminclude "llvm/Target/Target.td" 21285163Sdim 22285163Sdim//===----------------------------------------------------------------------===// 23285163Sdim// WebAssembly Subtarget features. 24285163Sdim//===----------------------------------------------------------------------===// 25285163Sdim 26314564Sdimdef FeatureSIMD128 : SubtargetFeature<"simd128", "HasSIMD128", "true", 27285163Sdim "Enable 128-bit SIMD">; 28327952Sdimdef FeatureAtomics : SubtargetFeature<"atomics", "HasAtomics", "true", 29327952Sdim "Enable Atomics">; 30327952Sdimdef FeatureNontrappingFPToInt : 31327952Sdim SubtargetFeature<"nontrapping-fptoint", 32327952Sdim "HasNontrappingFPToInt", "true", 33327952Sdim "Enable non-trapping float-to-int conversion operators">; 34285163Sdim 35341825Sdimdef FeatureSignExt : 36341825Sdim SubtargetFeature<"sign-ext", 37341825Sdim "HasSignExt", "true", 38341825Sdim "Enable sign extension operators">; 39341825Sdim 40341825Sdimdef FeatureExceptionHandling : 41341825Sdim SubtargetFeature<"exception-handling", "HasExceptionHandling", "true", 42341825Sdim "Enable Wasm exception handling">; 43341825Sdim 44285163Sdim//===----------------------------------------------------------------------===// 45285163Sdim// Architectures. 46285163Sdim//===----------------------------------------------------------------------===// 47285163Sdim 48285163Sdim//===----------------------------------------------------------------------===// 49285163Sdim// Register File Description 50285163Sdim//===----------------------------------------------------------------------===// 51285163Sdim 52285163Sdiminclude "WebAssemblyRegisterInfo.td" 53285163Sdim 54285163Sdim//===----------------------------------------------------------------------===// 55285163Sdim// Instruction Descriptions 56285163Sdim//===----------------------------------------------------------------------===// 57285163Sdim 58285163Sdiminclude "WebAssemblyInstrInfo.td" 59285163Sdim 60285163Sdimdef WebAssemblyInstrInfo : InstrInfo; 61285163Sdim 62285163Sdim//===----------------------------------------------------------------------===// 63285163Sdim// WebAssembly Processors supported. 64285163Sdim//===----------------------------------------------------------------------===// 65285163Sdim 66285163Sdim// Minimal Viable Product. 67285163Sdimdef : ProcessorModel<"mvp", NoSchedModel, []>; 68285163Sdim 69296417Sdim// Generic processor: latest stable version. 70296417Sdimdef : ProcessorModel<"generic", NoSchedModel, []>; 71296417Sdim 72285163Sdim// Latest and greatest experimental version of WebAssembly. Bugs included! 73327952Sdimdef : ProcessorModel<"bleeding-edge", NoSchedModel, 74327952Sdim [FeatureSIMD128, FeatureAtomics]>; 75285163Sdim 76285163Sdim//===----------------------------------------------------------------------===// 77285163Sdim// Target Declaration 78285163Sdim//===----------------------------------------------------------------------===// 79285163Sdim 80341825Sdimdef WebAssemblyAsmParser : AsmParser { 81341825Sdim // The physical register names are not in the binary format or asm text 82341825Sdim let ShouldEmitMatchRegisterName = 0; 83341825Sdim} 84341825Sdim 85341825Sdimdef WebAssemblyAsmWriter : AsmWriter { 86341825Sdim string AsmWriterClassName = "InstPrinter"; 87341825Sdim int PassSubtarget = 0; 88341825Sdim int Variant = 0; 89341825Sdim bit isMCAsmWriter = 1; 90341825Sdim} 91341825Sdim 92285163Sdimdef WebAssembly : Target { 93285163Sdim let InstructionSet = WebAssemblyInstrInfo; 94341825Sdim let AssemblyParsers = [WebAssemblyAsmParser]; 95341825Sdim let AssemblyWriters = [WebAssemblyAsmWriter]; 96285163Sdim} 97