1303231Sdim//===---- PPCCCState.h - CCState with PowerPC specific extensions -----------===//
2303231Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6303231Sdim//
7303231Sdim//===----------------------------------------------------------------------===//
8303231Sdim
9303231Sdim#ifndef PPCCCSTATE_H
10303231Sdim#define PPCCCSTATE_H
11303231Sdim
12303231Sdim#include "PPCISelLowering.h"
13303231Sdim#include "llvm/ADT/SmallVector.h"
14303231Sdim#include "llvm/CodeGen/CallingConvLower.h"
15303231Sdim
16303231Sdimnamespace llvm {
17303231Sdim
18303231Sdimclass PPCCCState : public CCState {
19303231Sdimpublic:
20303231Sdim
21303231Sdim  void
22303231Sdim  PreAnalyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Outs);
23303231Sdim  void
24303231Sdim  PreAnalyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> &Ins);
25303231Sdim
26303231Sdimprivate:
27303231Sdim
28303231Sdim  // Records whether the value has been lowered from an ppcf128.
29303231Sdim  SmallVector<bool, 4> OriginalArgWasPPCF128;
30303231Sdim
31303231Sdimpublic:
32303231Sdim  PPCCCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF,
33303231Sdim             SmallVectorImpl<CCValAssign> &locs, LLVMContext &C)
34303231Sdim        : CCState(CC, isVarArg, MF, locs, C) {}
35303231Sdim
36303231Sdim  bool WasOriginalArgPPCF128(unsigned ValNo) { return OriginalArgWasPPCF128[ValNo]; }
37303231Sdim  void clearWasPPCF128() { OriginalArgWasPPCF128.clear(); }
38303231Sdim};
39303231Sdim}
40303231Sdim
41303231Sdim#endif
42