LLVM  10.0.0svn
Macros | Functions | Variables
WebAssemblyMCInstLower.cpp File Reference

This file contains code to lower WebAssembly MachineInstrs to their corresponding MCInst records. More...

#include "WebAssemblyMCInstLower.h"
#include "WebAssemblyAsmPrinter.h"
#include "WebAssemblyMachineFunctionInfo.h"
#include "WebAssemblyRuntimeLibcallSignatures.h"
#include "MCTargetDesc/WebAssemblyMCTargetDesc.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/IR/Constants.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCSymbolWasm.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "WebAssemblyGenInstrInfo.inc"
Include dependency graph for WebAssemblyMCInstLower.cpp:

Go to the source code of this file.

Macros

#define GET_INSTRMAP_INFO   1
 

Functions

static void removeRegisterOperands (const MachineInstr *MI, MCInst &OutMI)
 
static wasm::ValType getType (const TargetRegisterClass *RC)
 
static void getFunctionReturns (const MachineInstr *MI, SmallVectorImpl< wasm::ValType > &Returns)
 

Variables

cl::opt< boolWasmKeepRegisters ("wasm-keep-registers", cl::Hidden, cl::desc("WebAssembly: output stack registers in" " instruction output for test purposes only."), cl::init(false))
 

Detailed Description

This file contains code to lower WebAssembly MachineInstrs to their corresponding MCInst records.

Definition in file WebAssemblyMCInstLower.cpp.

Macro Definition Documentation

◆ GET_INSTRMAP_INFO

#define GET_INSTRMAP_INFO   1

Definition at line 34 of file WebAssemblyMCInstLower.cpp.

Function Documentation

◆ getFunctionReturns()

static void getFunctionReturns ( const MachineInstr MI,
SmallVectorImpl< wasm::ValType > &  Returns 
)
static

◆ getType()

static wasm::ValType getType ( const TargetRegisterClass RC)
static

Definition at line 182 of file WebAssemblyMCInstLower.cpp.

References llvm::wasm::F32, llvm::wasm::F64, llvm::wasm::I32, llvm::wasm::I64, llvm_unreachable, and llvm::wasm::V128.

Referenced by allSameType(), llvm::Record::appendLoc(), llvm::object::BaseRelocRef::BaseRelocRef(), branchMaxOffsets(), llvm::MachineIRBuilder::buildBlockAddress(), llvm::MachineIRBuilder::buildBoolExt(), llvm::MachineIRBuilder::buildBrCond(), llvm::MachineIRBuilder::buildBrIndirect(), llvm::MachineIRBuilder::buildBrJT(), llvm::MachineIRBuilder::buildInsert(), llvm::MachineIRBuilder::buildSequence(), llvm::canConstantFoldCallTo(), llvm::UnOpInit::clone(), llvm::BinOpInit::clone(), llvm::TernOpInit::clone(), cloneConstantExprWithNewAddressSpace(), ComputeNumSignBitsImpl(), concatSubVector(), llvm::ConstantFoldGetElementPtr(), llvm::ConstantFoldLoadFromConstPtr(), llvm::TypedInit::convertInitializerBitRange(), llvm::TypedInit::convertInitializerTo(), llvm::ListInit::convertInitializerTo(), llvm::DefInit::convertInitializerTo(), llvm::TypedInit::convertInitListSlice(), createCallInst(), llvm::createSeparateConstOffsetFromGEPPass(), DoInitialMatch(), llvm::GVNExpression::Expression::dump(), llvm::AMDGPU::HSAMD::MetadataStreamerV2::emitKernel(), llvm::GVNExpression::BasicExpression::equals(), llvm::UnOpInit::Fold(), llvm::TernOpInit::Fold(), foldIdentityExtractShuffle(), FunctionNumber(), llvm::InlineAsm::get(), GetAEABIUnwindPersonalityName(), llvm::UnOpInit::getAsString(), llvm::IRPosition::getAttrs(), llvm::object::COFFSymbolRef::getBaseType(), llvm::OpInit::getBit(), llvm::VarInit::getBit(), llvm::VarListElementInit::getBit(), llvm::FieldInit::getBit(), llvm::TypedInit::getCastTo(), getChainID(), llvm::object::COFFSymbolRef::getComplexType(), llvm::getCopyDeclaration(), llvm::ListInit::getElementType(), llvm::TypedInit::getFieldType(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getIntrinsicInstrCost(), getMemSetPatternValue(), llvm::MachineConstantPoolEntry::getSectionKind(), llvm::DIVariable::getSignedness(), llvm::ConstantPoolSDNode::getTargetFlags(), group2Shuffle(), llvm::DbgVariable::hasComplexAddress(), insertLifetimeMarkersSurroundingCall(), instrumentMaskedLoadOrStore(), llvm::object::XCOFFObjectFile::is64Bit(), llvm::object::MachOObjectFile::is64Bit(), llvm::DbgVariable::isArtificial(), llvm::object::Elf_Sym_Impl< ELFT >::isCommon(), llvm::HexagonMCInstrInfo::isCompound(), llvm::rdf::RefNode::isDef(), llvm::object::XCOFFSymbolRef::isFunction(), llvm::HexagonMCInstrInfo::isHVX(), llvm::DbgVariable::isObjectPointer(), llvm::MachineInstr::isOperandSubregIdx(), isReInterleaveMask(), llvm::rdf::RefNode::isUse(), llvm::HexagonMCInstrInfo::isVector(), isWeak(), LLVMBinaryGetType(), LLVMTypeOf(), llvm::WebAssemblyMCInstLower::lower(), llvm::fuzzerop::matchFirstType(), matchScalarInAggregate(), llvm::fuzzerop::matchScalarOfFirstType(), llvm::MachineIRBuilder::materializeGEP(), llvm::ListInit::Profile(), llvm::UnOpInit::Profile(), llvm::BinOpInit::Profile(), llvm::TernOpInit::Profile(), llvm::UnOpInit::resolveReferences(), llvm::BinOpInit::resolveReferences(), llvm::TernOpInit::resolveReferences(), llvm::SLPVectorizerPass::runImpl(), llvm::object::Elf_Sym_Impl< ELFT >::setBinding(), llvm::ELF::Elf32_Sym::setBinding(), llvm::ELF::Elf64_Sym::setBinding(), llvm::object::Elf_Rel_Impl< ELFType< TargetEndianness, false >, false >::setSymbol(), llvm::object::Elf_Rel_Impl< ELFType< TargetEndianness, true >, false >::setSymbol(), llvm::ELF::Elf32_Rel::setSymbol(), llvm::ELF::Elf32_Rela::setSymbol(), llvm::ELF::Elf64_Rel::setSymbol(), llvm::ELF::Elf64_Rela::setSymbol(), llvm::ARMAsmBackend::shouldForceRelocation(), simplifyFPOp(), SimplifyGEPInst(), speculatePHIs(), splitGlobal(), llvm::DISubprogram::toSPFlags(), tryUnmergingGEPsAcrossIndirectBr(), llvm::pdb::TpiStream::typeCollection(), validExtractValueIndex(), validInsertValueIndex(), llvm::InnerLoopVectorizer::vectorizeInterleaveGroup(), llvm::InstCombiner::visitLandingPadInst(), llvm::InstCombiner::visitLShr(), llvm::object::XCOFFSymbolRef::XCOFFSymbolRef(), and llvm::MetadataAsValue::~MetadataAsValue().

◆ removeRegisterOperands()

static void removeRegisterOperands ( const MachineInstr MI,
MCInst OutMI 
)
static

Variable Documentation

◆ WasmKeepRegisters

cl::opt<bool> WasmKeepRegisters("wasm-keep-registers", cl::Hidden, cl::desc("WebAssembly: output stack registers in" " instruction output for test purposes only."), cl::init(false))