LLVM  12.0.0git
Functions | Variables
WebAssemblyMCInstLower.cpp File Reference

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

#include "WebAssemblyMCInstLower.h"
#include "MCTargetDesc/WebAssemblyMCTargetDesc.h"
#include "TargetInfo/WebAssemblyTargetInfo.h"
#include "WebAssemblyAsmPrinter.h"
#include "WebAssemblyMachineFunctionInfo.h"
#include "WebAssemblyRuntimeLibcallSignatures.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 dependency graph for WebAssemblyMCInstLower.cpp:

Go to the source code of this file.

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))
 
cl::opt< boolEnableEmException
 
cl::opt< boolEnableEmSjLj
 

Detailed Description

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

Definition in 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 188 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::MachineIRBuilder::buildBlockAddress(), llvm::MachineIRBuilder::buildBoolExt(), llvm::MachineIRBuilder::buildBrIndirect(), llvm::MachineIRBuilder::buildBrJT(), buildNew(), llvm::MachineIRBuilder::buildSequence(), llvm::ShuffleVectorInst::changesLength(), cloneConstantExprWithNewAddressSpace(), coerceArguments(), llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), llvm::ConstantFoldGetElementPtr(), llvm::Constant::containsConstantExpression(), llvm::VPReplicateRecipe::execute(), llvm::fuzzerop::gepDescriptor(), llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getAddRecExpr(), llvm::Constant::getAggregateElement(), llvm::AAValueConstantRange::getAssumedConstantInt(), llvm::AAPotentialValues::getAssumedConstantInt(), llvm::getCopyDeclaration(), llvm::Intrinsic::getDeclaration(), llvm::CastInst::getDestTy(), getFPSequenceIfElementsMatch(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getIntrinsicInstrCost(), llvm::ARMTTIImpl::getMemoryOpCost(), llvm::ScalarEvolution::getMinMaxExpr(), llvm::ScalarEvolution::getMulExpr(), llvm::SCEVAddRecExpr::getNumIterationsInRange(), llvm::MemTransferBase< AnyMemIntrinsic >::getSourceAddressSpace(), llvm::ConstantExpr::getWithOperands(), llvm::Constant::hasExactInverseFP(), llvm::ShuffleVectorInst::increasesLength(), llvm::object::XCOFFObjectFile::is64Bit(), llvm::LandingPadInst::isCatch(), llvm::object::Elf_Sym_Impl< ELFT >::isCommon(), llvm::HexagonMCInstrInfo::isCompound(), llvm::Constant::isElementWiseEqual(), llvm::ShuffleVectorInst::isExtractSubvectorMask(), llvm::LandingPadInst::isFilter(), llvm::Constant::isFiniteNonZeroFP(), llvm::HexagonMCInstrInfo::isHVX(), llvm::Constant::isNaN(), llvm::Constant::isNegativeZeroValue(), llvm::Constant::isNormalFP(), llvm::Constant::isNotMinSignedValue(), llvm::Constant::isNotOneValue(), llvm::MachineInstr::isOperandSubregIdx(), LLVMBinaryGetType(), LLVMTypeOf(), llvm::WebAssemblyMCInstLower::lower(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::fuzzerop::matchFirstType(), matchScalarInAggregate(), llvm::fuzzerop::matchScalarOfFirstType(), llvm::MachineIRBuilder::materializePtrAdd(), PerformHeapAllocSRoA(), llvm::object::Elf_Sym_Impl< ELFT >::setBinding(), llvm::PHINode::setIncomingValue(), llvm::MemTransferBase< AnyMemIntrinsic >::setSource(), llvm::object::Elf_Rel_Impl< ELFType< TargetEndianness, false >, false >::setSymbol(), llvm::object::Elf_Rel_Impl< ELFType< TargetEndianness, true >, false >::setSymbol(), llvm::MemSetBase< AnyMemIntrinsic >::setValue(), SimplifyGEPInst(), speculatePHIs(), splitGlobal(), tryUnmergingGEPsAcrossIndirectBr(), validExtractValueIndex(), validInsertValueIndex(), validShuffleVectorIndex(), llvm::InstCombinerImpl::visitLandingPadInst(), and llvm::InstCombinerImpl::visitLShr().

◆ removeRegisterOperands()

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

Variable Documentation

◆ EnableEmException

cl::opt<bool> EnableEmException

◆ EnableEmSjLj

cl::opt<bool> EnableEmSjLj

◆ 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))