| //===- PTXParamManager.cpp - Manager for .param variables -------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file implements the PTXParamManager class. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "PTX.h" |
| #include "PTXParamManager.h" |
| #include "llvm/ADT/StringExtras.h" |
| |
| using namespace llvm; |
| |
| PTXParamManager::PTXParamManager() { |
| } |
| |
| unsigned PTXParamManager::addArgumentParam(unsigned Size) { |
| PTXParam Param; |
| Param.Type = PTX_PARAM_TYPE_ARGUMENT; |
| Param.Size = Size; |
| |
| std::string Name; |
| Name = "__param_"; |
| Name += utostr(ArgumentParams.size()+1); |
| Param.Name = Name; |
| |
| unsigned Index = AllParams.size(); |
| AllParams[Index] = Param; |
| ArgumentParams.push_back(Index); |
| |
| return Index; |
| } |
| |
| unsigned PTXParamManager::addReturnParam(unsigned Size) { |
| PTXParam Param; |
| Param.Type = PTX_PARAM_TYPE_RETURN; |
| Param.Size = Size; |
| |
| std::string Name; |
| Name = "__ret_"; |
| Name += utostr(ReturnParams.size()+1); |
| Param.Name = Name; |
| |
| unsigned Index = AllParams.size(); |
| AllParams[Index] = Param; |
| ReturnParams.push_back(Index); |
| |
| return Index; |
| } |
| |
| unsigned PTXParamManager::addLocalParam(unsigned Size) { |
| PTXParam Param; |
| Param.Type = PTX_PARAM_TYPE_LOCAL; |
| Param.Size = Size; |
| |
| std::string Name; |
| Name = "__localparam_"; |
| Name += utostr(LocalParams.size()+1); |
| Param.Name = Name; |
| |
| unsigned Index = AllParams.size(); |
| AllParams[Index] = Param; |
| LocalParams.push_back(Index); |
| |
| return Index; |
| } |
| |