Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/tools/clang/lib/Basic/Cuda.cpp
Line
Count
Source (jump to first uncovered line)
1
#include "clang/Basic/Cuda.h"
2
3
#include "llvm/ADT/StringRef.h"
4
#include "llvm/ADT/StringSwitch.h"
5
#include "llvm/Support/ErrorHandling.h"
6
7
namespace clang {
8
9
44
const char *CudaVersionToString(CudaVersion V) {
10
44
  switch (V) {
11
0
  case CudaVersion::UNKNOWN:
12
0
    return "unknown";
13
29
  case CudaVersion::CUDA_70:
14
29
    return "7.0";
15
0
  case CudaVersion::CUDA_75:
16
0
    return "7.5";
17
15
  case CudaVersion::CUDA_80:
18
15
    return "8.0";
19
0
  case CudaVersion::CUDA_90:
20
0
    return "9.0";
21
0
  }
22
0
  
llvm_unreachable0
("invalid enum");
23
0
}
24
25
376
const char *CudaArchToString(CudaArch A) {
26
376
  switch (A) {
27
0
  case CudaArch::UNKNOWN:
28
0
    return "unknown";
29
188
  case CudaArch::SM_20:
30
188
    return "sm_20";
31
6
  case CudaArch::SM_21:
32
6
    return "sm_21";
33
44
  case CudaArch::SM_30:
34
44
    return "sm_30";
35
6
  case CudaArch::SM_32:
36
6
    return "sm_32";
37
62
  case CudaArch::SM_35:
38
62
    return "sm_35";
39
6
  case CudaArch::SM_37:
40
6
    return "sm_37";
41
9
  case CudaArch::SM_50:
42
9
    return "sm_50";
43
6
  case CudaArch::SM_52:
44
6
    return "sm_52";
45
3
  case CudaArch::SM_53:
46
3
    return "sm_53";
47
33
  case CudaArch::SM_60:
48
33
    return "sm_60";
49
7
  case CudaArch::SM_61:
50
7
    return "sm_61";
51
3
  case CudaArch::SM_62:
52
3
    return "sm_62";
53
3
  case CudaArch::SM_70:
54
3
    return "sm_70";
55
0
  }
56
0
  
llvm_unreachable0
("invalid enum");
57
0
}
58
59
566
CudaArch StringToCudaArch(llvm::StringRef S) {
60
566
  return llvm::StringSwitch<CudaArch>(S)
61
566
      .Case("sm_20", CudaArch::SM_20)
62
566
      .Case("sm_21", CudaArch::SM_21)
63
566
      .Case("sm_30", CudaArch::SM_30)
64
566
      .Case("sm_32", CudaArch::SM_32)
65
566
      .Case("sm_35", CudaArch::SM_35)
66
566
      .Case("sm_37", CudaArch::SM_37)
67
566
      .Case("sm_50", CudaArch::SM_50)
68
566
      .Case("sm_52", CudaArch::SM_52)
69
566
      .Case("sm_53", CudaArch::SM_53)
70
566
      .Case("sm_60", CudaArch::SM_60)
71
566
      .Case("sm_61", CudaArch::SM_61)
72
566
      .Case("sm_62", CudaArch::SM_62)
73
566
      .Case("sm_70", CudaArch::SM_70)
74
566
      .Default(CudaArch::UNKNOWN);
75
566
}
76
77
92
const char *CudaVirtualArchToString(CudaVirtualArch A) {
78
92
  switch (A) {
79
0
  case CudaVirtualArch::UNKNOWN:
80
0
    return "unknown";
81
51
  case CudaVirtualArch::COMPUTE_20:
82
51
    return "compute_20";
83
4
  case CudaVirtualArch::COMPUTE_30:
84
4
    return "compute_30";
85
2
  case CudaVirtualArch::COMPUTE_32:
86
2
    return "compute_32";
87
15
  case CudaVirtualArch::COMPUTE_35:
88
15
    return "compute_35";
89
2
  case CudaVirtualArch::COMPUTE_37:
90
2
    return "compute_37";
91
3
  case CudaVirtualArch::COMPUTE_50:
92
3
    return "compute_50";
93
2
  case CudaVirtualArch::COMPUTE_52:
94
2
    return "compute_52";
95
1
  case CudaVirtualArch::COMPUTE_53:
96
1
    return "compute_53";
97
8
  case CudaVirtualArch::COMPUTE_60:
98
8
    return "compute_60";
99
2
  case CudaVirtualArch::COMPUTE_61:
100
2
    return "compute_61";
101
1
  case CudaVirtualArch::COMPUTE_62:
102
1
    return "compute_62";
103
1
  case CudaVirtualArch::COMPUTE_70:
104
1
    return "compute_70";
105
0
  }
106
0
  
llvm_unreachable0
("invalid enum");
107
0
}
108
109
0
CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S) {
110
0
  return llvm::StringSwitch<CudaVirtualArch>(S)
111
0
      .Case("compute_20", CudaVirtualArch::COMPUTE_20)
112
0
      .Case("compute_30", CudaVirtualArch::COMPUTE_30)
113
0
      .Case("compute_32", CudaVirtualArch::COMPUTE_32)
114
0
      .Case("compute_35", CudaVirtualArch::COMPUTE_35)
115
0
      .Case("compute_37", CudaVirtualArch::COMPUTE_37)
116
0
      .Case("compute_50", CudaVirtualArch::COMPUTE_50)
117
0
      .Case("compute_52", CudaVirtualArch::COMPUTE_52)
118
0
      .Case("compute_53", CudaVirtualArch::COMPUTE_53)
119
0
      .Case("compute_60", CudaVirtualArch::COMPUTE_60)
120
0
      .Case("compute_61", CudaVirtualArch::COMPUTE_61)
121
0
      .Case("compute_62", CudaVirtualArch::COMPUTE_62)
122
0
      .Case("compute_70", CudaVirtualArch::COMPUTE_70)
123
0
      .Default(CudaVirtualArch::UNKNOWN);
124
0
}
125
126
92
CudaVirtualArch VirtualArchForCudaArch(CudaArch A) {
127
92
  switch (A) {
128
0
  case CudaArch::UNKNOWN:
129
0
    return CudaVirtualArch::UNKNOWN;
130
51
  case CudaArch::SM_20:
131
51
  case CudaArch::SM_21:
132
51
    return CudaVirtualArch::COMPUTE_20;
133
4
  case CudaArch::SM_30:
134
4
    return CudaVirtualArch::COMPUTE_30;
135
2
  case CudaArch::SM_32:
136
2
    return CudaVirtualArch::COMPUTE_32;
137
15
  case CudaArch::SM_35:
138
15
    return CudaVirtualArch::COMPUTE_35;
139
2
  case CudaArch::SM_37:
140
2
    return CudaVirtualArch::COMPUTE_37;
141
3
  case CudaArch::SM_50:
142
3
    return CudaVirtualArch::COMPUTE_50;
143
2
  case CudaArch::SM_52:
144
2
    return CudaVirtualArch::COMPUTE_52;
145
1
  case CudaArch::SM_53:
146
1
    return CudaVirtualArch::COMPUTE_53;
147
8
  case CudaArch::SM_60:
148
8
    return CudaVirtualArch::COMPUTE_60;
149
2
  case CudaArch::SM_61:
150
2
    return CudaVirtualArch::COMPUTE_61;
151
1
  case CudaArch::SM_62:
152
1
    return CudaVirtualArch::COMPUTE_62;
153
1
  case CudaArch::SM_70:
154
1
    return CudaVirtualArch::COMPUTE_70;
155
0
  }
156
0
  
llvm_unreachable0
("invalid enum");
157
0
}
158
159
46
CudaVersion MinVersionForCudaArch(CudaArch A) {
160
46
  switch (A) {
161
0
  case CudaArch::UNKNOWN:
162
0
    return CudaVersion::UNKNOWN;
163
36
  case CudaArch::SM_20:
164
36
  case CudaArch::SM_21:
165
36
  case CudaArch::SM_30:
166
36
  case CudaArch::SM_32:
167
36
  case CudaArch::SM_35:
168
36
  case CudaArch::SM_37:
169
36
  case CudaArch::SM_50:
170
36
  case CudaArch::SM_52:
171
36
  case CudaArch::SM_53:
172
36
    return CudaVersion::CUDA_70;
173
10
  case CudaArch::SM_60:
174
10
  case CudaArch::SM_61:
175
10
  case CudaArch::SM_62:
176
10
    return CudaVersion::CUDA_80;
177
0
  case CudaArch::SM_70:
178
0
    return CudaVersion::CUDA_90;
179
0
  }
180
0
  
llvm_unreachable0
("invalid enum");
181
0
}
182
183
} // namespace clang