/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/lib/Target/SystemZ/SystemZInstrBuilder.h
Line | Count | Source |
1 | | //===-- SystemZInstrBuilder.h - Functions to aid building insts -*- C++ -*-===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // |
10 | | // This file exposes functions that may be used with BuildMI from the |
11 | | // MachineInstrBuilder.h file to handle SystemZ'isms in a clean way. |
12 | | // |
13 | | //===----------------------------------------------------------------------===// |
14 | | |
15 | | #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRBUILDER_H |
16 | | #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRBUILDER_H |
17 | | |
18 | | #include "llvm/CodeGen/MachineFrameInfo.h" |
19 | | #include "llvm/CodeGen/MachineInstrBuilder.h" |
20 | | #include "llvm/CodeGen/MachineMemOperand.h" |
21 | | #include "llvm/CodeGen/PseudoSourceValue.h" |
22 | | |
23 | | namespace llvm { |
24 | | |
25 | | /// Add a BDX memory reference for frame object FI to MIB. |
26 | | static inline const MachineInstrBuilder & |
27 | 1.41k | addFrameReference(const MachineInstrBuilder &MIB, int FI) { |
28 | 1.41k | MachineInstr *MI = MIB; |
29 | 1.41k | MachineFunction &MF = *MI->getParent()->getParent(); |
30 | 1.41k | MachineFrameInfo &MFFrame = MF.getFrameInfo(); |
31 | 1.41k | const MCInstrDesc &MCID = MI->getDesc(); |
32 | 1.41k | auto Flags = MachineMemOperand::MONone; |
33 | 1.41k | if (MCID.mayLoad()) |
34 | 678 | Flags |= MachineMemOperand::MOLoad; |
35 | 1.41k | if (MCID.mayStore()) |
36 | 737 | Flags |= MachineMemOperand::MOStore; |
37 | 1.41k | int64_t Offset = 0; |
38 | 1.41k | MachineMemOperand *MMO = MF.getMachineMemOperand( |
39 | 1.41k | MachinePointerInfo::getFixedStack(MF, FI, Offset), Flags, |
40 | 1.41k | MFFrame.getObjectSize(FI), MFFrame.getObjectAlignment(FI)); |
41 | 1.41k | return MIB.addFrameIndex(FI).addImm(Offset).addReg(0).addMemOperand(MMO); |
42 | 1.41k | } Unexecuted instantiation: SystemZFrameLowering.cpp:llvm::addFrameReference(llvm::MachineInstrBuilder const&, int) SystemZInstrInfo.cpp:llvm::addFrameReference(llvm::MachineInstrBuilder const&, int) Line | Count | Source | 27 | 1.41k | addFrameReference(const MachineInstrBuilder &MIB, int FI) { | 28 | 1.41k | MachineInstr *MI = MIB; | 29 | 1.41k | MachineFunction &MF = *MI->getParent()->getParent(); | 30 | 1.41k | MachineFrameInfo &MFFrame = MF.getFrameInfo(); | 31 | 1.41k | const MCInstrDesc &MCID = MI->getDesc(); | 32 | 1.41k | auto Flags = MachineMemOperand::MONone; | 33 | 1.41k | if (MCID.mayLoad()) | 34 | 678 | Flags |= MachineMemOperand::MOLoad; | 35 | 1.41k | if (MCID.mayStore()) | 36 | 737 | Flags |= MachineMemOperand::MOStore; | 37 | 1.41k | int64_t Offset = 0; | 38 | 1.41k | MachineMemOperand *MMO = MF.getMachineMemOperand( | 39 | 1.41k | MachinePointerInfo::getFixedStack(MF, FI, Offset), Flags, | 40 | 1.41k | MFFrame.getObjectSize(FI), MFFrame.getObjectAlignment(FI)); | 41 | 1.41k | return MIB.addFrameIndex(FI).addImm(Offset).addReg(0).addMemOperand(MMO); | 42 | 1.41k | } |
|
43 | | |
44 | | } // end namespace llvm |
45 | | |
46 | | #endif |