LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/R600 - AMDGPUGenCallingConv.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 37 37 100.0 %
Date: 2015-06-12 22:53:20 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Calling Convention Implementation Fragment                                 *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : static bool CC_AMDGPU(unsigned ValNo, MVT ValVT,
      10             :                       MVT LocVT, CCValAssign::LocInfo LocInfo,
      11             :                       ISD::ArgFlagsTy ArgFlags, CCState &State);
      12             : static bool CC_AMDGPU_Kernel(unsigned ValNo, MVT ValVT,
      13             :                              MVT LocVT, CCValAssign::LocInfo LocInfo,
      14             :                              ISD::ArgFlagsTy ArgFlags, CCState &State);
      15             : static bool CC_R600(unsigned ValNo, MVT ValVT,
      16             :                     MVT LocVT, CCValAssign::LocInfo LocInfo,
      17             :                     ISD::ArgFlagsTy ArgFlags, CCState &State);
      18             : static bool CC_SI(unsigned ValNo, MVT ValVT,
      19             :                   MVT LocVT, CCValAssign::LocInfo LocInfo,
      20             :                   ISD::ArgFlagsTy ArgFlags, CCState &State);
      21             : 
      22             : 
      23       13833 : static bool CC_AMDGPU(unsigned ValNo, MVT ValVT,
      24             :                       MVT LocVT, CCValAssign::LocInfo LocInfo,
      25             :                       ISD::ArgFlagsTy ArgFlags, CCState &State) {
      26             : 
      27       24984 :   if (static_cast<const AMDGPUSubtarget&>(State.getMachineFunction().getSubtarget()).getGeneration() >=AMDGPUSubtarget::SOUTHERN_ISLANDS && State.getMachineFunction().getInfo<SIMachineFunctionInfo>()->getShaderType() == ShaderType::COMPUTE) {
      28       10806 :     if (!CC_AMDGPU_Kernel(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
      29             :       return false;
      30             :   }
      31             : 
      32        5709 :   if (static_cast<const AMDGPUSubtarget&>(State.getMachineFunction().getSubtarget()).getGeneration() < AMDGPUSubtarget::SOUTHERN_ISLANDS && State.getMachineFunction().getInfo<R600MachineFunctionInfo>()->getShaderType() == ShaderType::COMPUTE) {
      33        2617 :     if (!CC_AMDGPU_Kernel(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
      34             :       return false;
      35             :   }
      36             : 
      37         410 :   if (static_cast<const AMDGPUSubtarget&>(State.getMachineFunction().getSubtarget()).getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS) {
      38         345 :     if (!CC_SI(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
      39             :       return false;
      40             :   }
      41             : 
      42          65 :   if (static_cast<const AMDGPUSubtarget&>(State.getMachineFunction().getSubtarget()).getGeneration() < AMDGPUSubtarget::SOUTHERN_ISLANDS) {
      43          65 :     if (!CC_R600(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
      44             :       return false;
      45             :   }
      46             : 
      47             :   return true;  // CC didn't match.
      48             : }
      49             : 
      50             : 
      51             : static bool CC_AMDGPU_Kernel(unsigned ValNo, MVT ValVT,
      52             :                              MVT LocVT, CCValAssign::LocInfo LocInfo,
      53             :                              ISD::ArgFlagsTy ArgFlags, CCState &State) {
      54             : 
      55       13423 :   if (allocateStack(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
      56             :     return false;
      57             : 
      58             :   return true;  // CC didn't match.
      59             : }
      60             : 
      61             : 
      62          65 : static bool CC_R600(unsigned ValNo, MVT ValVT,
      63             :                     MVT LocVT, CCValAssign::LocInfo LocInfo,
      64             :                     ISD::ArgFlagsTy ArgFlags, CCState &State) {
      65             : 
      66          65 :   if (ArgFlags.isInReg()) {
      67          65 :     if (LocVT == MVT::v4f32 ||
      68             :         LocVT == MVT::v4i32) {
      69             :       static const MCPhysReg RegList1[] = {
      70             :         AMDGPU::T0_XYZW, AMDGPU::T1_XYZW, AMDGPU::T2_XYZW, AMDGPU::T3_XYZW, AMDGPU::T4_XYZW, AMDGPU::T5_XYZW, AMDGPU::T6_XYZW, AMDGPU::T7_XYZW, AMDGPU::T8_XYZW, AMDGPU::T9_XYZW, AMDGPU::T10_XYZW, AMDGPU::T11_XYZW, AMDGPU::T12_XYZW, AMDGPU::T13_XYZW, AMDGPU::T14_XYZW, AMDGPU::T15_XYZW, AMDGPU::T16_XYZW, AMDGPU::T17_XYZW, AMDGPU::T18_XYZW, AMDGPU::T19_XYZW, AMDGPU::T20_XYZW, AMDGPU::T21_XYZW, AMDGPU::T22_XYZW, AMDGPU::T23_XYZW, AMDGPU::T24_XYZW, AMDGPU::T25_XYZW, AMDGPU::T26_XYZW, AMDGPU::T27_XYZW, AMDGPU::T28_XYZW, AMDGPU::T29_XYZW, AMDGPU::T30_XYZW, AMDGPU::T31_XYZW, AMDGPU::T32_XYZW
      71             :       };
      72          65 :       if (unsigned Reg = State.AllocateReg(RegList1)) {
      73         130 :         State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
      74          65 :         return false;
      75             :       }
      76             :     }
      77             :   }
      78             : 
      79             :   return true;  // CC didn't match.
      80             : }
      81             : 
      82             : 
      83         345 : static bool CC_SI(unsigned ValNo, MVT ValVT,
      84             :                   MVT LocVT, CCValAssign::LocInfo LocInfo,
      85             :                   ISD::ArgFlagsTy ArgFlags, CCState &State) {
      86             : 
      87         345 :   if (ArgFlags.isInReg()) {
      88         148 :     if (LocVT == MVT::f32 ||
      89             :         LocVT == MVT::i32) {
      90             :       static const MCPhysReg RegList1[] = {
      91             :         AMDGPU::SGPR0, AMDGPU::SGPR1, AMDGPU::SGPR2, AMDGPU::SGPR3, AMDGPU::SGPR4, AMDGPU::SGPR5, AMDGPU::SGPR6, AMDGPU::SGPR7, AMDGPU::SGPR8, AMDGPU::SGPR9, AMDGPU::SGPR10, AMDGPU::SGPR11, AMDGPU::SGPR12, AMDGPU::SGPR13, AMDGPU::SGPR14, AMDGPU::SGPR15, AMDGPU::SGPR16, AMDGPU::SGPR17, AMDGPU::SGPR18, AMDGPU::SGPR19, AMDGPU::SGPR20, AMDGPU::SGPR21
      92             :       };
      93          61 :       if (unsigned Reg = State.AllocateReg(RegList1)) {
      94         122 :         State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
      95          61 :         return false;
      96             :       }
      97             :     }
      98             :   }
      99             : 
     100         284 :   if (ArgFlags.isInReg()) {
     101          87 :     if (LocVT == MVT::i64) {
     102             :       static const MCPhysReg RegList2[] = {
     103             :         AMDGPU::SGPR0, AMDGPU::SGPR2, AMDGPU::SGPR4, AMDGPU::SGPR6, AMDGPU::SGPR8, AMDGPU::SGPR10, AMDGPU::SGPR12, AMDGPU::SGPR14
     104             :       };
     105             :       static const MCPhysReg RegList3[] = {
     106             :         AMDGPU::SGPR1, AMDGPU::SGPR3, AMDGPU::SGPR5, AMDGPU::SGPR7, AMDGPU::SGPR9, AMDGPU::SGPR11, AMDGPU::SGPR13, AMDGPU::SGPR15
     107             :       };
     108          87 :       if (unsigned Reg = State.AllocateReg(RegList2, RegList3)) {
     109         174 :         State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
     110          87 :         return false;
     111             :       }
     112             :     }
     113             :   }
     114             : 
     115         197 :   if (!ArgFlags.isInReg()) {
     116         197 :     if (LocVT == MVT::f32 ||
     117             :         LocVT == MVT::i32) {
     118             :       static const MCPhysReg RegList4[] = {
     119             :         AMDGPU::VGPR0, AMDGPU::VGPR1, AMDGPU::VGPR2, AMDGPU::VGPR3, AMDGPU::VGPR4, AMDGPU::VGPR5, AMDGPU::VGPR6, AMDGPU::VGPR7, AMDGPU::VGPR8, AMDGPU::VGPR9, AMDGPU::VGPR10, AMDGPU::VGPR11, AMDGPU::VGPR12, AMDGPU::VGPR13, AMDGPU::VGPR14, AMDGPU::VGPR15, AMDGPU::VGPR16, AMDGPU::VGPR17, AMDGPU::VGPR18, AMDGPU::VGPR19, AMDGPU::VGPR20, AMDGPU::VGPR21, AMDGPU::VGPR22, AMDGPU::VGPR23, AMDGPU::VGPR24, AMDGPU::VGPR25, AMDGPU::VGPR26, AMDGPU::VGPR27, AMDGPU::VGPR28, AMDGPU::VGPR29, AMDGPU::VGPR30, AMDGPU::VGPR31
     120             :       };
     121         129 :       if (unsigned Reg = State.AllocateReg(RegList4)) {
     122         258 :         State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
     123         129 :         return false;
     124             :       }
     125             :     }
     126             :   }
     127             : 
     128          68 :   if (ArgFlags.isByVal()) {
     129          68 :     if (LocVT == MVT::i64) {
     130             :       static const MCPhysReg RegList5[] = {
     131             :         AMDGPU::SGPR0, AMDGPU::SGPR2, AMDGPU::SGPR4, AMDGPU::SGPR6, AMDGPU::SGPR8, AMDGPU::SGPR10, AMDGPU::SGPR12, AMDGPU::SGPR14
     132             :       };
     133             :       static const MCPhysReg RegList6[] = {
     134             :         AMDGPU::SGPR1, AMDGPU::SGPR3, AMDGPU::SGPR5, AMDGPU::SGPR7, AMDGPU::SGPR9, AMDGPU::SGPR11, AMDGPU::SGPR13, AMDGPU::SGPR15
     135             :       };
     136          68 :       if (unsigned Reg = State.AllocateReg(RegList5, RegList6)) {
     137         136 :         State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
     138          68 :         return false;
     139             :       }
     140             :     }
     141             :   }
     142             : 
     143             :   return true;  // CC didn't match.
     144             : }

Generated by: LCOV version 1.11