1285163Sdim// WebAssemblyRegisterInfo.h - WebAssembly Register Information Impl -*- C++ -*- 2285163Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6285163Sdim// 7285163Sdim//===----------------------------------------------------------------------===// 8285163Sdim/// 9285163Sdim/// \file 10341825Sdim/// This file contains the WebAssembly implementation of the 11285163Sdim/// WebAssemblyRegisterInfo class. 12285163Sdim/// 13285163Sdim//===----------------------------------------------------------------------===// 14285163Sdim 15285163Sdim#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYREGISTERINFO_H 16285163Sdim#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYREGISTERINFO_H 17285163Sdim 18286684Sdim#define GET_REGINFO_HEADER 19286684Sdim#include "WebAssemblyGenRegisterInfo.inc" 20286684Sdim 21285163Sdimnamespace llvm { 22285163Sdim 23285163Sdimclass MachineFunction; 24285163Sdimclass RegScavenger; 25285163Sdimclass TargetRegisterClass; 26285163Sdimclass Triple; 27285163Sdim 28286684Sdimclass WebAssemblyRegisterInfo final : public WebAssemblyGenRegisterInfo { 29285163Sdim const Triple &TT; 30285163Sdim 31285163Sdimpublic: 32285163Sdim explicit WebAssemblyRegisterInfo(const Triple &TT); 33286684Sdim 34286684Sdim // Code Generation virtual methods. 35286684Sdim const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override; 36286684Sdim BitVector getReservedRegs(const MachineFunction &MF) const override; 37286684Sdim void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, 38286684Sdim unsigned FIOperandNum, 39286684Sdim RegScavenger *RS = nullptr) const override; 40286684Sdim 41286684Sdim // Debug information queries. 42353358Sdim Register getFrameRegister(const MachineFunction &MF) const override; 43286684Sdim 44296417Sdim const TargetRegisterClass * 45296417Sdim getPointerRegClass(const MachineFunction &MF, 46296417Sdim unsigned Kind = 0) const override; 47341825Sdim // This does not apply to wasm. 48341825Sdim const uint32_t *getNoPreservedMask() const override { return nullptr; } 49285163Sdim}; 50285163Sdim 51285163Sdim} // end namespace llvm 52285163Sdim 53285163Sdim#endif 54