1 /* Functional tests for the "target" attribute and pragma.  */
2 
3 /* { dg-do assemble { target { lp64 } } } */
4 /* { dg-require-effective-target target_attribute } */
5 /* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */
6 
7 /**
8  **
9  ** Start
10  **
11  **/
12 
fn_default_start(void)13 void fn_default_start (void) { }
14 /* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */
15 /* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */
16 /* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */
17 /* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */
18 /* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */
19 /* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */
20 /* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */
21 /* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */
22 /* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */
23 /* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */
24 /* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */
25 /* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */
26 /* { dg-final { scan-assembler "fn:fn_default_start se1" } } */
27 /* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */
28 /* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */
29 /* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */
30 
31 /**
32  **
33  ** Pragma
34  **
35  **/
36 
37 #pragma GCC target ("no-zvector")
fn_pragma_0(void)38 void fn_pragma_0 (void) { }
39 /* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */
40 /* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */
41 /* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */
42 /* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */
43 /* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */
44 /* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */
45 /* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */
46 /* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */
47 /* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */
48 /* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */
49 /* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */
50 /* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */
51 /* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */
52 /* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */
53 /* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */
54 /* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */
55 #pragma GCC reset_options
56 
fn_pragma_0_default(void)57 void fn_pragma_0_default (void) { }
58 /* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */
59 /* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */
60 /* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */
61 /* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */
62 /* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */
63 /* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */
64 /* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */
65 /* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */
66 /* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */
67 /* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */
68 /* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */
69 /* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */
70 /* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */
71 /* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */
72 /* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */
73 /* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */
74 
75 #pragma GCC target ("zvector")
fn_pragma_1(void)76 void fn_pragma_1 (void) { }
77 /* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */
78 /* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */
79 /* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */
80 /* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */
81 /* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */
82 /* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */
83 /* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */
84 /* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */
85 /* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */
86 /* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */
87 /* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */
88 /* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */
89 /* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */
90 /* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */
91 /* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */
92 /* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */
93 #pragma GCC reset_options
94 
fn_pragma_1_default(void)95 void fn_pragma_1_default (void) { }
96 /* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */
97 /* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */
98 /* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */
99 /* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */
100 /* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */
101 /* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */
102 /* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */
103 /* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */
104 /* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */
105 /* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */
106 /* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */
107 /* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */
108 /* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */
109 /* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */
110 /* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */
111 /* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */
112 
113 #pragma GCC target ("zvector")
114 #pragma GCC target ("no-zvector")
fn_pragma_1_0(void)115 void fn_pragma_1_0 (void) { }
116 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */
117 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */
118 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */
119 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */
120 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */
121 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */
122 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */
123 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */
124 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */
125 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */
126 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */
127 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */
128 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */
129 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */
130 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */
131 /* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */
132 #pragma GCC reset_options
133 
134 #pragma GCC target ("no-zvector")
135 #pragma GCC target ("zvector")
fn_pragma_0_1(void)136 void fn_pragma_0_1 (void) { }
137 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */
138 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */
139 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */
140 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */
141 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */
142 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */
143 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */
144 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */
145 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */
146 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */
147 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */
148 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */
149 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */
150 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */
151 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */
152 /* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */
153 #pragma GCC reset_options
154 
155 /**
156  **
157  ** End
158  **
159  **/
160 
fn_default_end(void)161 void fn_default_end (void) { }
162 /* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */
163 /* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */
164 /* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */
165 /* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */
166 /* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */
167 /* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */
168 /* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */
169 /* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */
170 /* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */
171 /* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */
172 /* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */
173 /* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */
174 /* { dg-final { scan-assembler "fn:fn_default_end se1" } } */
175 /* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */
176 /* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */
177 /* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */
178