1// WebAssemblyRegisterInfo.h - WebAssembly Register Information Impl -*- 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/// WebAssemblyRegisterInfo class. 12/// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYREGISTERINFO_H 16#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYREGISTERINFO_H 17 18#define GET_REGINFO_HEADER 19#include "WebAssemblyGenRegisterInfo.inc" 20 21namespace llvm { 22 23class MachineFunction; 24class RegScavenger; 25class TargetRegisterClass; 26class Triple; 27 28class WebAssemblyRegisterInfo final : public WebAssemblyGenRegisterInfo { 29 const Triple &TT; 30 31public: 32 explicit WebAssemblyRegisterInfo(const Triple &TT); 33 34 // Code Generation virtual methods. 35 const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override; 36 BitVector getReservedRegs(const MachineFunction &MF) const override; 37 void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, 38 unsigned FIOperandNum, 39 RegScavenger *RS = nullptr) const override; 40 41 // Debug information queries. 42 Register getFrameRegister(const MachineFunction &MF) const override; 43 44 const TargetRegisterClass * 45 getPointerRegClass(const MachineFunction &MF, 46 unsigned Kind = 0) const override; 47 // This does not apply to wasm. 48 const uint32_t *getNoPreservedMask() const override { return nullptr; } 49}; 50 51} // end namespace llvm 52 53#endif 54