LLVM API Documentation
00001 //===- TableGen'erated file -------------------------------------*- C++ -*-===// 00002 // 00003 // Calling Convention Implementation Fragment 00004 // 00005 // Automatically generated file, do not edit! 00006 // 00007 //===----------------------------------------------------------------------===// 00008 00009 static bool RetCC_PPC(unsigned ValNo, MVT ValVT, 00010 MVT LocVT, CCValAssign::LocInfo LocInfo, 00011 ISD::ArgFlagsTy ArgFlags, CCState &State); 00012 00013 00014 static bool RetCC_PPC(unsigned ValNo, MVT ValVT, 00015 MVT LocVT, CCValAssign::LocInfo LocInfo, 00016 ISD::ArgFlagsTy ArgFlags, CCState &State) { 00017 00018 if (LocVT == MVT::i32) { 00019 static const unsigned RegList1[] = { 00020 PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10 00021 }; 00022 if (unsigned Reg = State.AllocateReg(RegList1, 8)) { 00023 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 00024 return false; 00025 } 00026 } 00027 00028 if (LocVT == MVT::i64) { 00029 static const unsigned RegList2[] = { 00030 PPC::X3, PPC::X4, PPC::X5, PPC::X6 00031 }; 00032 if (unsigned Reg = State.AllocateReg(RegList2, 4)) { 00033 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 00034 return false; 00035 } 00036 } 00037 00038 if (LocVT == MVT::f32) { 00039 if (unsigned Reg = State.AllocateReg(PPC::F1)) { 00040 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 00041 return false; 00042 } 00043 } 00044 00045 if (LocVT == MVT::f64) { 00046 static const unsigned RegList3[] = { 00047 PPC::F1, PPC::F2 00048 }; 00049 if (unsigned Reg = State.AllocateReg(RegList3, 2)) { 00050 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 00051 return false; 00052 } 00053 } 00054 00055 if (LocVT == MVT::v16i8 || 00056 LocVT == MVT::v8i16 || 00057 LocVT == MVT::v4i32 || 00058 LocVT == MVT::v4f32) { 00059 if (unsigned Reg = State.AllocateReg(PPC::V2)) { 00060 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 00061 return false; 00062 } 00063 } 00064 00065 return true; // CC didn't match. 00066 }