• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -triple ptx32-unknown-unknown -emit-llvm -o %t %s
2 // RUN: %clang_cc1 -triple ptx64-unknown-unknown -emit-llvm -o %t %s
3 
4 
read_tid()5 int read_tid() {
6 
7   int x = __builtin_ptx_read_tid_x();
8   int y = __builtin_ptx_read_tid_y();
9   int z = __builtin_ptx_read_tid_z();
10   int w = __builtin_ptx_read_tid_w();
11 
12   return x + y + z + w;
13 
14 }
15 
read_ntid()16 int read_ntid() {
17 
18   int x = __builtin_ptx_read_ntid_x();
19   int y = __builtin_ptx_read_ntid_y();
20   int z = __builtin_ptx_read_ntid_z();
21   int w = __builtin_ptx_read_ntid_w();
22 
23   return x + y + z + w;
24 
25 }
26 
read_ctaid()27 int read_ctaid() {
28 
29   int x = __builtin_ptx_read_ctaid_x();
30   int y = __builtin_ptx_read_ctaid_y();
31   int z = __builtin_ptx_read_ctaid_z();
32   int w = __builtin_ptx_read_ctaid_w();
33 
34   return x + y + z + w;
35 
36 }
37 
read_nctaid()38 int read_nctaid() {
39 
40   int x = __builtin_ptx_read_nctaid_x();
41   int y = __builtin_ptx_read_nctaid_y();
42   int z = __builtin_ptx_read_nctaid_z();
43   int w = __builtin_ptx_read_nctaid_w();
44 
45   return x + y + z + w;
46 
47 }
48 
read_ids()49 int read_ids() {
50 
51   int a = __builtin_ptx_read_laneid();
52   int b = __builtin_ptx_read_warpid();
53   int c = __builtin_ptx_read_nwarpid();
54   int d = __builtin_ptx_read_smid();
55   int e = __builtin_ptx_read_nsmid();
56   int f = __builtin_ptx_read_gridid();
57 
58   return a + b + c + d + e + f;
59 
60 }
61 
read_lanemasks()62 int read_lanemasks() {
63 
64   int a = __builtin_ptx_read_lanemask_eq();
65   int b = __builtin_ptx_read_lanemask_le();
66   int c = __builtin_ptx_read_lanemask_lt();
67   int d = __builtin_ptx_read_lanemask_ge();
68   int e = __builtin_ptx_read_lanemask_gt();
69 
70   return a + b + c + d + e;
71 
72 }
73 
74 
read_clocks()75 long read_clocks() {
76 
77   int a = __builtin_ptx_read_clock();
78   long b = __builtin_ptx_read_clock64();
79 
80   return (long)a + b;
81 
82 }
83 
read_pms()84 int read_pms() {
85 
86   int a = __builtin_ptx_read_pm0();
87   int b = __builtin_ptx_read_pm1();
88   int c = __builtin_ptx_read_pm2();
89   int d = __builtin_ptx_read_pm3();
90 
91   return a + b + c + d;
92 
93 }
94 
sync()95 void sync() {
96 
97   __builtin_ptx_bar_sync(0);
98 
99 }
100