diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2009-05-22 09:42:20 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2009-05-22 09:42:20 +0100 |
commit | e6a3149428ef2d42d9a9df78a19c2e52496f3deb (patch) | |
tree | 368294cd96f741990717234a6819cc60c1b413f6 /meta/packages/gcc/gcc-4.3.3/gcc-release-branch | |
parent | f887fcd665505453412a9f2e2508404e6ec4eea8 (diff) | |
download | poky-e6a3149428ef2d42d9a9df78a19c2e52496f3deb.tar.gz |
gcc: Add 4.3.3 and switch to for Moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/packages/gcc/gcc-4.3.3/gcc-release-branch')
-rw-r--r-- | meta/packages/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch b/meta/packages/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch new file mode 100644 index 0000000000..971dfe7e29 --- /dev/null +++ b/meta/packages/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch | |||
@@ -0,0 +1,265 @@ | |||
1 | --- foo/gcc/config/arm/arm.c 2008/06/11 10:51:34 136660 | ||
2 | +++ foo/gcc/config/arm/arm.c 2008/06/11 10:52:55 136661 | ||
3 | @@ -14830,124 +14830,190 @@ | ||
4 | { | ||
5 | unsigned int i, fcode = ARM_BUILTIN_NEON_BASE; | ||
6 | |||
7 | + tree neon_intQI_type_node; | ||
8 | + tree neon_intHI_type_node; | ||
9 | + tree neon_polyQI_type_node; | ||
10 | + tree neon_polyHI_type_node; | ||
11 | + tree neon_intSI_type_node; | ||
12 | + tree neon_intDI_type_node; | ||
13 | + tree neon_float_type_node; | ||
14 | + | ||
15 | + tree intQI_pointer_node; | ||
16 | + tree intHI_pointer_node; | ||
17 | + tree intSI_pointer_node; | ||
18 | + tree intDI_pointer_node; | ||
19 | + tree float_pointer_node; | ||
20 | + | ||
21 | + tree const_intQI_node; | ||
22 | + tree const_intHI_node; | ||
23 | + tree const_intSI_node; | ||
24 | + tree const_intDI_node; | ||
25 | + tree const_float_node; | ||
26 | + | ||
27 | + tree const_intQI_pointer_node; | ||
28 | + tree const_intHI_pointer_node; | ||
29 | + tree const_intSI_pointer_node; | ||
30 | + tree const_intDI_pointer_node; | ||
31 | + tree const_float_pointer_node; | ||
32 | + | ||
33 | + tree V8QI_type_node; | ||
34 | + tree V4HI_type_node; | ||
35 | + tree V2SI_type_node; | ||
36 | + tree V2SF_type_node; | ||
37 | + tree V16QI_type_node; | ||
38 | + tree V8HI_type_node; | ||
39 | + tree V4SI_type_node; | ||
40 | + tree V4SF_type_node; | ||
41 | + tree V2DI_type_node; | ||
42 | + | ||
43 | + tree intUQI_type_node; | ||
44 | + tree intUHI_type_node; | ||
45 | + tree intUSI_type_node; | ||
46 | + tree intUDI_type_node; | ||
47 | + | ||
48 | + tree intEI_type_node; | ||
49 | + tree intOI_type_node; | ||
50 | + tree intCI_type_node; | ||
51 | + tree intXI_type_node; | ||
52 | + | ||
53 | + tree V8QI_pointer_node; | ||
54 | + tree V4HI_pointer_node; | ||
55 | + tree V2SI_pointer_node; | ||
56 | + tree V2SF_pointer_node; | ||
57 | + tree V16QI_pointer_node; | ||
58 | + tree V8HI_pointer_node; | ||
59 | + tree V4SI_pointer_node; | ||
60 | + tree V4SF_pointer_node; | ||
61 | + tree V2DI_pointer_node; | ||
62 | + | ||
63 | + tree void_ftype_pv8qi_v8qi_v8qi; | ||
64 | + tree void_ftype_pv4hi_v4hi_v4hi; | ||
65 | + tree void_ftype_pv2si_v2si_v2si; | ||
66 | + tree void_ftype_pv2sf_v2sf_v2sf; | ||
67 | + tree void_ftype_pdi_di_di; | ||
68 | + tree void_ftype_pv16qi_v16qi_v16qi; | ||
69 | + tree void_ftype_pv8hi_v8hi_v8hi; | ||
70 | + tree void_ftype_pv4si_v4si_v4si; | ||
71 | + tree void_ftype_pv4sf_v4sf_v4sf; | ||
72 | + tree void_ftype_pv2di_v2di_v2di; | ||
73 | + | ||
74 | + tree reinterp_ftype_dreg[5][5]; | ||
75 | + tree reinterp_ftype_qreg[5][5]; | ||
76 | + tree dreg_types[5], qreg_types[5]; | ||
77 | + | ||
78 | /* Create distinguished type nodes for NEON vector element types, | ||
79 | and pointers to values of such types, so we can detect them later. */ | ||
80 | - tree neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode)); | ||
81 | - tree neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode)); | ||
82 | - tree neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode)); | ||
83 | - tree neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode)); | ||
84 | - tree neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode)); | ||
85 | - tree neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode)); | ||
86 | - tree neon_float_type_node = make_node (REAL_TYPE); | ||
87 | - | ||
88 | - tree intQI_pointer_node = build_pointer_type (neon_intQI_type_node); | ||
89 | - tree intHI_pointer_node = build_pointer_type (neon_intHI_type_node); | ||
90 | - tree intSI_pointer_node = build_pointer_type (neon_intSI_type_node); | ||
91 | - tree intDI_pointer_node = build_pointer_type (neon_intDI_type_node); | ||
92 | - tree float_pointer_node = build_pointer_type (neon_float_type_node); | ||
93 | + neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode)); | ||
94 | + neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode)); | ||
95 | + neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode)); | ||
96 | + neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode)); | ||
97 | + neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode)); | ||
98 | + neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode)); | ||
99 | + neon_float_type_node = make_node (REAL_TYPE); | ||
100 | + TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE; | ||
101 | + layout_type (neon_float_type_node); | ||
102 | + | ||
103 | + intQI_pointer_node = build_pointer_type (neon_intQI_type_node); | ||
104 | + intHI_pointer_node = build_pointer_type (neon_intHI_type_node); | ||
105 | + intSI_pointer_node = build_pointer_type (neon_intSI_type_node); | ||
106 | + intDI_pointer_node = build_pointer_type (neon_intDI_type_node); | ||
107 | + float_pointer_node = build_pointer_type (neon_float_type_node); | ||
108 | |||
109 | /* Next create constant-qualified versions of the above types. */ | ||
110 | - tree const_intQI_node = build_qualified_type (neon_intQI_type_node, | ||
111 | - TYPE_QUAL_CONST); | ||
112 | - tree const_intHI_node = build_qualified_type (neon_intHI_type_node, | ||
113 | - TYPE_QUAL_CONST); | ||
114 | - tree const_intSI_node = build_qualified_type (neon_intSI_type_node, | ||
115 | - TYPE_QUAL_CONST); | ||
116 | - tree const_intDI_node = build_qualified_type (neon_intDI_type_node, | ||
117 | - TYPE_QUAL_CONST); | ||
118 | - tree const_float_node = build_qualified_type (neon_float_type_node, | ||
119 | - TYPE_QUAL_CONST); | ||
120 | - | ||
121 | - tree const_intQI_pointer_node = build_pointer_type (const_intQI_node); | ||
122 | - tree const_intHI_pointer_node = build_pointer_type (const_intHI_node); | ||
123 | - tree const_intSI_pointer_node = build_pointer_type (const_intSI_node); | ||
124 | - tree const_intDI_pointer_node = build_pointer_type (const_intDI_node); | ||
125 | - tree const_float_pointer_node = build_pointer_type (const_float_node); | ||
126 | + const_intQI_node = build_qualified_type (neon_intQI_type_node, | ||
127 | + TYPE_QUAL_CONST); | ||
128 | + const_intHI_node = build_qualified_type (neon_intHI_type_node, | ||
129 | + TYPE_QUAL_CONST); | ||
130 | + const_intSI_node = build_qualified_type (neon_intSI_type_node, | ||
131 | + TYPE_QUAL_CONST); | ||
132 | + const_intDI_node = build_qualified_type (neon_intDI_type_node, | ||
133 | + TYPE_QUAL_CONST); | ||
134 | + const_float_node = build_qualified_type (neon_float_type_node, | ||
135 | + TYPE_QUAL_CONST); | ||
136 | + | ||
137 | + const_intQI_pointer_node = build_pointer_type (const_intQI_node); | ||
138 | + const_intHI_pointer_node = build_pointer_type (const_intHI_node); | ||
139 | + const_intSI_pointer_node = build_pointer_type (const_intSI_node); | ||
140 | + const_intDI_pointer_node = build_pointer_type (const_intDI_node); | ||
141 | + const_float_pointer_node = build_pointer_type (const_float_node); | ||
142 | |||
143 | /* Now create vector types based on our NEON element types. */ | ||
144 | /* 64-bit vectors. */ | ||
145 | - tree V8QI_type_node = | ||
146 | + V8QI_type_node = | ||
147 | build_vector_type_for_mode (neon_intQI_type_node, V8QImode); | ||
148 | - tree V4HI_type_node = | ||
149 | + V4HI_type_node = | ||
150 | build_vector_type_for_mode (neon_intHI_type_node, V4HImode); | ||
151 | - tree V2SI_type_node = | ||
152 | + V2SI_type_node = | ||
153 | build_vector_type_for_mode (neon_intSI_type_node, V2SImode); | ||
154 | - tree V2SF_type_node = | ||
155 | + V2SF_type_node = | ||
156 | build_vector_type_for_mode (neon_float_type_node, V2SFmode); | ||
157 | /* 128-bit vectors. */ | ||
158 | - tree V16QI_type_node = | ||
159 | + V16QI_type_node = | ||
160 | build_vector_type_for_mode (neon_intQI_type_node, V16QImode); | ||
161 | - tree V8HI_type_node = | ||
162 | + V8HI_type_node = | ||
163 | build_vector_type_for_mode (neon_intHI_type_node, V8HImode); | ||
164 | - tree V4SI_type_node = | ||
165 | + V4SI_type_node = | ||
166 | build_vector_type_for_mode (neon_intSI_type_node, V4SImode); | ||
167 | - tree V4SF_type_node = | ||
168 | + V4SF_type_node = | ||
169 | build_vector_type_for_mode (neon_float_type_node, V4SFmode); | ||
170 | - tree V2DI_type_node = | ||
171 | + V2DI_type_node = | ||
172 | build_vector_type_for_mode (neon_intDI_type_node, V2DImode); | ||
173 | |||
174 | /* Unsigned integer types for various mode sizes. */ | ||
175 | - tree intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode)); | ||
176 | - tree intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode)); | ||
177 | - tree intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode)); | ||
178 | - tree intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode)); | ||
179 | + intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode)); | ||
180 | + intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode)); | ||
181 | + intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode)); | ||
182 | + intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode)); | ||
183 | |||
184 | /* Opaque integer types for structures of vectors. */ | ||
185 | - tree intEI_type_node = make_signed_type (GET_MODE_PRECISION (EImode)); | ||
186 | - tree intOI_type_node = make_signed_type (GET_MODE_PRECISION (OImode)); | ||
187 | - tree intCI_type_node = make_signed_type (GET_MODE_PRECISION (CImode)); | ||
188 | - tree intXI_type_node = make_signed_type (GET_MODE_PRECISION (XImode)); | ||
189 | + intEI_type_node = make_signed_type (GET_MODE_PRECISION (EImode)); | ||
190 | + intOI_type_node = make_signed_type (GET_MODE_PRECISION (OImode)); | ||
191 | + intCI_type_node = make_signed_type (GET_MODE_PRECISION (CImode)); | ||
192 | + intXI_type_node = make_signed_type (GET_MODE_PRECISION (XImode)); | ||
193 | |||
194 | /* Pointers to vector types. */ | ||
195 | - tree V8QI_pointer_node = build_pointer_type (V8QI_type_node); | ||
196 | - tree V4HI_pointer_node = build_pointer_type (V4HI_type_node); | ||
197 | - tree V2SI_pointer_node = build_pointer_type (V2SI_type_node); | ||
198 | - tree V2SF_pointer_node = build_pointer_type (V2SF_type_node); | ||
199 | - tree V16QI_pointer_node = build_pointer_type (V16QI_type_node); | ||
200 | - tree V8HI_pointer_node = build_pointer_type (V8HI_type_node); | ||
201 | - tree V4SI_pointer_node = build_pointer_type (V4SI_type_node); | ||
202 | - tree V4SF_pointer_node = build_pointer_type (V4SF_type_node); | ||
203 | - tree V2DI_pointer_node = build_pointer_type (V2DI_type_node); | ||
204 | + V8QI_pointer_node = build_pointer_type (V8QI_type_node); | ||
205 | + V4HI_pointer_node = build_pointer_type (V4HI_type_node); | ||
206 | + V2SI_pointer_node = build_pointer_type (V2SI_type_node); | ||
207 | + V2SF_pointer_node = build_pointer_type (V2SF_type_node); | ||
208 | + V16QI_pointer_node = build_pointer_type (V16QI_type_node); | ||
209 | + V8HI_pointer_node = build_pointer_type (V8HI_type_node); | ||
210 | + V4SI_pointer_node = build_pointer_type (V4SI_type_node); | ||
211 | + V4SF_pointer_node = build_pointer_type (V4SF_type_node); | ||
212 | + V2DI_pointer_node = build_pointer_type (V2DI_type_node); | ||
213 | |||
214 | /* Operations which return results as pairs. */ | ||
215 | - tree void_ftype_pv8qi_v8qi_v8qi = | ||
216 | + void_ftype_pv8qi_v8qi_v8qi = | ||
217 | build_function_type_list (void_type_node, V8QI_pointer_node, V8QI_type_node, | ||
218 | V8QI_type_node, NULL); | ||
219 | - tree void_ftype_pv4hi_v4hi_v4hi = | ||
220 | + void_ftype_pv4hi_v4hi_v4hi = | ||
221 | build_function_type_list (void_type_node, V4HI_pointer_node, V4HI_type_node, | ||
222 | V4HI_type_node, NULL); | ||
223 | - tree void_ftype_pv2si_v2si_v2si = | ||
224 | + void_ftype_pv2si_v2si_v2si = | ||
225 | build_function_type_list (void_type_node, V2SI_pointer_node, V2SI_type_node, | ||
226 | V2SI_type_node, NULL); | ||
227 | - tree void_ftype_pv2sf_v2sf_v2sf = | ||
228 | + void_ftype_pv2sf_v2sf_v2sf = | ||
229 | build_function_type_list (void_type_node, V2SF_pointer_node, V2SF_type_node, | ||
230 | V2SF_type_node, NULL); | ||
231 | - tree void_ftype_pdi_di_di = | ||
232 | + void_ftype_pdi_di_di = | ||
233 | build_function_type_list (void_type_node, intDI_pointer_node, | ||
234 | neon_intDI_type_node, neon_intDI_type_node, NULL); | ||
235 | - tree void_ftype_pv16qi_v16qi_v16qi = | ||
236 | + void_ftype_pv16qi_v16qi_v16qi = | ||
237 | build_function_type_list (void_type_node, V16QI_pointer_node, | ||
238 | V16QI_type_node, V16QI_type_node, NULL); | ||
239 | - tree void_ftype_pv8hi_v8hi_v8hi = | ||
240 | + void_ftype_pv8hi_v8hi_v8hi = | ||
241 | build_function_type_list (void_type_node, V8HI_pointer_node, V8HI_type_node, | ||
242 | V8HI_type_node, NULL); | ||
243 | - tree void_ftype_pv4si_v4si_v4si = | ||
244 | + void_ftype_pv4si_v4si_v4si = | ||
245 | build_function_type_list (void_type_node, V4SI_pointer_node, V4SI_type_node, | ||
246 | V4SI_type_node, NULL); | ||
247 | - tree void_ftype_pv4sf_v4sf_v4sf = | ||
248 | + void_ftype_pv4sf_v4sf_v4sf = | ||
249 | build_function_type_list (void_type_node, V4SF_pointer_node, V4SF_type_node, | ||
250 | V4SF_type_node, NULL); | ||
251 | - tree void_ftype_pv2di_v2di_v2di = | ||
252 | + void_ftype_pv2di_v2di_v2di = | ||
253 | build_function_type_list (void_type_node, V2DI_pointer_node, V2DI_type_node, | ||
254 | V2DI_type_node, NULL); | ||
255 | |||
256 | - tree reinterp_ftype_dreg[5][5]; | ||
257 | - tree reinterp_ftype_qreg[5][5]; | ||
258 | - tree dreg_types[5], qreg_types[5]; | ||
259 | - | ||
260 | - TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE; | ||
261 | - layout_type (neon_float_type_node); | ||
262 | - | ||
263 | /* Define typedefs which exactly correspond to the modes we are basing vector | ||
264 | types on. If you change these names you'll need to change | ||
265 | the table used by arm_mangle_type too. */ | ||