xref: /freebsd/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVMachineFunctionInfo.cpp (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
13a9a9c0cSDimitry Andric //=- RISCVMachineFunctionInfo.cpp - RISCV 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 
173a9a9c0cSDimitry Andric yaml::RISCVMachineFunctionInfo::RISCVMachineFunctionInfo(
183a9a9c0cSDimitry Andric     const llvm::RISCVMachineFunctionInfo &MFI)
193a9a9c0cSDimitry Andric     : VarArgsFrameIndex(MFI.getVarArgsFrameIndex()),
203a9a9c0cSDimitry Andric       VarArgsSaveSize(MFI.getVarArgsSaveSize()) {}
213a9a9c0cSDimitry Andric 
2281ad6265SDimitry 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 
293a9a9c0cSDimitry Andric void yaml::RISCVMachineFunctionInfo::mappingImpl(yaml::IO &YamlIO) {
303a9a9c0cSDimitry Andric   MappingTraits<RISCVMachineFunctionInfo>::mapping(YamlIO, *this);
313a9a9c0cSDimitry Andric }
323a9a9c0cSDimitry Andric 
333a9a9c0cSDimitry Andric void RISCVMachineFunctionInfo::initializeBaseYamlFields(
343a9a9c0cSDimitry Andric     const yaml::RISCVMachineFunctionInfo &YamlMFI) {
353a9a9c0cSDimitry Andric   VarArgsFrameIndex = YamlMFI.VarArgsFrameIndex;
363a9a9c0cSDimitry Andric   VarArgsSaveSize = YamlMFI.VarArgsSaveSize;
373a9a9c0cSDimitry Andric }
38*bdd1243dSDimitry Andric 
39*bdd1243dSDimitry Andric void RISCVMachineFunctionInfo::addSExt32Register(Register Reg) {
40*bdd1243dSDimitry Andric   SExt32Registers.push_back(Reg);
41*bdd1243dSDimitry Andric }
42*bdd1243dSDimitry Andric 
43*bdd1243dSDimitry Andric bool RISCVMachineFunctionInfo::isSExt32Register(Register Reg) const {
44*bdd1243dSDimitry Andric   return is_contained(SExt32Registers, Reg);
45*bdd1243dSDimitry Andric }
46