libgomp testsuite: OpenACC C++ testing.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / subr.ptx
blob6f748fcaf9ef55d1f6ebe3f8ecdbdba5cf762682
1 // BEGIN PREAMBLE
2         .version        3.1
3         .target sm_30
4         .address_size 64
5 // END PREAMBLE
7 // BEGIN FUNCTION DEF: clock
8 .func (.param.u32 %out_retval)clock
10 .reg.u32 %retval;
11         .reg.u64 %hr10;
12         .reg.u32 %r22;
13         .reg.u32 %r23;
14         .reg.u32 %r24;
15         .local.align 8 .b8 %frame[8];
16         // #APP 
17 // 7 "subr.c" 1
18         mov.u32 %r24, %clock;
19 // 0 "" 2
20         // #NO_APP 
21                 st.local.u32    [%frame], %r24;
22                 ld.local.u32    %r22, [%frame];
23                 mov.u32 %r23, %r22;
24                 mov.u32 %retval, %r23;
25         st.param.u32    [%out_retval], %retval;
26         ret;
27         }
28 // END FUNCTION DEF
29 // BEGIN GLOBAL FUNCTION DEF: delay
30 .visible .entry delay(.param.u64 %in_ar1, .param.u64 %in_ar2)
32         .reg.u64 %ar1;
33         .reg.u64 %ar2;
34         .reg.u64 %hr10;
35         .reg.u64 %r22;
36         .reg.u32 %r23;
37         .reg.u64 %r24;
38         .reg.u64 %r25;
39         .reg.u32 %r26;
40         .reg.u32 %r27;
41         .reg.u32 %r28;
42         .reg.u32 %r29;
43         .reg.u32 %r30;
44         .reg.u64 %r31;
45         .reg.pred %r32;
46         .local.align 8 .b8 %frame[24];
47         ld.param.u64 %ar1, [%in_ar1];
48         ld.param.u64 %ar2, [%in_ar2];
49                 mov.u64 %r24, %ar1;
50                 st.u64  [%frame+8], %r24;
51                 mov.u64 %r25, %ar2;
52                 st.local.u64    [%frame+16], %r25;
53         {
54                 .param.u32 %retval_in;
55         {
56                 call (%retval_in), clock;
57         }
58                 ld.param.u32    %r26, [%retval_in];
60                 st.local.u32    [%frame+4], %r26;
61                 mov.u32 %r27, 0;
62                 st.local.u32    [%frame], %r27;
63                 bra     $L4;
64 $L5:
65         {
66                 .param.u32 %retval_in;
67         {
68                 call (%retval_in), clock;
69         }
70                 ld.param.u32    %r28, [%retval_in];
72                 mov.u32 %r23, %r28;
73                 ld.local.u32    %r30, [%frame+4];
74                 sub.u32 %r29, %r23, %r30;
75                 st.local.u32    [%frame], %r29;
76 $L4:
77                 ld.local.s32    %r22, [%frame];
78                 ld.local.u64    %r31, [%frame+16];
79                 setp.lo.u64 %r32,%r22,%r31;
80         @%r32   bra     $L5;
81         ret;
82         }
83 // END FUNCTION DEF
84 // BEGIN GLOBAL FUNCTION DEF: delay2
85 .visible .entry delay2(.param.u64 %in_ar1, .param.u64 %in_ar2, .param.u64 %in_ar3)
87         .reg.u64 %ar1;
88         .reg.u64 %ar2;
89         .reg.u64 %ar3;
90         .reg.u64 %hr10;
91         .reg.u64 %r22;
92         .reg.u32 %r23;
93         .reg.u64 %r24;
94         .reg.u64 %r25;
95         .reg.u64 %r26;
96         .reg.u32 %r27;
97         .reg.u32 %r28;
98         .reg.u32 %r29;
99         .reg.u32 %r30;
100         .reg.u32 %r31;
101         .reg.u64 %r32;
102         .reg.pred %r33;
103         .reg.u64 %r34;
104         .reg.u64 %r35;
105         .local.align 8 .b8 %frame[32];
106         ld.param.u64 %ar1, [%in_ar1];
107         ld.param.u64 %ar2, [%in_ar2];
108         ld.param.u64 %ar3, [%in_ar3];
109                 mov.u64 %r24, %ar1;
110                 st.local.u64    [%frame+8], %r24;
111                 mov.u64 %r25, %ar2;
112                 st.local.u64    [%frame+16], %r25;
113                 mov.u64 %r26, %ar3;
114                 st.local.u64    [%frame+24], %r26;
115         {
116                 .param.u32 %retval_in;
117         {
118                 call (%retval_in), clock;
119         }
120                 ld.param.u32    %r27, [%retval_in];
122                 st.local.u32    [%frame+4], %r27;
123                 mov.u32 %r28, 0;
124                 st.local.u32    [%frame], %r28;
125                 bra     $L8;
126 $L9:
127         {
128                 .param.u32 %retval_in;
129         {
130                 call (%retval_in), clock;
131         }
132                 ld.param.u32    %r29, [%retval_in];
134                 mov.u32 %r23, %r29;
135                 ld.local.u32    %r31, [%frame+4];
136                 sub.u32 %r30, %r23, %r31;
137                 st.local.u32    [%frame], %r30;
138 $L8:
139                 ld.local.s32    %r22, [%frame];
140                 ld.local.u64    %r32, [%frame+16];
141                 setp.lo.u64 %r33,%r22,%r32;
142         @%r33   bra     $L9;
143                 ld.local.u64    %r34, [%frame+8];
144                 ld.local.u64    %r35, [%frame+24];
145                 st.u64  [%r34], %r35;
146         ret;
147         }
148 // END FUNCTION DEF