blob: cc1cc711c82ed2b8a36f7421ee34d2ee8696c12f [file] [log] [blame]
Jia Liu31d157a2012-02-18 12:03:15 +00001//===-- PTXParamManager.cpp - Manager for .param variables ----------------===//
Justin Holewinski27f08fc2011-09-23 14:18:22 +00002//
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
Justin Holewinski27f08fc2011-09-23 14:18:22 +000014#include "PTXParamManager.h"
Craig Topper79aa3412012-03-17 18:46:09 +000015#include "PTX.h"
Justin Holewinski27f08fc2011-09-23 14:18:22 +000016#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;
Justin Holewinskia5745562011-09-23 17:59:11 +000035 ArgumentParams.push_back(Index);
Justin Holewinski27f08fc2011-09-23 14:18:22 +000036
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;
Justin Holewinskia5745562011-09-23 17:59:11 +000052 ReturnParams.push_back(Index);
Justin Holewinski27f08fc2011-09-23 14:18:22 +000053
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;
Justin Holewinskia5745562011-09-23 17:59:11 +000069 LocalParams.push_back(Index);
Justin Holewinski27f08fc2011-09-23 14:18:22 +000070
71 return Index;
72}
73