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