1*06c3fb27SDimitry Andric //=- RISCVMachineFunctionInfo.cpp - RISC-V machine function info --*- C++ -*-=//
23a9a9c0cSDimitry Andric //
33a9a9c0cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43a9a9c0cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
53a9a9c0cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63a9a9c0cSDimitry Andric //
73a9a9c0cSDimitry Andric //===----------------------------------------------------------------------===//
83a9a9c0cSDimitry Andric //
93a9a9c0cSDimitry Andric // This file declares RISCV-specific per-machine-function information.
103a9a9c0cSDimitry Andric //
113a9a9c0cSDimitry Andric //===----------------------------------------------------------------------===//
123a9a9c0cSDimitry Andric
133a9a9c0cSDimitry Andric #include "RISCVMachineFunctionInfo.h"
143a9a9c0cSDimitry Andric
153a9a9c0cSDimitry Andric using namespace llvm;
163a9a9c0cSDimitry Andric
RISCVMachineFunctionInfo(const llvm::RISCVMachineFunctionInfo & MFI)173a9a9c0cSDimitry Andric yaml::RISCVMachineFunctionInfo::RISCVMachineFunctionInfo(
183a9a9c0cSDimitry Andric const llvm::RISCVMachineFunctionInfo &MFI)
193a9a9c0cSDimitry Andric : VarArgsFrameIndex(MFI.getVarArgsFrameIndex()),
203a9a9c0cSDimitry Andric VarArgsSaveSize(MFI.getVarArgsSaveSize()) {}
213a9a9c0cSDimitry Andric
clone(BumpPtrAllocator & Allocator,MachineFunction & DestMF,const DenseMap<MachineBasicBlock *,MachineBasicBlock * > & Src2DstMBB) const2281ad6265SDimitry Andric MachineFunctionInfo *RISCVMachineFunctionInfo::clone(
2381ad6265SDimitry Andric BumpPtrAllocator &Allocator, MachineFunction &DestMF,
2481ad6265SDimitry Andric const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
2581ad6265SDimitry Andric const {
2681ad6265SDimitry Andric return DestMF.cloneInfo<RISCVMachineFunctionInfo>(*this);
2781ad6265SDimitry Andric }
2881ad6265SDimitry Andric
mappingImpl(yaml::IO & YamlIO)293a9a9c0cSDimitry Andric void yaml::RISCVMachineFunctionInfo::mappingImpl(yaml::IO &YamlIO) {
303a9a9c0cSDimitry Andric MappingTraits<RISCVMachineFunctionInfo>::mapping(YamlIO, *this);
313a9a9c0cSDimitry Andric }
323a9a9c0cSDimitry Andric
initializeBaseYamlFields(const yaml::RISCVMachineFunctionInfo & YamlMFI)333a9a9c0cSDimitry Andric void RISCVMachineFunctionInfo::initializeBaseYamlFields(
343a9a9c0cSDimitry Andric const yaml::RISCVMachineFunctionInfo &YamlMFI) {
353a9a9c0cSDimitry Andric VarArgsFrameIndex = YamlMFI.VarArgsFrameIndex;
363a9a9c0cSDimitry Andric VarArgsSaveSize = YamlMFI.VarArgsSaveSize;
373a9a9c0cSDimitry Andric }
38bdd1243dSDimitry Andric
addSExt32Register(Register Reg)39bdd1243dSDimitry Andric void RISCVMachineFunctionInfo::addSExt32Register(Register Reg) {
40bdd1243dSDimitry Andric SExt32Registers.push_back(Reg);
41bdd1243dSDimitry Andric }
42bdd1243dSDimitry Andric
isSExt32Register(Register Reg) const43bdd1243dSDimitry Andric bool RISCVMachineFunctionInfo::isSExt32Register(Register Reg) const {
44bdd1243dSDimitry Andric return is_contained(SExt32Registers, Reg);
45bdd1243dSDimitry Andric }
46