1*3ca95b02SDimitry Andric //===---- PPCCCState.cpp - CCState with PowerPC specific extensions ---------===//
2*3ca95b02SDimitry Andric //
3*3ca95b02SDimitry Andric //                     The LLVM Compiler Infrastructure
4*3ca95b02SDimitry Andric //
5*3ca95b02SDimitry Andric // This file is distributed under the University of Illinois Open Source
6*3ca95b02SDimitry Andric // License. See LICENSE.TXT for details.
7*3ca95b02SDimitry Andric //
8*3ca95b02SDimitry Andric //===----------------------------------------------------------------------===//
9*3ca95b02SDimitry Andric 
10*3ca95b02SDimitry Andric #include "PPCCCState.h"
11*3ca95b02SDimitry Andric #include "PPCSubtarget.h"
12*3ca95b02SDimitry Andric #include "llvm/IR/Module.h"
13*3ca95b02SDimitry Andric using namespace llvm;
14*3ca95b02SDimitry Andric 
15*3ca95b02SDimitry Andric // Identify lowered values that originated from ppcf128 arguments and record
16*3ca95b02SDimitry Andric // this.
PreAnalyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> & Outs)17*3ca95b02SDimitry Andric void PPCCCState::PreAnalyzeCallOperands(
18*3ca95b02SDimitry Andric     const SmallVectorImpl<ISD::OutputArg> &Outs) {
19*3ca95b02SDimitry Andric   for (const auto &I : Outs) {
20*3ca95b02SDimitry Andric     if (I.ArgVT == llvm::MVT::ppcf128)
21*3ca95b02SDimitry Andric       OriginalArgWasPPCF128.push_back(true);
22*3ca95b02SDimitry Andric     else
23*3ca95b02SDimitry Andric       OriginalArgWasPPCF128.push_back(false);
24*3ca95b02SDimitry Andric   }
25*3ca95b02SDimitry Andric }
26*3ca95b02SDimitry Andric 
PreAnalyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> & Ins)27*3ca95b02SDimitry Andric void PPCCCState::PreAnalyzeFormalArguments(
28*3ca95b02SDimitry Andric     const SmallVectorImpl<ISD::InputArg> &Ins) {
29*3ca95b02SDimitry Andric   for (const auto &I : Ins) {
30*3ca95b02SDimitry Andric     if (I.ArgVT == llvm::MVT::ppcf128) {
31*3ca95b02SDimitry Andric       OriginalArgWasPPCF128.push_back(true);
32*3ca95b02SDimitry Andric     } else {
33*3ca95b02SDimitry Andric       OriginalArgWasPPCF128.push_back(false);
34*3ca95b02SDimitry Andric     }
35*3ca95b02SDimitry Andric   }
36*3ca95b02SDimitry Andric }