brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 7b57f7c Raw
51 lines · cpp
1//===-- X86MachineFunctionInfo.cpp - X86 machine function info ------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#include "X86MachineFunctionInfo.h"10#include "X86RegisterInfo.h"11#include "llvm/CodeGen/MachineRegisterInfo.h"12#include "llvm/CodeGen/TargetSubtargetInfo.h"13 14using namespace llvm;15 16yaml::X86MachineFunctionInfo::X86MachineFunctionInfo(17    const llvm::X86MachineFunctionInfo &MFI)18    : AMXProgModel(MFI.getAMXProgModel()) {}19 20void yaml::X86MachineFunctionInfo::mappingImpl(yaml::IO &YamlIO) {21  MappingTraits<X86MachineFunctionInfo>::mapping(YamlIO, *this);22}23 24MachineFunctionInfo *X86MachineFunctionInfo::clone(25    BumpPtrAllocator &Allocator, MachineFunction &DestMF,26    const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)27    const {28  return DestMF.cloneInfo<X86MachineFunctionInfo>(*this);29}30 31void X86MachineFunctionInfo::initializeBaseYamlFields(32    const yaml::X86MachineFunctionInfo &YamlMFI) {33  AMXProgModel = YamlMFI.AMXProgModel;34}35 36void X86MachineFunctionInfo::anchor() { }37 38void X86MachineFunctionInfo::setRestoreBasePointer(const MachineFunction *MF) {39  if (!RestoreBasePointerOffset) {40    const X86RegisterInfo *RegInfo = static_cast<const X86RegisterInfo *>(41      MF->getSubtarget().getRegisterInfo());42    unsigned SlotSize = RegInfo->getSlotSize();43    for (const MCPhysReg *CSR = MF->getRegInfo().getCalleeSavedRegs();44         unsigned Reg = *CSR; ++CSR) {45      if (X86::GR64RegClass.contains(Reg) || X86::GR32RegClass.contains(Reg))46        RestoreBasePointerOffset -= SlotSize;47    }48  }49}50 51