1//===- PTXParamManager.cpp - Manager for .param variables -------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file implements the PTXParamManager class. 11// 12//===----------------------------------------------------------------------===// 13 14#include "PTX.h" 15#include "PTXParamManager.h" 16#include "llvm/ADT/StringExtras.h" 17 18using namespace llvm; 19 20PTXParamManager::PTXParamManager() { 21} 22 23unsigned PTXParamManager::addArgumentParam(unsigned Size) { 24 PTXParam Param; 25 Param.Type = PTX_PARAM_TYPE_ARGUMENT; 26 Param.Size = Size; 27 28 std::string Name; 29 Name = "__param_"; 30 Name += utostr(ArgumentParams.size()+1); 31 Param.Name = Name; 32 33 unsigned Index = AllParams.size(); 34 AllParams[Index] = Param; 35 ArgumentParams.push_back(Index); 36 37 return Index; 38} 39 40unsigned PTXParamManager::addReturnParam(unsigned Size) { 41 PTXParam Param; 42 Param.Type = PTX_PARAM_TYPE_RETURN; 43 Param.Size = Size; 44 45 std::string Name; 46 Name = "__ret_"; 47 Name += utostr(ReturnParams.size()+1); 48 Param.Name = Name; 49 50 unsigned Index = AllParams.size(); 51 AllParams[Index] = Param; 52 ReturnParams.push_back(Index); 53 54 return Index; 55} 56 57unsigned PTXParamManager::addLocalParam(unsigned Size) { 58 PTXParam Param; 59 Param.Type = PTX_PARAM_TYPE_LOCAL; 60 Param.Size = Size; 61 62 std::string Name; 63 Name = "__localparam_"; 64 Name += utostr(LocalParams.size()+1); 65 Param.Name = Name; 66 67 unsigned Index = AllParams.size(); 68 AllParams[Index] = Param; 69 LocalParams.push_back(Index); 70 71 return Index; 72} 73 74