@@ -26,59 +26,7 @@ class MipsCCState : public CCState {
2626 getSpecialCallingConvForCallee (const SDNode *Callee,
2727 const MipsSubtarget &Subtarget);
2828
29- static bool originalTypeIsF128 (const Type *Ty);
30- static bool originalEVTTypeIsVectorFloat (EVT Ty);
31- static bool originalTypeIsVectorFloat (const Type *Ty);
32-
33- void PreAnalyzeCallOperand (const Type *ArgTy);
34-
35- void PreAnalyzeFormalArgument (const Type *ArgTy, ISD::ArgFlagsTy Flags);
36- void PreAnalyzeReturnValue (EVT ArgVT);
37-
3829private:
39- // / Identify lowered values that originated from f128 arguments and record
40- // / this for use by RetCC_MipsN.
41- void PreAnalyzeCallResultForF128 (const SmallVectorImpl<ISD::InputArg> &Ins,
42- const Type *RetTy);
43-
44- // / Identify lowered values that originated from f128 arguments and record
45- // / this for use by RetCC_MipsN.
46- void PreAnalyzeCallReturnForF128 (const SmallVectorImpl<ISD::OutputArg> &Outs, const Type *RetTy);
47-
48- // / Identify lowered values that originated from f128 arguments and record
49- // / this.
50- void
51- PreAnalyzeCallOperands (const SmallVectorImpl<ISD::OutputArg> &Outs,
52- std::vector<TargetLowering::ArgListEntry> &FuncArgs);
53-
54- // / Identify lowered values that originated from f128 arguments and record
55- // / this for use by RetCC_MipsN.
56- void
57- PreAnalyzeFormalArgumentsForF128 (const SmallVectorImpl<ISD::InputArg> &Ins);
58-
59- void
60- PreAnalyzeCallResultForVectorFloat (const SmallVectorImpl<ISD::InputArg> &Ins,
61- const Type *RetTy);
62-
63- void PreAnalyzeFormalArgumentsForVectorFloat (
64- const SmallVectorImpl<ISD::InputArg> &Ins);
65-
66- void
67- PreAnalyzeReturnForVectorFloat (const SmallVectorImpl<ISD::OutputArg> &Outs);
68-
69- // / Records whether the value has been lowered from an f128.
70- SmallVector<bool , 4 > OriginalArgWasF128;
71-
72- // / Records whether the value has been lowered from float.
73- SmallVector<bool , 4 > OriginalArgWasFloat;
74-
75- // / Records whether the value has been lowered from a floating point vector.
76- SmallVector<bool , 4 > OriginalArgWasFloatVector;
77-
78- // / Records whether the return value has been lowered from a floating point
79- // / vector.
80- SmallVector<bool , 4 > OriginalRetWasFloatVector;
81-
8230 // Used to handle MIPS16-specific calling convention tweaks.
8331 // FIXME: This should probably be a fully fledged calling convention.
8432 SpecialCallingConvType SpecialCallingConv;
@@ -89,116 +37,6 @@ class MipsCCState : public CCState {
8937 SpecialCallingConvType SpecialCC = NoSpecialCallingConv)
9038 : CCState(CC, isVarArg, MF, locs, C), SpecialCallingConv(SpecialCC) {}
9139
92- void
93- PreAnalyzeCallOperands (const SmallVectorImpl<ISD::OutputArg> &Outs,
94- CCAssignFn Fn,
95- std::vector<TargetLowering::ArgListEntry> &FuncArgs) {
96- OriginalArgWasF128.clear ();
97- OriginalArgWasFloat.clear ();
98- OriginalArgWasFloatVector.clear ();
99- PreAnalyzeCallOperands (Outs, FuncArgs);
100- }
101-
102- void
103- AnalyzeCallOperands (const SmallVectorImpl<ISD::OutputArg> &Outs,
104- CCAssignFn Fn,
105- std::vector<TargetLowering::ArgListEntry> &FuncArgs) {
106- PreAnalyzeCallOperands (Outs, Fn, FuncArgs);
107- CCState::AnalyzeCallOperands (Outs, Fn);
108- }
109-
110- // The AnalyzeCallOperands in the base class is not usable since we must
111- // provide a means of accessing ArgListEntry::IsFixed. Delete them from this
112- // class. This doesn't stop them being used via the base class though.
113- void AnalyzeCallOperands (const SmallVectorImpl<ISD::OutputArg> &Outs,
114- CCAssignFn Fn) = delete;
115- void AnalyzeCallOperands (const SmallVectorImpl<MVT> &Outs,
116- SmallVectorImpl<ISD::ArgFlagsTy> &Flags,
117- CCAssignFn Fn) = delete;
118-
119- void PreAnalyzeFormalArguments (const SmallVectorImpl<ISD::InputArg> &Ins,
120- CCAssignFn Fn) {
121- OriginalArgWasFloat.clear ();
122- OriginalArgWasF128.clear ();
123- OriginalArgWasFloatVector.clear ();
124- PreAnalyzeFormalArgumentsForF128 (Ins);
125- }
126-
127- void AnalyzeFormalArguments (const SmallVectorImpl<ISD::InputArg> &Ins,
128- CCAssignFn Fn) {
129- PreAnalyzeFormalArguments (Ins, Fn);
130- CCState::AnalyzeFormalArguments (Ins, Fn);
131- }
132-
133- void PreAnalyzeCallResult (const Type *RetTy) {
134- OriginalArgWasF128.push_back (originalTypeIsF128 (RetTy));
135- OriginalArgWasFloat.push_back (RetTy->isFloatingPointTy ());
136- OriginalRetWasFloatVector.push_back (originalTypeIsVectorFloat (RetTy));
137- }
138-
139- void PreAnalyzeCallResult (const SmallVectorImpl<ISD::InputArg> &Ins,
140- CCAssignFn Fn, const Type *RetTy) {
141- OriginalArgWasFloat.clear ();
142- OriginalArgWasF128.clear ();
143- OriginalArgWasFloatVector.clear ();
144- PreAnalyzeCallResultForF128 (Ins, RetTy);
145- PreAnalyzeCallResultForVectorFloat (Ins, RetTy);
146- }
147-
148- void AnalyzeCallResult (const SmallVectorImpl<ISD::InputArg> &Ins,
149- CCAssignFn Fn, const Type *RetTy) {
150- PreAnalyzeCallResult (Ins, Fn, RetTy);
151- CCState::AnalyzeCallResult (Ins, Fn);
152- }
153-
154- void PreAnalyzeReturn (const SmallVectorImpl<ISD::OutputArg> &Outs,
155- CCAssignFn Fn) {
156- const MachineFunction &MF = getMachineFunction ();
157- OriginalArgWasFloat.clear ();
158- OriginalArgWasF128.clear ();
159- OriginalArgWasFloatVector.clear ();
160- PreAnalyzeCallReturnForF128 (Outs, MF.getFunction ().getReturnType ());
161- PreAnalyzeReturnForVectorFloat (Outs);
162- }
163-
164- void AnalyzeReturn (const SmallVectorImpl<ISD::OutputArg> &Outs,
165- CCAssignFn Fn) {
166- PreAnalyzeReturn (Outs, Fn);
167- CCState::AnalyzeReturn (Outs, Fn);
168- }
169-
170- bool CheckReturn (const SmallVectorImpl<ISD::OutputArg> &ArgsFlags,
171- CCAssignFn Fn) {
172- const MachineFunction &MF = getMachineFunction ();
173- PreAnalyzeCallReturnForF128 (ArgsFlags, MF.getFunction ().getReturnType ());
174- PreAnalyzeReturnForVectorFloat (ArgsFlags);
175- bool Return = CCState::CheckReturn (ArgsFlags, Fn);
176- OriginalArgWasFloat.clear ();
177- OriginalArgWasF128.clear ();
178- OriginalArgWasFloatVector.clear ();
179- return Return;
180- }
181-
182- bool CheckCallReturn (const SmallVectorImpl<ISD::OutputArg> &ArgsFlags,
183- CCAssignFn Fn, const Type *RetTy) {
184- PreAnalyzeCallReturnForF128 (ArgsFlags, RetTy);
185- PreAnalyzeReturnForVectorFloat (ArgsFlags);
186- bool Return = CCState::CheckReturn (ArgsFlags, Fn);
187- OriginalArgWasFloat.clear ();
188- OriginalArgWasF128.clear ();
189- OriginalArgWasFloatVector.clear ();
190- return Return;
191- }
192- bool WasOriginalArgF128 (unsigned ValNo) { return OriginalArgWasF128[ValNo]; }
193- bool WasOriginalArgFloat (unsigned ValNo) {
194- return OriginalArgWasFloat[ValNo];
195- }
196- bool WasOriginalArgVectorFloat (unsigned ValNo) const {
197- return OriginalArgWasFloatVector[ValNo];
198- }
199- bool WasOriginalRetVectorFloat (unsigned ValNo) const {
200- return OriginalRetWasFloatVector[ValNo];
201- }
20240 SpecialCallingConvType getSpecialCallingConv () { return SpecialCallingConv; }
20341};
20442}
0 commit comments