summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch265
1 files changed, 265 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch b/meta/recipes-devtools/gcc/gcc-4.3.3/gcc-release-branch/PR-36500-fix-neon.patch
new file mode 100644
index 0000000000..971dfe7e29
--- /dev/null
+++ b/meta/recipes-devtools/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. */