blob: f4945d9463910c517ab72133317ae53d4e4ae59c [file] [log] [blame]
Justin Holewinski27f08fc2011-09-23 14:18:22 +00001//===- 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.insert(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.insert(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.insert(Index);
70
71 return Index;
72}
73