LLVM 24.0.0git
WebAssemblyInstrInfo.h
Go to the documentation of this file.
1//=- WebAssemblyInstrInfo.h - WebAssembly Instruction Information -*- C++ -*-=//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// This file contains the WebAssembly implementation of the
11/// TargetInstrInfo class.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
16#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
17
19#include "llvm/ADT/ArrayRef.h"
21
22#define GET_INSTRINFO_HEADER
23#include "WebAssemblyGenInstrInfo.inc"
24
25#define GET_INSTRINFO_OPERAND_ENUM
26#include "WebAssemblyGenInstrInfo.inc"
27
28namespace llvm {
29
30class WebAssemblySubtarget;
31
34
35public:
36 explicit WebAssemblyInstrInfo(const WebAssemblySubtarget &STI);
37
38 const WebAssemblyRegisterInfo &getRegisterInfo() const { return RI; }
39
42
43 bool isReMaterializableImpl(const MachineInstr &MI) const override;
44
46 const DebugLoc &DL, Register DestReg, Register SrcReg,
47 bool KillSrc, bool RenamableDest = false,
48 bool RenamableSrc = false) const override;
50 unsigned OpIdx1,
51 unsigned OpIdx2) const override;
52
56 bool AllowModify = false) const override;
58 int *BytesRemoved = nullptr) const override;
61 const DebugLoc &DL,
62 int *BytesAdded = nullptr) const override;
63 bool
65
67 getSerializableTargetIndices() const override;
68
69 const MachineOperand &getCalleeOperand(const MachineInstr &MI) const override;
70
71 bool isExplicitTargetIndexDef(const MachineInstr &MI, int &Index,
72 int64_t &Offset) const override;
73};
74
75} // end namespace llvm
76
77#endif
MachineBasicBlock & MBB
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
IRTranslator LLVM IR MI
const SmallVectorImpl< MachineOperand > MachineBasicBlock * TBB
const SmallVectorImpl< MachineOperand > & Cond
This file contains the WebAssembly implementation of the WebAssemblyRegisterInfo class.
Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition ArrayRef.h:40
A debug info location.
Definition DebugLoc.h:126
MachineInstrBundleIterator< MachineInstr > iterator
Representation of each machine instruction.
MachineOperand class - Representation of each machine instruction operand.
Wrapper class representing virtual and physical registers.
Definition Register.h:20
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
bool reverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const override
WebAssemblyInstrInfo(const WebAssemblySubtarget &STI)
const MachineOperand & getCalleeOperand(const MachineInstr &MI) const override
ArrayRef< std::pair< int, const char * > > getSerializableTargetIndices() const override
bool isExplicitTargetIndexDef(const MachineInstr &MI, int &Index, int64_t &Offset) const override
const WebAssemblyRegisterInfo & getRegisterInfo() const
const TargetRegisterClass * getInlineAsmMemoryOperandRegClass(InlineAsm::ConstraintCode C) const override
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const DebugLoc &DL, Register DestReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override
unsigned insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, const DebugLoc &DL, int *BytesAdded=nullptr) const override
bool isReMaterializableImpl(const MachineInstr &MI) const override
MachineInstr * commuteInstructionImpl(MachineInstr &MI, bool NewMI, unsigned OpIdx1, unsigned OpIdx2) const override
bool analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const override
unsigned removeBranch(MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override
This is an optimization pass for GlobalISel generic memory operations.
@ Offset
Definition DWP.cpp:577
MCRegisterClass TargetRegisterClass
Definition FastISel.h:58