annotate lib/Target/X86/X86CallLowering.h @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
1 //===- llvm/lib/Target/X86/X86CallLowering.h - Call lowering ----*- C++ -*-===//
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 // The LLVM Compiler Infrastructure
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 // This file is distributed under the University of Illinois Open Source
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 // License. See LICENSE.TXT for details.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 //===----------------------------------------------------------------------===//
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
9 //
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 /// \file
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 /// This file describes how to lower LLVM calls to machine code calls.
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
12 //
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 //===----------------------------------------------------------------------===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
15 #ifndef LLVM_LIB_TARGET_X86_X86CALLLOWERING_H
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
16 #define LLVM_LIB_TARGET_X86_X86CALLLOWERING_H
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 #include "llvm/ADT/ArrayRef.h"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 #include "llvm/CodeGen/GlobalISel/CallLowering.h"
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
20 #include <functional>
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 namespace llvm {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
24 class DataLayout;
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
25 class MachineRegisterInfo;
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 class X86TargetLowering;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 class X86CallLowering : public CallLowering {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 public:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 X86CallLowering(const X86TargetLowering &TLI);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 bool lowerReturn(MachineIRBuilder &MIRBuiler, const Value *Val,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 unsigned VReg) const override;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 ArrayRef<unsigned> VRegs) const override;
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
37
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
38 bool lowerCall(MachineIRBuilder &MIRBuilder, CallingConv::ID CallConv,
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
39 const MachineOperand &Callee, const ArgInfo &OrigRet,
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
40 ArrayRef<ArgInfo> OrigArgs) const override;
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
41
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
42 private:
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
43 /// A function of this type is used to perform value split action.
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
44 using SplitArgTy = std::function<void(ArrayRef<unsigned>)>;
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
45
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
46 bool splitToValueTypes(const ArgInfo &OrigArgInfo,
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
47 SmallVectorImpl<ArgInfo> &SplitArgs,
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
48 const DataLayout &DL, MachineRegisterInfo &MRI,
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
49 SplitArgTy SplitArg) const;
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 };
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
51
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
52 } // end namespace llvm
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
53
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
54 #endif // LLVM_LIB_TARGET_X86_X86CALLLOWERING_H