1*9880d681SAndroid Build Coastguard Worker //===-- WebAssemblyMCAsmInfo.cpp - WebAssembly asm properties -------------===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker /// 10*9880d681SAndroid Build Coastguard Worker /// \file 11*9880d681SAndroid Build Coastguard Worker /// \brief This file contains the declarations of the WebAssemblyMCAsmInfo 12*9880d681SAndroid Build Coastguard Worker /// properties. 13*9880d681SAndroid Build Coastguard Worker /// 14*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker #include "WebAssemblyMCAsmInfo.h" 17*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/Triple.h" 18*9880d681SAndroid Build Coastguard Worker using namespace llvm; 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker #define DEBUG_TYPE "wasm-mc-asm-info" 21*9880d681SAndroid Build Coastguard Worker ~WebAssemblyMCAsmInfo()22*9880d681SAndroid Build Coastguard WorkerWebAssemblyMCAsmInfo::~WebAssemblyMCAsmInfo() {} 23*9880d681SAndroid Build Coastguard Worker WebAssemblyMCAsmInfo(const Triple & T)24*9880d681SAndroid Build Coastguard WorkerWebAssemblyMCAsmInfo::WebAssemblyMCAsmInfo(const Triple &T) { 25*9880d681SAndroid Build Coastguard Worker PointerSize = CalleeSaveStackSlotSize = T.isArch64Bit() ? 8 : 4; 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker // TODO: What should MaxInstLength be? 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker UseDataRegionDirectives = true; 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker // Use .skip instead of .zero because .zero is confusing when used with two 32*9880d681SAndroid Build Coastguard Worker // arguments (it doesn't actually zero things out). 33*9880d681SAndroid Build Coastguard Worker ZeroDirective = "\t.skip\t"; 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker Data8bitsDirective = "\t.int8\t"; 36*9880d681SAndroid Build Coastguard Worker Data16bitsDirective = "\t.int16\t"; 37*9880d681SAndroid Build Coastguard Worker Data32bitsDirective = "\t.int32\t"; 38*9880d681SAndroid Build Coastguard Worker Data64bitsDirective = "\t.int64\t"; 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker AlignmentIsInBytes = false; 41*9880d681SAndroid Build Coastguard Worker COMMDirectiveAlignmentIsInBytes = false; 42*9880d681SAndroid Build Coastguard Worker LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker SupportsDebugInformation = true; 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker // For now, WebAssembly does not support exceptions. 47*9880d681SAndroid Build Coastguard Worker ExceptionsType = ExceptionHandling::None; 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker // TODO: UseIntegratedAssembler? 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker // WebAssembly's stack is never executable. 52*9880d681SAndroid Build Coastguard Worker UsesNonexecutableStackSection = false; 53*9880d681SAndroid Build Coastguard Worker } 54