Home | History | Annotate | Download | only in CodeGen
      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 
      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 
     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 
     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 
     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 
     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 
     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 
     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 
     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 
     95 void sync() {
     96 
     97   __builtin_ptx_bar_sync(0);
     98 
     99 }
    100