1 /* Functional tests for the "target" attribute and pragma.  */
2 
3 /* { dg-require-effective-target target_attribute } */
4 /* { dg-options "-mdebug -march=z13 -mtune=z10" } */
5 
6 /**
7  ** no pragma
8  **/
9 
fn_p0_1(void)10 void fn_p0_1 (void) { }
11 /* { dg-final { scan-assembler "fn:fn_p0_1 ar9" } } */
12 /* { dg-final { scan-assembler "fn:fn_p0_1 tu6" } } */
13 
14 __attribute__ ((target("arch=zEC12")))
fn_p0_2(void)15 void fn_p0_2 (void) { }
16 /* { dg-final { scan-assembler "fn:fn_p0_2 ar8" } } */
17 /* { dg-final { scan-assembler "fn:fn_p0_2 tu6" } } */
18 
19 __attribute__ ((target("tune=z196")))
fn_p0_3(void)20 void fn_p0_3 (void) { }
21 /* { dg-final { scan-assembler "fn:fn_p0_3 ar9" } } */
22 /* { dg-final { scan-assembler "fn:fn_p0_3 tu7" } } */
23 
24 __attribute__ ((target("arch=zEC12,tune=z196")))
fn_p0_4(void)25 void fn_p0_4 (void) { }
26 /* { dg-final { scan-assembler "fn:fn_p0_4 ar8" } } */
27 /* { dg-final { scan-assembler "fn:fn_p0_4 tu7" } } */
28 
29 __attribute__ ((target("tune=z196,arch=zEC12")))
fn_p0_5(void)30 void fn_p0_5 (void) { }
31 /* { dg-final { scan-assembler "fn:fn_p0_5 ar8" } } */
32 /* { dg-final { scan-assembler "fn:fn_p0_5 tu7" } } */
33 
34 /**
35  ** arch pragma
36  **/
37 
38 #pragma GCC target ("arch=z9-ec")
39 
fn_pa_1(void)40 void fn_pa_1 (void) { }
41 /* { dg-final { scan-assembler "fn:fn_pa_1 ar5" } } */
42 /* { dg-final { scan-assembler "fn:fn_pa_1 tu6" } } */
43 
44 __attribute__ ((target("arch=zEC12")))
fn_pa_2(void)45 void fn_pa_2 (void) { }
46 /* { dg-final { scan-assembler "fn:fn_pa_2 ar8" } } */
47 /* { dg-final { scan-assembler "fn:fn_pa_2 tu6" } } */
48 
49 __attribute__ ((target("tune=z196")))
fn_pa_3(void)50 void fn_pa_3 (void) { }
51 /* { dg-final { scan-assembler "fn:fn_pa_3 ar5" } } */
52 /* { dg-final { scan-assembler "fn:fn_pa_3 tu7" } } */
53 
54 __attribute__ ((target("arch=zEC12,tune=z196")))
fn_pa_4(void)55 void fn_pa_4 (void) { }
56 /* { dg-final { scan-assembler "fn:fn_pa_4 ar8" } } */
57 /* { dg-final { scan-assembler "fn:fn_pa_4 tu7" } } */
58 
59 __attribute__ ((target("tune=z196,arch=zEC12")))
fn_pa_5(void)60 void fn_pa_5 (void) { }
61 /* { dg-final { scan-assembler "fn:fn_pa_5 ar8" } } */
62 /* { dg-final { scan-assembler "fn:fn_pa_5 tu7" } } */
63 
64 #pragma GCC reset_options
65 
66 /**
67  ** tune pragma
68  **/
69 
70 #pragma GCC target ("tune=z9-109")
71 
fn_pt_1(void)72 void fn_pt_1 (void) { }
73 /* { dg-final { scan-assembler "fn:fn_pt_1 ar9" } } */
74 /* { dg-final { scan-assembler "fn:fn_pt_1 tu4" } } */
75 
76 __attribute__ ((target("arch=zEC12")))
fn_pt_2(void)77 void fn_pt_2 (void) { }
78 /* { dg-final { scan-assembler "fn:fn_pt_2 ar8" } } */
79 /* { dg-final { scan-assembler "fn:fn_pt_2 tu4" } } */
80 
81 __attribute__ ((target("tune=z196")))
fn_pt_3(void)82 void fn_pt_3 (void) { }
83 /* { dg-final { scan-assembler "fn:fn_pt_3 ar9" } } */
84 /* { dg-final { scan-assembler "fn:fn_pt_3 tu7" } } */
85 
86 __attribute__ ((target("arch=zEC12,tune=z196")))
fn_pt_4(void)87 void fn_pt_4 (void) { }
88 /* { dg-final { scan-assembler "fn:fn_pt_4 ar8" } } */
89 /* { dg-final { scan-assembler "fn:fn_pt_4 tu7" } } */
90 
91 __attribute__ ((target("tune=z196,arch=zEC12")))
fn_pt_5(void)92 void fn_pt_5 (void) { }
93 /* { dg-final { scan-assembler "fn:fn_pt_5 ar8" } } */
94 /* { dg-final { scan-assembler "fn:fn_pt_5 tu7" } } */
95 
96 #pragma GCC reset_options
97 
98 /**
99  ** arch and tune pragmas
100  **/
101 
102 #pragma GCC target ("arch=z9-ec,tune=z9-109")
103 
fn_pat_1(void)104 void fn_pat_1 (void) { }
105 /* { dg-final { scan-assembler "fn:fn_pat_1 ar5" } } */
106 /* { dg-final { scan-assembler "fn:fn_pat_1 tu4" } } */
107 
108 __attribute__ ((target("arch=zEC12")))
fn_pat_2(void)109 void fn_pat_2 (void) { }
110 /* { dg-final { scan-assembler "fn:fn_pat_2 ar8" } } */
111 /* { dg-final { scan-assembler "fn:fn_pat_2 tu4" } } */
112 
113 __attribute__ ((target("tune=z196")))
fn_pat_3(void)114 void fn_pat_3 (void) { }
115 /* { dg-final { scan-assembler "fn:fn_pat_3 ar5" } } */
116 /* { dg-final { scan-assembler "fn:fn_pat_3 tu7" } } */
117 
118 __attribute__ ((target("arch=zEC12,tune=z196")))
fn_pat_4(void)119 void fn_pat_4 (void) { }
120 /* { dg-final { scan-assembler "fn:fn_pat_4 ar8" } } */
121 /* { dg-final { scan-assembler "fn:fn_pat_4 tu7" } } */
122 
123 __attribute__ ((target("tune=z196,arch=zEC12")))
fn_pat_5(void)124 void fn_pat_5 (void) { }
125 /* { dg-final { scan-assembler "fn:fn_pat_5 ar8" } } */
126 /* { dg-final { scan-assembler "fn:fn_pat_5 tu7" } } */
127 
128 #pragma GCC reset_options
129 
130 /**
131  ** tune and arch pragmas
132  **/
133 
134 #pragma GCC target ("tune=z9-109,arch=z9-ec")
135 
fn_pta_1(void)136 void fn_pta_1 (void) { }
137 /* { dg-final { scan-assembler "fn:fn_pta_1 ar5" } } */
138 /* { dg-final { scan-assembler "fn:fn_pta_1 tu4" } } */
139 
140 __attribute__ ((target("arch=zEC12")))
fn_pta_2(void)141 void fn_pta_2 (void) { }
142 /* { dg-final { scan-assembler "fn:fn_pta_2 ar8" } } */
143 /* { dg-final { scan-assembler "fn:fn_pta_2 tu4" } } */
144 
145 __attribute__ ((target("tune=z196")))
fn_pta_3(void)146 void fn_pta_3 (void) { }
147 /* { dg-final { scan-assembler "fn:fn_pta_3 ar5" } } */
148 /* { dg-final { scan-assembler "fn:fn_pta_3 tu7" } } */
149 
150 __attribute__ ((target("arch=zEC12,tune=z196")))
fn_pta_4(void)151 void fn_pta_4 (void) { }
152 /* { dg-final { scan-assembler "fn:fn_pta_4 ar8" } } */
153 /* { dg-final { scan-assembler "fn:fn_pta_4 tu7" } } */
154 
155 __attribute__ ((target("tune=z196,arch=zEC12")))
fn_pta_5(void)156 void fn_pta_5 (void) { }
157 /* { dg-final { scan-assembler "fn:fn_pta_5 ar8" } } */
158 /* { dg-final { scan-assembler "fn:fn_pta_5 tu7" } } */
159 
160 #pragma GCC reset_options
161