1*9880d681SAndroid Build Coastguard Worker //===---- PPCCCState.h - CCState with PowerPC specific extensions -----------===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #ifndef PPCCCSTATE_H 11*9880d681SAndroid Build Coastguard Worker #define PPCCCSTATE_H 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker #include "PPCISelLowering.h" 14*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/SmallVector.h" 15*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/CallingConvLower.h" 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker namespace llvm { 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker class PPCCCState : public CCState { 20*9880d681SAndroid Build Coastguard Worker public: 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker void 23*9880d681SAndroid Build Coastguard Worker PreAnalyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Outs); 24*9880d681SAndroid Build Coastguard Worker void 25*9880d681SAndroid Build Coastguard Worker PreAnalyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> &Ins); 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker private: 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker // Records whether the value has been lowered from an ppcf128. 30*9880d681SAndroid Build Coastguard Worker SmallVector<bool, 4> OriginalArgWasPPCF128; 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker public: PPCCCState(CallingConv::ID CC,bool isVarArg,MachineFunction & MF,SmallVectorImpl<CCValAssign> & locs,LLVMContext & C)33*9880d681SAndroid Build Coastguard Worker PPCCCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF, 34*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<CCValAssign> &locs, LLVMContext &C) 35*9880d681SAndroid Build Coastguard Worker : CCState(CC, isVarArg, MF, locs, C) {} 36*9880d681SAndroid Build Coastguard Worker WasOriginalArgPPCF128(unsigned ValNo)37*9880d681SAndroid Build Coastguard Worker bool WasOriginalArgPPCF128(unsigned ValNo) { return OriginalArgWasPPCF128[ValNo]; } clearWasPPCF128()38*9880d681SAndroid Build Coastguard Worker void clearWasPPCF128() { OriginalArgWasPPCF128.clear(); } 39*9880d681SAndroid Build Coastguard Worker }; 40*9880d681SAndroid Build Coastguard Worker } 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker #endif 43