Daily bump.
[official-gcc.git] / gcc / ChangeLog
blob165f9f4853c2f2ba0dc0d8b283d66620bd40ae2d
1 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
3         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
4         (vcmlaq_rot180, vcmlaq_rot270): New.
5         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
6         (vcmlaq_rot180, vcmlaq_rot270): New.
7         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
8         (vcmlaq_rot180, vcmlaq_rot270): New.
9         * config/arm/arm-mve-builtins.cc
10         (function_instance::has_inactive_argument): Handle vcmlaq,
11         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
12         * config/arm/arm_mve.h (vcmlaq): Delete.
13         (vcmlaq_rot180): Delete.
14         (vcmlaq_rot270): Delete.
15         (vcmlaq_rot90): Delete.
16         (vcmlaq_m): Delete.
17         (vcmlaq_rot180_m): Delete.
18         (vcmlaq_rot270_m): Delete.
19         (vcmlaq_rot90_m): Delete.
20         (vcmlaq_f16): Delete.
21         (vcmlaq_rot180_f16): Delete.
22         (vcmlaq_rot270_f16): Delete.
23         (vcmlaq_rot90_f16): Delete.
24         (vcmlaq_f32): Delete.
25         (vcmlaq_rot180_f32): Delete.
26         (vcmlaq_rot270_f32): Delete.
27         (vcmlaq_rot90_f32): Delete.
28         (vcmlaq_m_f32): Delete.
29         (vcmlaq_m_f16): Delete.
30         (vcmlaq_rot180_m_f32): Delete.
31         (vcmlaq_rot180_m_f16): Delete.
32         (vcmlaq_rot270_m_f32): Delete.
33         (vcmlaq_rot270_m_f16): Delete.
34         (vcmlaq_rot90_m_f32): Delete.
35         (vcmlaq_rot90_m_f16): Delete.
36         (__arm_vcmlaq_f16): Delete.
37         (__arm_vcmlaq_rot180_f16): Delete.
38         (__arm_vcmlaq_rot270_f16): Delete.
39         (__arm_vcmlaq_rot90_f16): Delete.
40         (__arm_vcmlaq_f32): Delete.
41         (__arm_vcmlaq_rot180_f32): Delete.
42         (__arm_vcmlaq_rot270_f32): Delete.
43         (__arm_vcmlaq_rot90_f32): Delete.
44         (__arm_vcmlaq_m_f32): Delete.
45         (__arm_vcmlaq_m_f16): Delete.
46         (__arm_vcmlaq_rot180_m_f32): Delete.
47         (__arm_vcmlaq_rot180_m_f16): Delete.
48         (__arm_vcmlaq_rot270_m_f32): Delete.
49         (__arm_vcmlaq_rot270_m_f16): Delete.
50         (__arm_vcmlaq_rot90_m_f32): Delete.
51         (__arm_vcmlaq_rot90_m_f16): Delete.
52         (__arm_vcmlaq): Delete.
53         (__arm_vcmlaq_rot180): Delete.
54         (__arm_vcmlaq_rot270): Delete.
55         (__arm_vcmlaq_rot90): Delete.
56         (__arm_vcmlaq_m): Delete.
57         (__arm_vcmlaq_rot180_m): Delete.
58         (__arm_vcmlaq_rot270_m): Delete.
59         (__arm_vcmlaq_rot90_m): Delete.
61 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
63         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
64         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
65         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
66         (mve_insn): Add vcmla.
67         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
68         VCMLAQ_ROT270_M_F.
69         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
70         VCMLAQ_ROT270_M_F.
71         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
72         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
73         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
74         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
75         into ...
76         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
78 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
80         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
81         (vcmulq_rot180, vcmulq_rot270): New.
82         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
83         (vcmulq_rot180, vcmulq_rot270): New.
84         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
85         (vcmulq_rot180, vcmulq_rot270): New.
86         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
87         (vcmulq_rot270): Delete.
88         (vcmulq_rot180): Delete.
89         (vcmulq): Delete.
90         (vcmulq_m): Delete.
91         (vcmulq_rot180_m): Delete.
92         (vcmulq_rot270_m): Delete.
93         (vcmulq_rot90_m): Delete.
94         (vcmulq_x): Delete.
95         (vcmulq_rot90_x): Delete.
96         (vcmulq_rot180_x): Delete.
97         (vcmulq_rot270_x): Delete.
98         (vcmulq_rot90_f16): Delete.
99         (vcmulq_rot270_f16): Delete.
100         (vcmulq_rot180_f16): Delete.
101         (vcmulq_f16): Delete.
102         (vcmulq_rot90_f32): Delete.
103         (vcmulq_rot270_f32): Delete.
104         (vcmulq_rot180_f32): Delete.
105         (vcmulq_f32): Delete.
106         (vcmulq_m_f32): Delete.
107         (vcmulq_m_f16): Delete.
108         (vcmulq_rot180_m_f32): Delete.
109         (vcmulq_rot180_m_f16): Delete.
110         (vcmulq_rot270_m_f32): Delete.
111         (vcmulq_rot270_m_f16): Delete.
112         (vcmulq_rot90_m_f32): Delete.
113         (vcmulq_rot90_m_f16): Delete.
114         (vcmulq_x_f16): Delete.
115         (vcmulq_x_f32): Delete.
116         (vcmulq_rot90_x_f16): Delete.
117         (vcmulq_rot90_x_f32): Delete.
118         (vcmulq_rot180_x_f16): Delete.
119         (vcmulq_rot180_x_f32): Delete.
120         (vcmulq_rot270_x_f16): Delete.
121         (vcmulq_rot270_x_f32): Delete.
122         (__arm_vcmulq_rot90_f16): Delete.
123         (__arm_vcmulq_rot270_f16): Delete.
124         (__arm_vcmulq_rot180_f16): Delete.
125         (__arm_vcmulq_f16): Delete.
126         (__arm_vcmulq_rot90_f32): Delete.
127         (__arm_vcmulq_rot270_f32): Delete.
128         (__arm_vcmulq_rot180_f32): Delete.
129         (__arm_vcmulq_f32): Delete.
130         (__arm_vcmulq_m_f32): Delete.
131         (__arm_vcmulq_m_f16): Delete.
132         (__arm_vcmulq_rot180_m_f32): Delete.
133         (__arm_vcmulq_rot180_m_f16): Delete.
134         (__arm_vcmulq_rot270_m_f32): Delete.
135         (__arm_vcmulq_rot270_m_f16): Delete.
136         (__arm_vcmulq_rot90_m_f32): Delete.
137         (__arm_vcmulq_rot90_m_f16): Delete.
138         (__arm_vcmulq_x_f16): Delete.
139         (__arm_vcmulq_x_f32): Delete.
140         (__arm_vcmulq_rot90_x_f16): Delete.
141         (__arm_vcmulq_rot90_x_f32): Delete.
142         (__arm_vcmulq_rot180_x_f16): Delete.
143         (__arm_vcmulq_rot180_x_f32): Delete.
144         (__arm_vcmulq_rot270_x_f16): Delete.
145         (__arm_vcmulq_rot270_x_f32): Delete.
146         (__arm_vcmulq_rot90): Delete.
147         (__arm_vcmulq_rot270): Delete.
148         (__arm_vcmulq_rot180): Delete.
149         (__arm_vcmulq): Delete.
150         (__arm_vcmulq_m): Delete.
151         (__arm_vcmulq_rot180_m): Delete.
152         (__arm_vcmulq_rot270_m): Delete.
153         (__arm_vcmulq_rot90_m): Delete.
154         (__arm_vcmulq_x): Delete.
155         (__arm_vcmulq_rot90_x): Delete.
156         (__arm_vcmulq_rot180_x): Delete.
157         (__arm_vcmulq_rot270_x): Delete.
159 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
161         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
162         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
163         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
164         (MVE_VCADDQ_VCMULQ_M): New.
165         (mve_insn): Add vcmul.
166         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
167         VCMULQ_ROT270_M_F.
168         (VCMUL): Delete.
169         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
170         VCMULQ_ROT270_M_F.
171         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
172         @mve_<mve_insn>q<mve_rot>_f<mode>.
173         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
174         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
175         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
177 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
179         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
180         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
181         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
182         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
183         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
184         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
185         * config/arm/arm-mve-builtins-functions.h (class
186         unspec_mve_function_exact_insn_rot): New.
187         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
188         (vcaddq_rot270): Delete.
189         (vhcaddq_rot90): Delete.
190         (vhcaddq_rot270): Delete.
191         (vcaddq_rot270_m): Delete.
192         (vcaddq_rot90_m): Delete.
193         (vhcaddq_rot270_m): Delete.
194         (vhcaddq_rot90_m): Delete.
195         (vcaddq_rot90_x): Delete.
196         (vcaddq_rot270_x): Delete.
197         (vhcaddq_rot90_x): Delete.
198         (vhcaddq_rot270_x): Delete.
199         (vcaddq_rot90_u8): Delete.
200         (vcaddq_rot270_u8): Delete.
201         (vhcaddq_rot90_s8): Delete.
202         (vhcaddq_rot270_s8): Delete.
203         (vcaddq_rot90_s8): Delete.
204         (vcaddq_rot270_s8): Delete.
205         (vcaddq_rot90_u16): Delete.
206         (vcaddq_rot270_u16): Delete.
207         (vhcaddq_rot90_s16): Delete.
208         (vhcaddq_rot270_s16): Delete.
209         (vcaddq_rot90_s16): Delete.
210         (vcaddq_rot270_s16): Delete.
211         (vcaddq_rot90_u32): Delete.
212         (vcaddq_rot270_u32): Delete.
213         (vhcaddq_rot90_s32): Delete.
214         (vhcaddq_rot270_s32): Delete.
215         (vcaddq_rot90_s32): Delete.
216         (vcaddq_rot270_s32): Delete.
217         (vcaddq_rot90_f16): Delete.
218         (vcaddq_rot270_f16): Delete.
219         (vcaddq_rot90_f32): Delete.
220         (vcaddq_rot270_f32): Delete.
221         (vcaddq_rot270_m_s8): Delete.
222         (vcaddq_rot270_m_s32): Delete.
223         (vcaddq_rot270_m_s16): Delete.
224         (vcaddq_rot270_m_u8): Delete.
225         (vcaddq_rot270_m_u32): Delete.
226         (vcaddq_rot270_m_u16): Delete.
227         (vcaddq_rot90_m_s8): Delete.
228         (vcaddq_rot90_m_s32): Delete.
229         (vcaddq_rot90_m_s16): Delete.
230         (vcaddq_rot90_m_u8): Delete.
231         (vcaddq_rot90_m_u32): Delete.
232         (vcaddq_rot90_m_u16): Delete.
233         (vhcaddq_rot270_m_s8): Delete.
234         (vhcaddq_rot270_m_s32): Delete.
235         (vhcaddq_rot270_m_s16): Delete.
236         (vhcaddq_rot90_m_s8): Delete.
237         (vhcaddq_rot90_m_s32): Delete.
238         (vhcaddq_rot90_m_s16): Delete.
239         (vcaddq_rot270_m_f32): Delete.
240         (vcaddq_rot270_m_f16): Delete.
241         (vcaddq_rot90_m_f32): Delete.
242         (vcaddq_rot90_m_f16): Delete.
243         (vcaddq_rot90_x_s8): Delete.
244         (vcaddq_rot90_x_s16): Delete.
245         (vcaddq_rot90_x_s32): Delete.
246         (vcaddq_rot90_x_u8): Delete.
247         (vcaddq_rot90_x_u16): Delete.
248         (vcaddq_rot90_x_u32): Delete.
249         (vcaddq_rot270_x_s8): Delete.
250         (vcaddq_rot270_x_s16): Delete.
251         (vcaddq_rot270_x_s32): Delete.
252         (vcaddq_rot270_x_u8): Delete.
253         (vcaddq_rot270_x_u16): Delete.
254         (vcaddq_rot270_x_u32): Delete.
255         (vhcaddq_rot90_x_s8): Delete.
256         (vhcaddq_rot90_x_s16): Delete.
257         (vhcaddq_rot90_x_s32): Delete.
258         (vhcaddq_rot270_x_s8): Delete.
259         (vhcaddq_rot270_x_s16): Delete.
260         (vhcaddq_rot270_x_s32): Delete.
261         (vcaddq_rot90_x_f16): Delete.
262         (vcaddq_rot90_x_f32): Delete.
263         (vcaddq_rot270_x_f16): Delete.
264         (vcaddq_rot270_x_f32): Delete.
265         (__arm_vcaddq_rot90_u8): Delete.
266         (__arm_vcaddq_rot270_u8): Delete.
267         (__arm_vhcaddq_rot90_s8): Delete.
268         (__arm_vhcaddq_rot270_s8): Delete.
269         (__arm_vcaddq_rot90_s8): Delete.
270         (__arm_vcaddq_rot270_s8): Delete.
271         (__arm_vcaddq_rot90_u16): Delete.
272         (__arm_vcaddq_rot270_u16): Delete.
273         (__arm_vhcaddq_rot90_s16): Delete.
274         (__arm_vhcaddq_rot270_s16): Delete.
275         (__arm_vcaddq_rot90_s16): Delete.
276         (__arm_vcaddq_rot270_s16): Delete.
277         (__arm_vcaddq_rot90_u32): Delete.
278         (__arm_vcaddq_rot270_u32): Delete.
279         (__arm_vhcaddq_rot90_s32): Delete.
280         (__arm_vhcaddq_rot270_s32): Delete.
281         (__arm_vcaddq_rot90_s32): Delete.
282         (__arm_vcaddq_rot270_s32): Delete.
283         (__arm_vcaddq_rot270_m_s8): Delete.
284         (__arm_vcaddq_rot270_m_s32): Delete.
285         (__arm_vcaddq_rot270_m_s16): Delete.
286         (__arm_vcaddq_rot270_m_u8): Delete.
287         (__arm_vcaddq_rot270_m_u32): Delete.
288         (__arm_vcaddq_rot270_m_u16): Delete.
289         (__arm_vcaddq_rot90_m_s8): Delete.
290         (__arm_vcaddq_rot90_m_s32): Delete.
291         (__arm_vcaddq_rot90_m_s16): Delete.
292         (__arm_vcaddq_rot90_m_u8): Delete.
293         (__arm_vcaddq_rot90_m_u32): Delete.
294         (__arm_vcaddq_rot90_m_u16): Delete.
295         (__arm_vhcaddq_rot270_m_s8): Delete.
296         (__arm_vhcaddq_rot270_m_s32): Delete.
297         (__arm_vhcaddq_rot270_m_s16): Delete.
298         (__arm_vhcaddq_rot90_m_s8): Delete.
299         (__arm_vhcaddq_rot90_m_s32): Delete.
300         (__arm_vhcaddq_rot90_m_s16): Delete.
301         (__arm_vcaddq_rot90_x_s8): Delete.
302         (__arm_vcaddq_rot90_x_s16): Delete.
303         (__arm_vcaddq_rot90_x_s32): Delete.
304         (__arm_vcaddq_rot90_x_u8): Delete.
305         (__arm_vcaddq_rot90_x_u16): Delete.
306         (__arm_vcaddq_rot90_x_u32): Delete.
307         (__arm_vcaddq_rot270_x_s8): Delete.
308         (__arm_vcaddq_rot270_x_s16): Delete.
309         (__arm_vcaddq_rot270_x_s32): Delete.
310         (__arm_vcaddq_rot270_x_u8): Delete.
311         (__arm_vcaddq_rot270_x_u16): Delete.
312         (__arm_vcaddq_rot270_x_u32): Delete.
313         (__arm_vhcaddq_rot90_x_s8): Delete.
314         (__arm_vhcaddq_rot90_x_s16): Delete.
315         (__arm_vhcaddq_rot90_x_s32): Delete.
316         (__arm_vhcaddq_rot270_x_s8): Delete.
317         (__arm_vhcaddq_rot270_x_s16): Delete.
318         (__arm_vhcaddq_rot270_x_s32): Delete.
319         (__arm_vcaddq_rot90_f16): Delete.
320         (__arm_vcaddq_rot270_f16): Delete.
321         (__arm_vcaddq_rot90_f32): Delete.
322         (__arm_vcaddq_rot270_f32): Delete.
323         (__arm_vcaddq_rot270_m_f32): Delete.
324         (__arm_vcaddq_rot270_m_f16): Delete.
325         (__arm_vcaddq_rot90_m_f32): Delete.
326         (__arm_vcaddq_rot90_m_f16): Delete.
327         (__arm_vcaddq_rot90_x_f16): Delete.
328         (__arm_vcaddq_rot90_x_f32): Delete.
329         (__arm_vcaddq_rot270_x_f16): Delete.
330         (__arm_vcaddq_rot270_x_f32): Delete.
331         (__arm_vcaddq_rot90): Delete.
332         (__arm_vcaddq_rot270): Delete.
333         (__arm_vhcaddq_rot90): Delete.
334         (__arm_vhcaddq_rot270): Delete.
335         (__arm_vcaddq_rot270_m): Delete.
336         (__arm_vcaddq_rot90_m): Delete.
337         (__arm_vhcaddq_rot270_m): Delete.
338         (__arm_vhcaddq_rot90_m): Delete.
339         (__arm_vcaddq_rot90_x): Delete.
340         (__arm_vcaddq_rot270_x): Delete.
341         (__arm_vhcaddq_rot90_x): Delete.
342         (__arm_vhcaddq_rot270_x): Delete.
344 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
346         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
347         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
348         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
349         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
350         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
351         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
352         VHCADDQ_ROT270_S.
353         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
354         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
355         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
356         VHCADDQ_ROT270_M_S.
357         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
358         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
359         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
360         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
361         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
362         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
363         UNSPEC_VCADD270.
364         (VCADDQ_ROT270_M): Delete.
365         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
366         (VCADDQ_ROT90_M): Delete.
367         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
368         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
369         into ...
370         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
371         (mve_vcaddq<mve_rot><mode>): Rename into ...
372         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
373         (mve_vcaddq_rot270_m_<supf><mode>)
374         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
375         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
376         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
377         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
378         into ...
379         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
381 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
383         PR target/110588
384         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
385         preparation statement over braces for a single statement.
386         (*bt<mode>_setncqi): Likewise.
387         (*bt<mode>_setncqi_2): New define_insn_and_split.
389 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
391         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
392         case inserting of 64-bit values into a TImode register, to handle
393         both DImode and DFmode using either *insvti_lowpart_1
394         or *isnvti_highpart_1.
396 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
398         PR target/110206
399         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
400         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
401         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
402         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
403         when the original source contains a paradoxical subreg.
405 2023-07-14  Jan Hubicka  <jh@suse.cz>
407         * passes.cc (execute_function_todo): Remove
408         TODO_rebuild_frequencies
409         * passes.def: Add rebuild_frequencies pass.
410         * predict.cc (estimate_bb_frequencies): Drop
411         force parameter.
412         (tree_estimate_probability): Update call of
413         estimate_bb_frequencies.
414         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
415         first and do not rebuild if not necessary.
416         (class pass_rebuild_frequencies): New.
417         (make_pass_rebuild_frequencies): New.
418         * profile-count.h: Add profile_count::very_large_p.
419         * tree-inline.cc (optimize_inline_calls): Do not return
420         TODO_rebuild_frequencies
421         * tree-pass.h (TODO_rebuild_frequencies): Remove.
422         (make_pass_rebuild_frequencies): Declare.
424 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
426         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
427         * config/riscv/riscv-protos.h (enum insn_type): New enum.
428         (expand_cond_len_ternop): New function.
429         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
430         (expand_cond_len_ternop): Ditto.
432 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
434         PR target/110657
435         * config/bpf/bpf.md: Enable instruction scheduling.
437 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
439         PR tree-optimization/109154
440         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
441         (struct bb_predicate): Add no_predicate_stmts.
442         (set_bb_predicate): Increase predicate count.
443         (set_bb_predicate_gimplified_stmts): Conditionally initialize
444         no_predicate_stmts.
445         (get_bb_num_predicate_stmts): New.
446         (init_bb_predicate): Initialzie no_predicate_stmts.
447         (release_bb_predicate): Cleanup no_predicate_stmts.
448         (insert_gimplified_predicates): Preserve no_predicate_stmts.
450 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
452         PR tree-optimization/109154
453         * tree-if-conv.cc (gen_simplified_condition,
454         gen_phi_nest_statement): New.
455         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
457 2023-07-14  Richard Biener  <rguenther@suse.de>
459         * gimple.h (gimple_phi_arg): New const overload.
460         (gimple_phi_arg_def): Make gimple arg const.
461         (gimple_phi_arg_def_from_edge): New inline function.
462         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
463         Likewise.
464         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
465         new inline function.
466         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
468 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
470         * common/config/riscv/riscv-common.cc:
471         (riscv_implied_info): Add zihintntl item.
472         (riscv_ext_version_table): Ditto.
473         (riscv_ext_flag_table): Ditto.
474         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
475         (TARGET_ZIHINTNTL): Ditto.
477 2023-07-14  Die Li  <lidie@eswincomputing.com>
479         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
481 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
483         PR target/101469
484         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
485         used by the address of the following memory operand.
487 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
489         PR target/107841
490         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
491         deallocate alloca-only frame.
493 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
495         PR target/110624
496         * config/darwin.h (DARWIN_PLATFORM_ID): New.
497         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
498         and SDK data to the static linker.
500 2023-07-13  Carl Love  <cel@us.ibm.com>
502         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
503         built-in definition return type.
504         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
505         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
506         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
507         argument to return FPSCR fields.
508         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
509         the return value.  Add description for
510         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
512 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
514         PR target/106966
515         * config/alpha/alpha.cc (alpha_emit_set_long_const):
516         Always use DImode when constructing long const.
518 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
520         * haifa-sched.cc: Change TRUE/FALSE to true/false.
521         * ira.cc: Ditto.
522         * lra-assigns.cc: Ditto.
523         * lra-constraints.cc: Ditto.
524         * sel-sched.cc: Ditto.
526 2023-07-13  Andrew Pinski  <apinski@marvell.com>
528         PR tree-optimization/110293
529         PR tree-optimization/110539
530         * match.pd: Expand the `x != (typeof x)(x == 0)`
531         pattern to handle where the inner and outer comparsions
532         are either `!=` or `==` and handle other constants
533         than 0.
535 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
537         PR middle-end/109520
538         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
539         (lra_asm_insn_error): New prototype.
540         * lra.cc: Include rtl_error.h.
541         (lra_set_insn_recog_data): Initialize asm_reloads_num.
542         (lra_asm_insn_error): New func whose code is taken from ...
543         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
544         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
546 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
548         * genmatch.cc (commutative_op): Add COND_LEN_*
549         * internal-fn.cc (first_commutative_argument): Ditto.
550         (CASE): Ditto.
551         (get_unconditional_internal_fn): Ditto.
552         (can_interpret_as_conditional_op_p): Ditto.
553         (internal_fn_len_index): Ditto.
554         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
555         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
556         (convert_mult_to_fma): Ditto.
557         (math_opts_dom_walker::after_dom_children): Ditto.
559 2023-07-13  Pan Li  <pan2.li@intel.com>
561         * config/riscv/riscv.cc (vxrm_rtx): New static var.
562         (frm_rtx): Ditto.
563         (global_state_unknown_p): Removed.
564         (riscv_entity_mode_after): Removed.
565         (asm_insn_p): New function.
566         (vxrm_unknown_p): New function for fixed-point.
567         (riscv_vxrm_mode_after): Ditto.
568         (frm_unknown_dynamic_p): New function for floating-point.
569         (riscv_frm_mode_after): Ditto.
570         (riscv_mode_after): Leverage new functions.
572 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
574         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
575         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
576         calling vect_model_load_cost.
578 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
580         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
581         handle memory_access_type VMAT_CONTIGUOUS, remove some
582         VMAT_CONTIGUOUS_PERMUTE related handlings.
583         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
584         without calling vect_model_load_cost.
586 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
588         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
589         VMAT_CONTIGUOUS_REVERSE any more.
590         (vectorizable_load): Adjust the costing handling on
591         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
593 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
595         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
596         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
597         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
598         assert it will never get VMAT_LOAD_STORE_LANES.
600 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
602         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
603         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
604         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
605         remove VMAT_GATHER_SCATTER related handlings and the related parameter
606         gs_info.
608 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
610         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
611         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
612         vect_model_load_cost.
613         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
614         VMAT_STRIDED_SLP any more, and remove their related handlings.
616 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
618         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
619         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
620         hoisting decision and without calling vect_model_load_cost.
621         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
622         and remove VMAT_INVARIANT related handlings.
624 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
626         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
627         on costing with one extra argument cost_vec.
628         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
629         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
630         gs_info.decl set any more.
632 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
634         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
635         to vect_model_load_cost down to some different transform paths
636         according to the handlings of different vect_memory_access_types.
638 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
640         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
642 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
644         * config/riscv/autovec.md
645         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
646         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
647         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
648         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
649         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
650         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
651         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
652         (len_mask_gather_load<mode><mode>): Ditto.
653         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
654         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
655         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
656         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
657         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
658         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
659         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
660         (len_mask_scatter_store<mode><mode>): Ditto.
661         * config/riscv/predicates.md (const_1_operand): New predicate.
662         (vector_gs_scale_operand_16): Ditto.
663         (vector_gs_scale_operand_32): Ditto.
664         (vector_gs_scale_operand_64): Ditto.
665         (vector_gs_extension_operand): Ditto.
666         (vector_gs_scale_operand_16_rv32): Ditto.
667         (vector_gs_scale_operand_32_rv32): Ditto.
668         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
669         (expand_gather_scatter): New function.
670         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
671         (emit_vlmax_masked_store_insn): New function.
672         (emit_nonvlmax_masked_store_insn): Ditto.
673         (modulo_sel_indices): Ditto.
674         (expand_vec_perm): Fix SLP for gather/scatter.
675         (prepare_gather_scatter): New function.
676         (expand_gather_scatter): Ditto.
677         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
678         (subreg:SI (DI CONST_POLY_INT)).
679         * config/riscv/vector-iterators.md: Add gather/scatter.
680         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
681         (@vec_duplicate<mode>): Ditto.
682         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
683         Fix name.
684         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
686 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
688         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
689         * config/riscv/riscv-protos.h (enum insn_type): New enum.
690         (expand_cond_len_binop): New function.
691         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
692         (emit_nonvlmax_fp_tu_insn): Ditto.
693         (need_fp_rounding_p): Ditto.
694         (expand_cond_len_binop): Ditto.
695         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
696         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
698 2023-07-12  Jan Hubicka  <jh@suse.cz>
700         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
701         (gimple_duplicate_seme_region): ... this; break out profile updating
702         code to ...
703         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
704         (ch_base::copy_headers): Update.
705         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
706         (gimple_duplicate_seme_region): ... this.
708 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
710         PR tree-optimization/107043
711         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
713 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
715         PR tree-optimization/107053
716         * gimple-range-op.cc (cfn_popcount): Use known set bits.
718 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
720         * ira.cc (equiv_init_varies_p): Change return type from int to bool
721         and adjust function body accordingly.
722         (equiv_init_movable_p): Ditto.
723         (memref_used_between_p): Ditto.
724         * lra-constraints.cc (valid_address_p): Ditto.
726 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
728         * range-op.cc (irange_to_masked_value): Remove.
729         (update_known_bitmask): Update irange value/mask pair instead of
730         only updating nonzero bits.
732 2023-07-12  Jan Hubicka  <jh@suse.cz>
734         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
735         parameter and rewrite profile updating code to handle edges elimination.
736         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
737         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
738         (loop_iv_derived_p): New function.
739         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
740         of PHIs and propagation of IV derived variables.
741         (ch_base::copy_headers): Pass around the invariant edges hash set.
743 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
745         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
746         (last_active_insn): Change "skip_use_p" function argument to bool.
747         (noce_operand_ok): Change return type from int to bool.
748         (find_cond_trap): Ditto.
749         (block_jumps_and_fallthru_p): Change "fallthru_p" and
750         "jump_p" variables to bool.
751         (noce_find_if_block): Change return type from int to bool.
752         (cond_exec_find_if_block): Ditto.
753         (find_if_case_1): Ditto.
754         (find_if_case_2): Ditto.
755         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
756         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
757         (cond_exec_process_insns): Change return type from int to bool.
758         Change "mod_ok" function arg to bool.
759         (cond_exec_process_if_block): Change return type from int to bool.
760         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
761         variable to bool.
762         (noce_emit_store_flag): Change return type from int to bool.
763         Change "reversep" function arg to bool.  Change "cond_complex"
764         variable to bool.
765         (noce_try_move): Change return type from int to bool.
766         (noce_try_ifelse_collapse): Ditto.
767         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
768         (noce_try_addcc): Change return type from int to bool.  Change
769         "subtract" variable to bool.
770         (noce_try_store_flag_constants): Change return type from int to bool.
771         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
772         (noce_try_cmove): Change return type from int to bool.
773         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
774         (noce_try_minmax): Change return type from int to bool.  Change
775         "unsignedp" variable to bool.
776         (noce_try_abs): Change return type from int to bool.  Change
777         "negate" variable to bool.
778         (noce_try_sign_mask): Change return type from int to bool.
779         (noce_try_move): Ditto.
780         (noce_try_store_flag_constants): Ditto.
781         (noce_try_cmove): Ditto.
782         (noce_try_cmove_arith): Ditto.
783         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
784         (noce_try_bitop): Change return type from int to bool.
785         (noce_operand_ok): Ditto.
786         (noce_convert_multiple_sets): Ditto.
787         (noce_convert_multiple_sets_1): Ditto.
788         (noce_process_if_block): Ditto.
789         (check_cond_move_block): Ditto.
790         (cond_move_process_if_block): Ditto. Change "success_p"
791         variable to bool.
792         (rest_of_handle_if_conversion): Change return type to void.
794 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
796         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
797         (CASE): Ditto.
798         (get_conditional_len_internal_fn): New function.
799         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
800         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
801         support.
803 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
805         PR target/91681
806         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
808 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
810         PR target/91681
811         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
812         define_insn_and_split derived from *add<dwi>3_doubleword_concat
813         and *add<dwi>3_doubleword_zext.
815 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
817         PR target/110598
818         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
819         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
820         (peephole2): Simplify rega = 0; rega op= rega cases.
822 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
824         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
825         testing a TImode SUBREG of a 128-bit vector register against
826         zero, use a PTEST instruction instead of first moving it to
827         a pair of scalar registers.
829 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
831         * genopinit.cc (main): Adjust maximal number of optabs and
832         machine modes.
833         * gensupport.cc (find_optab): Shift optab by 20 and mode by
834         10 bits.
835         * optabs-query.h (optab_handler): Ditto.
836         (convert_optab_handler): Ditto.
838 2023-07-12  Richard Biener  <rguenther@suse.de>
840         PR tree-optimization/110630
841         * tree-vect-slp.cc (vect_add_slp_permutation): New
842         offset parameter, honor that for the extract code generation.
843         (vectorizable_slp_permutation_1): Handle offsetted identities.
845 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
847         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
848         (umul<mode>3_highpart): Ditto.
850 2023-07-12  Jan Beulich  <jbeulich@suse.com>
852         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
853         alternative. Adjust original last alternative's "prefix"
854         attribute to maybe_evex.
856 2023-07-12  Jan Beulich  <jbeulich@suse.com>
858         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
859         vbroadcastss for AVX2. New AVX512F alternative.
860         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
861         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
863 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
865         * config/riscv/peephole.md: Remove XThead* peephole passes.
866         * config/riscv/thead.md: Include thead-peephole.md.
867         * config/riscv/thead-peephole.md: New file.
869 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
871         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
872         New prototype.
873         (riscv_index_reg_class): Likewise.
874         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
875         (riscv_index_reg_class): New function.
876         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
877         riscv_index_reg_class().
878         (REGNO_OK_FOR_INDEX_P): Call new function
879         riscv_regno_ok_for_index_p().
881 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
883         * config/riscv/riscv-protos.h (enum riscv_address_type):
884         New location of type definition.
885         (struct riscv_address_info): Likewise.
886         * config/riscv/riscv.cc (enum riscv_address_type):
887         Old location of type definition.
888         (struct riscv_address_info): Likewise.
890 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
892         * config/riscv/riscv.h (Xmode): New macro.
894 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
896         * config/riscv/riscv.cc (riscv_print_operand_address): Use
897         output_addr_const rather than riscv_print_operand.
899 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
901         * config/riscv/thead.md: Adjust constraints of th_addsl.
903 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
905         * config/riscv/thead.cc (th_mempair_operands_p):
906         Fix documentation of th_mempair_order_operands().
908 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
910         * config/riscv/thead.cc (th_mempair_save_regs):
911         Emit REG_FRAME_RELATED_EXPR notes in prologue.
913 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
915         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
916         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
917         New XThead extension INSN.
918         (*zero_extendsidi2_th_extu): New XThead extension INSN.
919         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
921 2023-07-12  liuhongt  <hongtao.liu@intel.com>
923         PR target/110438
924         PR target/110202
925         * config/i386/predicates.md
926         (int_float_vector_all_ones_operand): New predicate.
927         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
928         define_insn.
929         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
930         Ditto.
931         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
932         Ditto.
933         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
934         define_insn_and_split to avoid false dependence.
935         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
936         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
937         of operands 1 to '0' to avoid false dependence.
938         (*andnot<mode>3): Ditto.
939         (iornot<mode>3): Ditto.
940         (*<nlogic><mode>3): Ditto.
942 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
944         * common/config/i386/cpuinfo.h
945         (get_intel_cpu): Handle Granite Rapids D.
946         * common/config/i386/i386-common.cc:
947         (processor_alias_table): Add graniterapids-d.
948         * common/config/i386/i386-cpuinfo.h
949         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
950         * config.gcc: Add -march=graniterapids-d.
951         * config/i386/driver-i386.cc (host_detect_local_cpu):
952         Handle graniterapids-d.
953         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
954         * doc/extend.texi: Add graniterapids-d.
955         * doc/invoke.texi: Ditto.
957 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
959         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
960         Add OPTION_MASK_ISA_AVX512VL.
961         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
962         Ditto.
964 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
966         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
967         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
968         (shuffle_compress_patterns): Ditto.
969         (expand_vec_perm_const_1): Ditto.
971 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
973         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
974         * cfghooks.h (struct cfg_hooks): Change return type of
975         verify_flow_info from integer to bool.
976         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
977         (can_delete_label_p): Ditto.
978         (rtl_verify_flow_info): Change return type from int to bool
979         and adjust function body accordingly.  Change "err" variable to bool.
980         (rtl_verify_flow_info_1): Ditto.
981         (free_bb_for_insn): Change return type to void.
982         (rtl_merge_blocks): Change "b_empty" variable to bool.
983         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
984         (verify_hot_cold_block_grouping): Change return type from int to bool.
985         Change "err" variable to bool.
986         (rtl_verify_edges): Ditto.
987         (rtl_verify_bb_insns): Ditto.
988         (rtl_verify_bb_pointers): Ditto.
989         (rtl_verify_bb_insn_chain): Ditto.
990         (rtl_verify_fallthru): Ditto.
991         (rtl_verify_bb_layout): Ditto.
992         (purge_all_dead_edges): Change "purged" variable to bool.
993         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
994         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
995         (load_killed_in_block_p): Change return type from int to bool
996         and adjust function body accordingly.
997         (oprs_unchanged_p): Return true/false.
998         (rest_of_handle_gcse2): Change return type to void.
999         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
1000         int to bool.  Change "err" variable to bool.
1002 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
1004         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
1006 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1008         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
1009         * internal-fn.cc (cond_len_unary_direct): Ditto.
1010         (cond_len_binary_direct): Ditto.
1011         (cond_len_ternary_direct): Ditto.
1012         (expand_cond_len_unary_optab_fn): Ditto.
1013         (expand_cond_len_binary_optab_fn): Ditto.
1014         (expand_cond_len_ternary_optab_fn): Ditto.
1015         (direct_cond_len_unary_optab_supported_p): Ditto.
1016         (direct_cond_len_binary_optab_supported_p): Ditto.
1017         (direct_cond_len_ternary_optab_supported_p): Ditto.
1018         * internal-fn.def (COND_LEN_ADD): Ditto.
1019         (COND_LEN_SUB): Ditto.
1020         (COND_LEN_MUL): Ditto.
1021         (COND_LEN_DIV): Ditto.
1022         (COND_LEN_MOD): Ditto.
1023         (COND_LEN_RDIV): Ditto.
1024         (COND_LEN_MIN): Ditto.
1025         (COND_LEN_MAX): Ditto.
1026         (COND_LEN_FMIN): Ditto.
1027         (COND_LEN_FMAX): Ditto.
1028         (COND_LEN_AND): Ditto.
1029         (COND_LEN_IOR): Ditto.
1030         (COND_LEN_XOR): Ditto.
1031         (COND_LEN_SHL): Ditto.
1032         (COND_LEN_SHR): Ditto.
1033         (COND_LEN_FMA): Ditto.
1034         (COND_LEN_FMS): Ditto.
1035         (COND_LEN_FNMA): Ditto.
1036         (COND_LEN_FNMS): Ditto.
1037         (COND_LEN_NEG): Ditto.
1038         * optabs.def (OPTAB_D): Ditto.
1040 2023-07-11  Richard Biener  <rguenther@suse.de>
1042         PR tree-optimization/110614
1043         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
1044         SLP splats are not suitable for re-align ops.
1046 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
1048         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
1049         MEM_P usage.
1050         (vsx_quad_dform_memory_operand): Likewise.
1052 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
1054         * reorg.cc (stop_search_p): Change return type from int to bool
1055         and adjust function body accordingly.
1056         (resource_conflicts_p): Ditto.
1057         (insn_references_resource_p): Change return type from int to bool.
1058         (insn_sets_resource_p): Ditto.
1059         (redirect_with_delay_slots_safe_p): Ditto.
1060         (condition_dominates_p): Change return type from int to bool
1061         and adjust function body accordingly.
1062         (redirect_with_delay_list_safe_p): Ditto.
1063         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
1064         function argument to bool.
1065         (steal_delay_list_from_target): Change "pannul_p" function
1066         argument to bool pointer.  Change "must_annul" and "used_annul"
1067         variables from int to bool.
1068         (steal_delay_list_from_fallthrough): Ditto.
1069         (own_thread_p): Change return type from int to bool and adjust
1070         function body accordingly.  Change "allow_fallthrough" function
1071         argument to bool.
1072         (reorg_redirect_jump): Change return type from int to bool.
1073         (fill_simple_delay_slots): Change "non_jumps_p" function
1074         argument from int to bool.  Change "maybe_never" varible to bool.
1075         (fill_slots_from_thread): Change "likely", "thread_if_true" and
1076         "own_thread" function arguments to bool.  Change "lose" and
1077         "must_annul" variables to bool.
1078         (delete_from_delay_slot): Change "had_barrier" variable to bool.
1079         (try_merge_delay_insns): Change "annul_p" variable to bool.
1080         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
1081         variables to bool.
1082         (rest_of_handle_delay_slots): Change return type from int to void
1083         and adjust function body accordingly.
1085 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
1087         * doc/extend.texi (RISC-V Operand Modifiers): New.
1089 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1091         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
1092         (insert_insn_end_basic_block): Ditto.
1093         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
1094         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
1095         * gcse.h (insert_insn_end_basic_block): Ditto.
1097 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
1099         PR target/110268
1100         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
1101         (arm_builtin_decl): Hahndle MVE builtins.
1102         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
1103         (add_unique_function): Fix handling of
1104         __ARM_MVE_PRESERVE_USER_NAMESPACE.
1105         (add_overloaded_function): Likewise.
1106         * config/arm/arm-protos.h (builtin_decl): New declaration.
1108 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
1110         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
1112 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
1114         PR tree-optimization/110557
1115         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
1116         Ensure the output sign-extended if necessary.
1118 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
1120         * config/i386/i386.md (peephole2): Transform xchg insn with a
1121         REG_UNUSED note to a (simple) move.
1122         (*insvti_lowpart_1): New define_insn_and_split.
1123         (*insvdi_lowpart_1): Likewise.
1125 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
1127         * config/i386/i386-features.cc (compute_convert_gain): Tweak
1128         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
1129         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
1130         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
1132 2023-07-10  liuhongt  <hongtao.liu@intel.com>
1134         PR target/110170
1135         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
1136         splitter to detect fp max pattern.
1137         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
1139 2023-07-09  Jan Hubicka  <jh@suse.cz>
1141         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
1142         (dump_edge_info): Likewise.
1143         (dump_bb_info): Likewise.
1144         * profile-count.cc (profile_count::dump): Add comma between quality and
1145         freq.
1147 2023-07-08  Jan Hubicka  <jh@suse.cz>
1149         PR tree-optimization/110600
1150         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
1152 2023-07-08  Jan Hubicka  <jh@suse.cz>
1154         PR middle-end/110590
1155         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
1156         inner loops and be more careful about inconsistent profiles.
1157         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
1158         exit is followed by other exit.
1160 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
1162         * cprop.cc (reg_available_p): Change return type from int to bool.
1163         (reg_not_set_p): Ditto.
1164         (try_replace_reg): Ditto.  Change "success" variable to bool.
1165         (cprop_jump): Change return type from int to void
1166         and adjust function body accordingly.
1167         (constprop_register): Ditto.
1168         (cprop_insn): Ditto.  Change "changed" variable to bool.
1169         (local_cprop_pass): Change return type from int to void
1170         and adjust function body accordingly.
1171         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
1172         and "removed_p" variables to bool.
1173         (bypass_conditional_jumps): Change return type from int to void
1174         and adjust function body accordingly.  Change "changed"
1175         variable to bool.
1176         (one_cprop_pass): Ditto.
1178 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
1180         * gcse.cc (expr_equiv_p): Change return type from int to bool.
1181         (oprs_unchanged_p): Change return type from int to void
1182         and adjust function body accordingly.
1183         (oprs_anticipatable_p): Ditto.
1184         (oprs_available_p): Ditto.
1185         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
1186         arguments to bool. Change "found" variable to bool.
1187         (load_killed_in_block_p): Change return type from int to void and
1188         adjust function body accordingly.  Change "avail_p" argument to bool.
1189         (pre_expr_reaches_here_p): Change return type from int to void
1190         and adjust function body accordingly.
1191         (pre_delete): Ditto.  Change "changed" variable to bool.
1192         (pre_gcse): Change return type from int to void
1193         and adjust function body accordingly. Change "did_insert" and
1194         "changed" variables to bool.
1195         (one_pre_gcse_pass): Change return type from int to void
1196         and adjust function body accordingly.  Change "changed" variable
1197         to bool.
1198         (should_hoist_expr_to_dom): Change return type from int to void
1199         and adjust function body accordingly.  Change
1200         "visited_allocated_locally" variable to bool.
1201         (hoist_code): Change return type from int to void and adjust
1202         function body accordingly.  Change "changed" variable to bool.
1203         (one_code_hoisting_pass): Ditto.
1204         (pre_edge_insert): Change return type from int to void and adjust
1205         function body accordingly.  Change "did_insert" variable to bool.
1206         (pre_expr_reaches_here_p_work): Change return type from int to void
1207         and adjust function body accordingly.
1208         (simple_mem): Ditto.
1209         (want_to_gcse_p): Change return type from int to void
1210         and adjust function body accordingly.
1211         (can_assign_to_reg_without_clobbers_p): Update function body
1212         for bool return type.
1213         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
1214         (pre_insert_copies): Change "added_copy" variable to bool.
1216 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
1218         PR c++/110595
1219         PR c++/110596
1220         * doc/invoke.texi (Warning Options): Fix typos.
1222 2023-07-07  Jan Hubicka  <jh@suse.cz>
1224         * profile-count.cc (profile_count::dump): Add FUN
1225         parameter; print relative frequency.
1226         (profile_count::debug): Update.
1227         * profile-count.h (profile_count::dump): Update
1228         prototype.
1230 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
1232         PR target/43644
1233         PR target/110533
1234         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
1235         TImode destinations from paradoxical SUBREGs (setting the lowpart)
1236         into explicit zero extensions.  Use *insvti_highpart_1 instruction
1237         to set the highpart of a TImode destination.
1239 2023-07-07  Jan Hubicka  <jh@suse.cz>
1241         * predict.cc (force_edge_cold): Use
1242         set_edge_probability_and_rescale_others; improve dumps.
1244 2023-07-07  Jan Hubicka  <jh@suse.cz>
1246         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
1247         after exit.
1248         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
1249         is known.
1251 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
1253         * config/s390/s390.cc (vec_init): Fix default case
1255 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
1257         * lra-assigns.cc (assign_by_spills): Add reload insns involving
1258         reload pseudos with non-refined class to be processed on the next
1259         sub-pass.
1260         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
1261         (in_class_p): Use it.
1262         (print_curr_insn_alt): New func.
1263         (process_alt_operands): Use it.  Improve debug info.
1264         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
1265         pseudo class if it is not refined yet.
1267 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
1269         * value-range.cc (irange::get_bitmask_from_range): Return all the
1270         known bits for a singleton.
1271         (irange::set_range_from_bitmask): Set a range of a singleton when
1272         all bits are known.
1274 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
1276         * value-range.cc (irange::intersect): Leave normalization to
1277         caller.
1279 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
1281         * data-streamer-in.cc (streamer_read_value_range): Adjust for
1282         value/mask.
1283         * data-streamer-out.cc (streamer_write_vrange): Same.
1284         * range-op.cc (operator_cast::fold_range): Same.
1285         * value-range-pretty-print.cc
1286         (vrange_printer::print_irange_bitmasks): Same.
1287         * value-range-storage.cc (irange_storage::write_lengths_address):
1288         Same.
1289         (irange_storage::set_irange): Same.
1290         (irange_storage::get_irange): Same.
1291         (irange_storage::size): Same.
1292         (irange_storage::dump): Same.
1293         * value-range-storage.h: Same.
1294         * value-range.cc (debug): New.
1295         (irange_bitmask::dump): New.
1296         (add_vrange): Adjust for value/mask.
1297         (irange::operator=): Same.
1298         (irange::set): Same.
1299         (irange::verify_range): Same.
1300         (irange::operator==): Same.
1301         (irange::contains_p): Same.
1302         (irange::irange_single_pair_union): Same.
1303         (irange::union_): Same.
1304         (irange::intersect): Same.
1305         (irange::invert): Same.
1306         (irange::get_nonzero_bits_from_range): Rename to...
1307         (irange::get_bitmask_from_range): ...this.
1308         (irange::set_range_from_nonzero_bits): Rename to...
1309         (irange::set_range_from_bitmask): ...this.
1310         (irange::set_nonzero_bits): Rename to...
1311         (irange::update_bitmask): ...this.
1312         (irange::get_nonzero_bits): Rename to...
1313         (irange::get_bitmask): ...this.
1314         (irange::intersect_nonzero_bits): Rename to...
1315         (irange::intersect_bitmask): ...this.
1316         (irange::union_nonzero_bits): Rename to...
1317         (irange::union_bitmask): ...this.
1318         (irange_bitmask::verify_mask): New.
1319         * value-range.h (class irange_bitmask): New.
1320         (irange_bitmask::set_unknown): New.
1321         (irange_bitmask::unknown_p): New.
1322         (irange_bitmask::irange_bitmask): New.
1323         (irange_bitmask::get_precision): New.
1324         (irange_bitmask::get_nonzero_bits): New.
1325         (irange_bitmask::set_nonzero_bits): New.
1326         (irange_bitmask::operator==): New.
1327         (irange_bitmask::union_): New.
1328         (irange_bitmask::intersect): New.
1329         (class irange): Friend vrange_printer.
1330         (irange::varying_compatible_p): Adjust for bitmask.
1331         (irange::set_varying): Same.
1332         (irange::set_nonzero): Same.
1334 2023-07-07  Jan Beulich  <jbeulich@suse.com>
1336         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
1338 2023-07-07  Jan Beulich  <jbeulich@suse.com>
1340         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
1341         alternative. Switch new last alternative's "isa" attribute to
1342         "avx512vl".
1343         (vec_extract_hi_v32qi): Likewise.
1345 2023-07-07  Pan Li  <pan2.li@intel.com>
1346             Robin Dapp  <rdapp@ventanamicro.com>
1348         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
1349         when FRM_MODE_DYN.
1350         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
1351         (riscv_mode_exit): Likewise for exit mode.
1352         (riscv_mode_needed): Likewise for needed mode.
1353         (riscv_mode_after): Likewise for after mode.
1355 2023-07-07  Pan Li  <pan2.li@intel.com>
1357         * config/riscv/vector.md: Fix typo.
1359 2023-07-06  Jan Hubicka  <jh@suse.cz>
1361         PR middle-end/25623
1362         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
1363         of iterations determined.
1364         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
1366 2023-07-06  Jan Hubicka  <jh@suse.cz>
1368         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
1369         probability update to be safe on loops with subloops.
1370         Make bound parameter to be iteration bound.
1371         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
1372         of scale_loop_profile.
1373         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
1375 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
1377         PR tree-optimization/110449
1378         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
1379         vec_loop for the unrolled loop.
1381 2023-07-06  Jan Hubicka  <jh@suse.cz>
1383         * cfg.cc (set_edge_probability_and_rescale_others): New function.
1384         (update_bb_profile_for_threading): Use it; simplify the rest.
1385         * cfg.h (set_edge_probability_and_rescale_others): Declare.
1386         * profile-count.h (profile_probability::apply_scale): New.
1388 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
1390         * doc/extend.texi (ARC Built-in Functions): Update documentation
1391         with missing builtins.
1393 2023-07-06  Richard Biener  <rguenther@suse.de>
1395         PR tree-optimization/110556
1396         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
1397         assign code and all operands of non-stores.
1399 2023-07-06  Richard Biener  <rguenther@suse.de>
1401         PR tree-optimization/110563
1402         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
1403         Remove second argument.
1404         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
1405         Remove for_epilogue_p argument.  Merge assert ...
1406         (vect_analyze_loop_2): ... with check done before determining
1407         partial vectors by moving it after.
1408         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
1410 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1412         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
1413         few things re 'reorder' option and strings.
1414         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
1416 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1418         * gengtype-parse.cc: Clean up obsolete parametrized structs
1419         remnants.
1420         * gengtype.cc: Likewise.
1421         * gengtype.h: Likewise.
1423 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1425         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
1426         Adjust all users.
1428 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1430         * gengtype-parse.cc (token_names): Add '"user"'.
1431         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
1432         'FIRST_TOKEN_WITH_VALUE'.
1434 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1436         * doc/gty.texi (GTY Options) <string_length>: Enhance.
1438 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1440         * gengtype.cc (write_root, write_roots): Explicitly reject
1441         'string_length' option.
1442         * doc/gty.texi (GTY Options) <string_length>: Document.
1444 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
1446         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
1447         (ggc_pch_write_object): Remove 'bool is_string' argument.
1448         * ggc-common.cc: Adjust.
1449         * ggc-page.cc: Likewise.
1451 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
1453         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
1455 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
1457         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
1458         and add description for inling of function with arch and tune
1459         attributes.
1461 2023-07-06  Richard Biener  <rguenther@suse.de>
1463         PR tree-optimization/110515
1464         * tree-ssa-pre.cc (compute_avail): Make code dealing
1465         with hoisting loads with different alias-sets more
1466         robust.
1468 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1470         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
1472 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
1474         * config/i386/i386.cc (ix86_can_inline_p): If callee has
1475         default arch=x86-64 and tune=generic, do not block the
1476         inlining to its caller. Also allow callee with different
1477         arch= to be inlined if it has always_inline attribute and
1478         it's ISA is subset of caller's.
1480 2023-07-06  liuhongt  <hongtao.liu@intel.com>
1482         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
1483         DF/SFmode AND/IOR/XOR/ANDN operations.
1485 2023-07-06  Andrew Pinski  <apinski@marvell.com>
1487         PR middle-end/110554
1488         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
1489         just build using boolean_type_node instead of the cond_type.
1490         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
1491         that will feed into the COND_EXPR.
1493 2023-07-06  liuhongt  <hongtao.liu@intel.com>
1495         PR target/110170
1496         * config/i386/i386.md (movdf_internal): Disparage slightly for
1497         2 alternatives (r,v) and (v,r) by adding constraint modifier
1498         '?'.
1500 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
1502         PR target/106907
1503         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
1504         initialization of new_addr.
1506 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
1508         PR tree-optimization/110474
1509         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
1510         unroll factor while selecting the epilog vect loop VF.
1512 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
1514         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
1515         call.
1517 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
1519         * gimple-range-gori.cc (compute_operand_range): After calling
1520         compute_operand2_range, recursively call self if needed.
1521         (compute_operand2_range): Turn into a leaf function.
1522         (gori_compute::compute_operand1_and_operand2_range): Finish
1523         operand2 calculation.
1524         * gimple-range-gori.h (compute_operand2_range): Remove name param.
1526 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
1528         * gimple-range-gori.cc (compute_operand_range): After calling
1529         compute_operand1_range, recursively call self if needed.
1530         (compute_operand1_range): Turn into a leaf function.
1531         (gori_compute::compute_operand1_and_operand2_range): Finish
1532         operand1 calculation.
1533         * gimple-range-gori.h (compute_operand1_range): Remove name param.
1535 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
1537         * gimple-range-gori.cc (compute_operand_range): Check for
1538         operand interdependence when both op1 and op2 are computed.
1539         (compute_operand1_and_operand2_range): No checks required now.
1541 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
1543         * gimple-range-gori.cc (compute_operand_range): Check for
1544         a relation between op1 and op2 and use that instead.
1545         (compute_operand1_range): Don't look for a relation override.
1546         (compute_operand2_range): Ditto.
1548 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
1550         * doc/contrib.texi (Contributors): Update my entry.
1552 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
1554         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
1555         prob calculation.
1557 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
1559         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
1560         scehdule_more_p and contributes_to_priority indirect frunction
1561         type from int to bool.
1562         (no_real_insns_p): Change return type from int to bool.
1563         (contributes_to_priority): Ditto.
1564         * haifa-sched.cc (no_real_insns_p): Change return type from
1565         int to bool and adjust function body accordingly.
1566         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
1567         variable type from int to bool.
1568         (ps_insn_advance_column): Change return type from int to bool.
1569         (ps_has_conflicts): Ditto. Change "has_conflicts"
1570         variable type from int to bool.
1571         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
1572         (conditions_mutex_p): Ditto.
1573         * sched-ebb.cc (schedule_more_p): Ditto.
1574         (ebb_contributes_to_priority): Change return type from
1575         int to bool and adjust function body accordingly.
1576         * sched-rgn.cc (is_cfg_nonregular): Ditto.
1577         (check_live_1): Ditto.
1578         (is_pfree): Ditto.
1579         (find_conditional_protection): Ditto.
1580         (is_conditionally_protected): Ditto.
1581         (is_prisky): Ditto.
1582         (is_exception_free): Ditto.
1583         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
1584         variables from int to bool.
1585         (extend_rgns): Change "rescan" variable from int to bool.
1586         (check_live): Change return type from
1587         int to bool and adjust function body accordingly.
1588         (can_schedule_ready_p): Ditto.
1589         (schedule_more_p): Ditto.
1590         (contributes_to_priority): Ditto.
1592 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
1594         * doc/md.texi: Document that vec_set and vec_extract must not
1595         fail.
1596         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
1597         (gimple_expand_vec_set_extract_expr): ...to this.
1598         (gimple_expand_vec_exprs): Call renamed function.
1599         * internal-fn.cc (vec_extract_direct): Add.
1600         (expand_vec_extract_optab_fn): New function to expand
1601         vec_extract optab.
1602         (direct_vec_extract_optab_supported_p): Add.
1603         * internal-fn.def (VEC_EXTRACT): Add.
1604         * optabs.cc (can_vec_extract_var_idx_p): New function.
1605         * optabs.h (can_vec_extract_var_idx_p): Declare.
1607 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
1609         * config/riscv/autovec.md: Add gen_lowpart.
1611 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
1613         * config/riscv/autovec.md: Allow register index operand.
1615 2023-07-05  Pan Li  <pan2.li@intel.com>
1617         * config/riscv/riscv-vector-builtins.cc
1618         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
1620 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
1622         * config/riscv/autovec.md: Use float_truncate.
1624 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1626         * internal-fn.cc (internal_fn_len_index): Apply
1627         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
1628         (internal_fn_mask_index): Ditto.
1629         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
1630         (supports_vec_scatter_store_p): Ditto.
1631         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
1632         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
1633         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
1634         (vect_get_strided_load_store_ops): Ditto.
1635         (vectorizable_store): Ditto.
1636         (vectorizable_load): Ditto.
1638 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
1639             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1641         * simplify-rtx.cc (native_encode_rtx): Ditto.
1642         (native_decode_vector_rtx): Ditto.
1643         (simplify_const_vector_byte_offset): Ditto.
1644         (simplify_const_vector_subreg): Ditto.
1645         * tree.cc (build_truth_vector_type_for_mode): Ditto.
1646         * varasm.cc (output_constant_pool_2): Ditto.
1648 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
1650         * config/mips/mips.cc (mips_expand_block_move): don't expand for
1651         r6 with -mno-unaligned-access option if one or both of src and
1652         dest are unaligned. restruct: return directly if length is not const.
1653         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
1655 2023-07-05  Jan Beulich  <jbeulich@suse.com>
1657         PR target/100711
1658         * config/i386/sse.md: New splitters to simplify
1659         not;vec_duplicate as a singular vpternlog.
1660         (one_cmpl<mode>2): Allow broadcast for operand 1.
1661         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
1663 2023-07-05  Jan Beulich  <jbeulich@suse.com>
1665         PR target/100711
1666         * config/i386/sse.md: New splitters to simplify
1667         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
1669 2023-07-05  Jan Beulich  <jbeulich@suse.com>
1671         PR target/100711
1672         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
1673         form of splitter for PR target/100711.
1675 2023-07-05  Richard Biener  <rguenther@suse.de>
1677         PR middle-end/110541
1678         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
1679         reality.
1681 2023-07-05  Jan Beulich  <jbeulich@suse.com>
1683         PR target/93768
1684         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
1685         for memory form operand 1.
1687 2023-07-05  Jan Beulich  <jbeulich@suse.com>
1689         PR target/93768
1690         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
1691         bitwise vector operations.
1692         * config/i386/sse.md (*iornot<mode>3): New insn.
1693         (*xnor<mode>3): Likewise.
1694         (*<nlogic><mode>3): Likewise.
1695         (andor): New code iterator.
1696         (nlogic): New code attribute.
1697         (ternlog_nlogic): Likewise.
1699 2023-07-05  Richard Biener  <rguenther@suse.de>
1701         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
1703 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
1705         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
1707 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
1709         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
1710         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
1711         (ADJUST_ALIGNMENT): Ditto.
1712         (RVV_TUPLE_PARTIAL_MODES): Ditto.
1713         (ADJUST_NUNITS): Ditto.
1714         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
1715         New types.
1716         (vfloat16mf4x3_t): Ditto.
1717         (vfloat16mf4x4_t): Ditto.
1718         (vfloat16mf4x5_t): Ditto.
1719         (vfloat16mf4x6_t): Ditto.
1720         (vfloat16mf4x7_t): Ditto.
1721         (vfloat16mf4x8_t): Ditto.
1722         (vfloat16mf2x2_t): Ditto.
1723         (vfloat16mf2x3_t): Ditto.
1724         (vfloat16mf2x4_t): Ditto.
1725         (vfloat16mf2x5_t): Ditto.
1726         (vfloat16mf2x6_t): Ditto.
1727         (vfloat16mf2x7_t): Ditto.
1728         (vfloat16mf2x8_t): Ditto.
1729         (vfloat16m1x2_t): Ditto.
1730         (vfloat16m1x3_t): Ditto.
1731         (vfloat16m1x4_t): Ditto.
1732         (vfloat16m1x5_t): Ditto.
1733         (vfloat16m1x6_t): Ditto.
1734         (vfloat16m1x7_t): Ditto.
1735         (vfloat16m1x8_t): Ditto.
1736         (vfloat16m2x2_t): Ditto.
1737         (vfloat16m2x3_t): Ditto.
1738         (vfloat16m2x4_t): Ditto.
1739         (vfloat16m4x2_t): Ditto.
1740         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
1741         (vfloat16mf4x3_t): Ditto.
1742         (vfloat16mf4x4_t): Ditto.
1743         (vfloat16mf4x5_t): Ditto.
1744         (vfloat16mf4x6_t): Ditto.
1745         (vfloat16mf4x7_t): Ditto.
1746         (vfloat16mf4x8_t): Ditto.
1747         (vfloat16mf2x2_t): Ditto.
1748         (vfloat16mf2x3_t): Ditto.
1749         (vfloat16mf2x4_t): Ditto.
1750         (vfloat16mf2x5_t): Ditto.
1751         (vfloat16mf2x6_t): Ditto.
1752         (vfloat16mf2x7_t): Ditto.
1753         (vfloat16mf2x8_t): Ditto.
1754         (vfloat16m1x2_t): Ditto.
1755         (vfloat16m1x3_t): Ditto.
1756         (vfloat16m1x4_t): Ditto.
1757         (vfloat16m1x5_t): Ditto.
1758         (vfloat16m1x6_t): Ditto.
1759         (vfloat16m1x7_t): Ditto.
1760         (vfloat16m1x8_t): Ditto.
1761         (vfloat16m2x2_t): Ditto.
1762         (vfloat16m2x3_t): Ditto.
1763         (vfloat16m2x4_t): Ditto.
1764         (vfloat16m4x2_t): Ditto.
1765         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
1766         * config/riscv/riscv.md: New.
1767         * config/riscv/vector-iterators.md: New.
1769 2023-07-04  Andrew Pinski  <apinski@marvell.com>
1771         PR tree-optimization/110487
1772         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
1773         build a nonstandard integer and use that.
1775 2023-07-04  Andrew Pinski  <apinski@marvell.com>
1777         * match.pd (a?-1:0): Cast type an integer type
1778         rather the type before the negative.
1779         (a?0:-1): Likewise.
1781 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
1783         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
1784         Change to use HARD_REG_BIT and its macros.
1785         * config/xtensa/xtensa.md
1786         (peephole2: regmove elimination during DFmode input reload):
1787         Likewise.
1789 2023-07-04  Richard Biener  <rguenther@suse.de>
1791         PR tree-optimization/110491
1792         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
1793         whether the PHI args are possibly undefined before folding
1794         the COND_EXPR.
1796 2023-07-04  Pan Li  <pan2.li@intel.com>
1797             Thomas Schwinge  <thomas@codesourcery.com>
1799         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
1800         bits for machine mode table.
1801         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
1802         HOST machine mode bits.
1803         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
1804         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
1805         as the table size.
1806         * tree-streamer.h (streamer_mode_table): Ditto.
1807         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
1808         as the packing limit.
1809         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
1811 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
1813         * lto-streamer.h (class lto_input_block): Capture
1814         'lto_file_decl_data *file_data' instead of just
1815         'unsigned char *mode_table'.
1816         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
1817         * ipa-fnsummary.cc (inline_read_section): Likewise.
1818         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
1819         * ipa-modref.cc (read_section): Likewise.
1820         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
1821         Likewise.
1822         * ipa-sra.cc (isra_read_summary_section): Likewise.
1823         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
1824         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
1825         * lto-streamer-in.cc (lto_read_body_or_constructor)
1826         (lto_input_toplevel_asms): Likewise.
1827         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
1829 2023-07-04  Richard Biener  <rguenther@suse.de>
1831         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
1832         (empty_bb_or_one_feeding_into_p): Check for them.
1833         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
1834         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
1836 2023-07-04  Richard Biener  <rguenther@suse.de>
1838         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
1839         check guarding scalar_niter underflow.
1841 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
1843         PR tree-optimization/110531
1844         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
1845         slp_done_for_suggested_uf to false.
1847 2023-07-04  Richard Biener  <rguenther@suse.de>
1849         PR tree-optimization/110228
1850         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
1851         Mark SSA may-undefs.
1852         (bb_no_side_effects_p): Check stmt uses for undefs.
1854 2023-07-04  Richard Biener  <rguenther@suse.de>
1856         PR tree-optimization/110436
1857         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
1858         force live but not relevant pattern stmts relevant.
1860 2023-07-04  Lili Cui  <lili.cui@intel.com>
1862         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
1863         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
1865 2023-07-04  Richard Biener  <rguenther@suse.de>
1867         PR middle-end/110495
1868         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
1869         since we do not set TREE_OVERFLOW on those since the
1870         introduction of VL vectors.
1871         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
1872         at TREE_OVERFLOW to determine validity of association.
1874 2023-07-04  Richard Biener  <rguenther@suse.de>
1876         PR tree-optimization/110310
1877         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
1878         Move costing part ...
1879         (vect_analyze_loop_costing): ... here.  Integrate better
1880         estimate for epilogues from ...
1881         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
1882         with actual epilogue status.
1883         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
1884         avoid cancelling epilogue vectorization.
1885         (vect_update_epilogue_niters): Remove.  No longer update
1886         epilogue LOOP_VINFO_NITERS.
1888 2023-07-04  Pan Li  <pan2.li@intel.com>
1890         Revert:
1891         2023-07-03  Pan Li  <pan2.li@intel.com>
1893         * config/riscv/vector.md: Fix typo.
1895 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1897         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
1898         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
1899         (expand_gather_load_optab_fn): Ditto.
1900         (internal_load_fn_p): Ditto.
1901         (internal_store_fn_p): Ditto.
1902         (internal_gather_scatter_fn_p): Ditto.
1903         (internal_fn_len_index): Ditto.
1904         (internal_fn_mask_index): Ditto.
1905         (internal_fn_stored_value_index): Ditto.
1906         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
1907         (LEN_MASK_SCATTER_STORE): Ditto.
1908         * optabs.def (OPTAB_CD): Ditto.
1910 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1912         * config/riscv/riscv-vsetvl.cc
1913         (vector_insn_info::parse_insn): Add early break.
1915 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
1917         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
1918         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
1920 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
1922         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
1924 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
1926         * common/config/riscv/riscv-common.cc: Add support for zvbb,
1927         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
1928         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
1929         * config/riscv/arch-canonicalize: Add canonicalization info for
1930         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
1931         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
1932         (MASK_ZVBC): Likewise.
1933         (TARGET_ZVBB): Likewise.
1934         (TARGET_ZVBC): Likewise.
1935         (MASK_ZVKG): Likewise.
1936         (MASK_ZVKNED): Likewise.
1937         (MASK_ZVKNHA): Likewise.
1938         (MASK_ZVKNHB): Likewise.
1939         (MASK_ZVKSED): Likewise.
1940         (MASK_ZVKSH): Likewise.
1941         (MASK_ZVKN): Likewise.
1942         (MASK_ZVKNC): Likewise.
1943         (MASK_ZVKNG): Likewise.
1944         (MASK_ZVKS): Likewise.
1945         (MASK_ZVKSC): Likewise.
1946         (MASK_ZVKSG): Likewise.
1947         (MASK_ZVKT): Likewise.
1948         (TARGET_ZVKG): Likewise.
1949         (TARGET_ZVKNED): Likewise.
1950         (TARGET_ZVKNHA): Likewise.
1951         (TARGET_ZVKNHB): Likewise.
1952         (TARGET_ZVKSED): Likewise.
1953         (TARGET_ZVKSH): Likewise.
1954         (TARGET_ZVKN): Likewise.
1955         (TARGET_ZVKNC): Likewise.
1956         (TARGET_ZVKNG): Likewise.
1957         (TARGET_ZVKS): Likewise.
1958         (TARGET_ZVKSC): Likewise.
1959         (TARGET_ZVKSG): Likewise.
1960         (TARGET_ZVKT): Likewise.
1961         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
1963 2023-07-03  Andrew Pinski  <apinski@marvell.com>
1965         PR middle-end/110510
1966         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
1968 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
1970         * config/darwin.h: Avoid duplicate multiply_defined specs on
1971         earlier Darwin versions with shared libgcc.
1973 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
1975         * tree.h (tree_int_cst_equal): Change return type from int to bool.
1976         (operand_equal_for_phi_arg_p): Ditto.
1977         (tree_map_base_marked_p): Ditto.
1978         * tree.cc (contains_placeholder_p): Update function body
1979         for bool return type.
1980         (type_cache_hasher::equal): Ditto.
1981         (tree_map_base_hash): Change return type
1982         from int to void and adjust function body accordingly.
1983         (tree_int_cst_equal): Ditto.
1984         (operand_equal_for_phi_arg_p): Ditto.
1985         (get_narrower): Change "first" variable to bool.
1986         (cl_option_hasher::equal): Update function body for bool return type.
1987         * ggc.h (ggc_set_mark): Change return type from int to bool.
1988         (ggc_marked_p): Ditto.
1989         * ggc-page.cc (gt_ggc_mx): Change return type
1990         from int to void and adjust function body accordingly.
1991         (ggc_set_mark): Ditto.
1993 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1995         * config/riscv/autovec.md: Change order of
1996         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
1997         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
1998         * doc/md.texi: Ditto.
1999         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
2000         * internal-fn.cc (len_maskload_direct): Ditto.
2001         (len_maskstore_direct): Ditto.
2002         (add_len_and_mask_args): New function.
2003         (expand_partial_load_optab_fn): Change order of
2004         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2005         (expand_partial_store_optab_fn): Ditto.
2006         (internal_fn_len_index): New function.
2007         (internal_fn_mask_index): Change order of
2008         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2009         (internal_fn_stored_value_index): Ditto.
2010         (internal_len_load_store_bias): Ditto.
2011         * internal-fn.h (internal_fn_len_index): New function.
2012         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
2013         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2014         * tree-vect-stmts.cc (vectorizable_store): Ditto.
2015         (vectorizable_load): Ditto.
2017 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
2019         PR modula2/110125
2020         * doc/gm2.texi (Semantic checking): Include examples using
2021         -Wuninit-variable-checking.
2023 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2025         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2026         (*single_widen_fnma<mode>): Ditto.
2027         (*double_widen_fms<mode>): Ditto.
2028         (*single_widen_fms<mode>): Ditto.
2029         (*double_widen_fnms<mode>): Ditto.
2030         (*single_widen_fnms<mode>): Ditto.
2032 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2034         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
2035         into "*" in pattern name which simplifies build files.
2036         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
2037         (*pred_single_widen_mul<mode>): New pattern.
2039 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
2041         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
2042         the index to be 0 or 1.
2044 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
2046         Revert:
2047         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2049         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2050         (*single_widen_fnma<mode>): Ditto.
2051         (*double_widen_fms<mode>): Ditto.
2052         (*single_widen_fms<mode>): Ditto.
2053         (*double_widen_fnms<mode>): Ditto.
2054         (*single_widen_fnms<mode>): Ditto.
2056 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2058         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2059         (*single_widen_fnma<mode>): Ditto.
2060         (*double_widen_fms<mode>): Ditto.
2061         (*single_widen_fms<mode>): Ditto.
2062         (*double_widen_fnms<mode>): Ditto.
2063         (*single_widen_fnms<mode>): Ditto.
2065 2023-07-03  Pan Li  <pan2.li@intel.com>
2067         * config/riscv/vector.md: Fix typo.
2069 2023-07-03  Richard Biener  <rguenther@suse.de>
2071         PR tree-optimization/110506
2072         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
2073         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
2075 2023-07-03  Richard Biener  <rguenther@suse.de>
2077         PR tree-optimization/110506
2078         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
2079         type before relying on TYPE_PRECISION to produce a nonzero mask.
2081 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2083         * config/mips/mips.md(*and<mode>3_mips16): Generates
2084         ZEB/ZEH instructions.
2086 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2088         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
2089         address register to M16_REGS for MIPS16.
2090         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
2091         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
2092         (AVAIL_NON_MIPS16 (cache..)): Update to
2093         AVAIL_MIPS16E2_OR_NON_MIPS16.
2094         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
2095         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
2097 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2099         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
2100         for ISA_HAS_MIPS16E2.
2101         (ISA_HAS_SYNC): Same as above.
2102         (ISA_HAS_LL_SC): Same as above.
2104 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2106         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
2107         Add logics for generating instruction.
2108         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
2109         * config/mips/mips.md(mov_<load>l): Generates instructions.
2110         (mov_<load>r): Same as above.
2111         (mov_<store>l): Adjusted for the conditions above.
2112         (mov_<store>r): Same as above.
2113         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
2114         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
2116 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2118         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
2119         (mips_const_insns): Same as above.
2120         (mips_output_move): Same as above.
2121         (mips_output_function_prologue): Same as above.
2122         * config/mips/mips.md: Same as above
2124 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2126         * config/mips/constraints.md(Yz): New constraints for mips16e2.
2127         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
2128         (mips_bit_clear_info): Same as above.
2129         * config/mips/mips.cc(mips_bit_clear_info): New function for
2130         generating instructions.
2131         (mips_bit_clear_p): Same as above.
2132         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
2133         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
2134         (*and<mode>3): Generates INS instruction.
2135         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
2136         (ior<mode>3): Add logics for ORI instruction.
2137         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
2138         (*ior<mode>3_mips16): Add logics for XORI instruction.
2139         (*xor<mode>3_mips16): Generates XORI instrucion.
2140         (*extzv<mode>): Add logics for EXT instruction.
2141         (*insv<mode>): Add logics for INS instruction.
2142         * config/mips/predicates.md(bit_clear_operand): New predicate for
2143         generating bitwise instructions.
2144         (and_reg_operand): Add logics for generating bitwise instructions.
2146 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2148         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
2149         that uses global pointer register.
2150         (mips16_unextended_reference_p): Same as above.
2151         (mips_pic_base_register): Same as above.
2152         (mips_init_relocs): Same as above.
2153         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
2154         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
2155         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
2156         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
2158 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2160         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
2161         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
2162         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
2163         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
2164         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
2165         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
2167 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2169         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
2170         for output file.
2171         * config/mips/mips.h(__mips_mips16e2): Defined a new
2172         predefine macro.
2173         (ISA_HAS_MIPS16E2): Defined a new macro.
2174         (ASM_SPEC): Pass mmips16e2 to the assembler.
2175         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
2176         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
2177         * doc/invoke.texi: Add -m(no-)mips16e2 option..
2179 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
2181         PR tree-optimization/110508
2182         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
2183         REALPART_EXPR opf nlhs if re2 is non-NULL.
2185 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2187         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
2188         Simplify.
2189         * config/xtensa/xtensa.md (*xtensa_clamps):
2190         Add TARGET_MINMAX to the condition.
2192 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2194         * config/xtensa/xtensa.md (*eqne_INT_MIN):
2195         Add missing ":SI" to the match_operator.
2197 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
2199         PR target/108743
2200         * config/darwin.opt: Add fconstant-cfstrings alias to
2201         mconstant-cfstrings.
2202         * doc/invoke.texi: Amend invocation descriptions to reflect
2203         that the fconstant-cfstrings is a target-option alias and to
2204         add the missing mconstant-cfstrings option description to the
2205         Darwin section.
2207 2023-07-01  Jan Hubicka  <jh@suse.cz>
2209         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
2210         parmaeter; update profile.
2211         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
2212         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
2213         (static_loop_exit): ... this; return the edge to be elliminated.
2214         (ch_base::copy_headers): Handle profile updating for eliminated exits.
2216 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
2218         * config/i386/i386-features.cc (compute_convert_gain): Provide
2219         gains/costs for ROTATE and ROTATERT (by an integer constant).
2220         (general_scalar_chain::convert_rotate): New helper function to
2221         convert a DImode or SImode rotation by an integer constant into
2222         SSE vector form.
2223         (general_scalar_chain::convert_insn): Call the new convert_rotate
2224         for ROTATE and ROTATERT.
2225         (general_scalar_to_vector_candidate_p): Consider ROTATE and
2226         ROTATERT to be candidates if the second operand is an integer
2227         constant, valid for a rotation (or shift) in the given mode.
2228         * config/i386/i386-features.h (general_scalar_chain): Add new
2229         helper method convert_rotate.
2231 2023-07-01  Jan Hubicka  <jh@suse.cz>
2233         PR tree-optimization/103680
2234         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
2235         make message clearer.
2237 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
2239         PR tree-optimization/101832
2240         * tree-object-size.cc (addr_object_size): Handle structure/union type
2241         when it has flexible size.
2243 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
2245         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
2246         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
2247         with integral bit-fields.
2248         (fold_ctor_reference): Make sure that the constructor uses the
2249         native storage order.
2251 2023-06-30  Jan Hubicka  <jh@suse.cz>
2253         PR middle-end/109849
2254         * predict.cc (estimate_bb_frequencies): Turn to static function.
2255         (expr_expected_value_1): Fix handling of binary expressions with
2256         predicted values.
2257         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
2258         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
2259         queue.
2260         * predict.h (estimate_bb_frequencies): No longer declare it.
2262 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
2264         * fold-const.h (multiple_of_p): Change return type from int to bool.
2265         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
2266         neg_conp_p and neg_var_p variables to bool.
2267         (const_binop): Change sat_p variable to bool.
2268         (merge_ranges): Change no_overlap variable to bool.
2269         (extract_muldiv_1): Change same_p variable to bool.
2270         (tree_swap_operands_p): Update function body for bool return type.
2271         (fold_truth_andor): Change commutative variable to bool.
2272         (multiple_of_p): Change return type
2273         from int to void and adjust function body accordingly.
2274         * optabs.h (expand_twoval_unop): Change return type from int to bool.
2275         (expand_twoval_binop): Ditto.
2276         (can_compare_p): Ditto.
2277         (have_add2_insn): Ditto.
2278         (have_addptr3_insn): Ditto.
2279         (have_sub2_insn): Ditto.
2280         (have_insn_for): Ditto.
2281         * optabs.cc (add_equal_note): Ditto.
2282         (widen_operand): Change no_extend argument from int to bool.
2283         (expand_binop): Ditto.
2284         (expand_twoval_unop): Change return type
2285         from int to void and adjust function body accordingly.
2286         (expand_twoval_binop): Ditto.
2287         (can_compare_p): Ditto.
2288         (have_add2_insn): Ditto.
2289         (have_addptr3_insn): Ditto.
2290         (have_sub2_insn): Ditto.
2291         (have_insn_for): Ditto.
2293 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
2295         * config/aarch64/aarch64-simd.md
2296         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
2297         Expansions for abd vec widen optabs.
2298         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
2299         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
2300         that give the appropriate extend RTL for the max RTL.
2302 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
2304         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
2305         * optabs.def (vec_widen_sabd_optab,
2306         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
2307         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
2308         vec_widen_uabd_optab,
2309         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
2310         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
2311         New optabs.
2312         * doc/md.texi: Document them.
2313         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
2314         to build a VEC_WIDEN_ABD call if the input precision is smaller
2315         than the precision of the output.
2316         (vect_recog_widen_abd_pattern): Should an ABD expression be
2317         found preceeding an extension, replace the two with a
2318         VEC_WIDEN_ABD.
2320 2023-06-30  Pan Li  <pan2.li@intel.com>
2322         * config/riscv/vector.md: Refactor the common condition.
2324 2023-06-30  Richard Biener  <rguenther@suse.de>
2326         PR tree-optimization/110496
2327         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
2328         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
2330 2023-06-30  Richard Biener  <rguenther@suse.de>
2332         PR middle-end/110489
2333         * statistics.cc (curr_statistics_hash): Add argument
2334         indicating whether we should allocate the hash.
2335         (statistics_fini_pass): If the hash isn't allocated
2336         only print the summary header.
2338 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
2339             Thomas Schwinge  <thomas@codesourcery.com>
2341         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
2343 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
2345         PR target/109435
2346         * config/mips/mips.cc (mips_function_arg_alignment): Returns
2347         the alignment of function argument. In case of typedef type,
2348         it returns the aligment of the aliased type.
2349         (mips_function_arg_boundary): Relocated calculation of the
2350         aligment of function arguments.
2352 2023-06-29  Jan Hubicka  <jh@suse.cz>
2354         PR tree-optimization/109849
2355         * ipa-fnsummary.cc (decompose_param_expr): Skip
2356         functions returning its parameter.
2357         (set_cond_stmt_execution_predicate): Return early
2358         if predicate was constructed.
2360 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
2362         PR c/77650
2363         * doc/extend.texi: Document GCC extension on a structure containing
2364         a flexible array member to be a member of another structure.
2366 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
2368         * print-tree.cc (print_node): Print new bit type_include_flexarray.
2369         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
2370         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
2371         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
2372         in bit no_named_args_stdarg_p properly for its corresponding type.
2373         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
2374         out bit no_named_args_stdarg_p properly for its corresponding type.
2375         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
2377 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
2379         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
2380         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
2381         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
2383 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
2385         * value-range.cc (frange::set): Do not call verify_range.
2386         (frange::normalize_kind): Verify range.
2387         (frange::union_nans): Do not call verify_range.
2388         (frange::union_): Same.
2389         (frange::intersect): Same.
2390         (irange::irange_single_pair_union): Call normalize_kind if
2391         necessary.
2392         (irange::union_): Same.
2393         (irange::intersect): Same.
2394         (irange::set_range_from_nonzero_bits): Verify range.
2395         (irange::set_nonzero_bits): Call normalize_kind if necessary.
2396         (irange::get_nonzero_bits): Tweak comment.
2397         (irange::intersect_nonzero_bits): Call normalize_kind if
2398         necessary.
2399         (irange::union_nonzero_bits): Same.
2400         * value-range.h (irange::normalize_kind): Verify range.
2402 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
2404         * cselib.h (rtx_equal_for_cselib_1):
2405         Change return type from int to bool.
2406         (references_value_p): Ditto.
2407         (rtx_equal_for_cselib_p): Ditto.
2408         * expr.h (can_store_by_pieces): Ditto.
2409         (try_casesi): Ditto.
2410         (try_tablejump): Ditto.
2411         (safe_from_p): Ditto.
2412         * sbitmap.h (bitmap_equal_p): Ditto.
2413         * cselib.cc (references_value_p): Change return type
2414         from int to void and adjust function body accordingly.
2415         (rtx_equal_for_cselib_1): Ditto.
2416         * expr.cc (is_aligning_offset): Ditto.
2417         (can_store_by_pieces): Ditto.
2418         (mostly_zeros_p): Ditto.
2419         (all_zeros_p): Ditto.
2420         (safe_from_p): Ditto.
2421         (is_aligning_offset): Ditto.
2422         (try_casesi): Ditto.
2423         (try_tablejump): Ditto.
2424         (store_constructor): Change "need_to_clear" and
2425         "const_bounds_p" variables to bool.
2426         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
2428 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
2430         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
2431         element_precision.
2433 2023-06-29  Richard Biener  <rguenther@suse.de>
2435         PR tree-optimization/110460
2436         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
2437         Only allow integral, pointer and scalar float type scalar_type.
2439 2023-06-29  Lili Cui  <lili.cui@intel.com>
2441         PR tree-optimization/110148
2442         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
2443         ops in this function.
2445 2023-06-29  Richard Biener  <rguenther@suse.de>
2447         PR middle-end/110452
2448         * expr.cc (store_constructor): Handle uniform boolean
2449         vectors with integer mode specially.
2451 2023-06-29  Richard Biener  <rguenther@suse.de>
2453         PR middle-end/110461
2454         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
2455         for VECTOR_TYPE_P.
2457 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
2459         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
2460         (array_slice): Relax va_gc constructor to handle all vectors
2461         with a vl_embed layout.
2463 2023-06-29  Pan Li  <pan2.li@intel.com>
2465         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
2466         (riscv_mode_needed): Likewise.
2467         (riscv_entity_mode_after): Likewise.
2468         (riscv_mode_after): Likewise.
2469         (riscv_mode_entry): Likewise.
2470         (riscv_mode_exit): Likewise.
2471         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
2472         for FRM.
2473         * config/riscv/riscv.md: Add FRM register.
2474         * config/riscv/vector-iterators.md: Add FRM type.
2475         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
2476         (fsrm): Define new insn for fsrm instruction.
2478 2023-06-29  Pan Li  <pan2.li@intel.com>
2480         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
2481         Add macro for static frm min and max.
2482         * config/riscv/riscv-vector-builtins-bases.cc
2483         (class binop_frm): New class for floating-point with frm.
2484         (BASE): Add vfadd for frm.
2485         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
2486         * config/riscv/riscv-vector-builtins-functions.def
2487         (vfadd_frm): Likewise.
2488         * config/riscv/riscv-vector-builtins-shapes.cc
2489         (struct alu_frm_def): New struct for alu with frm.
2490         (SHAPE): Add alu with frm.
2491         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
2492         * config/riscv/riscv-vector-builtins.cc
2493         (function_checker::report_out_of_range_and_not): New function
2494         for report out of range and not val.
2495         (function_checker::require_immediate_range_or): New function
2496         for checking in range or one val.
2497         * config/riscv/riscv-vector-builtins.h: Add function decl.
2499 2023-06-29  Cui, Lili  <lili.cui@intel.com>
2501         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
2502         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
2504 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
2506         PR target/110144
2507         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
2508         to insn before validating it.
2510 2023-06-28  Jan Hubicka  <jh@suse.cz>
2512         PR middle-end/110334
2513         * ipa-fnsummary.h (ipa_fn_summary): Add
2514         safe_to_inline_to_always_inline.
2515         * ipa-inline.cc (can_early_inline_edge_p): ICE
2516         if SSA is not built; do cycle checking for
2517         always_inline functions.
2518         (inline_always_inline_functions): Be recrusive;
2519         watch for cycles; do not updat overall summary.
2520         (early_inliner): Do not give up on always_inlines.
2521         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
2522         always inlines.
2524 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
2526         * output.h (leaf_function_p): Change return type from int to bool.
2527         (final_forward_branch_p): Ditto.
2528         (only_leaf_regs_used): Ditto.
2529         (maybe_assemble_visibility): Ditto.
2530         * varasm.h (supports_one_only): Ditto.
2531         * rtl.h (compute_alignments): Change return type from int to void.
2532         * final.cc (app_on): Change return type from int to bool.
2533         (compute_alignments): Change return type from int to void
2534         and adjust function body accordingly.
2535         (shorten_branches):  Change "something_changed" variable
2536         type from int to bool.
2537         (leaf_function_p):  Change return type from int to bool
2538         and adjust function body accordingly.
2539         (final_forward_branch_p): Ditto.
2540         (only_leaf_regs_used): Ditto.
2541         * varasm.cc (contains_pointers_p): Change return type from
2542         int to bool and adjust function body accordingly.
2543         (compare_constant): Ditto.
2544         (maybe_assemble_visibility): Ditto.
2545         (supports_one_only): Ditto.
2547 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
2549         PR debug/110308
2550         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
2551         (maybe_copy_reg_attrs): New function.
2552         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
2553         (copyprop_hardreg_forward_1): Ditto.
2555 2023-06-28  Richard Biener  <rguenther@suse.de>
2557         PR tree-optimization/110434
2558         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
2559         VAR we replace with <retval>.
2561 2023-06-28  Richard Biener  <rguenther@suse.de>
2563         PR tree-optimization/110451
2564         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
2565         tcc_comparison are expensive.
2567 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
2569         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
2570         for TImode comparisons on 32-bit architectures.
2571         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
2572         SWIM1248x to exclude/avoid TImode being conditional on -m64.
2573         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
2574         and/or with TARGET_SSE4_1.
2575         * config/i386/predicates.md (ix86_timode_comparison_operator):
2576         New predicate that depends upon TARGET_64BIT.
2577         (ix86_timode_comparison_operand): Likewise.
2579 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
2581         PR target/78794
2582         * config/i386/i386-features.cc (compute_convert_gain): Provide
2583         more accurate gains for conversion of scalar comparisons to
2584         PTEST.
2586 2023-06-28  Richard Biener  <rguenther@suse.de>
2588         PR tree-optimization/110443
2589         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
2590         gather loads.
2592 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
2594         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
2595         (peephole2 for move_and_compare): New.
2596         (mode_iterator WORD): New.  Set the mode to SI/DImode by
2597         TARGET_POWERPC64.
2598         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
2599         (split pattern for compare_and_move): Likewise.
2601 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2603         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
2604         (*single_widen_fma<mode>): Ditto.
2606 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
2608         PR target/104124
2609         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
2610         to...
2611         (altivec_vupkhs<VU_char>_direct): ...this.
2612         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
2613         predicate to test if a constant can be loaded with vspltisw and
2614         vupkhsw.
2615         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
2616         a vector constant can be synthesized with a vspltisw and a vupkhsw.
2617         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
2618         Declare.
2619         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
2620         function to return true if OP mode is V2DI and can be synthesized
2621         with vupkhsw and vspltisw.
2622         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
2623         constants with vspltisw and vupkhsw.
2625 2023-06-28  Jan Hubicka  <jh@suse.cz>
2627         PR tree-optimization/110377
2628         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
2629         the ranger query.
2630         (ipa_analyze_node): Enable ranger.
2632 2023-06-28  Richard Biener  <rguenther@suse.de>
2634         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
2635         (TYPE_PRECISION_RAW): Provide raw access to the precision
2636         field.
2637         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
2638         (gimple_canonical_types_compatible_p): Likewise.
2639         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
2640         Stream TYPE_PRECISION_RAW.
2641         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
2642         Likewise.
2643         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
2645 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
2647         * doc/extend.texi (zero-call-used-regs): Document leafy and
2648         variants thereof.
2649         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
2650         LEAFY and variants.
2651         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
2652         functions in leafy mode.
2653         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
2655 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2657         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
2658         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
2659         Remove.
2660         (@pred_single_widen_add<mode>): New pattern.
2661         (@pred_single_widen_sub<mode>): New pattern.
2663 2023-06-28  liuhongt  <hongtao.liu@intel.com>
2665         * config/i386/i386.cc (ix86_invalid_conversion): New function.
2666         (TARGET_INVALID_CONVERSION): Define as
2667         ix86_invalid_conversion.
2669 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2671         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
2672         expander.
2673         (<float_cvt><vnconvert><mode>2): Ditto.
2674         (<optab><mode><vnconvert>2): Ditto.
2675         (<float_cvt><mode><vnconvert>2): Ditto.
2676         * config/riscv/vector-iterators.md: Add vnconvert.
2678 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2680         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
2681         expander.
2682         (extend<v_quad_trunc><mode>2): Ditto.
2683         (trunc<mode><v_double_trunc>2): Ditto.
2684         (trunc<mode><v_quad_trunc>2): Ditto.
2685         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
2686         V_QUAD_TRUNC and v_quad_trunc.
2688 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2690         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
2691         expander.
2693 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2695         * config/riscv/autovec.md (copysign<mode>3): Add expander.
2696         (xorsign<mode>3): Ditto.
2697         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
2698         New class.
2699         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
2700         (xorsign): Ditto.
2701         (n): Ditto.
2702         (x): Ditto.
2703         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
2704         (@pred_ncopysign<mode>_scalar): Ditto.
2706 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2708         * config/riscv/autovec.md: VF_AUTO -> VF.
2709         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
2710         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
2711         VHF_LMUL1.
2712         * config/riscv/vector.md: Use new iterators.
2714 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
2716         * match.pd: Use element_mode and check if target supports
2717         operation with new type.
2719 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2721         * config/aarch64/aarch64-sve-builtins-base.cc
2722         (svdupq_impl::fold_nonconst_dupq): New method.
2723         (svdupq_impl::fold): Call fold_nonconst_dupq.
2725 2023-06-27  Andrew Pinski  <apinski@marvell.com>
2727         PR middle-end/110420
2728         PR middle-end/103979
2729         PR middle-end/98619
2730         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
2732 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
2734         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
2735         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
2736         for Value_Range.
2737         (set_switch_stmt_execution_predicate): Same.
2738         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
2740 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
2742         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
2743         ipa_vr instead of value_range.
2744         (gt_pch_nx): Same.
2745         (gt_ggc_mx): Same.
2746         (ipa_get_value_range): Same.
2747         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
2748         ipa_vr.
2749         (gt_ggc_mx): Same.
2751 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
2753         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
2754         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
2755         (ipa_set_jfunc_vr): Take a range.
2756         (ipa_compute_jump_functions_for_edge): Pass range to
2757         ipa_set_jfunc_vr.
2758         (ipa_write_jump_function): Call streamer write helper.
2759         (ipa_read_jump_function): Call streamer read helper.
2760         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
2762 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
2764         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
2765         as a probable initializer rather than a probable complete statement.
2767 2023-06-27  Richard Biener  <rguenther@suse.de>
2769         PR tree-optimization/96208
2770         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
2771         a non-grouped load if it is the same for all lanes.
2772         (vect_build_slp_tree_2): Handle not grouped loads.
2773         (vect_optimize_slp_pass::remove_redundant_permutations):
2774         Likewise.
2775         (vect_transform_slp_perm_load_1): Likewise.
2776         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
2777         (get_group_load_store_type): Likewise.  Handle
2778         invariant accesses.
2779         (vectorizable_load): Likewise.
2781 2023-06-27  liuhongt  <hongtao.liu@intel.com>
2783         PR rtl-optimization/110237
2784         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
2785         UNSPEC_MASKMOV.
2786         (maskstore<mode><avx512fmaskmodelower): Ditto.
2787         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
2788         from original <avx512>_store<mode>_mask.
2790 2023-06-27  liuhongt  <hongtao.liu@intel.com>
2792         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
2793         Move flag_expensive_optimizations && !optimize_size to ..
2794         * config/i386/i386-options.cc (ix86_option_override_internal):
2795         .. this, it makes -mvzeroupper independent of optimization
2796         level, but still keeps the behavior of architecture
2797         tuning(emit_vzeroupper) unchanged.
2799 2023-06-27  liuhongt  <hongtao.liu@intel.com>
2801         PR target/82735
2802         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
2803         vzeroupper for vzeroupper call_insn.
2805 2023-06-27  Andrew Pinski  <apinski@marvell.com>
2807         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
2808         defbuiltin usage.
2810 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2812         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
2813         with base != 0.
2815 2023-06-26  Andrew Pinski  <apinski@marvell.com>
2817         * doc/extend.texi (access attribute): Add
2818         cindex for it.
2819         (interrupt/interrupt_handler attribute):
2820         Likewise.
2822 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2824         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
2825         Use <DWI> instead of <V2XWIDE>.
2826         (aarch64_sqrshrun_n<mode>): Likewise.
2828 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2830         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
2831         Rename to...
2832         (aarch64_rnd_imm_p): ... This.
2833         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
2834         Rename to...
2835         (aarch64_int_rnd_operand): ... This.
2836         (aarch64_simd_rshrn_imm_vec): Delete.
2837         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
2838         Adjust for the above.
2839         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
2840         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
2841         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
2842         (aarch64_sqrshrun_n<mode>_insn): Likewise.
2843         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
2844         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
2845         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
2846         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
2847         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
2848         Rename to...
2849         (aarch64_rnd_imm_p): ... This.
2851 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
2853         * config/s390/s390.cc (s390_encode_section_info): Set
2854         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
2855         misaligned.
2857 2023-06-26  Jan Hubicka  <jh@suse.cz>
2859         PR tree-optimization/109849
2860         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
2861         count of newly constructed forwarder block.
2863 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
2865         * doc/optinfo.texi: Fix "steam" -> "stream".
2867 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2869         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
2870         fix LEN_STORE.
2871         (dse_optimize_stmt): Add LEN_MASK_STORE.
2873 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2875         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
2876         fold of LOAD/STORE with length.
2878 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
2880         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
2881         Check for interdependence between operands 1 and 2.
2883 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
2885         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
2886         into account when costing non-widening/truncating conversions.
2888 2023-06-26  Richard Biener  <rguenther@suse.de>
2890         PR tree-optimization/110381
2891         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
2892         Materialize permutes before fold-left reductions.
2894 2023-06-26  Pan Li  <pan2.li@intel.com>
2896         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
2898 2023-06-26  Richard Biener  <rguenther@suse.de>
2900         * varasm.cc (initializer_constant_valid_p_1): Also
2901         constrain the type of value to be scalar integral
2902         before dispatching to narrowing_initializer_constant_valid_p.
2904 2023-06-26  Richard Biener  <rguenther@suse.de>
2906         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
2907         Use element_precision.
2909 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2911         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
2912         vcond patterns.
2913         (vcondu<V:mode><VI:mode>): Ditto.
2914         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
2915         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
2917 2023-06-26  Richard Biener  <rguenther@suse.de>
2919         PR tree-optimization/110392
2920         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
2921         Do early exits on true/false predicate only after normalization.
2923 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2925         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
2926         "length".
2928 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
2930         * config/i386/i386.md (peephole2): Simplify zeroing a register
2931         followed by an IOR, XOR or PLUS operation on it, into a move.
2932         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
2933         eliminate (and hide from reload) unnecessary word to doubleword
2934         extensions that are followed by left shifts by sufficiently large,
2935         but valid, bit counts.
2937 2023-06-26  liuhongt  <hongtao.liu@intel.com>
2939         PR tree-optimization/110371
2940         PR tree-optimization/110018
2941         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
2942         save intermediate type operand instead of "subtle" vec_dest
2943         for case NONE.
2945 2023-06-26  liuhongt  <hongtao.liu@intel.com>
2947         PR tree-optimization/110371
2948         PR tree-optimization/110018
2949         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
2950         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
2952 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
2954         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
2955         Override tune_string with arch_string if tune_string is not
2956         explicitly specified.
2958 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2960         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
2961         AVL propagation.
2962         * config/riscv/riscv-vsetvl.h: New function.
2964 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
2966         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
2967         emit_move_insn
2969 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2971         * config/riscv/autovec.md (len_load_<mode>): Remove.
2972         (len_maskload<mode><vm>): Remove.
2973         (len_store_<mode>): New pattern.
2974         (len_maskstore<mode><vm>): New pattern.
2975         * config/riscv/predicates.md (autovec_length_operand): New predicate.
2976         * config/riscv/riscv-protos.h (enum insn_type): New enum.
2977         (expand_load_store): New function.
2978         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
2979         (emit_nonvlmax_masked_insn): Ditto.
2980         (expand_load_store): Ditto.
2981         * config/riscv/riscv-vector-builtins.cc
2982         (function_expander::use_contiguous_store_insn): Add avl_type operand
2983         into pred_store.
2984         * config/riscv/vector.md: Ditto.
2986 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2988         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
2989         argument index.
2991 2023-06-25  Pan Li  <pan2.li@intel.com>
2993         * config/riscv/vector.md: Revert.
2995 2023-06-25  Pan Li  <pan2.li@intel.com>
2997         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
2998         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
2999         (ADJUST_ALIGNMENT): Ditto.
3000         (RVV_TUPLE_PARTIAL_MODES): Ditto.
3001         (ADJUST_NUNITS): Ditto.
3002         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
3003         (vfloat16mf4x3_t): Ditto.
3004         (vfloat16mf4x4_t): Ditto.
3005         (vfloat16mf4x5_t): Ditto.
3006         (vfloat16mf4x6_t): Ditto.
3007         (vfloat16mf4x7_t): Ditto.
3008         (vfloat16mf4x8_t): Ditto.
3009         (vfloat16mf2x2_t): Ditto.
3010         (vfloat16mf2x3_t): Ditto.
3011         (vfloat16mf2x4_t): Ditto.
3012         (vfloat16mf2x5_t): Ditto.
3013         (vfloat16mf2x6_t): Ditto.
3014         (vfloat16mf2x7_t): Ditto.
3015         (vfloat16mf2x8_t): Ditto.
3016         (vfloat16m1x2_t): Ditto.
3017         (vfloat16m1x3_t): Ditto.
3018         (vfloat16m1x4_t): Ditto.
3019         (vfloat16m1x5_t): Ditto.
3020         (vfloat16m1x6_t): Ditto.
3021         (vfloat16m1x7_t): Ditto.
3022         (vfloat16m1x8_t): Ditto.
3023         (vfloat16m2x2_t): Ditto.
3024         (vfloat16m2x3_t): Diito.
3025         (vfloat16m2x4_t): Diito.
3026         (vfloat16m4x2_t): Diito.
3027         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
3028         (vfloat16mf4x3_t): Ditto.
3029         (vfloat16mf4x4_t): Ditto.
3030         (vfloat16mf4x5_t): Ditto.
3031         (vfloat16mf4x6_t): Ditto.
3032         (vfloat16mf4x7_t): Ditto.
3033         (vfloat16mf4x8_t): Ditto.
3034         (vfloat16mf2x2_t): Ditto.
3035         (vfloat16mf2x3_t): Ditto.
3036         (vfloat16mf2x4_t): Ditto.
3037         (vfloat16mf2x5_t): Ditto.
3038         (vfloat16mf2x6_t): Ditto.
3039         (vfloat16mf2x7_t): Ditto.
3040         (vfloat16mf2x8_t): Ditto.
3041         (vfloat16m1x2_t): Ditto.
3042         (vfloat16m1x3_t): Ditto.
3043         (vfloat16m1x4_t): Ditto.
3044         (vfloat16m1x5_t): Ditto.
3045         (vfloat16m1x6_t): Ditto.
3046         (vfloat16m1x7_t): Ditto.
3047         (vfloat16m1x8_t): Ditto.
3048         (vfloat16m2x2_t): Ditto.
3049         (vfloat16m2x3_t): Ditto.
3050         (vfloat16m2x4_t): Ditto.
3051         (vfloat16m4x2_t): Ditto.
3052         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
3053         * config/riscv/riscv.md: Ditto.
3054         * config/riscv/vector-iterators.md: Ditto.
3056 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3058         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
3059         (gimple_fold_partial_load_store_mem_ref): Ditto.
3060         (gimple_fold_partial_store): Ditto.
3061         (gimple_fold_call): Ditto.
3063 2023-06-25  liuhongt  <hongtao.liu@intel.com>
3065         PR target/110309
3066         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
3067         Refine pattern with UNSPEC_MASKLOAD.
3068         (maskload<mode><avx512fmaskmodelower>): Ditto.
3069         (*<avx512>_load<mode>_mask): Extend mode iterator to
3070         VI12HFBF_AVX512VL.
3071         (*<avx512>_load<mode>): Ditto.
3073 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3075         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
3077 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3079         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
3080         LEN_MASK_{LOAD,STORE}
3082 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
3084         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
3086 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
3088         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
3090 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3092         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
3093         (*fma<VI:mode><P:mode>): Ditto.
3094         (*fnma<mode>): Ditto.
3095         (*fnma<VI:mode><P:mode>): Ditto.
3097 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3099         * config/riscv/autovec.md (fma<mode>4): New pattern.
3100         (*fma<mode>): Ditto.
3101         (fnma<mode>4): Ditto.
3102         (*fnma<mode>): Ditto.
3103         (fms<mode>4): Ditto.
3104         (*fms<mode>): Ditto.
3105         (fnms<mode>4): Ditto.
3106         (*fnms<mode>): Ditto.
3107         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
3108         New function.
3109         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
3110         * config/riscv/vector.md: Fix attribute bug.
3112 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3114         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
3115         Apply LEN_MASK_{LOAD,STORE}.
3117 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3119         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
3120         Add LEN_MASK_{LOAD,STORE}.
3122 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
3124         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
3125         * diagnostic.cc: Likewise.
3126         * text-art/box-drawing.cc: Likewise.
3127         * text-art/canvas.cc: Likewise.
3128         * text-art/ruler.cc: Likewise.
3129         * text-art/selftests.cc: Likewise.
3130         * text-art/selftests.h (text_art::canvas): New forward decl.
3131         * text-art/style.cc: Add #define INCLUDE_VECTOR.
3132         * text-art/styled-string.cc: Likewise.
3133         * text-art/table.cc: Likewise.
3134         * text-art/table.h: Remove #include <vector>.
3135         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
3136         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
3137         Remove #include of <vector> and <string>.
3138         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
3139         * text-art/widget.h: Remove #include <vector>.
3141 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3143         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
3144         (internal_load_fn_p): Add LEN_MASK_LOAD.
3145         (internal_store_fn_p): Add LEN_MASK_STORE.
3146         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
3147         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
3148         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
3149         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
3150         (get_len_load_store_mode): Ditto.
3151         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
3152         (get_len_load_store_mode): Ditto.
3153         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
3154         (get_all_ones_mask): New function.
3155         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
3156         (vectorizable_load): Ditto.
3158 2023-06-23  Marek Polacek  <polacek@redhat.com>
3160         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
3161         -std=gnu++26.  Document that for C++23, its value is 202302L.
3162         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
3163         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
3164         (gen_compile_unit_die): Likewise.
3166 2023-06-23  Jan Hubicka  <jh@suse.cz>
3168         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
3169         demand.
3170         (pass_phiprop::execute): Do not compute it here; return
3171         update_ssa_only_virtuals if something changed.
3172         (pass_data_phiprop): Remove TODO_update_ssa from todos.
3174 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
3175             Aaron Sawdey   <acsawdey@linux.ibm.com>
3177         PR target/105325
3178         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
3179         allowed prefixed lwa to be generated.
3180         * config/rs6000/fusion.md: Regenerate.
3181         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
3182         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
3183         plus compare immediate fused insns.
3184         (maybe_prefixed): Likewise.
3186 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
3188         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
3189         of ASHIFT to const0_rtx with sufficiently large shift count.
3190         Optimize highpart SUBREGs of ASHIFT as the shift operand when
3191         the shift count is the correct offset.  Optimize SUBREGs of
3192         multi-word logic operations if the SUBREGs of both operands
3193         can be simplified.
3195 2023-06-23  Richard Biener  <rguenther@suse.de>
3197         * varasm.cc (initializer_constant_valid_p_1): Only
3198         allow conversions between scalar floating point types.
3200 2023-06-23  Richard Biener  <rguenther@suse.de>
3202         * tree-vect-stmts.cc (vectorizable_assignment):
3203         Properly handle non-integral operands when analyzing
3204         conversions.
3206 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3208         PR tree-optimization/110280
3209         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
3210         using build_vector_from_val with the element of input operand, and
3211         mask's type if operand and mask's types don't match.
3213 2023-06-23  Richard Biener  <rguenther@suse.de>
3215         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
3216         the truth_value_p case with !VECTOR_TYPE_P.
3218 2023-06-23  Richard Biener  <rguenther@suse.de>
3220         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
3221         Exit early when the type isn't scalar integral.
3223 2023-06-23  Richard Biener  <rguenther@suse.de>
3225         * match.pd ((outertype)((innertype0)a+(innertype1)b)
3226         -> ((newtype)a+(newtype)b)): Use element_precision
3227         where appropriate.
3229 2023-06-23  Richard Biener  <rguenther@suse.de>
3231         * fold-const.cc (fold_binary_loc): Use element_precision
3232         when trying (double)float1 CMP (double)float2 to
3233         float1 CMP float2 simplification.
3234         * match.pd: Likewise.
3236 2023-06-23  Richard Biener  <rguenther@suse.de>
3238         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
3239         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
3241 2023-06-23  Richard Biener  <rguenther@suse.de>
3243         * tree-vect-stmts.cc (vector_vector_composition_type):
3244         Handle composition of a vector from a number of elements that
3245         happens to match its number of lanes.
3247 2023-06-22  Marek Polacek  <polacek@redhat.com>
3249         * configure.ac (--enable-host-bind-now): New check.  Add
3250         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
3251         * configure: Regenerate.
3252         * doc/install.texi: Document --enable-host-bind-now.
3254 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
3256         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
3258 2023-06-22  Richard Biener  <rguenther@suse.de>
3260         PR tree-optimization/110332
3261         * tree-ssa-phiprop.cc (propagate_with_phi): Always
3262         check aliasing with edge inserted loads.
3264 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
3265             Uros Bizjak  <ubizjak@gmail.com>
3267         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
3268         expansion of ptestc with equal operands as producing const1_rtx.
3269         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
3270         estimates of UNSPEC_PTEST, where the ptest performs the PAND
3271         or PAND of its operands.
3272         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
3273         of reg_equal_p operands into an x86_stc instruction.
3274         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
3275         (define_split): Similar to above for strict_low_part destinations.
3276         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
3278 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
3280         PR analyzer/106626
3281         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
3282         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
3283         text art.
3284         (fanalyzer-debug-text-art): New.
3286 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
3288         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
3289         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
3290         text-art/style.o, text-art/styled-string.o, text-art/table.o,
3291         text-art/theme.o, and text-art/widget.o.
3292         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
3293         (COLOR_FG_BRIGHT_RED): New.
3294         (COLOR_FG_BRIGHT_GREEN): New.
3295         (COLOR_FG_BRIGHT_YELLOW): New.
3296         (COLOR_FG_BRIGHT_BLUE): New.
3297         (COLOR_FG_BRIGHT_MAGENTA): New.
3298         (COLOR_FG_BRIGHT_CYAN): New.
3299         (COLOR_FG_BRIGHT_WHITE): New.
3300         (COLOR_BG_BRIGHT_BLACK): New.
3301         (COLOR_BG_BRIGHT_RED): New.
3302         (COLOR_BG_BRIGHT_GREEN): New.
3303         (COLOR_BG_BRIGHT_YELLOW): New.
3304         (COLOR_BG_BRIGHT_BLUE): New.
3305         (COLOR_BG_BRIGHT_MAGENTA): New.
3306         (COLOR_BG_BRIGHT_CYAN): New.
3307         (COLOR_BG_BRIGHT_WHITE): New.
3308         * common.opt (fdiagnostics-text-art-charset=): New option.
3309         (diagnostic-text-art.h): New SourceInclude.
3310         (diagnostic_text_art_charset) New Enum and EnumValues.
3311         * configure: Regenerate.
3312         * configure.ac (gccdepdir): Add text-art to loop.
3313         * diagnostic-diagram.h: New file.
3314         * diagnostic-format-json.cc (json_emit_diagram): New.
3315         (diagnostic_output_format_init_json): Wire it up to
3316         context->m_diagrams.m_emission_cb.
3317         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
3318         "text-art/canvas.h".
3319         (sarif_result::on_nested_diagnostic): Move code to...
3320         (sarif_result::add_related_location): ...this new function.
3321         (sarif_result::on_diagram): New.
3322         (sarif_builder::emit_diagram): New.
3323         (sarif_builder::make_message_object_for_diagram): New.
3324         (sarif_emit_diagram): New.
3325         (diagnostic_output_format_init_sarif): Set
3326         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
3327         * diagnostic-text-art.h: New file.
3328         * diagnostic.cc: Include "diagnostic-text-art.h",
3329         "diagnostic-diagram.h", and "text-art/theme.h".
3330         (diagnostic_initialize): Initialize context->m_diagrams and
3331         call diagnostics_text_art_charset_init.
3332         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
3333         (diagnostic_emit_diagram): New.
3334         (diagnostics_text_art_charset_init): New.
3335         * diagnostic.h (text_art::theme): New forward decl.
3336         (class diagnostic_diagram): Likewise.
3337         (diagnostic_context::m_diagrams): New field.
3338         (diagnostic_emit_diagram): New decl.
3339         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
3340         -fdiagnostics-text-art-charset=.
3341         (-fdiagnostics-plain-output): Add
3342         -fdiagnostics-text-art-charset=none.
3343         * gcc.cc: Include "diagnostic-text-art.h".
3344         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3345         * opts-common.cc (decode_cmdline_options_to_array): Add
3346         "-fdiagnostics-text-art-charset=none" to expanded_args for
3347         -fdiagnostics-plain-output.
3348         * opts.cc: Include "diagnostic-text-art.h".
3349         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3350         * pretty-print.cc (pp_unicode_character): New.
3351         * pretty-print.h (pp_unicode_character): New decl.
3352         * selftest-run-tests.cc: Include "text-art/selftests.h".
3353         (selftest::run_tests): Call text_art_tests.
3354         * text-art/box-drawing-chars.inc: New file, generated by
3355         contrib/unicode/gen-box-drawing-chars.py.
3356         * text-art/box-drawing.cc: New file.
3357         * text-art/box-drawing.h: New file.
3358         * text-art/canvas.cc: New file.
3359         * text-art/canvas.h: New file.
3360         * text-art/ruler.cc: New file.
3361         * text-art/ruler.h: New file.
3362         * text-art/selftests.cc: New file.
3363         * text-art/selftests.h: New file.
3364         * text-art/style.cc: New file.
3365         * text-art/styled-string.cc: New file.
3366         * text-art/table.cc: New file.
3367         * text-art/table.h: New file.
3368         * text-art/theme.cc: New file.
3369         * text-art/theme.h: New file.
3370         * text-art/types.h: New file.
3371         * text-art/widget.cc: New file.
3372         * text-art/widget.h: New file.
3374 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
3376         * function.h (emit_initial_value_sets):
3377         Change return type from int to void.
3378         (aggregate_value_p): Change return type from int to bool.
3379         (prologue_contains): Ditto.
3380         (epilogue_contains): Ditto.
3381         (prologue_epilogue_contains): Ditto.
3382         * function.cc (temp_slot): Make "in_use" variable bool.
3383         (make_slot_available): Update for changed "in_use" variable.
3384         (assign_stack_temp_for_type): Ditto.
3385         (emit_initial_value_sets): Change return type from int to void
3386         and update function body accordingly.
3387         (instantiate_virtual_regs): Ditto.
3388         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
3389         (safe_insn_predicate): Change return type from int to bool.
3390         (aggregate_value_p): Change return type from int to bool
3391         and update function body accordingly.
3392         (prologue_contains): Change return type from int to bool.
3393         (prologue_epilogue_contains): Ditto.
3395 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
3397         * common.opt (fp_contract_mode) [on]: Remove fallback.
3398         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
3399         * doc/invoke.texi (-ffp-contract): Update.
3400         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
3402 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3404         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
3405         Add alternatives to prefer to avoid same input and output Z register.
3406         (mask_gather_load<mode><v_int_container>): Likewise.
3407         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
3408         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
3409         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
3410         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
3411         Likewise.
3412         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
3413         Likewise.
3414         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3415         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
3416         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3417         <SVE_2BHSI:mode>_sxtw): Likewise.
3418         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3419         <SVE_2BHSI:mode>_uxtw): Likewise.
3420         (@aarch64_ldff1_gather<mode>): Likewise.
3421         (@aarch64_ldff1_gather<mode>): Likewise.
3422         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
3423         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
3424         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
3425         <VNx4_NARROW:mode>): Likewise.
3426         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3427         <VNx2_NARROW:mode>): Likewise.
3428         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3429         <VNx2_NARROW:mode>_sxtw): Likewise.
3430         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3431         <VNx2_NARROW:mode>_uxtw): Likewise.
3432         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
3433         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
3434         <SVE_PARTIAL_I:mode>): Likewise.
3436 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3438         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
3439         Convert to compact alternatives syntax.
3440         (mask_gather_load<mode><v_int_container>): Likewise.
3441         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
3442         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
3443         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
3444         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
3445         Likewise.
3446         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
3447         Likewise.
3448         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3449         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
3450         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3451         <SVE_2BHSI:mode>_sxtw): Likewise.
3452         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3453         <SVE_2BHSI:mode>_uxtw): Likewise.
3454         (@aarch64_ldff1_gather<mode>): Likewise.
3455         (@aarch64_ldff1_gather<mode>): Likewise.
3456         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
3457         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
3458         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
3459         <VNx4_NARROW:mode>): Likewise.
3460         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3461         <VNx2_NARROW:mode>): Likewise.
3462         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3463         <VNx2_NARROW:mode>_sxtw): Likewise.
3464         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3465         <VNx2_NARROW:mode>_uxtw): Likewise.
3466         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
3467         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
3468         <SVE_PARTIAL_I:mode>): Likewise.
3470 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3472         Revert:
3473         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3475         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
3476         Convert to compact alternatives syntax.
3477         (mask_gather_load<mode><v_int_container>): Likewise.
3478         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
3479         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
3480         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
3481         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
3482         Likewise.
3483         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
3484         Likewise.
3485         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3486         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
3487         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3488         <SVE_2BHSI:mode>_sxtw): Likewise.
3489         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3490         <SVE_2BHSI:mode>_uxtw): Likewise.
3491         (@aarch64_ldff1_gather<mode>): Likewise.
3492         (@aarch64_ldff1_gather<mode>): Likewise.
3493         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
3494         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
3495         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
3496         <VNx4_NARROW:mode>): Likewise.
3497         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3498         <VNx2_NARROW:mode>): Likewise.
3499         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3500         <VNx2_NARROW:mode>_sxtw): Likewise.
3501         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3502         <VNx2_NARROW:mode>_uxtw): Likewise.
3503         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
3504         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
3505         <SVE_PARTIAL_I:mode>): Likewise.
3507 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3509         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
3510         (get_len_load_store_mode): Ditto.
3511         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
3512         (get_len_load_store_mode): Ditto.
3513         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
3514         (get_len_load_store_mode): Ditto.
3515         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
3516         (get_len_load_store_mode): Ditto.
3517         * tree-if-conv.cc: include optabs-tree instead of optabs-query
3519 2023-06-21  Richard Biener  <rguenther@suse.de>
3521         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
3522         split_constant_offset for the POINTER_PLUS_EXPR case.
3524 2023-06-21  Richard Biener  <rguenther@suse.de>
3526         * tree-ssa-loop-ivopts.cc (record_group_use): Use
3527         split_constant_offset.
3529 2023-06-21  Richard Biener  <rguenther@suse.de>
3531         * tree-loop-distribution.cc (classify_builtin_st): Use
3532         split_constant_offset.
3533         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
3534         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
3536 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3538         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
3539         Convert to compact alternatives syntax.
3540         (mask_gather_load<mode><v_int_container>): Likewise.
3541         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
3542         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
3543         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
3544         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
3545         Likewise.
3546         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
3547         Likewise.
3548         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3549         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
3550         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3551         <SVE_2BHSI:mode>_sxtw): Likewise.
3552         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
3553         <SVE_2BHSI:mode>_uxtw): Likewise.
3554         (@aarch64_ldff1_gather<mode>): Likewise.
3555         (@aarch64_ldff1_gather<mode>): Likewise.
3556         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
3557         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
3558         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
3559         <VNx4_NARROW:mode>): Likewise.
3560         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3561         <VNx2_NARROW:mode>): Likewise.
3562         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3563         <VNx2_NARROW:mode>_sxtw): Likewise.
3564         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
3565         <VNx2_NARROW:mode>_uxtw): Likewise.
3566         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
3567         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
3568         <SVE_PARTIAL_I:mode>): Likewise.
3570 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
3572         PR other/110329
3573         * doc/md.texi: Replace backslashchar.
3575 2023-06-21  Richard Biener  <rguenther@suse.de>
3577         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
3578         Overload.  For masked main loops make sure the vectorization
3579         factor isn't more than double the number of iterations.
3581 2023-06-21  Jan Beulich  <jbeulich@suse.com>
3583         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
3584         value duplication by ix86_build_signbit_mask() when AVX512F and
3585         not HFmode.
3586         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
3587         2-alternative form. Adjust "mode" attribute. Add "enabled"
3588         attribute.
3589         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
3590         && !TARGET_PREFER_AVX256.
3591         (*<avx512>_vpternlog<mode>_2): Likewise.
3592         (*<avx512>_vpternlog<mode>_3): Likewise.
3594 2023-06-21  liuhongt  <hongtao.liu@intel.com>
3596         PR target/110018
3597         * tree-vect-stmts.cc (vectorizable_conversion): Use
3598         intermiediate integer type for float_expr/fix_trunc_expr when
3599         direct optab is not existed.
3601 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
3603         PR bootstrap/110324
3604         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
3606 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
3608         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
3609         register operand to the stack pointer.  Require the second register
3610         operand to have the number specified in a separate const_int operand.
3611         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
3612         (aarch64_allocate_and_probe_stack_space): Use it.
3613         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
3614         (aarch64_expand_epilogue): Likewise.
3616 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
3618         PR middle-end/79173
3619         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
3620         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
3621         type.
3623 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
3625         * calls.h (setjmp_call_p): Change return type from int to bool.
3626         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
3627         (store_one_arg): Change return type from int to bool
3628         and adjust function body accordingly.  Change "sibcall_failure"
3629         variable to bool.
3630         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
3631         argument  to bool.  Change "partial_seen" variable to bool.
3632         (load_register_parameters):  Change *sibcall_failure
3633         pointer argument to bool.
3634         (check_sibcall_argument_overlap_1): Change return type from int to bool
3635         and adjust function body accordingly.
3636         (check_sibcall_argument_overlap):  Ditto.  Change
3637         "mark_stored_args_map" argument to bool.
3638         (emit_call_1): Change "already_popped" variable to bool.
3639         (setjmp_call_p): Change return type from int to bool
3640         and adjust function body accordingly.
3641         (initialize_argument_information): Change *must_preallocate
3642         pointer argument to bool.
3643         (expand_call): Change "pcc_struct_value", "must_preallocate"
3644         and "sibcall_failure" variables to bool.
3645         (emit_library_call_value_1): Change "pcc_struct_value"
3646         variable to bool.
3648 2023-06-20  Martin Jambor  <mjambor@suse.cz>
3650         PR ipa/110276
3651         * ipa-sra.cc (struct caller_issues): New field there_is_one.
3652         (check_for_caller_issues): Set it.
3653         (check_all_callers_for_issues): Check it.
3655 2023-06-20  Martin Jambor  <mjambor@suse.cz>
3657         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
3658         (struct ipcp_transformation): Rearrange members according to
3659         C++ class coding convention, add m_uid_to_idx,
3660         get_param_index and maybe_create_parm_idx_map.
3661         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
3662         (compare_uids): Likewise.
3663         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
3664         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
3665         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
3666         (ipcp_update_vr): Likewise.
3667         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
3668         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
3670 2023-06-20  Carl Love  <cel@us.ibm.com>
3672         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
3673         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
3674         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
3675         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
3676         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
3677         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
3678         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
3679         * config/rs6000/rs6000-builtins.def
3680         (__builtin_vsx_scalar_extract_exp_to_vec,
3681         __builtin_vsx_scalar_extract_sig_to_vec,
3682         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
3683         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
3684         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
3685         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
3686         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
3687         overloaded instance. Update comments.
3688         * config/rs6000/rs6000-overload.def
3689         (__builtin_vec_scalar_insert_exp): Add new overload definition with
3690         vector arguments.
3691         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
3692         overloaded definitions.
3693         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
3694         (DI_to_TI): New mode attribute.
3695         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
3696         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
3697         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
3698         * doc/extend.texi (scalar_extract_exp_to_vec,
3699         scalar_extract_sig_to_vec): Add documentation for new builtins.
3700         (scalar_insert_exp): Add new overloaded builtin definition.
3702 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
3704         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
3705         size of vector mask mode to one rvv register.
3707 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3709         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
3711 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
3713         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
3714         switch handler.
3716 2023-06-20  Richard Biener  <rguenther@suse.de>
3718         * tree-ssa-dse.cc (dse_classify_store): When we found
3719         no defs and the basic-block with the original definition
3720         ends in __builtin_unreachable[_trap] the store is dead.
3722 2023-06-20  Richard Biener  <rguenther@suse.de>
3724         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
3725         keep the virtual SSA form up-to-date.
3727 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3729         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
3730         New define_insn_and_split.
3732 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
3734         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
3736 2023-06-20  Jan Beulich  <jbeulich@suse.com>
3738         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
3739         constraint. Add new AVX512F alternative.
3741 2023-06-20  Richard Biener  <rguenther@suse.de>
3743         PR debug/110295
3744         * dwarf2out.cc (process_scope_var): Continue processing
3745         the decl after setting a parent in case the existing DIE
3746         was in limbo.
3748 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
3750         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
3751         (riscv_arg_has_vector): Simplify.
3752         (riscv_pass_in_vector_p): Adjust warning message.
3754 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
3756         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
3757         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
3758         * config/riscv/riscv.md (riscv_frcsr): New patterns.
3759         (riscv_fscsr): Likewise.
3761 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
3763         PR rtl-optimization/110305
3764         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
3765         Handle HONOR_SNANS for x + 0.0.
3767 2023-06-19  Jan Hubicka  <jh@suse.cz>
3769         PR tree-optimization/109811
3770         PR tree-optimization/109849
3771         * passes.def: Add phiprop to early optimization passes.
3772         * tree-ssa-phiprop.cc: Allow clonning.
3774 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
3776         * config/aarch64/aarch64.md (arches): Add nosimd.
3777         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
3778         compact syntax.
3780 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
3781             Omar Tahir  <Omar.Tahir2@arm.com>
3783         * gensupport.cc (class conlist, add_constraints, add_attributes,
3784         skip_spaces, expect_char, preprocess_compact_syntax,
3785         parse_section_layout, parse_section, convert_syntax): New.
3786         (process_rtx): Check for conversion.
3787         * genoutput.cc (process_template): Check for unresolved iterators.
3788         (class data): Add compact_syntax_p.
3789         (gen_insn): Use it.
3790         * gensupport.h (compact_syntax): New.
3791         (hash-set.h): Include.
3792         * doc/md.texi: Document it.
3794 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
3796         * recog.h (check_asm_operands): Change return type from int to bool.
3797         (insn_invalid_p): Ditto.
3798         (verify_changes): Ditto.
3799         (apply_change_group): Ditto.
3800         (constrain_operands): Ditto.
3801         (constrain_operands_cached): Ditto.
3802         (validate_replace_rtx_subexp): Ditto.
3803         (validate_replace_rtx): Ditto.
3804         (validate_replace_rtx_part): Ditto.
3805         (validate_replace_rtx_part_nosimplify): Ditto.
3806         (added_clobbers_hard_reg_p): Ditto.
3807         (peep2_regno_dead_p): Ditto.
3808         (peep2_reg_dead_p): Ditto.
3809         (store_data_bypass_p): Ditto.
3810         (if_test_bypass_p): Ditto.
3811         * rtl.h (split_all_insns_noflow): Change
3812         return type from unsigned int to void.
3813         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
3814         of generated added_clobbers_hard_reg_p from int to bool and adjust
3815         function body accordingly.  Change "used" variable type from
3816         int to bool.
3817         * recog.cc (check_asm_operands): Change return type
3818         from int to bool and adjust function body accordingly.
3819         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
3820         (verify_changes): Change return type from int to bool.
3821         (apply_change_group): Change return type from int to bool
3822         and adjust function body accordingly.
3823         (validate_replace_rtx_subexp): Change return type from int to bool.
3824         (validate_replace_rtx): Ditto.
3825         (validate_replace_rtx_part): Ditto.
3826         (validate_replace_rtx_part_nosimplify): Ditto.
3827         (constrain_operands_cached): Ditto.
3828         (constrain_operands): Ditto.  Change "lose" and "win"
3829         variables type from int to bool.
3830         (split_all_insns_noflow): Change return type from unsigned int
3831         to void and adjust function body accordingly.
3832         (peep2_regno_dead_p): Change return type from int to bool.
3833         (peep2_reg_dead_p): Ditto.
3834         (peep2_find_free_register): Change "success"
3835         variable type from int to bool
3836         (store_data_bypass_p_1): Change return type from int to bool.
3837         (store_data_bypass_p): Ditto.
3839 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
3841         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
3842         Zve32f extension.
3844 2023-06-19  Pan Li  <pan2.li@intel.com>
3846         PR target/110299
3847         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
3848         modes.
3849         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
3850         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
3851         VF_ZVE63 and VF_ZVE32.
3852         * config/riscv/vector.md
3853         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
3854         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
3855         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
3856         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
3857         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
3858         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
3859         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
3860         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
3861         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
3862         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
3864 2023-06-19  Pan Li  <pan2.li@intel.com>
3866         PR target/110277
3867         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
3868         ret_mode.
3869         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
3870         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
3871         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
3872         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
3873         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
3874         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
3875         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
3876         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
3877         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
3878         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
3879         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
3880         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
3881         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
3882         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
3884 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
3886         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
3887         (gcn_init_libfuncs): Add div and mod functions for all modes.
3888         Add placeholders for divmod functions.
3889         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
3891 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
3893         * tree-vect-generic.cc: Include optabs-libfuncs.h.
3894         (get_compute_type): Check optab_libfunc.
3895         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
3896         (vectorizable_operation): Check optab_libfunc.
3898 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
3900         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
3901         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
3902         (V_MOV, V_MOV_ALT): Likewise.
3903         (scalar_mode, SCALAR_MODE): Add TImode.
3904         (vnsi, VnSI, vndi, VnDI): Likewise.
3905         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
3906         (mov<mode>, mov<mode>_unspec): Use V_MOV.
3907         (*mov<mode>_4reg): New insn.
3908         (mov<mode>_exec): New 4reg variant.
3909         (mov<mode>_sgprbase): Likewise.
3910         (reload_in<mode>, reload_out<mode>): Use V_MOV.
3911         (vec_set<mode>): Likewise.
3912         (vec_duplicate<mode><exec>): New 4reg variant.
3913         (vec_extract<mode><scalar_mode>): Likewise.
3914         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
3915         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
3916         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
3917         (fold_extract_last_<mode>): Use V_MOV.
3918         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
3919         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
3920         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
3921         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
3922         gather<mode>_insn_2offsets<exec>): Use V_MOV.
3923         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
3924         scatter<mode>_insn_1offset<exec_scatter>,
3925         scatter<mode>_insn_1offset_ds<exec_scatter>,
3926         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
3927         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
3928         mask_scatter_store<mode><vnsi>): Likewise.
3929         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
3930         (gcn_hard_regno_mode_ok): Likewise.
3931         (GEN_VNM): Add TImode support.
3932         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
3933         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
3934         V8TImode, and V2TImode.
3935         (print_operand):  Add 'J' and 'K' print codes.
3937 2023-06-19  Richard Biener  <rguenther@suse.de>
3939         PR tree-optimization/110298
3940         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
3941         Clear number of iterations info before cleaning up the CFG.
3943 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3945         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
3946         Simplify vec_concat of lowpart subreg and high part vec_select.
3948 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
3950         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
3952 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
3954         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
3955         Handle null niters_skip.
3957 2023-06-19  Richard Biener  <rguenther@suse.de>
3959         * config/aarch64/aarch64.cc
3960         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
3961         to LOOP_VINFO_MASKS.
3963 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
3965         PR target/105523
3966         * common/config/avr/avr-common.cc: Remove setting
3967         of OPT_fdelete_null_pointer_checks.
3968         * config/avr/avr.cc (avr_option_override): Clear
3969         flag_delete_null_pointer_checks if zero_address_valid.
3970         (avr_addr_space_zero_address_valid): New function.
3971         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
3972         hook.
3974 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3975             Robin Dapp  <rdapp.gcc@gmail.com>
3977         * doc/md.texi: Add len_mask{load,store}.
3978         * genopinit.cc (main): Ditto.
3979         (CMP_NAME): Ditto.
3980         * internal-fn.cc (len_maskload_direct): Ditto.
3981         (len_maskstore_direct): Ditto.
3982         (expand_call_mem_ref): Ditto.
3983         (expand_partial_load_optab_fn): Ditto.
3984         (expand_len_maskload_optab_fn): Ditto.
3985         (expand_partial_store_optab_fn): Ditto.
3986         (expand_len_maskstore_optab_fn): Ditto.
3987         (direct_len_maskload_optab_supported_p): Ditto.
3988         (direct_len_maskstore_optab_supported_p): Ditto.
3989         * internal-fn.def (LEN_MASK_LOAD): Ditto.
3990         (LEN_MASK_STORE): Ditto.
3991         * optabs.def (OPTAB_CD): Ditto.
3993 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
3995         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
3997 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
3999         * config/riscv/autovec.md (<optab><mode>3): Implement binop
4000         expander.
4001         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
4002         (enum vxrm_field_enum): Rename this...
4003         (enum fixed_point_rounding_mode): ...to this.
4004         (enum frm_field_enum): Rename this...
4005         (enum floating_point_rounding_mode): ...to this.
4006         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
4007         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
4008         vector handling.
4009         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
4010         (riscv_excess_precision): Do not convert to float for ZVFH.
4011         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
4013 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4015         * config/riscv/vector-iterators.md: Add VI_QH iterator.
4016         * config/riscv/autovec-opt.md
4017         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
4018         that includes sign extension.
4019         (@pred_extract_first_sextsi<mode>): Dito for SImode.
4021 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4023         * config/riscv/autovec.md (vec_set<mode>): Implement.
4024         (vec_extract<mode><vel>): Implement.
4025         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
4026         (emit_vlmax_slide_insn): Declare.
4027         (emit_nonvlmax_slide_tu_insn): Declare.
4028         (emit_scalar_move_insn): Export.
4029         (emit_nonvlmax_integer_move_insn): Export.
4030         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
4031         (emit_nonvlmax_slide_tu_insn): New function.
4032         (emit_vlmax_masked_mu_insn): No change.
4033         (emit_vlmax_integer_move_insn): Export.
4035 2023-06-19  Richard Biener  <rguenther@suse.de>
4037         * tree-vectorizer.h (enum vect_partial_vector_style): New.
4038         (_loop_vec_info::partial_vector_style): Likewise.
4039         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
4040         (rgroup_controls::compare_type): Add.
4041         (vec_loop_masks): Change from a typedef to auto_vec<>
4042         to a structure.
4043         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4044         Adjust.  Convert niters_skip to compare_type.
4045         (vect_set_loop_condition_partial_vectors_avx512): New function
4046         implementing the AVX512 partial vector codegen.
4047         (vect_set_loop_condition): Dispatch to the correct
4048         vect_set_loop_condition_partial_vectors_* function based on
4049         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4050         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
4051         in the original niter type.
4052         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
4053         partial_vector_style.
4054         (can_produce_all_loop_masks_p): Adjust.
4055         (vect_verify_full_masking): Produce the rgroup_controls vector
4056         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
4057         (vect_verify_full_masking_avx512): New function implementing
4058         verification of AVX512 style masking.
4059         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4060         (vect_analyze_loop_2): Also try AVX512 style masking.
4061         Adjust condition.
4062         (vect_estimate_min_profitable_iters): Implement AVX512 style
4063         mask producing cost.
4064         (vect_record_loop_mask): Do not build the rgroup_controls
4065         vector here but record masks in a hash-set.
4066         (vect_get_loop_mask): Implement AVX512 style mask query,
4067         complementing the existing while_ult style.
4069 2023-06-19  Richard Biener  <rguenther@suse.de>
4071         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
4072         argument.
4073         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
4074         (vectorize_fold_left_reduction): Adjust.
4075         (vect_transform_reduction): Likewise.
4076         (vectorizable_live_operation): Likewise.
4077         * tree-vect-stmts.cc (vectorizable_call): Likewise.
4078         (vectorizable_operation): Likewise.
4079         (vectorizable_store): Likewise.
4080         (vectorizable_load): Likewise.
4081         (vectorizable_condition): Likewise.
4083 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
4085         PR target/110086
4086         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
4087         Add Optimization option property.
4089 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
4091         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
4092         Add new pattern for the abovementioned case.
4094 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
4096         * config/xtensa/xtensa.cc
4097         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
4099 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
4101         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
4103 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
4105         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
4107 2023-06-19  liuhongt  <hongtao.liu@intel.com>
4109         PR target/110235
4110         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
4111         Substitute with ..
4112         (sse2_packsswb<mask_name>): .. this, ..
4113         (avx2_packsswb<mask_name>): .. this and ..
4114         (avx512bw_packsswb<mask_name>): .. this.
4115         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
4116         (sse2_packssdw<mask_name>): .. this, ..
4117         (avx2_packssdw<mask_name>): .. this and ..
4118         (avx512bw_packssdw<mask_name>): .. this.
4120 2023-06-19  liuhongt  <hongtao.liu@intel.com>
4122         PR target/110235
4123         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
4124         UNSPEC_US_TRUNCATE instead of original us_truncate for
4125         packusdw/packuswb.
4126         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
4127         with ..
4128         (mmx_packsswb): .. this and ..
4129         (mmx_packuswb): .. this.
4130         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
4131         us_truncate.
4132         (s_trunsuffix): Removed code iterator.
4133         (any_s_truncate): Ditto.
4134         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
4135         UNSPEC_US_TRUNCATE instead of original us_truncate.
4136         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
4137         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
4139 2023-06-18  Pan Li  <pan2.li@intel.com>
4141         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
4143 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
4145         * rtl.h (*rtx_equal_p_callback_function):
4146         Change return type from int to bool.
4147         (rtx_equal_p): Ditto.
4148         (*hash_rtx_callback_function): Ditto.
4149         * rtl.cc (rtx_equal_p): Change return type from int to bool
4150         and adjust function body accordingly.
4151         * early-remat.cc (scratch_equal): Ditto.
4152         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
4153         (hash_with_unspec_callback): Ditto.
4155 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
4157         * config/arc/arc.md (movqi_insn): Allow certain constants to
4158         be stored into memory in the pattern's condition.
4159         (movsf_insn): Similarly.
4161 2023-06-18  Honza  <jh@ryzen3.suse.cz>
4163         PR tree-optimization/109849
4164         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
4165         ES; handle ipa_predicate::not_sra_candidate.
4166         (evaluate_properties_for_edge): Pass es to
4167         evaluate_conditions_for_known_args.
4168         (ipa_fn_summary_t::duplicate): Handle sra candidates.
4169         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
4170         (load_or_store_of_ptr_parameter): New function.
4171         (points_to_possible_sra_candidate_p): New function.
4172         (analyze_function_body): Initialize points_to_possible_sra_candidate;
4173         determine sra predicates.
4174         (estimate_ipcp_clone_size_and_time): Update call of
4175         evaluate_conditions_for_known_args.
4176         (remap_edge_params): Update points_to_possible_sra_candidate.
4177         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
4178         (write_ipa_call_summary): Likewise.
4179         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
4180         (dump_condition): Dump it.
4181         * ipa-predicate.h (struct inline_param_summary): Add
4182         points_to_possible_sra_candidate.
4184 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
4186         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
4187         function for setting the carry flag.
4188         (ix86_expand_builtin) <handlecarry>: Use it here.
4189         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
4190         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
4191         (usubc<mode>5): Likewise.
4193 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
4195         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
4196         for the immediate constant shift count.
4197         (*concat<mode><dwi>3_2): Likewise.
4198         (*concat<mode><dwi>3_3): Likewise.
4199         (*concat<mode><dwi>3_4): Likewise.
4200         (*concat<mode><dwi>3_5): Likewise.
4201         (*concat<mode><dwi>3_6): Likewise.
4203 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
4205         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
4206         (hash_rtx): Remove.
4207         * early-remat.cc (remat_candidate_hasher::equal): Update
4208         to call rtx_equal_p with rtx_equal_p_callback_function argument.
4209         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
4210         (rtx_equal_p): Remove.
4211         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
4212         argument with NULL default value.
4213         (rtx_equal_p_cb): Remove function declaration.
4214         (hash_rtx_cb): Ditto.
4215         (hash_rtx): Add hash_rtx_callback_function argument
4216         with NULL default value.
4217         * sel-sched-ir.cc (free_nop_pool): Update function comment.
4218         (skip_unspecs_callback): Ditto.
4219         (vinsn_init): Update to call hash_rtx with
4220         hash_rtx_callback_function argument.
4221         (vinsn_equal_p): Ditto.
4223 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
4225         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
4226         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
4227         (ADJUST_ALIGNMENT): Ditto.
4228         (RVV_TUPLE_PARTIAL_MODES): Ditto.
4229         (ADJUST_NUNITS): Ditto.
4230         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
4231         New types.
4232         (vfloat16mf4x3_t): Ditto.
4233         (vfloat16mf4x4_t): Ditto.
4234         (vfloat16mf4x5_t): Ditto.
4235         (vfloat16mf4x6_t): Ditto.
4236         (vfloat16mf4x7_t): Ditto.
4237         (vfloat16mf4x8_t): Ditto.
4238         (vfloat16mf2x2_t): Ditto.
4239         (vfloat16mf2x3_t): Ditto.
4240         (vfloat16mf2x4_t): Ditto.
4241         (vfloat16mf2x5_t): Ditto.
4242         (vfloat16mf2x6_t): Ditto.
4243         (vfloat16mf2x7_t): Ditto.
4244         (vfloat16mf2x8_t): Ditto.
4245         (vfloat16m1x2_t): Ditto.
4246         (vfloat16m1x3_t): Ditto.
4247         (vfloat16m1x4_t): Ditto.
4248         (vfloat16m1x5_t): Ditto.
4249         (vfloat16m1x6_t): Ditto.
4250         (vfloat16m1x7_t): Ditto.
4251         (vfloat16m1x8_t): Ditto.
4252         (vfloat16m2x2_t): Ditto.
4253         (vfloat16m2x3_t): Ditto.
4254         (vfloat16m2x4_t): Ditto.
4255         (vfloat16m4x2_t): Ditto.
4256         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
4257         (vfloat16mf4x3_t): Ditto.
4258         (vfloat16mf4x4_t): Ditto.
4259         (vfloat16mf4x5_t): Ditto.
4260         (vfloat16mf4x6_t): Ditto.
4261         (vfloat16mf4x7_t): Ditto.
4262         (vfloat16mf4x8_t): Ditto.
4263         (vfloat16mf2x2_t): Ditto.
4264         (vfloat16mf2x3_t): Ditto.
4265         (vfloat16mf2x4_t): Ditto.
4266         (vfloat16mf2x5_t): Ditto.
4267         (vfloat16mf2x6_t): Ditto.
4268         (vfloat16mf2x7_t): Ditto.
4269         (vfloat16mf2x8_t): Ditto.
4270         (vfloat16m1x2_t): Ditto.
4271         (vfloat16m1x3_t): Ditto.
4272         (vfloat16m1x4_t): Ditto.
4273         (vfloat16m1x5_t): Ditto.
4274         (vfloat16m1x6_t): Ditto.
4275         (vfloat16m1x7_t): Ditto.
4276         (vfloat16m1x8_t): Ditto.
4277         (vfloat16m2x2_t): Ditto.
4278         (vfloat16m2x3_t): Ditto.
4279         (vfloat16m2x4_t): Ditto.
4280         (vfloat16m4x2_t): Ditto.
4281         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
4282         * config/riscv/riscv.md: New.
4283         * config/riscv/vector-iterators.md: New.
4285 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
4287         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
4288         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
4289         Generalize special case for converting TImode to V1TImode to handle
4290         all 128-bit vector conversions.
4292 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
4294         * gcc-ar.cc (main): Refactor to slightly reduce code
4295         duplication.  Avoid unnecessary elements in nargv.
4297 2023-06-16  Pan Li  <pan2.li@intel.com>
4299         PR target/110265
4300         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
4301         integer reduction expand.
4302         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
4303         and the LMUL1 attr respectively.
4304         * config/riscv/vector.md
4305         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4306         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
4307         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
4308         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
4309         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
4310         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
4311         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
4313 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4315         PR target/110264
4316         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
4318 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
4320         PR middle-end/79173
4321         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
4322         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
4323         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
4324         types.
4325         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
4326         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
4327         * builtins.cc (fold_builtin_addc_subc): New function.
4328         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
4329         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
4331 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
4333         PR tree-optimization/110271
4334         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
4335         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
4336         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
4338 2023-06-16  Martin Jambor  <mjambor@suse.cz>
4340         * configure: Regenerate.
4342 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
4343             Uros Bizjak  <ubizjak@gmail.com>
4345         PR target/31985
4346         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
4347         define_insn_and_split combine *add<dwi>3_doubleword with
4348         a *concat<mode><dwi>3 for more efficient lowering after reload.
4350 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
4352         * ira-lives.cc: Include except.h.
4353         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
4354         when the pseudo does not live at the exception landing pad.
4356 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
4358         * doc/invoke.texi: Document -Welaborated-enum-base.
4360 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4362         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
4363         (ushrn2_n): ... This.
4364         (sqshrn2_n): Rename builtins to...
4365         (ssqshrn2_n): ... This.
4366         (uqshrn2_n): Rename builtins to...
4367         (uqushrn2_n): ... This.
4368         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
4369         (vqshrn_high_n_s32): Likewise.
4370         (vqshrn_high_n_s64): Likewise.
4371         (vqshrn_high_n_u16): Likewise.
4372         (vqshrn_high_n_u32): Likewise.
4373         (vqshrn_high_n_u64): Likewise.
4374         (vshrn_high_n_s16): Likewise.
4375         (vshrn_high_n_s32): Likewise.
4376         (vshrn_high_n_s64): Likewise.
4377         (vshrn_high_n_u16): Likewise.
4378         (vshrn_high_n_u32): Likewise.
4379         (vshrn_high_n_u64): Likewise.
4380         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
4381         Rename to...
4382         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
4383         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4384         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
4385         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
4386         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4387         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
4388         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
4389         Update expander for the above.
4391 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4393         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
4394         (shrn2_n): ... This.
4395         (rshrn2): Rename builtins to...
4396         (rshrn2_n): ... This.
4397         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
4398         (vrshrn_high_n_s32): Likewise.
4399         (vrshrn_high_n_s64): Likewise.
4400         (vrshrn_high_n_u16): Likewise.
4401         (vrshrn_high_n_u32): Likewise.
4402         (vrshrn_high_n_u64): Likewise.
4403         (vshrn_high_n_s16): Likewise.
4404         (vshrn_high_n_s32): Likewise.
4405         (vshrn_high_n_s64): Likewise.
4406         (vshrn_high_n_u16): Likewise.
4407         (vshrn_high_n_u32): Likewise.
4408         (vshrn_high_n_u64): Likewise.
4409         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
4410         Delete.
4411         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
4412         (aarch64_shrn2<mode>_insn_le): Likewise.
4413         (aarch64_shrn2<mode>_insn_be): Likewise.
4414         (aarch64_shrn2<mode>): Likewise.
4415         (aarch64_rshrn2<mode>_insn_le): Likewise.
4416         (aarch64_rshrn2<mode>_insn_be): Likewise.
4417         (aarch64_rshrn2<mode>): Likewise.
4418         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
4419         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
4420         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
4421         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
4422         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
4423         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
4424         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
4425         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
4426         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
4427         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
4428         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
4429         (aarch64_sqshrun2_n<mode>): New define_expand.
4430         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
4431         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
4432         (aarch64_sqrshrun2_n<mode>): New define_expand.
4433         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
4434         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
4435         Delete unspec values.
4436         (VQSHRN_N): Delete int iterator.
4438 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4440         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
4441         * config/aarch64/aarch64-simd.md
4442         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
4443         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
4444         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
4445         * config/aarch64/iterators.md (shrn_s): New code attribute.
4447 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4449         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
4450         Rename to...
4451         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
4452         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
4453         (aarch64_sqrshrun_n<mode>_insn): Likewise.
4454         (aarch64_sqshrun_n<mode>_insn): Likewise.
4455         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
4456         (aarch64_sqshrun_n<mode>): Likewise.
4457         (aarch64_sqrshrun_n<mode>): Likewise.
4458         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
4460 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4462         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
4463         (shrn_n): ... This.
4464         (rshrn): Rename builtins to...
4465         (rshrn_n): ... This.
4466         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
4467         (vshrn_n_s32): Likewise.
4468         (vshrn_n_s64): Likewise.
4469         (vshrn_n_u16): Likewise.
4470         (vshrn_n_u32): Likewise.
4471         (vshrn_n_u64): Likewise.
4472         (vrshrn_n_s16): Likewise.
4473         (vrshrn_n_s32): Likewise.
4474         (vrshrn_n_s64): Likewise.
4475         (vrshrn_n_u16): Likewise.
4476         (vrshrn_n_u32): Likewise.
4477         (vrshrn_n_u64): Likewise.
4478         * config/aarch64/aarch64-simd.md
4479         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
4480         (aarch64_shrn<mode>): Likewise.
4481         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
4482         (aarch64_rshrn<mode>): Likewise.
4483         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
4484         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
4485         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
4486         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
4487         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
4488         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
4489         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
4490         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
4491         (aarch64_sqshrun_n<mode>): Likewise.
4492         (aarch64_sqrshrun_n<mode>): Likewise.
4493         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
4494         (TRUNCEXTEND): New code attribute.
4495         (TRUNC_SHIFT): Likewise.
4496         (shrn_op): Likewise.
4497         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
4498         New predicate.
4500 2023-06-16  Pan Li  <pan2.li@intel.com>
4502         * config/riscv/riscv-vsetvl.cc
4503         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
4505 2023-06-16  Richard Biener  <rguenther@suse.de>
4507         PR tree-optimization/110278
4508         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
4509         (x != (typeof x)(x == 0) -> true): Likewise.
4511 2023-06-16  Pali Rohár  <pali@kernel.org>
4513         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
4514         (REAL_LIBGCC_SPEC): New define.
4515         * config/i386/mingw.opt: Add mcrtdll=
4516         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
4517         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
4518         (STARTFILE_SPEC): Adjust for -mcrtdll=.
4519         * doc/invoke.texi: Add mcrtdll= documentation.
4521 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
4523         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
4524         (mips_handle_code_readable_attr):New static function.
4525         (mips_get_code_readable_attr):New static enum function.
4526         (mips_set_current_function):Set the code_readable mode.
4527         (mips_option_override):Same as above.
4528         * doc/extend.texi:Document code_readable.
4530 2023-06-16  Richard Biener  <rguenther@suse.de>
4532         PR tree-optimization/110269
4533         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
4534         with tree_expr_nonzero_p ...
4535         * match.pd (cmp (convert? addr@0) integer_zerop): With this
4536         pattern.
4538 2023-06-15  Marek Polacek  <polacek@redhat.com>
4540         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
4541         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
4542         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
4543         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
4544         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
4545         check.
4546         * configure: Regenerate.
4547         * doc/install.texi: Document --enable-host-pie.
4549 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
4551         * regcprop.cc (maybe_mode_change): Enable stack pointer
4552         propagation.
4554 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
4556         PR tree-optimization/110266
4557         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
4558         complex type.
4559         (adjust_realpart_expr): Ditto.
4561 2023-06-15  Jan Beulich  <jbeulich@suse.com>
4563         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
4564         vmovddup.
4566 2023-06-15  Jan Beulich  <jbeulich@suse.com>
4568         * config/i386/constraints.md: Mention k and r for B.
4570 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
4571             Andrew Pinski  <apinski@marvell.com>
4573         PR target/110136
4574         * config/loongarch/loongarch.md: Modify the register constraints for template
4575         "jumptable" and "indirect_jump" from "r" to "e".
4577 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
4579         * config/loongarch/loongarch-tune.h (loongarch_align): New
4580         struct.
4581         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
4582         array.
4583         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
4584         the array.
4585         * config/loongarch/loongarch.cc
4586         (loongarch_option_override_internal): Set the value of
4587         -falign-functions= if -falign-functions is enabled but no value
4588         is given.  Likewise for -falign-labels=.
4590 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
4592         PR middle-end/79173
4593         * internal-fn.def (UADDC, USUBC): New internal functions.
4594         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
4595         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
4596         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
4597         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
4598         match_uaddc_usubc): New functions.
4599         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
4600         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
4601         other optimizations have been successful for those.
4602         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
4603         * fold-const-call.cc (fold_const_call): Likewise.
4604         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
4605         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
4606         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
4607         patterns.
4608         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
4609         define_expand patterns.
4610         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
4611         into NOTE_INSN_DELETED note rather than nop instruction.
4612         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
4613         Likewise.
4615 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
4617         PR middle-end/79173
4618         * config/i386/i386.md (subborrow<mode>): Add alternative with
4619         memory destination and add for it define_peephole2
4620         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
4621         destination in these patterns.
4623 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
4625         PR middle-end/79173
4626         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
4627         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
4628         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
4629         using memory destination in these patterns.
4631 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
4633         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
4634         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
4635         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
4636         * fold-const-call.cc (fold_const_call): ... here.
4638 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
4640         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
4641         Rename to <su>abd<mode>3.
4642         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
4643         to <su>abd<mode>3.
4645 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
4647         * doc/md.texi (sabd, uabd): Document them.
4648         * internal-fn.def (ABD): Use new optab.
4649         * optabs.def (sabd_optab, uabd_optab): New optabs,
4650         * tree-vect-patterns.cc (vect_recog_absolute_difference):
4651         Recognize the following idiom abs (a - b).
4652         (vect_recog_sad_pattern): Refactor to use
4653         vect_recog_absolute_difference.
4654         (vect_recog_abd_pattern): Use patterns found by
4655         vect_recog_absolute_difference to build a new ABD
4656         internal call.
4658 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
4660         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
4661         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
4663 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4665         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
4666         (expand_vec_perm_const_1): Add merge optmization.
4668 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
4670         PR target/110119
4671         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
4672         (riscv_pass_by_reference): Return true for vector mode
4674 2023-06-15  Pan Li  <pan2.li@intel.com>
4676         * config/riscv/autovec-opt.md: Align the predictor sytle.
4677         * config/riscv/autovec.md: Ditto.
4679 2023-06-15  Pan Li  <pan2.li@intel.com>
4681         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
4682         Take elen instead of scalar BITS_PER_WORD.
4683         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
4684         instead of scaler BITS_PER_WORD.
4686 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
4688         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
4690 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4692         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
4693         Fix signed comparison warning in loop from npats to enelts.
4695 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
4697         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
4698         to offloading compilation.
4699         * config/gcn/mkoffload.cc (main): Adjust.
4700         * config/nvptx/mkoffload.cc (main): Likewise.
4701         * doc/invoke.texi (foffload-options): Update example.
4703 2023-06-14  liuhongt  <hongtao.liu@intel.com>
4705         PR target/110227
4706         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
4707         for alternative 2 since there's no evex version for vpcmpeqd
4708         ymm, ymm, ymm.
4710 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
4712         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
4714 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
4716         * config/sh/divtab.cc: Remove.
4718 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
4720         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
4721         superfluous spaces around \t for vpcmpeqd.
4723 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
4725         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
4726         clearing vectors with only a single element.  Set CLEARED if the
4727         vector was initialized to zero.
4729 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
4731         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
4732         #include.
4733         (ENTRY): Undef.
4734         (TUPLE_ENTRY): Undef.
4736 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4738         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
4739         (shuffle_generic_patterns): Ditto.
4740         (expand_vec_perm_const_1): Ditto.
4742 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4744         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
4745         (shuffle_decompress_patterns): Ditto.
4747 2023-06-13  Richard Biener  <rguenther@suse.de>
4749         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
4751 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
4752             Kito Cheng  <kito.cheng@sifive.com>
4754         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
4755         warning flag if func is not builtin
4756         * config/riscv/riscv.cc
4757         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
4758         (riscv_arg_has_vector): Determine whether the arg is vector type.
4759         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
4760         (riscv_init_cumulative_args): The same as header.
4761         (riscv_get_arg_info): Add the checking.
4762         (riscv_function_value): Check the func return and set warning flag
4763         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
4764         determine whether warning psabi or not.
4766 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4768         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
4769         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
4770         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
4771         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
4772         with TP_TPIDRURO.
4773         (arm_output_load_tpidr): Define.
4774         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
4775         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
4776         assembly.
4777         (reload_tp_hard): Likewise.
4778         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
4779         arm_tp_type.
4780         * doc/invoke.texi (Arm Options, mtp): Document new values.
4782 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4784         PR target/108779
4785         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
4786         AARCH64_TPIDRRO_EL0 value.
4787         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
4788         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
4789         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
4790         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
4792 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
4794         * range-op-float.cc (frange_nextafter): Drop inline.
4795         (frelop_early_resolve): Add static.
4796         (frange_float): Likewise.
4798 2023-06-13  Richard Biener  <rguenther@suse.de>
4800         PR middle-end/110232
4801         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
4802         to check whether the buffer covers the whole vector.
4804 2023-06-13  Richard Biener  <rguenther@suse.de>
4806         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
4807         .MASK_LOAD and friends set the size of the access to unknown.
4809 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
4811         PR target/96339
4812         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
4813         calls that have a constant input predicate vector.
4814         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
4815         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
4816         (svlast_impl::vect_all_same): Check if all vector elements are equal.
4818 2023-06-13  Andi Kleen  <ak@linux.intel.com>
4820         * config/i386/gcc-auto-profile: Regenerate.
4822 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4824         * config/riscv/vector-iterators.md: Fix requirement.
4826 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4828         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
4829         (shuffle_decompress_patterns): New function.
4830         (expand_vec_perm_const_1): Add decompress optimization.
4832 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
4834         PR rtl-optimization/101188
4835         * postreload.cc (reload_cse_move2add_invalidate): New function,
4836         extracted from...
4837         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
4839 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4841         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
4842         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
4843         and if maxv == 1, use constant element for duplicating into register.
4845 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
4847         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
4848         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
4849         (gimplify_adjust_omp_clauses): Change
4850         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
4851         GOMP_MAP_FORCE_PRESENT.
4852         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
4853         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
4854         to/from clauses with present modifier.
4856 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4858         PR tree-optimization/110205
4859         * range-op-float.cc (range_operator::fold_range): Add default FII
4860         fold routine.
4861         * range-op-mixed.h (class operator_gt): Add missing final overrides.
4862         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
4863         (operator_lshift ::update_bitmask): Add final override.
4864         (operator_rshift ::update_bitmask): Add final override.
4865         * range-op.h (range_operator::fold_range): Add FII prototype.
4867 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4869         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
4870         Use range_op_handler directly.
4871         * range-op.cc (range_op_handler::range_op_handler): Unsigned
4872         param instead of tree-code.
4873         (ptr_op_widen_plus_signed): Delete.
4874         (ptr_op_widen_plus_unsigned): Delete.
4875         (ptr_op_widen_mult_signed): Delete.
4876         (ptr_op_widen_mult_unsigned): Delete.
4877         (range_op_table::initialize_integral_ops): Add new opcodes.
4878         * range-op.h (range_op_handler): Use unsigned.
4879         (OP_WIDEN_MULT_SIGNED): New.
4880         (OP_WIDEN_MULT_UNSIGNED): New.
4881         (OP_WIDEN_PLUS_SIGNED): New.
4882         (OP_WIDEN_PLUS_UNSIGNED): New.
4883         (RANGE_OP_TABLE_SIZE): New.
4884         (range_op_table::operator []): Use unsigned.
4885         (range_op_table::set): Use unsigned.
4886         (m_range_tree): Make unsigned.
4887         (ptr_op_widen_mult_signed): Remove.
4888         (ptr_op_widen_mult_unsigned): Remove.
4889         (ptr_op_widen_plus_signed): Remove.
4890         (ptr_op_widen_plus_unsigned): Remove.
4892 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4894         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
4895         manually as there is no access to the default operator.
4896         (cfn_copysign::fold_range): Don't check for validity.
4897         (cfn_ubsan::fold_range): Ditto.
4898         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
4899         * range-op.cc (default_operator): New.
4900         (range_op_handler::range_op_handler): Use default_operator
4901         instead of NULL.
4902         (range_op_handler::operator bool): Move from header, compare
4903         against default operator.
4904         (range_op_handler::range_op): New.
4905         * range-op.h (range_op_handler::operator bool): Move.
4907 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4909         * range-op.cc (unified_table): Delete.
4910         (range_op_table operator_table): Instantiate.
4911         (range_op_table::range_op_table): Rename from unified_table.
4912         (range_op_handler::range_op_handler): Use range_op_table.
4913         * range-op.h (range_op_table::operator []): Inline.
4914         (range_op_table::set): Inline.
4916 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4918         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
4919         pass type.
4920         * gimple-range-op.cc (get_code): Rename from get_code_and_type
4921         and simplify.
4922         (gimple_range_op_handler::supported_p): No need for type.
4923         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
4924         (cfn_copysign::fold_range): Ditto.
4925         (cfn_ubsan::fold_range): Ditto.
4926         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
4927         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
4928         * range-op-float.cc (operator_plus::op1_range): Ditto.
4929         (operator_mult::op1_range): Ditto.
4930         (range_op_float_tests): Ditto.
4931         * range-op.cc (get_op_handler): Remove.
4932         (range_op_handler::set_op_handler): Remove.
4933         (operator_plus::op1_range): No need for type.
4934         (operator_minus::op1_range): Ditto.
4935         (operator_mult::op1_range): Ditto.
4936         (operator_exact_divide::op1_range): Ditto.
4937         (operator_cast::op1_range): Ditto.
4938         (perator_bitwise_not::fold_range): Ditto.
4939         (operator_negate::fold_range): Ditto.
4940         * range-op.h (range_op_handler::range_op_handler): Remove type param.
4941         (range_cast): No need for type.
4942         (range_op_table::operator[]): Check for enum_code >= 0.
4943         * tree-data-ref.cc (compute_distributive_range): No need for type.
4944         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
4945         * value-query.cc (range_query::get_tree_range): Ditto.
4946         * value-relation.cc (relation_oracle::validate_relation): Ditto.
4947         * vr-values.cc (range_of_var_in_loop): Ditto.
4948         (simplify_using_ranges::fold_cond_with_ops): Ditto.
4950 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4952         * range-op-mixed.h (operator_max): Remove final.
4953         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
4954         (pointer_table::pointer_table): Remove.
4955         (class hybrid_max_operator): New.
4956         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
4957         * range-op.cc (pointer_tree_table): Remove.
4958         (unified_table::unified_table): Comment out MAX_EXPR.
4959         (get_op_handler): Remove check of pointer table.
4960         * range-op.h (class pointer_table): Remove.
4962 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4964         * range-op-mixed.h (operator_min): Remove final.
4965         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
4966         (class hybrid_min_operator): New.
4967         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
4968         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
4970 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4972         * range-op-mixed.h (operator_bitwise_or): Remove final.
4973         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
4974         (class hybrid_or_operator): New.
4975         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
4976         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
4978 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4980         * range-op-mixed.h (operator_bitwise_and): Remove final.
4981         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
4982         (class hybrid_and_operator): New.
4983         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
4984         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
4986 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4988         * Makefile.in (OBJS): Add range-op-ptr.o.
4989         * range-op-mixed.h (update_known_bitmask): Move prototype here.
4990         (minus_op1_op2_relation_effect): Move prototype here.
4991         (wi_includes_zero_p): Move function to here.
4992         (wi_zero_p): Ditto.
4993         * range-op.cc (update_known_bitmask): Remove static.
4994         (wi_includes_zero_p): Move to header.
4995         (wi_zero_p): Move to header.
4996         (minus_op1_op2_relation_effect): Remove static.
4997         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
4998         (pointer_plus_operator): Ditto.
4999         (pointer_min_max_operator): Ditto.
5000         (pointer_and_operator): Ditto.
5001         (pointer_or_operator): Ditto.
5002         (pointer_table): Ditto.
5003         (range_op_table::initialize_pointer_ops): Ditto.
5004         * range-op-ptr.cc: New.
5006 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5008         * range-op-mixed.h (class operator_max): Move from...
5009         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
5010         (get_op_handler): Remove the integral table.
5011         (class operator_max): Move from here.
5012         (integral_table::integral_table): Delete.
5013         * range-op.h (class integral_table): Delete.
5015 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5017         * range-op-mixed.h (class operator_min): Move from...
5018         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
5019         (class operator_min): Move from here.
5020         (integral_table::integral_table): Remove MIN_EXPR.
5022 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5024         * range-op-mixed.h (class operator_bitwise_or): Move from...
5025         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
5026         (class operator_bitwise_or): Move from here.
5027         (integral_table::integral_table): Remove BIT_IOR_EXPR.
5029 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5031         * range-op-mixed.h (class operator_bitwise_and): Move from...
5032         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
5033         (get_op_handler): Check for a pointer table entry first.
5034         (class operator_bitwise_and): Move from here.
5035         (integral_table::integral_table): Remove BIT_AND_EXPR.
5037 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5039         * range-op-mixed.h (class operator_bitwise_xor): Move from...
5040         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
5041         (class operator_bitwise_xor): Move from here.
5042         (integral_table::integral_table): Remove BIT_XOR_EXPR.
5043         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
5045 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5047         * range-op-mixed.h (class operator_bitwise_not): Move from...
5048         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
5049         (class operator_bitwise_not): Move from here.
5050         (integral_table::integral_table): Remove BIT_NOT_EXPR.
5051         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
5053 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5055         * range-op-mixed.h (class operator_addr_expr): Move from...
5056         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
5057         (class operator_addr_expr): Move from here.
5058         (integral_table::integral_table): Remove ADDR_EXPR.
5059         (pointer_table::pointer_table): Remove ADDR_EXPR.
5061 2023-06-12  Pan Li  <pan2.li@intel.com>
5063         * config/riscv/riscv-vector-builtins-types.def
5064         (vfloat16m1_t): Add type to lmul1 ops.
5065         (vfloat16m2_t): Likewise.
5066         (vfloat16m4_t): Likewise.
5068 2023-06-12  Richard Biener  <rguenther@suse.de>
5070         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
5071         .MASK_STORE and friend set the size of the access to
5072         unknown.
5074 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
5076         * config.in: Regenerate.
5077         * configure: Regenerate.
5078         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
5080 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5082         * config/riscv/autovec-opt.md
5083         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
5084         (*<any_shiftrt:optab>trunc<mode>): Ditto.
5085         * config/riscv/autovec.md (<optab><mode>3): Change to
5086         define_insn_and_split.
5087         (v<optab><mode>3): Ditto.
5088         (trunc<mode><v_double_trunc>2): Ditto.
5090 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5092         * simplify-rtx.cc (simplify_const_unary_operation):
5093         Handle US_TRUNCATE, SS_TRUNCATE.
5095 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
5097         PR modula2/109952
5098         * doc/gm2.texi (Standard procedures): Fix Next link.
5100 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
5102         * config.in: Regenerate.
5104 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5106         PR middle-end/110142
5107         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
5108         subtype to vect_widened_op_tree and remove subtype parameter, also
5109         remove superfluous overloaded function definition.
5110         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
5111         to call to vect_recog_widen_op_pattern.
5112         (vect_recog_widen_minus_pattern): Likewise.
5114 2023-06-12  liuhongt  <hongtao.liu@intel.com>
5116         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
5117         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
5118         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
5119         (vec_unpacks_lo_<mode>): Ditto.
5120         (vec_unpacks_hi_<mode>): Ditto.
5121         (sse_movlhps_<mode>): New define_insn.
5122         (ssse3_palignr<mode>_perm): Extend to V_128H.
5123         (V_128H): New mode iterator.
5124         (ssepackPHmode): New mode attribute.
5125         (vunpck_extract_mode): Ditto.
5126         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
5127         (vpckfloat_temp_mode): Ditto.
5128         (vpckfloat_op_mode): Ditto.
5129         (vunpckfixt_mode): Extend to VxHF.
5130         (vunpckfixt_model): Ditto.
5131         (vunpckfixt_extract_mode): Ditto.
5133 2023-06-12  Richard Biener  <rguenther@suse.de>
5135         PR middle-end/110200
5136         * genmatch.cc (expr::gen_transform): Put braces around
5137         the if arm for the (convert ...) short-cut.
5139 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
5141         PR target/109932
5142         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
5143         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
5145 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
5147         PR target/110011
5148         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
5149         floating constant itself for real_to_target call.
5151 2023-06-12  Pan Li  <pan2.li@intel.com>
5153         * config/riscv/riscv-vector-builtins-types.def
5154         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
5155         (vfloat16mf2_t): Ditto.
5156         (vfloat16m1_t): Ditto.
5157         (vfloat16m2_t): Ditto.
5158         (vfloat16m4_t): Ditto.
5160 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
5162         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
5163         Do not require a stack frame when debugging is enabled for AIX.
5165 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
5167         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
5168         Remove attribute values.
5169         (insv_notbit): New post-reload insn.
5170         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
5171         (*insv.not-bit.0_split, *insv.not-bit.7_split)
5172         (*insv.xor-extract_split): Split to insv_notbit.
5173         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
5174         (*insv.xor-extract): Remove post-reload insns.
5175         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
5176         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
5177         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
5178         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
5180 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
5182         PR target/109907
5183         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
5184         (MSB, SIZE): New mode attributes.
5185         (any_shift): New code iterator.
5186         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
5187         (*lshr<mode>3_const_split): Add constraint alternative for
5188         the case of shift-offset = MSB.  Ditch "length" attribute.
5189         (extzv<mode): New. replaces extzv.  Adjust following patterns.
5190         Use avr_out_extr, avr_out_extr_not to print asm.
5191         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
5192         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
5193         * config/avr/constraints.md (C15, C23, C31, Yil): New
5194         * config/avr/predicates.md (reg_or_low_io_operand)
5195         (const7_operand, reg_or_low_io_operand)
5196         (const15_operand, const_0_to_15_operand)
5197         (const23_operand, const_0_to_23_operand)
5198         (const31_operand, const_0_to_31_operand): New.
5199         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
5200         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
5201         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
5202         MSB case to new insn constraint "r" for operands[1].
5203         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
5204         Handle these cases.
5205         (avr_rtx_costs_1): Adjust cost for a new pattern.
5207 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5209         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
5210         (vector_insn_info::parse_insn): Add rtx_insn parse.
5211         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
5212         (get_first_vsetvl): New function.
5213         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
5214         (pass_vsetvl::cleanup_insns): Remove it.
5215         (pass_vsetvl::ssa_post_optimization): New function.
5216         (has_no_uses): Ditto.
5217         (pass_vsetvl::propagate_avl): Remove it.
5218         (pass_vsetvl::df_post_optimization): New function.
5219         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
5220         * config/riscv/riscv-vsetvl.h: Adapt declaration.
5222 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
5224         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
5225         (ipcp_vr_lattice::print): Call dump method.
5226         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
5227         Value_Range.
5228         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
5229         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
5230         range.
5231         (initialize_node_lattices): Pass type when appropriate.
5232         (ipa_vr_operation_and_type_effects): Make type agnostic.
5233         (ipa_value_range_from_jfunc): Same.
5234         (propagate_vr_across_jump_function): Same.
5235         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
5236         (evaluate_properties_for_edge): Same.
5237         * ipa-prop.cc (ipa_vr::get_vrange): Same.
5238         (ipcp_update_vr): Same.
5239         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
5240         (ipa_range_set_and_normalize): Same.
5242 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
5244         PR target/109650
5245         PR target/92729
5246         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
5247         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
5248         (avr_pass_data_ifelse): New pass_data for it.
5249         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
5250         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
5251         (avr_out_cmp_ext): New functions.
5252         (compare_condtition): Make sure REG_CC dies in the branch insn.
5253         (avr_rtx_costs_1): Add computation of cbranch costs.
5254         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
5255         [ADJUST_LEN_CMP_SEXT]Handle them.
5256         (TARGET_CANONICALIZE_COMPARISON): New define.
5257         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
5258         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
5259         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
5260         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
5261         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
5262         (avr_out_cmp_zext): New Protos
5263         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
5264         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
5265         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
5266         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
5267         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
5268         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
5269         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
5270         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
5271         (adjust_len) [add_set_ZN, cmp_zext]: New.
5272         (QIPSI): New mode iterator.
5273         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
5274         (gelt): New code iterator.
5275         (gelt_eqne): New code attribute.
5276         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
5277         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
5278         (*cmpqi_sign_extend): Remove insns.
5279         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
5280         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
5281         * config/avr/predicates.md (scratch_or_d_register_operand): New.
5282         * config/avr/constraints.md (Yxx): New constraint.
5284 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5286         * config/riscv/autovec.md (select_vl<mode>): New pattern.
5287         * config/riscv/riscv-protos.h (expand_select_vl): New function.
5288         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
5290 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5292         * range-op-float.cc (foperator_mult_div_base): Delete.
5293         (foperator_mult_div_base::find_range): Make static local function.
5294         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
5295         (operator_mult::op1_range): Rename from foperator_mult.
5296         (operator_mult::op2_range): Ditto.
5297         (operator_mult::rv_fold): Ditto.
5298         (float_table::float_table): Remove MULT_EXPR.
5299         (class foperator_div): Inherit from range_operator.
5300         (float_table::float_table): Delete.
5301         * range-op-mixed.h (class operator_mult): Combined from integer
5302         and float files.
5303         * range-op.cc (float_tree_table): Delete.
5304         (op_mult): New object.
5305         (unified_table::unified_table): Add MULT_EXPR.
5306         (get_op_handler): Do not check float table any longer.
5307         (class cross_product_operator): Move to range-op-mixed.h.
5308         (class operator_mult): Move to range-op-mixed.h.
5309         (integral_table::integral_table): Remove MULT_EXPR.
5310         (pointer_table::pointer_table): Remove MULT_EXPR.
5311         * range-op.h (float_table): Remove.
5313 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5315         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
5316         to range-op-mixed.h
5317         (operator_negate::fold_range): Rename from foperator_negate.
5318         (operator_negate::op1_range): Ditto.
5319         (float_table::float_table): Remove NEGATE_EXPR.
5320         * range-op-mixed.h (class operator_negate): Combined from integer
5321         and float files.
5322         * range-op.cc (op_negate): New object.
5323         (unified_table::unified_table): Add NEGATE_EXPR.
5324         (class operator_negate): Move to range-op-mixed.h.
5325         (integral_table::integral_table): Remove NEGATE_EXPR.
5326         (pointer_table::pointer_table): Remove NEGATE_EXPR.
5328 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5330         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
5331         to range-op-mixed.h
5332         (operator_minus::fold_range): Rename from foperator_minus.
5333         (operator_minus::op1_range): Ditto.
5334         (operator_minus::op2_range): Ditto.
5335         (operator_minus::rv_fold): Ditto.
5336         (float_table::float_table): Remove MINUS_EXPR.
5337         * range-op-mixed.h (class operator_minus): Combined from integer
5338         and float files.
5339         * range-op.cc (op_minus): New object.
5340         (unified_table::unified_table): Add MINUS_EXPR.
5341         (class operator_minus): Move to range-op-mixed.h.
5342         (integral_table::integral_table): Remove MINUS_EXPR.
5343         (pointer_table::pointer_table): Remove MINUS_EXPR.
5345 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5347         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
5348         to range-op-mixed.h
5349         (operator_abs::fold_range): Rename from foperator_abs.
5350         (operator_abs::op1_range): Ditto.
5351         (float_table::float_table): Remove ABS_EXPR.
5352         * range-op-mixed.h (class operator_abs): Combined from integer
5353         and float files.
5354         * range-op.cc (op_abs): New object.
5355         (unified_table::unified_table): Add ABS_EXPR.
5356         (class operator_abs): Move to range-op-mixed.h.
5357         (integral_table::integral_table): Remove ABS_EXPR.
5358         (pointer_table::pointer_table): Remove ABS_EXPR.
5360 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5362         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
5363         to range-op-mixed.h
5364         (operator_plus::fold_range): Rename from foperator_plus.
5365         (operator_plus::op1_range): Ditto.
5366         (operator_plus::op2_range): Ditto.
5367         (operator_plus::rv_fold): Ditto.
5368         (float_table::float_table): Remove PLUS_EXPR.
5369         * range-op-mixed.h (class operator_plus): Combined from integer
5370         and float files.
5371         * range-op.cc (op_plus): New object.
5372         (unified_table::unified_table): Add PLUS_EXPR.
5373         (class operator_plus): Move to range-op-mixed.h.
5374         (integral_table::integral_table): Remove PLUS_EXPR.
5375         (pointer_table::pointer_table): Remove PLUS_EXPR.
5377 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5379         * range-op-mixed.h (class operator_cast): Combined from integer
5380         and float files.
5381         * range-op.cc (op_cast): New object.
5382         (unified_table::unified_table): Add op_cast
5383         (class operator_cast): Move to range-op-mixed.h.
5384         (integral_table::integral_table): Remove op_cast
5385         (pointer_table::pointer_table): Remove op_cast.
5387 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5389         * range-op-float.cc (operator_cst::fold_range): New.
5390         * range-op-mixed.h (class operator_cst): Move from integer file.
5391         * range-op.cc (op_cst): New object.
5392         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
5393         (class operator_cst): Move to range-op-mixed.h.
5394         (integral_table::integral_table): Remove op_cst.
5395         (pointer_table::pointer_table): Remove op_cst.
5397 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5399         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
5400         to range-op-mixed.h
5401         (operator_identity::fold_range): Rename from foperator_identity.
5402         (operator_identity::op1_range): Ditto.
5403         (float_table::float_table): Remove fop_identity.
5404         * range-op-mixed.h (class operator_identity): Combined from integer
5405         and float files.
5406         * range-op.cc (op_identity): New object.
5407         (unified_table::unified_table): Add op_identity.
5408         (class operator_identity): Move to range-op-mixed.h.
5409         (integral_table::integral_table): Remove identity.
5410         (pointer_table::pointer_table): Remove identity.
5412 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5414         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
5415         to range-op-mixed.h
5416         (operator_ge::fold_range): Rename from foperator_ge.
5417         (operator_ge::op1_range): Ditto.
5418         (float_table::float_table): Remove GE_EXPR.
5419         * range-op-mixed.h (class operator_ge): Combined from integer
5420         and float files.
5421         * range-op.cc (op_ge): New object.
5422         (unified_table::unified_table): Add GE_EXPR.
5423         (class operator_ge): Move to range-op-mixed.h.
5424         (ge_op1_op2_relation): Fold into
5425         operator_ge::op1_op2_relation.
5426         (integral_table::integral_table): Remove GE_EXPR.
5427         (pointer_table::pointer_table): Remove GE_EXPR.
5428         * range-op.h (ge_op1_op2_relation): Delete.
5430 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5432         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
5433         to range-op-mixed.h
5434         (operator_gt::fold_range): Rename from foperator_gt.
5435         (operator_gt::op1_range): Ditto.
5436         (float_table::float_table): Remove GT_EXPR.
5437         * range-op-mixed.h (class operator_gt): Combined from integer
5438         and float files.
5439         * range-op.cc (op_gt): New object.
5440         (unified_table::unified_table): Add GT_EXPR.
5441         (class operator_gt): Move to range-op-mixed.h.
5442         (gt_op1_op2_relation): Fold into
5443         operator_gt::op1_op2_relation.
5444         (integral_table::integral_table): Remove GT_EXPR.
5445         (pointer_table::pointer_table): Remove GT_EXPR.
5446         * range-op.h (gt_op1_op2_relation): Delete.
5448 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5450         * range-op-float.cc (foperator_le): Remove.  Move prototypes
5451         to range-op-mixed.h
5452         (operator_le::fold_range): Rename from foperator_le.
5453         (operator_le::op1_range): Ditto.
5454         (float_table::float_table): Remove LE_EXPR.
5455         * range-op-mixed.h (class operator_le): Combined from integer
5456         and float files.
5457         * range-op.cc (op_le): New object.
5458         (unified_table::unified_table): Add LE_EXPR.
5459         (class operator_le): Move to range-op-mixed.h.
5460         (le_op1_op2_relation): Fold into
5461         operator_le::op1_op2_relation.
5462         (integral_table::integral_table): Remove LE_EXPR.
5463         (pointer_table::pointer_table): Remove LE_EXPR.
5464         * range-op.h (le_op1_op2_relation): Delete.
5466 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5468         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
5469         to range-op-mixed.h
5470         (operator_lt::fold_range): Rename from foperator_lt.
5471         (operator_lt::op1_range): Ditto.
5472         (float_table::float_table): Remove LT_EXPR.
5473         * range-op-mixed.h (class operator_lt): Combined from integer
5474         and float files.
5475         * range-op.cc (op_lt): New object.
5476         (unified_table::unified_table): Add LT_EXPR.
5477         (class operator_lt): Move to range-op-mixed.h.
5478         (lt_op1_op2_relation): Fold into
5479         operator_lt::op1_op2_relation.
5480         (integral_table::integral_table): Remove LT_EXPR.
5481         (pointer_table::pointer_table): Remove LT_EXPR.
5482         * range-op.h (lt_op1_op2_relation): Delete.
5484 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5486         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
5487         to range-op-mixed.h
5488         (operator_equal::fold_range): Rename from foperator_not_equal.
5489         (operator_equal::op1_range): Ditto.
5490         (float_table::float_table): Remove NE_EXPR.
5491         * range-op-mixed.h (class operator_not_equal): Combined from integer
5492         and float files.
5493         * range-op.cc (op_equal): New object.
5494         (unified_table::unified_table): Add NE_EXPR.
5495         (class operator_not_equal): Move to range-op-mixed.h.
5496         (not_equal_op1_op2_relation): Fold into
5497         operator_not_equal::op1_op2_relation.
5498         (integral_table::integral_table): Remove NE_EXPR.
5499         (pointer_table::pointer_table): Remove NE_EXPR.
5500         * range-op.h (not_equal_op1_op2_relation): Delete.
5502 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5504         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
5505         to range-op-mixed.h
5506         (operator_equal::fold_range): Rename from foperator_equal.
5507         (operator_equal::op1_range): Ditto.
5508         (float_table::float_table): Remove EQ_EXPR.
5509         * range-op-mixed.h (class operator_equal): Combined from integer
5510         and float files.
5511         * range-op.cc (op_equal): New object.
5512         (unified_table::unified_table): Add EQ_EXPR.
5513         (class operator_equal): Move to range-op-mixed.h.
5514         (equal_op1_op2_relation): Fold into
5515         operator_equal::op1_op2_relation.
5516         (integral_table::integral_table): Remove EQ_EXPR.
5517         (pointer_table::pointer_table): Remove EQ_EXPR.
5518         * range-op.h (equal_op1_op2_relation): Delete.
5520 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
5522         * range-op-float.cc (class float_table): Move to header.
5523         (float_table::float_table): Move float only operators to...
5524         (range_op_table::initialize_float_ops): Here.
5525         * range-op-mixed.h: New.
5526         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
5527         to top of file.
5528         (float_tree_table): Moved from range-op-float.cc.
5529         (unified_tree_table): New.
5530         (unified_table::unified_table): New.  Call initialize routines.
5531         (get_op_handler): Check unified table first.
5532         (range_op_handler::range_op_handler): Handle no type constructor.
5533         (integral_table::integral_table): Move integral only operators to...
5534         (range_op_table::initialize_integral_ops): Here.
5535         (pointer_table::pointer_table): Move pointer only operators to...
5536         (range_op_table::initialize_pointer_ops): Here.
5537         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
5538         (get_bool_state): Ditto.
5539         (empty_range_varying): Ditto.
5540         (relop_early_resolve): Ditto.
5541         (class range_op_table): Add new init methods for range types.
5542         (class integral_table): Move declaration to here.
5543         (class pointer_table): Move declaration to here.
5544         (class float_table): Move declaration to here.
5546 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
5547             Richard Sandiford <richard.sandiford@arm.com>
5548             Richard Biener  <rguenther@suse.de>
5550         * doc/md.texi: Add SELECT_VL support.
5551         * internal-fn.def (SELECT_VL): Ditto.
5552         * optabs.def (OPTAB_D): Ditto.
5553         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
5554         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
5555         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
5556         (vectorizable_store): Ditto.
5557         (vectorizable_load): Ditto.
5558         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
5560 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
5562         PR ipa/109886
5563         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
5564         type as well.
5566 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
5568         * range-op.cc (range_cast): Move to...
5569         * range-op.h (range_cast): Here and add generic a version.
5571 2023-06-09  Marek Polacek  <polacek@redhat.com>
5573         PR c/39589
5574         PR c++/96868
5575         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
5576         warn about designated initializers in C only.
5578 2023-06-09  Andrew Pinski  <apinski@marvell.com>
5580         PR tree-optimization/97711
5581         PR tree-optimization/110155
5582         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
5583         ((zero_one != 0) ? z <op> y : y): Likewise.
5585 2023-06-09  Andrew Pinski  <apinski@marvell.com>
5587         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
5588         multiply rather than negation/bit_and.
5590 2023-06-09  Andrew Pinski  <apinski@marvell.com>
5592         * match.pd (`X & -Y -> X * Y`): Allow for truncation
5593         and the same type for unsigned types.
5595 2023-06-09  Andrew Pinski  <apinski@marvell.com>
5597         PR tree-optimization/110165
5598         PR tree-optimization/110166
5599         * match.pd (zero_one_valued_p): Don't accept
5600         signed 1-bit integers.
5602 2023-06-09  Richard Biener  <rguenther@suse.de>
5604         * match.pd (two conversions in a row): Use element_precision
5605         to DTRT for VECTOR_TYPE.
5607 2023-06-09  Pan Li  <pan2.li@intel.com>
5609         * config/riscv/riscv.md (enabled): Move to another place, and
5610         add fp_vector_disabled to the cond.
5611         (fp_vector_disabled): New attr defined for disabling fp.
5612         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
5614 2023-06-09  Pan Li  <pan2.li@intel.com>
5616         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
5617         literal to int.
5619 2023-06-09  liuhongt  <hongtao.liu@intel.com>
5621         PR target/110108
5622         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
5623         view_convert_expr mask to signed type when folding pblendvb
5624         builtins.
5626 2023-06-09  liuhongt  <hongtao.liu@intel.com>
5628         PR target/110108
5629         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
5630         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
5631         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
5632         TARGET_64BIT.
5633         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
5634         real codename for __builtin_ia32_pabs{b,w,d}.
5636 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
5638         * gimple-range-op.cc
5639         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
5640         (gimple_range_op_handler::maybe_builtin_call): Adjust.
5641         * gimple-range-op.h (operand1, operand2): Use m_operator.
5642         * range-op.cc (integral_table, pointer_table): Relocate.
5643         (get_op_handler): Rename from get_handler and handle all types.
5644         (range_op_handler::range_op_handler): Relocate.
5645         (range_op_handler::set_op_handler): Relocate and adjust.
5646         (range_op_handler::range_op_handler): Relocate.
5647         (dispatch_trio): New.
5648         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
5649         (range_op_handler::dispatch_kind): New.
5650         (range_op_handler::fold_range): Relocate and Use new dispatch value.
5651         (range_op_handler::op1_range): Ditto.
5652         (range_op_handler::op2_range): Ditto.
5653         (range_op_handler::lhs_op1_relation): Ditto.
5654         (range_op_handler::lhs_op2_relation): Ditto.
5655         (range_op_handler::op1_op2_relation): Ditto.
5656         (range_op_handler::set_op_handler): Use m_operator member.
5657         * range-op.h (range_op_handler::operator bool): Use m_operator.
5658         (range_op_handler::dispatch_kind): New.
5659         (range_op_handler::m_valid): Delete.
5660         (range_op_handler::m_int): Delete
5661         (range_op_handler::m_float): Delete
5662         (range_op_handler::m_operator): New.
5663         (range_op_table::operator[]): Relocate from .cc file.
5664         (range_op_table::set): Ditto.
5665         * value-range.h (class vrange): Make range_op_handler a friend.
5667 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
5669         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
5670         (cfn_pass_through_arg1): Adjust using statemenmt.
5671         (cfn_signbit): Change base class, adjust using statement.
5672         (cfn_copysign): Ditto.
5673         (cfn_sqrt): Ditto.
5674         (cfn_sincos): Ditto.
5675         * range-op-float.cc (fold_range): Change class to range_operator.
5676         (rv_fold): Ditto.
5677         (op1_range): Ditto
5678         (op2_range): Ditto
5679         (lhs_op1_relation): Ditto.
5680         (lhs_op2_relation): Ditto.
5681         (op1_op2_relation): Ditto.
5682         (foperator_*): Ditto.
5683         (class float_table): New.  Inherit from range_op_table.
5684         (floating_tree_table) Change to range_op_table pointer.
5685         (class floating_op_table): Delete.
5686         * range-op.cc (operator_equal): Adjust using statement.
5687         (operator_not_equal): Ditto.
5688         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
5689         (operator_minus, operator_cast): Ditto.
5690         (operator_bitwise_and, pointer_plus_operator): Ditto.
5691         (get_float_handle): Change return type.
5692         * range-op.h (range_operator_float): Delete.  Relocate all methods
5693         into class range_operator.
5694         (range_op_handler::m_float): Change type to range_operator.
5695         (floating_op_table): Delete.
5696         (floating_tree_table): Change type.
5698 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
5700         * range-op.cc (range_operator::fold_range): Call virtual routine.
5701         (range_operator::update_bitmask): New.
5702         (operator_equal::update_bitmask): New.
5703         (operator_not_equal::update_bitmask): New.
5704         (operator_lt::update_bitmask): New.
5705         (operator_le::update_bitmask): New.
5706         (operator_gt::update_bitmask): New.
5707         (operator_ge::update_bitmask): New.
5708         (operator_ge::update_bitmask): New.
5709         (operator_plus::update_bitmask): New.
5710         (operator_minus::update_bitmask): New.
5711         (operator_pointer_diff::update_bitmask): New.
5712         (operator_min::update_bitmask): New.
5713         (operator_max::update_bitmask): New.
5714         (operator_mult::update_bitmask): New.
5715         (operator_div:operator_div):New.
5716         (operator_div::update_bitmask): New.
5717         (operator_div::m_code): New member.
5718         (operator_exact_divide::operator_exact_divide): New constructor.
5719         (operator_lshift::update_bitmask): New.
5720         (operator_rshift::update_bitmask): New.
5721         (operator_bitwise_and::update_bitmask): New.
5722         (operator_bitwise_or::update_bitmask): New.
5723         (operator_bitwise_xor::update_bitmask): New.
5724         (operator_trunc_mod::update_bitmask): New.
5725         (op_ident, op_unknown, op_ptr_min_max): New.
5726         (op_nop, op_convert): Delete.
5727         (op_ssa, op_paren, op_obj_type): Delete.
5728         (op_realpart, op_imagpart): Delete.
5729         (op_ptr_min, op_ptr_max): Delete.
5730         (pointer_plus_operator:update_bitmask): New.
5731         (range_op_table::set): Do not use m_code.
5732         (integral_table::integral_table): Adjust to single instances.
5733         * range-op.h (range_operator::range_operator): Delete.
5734         (range_operator::m_code): Delete.
5735         (range_operator::update_bitmask): New.
5737 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
5739         * range-op-float.cc (range_operator_float::fold_range): Return
5740         NAN of the result type.
5742 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
5744         * optabs.cc (expand_ffs): Add forward declaration.
5745         (expand_doubleword_clz): Rename to ...
5746         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
5747         handle also doubleword CTZ and FFS in addition to CLZ.
5748         (expand_unop): Adjust caller.  Also call it for doubleword
5749         ctz_optab and ffs_optab.
5751 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
5753         PR target/110152
5754         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
5755         n_words == 2 recurse with mmx_ok as first argument rather than false.
5757 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
5759         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
5760         avoid sign extension/undefined behaviour when setting each bit.
5762 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
5763             Uros Bizjak  <ubizjak@gmail.com>
5765         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
5766         Use new x86_stc instruction when the carry flag must be set.
5767         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
5768         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
5769         * config/i386/i386.h (TARGET_SLOW_STC): New define.
5770         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
5771         (x86_stc): New define_insn.
5772         (define_peephole2): Convert x86_stc into alternate implementation
5773         on pentium4 without -Os when a QImode register is available.
5774         (*x86_cmc): New define_insn.
5775         (define_peephole2): Convert *x86_cmc into alternate implementation
5776         on pentium4 without -Os when a QImode register is available.
5777         (*setccc): New define_insn_and_split for a no-op CCCmode move.
5778         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
5779         recognize (and eliminate) the carry flag being copied to itself.
5780         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
5781         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
5783 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5785         * match.pd: Fix comment for the
5786         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
5788 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
5789             Jeff Law   <jlaw@ventanamicro.com>
5791         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
5792         (rotrsi3_sext): Expose generator.
5793         (rotlsi3 pattern): Hide generator.
5794         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
5795         declaration.
5796         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
5797         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
5798         (mulsi3, <optab>si3): Likewise.
5799         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
5800         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
5801         (<u>mulsidi3): Likewise.
5802         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
5803         (mulsi3_extended, <optab>si3_extended): Likewise.
5804         (splitter for shadd feeding divison): Update RTL pattern to account
5805         for changes in how 32 bit ops are expanded for TARGET_64BIT.
5806         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
5808 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
5810         PR target/109725
5811         * config/riscv/riscv.cc (riscv_print_operand): Calculate
5812         memmodel only when it is valid.
5814 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
5816         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
5817         for constant element of a vector.
5819 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
5821         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
5822         instead compare tree_nonzero_bits <= 1U rather than just == 1.
5824 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
5826         PR target/110132
5827         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
5828         New. Use it ...
5829         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
5830         names for builtins.
5831         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
5832         setup if in_lto_p, just like we do for SVE.
5833         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
5834         (__arm_st64b): Delete.
5835         (__arm_st64bv): Delete.
5836         (__arm_st64bv0): Delete.
5838 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
5840         PR target/110100
5841         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
5842         Use input operand for the destination address.
5843         * config/aarch64/aarch64.md (st64b): Fix constraint on address
5844         operand.
5846 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
5848         PR target/110100
5849         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
5850         Replace eight consecutive spaces with tabs.
5851         (aarch64_init_ls64_builtins): Likewise.
5852         (aarch64_expand_builtin_ls64): Likewise.
5853         * config/aarch64/aarch64.md (ld64b): Likewise.
5854         (st64b): Likewise.
5855         (st64bv): Likewise
5856         (st64bv0): Likewise.
5858 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
5860         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
5861         offset table pseudo to a general reg subset.
5863 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5865         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
5866         Rename to...
5867         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
5868         with RTL codes.
5869         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
5870         (aarch64_sqxtun2<mode>_le): Likewise.
5871         (aarch64_sqxtun2<mode>_be): Likewise.
5872         (aarch64_sqxtun2<mode>): Adjust for the above.
5873         (aarch64_sqmovun<mode>): New define_expand.
5874         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
5875         (half_mask): New mode attribute.
5876         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
5877         New predicate.
5879 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5881         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
5882         Reimplement as...
5883         (aarch64_addp<mode>_insn): ... This...
5884         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
5885         (aarch64_addp<mode>): New define_expand.
5887 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5889         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
5890         * config/riscv/riscv-v.cc
5891         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
5892         handling.
5893         (rvv_builder::single_step_npatterns_p): New function.
5894         (rvv_builder::npatterns_all_equal_p): Ditto.
5895         (const_vec_all_in_range_p): Support POLY handling.
5896         (gen_const_vector_dup): Ditto.
5897         (emit_vlmax_gather_insn): Add vrgatherei16.
5898         (emit_vlmax_masked_gather_mu_insn): Ditto.
5899         (expand_const_vector): Add VLA SLP const vector support.
5900         (expand_vec_perm): Support POLY.
5901         (struct expand_vec_perm_d): New struct.
5902         (shuffle_generic_patterns): New function.
5903         (expand_vec_perm_const_1): Ditto.
5904         (expand_vec_perm_const): Ditto.
5905         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
5906         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
5908 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5910         PR middle-end/110117
5911         * expr.cc (expand_single_bit_test): Handle
5912         const_int from expand_expr.
5914 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5916         * expr.cc (do_store_flag): Rearrange the
5917         TER code so that it overrides the nonzero bits
5918         info if we had `a & POW2`.
5920 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5922         PR tree-optimization/110134
5923         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
5924         types.
5925         (-A CMP CST -> B CMP (-CST)): Likewise.
5927 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5929         PR tree-optimization/89263
5930         PR tree-optimization/99069
5931         PR tree-optimization/20083
5932         PR tree-optimization/94898
5933         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
5934         one of the operands are constant.
5936 2023-06-07  Andrew Pinski  <apinski@marvell.com>
5938         * match.pd (zero_one_valued_p): Match 0 integer constant
5939         too.
5941 2023-06-07  Pan Li  <pan2.li@intel.com>
5943         * config/riscv/riscv-vector-builtins-types.def
5944         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
5945         (vfloat32m1_t): Ditto.
5946         (vfloat32m2_t): Ditto.
5947         (vfloat32m4_t): Ditto.
5948         (vfloat32m8_t): Ditto.
5949         (vint16mf4_t): Ditto.
5950         (vint16mf2_t): Ditto.
5951         (vint16m1_t): Ditto.
5952         (vint16m2_t): Ditto.
5953         (vint16m4_t): Ditto.
5954         (vint16m8_t): Ditto.
5955         (vuint16mf4_t): Ditto.
5956         (vuint16mf2_t): Ditto.
5957         (vuint16m1_t): Ditto.
5958         (vuint16m2_t): Ditto.
5959         (vuint16m4_t): Ditto.
5960         (vuint16m8_t): Ditto.
5961         (vint32mf2_t): Ditto.
5962         (vint32m1_t): Ditto.
5963         (vint32m2_t): Ditto.
5964         (vint32m4_t): Ditto.
5965         (vint32m8_t): Ditto.
5966         (vuint32mf2_t): Ditto.
5967         (vuint32m1_t): Ditto.
5968         (vuint32m2_t): Ditto.
5969         (vuint32m4_t): Ditto.
5970         (vuint32m8_t): Ditto.
5972 2023-06-07  Jason Merrill  <jason@redhat.com>
5974         PR c++/58487
5975         * doc/invoke.texi: Document it.
5977 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
5979         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
5980         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
5981         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
5982         NOT (BITREVERSE x) as BITREVERSE (NOT x).
5983         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
5984         Optimize PARITY (BITREVERSE x) as PARITY x.
5985         Optimize BITREVERSE (BITREVERSE x) as x.
5986         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
5987         BITREVERSE of a constant integer at compile-time.
5988         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
5989         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
5990         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
5991         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
5992         Optimize COPYSIGN (x, ABS y) as ABS x.
5993         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
5994         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
5995         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
5996         arguments at compile-time.
5998 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
6000         * rtl.h (function_invariant_p): Change return type from int to bool.
6001         * reload1.cc (function_invariant_p): Change return type from
6002         int to bool and adjust function body accordingly.
6004 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6006         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
6007         (*single_<optab>mult_plus<mode>): Ditto.
6008         (*double_<optab>mult_plus<mode>): Ditto.
6009         (*sign_zero_extend_fma): Ditto.
6010         (*zero_sign_extend_fma): Ditto.
6011         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6013 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
6014             Tobias Burnus  <tobias@codesourcery.com>
6016         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
6017         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
6018         set.
6019         (omp_get_attachment): Handle map clauses with 'present' modifier.
6020         (omp_group_base): Likewise.
6021         (gimplify_scan_omp_clauses): Reorder present maps to come first.
6022         Set GOVD flags for present defaultmaps.
6023         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
6024         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
6025         clauses.
6026         (lower_omp_target): Handle map clauses with 'present' modifier.
6027         Handle 'to' and 'from' clauses with 'present'.
6028         * tree-core.h (enum omp_clause_defaultmap_kind): Add
6029         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
6030         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
6031         'from' clauses with 'present' modifier.  Handle present defaultmap.
6032         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
6034 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
6036         * config/rs6000/genfusion.pl: Delete some dead code.
6038 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
6040         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
6041         split out from...
6042         (gen_ld_cmpi_p10): ... this.
6044 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
6046         PR target/106907
6047         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
6048         duplicate expression.
6050 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6052         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
6053         Handle unsigned reduc_plus_scal_ builtins.
6054         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
6055         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
6056         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
6057         __builtin_aarch64_reduc_plus_scal_v2di.
6058         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
6060 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6062         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
6063         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
6064         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
6066 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6068         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
6069         (aarch64_shrn<mode>_insn_be): Delete.
6070         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
6071         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
6072         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
6073         (aarch64_rshrn<mode>_insn_le): Delete.
6074         (aarch64_rshrn<mode>_insn_be): Delete.
6075         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
6076         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
6078 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6080         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
6081         Define prototype.
6082         (aarch64_pars_overlap_p): Likewise.
6083         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
6084         Express in terms of UNSPEC_ADDV.
6085         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
6086         (*aarch64_<su>addlv<mode>_reduction): Define.
6087         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
6088         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
6089         (aarch64_pars_overlap_p): Likewise.
6090         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
6091         (VQUADW): New mode attribute.
6092         (VWIDE2X_S): Likewise.
6093         (USADDLV): Delete.
6094         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
6095         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
6097 2023-06-06  Richard Biener  <rguenther@suse.de>
6099         PR middle-end/110055
6100         * gimplify.cc (gimplify_target_expr): Do not emit
6101         CLOBBERs for variables which have static storage duration
6102         after gimplifying their initializers.
6104 2023-06-06  Richard Biener  <rguenther@suse.de>
6106         PR tree-optimization/109143
6107         * tree-ssa-structalias.cc (solution_set_expand): Avoid
6108         one bitmap iteration and optimize bit range setting.
6110 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
6112         PR bootstrap/110120
6113         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
6114         XVECEXP, not XEXP, to access first item of a PARALLEL.
6116 2023-06-06  Pan Li  <pan2.li@intel.com>
6118         * config/riscv/riscv-vector-builtins-types.def
6119         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
6120         (vfloat16mf2_t): Likewise.
6121         (vfloat16m1_t): Likewise.
6122         (vfloat16m2_t): Likewise.
6123         (vfloat16m4_t): Likewise.
6124         (vfloat16m8_t): Likewise.
6125         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
6126         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
6128 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
6130         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
6131         for cfi reg/mem machmode
6132         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
6134 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
6136         * config/riscv/vector-iterators.md:
6137         Fix 'REQUIREMENT' for machine_mode 'MODE'.
6138         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
6139         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
6140         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
6142 2023-06-06  Pan Li  <pan2.li@intel.com>
6144         * config/riscv/vector-iterators.md: Fix typo in mode attr.
6146 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
6147             Joel Hutton  <joel.hutton@arm.com>
6149         * doc/generic.texi: Remove old tree codes.
6150         * expr.cc (expand_expr_real_2): Remove old tree code cases.
6151         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
6152         * optabs-tree.cc (optab_for_tree_code): Likewise.
6153         (supportable_half_widening_operation): Likewise.
6154         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
6155         * tree-inline.cc (estimate_operator_cost): Likewise.
6156         (op_symbol_code): Likewise.
6157         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
6158         (vect_analyze_data_ref_accesses): Likewise.
6159         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
6160         * cfgexpand.cc (expand_debug_expr): Likewise.
6161         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
6162         (supportable_widening_operation): Likewise.
6163         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
6164         Likewise.
6165         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
6166         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
6167         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
6168         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
6169         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
6170         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
6171         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
6172         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
6174 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
6175             Joel Hutton  <joel.hutton@arm.com>
6176             Tamar Christina  <tamar.christina@arm.com>
6178         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
6179         this ...
6180         (vec_widen_<su>add_lo_<mode>): ... to this.
6181         (vec_widen_<su>addl_hi_<mode>): Rename this ...
6182         (vec_widen_<su>add_hi_<mode>): ... to this.
6183         (vec_widen_<su>subl_lo_<mode>): Rename this ...
6184         (vec_widen_<su>sub_lo_<mode>): ... to this.
6185         (vec_widen_<su>subl_hi_<mode>): Rename this ...
6186         (vec_widen_<su>sub_hi_<mode>): ...to this.
6187         * doc/generic.texi: Document new IFN codes.
6188         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
6189         (commutative_binary_fn_p): Add widen_plus fn's.
6190         (widening_fn_p): New function.
6191         (narrowing_fn_p): New function.
6192         (direct_internal_fn_optab): Change visibility.
6193         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
6194         internal_fn that expands into multiple internal_fns for widening.
6195         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
6196         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
6197         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
6198         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
6199         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
6200         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
6201         (lookup_hilo_internal_fn): Likewise.
6202         (widening_fn_p): Likewise.
6203         (Narrowing_fn_p): Likewise.
6204         * optabs.cc (commutative_optab_p): Add widening plus optabs.
6205         * optabs.def (OPTAB_D): Define widen add, sub optabs.
6206         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
6207         patterns with a hi/lo or even/odd split.
6208         (vect_recog_sad_pattern): Refactor to use new IFN codes.
6209         (vect_recog_widen_plus_pattern): Likewise.
6210         (vect_recog_widen_minus_pattern): Likewise.
6211         (vect_recog_average_pattern): Likewise.
6212         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
6213         _HILO IFNs.
6214         (supportable_widening_operation): Likewise.
6215         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
6217 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
6218             Joel Hutton  <joel.hutton@arm.com>
6220         * tree-vect-patterns.cc: Add include for gimple-iterator.
6221         (vect_recog_widen_op_pattern): Refactor to use code_helper.
6222         (vect_gimple_build): New function.
6223         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
6224         code_helper.
6225         (vectorizable_call): Likewise.
6226         (vect_gen_widened_results_half): Likewise.
6227         (vect_create_vectorized_demotion_stmts): Likewise.
6228         (vect_create_vectorized_promotion_stmts): Likewise.
6229         (vect_create_half_widening_stmts): Likewise.
6230         (vectorizable_conversion): Likewise.
6231         (supportable_widening_operation): Likewise.
6232         (supportable_narrowing_operation): Likewise.
6233         * tree-vectorizer.h (supportable_widening_operation): Change
6234         prototype to use code_helper.
6235         (supportable_narrowing_operation): Likewise.
6236         (vect_gimple_build): New function prototype.
6237         * tree.h (code_helper::safe_as_tree_code): New function.
6238         (code_helper::safe_as_fn_code): New function.
6240 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
6242         * wide-int.cc (wi::bitreverse_large): New function implementing
6243         bit reversal of an integer.
6244         * wide-int.h (wi::bitreverse): New (template) function prototype.
6245         (bitreverse_large): Prototype helper function/implementation.
6246         (wi::bitreverse): New template wrapper around bitreverse_large.
6248 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
6250         * rtl.h (print_rtl_single): Change return type from int to void.
6251         (print_rtl_single_with_indent): Ditto.
6252         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
6253         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
6254         (rtx_writer::print_rtx_operand_code_0): Ditto.
6255         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
6256         (rtx_writer::print_rtx_operand_code_i): Ditto.
6257         (rtx_writer::print_rtx_operand_code_u): Ditto.
6258         (rtx_writer::print_rtx_operand): Ditto.
6259         (rtx_writer::print_rtx): Ditto.
6260         (rtx_writer::finish_directive): Ditto.
6261         (print_rtl_single): Change return type from int to void
6262         and adjust function body accordingly.
6263         (rtx_writer::print_rtl_single_with_indent): Ditto.
6265 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
6267         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
6268         (reg_class_subset_p): Ditto.
6269         * reginfo.cc (reg_classes_intersect_p): Ditto.
6270         (reg_class_subset_p): Ditto.
6272 2023-06-05  Pan Li  <pan2.li@intel.com>
6274         * config/riscv/riscv-vector-builtins-types.def
6275         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
6276         (vfloat32m1_t): Ditto.
6277         (vfloat32m2_t): Ditto.
6278         (vfloat32m4_t): Ditto.
6279         (vfloat32m8_t): Ditto.
6280         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
6281         (vint16mf2_t): Ditto.
6282         (vint16m1_t): Ditto.
6283         (vint16m2_t): Ditto.
6284         (vint16m4_t): Ditto.
6285         (vint16m8_t): Ditto.
6286         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
6287         (vuint16mf2_t): Ditto.
6288         (vuint16m1_t): Ditto.
6289         (vuint16m2_t): Ditto.
6290         (vuint16m4_t): Ditto.
6291         (vuint16m8_t): Ditto.
6292         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
6293         (vint32m1_t): Ditto.
6294         (vint32m2_t): Ditto.
6295         (vint32m4_t): Ditto.
6296         (vint32m8_t): Ditto.
6297         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
6298         (vuint32m1_t): Ditto.
6299         (vuint32m2_t): Ditto.
6300         (vuint32m4_t): Ditto.
6301         (vuint32m8_t): Ditto.
6302         * config/riscv/vector-iterators.md: Add FP=16 support for V,
6303         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
6305 2023-06-05  Andrew Pinski  <apinski@marvell.com>
6307         PR bootstrap/110085
6308         * Makefile.in (clean): Remove the removing of
6309         MULTILIB_DIR/MULTILIB_OPTIONS directories.
6311 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
6313         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
6314         prototype.
6315         * config/mips/mips.cc (speculation_barrier_libfunc): New static
6316         variable.
6317         (mips_init_libfuncs): Initialize it.
6318         (mips_emit_speculation_barrier): New function.
6319         * config/mips/mips.md (speculation_barrier): Call
6320         mips_emit_speculation_barrier.
6322 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6324         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
6325         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
6326         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
6327         (rvv_builder::get_merged_repeating_sequence): Ditto.
6328         (rvv_builder::get_merge_scalar_mask): Ditto.
6329         (emit_scalar_move_insn): Ditto.
6330         (emit_vlmax_integer_move_insn): Ditto.
6331         (emit_nonvlmax_integer_move_insn): Ditto.
6332         (emit_vlmax_gather_insn): Ditto.
6333         (emit_vlmax_masked_gather_mu_insn): Ditto.
6334         (get_repeating_sequence_dup_machine_mode): Ditto.
6336 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6338         * config/riscv/autovec.md: Split arguments.
6339         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
6340         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
6342 2023-06-04  Andrew Pinski  <apinski@marvell.com>
6344         * expr.cc (do_store_flag): Improve for single bit testing
6345         not against zero but against that single bit.
6347 2023-06-04  Andrew Pinski  <apinski@marvell.com>
6349         * expr.cc (do_store_flag): Extend the one bit checking case
6350         to handle the case where we don't have an and but rather still
6351         one bit is known to be non-zero.
6353 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
6355         * config/h8300/constraints.md (Zz): Make this a normal
6356         constraint.
6357         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
6358         * config/h8300/logical.md (H8/SX bit patterns): Remove.
6360 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6362         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
6363         New insn_and_split patterns.
6365 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6367         PR target/110109
6368         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
6369         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
6370         (@vlmul_extx4<mode>): Ditto.
6371         (@vlmul_extx8<mode>): Ditto.
6372         (@vlmul_extx16<mode>): Ditto.
6373         (@vlmul_extx32<mode>): Ditto.
6374         (@vlmul_extx64<mode>): Ditto.
6375         (*vlmul_extx2<mode>): Ditto.
6376         (*vlmul_extx4<mode>): Ditto.
6377         (*vlmul_extx8<mode>): Ditto.
6378         (*vlmul_extx16<mode>): Ditto.
6379         (*vlmul_extx32<mode>): Ditto.
6380         (*vlmul_extx64<mode>): Ditto.
6382 2023-06-04  Pan Li  <pan2.li@intel.com>
6384         * config/riscv/riscv-vector-builtins-types.def
6385         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
6386         (vfloat32m1_t): Likewise.
6387         (vfloat32m2_t): Likewise.
6388         (vfloat32m4_t): Likewise.
6389         (vfloat32m8_t): Likewise.
6390         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
6391         * config/riscv/vector-iterators.md: Add single to half machine
6392         mode conversion.
6394 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6396         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
6397         (*n<optab><mode>): Ditto.
6398         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
6399         (*n<optab><mode>): Ditto.
6400         * config/riscv/vector.md: Ditto.
6402 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
6404         PR target/110083
6405         * config/i386/i386-features.cc (scalar_chain::convert_compare):
6406         Update or delete REG_EQUAL notes, converting CONST_INT and
6407         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
6409 2023-06-04  Jason Merrill  <jason@redhat.com>
6411         PR c++/97720
6412         * tree-eh.cc (lower_resx): Pass the exception pointer to the
6413         failure_decl.
6414         * except.h: Tweak comment.
6416 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
6418         * postreload.cc (move2add_use_add2_insn): Handle
6419         trivial single_sets.  Rename variable PAT to SET.
6420         (move2add_use_add3_insn, reload_cse_move2add): Similar.
6422 2023-06-04  Pan Li  <pan2.li@intel.com>
6424         * config/riscv/riscv-vector-builtins-types.def
6425         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
6426         (vfloat16mf2_t): Likewise.
6427         (vfloat16m1_t): Likewise.
6428         (vfloat16m2_t): Likewise.
6429         (vfloat16m4_t): Likewise.
6430         (vfloat16m8_t): Likewise.
6431         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
6432         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
6433         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
6434         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
6435         vlmul and ratio.
6437 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
6439         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
6440         correct offset.
6442 2023-06-03  Die Li  <lidie@eswincomputing.com>
6444         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
6446 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6448         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
6450 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6452         * config/riscv/vector.md: Add vector-opt.md.
6453         * config/riscv/autovec-opt.md: New file.
6455 2023-06-03  liuhongt  <hongtao.liu@intel.com>
6457         PR tree-optimization/110067
6458         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
6459         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
6461 2023-06-03  liuhongt  <hongtao.liu@intel.com>
6463         PR target/92658
6464         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
6465         (truncv2si<mode>2): Ditto.
6467 2023-06-02  Andrew Pinski  <apinski@marvell.com>
6469         PR rtl-optimization/102733
6470         * dse.cc (store_info): Add addrspace field.
6471         (record_store): Record the address space
6472         and check to make sure they are the same.
6474 2023-06-02  Andrew Pinski  <apinski@marvell.com>
6476         PR rtl-optimization/110042
6477         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
6478         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
6480 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
6482         PR target/110044
6483         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
6484         Make sure that we do not have a cap on field alignment before altering
6485         the struct layout based on the type alignment of the first entry.
6487 2023-06-02  David Faust  <david.faust@oracle.com>
6489         PR debug/110073
6490         * btfout.cc (btf_absolute_func_id): New function.
6491         (btf_asm_func_type): Call it here.  Change index parameter from
6492         size_t to ctf_id_t.  Use PRIu64 formatter.
6494 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
6496         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
6497         (btf_asm_datasec_type): Likewise.
6499 2023-06-02  Carl Love  <cel@us.ibm.com>
6501         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
6502         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
6504 2023-06-02  Jason Merrill  <jason@redhat.com>
6506         PR c++/110070
6507         PR c++/105838
6508         * tree.h (DECL_MERGEABLE): New.
6509         * tree-core.h (struct tree_decl_common): Mention it.
6510         * gimplify.cc (gimplify_init_constructor): Check it.
6511         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
6512         * varasm.cc (categorize_decl_for_section): Likewise.
6514 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
6516         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
6517         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
6518         (stack_regs_mentioned_p): Change return type from int to bool
6519         and adjust function body accordingly.
6520         (stack_regs_mentioned): Ditto.
6521         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
6522         variable to bool.
6523         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
6524         (swap_rtx_condition_1): Change return type from int to bool
6525         and adjust function body accordingly.  Change "r" variable to bool.
6526         (swap_rtx_condition): Change return type from int to bool
6527         and adjust function body accordingly.
6528         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
6529         (subst_stack_regs): Ditto.
6530         (convert_regs_entry): Change return type from int to bool and adjust
6531         function body accordingly.  Change "inserted" variable to bool.
6532         (convert_regs_1): Recode handling of control_flow_insn_deleted.
6533         (convert_regs_2): Recode handling of cfg_altered.
6534         (convert_regs): Ditto.  Change "inserted" variable to bool.
6536 2023-06-02  Jason Merrill  <jason@redhat.com>
6538         PR c++/95226
6539         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
6540         (initializer_constant_valid_p_1): Compare float precision.
6542 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
6544         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
6545         semantics.
6547 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6549         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
6550         (vect_set_loop_condition_partial_vectors): Ditto.
6552 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
6554         PR target/110088
6555         * config/avr/avr.md: Add an RTL peephole to optimize operations on
6556         non-LD_REGS after a move from LD_REGS.
6557         (piaop): New code iterator.
6559 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
6561         PR testsuite/66005
6562         * doc/install.texi: Document (optional) Perl usage for parallel
6563         testing of libgomp.
6565 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
6567         PR bootstrap/82856
6568         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
6569         later)".
6571 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6572             KuanLin Chen  <best124612@gmail.com>
6574         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
6575         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
6577 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6579         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
6581 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6583         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
6585 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6587         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
6588         __RISCV_ prefix.
6589         (DEF_RVV_FRM_ENUM): Ditto.
6591 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6593         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
6594         intrinsic API expander
6595         * config/riscv/vector.md
6596         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
6597         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
6598         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
6600 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6602         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
6603         * config/riscv/predicates.md (vector_perm_operand): New predicate.
6604         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6605         (expand_vec_perm): New function.
6606         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
6607         (gen_const_vector_dup): Ditto.
6608         (emit_vlmax_gather_insn): Ditto.
6609         (emit_vlmax_masked_gather_mu_insn): Ditto.
6610         (expand_vec_perm): Ditto.
6612 2023-06-01  Jason Merrill  <jason@redhat.com>
6614         * doc/invoke.texi (-Wpedantic): Improve clarity.
6616 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
6618         * rtl.h (exp_equiv_p): Change return type from int to bool.
6619         * cse.cc (mention_regs): Change return type from int to bool
6620         and adjust function body accordingly.
6621         (exp_equiv_p): Ditto.
6622         (insert_regs): Ditto. Change "modified" function argument to bool
6623         and update usage accordingly.
6624         (record_jump_cond): Remove always zero "reversed_nonequality"
6625         function argument and update usage accordingly.
6626         (fold_rtx): Change "changed" variable to bool.
6627         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
6628         (is_dead_reg): Change return type from int to bool.
6630 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6632         * config/xtensa/xtensa.md (adddi3, subdi3):
6633         New RTL generation patterns implemented according to the instruc-
6634         tion idioms described in the Xtensa ISA reference manual (p. 600).
6636 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
6637             Uros Bizjak  <ubizjak@gmail.com>
6639         PR target/109973
6640         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
6641         CODE_for_sse4_1_ptestzv2di.
6642         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
6643         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
6644         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
6645         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
6646         when expanding UNSPEC_PTEST to compare against zero.
6647         * config/i386/i386-features.cc (scalar_chain::convert_compare):
6648         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
6649         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
6650         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
6651         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
6652         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
6653         check for suitable matching modes for the UNSPEC_PTEST pattern.
6654         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
6655         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
6656         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
6657         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
6658         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
6659         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
6660         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
6661         current behavior.
6662         (*ptest<mode>_and): Specify CCZ to only perform this optimization
6663         when only the Z flag is required.
6665 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
6667         PR target/109954
6668         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
6670 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6672         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
6673         Add =r,m and =r,m alternatives.
6674         (load_pair<DREG:mode><DREG2:mode>): Likewise.
6675         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
6677 2023-06-01  Pan Li  <pan2.li@intel.com>
6679         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
6680         and zvfh.
6681         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
6682         (main): Disable FP16 tuple.
6683         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
6684         (TARGET_VECTOR_ELEN_FP_16): Ditto.
6685         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
6686         Add FP16.
6687         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
6688         (vfloat16mf2_t): Ditto.
6689         (vfloat16m1_t): Ditto.
6690         (vfloat16m2_t): Ditto.
6691         (vfloat16m4_t): Ditto.
6692         (vfloat16m8_t): Ditto.
6693         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
6694         New macro.
6695         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
6696         machine mode based on TARGET_VECTOR_ELEN_FP_16.
6698 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6700         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
6701         (DEF_RVV_FRM_ENUM): New macro.
6702         (handle_pragma_vector): Add FRM enum
6703         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
6704         (RNE): Ditto.
6705         (RTZ): Ditto.
6706         (RDN): Ditto.
6707         (RUP): Ditto.
6708         (RMM): Ditto.
6710 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
6711             Richard Sandiford  <richard.sandiford@arm.com>
6713         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
6714         Update call to wi::bswap.
6715         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
6716         Update call to wi::bswap.
6717         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
6718         Update calls to wi::bswap.
6719         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
6720         (wi::bswap_large): New function, with revised API.
6721         * wide-int.h (wi::bswap): New (template) function prototype.
6722         (wide_int_storage::bswap): Remove method.
6723         (sext_large, zext_large): Consistent indentation/line wrapping.
6724         (bswap_large): Prototype helper function containing implementation.
6725         (wi::bswap): New template wrapper around bswap_large.
6727 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6729         PR target/99195
6730         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
6731         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
6732         (usdot_prod<vsi2qi>): Rename to...
6733         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
6734         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
6735         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
6736         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
6737         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
6738         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
6739         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
6740         ... This.
6742 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6744         PR target/99195
6745         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
6746         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
6747         (aarch64_sq<r>dmulh_n<mode>): Rename to...
6748         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
6749         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
6750         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
6751         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
6752         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
6753         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
6754         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
6755         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
6756         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
6757         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
6758         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
6760 2023-05-31  David Faust  <david.faust@oracle.com>
6762         * btfout.cc (btf_kind_names): New.
6763         (btf_kind_name): New.
6764         (btf_absolute_var_id): New utility function.
6765         (btf_relative_var_id): Likewise.
6766         (btf_relative_func_id): Likewise.
6767         (btf_absolute_datasec_id): Likewise.
6768         (btf_asm_type_ref): New.
6769         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
6770         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
6771         (btf_asm_varent): Likewise.
6772         (btf_asm_func_arg): Likewise.
6773         (btf_asm_datasec_entry): Likewise.
6774         (btf_asm_datasec_type): Likewise.
6775         (btf_asm_func_type): Likewise. Add index parameter.
6776         (btf_asm_enum_const): Likewise.
6777         (btf_asm_sou_member): Likewise.
6778         (output_btf_vars): Update btf_asm_* call accordingly.
6779         (output_asm_btf_sou_fields): Likewise.
6780         (output_asm_btf_enum_list): Likewise.
6781         (output_asm_btf_func_args_list): Likewise.
6782         (output_asm_btf_vlen_bytes): Likewise.
6783         (output_btf_func_types): Add ctf_container_ref parameter.
6784         Pass it to btf_asm_func_type.
6785         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
6786         (btf_output): Update output_btf_func_types call similarly.
6788 2023-05-31  David Faust  <david.faust@oracle.com>
6790         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
6791         and BTF_KIND_FWD which do not use the size/type field at all.
6793 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
6795         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
6796         (active_insn_p): Ditto.
6797         (in_sequence_p): Ditto.
6798         (unshare_all_rtl): Change return type from int to void.
6799         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
6800         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
6801         and adjust function body accordingly.
6802         (mem_expr_equal_p): Ditto.
6803         (unshare_all_rtl): Change return type from int to void
6804         and adjust function body accordingly.
6805         (verify_rtx_sharing): Remove unneeded return.
6806         (active_insn_p): Change return type from int to bool
6807         and adjust function body accordingly.
6808         (in_sequence_p): Ditto.
6810 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
6812         * rtl.h (true_dependence): Change return type from int to bool.
6813         (canon_true_dependence): Ditto.
6814         (read_dependence): Ditto.
6815         (anti_dependence): Ditto.
6816         (canon_anti_dependence): Ditto.
6817         (output_dependence): Ditto.
6818         (canon_output_dependence): Ditto.
6819         (may_alias_p): Ditto.
6820         * alias.h (alias_sets_conflict_p): Ditto.
6821         (alias_sets_must_conflict_p): Ditto.
6822         (objects_must_conflict_p): Ditto.
6823         (nonoverlapping_memrefs_p): Ditto.
6824         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
6825         (record_set): Ditto.
6826         (base_alias_check): Ditto.
6827         (find_base_value): Ditto.
6828         (mems_in_disjoint_alias_sets_p): Ditto.
6829         (get_alias_set_entry): Ditto.
6830         (decl_for_component_ref): Ditto.
6831         (write_dependence_p): Ditto.
6832         (memory_modified_1): Ditto.
6833         (mems_in_disjoint_alias_set_p): Change return type from int to bool
6834         and adjust function body accordingly.
6835         (alias_sets_conflict_p): Ditto.
6836         (alias_sets_must_conflict_p): Ditto.
6837         (objects_must_conflict_p): Ditto.
6838         (rtx_equal_for_memref_p): Ditto.
6839         (base_alias_check): Ditto.
6840         (read_dependence): Ditto.
6841         (nonoverlapping_memrefs_p): Ditto.
6842         (true_dependence_1): Ditto.
6843         (true_dependence): Ditto.
6844         (canon_true_dependence): Ditto.
6845         (write_dependence_p): Ditto.
6846         (anti_dependence): Ditto.
6847         (canon_anti_dependence): Ditto.
6848         (output_dependence): Ditto.
6849         (canon_output_dependence): Ditto.
6850         (may_alias_p): Ditto.
6851         (init_alias_analysis): Change "changed" variable to bool.
6853 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6855         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
6856         expand into define_insn_and_split.
6858 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6860         * config/riscv/vector.md: Remove FRM.
6862 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6864         * config/riscv/vector.md: Remove FRM.
6866 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6868         * config/riscv/vector.md: Remove FRM.
6870 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
6872         PR target/110039
6873         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
6874         pattern.
6876 2023-05-31  Richard Biener  <rguenther@suse.de>
6878         PR ipa/109983
6879         PR tree-optimization/109143
6880         * tree-ssa-structalias.cc (struct topo_info): Remove.
6881         (init_topo_info): Likewise.
6882         (free_topo_info): Likewise.
6883         (compute_topo_order): Simplify API, put the component
6884         with ESCAPED last so it's processed first.
6885         (topo_visit): Adjust.
6886         (solve_graph): Likewise.
6888 2023-05-31  Richard Biener  <rguenther@suse.de>
6890         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
6891         New.
6892         (add_graph_edge): Count redundant edges we avoid to create.
6893         (dump_sa_stats): Dump them.
6894         (ipa_pta_execute): Do not dump generating constraints when
6895         we are not dumping them.
6897 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6899         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
6900         output template to avoid explicit switch on which_alternative.
6901         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
6902         (and<mode>3): Likewise.
6903         (ior<mode>3): Likewise.
6904         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
6906 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6908         * config/xtensa/predicates.md (xtensa_bit_join_operator):
6909         New predicate.
6910         * config/xtensa/xtensa.md (ior_op): Remove.
6911         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
6912         insn_and_split pattern of the same name to express and capture
6913         the bit-combining operation with both sides swapped.
6914         In addition, replace use of code iterator with new operator
6915         predicate.
6916         (*shlrd_const, *shlrd_per_byte):
6917         Likewise regarding the code iterator.
6919 2023-05-31  Cui, Lili  <lili.cui@intel.com>
6921         PR tree-optimization/110038
6922         * params.opt: Add a limit on tree-reassoc-width.
6923         * tree-ssa-reassoc.cc
6924         (rewrite_expr_tree_parallel): Add width limit.
6926 2023-05-31  Pan Li  <pan2.li@intel.com>
6928         * common/config/riscv/riscv-common.cc:
6929         (riscv_implied_info): Add zvfh item.
6930         (riscv_ext_version_table): Ditto.
6931         (riscv_ext_flag_table): Ditto.
6932         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
6933         (TARGET_ZVFH): Ditto.
6935 2023-05-30  liuhongt  <hongtao.liu@intel.com>
6937         PR tree-optimization/108804
6938         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
6939         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
6940         Add new parameter narrow_src_p.
6941         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
6942         vectorization by truncating to lower precision.
6943         * tree-vectorizer.h (vect_get_range_info): New declare.
6945 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
6947         * lra-int.h (lra_update_sp_offset): Add the prototype.
6948         * lra.cc (setup_sp_offset): Change the return type.  Use
6949         lra_update_sp_offset.
6950         * lra-eliminations.cc (lra_update_sp_offset): New function.
6951         (lra_process_new_insns): Push the current insn to reprocess if the
6952         input reload changes sp offset.
6954 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
6956         PR target/110041
6957         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
6958         Fix misleading identation.
6960 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
6962         * rtl.h (comparison_dominates_p): Change return type from int to bool.
6963         (condjump_p): Ditto.
6964         (any_condjump_p): Ditto.
6965         (any_uncondjump_p): Ditto.
6966         (simplejump_p): Ditto.
6967         (returnjump_p): Ditto.
6968         (eh_returnjump_p): Ditto.
6969         (onlyjump_p): Ditto.
6970         (invert_jump_1): Ditto.
6971         (invert_jump): Ditto.
6972         (rtx_renumbered_equal_p): Ditto.
6973         (redirect_jump_1): Ditto.
6974         (redirect_jump): Ditto.
6975         (condjump_in_parallel_p): Ditto.
6976         * jump.cc (invert_exp_1): Adjust forward declaration.
6977         (comparison_dominates_p): Change return type from int to bool
6978         and adjust function body accordingly.
6979         (simplejump_p): Ditto.
6980         (condjump_p): Ditto.
6981         (condjump_in_parallel_p): Ditto.
6982         (any_uncondjump_p): Ditto.
6983         (any_condjump_p): Ditto.
6984         (returnjump_p): Ditto.
6985         (eh_returnjump_p): Ditto.
6986         (onlyjump_p): Ditto.
6987         (redirect_jump_1): Ditto.
6988         (redirect_jump): Ditto.
6989         (invert_exp_1): Ditto.
6990         (invert_jump_1): Ditto.
6991         (invert_jump): Ditto.
6992         (rtx_renumbered_equal_p): Ditto.
6994 2023-05-30  Andrew Pinski  <apinski@marvell.com>
6996         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
6997         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
6998         Add ne as a possible cmp.
6999         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
7001 2023-05-30  Andrew Pinski  <apinski@marvell.com>
7003         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
7004         pattern.
7006 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
7008         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
7009         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
7010         (and (extend X) C) as (zero_extend (and X C)), to also optimize
7011         modes wider than HOST_WIDE_INT.
7013 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
7015         PR target/107172
7016         * simplify-rtx.cc (simplify_const_relational_operation): Return
7017         early if we have a MODE_CC comparison that isn't a COMPARE against
7018         const0_rtx.
7020 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
7022         * config/riscv/riscv.cc (riscv_const_insns): Allow
7023         const_vec_duplicates.
7025 2023-05-30  liuhongt  <hongtao.liu@intel.com>
7027         PR middle-end/108938
7028         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
7029         function, cut from original find_bswap_or_nop function.
7030         (find_bswap_or_nop): Add a new parameter, detect bswap +
7031         rotate and save rotate result in the new parameter.
7032         (bswap_replace): Add a new parameter to indicate rotate and
7033         generate rotate stmt if needed.
7034         (maybe_optimize_vector_constructor): Adjust for new rotate
7035         parameter in the upper 2 functions.
7036         (pass_optimize_bswap::execute): Ditto.
7037         (imm_store_chain_info::output_merged_store): Ditto.
7039 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7041         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
7042         (aarch64_<su>adalp<mode>): New define_expand.
7043         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
7044         (aarch64_<su>addlp<mode>): Convert to define_expand.
7045         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
7046         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
7047         (ADALP): Likewise.
7048         (USADDLP): Likewise.
7049         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
7051 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7053         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
7054         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
7055         srhadd, urhadd builtin codes for standard optab ones.
7056         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
7057         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
7058         unspec.
7059         (<u>avg<mode>3_ceil): Rename to...
7060         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
7061         unspec.
7062         (aarch64_<su>hsub<mode>): New define_expand.
7063         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
7064         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
7065         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
7067 2023-05-30  Andreas Schwab  <schwab@suse.de>
7069         PR target/110036
7070         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
7071         match libsanitizer.
7073 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7075         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
7076         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
7077         Declare prototype.
7078         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7079         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
7080         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
7081         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
7082         (aarch64_<sra_op>sra_n<mode>): New define_expand.
7083         (aarch64_<sra_op>rsra_n<mode>): Likewise.
7084         (aarch64_<sur>sra_n<mode>): Rename to...
7085         (aarch64_<sur>sra_ndi): ... This.
7086         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
7087         any_target_p argument.
7088         (aarch64_extract_vec_duplicate_wide_int): Define.
7089         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7090         (aarch64_const_vec_rnd_cst_p): Likewise.
7091         (aarch64_vector_mode_supported_any_target_p): Likewise.
7092         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
7093         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
7094         (VSRA): Adjust for the above.
7095         (sur): Likewise.
7096         (V2XWIDE): New mode_attr.
7097         (vec_or_offset): Likewise.
7098         (SHIFTEXTEND): Likewise.
7099         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
7100         predicate.
7101         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7102         clarify that it applies to current target options.
7103         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
7104         * doc/tm.texi.in: Regenerate.
7105         * stor-layout.cc (mode_for_vector): Check
7106         vector_mode_supported_any_target_p when iterating through vector modes.
7107         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7108         clarify that it applies to current target options.
7109         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
7111 2023-05-30  Lili Cui  <lili.cui@intel.com>
7113         PR tree-optimization/98350
7114         * tree-ssa-reassoc.cc
7115         (rewrite_expr_tree_parallel): Rewrite this function.
7116         (rank_ops_for_fma): New.
7117         (reassociate_bb): Handle new function.
7119 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
7121         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
7122         (rtx_unstable_p): Ditto.
7123         (reg_mentioned_p): Ditto.
7124         (reg_referenced_p): Ditto.
7125         (reg_used_between_p): Ditto.
7126         (reg_set_between_p): Ditto.
7127         (modified_between_p): Ditto.
7128         (no_labels_between_p): Ditto.
7129         (modified_in_p): Ditto.
7130         (reg_set_p): Ditto.
7131         (multiple_sets): Ditto.
7132         (set_noop_p): Ditto.
7133         (noop_move_p): Ditto.
7134         (reg_overlap_mentioned_p): Ditto.
7135         (dead_or_set_p): Ditto.
7136         (dead_or_set_regno_p): Ditto.
7137         (find_reg_fusage): Ditto.
7138         (find_regno_fusage): Ditto.
7139         (side_effects_p): Ditto.
7140         (volatile_refs_p): Ditto.
7141         (volatile_insn_p): Ditto.
7142         (may_trap_p_1): Ditto.
7143         (may_trap_p): Ditto.
7144         (may_trap_or_fault_p): Ditto.
7145         (computed_jump_p): Ditto.
7146         (auto_inc_p): Ditto.
7147         (loc_mentioned_in_p): Ditto.
7148         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
7149         (rtx_unstable_p): Change return type from int to bool
7150         and adjust function body accordingly.
7151         (rtx_addr_can_trap_p): Ditto.
7152         (reg_mentioned_p): Ditto.
7153         (no_labels_between_p): Ditto.
7154         (reg_used_between_p): Ditto.
7155         (reg_referenced_p): Ditto.
7156         (reg_set_between_p): Ditto.
7157         (reg_set_p): Ditto.
7158         (modified_between_p): Ditto.
7159         (modified_in_p): Ditto.
7160         (multiple_sets): Ditto.
7161         (set_noop_p): Ditto.
7162         (noop_move_p): Ditto.
7163         (reg_overlap_mentioned_p): Ditto.
7164         (dead_or_set_p): Ditto.
7165         (dead_or_set_regno_p): Ditto.
7166         (find_reg_fusage): Ditto.
7167         (find_regno_fusage): Ditto.
7168         (remove_node_from_insn_list): Ditto.
7169         (volatile_insn_p): Ditto.
7170         (volatile_refs_p): Ditto.
7171         (side_effects_p): Ditto.
7172         (may_trap_p_1): Ditto.
7173         (may_trap_p): Ditto.
7174         (may_trap_or_fault_p): Ditto.
7175         (computed_jump_p): Ditto.
7176         (auto_inc_p): Ditto.
7177         (loc_mentioned_in_p): Ditto.
7178         * combine.cc (can_combine_p): Update indirect function.
7180 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7182         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
7183         * config/riscv/iterators.md: New attribute.
7184         * config/riscv/vector-iterators.md: New attribute.
7186 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7188         * config/riscv/riscv.md: Fix signed and unsigned comparison
7189         warning.
7191 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7193         * config/riscv/autovec.md (fnma<mode>4): New pattern.
7194         (*fnma<mode>): Ditto.
7196 2023-05-29  Die Li  <lidie@eswincomputing.com>
7198         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
7199         Delete.
7200         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
7201         process for TARGET_XTHEADCONDMOV
7203 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
7205         PR target/110021
7206         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
7207         TARGET_AVX512BW to generate truncv16hiv16qi2.
7209 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
7211         * config/riscv/riscv.md (and<mode>3): New expander.
7212         (*and<mode>3) New pattern.
7213         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
7214         predicate.
7216 2023-05-29  Pan Li  <pan2.li@intel.com>
7218         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
7219         comments and rename local variables.
7220         (emit_nonvlmax_insn): Diito.
7221         (emit_vlmax_merge_insn): Ditto.
7222         (emit_vlmax_cmp_insn): Ditto.
7223         (emit_vlmax_cmp_mu_insn): Ditto.
7224         (emit_scalar_move_insn): Ditto.
7226 2023-05-29  Pan Li  <pan2.li@intel.com>
7228         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
7229         magic number.
7230         (emit_nonvlmax_insn): Ditto.
7231         (emit_vlmax_merge_insn): Ditto.
7232         (emit_vlmax_cmp_insn): Ditto.
7233         (emit_vlmax_cmp_mu_insn): Ditto.
7234         (expand_vec_series): Ditto.
7236 2023-05-29  Pan Li  <pan2.li@intel.com>
7238         * config/riscv/riscv-protos.h (enum insn_type): New type.
7239         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
7240         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
7241         class member.
7242         (rvv_builder::get_merged_repeating_sequence): Ditto.
7243         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
7244         to evaluate the optimization cost.
7245         (rvv_builder::get_merge_scalar_mask): New function to get the merge
7246         mask.
7247         (emit_scalar_move_insn): New function to emit vmv.s.x.
7248         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
7249         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
7250         vmv.v.x.
7251         (get_repeating_sequence_dup_machine_mode): New function to get the dup
7252         machine mode.
7253         (expand_vector_init_merge_repeating_sequence): New function to perform
7254         the optimization.
7255         (expand_vec_init): Add this vector init optimization.
7256         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
7258 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
7260         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
7261         put onto the increment when it is inserted after the position.
7263 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
7265         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
7266         on constants.
7268 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7270         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
7272 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7274         * config/riscv/autovec.md (fma<mode>4): New pattern.
7275         (*fma<mode>): Ditto.
7276         * config/riscv/riscv-protos.h (enum insn_type): New enum.
7277         (emit_vlmax_ternary_insn): New function.
7278         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
7280 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7282         * config/riscv/vector.md: Fix vimuladd instruction bug.
7284 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7286         * config/riscv/riscv.cc (global_state_unknown_p): New function.
7287         (riscv_mode_after): Fix incorrect VXM.
7289 2023-05-29  Pan Li  <pan2.li@intel.com>
7291         * common/config/riscv/riscv-common.cc:
7292         (riscv_implied_info): Add zvfhmin item.
7293         (riscv_ext_version_table): Ditto.
7294         (riscv_ext_flag_table): Ditto.
7295         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
7296         (TARGET_ZFHMIN): Align indent.
7297         (TARGET_ZFH): Ditto.
7298         (TARGET_ZVFHMIN): New macro.
7300 2023-05-27  liuhongt  <hongtao.liu@intel.com>
7302         PR target/100711
7303         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
7304         to VI_AVX2 to cover more modes.
7306 2023-05-27  liuhongt  <hongtao.liu@intel.com>
7308         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
7309         Remove ATOM and ICELAKE(and later) core processors.
7311 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
7313         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
7314         (abs<mode>2): Add.
7315         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
7316         Declare.
7317         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
7318         function.
7320 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
7321             Juzhe Zhong  <juzhe.zhong@rivai.ai>
7323         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
7324         expander.
7325         (<optab><v_quad_trunc><mode>2): Dito.
7326         (<optab><v_oct_trunc><mode>2): Dito.
7327         (trunc<mode><v_double_trunc>2): Dito.
7328         (trunc<mode><v_quad_trunc>2): Dito.
7329         (trunc<mode><v_oct_trunc>2): Dito.
7330         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
7331         (autovectorize_vector_modes): Define.
7332         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
7333         hook.
7334         (autovectorize_vector_modes): Implement hook.
7335         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
7336         Implement target hook.
7337         (riscv_vectorize_related_mode): Implement target hook.
7338         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
7339         (TARGET_VECTORIZE_RELATED_MODE): Define.
7340         * config/riscv/vector-iterators.md: Add lowercase versions of
7341         mode_attr iterators.
7343 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
7344             Tobias Burnus  <tobias@codesourcery.com>
7346         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
7347         (ASM_SPEC): Use XNACKOPT.
7348         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
7349         (enum hsaco_attr_type): ... this, and generalize the names.
7350         (TARGET_XNACK): New macro.
7351         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
7352         but -mxnack=off.
7353         (output_file_start): Update xnack handling.
7354         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
7355         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
7356         (sram_ecc_type): Rename to ...
7357         (hsaco_attr_type: ... this.)
7358         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
7359         (TEST_XNACK): Delete.
7360         (TEST_XNACK_ANY): New macro.
7361         (TEST_XNACK_ON): New macro.
7362         (main): Support the new -mxnack=on/off/any syntax.
7363         * doc/invoke.texi (-mxnack): Update for new syntax.
7365 2023-05-26  Andrew Pinski  <apinski@marvell.com>
7367         * genmatch.cc (emit_debug_printf): New function.
7368         (dt_simplify::gen_1): Emit printf into the code
7369         before the `return true` or returning the folded result
7370         instead of emitting it always.
7372 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7374         * config/xtensa/xtensa-protos.h
7375         (xtensa_expand_block_set_unrolled_loop,
7376         xtensa_expand_block_set_small_loop): Remove.
7377         (xtensa_expand_block_set): New prototype.
7378         * config/xtensa/xtensa.cc
7379         (xtensa_expand_block_set_libcall): New subfunction.
7380         (xtensa_expand_block_set_unrolled_loop,
7381         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
7382         (xtensa_expand_block_set): New function that calls the above
7383         subfunctions.
7384         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
7385         xtensa_expand_block_set().
7387 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7389         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
7390         New prototype.
7391         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
7392         New function.
7393         * config/xtensa/constraints.md (O):
7394         Change to use the above function.
7395         * config/xtensa/xtensa.md (*subsi3_from_const):
7396         New insn_and_split pattern.
7398 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7400         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
7401         Retract excessive line folding, and correct the value of
7402         the "length" insn attribute related to TARGET_DENSITY.
7403         (*extzvsi-1bit_addsubx): Ditto.
7405 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
7407         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
7408         Do not disable call to ix86_expand_vecop_qihi2.
7410 2023-05-26  liuhongt  <hongtao.liu@intel.com>
7412         PR target/109610
7413         PR target/109858
7414         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
7415         calculation when !hard_regno_mode_ok for GENERAL_REGS and
7416         mode, otherwise still use GENERAL_REGS.
7418 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7420         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
7421         explict VL and drop VL in ops.
7423 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
7425         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
7426         in different BB blocks.
7428 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
7430         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
7431         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
7432         instructions when available.  Emulate truncation via
7433         ix86_expand_vec_perm_const_1 when native truncate insn
7434         is not available.
7435         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
7436         when available.  Trivially rename some variables.
7437         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
7438         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
7439         calculation of V*QImode emulations to account for generation of
7440         2x-wider mode instructions.
7441         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
7442         emulations to account for generation of 2x-wider mode instructions.
7444 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
7446         PR target/104327
7447         * config/avr/avr.cc (avr_can_inline_p): New static function.
7448         (TARGET_CAN_INLINE_P): Define to that function.
7450 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
7452         PR target/82931
7453         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
7454         Handle any bit position and use mode QISI.
7455         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
7456         of 2 insns for bit-transfer of respective style.
7458 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
7460         * config/arm/iterators.md (MVE_6): Remove.
7461         * config/arm/mve.md: Replace MVE_6 with MVE_5.
7463 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7464             Richard Sandiford  <richard.sandiford@arm.com>
7466         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
7467         function.
7468         (vect_set_loop_controls_directly): Add decrement IV support.
7469         (vect_set_loop_condition_partial_vectors): Ditto.
7470         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
7471         variable.
7472         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
7473         macro.
7475 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7477         PR target/99195
7478         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
7479         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
7480         Fix canonicalization of PLUS operands.
7481         (aarch64_fcmla<rot><mode>): Rename to...
7482         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
7483         Fix canonicalization of PLUS operands.
7484         (aarch64_fcmla_lane<rot><mode>): Rename to...
7485         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
7486         Fix canonicalization of PLUS operands.
7487         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
7488         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
7489         Fix canonicalization of PLUS operands.
7490         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
7492 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
7494         * config/arm/arm.md (rbitsi2): Rename to...
7495         (arm_rbit): ... This.
7496         (ctzsi2): Adjust for the above.
7497         (arm_rev16si2): Convert to define_expand.
7498         (arm_rev16si2_alt1): New pattern.
7499         (arm_rev16si2_alt): Rename to...
7500         (*arm_rev16si2_alt2): ... This.
7501         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
7502         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
7503         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
7504         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
7506 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
7508         PR target/109800
7509         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
7510         instead of DFmode.
7511         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
7512         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
7513         DFmode as an rvalue.
7515 2023-05-25  Richard Biener  <rguenther@suse.de>
7517         PR target/109955
7518         * tree-vect-stmts.cc (vectorizable_condition): For
7519         embedded comparisons also handle the case when the target
7520         only provides vec_cmp and vcond_mask.
7522 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
7524         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
7525         TLS Local Dynamic.
7527 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
7529         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
7530         (seq_cost_ignoring_scalar_moves): Likewise.
7531         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
7533 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7535         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
7536         (vcage_f32): Likewise.
7537         (vcages_f32): Likewise.
7538         (vcageq_f32): Likewise.
7539         (vcaged_f64): Likewise.
7540         (vcageq_f64): Likewise.
7541         (vcagts_f32): Likewise.
7542         (vcagt_f32): Likewise.
7543         (vcagt_f64): Likewise.
7544         (vcagtq_f32): Likewise.
7545         (vcagtd_f64): Likewise.
7546         (vcagtq_f64): Likewise.
7547         (vcale_f32): Likewise.
7548         (vcale_f64): Likewise.
7549         (vcaled_f64): Likewise.
7550         (vcales_f32): Likewise.
7551         (vcaleq_f32): Likewise.
7552         (vcaleq_f64): Likewise.
7553         (vcalt_f32): Likewise.
7554         (vcalt_f64): Likewise.
7555         (vcaltd_f64): Likewise.
7556         (vcaltq_f32): Likewise.
7557         (vcaltq_f64): Likewise.
7558         (vcalts_f32): Likewise.
7560 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
7562         PR target/109173
7563         PR target/109174
7564         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
7565         int to const int or const int to const unsigned int.
7566         (_mm512_mask_srli_epi16): Ditto.
7567         (_mm512_slli_epi16): Ditto.
7568         (_mm512_mask_slli_epi16): Ditto.
7569         (_mm512_maskz_slli_epi16): Ditto.
7570         (_mm512_srai_epi16): Ditto.
7571         (_mm512_mask_srai_epi16): Ditto.
7572         (_mm512_maskz_srai_epi16): Ditto.
7573         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
7574         (_mm512_mask_slli_epi64): Ditto.
7575         (_mm512_maskz_slli_epi64): Ditto.
7576         (_mm512_srli_epi64): Ditto.
7577         (_mm512_mask_srli_epi64): Ditto.
7578         (_mm512_maskz_srli_epi64): Ditto.
7579         (_mm512_srai_epi64): Ditto.
7580         (_mm512_mask_srai_epi64): Ditto.
7581         (_mm512_maskz_srai_epi64): Ditto.
7582         (_mm512_slli_epi32): Ditto.
7583         (_mm512_mask_slli_epi32): Ditto.
7584         (_mm512_maskz_slli_epi32): Ditto.
7585         (_mm512_srli_epi32): Ditto.
7586         (_mm512_mask_srli_epi32): Ditto.
7587         (_mm512_maskz_srli_epi32): Ditto.
7588         (_mm512_srai_epi32): Ditto.
7589         (_mm512_mask_srai_epi32): Ditto.
7590         (_mm512_maskz_srai_epi32): Ditto.
7591         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
7592         (_mm256_maskz_srai_epi16): Ditto.
7593         (_mm_mask_srai_epi16): Ditto.
7594         (_mm_maskz_srai_epi16): Ditto.
7595         (_mm256_mask_slli_epi16): Ditto.
7596         (_mm256_maskz_slli_epi16): Ditto.
7597         (_mm_mask_slli_epi16): Ditto.
7598         (_mm_maskz_slli_epi16): Ditto.
7599         (_mm_maskz_srli_epi16): Ditto.
7600         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
7601         (_mm256_maskz_srli_epi32): Ditto.
7602         (_mm_mask_srli_epi32): Ditto.
7603         (_mm_maskz_srli_epi32): Ditto.
7604         (_mm256_mask_srli_epi64): Ditto.
7605         (_mm256_maskz_srli_epi64): Ditto.
7606         (_mm_mask_srli_epi64): Ditto.
7607         (_mm_maskz_srli_epi64): Ditto.
7608         (_mm256_mask_srai_epi32): Ditto.
7609         (_mm256_maskz_srai_epi32): Ditto.
7610         (_mm_mask_srai_epi32): Ditto.
7611         (_mm_maskz_srai_epi32): Ditto.
7612         (_mm256_srai_epi64): Ditto.
7613         (_mm256_mask_srai_epi64): Ditto.
7614         (_mm256_maskz_srai_epi64): Ditto.
7615         (_mm_srai_epi64): Ditto.
7616         (_mm_mask_srai_epi64): Ditto.
7617         (_mm_maskz_srai_epi64): Ditto.
7618         (_mm_mask_slli_epi32): Ditto.
7619         (_mm_maskz_slli_epi32): Ditto.
7620         (_mm_mask_slli_epi64): Ditto.
7621         (_mm_maskz_slli_epi64): Ditto.
7622         (_mm256_mask_slli_epi32): Ditto.
7623         (_mm256_maskz_slli_epi32): Ditto.
7624         (_mm256_mask_slli_epi64): Ditto.
7625         (_mm256_maskz_slli_epi64): Ditto.
7627 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7629         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
7630         instructions.
7632 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
7634         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
7635         * data-streamer-out.cc (streamer_write_vrange): Same.
7636         * value-range.h (class vrange): Make streamer_write_vrange a friend.
7638 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
7640         * value-query.cc (range_query::get_tree_range): Set NAN directly
7641         if necessary.
7642         * value-range.cc (frange::set): Assert that bounds are not NAN.
7644 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
7646         * value-range.cc (add_vrange): Handle known NANs.
7648 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
7650         * value-range.h (frange::set_nan): New.
7652 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
7654         PR target/100106
7655         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
7656         requires stricter alignment than MEM's.
7658 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7660         PR tree-optimization/107822
7661         PR tree-optimization/107986
7662         * Makefile.in (OBJS): Add gimple-range-phi.o.
7663         * gimple-range-cache.h (ranger_cache::m_estimate): New
7664         phi_analyzer pointer member.
7665         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
7666         phi_analyzer if no loop info is available.
7667         * gimple-range-phi.cc: New file.
7668         * gimple-range-phi.h: New file.
7669         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
7671 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7673         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
7674         to contructors.
7675         (fold_range): Add range_query parameter.
7676         (fur_relation::fur_relation): New.
7677         (fur_relation::trio): New.
7678         (fur_relation::register_relation): New.
7679         (fold_relations): New.
7680         * gimple-range-fold.h (fold_range): Adjust prototypes.
7681         (fold_relations): New.
7683 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7685         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
7686         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
7687         (ranger_cache::const_query): New.
7688         * gimple-range.cc (gimple_ranger::const_query): New.
7689         * gimple-range.h (gimple_ranger::const_query): New prototype.
7691 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7693         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
7694         (ssa_cache::dump_range_query): Delete.
7695         (ssa_lazy_cache::dump_range_query): Delete.
7696         (ssa_lazy_cache::get_range): Move from header file.
7697         (ssa_lazy_cache::clear_range): ditto.
7698         (ssa_lazy_cache::clear): Ditto.
7699         * gimple-range-cache.h (class ssa_cache): Virtualize.
7700         (class ssa_lazy_cache): Inherit and virtualize.
7702 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
7704         * value-range.h (vrange::kind): Remove.
7706 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
7708         PR middle-end/109840
7709         * match.pd <popcount optimizations>: Preserve zero-extension when
7710         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
7711         popcount((T)x), so the popcount's argument keeps the same type.
7712         <parity optimizations>:  Likewise preserve extensions when
7713         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
7714         parity((T)x), so that the parity's argument type is the same.
7716 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
7718         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
7719         (ipcp_store_vr_results): Same.
7720         * ipa-prop.cc (ipa_vr::ipa_vr): New.
7721         (ipa_vr::get_vrange): New.
7722         (ipa_vr::set_unknown): New.
7723         (ipa_vr::streamer_read): New.
7724         (ipa_vr::streamer_write): New.
7725         (write_ipcp_transformation_info): Use new ipa_vr API.
7726         (read_ipcp_transformation_info): Same.
7727         (ipa_vr::nonzero_p): Delete.
7728         (ipcp_update_vr): Use new ipa_vr API.
7729         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
7730         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
7732 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
7734         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
7735         silence overflow warnings later on.
7737 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
7739         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
7740         Remove handling of V8QImode.
7741         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
7742         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
7743         (v<insn>v4qi3): Ditto.
7744         * config/i386/sse.md (v<insn>v8qi3): Remove.
7746 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7748         PR target/99195
7749         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
7750         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
7751         (aarch64_simd_ashr<mode>): Rename to...
7752         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
7753         (aarch64_simd_imm_shl<mode>): Rename to...
7754         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
7755         (aarch64_simd_reg_sshl<mode>): Rename to...
7756         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
7757         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
7758         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
7759         (aarch64_simd_reg_shl<mode>_signed): Rename to...
7760         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
7761         (vec_shr_<mode>): Rename to...
7762         (vec_shr_<mode><vczle><vczbe>): ... This.
7763         (aarch64_<sur>shl<mode>): Rename to...
7764         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
7765         (aarch64_<sur>q<r>shl<mode>): Rename to...
7766         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
7768 2023-05-24  Richard Biener  <rguenther@suse.de>
7770         PR target/109944
7771         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
7772         Perform final vector composition using
7773         ix86_expand_vector_init_general instead of setting
7774         the highpart and lowpart which causes spilling.
7776 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7778         PR tree-optimization/109695
7779         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
7780         changed param.
7781         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
7782         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
7783         flag to set_global_range.
7784         (gimple_ranger::prefill_stmt_dependencies): Ditto.
7786 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7788         PR tree-optimization/109695
7789         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
7790         a positive int.
7791         (temporal_cache::current_p): Check always_current method.
7792         (temporal_cache::set_always_current): Add param and set value
7793         appropriately.
7794         (temporal_cache::always_current_p): New.
7795         (ranger_cache::get_global_range): Adjust.
7796         (ranger_cache::set_global_range): set always current first.
7798 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
7800         PR tree-optimization/109695
7801         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
7802         fold_range with global query to choose an initial value.
7804 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7806         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
7807         prefix.
7809 2023-05-24  Richard Biener  <rguenther@suse.de>
7811         PR tree-optimization/109849
7812         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
7813         expressions but take the first sets.
7815 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
7817         PR modula2/109952
7818         * doc/gm2.texi (High procedure function): New node.
7819         (Using): New menu entry for High procedure function.
7821 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
7823         PR rtl-optimization/109940
7824         * early-remat.cc (postorder_index): Rename to...
7825         (rpo_index): ...this.
7826         (compare_candidates): Sort by decreasing rpo_index rather than
7827         increasing postorder_index.
7828         (early_remat::sort_candidates): Calculate the forward RPO from
7829         DF_FORWARD.
7830         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
7831         rather than DF_BACKWARD in reverse.
7833 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7835         PR target/109939
7836         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
7837         qualifier_none for the return operand.
7839 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7841         * config/riscv/autovec.md (<optab><mode>3): New pattern.
7842         (one_cmpl<mode>2): Ditto.
7843         (*<optab>not<mode>): Ditto.
7844         (*n<optab><mode>): Ditto.
7845         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
7846         one_cmpl.
7848 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
7850         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
7851         calculation on n_perms by considering nvectors_per_build.
7853 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7854             Richard Sandiford  <richard.sandiford@arm.com>
7856         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
7857         (vec_cmp<mode><vm>): New pattern.
7858         (vec_cmpu<mode><vm>): New pattern.
7859         (vcond<V:mode><VI:mode>): New pattern.
7860         (vcondu<V:mode><VI:mode>): New pattern.
7861         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
7862         (emit_vlmax_merge_insn): New function.
7863         (emit_vlmax_cmp_insn): Ditto.
7864         (emit_vlmax_cmp_mu_insn): Ditto.
7865         (expand_vec_cmp): Ditto.
7866         (expand_vec_cmp_float): Ditto.
7867         (expand_vcond): Ditto.
7868         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
7869         (emit_vlmax_cmp_insn): Ditto.
7870         (emit_vlmax_cmp_mu_insn): Ditto.
7871         (get_cmp_insn_code): Ditto.
7872         (expand_vec_cmp): Ditto.
7873         (expand_vec_cmp_float): Ditto.
7874         (expand_vcond): Ditto.
7876 2023-05-24  Pan Li  <pan2.li@intel.com>
7878         * config/riscv/genrvv-type-indexer.cc (main): Add
7879         unsigned_eew*_lmul1_interpret for indexer.
7880         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
7881         Register vuint*m1_t interpret function.
7882         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
7883         New macro for vuint8m1_t.
7884         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
7885         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
7886         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
7887         (vbool1_t): Add to unsigned_eew*_interpret_ops.
7888         (vbool2_t): Likewise.
7889         (vbool4_t): Likewise.
7890         (vbool8_t): Likewise.
7891         (vbool16_t): Likewise.
7892         (vbool32_t): Likewise.
7893         (vbool64_t): Likewise.
7894         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
7895         New macro for vuint*m1_t.
7896         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
7897         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
7898         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
7899         (required_extensions_p): Add vuint*m1_t interpret case.
7900         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
7901         Add vuint*m1_t interpret to base type.
7902         (unsigned_eew16_lmul1_interpret): Likewise.
7903         (unsigned_eew32_lmul1_interpret): Likewise.
7904         (unsigned_eew64_lmul1_interpret): Likewise.
7906 2023-05-24  Pan Li  <pan2.li@intel.com>
7908         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
7909         for the eew size list.
7910         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
7911         (main): Add signed_eew*_lmul1_interpret for indexer.
7912         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
7913         Register vint*m1_t interpret function.
7914         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
7915         New macro for vint8m1_t.
7916         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
7917         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
7918         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
7919         (vbool1_t): Add to signed_eew*_interpret_ops.
7920         (vbool2_t): Likewise.
7921         (vbool4_t): Likewise.
7922         (vbool8_t): Likewise.
7923         (vbool16_t): Likewise.
7924         (vbool32_t): Likewise.
7925         (vbool64_t): Likewise.
7926         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
7927         New macro for vint*m1_t.
7928         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
7929         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
7930         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
7931         (required_extensions_p): Add vint8m1_t interpret case.
7932         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
7933         Add vint*m1_t interpret to base type.
7934         (signed_eew16_lmul1_interpret): Likewise.
7935         (signed_eew32_lmul1_interpret): Likewise.
7936         (signed_eew64_lmul1_interpret): Likewise.
7938 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7940         * config/riscv/autovec.md: Adjust for new interface.
7941         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
7942         (emit_nonvlmax_insn): Add AVL operand.
7943         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
7944         (emit_nonvlmax_insn): Add AVL operand.
7945         (sew64_scalar_helper): Adjust for new interface.
7946         (expand_tuple_move): Ditto.
7947         * config/riscv/vector.md: Ditto.
7949 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7951         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
7952         (expand_const_vector): Ditto.
7953         (legitimize_move): Ditto.
7954         (sew64_scalar_helper): Ditto.
7955         (expand_tuple_move): Ditto.
7956         (expand_vector_init_insert_elems): Ditto.
7957         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
7959 2023-05-24  liuhongt  <hongtao.liu@intel.com>
7961         PR target/109900
7962         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
7963         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
7964         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
7965         (ix86_masked_all_ones): Handle 64-bit mask.
7966         * config/i386/i386-builtin.def: Replace icode of related
7967         non-mask simd abs builtins with CODE_FOR_nothing.
7969 2023-05-23  Martin Uecker  <uecker@tugraz.at>
7971         PR c/109450
7972         * function.cc (gimplify_parm_type): Remove function.
7973         (gimplify_parameters): Call gimplify_type_sizes.
7975 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7977         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
7978         and change to also accept '*subx' pattern.
7979         (*subx): Remove.
7981 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7983         * config/xtensa/predicates.md (addsub_operator): New.
7984         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
7985         *extzvsi-1bit_addsubx): New insn_and_split patterns.
7986         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
7987         Add a special case about ifcvt 'noce_try_cmove()' to handle
7988         constant loads that do not fit into signed 12 bits in the
7989         patterns added above.
7991 2023-05-23  Richard Biener  <rguenther@suse.de>
7993         PR tree-optimization/109747
7994         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
7995         the SLP node only once to the cost hook.
7997 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
7999         * config/avr/avr.cc (avr_insn_cost): New static function.
8000         (TARGET_INSN_COST): Define to that function.
8002 2023-05-23  Richard Biener  <rguenther@suse.de>
8004         PR target/109944
8005         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
8006         For vector construction or splats apply GPR->XMM move
8007         costing.  QImode memory can be handled directly only
8008         with SSE4.1 pinsrb.
8010 2023-05-23  Richard Biener  <rguenther@suse.de>
8012         PR tree-optimization/108752
8013         * tree-vect-stmts.cc (vectorizable_operation): For bit
8014         operations with generic word_mode vectors do not cost
8015         an extra stmt.  For plus, minus and negate also cost the
8016         constant materialization.
8018 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
8020         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
8021         Call ix86_expand_vec_shift_qihi_constant for shifts
8022         with constant count operand.
8023         * config/i386/i386.cc (ix86_shift_rotate_cost):
8024         Handle V4QImode and V8QImode.
8025         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
8026         (<insn>v4qi3): Ditto.
8028 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8030         * config/riscv/vector.md: Add mode.
8032 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
8034         PR tree-optimization/109934
8035         * value-range.cc (irange::invert): Remove buggy special case.
8037 2023-05-23  Richard Biener  <rguenther@suse.de>
8039         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
8040         ANTIC_OUT.
8042 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
8044         PR target/109632
8045         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
8046         subregs between any scalars that are 64 bits or smaller.
8047         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
8048         (bits_etype): New int attribute.
8049         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
8050         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
8051         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
8053 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
8055         * doc/md.texi: Document that <FOO> can be used to refer to the
8056         numerical value of an int iterator FOO.  Tweak other parts of
8057         the int iterator documentation.
8058         * read-rtl.cc (iterator_group::has_self_attr): New field.
8059         (map_attr_string): When has_self_attr is true, make <FOO>
8060         expand to the current value of iterator FOO.
8061         (initialize_iterators): Set has_self_attr for int iterators.
8063 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8065         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
8066         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
8067         (RVV_UNOP_NUM): New macro.
8068         (RVV_BINOP_NUM): Ditto.
8069         (legitimize_move): Refactor the framework of RVV auto-vectorization.
8070         (emit_vlmax_op): Ditto.
8071         (emit_vlmax_reg_op): Ditto.
8072         (emit_len_op): Ditto.
8073         (emit_len_binop): Ditto.
8074         (emit_vlmax_tany_many): Ditto.
8075         (emit_nonvlmax_tany_many): Ditto.
8076         (sew64_scalar_helper): Ditto.
8077         (expand_tuple_move): Ditto.
8078         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
8079         (emit_pred_binop): Ditto.
8080         (emit_vlmax_op): Ditto.
8081         (emit_vlmax_tany_many): New function.
8082         (emit_len_op): Remove.
8083         (emit_nonvlmax_tany_many): New function.
8084         (emit_vlmax_reg_op): Remove.
8085         (emit_len_binop): Ditto.
8086         (emit_index_op): Ditto.
8087         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
8088         (expand_const_vector): Ditto.
8089         (legitimize_move): Ditto.
8090         (sew64_scalar_helper): Ditto.
8091         (expand_tuple_move): Ditto.
8092         (expand_vector_init_insert_elems): Ditto.
8093         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8094         * config/riscv/vector.md: Ditto.
8096 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8098         PR target/109855
8099         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
8100         and constraint for operand 0.
8101         (add_vec_concat_subst_be): Likewise.
8103 2023-05-23  Richard Biener  <rguenther@suse.de>
8105         PR tree-optimization/109849
8106         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
8107         and use that to determine what to hoist.
8109 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
8111         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
8112         specific treatment for bit-fields only if they have an integral type
8113         and filter out non-integral bit-fields that do not start and end on
8114         a byte boundary.
8116 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
8118         PR tree-optimization/109920
8119         * value-range.h (RESIZABLE>::~int_range): Use delete[].
8121 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
8123         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
8124         calcuation of integer vector mode costs to reflect generated
8125         instruction sequences of different integer vector modes and
8126         different target ABIs.  Remove "speed" function argument.
8127         (ix86_rtx_costs): Update call for removed function argument.
8128         (ix86_vector_costs::add_stmt_cost): Ditto.
8130 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
8132         * value-range.h (class Value_Range): Implement set_zero,
8133         set_nonzero, and nonzero_p.
8135 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
8137         * config/i386/i386.cc (ix86_multiplication_cost): Add
8138         the cost of a memory read to the cost of V?QImode sequences.
8140 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8142         * config/riscv/riscv-v.cc: Add "m_" prefix.
8144 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8146         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
8147         multiple-rgroup of length.
8148         * tree-vect-stmts.cc (vectorizable_store): Ditto.
8149         (vectorizable_load): Ditto.
8150         * tree-vectorizer.h (vect_get_loop_len): Ditto.
8152 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8154         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
8155         codes.
8157 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
8159         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
8160         handling for the case index == count.
8162 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
8164         PR target/90622
8165         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
8166         Don't fold to XOR / AND / XOR if just one bit is copied to the
8167         same position.
8169 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
8171         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
8172         builtin for bit reversal using brev instruction.
8173         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
8174         NVPTX_BUILTIN_BREVLL.
8175         (nvptx_init_builtins): Define "brev" and "brevll".
8176         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
8177         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
8178         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
8179         section, document __builtin_nvptx_brev{,ll}.
8181 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
8183         PR tree-optimization/109505
8184         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
8185         Combine successive equal operations with constants,
8186         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
8187         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
8188         operands.
8190 2023-05-21  Andrew Pinski  <apinski@marvell.com>
8192         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
8194 2023-05-21  Pan Li  <pan2.li@intel.com>
8196         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
8197         rest bool size, aka 2, 4, 8, 16, 32, 64.
8198         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8199         Register vbool[2|4|8|16|32|64] interpret function.
8200         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
8201         New macro for vbool2_t.
8202         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8203         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8204         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8205         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8206         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8207         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
8208         (vint16m1_t): Likewise.
8209         (vint32m1_t): Likewise.
8210         (vint64m1_t): Likewise.
8211         (vuint8m1_t): Likewise.
8212         (vuint16m1_t): Likewise.
8213         (vuint32m1_t): Likewise.
8214         (vuint64m1_t): Likewise.
8215         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
8216         New macro for vbool2_t.
8217         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8218         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8219         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8220         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8221         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8222         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
8223         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
8224         vbool2_t interprect to base type.
8225         (bool4_interpret): Likewise.
8226         (bool8_interpret): Likewise.
8227         (bool16_interpret): Likewise.
8228         (bool32_interpret): Likewise.
8229         (bool64_interpret): Likewise.
8231 2023-05-21  Andrew Pinski  <apinski@marvell.com>
8233         PR middle-end/109919
8234         * expr.cc (expand_single_bit_test): Don't use the
8235         target for expand_expr.
8237 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
8239         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
8240         section.
8242 2023-05-20  Pan Li  <pan2.li@intel.com>
8244         * mode-switching.cc (entity_map): Initialize the array to zero.
8245         (bb_info): Ditto.
8247 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
8249         PR target/105753
8250         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
8251         Remove superfluous "parallel" in insn pattern.
8252         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
8253         printing error text to assembly.
8255 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8257         * expr.cc (fold_single_bit_test): Rename to ...
8258         (expand_single_bit_test): This and expand directly.
8259         (do_store_flag): Update for the rename function.
8261 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8263         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
8264         instead of shift/and.
8266 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8268         * expr.cc (fold_single_bit_test): Add an assert
8269         and simplify based on code being NE_EXPR or EQ_EXPR.
8271 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8273         * expr.cc (fold_single_bit_test): Take inner and bitnum
8274         instead of arg0 and arg1. Update the code.
8275         (do_store_flag): Don't create a tree when calling
8276         fold_single_bit_test instead just call it with the bitnum
8277         and the inner tree.
8279 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8281         * expr.cc (fold_single_bit_test): Use get_def_for_expr
8282         instead of checking the inner's code.
8284 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8286         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
8287         (fold_single_bit_test): This and simplify.
8289 2023-05-20  Andrew Pinski  <apinski@marvell.com>
8291         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
8292         expr.cc.
8293         (fold_single_bit_test): Likewise.
8294         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
8295         (fold_single_bit_test): Likewise and make static.
8296         * fold-const.h (fold_single_bit_test): Remove declaration.
8298 2023-05-20  Die Li  <lidie@eswincomputing.com>
8300         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
8301         checking.
8303 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
8305         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
8307 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
8309         PR target/106888
8310         * config/riscv/bitmanip.md
8311         (<bitmanip_optab>disi2): Match with any_extend.
8312         (<bitmanip_optab>disi2_sext): New pattern to match
8313         with sign extend using an ANDI instruction.
8315 2023-05-19  Nathan Sidwell  <nathan@acm.org>
8317         PR other/99451
8318         * opts.h (handle_deferred_dump_options): Declare.
8319         * opts-global.cc (handle_common_deferred_options): Do not handle
8320         dump options here.
8321         (handle_deferred_dump_options): New.
8322         * toplev.cc (toplev::main): Call it after plugin init.
8324 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
8326         * config/riscv/constraints.md (DsS, DsD): Restore agreement
8327         with shiftm1 mode attribute.
8329 2023-05-19  Andrew Pinski  <apinski@marvell.com>
8331         PR driver/33980
8332         * gcc.cc (default_compilers["@c-header"]): Add %w
8333         after the --output-pch.
8335 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
8337         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
8338         to hival, ASHIFT the corresponding regs.
8340 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
8342         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
8344 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
8346         PR tree-optimization/105776
8347         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
8348         non-NULL, allow division statement to have a cast as single imm use
8349         rather than comparison/condition.
8350         (match_arith_overflow): In that case remove the cast stmt in addition
8351         to the division statement.
8353 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
8355         PR tree-optimization/101856
8356         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
8357         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
8358         support it but umul_highpart_optab does.
8360 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
8362         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
8363         of tree_to_shwi on array indices.  Minor tweaks.
8365 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
8367         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
8368         * attribs.cc (diag_attr_exclusions): Ditto.
8369         (decl_attributes): Ditto.
8370         (build_type_attribute_qual_variant): Ditto.
8371         * builtins.cc (fold_builtin_carg): Ditto.
8372         (fold_builtin_next_arg): Ditto.
8373         (do_mpc_arg2): Ditto.
8374         * cfgexpand.cc (expand_return): Ditto.
8375         * cgraph.h (decl_in_symtab_p): Ditto.
8376         (symtab_node::get_create): Ditto.
8377         * dwarf2out.cc (base_type_die): Ditto.
8378         (implicit_ptr_descriptor): Ditto.
8379         (gen_array_type_die): Ditto.
8380         (gen_type_die_with_usage): Ditto.
8381         (optimize_location_into_implicit_ptr): Ditto.
8382         * expr.cc (do_store_flag): Ditto.
8383         * fold-const.cc (negate_expr_p): Ditto.
8384         (fold_negate_expr_1): Ditto.
8385         (fold_convert_const): Ditto.
8386         (fold_convert_loc): Ditto.
8387         (constant_boolean_node): Ditto.
8388         (fold_binary_op_with_conditional_arg): Ditto.
8389         (build_fold_addr_expr_with_type_loc): Ditto.
8390         (fold_comparison): Ditto.
8391         (fold_checksum_tree): Ditto.
8392         (tree_unary_nonnegative_warnv_p): Ditto.
8393         (integer_valued_real_unary_p): Ditto.
8394         (fold_read_from_constant_string): Ditto.
8395         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
8396         * gimple-expr.cc (useless_type_conversion_p): Ditto.
8397         (is_gimple_reg): Ditto.
8398         (is_gimple_asm_val): Ditto.
8399         (mark_addressable): Ditto.
8400         * gimple-expr.h (is_gimple_variable): Ditto.
8401         (virtual_operand_p): Ditto.
8402         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
8403         * gimplify.cc (gimplify_bind_expr): Ditto.
8404         (gimplify_return_expr): Ditto.
8405         (gimple_add_padding_init_for_auto_var): Ditto.
8406         (gimplify_addr_expr): Ditto.
8407         (omp_add_variable): Ditto.
8408         (omp_notice_variable): Ditto.
8409         (omp_get_base_pointer): Ditto.
8410         (omp_strip_components_and_deref): Ditto.
8411         (omp_strip_indirections): Ditto.
8412         (omp_accumulate_sibling_list): Ditto.
8413         (omp_build_struct_sibling_lists): Ditto.
8414         (gimplify_adjust_omp_clauses_1): Ditto.
8415         (gimplify_adjust_omp_clauses): Ditto.
8416         (gimplify_omp_for): Ditto.
8417         (goa_lhs_expr_p): Ditto.
8418         (gimplify_one_sizepos): Ditto.
8419         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
8420         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
8421         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
8422         (propagate_controlled_uses): Ditto.
8423         * ipa-sra.cc (type_prevails_p): Ditto.
8424         (scan_expr_access): Ditto.
8425         * optabs-tree.cc (optab_for_tree_code): Ditto.
8426         * toplev.cc (wrapup_global_declaration_1): Ditto.
8427         * trans-mem.cc (transaction_invariant_address_p): Ditto.
8428         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
8429         (verify_gimple_comparison): Ditto.
8430         (verify_gimple_assign_binary): Ditto.
8431         (verify_gimple_assign_single): Ditto.
8432         * tree-complex.cc (get_component_ssa_name): Ditto.
8433         * tree-emutls.cc (lower_emutls_2): Ditto.
8434         * tree-inline.cc (copy_tree_body_r): Ditto.
8435         (estimate_move_cost): Ditto.
8436         (copy_decl_for_dup_finish): Ditto.
8437         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
8438         (note_nonlocal_vla_type): Ditto.
8439         (convert_local_omp_clauses): Ditto.
8440         (remap_vla_decls): Ditto.
8441         (fixup_vla_decls): Ditto.
8442         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
8443         * tree-pretty-print.cc (print_declaration): Ditto.
8444         (print_call_name): Ditto.
8445         * tree-sra.cc (compare_access_positions): Ditto.
8446         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
8447         * tree-ssa-ccp.cc (get_default_value): Ditto.
8448         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
8449         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
8450         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
8451         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
8452         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
8453         * tree-ssa-sink.cc (statement_sink_location): Ditto.
8454         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
8455         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
8456         * tree-ssa-uninit.cc (warn_uninit): Ditto.
8457         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
8458         (non_rewritable_mem_ref_base): Ditto.
8459         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
8460         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
8461         * tree-vect-generic.cc (do_binop): Ditto.
8462         (do_cond): Ditto.
8463         * tree-vect-stmts.cc (vect_init_vector): Ditto.
8464         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
8465         * tree.cc (sign_mask_for): Ditto.
8466         (verify_type_variant): Ditto.
8467         (gimple_canonical_types_compatible_p): Ditto.
8468         (verify_type): Ditto.
8469         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
8470         * var-tracking.cc (prepare_call_arguments): Ditto.
8471         (vt_add_function_parameters): Ditto.
8472         * varasm.cc (decode_addr_const): Ditto.
8474 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
8476         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
8477         (lower_reduction_clauses): Ditto.
8478         (lower_send_clauses): Ditto.
8479         (lower_omp_task_reductions): Ditto.
8480         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
8481         (worker_single_copy): Ditto.
8482         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
8483         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
8485 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
8487         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
8488         tree.h.
8489         (lto_read_body_or_constructor): Ditto.
8490         * lto-streamer-out.cc (tree_is_indexable): Ditto.
8491         (lto_output_var_decl_ref): Ditto.
8492         (DFS::DFS_write_tree_body): Ditto.
8493         (wrap_refs): Ditto.
8494         (write_symbol_extension_info): Ditto.
8496 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
8498         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
8499         defines from tree.h.
8500         (aarch64_mangle_type): Ditto.
8501         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
8502         (alpha_gimplify_va_arg_1): Ditto.
8503         * config/arc/arc.cc (arc_encode_section_info): Ditto.
8504         (arc_is_aux_reg_p): Ditto.
8505         (arc_is_uncached_mem_p): Ditto.
8506         (arc_handle_aux_attribute): Ditto.
8507         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
8508         (arm_handle_cmse_nonsecure_call): Ditto.
8509         (arm_set_default_type_attributes): Ditto.
8510         (arm_is_segment_info_known): Ditto.
8511         (arm_mangle_type): Ditto.
8512         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
8513         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
8514         (avr_decl_absdata_p): Ditto.
8515         (avr_insert_attributes): Ditto.
8516         (avr_section_type_flags): Ditto.
8517         (avr_encode_section_info): Ditto.
8518         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
8519         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
8520         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
8521         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
8522         (csky_mangle_type): Ditto.
8523         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
8524         * config/darwin.cc (is_objc_metadata): Ditto.
8525         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
8526         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
8527         * config/frv/frv.cc (frv_emit_movsi): Ditto.
8528         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
8529         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
8530         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
8531         * config/i386/i386-expand.cc: Ditto.
8532         * config/i386/i386.cc (type_natural_mode): Ditto.
8533         (ix86_function_arg): Ditto.
8534         (ix86_data_alignment): Ditto.
8535         (ix86_local_alignment): Ditto.
8536         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
8537         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
8538         (i386_pe_type_dllexport_p): Ditto.
8539         (i386_pe_adjust_class_at_definition): Ditto.
8540         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
8541         (i386_pe_binds_local_p): Ditto.
8542         (i386_pe_section_type_flags): Ditto.
8543         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
8544         (ia64_gimplify_va_arg): Ditto.
8545         (ia64_in_small_data_p): Ditto.
8546         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
8547         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
8548         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
8549         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
8550         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
8551         (mcore_encode_section_info): Ditto.
8552         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
8553         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
8554         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
8555         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
8556         (pass_in_memory): Ditto.
8557         (nvptx_generate_vector_shuffle): Ditto.
8558         (nvptx_lockless_update): Ditto.
8559         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
8560         (pa_function_value): Ditto.
8561         (pa_function_arg): Ditto.
8562         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
8563         (TEXT_SPACE_P): Ditto.
8564         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
8565         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
8566         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
8567         (riscv_mangle_type): Ditto.
8568         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
8569         (rl78_addsi3_internal): Ditto.
8570         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
8571         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
8572         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
8573         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
8574         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
8575         (rs6000_function_arg_advance_1): Ditto.
8576         (rs6000_function_arg): Ditto.
8577         (rs6000_pass_by_reference): Ditto.
8578         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
8579         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
8580         (rs6000_set_default_type_attributes): Ditto.
8581         (rs6000_elf_in_small_data_p): Ditto.
8582         (IN_NAMED_SECTION): Ditto.
8583         (rs6000_xcoff_encode_section_info): Ditto.
8584         (rs6000_function_value): Ditto.
8585         (invalid_arg_for_unprototyped_fn): Ditto.
8586         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
8587         (s390_vec_n_elem): Ditto.
8588         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
8589         (s390_function_arg_integer): Ditto.
8590         (s390_return_in_memory): Ditto.
8591         (s390_encode_section_info): Ditto.
8592         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
8593         (sh_function_value): Ditto.
8594         * config/sol2.cc (solaris_insert_attributes): Ditto.
8595         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
8596         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
8597         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
8598         (xstormy16_handle_below100_attribute): Ditto.
8599         * config/v850/v850.cc (v850_encode_section_info): Ditto.
8600         (v850_insert_attributes): Ditto.
8601         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
8602         (visium_return_in_memory): Ditto.
8603         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
8605 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
8607         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
8608         (ix86_expand_vecop_qihi): Add op2vec bool variable.
8609         Do not set REG_EQUAL note.
8610         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
8611         Add prototype.
8612         * config/i386/i386.cc (ix86_multiplication_cost): Handle
8613         V4QImode and V8QImode.
8614         * config/i386/mmx.md (mulv8qi3): New expander.
8615         (mulv4qi3): Ditto.
8616         * config/i386/sse.md (mulv8qi3): Remove.
8618 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
8620         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
8622 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
8624         PR bootstrap/105831
8625         * config.gcc: Use = operator instead of ==.
8627 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
8629         PR bootstrap/105831
8630         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
8631         * configure.ac: Likewise.
8632         * configure: Regenerate.
8634 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
8636         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
8637         (__ARM_mve_coerce1): Remove.
8638         (__ARM_mve_coerce2): Remove.
8639         (__ARM_mve_coerce3): Remove.
8640         (__ARM_mve_coerce_i_scalar): New.
8641         (__ARM_mve_coerce_s8_ptr): New.
8642         (__ARM_mve_coerce_u8_ptr): New.
8643         (__ARM_mve_coerce_s16_ptr): New.
8644         (__ARM_mve_coerce_u16_ptr): New.
8645         (__ARM_mve_coerce_s32_ptr): New.
8646         (__ARM_mve_coerce_u32_ptr): New.
8647         (__ARM_mve_coerce_s64_ptr): New.
8648         (__ARM_mve_coerce_u64_ptr): New.
8649         (__ARM_mve_coerce_f_scalar): New.
8650         (__ARM_mve_coerce_f16_ptr): New.
8651         (__ARM_mve_coerce_f32_ptr): New.
8652         (__arm_vst4q): Change _coerce_ overloads.
8653         (__arm_vbicq): Change _coerce_ overloads.
8654         (__arm_vld1q): Change _coerce_ overloads.
8655         (__arm_vld1q_z): Change _coerce_ overloads.
8656         (__arm_vld2q): Change _coerce_ overloads.
8657         (__arm_vld4q): Change _coerce_ overloads.
8658         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
8659         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
8660         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
8661         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
8662         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
8663         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
8664         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
8665         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
8666         (__arm_vst1q_p): Change _coerce_ overloads.
8667         (__arm_vst2q): Change _coerce_ overloads.
8668         (__arm_vst1q): Change _coerce_ overloads.
8669         (__arm_vstrhq): Change _coerce_ overloads.
8670         (__arm_vstrhq_p): Change _coerce_ overloads.
8671         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
8672         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
8673         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
8674         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
8675         (__arm_vstrwq_p): Change _coerce_ overloads.
8676         (__arm_vstrwq): Change _coerce_ overloads.
8677         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
8678         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
8679         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
8680         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
8681         (__arm_vsetq_lane): Change _coerce_ overloads.
8682         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
8683         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
8684         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
8685         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
8686         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
8687         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
8688         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
8689         (__arm_vidupq_x_u8): Change _coerce_ overloads.
8690         (__arm_vddupq_x_u8): Change _coerce_ overloads.
8691         (__arm_vidupq_x_u16): Change _coerce_ overloads.
8692         (__arm_vddupq_x_u16): Change _coerce_ overloads.
8693         (__arm_vidupq_x_u32): Change _coerce_ overloads.
8694         (__arm_vddupq_x_u32): Change _coerce_ overloads.
8695         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
8696         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
8697         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
8698         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
8699         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
8700         (__arm_vidupq_u16): Change _coerce_ overloads.
8701         (__arm_vidupq_u32): Change _coerce_ overloads.
8702         (__arm_vidupq_u8): Change _coerce_ overloads.
8703         (__arm_vddupq_u16): Change _coerce_ overloads.
8704         (__arm_vddupq_u32): Change _coerce_ overloads.
8705         (__arm_vddupq_u8): Change _coerce_ overloads.
8706         (__arm_viwdupq_m): Change _coerce_ overloads.
8707         (__arm_viwdupq_u16): Change _coerce_ overloads.
8708         (__arm_viwdupq_u32): Change _coerce_ overloads.
8709         (__arm_viwdupq_u8): Change _coerce_ overloads.
8710         (__arm_vdwdupq_m): Change _coerce_ overloads.
8711         (__arm_vdwdupq_u16): Change _coerce_ overloads.
8712         (__arm_vdwdupq_u32): Change _coerce_ overloads.
8713         (__arm_vdwdupq_u8): Change _coerce_ overloads.
8714         (__arm_vstrbq): Change _coerce_ overloads.
8715         (__arm_vstrbq_p): Change _coerce_ overloads.
8716         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
8717         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
8718         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
8719         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
8720         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
8722 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
8724         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
8725         scalar constant.
8727 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
8729         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
8730         (__arm_vadcq_u32): Likewise.
8731         (__arm_vadcq_m_s32): Likewise.
8732         (__arm_vadcq_m_u32): Likewise.
8733         (__arm_vsbcq_s32): Likewise.
8734         (__arm_vsbcq_u32): Likewise.
8735         (__arm_vsbcq_m_s32): Likewise.
8736         (__arm_vsbcq_m_u32): Likewise.
8737         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
8739 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
8741         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
8742         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
8743         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
8744         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
8745         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
8746         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
8747         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
8748         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
8749         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
8750         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
8751         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
8752         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
8753         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
8754         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
8755         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
8756         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
8757         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
8758         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
8759         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
8760         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
8761         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
8762         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
8763         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
8764         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
8765         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
8766         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
8767         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
8768         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
8769         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
8770         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
8771         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
8772         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
8773         (mve_vorrq_m_f<mode>)
8774         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
8775         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
8776         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
8777         capitalization in the emitted asm.
8779 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
8781         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
8782         predicates.md.
8783         (Ri): Move constraint definition from predicates.md.
8784         (Rl): Define new constraint.
8785         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
8786         missing constraint.
8787         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
8788         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
8789         op 2. Fix asm output spacing.
8790         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
8791         * config/arm/predicates.md (Ri) Move constraint to constraints.md
8792         (mve_vldrd_immediate): Move it from
8793         constraints.md.
8794         (mve_vstrw_immediate): New predicate.
8796 2023-05-18  Pan Li  <pan2.li@intel.com>
8797             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8798             Kito Cheng  <kito.cheng@sifive.com>
8799             Richard Biener  <rguenther@suse.de>
8800             Richard Sandiford  <richard.sandiford@arm.com>
8802         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
8803         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
8804         (struct table_elt): Extend machine_mode to 16 bits.
8805         (struct set): Ditto.
8806         * genmodes.cc (emit_mode_wider): Extend type from char to short.
8807         (emit_mode_complex): Ditto.
8808         (emit_mode_inner): Ditto.
8809         (emit_class_narrowest_mode): Ditto.
8810         * genopinit.cc (main): Extend the machine_mode limit.
8811         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
8812         re-ordered the struct fields for padding.
8813         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
8814         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
8815         (get_mode_alignment): Extend type from char to short.
8816         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
8817         removed the ATTRIBUTE_PACKED.
8818         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
8819         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
8820         m_kind to 2 bits and remove m_spare.
8821         * rtl.h (RTX_CODE_BITSIZE): New macro.
8822         (struct rtx_def): Swap both the bit size and location between the
8823         rtx_code and the machine_mode.
8824         (subreg_shape::unique_id): Extend the machine_mode limit.
8825         * rtlanal.h: Extend machine_mode to 16 bits.
8826         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
8827         bits and re-ordered the struct fields for padding.
8828         (struct tree_decl_common): Extend machine_mode to 16 bits.
8830 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
8832         * genrecog.cc (print_nonbool_test): Fix type error of
8833         switch (SUBREG_BYTE (op))'.
8835 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
8837         * common/config/riscv/riscv-common.cc: Remove
8838         trailing spaces on lines.
8839         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
8840         * config/riscv/riscv.h (enum reg_class): Likewise.
8841         * config/riscv/riscv.md: Likewise.
8843 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
8845         * config/pa/pa.md (clear_cache): New.
8847 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
8849         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
8850         parenthesis.  Fix misnamed index entry.
8851         <concept>: Fix misnamed index entry.
8853 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
8855         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
8856         combined from ...
8857         (*<optab>si3_mask, *<optab>di3_mask): Here.
8858         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
8859         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
8860         pattern.
8861         (*<bitmanip_optab>si3_sext_mask): Likewise.
8862         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
8863         and const_di_mask_operand.
8864         (bitmanip_rotate): New iterator.
8865         (bitmanip_optab): Add rotates.
8866         * config/riscv/predicates.md (const_si_mask_operand): Renamed
8867         from const31_operand.  Generalize to handle more mask constants.
8868         (const_di_mask_operand): Similarly.
8870 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
8872         PR c++/109884
8873         * config/i386/i386-builtin-types.def (FLOAT128): Use
8874         float128t_type_node rather than float128_type_node.
8876 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
8878         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
8879         FP_CONTRACT_FAST (no functional change).
8881 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
8883         * config/i386/i386.cc (ix86_multiplication_cost): Correct
8884         calcuation of integer vector mode costs to reflect generated
8885         instruction sequences of different integer vector modes and
8886         different target ABIs.
8888 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8890         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
8891         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
8892         (riscv_mode_needed): Ditto.
8893         (riscv_mode_after): Ditto.
8894         (riscv_mode_entry): Ditto.
8895         (riscv_mode_exit): Ditto.
8896         (riscv_mode_priority): Ditto.
8897         (TARGET_MODE_EMIT): New target hook.
8898         (TARGET_MODE_NEEDED): Ditto.
8899         (TARGET_MODE_AFTER): Ditto.
8900         (TARGET_MODE_ENTRY): Ditto.
8901         (TARGET_MODE_EXIT): Ditto.
8902         (TARGET_MODE_PRIORITY): Ditto.
8903         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
8904         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
8905         * config/riscv/riscv.md: Add csrwvxrm.
8906         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
8907         (vxrmsi): New pattern.
8909 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8911         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
8912         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
8913         (struct narrow_alu_def): Ditto.
8914         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
8915         (function_expander::use_exact_insn): Ditto.
8916         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
8917         (function_base::has_rounding_mode_operand_p): New function.
8919 2023-05-17  Andrew Pinski  <apinski@marvell.com>
8921         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
8922         against 0 instead of calling integer_zerop.
8924 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8926         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
8927         (DEF_RVV_VXRM_ENUM): New macro.
8928         (handle_pragma_vector): Add vxrm enum register.
8929         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
8930         (RNU): Ditto.
8931         (RNE): Ditto.
8932         (RDN): Ditto.
8933         (ROD): Ditto.
8935 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
8937         * value-range.h (Value_Range::operator=): New.
8939 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
8941         * value-range.cc (vrange::operator=): Add a stub to copy
8942         unsupported ranges.
8943         * value-range.h (is_a <unsupported_range>): New.
8944         (Value_Range::operator=): Support copying unsupported ranges.
8946 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
8948         * data-streamer-in.cc (streamer_read_real_value): New.
8949         (streamer_read_value_range): New.
8950         * data-streamer-out.cc (streamer_write_real_value): New.
8951         (streamer_write_vrange): New.
8952         * data-streamer.h (streamer_write_vrange): New.
8953         (streamer_read_value_range): New.
8955 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
8957         PR c++/109532
8958         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
8959         is ignored for a fixed underlying type.
8960         (C++ Dialect Options): Likewise for -fstrict-enums.
8962 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
8964         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
8965         special case.
8967 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8969         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
8970         New.
8971         (s390_atomic_align_for_mode): New.
8973 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
8975         * wide-int.cc (wi::from_array): Add missing closing paren in function
8976         comment.
8978 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
8980         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
8981         suggested unroll factor once the previous analysis fails.
8983 2023-05-17  Pan Li  <pan2.li@intel.com>
8985         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
8986         macro.
8987         (main): Add bool1 to the type indexer.
8988         * config/riscv/riscv-vector-builtins-functions.def
8989         (vreinterpret): Register vbool1 interpret function.
8990         * config/riscv/riscv-vector-builtins-types.def
8991         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
8992         (vint8m1_t): Add the type to bool1_interpret_ops.
8993         (vint16m1_t): Ditto.
8994         (vint32m1_t): Ditto.
8995         (vint64m1_t): Ditto.
8996         (vuint8m1_t): Ditto.
8997         (vuint16m1_t): Ditto.
8998         (vuint32m1_t): Ditto.
8999         (vuint64m1_t): Ditto.
9000         * config/riscv/riscv-vector-builtins.cc
9001         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9002         (required_extensions_p): Add bool1 interpret case.
9003         * config/riscv/riscv-vector-builtins.def
9004         (bool1_interpret): Add bool1 interpret to base type.
9005         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
9006         with VB dest for vreinterpret.
9008 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
9010         PR target/106708
9011         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
9012         constants through "lis; xoris".
9014 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
9016         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
9017         default rs6000 target pass for O2 and above.
9018         * doc/invoke.texi: Document -free
9020 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
9022         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
9023         Fix wrong select_kind...
9025 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9027         * config/s390/s390-protos.h (s390_expand_setmem): Change
9028         function signature.
9029         * config/s390/s390.cc (s390_expand_setmem): For memset's less
9030         than or equal to 256 byte do not perform a libc call.
9031         * config/s390/s390.md: Change expander into a version which
9032         takes 8 operands.
9034 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9036         * config/s390/s390-protos.h (s390_expand_movmem): New.
9037         * config/s390/s390.cc (s390_expand_movmem): New.
9038         * config/s390/s390.md (movmem<mode>): New.
9039         (*mvcrl): New.
9040         (mvcrl): New.
9042 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9044         * config/s390/s390-protos.h (s390_expand_cpymem): Change
9045         function signature.
9046         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
9047         than or equal to 256 byte do not perform a libc call.
9048         (s390_expand_insv): Adapt new function signature of
9049         s390_expand_cpymem.
9050         * config/s390/s390.md: Change expander into a version which
9051         takes 8 operands.
9053 2023-05-16  Andrew Pinski  <apinski@marvell.com>
9055         PR tree-optimization/109424
9056         * match.pd: Add patterns for min/max of zero_one_valued
9057         values to `&`/`|`.
9059 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9061         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
9062         * config/riscv/riscv-vector-builtins.cc
9063         (function_expander::use_ternop_insn): Add default rounding mode.
9064         (function_expander::use_widen_ternop_insn): Ditto.
9065         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
9066         (riscv_hard_regno_mode_ok): Ditto.
9067         (riscv_conditional_register_usage): Ditto.
9068         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9069         (FRM_REG_P): Ditto.
9070         (RISCV_DWARF_FRM): Ditto.
9071         * config/riscv/riscv.md: Ditto.
9072         * config/riscv/vector-iterators.md: split no frm and has frm operations.
9073         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
9074         (@pred_<optab><mode>): Ditto.
9076 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
9078         PR tree-optimization/109695
9079         * value-range.cc (irange::operator=): Resize range.
9080         (irange::union_): Same.
9081         (irange::intersect): Same.
9082         (irange::invert): Same.
9083         (int_range_max): Default to 3 sub-ranges and resize as needed.
9084         * value-range.h (irange::maybe_resize): New.
9085         (~int_range): New.
9086         (int_range::int_range): Adjust for resizing.
9087         (int_range::operator=): Same.
9089 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
9091         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
9092         range copying
9093         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
9094         when range changed.
9096 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9098         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
9099         * config/riscv/riscv-vector-builtins.cc
9100         (function_expander::use_exact_insn): Add default rounding mode operand.
9101         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
9102         (riscv_hard_regno_mode_ok): Ditto.
9103         (riscv_conditional_register_usage): Ditto.
9104         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9105         (VXRM_REG_P): Ditto.
9106         (RISCV_DWARF_VXRM): Ditto.
9107         * config/riscv/riscv.md: Ditto.
9108         * config/riscv/vector.md: Ditto
9110 2023-05-15  Pan Li  <pan2.li@intel.com>
9112         * optabs.cc (maybe_gen_insn): Add case to generate instruction
9113         that has 11 operands.
9115 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9117         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
9118         logic for vector modes.
9120 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9122         PR target/99195
9123         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
9124         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
9125         (aarch64_cmtst<mode>): Rename to...
9126         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
9127         (*aarch64_cmtst_same_<mode>): Rename to...
9128         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
9129         (*aarch64_cmtstdi): Rename to...
9130         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
9131         (aarch64_fac<optab><mode>): Rename to...
9132         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
9134 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9136         PR target/99195
9137         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
9138         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
9140 2023-05-15  Pan Li  <pan2.li@intel.com>
9141             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9142             kito-cheng  <kito.cheng@sifive.com>
9144         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
9145         deciding the mode is constant or not.
9146         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
9148 2023-05-15  Richard Biener  <rguenther@suse.de>
9150         PR tree-optimization/109848
9151         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
9152         TARGET_MEM_REF address preparation before the store, not
9153         before the CTOR.
9155 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9157         * config/riscv/riscv.cc
9158         (riscv_vectorize_preferred_vector_alignment): New function.
9159         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
9161 2023-05-14  Andrew Pinski  <apinski@marvell.com>
9163         PR tree-optimization/109829
9164         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
9166 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
9168         PR target/109807
9169         * config/i386/i386.cc: Revert the 2023-05-11 change.
9170         (ix86_widen_mult_cost): Return high value instead of
9171         ICEing for unsupported modes.
9173 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
9175         * config/i386/i386.cc (x86_function_profiler): Take
9176         ix86_direct_extern_access into account when generating calls
9177         to __fentry__()
9179 2023-05-14  Pan Li  <pan2.li@intel.com>
9181         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
9182         Refactor the or pattern to switch cases.
9184 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9186         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
9187         aarch64_expand_vector_init to this, and remove  interleaving case.
9188         Recursively call aarch64_expand_vector_init_fallback, instead of
9189         aarch64_expand_vector_init.
9190         (aarch64_unzip_vector_init): New function.
9191         (aarch64_expand_vector_init): Likewise.
9193 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
9195         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
9196         Pull out function call from the gcc_assert.
9198 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
9200         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
9201         (policy_to_str): New.
9202         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
9204 2023-05-13  Andrew Pinski  <apinski@marvell.com>
9206         PR tree-optimization/109834
9207         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
9208         (popcount(rotate(x,y))->popcount(x)): Likewise.
9210 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
9212         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
9213         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
9214         gen_extend_insn to generate zero/sign extension instructions.
9215         Fix comments.
9216         (ix86_expand_vecop_qihi): Initialize interleave functions
9217         for MULT code only.  Fix comments.
9219 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
9221         PR target/109797
9222         * config/i386/mmx.md (mulv2si3): Remove expander.
9223         (mulv2si3): Rename insn pattern from *mulv2si.
9225 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
9227         PR libstdc++/109816
9228         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
9229         '!lto_stream_offload_p'.
9231 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
9232             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9234         PR target/109743
9235         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
9236         (local_avl_compatible_p): New.
9237         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
9238         for LCM, rewrite as a backward algorithm.
9239         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
9240         interface, handle a BB at once.
9242 2023-05-12  Richard Biener  <rguenther@suse.de>
9244         PR tree-optimization/64731
9245         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
9246         handle TARGET_MEM_REF destinations of stores from vector
9247         CTORs.
9249 2023-05-12  Richard Biener  <rguenther@suse.de>
9251         PR tree-optimization/109791
9252         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
9253         New pattern.
9254         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
9255         Likewise.
9257 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9259         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
9260         * config/arm/arm-mve-builtins-base.def (vsriq): New.
9261         * config/arm/arm-mve-builtins-base.h (vsriq): New.
9262         * config/arm/arm-mve-builtins.cc
9263         (function_instance::has_inactive_argument): Handle vsriq.
9264         * config/arm/arm_mve.h (vsriq): Remove.
9265         (vsriq_m): Remove.
9266         (vsriq_n_u8): Remove.
9267         (vsriq_n_s8): Remove.
9268         (vsriq_n_u16): Remove.
9269         (vsriq_n_s16): Remove.
9270         (vsriq_n_u32): Remove.
9271         (vsriq_n_s32): Remove.
9272         (vsriq_m_n_s8): Remove.
9273         (vsriq_m_n_u8): Remove.
9274         (vsriq_m_n_s16): Remove.
9275         (vsriq_m_n_u16): Remove.
9276         (vsriq_m_n_s32): Remove.
9277         (vsriq_m_n_u32): Remove.
9278         (__arm_vsriq_n_u8): Remove.
9279         (__arm_vsriq_n_s8): Remove.
9280         (__arm_vsriq_n_u16): Remove.
9281         (__arm_vsriq_n_s16): Remove.
9282         (__arm_vsriq_n_u32): Remove.
9283         (__arm_vsriq_n_s32): Remove.
9284         (__arm_vsriq_m_n_s8): Remove.
9285         (__arm_vsriq_m_n_u8): Remove.
9286         (__arm_vsriq_m_n_s16): Remove.
9287         (__arm_vsriq_m_n_u16): Remove.
9288         (__arm_vsriq_m_n_s32): Remove.
9289         (__arm_vsriq_m_n_u32): Remove.
9290         (__arm_vsriq): Remove.
9291         (__arm_vsriq_m): Remove.
9293 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9295         * config/arm/iterators.md (mve_insn): Add vsri.
9296         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
9297         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
9298         (mve_vsriq_m_n_<supf><mode>): Rename into ...
9299         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9301 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9303         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
9304         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
9306 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9308         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
9309         * config/arm/arm-mve-builtins-base.def (vsliq): New.
9310         * config/arm/arm-mve-builtins-base.h (vsliq): New.
9311         * config/arm/arm-mve-builtins.cc
9312         (function_instance::has_inactive_argument): Handle vsliq.
9313         * config/arm/arm_mve.h (vsliq): Remove.
9314         (vsliq_m): Remove.
9315         (vsliq_n_u8): Remove.
9316         (vsliq_n_s8): Remove.
9317         (vsliq_n_u16): Remove.
9318         (vsliq_n_s16): Remove.
9319         (vsliq_n_u32): Remove.
9320         (vsliq_n_s32): Remove.
9321         (vsliq_m_n_s8): Remove.
9322         (vsliq_m_n_s32): Remove.
9323         (vsliq_m_n_s16): Remove.
9324         (vsliq_m_n_u8): Remove.
9325         (vsliq_m_n_u32): Remove.
9326         (vsliq_m_n_u16): Remove.
9327         (__arm_vsliq_n_u8): Remove.
9328         (__arm_vsliq_n_s8): Remove.
9329         (__arm_vsliq_n_u16): Remove.
9330         (__arm_vsliq_n_s16): Remove.
9331         (__arm_vsliq_n_u32): Remove.
9332         (__arm_vsliq_n_s32): Remove.
9333         (__arm_vsliq_m_n_s8): Remove.
9334         (__arm_vsliq_m_n_s32): Remove.
9335         (__arm_vsliq_m_n_s16): Remove.
9336         (__arm_vsliq_m_n_u8): Remove.
9337         (__arm_vsliq_m_n_u32): Remove.
9338         (__arm_vsliq_m_n_u16): Remove.
9339         (__arm_vsliq): Remove.
9340         (__arm_vsliq_m): Remove.
9342 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9344         * config/arm/iterators.md (mve_insn>): Add vsli.
9345         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
9346         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9347         (mve_vsliq_m_n_<supf><mode>): Rename into ...
9348         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9350 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9352         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
9353         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
9355 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9357         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
9358         * config/arm/arm-mve-builtins-base.def (vpselq): New.
9359         * config/arm/arm-mve-builtins-base.h (vpselq): New.
9360         * config/arm/arm_mve.h (vpselq): Remove.
9361         (vpselq_u8): Remove.
9362         (vpselq_s8): Remove.
9363         (vpselq_u16): Remove.
9364         (vpselq_s16): Remove.
9365         (vpselq_u32): Remove.
9366         (vpselq_s32): Remove.
9367         (vpselq_u64): Remove.
9368         (vpselq_s64): Remove.
9369         (vpselq_f16): Remove.
9370         (vpselq_f32): Remove.
9371         (__arm_vpselq_u8): Remove.
9372         (__arm_vpselq_s8): Remove.
9373         (__arm_vpselq_u16): Remove.
9374         (__arm_vpselq_s16): Remove.
9375         (__arm_vpselq_u32): Remove.
9376         (__arm_vpselq_s32): Remove.
9377         (__arm_vpselq_u64): Remove.
9378         (__arm_vpselq_s64): Remove.
9379         (__arm_vpselq_f16): Remove.
9380         (__arm_vpselq_f32): Remove.
9381         (__arm_vpselq): Remove.
9383 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9385         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
9386         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
9388 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9390         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
9391         gen_mve_vpselq.
9392         * config/arm/iterators.md (MVE_VPSELQ_F): New.
9393         (mve_insn): Add vpsel.
9394         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
9395         (@mve_<mve_insn>q_<supf><mode>): ... this.
9396         (@mve_vpselq_f<mode>): Rename into ...
9397         (@mve_<mve_insn>q_f<mode>): ... this.
9399 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9401         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
9402         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
9403         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
9404         * config/arm/arm-mve-builtins.cc
9405         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
9406         vfmsq.
9407         * config/arm/arm_mve.h (vfmaq): Remove.
9408         (vfmasq): Remove.
9409         (vfmsq): Remove.
9410         (vfmaq_m): Remove.
9411         (vfmasq_m): Remove.
9412         (vfmsq_m): Remove.
9413         (vfmaq_f16): Remove.
9414         (vfmaq_n_f16): Remove.
9415         (vfmasq_n_f16): Remove.
9416         (vfmsq_f16): Remove.
9417         (vfmaq_f32): Remove.
9418         (vfmaq_n_f32): Remove.
9419         (vfmasq_n_f32): Remove.
9420         (vfmsq_f32): Remove.
9421         (vfmaq_m_f32): Remove.
9422         (vfmaq_m_f16): Remove.
9423         (vfmaq_m_n_f32): Remove.
9424         (vfmaq_m_n_f16): Remove.
9425         (vfmasq_m_n_f32): Remove.
9426         (vfmasq_m_n_f16): Remove.
9427         (vfmsq_m_f32): Remove.
9428         (vfmsq_m_f16): Remove.
9429         (__arm_vfmaq_f16): Remove.
9430         (__arm_vfmaq_n_f16): Remove.
9431         (__arm_vfmasq_n_f16): Remove.
9432         (__arm_vfmsq_f16): Remove.
9433         (__arm_vfmaq_f32): Remove.
9434         (__arm_vfmaq_n_f32): Remove.
9435         (__arm_vfmasq_n_f32): Remove.
9436         (__arm_vfmsq_f32): Remove.
9437         (__arm_vfmaq_m_f32): Remove.
9438         (__arm_vfmaq_m_f16): Remove.
9439         (__arm_vfmaq_m_n_f32): Remove.
9440         (__arm_vfmaq_m_n_f16): Remove.
9441         (__arm_vfmasq_m_n_f32): Remove.
9442         (__arm_vfmasq_m_n_f16): Remove.
9443         (__arm_vfmsq_m_f32): Remove.
9444         (__arm_vfmsq_m_f16): Remove.
9445         (__arm_vfmaq): Remove.
9446         (__arm_vfmasq): Remove.
9447         (__arm_vfmsq): Remove.
9448         (__arm_vfmaq_m): Remove.
9449         (__arm_vfmasq_m): Remove.
9450         (__arm_vfmsq_m): Remove.
9452 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9454         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
9455         VFMSQ_M_F.
9456         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
9457         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
9458         (mve_insn): Add vfma, vfmas, vfms.
9459         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
9460         into ...
9461         (@mve_<mve_insn>q_f<mode>): ... this.
9462         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
9463         (@mve_<mve_insn>q_n_f<mode>): ... this.
9464         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
9465         @mve_<mve_insn>q_m_f<mode>.
9466         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
9467         @mve_<mve_insn>q_m_n_f<mode>.
9469 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9471         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
9472         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
9474 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9476         * config/arm/arm-mve-builtins-base.cc
9477         (FUNCTION_WITH_RTX_M_N_NO_F): New.
9478         (vmvnq): New.
9479         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
9480         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
9481         * config/arm/arm_mve.h (vmvnq): Remove.
9482         (vmvnq_m): Remove.
9483         (vmvnq_x): Remove.
9484         (vmvnq_s8): Remove.
9485         (vmvnq_s16): Remove.
9486         (vmvnq_s32): Remove.
9487         (vmvnq_n_s16): Remove.
9488         (vmvnq_n_s32): Remove.
9489         (vmvnq_u8): Remove.
9490         (vmvnq_u16): Remove.
9491         (vmvnq_u32): Remove.
9492         (vmvnq_n_u16): Remove.
9493         (vmvnq_n_u32): Remove.
9494         (vmvnq_m_u8): Remove.
9495         (vmvnq_m_s8): Remove.
9496         (vmvnq_m_u16): Remove.
9497         (vmvnq_m_s16): Remove.
9498         (vmvnq_m_u32): Remove.
9499         (vmvnq_m_s32): Remove.
9500         (vmvnq_m_n_s16): Remove.
9501         (vmvnq_m_n_u16): Remove.
9502         (vmvnq_m_n_s32): Remove.
9503         (vmvnq_m_n_u32): Remove.
9504         (vmvnq_x_s8): Remove.
9505         (vmvnq_x_s16): Remove.
9506         (vmvnq_x_s32): Remove.
9507         (vmvnq_x_u8): Remove.
9508         (vmvnq_x_u16): Remove.
9509         (vmvnq_x_u32): Remove.
9510         (vmvnq_x_n_s16): Remove.
9511         (vmvnq_x_n_s32): Remove.
9512         (vmvnq_x_n_u16): Remove.
9513         (vmvnq_x_n_u32): Remove.
9514         (__arm_vmvnq_s8): Remove.
9515         (__arm_vmvnq_s16): Remove.
9516         (__arm_vmvnq_s32): Remove.
9517         (__arm_vmvnq_n_s16): Remove.
9518         (__arm_vmvnq_n_s32): Remove.
9519         (__arm_vmvnq_u8): Remove.
9520         (__arm_vmvnq_u16): Remove.
9521         (__arm_vmvnq_u32): Remove.
9522         (__arm_vmvnq_n_u16): Remove.
9523         (__arm_vmvnq_n_u32): Remove.
9524         (__arm_vmvnq_m_u8): Remove.
9525         (__arm_vmvnq_m_s8): Remove.
9526         (__arm_vmvnq_m_u16): Remove.
9527         (__arm_vmvnq_m_s16): Remove.
9528         (__arm_vmvnq_m_u32): Remove.
9529         (__arm_vmvnq_m_s32): Remove.
9530         (__arm_vmvnq_m_n_s16): Remove.
9531         (__arm_vmvnq_m_n_u16): Remove.
9532         (__arm_vmvnq_m_n_s32): Remove.
9533         (__arm_vmvnq_m_n_u32): Remove.
9534         (__arm_vmvnq_x_s8): Remove.
9535         (__arm_vmvnq_x_s16): Remove.
9536         (__arm_vmvnq_x_s32): Remove.
9537         (__arm_vmvnq_x_u8): Remove.
9538         (__arm_vmvnq_x_u16): Remove.
9539         (__arm_vmvnq_x_u32): Remove.
9540         (__arm_vmvnq_x_n_s16): Remove.
9541         (__arm_vmvnq_x_n_s32): Remove.
9542         (__arm_vmvnq_x_n_u16): Remove.
9543         (__arm_vmvnq_x_n_u32): Remove.
9544         (__arm_vmvnq): Remove.
9545         (__arm_vmvnq_m): Remove.
9546         (__arm_vmvnq_x): Remove.
9548 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9550         * config/arm/iterators.md (mve_insn): Add vmvn.
9551         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
9552         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9553         (mve_vmvnq_m_<supf><mode>): Rename into ...
9554         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9555         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
9556         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9558 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9560         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
9561         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
9563 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9565         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
9566         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
9567         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
9568         * config/arm/arm_mve.h (vbrsrq): Remove.
9569         (vbrsrq_m): Remove.
9570         (vbrsrq_x): Remove.
9571         (vbrsrq_n_f16): Remove.
9572         (vbrsrq_n_f32): Remove.
9573         (vbrsrq_n_u8): Remove.
9574         (vbrsrq_n_s8): Remove.
9575         (vbrsrq_n_u16): Remove.
9576         (vbrsrq_n_s16): Remove.
9577         (vbrsrq_n_u32): Remove.
9578         (vbrsrq_n_s32): Remove.
9579         (vbrsrq_m_n_s8): Remove.
9580         (vbrsrq_m_n_s32): Remove.
9581         (vbrsrq_m_n_s16): Remove.
9582         (vbrsrq_m_n_u8): Remove.
9583         (vbrsrq_m_n_u32): Remove.
9584         (vbrsrq_m_n_u16): Remove.
9585         (vbrsrq_m_n_f32): Remove.
9586         (vbrsrq_m_n_f16): Remove.
9587         (vbrsrq_x_n_s8): Remove.
9588         (vbrsrq_x_n_s16): Remove.
9589         (vbrsrq_x_n_s32): Remove.
9590         (vbrsrq_x_n_u8): Remove.
9591         (vbrsrq_x_n_u16): Remove.
9592         (vbrsrq_x_n_u32): Remove.
9593         (vbrsrq_x_n_f16): Remove.
9594         (vbrsrq_x_n_f32): Remove.
9595         (__arm_vbrsrq_n_u8): Remove.
9596         (__arm_vbrsrq_n_s8): Remove.
9597         (__arm_vbrsrq_n_u16): Remove.
9598         (__arm_vbrsrq_n_s16): Remove.
9599         (__arm_vbrsrq_n_u32): Remove.
9600         (__arm_vbrsrq_n_s32): Remove.
9601         (__arm_vbrsrq_m_n_s8): Remove.
9602         (__arm_vbrsrq_m_n_s32): Remove.
9603         (__arm_vbrsrq_m_n_s16): Remove.
9604         (__arm_vbrsrq_m_n_u8): Remove.
9605         (__arm_vbrsrq_m_n_u32): Remove.
9606         (__arm_vbrsrq_m_n_u16): Remove.
9607         (__arm_vbrsrq_x_n_s8): Remove.
9608         (__arm_vbrsrq_x_n_s16): Remove.
9609         (__arm_vbrsrq_x_n_s32): Remove.
9610         (__arm_vbrsrq_x_n_u8): Remove.
9611         (__arm_vbrsrq_x_n_u16): Remove.
9612         (__arm_vbrsrq_x_n_u32): Remove.
9613         (__arm_vbrsrq_n_f16): Remove.
9614         (__arm_vbrsrq_n_f32): Remove.
9615         (__arm_vbrsrq_m_n_f32): Remove.
9616         (__arm_vbrsrq_m_n_f16): Remove.
9617         (__arm_vbrsrq_x_n_f16): Remove.
9618         (__arm_vbrsrq_x_n_f32): Remove.
9619         (__arm_vbrsrq): Remove.
9620         (__arm_vbrsrq_m): Remove.
9621         (__arm_vbrsrq_x): Remove.
9623 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9625         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
9626         (mve_insn): Add vbrsr.
9627         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
9628         (@mve_<mve_insn>q_n_f<mode>): ... this.
9629         (mve_vbrsrq_n_<supf><mode>): Rename into ...
9630         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9631         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
9632         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9633         (mve_vbrsrq_m_n_f<mode>): Rename into ...
9634         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
9636 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9638         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
9639         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
9641 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9643         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
9644         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
9645         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
9646         * config/arm/arm_mve.h (vqshluq): Remove.
9647         (vqshluq_m): Remove.
9648         (vqshluq_n_s8): Remove.
9649         (vqshluq_n_s16): Remove.
9650         (vqshluq_n_s32): Remove.
9651         (vqshluq_m_n_s8): Remove.
9652         (vqshluq_m_n_s16): Remove.
9653         (vqshluq_m_n_s32): Remove.
9654         (__arm_vqshluq_n_s8): Remove.
9655         (__arm_vqshluq_n_s16): Remove.
9656         (__arm_vqshluq_n_s32): Remove.
9657         (__arm_vqshluq_m_n_s8): Remove.
9658         (__arm_vqshluq_m_n_s16): Remove.
9659         (__arm_vqshluq_m_n_s32): Remove.
9660         (__arm_vqshluq): Remove.
9661         (__arm_vqshluq_m): Remove.
9663 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9665         * config/arm/iterators.md (mve_insn): Add vqshlu.
9666         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
9667         (VQSHLUQ_M_N, VQSHLUQ_N): New.
9668         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
9669         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9670         (mve_vqshluq_m_n_s<mode>): Change name into ...
9671         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9673 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9675         * config/arm/arm-mve-builtins-shapes.cc
9676         (binary_lshift_unsigned): New.
9677         * config/arm/arm-mve-builtins-shapes.h
9678         (binary_lshift_unsigned): New.
9680 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9682         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
9683         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
9684         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
9685         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
9686         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
9687         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
9688         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
9689         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
9690         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
9691         (vrmlaldavhaxq): Remove.
9692         (vrmlsldavhaq): Remove.
9693         (vrmlsldavhaxq): Remove.
9694         (vrmlaldavhaq_p): Remove.
9695         (vrmlaldavhaxq_p): Remove.
9696         (vrmlsldavhaq_p): Remove.
9697         (vrmlsldavhaxq_p): Remove.
9698         (vrmlaldavhaq_s32): Remove.
9699         (vrmlaldavhaq_u32): Remove.
9700         (vrmlaldavhaxq_s32): Remove.
9701         (vrmlsldavhaq_s32): Remove.
9702         (vrmlsldavhaxq_s32): Remove.
9703         (vrmlaldavhaq_p_s32): Remove.
9704         (vrmlaldavhaq_p_u32): Remove.
9705         (vrmlaldavhaxq_p_s32): Remove.
9706         (vrmlsldavhaq_p_s32): Remove.
9707         (vrmlsldavhaxq_p_s32): Remove.
9708         (__arm_vrmlaldavhaq_s32): Remove.
9709         (__arm_vrmlaldavhaq_u32): Remove.
9710         (__arm_vrmlaldavhaxq_s32): Remove.
9711         (__arm_vrmlsldavhaq_s32): Remove.
9712         (__arm_vrmlsldavhaxq_s32): Remove.
9713         (__arm_vrmlaldavhaq_p_s32): Remove.
9714         (__arm_vrmlaldavhaq_p_u32): Remove.
9715         (__arm_vrmlaldavhaxq_p_s32): Remove.
9716         (__arm_vrmlsldavhaq_p_s32): Remove.
9717         (__arm_vrmlsldavhaxq_p_s32): Remove.
9718         (__arm_vrmlaldavhaq): Remove.
9719         (__arm_vrmlaldavhaxq): Remove.
9720         (__arm_vrmlsldavhaq): Remove.
9721         (__arm_vrmlsldavhaxq): Remove.
9722         (__arm_vrmlaldavhaq_p): Remove.
9723         (__arm_vrmlaldavhaxq_p): Remove.
9724         (__arm_vrmlsldavhaq_p): Remove.
9725         (__arm_vrmlsldavhaxq_p): Remove.
9727 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9729         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
9730         (MVE_VRMLxLDAVHAxQ_P): New.
9731         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
9732         vrmlsldavhax.
9733         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
9734         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
9735         VRMLALDAVHAQ_P_S.
9736         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
9737         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
9738         (mve_vrmlsldavhaq_sv4si): Merge into ...
9739         (@mve_<mve_insn>q_<supf>v4si): ... this.
9740         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
9741         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
9742         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
9743         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9745 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9747         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
9748         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
9749         New.
9750         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
9751         * config/arm/arm_mve.h (vqdmulltq): Remove.
9752         (vqdmullbq): Remove.
9753         (vqdmullbq_m): Remove.
9754         (vqdmulltq_m): Remove.
9755         (vqdmulltq_s16): Remove.
9756         (vqdmulltq_n_s16): Remove.
9757         (vqdmullbq_s16): Remove.
9758         (vqdmullbq_n_s16): Remove.
9759         (vqdmulltq_s32): Remove.
9760         (vqdmulltq_n_s32): Remove.
9761         (vqdmullbq_s32): Remove.
9762         (vqdmullbq_n_s32): Remove.
9763         (vqdmullbq_m_n_s32): Remove.
9764         (vqdmullbq_m_n_s16): Remove.
9765         (vqdmullbq_m_s32): Remove.
9766         (vqdmullbq_m_s16): Remove.
9767         (vqdmulltq_m_n_s32): Remove.
9768         (vqdmulltq_m_n_s16): Remove.
9769         (vqdmulltq_m_s32): Remove.
9770         (vqdmulltq_m_s16): Remove.
9771         (__arm_vqdmulltq_s16): Remove.
9772         (__arm_vqdmulltq_n_s16): Remove.
9773         (__arm_vqdmullbq_s16): Remove.
9774         (__arm_vqdmullbq_n_s16): Remove.
9775         (__arm_vqdmulltq_s32): Remove.
9776         (__arm_vqdmulltq_n_s32): Remove.
9777         (__arm_vqdmullbq_s32): Remove.
9778         (__arm_vqdmullbq_n_s32): Remove.
9779         (__arm_vqdmullbq_m_n_s32): Remove.
9780         (__arm_vqdmullbq_m_n_s16): Remove.
9781         (__arm_vqdmullbq_m_s32): Remove.
9782         (__arm_vqdmullbq_m_s16): Remove.
9783         (__arm_vqdmulltq_m_n_s32): Remove.
9784         (__arm_vqdmulltq_m_n_s16): Remove.
9785         (__arm_vqdmulltq_m_s32): Remove.
9786         (__arm_vqdmulltq_m_s16): Remove.
9787         (__arm_vqdmulltq): Remove.
9788         (__arm_vqdmullbq): Remove.
9789         (__arm_vqdmullbq_m): Remove.
9790         (__arm_vqdmulltq_m): Remove.
9792 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9794         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
9795         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
9796         (mve_insn): Add vqdmullb, vqdmullt.
9797         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
9798         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
9799         VQDMULLTQ_N_S.
9800         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
9801         (mve_vqdmulltq_n_s<mode>): Merge into ...
9802         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9803         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
9804         (@mve_<mve_insn>q_<supf><mode>): ... this.
9805         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
9806         ...
9807         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9808         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
9809         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9811 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
9813         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
9814         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
9816 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
9818         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
9819         Drop unused parameter.
9820         (riscv_select_multilib): Ditto.
9821         (riscv_compute_multilib): Update call site of
9822         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
9824 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
9826         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
9827         * config/riscv/riscv-protos.h (expand_vec_init): New function.
9828         * config/riscv/riscv-v.cc (class rvv_builder): New class.
9829         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
9830         (rvv_builder::get_merged_repeating_sequence): Ditto.
9831         (expand_vector_init_insert_elems): Ditto.
9832         (expand_vec_init): Ditto.
9833         * config/riscv/vector-iterators.md: New attribute.
9835 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
9837         * config/rs6000/rs6000-builtins.def
9838         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
9839         to xsiexpdp_di.
9840         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
9841         xsiexpdpf to xsiexpdpf_di.
9842         * config/rs6000/vsx.md (xsiexpdp): Rename to...
9843         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
9844         replace TARGET_64BIT with TARGET_POWERPC64.
9845         (xsiexpdpf): Rename to...
9846         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
9847         replace TARGET_64BIT with TARGET_POWERPC64.
9849 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
9851         * config/rs6000/rs6000-builtins.def
9852         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
9853         long long.
9854         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
9855         TARGET_POWERPC64.
9857 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
9859         * config/rs6000/rs6000-builtins.def
9860         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
9861         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
9862         to power9 catalog.
9863         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
9864         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
9865         TARGET_64BIT check.
9866         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
9867         requirement when it has a 64-bit argument.
9869 2023-05-12  Pan Li  <pan2.li@intel.com>
9870             Richard Sandiford  <richard.sandiford@arm.com>
9871             Richard Biener  <rguenther@suse.de>
9872             Jakub Jelinek  <jakub@redhat.com>
9874         * mux-utils.h: Add overload operator == and != for pointer_mux.
9875         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
9876         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
9877         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
9878         (dv_as_decl): Ditto.
9879         (dv_as_opaque): Removed due to unnecessary.
9880         (struct variable_hasher): Take decl_or_value as compare_type.
9881         (variable_hasher::equal): Diito.
9882         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
9883         (dv_from_value): Ditto.
9884         (attrs_list_member):  Ditto.
9885         (vars_copy): Ditto.
9886         (var_reg_decl_set): Ditto.
9887         (var_reg_delete_and_set): Ditto.
9888         (find_loc_in_1pdv): Ditto.
9889         (canonicalize_values_star): Ditto.
9890         (variable_post_merge_new_vals): Ditto.
9891         (dump_onepart_variable_differences): Ditto.
9892         (variable_different_p): Ditto.
9893         (set_slot_part): Ditto.
9894         (clobber_slot_part): Ditto.
9895         (clobber_variable_part): Ditto.
9897 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
9899         * match.pd: simplify vector shift + bit_and + multiply.
9901 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9903         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
9904         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
9905         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
9906         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
9907         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
9908         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
9909         * config/arm/arm-mve-builtins.cc
9910         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
9911         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
9912         * config/arm/arm_mve.h (vqrdmlashq): Remove.
9913         (vqrdmlahq): Remove.
9914         (vqdmlashq): Remove.
9915         (vqdmlahq): Remove.
9916         (vmlasq): Remove.
9917         (vmlaq): Remove.
9918         (vmlaq_m): Remove.
9919         (vmlasq_m): Remove.
9920         (vqdmlashq_m): Remove.
9921         (vqdmlahq_m): Remove.
9922         (vqrdmlahq_m): Remove.
9923         (vqrdmlashq_m): Remove.
9924         (vmlasq_n_u8): Remove.
9925         (vmlaq_n_u8): Remove.
9926         (vqrdmlashq_n_s8): Remove.
9927         (vqrdmlahq_n_s8): Remove.
9928         (vqdmlahq_n_s8): Remove.
9929         (vqdmlashq_n_s8): Remove.
9930         (vmlasq_n_s8): Remove.
9931         (vmlaq_n_s8): Remove.
9932         (vmlasq_n_u16): Remove.
9933         (vmlaq_n_u16): Remove.
9934         (vqrdmlashq_n_s16): Remove.
9935         (vqrdmlahq_n_s16): Remove.
9936         (vqdmlashq_n_s16): Remove.
9937         (vqdmlahq_n_s16): Remove.
9938         (vmlasq_n_s16): Remove.
9939         (vmlaq_n_s16): Remove.
9940         (vmlasq_n_u32): Remove.
9941         (vmlaq_n_u32): Remove.
9942         (vqrdmlashq_n_s32): Remove.
9943         (vqrdmlahq_n_s32): Remove.
9944         (vqdmlashq_n_s32): Remove.
9945         (vqdmlahq_n_s32): Remove.
9946         (vmlasq_n_s32): Remove.
9947         (vmlaq_n_s32): Remove.
9948         (vmlaq_m_n_s8): Remove.
9949         (vmlaq_m_n_s32): Remove.
9950         (vmlaq_m_n_s16): Remove.
9951         (vmlaq_m_n_u8): Remove.
9952         (vmlaq_m_n_u32): Remove.
9953         (vmlaq_m_n_u16): Remove.
9954         (vmlasq_m_n_s8): Remove.
9955         (vmlasq_m_n_s32): Remove.
9956         (vmlasq_m_n_s16): Remove.
9957         (vmlasq_m_n_u8): Remove.
9958         (vmlasq_m_n_u32): Remove.
9959         (vmlasq_m_n_u16): Remove.
9960         (vqdmlashq_m_n_s8): Remove.
9961         (vqdmlashq_m_n_s32): Remove.
9962         (vqdmlashq_m_n_s16): Remove.
9963         (vqdmlahq_m_n_s8): Remove.
9964         (vqdmlahq_m_n_s32): Remove.
9965         (vqdmlahq_m_n_s16): Remove.
9966         (vqrdmlahq_m_n_s8): Remove.
9967         (vqrdmlahq_m_n_s32): Remove.
9968         (vqrdmlahq_m_n_s16): Remove.
9969         (vqrdmlashq_m_n_s8): Remove.
9970         (vqrdmlashq_m_n_s32): Remove.
9971         (vqrdmlashq_m_n_s16): Remove.
9972         (__arm_vmlasq_n_u8): Remove.
9973         (__arm_vmlaq_n_u8): Remove.
9974         (__arm_vqrdmlashq_n_s8): Remove.
9975         (__arm_vqdmlashq_n_s8): Remove.
9976         (__arm_vqrdmlahq_n_s8): Remove.
9977         (__arm_vqdmlahq_n_s8): Remove.
9978         (__arm_vmlasq_n_s8): Remove.
9979         (__arm_vmlaq_n_s8): Remove.
9980         (__arm_vmlasq_n_u16): Remove.
9981         (__arm_vmlaq_n_u16): Remove.
9982         (__arm_vqrdmlashq_n_s16): Remove.
9983         (__arm_vqdmlashq_n_s16): Remove.
9984         (__arm_vqrdmlahq_n_s16): Remove.
9985         (__arm_vqdmlahq_n_s16): Remove.
9986         (__arm_vmlasq_n_s16): Remove.
9987         (__arm_vmlaq_n_s16): Remove.
9988         (__arm_vmlasq_n_u32): Remove.
9989         (__arm_vmlaq_n_u32): Remove.
9990         (__arm_vqrdmlashq_n_s32): Remove.
9991         (__arm_vqdmlashq_n_s32): Remove.
9992         (__arm_vqrdmlahq_n_s32): Remove.
9993         (__arm_vqdmlahq_n_s32): Remove.
9994         (__arm_vmlasq_n_s32): Remove.
9995         (__arm_vmlaq_n_s32): Remove.
9996         (__arm_vmlaq_m_n_s8): Remove.
9997         (__arm_vmlaq_m_n_s32): Remove.
9998         (__arm_vmlaq_m_n_s16): Remove.
9999         (__arm_vmlaq_m_n_u8): Remove.
10000         (__arm_vmlaq_m_n_u32): Remove.
10001         (__arm_vmlaq_m_n_u16): Remove.
10002         (__arm_vmlasq_m_n_s8): Remove.
10003         (__arm_vmlasq_m_n_s32): Remove.
10004         (__arm_vmlasq_m_n_s16): Remove.
10005         (__arm_vmlasq_m_n_u8): Remove.
10006         (__arm_vmlasq_m_n_u32): Remove.
10007         (__arm_vmlasq_m_n_u16): Remove.
10008         (__arm_vqdmlahq_m_n_s8): Remove.
10009         (__arm_vqdmlahq_m_n_s32): Remove.
10010         (__arm_vqdmlahq_m_n_s16): Remove.
10011         (__arm_vqrdmlahq_m_n_s8): Remove.
10012         (__arm_vqrdmlahq_m_n_s32): Remove.
10013         (__arm_vqrdmlahq_m_n_s16): Remove.
10014         (__arm_vqrdmlashq_m_n_s8): Remove.
10015         (__arm_vqrdmlashq_m_n_s32): Remove.
10016         (__arm_vqrdmlashq_m_n_s16): Remove.
10017         (__arm_vqdmlashq_m_n_s8): Remove.
10018         (__arm_vqdmlashq_m_n_s16): Remove.
10019         (__arm_vqdmlashq_m_n_s32): Remove.
10020         (__arm_vmlasq): Remove.
10021         (__arm_vmlaq): Remove.
10022         (__arm_vqrdmlashq): Remove.
10023         (__arm_vqdmlashq): Remove.
10024         (__arm_vqrdmlahq): Remove.
10025         (__arm_vqdmlahq): Remove.
10026         (__arm_vmlaq_m): Remove.
10027         (__arm_vmlasq_m): Remove.
10028         (__arm_vqdmlahq_m): Remove.
10029         (__arm_vqrdmlahq_m): Remove.
10030         (__arm_vqrdmlashq_m): Remove.
10031         (__arm_vqdmlashq_m): Remove.
10033 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10035         * config/arm/iterators.md (MVE_VMLxQ_N): New.
10036         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
10037         vqrdmlash.
10038         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
10039         VQRDMLASHQ_N_S.
10040         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
10041         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
10042         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
10043         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
10044         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10046 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10048         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
10049         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
10051 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10053         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
10054         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10055         (vqrdmlsdhxq): New.
10056         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
10057         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10058         (vqrdmlsdhxq): New.
10059         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
10060         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10061         (vqrdmlsdhxq): New.
10062         * config/arm/arm-mve-builtins.cc
10063         (function_instance::has_inactive_argument): Handle vqrdmladhq,
10064         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
10065         vqdmlsdhq, vqdmlsdhxq.
10066         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
10067         (vqrdmlsdhq): Remove.
10068         (vqrdmladhxq): Remove.
10069         (vqrdmladhq): Remove.
10070         (vqdmlsdhxq): Remove.
10071         (vqdmlsdhq): Remove.
10072         (vqdmladhxq): Remove.
10073         (vqdmladhq): Remove.
10074         (vqdmladhq_m): Remove.
10075         (vqdmladhxq_m): Remove.
10076         (vqdmlsdhq_m): Remove.
10077         (vqdmlsdhxq_m): Remove.
10078         (vqrdmladhq_m): Remove.
10079         (vqrdmladhxq_m): Remove.
10080         (vqrdmlsdhq_m): Remove.
10081         (vqrdmlsdhxq_m): Remove.
10082         (vqrdmlsdhxq_s8): Remove.
10083         (vqrdmlsdhq_s8): Remove.
10084         (vqrdmladhxq_s8): Remove.
10085         (vqrdmladhq_s8): Remove.
10086         (vqdmlsdhxq_s8): Remove.
10087         (vqdmlsdhq_s8): Remove.
10088         (vqdmladhxq_s8): Remove.
10089         (vqdmladhq_s8): Remove.
10090         (vqrdmlsdhxq_s16): Remove.
10091         (vqrdmlsdhq_s16): Remove.
10092         (vqrdmladhxq_s16): Remove.
10093         (vqrdmladhq_s16): Remove.
10094         (vqdmlsdhxq_s16): Remove.
10095         (vqdmlsdhq_s16): Remove.
10096         (vqdmladhxq_s16): Remove.
10097         (vqdmladhq_s16): Remove.
10098         (vqrdmlsdhxq_s32): Remove.
10099         (vqrdmlsdhq_s32): Remove.
10100         (vqrdmladhxq_s32): Remove.
10101         (vqrdmladhq_s32): Remove.
10102         (vqdmlsdhxq_s32): Remove.
10103         (vqdmlsdhq_s32): Remove.
10104         (vqdmladhxq_s32): Remove.
10105         (vqdmladhq_s32): Remove.
10106         (vqdmladhq_m_s8): Remove.
10107         (vqdmladhq_m_s32): Remove.
10108         (vqdmladhq_m_s16): Remove.
10109         (vqdmladhxq_m_s8): Remove.
10110         (vqdmladhxq_m_s32): Remove.
10111         (vqdmladhxq_m_s16): Remove.
10112         (vqdmlsdhq_m_s8): Remove.
10113         (vqdmlsdhq_m_s32): Remove.
10114         (vqdmlsdhq_m_s16): Remove.
10115         (vqdmlsdhxq_m_s8): Remove.
10116         (vqdmlsdhxq_m_s32): Remove.
10117         (vqdmlsdhxq_m_s16): Remove.
10118         (vqrdmladhq_m_s8): Remove.
10119         (vqrdmladhq_m_s32): Remove.
10120         (vqrdmladhq_m_s16): Remove.
10121         (vqrdmladhxq_m_s8): Remove.
10122         (vqrdmladhxq_m_s32): Remove.
10123         (vqrdmladhxq_m_s16): Remove.
10124         (vqrdmlsdhq_m_s8): Remove.
10125         (vqrdmlsdhq_m_s32): Remove.
10126         (vqrdmlsdhq_m_s16): Remove.
10127         (vqrdmlsdhxq_m_s8): Remove.
10128         (vqrdmlsdhxq_m_s32): Remove.
10129         (vqrdmlsdhxq_m_s16): Remove.
10130         (__arm_vqrdmlsdhxq_s8): Remove.
10131         (__arm_vqrdmlsdhq_s8): Remove.
10132         (__arm_vqrdmladhxq_s8): Remove.
10133         (__arm_vqrdmladhq_s8): Remove.
10134         (__arm_vqdmlsdhxq_s8): Remove.
10135         (__arm_vqdmlsdhq_s8): Remove.
10136         (__arm_vqdmladhxq_s8): Remove.
10137         (__arm_vqdmladhq_s8): Remove.
10138         (__arm_vqrdmlsdhxq_s16): Remove.
10139         (__arm_vqrdmlsdhq_s16): Remove.
10140         (__arm_vqrdmladhxq_s16): Remove.
10141         (__arm_vqrdmladhq_s16): Remove.
10142         (__arm_vqdmlsdhxq_s16): Remove.
10143         (__arm_vqdmlsdhq_s16): Remove.
10144         (__arm_vqdmladhxq_s16): Remove.
10145         (__arm_vqdmladhq_s16): Remove.
10146         (__arm_vqrdmlsdhxq_s32): Remove.
10147         (__arm_vqrdmlsdhq_s32): Remove.
10148         (__arm_vqrdmladhxq_s32): Remove.
10149         (__arm_vqrdmladhq_s32): Remove.
10150         (__arm_vqdmlsdhxq_s32): Remove.
10151         (__arm_vqdmlsdhq_s32): Remove.
10152         (__arm_vqdmladhxq_s32): Remove.
10153         (__arm_vqdmladhq_s32): Remove.
10154         (__arm_vqdmladhq_m_s8): Remove.
10155         (__arm_vqdmladhq_m_s32): Remove.
10156         (__arm_vqdmladhq_m_s16): Remove.
10157         (__arm_vqdmladhxq_m_s8): Remove.
10158         (__arm_vqdmladhxq_m_s32): Remove.
10159         (__arm_vqdmladhxq_m_s16): Remove.
10160         (__arm_vqdmlsdhq_m_s8): Remove.
10161         (__arm_vqdmlsdhq_m_s32): Remove.
10162         (__arm_vqdmlsdhq_m_s16): Remove.
10163         (__arm_vqdmlsdhxq_m_s8): Remove.
10164         (__arm_vqdmlsdhxq_m_s32): Remove.
10165         (__arm_vqdmlsdhxq_m_s16): Remove.
10166         (__arm_vqrdmladhq_m_s8): Remove.
10167         (__arm_vqrdmladhq_m_s32): Remove.
10168         (__arm_vqrdmladhq_m_s16): Remove.
10169         (__arm_vqrdmladhxq_m_s8): Remove.
10170         (__arm_vqrdmladhxq_m_s32): Remove.
10171         (__arm_vqrdmladhxq_m_s16): Remove.
10172         (__arm_vqrdmlsdhq_m_s8): Remove.
10173         (__arm_vqrdmlsdhq_m_s32): Remove.
10174         (__arm_vqrdmlsdhq_m_s16): Remove.
10175         (__arm_vqrdmlsdhxq_m_s8): Remove.
10176         (__arm_vqrdmlsdhxq_m_s32): Remove.
10177         (__arm_vqrdmlsdhxq_m_s16): Remove.
10178         (__arm_vqrdmlsdhxq): Remove.
10179         (__arm_vqrdmlsdhq): Remove.
10180         (__arm_vqrdmladhxq): Remove.
10181         (__arm_vqrdmladhq): Remove.
10182         (__arm_vqdmlsdhxq): Remove.
10183         (__arm_vqdmlsdhq): Remove.
10184         (__arm_vqdmladhxq): Remove.
10185         (__arm_vqdmladhq): Remove.
10186         (__arm_vqdmladhq_m): Remove.
10187         (__arm_vqdmladhxq_m): Remove.
10188         (__arm_vqdmlsdhq_m): Remove.
10189         (__arm_vqdmlsdhxq_m): Remove.
10190         (__arm_vqrdmladhq_m): Remove.
10191         (__arm_vqrdmladhxq_m): Remove.
10192         (__arm_vqrdmlsdhq_m): Remove.
10193         (__arm_vqrdmlsdhxq_m): Remove.
10195 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10197         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
10198         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
10199         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
10200         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
10201         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
10202         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
10203         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
10204         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
10205         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
10206         (mve_vqdmladhq_s<mode>): Merge into ...
10207         (@mve_<mve_insn>q_<supf><mode>): ... this.
10209 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10211         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
10212         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
10214 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10216         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
10217         (vmlsldavaq, vmlsldavaxq): New.
10218         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
10219         (vmlsldavaq, vmlsldavaxq): New.
10220         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
10221         (vmlsldavaq, vmlsldavaxq): New.
10222         * config/arm/arm_mve.h (vmlaldavaq): Remove.
10223         (vmlaldavaxq): Remove.
10224         (vmlsldavaq): Remove.
10225         (vmlsldavaxq): Remove.
10226         (vmlaldavaq_p): Remove.
10227         (vmlaldavaxq_p): Remove.
10228         (vmlsldavaq_p): Remove.
10229         (vmlsldavaxq_p): Remove.
10230         (vmlaldavaq_s16): Remove.
10231         (vmlaldavaxq_s16): Remove.
10232         (vmlsldavaq_s16): Remove.
10233         (vmlsldavaxq_s16): Remove.
10234         (vmlaldavaq_u16): Remove.
10235         (vmlaldavaq_s32): Remove.
10236         (vmlaldavaxq_s32): Remove.
10237         (vmlsldavaq_s32): Remove.
10238         (vmlsldavaxq_s32): Remove.
10239         (vmlaldavaq_u32): Remove.
10240         (vmlaldavaq_p_s32): Remove.
10241         (vmlaldavaq_p_s16): Remove.
10242         (vmlaldavaq_p_u32): Remove.
10243         (vmlaldavaq_p_u16): Remove.
10244         (vmlaldavaxq_p_s32): Remove.
10245         (vmlaldavaxq_p_s16): Remove.
10246         (vmlsldavaq_p_s32): Remove.
10247         (vmlsldavaq_p_s16): Remove.
10248         (vmlsldavaxq_p_s32): Remove.
10249         (vmlsldavaxq_p_s16): Remove.
10250         (__arm_vmlaldavaq_s16): Remove.
10251         (__arm_vmlaldavaxq_s16): Remove.
10252         (__arm_vmlsldavaq_s16): Remove.
10253         (__arm_vmlsldavaxq_s16): Remove.
10254         (__arm_vmlaldavaq_u16): Remove.
10255         (__arm_vmlaldavaq_s32): Remove.
10256         (__arm_vmlaldavaxq_s32): Remove.
10257         (__arm_vmlsldavaq_s32): Remove.
10258         (__arm_vmlsldavaxq_s32): Remove.
10259         (__arm_vmlaldavaq_u32): Remove.
10260         (__arm_vmlaldavaq_p_s32): Remove.
10261         (__arm_vmlaldavaq_p_s16): Remove.
10262         (__arm_vmlaldavaq_p_u32): Remove.
10263         (__arm_vmlaldavaq_p_u16): Remove.
10264         (__arm_vmlaldavaxq_p_s32): Remove.
10265         (__arm_vmlaldavaxq_p_s16): Remove.
10266         (__arm_vmlsldavaq_p_s32): Remove.
10267         (__arm_vmlsldavaq_p_s16): Remove.
10268         (__arm_vmlsldavaxq_p_s32): Remove.
10269         (__arm_vmlsldavaxq_p_s16): Remove.
10270         (__arm_vmlaldavaq): Remove.
10271         (__arm_vmlaldavaxq): Remove.
10272         (__arm_vmlsldavaq): Remove.
10273         (__arm_vmlsldavaxq): Remove.
10274         (__arm_vmlaldavaq_p): Remove.
10275         (__arm_vmlaldavaxq_p): Remove.
10276         (__arm_vmlsldavaq_p): Remove.
10277         (__arm_vmlsldavaxq_p): Remove.
10279 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10281         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
10282         New.
10283         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
10284         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
10285         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
10286         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
10287         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
10288         (mve_vmlaldavaxq_s<mode>): Merge into ...
10289         (@mve_<mve_insn>q_<supf><mode>): ... this.
10290         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
10291         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
10292         ...
10293         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10295 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10297         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
10298         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
10300 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10302         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
10303         (vrmlsldavhq, vrmlsldavhxq): New.
10304         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
10305         (vrmlsldavhq, vrmlsldavhxq): New.
10306         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
10307         (vrmlsldavhq, vrmlsldavhxq): New.
10308         * config/arm/arm-mve-builtins-functions.h
10309         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
10310         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
10311         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
10312         (vrmlsldavhxq): Remove.
10313         (vrmlsldavhq): Remove.
10314         (vrmlaldavhxq): Remove.
10315         (vrmlaldavhq_p): Remove.
10316         (vrmlaldavhxq_p): Remove.
10317         (vrmlsldavhq_p): Remove.
10318         (vrmlsldavhxq_p): Remove.
10319         (vrmlaldavhq_u32): Remove.
10320         (vrmlsldavhxq_s32): Remove.
10321         (vrmlsldavhq_s32): Remove.
10322         (vrmlaldavhxq_s32): Remove.
10323         (vrmlaldavhq_s32): Remove.
10324         (vrmlaldavhq_p_s32): Remove.
10325         (vrmlaldavhxq_p_s32): Remove.
10326         (vrmlsldavhq_p_s32): Remove.
10327         (vrmlsldavhxq_p_s32): Remove.
10328         (vrmlaldavhq_p_u32): Remove.
10329         (__arm_vrmlaldavhq_u32): Remove.
10330         (__arm_vrmlsldavhxq_s32): Remove.
10331         (__arm_vrmlsldavhq_s32): Remove.
10332         (__arm_vrmlaldavhxq_s32): Remove.
10333         (__arm_vrmlaldavhq_s32): Remove.
10334         (__arm_vrmlaldavhq_p_s32): Remove.
10335         (__arm_vrmlaldavhxq_p_s32): Remove.
10336         (__arm_vrmlsldavhq_p_s32): Remove.
10337         (__arm_vrmlsldavhxq_p_s32): Remove.
10338         (__arm_vrmlaldavhq_p_u32): Remove.
10339         (__arm_vrmlaldavhq): Remove.
10340         (__arm_vrmlsldavhxq): Remove.
10341         (__arm_vrmlsldavhq): Remove.
10342         (__arm_vrmlaldavhxq): Remove.
10343         (__arm_vrmlaldavhq_p): Remove.
10344         (__arm_vrmlaldavhxq_p): Remove.
10345         (__arm_vrmlsldavhq_p): Remove.
10346         (__arm_vrmlsldavhxq_p): Remove.
10348 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10350         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
10351         New.
10352         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
10353         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
10354         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
10355         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
10356         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
10357         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
10358         (@mve_<mve_insn>q_<supf>v4si): ... this.
10359         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
10360         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
10361         into ...
10362         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10364 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10366         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
10367         (vmlsldavq, vmlsldavxq): New.
10368         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
10369         (vmlsldavq, vmlsldavxq): New.
10370         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
10371         (vmlsldavq, vmlsldavxq): New.
10372         * config/arm/arm_mve.h (vmlaldavq): Remove.
10373         (vmlsldavxq): Remove.
10374         (vmlsldavq): Remove.
10375         (vmlaldavxq): Remove.
10376         (vmlaldavq_p): Remove.
10377         (vmlaldavxq_p): Remove.
10378         (vmlsldavq_p): Remove.
10379         (vmlsldavxq_p): Remove.
10380         (vmlaldavq_u16): Remove.
10381         (vmlsldavxq_s16): Remove.
10382         (vmlsldavq_s16): Remove.
10383         (vmlaldavxq_s16): Remove.
10384         (vmlaldavq_s16): Remove.
10385         (vmlaldavq_u32): Remove.
10386         (vmlsldavxq_s32): Remove.
10387         (vmlsldavq_s32): Remove.
10388         (vmlaldavxq_s32): Remove.
10389         (vmlaldavq_s32): Remove.
10390         (vmlaldavq_p_s16): Remove.
10391         (vmlaldavxq_p_s16): Remove.
10392         (vmlsldavq_p_s16): Remove.
10393         (vmlsldavxq_p_s16): Remove.
10394         (vmlaldavq_p_u16): Remove.
10395         (vmlaldavq_p_s32): Remove.
10396         (vmlaldavxq_p_s32): Remove.
10397         (vmlsldavq_p_s32): Remove.
10398         (vmlsldavxq_p_s32): Remove.
10399         (vmlaldavq_p_u32): Remove.
10400         (__arm_vmlaldavq_u16): Remove.
10401         (__arm_vmlsldavxq_s16): Remove.
10402         (__arm_vmlsldavq_s16): Remove.
10403         (__arm_vmlaldavxq_s16): Remove.
10404         (__arm_vmlaldavq_s16): Remove.
10405         (__arm_vmlaldavq_u32): Remove.
10406         (__arm_vmlsldavxq_s32): Remove.
10407         (__arm_vmlsldavq_s32): Remove.
10408         (__arm_vmlaldavxq_s32): Remove.
10409         (__arm_vmlaldavq_s32): Remove.
10410         (__arm_vmlaldavq_p_s16): Remove.
10411         (__arm_vmlaldavxq_p_s16): Remove.
10412         (__arm_vmlsldavq_p_s16): Remove.
10413         (__arm_vmlsldavxq_p_s16): Remove.
10414         (__arm_vmlaldavq_p_u16): Remove.
10415         (__arm_vmlaldavq_p_s32): Remove.
10416         (__arm_vmlaldavxq_p_s32): Remove.
10417         (__arm_vmlsldavq_p_s32): Remove.
10418         (__arm_vmlsldavxq_p_s32): Remove.
10419         (__arm_vmlaldavq_p_u32): Remove.
10420         (__arm_vmlaldavq): Remove.
10421         (__arm_vmlsldavxq): Remove.
10422         (__arm_vmlsldavq): Remove.
10423         (__arm_vmlaldavxq): Remove.
10424         (__arm_vmlaldavq_p): Remove.
10425         (__arm_vmlaldavxq_p): Remove.
10426         (__arm_vmlsldavq_p): Remove.
10427         (__arm_vmlsldavxq_p): Remove.
10429 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10431         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
10432         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
10433         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
10434         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
10435         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
10436         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
10437         (mve_vmlsldavxq_s<mode>): Merge into ...
10438         (@mve_<mve_insn>q_<supf><mode>): ... this.
10439         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
10440         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
10441         ...
10442         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10444 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10446         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
10447         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
10449 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10451         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
10452         * config/arm/arm-mve-builtins-base.def (vabavq): New.
10453         * config/arm/arm-mve-builtins-base.h (vabavq): New.
10454         * config/arm/arm_mve.h (vabavq): Remove.
10455         (vabavq_p): Remove.
10456         (vabavq_s8): Remove.
10457         (vabavq_s16): Remove.
10458         (vabavq_s32): Remove.
10459         (vabavq_u8): Remove.
10460         (vabavq_u16): Remove.
10461         (vabavq_u32): Remove.
10462         (vabavq_p_s8): Remove.
10463         (vabavq_p_u8): Remove.
10464         (vabavq_p_s16): Remove.
10465         (vabavq_p_u16): Remove.
10466         (vabavq_p_s32): Remove.
10467         (vabavq_p_u32): Remove.
10468         (__arm_vabavq_s8): Remove.
10469         (__arm_vabavq_s16): Remove.
10470         (__arm_vabavq_s32): Remove.
10471         (__arm_vabavq_u8): Remove.
10472         (__arm_vabavq_u16): Remove.
10473         (__arm_vabavq_u32): Remove.
10474         (__arm_vabavq_p_s8): Remove.
10475         (__arm_vabavq_p_u8): Remove.
10476         (__arm_vabavq_p_s16): Remove.
10477         (__arm_vabavq_p_u16): Remove.
10478         (__arm_vabavq_p_s32): Remove.
10479         (__arm_vabavq_p_u32): Remove.
10480         (__arm_vabavq): Remove.
10481         (__arm_vabavq_p): Remove.
10483 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10485         * config/arm/iterators.md (mve_insn): Add vabav.
10486         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
10487         (@mve_<mve_insn>q_<supf><mode>): ... this,.
10488         (mve_vabavq_p_<supf><mode>): Rename into ...
10489         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
10491 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10493         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
10494         (vmlsdavaq, vmlsdavaxq): New.
10495         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
10496         (vmlsdavaq, vmlsdavaxq): New.
10497         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
10498         (vmlsdavaq, vmlsdavaxq): New.
10499         * config/arm/arm_mve.h (vmladavaq): Remove.
10500         (vmlsdavaxq): Remove.
10501         (vmlsdavaq): Remove.
10502         (vmladavaxq): Remove.
10503         (vmladavaq_p): Remove.
10504         (vmladavaxq_p): Remove.
10505         (vmlsdavaq_p): Remove.
10506         (vmlsdavaxq_p): Remove.
10507         (vmladavaq_u8): Remove.
10508         (vmlsdavaxq_s8): Remove.
10509         (vmlsdavaq_s8): Remove.
10510         (vmladavaxq_s8): Remove.
10511         (vmladavaq_s8): Remove.
10512         (vmladavaq_u16): Remove.
10513         (vmlsdavaxq_s16): Remove.
10514         (vmlsdavaq_s16): Remove.
10515         (vmladavaxq_s16): Remove.
10516         (vmladavaq_s16): Remove.
10517         (vmladavaq_u32): Remove.
10518         (vmlsdavaxq_s32): Remove.
10519         (vmlsdavaq_s32): Remove.
10520         (vmladavaxq_s32): Remove.
10521         (vmladavaq_s32): Remove.
10522         (vmladavaq_p_s8): Remove.
10523         (vmladavaq_p_s32): Remove.
10524         (vmladavaq_p_s16): Remove.
10525         (vmladavaq_p_u8): Remove.
10526         (vmladavaq_p_u32): Remove.
10527         (vmladavaq_p_u16): Remove.
10528         (vmladavaxq_p_s8): Remove.
10529         (vmladavaxq_p_s32): Remove.
10530         (vmladavaxq_p_s16): Remove.
10531         (vmlsdavaq_p_s8): Remove.
10532         (vmlsdavaq_p_s32): Remove.
10533         (vmlsdavaq_p_s16): Remove.
10534         (vmlsdavaxq_p_s8): Remove.
10535         (vmlsdavaxq_p_s32): Remove.
10536         (vmlsdavaxq_p_s16): Remove.
10537         (__arm_vmladavaq_u8): Remove.
10538         (__arm_vmlsdavaxq_s8): Remove.
10539         (__arm_vmlsdavaq_s8): Remove.
10540         (__arm_vmladavaxq_s8): Remove.
10541         (__arm_vmladavaq_s8): Remove.
10542         (__arm_vmladavaq_u16): Remove.
10543         (__arm_vmlsdavaxq_s16): Remove.
10544         (__arm_vmlsdavaq_s16): Remove.
10545         (__arm_vmladavaxq_s16): Remove.
10546         (__arm_vmladavaq_s16): Remove.
10547         (__arm_vmladavaq_u32): Remove.
10548         (__arm_vmlsdavaxq_s32): Remove.
10549         (__arm_vmlsdavaq_s32): Remove.
10550         (__arm_vmladavaxq_s32): Remove.
10551         (__arm_vmladavaq_s32): Remove.
10552         (__arm_vmladavaq_p_s8): Remove.
10553         (__arm_vmladavaq_p_s32): Remove.
10554         (__arm_vmladavaq_p_s16): Remove.
10555         (__arm_vmladavaq_p_u8): Remove.
10556         (__arm_vmladavaq_p_u32): Remove.
10557         (__arm_vmladavaq_p_u16): Remove.
10558         (__arm_vmladavaxq_p_s8): Remove.
10559         (__arm_vmladavaxq_p_s32): Remove.
10560         (__arm_vmladavaxq_p_s16): Remove.
10561         (__arm_vmlsdavaq_p_s8): Remove.
10562         (__arm_vmlsdavaq_p_s32): Remove.
10563         (__arm_vmlsdavaq_p_s16): Remove.
10564         (__arm_vmlsdavaxq_p_s8): Remove.
10565         (__arm_vmlsdavaxq_p_s32): Remove.
10566         (__arm_vmlsdavaxq_p_s16): Remove.
10567         (__arm_vmladavaq): Remove.
10568         (__arm_vmlsdavaxq): Remove.
10569         (__arm_vmlsdavaq): Remove.
10570         (__arm_vmladavaxq): Remove.
10571         (__arm_vmladavaq_p): Remove.
10572         (__arm_vmladavaxq_p): Remove.
10573         (__arm_vmlsdavaq_p): Remove.
10574         (__arm_vmlsdavaxq_p): Remove.
10576 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10578         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
10579         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
10581 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10583         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
10584         (vmlsdavq, vmlsdavxq): New.
10585         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
10586         (vmlsdavq, vmlsdavxq): New.
10587         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
10588         (vmlsdavq, vmlsdavxq): New.
10589         * config/arm/arm_mve.h (vmladavq): Remove.
10590         (vmlsdavxq): Remove.
10591         (vmlsdavq): Remove.
10592         (vmladavxq): Remove.
10593         (vmladavq_p): Remove.
10594         (vmlsdavxq_p): Remove.
10595         (vmlsdavq_p): Remove.
10596         (vmladavxq_p): Remove.
10597         (vmladavq_u8): Remove.
10598         (vmlsdavxq_s8): Remove.
10599         (vmlsdavq_s8): Remove.
10600         (vmladavxq_s8): Remove.
10601         (vmladavq_s8): Remove.
10602         (vmladavq_u16): Remove.
10603         (vmlsdavxq_s16): Remove.
10604         (vmlsdavq_s16): Remove.
10605         (vmladavxq_s16): Remove.
10606         (vmladavq_s16): Remove.
10607         (vmladavq_u32): Remove.
10608         (vmlsdavxq_s32): Remove.
10609         (vmlsdavq_s32): Remove.
10610         (vmladavxq_s32): Remove.
10611         (vmladavq_s32): Remove.
10612         (vmladavq_p_u8): Remove.
10613         (vmlsdavxq_p_s8): Remove.
10614         (vmlsdavq_p_s8): Remove.
10615         (vmladavxq_p_s8): Remove.
10616         (vmladavq_p_s8): Remove.
10617         (vmladavq_p_u16): Remove.
10618         (vmlsdavxq_p_s16): Remove.
10619         (vmlsdavq_p_s16): Remove.
10620         (vmladavxq_p_s16): Remove.
10621         (vmladavq_p_s16): Remove.
10622         (vmladavq_p_u32): Remove.
10623         (vmlsdavxq_p_s32): Remove.
10624         (vmlsdavq_p_s32): Remove.
10625         (vmladavxq_p_s32): Remove.
10626         (vmladavq_p_s32): Remove.
10627         (__arm_vmladavq_u8): Remove.
10628         (__arm_vmlsdavxq_s8): Remove.
10629         (__arm_vmlsdavq_s8): Remove.
10630         (__arm_vmladavxq_s8): Remove.
10631         (__arm_vmladavq_s8): Remove.
10632         (__arm_vmladavq_u16): Remove.
10633         (__arm_vmlsdavxq_s16): Remove.
10634         (__arm_vmlsdavq_s16): Remove.
10635         (__arm_vmladavxq_s16): Remove.
10636         (__arm_vmladavq_s16): Remove.
10637         (__arm_vmladavq_u32): Remove.
10638         (__arm_vmlsdavxq_s32): Remove.
10639         (__arm_vmlsdavq_s32): Remove.
10640         (__arm_vmladavxq_s32): Remove.
10641         (__arm_vmladavq_s32): Remove.
10642         (__arm_vmladavq_p_u8): Remove.
10643         (__arm_vmlsdavxq_p_s8): Remove.
10644         (__arm_vmlsdavq_p_s8): Remove.
10645         (__arm_vmladavxq_p_s8): Remove.
10646         (__arm_vmladavq_p_s8): Remove.
10647         (__arm_vmladavq_p_u16): Remove.
10648         (__arm_vmlsdavxq_p_s16): Remove.
10649         (__arm_vmlsdavq_p_s16): Remove.
10650         (__arm_vmladavxq_p_s16): Remove.
10651         (__arm_vmladavq_p_s16): Remove.
10652         (__arm_vmladavq_p_u32): Remove.
10653         (__arm_vmlsdavxq_p_s32): Remove.
10654         (__arm_vmlsdavq_p_s32): Remove.
10655         (__arm_vmladavxq_p_s32): Remove.
10656         (__arm_vmladavq_p_s32): Remove.
10657         (__arm_vmladavq): Remove.
10658         (__arm_vmlsdavxq): Remove.
10659         (__arm_vmlsdavq): Remove.
10660         (__arm_vmladavxq): Remove.
10661         (__arm_vmladavq_p): Remove.
10662         (__arm_vmlsdavxq_p): Remove.
10663         (__arm_vmlsdavq_p): Remove.
10664         (__arm_vmladavxq_p): Remove.
10666 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10668         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
10669         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
10670         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
10671         vmlsdavax, vmlsdav, vmlsdavx.
10672         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
10673         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
10674         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
10675         VMLSDAVXQ_S.
10676         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
10677         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
10678         (mve_vmlsdavxq_s<mode>): Merge into ...
10679         (@mve_<mve_insn>q_<supf><mode>): ... this.
10680         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
10681         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
10682         ...
10683         (@mve_<mve_insn>q_<supf><mode>): ... this.
10684         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
10685         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
10686         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10687         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
10688         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
10689         ...
10690         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10692 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10694         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
10695         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
10697 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10699         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
10700         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
10701         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
10702         * config/arm/arm_mve.h (vaddlvaq): Remove.
10703         (vaddlvaq_p): Remove.
10704         (vaddlvaq_u32): Remove.
10705         (vaddlvaq_s32): Remove.
10706         (vaddlvaq_p_s32): Remove.
10707         (vaddlvaq_p_u32): Remove.
10708         (__arm_vaddlvaq_u32): Remove.
10709         (__arm_vaddlvaq_s32): Remove.
10710         (__arm_vaddlvaq_p_s32): Remove.
10711         (__arm_vaddlvaq_p_u32): Remove.
10712         (__arm_vaddlvaq): Remove.
10713         (__arm_vaddlvaq_p): Remove.
10715 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10717         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
10718         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
10720 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10722         * config/arm/iterators.md (mve_insn): Add vaddlva.
10723         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
10724         (@mve_<mve_insn>q_<supf>v4si): ... this.
10725         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
10726         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10728 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
10730         PR target/109807
10731         * config/i386/i386.cc (ix86_widen_mult_cost):
10732         Handle V4HImode and V2SImode.
10734 2023-05-11  Andrew Pinski  <apinski@marvell.com>
10736         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
10737         defined by a phi node with more than one uses, allow for the
10738         only uses are in that same defining statement.
10740 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
10742         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
10743         vector constants.
10745 2023-05-11  Pan Li  <pan2.li@intel.com>
10747         * config/riscv/vector.md: Add comments for simplifying to vmset.
10749 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
10751         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
10752         pattern.
10753         (v<optab><mode>3): Add vector shift pattern.
10754         * config/riscv/vector-iterators.md: New iterator.
10756 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
10758         * config/riscv/autovec.md: Use renamed functions.
10759         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
10760         (emit_vlmax_reg_op): To this.
10761         (emit_nonvlmax_op): Rename.
10762         (emit_len_op): To this.
10763         (emit_nonvlmax_binop): Rename.
10764         (emit_len_binop): To this.
10765         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
10766         (emit_pred_binop): Remove vlmax_p.
10767         (emit_vlmax_op): Rename.
10768         (emit_vlmax_reg_op): To this.
10769         (emit_nonvlmax_op): Rename.
10770         (emit_len_op): To this.
10771         (emit_nonvlmax_binop): Rename.
10772         (emit_len_binop): To this.
10773         (sew64_scalar_helper): Use renamed functions.
10774         (expand_tuple_move): Use renamed functions.
10775         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
10776         renamed functions.
10777         * config/riscv/vector.md: Use renamed functions.
10779 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
10780             Michael Collison  <collison@rivosinc.com>
10782         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
10783         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
10784         * config/riscv/riscv-v.cc (emit_pred_op): New function.
10785         (set_expander_dest_and_mask): New function.
10786         (emit_pred_binop): New function.
10787         (emit_nonvlmax_binop): New function.
10789 2023-05-11  Pan Li  <pan2.li@intel.com>
10791         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
10792         * gimple-loop-interchange.cc
10793         (tree_loop_interchange::map_inductions_to_loop): Ditto.
10794         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
10795         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
10796         * tree-ssa-loop-manip.cc (create_iv): Ditto.
10797         (tree_transform_and_unroll_loop): Ditto.
10798         (canonicalize_loop_ivs): Ditto.
10799         * tree-ssa-loop-manip.h (create_iv): Ditto.
10800         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
10801         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
10802         Ditto.
10803         (vect_set_loop_condition_normal): Ditto.
10804         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
10805         * tree-vect-stmts.cc (vectorizable_store): Ditto.
10806         (vectorizable_load): Ditto.
10808 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10810         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
10811         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
10812         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
10813         * config/arm/arm_mve.h (vmovlbq): Remove.
10814         (vmovltq): Remove.
10815         (vmovlbq_m): Remove.
10816         (vmovltq_m): Remove.
10817         (vmovlbq_x): Remove.
10818         (vmovltq_x): Remove.
10819         (vmovlbq_s8): Remove.
10820         (vmovlbq_s16): Remove.
10821         (vmovltq_s8): Remove.
10822         (vmovltq_s16): Remove.
10823         (vmovltq_u8): Remove.
10824         (vmovltq_u16): Remove.
10825         (vmovlbq_u8): Remove.
10826         (vmovlbq_u16): Remove.
10827         (vmovlbq_m_s8): Remove.
10828         (vmovltq_m_s8): Remove.
10829         (vmovlbq_m_u8): Remove.
10830         (vmovltq_m_u8): Remove.
10831         (vmovlbq_m_s16): Remove.
10832         (vmovltq_m_s16): Remove.
10833         (vmovlbq_m_u16): Remove.
10834         (vmovltq_m_u16): Remove.
10835         (vmovlbq_x_s8): Remove.
10836         (vmovlbq_x_s16): Remove.
10837         (vmovlbq_x_u8): Remove.
10838         (vmovlbq_x_u16): Remove.
10839         (vmovltq_x_s8): Remove.
10840         (vmovltq_x_s16): Remove.
10841         (vmovltq_x_u8): Remove.
10842         (vmovltq_x_u16): Remove.
10843         (__arm_vmovlbq_s8): Remove.
10844         (__arm_vmovlbq_s16): Remove.
10845         (__arm_vmovltq_s8): Remove.
10846         (__arm_vmovltq_s16): Remove.
10847         (__arm_vmovltq_u8): Remove.
10848         (__arm_vmovltq_u16): Remove.
10849         (__arm_vmovlbq_u8): Remove.
10850         (__arm_vmovlbq_u16): Remove.
10851         (__arm_vmovlbq_m_s8): Remove.
10852         (__arm_vmovltq_m_s8): Remove.
10853         (__arm_vmovlbq_m_u8): Remove.
10854         (__arm_vmovltq_m_u8): Remove.
10855         (__arm_vmovlbq_m_s16): Remove.
10856         (__arm_vmovltq_m_s16): Remove.
10857         (__arm_vmovlbq_m_u16): Remove.
10858         (__arm_vmovltq_m_u16): Remove.
10859         (__arm_vmovlbq_x_s8): Remove.
10860         (__arm_vmovlbq_x_s16): Remove.
10861         (__arm_vmovlbq_x_u8): Remove.
10862         (__arm_vmovlbq_x_u16): Remove.
10863         (__arm_vmovltq_x_s8): Remove.
10864         (__arm_vmovltq_x_s16): Remove.
10865         (__arm_vmovltq_x_u8): Remove.
10866         (__arm_vmovltq_x_u16): Remove.
10867         (__arm_vmovlbq): Remove.
10868         (__arm_vmovltq): Remove.
10869         (__arm_vmovlbq_m): Remove.
10870         (__arm_vmovltq_m): Remove.
10871         (__arm_vmovlbq_x): Remove.
10872         (__arm_vmovltq_x): Remove.
10874 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10876         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
10877         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
10879 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10881         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
10882         (VMOVLBQ, VMOVLTQ): Merge into ...
10883         (VMOVLxQ): ... this.
10884         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
10885         (VMOVLxQ_M): ... this.
10886         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
10887         (mve_vmovlbq_<supf><mode>): Merge into ...
10888         (@mve_<mve_insn>q_<supf><mode>): ... this.
10889         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
10890         into ...
10891         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10893 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10895         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
10896         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
10897         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
10898         * config/arm/arm-mve-builtins-functions.h
10899         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
10900         * config/arm/arm_mve.h (vaddlvq): Remove.
10901         (vaddlvq_p): Remove.
10902         (vaddlvq_s32): Remove.
10903         (vaddlvq_u32): Remove.
10904         (vaddlvq_p_s32): Remove.
10905         (vaddlvq_p_u32): Remove.
10906         (__arm_vaddlvq_s32): Remove.
10907         (__arm_vaddlvq_u32): Remove.
10908         (__arm_vaddlvq_p_s32): Remove.
10909         (__arm_vaddlvq_p_u32): Remove.
10910         (__arm_vaddlvq): Remove.
10911         (__arm_vaddlvq_p): Remove.
10913 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10915         * config/arm/iterators.md (mve_insn): Add vaddlv.
10916         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
10917         (@mve_<mve_insn>q_<supf>v4si): ... this.
10918         (mve_vaddlvq_p_<supf>v4si): Rename into ...
10919         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10921 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10923         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
10924         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
10926 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10928         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
10929         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
10930         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
10931         * config/arm/arm_mve.h (vaddvaq): Remove.
10932         (vaddvaq_p): Remove.
10933         (vaddvaq_u8): Remove.
10934         (vaddvaq_s8): Remove.
10935         (vaddvaq_u16): Remove.
10936         (vaddvaq_s16): Remove.
10937         (vaddvaq_u32): Remove.
10938         (vaddvaq_s32): Remove.
10939         (vaddvaq_p_u8): Remove.
10940         (vaddvaq_p_s8): Remove.
10941         (vaddvaq_p_u16): Remove.
10942         (vaddvaq_p_s16): Remove.
10943         (vaddvaq_p_u32): Remove.
10944         (vaddvaq_p_s32): Remove.
10945         (__arm_vaddvaq_u8): Remove.
10946         (__arm_vaddvaq_s8): Remove.
10947         (__arm_vaddvaq_u16): Remove.
10948         (__arm_vaddvaq_s16): Remove.
10949         (__arm_vaddvaq_u32): Remove.
10950         (__arm_vaddvaq_s32): Remove.
10951         (__arm_vaddvaq_p_u8): Remove.
10952         (__arm_vaddvaq_p_s8): Remove.
10953         (__arm_vaddvaq_p_u16): Remove.
10954         (__arm_vaddvaq_p_s16): Remove.
10955         (__arm_vaddvaq_p_u32): Remove.
10956         (__arm_vaddvaq_p_s32): Remove.
10957         (__arm_vaddvaq): Remove.
10958         (__arm_vaddvaq_p): Remove.
10960 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10962         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
10963         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
10965 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10967         * config/arm/iterators.md (mve_insn): Add vaddva.
10968         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
10969         (@mve_<mve_insn>q_<supf><mode>): ... this.
10970         (mve_vaddvaq_p_<supf><mode>): Rename into ...
10971         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10973 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10975         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
10976         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
10977         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
10978         * config/arm/arm_mve.h (vaddvq): Remove.
10979         (vaddvq_p): Remove.
10980         (vaddvq_s8): Remove.
10981         (vaddvq_s16): Remove.
10982         (vaddvq_s32): Remove.
10983         (vaddvq_u8): Remove.
10984         (vaddvq_u16): Remove.
10985         (vaddvq_u32): Remove.
10986         (vaddvq_p_u8): Remove.
10987         (vaddvq_p_s8): Remove.
10988         (vaddvq_p_u16): Remove.
10989         (vaddvq_p_s16): Remove.
10990         (vaddvq_p_u32): Remove.
10991         (vaddvq_p_s32): Remove.
10992         (__arm_vaddvq_s8): Remove.
10993         (__arm_vaddvq_s16): Remove.
10994         (__arm_vaddvq_s32): Remove.
10995         (__arm_vaddvq_u8): Remove.
10996         (__arm_vaddvq_u16): Remove.
10997         (__arm_vaddvq_u32): Remove.
10998         (__arm_vaddvq_p_u8): Remove.
10999         (__arm_vaddvq_p_s8): Remove.
11000         (__arm_vaddvq_p_u16): Remove.
11001         (__arm_vaddvq_p_s16): Remove.
11002         (__arm_vaddvq_p_u32): Remove.
11003         (__arm_vaddvq_p_s32): Remove.
11004         (__arm_vaddvq): Remove.
11005         (__arm_vaddvq_p): Remove.
11007 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11009         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
11010         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
11012 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11014         * config/arm/iterators.md (mve_insn): Add vaddv.
11015         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
11016         (@mve_<mve_insn>q_<supf><mode>): ... this.
11017         (mve_vaddvq_p_<supf><mode>): Rename into ...
11018         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11019         * config/arm/vec-common.md: Use gen_mve_q instead of
11020         gen_mve_vaddvq.
11022 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11024         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
11025         (vdupq): New.
11026         * config/arm/arm-mve-builtins-base.def (vdupq): New.
11027         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
11028         * config/arm/arm_mve.h (vdupq_n): Remove.
11029         (vdupq_m): Remove.
11030         (vdupq_n_f16): Remove.
11031         (vdupq_n_f32): Remove.
11032         (vdupq_n_s8): Remove.
11033         (vdupq_n_s16): Remove.
11034         (vdupq_n_s32): Remove.
11035         (vdupq_n_u8): Remove.
11036         (vdupq_n_u16): Remove.
11037         (vdupq_n_u32): Remove.
11038         (vdupq_m_n_u8): Remove.
11039         (vdupq_m_n_s8): Remove.
11040         (vdupq_m_n_u16): Remove.
11041         (vdupq_m_n_s16): Remove.
11042         (vdupq_m_n_u32): Remove.
11043         (vdupq_m_n_s32): Remove.
11044         (vdupq_m_n_f16): Remove.
11045         (vdupq_m_n_f32): Remove.
11046         (vdupq_x_n_s8): Remove.
11047         (vdupq_x_n_s16): Remove.
11048         (vdupq_x_n_s32): Remove.
11049         (vdupq_x_n_u8): Remove.
11050         (vdupq_x_n_u16): Remove.
11051         (vdupq_x_n_u32): Remove.
11052         (vdupq_x_n_f16): Remove.
11053         (vdupq_x_n_f32): Remove.
11054         (__arm_vdupq_n_s8): Remove.
11055         (__arm_vdupq_n_s16): Remove.
11056         (__arm_vdupq_n_s32): Remove.
11057         (__arm_vdupq_n_u8): Remove.
11058         (__arm_vdupq_n_u16): Remove.
11059         (__arm_vdupq_n_u32): Remove.
11060         (__arm_vdupq_m_n_u8): Remove.
11061         (__arm_vdupq_m_n_s8): Remove.
11062         (__arm_vdupq_m_n_u16): Remove.
11063         (__arm_vdupq_m_n_s16): Remove.
11064         (__arm_vdupq_m_n_u32): Remove.
11065         (__arm_vdupq_m_n_s32): Remove.
11066         (__arm_vdupq_x_n_s8): Remove.
11067         (__arm_vdupq_x_n_s16): Remove.
11068         (__arm_vdupq_x_n_s32): Remove.
11069         (__arm_vdupq_x_n_u8): Remove.
11070         (__arm_vdupq_x_n_u16): Remove.
11071         (__arm_vdupq_x_n_u32): Remove.
11072         (__arm_vdupq_n_f16): Remove.
11073         (__arm_vdupq_n_f32): Remove.
11074         (__arm_vdupq_m_n_f16): Remove.
11075         (__arm_vdupq_m_n_f32): Remove.
11076         (__arm_vdupq_x_n_f16): Remove.
11077         (__arm_vdupq_x_n_f32): Remove.
11078         (__arm_vdupq_n): Remove.
11079         (__arm_vdupq_m): Remove.
11081 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11083         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
11084         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
11086 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11088         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
11089         (MVE_FP_N_VDUPQ_ONLY): New.
11090         (mve_insn): Add vdupq.
11091         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
11092         (@mve_<mve_insn>q_n_f<mode>): ... this.
11093         (mve_vdupq_n_<supf><mode>): Rename into ...
11094         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11095         (mve_vdupq_m_n_<supf><mode>): Rename into ...
11096         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11097         (mve_vdupq_m_n_f<mode>): Rename into ...
11098         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
11100 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11102         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
11103         New.
11104         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11105         (vrev64q): New.
11106         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11107         (vrev64q): New.
11108         * config/arm/arm_mve.h (vrev16q): Remove.
11109         (vrev32q): Remove.
11110         (vrev64q): Remove.
11111         (vrev64q_m): Remove.
11112         (vrev16q_m): Remove.
11113         (vrev32q_m): Remove.
11114         (vrev16q_x): Remove.
11115         (vrev32q_x): Remove.
11116         (vrev64q_x): Remove.
11117         (vrev64q_f16): Remove.
11118         (vrev64q_f32): Remove.
11119         (vrev32q_f16): Remove.
11120         (vrev16q_s8): Remove.
11121         (vrev32q_s8): Remove.
11122         (vrev32q_s16): Remove.
11123         (vrev64q_s8): Remove.
11124         (vrev64q_s16): Remove.
11125         (vrev64q_s32): Remove.
11126         (vrev64q_u8): Remove.
11127         (vrev64q_u16): Remove.
11128         (vrev64q_u32): Remove.
11129         (vrev32q_u8): Remove.
11130         (vrev32q_u16): Remove.
11131         (vrev16q_u8): Remove.
11132         (vrev64q_m_u8): Remove.
11133         (vrev64q_m_s8): Remove.
11134         (vrev64q_m_u16): Remove.
11135         (vrev64q_m_s16): Remove.
11136         (vrev64q_m_u32): Remove.
11137         (vrev64q_m_s32): Remove.
11138         (vrev16q_m_s8): Remove.
11139         (vrev32q_m_f16): Remove.
11140         (vrev16q_m_u8): Remove.
11141         (vrev32q_m_s8): Remove.
11142         (vrev64q_m_f16): Remove.
11143         (vrev32q_m_u8): Remove.
11144         (vrev32q_m_s16): Remove.
11145         (vrev64q_m_f32): Remove.
11146         (vrev32q_m_u16): Remove.
11147         (vrev16q_x_s8): Remove.
11148         (vrev16q_x_u8): Remove.
11149         (vrev32q_x_s8): Remove.
11150         (vrev32q_x_s16): Remove.
11151         (vrev32q_x_u8): Remove.
11152         (vrev32q_x_u16): Remove.
11153         (vrev64q_x_s8): Remove.
11154         (vrev64q_x_s16): Remove.
11155         (vrev64q_x_s32): Remove.
11156         (vrev64q_x_u8): Remove.
11157         (vrev64q_x_u16): Remove.
11158         (vrev64q_x_u32): Remove.
11159         (vrev32q_x_f16): Remove.
11160         (vrev64q_x_f16): Remove.
11161         (vrev64q_x_f32): Remove.
11162         (__arm_vrev16q_s8): Remove.
11163         (__arm_vrev32q_s8): Remove.
11164         (__arm_vrev32q_s16): Remove.
11165         (__arm_vrev64q_s8): Remove.
11166         (__arm_vrev64q_s16): Remove.
11167         (__arm_vrev64q_s32): Remove.
11168         (__arm_vrev64q_u8): Remove.
11169         (__arm_vrev64q_u16): Remove.
11170         (__arm_vrev64q_u32): Remove.
11171         (__arm_vrev32q_u8): Remove.
11172         (__arm_vrev32q_u16): Remove.
11173         (__arm_vrev16q_u8): Remove.
11174         (__arm_vrev64q_m_u8): Remove.
11175         (__arm_vrev64q_m_s8): Remove.
11176         (__arm_vrev64q_m_u16): Remove.
11177         (__arm_vrev64q_m_s16): Remove.
11178         (__arm_vrev64q_m_u32): Remove.
11179         (__arm_vrev64q_m_s32): Remove.
11180         (__arm_vrev16q_m_s8): Remove.
11181         (__arm_vrev16q_m_u8): Remove.
11182         (__arm_vrev32q_m_s8): Remove.
11183         (__arm_vrev32q_m_u8): Remove.
11184         (__arm_vrev32q_m_s16): Remove.
11185         (__arm_vrev32q_m_u16): Remove.
11186         (__arm_vrev16q_x_s8): Remove.
11187         (__arm_vrev16q_x_u8): Remove.
11188         (__arm_vrev32q_x_s8): Remove.
11189         (__arm_vrev32q_x_s16): Remove.
11190         (__arm_vrev32q_x_u8): Remove.
11191         (__arm_vrev32q_x_u16): Remove.
11192         (__arm_vrev64q_x_s8): Remove.
11193         (__arm_vrev64q_x_s16): Remove.
11194         (__arm_vrev64q_x_s32): Remove.
11195         (__arm_vrev64q_x_u8): Remove.
11196         (__arm_vrev64q_x_u16): Remove.
11197         (__arm_vrev64q_x_u32): Remove.
11198         (__arm_vrev64q_f16): Remove.
11199         (__arm_vrev64q_f32): Remove.
11200         (__arm_vrev32q_f16): Remove.
11201         (__arm_vrev32q_m_f16): Remove.
11202         (__arm_vrev64q_m_f16): Remove.
11203         (__arm_vrev64q_m_f32): Remove.
11204         (__arm_vrev32q_x_f16): Remove.
11205         (__arm_vrev64q_x_f16): Remove.
11206         (__arm_vrev64q_x_f32): Remove.
11207         (__arm_vrev16q): Remove.
11208         (__arm_vrev32q): Remove.
11209         (__arm_vrev64q): Remove.
11210         (__arm_vrev64q_m): Remove.
11211         (__arm_vrev16q_m): Remove.
11212         (__arm_vrev32q_m): Remove.
11213         (__arm_vrev16q_x): Remove.
11214         (__arm_vrev32q_x): Remove.
11215         (__arm_vrev64q_x): Remove.
11217 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11219         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
11220         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
11221         (MVE_FP_M_VREV32Q_ONLY): New iterators.
11222         (mve_insn): Add vrev16q, vrev32q, vrev64q.
11223         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
11224         (@mve_<mve_insn>q_f<mode>): ... this
11225         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
11226         (mve_vrev64q_<supf><mode>): Rename into ...
11227         (@mve_<mve_insn>q_<supf><mode>): ... this.
11228         (mve_vrev32q_<supf><mode>): Rename into
11229         @mve_<mve_insn>q_<supf><mode>.
11230         (mve_vrev16q_<supf>v16qi): Rename into
11231         @mve_<mve_insn>q_<supf><mode>.
11232         (mve_vrev64q_m_<supf><mode>): Rename into
11233         @mve_<mve_insn>q_m_<supf><mode>.
11234         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
11235         (mve_vrev32q_m_<supf><mode>): Rename into
11236         @mve_<mve_insn>q_m_<supf><mode>.
11237         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
11238         (mve_vrev16q_m_<supf>v16qi): Rename into
11239         @mve_<mve_insn>q_m_<supf><mode>.
11241 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11243         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
11244         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11245         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
11246         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11247         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
11248         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11249         * config/arm/arm-mve-builtins-functions.h (class
11250         unspec_based_mve_function_exact_insn_vcmp): New.
11251         * config/arm/arm-mve-builtins.cc
11252         (function_instance::has_inactive_argument): Handle vcmp.
11253         * config/arm/arm_mve.h (vcmpneq): Remove.
11254         (vcmphiq): Remove.
11255         (vcmpeqq): Remove.
11256         (vcmpcsq): Remove.
11257         (vcmpltq): Remove.
11258         (vcmpleq): Remove.
11259         (vcmpgtq): Remove.
11260         (vcmpgeq): Remove.
11261         (vcmpneq_m): Remove.
11262         (vcmphiq_m): Remove.
11263         (vcmpeqq_m): Remove.
11264         (vcmpcsq_m): Remove.
11265         (vcmpcsq_m_n): Remove.
11266         (vcmpltq_m): Remove.
11267         (vcmpleq_m): Remove.
11268         (vcmpgtq_m): Remove.
11269         (vcmpgeq_m): Remove.
11270         (vcmpneq_s8): Remove.
11271         (vcmpneq_s16): Remove.
11272         (vcmpneq_s32): Remove.
11273         (vcmpneq_u8): Remove.
11274         (vcmpneq_u16): Remove.
11275         (vcmpneq_u32): Remove.
11276         (vcmpneq_n_u8): Remove.
11277         (vcmphiq_u8): Remove.
11278         (vcmphiq_n_u8): Remove.
11279         (vcmpeqq_u8): Remove.
11280         (vcmpeqq_n_u8): Remove.
11281         (vcmpcsq_u8): Remove.
11282         (vcmpcsq_n_u8): Remove.
11283         (vcmpneq_n_s8): Remove.
11284         (vcmpltq_s8): Remove.
11285         (vcmpltq_n_s8): Remove.
11286         (vcmpleq_s8): Remove.
11287         (vcmpleq_n_s8): Remove.
11288         (vcmpgtq_s8): Remove.
11289         (vcmpgtq_n_s8): Remove.
11290         (vcmpgeq_s8): Remove.
11291         (vcmpgeq_n_s8): Remove.
11292         (vcmpeqq_s8): Remove.
11293         (vcmpeqq_n_s8): Remove.
11294         (vcmpneq_n_u16): Remove.
11295         (vcmphiq_u16): Remove.
11296         (vcmphiq_n_u16): Remove.
11297         (vcmpeqq_u16): Remove.
11298         (vcmpeqq_n_u16): Remove.
11299         (vcmpcsq_u16): Remove.
11300         (vcmpcsq_n_u16): Remove.
11301         (vcmpneq_n_s16): Remove.
11302         (vcmpltq_s16): Remove.
11303         (vcmpltq_n_s16): Remove.
11304         (vcmpleq_s16): Remove.
11305         (vcmpleq_n_s16): Remove.
11306         (vcmpgtq_s16): Remove.
11307         (vcmpgtq_n_s16): Remove.
11308         (vcmpgeq_s16): Remove.
11309         (vcmpgeq_n_s16): Remove.
11310         (vcmpeqq_s16): Remove.
11311         (vcmpeqq_n_s16): Remove.
11312         (vcmpneq_n_u32): Remove.
11313         (vcmphiq_u32): Remove.
11314         (vcmphiq_n_u32): Remove.
11315         (vcmpeqq_u32): Remove.
11316         (vcmpeqq_n_u32): Remove.
11317         (vcmpcsq_u32): Remove.
11318         (vcmpcsq_n_u32): Remove.
11319         (vcmpneq_n_s32): Remove.
11320         (vcmpltq_s32): Remove.
11321         (vcmpltq_n_s32): Remove.
11322         (vcmpleq_s32): Remove.
11323         (vcmpleq_n_s32): Remove.
11324         (vcmpgtq_s32): Remove.
11325         (vcmpgtq_n_s32): Remove.
11326         (vcmpgeq_s32): Remove.
11327         (vcmpgeq_n_s32): Remove.
11328         (vcmpeqq_s32): Remove.
11329         (vcmpeqq_n_s32): Remove.
11330         (vcmpneq_n_f16): Remove.
11331         (vcmpneq_f16): Remove.
11332         (vcmpltq_n_f16): Remove.
11333         (vcmpltq_f16): Remove.
11334         (vcmpleq_n_f16): Remove.
11335         (vcmpleq_f16): Remove.
11336         (vcmpgtq_n_f16): Remove.
11337         (vcmpgtq_f16): Remove.
11338         (vcmpgeq_n_f16): Remove.
11339         (vcmpgeq_f16): Remove.
11340         (vcmpeqq_n_f16): Remove.
11341         (vcmpeqq_f16): Remove.
11342         (vcmpneq_n_f32): Remove.
11343         (vcmpneq_f32): Remove.
11344         (vcmpltq_n_f32): Remove.
11345         (vcmpltq_f32): Remove.
11346         (vcmpleq_n_f32): Remove.
11347         (vcmpleq_f32): Remove.
11348         (vcmpgtq_n_f32): Remove.
11349         (vcmpgtq_f32): Remove.
11350         (vcmpgeq_n_f32): Remove.
11351         (vcmpgeq_f32): Remove.
11352         (vcmpeqq_n_f32): Remove.
11353         (vcmpeqq_f32): Remove.
11354         (vcmpeqq_m_f16): Remove.
11355         (vcmpeqq_m_f32): Remove.
11356         (vcmpneq_m_u8): Remove.
11357         (vcmpneq_m_n_u8): Remove.
11358         (vcmphiq_m_u8): Remove.
11359         (vcmphiq_m_n_u8): Remove.
11360         (vcmpeqq_m_u8): Remove.
11361         (vcmpeqq_m_n_u8): Remove.
11362         (vcmpcsq_m_u8): Remove.
11363         (vcmpcsq_m_n_u8): Remove.
11364         (vcmpneq_m_s8): Remove.
11365         (vcmpneq_m_n_s8): Remove.
11366         (vcmpltq_m_s8): Remove.
11367         (vcmpltq_m_n_s8): Remove.
11368         (vcmpleq_m_s8): Remove.
11369         (vcmpleq_m_n_s8): Remove.
11370         (vcmpgtq_m_s8): Remove.
11371         (vcmpgtq_m_n_s8): Remove.
11372         (vcmpgeq_m_s8): Remove.
11373         (vcmpgeq_m_n_s8): Remove.
11374         (vcmpeqq_m_s8): Remove.
11375         (vcmpeqq_m_n_s8): Remove.
11376         (vcmpneq_m_u16): Remove.
11377         (vcmpneq_m_n_u16): Remove.
11378         (vcmphiq_m_u16): Remove.
11379         (vcmphiq_m_n_u16): Remove.
11380         (vcmpeqq_m_u16): Remove.
11381         (vcmpeqq_m_n_u16): Remove.
11382         (vcmpcsq_m_u16): Remove.
11383         (vcmpcsq_m_n_u16): Remove.
11384         (vcmpneq_m_s16): Remove.
11385         (vcmpneq_m_n_s16): Remove.
11386         (vcmpltq_m_s16): Remove.
11387         (vcmpltq_m_n_s16): Remove.
11388         (vcmpleq_m_s16): Remove.
11389         (vcmpleq_m_n_s16): Remove.
11390         (vcmpgtq_m_s16): Remove.
11391         (vcmpgtq_m_n_s16): Remove.
11392         (vcmpgeq_m_s16): Remove.
11393         (vcmpgeq_m_n_s16): Remove.
11394         (vcmpeqq_m_s16): Remove.
11395         (vcmpeqq_m_n_s16): Remove.
11396         (vcmpneq_m_u32): Remove.
11397         (vcmpneq_m_n_u32): Remove.
11398         (vcmphiq_m_u32): Remove.
11399         (vcmphiq_m_n_u32): Remove.
11400         (vcmpeqq_m_u32): Remove.
11401         (vcmpeqq_m_n_u32): Remove.
11402         (vcmpcsq_m_u32): Remove.
11403         (vcmpcsq_m_n_u32): Remove.
11404         (vcmpneq_m_s32): Remove.
11405         (vcmpneq_m_n_s32): Remove.
11406         (vcmpltq_m_s32): Remove.
11407         (vcmpltq_m_n_s32): Remove.
11408         (vcmpleq_m_s32): Remove.
11409         (vcmpleq_m_n_s32): Remove.
11410         (vcmpgtq_m_s32): Remove.
11411         (vcmpgtq_m_n_s32): Remove.
11412         (vcmpgeq_m_s32): Remove.
11413         (vcmpgeq_m_n_s32): Remove.
11414         (vcmpeqq_m_s32): Remove.
11415         (vcmpeqq_m_n_s32): Remove.
11416         (vcmpeqq_m_n_f16): Remove.
11417         (vcmpgeq_m_f16): Remove.
11418         (vcmpgeq_m_n_f16): Remove.
11419         (vcmpgtq_m_f16): Remove.
11420         (vcmpgtq_m_n_f16): Remove.
11421         (vcmpleq_m_f16): Remove.
11422         (vcmpleq_m_n_f16): Remove.
11423         (vcmpltq_m_f16): Remove.
11424         (vcmpltq_m_n_f16): Remove.
11425         (vcmpneq_m_f16): Remove.
11426         (vcmpneq_m_n_f16): Remove.
11427         (vcmpeqq_m_n_f32): Remove.
11428         (vcmpgeq_m_f32): Remove.
11429         (vcmpgeq_m_n_f32): Remove.
11430         (vcmpgtq_m_f32): Remove.
11431         (vcmpgtq_m_n_f32): Remove.
11432         (vcmpleq_m_f32): Remove.
11433         (vcmpleq_m_n_f32): Remove.
11434         (vcmpltq_m_f32): Remove.
11435         (vcmpltq_m_n_f32): Remove.
11436         (vcmpneq_m_f32): Remove.
11437         (vcmpneq_m_n_f32): Remove.
11438         (__arm_vcmpneq_s8): Remove.
11439         (__arm_vcmpneq_s16): Remove.
11440         (__arm_vcmpneq_s32): Remove.
11441         (__arm_vcmpneq_u8): Remove.
11442         (__arm_vcmpneq_u16): Remove.
11443         (__arm_vcmpneq_u32): Remove.
11444         (__arm_vcmpneq_n_u8): Remove.
11445         (__arm_vcmphiq_u8): Remove.
11446         (__arm_vcmphiq_n_u8): Remove.
11447         (__arm_vcmpeqq_u8): Remove.
11448         (__arm_vcmpeqq_n_u8): Remove.
11449         (__arm_vcmpcsq_u8): Remove.
11450         (__arm_vcmpcsq_n_u8): Remove.
11451         (__arm_vcmpneq_n_s8): Remove.
11452         (__arm_vcmpltq_s8): Remove.
11453         (__arm_vcmpltq_n_s8): Remove.
11454         (__arm_vcmpleq_s8): Remove.
11455         (__arm_vcmpleq_n_s8): Remove.
11456         (__arm_vcmpgtq_s8): Remove.
11457         (__arm_vcmpgtq_n_s8): Remove.
11458         (__arm_vcmpgeq_s8): Remove.
11459         (__arm_vcmpgeq_n_s8): Remove.
11460         (__arm_vcmpeqq_s8): Remove.
11461         (__arm_vcmpeqq_n_s8): Remove.
11462         (__arm_vcmpneq_n_u16): Remove.
11463         (__arm_vcmphiq_u16): Remove.
11464         (__arm_vcmphiq_n_u16): Remove.
11465         (__arm_vcmpeqq_u16): Remove.
11466         (__arm_vcmpeqq_n_u16): Remove.
11467         (__arm_vcmpcsq_u16): Remove.
11468         (__arm_vcmpcsq_n_u16): Remove.
11469         (__arm_vcmpneq_n_s16): Remove.
11470         (__arm_vcmpltq_s16): Remove.
11471         (__arm_vcmpltq_n_s16): Remove.
11472         (__arm_vcmpleq_s16): Remove.
11473         (__arm_vcmpleq_n_s16): Remove.
11474         (__arm_vcmpgtq_s16): Remove.
11475         (__arm_vcmpgtq_n_s16): Remove.
11476         (__arm_vcmpgeq_s16): Remove.
11477         (__arm_vcmpgeq_n_s16): Remove.
11478         (__arm_vcmpeqq_s16): Remove.
11479         (__arm_vcmpeqq_n_s16): Remove.
11480         (__arm_vcmpneq_n_u32): Remove.
11481         (__arm_vcmphiq_u32): Remove.
11482         (__arm_vcmphiq_n_u32): Remove.
11483         (__arm_vcmpeqq_u32): Remove.
11484         (__arm_vcmpeqq_n_u32): Remove.
11485         (__arm_vcmpcsq_u32): Remove.
11486         (__arm_vcmpcsq_n_u32): Remove.
11487         (__arm_vcmpneq_n_s32): Remove.
11488         (__arm_vcmpltq_s32): Remove.
11489         (__arm_vcmpltq_n_s32): Remove.
11490         (__arm_vcmpleq_s32): Remove.
11491         (__arm_vcmpleq_n_s32): Remove.
11492         (__arm_vcmpgtq_s32): Remove.
11493         (__arm_vcmpgtq_n_s32): Remove.
11494         (__arm_vcmpgeq_s32): Remove.
11495         (__arm_vcmpgeq_n_s32): Remove.
11496         (__arm_vcmpeqq_s32): Remove.
11497         (__arm_vcmpeqq_n_s32): Remove.
11498         (__arm_vcmpneq_m_u8): Remove.
11499         (__arm_vcmpneq_m_n_u8): Remove.
11500         (__arm_vcmphiq_m_u8): Remove.
11501         (__arm_vcmphiq_m_n_u8): Remove.
11502         (__arm_vcmpeqq_m_u8): Remove.
11503         (__arm_vcmpeqq_m_n_u8): Remove.
11504         (__arm_vcmpcsq_m_u8): Remove.
11505         (__arm_vcmpcsq_m_n_u8): Remove.
11506         (__arm_vcmpneq_m_s8): Remove.
11507         (__arm_vcmpneq_m_n_s8): Remove.
11508         (__arm_vcmpltq_m_s8): Remove.
11509         (__arm_vcmpltq_m_n_s8): Remove.
11510         (__arm_vcmpleq_m_s8): Remove.
11511         (__arm_vcmpleq_m_n_s8): Remove.
11512         (__arm_vcmpgtq_m_s8): Remove.
11513         (__arm_vcmpgtq_m_n_s8): Remove.
11514         (__arm_vcmpgeq_m_s8): Remove.
11515         (__arm_vcmpgeq_m_n_s8): Remove.
11516         (__arm_vcmpeqq_m_s8): Remove.
11517         (__arm_vcmpeqq_m_n_s8): Remove.
11518         (__arm_vcmpneq_m_u16): Remove.
11519         (__arm_vcmpneq_m_n_u16): Remove.
11520         (__arm_vcmphiq_m_u16): Remove.
11521         (__arm_vcmphiq_m_n_u16): Remove.
11522         (__arm_vcmpeqq_m_u16): Remove.
11523         (__arm_vcmpeqq_m_n_u16): Remove.
11524         (__arm_vcmpcsq_m_u16): Remove.
11525         (__arm_vcmpcsq_m_n_u16): Remove.
11526         (__arm_vcmpneq_m_s16): Remove.
11527         (__arm_vcmpneq_m_n_s16): Remove.
11528         (__arm_vcmpltq_m_s16): Remove.
11529         (__arm_vcmpltq_m_n_s16): Remove.
11530         (__arm_vcmpleq_m_s16): Remove.
11531         (__arm_vcmpleq_m_n_s16): Remove.
11532         (__arm_vcmpgtq_m_s16): Remove.
11533         (__arm_vcmpgtq_m_n_s16): Remove.
11534         (__arm_vcmpgeq_m_s16): Remove.
11535         (__arm_vcmpgeq_m_n_s16): Remove.
11536         (__arm_vcmpeqq_m_s16): Remove.
11537         (__arm_vcmpeqq_m_n_s16): Remove.
11538         (__arm_vcmpneq_m_u32): Remove.
11539         (__arm_vcmpneq_m_n_u32): Remove.
11540         (__arm_vcmphiq_m_u32): Remove.
11541         (__arm_vcmphiq_m_n_u32): Remove.
11542         (__arm_vcmpeqq_m_u32): Remove.
11543         (__arm_vcmpeqq_m_n_u32): Remove.
11544         (__arm_vcmpcsq_m_u32): Remove.
11545         (__arm_vcmpcsq_m_n_u32): Remove.
11546         (__arm_vcmpneq_m_s32): Remove.
11547         (__arm_vcmpneq_m_n_s32): Remove.
11548         (__arm_vcmpltq_m_s32): Remove.
11549         (__arm_vcmpltq_m_n_s32): Remove.
11550         (__arm_vcmpleq_m_s32): Remove.
11551         (__arm_vcmpleq_m_n_s32): Remove.
11552         (__arm_vcmpgtq_m_s32): Remove.
11553         (__arm_vcmpgtq_m_n_s32): Remove.
11554         (__arm_vcmpgeq_m_s32): Remove.
11555         (__arm_vcmpgeq_m_n_s32): Remove.
11556         (__arm_vcmpeqq_m_s32): Remove.
11557         (__arm_vcmpeqq_m_n_s32): Remove.
11558         (__arm_vcmpneq_n_f16): Remove.
11559         (__arm_vcmpneq_f16): Remove.
11560         (__arm_vcmpltq_n_f16): Remove.
11561         (__arm_vcmpltq_f16): Remove.
11562         (__arm_vcmpleq_n_f16): Remove.
11563         (__arm_vcmpleq_f16): Remove.
11564         (__arm_vcmpgtq_n_f16): Remove.
11565         (__arm_vcmpgtq_f16): Remove.
11566         (__arm_vcmpgeq_n_f16): Remove.
11567         (__arm_vcmpgeq_f16): Remove.
11568         (__arm_vcmpeqq_n_f16): Remove.
11569         (__arm_vcmpeqq_f16): Remove.
11570         (__arm_vcmpneq_n_f32): Remove.
11571         (__arm_vcmpneq_f32): Remove.
11572         (__arm_vcmpltq_n_f32): Remove.
11573         (__arm_vcmpltq_f32): Remove.
11574         (__arm_vcmpleq_n_f32): Remove.
11575         (__arm_vcmpleq_f32): Remove.
11576         (__arm_vcmpgtq_n_f32): Remove.
11577         (__arm_vcmpgtq_f32): Remove.
11578         (__arm_vcmpgeq_n_f32): Remove.
11579         (__arm_vcmpgeq_f32): Remove.
11580         (__arm_vcmpeqq_n_f32): Remove.
11581         (__arm_vcmpeqq_f32): Remove.
11582         (__arm_vcmpeqq_m_f16): Remove.
11583         (__arm_vcmpeqq_m_f32): Remove.
11584         (__arm_vcmpeqq_m_n_f16): Remove.
11585         (__arm_vcmpgeq_m_f16): Remove.
11586         (__arm_vcmpgeq_m_n_f16): Remove.
11587         (__arm_vcmpgtq_m_f16): Remove.
11588         (__arm_vcmpgtq_m_n_f16): Remove.
11589         (__arm_vcmpleq_m_f16): Remove.
11590         (__arm_vcmpleq_m_n_f16): Remove.
11591         (__arm_vcmpltq_m_f16): Remove.
11592         (__arm_vcmpltq_m_n_f16): Remove.
11593         (__arm_vcmpneq_m_f16): Remove.
11594         (__arm_vcmpneq_m_n_f16): Remove.
11595         (__arm_vcmpeqq_m_n_f32): Remove.
11596         (__arm_vcmpgeq_m_f32): Remove.
11597         (__arm_vcmpgeq_m_n_f32): Remove.
11598         (__arm_vcmpgtq_m_f32): Remove.
11599         (__arm_vcmpgtq_m_n_f32): Remove.
11600         (__arm_vcmpleq_m_f32): Remove.
11601         (__arm_vcmpleq_m_n_f32): Remove.
11602         (__arm_vcmpltq_m_f32): Remove.
11603         (__arm_vcmpltq_m_n_f32): Remove.
11604         (__arm_vcmpneq_m_f32): Remove.
11605         (__arm_vcmpneq_m_n_f32): Remove.
11606         (__arm_vcmpneq): Remove.
11607         (__arm_vcmphiq): Remove.
11608         (__arm_vcmpeqq): Remove.
11609         (__arm_vcmpcsq): Remove.
11610         (__arm_vcmpltq): Remove.
11611         (__arm_vcmpleq): Remove.
11612         (__arm_vcmpgtq): Remove.
11613         (__arm_vcmpgeq): Remove.
11614         (__arm_vcmpneq_m): Remove.
11615         (__arm_vcmphiq_m): Remove.
11616         (__arm_vcmpeqq_m): Remove.
11617         (__arm_vcmpcsq_m): Remove.
11618         (__arm_vcmpltq_m): Remove.
11619         (__arm_vcmpleq_m): Remove.
11620         (__arm_vcmpgtq_m): Remove.
11621         (__arm_vcmpgeq_m): Remove.
11623 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11625         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
11626         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
11628 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11630         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
11631         (MVE_CMP_M_N_F, mve_cmp_op1): New.
11632         (isu): Add VCMP*
11633         (supf): Likewise.
11634         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
11635         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
11636         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
11637         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
11638         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
11639         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
11640         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
11641         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
11642         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
11643         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
11644         ...
11645         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
11646         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
11647         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
11648         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
11649         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
11650         into ...
11651         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
11652         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
11653         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
11654         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
11655         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
11657 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
11659         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
11660         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
11661         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
11662         vice versa.
11664 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
11666         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
11667         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
11668         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
11669         Simplify parity(rotate(x,y)) as parity(x).
11671 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11673         * config/riscv/autovec.md (@vec_series<mode>): New pattern
11674         * config/riscv/riscv-protos.h (expand_vec_series): New function.
11675         * config/riscv/riscv-v.cc (emit_binop): Ditto.
11676         (emit_index_op): Ditto.
11677         (expand_vec_series): Ditto.
11678         (expand_const_vector): Add series vector handling.
11679         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
11681 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
11683         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
11684         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
11685         (*concat<mode><dwi>3_2): Likewise.
11686         (*concat<mode><dwi>3_3): Likewise.
11687         (*concat<mode><dwi>3_4): Likewise.
11688         (*concat<mode><dwi>3_5): Likewise.
11689         (*concat<mode><dwi>3_6): Likewise.
11690         (*concat<mode><dwi>3_7): Likewise.
11692 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
11694         PR target/92658
11695         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
11696         (<insn>v4qiv4hi2): New expander.
11697         (<insn>v2hiv2si2): Ditto.
11698         (<insn>v2qiv2si2): Ditto.
11699         (<insn>v2qiv2hi2): Ditto.
11701 2023-05-10  Jeff Law  <jlaw@ventanamicro>
11703         * config/h8300/constraints.md (Q): Make this a special memory
11704         constraint.
11705         (Zz): Similarly.
11707 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
11709         PR fortran/109788
11710         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
11711         if t is void_list_node.
11713 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11715         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
11716         (aarch64_sqmovun<mode>_insn_be): Delete.
11717         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
11718         (aarch64_sqmovun<mode>): Delete expander.
11720 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11722         PR target/99195
11723         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
11724         Rename to...
11725         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
11726         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
11727         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
11729 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11731         PR target/99195
11732         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
11733         Rename to...
11734         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
11735         (aarch64_<sur>qadd<mode>): Rename to...
11736         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
11738 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11740         * config/aarch64/aarch64-simd.md
11741         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
11742         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
11743         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
11744         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
11746 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11748         PR target/99195
11749         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
11750         (aarch64_xtn<mode>_insn_be): Likewise.
11751         (trunc<mode><Vnarrowq>2): Rename to...
11752         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
11753         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
11754         (aarch64_<su>qmovn<mode>): Likewise.
11755         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
11756         (aarch64_<su>qmovn<mode>_insn_le): Delete.
11757         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
11759 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
11761         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
11762         intruction replace null avl with (const_int 0).
11764 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11766         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
11767         incorrect codes.
11769 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11771         PR target/109773
11772         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
11773         (source_equal_p): Fix dead loop in vsetvl avl checking.
11775 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
11777         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
11778         of modeadjusted_dccr.
11780 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11782         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
11783         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
11784         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
11785         * config/arm/arm-mve-builtins.cc
11786         (function_instance::has_inactive_argument): Handle vmaxaq and
11787         vminaq.
11788         * config/arm/arm_mve.h (vminaq): Remove.
11789         (vmaxaq): Remove.
11790         (vminaq_m): Remove.
11791         (vmaxaq_m): Remove.
11792         (vminaq_s8): Remove.
11793         (vmaxaq_s8): Remove.
11794         (vminaq_s16): Remove.
11795         (vmaxaq_s16): Remove.
11796         (vminaq_s32): Remove.
11797         (vmaxaq_s32): Remove.
11798         (vminaq_m_s8): Remove.
11799         (vmaxaq_m_s8): Remove.
11800         (vminaq_m_s16): Remove.
11801         (vmaxaq_m_s16): Remove.
11802         (vminaq_m_s32): Remove.
11803         (vmaxaq_m_s32): Remove.
11804         (__arm_vminaq_s8): Remove.
11805         (__arm_vmaxaq_s8): Remove.
11806         (__arm_vminaq_s16): Remove.
11807         (__arm_vmaxaq_s16): Remove.
11808         (__arm_vminaq_s32): Remove.
11809         (__arm_vmaxaq_s32): Remove.
11810         (__arm_vminaq_m_s8): Remove.
11811         (__arm_vmaxaq_m_s8): Remove.
11812         (__arm_vminaq_m_s16): Remove.
11813         (__arm_vmaxaq_m_s16): Remove.
11814         (__arm_vminaq_m_s32): Remove.
11815         (__arm_vmaxaq_m_s32): Remove.
11816         (__arm_vminaq): Remove.
11817         (__arm_vmaxaq): Remove.
11818         (__arm_vminaq_m): Remove.
11819         (__arm_vmaxaq_m): Remove.
11821 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11823         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
11824         New.
11825         (mve_insn): Add vmaxa, vmina.
11826         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
11827         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
11828         Merge into ...
11829         (@mve_<mve_insn>q_<supf><mode>): ... this.
11830         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
11831         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11833 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11835         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
11836         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
11838 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11840         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
11841         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
11842         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
11843         * config/arm/arm-mve-builtins.cc
11844         (function_instance::has_inactive_argument): Handle vmaxnmaq and
11845         vminnmaq.
11846         * config/arm/arm_mve.h (vminnmaq): Remove.
11847         (vmaxnmaq): Remove.
11848         (vmaxnmaq_m): Remove.
11849         (vminnmaq_m): Remove.
11850         (vminnmaq_f16): Remove.
11851         (vmaxnmaq_f16): Remove.
11852         (vminnmaq_f32): Remove.
11853         (vmaxnmaq_f32): Remove.
11854         (vmaxnmaq_m_f16): Remove.
11855         (vminnmaq_m_f16): Remove.
11856         (vmaxnmaq_m_f32): Remove.
11857         (vminnmaq_m_f32): Remove.
11858         (__arm_vminnmaq_f16): Remove.
11859         (__arm_vmaxnmaq_f16): Remove.
11860         (__arm_vminnmaq_f32): Remove.
11861         (__arm_vmaxnmaq_f32): Remove.
11862         (__arm_vmaxnmaq_m_f16): Remove.
11863         (__arm_vminnmaq_m_f16): Remove.
11864         (__arm_vmaxnmaq_m_f32): Remove.
11865         (__arm_vminnmaq_m_f32): Remove.
11866         (__arm_vminnmaq): Remove.
11867         (__arm_vmaxnmaq): Remove.
11868         (__arm_vmaxnmaq_m): Remove.
11869         (__arm_vminnmaq_m): Remove.
11871 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11873         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
11874         (MVE_VMAXNMA_VMINNMAQ_M): New.
11875         (mve_insn): Add vmaxnma, vminnma.
11876         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
11877         Merge into ...
11878         (@mve_<mve_insn>q_f<mode>): ... this.
11879         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
11880         (@mve_<mve_insn>q_m_f<mode>): ... this.
11882 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11884         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
11885         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
11886         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
11887         (vminnmavq, vminnmvq): New.
11888         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
11889         (vminnmavq, vminnmvq): New.
11890         * config/arm/arm_mve.h (vminnmvq): Remove.
11891         (vminnmavq): Remove.
11892         (vmaxnmvq): Remove.
11893         (vmaxnmavq): Remove.
11894         (vmaxnmavq_p): Remove.
11895         (vmaxnmvq_p): Remove.
11896         (vminnmavq_p): Remove.
11897         (vminnmvq_p): Remove.
11898         (vminnmvq_f16): Remove.
11899         (vminnmavq_f16): Remove.
11900         (vmaxnmvq_f16): Remove.
11901         (vmaxnmavq_f16): Remove.
11902         (vminnmvq_f32): Remove.
11903         (vminnmavq_f32): Remove.
11904         (vmaxnmvq_f32): Remove.
11905         (vmaxnmavq_f32): Remove.
11906         (vmaxnmavq_p_f16): Remove.
11907         (vmaxnmvq_p_f16): Remove.
11908         (vminnmavq_p_f16): Remove.
11909         (vminnmvq_p_f16): Remove.
11910         (vmaxnmavq_p_f32): Remove.
11911         (vmaxnmvq_p_f32): Remove.
11912         (vminnmavq_p_f32): Remove.
11913         (vminnmvq_p_f32): Remove.
11914         (__arm_vminnmvq_f16): Remove.
11915         (__arm_vminnmavq_f16): Remove.
11916         (__arm_vmaxnmvq_f16): Remove.
11917         (__arm_vmaxnmavq_f16): Remove.
11918         (__arm_vminnmvq_f32): Remove.
11919         (__arm_vminnmavq_f32): Remove.
11920         (__arm_vmaxnmvq_f32): Remove.
11921         (__arm_vmaxnmavq_f32): Remove.
11922         (__arm_vmaxnmavq_p_f16): Remove.
11923         (__arm_vmaxnmvq_p_f16): Remove.
11924         (__arm_vminnmavq_p_f16): Remove.
11925         (__arm_vminnmvq_p_f16): Remove.
11926         (__arm_vmaxnmavq_p_f32): Remove.
11927         (__arm_vmaxnmvq_p_f32): Remove.
11928         (__arm_vminnmavq_p_f32): Remove.
11929         (__arm_vminnmvq_p_f32): Remove.
11930         (__arm_vminnmvq): Remove.
11931         (__arm_vminnmavq): Remove.
11932         (__arm_vmaxnmvq): Remove.
11933         (__arm_vmaxnmavq): Remove.
11934         (__arm_vmaxnmavq_p): Remove.
11935         (__arm_vmaxnmvq_p): Remove.
11936         (__arm_vminnmavq_p): Remove.
11937         (__arm_vminnmvq_p): Remove.
11938         (__arm_vmaxnmavq_m): Remove.
11939         (__arm_vmaxnmvq_m): Remove.
11941 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11943         * config/arm/arm-mve-builtins-functions.h
11944         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
11946 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11948         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
11949         (MVE_VMAXNMxV_MINNMxVQ_P): New.
11950         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
11951         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
11952         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
11953         (@mve_<mve_insn>q_f<mode>): ... this.
11954         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
11955         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
11956         (@mve_<mve_insn>q_p_f<mode>): ... this.
11958 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11960         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
11961         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
11962         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
11963         * config/arm/arm_mve.h (vminnmq): Remove.
11964         (vmaxnmq): Remove.
11965         (vmaxnmq_m): Remove.
11966         (vminnmq_m): Remove.
11967         (vminnmq_x): Remove.
11968         (vmaxnmq_x): Remove.
11969         (vminnmq_f16): Remove.
11970         (vmaxnmq_f16): Remove.
11971         (vminnmq_f32): Remove.
11972         (vmaxnmq_f32): Remove.
11973         (vmaxnmq_m_f32): Remove.
11974         (vmaxnmq_m_f16): Remove.
11975         (vminnmq_m_f32): Remove.
11976         (vminnmq_m_f16): Remove.
11977         (vminnmq_x_f16): Remove.
11978         (vminnmq_x_f32): Remove.
11979         (vmaxnmq_x_f16): Remove.
11980         (vmaxnmq_x_f32): Remove.
11981         (__arm_vminnmq_f16): Remove.
11982         (__arm_vmaxnmq_f16): Remove.
11983         (__arm_vminnmq_f32): Remove.
11984         (__arm_vmaxnmq_f32): Remove.
11985         (__arm_vmaxnmq_m_f32): Remove.
11986         (__arm_vmaxnmq_m_f16): Remove.
11987         (__arm_vminnmq_m_f32): Remove.
11988         (__arm_vminnmq_m_f16): Remove.
11989         (__arm_vminnmq_x_f16): Remove.
11990         (__arm_vminnmq_x_f32): Remove.
11991         (__arm_vmaxnmq_x_f16): Remove.
11992         (__arm_vmaxnmq_x_f32): Remove.
11993         (__arm_vminnmq): Remove.
11994         (__arm_vmaxnmq): Remove.
11995         (__arm_vmaxnmq_m): Remove.
11996         (__arm_vminnmq_m): Remove.
11997         (__arm_vminnmq_x): Remove.
11998         (__arm_vmaxnmq_x): Remove.
12000 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12002         * config/arm/iterators.md (MAX_MIN_F): New.
12003         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
12004         (mve_insn): Add vmaxnm, vminnm.
12005         (max_min_f_str): New.
12006         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
12007         Merge into ...
12008         (@mve_<max_min_f_str>q_f<mode>): ... this.
12009         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
12010         (@mve_<mve_insn>q_m_f<mode>): ... this.
12012 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12014         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
12015         (smax<mode>3): Likewise.
12017 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12019         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
12020         (FUNCTION_PRED_P_S): New.
12021         (vmaxavq, vminavq, vmaxvq, vminvq): New.
12022         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
12023         (vminvq): New.
12024         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12025         (vminvq): New.
12026         * config/arm/arm_mve.h (vminvq): Remove.
12027         (vmaxvq): Remove.
12028         (vminvq_p): Remove.
12029         (vmaxvq_p): Remove.
12030         (vminvq_u8): Remove.
12031         (vmaxvq_u8): Remove.
12032         (vminvq_s8): Remove.
12033         (vmaxvq_s8): Remove.
12034         (vminvq_u16): Remove.
12035         (vmaxvq_u16): Remove.
12036         (vminvq_s16): Remove.
12037         (vmaxvq_s16): Remove.
12038         (vminvq_u32): Remove.
12039         (vmaxvq_u32): Remove.
12040         (vminvq_s32): Remove.
12041         (vmaxvq_s32): Remove.
12042         (vminvq_p_u8): Remove.
12043         (vmaxvq_p_u8): Remove.
12044         (vminvq_p_s8): Remove.
12045         (vmaxvq_p_s8): Remove.
12046         (vminvq_p_u16): Remove.
12047         (vmaxvq_p_u16): Remove.
12048         (vminvq_p_s16): Remove.
12049         (vmaxvq_p_s16): Remove.
12050         (vminvq_p_u32): Remove.
12051         (vmaxvq_p_u32): Remove.
12052         (vminvq_p_s32): Remove.
12053         (vmaxvq_p_s32): Remove.
12054         (__arm_vminvq_u8): Remove.
12055         (__arm_vmaxvq_u8): Remove.
12056         (__arm_vminvq_s8): Remove.
12057         (__arm_vmaxvq_s8): Remove.
12058         (__arm_vminvq_u16): Remove.
12059         (__arm_vmaxvq_u16): Remove.
12060         (__arm_vminvq_s16): Remove.
12061         (__arm_vmaxvq_s16): Remove.
12062         (__arm_vminvq_u32): Remove.
12063         (__arm_vmaxvq_u32): Remove.
12064         (__arm_vminvq_s32): Remove.
12065         (__arm_vmaxvq_s32): Remove.
12066         (__arm_vminvq_p_u8): Remove.
12067         (__arm_vmaxvq_p_u8): Remove.
12068         (__arm_vminvq_p_s8): Remove.
12069         (__arm_vmaxvq_p_s8): Remove.
12070         (__arm_vminvq_p_u16): Remove.
12071         (__arm_vmaxvq_p_u16): Remove.
12072         (__arm_vminvq_p_s16): Remove.
12073         (__arm_vmaxvq_p_s16): Remove.
12074         (__arm_vminvq_p_u32): Remove.
12075         (__arm_vmaxvq_p_u32): Remove.
12076         (__arm_vminvq_p_s32): Remove.
12077         (__arm_vmaxvq_p_s32): Remove.
12078         (__arm_vminvq): Remove.
12079         (__arm_vmaxvq): Remove.
12080         (__arm_vminvq_p): Remove.
12081         (__arm_vmaxvq_p): Remove.
12082         (vminavq): Remove.
12083         (vmaxavq): Remove.
12084         (vminavq_p): Remove.
12085         (vmaxavq_p): Remove.
12086         (vminavq_s8): Remove.
12087         (vmaxavq_s8): Remove.
12088         (vminavq_s16): Remove.
12089         (vmaxavq_s16): Remove.
12090         (vminavq_s32): Remove.
12091         (vmaxavq_s32): Remove.
12092         (vminavq_p_s8): Remove.
12093         (vmaxavq_p_s8): Remove.
12094         (vminavq_p_s16): Remove.
12095         (vmaxavq_p_s16): Remove.
12096         (vminavq_p_s32): Remove.
12097         (vmaxavq_p_s32): Remove.
12098         (__arm_vminavq_s8): Remove.
12099         (__arm_vmaxavq_s8): Remove.
12100         (__arm_vminavq_s16): Remove.
12101         (__arm_vmaxavq_s16): Remove.
12102         (__arm_vminavq_s32): Remove.
12103         (__arm_vmaxavq_s32): Remove.
12104         (__arm_vminavq_p_s8): Remove.
12105         (__arm_vmaxavq_p_s8): Remove.
12106         (__arm_vminavq_p_s16): Remove.
12107         (__arm_vmaxavq_p_s16): Remove.
12108         (__arm_vminavq_p_s32): Remove.
12109         (__arm_vmaxavq_p_s32): Remove.
12110         (__arm_vminavq): Remove.
12111         (__arm_vmaxavq): Remove.
12112         (__arm_vminavq_p): Remove.
12113         (__arm_vmaxavq_p): Remove.
12115 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12117         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
12118         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
12119         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
12120         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
12121         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
12122         (@mve_<mve_insn>q_<supf><mode>): ... this.
12123         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
12124         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
12125         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
12127 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12129         * config/arm/arm-mve-builtins-functions.h (class
12130         unspec_mve_function_exact_insn_pred_p): New.
12132 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12134         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
12135         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
12137 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12139         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
12140         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
12142 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
12144         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
12145         Declare.
12146         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
12147         (ADJUST_REG_ALLOC_ORDER): Likewise.
12148         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
12149         function.
12150         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
12151         Upa rather than Upl for unpredicated movprfx alternatives.
12153 2023-05-09  Jeff Law  <jlaw@ventanamicro>
12155         * config/h8300/testcompare.md: Add peephole2 which uses a memory
12156         load to set flags, thus eliminating a compare against zero.
12158 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12160         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
12161         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
12162         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
12163         * config/arm/arm_mve.h (vshlltq): Remove.
12164         (vshllbq): Remove.
12165         (vshllbq_m): Remove.
12166         (vshlltq_m): Remove.
12167         (vshllbq_x): Remove.
12168         (vshlltq_x): Remove.
12169         (vshlltq_n_u8): Remove.
12170         (vshllbq_n_u8): Remove.
12171         (vshlltq_n_s8): Remove.
12172         (vshllbq_n_s8): Remove.
12173         (vshlltq_n_u16): Remove.
12174         (vshllbq_n_u16): Remove.
12175         (vshlltq_n_s16): Remove.
12176         (vshllbq_n_s16): Remove.
12177         (vshllbq_m_n_s8): Remove.
12178         (vshllbq_m_n_s16): Remove.
12179         (vshllbq_m_n_u8): Remove.
12180         (vshllbq_m_n_u16): Remove.
12181         (vshlltq_m_n_s8): Remove.
12182         (vshlltq_m_n_s16): Remove.
12183         (vshlltq_m_n_u8): Remove.
12184         (vshlltq_m_n_u16): Remove.
12185         (vshllbq_x_n_s8): Remove.
12186         (vshllbq_x_n_s16): Remove.
12187         (vshllbq_x_n_u8): Remove.
12188         (vshllbq_x_n_u16): Remove.
12189         (vshlltq_x_n_s8): Remove.
12190         (vshlltq_x_n_s16): Remove.
12191         (vshlltq_x_n_u8): Remove.
12192         (vshlltq_x_n_u16): Remove.
12193         (__arm_vshlltq_n_u8): Remove.
12194         (__arm_vshllbq_n_u8): Remove.
12195         (__arm_vshlltq_n_s8): Remove.
12196         (__arm_vshllbq_n_s8): Remove.
12197         (__arm_vshlltq_n_u16): Remove.
12198         (__arm_vshllbq_n_u16): Remove.
12199         (__arm_vshlltq_n_s16): Remove.
12200         (__arm_vshllbq_n_s16): Remove.
12201         (__arm_vshllbq_m_n_s8): Remove.
12202         (__arm_vshllbq_m_n_s16): Remove.
12203         (__arm_vshllbq_m_n_u8): Remove.
12204         (__arm_vshllbq_m_n_u16): Remove.
12205         (__arm_vshlltq_m_n_s8): Remove.
12206         (__arm_vshlltq_m_n_s16): Remove.
12207         (__arm_vshlltq_m_n_u8): Remove.
12208         (__arm_vshlltq_m_n_u16): Remove.
12209         (__arm_vshllbq_x_n_s8): Remove.
12210         (__arm_vshllbq_x_n_s16): Remove.
12211         (__arm_vshllbq_x_n_u8): Remove.
12212         (__arm_vshllbq_x_n_u16): Remove.
12213         (__arm_vshlltq_x_n_s8): Remove.
12214         (__arm_vshlltq_x_n_s16): Remove.
12215         (__arm_vshlltq_x_n_u8): Remove.
12216         (__arm_vshlltq_x_n_u16): Remove.
12217         (__arm_vshlltq): Remove.
12218         (__arm_vshllbq): Remove.
12219         (__arm_vshllbq_m): Remove.
12220         (__arm_vshlltq_m): Remove.
12221         (__arm_vshllbq_x): Remove.
12222         (__arm_vshlltq_x): Remove.
12224 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12226         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
12227         (VSHLLBQ_N, VSHLLTQ_N): Remove.
12228         (VSHLLxQ_N): New.
12229         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
12230         (VSHLLxQ_M_N): New.
12231         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
12232         (mve_vshlltq_n_<supf><mode>): Merge into ...
12233         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12234         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
12235         Merge into ...
12236         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12238 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12240         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
12241         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
12243 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12245         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
12246         (vqmovntq, vqmovunbq, vqmovuntq): New.
12247         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
12248         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
12249         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
12250         (vqmovntq, vqmovunbq, vqmovuntq): New.
12251         * config/arm/arm-mve-builtins.cc
12252         (function_instance::has_inactive_argument): Handle vmovnbq,
12253         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
12254         * config/arm/arm_mve.h (vqmovntq): Remove.
12255         (vqmovnbq): Remove.
12256         (vqmovnbq_m): Remove.
12257         (vqmovntq_m): Remove.
12258         (vqmovntq_u16): Remove.
12259         (vqmovnbq_u16): Remove.
12260         (vqmovntq_s16): Remove.
12261         (vqmovnbq_s16): Remove.
12262         (vqmovntq_u32): Remove.
12263         (vqmovnbq_u32): Remove.
12264         (vqmovntq_s32): Remove.
12265         (vqmovnbq_s32): Remove.
12266         (vqmovnbq_m_s16): Remove.
12267         (vqmovntq_m_s16): Remove.
12268         (vqmovnbq_m_u16): Remove.
12269         (vqmovntq_m_u16): Remove.
12270         (vqmovnbq_m_s32): Remove.
12271         (vqmovntq_m_s32): Remove.
12272         (vqmovnbq_m_u32): Remove.
12273         (vqmovntq_m_u32): Remove.
12274         (__arm_vqmovntq_u16): Remove.
12275         (__arm_vqmovnbq_u16): Remove.
12276         (__arm_vqmovntq_s16): Remove.
12277         (__arm_vqmovnbq_s16): Remove.
12278         (__arm_vqmovntq_u32): Remove.
12279         (__arm_vqmovnbq_u32): Remove.
12280         (__arm_vqmovntq_s32): Remove.
12281         (__arm_vqmovnbq_s32): Remove.
12282         (__arm_vqmovnbq_m_s16): Remove.
12283         (__arm_vqmovntq_m_s16): Remove.
12284         (__arm_vqmovnbq_m_u16): Remove.
12285         (__arm_vqmovntq_m_u16): Remove.
12286         (__arm_vqmovnbq_m_s32): Remove.
12287         (__arm_vqmovntq_m_s32): Remove.
12288         (__arm_vqmovnbq_m_u32): Remove.
12289         (__arm_vqmovntq_m_u32): Remove.
12290         (__arm_vqmovntq): Remove.
12291         (__arm_vqmovnbq): Remove.
12292         (__arm_vqmovnbq_m): Remove.
12293         (__arm_vqmovntq_m): Remove.
12294         (vmovntq): Remove.
12295         (vmovnbq): Remove.
12296         (vmovnbq_m): Remove.
12297         (vmovntq_m): Remove.
12298         (vmovntq_u16): Remove.
12299         (vmovnbq_u16): Remove.
12300         (vmovntq_s16): Remove.
12301         (vmovnbq_s16): Remove.
12302         (vmovntq_u32): Remove.
12303         (vmovnbq_u32): Remove.
12304         (vmovntq_s32): Remove.
12305         (vmovnbq_s32): Remove.
12306         (vmovnbq_m_s16): Remove.
12307         (vmovntq_m_s16): Remove.
12308         (vmovnbq_m_u16): Remove.
12309         (vmovntq_m_u16): Remove.
12310         (vmovnbq_m_s32): Remove.
12311         (vmovntq_m_s32): Remove.
12312         (vmovnbq_m_u32): Remove.
12313         (vmovntq_m_u32): Remove.
12314         (__arm_vmovntq_u16): Remove.
12315         (__arm_vmovnbq_u16): Remove.
12316         (__arm_vmovntq_s16): Remove.
12317         (__arm_vmovnbq_s16): Remove.
12318         (__arm_vmovntq_u32): Remove.
12319         (__arm_vmovnbq_u32): Remove.
12320         (__arm_vmovntq_s32): Remove.
12321         (__arm_vmovnbq_s32): Remove.
12322         (__arm_vmovnbq_m_s16): Remove.
12323         (__arm_vmovntq_m_s16): Remove.
12324         (__arm_vmovnbq_m_u16): Remove.
12325         (__arm_vmovntq_m_u16): Remove.
12326         (__arm_vmovnbq_m_s32): Remove.
12327         (__arm_vmovntq_m_s32): Remove.
12328         (__arm_vmovnbq_m_u32): Remove.
12329         (__arm_vmovntq_m_u32): Remove.
12330         (__arm_vmovntq): Remove.
12331         (__arm_vmovnbq): Remove.
12332         (__arm_vmovnbq_m): Remove.
12333         (__arm_vmovntq_m): Remove.
12334         (vqmovuntq): Remove.
12335         (vqmovunbq): Remove.
12336         (vqmovunbq_m): Remove.
12337         (vqmovuntq_m): Remove.
12338         (vqmovuntq_s16): Remove.
12339         (vqmovunbq_s16): Remove.
12340         (vqmovuntq_s32): Remove.
12341         (vqmovunbq_s32): Remove.
12342         (vqmovunbq_m_s16): Remove.
12343         (vqmovuntq_m_s16): Remove.
12344         (vqmovunbq_m_s32): Remove.
12345         (vqmovuntq_m_s32): Remove.
12346         (__arm_vqmovuntq_s16): Remove.
12347         (__arm_vqmovunbq_s16): Remove.
12348         (__arm_vqmovuntq_s32): Remove.
12349         (__arm_vqmovunbq_s32): Remove.
12350         (__arm_vqmovunbq_m_s16): Remove.
12351         (__arm_vqmovuntq_m_s16): Remove.
12352         (__arm_vqmovunbq_m_s32): Remove.
12353         (__arm_vqmovuntq_m_s32): Remove.
12354         (__arm_vqmovuntq): Remove.
12355         (__arm_vqmovunbq): Remove.
12356         (__arm_vqmovunbq_m): Remove.
12357         (__arm_vqmovuntq_m): Remove.
12359 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12361         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
12362         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
12363         vqmovunt.
12364         (isu): Likewise.
12365         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
12366         VQMOVUNTQ_S.
12367         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
12368         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
12369         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
12370         (mve_vqmovuntq_s<mode>): Merge into ...
12371         (@mve_<mve_insn>q_<supf><mode>): ... this.
12372         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
12373         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
12374         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
12375         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12377 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12379         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
12380         (binary_move_narrow_unsigned): New.
12381         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
12382         (binary_move_narrow_unsigned): New.
12384 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12386         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
12387         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
12388         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
12389         (vrndpq, vrndq, vrndxq): New.
12390         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
12391         (vrndpq, vrndq, vrndxq): New.
12392         * config/arm/arm_mve.h (vrndxq): Remove.
12393         (vrndq): Remove.
12394         (vrndpq): Remove.
12395         (vrndnq): Remove.
12396         (vrndmq): Remove.
12397         (vrndaq): Remove.
12398         (vrndaq_m): Remove.
12399         (vrndmq_m): Remove.
12400         (vrndnq_m): Remove.
12401         (vrndpq_m): Remove.
12402         (vrndq_m): Remove.
12403         (vrndxq_m): Remove.
12404         (vrndq_x): Remove.
12405         (vrndnq_x): Remove.
12406         (vrndmq_x): Remove.
12407         (vrndpq_x): Remove.
12408         (vrndaq_x): Remove.
12409         (vrndxq_x): Remove.
12410         (vrndxq_f16): Remove.
12411         (vrndxq_f32): Remove.
12412         (vrndq_f16): Remove.
12413         (vrndq_f32): Remove.
12414         (vrndpq_f16): Remove.
12415         (vrndpq_f32): Remove.
12416         (vrndnq_f16): Remove.
12417         (vrndnq_f32): Remove.
12418         (vrndmq_f16): Remove.
12419         (vrndmq_f32): Remove.
12420         (vrndaq_f16): Remove.
12421         (vrndaq_f32): Remove.
12422         (vrndaq_m_f16): Remove.
12423         (vrndmq_m_f16): Remove.
12424         (vrndnq_m_f16): Remove.
12425         (vrndpq_m_f16): Remove.
12426         (vrndq_m_f16): Remove.
12427         (vrndxq_m_f16): Remove.
12428         (vrndaq_m_f32): Remove.
12429         (vrndmq_m_f32): Remove.
12430         (vrndnq_m_f32): Remove.
12431         (vrndpq_m_f32): Remove.
12432         (vrndq_m_f32): Remove.
12433         (vrndxq_m_f32): Remove.
12434         (vrndq_x_f16): Remove.
12435         (vrndq_x_f32): Remove.
12436         (vrndnq_x_f16): Remove.
12437         (vrndnq_x_f32): Remove.
12438         (vrndmq_x_f16): Remove.
12439         (vrndmq_x_f32): Remove.
12440         (vrndpq_x_f16): Remove.
12441         (vrndpq_x_f32): Remove.
12442         (vrndaq_x_f16): Remove.
12443         (vrndaq_x_f32): Remove.
12444         (vrndxq_x_f16): Remove.
12445         (vrndxq_x_f32): Remove.
12446         (__arm_vrndxq_f16): Remove.
12447         (__arm_vrndxq_f32): Remove.
12448         (__arm_vrndq_f16): Remove.
12449         (__arm_vrndq_f32): Remove.
12450         (__arm_vrndpq_f16): Remove.
12451         (__arm_vrndpq_f32): Remove.
12452         (__arm_vrndnq_f16): Remove.
12453         (__arm_vrndnq_f32): Remove.
12454         (__arm_vrndmq_f16): Remove.
12455         (__arm_vrndmq_f32): Remove.
12456         (__arm_vrndaq_f16): Remove.
12457         (__arm_vrndaq_f32): Remove.
12458         (__arm_vrndaq_m_f16): Remove.
12459         (__arm_vrndmq_m_f16): Remove.
12460         (__arm_vrndnq_m_f16): Remove.
12461         (__arm_vrndpq_m_f16): Remove.
12462         (__arm_vrndq_m_f16): Remove.
12463         (__arm_vrndxq_m_f16): Remove.
12464         (__arm_vrndaq_m_f32): Remove.
12465         (__arm_vrndmq_m_f32): Remove.
12466         (__arm_vrndnq_m_f32): Remove.
12467         (__arm_vrndpq_m_f32): Remove.
12468         (__arm_vrndq_m_f32): Remove.
12469         (__arm_vrndxq_m_f32): Remove.
12470         (__arm_vrndq_x_f16): Remove.
12471         (__arm_vrndq_x_f32): Remove.
12472         (__arm_vrndnq_x_f16): Remove.
12473         (__arm_vrndnq_x_f32): Remove.
12474         (__arm_vrndmq_x_f16): Remove.
12475         (__arm_vrndmq_x_f32): Remove.
12476         (__arm_vrndpq_x_f16): Remove.
12477         (__arm_vrndpq_x_f32): Remove.
12478         (__arm_vrndaq_x_f16): Remove.
12479         (__arm_vrndaq_x_f32): Remove.
12480         (__arm_vrndxq_x_f16): Remove.
12481         (__arm_vrndxq_x_f32): Remove.
12482         (__arm_vrndxq): Remove.
12483         (__arm_vrndq): Remove.
12484         (__arm_vrndpq): Remove.
12485         (__arm_vrndnq): Remove.
12486         (__arm_vrndmq): Remove.
12487         (__arm_vrndaq): Remove.
12488         (__arm_vrndaq_m): Remove.
12489         (__arm_vrndmq_m): Remove.
12490         (__arm_vrndnq_m): Remove.
12491         (__arm_vrndpq_m): Remove.
12492         (__arm_vrndq_m): Remove.
12493         (__arm_vrndxq_m): Remove.
12494         (__arm_vrndq_x): Remove.
12495         (__arm_vrndnq_x): Remove.
12496         (__arm_vrndmq_x): Remove.
12497         (__arm_vrndpq_x): Remove.
12498         (__arm_vrndaq_x): Remove.
12499         (__arm_vrndxq_x): Remove.
12501 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12503         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
12504         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
12505         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
12506         (vclzq, vqabsq, vqnegq): New.
12507         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
12508         (vqabsq, vqnegq): New.
12509         * config/arm/arm_mve.h (vabsq): Remove.
12510         (vabsq_m): Remove.
12511         (vabsq_x): Remove.
12512         (vabsq_f16): Remove.
12513         (vabsq_f32): Remove.
12514         (vabsq_s8): Remove.
12515         (vabsq_s16): Remove.
12516         (vabsq_s32): Remove.
12517         (vabsq_m_s8): Remove.
12518         (vabsq_m_s16): Remove.
12519         (vabsq_m_s32): Remove.
12520         (vabsq_m_f16): Remove.
12521         (vabsq_m_f32): Remove.
12522         (vabsq_x_s8): Remove.
12523         (vabsq_x_s16): Remove.
12524         (vabsq_x_s32): Remove.
12525         (vabsq_x_f16): Remove.
12526         (vabsq_x_f32): Remove.
12527         (__arm_vabsq_s8): Remove.
12528         (__arm_vabsq_s16): Remove.
12529         (__arm_vabsq_s32): Remove.
12530         (__arm_vabsq_m_s8): Remove.
12531         (__arm_vabsq_m_s16): Remove.
12532         (__arm_vabsq_m_s32): Remove.
12533         (__arm_vabsq_x_s8): Remove.
12534         (__arm_vabsq_x_s16): Remove.
12535         (__arm_vabsq_x_s32): Remove.
12536         (__arm_vabsq_f16): Remove.
12537         (__arm_vabsq_f32): Remove.
12538         (__arm_vabsq_m_f16): Remove.
12539         (__arm_vabsq_m_f32): Remove.
12540         (__arm_vabsq_x_f16): Remove.
12541         (__arm_vabsq_x_f32): Remove.
12542         (__arm_vabsq): Remove.
12543         (__arm_vabsq_m): Remove.
12544         (__arm_vabsq_x): Remove.
12545         (vnegq): Remove.
12546         (vnegq_m): Remove.
12547         (vnegq_x): Remove.
12548         (vnegq_f16): Remove.
12549         (vnegq_f32): Remove.
12550         (vnegq_s8): Remove.
12551         (vnegq_s16): Remove.
12552         (vnegq_s32): Remove.
12553         (vnegq_m_s8): Remove.
12554         (vnegq_m_s16): Remove.
12555         (vnegq_m_s32): Remove.
12556         (vnegq_m_f16): Remove.
12557         (vnegq_m_f32): Remove.
12558         (vnegq_x_s8): Remove.
12559         (vnegq_x_s16): Remove.
12560         (vnegq_x_s32): Remove.
12561         (vnegq_x_f16): Remove.
12562         (vnegq_x_f32): Remove.
12563         (__arm_vnegq_s8): Remove.
12564         (__arm_vnegq_s16): Remove.
12565         (__arm_vnegq_s32): Remove.
12566         (__arm_vnegq_m_s8): Remove.
12567         (__arm_vnegq_m_s16): Remove.
12568         (__arm_vnegq_m_s32): Remove.
12569         (__arm_vnegq_x_s8): Remove.
12570         (__arm_vnegq_x_s16): Remove.
12571         (__arm_vnegq_x_s32): Remove.
12572         (__arm_vnegq_f16): Remove.
12573         (__arm_vnegq_f32): Remove.
12574         (__arm_vnegq_m_f16): Remove.
12575         (__arm_vnegq_m_f32): Remove.
12576         (__arm_vnegq_x_f16): Remove.
12577         (__arm_vnegq_x_f32): Remove.
12578         (__arm_vnegq): Remove.
12579         (__arm_vnegq_m): Remove.
12580         (__arm_vnegq_x): Remove.
12581         (vclsq): Remove.
12582         (vclsq_m): Remove.
12583         (vclsq_x): Remove.
12584         (vclsq_s8): Remove.
12585         (vclsq_s16): Remove.
12586         (vclsq_s32): Remove.
12587         (vclsq_m_s8): Remove.
12588         (vclsq_m_s16): Remove.
12589         (vclsq_m_s32): Remove.
12590         (vclsq_x_s8): Remove.
12591         (vclsq_x_s16): Remove.
12592         (vclsq_x_s32): Remove.
12593         (__arm_vclsq_s8): Remove.
12594         (__arm_vclsq_s16): Remove.
12595         (__arm_vclsq_s32): Remove.
12596         (__arm_vclsq_m_s8): Remove.
12597         (__arm_vclsq_m_s16): Remove.
12598         (__arm_vclsq_m_s32): Remove.
12599         (__arm_vclsq_x_s8): Remove.
12600         (__arm_vclsq_x_s16): Remove.
12601         (__arm_vclsq_x_s32): Remove.
12602         (__arm_vclsq): Remove.
12603         (__arm_vclsq_m): Remove.
12604         (__arm_vclsq_x): Remove.
12605         (vclzq): Remove.
12606         (vclzq_m): Remove.
12607         (vclzq_x): Remove.
12608         (vclzq_s8): Remove.
12609         (vclzq_s16): Remove.
12610         (vclzq_s32): Remove.
12611         (vclzq_u8): Remove.
12612         (vclzq_u16): Remove.
12613         (vclzq_u32): Remove.
12614         (vclzq_m_u8): Remove.
12615         (vclzq_m_s8): Remove.
12616         (vclzq_m_u16): Remove.
12617         (vclzq_m_s16): Remove.
12618         (vclzq_m_u32): Remove.
12619         (vclzq_m_s32): Remove.
12620         (vclzq_x_s8): Remove.
12621         (vclzq_x_s16): Remove.
12622         (vclzq_x_s32): Remove.
12623         (vclzq_x_u8): Remove.
12624         (vclzq_x_u16): Remove.
12625         (vclzq_x_u32): Remove.
12626         (__arm_vclzq_s8): Remove.
12627         (__arm_vclzq_s16): Remove.
12628         (__arm_vclzq_s32): Remove.
12629         (__arm_vclzq_u8): Remove.
12630         (__arm_vclzq_u16): Remove.
12631         (__arm_vclzq_u32): Remove.
12632         (__arm_vclzq_m_u8): Remove.
12633         (__arm_vclzq_m_s8): Remove.
12634         (__arm_vclzq_m_u16): Remove.
12635         (__arm_vclzq_m_s16): Remove.
12636         (__arm_vclzq_m_u32): Remove.
12637         (__arm_vclzq_m_s32): Remove.
12638         (__arm_vclzq_x_s8): Remove.
12639         (__arm_vclzq_x_s16): Remove.
12640         (__arm_vclzq_x_s32): Remove.
12641         (__arm_vclzq_x_u8): Remove.
12642         (__arm_vclzq_x_u16): Remove.
12643         (__arm_vclzq_x_u32): Remove.
12644         (__arm_vclzq): Remove.
12645         (__arm_vclzq_m): Remove.
12646         (__arm_vclzq_x): Remove.
12647         (vqabsq): Remove.
12648         (vqnegq): Remove.
12649         (vqnegq_m): Remove.
12650         (vqabsq_m): Remove.
12651         (vqabsq_s8): Remove.
12652         (vqabsq_s16): Remove.
12653         (vqabsq_s32): Remove.
12654         (vqnegq_s8): Remove.
12655         (vqnegq_s16): Remove.
12656         (vqnegq_s32): Remove.
12657         (vqnegq_m_s8): Remove.
12658         (vqabsq_m_s8): Remove.
12659         (vqnegq_m_s16): Remove.
12660         (vqabsq_m_s16): Remove.
12661         (vqnegq_m_s32): Remove.
12662         (vqabsq_m_s32): Remove.
12663         (__arm_vqabsq_s8): Remove.
12664         (__arm_vqabsq_s16): Remove.
12665         (__arm_vqabsq_s32): Remove.
12666         (__arm_vqnegq_s8): Remove.
12667         (__arm_vqnegq_s16): Remove.
12668         (__arm_vqnegq_s32): Remove.
12669         (__arm_vqnegq_m_s8): Remove.
12670         (__arm_vqabsq_m_s8): Remove.
12671         (__arm_vqnegq_m_s16): Remove.
12672         (__arm_vqabsq_m_s16): Remove.
12673         (__arm_vqnegq_m_s32): Remove.
12674         (__arm_vqabsq_m_s32): Remove.
12675         (__arm_vqabsq): Remove.
12676         (__arm_vqnegq): Remove.
12677         (__arm_vqnegq_m): Remove.
12678         (__arm_vqabsq_m): Remove.
12680 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12682         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
12683         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
12684         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
12685         vrndm, vrndn, vrndp, vrnd, vrndx.
12686         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
12687         VQABSQ_M_S, VQNEGQ_M_S.
12688         (mve_mnemo): New.
12689         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
12690         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
12691         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
12692         (@mve_<mve_insn>q_f<mode>): ... this.
12693         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
12694         (mve_v<absneg_str>q_f<mode>): ... this.
12695         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
12696         (mve_v<absneg_str>q_s<mode>): ... this.
12697         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
12698         (@mve_<mve_insn>q_<supf><mode>): ... this.
12699         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
12700         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
12701         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
12702         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12703         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
12704         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
12705         (mve_vrndxq_m_f<mode>): Merge into ...
12706         (@mve_<mve_insn>q_m_f<mode>): ... this.
12708 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12710         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
12711         * config/arm/arm-mve-builtins-shapes.h (unary): New.
12713 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
12715         * mux-utils.h: Fix comment typo, avoides -> avoids.
12717 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
12719         PR tree-optimization/109778
12720         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
12721         wi::zext (x, width) rather than x if width != precision, rather
12722         than using wi::zext (right, width) after the shift.
12723         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
12724         of wi::lrotate or wi::rrotate.
12726 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
12728         * genmatch.cc (get_out_file): Make static and rename to ...
12729         (choose_output): ... this. Reimplement. Update all uses ...
12730         (decision_tree::gen): ... here and ...
12731         (main): ... here.
12733 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
12735         * genmatch.cc (showUsage): Reimplement as ...
12736         (usage): ...this.  Adjust all uses.
12737         (main): Print usage when no arguments.  Add missing 'return 1'.
12739 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
12741         * genmatch.cc (header_file): Make static.
12742         (emit_func): Rename to...
12743         (fp_decl): ... this.  Adjust all uses.
12744         (fp_decl_done): New function.  Use it...
12745         (decision_tree::gen): ... here and...
12746         (write_predicate): ... here.
12747         (main): Adjust.
12749 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
12751         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
12752         earlyclobbers.
12754 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
12755             Uros Bizjak  <ubizjak@gmail.com>
12757         * config/i386/i386.md (any_or_plus): Move definition earlier.
12758         (*insvti_highpart_1): New define_insn_and_split to overwrite
12759         (insv) the highpart of a TImode register/memory.
12761 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
12763         * auto-profile.cc (auto_profile): Check todo from early_inline
12764         to see if cleanup_tree_vfg needs to be called.
12765         (early_inline): Return todo from early_inliner.
12767 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
12769         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
12770         New.
12771         (pass_vsetvl::get_block_info): New.
12772         (pass_vsetvl::update_vector_info): New.
12773         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
12774         (pass_vsetvl::compute_local_backward_infos): Ditto.
12775         (pass_vsetvl::transfer_before): Ditto.
12776         (pass_vsetvl::transfer_after): Ditto.
12777         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
12778         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
12779         (pass_vsetvl::cleanup_insns): Ditto.
12780         (pass_vsetvl::compute_local_backward_infos): Use
12781         update_vector_info.
12783 2023-05-08  Jeff Law  <jlaw@ventanamicro>
12785         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
12787 2023-05-08  Richard Biener  <rguenther@suse.de>
12788             Michael Meissner  <meissner@linux.ibm.com>
12790         PR middle-end/108623
12791         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
12792         Align bit fields > 1 bit to at least an 8-bit boundary.
12794 2023-05-08  Andrew Pinski  <apinski@marvell.com>
12796         PR tree-optimization/109424
12797         PR tree-optimization/59424
12798         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
12799         (factor_out_conditional_operation): This and add support for all unary
12800         operations.
12801         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
12802         to call factor_out_conditional_operation instead.
12804 2023-05-08  Andrew Pinski  <apinski@marvell.com>
12806         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
12807         over factor_out_conditional_conversion.
12809 2023-05-08  Andrew Pinski  <apinski@marvell.com>
12811         PR tree-optimization/49959
12812         PR tree-optimization/103771
12813         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
12814         Diamond shapped bb form for factor_out_conditional_conversion.
12816 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12818         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
12819         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
12820         (riscv_vector_get_mask_mode): Ditto.
12821         (get_mask_policy_no_pred): Ditto.
12822         (get_tail_policy_no_pred): Ditto.
12823         (get_mask_mode): New function.
12824         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
12825         (get_tail_policy_no_pred): Ditto.
12826         (riscv_vector_mask_mode_p): Ditto.
12827         (riscv_vector_get_mask_mode): Ditto.
12828         (get_mask_mode): New function.
12829         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
12830         global extern.
12831         (get_tail_policy_for_pred): Ditto.
12832         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
12833         (get_mask_policy_for_pred): Ditto
12834         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
12836 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
12838         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
12839         (riscv_select_multilib): New.
12840         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
12841         also handle select_by_abi.
12842         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
12843         to select_by_abi_arch_cmodel from 1.
12844         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
12845         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
12847 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
12849         * Makefile.in: (gimple-match-head.o-warn): Remove.
12850         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
12851         gimple-match-exports.cc.
12852         (gimple-match-auto.h): Only depend on s-gimple-match.
12853         (generic-match-auto.h): Likewise.
12855 2023-05-08  Andrew Pinski  <apinski@marvell.com>
12857         PR tree-optimization/109691
12858         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
12859         argument.
12860         If the removed statement can throw, have need_eh_cleanup
12861         include the bb of that statement.
12862         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
12863         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
12864         num_dce.
12865         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
12866         Initialize dceworklist instead of stmts_to_remove.
12867         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
12868         Destore dceworklist instead of stmts_to_remove.
12869         (substitute_and_fold_dom_walker::before_dom_children):
12870         Set dceworklist instead of adding to stmts_to_remove.
12871         (substitute_and_fold_engine::substitute_and_fold):
12872         Call simple_dce_from_worklist instead of poping
12873         from the list.
12874         Don't update the stat on removal statements.
12876 2023-05-07  Andrew Pinski  <apinski@marvell.com>
12878         PR target/109762
12879         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
12880         Change argument type to aarch64_feature_flags.
12881         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
12882         constructor argument type to aarch64_feature_flags.
12883         Change m_old_asm_isa_flags to be aarch64_feature_flags.
12885 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
12887         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
12888         more parallel code if can_create_pseudo_p.
12890 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
12892         PR target/43644
12893         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
12894         immediately before moving a multi-word register by parts.
12896 2023-05-06  Jeff Law  <jlaw@ventanamicro>
12898         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
12900 2023-05-06  Michael Collison  <collison@rivosinc.com>
12902         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
12903         Check that GET_MODE_NUNITS is a multiple of 2.
12905 2023-05-06  Michael Collison  <collison@rivosinc.com>
12907         * config/riscv/riscv.cc
12908         (riscv_estimated_poly_value): Implement
12909         TARGET_ESTIMATED_POLY_VALUE.
12910         (riscv_preferred_simd_mode): Implement
12911         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
12912         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
12913         (riscv_empty_mask_is_expensive): Implement
12914         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
12915         (riscv_vectorize_create_costs): Implement
12916         TARGET_VECTORIZE_CREATE_COSTS.
12917         (riscv_support_vector_misalignment): Implement
12918         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
12919         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
12920         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
12921         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
12922         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
12924 2023-05-06  Jeff Law  <jlaw@ventanamicro>
12926         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
12927         duplicate definition.
12929 2023-05-06  Michael Collison  <collison@rivosinc.com>
12931         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
12932         (riscv_vector_preferred_simd_mode): Ditto.
12933         (get_mask_policy_no_pred): Ditto.
12934         (get_tail_policy_no_pred): Ditto.
12935         (riscv_vector_mask_mode_p): Ditto.
12936         (riscv_vector_get_mask_mode): Ditto.
12938 2023-05-06  Michael Collison  <collison@rivosinc.com>
12940         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
12941         Remove static declaration to to make externally visible.
12942         (get_mask_policy_for_pred): Ditto.
12943         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
12944         New external declaration.
12945         (get_mask_policy_for_pred): Ditto.
12947 2023-05-06  Michael Collison  <collison@rivosinc.com>
12949         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
12950         (riscv_vector_get_mask_mode): Ditto.
12951         (get_mask_policy_no_pred): Ditto.
12952         (get_tail_policy_no_pred): Ditto.
12954 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
12956         * config/loongarch/loongarch.h (struct machine_function): Add
12957         reg_is_wrapped_separately array for register wrapping
12958         information.
12959         * config/loongarch/loongarch.cc
12960         (loongarch_get_separate_components): New function.
12961         (loongarch_components_for_bb): Likewise.
12962         (loongarch_disqualify_components): Likewise.
12963         (loongarch_process_components): Likewise.
12964         (loongarch_emit_prologue_components): Likewise.
12965         (loongarch_emit_epilogue_components): Likewise.
12966         (loongarch_set_handled_components): Likewise.
12967         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
12968         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
12969         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
12970         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
12971         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
12972         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
12973         (loongarch_for_each_saved_reg): Skip registers that are wrapped
12974         separately.
12976 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
12978         PR other/109522
12979         * Makefile.in (s-macro_list): Pass -nostdinc to
12980         $(GCC_FOR_TARGET).
12982 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12984         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
12985         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
12986         (preferred_simd_mode): Ditto.
12987         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
12988         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
12989         (riscv_preferred_simd_mode): New function.
12990         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
12991         * config/riscv/vector.md: Add autovec.md.
12992         * config/riscv/autovec.md: New file.
12994 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
12996         * real.h (dconst_pi): Define.
12997         (dconst_e_ptr): Formatting fix.
12998         (dconst_pi_ptr): Declare.
12999         * real.cc (dconst_pi_ptr): New function.
13000         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
13001         boundaries range with range computed from sin/cos of the particular
13002         bounds if the argument range is shorter than 2*pi.
13003         (cfn_sincos::op1_range): Take bulps into account when determining
13004         which result ranges are always invalid or behave like known NAN.
13006 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
13008         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
13009         pass type to vrange_storage::equal_p.
13010         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
13011         (irange_storage::equal_p): Same.
13012         (frange_storage::equal_p): Same.
13013         * value-range-storage.h (class frange_storage): Same.
13015 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13017         PR target/109748
13018         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
13019         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
13021 2023-05-06  liuhongt  <hongtao.liu@intel.com>
13023         * combine.cc (maybe_swap_commutative_operands): Canonicalize
13024         vec_merge when mask is constant.
13025         * doc/md.texi: Document vec_merge canonicalization.
13027 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
13029         * value-range.h (frange_arithmetic): Declare.
13030         * range-op-float.cc (frange_arithmetic): No longer static.
13031         * gimple-range-op.cc (frange_mpfr_arg1): New function.
13032         (cfn_sqrt::fold_range): Intersect the generic boundaries range
13033         with range computed from sqrt of the particular bounds.
13034         (cfn_sqrt::op1_range): Intersect the generic boundaries range
13035         with range computed from squared particular bounds.
13037 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
13039         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
13040         earlier with helper variables also renamed.
13041         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
13042         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
13043         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
13045 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
13047         * config/cris/cris.md (splitop): Add PLUS.
13048         * config/cris/cris.cc (cris_split_constant): Also handle
13049         PLUS when a split into two insns may be useful.
13051 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13053         * config/cris/cris.md (movandsplit1): New define_peephole2.
13055 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13057         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
13059 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13061         * doc/md.texi (define_peephole2): Document order of scanning.
13063 2023-05-05  Pan Li  <pan2.li@intel.com>
13064             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13066         * config/riscv/vector.md: Allow const as the operand of RVV
13067         indexed load/store.
13069 2023-05-05  Pan Li  <pan2.li@intel.com>
13071         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
13072         consumed by simplify_rtx.
13074 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13076         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
13077         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
13078         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
13079         * config/arm/arm_mve.h (vshrq): Remove.
13080         (vrshrq): Remove.
13081         (vrshrq_m): Remove.
13082         (vshrq_m): Remove.
13083         (vrshrq_x): Remove.
13084         (vshrq_x): Remove.
13085         (vshrq_n_s8): Remove.
13086         (vshrq_n_s16): Remove.
13087         (vshrq_n_s32): Remove.
13088         (vshrq_n_u8): Remove.
13089         (vshrq_n_u16): Remove.
13090         (vshrq_n_u32): Remove.
13091         (vrshrq_n_u8): Remove.
13092         (vrshrq_n_s8): Remove.
13093         (vrshrq_n_u16): Remove.
13094         (vrshrq_n_s16): Remove.
13095         (vrshrq_n_u32): Remove.
13096         (vrshrq_n_s32): Remove.
13097         (vrshrq_m_n_s8): Remove.
13098         (vrshrq_m_n_s32): Remove.
13099         (vrshrq_m_n_s16): Remove.
13100         (vrshrq_m_n_u8): Remove.
13101         (vrshrq_m_n_u32): Remove.
13102         (vrshrq_m_n_u16): Remove.
13103         (vshrq_m_n_s8): Remove.
13104         (vshrq_m_n_s32): Remove.
13105         (vshrq_m_n_s16): Remove.
13106         (vshrq_m_n_u8): Remove.
13107         (vshrq_m_n_u32): Remove.
13108         (vshrq_m_n_u16): Remove.
13109         (vrshrq_x_n_s8): Remove.
13110         (vrshrq_x_n_s16): Remove.
13111         (vrshrq_x_n_s32): Remove.
13112         (vrshrq_x_n_u8): Remove.
13113         (vrshrq_x_n_u16): Remove.
13114         (vrshrq_x_n_u32): Remove.
13115         (vshrq_x_n_s8): Remove.
13116         (vshrq_x_n_s16): Remove.
13117         (vshrq_x_n_s32): Remove.
13118         (vshrq_x_n_u8): Remove.
13119         (vshrq_x_n_u16): Remove.
13120         (vshrq_x_n_u32): Remove.
13121         (__arm_vshrq_n_s8): Remove.
13122         (__arm_vshrq_n_s16): Remove.
13123         (__arm_vshrq_n_s32): Remove.
13124         (__arm_vshrq_n_u8): Remove.
13125         (__arm_vshrq_n_u16): Remove.
13126         (__arm_vshrq_n_u32): Remove.
13127         (__arm_vrshrq_n_u8): Remove.
13128         (__arm_vrshrq_n_s8): Remove.
13129         (__arm_vrshrq_n_u16): Remove.
13130         (__arm_vrshrq_n_s16): Remove.
13131         (__arm_vrshrq_n_u32): Remove.
13132         (__arm_vrshrq_n_s32): Remove.
13133         (__arm_vrshrq_m_n_s8): Remove.
13134         (__arm_vrshrq_m_n_s32): Remove.
13135         (__arm_vrshrq_m_n_s16): Remove.
13136         (__arm_vrshrq_m_n_u8): Remove.
13137         (__arm_vrshrq_m_n_u32): Remove.
13138         (__arm_vrshrq_m_n_u16): Remove.
13139         (__arm_vshrq_m_n_s8): Remove.
13140         (__arm_vshrq_m_n_s32): Remove.
13141         (__arm_vshrq_m_n_s16): Remove.
13142         (__arm_vshrq_m_n_u8): Remove.
13143         (__arm_vshrq_m_n_u32): Remove.
13144         (__arm_vshrq_m_n_u16): Remove.
13145         (__arm_vrshrq_x_n_s8): Remove.
13146         (__arm_vrshrq_x_n_s16): Remove.
13147         (__arm_vrshrq_x_n_s32): Remove.
13148         (__arm_vrshrq_x_n_u8): Remove.
13149         (__arm_vrshrq_x_n_u16): Remove.
13150         (__arm_vrshrq_x_n_u32): Remove.
13151         (__arm_vshrq_x_n_s8): Remove.
13152         (__arm_vshrq_x_n_s16): Remove.
13153         (__arm_vshrq_x_n_s32): Remove.
13154         (__arm_vshrq_x_n_u8): Remove.
13155         (__arm_vshrq_x_n_u16): Remove.
13156         (__arm_vshrq_x_n_u32): Remove.
13157         (__arm_vshrq): Remove.
13158         (__arm_vrshrq): Remove.
13159         (__arm_vrshrq_m): Remove.
13160         (__arm_vshrq_m): Remove.
13161         (__arm_vrshrq_x): Remove.
13162         (__arm_vshrq_x): Remove.
13164 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13166         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
13167         (mve_insn): Add vrshr, vshr.
13168         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
13169         (mve_vrshrq_n_<supf><mode>): Merge into ...
13170         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13171         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
13172         into ...
13173         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13175 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13177         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
13178         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
13180 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13182         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
13183         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
13184         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
13185         (vqrshrunbq, vqrshruntq): New.
13186         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
13187         (vqrshrunbq, vqrshruntq): New.
13188         * config/arm/arm-mve-builtins.cc
13189         (function_instance::has_inactive_argument): Handle vqshrunbq,
13190         vqshruntq, vqrshrunbq, vqrshruntq.
13191         * config/arm/arm_mve.h (vqrshrunbq): Remove.
13192         (vqrshruntq): Remove.
13193         (vqrshrunbq_m): Remove.
13194         (vqrshruntq_m): Remove.
13195         (vqrshrunbq_n_s16): Remove.
13196         (vqrshrunbq_n_s32): Remove.
13197         (vqrshruntq_n_s16): Remove.
13198         (vqrshruntq_n_s32): Remove.
13199         (vqrshrunbq_m_n_s32): Remove.
13200         (vqrshrunbq_m_n_s16): Remove.
13201         (vqrshruntq_m_n_s32): Remove.
13202         (vqrshruntq_m_n_s16): Remove.
13203         (__arm_vqrshrunbq_n_s16): Remove.
13204         (__arm_vqrshrunbq_n_s32): Remove.
13205         (__arm_vqrshruntq_n_s16): Remove.
13206         (__arm_vqrshruntq_n_s32): Remove.
13207         (__arm_vqrshrunbq_m_n_s32): Remove.
13208         (__arm_vqrshrunbq_m_n_s16): Remove.
13209         (__arm_vqrshruntq_m_n_s32): Remove.
13210         (__arm_vqrshruntq_m_n_s16): Remove.
13211         (__arm_vqrshrunbq): Remove.
13212         (__arm_vqrshruntq): Remove.
13213         (__arm_vqrshrunbq_m): Remove.
13214         (__arm_vqrshruntq_m): Remove.
13215         (vqshrunbq): Remove.
13216         (vqshruntq): Remove.
13217         (vqshrunbq_m): Remove.
13218         (vqshruntq_m): Remove.
13219         (vqshrunbq_n_s16): Remove.
13220         (vqshruntq_n_s16): Remove.
13221         (vqshrunbq_n_s32): Remove.
13222         (vqshruntq_n_s32): Remove.
13223         (vqshrunbq_m_n_s32): Remove.
13224         (vqshrunbq_m_n_s16): Remove.
13225         (vqshruntq_m_n_s32): Remove.
13226         (vqshruntq_m_n_s16): Remove.
13227         (__arm_vqshrunbq_n_s16): Remove.
13228         (__arm_vqshruntq_n_s16): Remove.
13229         (__arm_vqshrunbq_n_s32): Remove.
13230         (__arm_vqshruntq_n_s32): Remove.
13231         (__arm_vqshrunbq_m_n_s32): Remove.
13232         (__arm_vqshrunbq_m_n_s16): Remove.
13233         (__arm_vqshruntq_m_n_s32): Remove.
13234         (__arm_vqshruntq_m_n_s16): Remove.
13235         (__arm_vqshrunbq): Remove.
13236         (__arm_vqshruntq): Remove.
13237         (__arm_vqshrunbq_m): Remove.
13238         (__arm_vqshruntq_m): Remove.
13240 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13242         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
13243         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13244         (MVE_SHRN_M_N): Likewise.
13245         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
13246         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13247         (supf): Likewise.
13248         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
13249         (mve_vqrshruntq_n_s<mode>): Remove.
13250         (mve_vqshrunbq_n_s<mode>): Remove.
13251         (mve_vqshruntq_n_s<mode>): Remove.
13252         (mve_vqrshrunbq_m_n_s<mode>): Remove.
13253         (mve_vqrshruntq_m_n_s<mode>): Remove.
13254         (mve_vqshrunbq_m_n_s<mode>): Remove.
13255         (mve_vqshruntq_m_n_s<mode>): Remove.
13257 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13259         * config/arm/arm-mve-builtins-shapes.cc
13260         (binary_rshift_narrow_unsigned): New.
13261         * config/arm/arm-mve-builtins-shapes.h
13262         (binary_rshift_narrow_unsigned): New.
13264 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13266         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
13267         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
13268         (vqrshrnbq, vqrshrntq): New.
13269         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
13270         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
13271         New.
13272         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
13273         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
13274         * config/arm/arm-mve-builtins.cc
13275         (function_instance::has_inactive_argument): Handle vshrnbq,
13276         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
13277         vqrshrntq.
13278         * config/arm/arm_mve.h (vshrnbq): Remove.
13279         (vshrntq): Remove.
13280         (vshrnbq_m): Remove.
13281         (vshrntq_m): Remove.
13282         (vshrnbq_n_s16): Remove.
13283         (vshrntq_n_s16): Remove.
13284         (vshrnbq_n_u16): Remove.
13285         (vshrntq_n_u16): Remove.
13286         (vshrnbq_n_s32): Remove.
13287         (vshrntq_n_s32): Remove.
13288         (vshrnbq_n_u32): Remove.
13289         (vshrntq_n_u32): Remove.
13290         (vshrnbq_m_n_s32): Remove.
13291         (vshrnbq_m_n_s16): Remove.
13292         (vshrnbq_m_n_u32): Remove.
13293         (vshrnbq_m_n_u16): Remove.
13294         (vshrntq_m_n_s32): Remove.
13295         (vshrntq_m_n_s16): Remove.
13296         (vshrntq_m_n_u32): Remove.
13297         (vshrntq_m_n_u16): Remove.
13298         (__arm_vshrnbq_n_s16): Remove.
13299         (__arm_vshrntq_n_s16): Remove.
13300         (__arm_vshrnbq_n_u16): Remove.
13301         (__arm_vshrntq_n_u16): Remove.
13302         (__arm_vshrnbq_n_s32): Remove.
13303         (__arm_vshrntq_n_s32): Remove.
13304         (__arm_vshrnbq_n_u32): Remove.
13305         (__arm_vshrntq_n_u32): Remove.
13306         (__arm_vshrnbq_m_n_s32): Remove.
13307         (__arm_vshrnbq_m_n_s16): Remove.
13308         (__arm_vshrnbq_m_n_u32): Remove.
13309         (__arm_vshrnbq_m_n_u16): Remove.
13310         (__arm_vshrntq_m_n_s32): Remove.
13311         (__arm_vshrntq_m_n_s16): Remove.
13312         (__arm_vshrntq_m_n_u32): Remove.
13313         (__arm_vshrntq_m_n_u16): Remove.
13314         (__arm_vshrnbq): Remove.
13315         (__arm_vshrntq): Remove.
13316         (__arm_vshrnbq_m): Remove.
13317         (__arm_vshrntq_m): Remove.
13318         (vrshrnbq): Remove.
13319         (vrshrntq): Remove.
13320         (vrshrnbq_m): Remove.
13321         (vrshrntq_m): Remove.
13322         (vrshrnbq_n_s16): Remove.
13323         (vrshrntq_n_s16): Remove.
13324         (vrshrnbq_n_u16): Remove.
13325         (vrshrntq_n_u16): Remove.
13326         (vrshrnbq_n_s32): Remove.
13327         (vrshrntq_n_s32): Remove.
13328         (vrshrnbq_n_u32): Remove.
13329         (vrshrntq_n_u32): Remove.
13330         (vrshrnbq_m_n_s32): Remove.
13331         (vrshrnbq_m_n_s16): Remove.
13332         (vrshrnbq_m_n_u32): Remove.
13333         (vrshrnbq_m_n_u16): Remove.
13334         (vrshrntq_m_n_s32): Remove.
13335         (vrshrntq_m_n_s16): Remove.
13336         (vrshrntq_m_n_u32): Remove.
13337         (vrshrntq_m_n_u16): Remove.
13338         (__arm_vrshrnbq_n_s16): Remove.
13339         (__arm_vrshrntq_n_s16): Remove.
13340         (__arm_vrshrnbq_n_u16): Remove.
13341         (__arm_vrshrntq_n_u16): Remove.
13342         (__arm_vrshrnbq_n_s32): Remove.
13343         (__arm_vrshrntq_n_s32): Remove.
13344         (__arm_vrshrnbq_n_u32): Remove.
13345         (__arm_vrshrntq_n_u32): Remove.
13346         (__arm_vrshrnbq_m_n_s32): Remove.
13347         (__arm_vrshrnbq_m_n_s16): Remove.
13348         (__arm_vrshrnbq_m_n_u32): Remove.
13349         (__arm_vrshrnbq_m_n_u16): Remove.
13350         (__arm_vrshrntq_m_n_s32): Remove.
13351         (__arm_vrshrntq_m_n_s16): Remove.
13352         (__arm_vrshrntq_m_n_u32): Remove.
13353         (__arm_vrshrntq_m_n_u16): Remove.
13354         (__arm_vrshrnbq): Remove.
13355         (__arm_vrshrntq): Remove.
13356         (__arm_vrshrnbq_m): Remove.
13357         (__arm_vrshrntq_m): Remove.
13358         (vqshrnbq): Remove.
13359         (vqshrntq): Remove.
13360         (vqshrnbq_m): Remove.
13361         (vqshrntq_m): Remove.
13362         (vqshrnbq_n_s16): Remove.
13363         (vqshrntq_n_s16): Remove.
13364         (vqshrnbq_n_u16): Remove.
13365         (vqshrntq_n_u16): Remove.
13366         (vqshrnbq_n_s32): Remove.
13367         (vqshrntq_n_s32): Remove.
13368         (vqshrnbq_n_u32): Remove.
13369         (vqshrntq_n_u32): Remove.
13370         (vqshrnbq_m_n_s32): Remove.
13371         (vqshrnbq_m_n_s16): Remove.
13372         (vqshrnbq_m_n_u32): Remove.
13373         (vqshrnbq_m_n_u16): Remove.
13374         (vqshrntq_m_n_s32): Remove.
13375         (vqshrntq_m_n_s16): Remove.
13376         (vqshrntq_m_n_u32): Remove.
13377         (vqshrntq_m_n_u16): Remove.
13378         (__arm_vqshrnbq_n_s16): Remove.
13379         (__arm_vqshrntq_n_s16): Remove.
13380         (__arm_vqshrnbq_n_u16): Remove.
13381         (__arm_vqshrntq_n_u16): Remove.
13382         (__arm_vqshrnbq_n_s32): Remove.
13383         (__arm_vqshrntq_n_s32): Remove.
13384         (__arm_vqshrnbq_n_u32): Remove.
13385         (__arm_vqshrntq_n_u32): Remove.
13386         (__arm_vqshrnbq_m_n_s32): Remove.
13387         (__arm_vqshrnbq_m_n_s16): Remove.
13388         (__arm_vqshrnbq_m_n_u32): Remove.
13389         (__arm_vqshrnbq_m_n_u16): Remove.
13390         (__arm_vqshrntq_m_n_s32): Remove.
13391         (__arm_vqshrntq_m_n_s16): Remove.
13392         (__arm_vqshrntq_m_n_u32): Remove.
13393         (__arm_vqshrntq_m_n_u16): Remove.
13394         (__arm_vqshrnbq): Remove.
13395         (__arm_vqshrntq): Remove.
13396         (__arm_vqshrnbq_m): Remove.
13397         (__arm_vqshrntq_m): Remove.
13398         (vqrshrnbq): Remove.
13399         (vqrshrntq): Remove.
13400         (vqrshrnbq_m): Remove.
13401         (vqrshrntq_m): Remove.
13402         (vqrshrnbq_n_s16): Remove.
13403         (vqrshrnbq_n_u16): Remove.
13404         (vqrshrnbq_n_s32): Remove.
13405         (vqrshrnbq_n_u32): Remove.
13406         (vqrshrntq_n_s16): Remove.
13407         (vqrshrntq_n_u16): Remove.
13408         (vqrshrntq_n_s32): Remove.
13409         (vqrshrntq_n_u32): Remove.
13410         (vqrshrnbq_m_n_s32): Remove.
13411         (vqrshrnbq_m_n_s16): Remove.
13412         (vqrshrnbq_m_n_u32): Remove.
13413         (vqrshrnbq_m_n_u16): Remove.
13414         (vqrshrntq_m_n_s32): Remove.
13415         (vqrshrntq_m_n_s16): Remove.
13416         (vqrshrntq_m_n_u32): Remove.
13417         (vqrshrntq_m_n_u16): Remove.
13418         (__arm_vqrshrnbq_n_s16): Remove.
13419         (__arm_vqrshrnbq_n_u16): Remove.
13420         (__arm_vqrshrnbq_n_s32): Remove.
13421         (__arm_vqrshrnbq_n_u32): Remove.
13422         (__arm_vqrshrntq_n_s16): Remove.
13423         (__arm_vqrshrntq_n_u16): Remove.
13424         (__arm_vqrshrntq_n_s32): Remove.
13425         (__arm_vqrshrntq_n_u32): Remove.
13426         (__arm_vqrshrnbq_m_n_s32): Remove.
13427         (__arm_vqrshrnbq_m_n_s16): Remove.
13428         (__arm_vqrshrnbq_m_n_u32): Remove.
13429         (__arm_vqrshrnbq_m_n_u16): Remove.
13430         (__arm_vqrshrntq_m_n_s32): Remove.
13431         (__arm_vqrshrntq_m_n_s16): Remove.
13432         (__arm_vqrshrntq_m_n_u32): Remove.
13433         (__arm_vqrshrntq_m_n_u16): Remove.
13434         (__arm_vqrshrnbq): Remove.
13435         (__arm_vqrshrntq): Remove.
13436         (__arm_vqrshrnbq_m): Remove.
13437         (__arm_vqrshrntq_m): Remove.
13439 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13441         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
13442         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
13443         vrshrnt, vshrnb, vshrnt.
13444         (isu): New.
13445         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
13446         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
13447         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
13448         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
13449         (mve_vshrntq_n_<supf><mode>): Merge into ...
13450         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13451         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
13452         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
13453         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
13454         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
13455         Merge into ...
13456         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13458 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13460         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
13461         New.
13462         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
13464 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13466         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
13467         (vmaxq, vminq): New.
13468         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
13469         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
13470         * config/arm/arm_mve.h (vminq): Remove.
13471         (vmaxq): Remove.
13472         (vmaxq_m): Remove.
13473         (vminq_m): Remove.
13474         (vminq_x): Remove.
13475         (vmaxq_x): Remove.
13476         (vminq_u8): Remove.
13477         (vmaxq_u8): Remove.
13478         (vminq_s8): Remove.
13479         (vmaxq_s8): Remove.
13480         (vminq_u16): Remove.
13481         (vmaxq_u16): Remove.
13482         (vminq_s16): Remove.
13483         (vmaxq_s16): Remove.
13484         (vminq_u32): Remove.
13485         (vmaxq_u32): Remove.
13486         (vminq_s32): Remove.
13487         (vmaxq_s32): Remove.
13488         (vmaxq_m_s8): Remove.
13489         (vmaxq_m_s32): Remove.
13490         (vmaxq_m_s16): Remove.
13491         (vmaxq_m_u8): Remove.
13492         (vmaxq_m_u32): Remove.
13493         (vmaxq_m_u16): Remove.
13494         (vminq_m_s8): Remove.
13495         (vminq_m_s32): Remove.
13496         (vminq_m_s16): Remove.
13497         (vminq_m_u8): Remove.
13498         (vminq_m_u32): Remove.
13499         (vminq_m_u16): Remove.
13500         (vminq_x_s8): Remove.
13501         (vminq_x_s16): Remove.
13502         (vminq_x_s32): Remove.
13503         (vminq_x_u8): Remove.
13504         (vminq_x_u16): Remove.
13505         (vminq_x_u32): Remove.
13506         (vmaxq_x_s8): Remove.
13507         (vmaxq_x_s16): Remove.
13508         (vmaxq_x_s32): Remove.
13509         (vmaxq_x_u8): Remove.
13510         (vmaxq_x_u16): Remove.
13511         (vmaxq_x_u32): Remove.
13512         (__arm_vminq_u8): Remove.
13513         (__arm_vmaxq_u8): Remove.
13514         (__arm_vminq_s8): Remove.
13515         (__arm_vmaxq_s8): Remove.
13516         (__arm_vminq_u16): Remove.
13517         (__arm_vmaxq_u16): Remove.
13518         (__arm_vminq_s16): Remove.
13519         (__arm_vmaxq_s16): Remove.
13520         (__arm_vminq_u32): Remove.
13521         (__arm_vmaxq_u32): Remove.
13522         (__arm_vminq_s32): Remove.
13523         (__arm_vmaxq_s32): Remove.
13524         (__arm_vmaxq_m_s8): Remove.
13525         (__arm_vmaxq_m_s32): Remove.
13526         (__arm_vmaxq_m_s16): Remove.
13527         (__arm_vmaxq_m_u8): Remove.
13528         (__arm_vmaxq_m_u32): Remove.
13529         (__arm_vmaxq_m_u16): Remove.
13530         (__arm_vminq_m_s8): Remove.
13531         (__arm_vminq_m_s32): Remove.
13532         (__arm_vminq_m_s16): Remove.
13533         (__arm_vminq_m_u8): Remove.
13534         (__arm_vminq_m_u32): Remove.
13535         (__arm_vminq_m_u16): Remove.
13536         (__arm_vminq_x_s8): Remove.
13537         (__arm_vminq_x_s16): Remove.
13538         (__arm_vminq_x_s32): Remove.
13539         (__arm_vminq_x_u8): Remove.
13540         (__arm_vminq_x_u16): Remove.
13541         (__arm_vminq_x_u32): Remove.
13542         (__arm_vmaxq_x_s8): Remove.
13543         (__arm_vmaxq_x_s16): Remove.
13544         (__arm_vmaxq_x_s32): Remove.
13545         (__arm_vmaxq_x_u8): Remove.
13546         (__arm_vmaxq_x_u16): Remove.
13547         (__arm_vmaxq_x_u32): Remove.
13548         (__arm_vminq): Remove.
13549         (__arm_vmaxq): Remove.
13550         (__arm_vmaxq_m): Remove.
13551         (__arm_vminq_m): Remove.
13552         (__arm_vminq_x): Remove.
13553         (__arm_vmaxq_x): Remove.
13555 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13557         * config/arm/iterators.md (MAX_MIN_SU): New.
13558         (max_min_su_str): New.
13559         (max_min_supf): New.
13560         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
13561         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
13562         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
13564 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13566         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
13567         (vqshlq, vshlq): New.
13568         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
13569         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
13570         * config/arm/arm_mve.h (vshlq): Remove.
13571         (vshlq_r): Remove.
13572         (vshlq_n): Remove.
13573         (vshlq_m_r): Remove.
13574         (vshlq_m): Remove.
13575         (vshlq_m_n): Remove.
13576         (vshlq_x): Remove.
13577         (vshlq_x_n): Remove.
13578         (vshlq_s8): Remove.
13579         (vshlq_s16): Remove.
13580         (vshlq_s32): Remove.
13581         (vshlq_u8): Remove.
13582         (vshlq_u16): Remove.
13583         (vshlq_u32): Remove.
13584         (vshlq_r_u8): Remove.
13585         (vshlq_n_u8): Remove.
13586         (vshlq_r_s8): Remove.
13587         (vshlq_n_s8): Remove.
13588         (vshlq_r_u16): Remove.
13589         (vshlq_n_u16): Remove.
13590         (vshlq_r_s16): Remove.
13591         (vshlq_n_s16): Remove.
13592         (vshlq_r_u32): Remove.
13593         (vshlq_n_u32): Remove.
13594         (vshlq_r_s32): Remove.
13595         (vshlq_n_s32): Remove.
13596         (vshlq_m_r_u8): Remove.
13597         (vshlq_m_r_s8): Remove.
13598         (vshlq_m_r_u16): Remove.
13599         (vshlq_m_r_s16): Remove.
13600         (vshlq_m_r_u32): Remove.
13601         (vshlq_m_r_s32): Remove.
13602         (vshlq_m_u8): Remove.
13603         (vshlq_m_s8): Remove.
13604         (vshlq_m_u16): Remove.
13605         (vshlq_m_s16): Remove.
13606         (vshlq_m_u32): Remove.
13607         (vshlq_m_s32): Remove.
13608         (vshlq_m_n_s8): Remove.
13609         (vshlq_m_n_s32): Remove.
13610         (vshlq_m_n_s16): Remove.
13611         (vshlq_m_n_u8): Remove.
13612         (vshlq_m_n_u32): Remove.
13613         (vshlq_m_n_u16): Remove.
13614         (vshlq_x_s8): Remove.
13615         (vshlq_x_s16): Remove.
13616         (vshlq_x_s32): Remove.
13617         (vshlq_x_u8): Remove.
13618         (vshlq_x_u16): Remove.
13619         (vshlq_x_u32): Remove.
13620         (vshlq_x_n_s8): Remove.
13621         (vshlq_x_n_s16): Remove.
13622         (vshlq_x_n_s32): Remove.
13623         (vshlq_x_n_u8): Remove.
13624         (vshlq_x_n_u16): Remove.
13625         (vshlq_x_n_u32): Remove.
13626         (__arm_vshlq_s8): Remove.
13627         (__arm_vshlq_s16): Remove.
13628         (__arm_vshlq_s32): Remove.
13629         (__arm_vshlq_u8): Remove.
13630         (__arm_vshlq_u16): Remove.
13631         (__arm_vshlq_u32): Remove.
13632         (__arm_vshlq_r_u8): Remove.
13633         (__arm_vshlq_n_u8): Remove.
13634         (__arm_vshlq_r_s8): Remove.
13635         (__arm_vshlq_n_s8): Remove.
13636         (__arm_vshlq_r_u16): Remove.
13637         (__arm_vshlq_n_u16): Remove.
13638         (__arm_vshlq_r_s16): Remove.
13639         (__arm_vshlq_n_s16): Remove.
13640         (__arm_vshlq_r_u32): Remove.
13641         (__arm_vshlq_n_u32): Remove.
13642         (__arm_vshlq_r_s32): Remove.
13643         (__arm_vshlq_n_s32): Remove.
13644         (__arm_vshlq_m_r_u8): Remove.
13645         (__arm_vshlq_m_r_s8): Remove.
13646         (__arm_vshlq_m_r_u16): Remove.
13647         (__arm_vshlq_m_r_s16): Remove.
13648         (__arm_vshlq_m_r_u32): Remove.
13649         (__arm_vshlq_m_r_s32): Remove.
13650         (__arm_vshlq_m_u8): Remove.
13651         (__arm_vshlq_m_s8): Remove.
13652         (__arm_vshlq_m_u16): Remove.
13653         (__arm_vshlq_m_s16): Remove.
13654         (__arm_vshlq_m_u32): Remove.
13655         (__arm_vshlq_m_s32): Remove.
13656         (__arm_vshlq_m_n_s8): Remove.
13657         (__arm_vshlq_m_n_s32): Remove.
13658         (__arm_vshlq_m_n_s16): Remove.
13659         (__arm_vshlq_m_n_u8): Remove.
13660         (__arm_vshlq_m_n_u32): Remove.
13661         (__arm_vshlq_m_n_u16): Remove.
13662         (__arm_vshlq_x_s8): Remove.
13663         (__arm_vshlq_x_s16): Remove.
13664         (__arm_vshlq_x_s32): Remove.
13665         (__arm_vshlq_x_u8): Remove.
13666         (__arm_vshlq_x_u16): Remove.
13667         (__arm_vshlq_x_u32): Remove.
13668         (__arm_vshlq_x_n_s8): Remove.
13669         (__arm_vshlq_x_n_s16): Remove.
13670         (__arm_vshlq_x_n_s32): Remove.
13671         (__arm_vshlq_x_n_u8): Remove.
13672         (__arm_vshlq_x_n_u16): Remove.
13673         (__arm_vshlq_x_n_u32): Remove.
13674         (__arm_vshlq): Remove.
13675         (__arm_vshlq_r): Remove.
13676         (__arm_vshlq_n): Remove.
13677         (__arm_vshlq_m_r): Remove.
13678         (__arm_vshlq_m): Remove.
13679         (__arm_vshlq_m_n): Remove.
13680         (__arm_vshlq_x): Remove.
13681         (__arm_vshlq_x_n): Remove.
13682         (vqshlq): Remove.
13683         (vqshlq_r): Remove.
13684         (vqshlq_n): Remove.
13685         (vqshlq_m_r): Remove.
13686         (vqshlq_m_n): Remove.
13687         (vqshlq_m): Remove.
13688         (vqshlq_u8): Remove.
13689         (vqshlq_r_u8): Remove.
13690         (vqshlq_n_u8): Remove.
13691         (vqshlq_s8): Remove.
13692         (vqshlq_r_s8): Remove.
13693         (vqshlq_n_s8): Remove.
13694         (vqshlq_u16): Remove.
13695         (vqshlq_r_u16): Remove.
13696         (vqshlq_n_u16): Remove.
13697         (vqshlq_s16): Remove.
13698         (vqshlq_r_s16): Remove.
13699         (vqshlq_n_s16): Remove.
13700         (vqshlq_u32): Remove.
13701         (vqshlq_r_u32): Remove.
13702         (vqshlq_n_u32): Remove.
13703         (vqshlq_s32): Remove.
13704         (vqshlq_r_s32): Remove.
13705         (vqshlq_n_s32): Remove.
13706         (vqshlq_m_r_u8): Remove.
13707         (vqshlq_m_r_s8): Remove.
13708         (vqshlq_m_r_u16): Remove.
13709         (vqshlq_m_r_s16): Remove.
13710         (vqshlq_m_r_u32): Remove.
13711         (vqshlq_m_r_s32): Remove.
13712         (vqshlq_m_n_s8): Remove.
13713         (vqshlq_m_n_s32): Remove.
13714         (vqshlq_m_n_s16): Remove.
13715         (vqshlq_m_n_u8): Remove.
13716         (vqshlq_m_n_u32): Remove.
13717         (vqshlq_m_n_u16): Remove.
13718         (vqshlq_m_s8): Remove.
13719         (vqshlq_m_s32): Remove.
13720         (vqshlq_m_s16): Remove.
13721         (vqshlq_m_u8): Remove.
13722         (vqshlq_m_u32): Remove.
13723         (vqshlq_m_u16): Remove.
13724         (__arm_vqshlq_u8): Remove.
13725         (__arm_vqshlq_r_u8): Remove.
13726         (__arm_vqshlq_n_u8): Remove.
13727         (__arm_vqshlq_s8): Remove.
13728         (__arm_vqshlq_r_s8): Remove.
13729         (__arm_vqshlq_n_s8): Remove.
13730         (__arm_vqshlq_u16): Remove.
13731         (__arm_vqshlq_r_u16): Remove.
13732         (__arm_vqshlq_n_u16): Remove.
13733         (__arm_vqshlq_s16): Remove.
13734         (__arm_vqshlq_r_s16): Remove.
13735         (__arm_vqshlq_n_s16): Remove.
13736         (__arm_vqshlq_u32): Remove.
13737         (__arm_vqshlq_r_u32): Remove.
13738         (__arm_vqshlq_n_u32): Remove.
13739         (__arm_vqshlq_s32): Remove.
13740         (__arm_vqshlq_r_s32): Remove.
13741         (__arm_vqshlq_n_s32): Remove.
13742         (__arm_vqshlq_m_r_u8): Remove.
13743         (__arm_vqshlq_m_r_s8): Remove.
13744         (__arm_vqshlq_m_r_u16): Remove.
13745         (__arm_vqshlq_m_r_s16): Remove.
13746         (__arm_vqshlq_m_r_u32): Remove.
13747         (__arm_vqshlq_m_r_s32): Remove.
13748         (__arm_vqshlq_m_n_s8): Remove.
13749         (__arm_vqshlq_m_n_s32): Remove.
13750         (__arm_vqshlq_m_n_s16): Remove.
13751         (__arm_vqshlq_m_n_u8): Remove.
13752         (__arm_vqshlq_m_n_u32): Remove.
13753         (__arm_vqshlq_m_n_u16): Remove.
13754         (__arm_vqshlq_m_s8): Remove.
13755         (__arm_vqshlq_m_s32): Remove.
13756         (__arm_vqshlq_m_s16): Remove.
13757         (__arm_vqshlq_m_u8): Remove.
13758         (__arm_vqshlq_m_u32): Remove.
13759         (__arm_vqshlq_m_u16): Remove.
13760         (__arm_vqshlq): Remove.
13761         (__arm_vqshlq_r): Remove.
13762         (__arm_vqshlq_n): Remove.
13763         (__arm_vqshlq_m_r): Remove.
13764         (__arm_vqshlq_m_n): Remove.
13765         (__arm_vqshlq_m): Remove.
13767 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13769         * config/arm/arm-mve-builtins-functions.h (class
13770         unspec_mve_function_exact_insn_vshl): New.
13772 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13774         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
13775         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
13777 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13779         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
13780         (finish_opt_n_resolution): Handle MODE_r.
13781         * config/arm/arm-mve-builtins.def (r): New mode.
13783 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13785         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
13786         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
13788 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13790         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
13791         (vabdq): New.
13792         * config/arm/arm-mve-builtins-base.def (vabdq): New.
13793         * config/arm/arm-mve-builtins-base.h (vabdq): New.
13794         * config/arm/arm_mve.h (vabdq): Remove.
13795         (vabdq_m): Remove.
13796         (vabdq_x): Remove.
13797         (vabdq_u8): Remove.
13798         (vabdq_s8): Remove.
13799         (vabdq_u16): Remove.
13800         (vabdq_s16): Remove.
13801         (vabdq_u32): Remove.
13802         (vabdq_s32): Remove.
13803         (vabdq_f16): Remove.
13804         (vabdq_f32): Remove.
13805         (vabdq_m_s8): Remove.
13806         (vabdq_m_s32): Remove.
13807         (vabdq_m_s16): Remove.
13808         (vabdq_m_u8): Remove.
13809         (vabdq_m_u32): Remove.
13810         (vabdq_m_u16): Remove.
13811         (vabdq_m_f32): Remove.
13812         (vabdq_m_f16): Remove.
13813         (vabdq_x_s8): Remove.
13814         (vabdq_x_s16): Remove.
13815         (vabdq_x_s32): Remove.
13816         (vabdq_x_u8): Remove.
13817         (vabdq_x_u16): Remove.
13818         (vabdq_x_u32): Remove.
13819         (vabdq_x_f16): Remove.
13820         (vabdq_x_f32): Remove.
13821         (__arm_vabdq_u8): Remove.
13822         (__arm_vabdq_s8): Remove.
13823         (__arm_vabdq_u16): Remove.
13824         (__arm_vabdq_s16): Remove.
13825         (__arm_vabdq_u32): Remove.
13826         (__arm_vabdq_s32): Remove.
13827         (__arm_vabdq_m_s8): Remove.
13828         (__arm_vabdq_m_s32): Remove.
13829         (__arm_vabdq_m_s16): Remove.
13830         (__arm_vabdq_m_u8): Remove.
13831         (__arm_vabdq_m_u32): Remove.
13832         (__arm_vabdq_m_u16): Remove.
13833         (__arm_vabdq_x_s8): Remove.
13834         (__arm_vabdq_x_s16): Remove.
13835         (__arm_vabdq_x_s32): Remove.
13836         (__arm_vabdq_x_u8): Remove.
13837         (__arm_vabdq_x_u16): Remove.
13838         (__arm_vabdq_x_u32): Remove.
13839         (__arm_vabdq_f16): Remove.
13840         (__arm_vabdq_f32): Remove.
13841         (__arm_vabdq_m_f32): Remove.
13842         (__arm_vabdq_m_f16): Remove.
13843         (__arm_vabdq_x_f16): Remove.
13844         (__arm_vabdq_x_f32): Remove.
13845         (__arm_vabdq): Remove.
13846         (__arm_vabdq_m): Remove.
13847         (__arm_vabdq_x): Remove.
13849 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13851         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
13852         (MVE_FP_VABDQ_ONLY): New.
13853         (mve_insn): Add vabd.
13854         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
13855         (@mve_<mve_insn>q_f<mode>): ... this.
13856         (mve_vabdq_m_f<mode>): Remove.
13858 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13860         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
13861         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
13862         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
13863         * config/arm/arm_mve.h (vqrdmulhq): Remove.
13864         (vqrdmulhq_m): Remove.
13865         (vqrdmulhq_s8): Remove.
13866         (vqrdmulhq_n_s8): Remove.
13867         (vqrdmulhq_s16): Remove.
13868         (vqrdmulhq_n_s16): Remove.
13869         (vqrdmulhq_s32): Remove.
13870         (vqrdmulhq_n_s32): Remove.
13871         (vqrdmulhq_m_n_s8): Remove.
13872         (vqrdmulhq_m_n_s32): Remove.
13873         (vqrdmulhq_m_n_s16): Remove.
13874         (vqrdmulhq_m_s8): Remove.
13875         (vqrdmulhq_m_s32): Remove.
13876         (vqrdmulhq_m_s16): Remove.
13877         (__arm_vqrdmulhq_s8): Remove.
13878         (__arm_vqrdmulhq_n_s8): Remove.
13879         (__arm_vqrdmulhq_s16): Remove.
13880         (__arm_vqrdmulhq_n_s16): Remove.
13881         (__arm_vqrdmulhq_s32): Remove.
13882         (__arm_vqrdmulhq_n_s32): Remove.
13883         (__arm_vqrdmulhq_m_n_s8): Remove.
13884         (__arm_vqrdmulhq_m_n_s32): Remove.
13885         (__arm_vqrdmulhq_m_n_s16): Remove.
13886         (__arm_vqrdmulhq_m_s8): Remove.
13887         (__arm_vqrdmulhq_m_s32): Remove.
13888         (__arm_vqrdmulhq_m_s16): Remove.
13889         (__arm_vqrdmulhq): Remove.
13890         (__arm_vqrdmulhq_m): Remove.
13892 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13894         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
13895         (MVE_SHIFT_N, MVE_SHIFT_R): New.
13896         (mve_insn): Add vqshl, vshl.
13897         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
13898         (mve_vshlq_n_<supf><mode>): Merge into ...
13899         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13900         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
13901         ...
13902         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
13903         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
13904         into ...
13905         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
13906         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
13907         into ...
13908         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13909         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
13910         into ...
13911         (@mve_<mve_insn>q_<supf><mode>): ... this.
13913 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13915         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
13916         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
13917         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
13918         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
13919         vqrshlq, vrshlq.
13920         * config/arm/arm_mve.h (vrshlq): Remove.
13921         (vrshlq_m_n): Remove.
13922         (vrshlq_m): Remove.
13923         (vrshlq_x): Remove.
13924         (vrshlq_u8): Remove.
13925         (vrshlq_n_u8): Remove.
13926         (vrshlq_s8): Remove.
13927         (vrshlq_n_s8): Remove.
13928         (vrshlq_u16): Remove.
13929         (vrshlq_n_u16): Remove.
13930         (vrshlq_s16): Remove.
13931         (vrshlq_n_s16): Remove.
13932         (vrshlq_u32): Remove.
13933         (vrshlq_n_u32): Remove.
13934         (vrshlq_s32): Remove.
13935         (vrshlq_n_s32): Remove.
13936         (vrshlq_m_n_u8): Remove.
13937         (vrshlq_m_n_s8): Remove.
13938         (vrshlq_m_n_u16): Remove.
13939         (vrshlq_m_n_s16): Remove.
13940         (vrshlq_m_n_u32): Remove.
13941         (vrshlq_m_n_s32): Remove.
13942         (vrshlq_m_s8): Remove.
13943         (vrshlq_m_s32): Remove.
13944         (vrshlq_m_s16): Remove.
13945         (vrshlq_m_u8): Remove.
13946         (vrshlq_m_u32): Remove.
13947         (vrshlq_m_u16): Remove.
13948         (vrshlq_x_s8): Remove.
13949         (vrshlq_x_s16): Remove.
13950         (vrshlq_x_s32): Remove.
13951         (vrshlq_x_u8): Remove.
13952         (vrshlq_x_u16): Remove.
13953         (vrshlq_x_u32): Remove.
13954         (__arm_vrshlq_u8): Remove.
13955         (__arm_vrshlq_n_u8): Remove.
13956         (__arm_vrshlq_s8): Remove.
13957         (__arm_vrshlq_n_s8): Remove.
13958         (__arm_vrshlq_u16): Remove.
13959         (__arm_vrshlq_n_u16): Remove.
13960         (__arm_vrshlq_s16): Remove.
13961         (__arm_vrshlq_n_s16): Remove.
13962         (__arm_vrshlq_u32): Remove.
13963         (__arm_vrshlq_n_u32): Remove.
13964         (__arm_vrshlq_s32): Remove.
13965         (__arm_vrshlq_n_s32): Remove.
13966         (__arm_vrshlq_m_n_u8): Remove.
13967         (__arm_vrshlq_m_n_s8): Remove.
13968         (__arm_vrshlq_m_n_u16): Remove.
13969         (__arm_vrshlq_m_n_s16): Remove.
13970         (__arm_vrshlq_m_n_u32): Remove.
13971         (__arm_vrshlq_m_n_s32): Remove.
13972         (__arm_vrshlq_m_s8): Remove.
13973         (__arm_vrshlq_m_s32): Remove.
13974         (__arm_vrshlq_m_s16): Remove.
13975         (__arm_vrshlq_m_u8): Remove.
13976         (__arm_vrshlq_m_u32): Remove.
13977         (__arm_vrshlq_m_u16): Remove.
13978         (__arm_vrshlq_x_s8): Remove.
13979         (__arm_vrshlq_x_s16): Remove.
13980         (__arm_vrshlq_x_s32): Remove.
13981         (__arm_vrshlq_x_u8): Remove.
13982         (__arm_vrshlq_x_u16): Remove.
13983         (__arm_vrshlq_x_u32): Remove.
13984         (__arm_vrshlq): Remove.
13985         (__arm_vrshlq_m_n): Remove.
13986         (__arm_vrshlq_m): Remove.
13987         (__arm_vrshlq_x): Remove.
13988         (vqrshlq): Remove.
13989         (vqrshlq_m_n): Remove.
13990         (vqrshlq_m): Remove.
13991         (vqrshlq_u8): Remove.
13992         (vqrshlq_n_u8): Remove.
13993         (vqrshlq_s8): Remove.
13994         (vqrshlq_n_s8): Remove.
13995         (vqrshlq_u16): Remove.
13996         (vqrshlq_n_u16): Remove.
13997         (vqrshlq_s16): Remove.
13998         (vqrshlq_n_s16): Remove.
13999         (vqrshlq_u32): Remove.
14000         (vqrshlq_n_u32): Remove.
14001         (vqrshlq_s32): Remove.
14002         (vqrshlq_n_s32): Remove.
14003         (vqrshlq_m_n_u8): Remove.
14004         (vqrshlq_m_n_s8): Remove.
14005         (vqrshlq_m_n_u16): Remove.
14006         (vqrshlq_m_n_s16): Remove.
14007         (vqrshlq_m_n_u32): Remove.
14008         (vqrshlq_m_n_s32): Remove.
14009         (vqrshlq_m_s8): Remove.
14010         (vqrshlq_m_s32): Remove.
14011         (vqrshlq_m_s16): Remove.
14012         (vqrshlq_m_u8): Remove.
14013         (vqrshlq_m_u32): Remove.
14014         (vqrshlq_m_u16): Remove.
14015         (__arm_vqrshlq_u8): Remove.
14016         (__arm_vqrshlq_n_u8): Remove.
14017         (__arm_vqrshlq_s8): Remove.
14018         (__arm_vqrshlq_n_s8): Remove.
14019         (__arm_vqrshlq_u16): Remove.
14020         (__arm_vqrshlq_n_u16): Remove.
14021         (__arm_vqrshlq_s16): Remove.
14022         (__arm_vqrshlq_n_s16): Remove.
14023         (__arm_vqrshlq_u32): Remove.
14024         (__arm_vqrshlq_n_u32): Remove.
14025         (__arm_vqrshlq_s32): Remove.
14026         (__arm_vqrshlq_n_s32): Remove.
14027         (__arm_vqrshlq_m_n_u8): Remove.
14028         (__arm_vqrshlq_m_n_s8): Remove.
14029         (__arm_vqrshlq_m_n_u16): Remove.
14030         (__arm_vqrshlq_m_n_s16): Remove.
14031         (__arm_vqrshlq_m_n_u32): Remove.
14032         (__arm_vqrshlq_m_n_s32): Remove.
14033         (__arm_vqrshlq_m_s8): Remove.
14034         (__arm_vqrshlq_m_s32): Remove.
14035         (__arm_vqrshlq_m_s16): Remove.
14036         (__arm_vqrshlq_m_u8): Remove.
14037         (__arm_vqrshlq_m_u32): Remove.
14038         (__arm_vqrshlq_m_u16): Remove.
14039         (__arm_vqrshlq): Remove.
14040         (__arm_vqrshlq_m_n): Remove.
14041         (__arm_vqrshlq_m): Remove.
14043 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14045         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
14046         (mve_insn): Add vqrshl, vrshl.
14047         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
14048         (mve_vrshlq_n_<supf><mode>): Merge into ...
14049         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14050         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
14051         into ...
14052         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14054 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14056         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
14057         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
14059 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14061         PR target/109615
14062         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
14063         denegrate PHI optmization.
14065 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
14067         * config/i386/predicates.md (register_no_SP_operand):
14068         Rename from index_register_operand.
14069         (call_register_operand): Update for rename.
14070         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
14072 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14074         PR bootstrap/84402
14075         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
14076         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
14077         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
14078         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
14079         (s-match): Split into s-generic-match and s-gimple-match.
14080         * configure.ac (with-matchpd-partitions,
14081         DEFAULT_MATCHPD_PARTITIONS): New.
14082         * configure: Regenerate.
14084 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14086         PR bootstrap/84402
14087         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
14088         (decision_tree::gen): Accept list of files instead of single and update
14089         to write function definition to header and main file.
14090         (write_predicate): Likewise.
14091         (write_header): Emit pragmas and new includes.
14092         (main): Create file buffers and cleanup.
14093         (showUsage, write_header_includes): New.
14095 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14097         PR bootstrap/84402
14098         * Makefile.in (OBJS): Add gimple-match-exports.o.
14099         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
14100         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
14101         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
14102         gimple_resimplify5, constant_for_folding, convert_conditional_op,
14103         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
14104         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
14105         do_valueize, try_conditional_simplification, gimple_extract,
14106         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
14107         commutative_ternary_op_p, first_commutative_argument,
14108         associative_binary_op_p, directly_supported_p,
14109         get_conditional_internal_fn): Moved to gimple-match-exports.cc
14110         * gimple-match-exports.cc: New file.
14112 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14114         PR bootstrap/84402
14115         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14116         debug_dump var.
14117         (dt_simplify::gen_1): Use it.
14119 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14121         PR bootstrap/84402
14122         * genmatch.cc (output_line_directive): Only emit commented directive
14123         when -vv.
14125 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14127         PR bootstrap/84402
14128         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
14130 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
14132         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
14133         unused in_mode/in_n variables.
14135 2023-05-05  Richard Biener  <rguenther@suse.de>
14137         PR tree-optimization/109735
14138         * tree-vect-stmts.cc (vectorizable_operation): Perform
14139         conversion for POINTER_DIFF_EXPR unconditionally.
14141 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
14143         * config/i386/mmx.md (mulv2si3): New expander.
14144         (*mulv2si3): New insn pattern.
14146 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
14147             Thomas Schwinge  <thomas@codesourcery.com>
14149         PR libgomp/108098
14150         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
14151         alongside reverse-offload function table to prevent NULL values
14152         of the function addresses.
14154 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
14156         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
14157         mpft_t -> mpfr_t.
14158         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
14160 2023-05-05  Andrew Pinski  <apinski@marvell.com>
14162         PR tree-optimization/109732
14163         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
14164         of the argtrue/argfalse.
14166 2023-05-05  Andrew Pinski  <apinski@marvell.com>
14168         PR tree-optimization/109722
14169         * match.pd: Extend the `ABS<a> == 0` pattern
14170         to cover `ABSU<a> == 0` too.
14172 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
14174         PR target/109733
14175         * config/i386/predicates.md (index_reg_operand): New predicate.
14176         * config/i386/i386.md (ashift to lea spliter): Use
14177         general_reg_operand and index_reg_operand predicates.
14179 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14181         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
14182         Rename and reimplement with RTL codes to...
14183         (aarch64_<optab>hn2<mode>_insn_le): .. This.
14184         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
14185         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
14186         codes to...
14187         (aarch64_<optab>hn2<mode>_insn_be): ... This.
14188         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
14189         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
14190         (aarch64_<optab>hn2<mode>): ... This.
14191         (aarch64_r<optab>hn2<mode>): New expander.
14192         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
14193         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
14194         (ADDSUBHN): Delete.
14195         (sur): Remove handling of the above.
14196         (addsub): Likewise.
14198 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14200         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
14201         Delete.
14202         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14203         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
14204         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14205         (aarch64_<sur><addsub>hn<mode>): Delete.
14206         (aarch64_<optab>hn<mode>): New define_expand.
14207         (aarch64_r<optab>hn<mode>): Likewise.
14208         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
14209         New predicate.
14211 2023-05-04  Andrew Pinski  <apinski@marvell.com>
14213         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
14214         diamond form bb with forwarder only empty blocks better.
14216 2023-05-04  Andrew Pinski  <apinski@marvell.com>
14218         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
14219         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
14220         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
14221         of an inline version of it.
14222         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
14223         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
14225 2023-05-04  Andrew Pinski  <apinski@marvell.com>
14227         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
14228         the default argument value for dce_ssa_names to nullptr.
14229         Check to make sure dce_ssa_names is a non-nullptr before
14230         calling simple_dce_from_worklist.
14232 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
14234         * config/i386/predicates.md (index_register_operand): Reject
14235         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
14236         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
14237         (call_register_no_elim_operand): Rewrite as ...
14238         (call_register_operand): ... this.
14239         (call_insn_operand): Use call_register_operand predicate.
14241 2023-05-04  Richard Biener  <rguenther@suse.de>
14243         PR tree-optimization/109721
14244         * tree-vect-stmts.cc (vectorizable_operation): Make sure
14245         to test word_mode for all !target_support_p operations.
14247 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14249         PR target/99195
14250         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
14251         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
14252         (aarch64_mla<mode>): Rename to...
14253         (aarch64_mla<mode><vczle><vczbe>): ... This.
14254         (*aarch64_mla_elt<mode>): Rename to...
14255         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
14256         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
14257         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14258         (aarch64_mla_n<mode>): Rename to...
14259         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
14260         (aarch64_mls<mode>): Rename to...
14261         (aarch64_mls<mode><vczle><vczbe>): ... This.
14262         (*aarch64_mls_elt<mode>): Rename to...
14263         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
14264         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
14265         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14266         (aarch64_mls_n<mode>): Rename to...
14267         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
14268         (fma<mode>4): Rename to...
14269         (fma<mode>4<vczle><vczbe>): ... This.
14270         (*aarch64_fma4_elt<mode>): Rename to...
14271         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
14272         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
14273         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14274         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
14275         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14276         (fnma<mode>4): Rename to...
14277         (fnma<mode>4<vczle><vczbe>): ... This.
14278         (*aarch64_fnma4_elt<mode>): Rename to...
14279         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
14280         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
14281         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14282         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
14283         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14284         (aarch64_simd_bsl<mode>_internal): Rename to...
14285         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
14286         (*aarch64_simd_bsl<mode>_alt): Rename to...
14287         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
14289 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14291         PR target/99195
14292         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
14293         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
14294         (fabd<mode>3): Rename to...
14295         (fabd<mode>3<vczle><vczbe>): ... This.
14296         (aarch64_<optab>p<mode>): Rename to...
14297         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
14298         (aarch64_faddp<mode>): Rename to...
14299         (aarch64_faddp<mode><vczle><vczbe>): ... This.
14301 2023-05-04  Martin Liska  <mliska@suse.cz>
14303         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
14304         (print_version): Use it.
14305         (generate_results): Likewise.
14307 2023-05-04  Richard Biener  <rguenther@suse.de>
14309         * tree-cfg.h (last_stmt): Rename to ...
14310         (last_nondebug_stmt): ... this.
14311         * tree-cfg.cc (last_stmt): Rename to ...
14312         (last_nondebug_stmt): ... this.
14313         (assign_discriminators): Adjust.
14314         (group_case_labels_stmt): Likewise.
14315         (gimple_can_duplicate_bb_p): Likewise.
14316         (execute_fixup_cfg): Likewise.
14317         * auto-profile.cc (afdo_propagate_circuit): Likewise.
14318         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
14319         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
14320         (determine_parallel_type): Likewise.
14321         (adjust_context_and_scope): Likewise.
14322         (expand_task_call): Likewise.
14323         (remove_exit_barrier): Likewise.
14324         (expand_omp_taskreg): Likewise.
14325         (expand_omp_for_init_counts): Likewise.
14326         (expand_omp_for_init_vars): Likewise.
14327         (expand_omp_for_static_chunk): Likewise.
14328         (expand_omp_simd): Likewise.
14329         (expand_oacc_for): Likewise.
14330         (expand_omp_for): Likewise.
14331         (expand_omp_sections): Likewise.
14332         (expand_omp_atomic_fetch_op): Likewise.
14333         (expand_omp_atomic_cas): Likewise.
14334         (expand_omp_atomic): Likewise.
14335         (expand_omp_target): Likewise.
14336         (expand_omp): Likewise.
14337         (omp_make_gimple_edges): Likewise.
14338         * trans-mem.cc (tm_region_init): Likewise.
14339         * tree-inline.cc (redirect_all_calls): Likewise.
14340         * tree-parloops.cc (gen_parallel_loop): Likewise.
14341         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
14342         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
14343         Likewise.
14344         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
14345         (may_eliminate_iv): Likewise.
14346         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
14347         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
14348         Likewise.
14349         (estimate_numbers_of_iterations): Likewise.
14350         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
14351         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
14352         (set_predicates_for_bb): Likewise.
14353         (init_loop_unswitch_info): Likewise.
14354         (hoist_guard): Likewise.
14355         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
14356         (minmax_replacement): Likewise.
14357         * tree-ssa-reassoc.cc (update_range_test): Likewise.
14358         (optimize_range_tests_to_bit_test): Likewise.
14359         (optimize_range_tests_var_bound): Likewise.
14360         (optimize_range_tests): Likewise.
14361         (no_side_effect_bb): Likewise.
14362         (suitable_cond_bb): Likewise.
14363         (maybe_optimize_range_tests): Likewise.
14364         (reassociate_bb): Likewise.
14365         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
14367 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
14369         PR debug/109676
14370         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
14371         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
14372         for it only if it still has TImode.  Don't decide whether to call
14373         fix_debug_reg_uses based on whether SRC is ever set or not.
14375 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
14377         * config/cris/cris.cc (cris_split_constant): New function.
14378         * config/cris/cris.md (splitop): New iterator.
14379         (opsplit1): New define_peephole2.
14380         * config/cris/cris-protos.h (cris_split_constant): Declare.
14381         (cris_splittable_constant_p): New macro.
14383 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
14385         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
14386         to ALL_REGS.
14388 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
14390         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
14391         lra_in_progress, not reload_in_progress.
14392         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
14393         * config/cris/constraints.md ("Q"): Ditto.
14395 2023-05-03  Andrew Pinski  <apinski@marvell.com>
14397         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
14398         stats on removed number of statements and phis.
14400 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
14402         PR tree-optimization/109711
14403         * value-range.cc (irange::verify_range): Allow types of
14404         error_mark_node.
14406 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
14408         PR sanitizer/90746
14409         * calls.cc (can_implement_as_sibling_call_p): Reject calls
14410         to __sanitizer_cov_trace_pc.
14412 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
14414         PR target/109661
14415         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
14416         a new ABI break parameter for GCC 14.  Set it to the alignment
14417         of enums that have an underlying type.  Take the true alignment
14418         of such enums from the TYPE_ALIGN of the underlying type's
14419         TYPE_MAIN_VARIANT.
14420         (aarch64_function_arg_boundary): Update accordingly.
14421         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
14422         Warn about ABI differences.
14424 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
14426         PR target/109661
14427         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
14428         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
14429         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
14430         (aarch64_gimplify_va_arg_expr): Likewise.
14432 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14434         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
14435         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
14436         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
14437         (vrmulhq): New.
14438         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
14439         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
14440         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
14441         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
14442         * config/arm/arm_mve.h (vhsubq): Remove.
14443         (vhaddq): Remove.
14444         (vhaddq_m): Remove.
14445         (vhsubq_m): Remove.
14446         (vhaddq_x): Remove.
14447         (vhsubq_x): Remove.
14448         (vhsubq_u8): Remove.
14449         (vhsubq_n_u8): Remove.
14450         (vhaddq_u8): Remove.
14451         (vhaddq_n_u8): Remove.
14452         (vhsubq_s8): Remove.
14453         (vhsubq_n_s8): Remove.
14454         (vhaddq_s8): Remove.
14455         (vhaddq_n_s8): Remove.
14456         (vhsubq_u16): Remove.
14457         (vhsubq_n_u16): Remove.
14458         (vhaddq_u16): Remove.
14459         (vhaddq_n_u16): Remove.
14460         (vhsubq_s16): Remove.
14461         (vhsubq_n_s16): Remove.
14462         (vhaddq_s16): Remove.
14463         (vhaddq_n_s16): Remove.
14464         (vhsubq_u32): Remove.
14465         (vhsubq_n_u32): Remove.
14466         (vhaddq_u32): Remove.
14467         (vhaddq_n_u32): Remove.
14468         (vhsubq_s32): Remove.
14469         (vhsubq_n_s32): Remove.
14470         (vhaddq_s32): Remove.
14471         (vhaddq_n_s32): Remove.
14472         (vhaddq_m_n_s8): Remove.
14473         (vhaddq_m_n_s32): Remove.
14474         (vhaddq_m_n_s16): Remove.
14475         (vhaddq_m_n_u8): Remove.
14476         (vhaddq_m_n_u32): Remove.
14477         (vhaddq_m_n_u16): Remove.
14478         (vhaddq_m_s8): Remove.
14479         (vhaddq_m_s32): Remove.
14480         (vhaddq_m_s16): Remove.
14481         (vhaddq_m_u8): Remove.
14482         (vhaddq_m_u32): Remove.
14483         (vhaddq_m_u16): Remove.
14484         (vhsubq_m_n_s8): Remove.
14485         (vhsubq_m_n_s32): Remove.
14486         (vhsubq_m_n_s16): Remove.
14487         (vhsubq_m_n_u8): Remove.
14488         (vhsubq_m_n_u32): Remove.
14489         (vhsubq_m_n_u16): Remove.
14490         (vhsubq_m_s8): Remove.
14491         (vhsubq_m_s32): Remove.
14492         (vhsubq_m_s16): Remove.
14493         (vhsubq_m_u8): Remove.
14494         (vhsubq_m_u32): Remove.
14495         (vhsubq_m_u16): Remove.
14496         (vhaddq_x_n_s8): Remove.
14497         (vhaddq_x_n_s16): Remove.
14498         (vhaddq_x_n_s32): Remove.
14499         (vhaddq_x_n_u8): Remove.
14500         (vhaddq_x_n_u16): Remove.
14501         (vhaddq_x_n_u32): Remove.
14502         (vhaddq_x_s8): Remove.
14503         (vhaddq_x_s16): Remove.
14504         (vhaddq_x_s32): Remove.
14505         (vhaddq_x_u8): Remove.
14506         (vhaddq_x_u16): Remove.
14507         (vhaddq_x_u32): Remove.
14508         (vhsubq_x_n_s8): Remove.
14509         (vhsubq_x_n_s16): Remove.
14510         (vhsubq_x_n_s32): Remove.
14511         (vhsubq_x_n_u8): Remove.
14512         (vhsubq_x_n_u16): Remove.
14513         (vhsubq_x_n_u32): Remove.
14514         (vhsubq_x_s8): Remove.
14515         (vhsubq_x_s16): Remove.
14516         (vhsubq_x_s32): Remove.
14517         (vhsubq_x_u8): Remove.
14518         (vhsubq_x_u16): Remove.
14519         (vhsubq_x_u32): Remove.
14520         (__arm_vhsubq_u8): Remove.
14521         (__arm_vhsubq_n_u8): Remove.
14522         (__arm_vhaddq_u8): Remove.
14523         (__arm_vhaddq_n_u8): Remove.
14524         (__arm_vhsubq_s8): Remove.
14525         (__arm_vhsubq_n_s8): Remove.
14526         (__arm_vhaddq_s8): Remove.
14527         (__arm_vhaddq_n_s8): Remove.
14528         (__arm_vhsubq_u16): Remove.
14529         (__arm_vhsubq_n_u16): Remove.
14530         (__arm_vhaddq_u16): Remove.
14531         (__arm_vhaddq_n_u16): Remove.
14532         (__arm_vhsubq_s16): Remove.
14533         (__arm_vhsubq_n_s16): Remove.
14534         (__arm_vhaddq_s16): Remove.
14535         (__arm_vhaddq_n_s16): Remove.
14536         (__arm_vhsubq_u32): Remove.
14537         (__arm_vhsubq_n_u32): Remove.
14538         (__arm_vhaddq_u32): Remove.
14539         (__arm_vhaddq_n_u32): Remove.
14540         (__arm_vhsubq_s32): Remove.
14541         (__arm_vhsubq_n_s32): Remove.
14542         (__arm_vhaddq_s32): Remove.
14543         (__arm_vhaddq_n_s32): Remove.
14544         (__arm_vhaddq_m_n_s8): Remove.
14545         (__arm_vhaddq_m_n_s32): Remove.
14546         (__arm_vhaddq_m_n_s16): Remove.
14547         (__arm_vhaddq_m_n_u8): Remove.
14548         (__arm_vhaddq_m_n_u32): Remove.
14549         (__arm_vhaddq_m_n_u16): Remove.
14550         (__arm_vhaddq_m_s8): Remove.
14551         (__arm_vhaddq_m_s32): Remove.
14552         (__arm_vhaddq_m_s16): Remove.
14553         (__arm_vhaddq_m_u8): Remove.
14554         (__arm_vhaddq_m_u32): Remove.
14555         (__arm_vhaddq_m_u16): Remove.
14556         (__arm_vhsubq_m_n_s8): Remove.
14557         (__arm_vhsubq_m_n_s32): Remove.
14558         (__arm_vhsubq_m_n_s16): Remove.
14559         (__arm_vhsubq_m_n_u8): Remove.
14560         (__arm_vhsubq_m_n_u32): Remove.
14561         (__arm_vhsubq_m_n_u16): Remove.
14562         (__arm_vhsubq_m_s8): Remove.
14563         (__arm_vhsubq_m_s32): Remove.
14564         (__arm_vhsubq_m_s16): Remove.
14565         (__arm_vhsubq_m_u8): Remove.
14566         (__arm_vhsubq_m_u32): Remove.
14567         (__arm_vhsubq_m_u16): Remove.
14568         (__arm_vhaddq_x_n_s8): Remove.
14569         (__arm_vhaddq_x_n_s16): Remove.
14570         (__arm_vhaddq_x_n_s32): Remove.
14571         (__arm_vhaddq_x_n_u8): Remove.
14572         (__arm_vhaddq_x_n_u16): Remove.
14573         (__arm_vhaddq_x_n_u32): Remove.
14574         (__arm_vhaddq_x_s8): Remove.
14575         (__arm_vhaddq_x_s16): Remove.
14576         (__arm_vhaddq_x_s32): Remove.
14577         (__arm_vhaddq_x_u8): Remove.
14578         (__arm_vhaddq_x_u16): Remove.
14579         (__arm_vhaddq_x_u32): Remove.
14580         (__arm_vhsubq_x_n_s8): Remove.
14581         (__arm_vhsubq_x_n_s16): Remove.
14582         (__arm_vhsubq_x_n_s32): Remove.
14583         (__arm_vhsubq_x_n_u8): Remove.
14584         (__arm_vhsubq_x_n_u16): Remove.
14585         (__arm_vhsubq_x_n_u32): Remove.
14586         (__arm_vhsubq_x_s8): Remove.
14587         (__arm_vhsubq_x_s16): Remove.
14588         (__arm_vhsubq_x_s32): Remove.
14589         (__arm_vhsubq_x_u8): Remove.
14590         (__arm_vhsubq_x_u16): Remove.
14591         (__arm_vhsubq_x_u32): Remove.
14592         (__arm_vhsubq): Remove.
14593         (__arm_vhaddq): Remove.
14594         (__arm_vhaddq_m): Remove.
14595         (__arm_vhsubq_m): Remove.
14596         (__arm_vhaddq_x): Remove.
14597         (__arm_vhsubq_x): Remove.
14598         (vmulhq): Remove.
14599         (vmulhq_m): Remove.
14600         (vmulhq_x): Remove.
14601         (vmulhq_u8): Remove.
14602         (vmulhq_s8): Remove.
14603         (vmulhq_u16): Remove.
14604         (vmulhq_s16): Remove.
14605         (vmulhq_u32): Remove.
14606         (vmulhq_s32): Remove.
14607         (vmulhq_m_s8): Remove.
14608         (vmulhq_m_s32): Remove.
14609         (vmulhq_m_s16): Remove.
14610         (vmulhq_m_u8): Remove.
14611         (vmulhq_m_u32): Remove.
14612         (vmulhq_m_u16): Remove.
14613         (vmulhq_x_s8): Remove.
14614         (vmulhq_x_s16): Remove.
14615         (vmulhq_x_s32): Remove.
14616         (vmulhq_x_u8): Remove.
14617         (vmulhq_x_u16): Remove.
14618         (vmulhq_x_u32): Remove.
14619         (__arm_vmulhq_u8): Remove.
14620         (__arm_vmulhq_s8): Remove.
14621         (__arm_vmulhq_u16): Remove.
14622         (__arm_vmulhq_s16): Remove.
14623         (__arm_vmulhq_u32): Remove.
14624         (__arm_vmulhq_s32): Remove.
14625         (__arm_vmulhq_m_s8): Remove.
14626         (__arm_vmulhq_m_s32): Remove.
14627         (__arm_vmulhq_m_s16): Remove.
14628         (__arm_vmulhq_m_u8): Remove.
14629         (__arm_vmulhq_m_u32): Remove.
14630         (__arm_vmulhq_m_u16): Remove.
14631         (__arm_vmulhq_x_s8): Remove.
14632         (__arm_vmulhq_x_s16): Remove.
14633         (__arm_vmulhq_x_s32): Remove.
14634         (__arm_vmulhq_x_u8): Remove.
14635         (__arm_vmulhq_x_u16): Remove.
14636         (__arm_vmulhq_x_u32): Remove.
14637         (__arm_vmulhq): Remove.
14638         (__arm_vmulhq_m): Remove.
14639         (__arm_vmulhq_x): Remove.
14640         (vqsubq): Remove.
14641         (vqaddq): Remove.
14642         (vqaddq_m): Remove.
14643         (vqsubq_m): Remove.
14644         (vqsubq_u8): Remove.
14645         (vqsubq_n_u8): Remove.
14646         (vqaddq_u8): Remove.
14647         (vqaddq_n_u8): Remove.
14648         (vqsubq_s8): Remove.
14649         (vqsubq_n_s8): Remove.
14650         (vqaddq_s8): Remove.
14651         (vqaddq_n_s8): Remove.
14652         (vqsubq_u16): Remove.
14653         (vqsubq_n_u16): Remove.
14654         (vqaddq_u16): Remove.
14655         (vqaddq_n_u16): Remove.
14656         (vqsubq_s16): Remove.
14657         (vqsubq_n_s16): Remove.
14658         (vqaddq_s16): Remove.
14659         (vqaddq_n_s16): Remove.
14660         (vqsubq_u32): Remove.
14661         (vqsubq_n_u32): Remove.
14662         (vqaddq_u32): Remove.
14663         (vqaddq_n_u32): Remove.
14664         (vqsubq_s32): Remove.
14665         (vqsubq_n_s32): Remove.
14666         (vqaddq_s32): Remove.
14667         (vqaddq_n_s32): Remove.
14668         (vqaddq_m_n_s8): Remove.
14669         (vqaddq_m_n_s32): Remove.
14670         (vqaddq_m_n_s16): Remove.
14671         (vqaddq_m_n_u8): Remove.
14672         (vqaddq_m_n_u32): Remove.
14673         (vqaddq_m_n_u16): Remove.
14674         (vqaddq_m_s8): Remove.
14675         (vqaddq_m_s32): Remove.
14676         (vqaddq_m_s16): Remove.
14677         (vqaddq_m_u8): Remove.
14678         (vqaddq_m_u32): Remove.
14679         (vqaddq_m_u16): Remove.
14680         (vqsubq_m_n_s8): Remove.
14681         (vqsubq_m_n_s32): Remove.
14682         (vqsubq_m_n_s16): Remove.
14683         (vqsubq_m_n_u8): Remove.
14684         (vqsubq_m_n_u32): Remove.
14685         (vqsubq_m_n_u16): Remove.
14686         (vqsubq_m_s8): Remove.
14687         (vqsubq_m_s32): Remove.
14688         (vqsubq_m_s16): Remove.
14689         (vqsubq_m_u8): Remove.
14690         (vqsubq_m_u32): Remove.
14691         (vqsubq_m_u16): Remove.
14692         (__arm_vqsubq_u8): Remove.
14693         (__arm_vqsubq_n_u8): Remove.
14694         (__arm_vqaddq_u8): Remove.
14695         (__arm_vqaddq_n_u8): Remove.
14696         (__arm_vqsubq_s8): Remove.
14697         (__arm_vqsubq_n_s8): Remove.
14698         (__arm_vqaddq_s8): Remove.
14699         (__arm_vqaddq_n_s8): Remove.
14700         (__arm_vqsubq_u16): Remove.
14701         (__arm_vqsubq_n_u16): Remove.
14702         (__arm_vqaddq_u16): Remove.
14703         (__arm_vqaddq_n_u16): Remove.
14704         (__arm_vqsubq_s16): Remove.
14705         (__arm_vqsubq_n_s16): Remove.
14706         (__arm_vqaddq_s16): Remove.
14707         (__arm_vqaddq_n_s16): Remove.
14708         (__arm_vqsubq_u32): Remove.
14709         (__arm_vqsubq_n_u32): Remove.
14710         (__arm_vqaddq_u32): Remove.
14711         (__arm_vqaddq_n_u32): Remove.
14712         (__arm_vqsubq_s32): Remove.
14713         (__arm_vqsubq_n_s32): Remove.
14714         (__arm_vqaddq_s32): Remove.
14715         (__arm_vqaddq_n_s32): Remove.
14716         (__arm_vqaddq_m_n_s8): Remove.
14717         (__arm_vqaddq_m_n_s32): Remove.
14718         (__arm_vqaddq_m_n_s16): Remove.
14719         (__arm_vqaddq_m_n_u8): Remove.
14720         (__arm_vqaddq_m_n_u32): Remove.
14721         (__arm_vqaddq_m_n_u16): Remove.
14722         (__arm_vqaddq_m_s8): Remove.
14723         (__arm_vqaddq_m_s32): Remove.
14724         (__arm_vqaddq_m_s16): Remove.
14725         (__arm_vqaddq_m_u8): Remove.
14726         (__arm_vqaddq_m_u32): Remove.
14727         (__arm_vqaddq_m_u16): Remove.
14728         (__arm_vqsubq_m_n_s8): Remove.
14729         (__arm_vqsubq_m_n_s32): Remove.
14730         (__arm_vqsubq_m_n_s16): Remove.
14731         (__arm_vqsubq_m_n_u8): Remove.
14732         (__arm_vqsubq_m_n_u32): Remove.
14733         (__arm_vqsubq_m_n_u16): Remove.
14734         (__arm_vqsubq_m_s8): Remove.
14735         (__arm_vqsubq_m_s32): Remove.
14736         (__arm_vqsubq_m_s16): Remove.
14737         (__arm_vqsubq_m_u8): Remove.
14738         (__arm_vqsubq_m_u32): Remove.
14739         (__arm_vqsubq_m_u16): Remove.
14740         (__arm_vqsubq): Remove.
14741         (__arm_vqaddq): Remove.
14742         (__arm_vqaddq_m): Remove.
14743         (__arm_vqsubq_m): Remove.
14744         (vqdmulhq): Remove.
14745         (vqdmulhq_m): Remove.
14746         (vqdmulhq_s8): Remove.
14747         (vqdmulhq_n_s8): Remove.
14748         (vqdmulhq_s16): Remove.
14749         (vqdmulhq_n_s16): Remove.
14750         (vqdmulhq_s32): Remove.
14751         (vqdmulhq_n_s32): Remove.
14752         (vqdmulhq_m_n_s8): Remove.
14753         (vqdmulhq_m_n_s32): Remove.
14754         (vqdmulhq_m_n_s16): Remove.
14755         (vqdmulhq_m_s8): Remove.
14756         (vqdmulhq_m_s32): Remove.
14757         (vqdmulhq_m_s16): Remove.
14758         (__arm_vqdmulhq_s8): Remove.
14759         (__arm_vqdmulhq_n_s8): Remove.
14760         (__arm_vqdmulhq_s16): Remove.
14761         (__arm_vqdmulhq_n_s16): Remove.
14762         (__arm_vqdmulhq_s32): Remove.
14763         (__arm_vqdmulhq_n_s32): Remove.
14764         (__arm_vqdmulhq_m_n_s8): Remove.
14765         (__arm_vqdmulhq_m_n_s32): Remove.
14766         (__arm_vqdmulhq_m_n_s16): Remove.
14767         (__arm_vqdmulhq_m_s8): Remove.
14768         (__arm_vqdmulhq_m_s32): Remove.
14769         (__arm_vqdmulhq_m_s16): Remove.
14770         (__arm_vqdmulhq): Remove.
14771         (__arm_vqdmulhq_m): Remove.
14772         (vrhaddq): Remove.
14773         (vrhaddq_m): Remove.
14774         (vrhaddq_x): Remove.
14775         (vrhaddq_u8): Remove.
14776         (vrhaddq_s8): Remove.
14777         (vrhaddq_u16): Remove.
14778         (vrhaddq_s16): Remove.
14779         (vrhaddq_u32): Remove.
14780         (vrhaddq_s32): Remove.
14781         (vrhaddq_m_s8): Remove.
14782         (vrhaddq_m_s32): Remove.
14783         (vrhaddq_m_s16): Remove.
14784         (vrhaddq_m_u8): Remove.
14785         (vrhaddq_m_u32): Remove.
14786         (vrhaddq_m_u16): Remove.
14787         (vrhaddq_x_s8): Remove.
14788         (vrhaddq_x_s16): Remove.
14789         (vrhaddq_x_s32): Remove.
14790         (vrhaddq_x_u8): Remove.
14791         (vrhaddq_x_u16): Remove.
14792         (vrhaddq_x_u32): Remove.
14793         (__arm_vrhaddq_u8): Remove.
14794         (__arm_vrhaddq_s8): Remove.
14795         (__arm_vrhaddq_u16): Remove.
14796         (__arm_vrhaddq_s16): Remove.
14797         (__arm_vrhaddq_u32): Remove.
14798         (__arm_vrhaddq_s32): Remove.
14799         (__arm_vrhaddq_m_s8): Remove.
14800         (__arm_vrhaddq_m_s32): Remove.
14801         (__arm_vrhaddq_m_s16): Remove.
14802         (__arm_vrhaddq_m_u8): Remove.
14803         (__arm_vrhaddq_m_u32): Remove.
14804         (__arm_vrhaddq_m_u16): Remove.
14805         (__arm_vrhaddq_x_s8): Remove.
14806         (__arm_vrhaddq_x_s16): Remove.
14807         (__arm_vrhaddq_x_s32): Remove.
14808         (__arm_vrhaddq_x_u8): Remove.
14809         (__arm_vrhaddq_x_u16): Remove.
14810         (__arm_vrhaddq_x_u32): Remove.
14811         (__arm_vrhaddq): Remove.
14812         (__arm_vrhaddq_m): Remove.
14813         (__arm_vrhaddq_x): Remove.
14814         (vrmulhq): Remove.
14815         (vrmulhq_m): Remove.
14816         (vrmulhq_x): Remove.
14817         (vrmulhq_u8): Remove.
14818         (vrmulhq_s8): Remove.
14819         (vrmulhq_u16): Remove.
14820         (vrmulhq_s16): Remove.
14821         (vrmulhq_u32): Remove.
14822         (vrmulhq_s32): Remove.
14823         (vrmulhq_m_s8): Remove.
14824         (vrmulhq_m_s32): Remove.
14825         (vrmulhq_m_s16): Remove.
14826         (vrmulhq_m_u8): Remove.
14827         (vrmulhq_m_u32): Remove.
14828         (vrmulhq_m_u16): Remove.
14829         (vrmulhq_x_s8): Remove.
14830         (vrmulhq_x_s16): Remove.
14831         (vrmulhq_x_s32): Remove.
14832         (vrmulhq_x_u8): Remove.
14833         (vrmulhq_x_u16): Remove.
14834         (vrmulhq_x_u32): Remove.
14835         (__arm_vrmulhq_u8): Remove.
14836         (__arm_vrmulhq_s8): Remove.
14837         (__arm_vrmulhq_u16): Remove.
14838         (__arm_vrmulhq_s16): Remove.
14839         (__arm_vrmulhq_u32): Remove.
14840         (__arm_vrmulhq_s32): Remove.
14841         (__arm_vrmulhq_m_s8): Remove.
14842         (__arm_vrmulhq_m_s32): Remove.
14843         (__arm_vrmulhq_m_s16): Remove.
14844         (__arm_vrmulhq_m_u8): Remove.
14845         (__arm_vrmulhq_m_u32): Remove.
14846         (__arm_vrmulhq_m_u16): Remove.
14847         (__arm_vrmulhq_x_s8): Remove.
14848         (__arm_vrmulhq_x_s16): Remove.
14849         (__arm_vrmulhq_x_s32): Remove.
14850         (__arm_vrmulhq_x_u8): Remove.
14851         (__arm_vrmulhq_x_u16): Remove.
14852         (__arm_vrmulhq_x_u32): Remove.
14853         (__arm_vrmulhq): Remove.
14854         (__arm_vrmulhq_m): Remove.
14855         (__arm_vrmulhq_x): Remove.
14857 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14859         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
14860         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
14861         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
14862         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
14863         * config/arm/mve.md (mve_vabdq_<supf><mode>)
14864         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
14865         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
14866         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
14867         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
14868         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
14869         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
14870         ...
14871         (@mve_<mve_insn>q_<supf><mode>): ... this.
14872         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
14873         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
14874         gen_mve_vhaddq / gen_mve_vrhaddq.
14876 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14878         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
14879         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
14880         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
14881         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
14882         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
14883         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
14884         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
14885         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
14886         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
14887         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
14888         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
14889         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
14890         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14892 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14894         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
14895         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
14896         vqsubq.
14897         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
14898         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
14899         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
14900         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
14901         (mve_vqsubq_n_<supf><mode>): Merge into ...
14902         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14904 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14906         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
14907         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
14908         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
14909         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
14910         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
14911         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
14912         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
14913         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
14914         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
14915         (mve_vshlq_m_<supf><mode>): Merged into
14916         @mve_<mve_insn>q_m_<supf><mode>.
14917         (mve_vabdq_m_<supf><mode>): Likewise.
14918         (mve_vhaddq_m_<supf><mode>): Likewise.
14919         (mve_vhsubq_m_<supf><mode>): Likewise.
14920         (mve_vmaxq_m_<supf><mode>): Likewise.
14921         (mve_vminq_m_<supf><mode>): Likewise.
14922         (mve_vmulhq_m_<supf><mode>): Likewise.
14923         (mve_vqaddq_m_<supf><mode>): Likewise.
14924         (mve_vqrshlq_m_<supf><mode>): Likewise.
14925         (mve_vqshlq_m_<supf><mode>): Likewise.
14926         (mve_vqsubq_m_<supf><mode>): Likewise.
14927         (mve_vrhaddq_m_<supf><mode>): Likewise.
14928         (mve_vrmulhq_m_<supf><mode>): Likewise.
14929         (mve_vrshlq_m_<supf><mode>): Likewise.
14930         (mve_vqdmladhq_m_s<mode>): Likewise.
14931         (mve_vqdmladhxq_m_s<mode>): Likewise.
14932         (mve_vqdmlsdhq_m_s<mode>): Likewise.
14933         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
14934         (mve_vqdmulhq_m_s<mode>): Likewise.
14935         (mve_vqrdmladhq_m_s<mode>): Likewise.
14936         (mve_vqrdmladhxq_m_s<mode>): Likewise.
14937         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
14938         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
14939         (mve_vqrdmulhq_m_s<mode>): Likewise.
14941 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14943         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
14944         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
14945         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
14946         * config/arm/arm_mve.h (vcreateq_f16): Remove.
14947         (vcreateq_f32): Remove.
14948         (vcreateq_u8): Remove.
14949         (vcreateq_u16): Remove.
14950         (vcreateq_u32): Remove.
14951         (vcreateq_u64): Remove.
14952         (vcreateq_s8): Remove.
14953         (vcreateq_s16): Remove.
14954         (vcreateq_s32): Remove.
14955         (vcreateq_s64): Remove.
14956         (__arm_vcreateq_u8): Remove.
14957         (__arm_vcreateq_u16): Remove.
14958         (__arm_vcreateq_u32): Remove.
14959         (__arm_vcreateq_u64): Remove.
14960         (__arm_vcreateq_s8): Remove.
14961         (__arm_vcreateq_s16): Remove.
14962         (__arm_vcreateq_s32): Remove.
14963         (__arm_vcreateq_s64): Remove.
14964         (__arm_vcreateq_f16): Remove.
14965         (__arm_vcreateq_f32): Remove.
14967 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14969         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
14970         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
14971         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
14972         (@mve_<mve_insn>q_f<mode>): ... this.
14973         (mve_vcreateq_<supf><mode>): Rename into ...
14974         (@mve_<mve_insn>q_<supf><mode>): ... this.
14976 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14978         * config/arm/arm-mve-builtins-shapes.cc (create): New.
14979         * config/arm/arm-mve-builtins-shapes.h: (create): New.
14981 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14983         * config/arm/arm-mve-builtins-functions.h (class
14984         unspec_mve_function_exact_insn): New.
14986 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14988         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
14989         (vorrq): New.
14990         * config/arm/arm-mve-builtins-base.def (vorrq): New.
14991         * config/arm/arm-mve-builtins-base.h (vorrq): New.
14992         * config/arm/arm-mve-builtins.cc
14993         (function_instance::has_inactive_argument): Handle vorrq.
14994         * config/arm/arm_mve.h (vorrq): Remove.
14995         (vorrq_m_n): Remove.
14996         (vorrq_m): Remove.
14997         (vorrq_x): Remove.
14998         (vorrq_u8): Remove.
14999         (vorrq_s8): Remove.
15000         (vorrq_u16): Remove.
15001         (vorrq_s16): Remove.
15002         (vorrq_u32): Remove.
15003         (vorrq_s32): Remove.
15004         (vorrq_n_u16): Remove.
15005         (vorrq_f16): Remove.
15006         (vorrq_n_s16): Remove.
15007         (vorrq_n_u32): Remove.
15008         (vorrq_f32): Remove.
15009         (vorrq_n_s32): Remove.
15010         (vorrq_m_n_s16): Remove.
15011         (vorrq_m_n_u16): Remove.
15012         (vorrq_m_n_s32): Remove.
15013         (vorrq_m_n_u32): Remove.
15014         (vorrq_m_s8): Remove.
15015         (vorrq_m_s32): Remove.
15016         (vorrq_m_s16): Remove.
15017         (vorrq_m_u8): Remove.
15018         (vorrq_m_u32): Remove.
15019         (vorrq_m_u16): Remove.
15020         (vorrq_m_f32): Remove.
15021         (vorrq_m_f16): Remove.
15022         (vorrq_x_s8): Remove.
15023         (vorrq_x_s16): Remove.
15024         (vorrq_x_s32): Remove.
15025         (vorrq_x_u8): Remove.
15026         (vorrq_x_u16): Remove.
15027         (vorrq_x_u32): Remove.
15028         (vorrq_x_f16): Remove.
15029         (vorrq_x_f32): Remove.
15030         (__arm_vorrq_u8): Remove.
15031         (__arm_vorrq_s8): Remove.
15032         (__arm_vorrq_u16): Remove.
15033         (__arm_vorrq_s16): Remove.
15034         (__arm_vorrq_u32): Remove.
15035         (__arm_vorrq_s32): Remove.
15036         (__arm_vorrq_n_u16): Remove.
15037         (__arm_vorrq_n_s16): Remove.
15038         (__arm_vorrq_n_u32): Remove.
15039         (__arm_vorrq_n_s32): Remove.
15040         (__arm_vorrq_m_n_s16): Remove.
15041         (__arm_vorrq_m_n_u16): Remove.
15042         (__arm_vorrq_m_n_s32): Remove.
15043         (__arm_vorrq_m_n_u32): Remove.
15044         (__arm_vorrq_m_s8): Remove.
15045         (__arm_vorrq_m_s32): Remove.
15046         (__arm_vorrq_m_s16): Remove.
15047         (__arm_vorrq_m_u8): Remove.
15048         (__arm_vorrq_m_u32): Remove.
15049         (__arm_vorrq_m_u16): Remove.
15050         (__arm_vorrq_x_s8): Remove.
15051         (__arm_vorrq_x_s16): Remove.
15052         (__arm_vorrq_x_s32): Remove.
15053         (__arm_vorrq_x_u8): Remove.
15054         (__arm_vorrq_x_u16): Remove.
15055         (__arm_vorrq_x_u32): Remove.
15056         (__arm_vorrq_f16): Remove.
15057         (__arm_vorrq_f32): Remove.
15058         (__arm_vorrq_m_f32): Remove.
15059         (__arm_vorrq_m_f16): Remove.
15060         (__arm_vorrq_x_f16): Remove.
15061         (__arm_vorrq_x_f32): Remove.
15062         (__arm_vorrq): Remove.
15063         (__arm_vorrq_m_n): Remove.
15064         (__arm_vorrq_m): Remove.
15065         (__arm_vorrq_x): Remove.
15067 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15069         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
15070         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
15071         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
15072         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
15074 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15076         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
15077         (vandq,veorq): New.
15078         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
15079         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
15080         * config/arm/arm_mve.h (vandq): Remove.
15081         (vandq_m): Remove.
15082         (vandq_x): Remove.
15083         (vandq_u8): Remove.
15084         (vandq_s8): Remove.
15085         (vandq_u16): Remove.
15086         (vandq_s16): Remove.
15087         (vandq_u32): Remove.
15088         (vandq_s32): Remove.
15089         (vandq_f16): Remove.
15090         (vandq_f32): Remove.
15091         (vandq_m_s8): Remove.
15092         (vandq_m_s32): Remove.
15093         (vandq_m_s16): Remove.
15094         (vandq_m_u8): Remove.
15095         (vandq_m_u32): Remove.
15096         (vandq_m_u16): Remove.
15097         (vandq_m_f32): Remove.
15098         (vandq_m_f16): Remove.
15099         (vandq_x_s8): Remove.
15100         (vandq_x_s16): Remove.
15101         (vandq_x_s32): Remove.
15102         (vandq_x_u8): Remove.
15103         (vandq_x_u16): Remove.
15104         (vandq_x_u32): Remove.
15105         (vandq_x_f16): Remove.
15106         (vandq_x_f32): Remove.
15107         (__arm_vandq_u8): Remove.
15108         (__arm_vandq_s8): Remove.
15109         (__arm_vandq_u16): Remove.
15110         (__arm_vandq_s16): Remove.
15111         (__arm_vandq_u32): Remove.
15112         (__arm_vandq_s32): Remove.
15113         (__arm_vandq_m_s8): Remove.
15114         (__arm_vandq_m_s32): Remove.
15115         (__arm_vandq_m_s16): Remove.
15116         (__arm_vandq_m_u8): Remove.
15117         (__arm_vandq_m_u32): Remove.
15118         (__arm_vandq_m_u16): Remove.
15119         (__arm_vandq_x_s8): Remove.
15120         (__arm_vandq_x_s16): Remove.
15121         (__arm_vandq_x_s32): Remove.
15122         (__arm_vandq_x_u8): Remove.
15123         (__arm_vandq_x_u16): Remove.
15124         (__arm_vandq_x_u32): Remove.
15125         (__arm_vandq_f16): Remove.
15126         (__arm_vandq_f32): Remove.
15127         (__arm_vandq_m_f32): Remove.
15128         (__arm_vandq_m_f16): Remove.
15129         (__arm_vandq_x_f16): Remove.
15130         (__arm_vandq_x_f32): Remove.
15131         (__arm_vandq): Remove.
15132         (__arm_vandq_m): Remove.
15133         (__arm_vandq_x): Remove.
15134         (veorq_m): Remove.
15135         (veorq_x): Remove.
15136         (veorq_u8): Remove.
15137         (veorq_s8): Remove.
15138         (veorq_u16): Remove.
15139         (veorq_s16): Remove.
15140         (veorq_u32): Remove.
15141         (veorq_s32): Remove.
15142         (veorq_f16): Remove.
15143         (veorq_f32): Remove.
15144         (veorq_m_s8): Remove.
15145         (veorq_m_s32): Remove.
15146         (veorq_m_s16): Remove.
15147         (veorq_m_u8): Remove.
15148         (veorq_m_u32): Remove.
15149         (veorq_m_u16): Remove.
15150         (veorq_m_f32): Remove.
15151         (veorq_m_f16): Remove.
15152         (veorq_x_s8): Remove.
15153         (veorq_x_s16): Remove.
15154         (veorq_x_s32): Remove.
15155         (veorq_x_u8): Remove.
15156         (veorq_x_u16): Remove.
15157         (veorq_x_u32): Remove.
15158         (veorq_x_f16): Remove.
15159         (veorq_x_f32): Remove.
15160         (__arm_veorq_u8): Remove.
15161         (__arm_veorq_s8): Remove.
15162         (__arm_veorq_u16): Remove.
15163         (__arm_veorq_s16): Remove.
15164         (__arm_veorq_u32): Remove.
15165         (__arm_veorq_s32): Remove.
15166         (__arm_veorq_m_s8): Remove.
15167         (__arm_veorq_m_s32): Remove.
15168         (__arm_veorq_m_s16): Remove.
15169         (__arm_veorq_m_u8): Remove.
15170         (__arm_veorq_m_u32): Remove.
15171         (__arm_veorq_m_u16): Remove.
15172         (__arm_veorq_x_s8): Remove.
15173         (__arm_veorq_x_s16): Remove.
15174         (__arm_veorq_x_s32): Remove.
15175         (__arm_veorq_x_u8): Remove.
15176         (__arm_veorq_x_u16): Remove.
15177         (__arm_veorq_x_u32): Remove.
15178         (__arm_veorq_f16): Remove.
15179         (__arm_veorq_f32): Remove.
15180         (__arm_veorq_m_f32): Remove.
15181         (__arm_veorq_m_f16): Remove.
15182         (__arm_veorq_x_f16): Remove.
15183         (__arm_veorq_x_f32): Remove.
15184         (__arm_veorq): Remove.
15185         (__arm_veorq_m): Remove.
15186         (__arm_veorq_x): Remove.
15188 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15190         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
15191         (MVE_FP_M_BINARY_LOGIC): New.
15192         (MVE_INT_M_N_BINARY_LOGIC): New.
15193         (MVE_INT_N_BINARY_LOGIC): New.
15194         (mve_insn): Add vand, veor, vorr, vbic.
15195         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
15196         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
15197         (mve_vbicq_m_<supf><mode>): Merge into ...
15198         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15199         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
15200         (mve_vbicq_m_f<mode>): Merge into ...
15201         (@mve_<mve_insn>q_m_f<mode>): ... this.
15202         (mve_vorrq_n_<supf><mode>)
15203         (mve_vbicq_n_<supf><mode>): Merge into ...
15204         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15205         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
15206         into ...
15207         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15209 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15211         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
15212         * config/arm/arm-mve-builtins-shapes.h (binary): New.
15214 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15216         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
15217         New.
15218         (vaddq, vmulq, vsubq): New.
15219         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
15220         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
15221         * config/arm/arm_mve.h (vaddq): Remove.
15222         (vaddq_m): Remove.
15223         (vaddq_x): Remove.
15224         (vaddq_n_u8): Remove.
15225         (vaddq_n_s8): Remove.
15226         (vaddq_n_u16): Remove.
15227         (vaddq_n_s16): Remove.
15228         (vaddq_n_u32): Remove.
15229         (vaddq_n_s32): Remove.
15230         (vaddq_n_f16): Remove.
15231         (vaddq_n_f32): Remove.
15232         (vaddq_m_n_s8): Remove.
15233         (vaddq_m_n_s32): Remove.
15234         (vaddq_m_n_s16): Remove.
15235         (vaddq_m_n_u8): Remove.
15236         (vaddq_m_n_u32): Remove.
15237         (vaddq_m_n_u16): Remove.
15238         (vaddq_m_s8): Remove.
15239         (vaddq_m_s32): Remove.
15240         (vaddq_m_s16): Remove.
15241         (vaddq_m_u8): Remove.
15242         (vaddq_m_u32): Remove.
15243         (vaddq_m_u16): Remove.
15244         (vaddq_m_f32): Remove.
15245         (vaddq_m_f16): Remove.
15246         (vaddq_m_n_f32): Remove.
15247         (vaddq_m_n_f16): Remove.
15248         (vaddq_s8): Remove.
15249         (vaddq_s16): Remove.
15250         (vaddq_s32): Remove.
15251         (vaddq_u8): Remove.
15252         (vaddq_u16): Remove.
15253         (vaddq_u32): Remove.
15254         (vaddq_f16): Remove.
15255         (vaddq_f32): Remove.
15256         (vaddq_x_s8): Remove.
15257         (vaddq_x_s16): Remove.
15258         (vaddq_x_s32): Remove.
15259         (vaddq_x_n_s8): Remove.
15260         (vaddq_x_n_s16): Remove.
15261         (vaddq_x_n_s32): Remove.
15262         (vaddq_x_u8): Remove.
15263         (vaddq_x_u16): Remove.
15264         (vaddq_x_u32): Remove.
15265         (vaddq_x_n_u8): Remove.
15266         (vaddq_x_n_u16): Remove.
15267         (vaddq_x_n_u32): Remove.
15268         (vaddq_x_f16): Remove.
15269         (vaddq_x_f32): Remove.
15270         (vaddq_x_n_f16): Remove.
15271         (vaddq_x_n_f32): Remove.
15272         (__arm_vaddq_n_u8): Remove.
15273         (__arm_vaddq_n_s8): Remove.
15274         (__arm_vaddq_n_u16): Remove.
15275         (__arm_vaddq_n_s16): Remove.
15276         (__arm_vaddq_n_u32): Remove.
15277         (__arm_vaddq_n_s32): Remove.
15278         (__arm_vaddq_m_n_s8): Remove.
15279         (__arm_vaddq_m_n_s32): Remove.
15280         (__arm_vaddq_m_n_s16): Remove.
15281         (__arm_vaddq_m_n_u8): Remove.
15282         (__arm_vaddq_m_n_u32): Remove.
15283         (__arm_vaddq_m_n_u16): Remove.
15284         (__arm_vaddq_m_s8): Remove.
15285         (__arm_vaddq_m_s32): Remove.
15286         (__arm_vaddq_m_s16): Remove.
15287         (__arm_vaddq_m_u8): Remove.
15288         (__arm_vaddq_m_u32): Remove.
15289         (__arm_vaddq_m_u16): Remove.
15290         (__arm_vaddq_s8): Remove.
15291         (__arm_vaddq_s16): Remove.
15292         (__arm_vaddq_s32): Remove.
15293         (__arm_vaddq_u8): Remove.
15294         (__arm_vaddq_u16): Remove.
15295         (__arm_vaddq_u32): Remove.
15296         (__arm_vaddq_x_s8): Remove.
15297         (__arm_vaddq_x_s16): Remove.
15298         (__arm_vaddq_x_s32): Remove.
15299         (__arm_vaddq_x_n_s8): Remove.
15300         (__arm_vaddq_x_n_s16): Remove.
15301         (__arm_vaddq_x_n_s32): Remove.
15302         (__arm_vaddq_x_u8): Remove.
15303         (__arm_vaddq_x_u16): Remove.
15304         (__arm_vaddq_x_u32): Remove.
15305         (__arm_vaddq_x_n_u8): Remove.
15306         (__arm_vaddq_x_n_u16): Remove.
15307         (__arm_vaddq_x_n_u32): Remove.
15308         (__arm_vaddq_n_f16): Remove.
15309         (__arm_vaddq_n_f32): Remove.
15310         (__arm_vaddq_m_f32): Remove.
15311         (__arm_vaddq_m_f16): Remove.
15312         (__arm_vaddq_m_n_f32): Remove.
15313         (__arm_vaddq_m_n_f16): Remove.
15314         (__arm_vaddq_f16): Remove.
15315         (__arm_vaddq_f32): Remove.
15316         (__arm_vaddq_x_f16): Remove.
15317         (__arm_vaddq_x_f32): Remove.
15318         (__arm_vaddq_x_n_f16): Remove.
15319         (__arm_vaddq_x_n_f32): Remove.
15320         (__arm_vaddq): Remove.
15321         (__arm_vaddq_m): Remove.
15322         (__arm_vaddq_x): Remove.
15323         (vmulq): Remove.
15324         (vmulq_m): Remove.
15325         (vmulq_x): Remove.
15326         (vmulq_u8): Remove.
15327         (vmulq_n_u8): Remove.
15328         (vmulq_s8): Remove.
15329         (vmulq_n_s8): Remove.
15330         (vmulq_u16): Remove.
15331         (vmulq_n_u16): Remove.
15332         (vmulq_s16): Remove.
15333         (vmulq_n_s16): Remove.
15334         (vmulq_u32): Remove.
15335         (vmulq_n_u32): Remove.
15336         (vmulq_s32): Remove.
15337         (vmulq_n_s32): Remove.
15338         (vmulq_n_f16): Remove.
15339         (vmulq_f16): Remove.
15340         (vmulq_n_f32): Remove.
15341         (vmulq_f32): Remove.
15342         (vmulq_m_n_s8): Remove.
15343         (vmulq_m_n_s32): Remove.
15344         (vmulq_m_n_s16): Remove.
15345         (vmulq_m_n_u8): Remove.
15346         (vmulq_m_n_u32): Remove.
15347         (vmulq_m_n_u16): Remove.
15348         (vmulq_m_s8): Remove.
15349         (vmulq_m_s32): Remove.
15350         (vmulq_m_s16): Remove.
15351         (vmulq_m_u8): Remove.
15352         (vmulq_m_u32): Remove.
15353         (vmulq_m_u16): Remove.
15354         (vmulq_m_f32): Remove.
15355         (vmulq_m_f16): Remove.
15356         (vmulq_m_n_f32): Remove.
15357         (vmulq_m_n_f16): Remove.
15358         (vmulq_x_s8): Remove.
15359         (vmulq_x_s16): Remove.
15360         (vmulq_x_s32): Remove.
15361         (vmulq_x_n_s8): Remove.
15362         (vmulq_x_n_s16): Remove.
15363         (vmulq_x_n_s32): Remove.
15364         (vmulq_x_u8): Remove.
15365         (vmulq_x_u16): Remove.
15366         (vmulq_x_u32): Remove.
15367         (vmulq_x_n_u8): Remove.
15368         (vmulq_x_n_u16): Remove.
15369         (vmulq_x_n_u32): Remove.
15370         (vmulq_x_f16): Remove.
15371         (vmulq_x_f32): Remove.
15372         (vmulq_x_n_f16): Remove.
15373         (vmulq_x_n_f32): Remove.
15374         (__arm_vmulq_u8): Remove.
15375         (__arm_vmulq_n_u8): Remove.
15376         (__arm_vmulq_s8): Remove.
15377         (__arm_vmulq_n_s8): Remove.
15378         (__arm_vmulq_u16): Remove.
15379         (__arm_vmulq_n_u16): Remove.
15380         (__arm_vmulq_s16): Remove.
15381         (__arm_vmulq_n_s16): Remove.
15382         (__arm_vmulq_u32): Remove.
15383         (__arm_vmulq_n_u32): Remove.
15384         (__arm_vmulq_s32): Remove.
15385         (__arm_vmulq_n_s32): Remove.
15386         (__arm_vmulq_m_n_s8): Remove.
15387         (__arm_vmulq_m_n_s32): Remove.
15388         (__arm_vmulq_m_n_s16): Remove.
15389         (__arm_vmulq_m_n_u8): Remove.
15390         (__arm_vmulq_m_n_u32): Remove.
15391         (__arm_vmulq_m_n_u16): Remove.
15392         (__arm_vmulq_m_s8): Remove.
15393         (__arm_vmulq_m_s32): Remove.
15394         (__arm_vmulq_m_s16): Remove.
15395         (__arm_vmulq_m_u8): Remove.
15396         (__arm_vmulq_m_u32): Remove.
15397         (__arm_vmulq_m_u16): Remove.
15398         (__arm_vmulq_x_s8): Remove.
15399         (__arm_vmulq_x_s16): Remove.
15400         (__arm_vmulq_x_s32): Remove.
15401         (__arm_vmulq_x_n_s8): Remove.
15402         (__arm_vmulq_x_n_s16): Remove.
15403         (__arm_vmulq_x_n_s32): Remove.
15404         (__arm_vmulq_x_u8): Remove.
15405         (__arm_vmulq_x_u16): Remove.
15406         (__arm_vmulq_x_u32): Remove.
15407         (__arm_vmulq_x_n_u8): Remove.
15408         (__arm_vmulq_x_n_u16): Remove.
15409         (__arm_vmulq_x_n_u32): Remove.
15410         (__arm_vmulq_n_f16): Remove.
15411         (__arm_vmulq_f16): Remove.
15412         (__arm_vmulq_n_f32): Remove.
15413         (__arm_vmulq_f32): Remove.
15414         (__arm_vmulq_m_f32): Remove.
15415         (__arm_vmulq_m_f16): Remove.
15416         (__arm_vmulq_m_n_f32): Remove.
15417         (__arm_vmulq_m_n_f16): Remove.
15418         (__arm_vmulq_x_f16): Remove.
15419         (__arm_vmulq_x_f32): Remove.
15420         (__arm_vmulq_x_n_f16): Remove.
15421         (__arm_vmulq_x_n_f32): Remove.
15422         (__arm_vmulq): Remove.
15423         (__arm_vmulq_m): Remove.
15424         (__arm_vmulq_x): Remove.
15425         (vsubq): Remove.
15426         (vsubq_m): Remove.
15427         (vsubq_x): Remove.
15428         (vsubq_n_f16): Remove.
15429         (vsubq_n_f32): Remove.
15430         (vsubq_u8): Remove.
15431         (vsubq_n_u8): Remove.
15432         (vsubq_s8): Remove.
15433         (vsubq_n_s8): Remove.
15434         (vsubq_u16): Remove.
15435         (vsubq_n_u16): Remove.
15436         (vsubq_s16): Remove.
15437         (vsubq_n_s16): Remove.
15438         (vsubq_u32): Remove.
15439         (vsubq_n_u32): Remove.
15440         (vsubq_s32): Remove.
15441         (vsubq_n_s32): Remove.
15442         (vsubq_f16): Remove.
15443         (vsubq_f32): Remove.
15444         (vsubq_m_s8): Remove.
15445         (vsubq_m_u8): Remove.
15446         (vsubq_m_s16): Remove.
15447         (vsubq_m_u16): Remove.
15448         (vsubq_m_s32): Remove.
15449         (vsubq_m_u32): Remove.
15450         (vsubq_m_n_s8): Remove.
15451         (vsubq_m_n_s32): Remove.
15452         (vsubq_m_n_s16): Remove.
15453         (vsubq_m_n_u8): Remove.
15454         (vsubq_m_n_u32): Remove.
15455         (vsubq_m_n_u16): Remove.
15456         (vsubq_m_f32): Remove.
15457         (vsubq_m_f16): Remove.
15458         (vsubq_m_n_f32): Remove.
15459         (vsubq_m_n_f16): Remove.
15460         (vsubq_x_s8): Remove.
15461         (vsubq_x_s16): Remove.
15462         (vsubq_x_s32): Remove.
15463         (vsubq_x_n_s8): Remove.
15464         (vsubq_x_n_s16): Remove.
15465         (vsubq_x_n_s32): Remove.
15466         (vsubq_x_u8): Remove.
15467         (vsubq_x_u16): Remove.
15468         (vsubq_x_u32): Remove.
15469         (vsubq_x_n_u8): Remove.
15470         (vsubq_x_n_u16): Remove.
15471         (vsubq_x_n_u32): Remove.
15472         (vsubq_x_f16): Remove.
15473         (vsubq_x_f32): Remove.
15474         (vsubq_x_n_f16): Remove.
15475         (vsubq_x_n_f32): Remove.
15476         (__arm_vsubq_u8): Remove.
15477         (__arm_vsubq_n_u8): Remove.
15478         (__arm_vsubq_s8): Remove.
15479         (__arm_vsubq_n_s8): Remove.
15480         (__arm_vsubq_u16): Remove.
15481         (__arm_vsubq_n_u16): Remove.
15482         (__arm_vsubq_s16): Remove.
15483         (__arm_vsubq_n_s16): Remove.
15484         (__arm_vsubq_u32): Remove.
15485         (__arm_vsubq_n_u32): Remove.
15486         (__arm_vsubq_s32): Remove.
15487         (__arm_vsubq_n_s32): Remove.
15488         (__arm_vsubq_m_s8): Remove.
15489         (__arm_vsubq_m_u8): Remove.
15490         (__arm_vsubq_m_s16): Remove.
15491         (__arm_vsubq_m_u16): Remove.
15492         (__arm_vsubq_m_s32): Remove.
15493         (__arm_vsubq_m_u32): Remove.
15494         (__arm_vsubq_m_n_s8): Remove.
15495         (__arm_vsubq_m_n_s32): Remove.
15496         (__arm_vsubq_m_n_s16): Remove.
15497         (__arm_vsubq_m_n_u8): Remove.
15498         (__arm_vsubq_m_n_u32): Remove.
15499         (__arm_vsubq_m_n_u16): Remove.
15500         (__arm_vsubq_x_s8): Remove.
15501         (__arm_vsubq_x_s16): Remove.
15502         (__arm_vsubq_x_s32): Remove.
15503         (__arm_vsubq_x_n_s8): Remove.
15504         (__arm_vsubq_x_n_s16): Remove.
15505         (__arm_vsubq_x_n_s32): Remove.
15506         (__arm_vsubq_x_u8): Remove.
15507         (__arm_vsubq_x_u16): Remove.
15508         (__arm_vsubq_x_u32): Remove.
15509         (__arm_vsubq_x_n_u8): Remove.
15510         (__arm_vsubq_x_n_u16): Remove.
15511         (__arm_vsubq_x_n_u32): Remove.
15512         (__arm_vsubq_n_f16): Remove.
15513         (__arm_vsubq_n_f32): Remove.
15514         (__arm_vsubq_f16): Remove.
15515         (__arm_vsubq_f32): Remove.
15516         (__arm_vsubq_m_f32): Remove.
15517         (__arm_vsubq_m_f16): Remove.
15518         (__arm_vsubq_m_n_f32): Remove.
15519         (__arm_vsubq_m_n_f16): Remove.
15520         (__arm_vsubq_x_f16): Remove.
15521         (__arm_vsubq_x_f32): Remove.
15522         (__arm_vsubq_x_n_f16): Remove.
15523         (__arm_vsubq_x_n_f32): Remove.
15524         (__arm_vsubq): Remove.
15525         (__arm_vsubq_m): Remove.
15526         (__arm_vsubq_x): Remove.
15527         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
15528         Remove.
15529         (vmulq_u, vmulq_s, vmulq_f): Remove.
15530         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
15531         (mve_vmulq_<supf><mode>): Remove.
15533 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15535         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
15536         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
15537         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
15538         iterators.
15539         * config/arm/mve.md
15540         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
15541         Factorize into ...
15542         (@mve_<mve_insn>q_n_f<mode>): ... this.
15543         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
15544         (mve_vsubq_n_<supf><mode>): Factorize into ...
15545         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15546         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
15547         into ...
15548         (mve_<mve_addsubmul>q<mode>): ... this.
15549         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
15550         Factorize into ...
15551         (mve_<mve_addsubmul>q_f<mode>): ... this.
15552         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
15553         (mve_vsubq_m_<supf><mode>): Factorize into ...
15554         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
15555         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
15556         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
15557         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15558         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
15559         Factorize into ...
15560         (@mve_<mve_insn>q_m_f<mode>): ... this.
15561         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
15562         (mve_vsubq_m_n_f<mode>): Factorize into ...
15563         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
15565 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15567         * config/arm/arm-mve-builtins-functions.h (class
15568         unspec_based_mve_function_base): New.
15569         (class unspec_based_mve_function_exact_insn): New.
15571 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15573         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
15574         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
15576 2023-05-03  Murray Steele  <murray.steele@arm.com>
15577             Christophe Lyon  <christophe.lyon@arm.com>
15579         * config/arm/arm-mve-builtins-base.cc (class
15580         vuninitializedq_impl): New.
15581         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
15582         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
15583         declaration.
15584         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
15585         * config/arm/arm-mve-builtins-shapes.h (inherent): New
15586         declaration.
15587         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
15588         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
15589         (__arm_vuninitializedq_u8): Remove.
15590         (__arm_vuninitializedq_u16): Remove.
15591         (__arm_vuninitializedq_u32): Remove.
15592         (__arm_vuninitializedq_u64): Remove.
15593         (__arm_vuninitializedq_s8): Remove.
15594         (__arm_vuninitializedq_s16): Remove.
15595         (__arm_vuninitializedq_s32): Remove.
15596         (__arm_vuninitializedq_s64): Remove.
15597         (__arm_vuninitializedq_f16): Remove.
15598         (__arm_vuninitializedq_f32): Remove.
15600 2023-05-03  Murray Steele  <murray.steele@arm.com>
15601             Christophe Lyon  <christophe.lyon@arm.com>
15603         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
15604         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
15605         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
15606         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
15607         (parse_type): Likewise.
15608         (parse_signature): Likewise.
15609         (build_one): Likewise.
15610         (build_all): Likewise.
15611         (overloaded_base): New struct.
15612         (unary_convert_def): Likewise.
15613         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
15614         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
15615         macro.
15616         (TYPES_reinterpret_unsigned1): Likewise.
15617         (TYPES_reinterpret_integer): Likewise.
15618         (TYPES_reinterpret_integer1): Likewise.
15619         (TYPES_reinterpret_float1): Likewise.
15620         (TYPES_reinterpret_float): Likewise.
15621         (reinterpret_integer): New.
15622         (reinterpret_float): New.
15623         (handle_arm_mve_h): Register builtins.
15624         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
15625         (vreinterpretq_s32): Likewise.
15626         (vreinterpretq_s64): Likewise.
15627         (vreinterpretq_s8): Likewise.
15628         (vreinterpretq_u16): Likewise.
15629         (vreinterpretq_u32): Likewise.
15630         (vreinterpretq_u64): Likewise.
15631         (vreinterpretq_u8): Likewise.
15632         (vreinterpretq_f16): Likewise.
15633         (vreinterpretq_f32): Likewise.
15634         (vreinterpretq_s16_s32): Likewise.
15635         (vreinterpretq_s16_s64): Likewise.
15636         (vreinterpretq_s16_s8): Likewise.
15637         (vreinterpretq_s16_u16): Likewise.
15638         (vreinterpretq_s16_u32): Likewise.
15639         (vreinterpretq_s16_u64): Likewise.
15640         (vreinterpretq_s16_u8): Likewise.
15641         (vreinterpretq_s32_s16): Likewise.
15642         (vreinterpretq_s32_s64): Likewise.
15643         (vreinterpretq_s32_s8): Likewise.
15644         (vreinterpretq_s32_u16): Likewise.
15645         (vreinterpretq_s32_u32): Likewise.
15646         (vreinterpretq_s32_u64): Likewise.
15647         (vreinterpretq_s32_u8): Likewise.
15648         (vreinterpretq_s64_s16): Likewise.
15649         (vreinterpretq_s64_s32): Likewise.
15650         (vreinterpretq_s64_s8): Likewise.
15651         (vreinterpretq_s64_u16): Likewise.
15652         (vreinterpretq_s64_u32): Likewise.
15653         (vreinterpretq_s64_u64): Likewise.
15654         (vreinterpretq_s64_u8): Likewise.
15655         (vreinterpretq_s8_s16): Likewise.
15656         (vreinterpretq_s8_s32): Likewise.
15657         (vreinterpretq_s8_s64): Likewise.
15658         (vreinterpretq_s8_u16): Likewise.
15659         (vreinterpretq_s8_u32): Likewise.
15660         (vreinterpretq_s8_u64): Likewise.
15661         (vreinterpretq_s8_u8): Likewise.
15662         (vreinterpretq_u16_s16): Likewise.
15663         (vreinterpretq_u16_s32): Likewise.
15664         (vreinterpretq_u16_s64): Likewise.
15665         (vreinterpretq_u16_s8): Likewise.
15666         (vreinterpretq_u16_u32): Likewise.
15667         (vreinterpretq_u16_u64): Likewise.
15668         (vreinterpretq_u16_u8): Likewise.
15669         (vreinterpretq_u32_s16): Likewise.
15670         (vreinterpretq_u32_s32): Likewise.
15671         (vreinterpretq_u32_s64): Likewise.
15672         (vreinterpretq_u32_s8): Likewise.
15673         (vreinterpretq_u32_u16): Likewise.
15674         (vreinterpretq_u32_u64): Likewise.
15675         (vreinterpretq_u32_u8): Likewise.
15676         (vreinterpretq_u64_s16): Likewise.
15677         (vreinterpretq_u64_s32): Likewise.
15678         (vreinterpretq_u64_s64): Likewise.
15679         (vreinterpretq_u64_s8): Likewise.
15680         (vreinterpretq_u64_u16): Likewise.
15681         (vreinterpretq_u64_u32): Likewise.
15682         (vreinterpretq_u64_u8): Likewise.
15683         (vreinterpretq_u8_s16): Likewise.
15684         (vreinterpretq_u8_s32): Likewise.
15685         (vreinterpretq_u8_s64): Likewise.
15686         (vreinterpretq_u8_s8): Likewise.
15687         (vreinterpretq_u8_u16): Likewise.
15688         (vreinterpretq_u8_u32): Likewise.
15689         (vreinterpretq_u8_u64): Likewise.
15690         (vreinterpretq_s32_f16): Likewise.
15691         (vreinterpretq_s32_f32): Likewise.
15692         (vreinterpretq_u16_f16): Likewise.
15693         (vreinterpretq_u16_f32): Likewise.
15694         (vreinterpretq_u32_f16): Likewise.
15695         (vreinterpretq_u32_f32): Likewise.
15696         (vreinterpretq_u64_f16): Likewise.
15697         (vreinterpretq_u64_f32): Likewise.
15698         (vreinterpretq_u8_f16): Likewise.
15699         (vreinterpretq_u8_f32): Likewise.
15700         (vreinterpretq_f16_f32): Likewise.
15701         (vreinterpretq_f16_s16): Likewise.
15702         (vreinterpretq_f16_s32): Likewise.
15703         (vreinterpretq_f16_s64): Likewise.
15704         (vreinterpretq_f16_s8): Likewise.
15705         (vreinterpretq_f16_u16): Likewise.
15706         (vreinterpretq_f16_u32): Likewise.
15707         (vreinterpretq_f16_u64): Likewise.
15708         (vreinterpretq_f16_u8): Likewise.
15709         (vreinterpretq_f32_f16): Likewise.
15710         (vreinterpretq_f32_s16): Likewise.
15711         (vreinterpretq_f32_s32): Likewise.
15712         (vreinterpretq_f32_s64): Likewise.
15713         (vreinterpretq_f32_s8): Likewise.
15714         (vreinterpretq_f32_u16): Likewise.
15715         (vreinterpretq_f32_u32): Likewise.
15716         (vreinterpretq_f32_u64): Likewise.
15717         (vreinterpretq_f32_u8): Likewise.
15718         (vreinterpretq_s16_f16): Likewise.
15719         (vreinterpretq_s16_f32): Likewise.
15720         (vreinterpretq_s64_f16): Likewise.
15721         (vreinterpretq_s64_f32): Likewise.
15722         (vreinterpretq_s8_f16): Likewise.
15723         (vreinterpretq_s8_f32): Likewise.
15724         (__arm_vreinterpretq_f16): Likewise.
15725         (__arm_vreinterpretq_f32): Likewise.
15726         (__arm_vreinterpretq_s16): Likewise.
15727         (__arm_vreinterpretq_s32): Likewise.
15728         (__arm_vreinterpretq_s64): Likewise.
15729         (__arm_vreinterpretq_s8): Likewise.
15730         (__arm_vreinterpretq_u16): Likewise.
15731         (__arm_vreinterpretq_u32): Likewise.
15732         (__arm_vreinterpretq_u64): Likewise.
15733         (__arm_vreinterpretq_u8): Likewise.
15734         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
15735         (__arm_vreinterpretq_s16_s64): Likewise.
15736         (__arm_vreinterpretq_s16_s8): Likewise.
15737         (__arm_vreinterpretq_s16_u16): Likewise.
15738         (__arm_vreinterpretq_s16_u32): Likewise.
15739         (__arm_vreinterpretq_s16_u64): Likewise.
15740         (__arm_vreinterpretq_s16_u8): Likewise.
15741         (__arm_vreinterpretq_s32_s16): Likewise.
15742         (__arm_vreinterpretq_s32_s64): Likewise.
15743         (__arm_vreinterpretq_s32_s8): Likewise.
15744         (__arm_vreinterpretq_s32_u16): Likewise.
15745         (__arm_vreinterpretq_s32_u32): Likewise.
15746         (__arm_vreinterpretq_s32_u64): Likewise.
15747         (__arm_vreinterpretq_s32_u8): Likewise.
15748         (__arm_vreinterpretq_s64_s16): Likewise.
15749         (__arm_vreinterpretq_s64_s32): Likewise.
15750         (__arm_vreinterpretq_s64_s8): Likewise.
15751         (__arm_vreinterpretq_s64_u16): Likewise.
15752         (__arm_vreinterpretq_s64_u32): Likewise.
15753         (__arm_vreinterpretq_s64_u64): Likewise.
15754         (__arm_vreinterpretq_s64_u8): Likewise.
15755         (__arm_vreinterpretq_s8_s16): Likewise.
15756         (__arm_vreinterpretq_s8_s32): Likewise.
15757         (__arm_vreinterpretq_s8_s64): Likewise.
15758         (__arm_vreinterpretq_s8_u16): Likewise.
15759         (__arm_vreinterpretq_s8_u32): Likewise.
15760         (__arm_vreinterpretq_s8_u64): Likewise.
15761         (__arm_vreinterpretq_s8_u8): Likewise.
15762         (__arm_vreinterpretq_u16_s16): Likewise.
15763         (__arm_vreinterpretq_u16_s32): Likewise.
15764         (__arm_vreinterpretq_u16_s64): Likewise.
15765         (__arm_vreinterpretq_u16_s8): Likewise.
15766         (__arm_vreinterpretq_u16_u32): Likewise.
15767         (__arm_vreinterpretq_u16_u64): Likewise.
15768         (__arm_vreinterpretq_u16_u8): Likewise.
15769         (__arm_vreinterpretq_u32_s16): Likewise.
15770         (__arm_vreinterpretq_u32_s32): Likewise.
15771         (__arm_vreinterpretq_u32_s64): Likewise.
15772         (__arm_vreinterpretq_u32_s8): Likewise.
15773         (__arm_vreinterpretq_u32_u16): Likewise.
15774         (__arm_vreinterpretq_u32_u64): Likewise.
15775         (__arm_vreinterpretq_u32_u8): Likewise.
15776         (__arm_vreinterpretq_u64_s16): Likewise.
15777         (__arm_vreinterpretq_u64_s32): Likewise.
15778         (__arm_vreinterpretq_u64_s64): Likewise.
15779         (__arm_vreinterpretq_u64_s8): Likewise.
15780         (__arm_vreinterpretq_u64_u16): Likewise.
15781         (__arm_vreinterpretq_u64_u32): Likewise.
15782         (__arm_vreinterpretq_u64_u8): Likewise.
15783         (__arm_vreinterpretq_u8_s16): Likewise.
15784         (__arm_vreinterpretq_u8_s32): Likewise.
15785         (__arm_vreinterpretq_u8_s64): Likewise.
15786         (__arm_vreinterpretq_u8_s8): Likewise.
15787         (__arm_vreinterpretq_u8_u16): Likewise.
15788         (__arm_vreinterpretq_u8_u32): Likewise.
15789         (__arm_vreinterpretq_u8_u64): Likewise.
15790         (__arm_vreinterpretq_s32_f16): Likewise.
15791         (__arm_vreinterpretq_s32_f32): Likewise.
15792         (__arm_vreinterpretq_s16_f16): Likewise.
15793         (__arm_vreinterpretq_s16_f32): Likewise.
15794         (__arm_vreinterpretq_s64_f16): Likewise.
15795         (__arm_vreinterpretq_s64_f32): Likewise.
15796         (__arm_vreinterpretq_s8_f16): Likewise.
15797         (__arm_vreinterpretq_s8_f32): Likewise.
15798         (__arm_vreinterpretq_u16_f16): Likewise.
15799         (__arm_vreinterpretq_u16_f32): Likewise.
15800         (__arm_vreinterpretq_u32_f16): Likewise.
15801         (__arm_vreinterpretq_u32_f32): Likewise.
15802         (__arm_vreinterpretq_u64_f16): Likewise.
15803         (__arm_vreinterpretq_u64_f32): Likewise.
15804         (__arm_vreinterpretq_u8_f16): Likewise.
15805         (__arm_vreinterpretq_u8_f32): Likewise.
15806         (__arm_vreinterpretq_f16_f32): Likewise.
15807         (__arm_vreinterpretq_f16_s16): Likewise.
15808         (__arm_vreinterpretq_f16_s32): Likewise.
15809         (__arm_vreinterpretq_f16_s64): Likewise.
15810         (__arm_vreinterpretq_f16_s8): Likewise.
15811         (__arm_vreinterpretq_f16_u16): Likewise.
15812         (__arm_vreinterpretq_f16_u32): Likewise.
15813         (__arm_vreinterpretq_f16_u64): Likewise.
15814         (__arm_vreinterpretq_f16_u8): Likewise.
15815         (__arm_vreinterpretq_f32_f16): Likewise.
15816         (__arm_vreinterpretq_f32_s16): Likewise.
15817         (__arm_vreinterpretq_f32_s32): Likewise.
15818         (__arm_vreinterpretq_f32_s64): Likewise.
15819         (__arm_vreinterpretq_f32_s8): Likewise.
15820         (__arm_vreinterpretq_f32_u16): Likewise.
15821         (__arm_vreinterpretq_f32_u32): Likewise.
15822         (__arm_vreinterpretq_f32_u64): Likewise.
15823         (__arm_vreinterpretq_f32_u8): Likewise.
15824         (__arm_vreinterpretq_s16): Likewise.
15825         (__arm_vreinterpretq_s32): Likewise.
15826         (__arm_vreinterpretq_s64): Likewise.
15827         (__arm_vreinterpretq_s8): Likewise.
15828         (__arm_vreinterpretq_u16): Likewise.
15829         (__arm_vreinterpretq_u32): Likewise.
15830         (__arm_vreinterpretq_u64): Likewise.
15831         (__arm_vreinterpretq_u8): Likewise.
15832         (__arm_vreinterpretq_f16): Likewise.
15833         (__arm_vreinterpretq_f32): Likewise.
15834         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
15835         * config/arm/unspecs.md: (REINTERPRET): New unspec.
15837 2023-05-03  Murray Steele  <murray.steele@arm.com>
15838             Christophe Lyon  <christophe.lyon@arm.com>
15839             Christophe Lyon   <christophe.lyon@arm.com
15841         * config.gcc: Add arm-mve-builtins-base.o and
15842         arm-mve-builtins-shapes.o to extra_objs.
15843         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
15844         numberspace.
15845         (arm_expand_builtin): Likewise
15846         (arm_check_builtin_call): Likewise
15847         (arm_describe_resolver): Likewise.
15848         * config/arm/arm-builtins.h (enum resolver_ident): Add
15849         arm_mve_resolver.
15850         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
15851         (arm_resolve_overloaded_builtin): Handle MVE builtins.
15852         (arm_register_target_pragmas): Register arm_check_builtin_call.
15853         * config/arm/arm-mve-builtins.cc (class registered_function): New
15854         class.
15855         (struct registered_function_hasher): New struct.
15856         (pred_suffixes): New table.
15857         (mode_suffixes): New table.
15858         (type_suffix_info): New table.
15859         (TYPES_float16): New.
15860         (TYPES_all_float): New.
15861         (TYPES_integer_8): New.
15862         (TYPES_integer_8_16): New.
15863         (TYPES_integer_16_32): New.
15864         (TYPES_integer_32): New.
15865         (TYPES_signed_16_32): New.
15866         (TYPES_signed_32): New.
15867         (TYPES_all_signed): New.
15868         (TYPES_all_unsigned): New.
15869         (TYPES_all_integer): New.
15870         (TYPES_all_integer_with_64): New.
15871         (DEF_VECTOR_TYPE): New.
15872         (DEF_DOUBLE_TYPE): New.
15873         (DEF_MVE_TYPES_ARRAY): New.
15874         (all_integer): New.
15875         (all_integer_with_64): New.
15876         (float16): New.
15877         (all_float): New.
15878         (all_signed): New.
15879         (all_unsigned): New.
15880         (integer_8): New.
15881         (integer_8_16): New.
15882         (integer_16_32): New.
15883         (integer_32): New.
15884         (signed_16_32): New.
15885         (signed_32): New.
15886         (register_vector_type): Use void_type_node for mve.fp-only types when
15887         mve.fp is not enabled.
15888         (register_builtin_tuple_types): Likewise.
15889         (handle_arm_mve_h): New function..
15890         (matches_type_p): Likewise..
15891         (report_out_of_range): Likewise.
15892         (report_not_enum): Likewise.
15893         (report_missing_float): Likewise.
15894         (report_non_ice): Likewise.
15895         (check_requires_float): Likewise.
15896         (function_instance::hash): Likewise
15897         (function_instance::call_properties): Likewise.
15898         (function_instance::reads_global_state_p): Likewise.
15899         (function_instance::modifies_global_state_p): Likewise.
15900         (function_instance::could_trap_p): Likewise.
15901         (function_instance::has_inactive_argument): Likewise.
15902         (registered_function_hasher::hash): Likewise.
15903         (registered_function_hasher::equal): Likewise.
15904         (function_builder::function_builder): Likewise.
15905         (function_builder::~function_builder): Likewise.
15906         (function_builder::append_name): Likewise.
15907         (function_builder::finish_name): Likewise.
15908         (function_builder::get_name): Likewise.
15909         (add_attribute): Likewise.
15910         (function_builder::get_attributes): Likewise.
15911         (function_builder::add_function): Likewise.
15912         (function_builder::add_unique_function): Likewise.
15913         (function_builder::add_overloaded_function): Likewise.
15914         (function_builder::add_overloaded_functions): Likewise.
15915         (function_builder::register_function_group): Likewise.
15916         (function_call_info::function_call_info): Likewise.
15917         (function_resolver::function_resolver): Likewise.
15918         (function_resolver::get_vector_type): Likewise.
15919         (function_resolver::get_scalar_type_name): Likewise.
15920         (function_resolver::get_argument_type): Likewise.
15921         (function_resolver::scalar_argument_p): Likewise.
15922         (function_resolver::report_no_such_form): Likewise.
15923         (function_resolver::lookup_form): Likewise.
15924         (function_resolver::resolve_to): Likewise.
15925         (function_resolver::infer_vector_or_tuple_type): Likewise.
15926         (function_resolver::infer_vector_type): Likewise.
15927         (function_resolver::require_vector_or_scalar_type): Likewise.
15928         (function_resolver::require_vector_type): Likewise.
15929         (function_resolver::require_matching_vector_type): Likewise.
15930         (function_resolver::require_derived_vector_type): Likewise.
15931         (function_resolver::require_derived_scalar_type): Likewise.
15932         (function_resolver::require_integer_immediate): Likewise.
15933         (function_resolver::require_scalar_type): Likewise.
15934         (function_resolver::check_num_arguments): Likewise.
15935         (function_resolver::check_gp_argument): Likewise.
15936         (function_resolver::finish_opt_n_resolution): Likewise.
15937         (function_resolver::resolve_unary): Likewise.
15938         (function_resolver::resolve_unary_n): Likewise.
15939         (function_resolver::resolve_uniform): Likewise.
15940         (function_resolver::resolve_uniform_opt_n): Likewise.
15941         (function_resolver::resolve): Likewise.
15942         (function_checker::function_checker): Likewise.
15943         (function_checker::argument_exists_p): Likewise.
15944         (function_checker::require_immediate): Likewise.
15945         (function_checker::require_immediate_enum): Likewise.
15946         (function_checker::require_immediate_range): Likewise.
15947         (function_checker::check): Likewise.
15948         (gimple_folder::gimple_folder): Likewise.
15949         (gimple_folder::fold): Likewise.
15950         (function_expander::function_expander): Likewise.
15951         (function_expander::direct_optab_handler): Likewise.
15952         (function_expander::get_fallback_value): Likewise.
15953         (function_expander::get_reg_target): Likewise.
15954         (function_expander::add_output_operand): Likewise.
15955         (function_expander::add_input_operand): Likewise.
15956         (function_expander::add_integer_operand): Likewise.
15957         (function_expander::generate_insn): Likewise.
15958         (function_expander::use_exact_insn): Likewise.
15959         (function_expander::use_unpred_insn): Likewise.
15960         (function_expander::use_pred_x_insn): Likewise.
15961         (function_expander::use_cond_insn): Likewise.
15962         (function_expander::map_to_rtx_codes): Likewise.
15963         (function_expander::expand): Likewise.
15964         (resolve_overloaded_builtin): Likewise.
15965         (check_builtin_call): Likewise.
15966         (gimple_fold_builtin): Likewise.
15967         (expand_builtin): Likewise.
15968         (gt_ggc_mx): Likewise.
15969         (gt_pch_nx): Likewise.
15970         (gt_pch_nx): Likewise.
15971         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
15972         (s16): Likewise.
15973         (s32): Likewise.
15974         (s64): Likewise.
15975         (u8): Likewise.
15976         (u16): Likewise.
15977         (u32): Likewise.
15978         (u64): Likewise.
15979         (f16): Likewise.
15980         (f32): Likewise.
15981         (n): New mode.
15982         (offset): New mode.
15983         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
15984         (CP_READ_FPCR): Likewise.
15985         (CP_RAISE_FP_EXCEPTIONS): Likewise.
15986         (CP_READ_MEMORY): Likewise.
15987         (CP_WRITE_MEMORY): Likewise.
15988         (enum units_index): New enum.
15989         (enum predication_index): New.
15990         (enum type_class_index): New.
15991         (enum mode_suffix_index): New enum.
15992         (enum type_suffix_index): New.
15993         (struct mode_suffix_info): New struct.
15994         (struct type_suffix_info): New.
15995         (struct function_group_info): Likewise.
15996         (class function_instance): Likewise.
15997         (class registered_function): Likewise.
15998         (class function_builder): Likewise.
15999         (class function_call_info): Likewise.
16000         (class function_resolver): Likewise.
16001         (class function_checker): Likewise.
16002         (class gimple_folder): Likewise.
16003         (class function_expander): Likewise.
16004         (get_mve_pred16_t): Likewise.
16005         (find_mode_suffix): New function.
16006         (class function_base): Likewise.
16007         (class function_shape): Likewise.
16008         (function_instance::operator==): New function.
16009         (function_instance::operator!=): Likewise.
16010         (function_instance::vectors_per_tuple): Likewise.
16011         (function_instance::mode_suffix): Likewise.
16012         (function_instance::type_suffix): Likewise.
16013         (function_instance::scalar_type): Likewise.
16014         (function_instance::vector_type): Likewise.
16015         (function_instance::tuple_type): Likewise.
16016         (function_instance::vector_mode): Likewise.
16017         (function_call_info::function_returns_void_p): Likewise.
16018         (function_base::call_properties): Likewise.
16019         * config/arm/arm-protos.h (enum arm_builtin_class): Add
16020         ARM_BUILTIN_MVE.
16021         (handle_arm_mve_h): New.
16022         (resolve_overloaded_builtin): New.
16023         (check_builtin_call): New.
16024         (gimple_fold_builtin): New.
16025         (expand_builtin): New.
16026         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
16027         arm_gimple_fold_builtin.
16028         (arm_gimple_fold_builtin): New function.
16029         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
16030         * config/arm/predicates.md (arm_any_register_operand): New predicate.
16031         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
16032         (arm-mve-builtins-shapes.o): New target.
16033         (arm-mve-builtins-base.o): New target.
16034         * config/arm/arm-mve-builtins-base.cc: New file.
16035         * config/arm/arm-mve-builtins-base.def: New file.
16036         * config/arm/arm-mve-builtins-base.h: New file.
16037         * config/arm/arm-mve-builtins-functions.h: New file.
16038         * config/arm/arm-mve-builtins-shapes.cc: New file.
16039         * config/arm/arm-mve-builtins-shapes.h: New file.
16041 2023-05-03  Murray Steele  <murray.steele@arm.com>
16042             Christophe Lyon  <christophe.lyon@arm.com>
16043             Christophe Lyon   <christophe.lyon@arm.com>
16045         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
16046         New function.
16047         (arm_init_builtin): Use arm_general_add_builtin_function instead
16048         of arm_add_builtin_function.
16049         (arm_init_acle_builtins): Likewise.
16050         (arm_init_mve_builtins): Likewise.
16051         (arm_init_crypto_builtins): Likewise.
16052         (arm_init_builtins): Likewise.
16053         (arm_general_builtin_decl): New function.
16054         (arm_builtin_decl): Defer to numberspace-specialized functions.
16055         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
16056         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
16057         (arm_general_expand_builtin_1): ... specialize for general builtins.
16058         (arm_expand_acle_builtin): Use arm_general_expand_builtin
16059         instead of arm_expand_builtin.
16060         (arm_expand_mve_builtin): Likewise.
16061         (arm_expand_neon_builtin): Likewise.
16062         (arm_expand_vfp_builtin): Likewise.
16063         (arm_general_expand_builtin): New function.
16064         (arm_expand_builtin): Specialize for general builtins.
16065         (arm_general_check_builtin_call): New function.
16066         (arm_check_builtin_call): Specialize for general builtins.
16067         (arm_describe_resolver): Validate numberspace.
16068         (arm_cde_end_args): Likewise.
16069         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
16070         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
16072 2023-05-03  Martin Liska  <mliska@suse.cz>
16074         PR target/109713
16075         * config/riscv/sync.md: Add gcc_unreachable to a switch.
16077 2023-05-03  Richard Biener  <rguenther@suse.de>
16079         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
16080         (patch_loop_exit): Likewise.
16081         (connect_loops): Likewise.
16082         (split_loop): Likewise.
16083         (control_dep_semi_invariant_p): Likewise.
16084         (do_split_loop_on_cond): Likewise.
16085         (split_loop_on_cond): Likewise.
16086         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
16087         Likewise.
16088         (simplify_loop_version): Likewise.
16089         (evaluate_bbs): Likewise.
16090         (find_loop_guard): Likewise.
16091         (clean_up_after_unswitching): Likewise.
16092         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
16093         Likewise.
16094         (optimize_spaceship): Take a gcond * argument, avoid
16095         last_stmt.
16096         (math_opts_dom_walker::after_dom_children): Adjust call to
16097         optimize_spaceship.
16098         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
16099         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
16100         Likewise.
16102 2023-05-03  Andreas Schwab  <schwab@suse.de>
16104         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
16106 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16108         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
16109         New function.
16110         (class vlseg): New class.
16111         (class vsseg): Ditto.
16112         (class vlsseg): Ditto.
16113         (class vssseg): Ditto.
16114         (class seg_indexed_load): Ditto.
16115         (class seg_indexed_store): Ditto.
16116         (class vlsegff): Ditto.
16117         (BASE): Ditto.
16118         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16119         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
16120         Ditto.
16121         (vsseg): Ditto.
16122         (vlsseg): Ditto.
16123         (vssseg): Ditto.
16124         (vluxseg): Ditto.
16125         (vloxseg): Ditto.
16126         (vsuxseg): Ditto.
16127         (vsoxseg): Ditto.
16128         (vlsegff): Ditto.
16129         * config/riscv/riscv-vector-builtins-shapes.cc (struct
16130         seg_loadstore_def): Ditto.
16131         (struct seg_indexed_loadstore_def): Ditto.
16132         (struct seg_fault_load_def): Ditto.
16133         (SHAPE): Ditto.
16134         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16135         * config/riscv/riscv-vector-builtins.cc
16136         (function_builder::append_nf): New function.
16137         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
16138         Change ptr from double into float.
16139         (vfloat32m1x3_t): Ditto.
16140         (vfloat32m1x4_t): Ditto.
16141         (vfloat32m1x5_t): Ditto.
16142         (vfloat32m1x6_t): Ditto.
16143         (vfloat32m1x7_t): Ditto.
16144         (vfloat32m1x8_t): Ditto.
16145         (vfloat32m2x2_t): Ditto.
16146         (vfloat32m2x3_t): Ditto.
16147         (vfloat32m2x4_t): Ditto.
16148         (vfloat32m4x2_t): Ditto.
16149         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
16150         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
16151         segment ff load.
16152         * config/riscv/riscv.md: Add segment instructions.
16153         * config/riscv/vector-iterators.md: Support segment intrinsics.
16154         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
16155         pattern.
16156         (@pred_unit_strided_store<mode>): Ditto.
16157         (@pred_strided_load<mode>): Ditto.
16158         (@pred_strided_store<mode>): Ditto.
16159         (@pred_fault_load<mode>): Ditto.
16160         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
16161         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
16162         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
16163         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
16164         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
16165         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
16166         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
16167         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
16168         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
16169         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
16170         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
16171         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
16172         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
16173         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
16175 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16177         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
16178         tuple type support.
16179         (inttype): Ditto.
16180         (floattype): Ditto.
16181         (main): Ditto.
16182         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
16183         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
16184         tuple type vset.
16185         (vget): Add tuple type vget.
16186         * config/riscv/riscv-vector-builtins-types.def
16187         (DEF_RVV_TUPLE_OPS): New macro.
16188         (vint8mf8x2_t): Ditto.
16189         (vuint8mf8x2_t): Ditto.
16190         (vint8mf8x3_t): Ditto.
16191         (vuint8mf8x3_t): Ditto.
16192         (vint8mf8x4_t): Ditto.
16193         (vuint8mf8x4_t): Ditto.
16194         (vint8mf8x5_t): Ditto.
16195         (vuint8mf8x5_t): Ditto.
16196         (vint8mf8x6_t): Ditto.
16197         (vuint8mf8x6_t): Ditto.
16198         (vint8mf8x7_t): Ditto.
16199         (vuint8mf8x7_t): Ditto.
16200         (vint8mf8x8_t): Ditto.
16201         (vuint8mf8x8_t): Ditto.
16202         (vint8mf4x2_t): Ditto.
16203         (vuint8mf4x2_t): Ditto.
16204         (vint8mf4x3_t): Ditto.
16205         (vuint8mf4x3_t): Ditto.
16206         (vint8mf4x4_t): Ditto.
16207         (vuint8mf4x4_t): Ditto.
16208         (vint8mf4x5_t): Ditto.
16209         (vuint8mf4x5_t): Ditto.
16210         (vint8mf4x6_t): Ditto.
16211         (vuint8mf4x6_t): Ditto.
16212         (vint8mf4x7_t): Ditto.
16213         (vuint8mf4x7_t): Ditto.
16214         (vint8mf4x8_t): Ditto.
16215         (vuint8mf4x8_t): Ditto.
16216         (vint8mf2x2_t): Ditto.
16217         (vuint8mf2x2_t): Ditto.
16218         (vint8mf2x3_t): Ditto.
16219         (vuint8mf2x3_t): Ditto.
16220         (vint8mf2x4_t): Ditto.
16221         (vuint8mf2x4_t): Ditto.
16222         (vint8mf2x5_t): Ditto.
16223         (vuint8mf2x5_t): Ditto.
16224         (vint8mf2x6_t): Ditto.
16225         (vuint8mf2x6_t): Ditto.
16226         (vint8mf2x7_t): Ditto.
16227         (vuint8mf2x7_t): Ditto.
16228         (vint8mf2x8_t): Ditto.
16229         (vuint8mf2x8_t): Ditto.
16230         (vint8m1x2_t): Ditto.
16231         (vuint8m1x2_t): Ditto.
16232         (vint8m1x3_t): Ditto.
16233         (vuint8m1x3_t): Ditto.
16234         (vint8m1x4_t): Ditto.
16235         (vuint8m1x4_t): Ditto.
16236         (vint8m1x5_t): Ditto.
16237         (vuint8m1x5_t): Ditto.
16238         (vint8m1x6_t): Ditto.
16239         (vuint8m1x6_t): Ditto.
16240         (vint8m1x7_t): Ditto.
16241         (vuint8m1x7_t): Ditto.
16242         (vint8m1x8_t): Ditto.
16243         (vuint8m1x8_t): Ditto.
16244         (vint8m2x2_t): Ditto.
16245         (vuint8m2x2_t): Ditto.
16246         (vint8m2x3_t): Ditto.
16247         (vuint8m2x3_t): Ditto.
16248         (vint8m2x4_t): Ditto.
16249         (vuint8m2x4_t): Ditto.
16250         (vint8m4x2_t): Ditto.
16251         (vuint8m4x2_t): Ditto.
16252         (vint16mf4x2_t): Ditto.
16253         (vuint16mf4x2_t): Ditto.
16254         (vint16mf4x3_t): Ditto.
16255         (vuint16mf4x3_t): Ditto.
16256         (vint16mf4x4_t): Ditto.
16257         (vuint16mf4x4_t): Ditto.
16258         (vint16mf4x5_t): Ditto.
16259         (vuint16mf4x5_t): Ditto.
16260         (vint16mf4x6_t): Ditto.
16261         (vuint16mf4x6_t): Ditto.
16262         (vint16mf4x7_t): Ditto.
16263         (vuint16mf4x7_t): Ditto.
16264         (vint16mf4x8_t): Ditto.
16265         (vuint16mf4x8_t): Ditto.
16266         (vint16mf2x2_t): Ditto.
16267         (vuint16mf2x2_t): Ditto.
16268         (vint16mf2x3_t): Ditto.
16269         (vuint16mf2x3_t): Ditto.
16270         (vint16mf2x4_t): Ditto.
16271         (vuint16mf2x4_t): Ditto.
16272         (vint16mf2x5_t): Ditto.
16273         (vuint16mf2x5_t): Ditto.
16274         (vint16mf2x6_t): Ditto.
16275         (vuint16mf2x6_t): Ditto.
16276         (vint16mf2x7_t): Ditto.
16277         (vuint16mf2x7_t): Ditto.
16278         (vint16mf2x8_t): Ditto.
16279         (vuint16mf2x8_t): Ditto.
16280         (vint16m1x2_t): Ditto.
16281         (vuint16m1x2_t): Ditto.
16282         (vint16m1x3_t): Ditto.
16283         (vuint16m1x3_t): Ditto.
16284         (vint16m1x4_t): Ditto.
16285         (vuint16m1x4_t): Ditto.
16286         (vint16m1x5_t): Ditto.
16287         (vuint16m1x5_t): Ditto.
16288         (vint16m1x6_t): Ditto.
16289         (vuint16m1x6_t): Ditto.
16290         (vint16m1x7_t): Ditto.
16291         (vuint16m1x7_t): Ditto.
16292         (vint16m1x8_t): Ditto.
16293         (vuint16m1x8_t): Ditto.
16294         (vint16m2x2_t): Ditto.
16295         (vuint16m2x2_t): Ditto.
16296         (vint16m2x3_t): Ditto.
16297         (vuint16m2x3_t): Ditto.
16298         (vint16m2x4_t): Ditto.
16299         (vuint16m2x4_t): Ditto.
16300         (vint16m4x2_t): Ditto.
16301         (vuint16m4x2_t): Ditto.
16302         (vint32mf2x2_t): Ditto.
16303         (vuint32mf2x2_t): Ditto.
16304         (vint32mf2x3_t): Ditto.
16305         (vuint32mf2x3_t): Ditto.
16306         (vint32mf2x4_t): Ditto.
16307         (vuint32mf2x4_t): Ditto.
16308         (vint32mf2x5_t): Ditto.
16309         (vuint32mf2x5_t): Ditto.
16310         (vint32mf2x6_t): Ditto.
16311         (vuint32mf2x6_t): Ditto.
16312         (vint32mf2x7_t): Ditto.
16313         (vuint32mf2x7_t): Ditto.
16314         (vint32mf2x8_t): Ditto.
16315         (vuint32mf2x8_t): Ditto.
16316         (vint32m1x2_t): Ditto.
16317         (vuint32m1x2_t): Ditto.
16318         (vint32m1x3_t): Ditto.
16319         (vuint32m1x3_t): Ditto.
16320         (vint32m1x4_t): Ditto.
16321         (vuint32m1x4_t): Ditto.
16322         (vint32m1x5_t): Ditto.
16323         (vuint32m1x5_t): Ditto.
16324         (vint32m1x6_t): Ditto.
16325         (vuint32m1x6_t): Ditto.
16326         (vint32m1x7_t): Ditto.
16327         (vuint32m1x7_t): Ditto.
16328         (vint32m1x8_t): Ditto.
16329         (vuint32m1x8_t): Ditto.
16330         (vint32m2x2_t): Ditto.
16331         (vuint32m2x2_t): Ditto.
16332         (vint32m2x3_t): Ditto.
16333         (vuint32m2x3_t): Ditto.
16334         (vint32m2x4_t): Ditto.
16335         (vuint32m2x4_t): Ditto.
16336         (vint32m4x2_t): Ditto.
16337         (vuint32m4x2_t): Ditto.
16338         (vint64m1x2_t): Ditto.
16339         (vuint64m1x2_t): Ditto.
16340         (vint64m1x3_t): Ditto.
16341         (vuint64m1x3_t): Ditto.
16342         (vint64m1x4_t): Ditto.
16343         (vuint64m1x4_t): Ditto.
16344         (vint64m1x5_t): Ditto.
16345         (vuint64m1x5_t): Ditto.
16346         (vint64m1x6_t): Ditto.
16347         (vuint64m1x6_t): Ditto.
16348         (vint64m1x7_t): Ditto.
16349         (vuint64m1x7_t): Ditto.
16350         (vint64m1x8_t): Ditto.
16351         (vuint64m1x8_t): Ditto.
16352         (vint64m2x2_t): Ditto.
16353         (vuint64m2x2_t): Ditto.
16354         (vint64m2x3_t): Ditto.
16355         (vuint64m2x3_t): Ditto.
16356         (vint64m2x4_t): Ditto.
16357         (vuint64m2x4_t): Ditto.
16358         (vint64m4x2_t): Ditto.
16359         (vuint64m4x2_t): Ditto.
16360         (vfloat32mf2x2_t): Ditto.
16361         (vfloat32mf2x3_t): Ditto.
16362         (vfloat32mf2x4_t): Ditto.
16363         (vfloat32mf2x5_t): Ditto.
16364         (vfloat32mf2x6_t): Ditto.
16365         (vfloat32mf2x7_t): Ditto.
16366         (vfloat32mf2x8_t): Ditto.
16367         (vfloat32m1x2_t): Ditto.
16368         (vfloat32m1x3_t): Ditto.
16369         (vfloat32m1x4_t): Ditto.
16370         (vfloat32m1x5_t): Ditto.
16371         (vfloat32m1x6_t): Ditto.
16372         (vfloat32m1x7_t): Ditto.
16373         (vfloat32m1x8_t): Ditto.
16374         (vfloat32m2x2_t): Ditto.
16375         (vfloat32m2x3_t): Ditto.
16376         (vfloat32m2x4_t): Ditto.
16377         (vfloat32m4x2_t): Ditto.
16378         (vfloat64m1x2_t): Ditto.
16379         (vfloat64m1x3_t): Ditto.
16380         (vfloat64m1x4_t): Ditto.
16381         (vfloat64m1x5_t): Ditto.
16382         (vfloat64m1x6_t): Ditto.
16383         (vfloat64m1x7_t): Ditto.
16384         (vfloat64m1x8_t): Ditto.
16385         (vfloat64m2x2_t): Ditto.
16386         (vfloat64m2x3_t): Ditto.
16387         (vfloat64m2x4_t): Ditto.
16388         (vfloat64m4x2_t): Ditto.
16389         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
16390         Ditto.
16391         (DEF_RVV_TYPE_INDEX): Ditto.
16392         (rvv_arg_type_info::get_tuple_subpart_type): New function.
16393         (DEF_RVV_TUPLE_TYPE): New macro.
16394         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
16395         Adapt for tuple vget/vset support.
16396         (vint8mf4_t): Ditto.
16397         (vuint8mf4_t): Ditto.
16398         (vint8mf2_t): Ditto.
16399         (vuint8mf2_t): Ditto.
16400         (vint8m1_t): Ditto.
16401         (vuint8m1_t): Ditto.
16402         (vint8m2_t): Ditto.
16403         (vuint8m2_t): Ditto.
16404         (vint8m4_t): Ditto.
16405         (vuint8m4_t): Ditto.
16406         (vint8m8_t): Ditto.
16407         (vuint8m8_t): Ditto.
16408         (vint16mf4_t): Ditto.
16409         (vuint16mf4_t): Ditto.
16410         (vint16mf2_t): Ditto.
16411         (vuint16mf2_t): Ditto.
16412         (vint16m1_t): Ditto.
16413         (vuint16m1_t): Ditto.
16414         (vint16m2_t): Ditto.
16415         (vuint16m2_t): Ditto.
16416         (vint16m4_t): Ditto.
16417         (vuint16m4_t): Ditto.
16418         (vint16m8_t): Ditto.
16419         (vuint16m8_t): Ditto.
16420         (vint32mf2_t): Ditto.
16421         (vuint32mf2_t): Ditto.
16422         (vint32m1_t): Ditto.
16423         (vuint32m1_t): Ditto.
16424         (vint32m2_t): Ditto.
16425         (vuint32m2_t): Ditto.
16426         (vint32m4_t): Ditto.
16427         (vuint32m4_t): Ditto.
16428         (vint32m8_t): Ditto.
16429         (vuint32m8_t): Ditto.
16430         (vint64m1_t): Ditto.
16431         (vuint64m1_t): Ditto.
16432         (vint64m2_t): Ditto.
16433         (vuint64m2_t): Ditto.
16434         (vint64m4_t): Ditto.
16435         (vuint64m4_t): Ditto.
16436         (vint64m8_t): Ditto.
16437         (vuint64m8_t): Ditto.
16438         (vfloat32mf2_t): Ditto.
16439         (vfloat32m1_t): Ditto.
16440         (vfloat32m2_t): Ditto.
16441         (vfloat32m4_t): Ditto.
16442         (vfloat32m8_t): Ditto.
16443         (vfloat64m1_t): Ditto.
16444         (vfloat64m2_t): Ditto.
16445         (vfloat64m4_t): Ditto.
16446         (vfloat64m8_t): Ditto.
16447         (tuple_subpart): Add tuple subpart base type.
16448         * config/riscv/riscv-vector-builtins.h (struct
16449         rvv_arg_type_info): Ditto.
16450         (tuple_type_field): New function.
16452 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16454         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
16455         (RVV_TUPLE_PARTIAL_MODES): Ditto.
16456         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
16457         function.
16458         (get_nf): Ditto.
16459         (get_subpart_mode): Ditto.
16460         (get_tuple_mode): Ditto.
16461         (expand_tuple_move): Ditto.
16462         * config/riscv/riscv-v.cc (ENTRY): New macro.
16463         (TUPLE_ENTRY): Ditto.
16464         (get_nf): New function.
16465         (get_subpart_mode): Ditto.
16466         (get_tuple_mode): Ditto.
16467         (expand_tuple_move): Ditto.
16468         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
16469         New macro.
16470         (register_tuple_type): New function
16471         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
16472         New macro.
16473         (vint8mf8x2_t): New macro.
16474         (vuint8mf8x2_t): Ditto.
16475         (vint8mf8x3_t): Ditto.
16476         (vuint8mf8x3_t): Ditto.
16477         (vint8mf8x4_t): Ditto.
16478         (vuint8mf8x4_t): Ditto.
16479         (vint8mf8x5_t): Ditto.
16480         (vuint8mf8x5_t): Ditto.
16481         (vint8mf8x6_t): Ditto.
16482         (vuint8mf8x6_t): Ditto.
16483         (vint8mf8x7_t): Ditto.
16484         (vuint8mf8x7_t): Ditto.
16485         (vint8mf8x8_t): Ditto.
16486         (vuint8mf8x8_t): Ditto.
16487         (vint8mf4x2_t): Ditto.
16488         (vuint8mf4x2_t): Ditto.
16489         (vint8mf4x3_t): Ditto.
16490         (vuint8mf4x3_t): Ditto.
16491         (vint8mf4x4_t): Ditto.
16492         (vuint8mf4x4_t): Ditto.
16493         (vint8mf4x5_t): Ditto.
16494         (vuint8mf4x5_t): Ditto.
16495         (vint8mf4x6_t): Ditto.
16496         (vuint8mf4x6_t): Ditto.
16497         (vint8mf4x7_t): Ditto.
16498         (vuint8mf4x7_t): Ditto.
16499         (vint8mf4x8_t): Ditto.
16500         (vuint8mf4x8_t): Ditto.
16501         (vint8mf2x2_t): Ditto.
16502         (vuint8mf2x2_t): Ditto.
16503         (vint8mf2x3_t): Ditto.
16504         (vuint8mf2x3_t): Ditto.
16505         (vint8mf2x4_t): Ditto.
16506         (vuint8mf2x4_t): Ditto.
16507         (vint8mf2x5_t): Ditto.
16508         (vuint8mf2x5_t): Ditto.
16509         (vint8mf2x6_t): Ditto.
16510         (vuint8mf2x6_t): Ditto.
16511         (vint8mf2x7_t): Ditto.
16512         (vuint8mf2x7_t): Ditto.
16513         (vint8mf2x8_t): Ditto.
16514         (vuint8mf2x8_t): Ditto.
16515         (vint8m1x2_t): Ditto.
16516         (vuint8m1x2_t): Ditto.
16517         (vint8m1x3_t): Ditto.
16518         (vuint8m1x3_t): Ditto.
16519         (vint8m1x4_t): Ditto.
16520         (vuint8m1x4_t): Ditto.
16521         (vint8m1x5_t): Ditto.
16522         (vuint8m1x5_t): Ditto.
16523         (vint8m1x6_t): Ditto.
16524         (vuint8m1x6_t): Ditto.
16525         (vint8m1x7_t): Ditto.
16526         (vuint8m1x7_t): Ditto.
16527         (vint8m1x8_t): Ditto.
16528         (vuint8m1x8_t): Ditto.
16529         (vint8m2x2_t): Ditto.
16530         (vuint8m2x2_t): Ditto.
16531         (vint8m2x3_t): Ditto.
16532         (vuint8m2x3_t): Ditto.
16533         (vint8m2x4_t): Ditto.
16534         (vuint8m2x4_t): Ditto.
16535         (vint8m4x2_t): Ditto.
16536         (vuint8m4x2_t): Ditto.
16537         (vint16mf4x2_t): Ditto.
16538         (vuint16mf4x2_t): Ditto.
16539         (vint16mf4x3_t): Ditto.
16540         (vuint16mf4x3_t): Ditto.
16541         (vint16mf4x4_t): Ditto.
16542         (vuint16mf4x4_t): Ditto.
16543         (vint16mf4x5_t): Ditto.
16544         (vuint16mf4x5_t): Ditto.
16545         (vint16mf4x6_t): Ditto.
16546         (vuint16mf4x6_t): Ditto.
16547         (vint16mf4x7_t): Ditto.
16548         (vuint16mf4x7_t): Ditto.
16549         (vint16mf4x8_t): Ditto.
16550         (vuint16mf4x8_t): Ditto.
16551         (vint16mf2x2_t): Ditto.
16552         (vuint16mf2x2_t): Ditto.
16553         (vint16mf2x3_t): Ditto.
16554         (vuint16mf2x3_t): Ditto.
16555         (vint16mf2x4_t): Ditto.
16556         (vuint16mf2x4_t): Ditto.
16557         (vint16mf2x5_t): Ditto.
16558         (vuint16mf2x5_t): Ditto.
16559         (vint16mf2x6_t): Ditto.
16560         (vuint16mf2x6_t): Ditto.
16561         (vint16mf2x7_t): Ditto.
16562         (vuint16mf2x7_t): Ditto.
16563         (vint16mf2x8_t): Ditto.
16564         (vuint16mf2x8_t): Ditto.
16565         (vint16m1x2_t): Ditto.
16566         (vuint16m1x2_t): Ditto.
16567         (vint16m1x3_t): Ditto.
16568         (vuint16m1x3_t): Ditto.
16569         (vint16m1x4_t): Ditto.
16570         (vuint16m1x4_t): Ditto.
16571         (vint16m1x5_t): Ditto.
16572         (vuint16m1x5_t): Ditto.
16573         (vint16m1x6_t): Ditto.
16574         (vuint16m1x6_t): Ditto.
16575         (vint16m1x7_t): Ditto.
16576         (vuint16m1x7_t): Ditto.
16577         (vint16m1x8_t): Ditto.
16578         (vuint16m1x8_t): Ditto.
16579         (vint16m2x2_t): Ditto.
16580         (vuint16m2x2_t): Ditto.
16581         (vint16m2x3_t): Ditto.
16582         (vuint16m2x3_t): Ditto.
16583         (vint16m2x4_t): Ditto.
16584         (vuint16m2x4_t): Ditto.
16585         (vint16m4x2_t): Ditto.
16586         (vuint16m4x2_t): Ditto.
16587         (vint32mf2x2_t): Ditto.
16588         (vuint32mf2x2_t): Ditto.
16589         (vint32mf2x3_t): Ditto.
16590         (vuint32mf2x3_t): Ditto.
16591         (vint32mf2x4_t): Ditto.
16592         (vuint32mf2x4_t): Ditto.
16593         (vint32mf2x5_t): Ditto.
16594         (vuint32mf2x5_t): Ditto.
16595         (vint32mf2x6_t): Ditto.
16596         (vuint32mf2x6_t): Ditto.
16597         (vint32mf2x7_t): Ditto.
16598         (vuint32mf2x7_t): Ditto.
16599         (vint32mf2x8_t): Ditto.
16600         (vuint32mf2x8_t): Ditto.
16601         (vint32m1x2_t): Ditto.
16602         (vuint32m1x2_t): Ditto.
16603         (vint32m1x3_t): Ditto.
16604         (vuint32m1x3_t): Ditto.
16605         (vint32m1x4_t): Ditto.
16606         (vuint32m1x4_t): Ditto.
16607         (vint32m1x5_t): Ditto.
16608         (vuint32m1x5_t): Ditto.
16609         (vint32m1x6_t): Ditto.
16610         (vuint32m1x6_t): Ditto.
16611         (vint32m1x7_t): Ditto.
16612         (vuint32m1x7_t): Ditto.
16613         (vint32m1x8_t): Ditto.
16614         (vuint32m1x8_t): Ditto.
16615         (vint32m2x2_t): Ditto.
16616         (vuint32m2x2_t): Ditto.
16617         (vint32m2x3_t): Ditto.
16618         (vuint32m2x3_t): Ditto.
16619         (vint32m2x4_t): Ditto.
16620         (vuint32m2x4_t): Ditto.
16621         (vint32m4x2_t): Ditto.
16622         (vuint32m4x2_t): Ditto.
16623         (vint64m1x2_t): Ditto.
16624         (vuint64m1x2_t): Ditto.
16625         (vint64m1x3_t): Ditto.
16626         (vuint64m1x3_t): Ditto.
16627         (vint64m1x4_t): Ditto.
16628         (vuint64m1x4_t): Ditto.
16629         (vint64m1x5_t): Ditto.
16630         (vuint64m1x5_t): Ditto.
16631         (vint64m1x6_t): Ditto.
16632         (vuint64m1x6_t): Ditto.
16633         (vint64m1x7_t): Ditto.
16634         (vuint64m1x7_t): Ditto.
16635         (vint64m1x8_t): Ditto.
16636         (vuint64m1x8_t): Ditto.
16637         (vint64m2x2_t): Ditto.
16638         (vuint64m2x2_t): Ditto.
16639         (vint64m2x3_t): Ditto.
16640         (vuint64m2x3_t): Ditto.
16641         (vint64m2x4_t): Ditto.
16642         (vuint64m2x4_t): Ditto.
16643         (vint64m4x2_t): Ditto.
16644         (vuint64m4x2_t): Ditto.
16645         (vfloat32mf2x2_t): Ditto.
16646         (vfloat32mf2x3_t): Ditto.
16647         (vfloat32mf2x4_t): Ditto.
16648         (vfloat32mf2x5_t): Ditto.
16649         (vfloat32mf2x6_t): Ditto.
16650         (vfloat32mf2x7_t): Ditto.
16651         (vfloat32mf2x8_t): Ditto.
16652         (vfloat32m1x2_t): Ditto.
16653         (vfloat32m1x3_t): Ditto.
16654         (vfloat32m1x4_t): Ditto.
16655         (vfloat32m1x5_t): Ditto.
16656         (vfloat32m1x6_t): Ditto.
16657         (vfloat32m1x7_t): Ditto.
16658         (vfloat32m1x8_t): Ditto.
16659         (vfloat32m2x2_t): Ditto.
16660         (vfloat32m2x3_t): Ditto.
16661         (vfloat32m2x4_t): Ditto.
16662         (vfloat32m4x2_t): Ditto.
16663         (vfloat64m1x2_t): Ditto.
16664         (vfloat64m1x3_t): Ditto.
16665         (vfloat64m1x4_t): Ditto.
16666         (vfloat64m1x5_t): Ditto.
16667         (vfloat64m1x6_t): Ditto.
16668         (vfloat64m1x7_t): Ditto.
16669         (vfloat64m1x8_t): Ditto.
16670         (vfloat64m2x2_t): Ditto.
16671         (vfloat64m2x3_t): Ditto.
16672         (vfloat64m2x4_t): Ditto.
16673         (vfloat64m4x2_t): Ditto.
16674         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
16675         Ditto.
16676         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
16677         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
16678         function.
16679         (TUPLE_ENTRY): Ditto.
16680         (riscv_v_ext_mode_p): New function.
16681         (riscv_v_adjust_nunits): Add tuple mode adjustment.
16682         (riscv_classify_address): Ditto.
16683         (riscv_binary_cost): Ditto.
16684         (riscv_rtx_costs): Ditto.
16685         (riscv_secondary_memory_needed): Ditto.
16686         (riscv_hard_regno_nregs): Ditto.
16687         (riscv_hard_regno_mode_ok): Ditto.
16688         (riscv_vector_mode_supported_p): Ditto.
16689         (riscv_regmode_natural_size): Ditto.
16690         (riscv_array_mode): New function.
16691         (TARGET_ARRAY_MODE): New target hook.
16692         * config/riscv/riscv.md: Add tuple modes.
16693         * config/riscv/vector-iterators.md: Ditto.
16694         * config/riscv/vector.md (mov<mode>): Add tuple modes data
16695         movement.
16696         (*mov<VT:mode>_<P:mode>): Ditto.
16698 2023-05-03  Richard Biener  <rguenther@suse.de>
16700         * cse.cc (cse_insn): Track an equivalence to the destination
16701         separately and delay using src_related for it.
16703 2023-05-03  Richard Biener  <rguenther@suse.de>
16705         * cse.cc (HASH): Turn into inline function and mix
16706         in another HASH_SHIFT bits.
16707         (SAFE_HASH): Likewise.
16709 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16711         PR target/99195
16712         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
16713         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
16715 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16717         PR target/99195
16718         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
16719         (add<mode>3<vczle><vczbe>): ... This.
16720         (sub<mode>3): Rename to...
16721         (sub<mode>3<vczle><vczbe>): ... This.
16722         (mul<mode>3): Rename to...
16723         (mul<mode>3<vczle><vczbe>): ... This.
16724         (*div<mode>3): Rename to...
16725         (*div<mode>3<vczle><vczbe>): ... This.
16726         (neg<mode>2): Rename to...
16727         (neg<mode>2<vczle><vczbe>): ... This.
16728         (abs<mode>2): Rename to...
16729         (abs<mode>2<vczle><vczbe>): ... This.
16730         (<frint_pattern><mode>2): Rename to...
16731         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
16732         (<fmaxmin><mode>3): Rename to...
16733         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
16734         (*sqrt<mode>2): Rename to...
16735         (*sqrt<mode>2<vczle><vczbe>): ... This.
16737 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
16739         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
16741 2023-05-03  Martin Liska  <mliska@suse.cz>
16743         PR tree-optimization/109693
16744         * value-range-storage.cc (vrange_allocator::vrange_allocator):
16745         Remove unused field.
16746         * value-range-storage.h: Likewise.
16748 2023-05-02  Andrew Pinski  <apinski@marvell.com>
16750         * tree-ssa-phiopt.cc (move_stmt): New function.
16751         (match_simplify_replacement): Use move_stmt instead
16752         of the inlined version.
16754 2023-05-02  Andrew Pinski  <apinski@marvell.com>
16756         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
16757         pattern.
16759 2023-05-02  Andrew Pinski  <apinski@marvell.com>
16761         PR tree-optimization/109702
16762         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
16763         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
16765 2023-05-02  Andrew Pinski  <apinski@marvell.com>
16767         PR target/109657
16768         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
16769         insn_and_split pattern.
16771 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16773         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
16774         load mapping.
16776 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16778         * config/riscv/sync.md (mem_thread_fence_1): Change fence
16779         depending on the given memory model.
16781 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16783         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
16784         riscv_union_memmodels function to sync.md.
16785         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
16786         get the union of two memmodels in sync.md.
16787         (riscv_print_operand): Add %I and %J flags that output the
16788         optimal LR/SC flag bits for a given memory model.
16789         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
16790         bits on SC op and replace with optimized %I, %J flags.
16792 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16794         * config/riscv/riscv.cc
16795         (riscv_memmodel_needs_amo_release): Change function name.
16796         (riscv_print_operand): Remove unneeded %F case.
16797         * config/riscv/sync.md: Remove unneeded fences.
16799 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16801         PR target/89835
16802         * config/riscv/sync.md (atomic_store<mode>): Use simple store
16803         instruction in combination with fence(s).
16805 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16807         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
16808         of %A to include release bits.
16810 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16812         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
16813         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
16814         pair.
16816 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16818         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
16819         sequentially consistent LR.aqrl/SC.rl pairs.
16821 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
16823         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
16824         sanitize memmodel input with memmodel_base.
16826 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
16827             Pan Li  <pan2.li@intel.com>
16829         PR target/109617
16830         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
16832 2023-05-02  Romain Naour  <romain.naour@gmail.com>
16834         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
16835         the namespace.
16837 2023-05-02  Martin Liska  <mliska@suse.cz>
16839         * doc/invoke.texi: Update documentation based on param.opt file.
16841 2023-05-02  Richard Biener  <rguenther@suse.de>
16843         PR tree-optimization/109672
16844         * tree-vect-stmts.cc (vectorizable_operation): For plus,
16845         minus and negate always check the vector mode is word mode.
16847 2023-05-01  Andrew Pinski  <apinski@marvell.com>
16849         * tree-ssa-phiopt.cc: Update comment about
16850         how the transformation are implemented.
16852 2023-05-01  Jeff Law  <jlaw@ventanamicro>
16854         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
16856 2023-05-01  Jeff Law  <jlaw@ventanamicro>
16858         * config/cris/cris.cc (TARGET_LRA_P): Remove.
16859         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
16860         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
16861         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
16862         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
16863         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
16865 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
16867         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
16868         * print-tree.cc (print_decl_identifier): Implement it.
16869         * toplev.cc (output_stack_usage_1): Use it.
16871 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16873         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
16874         friends.
16876 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16878         * value-range.h (irange::set_nonzero): Inline.
16880 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16882         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
16883         precision.
16884         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
16885         invalid_range, as it is an inverse range.
16886         * tree-vrp.cc (find_case_label_range): Avoid trees.
16887         * value-range.cc (irange::irange_set): Delete.
16888         (irange::irange_set_1bit_anti_range): Delete.
16889         (irange::irange_set_anti_range): Delete.
16890         (irange::set): Cleanup.
16891         * value-range.h (class irange): Remove irange_set,
16892         irange_set_anti_range, irange_set_1bit_anti_range.
16893         (irange::set_undefined): Remove set to m_type.
16895 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16897         * range-op.cc (update_known_bitmask): Adjust for irange containing
16898         wide_ints internally.
16899         * tree-ssanames.cc (set_nonzero_bits): Same.
16900         * tree-ssanames.h (set_nonzero_bits): Same.
16901         * value-range-storage.cc (irange_storage::set_irange): Same.
16902         (irange_storage::get_irange): Same.
16903         * value-range.cc (irange::operator=): Same.
16904         (irange::irange_set): Same.
16905         (irange::irange_set_1bit_anti_range): Same.
16906         (irange::irange_set_anti_range): Same.
16907         (irange::set): Same.
16908         (irange::verify_range): Same.
16909         (irange::contains_p): Same.
16910         (irange::irange_single_pair_union): Same.
16911         (irange::union_): Same.
16912         (irange::irange_contains_p): Same.
16913         (irange::intersect): Same.
16914         (irange::invert): Same.
16915         (irange::set_range_from_nonzero_bits): Same.
16916         (irange::set_nonzero_bits): Same.
16917         (mask_to_wi): Same.
16918         (irange::intersect_nonzero_bits): Same.
16919         (irange::union_nonzero_bits): Same.
16920         (gt_ggc_mx): Same.
16921         (gt_pch_nx): Same.
16922         (tree_range): Same.
16923         (range_tests_strict_enum): Same.
16924         (range_tests_misc): Same.
16925         (range_tests_nonzero_bits): Same.
16926         * value-range.h (irange::type): Same.
16927         (irange::varying_compatible_p): Same.
16928         (irange::irange): Same.
16929         (int_range::int_range): Same.
16930         (irange::set_undefined): Same.
16931         (irange::set_varying): Same.
16932         (irange::lower_bound): Same.
16933         (irange::upper_bound): Same.
16935 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16937         * gimple-range-fold.cc (tree_lower_bound): Delete.
16938         (tree_upper_bound): Delete.
16939         (vrp_val_max): Delete.
16940         (vrp_val_min): Delete.
16941         (fold_using_range::range_of_ssa_name_with_loop_info): Call
16942         range_of_var_in_loop.
16943         * vr-values.cc (valid_value_p): Delete.
16944         (fix_overflow): Delete.
16945         (get_scev_info): New.
16946         (bounds_of_var_in_loop): Refactor into...
16947         (induction_variable_may_overflow_p): ...this,
16948         (range_from_loop_direction): ...and this,
16949         (range_of_var_in_loop): ...and this.
16950         * vr-values.h (bounds_of_var_in_loop): Delete.
16951         (range_of_var_in_loop): New.
16953 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16955         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
16956         irange_val*.
16957         (vrp_val_max): New.
16958         (vrp_val_min): New.
16959         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
16960         * range-op.cc (max_limit): Same.
16961         (min_limit): Same.
16962         (plus_minus_ranges): Same.
16963         (operator_rshift::op1_range): Same.
16964         (operator_cast::inside_domain_p): Same.
16965         * value-range.cc (vrp_val_is_max): Delete.
16966         (vrp_val_is_min): Delete.
16967         (range_tests_misc): Use irange_val_*.
16968         * value-range.h (vrp_val_is_min): Delete.
16969         (vrp_val_is_max): Delete.
16970         (vrp_val_max): Delete.
16971         (irange_val_min): New.
16972         (vrp_val_min): Delete.
16973         (irange_val_max): New.
16974         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
16976 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16978         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
16979         * gimple-fold.cc (size_must_be_zero_p): Same.
16980         * gimple-loop-versioning.cc
16981         (loop_versioning::prune_loop_conditions): Same.
16982         * gimple-range-edge.cc (gcond_edge_range): Same.
16983         (gimple_outgoing_range::calc_switch_ranges): Same.
16984         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
16985         (adjust_realpart_expr): Same.
16986         (fold_using_range::range_of_address): Same.
16987         (fold_using_range::relation_fold_and_or): Same.
16988         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
16989         (range_is_either_true_or_false): Same.
16990         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
16991         (cfn_clz::fold_range): Same.
16992         (cfn_ctz::fold_range): Same.
16993         * gimple-range-tests.cc (class test_expr_eval): Same.
16994         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
16995         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
16996         (propagate_vr_across_jump_function): Same.
16997         (decide_whether_version_node): Same.
16998         * ipa-prop.cc (ipa_get_value_range): Same.
16999         * ipa-prop.h (ipa_range_set_and_normalize): Same.
17000         * range-op.cc (get_shift_range): Same.
17001         (value_range_from_overflowed_bounds): Same.
17002         (value_range_with_overflow): Same.
17003         (create_possibly_reversed_range): Same.
17004         (equal_op1_op2_relation): Same.
17005         (not_equal_op1_op2_relation): Same.
17006         (lt_op1_op2_relation): Same.
17007         (le_op1_op2_relation): Same.
17008         (gt_op1_op2_relation): Same.
17009         (ge_op1_op2_relation): Same.
17010         (operator_mult::op1_range): Same.
17011         (operator_exact_divide::op1_range): Same.
17012         (operator_lshift::op1_range): Same.
17013         (operator_rshift::op1_range): Same.
17014         (operator_cast::op1_range): Same.
17015         (operator_logical_and::fold_range): Same.
17016         (set_nonzero_range_from_mask): Same.
17017         (operator_bitwise_or::op1_range): Same.
17018         (operator_bitwise_xor::op1_range): Same.
17019         (operator_addr_expr::fold_range): Same.
17020         (pointer_plus_operator::wi_fold): Same.
17021         (pointer_or_operator::op1_range): Same.
17022         (INT): Same.
17023         (UINT): Same.
17024         (INT16): Same.
17025         (UINT16): Same.
17026         (SCHAR): Same.
17027         (UCHAR): Same.
17028         (range_op_cast_tests): Same.
17029         (range_op_lshift_tests): Same.
17030         (range_op_rshift_tests): Same.
17031         (range_op_bitwise_and_tests): Same.
17032         (range_relational_tests): Same.
17033         * range.cc (range_zero): Same.
17034         (range_nonzero): Same.
17035         * range.h (range_true): Same.
17036         (range_false): Same.
17037         (range_true_and_false): Same.
17038         * tree-data-ref.cc (split_constant_offset_1): Same.
17039         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
17040         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
17041         (find_unswitching_predicates_for_bb): Same.
17042         * tree-ssa-phiopt.cc (value_replacement): Same.
17043         * tree-ssa-threadbackward.cc
17044         (back_threader::find_taken_edge_cond): Same.
17045         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
17046         * tree-vrp.cc (find_case_label_range): Same.
17047         * value-query.cc (range_query::get_tree_range): Same.
17048         * value-range.cc (irange::set_nonnegative): Same.
17049         (frange::contains_p): Same.
17050         (frange::singleton_p): Same.
17051         (frange::internal_singleton_p): Same.
17052         (irange::irange_set): Same.
17053         (irange::irange_set_1bit_anti_range): Same.
17054         (irange::irange_set_anti_range): Same.
17055         (irange::set): Same.
17056         (irange::operator==): Same.
17057         (irange::singleton_p): Same.
17058         (irange::contains_p): Same.
17059         (irange::set_range_from_nonzero_bits): Same.
17060         (DEFINE_INT_RANGE_INSTANCE): Same.
17061         (INT): Same.
17062         (UINT): Same.
17063         (SCHAR): Same.
17064         (UINT128): Same.
17065         (UCHAR): Same.
17066         (range): New.
17067         (tree_range): New.
17068         (range_int): New.
17069         (range_uint): New.
17070         (range_uint128): New.
17071         (range_uchar): New.
17072         (range_char): New.
17073         (build_range3): Convert to irange wide_int API.
17074         (range_tests_irange3): Same.
17075         (range_tests_int_range_max): Same.
17076         (range_tests_strict_enum): Same.
17077         (range_tests_misc): Same.
17078         (range_tests_nonzero_bits): Same.
17079         (range_tests_nan): Same.
17080         (range_tests_signed_zeros): Same.
17081         * value-range.h (Value_Range::Value_Range): Same.
17082         (irange::set): Same.
17083         (irange::nonzero_p): Same.
17084         (irange::contains_p): Same.
17085         (range_includes_zero_p): Same.
17086         (irange::set_nonzero): Same.
17087         (irange::set_zero): Same.
17088         (contains_zero_p): Same.
17089         (frange::contains_p): Same.
17090         * vr-values.cc
17091         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
17092         (bounds_of_var_in_loop): Same.
17093         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17095 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17097         * value-range.cc (irange::irange_union): Rename to...
17098         (irange::union_): ...this.
17099         (irange::irange_intersect): Rename to...
17100         (irange::intersect): ...this.
17101         * value-range.h (irange::union_): Delete.
17102         (irange::intersect): Delete.
17104 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17106         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
17108 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17110         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
17111         ranger API.
17112         (compare_ranges): Delete.
17113         (compare_range_with_value): Delete.
17114         (bounds_of_var_in_loop): Tidy up by using ranger API.
17115         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
17116         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
17117         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
17118         strict_overflow_p and only_ranges.
17119         (simplify_using_ranges::legacy_fold_cond): Adjust call to
17120         legacy_fold_cond_overflow.
17121         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
17122         rename.
17123         (range_fits_type_p): Rename value_range to irange.
17124         * vr-values.h (range_fits_type_p): Adjust prototype.
17126 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17128         * value-range.cc (irange::irange_set_anti_range): Remove uses of
17129         tree_lower_bound and tree_upper_bound.
17130         (irange::verify_range): Same.
17131         (irange::operator==): Same.
17132         (irange::singleton_p): Same.
17133         * value-range.h (irange::tree_lower_bound): Delete.
17134         (irange::tree_upper_bound): Delete.
17135         (irange::lower_bound): Delete.
17136         (irange::upper_bound): Delete.
17137         (irange::zero_p): Remove uses of tree_lower_bound and
17138         tree_upper_bound.
17140 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17142         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
17143         kind() call.
17144         (determine_value_range): Same.
17145         (record_nonwrapping_iv): Same.
17146         (infer_loop_bounds_from_signedness): Same.
17147         (scev_var_range_cant_overflow): Same.
17148         * tree-vrp.cc (operand_less_p): Delete.
17149         * tree-vrp.h (operand_less_p): Delete.
17150         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
17151         (irange::value_inside_range): Delete.
17152         * value-range.h (vrange::kind): Delete.
17153         (irange::num_pairs): Remove check of m_kind.
17154         (irange::min): Delete.
17155         (irange::max): Delete.
17157 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17159         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
17160         for vrange_storage.
17161         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
17162         (sbr_vector::grow): Same.
17163         (sbr_vector::set_bb_range): Same.
17164         (sbr_vector::get_bb_range): Same.
17165         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
17166         (sbr_sparse_bitmap::set_bb_range): Same.
17167         (sbr_sparse_bitmap::get_bb_range): Same.
17168         (block_range_cache::block_range_cache): Same.
17169         (ssa_global_cache::ssa_global_cache): Same.
17170         (ssa_global_cache::get_global_range): Same.
17171         (ssa_global_cache::set_global_range): Same.
17172         * gimple-range-cache.h: Same.
17173         * gimple-range-edge.cc
17174         (gimple_outgoing_range::gimple_outgoing_range): Same.
17175         (gimple_outgoing_range::switch_edge_range): Same.
17176         (gimple_outgoing_range::calc_switch_ranges): Same.
17177         * gimple-range-edge.h: Same.
17178         * gimple-range-infer.cc
17179         (infer_range_manager::infer_range_manager): Same.
17180         (infer_range_manager::get_nonzero): Same.
17181         (infer_range_manager::maybe_adjust_range): Same.
17182         (infer_range_manager::add_range): Same.
17183         * gimple-range-infer.h: Rename obstack_vrange_allocator to
17184         vrange_allocator.
17185         * tree-core.h (struct irange_storage_slot): Remove.
17186         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
17187         range_info a pointer to vrange_storage.
17188         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
17189         (range_info_alloc): Same.
17190         (range_info_free): Same.
17191         (range_info_get_range): Same.
17192         (range_info_set_range): Same.
17193         (get_nonzero_bits): Same.
17194         * value-query.cc (get_ssa_name_range_info): Same.
17195         * value-range-storage.cc (class vrange_internal_alloc): New.
17196         (class vrange_obstack_alloc): New.
17197         (class vrange_ggc_alloc): New.
17198         (vrange_allocator::vrange_allocator): New.
17199         (vrange_allocator::~vrange_allocator): New.
17200         (vrange_storage::alloc_slot): New.
17201         (vrange_allocator::alloc): New.
17202         (vrange_allocator::free): New.
17203         (vrange_allocator::clone): New.
17204         (vrange_allocator::clone_varying): New.
17205         (vrange_allocator::clone_undefined): New.
17206         (vrange_storage::alloc): New.
17207         (vrange_storage::set_vrange): Remove slot argument.
17208         (vrange_storage::get_vrange): Same.
17209         (vrange_storage::fits_p): Same.
17210         (vrange_storage::equal_p): New.
17211         (irange_storage::write_lengths_address): New.
17212         (irange_storage::lengths_address): New.
17213         (irange_storage_slot::alloc_slot): Remove.
17214         (irange_storage::alloc): New.
17215         (irange_storage_slot::irange_storage_slot): Remove.
17216         (irange_storage::irange_storage): New.
17217         (write_wide_int): New.
17218         (irange_storage_slot::set_irange): Remove.
17219         (irange_storage::set_irange): New.
17220         (read_wide_int): New.
17221         (irange_storage_slot::get_irange): Remove.
17222         (irange_storage::get_irange): New.
17223         (irange_storage_slot::size): Remove.
17224         (irange_storage::equal_p): New.
17225         (irange_storage_slot::num_wide_ints_needed): Remove.
17226         (irange_storage::size): New.
17227         (irange_storage_slot::fits_p): Remove.
17228         (irange_storage::fits_p): New.
17229         (irange_storage_slot::dump): Remove.
17230         (irange_storage::dump): New.
17231         (frange_storage_slot::alloc_slot): Remove.
17232         (frange_storage::alloc): New.
17233         (frange_storage_slot::set_frange): Remove.
17234         (frange_storage::set_frange): New.
17235         (frange_storage_slot::get_frange): Remove.
17236         (frange_storage::get_frange): New.
17237         (frange_storage_slot::fits_p): Remove.
17238         (frange_storage::equal_p): New.
17239         (frange_storage::fits_p): New.
17240         (ggc_vrange_allocator): New.
17241         (ggc_alloc_vrange_storage): New.
17242         * value-range-storage.h (class vrange_storage): Rewrite.
17243         (class irange_storage): Rewrite.
17244         (class frange_storage): Rewrite.
17245         (class obstack_vrange_allocator): Remove.
17246         (class ggc_vrange_allocator): Remove.
17247         (vrange_allocator::alloc_vrange): Remove.
17248         (vrange_allocator::alloc_irange): Remove.
17249         (vrange_allocator::alloc_frange): Remove.
17250         (ggc_alloc_vrange_storage): New.
17251         * value-range.h (class irange): Rename vrange_allocator to
17252         irange_storage.
17253         (class frange): Same.
17255 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
17257         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
17258         inc to avoid clobbering the carry flag.
17260 2023-04-30  Andrew Pinski  <apinski@marvell.com>
17262         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
17263         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17265 2023-04-30  Andrew Pinski  <apinski@marvell.com>
17267         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17268         Allow some builtin/internal function calls which
17269         are known not to trap/throw.
17270         (phiopt_worker::match_simplify_replacement):
17271         Use name instead of getting the lhs again.
17273 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
17275         * configure: Regenerate.
17276         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
17278 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
17280         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
17281         emit_insn_if_valid_for_reload.
17282         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
17283         to be recognized, also try emitting a parallel that clobbers
17284         TARGET_FLAGS_REGNUM, as applicable.
17286 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
17288         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
17289         to a define_insn.
17290         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
17291         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
17293 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
17295         * config/stormy16/stormy16.md (any_lshift): New code iterator.
17296         (any_or_plus): Likewise.
17297         (any_rotate): Likewise.
17298         (*<any_lshift>_and_internal): New define_insn_and_split to
17299         recognize a logical shift followed by an AND, and split it
17300         again after reload.
17301         (*swpn): New define_insn matching xstormy16's swpn.
17302         (*swpn_zext): New define_insn recognizing swpn followed by
17303         zero_extendqihi2, i.e. with the high byte set to zero.
17304         (*swpn_sext): Likewise, for swpn followed by cbw.
17305         (*swpn_sext_2): Likewise, for an alternate RTL form.
17306         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
17307         sequence is split in the correct place to recognize the *swpn_zext
17308         followed by any_or_plus (ior, xor or plus) instruction.
17310 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
17312         PR target/105525
17313         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
17314         (lm32-*-uclinux*): Likewise.
17316 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
17318         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
17319         for riscv_use_save_libcall.
17320         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
17321         (riscv_compute_frame_info): restructure to decouple stack allocation
17322         for rv32e w/o save-restore.
17324 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
17326         * doc/install.texi: Fix documentation typo
17328 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
17330         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
17331         (u): Add div/udiv cases.
17332         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
17333         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
17334         divmod expansion.
17335         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
17336         (thead_c906_tune_info): Likewise.
17337         (optimize_size_tune_info): Likewise.
17338         (riscv_use_divmod_expander): New function.
17339         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
17341 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
17343         * config/riscv/bitmanip.md: Added clmulr instruction.
17344         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
17345         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
17346         (type): Add clmul
17347         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
17348         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
17349         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
17350         functions to riscv-cmo.def.
17351         * config/riscv/generic.md: Add clmul to list of instructions
17352         using the generic_imul reservation.
17354 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
17356         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
17358 2023-04-28  Andrew Pinski  <apinski@marvell.com>
17360         PR tree-optimization/100958
17361         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
17362         (pass_phiopt::execute): Don't call two_value_replacement.
17363         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
17364         handle what two_value_replacement did.
17366 2023-04-28  Andrew Pinski  <apinski@marvell.com>
17368         * match.pd: Add patterns for
17369         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
17371 2023-04-28  Andrew Pinski  <apinski@marvell.com>
17373         * match.pd: Factor out the deciding the min/max from
17374         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
17375         pattern to ...
17376         * fold-const.cc (minmax_from_comparison): this new function.
17377         * fold-const.h (minmax_from_comparison): New prototype.
17379 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
17381         PR rtl-optimization/109476
17382         * lower-subreg.cc: Include explow.h for force_reg.
17383         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
17384         If decomposing a suitable LSHIFTRT and we're not splitting
17385         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
17386         instead of setting a high part SUBREG to zero, which helps combine.
17387         (decompose_multiword_subregs): Update call to resolve_shift_zext.
17389 2023-04-28  Richard Biener  <rguenther@suse.de>
17391         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
17392         consider scatters.
17393         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
17394         gather-scatter info and cost emulated scatters accordingly.
17395         (get_load_store_type): Support emulated scatters.
17396         (vectorizable_store): Likewise.  Emulate them by extracting
17397         scalar offsets and data, doing scalar stores.
17399 2023-04-28  Richard Biener  <rguenther@suse.de>
17401         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
17402         Tame down element extracts and scalar loads for gather/scatter
17403         similar to elementwise strided accesses.
17405 2023-04-28  Pan Li  <pan2.li@intel.com>
17406             kito-cheng  <kito.cheng@sifive.com>
17408         * config/riscv/vector.md: Add new define split to perform
17409         the simplification.
17411 2023-04-28  Richard Biener  <rguenther@suse.de>
17413         PR ipa/109652
17414         * ipa-param-manipulation.cc
17415         (ipa_param_body_adjustments::modify_expression): Allow
17416         conversion of a register to a non-register type.  Elide
17417         conversions inside BIT_FIELD_REFs.
17419 2023-04-28  Richard Biener  <rguenther@suse.de>
17421         PR tree-optimization/109644
17422         * tree-cfg.cc (verify_types_in_gimple_reference): Check
17423         register constraints on the outermost VIEW_CONVERT_EXPR
17424         only.  Do not allow register or invariant bases on
17425         multi-level or possibly variable index handled components.
17427 2023-04-28  Richard Biener  <rguenther@suse.de>
17429         * gimplify.cc (gimplify_compound_lval): When there's a
17430         non-register type produced by one of the handled component
17431         operations make sure we get a non-register base.
17433 2023-04-28  Richard Biener  <rguenther@suse.de>
17435         PR tree-optimization/108752
17436         * tree-vect-generic.cc (build_replicated_const): Rename
17437         to build_replicated_int_cst and move to tree.{h,cc}.
17438         (do_plus_minus): Adjust.
17439         (do_negate): Likewise.
17440         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
17441         arithmetic vector operations in lowered form.
17442         * tree.h (build_replicated_int_cst): Declare.
17443         * tree.cc (build_replicated_int_cst): Moved from
17444         tree-vect-generic.cc build_replicated_const.
17446 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17448         PR target/99195
17449         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
17450         (aarch64_rbit<mode><vczle><vczbe>): ... This.
17451         (neg<mode>2): Rename to...
17452         (neg<mode>2<vczle><vczbe>): ... This.
17453         (abs<mode>2): Rename to...
17454         (abs<mode>2<vczle><vczbe>): ... This.
17455         (aarch64_abs<mode>): Rename to...
17456         (aarch64_abs<mode><vczle><vczbe>): ... This.
17457         (one_cmpl<mode>2): Rename to...
17458         (one_cmpl<mode>2<vczle><vczbe>): ... This.
17459         (clrsb<mode>2): Rename to...
17460         (clrsb<mode>2<vczle><vczbe>): ... This.
17461         (clz<mode>2): Rename to...
17462         (clz<mode>2<vczle><vczbe>): ... This.
17463         (popcount<mode>2): Rename to...
17464         (popcount<mode>2<vczle><vczbe>): ... This.
17466 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
17468         * gimple-range-op.cc (class cfn_sqrt): New type.
17469         (op_cfn_sqrt): New variable.
17470         (gimple_range_op_handler::maybe_builtin_call): Handle
17471         CASE_CFN_SQRT{,_FN}.
17473 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
17474             Jakub Jelinek  <jakub@redhat.com>
17476         * value-range.h (frange_nextafter): Declare.
17477         * gimple-range-op.cc (class cfn_sincos): New.
17478         (op_cfn_sin, op_cfn_cos): New variables.
17479         (gimple_range_op_handler::maybe_builtin_call): Handle
17480         CASE_CFN_{SIN,COS}{,_FN}.
17482 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
17484         * target.def (libm_function_max_error): New target hook.
17485         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
17486         * doc/tm.texi: Regenerated.
17487         * targhooks.h (default_libm_function_max_error,
17488         glibc_linux_libm_function_max_error): Declare.
17489         * targhooks.cc: Include case-cfn-macros.h.
17490         (default_libm_function_max_error,
17491         glibc_linux_libm_function_max_error): New functions.
17492         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17493         * config/linux-protos.h (linux_libm_function_max_error): Declare.
17494         * config/linux.cc: Include target.h and targhooks.h.
17495         (linux_libm_function_max_error): New function.
17496         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
17497         (arc_libm_function_max_error): New function.
17498         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17499         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
17500         (ix86_libm_function_max_error): New function.
17501         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17502         * config/rs6000/rs6000-protos.h
17503         (rs6000_linux_libm_function_max_error): Declare.
17504         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
17505         and case-cfn-macros.h.
17506         (rs6000_linux_libm_function_max_error): New function.
17507         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17508         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17509         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
17510         (or1k_libm_function_max_error): New function.
17511         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
17513 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
17515         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
17516         Move detach value calls...
17517         (pass_harden_conditional_branches::execute): ... here.
17518         (pass_harden_compares::execute): Detach values before
17519         compares.
17521 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
17523         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
17524         (cml<addsub_as><mode>4): Likewise.
17525         (vec_addsub<mode>3): Likewise.
17526         (cadd<rot><mode>3): Likewise.
17527         (vec_fmaddsub<mode>4): Likewise.
17528         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
17530 2023-04-27  Andrew Pinski  <apinski@marvell.com>
17532         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
17533         up to 2 min/max expressions in the sequence/match code.
17535 2023-04-27  Andrew Pinski  <apinski@marvell.com>
17537         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
17538         COMPARISON.
17539         * tree-eh.cc (operation_could_trap_helper_p): Treate
17540         MIN_EXPR/MAX_EXPR similar as other comparisons.
17542 2023-04-27  Andrew Pinski  <apinski@marvell.com>
17544         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
17545         prototype.
17546         (cond_if_else_store_replacement): Likewise.
17547         (get_non_trapping): Likewise.
17548         (store_elim_worker): Move into ...
17549         (pass_cselim::execute): This.
17551 2023-04-27  Andrew Pinski  <apinski@marvell.com>
17553         * tree-ssa-phiopt.cc (two_value_replacement): Remove
17554         prototype.
17555         (match_simplify_replacement): Likewise.
17556         (factor_out_conditional_conversion): Likewise.
17557         (value_replacement): Likewise.
17558         (minmax_replacement): Likewise.
17559         (spaceship_replacement): Likewise.
17560         (cond_removal_in_builtin_zero_pattern): Likewise.
17561         (hoist_adjacent_loads): Likewise.
17562         (tree_ssa_phiopt_worker): Move into ...
17563         (pass_phiopt::execute): this.
17565 2023-04-27  Andrew Pinski  <apinski@marvell.com>
17567         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
17568         do_store_elim argument and split that part out to ...
17569         (store_elim_worker): This new function.
17570         (pass_cselim::execute): Call store_elim_worker.
17571         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
17573 2023-04-27  Jan Hubicka  <jh@suse.cz>
17575         * cfgloopmanip.h (unloop_loops): Export.
17576         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
17577         that no longer loop.
17578         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
17579         vectors of loops to unloop.
17580         (canonicalize_induction_variables): Free vectors here.
17581         (tree_unroll_loops_completely): Free vectors here.
17583 2023-04-27  Richard Biener  <rguenther@suse.de>
17585         PR tree-optimization/109170
17586         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
17587         Handle __builtin_expect and similar via cfn_pass_through_arg1
17588         and inspecting the calls fnspec.
17589         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
17590         and BUILT_IN_EXPECT_WITH_PROBABILITY.
17592 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
17594         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
17596 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
17598         PR tree-optimization/109639
17599         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
17600         (propagate_vr_across_jump_function): Same.
17601         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
17602         * ipa-prop.h (ipa_range_set_and_normalize): New.
17603         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
17605 2023-04-27  Richard Biener  <rguenther@suse.de>
17607         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
17608         create a CTOR operand in the result when simplifying GIMPLE.
17610 2023-04-27  Richard Biener  <rguenther@suse.de>
17612         * gimplify.cc (gimplify_compound_lval): When the base
17613         gimplified to a register make sure to split up chains
17614         of operations.
17616 2023-04-27  Richard Biener  <rguenther@suse.de>
17618         PR ipa/109607
17619         * ipa-param-manipulation.h
17620         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
17621         argument.
17622         * ipa-param-manipulation.cc
17623         (ipa_param_body_adjustments::modify_expression): Likewise.
17624         When we need a conversion and the replacement is a register
17625         split the conversion out.
17626         (ipa_param_body_adjustments::modify_assignment): Pass
17627         extra_stmts to RHS modify_expression.
17629 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
17631         * doc/extend.texi (Zero Length): Describe example.
17633 2023-04-27  Richard Biener  <rguenther@suse.de>
17635         PR tree-optimization/109594
17636         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
17637         what we rewrite to a register based on the above.
17639 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
17641         * config/riscv/riscv.cc: Fix whitespace.
17642         * config/riscv/sync.md: Fix whitespace.
17644 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
17646         PR tree-optimization/108697
17647         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
17648         not clear the vector on an out of range query.
17649         (ssa_cache::dump): Use dump_range_query instead of get_range.
17650         (ssa_cache::dump_range_query): New.
17651         (ssa_lazy_cache::dump_range_query): New.
17652         (ssa_lazy_cache::set_range): New.
17653         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
17654         (class ssa_lazy_cache): New.
17655         (ssa_lazy_cache::ssa_lazy_cache): New.
17656         (ssa_lazy_cache::~ssa_lazy_cache): New.
17657         (ssa_lazy_cache::get_range): New.
17658         (ssa_lazy_cache::clear_range): New.
17659         (ssa_lazy_cache::clear): New.
17660         (ssa_lazy_cache::dump): New.
17661         * gimple-range-path.cc (path_range_query::path_range_query): Do
17662         not allocate a ssa_cache object nor has_cache bitmap.
17663         (path_range_query::~path_range_query): Do not free objects.
17664         (path_range_query::clear_cache): Remove.
17665         (path_range_query::get_cache): Adjust.
17666         (path_range_query::set_cache): Remove.
17667         (path_range_query::dump): Don't call through a pointer.
17668         (path_range_query::internal_range_of_expr): Set cache directly.
17669         (path_range_query::reset_path): Clear cache directly.
17670         (path_range_query::ssa_range_in_phi): Fold with globals only.
17671         (path_range_query::compute_ranges_in_phis): Simply set range.
17672         (path_range_query::compute_ranges_in_block): Call cache directly.
17673         * gimple-range-path.h (class path_range_query): Replace bitmap
17674         and cache pointer with lazy cache object.
17675         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
17677 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
17679         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
17680         (ssa_cache::~ssa_cache): Rename.
17681         (ssa_cache::has_range): New.
17682         (ssa_cache::get_range): Rename.
17683         (ssa_cache::set_range): Rename.
17684         (ssa_cache::clear_range): Rename.
17685         (ssa_cache::clear): Rename.
17686         (ssa_cache::dump): Rename and use get_range.
17687         (ranger_cache::get_global_range): Use get_range and set_range.
17688         (ranger_cache::range_of_def): Use get_range.
17689         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
17690         (class ranger_cache): Use ssa_cache.
17691         * gimple-range-path.cc (path_range_query::path_range_query): Use
17692         ssa_cache.
17693         (path_range_query::get_cache): Use get_range.
17694         (path_range_query::set_cache): Use set_range.
17695         * gimple-range-path.h (class path_range_query): Use ssa_cache.
17696         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
17697         (assume_query::range_of_expr): Use get_range.
17698         (assume_query::assume_query): Use set_range.
17699         (assume_query::calculate_op): Use get_range and set_range.
17700         * gimple-range.h (class assume_query): Use ssa_cache.
17702 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
17704         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
17705         and local to optionally zero memory.
17706         (br_vector::grow): Only zero memory if flag is set.
17707         (class sbr_lazy_vector): New.
17708         (sbr_lazy_vector::sbr_lazy_vector): New.
17709         (sbr_lazy_vector::set_bb_range): New.
17710         (sbr_lazy_vector::get_bb_range): New.
17711         (sbr_lazy_vector::bb_range_p): New.
17712         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
17713         * gimple-range-gori.cc (gori_map::calculate_gori): Use
17714         param_vrp_switch_limit.
17715         (gori_compute::gori_compute): Use param_vrp_switch_limit.
17716         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
17717         (vrp_switch_limit): Rename from evrp_switch_limit.
17718         (vrp_vector_threshold): New.
17720 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
17722         * value-relation.cc (dom_oracle::query_relation): Check early for lack
17723         of any relation.
17724         * value-relation.h (equiv_oracle::has_equiv_p): New.
17726 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
17728         PR tree-optimization/109417
17729         * gimple-range-gori.cc (range_def_chain::register_dependency):
17730         Save the ssa version number, not the pointer.
17731         (gori_compute::may_recompute_p): No need to check if a dependency
17732         is in the free list.
17733         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
17734         fields to be unsigned int instead of trees.
17735         (ange_def_chain::depend1): Adjust.
17736         (ange_def_chain::depend2): Adjust.
17737         * gimple-range.h: Include "ssa.h" to inline ssa_name().
17739 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
17741         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
17742         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
17743         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
17745 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
17747         PR target/104338
17748         * config/riscv/riscv-protos.h: Add helper function stubs.
17749         * config/riscv/riscv.cc: Add helper functions for subword masking.
17750         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
17751         -mno-inline-atomics.
17752         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
17753         fetch_and_nand, CAS, and exchange ops.
17754         * doc/invoke.texi: Add blurb regarding new command-line flags
17755         -minline-atomics and -mno-inline-atomics.
17757 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17759         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
17760         Reimplement using standard RTL codes instead of unspec.
17761         (aarch64_rshrn2<mode>_insn_be): Likewise.
17762         (aarch64_rshrn2<mode>): Adjust for the above.
17763         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
17765 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17767         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
17768         with standard RTL codes instead of an UNSPEC.
17769         (aarch64_rshrn<mode>_insn_be): Likewise.
17770         (aarch64_rshrn<mode>): Adjust for the above.
17771         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
17773 2023-04-26  Pan Li  <pan2.li@intel.com>
17774             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17776         * config/riscv/riscv.cc (riscv_classify_address): Allow
17777         const0_rtx for the RVV load/store.
17779 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17781         * range-op.cc (range_op_cast_tests): Remove legacy support.
17782         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
17783         * value-range.cc (irange::operator=): Same.
17784         (get_legacy_range): Same.
17785         (irange::copy_legacy_to_multi_range): Delete.
17786         (irange::copy_to_legacy): Delete.
17787         (irange::irange_set_anti_range): Delete.
17788         (irange::set): Remove legacy support.
17789         (irange::verify_range): Same.
17790         (irange::legacy_lower_bound): Delete.
17791         (irange::legacy_upper_bound): Delete.
17792         (irange::legacy_equal_p): Delete.
17793         (irange::operator==): Remove legacy support.
17794         (irange::singleton_p): Same.
17795         (irange::value_inside_range): Same.
17796         (irange::contains_p): Same.
17797         (intersect_ranges): Delete.
17798         (irange::legacy_intersect): Delete.
17799         (union_ranges): Delete.
17800         (irange::legacy_union): Delete.
17801         (irange::legacy_verbose_union_): Delete.
17802         (irange::legacy_verbose_intersect): Delete.
17803         (irange::irange_union): Remove legacy support.
17804         (irange::irange_intersect): Same.
17805         (irange::intersect): Same.
17806         (irange::invert): Same.
17807         (ranges_from_anti_range): Delete.
17808         (gt_pch_nx): Adjust for legacy removal.
17809         (gt_ggc_mx): Same.
17810         (range_tests_legacy): Delete.
17811         (range_tests_misc): Adjust for legacy removal.
17812         (range_tests): Same.
17813         * value-range.h (class irange): Same.
17814         (irange::legacy_mode_p): Delete.
17815         (ranges_from_anti_range): Delete.
17816         (irange::nonzero_p): Adjust for legacy removal.
17817         (irange::lower_bound): Same.
17818         (irange::upper_bound): Same.
17819         (irange::union_): Same.
17820         (irange::intersect): Same.
17821         (irange::set_nonzero): Same.
17822         (irange::set_zero): Same.
17823         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17825 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17827         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
17828         of range_has_numeric_bounds_p with irange API.
17829         (range_has_numeric_bounds_p): Delete.
17830         * value-range.h (range_has_numeric_bounds_p): Delete.
17832 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17834         * tree-data-ref.cc (compute_distributive_range): Replace uses of
17835         range_int_cst_p with irange API.
17836         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
17837         * tree-vrp.h (range_int_cst_p): Delete.
17838         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
17839         range_int_cst_p with irange API.
17840         (vr_set_zero_nonzero_bits): Same.
17841         (range_fits_type_p): Same.
17842         (simplify_using_ranges::simplify_casted_cond): Same.
17843         * tree-vrp.cc (range_int_cst_p): Remove.
17845 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17847         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
17849 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17851         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
17852         API uses to new API.
17853         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
17854         * internal-fn.cc (get_min_precision): Same.
17855         * match.pd: Same.
17856         * tree-affine.cc (expr_to_aff_combination): Same.
17857         * tree-data-ref.cc (dr_step_indicator): Same.
17858         * tree-dfa.cc (get_ref_base_and_extent): Same.
17859         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
17860         * tree-ssa-phiopt.cc (two_value_replacement): Same.
17861         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
17862         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
17863         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
17864         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
17865         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
17866         * tree.cc (get_range_pos_neg): Same.
17868 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17870         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
17871         vrange::dump instead of ad-hoc dumper.
17872         * tree-ssa-strlen.cc (dump_strlen_info): Same.
17873         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
17874         dump_generic_node.
17876 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17878         * range-op.cc (operator_cast::op1_range): Use
17879         create_possibly_reversed_range.
17880         (operator_bitwise_and::simple_op1_range_solver): Same.
17881         * value-range.cc (swap_out_of_order_endpoints): Delete.
17882         (irange::set): Remove call to swap_out_of_order_endpoints.
17884 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17886         * builtins.cc (determine_block_size): Convert use of legacy API to
17887         get_legacy_range.
17888         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
17889         (array_bounds_checker::check_array_ref): Same.
17890         * gimple-ssa-warn-restrict.cc
17891         (builtin_memref::extend_offset_range): Same.
17892         * ipa-cp.cc (ipcp_store_vr_results): Same.
17893         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
17894         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
17895         (ipa_write_jump_function): Same.
17896         * pointer-query.cc (get_size_range): Same.
17897         * tree-data-ref.cc (split_constant_offset): Same.
17898         * tree-ssa-strlen.cc (get_range): Same.
17899         (maybe_diag_stxncpy_trunc): Same.
17900         (strlen_pass::get_len_or_size): Same.
17901         (strlen_pass::count_nonzero_bytes_addr): Same.
17902         * tree-vect-patterns.cc (vect_get_range_info): Same.
17903         * value-range.cc (irange::maybe_anti_range): Remove.
17904         (get_legacy_range): New.
17905         (irange::copy_to_legacy): Use get_legacy_range.
17906         (ranges_from_anti_range): Same.
17907         * value-range.h (class irange): Remove maybe_anti_range.
17908         (get_legacy_range): New.
17909         * vr-values.cc (check_for_binary_op_overflow): Convert use of
17910         legacy API to get_legacy_range.
17911         (compare_ranges): Same.
17912         (compare_range_with_value): Same.
17913         (bounds_of_var_in_loop): Same.
17914         (find_case_label_ranges): Same.
17915         (simplify_using_ranges::simplify_switch_using_ranges): Same.
17917 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17919         * value-range-pretty-print.cc (vrange_printer::visit): Remove
17920         constant_p use.
17921         * value-range.cc (irange::constant_p): Remove.
17922         (irange::get_nonzero_bits_from_range): Remove constant_p use.
17923         * value-range.h (class irange): Remove constant_p.
17924         (irange::num_pairs): Remove constant_p use.
17926 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17928         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
17929         symbolics support.
17930         (irange::set): Same.
17931         (irange::legacy_lower_bound): Same.
17932         (irange::legacy_upper_bound): Same.
17933         (irange::contains_p): Same.
17934         (range_tests_legacy): Same.
17935         (irange::normalize_addresses): Remove.
17936         (irange::normalize_symbolics): Remove.
17937         (irange::symbolic_p): Remove.
17938         * value-range.h (class irange): Remove symbolic_p,
17939         normalize_symbolics, and normalize_addresses.
17940         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
17941         Remove symbolics support.
17943 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17945         * value-range.cc (irange::may_contain_p): Remove.
17946         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
17947         usage with contains_p.
17948         * vr-values.cc (compare_range_with_value): Same.
17950 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17952         * tree-vrp.cc (supported_types_p): Remove.
17953         (defined_ranges_p): Remove.
17954         (range_fold_binary_expr): Remove.
17955         (range_fold_unary_expr): Remove.
17956         * tree-vrp.h (range_fold_unary_expr): Remove.
17957         (range_fold_binary_expr): Remove.
17959 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17961         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
17962         (ipa_value_range_from_jfunc): Same.
17963         (propagate_vr_across_jump_function): Same.
17964         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
17965         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
17966         * vr-values.cc (bounds_of_var_in_loop): Same.
17968 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17970         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
17971         Add irange argument.
17972         (check_out_of_bounds_and_warn): Remove check for vr.
17973         (array_bounds_checker::check_array_ref): Remove pointer qualifier
17974         for vr and adjust accordingly.
17975         * gimple-array-bounds.h (get_value_range): Add irange argument.
17976         * value-query.cc (class equiv_allocator): Delete.
17977         (range_query::get_value_range): Delete.
17978         (range_query::range_query): Remove allocator access.
17979         (range_query::~range_query): Same.
17980         * value-query.h (get_value_range): Delete.
17981         * vr-values.cc
17982         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
17983         call to get_value_range.
17984         (check_for_binary_op_overflow): Same.
17985         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17986         (simplify_using_ranges::simplify_abs_using_ranges): Same.
17987         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
17988         (simplify_using_ranges::simplify_casted_cond): Same.
17989         (simplify_using_ranges::simplify_switch_using_ranges): Same.
17990         (simplify_using_ranges::two_valued_val_range_p): Same.
17992 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
17994         * vr-values.cc
17995         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
17996         Rename to...
17997         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
17998         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
17999         (simplify_using_ranges::legacy_fold_cond): ...this.
18000         (simplify_using_ranges::fold_cond): Rename
18001         vrp_evaluate_conditional_warnv_with_ops to
18002         legacy_fold_cond_overflow.
18003         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
18004         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
18005         legacy_fold_cond_overflow respectively.
18007 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18009         * vr-values.cc (get_vr_for_comparison): Remove.
18010         (compare_name_with_value): Same.
18011         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
18012         compare_name_with_value.
18013         * vr-values.h: Remove compare_name_with_value.
18014         Remove get_vr_for_comparison.
18016 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
18018         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
18019         (bswapsi2): New define_insn.
18020         (swaphi): New define_insn to exchange two registers (swpw).
18021         (define_peephole2): Recognize exchange of registers as swaphi.
18023 2023-04-26  Richard Biener  <rguenther@suse.de>
18025         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
18026         Avoid last_stmt.
18027         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
18028         * predict.cc (apply_return_prediction): Likewise.
18029         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
18030         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
18031         (make_edges_bb): Likewise.
18032         (make_cond_expr_edges): Likewise.
18033         (end_recording_case_labels): Likewise.
18034         (make_gimple_asm_edges): Likewise.
18035         (cleanup_dead_labels): Likewise.
18036         (group_case_labels): Likewise.
18037         (gimple_can_merge_blocks_p): Likewise.
18038         (gimple_merge_blocks): Likewise.
18039         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
18040         (gimple_duplicate_sese_tail): Avoid last_stmt.
18041         (find_loop_dist_alias): Likewise.
18042         (gimple_block_ends_with_condjump_p): Likewise.
18043         (gimple_purge_dead_eh_edges): Likewise.
18044         (gimple_purge_dead_abnormal_call_edges): Likewise.
18045         (pass_warn_function_return::execute): Likewise.
18046         (execute_fixup_cfg): Likewise.
18047         * tree-eh.cc (redirect_eh_edge_1): Likewise.
18048         (pass_lower_resx::execute): Likewise.
18049         (pass_lower_eh_dispatch::execute): Likewise.
18050         (cleanup_empty_eh): Likewise.
18051         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
18052         (predicate_bbs): Likewise.
18053         (ifcvt_split_critical_edges): Likewise.
18054         * tree-loop-distribution.cc (create_edge_for_control_dependence):
18055         Likewise.
18056         (loop_distribution::transform_reduction_loop): Likewise.
18057         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
18058         (try_transform_to_exit_first_loop_alt): Likewise.
18059         (transform_to_exit_first_loop): Likewise.
18060         (create_parallel_loop): Likewise.
18061         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
18062         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
18063         (eliminate_unnecessary_stmts): Likewise.
18064         * tree-ssa-dom.cc
18065         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
18066         Likewise.
18067         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
18068         (pass_tree_ifcombine::execute): Likewise.
18069         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
18070         (should_duplicate_loop_header_p): Likewise.
18071         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
18072         (tree_estimate_loop_size): Likewise.
18073         (try_unroll_loop_completely): Likewise.
18074         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
18075         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
18076         (canonicalize_loop_ivs): Likewise.
18077         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
18078         (bound_difference): Likewise.
18079         (number_of_iterations_popcount): Likewise.
18080         (number_of_iterations_cltz): Likewise.
18081         (number_of_iterations_cltz_complement): Likewise.
18082         (simplify_using_initial_conditions): Likewise.
18083         (number_of_iterations_exit_assumptions): Likewise.
18084         (loop_niter_by_eval): Likewise.
18085         (estimate_numbers_of_iterations): Likewise.
18087 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18089         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
18091 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
18093         PR target/108758
18094         * config/rs6000/rs6000-builtins.def
18095         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
18096         __builtin_vsx_scalar_cmp_exp_qp_lt,
18097         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
18098         to power9-vector.
18100 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
18102         PR target/109069
18103         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
18104         easy_vector_constant with const_vector_each_byte_same, add
18105         handlings in preparation for !easy_vector_constant, and update
18106         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
18107         * config/rs6000/predicates.md (const_vector_each_byte_same): New
18108         predicate.
18110 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18112         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
18113         (*pred_ltge<mode>_merge_tie_mask): Ditto.
18114         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
18115         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
18116         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
18117         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
18118         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
18120 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18122         * config/riscv/vector.md: Fix redundant vmv1r.v.
18124 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18126         * config/riscv/vector.md: Fix RA constraint.
18128 2023-04-26  Pan Li  <pan2.li@intel.com>
18130         PR target/109272
18131         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
18132         check for vn_reference equal.
18134 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18136         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
18137         auto-vectorization preference.
18138         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
18139         auto-vectorization.
18140         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
18142 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
18144         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
18145         and bclridisi_nottwobits patterns.
18146         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
18147         predicate to avoid splitting arith constants.
18148         (const_nottwobits_not_arith_operand): New predicate.
18150 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
18152         * recog.cc (peep2_attempt, peep2_update_life): Correct
18153         head-comment description of parameter match_len.
18155 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
18157         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
18158         riscv_split_symbol() drop in_splitter arg.
18159         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
18160         riscv_split_symbol() drop in_splitter arg.
18161         riscv_force_temporary() drop in_splitter arg.
18162         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
18163         riscv_split_symbol() drop in_splitter arg.
18165 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
18167         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
18168         superfluous debug temporaries for single GIMPLE assignments.
18170 2023-04-25  Richard Biener  <rguenther@suse.de>
18172         PR tree-optimization/109609
18173         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
18174         Clarify semantics.
18175         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
18176         the size given by arg_max_access_size_given_by_arg_p as
18177         maximum, not exact, size.
18179 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18181         PR target/99195
18182         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
18183         (orn<mode>3<vczle><vczbe>): ... This.
18184         (bic<mode>3): Rename to...
18185         (bic<mode>3<vczle><vczbe>): ... This.
18186         (<su><maxmin><mode>3): Rename to...
18187         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
18189 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18191         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
18192         * config/aarch64/iterators.md (VQDIV): New mode iterator.
18193         (vnx2di): New mode attribute.
18195 2023-04-25  Richard Biener  <rguenther@suse.de>
18197         PR rtl-optimization/109585
18198         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
18200 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
18202         PR target/109566
18203         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
18204         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
18205         is larger than signed int maximum.
18207 2023-04-25  Martin Liska  <mliska@suse.cz>
18209         * doc/gcov.texi: Document the new "calls" field and document
18210         the API bump. Mention also "block_ids" for lines.
18211         * gcov.cc (output_intermediate_json_line): Output info about
18212         calls and extend branches as well.
18213         (generate_results): Bump version to 2.
18214         (output_line_details): Use block ID instead of a non-sensual
18215         index.
18217 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
18219         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
18220         length attribute for the first (memory operand) alternative.
18222 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
18224         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
18225         * config/aarch64/constraints.md: Make "Umn" relaxed memory
18226         constraint.
18227         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
18229 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
18231         * value-range.cc (frange::set): Adjust constructor.
18232         * value-range.h (nan_state::nan_state): Replace default
18233         constructor with one taking an argument.
18235 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
18237         * ipa-cp.cc (ipa_range_contains_p): New.
18238         (decide_whether_version_node): Use it.
18240 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
18242         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
18243         simplify two successive VEC_PERM_EXPRs with same VLA mask,
18244         where mask chooses elements in reverse order.
18246 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18248         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
18249         and support diamond shaped basic block form.
18250         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
18252 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18254         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18255         Instead of calling last_and_only_stmt, look for the last statement
18256         manually.
18258 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18260         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18261         New function.
18262         (match_simplify_replacement): Call
18263         empty_bb_or_one_feeding_into_p instead of doing it inline.
18265 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18267         PR tree-optimization/68894
18268         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
18269         continue for the do_hoist_loads diamond case.
18271 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18273         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
18274         code for better code readability.
18276 2023-04-24  Andrew Pinski  <apinski@marvell.com>
18278         PR tree-optimization/109604
18279         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
18280         diamond form check from ...
18281         (minmax_replacement): Here.
18283 2023-04-24  Patrick Palka  <ppalka@redhat.com>
18285         * tree.cc (strip_array_types): Don't define here.
18286         (is_typedef_decl): Don't define here.
18287         (typedef_variant_p): Don't define here.
18288         * tree.h (strip_array_types): Define here.
18289         (is_typedef_decl): Define here.
18290         (typedef_variant_p): Define here.
18292 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
18294         * doc/generic.texi (OpenMP): Add != to allowed
18295         conditions and state that vars can be unsigned.
18296         * tree.def (OMP_FOR): Likewise.
18298 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18300         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
18302 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
18304         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
18305         Remove explicit Solaris 11 references.
18306         Markup fixes.
18307         (Options specification, --with-gnu-as): as and gas always differ
18308         on Solaris.
18309         Remove /usr/ccs/bin reference.
18310         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
18311         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
18312         (*-*-solaris2*): ... here.
18313         Update bundled GCC versions.
18314         Don't refer to pre-built binaries.
18315         Remove /bin/sh warning.
18316         Update assembler, linker recommendations.
18317         Document GNAT bootstrap compiler.
18318         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
18319         (sparc64-*-solaris2*): Move content...
18320         (sparcv9-*-solaris2*): ...here.
18321         Add GDC for 64-bit bootstrap compilers.
18323 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18325         PR target/109406
18326         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
18327         case.
18328         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
18329         pattern.
18331 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18333         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
18334         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
18335         (aarch64_<su>abal2<mode>): New define_expand.
18336         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
18337         (aarch64_rtx_costs): Handle ABD rtxes.
18338         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
18339         * config/aarch64/iterators.md (ABAL2): Delete.
18340         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
18342 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18344         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
18345         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
18346         (<sur>sadv16qi): Rename to...
18347         (<su>sadv16qi): ... This.  Adjust for the above.
18348         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
18349         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
18350         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
18351         * config/aarch64/iterators.md (ABAL): Delete.
18352         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
18354 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18356         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
18357         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
18358         (aarch64_<su>abdl2<mode>): New define_expand.
18359         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
18360         * config/aarch64/iterators.md (ABDL2): Delete.
18361         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
18363 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18365         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
18366         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
18367         unspec.
18368         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
18369         * config/aarch64/iterators.md (ABDL): Delete.
18370         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
18372 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18374         * config/aarch64/aarch64-simd.md
18375         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
18377 2023-04-24  Richard Biener  <rguenther@suse.de>
18379         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
18380         last_stmt.
18381         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
18382         Likewise.
18383         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
18384         (set_switch_stmt_execution_predicate): Likewise.
18385         (phi_result_unknown_predicate): Likewise.
18386         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
18387         (ipa_analyze_indirect_call_uses): Likewise.
18388         * predict.cc (predict_iv_comparison): Likewise.
18389         (predict_extra_loop_exits): Likewise.
18390         (predict_loops): Likewise.
18391         (tree_predict_by_opcode): Likewise.
18392         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
18393         Likewise.
18394         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
18395         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
18396         (replace_phi_edge_with_variable): Likewise.
18397         (two_value_replacement): Likewise.
18398         (value_replacement): Likewise.
18399         (minmax_replacement): Likewise.
18400         (spaceship_replacement): Likewise.
18401         (cond_removal_in_builtin_zero_pattern): Likewise.
18402         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
18403         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
18404         (vn_phi_lookup): Likewise.
18405         (vn_phi_insert): Likewise.
18406         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
18407         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
18408         Likewise.
18409         (back_threader_profitability::possibly_profitable_path_p):
18410         Likewise.
18411         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
18412         Likewise.
18413         * tree-switch-conversion.cc (pass_convert_switch::execute):
18414         Likewise.
18415         (pass_lower_switch<O0>::execute): Likewise.
18416         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
18417         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
18418         * tree-vect-slp.cc (vect_slp_function): Likewise.
18419         * tree-vect-stmts.cc (cfun_returns): Likewise.
18420         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
18421         (vect_loop_dist_alias_call): Likewise.
18423 2023-04-24  Richard Biener  <rguenther@suse.de>
18425         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
18427 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18429         * config/riscv/riscv-vsetvl.cc
18430         (vector_infos_manager::all_avail_in_compatible_p): New function.
18431         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
18432         * config/riscv/riscv-vsetvl.h: New function.
18434 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18436         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
18437         comment for cleanup_insns.
18439 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18441         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
18442         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
18443         with the fault first load property.
18445 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18447         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
18448         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
18450 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18452         PR target/99195
18453         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
18454         (aarch64_addp<mode><vczle><vczbe>): ... This.
18456 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
18458         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
18459         provide reasonable values for common arithmetic operations and
18460         immediate operands (in several machine modes).
18462 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
18464         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
18465         format specifier to output high_part register name of SImode reg.
18466         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
18467         (zero_extendqihi2): Fix lengths, consistent formatting and add
18468         "and Rx,#255" alternative, for documentation purposes.
18469         (zero_extendhisi2): New define_insn.
18471 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
18473         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
18474         SImode shifts by two by performing a single bit SImode shift twice.
18476 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
18478         PR tree-optimization/109593
18479         * value-range.cc (frange::operator==): Handle NANs.
18481 2023-04-23  liuhongt  <hongtao.liu@intel.com>
18483         PR rtl-optimization/108707
18484         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
18485         GENERAL_REGS when preferred reg_class is not known.
18487 2023-04-22  Andrew Pinski  <apinski@marvell.com>
18489         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
18490         Change the code around slightly to move diamond
18491         handling for do_store_elim/do_hoist_loads out of
18492         the big if/else.
18494 2023-04-22  Andrew Pinski  <apinski@marvell.com>
18496         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
18497         Remove check on empty_block_p.
18499 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
18501         PR bootstrap/109589
18502         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
18503         * realmpfr.h (class auto_mpfr): Likewise.
18505 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
18507         PR tree-optimization/109583
18508         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
18509         if vec_mode is not VECTOR_MODE_P.
18511 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
18512             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
18514         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
18515         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
18516         loop profile and bounds after header duplication.
18517         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
18518         Break out from try_peel_loop; fix handling of 0 iterations.
18519         (try_peel_loop): Use adjust_loop_info_after_peeling.
18521 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
18523         PR tree-optimization/109546
18524         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
18525         not fold conditions with ADDR_EXPR early.
18527 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18529         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
18530         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
18531         for umax.
18532         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
18533         (*aarch64_<optab><mode>3_zero): Define.
18534         (*aarch64_<optab><mode>3_cssc): Likewise.
18535         * config/aarch64/iterators.md (maxminand): New code attribute.
18537 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18539         PR target/108779
18540         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
18541         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
18542         Define prototype.
18543         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
18544         (aarch64_override_options_internal): Handle the above.
18545         (aarch64_output_load_tp): New function.
18546         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
18547         aarch64_output_load_tp.
18548         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
18549         (mtp=): New option.
18550         * doc/invoke.texi (AArch64 Options): Document -mtp=.
18552 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18554         PR target/99195
18555         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
18556         (add_vec_concat_subst_be): Likewise.
18557         (vczle): Likewise.
18558         (vczbe): Likewise.
18559         (add<mode>3): Rename to...
18560         (add<mode>3<vczle><vczbe>): ... This.
18561         (sub<mode>3): Rename to...
18562         (sub<mode>3<vczle><vczbe>): ... This.
18563         (mul<mode>3): Rename to...
18564         (mul<mode>3<vczle><vczbe>): ... This.
18565         (and<mode>3): Rename to...
18566         (and<mode>3<vczle><vczbe>): ... This.
18567         (ior<mode>3): Rename to...
18568         (ior<mode>3<vczle><vczbe>): ... This.
18569         (xor<mode>3): Rename to...
18570         (xor<mode>3<vczle><vczbe>): ... This.
18571         * config/aarch64/iterators.md (VDZ): Define.
18573 2023-04-21  Patrick Palka  <ppalka@redhat.com>
18575         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
18576         and type_p.
18578 2023-04-21  Jan Hubicka  <jh@suse.cz>
18580         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
18581         commit.
18583 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
18585         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
18586         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
18588 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
18590         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
18591         force_reg instead of copy_to_mode_reg.
18592         (aarch64_expand_vector_init): Likewise.
18594 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
18596         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
18597         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
18598         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
18599         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
18600         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
18601         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
18602         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
18603         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
18604         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
18605         * config/i386/predicates.md (index_register_operand):
18606         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
18607         * config/i386/i386.cc (ix86_legitimate_address_p): Use
18608         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
18609         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
18611 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
18612             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
18614         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
18615         latch.
18617 2023-04-21  Richard Biener  <rguenther@suse.de>
18619         * is-a.h (safe_is_a): New.
18621 2023-04-21  Richard Biener  <rguenther@suse.de>
18623         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
18624         (gphi_iterator::operator*): Likewise.
18626 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
18627             Michal Jires  <michal@jires.eu>
18629         * ipa-inline.cc (class inline_badness): New class.
18630         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
18631         of sreal.
18632         (update_edge_key): Update.
18633         (lookup_recursive_calls): Likewise.
18634         (recursive_inlining): Likewise.
18635         (add_new_edges_to_heap): Likewise.
18636         (inline_small_functions): Likewise.
18638 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
18640         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
18642 2023-04-21  Richard Biener  <rguenther@suse.de>
18644         PR tree-optimization/109573
18645         * tree-vect-loop.cc (vectorizable_live_operation): Allow
18646         unhandled SSA copy as well.  Demote assert to checking only.
18648 2023-04-21  Richard Biener  <rguenther@suse.de>
18650         * df-core.cc (df_analyze): Compute RPO on the reverse graph
18651         for DF_BACKWARD problems.
18652         (loop_post_order_compute): Rename to ...
18653         (loop_rev_post_order_compute): ... this, compute a RPO.
18654         (loop_inverted_post_order_compute): Rename to ...
18655         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
18656         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
18657         problems, RPO on the inverted graph for DF_BACKWARD.
18659 2023-04-21  Richard Biener  <rguenther@suse.de>
18661         * cfganal.h (inverted_rev_post_order_compute): Rename
18662         from ...
18663         (inverted_post_order_compute): ... this.  Add struct function
18664         argument, change allocation to a C array.
18665         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
18666         * lcm.cc (compute_antinout_edge): Adjust.
18667         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
18668         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
18669         * tree-ssa-pre.cc (compute_antic): Likewise.
18671 2023-04-21  Richard Biener  <rguenther@suse.de>
18673         * df.h (df_d::postorder_inverted): Change back to int *,
18674         clarify comments.
18675         * df-core.cc (rest_of_handle_df_finish): Adjust.
18676         (df_analyze_1): Likewise.
18677         (df_analyze): For DF_FORWARD problems use RPO on the forward
18678         graph.  Adjust.
18679         (loop_inverted_post_order_compute): Adjust API.
18680         (df_analyze_loop): Adjust.
18681         (df_get_n_blocks): Likewise.
18682         (df_get_postorder): Likewise.
18684 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18686         PR target/108270
18687         * config/riscv/riscv-vsetvl.cc
18688         (vector_infos_manager::all_empty_predecessor_p): New function.
18689         (pass_vsetvl::backward_demand_fusion): Ditto.
18690         * config/riscv/riscv-vsetvl.h: Ditto.
18692 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
18694         PR target/109582
18695         * config/riscv/generic.md: Change standard names to insn names.
18697 2023-04-21  Richard Biener  <rguenther@suse.de>
18699         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
18700         (compute_laterin): Use RPO.
18701         (compute_available): Likewise.
18703 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
18705         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
18707 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18709         PR target/109547
18710         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
18711         (vector_insn_info::skip_avl_compatible_p): Ditto.
18712         (vector_insn_info::merge): Remove default value.
18713         (pass_vsetvl::compute_local_backward_infos): Ditto.
18714         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
18715         * config/riscv/riscv-vsetvl.h: Ditto.
18717 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
18719         * doc/extend.texi (Common Function Attributes): Remove duplicate
18720         word.
18722 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
18724         PR tree-optimization/109564
18725         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
18726         UNDEFINED range names when deciding if all PHI arguments are the same,
18728 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
18730         PR tree-optimization/109011
18731         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
18732         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
18733         .CTZ (X) = PREC - .POPCOUNT (X | -X).
18735 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
18737         * lra-constraints.cc (match_reload): Exclude some hard regs for
18738         multi-reg inout reload pseudos used in asm in different mode.
18740 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
18742         * config/arm/arm.cc (thumb1_legitimate_address_p):
18743         Use VIRTUAL_REGISTER_P predicate.
18744         (arm_eliminable_register): Ditto.
18745         * config/avr/avr.md (push<mode>_1): Ditto.
18746         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
18747         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
18748         * config/i386/predicates.md (register_no_elim_operand): Ditto.
18749         * config/iq2000/predicates.md (call_insn_operand): Ditto.
18750         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
18752 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
18754         PR target/78952
18755         * config/i386/predicates.md (extract_operator): New predicate.
18756         * config/i386/i386.md (any_extract): Remove code iterator.
18757         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
18758         (*cmpqi_ext<mode>_1): Ditto.
18759         (*cmpqi_ext<mode>_2): Ditto.
18760         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
18761         (*cmpqi_ext<mode>_3): Ditto.
18762         (*cmpqi_ext<mode>_4): Ditto.
18763         (*extzvqi_mem_rex64): Ditto.
18764         (*extzvqi): Ditto.
18765         (*insvqi_2): Ditto.
18766         (*extendqi<SWI24:mode>_ext_1): Ditto.
18767         (*addqi_ext<mode>_0): Ditto.
18768         (*addqi_ext<mode>_1): Ditto.
18769         (*addqi_ext<mode>_2): Ditto.
18770         (*subqi_ext<mode>_0): Ditto.
18771         (*subqi_ext<mode>_2): Ditto.
18772         (*testqi_ext<mode>_1): Ditto.
18773         (*testqi_ext<mode>_2): Ditto.
18774         (*andqi_ext<mode>_0): Ditto.
18775         (*andqi_ext<mode>_1): Ditto.
18776         (*andqi_ext<mode>_1_cc): Ditto.
18777         (*andqi_ext<mode>_2): Ditto.
18778         (*<any_or:code>qi_ext<mode>_0): Ditto.
18779         (*<any_or:code>qi_ext<mode>_1): Ditto.
18780         (*<any_or:code>qi_ext<mode>_2): Ditto.
18781         (*xorqi_ext<mode>_1_cc): Ditto.
18782         (*negqi_ext<mode>_2): Ditto.
18783         (*ashlqi_ext<mode>_2): Ditto.
18784         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
18786 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
18788         PR target/108248
18789         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
18790         <bitmanip_insn> as the type to allow for fine grained control of
18791         scheduling these insns.
18792         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
18793         min, max.
18794         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
18795         pcnt, signed and unsigned min/max.
18797 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18798             kito-cheng  <kito.cheng@sifive.com>
18800         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
18802 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18803             kito-cheng  <kito.cheng@sifive.com>
18805         PR target/109535
18806         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
18807         (pass_vsetvl::cleanup_insns): Fix bug.
18809 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
18811         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
18812         (ldexp<mode>3): Delete.
18813         (ldexp<mode>3<exec>): Change "B" to "A".
18815 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
18816             Jonathan Wakely  <jwakely@redhat.com>
18818         * tree.h (built_in_function_equal_p): New helper function.
18819         (fndecl_built_in_p): Turn into variadic template to support
18820         1 or more built_in_function arguments.
18821         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
18822         * gimplify.cc (goa_stabilize_expr): Likewise.
18823         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
18824         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
18825         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
18826         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
18827         cgraph_update_edges_for_call_stmt_node,
18828         cgraph_edge::verify_corresponds_to_fndecl,
18829         cgraph_node::verify_node): Likewise.
18830         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
18831         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
18832         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
18834 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
18836         PR tree-optimization/109011
18837         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
18838         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
18839         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
18840         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
18841         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
18842         case.
18843         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
18845 2023-04-20  Richard Biener  <rguenther@suse.de>
18847         * df-core.cc (rest_of_handle_df_initialize): Remove
18848         computation of df->postorder, df->postorder_inverted and
18849         df->n_blocks.
18851 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
18853         * common/config/i386/i386-common.cc
18854         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
18855         (ix86_handle_option): Set AVX flag for VAES.
18856         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
18857         Add OPTION_MASK_ISA2_VAES_UNSET.
18858         (def_builtin): Share builtin between AES and VAES.
18859         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
18860         Ditto.
18861         * config/i386/i386.md (aes): New isa attribute.
18862         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
18863         (aesenclast): Ditto.
18864         (aesdec): Ditto.
18865         (aesdeclast): Ditto.
18866         * config/i386/vaesintrin.h: Remove redundant avx target push.
18867         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
18868         (_mm_aesdeclast_si128): Ditto.
18869         (_mm_aesenc_si128): Ditto.
18870         (_mm_aesenclast_si128): Ditto.
18872 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
18874         * config/i386/avx2intrin.h
18875         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
18876         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
18877         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
18878         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
18879         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
18880         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
18881         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
18882         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
18883         (_mm_reduce_add_epi16): New instrinsics.
18884         (_mm_reduce_mul_epi16): Ditto.
18885         (_mm_reduce_and_epi16): Ditto.
18886         (_mm_reduce_or_epi16): Ditto.
18887         (_mm_reduce_max_epi16): Ditto.
18888         (_mm_reduce_max_epu16): Ditto.
18889         (_mm_reduce_min_epi16): Ditto.
18890         (_mm_reduce_min_epu16): Ditto.
18891         (_mm256_reduce_add_epi16): Ditto.
18892         (_mm256_reduce_mul_epi16): Ditto.
18893         (_mm256_reduce_and_epi16): Ditto.
18894         (_mm256_reduce_or_epi16): Ditto.
18895         (_mm256_reduce_max_epi16): Ditto.
18896         (_mm256_reduce_max_epu16): Ditto.
18897         (_mm256_reduce_min_epi16): Ditto.
18898         (_mm256_reduce_min_epu16): Ditto.
18899         (_mm_reduce_add_epi8): Ditto.
18900         (_mm_reduce_mul_epi8): Ditto.
18901         (_mm_reduce_and_epi8): Ditto.
18902         (_mm_reduce_or_epi8): Ditto.
18903         (_mm_reduce_max_epi8): Ditto.
18904         (_mm_reduce_max_epu8): Ditto.
18905         (_mm_reduce_min_epi8): Ditto.
18906         (_mm_reduce_min_epu8): Ditto.
18907         (_mm256_reduce_add_epi8): Ditto.
18908         (_mm256_reduce_mul_epi8): Ditto.
18909         (_mm256_reduce_and_epi8): Ditto.
18910         (_mm256_reduce_or_epi8): Ditto.
18911         (_mm256_reduce_max_epi8): Ditto.
18912         (_mm256_reduce_max_epu8): Ditto.
18913         (_mm256_reduce_min_epi8): Ditto.
18914         (_mm256_reduce_min_epu8): Ditto.
18915         * config/i386/avx512vlbwintrin.h:
18916         (_mm_mask_reduce_add_epi16): Ditto.
18917         (_mm_mask_reduce_mul_epi16): Ditto.
18918         (_mm_mask_reduce_and_epi16): Ditto.
18919         (_mm_mask_reduce_or_epi16): Ditto.
18920         (_mm_mask_reduce_max_epi16): Ditto.
18921         (_mm_mask_reduce_max_epu16): Ditto.
18922         (_mm_mask_reduce_min_epi16): Ditto.
18923         (_mm_mask_reduce_min_epu16): Ditto.
18924         (_mm256_mask_reduce_add_epi16): Ditto.
18925         (_mm256_mask_reduce_mul_epi16): Ditto.
18926         (_mm256_mask_reduce_and_epi16): Ditto.
18927         (_mm256_mask_reduce_or_epi16): Ditto.
18928         (_mm256_mask_reduce_max_epi16): Ditto.
18929         (_mm256_mask_reduce_max_epu16): Ditto.
18930         (_mm256_mask_reduce_min_epi16): Ditto.
18931         (_mm256_mask_reduce_min_epu16): Ditto.
18932         (_mm_mask_reduce_add_epi8): Ditto.
18933         (_mm_mask_reduce_mul_epi8): Ditto.
18934         (_mm_mask_reduce_and_epi8): Ditto.
18935         (_mm_mask_reduce_or_epi8): Ditto.
18936         (_mm_mask_reduce_max_epi8): Ditto.
18937         (_mm_mask_reduce_max_epu8): Ditto.
18938         (_mm_mask_reduce_min_epi8): Ditto.
18939         (_mm_mask_reduce_min_epu8): Ditto.
18940         (_mm256_mask_reduce_add_epi8): Ditto.
18941         (_mm256_mask_reduce_mul_epi8): Ditto.
18942         (_mm256_mask_reduce_and_epi8): Ditto.
18943         (_mm256_mask_reduce_or_epi8): Ditto.
18944         (_mm256_mask_reduce_max_epi8): Ditto.
18945         (_mm256_mask_reduce_max_epu8): Ditto.
18946         (_mm256_mask_reduce_min_epi8): Ditto.
18947         (_mm256_mask_reduce_min_epu8): Ditto.
18949 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
18951         * common/config/i386/i386-common.cc
18952         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
18953         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
18954         (OPTION_MASK_ISA_AVX_UNSET):
18955         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
18956         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
18957         * config/i386/i386.md (vpclmulqdqvl): New.
18958         * config/i386/sse.md (pclmulqdq): Add evex encoding.
18959         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
18960         push.
18962 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
18964         * config/i386/avx512vlbwintrin.h
18965         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
18966         (_mm_mask_blend_epi8): Ditto.
18967         (_mm256_mask_blend_epi16): Ditto.
18968         (_mm256_mask_blend_epi8): Ditto.
18969         * config/i386/avx512vlintrin.h
18970         (_mm256_mask_blend_pd): Ditto.
18971         (_mm256_mask_blend_ps): Ditto.
18972         (_mm256_mask_blend_epi64): Ditto.
18973         (_mm256_mask_blend_epi32): Ditto.
18974         (_mm_mask_blend_pd): Ditto.
18975         (_mm_mask_blend_ps): Ditto.
18976         (_mm_mask_blend_epi64): Ditto.
18977         (_mm_mask_blend_epi32): Ditto.
18978         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
18979         (VF_AVX512HFBFVL): Move it before the first usage.
18980         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
18981         to VF_AVX512HFBFVL.
18983 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
18985         * common/config/i386/i386-common.cc
18986         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
18987         to OPTION_MASK_ISA_AVX512BW_SET.
18988         (OPTION_MASK_ISA_AVX512F_UNSET):
18989         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
18990         (OPTION_MASK_ISA_AVX512BW_UNSET):
18991         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
18992         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
18993         * config/i386/avx512vbmi2vlintrin.h: Ditto.
18994         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
18995         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
18996         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
18997         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
18998         VI12_AVX512VL.
18999         (compressstore<mode>_mask): Ditto.
19000         (expand<mode>_mask): Ditto.
19001         (expand<mode>_maskz): Ditto.
19002         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
19003         VI12_VI48F_AVX512VL.
19005 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19007         * common/config/i386/i386-common.cc
19008         (OPTION_MASK_ISA_AVX512BITALG_SET):
19009         Change OPTION_MASK_ISA_AVX512F_SET
19010         to OPTION_MASK_ISA_AVX512BW_SET.
19011         (OPTION_MASK_ISA_AVX512F_UNSET):
19012         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
19013         (OPTION_MASK_ISA_AVX512BW_UNSET):
19014         Add OPTION_MASK_ISA_AVX512BITALG_SET.
19015         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
19016         * config/i386/i386-builtin.def:
19017         Remove redundant OPTION_MASK_ISA_AVX512BW.
19018         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
19019         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
19020         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
19022 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19024         * config/i386/i386-expand.cc
19025         (ix86_check_builtin_isa_match): Correct wrong comments.
19026         Add a new macro SHARE_BUILTIN and refactor the current if
19027         clauses to macro.
19029 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
19031         * config/i386/cpuid.h: Open a new section for Extended Features
19032         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
19033         %ecx == 1).
19035 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
19037         * config/i386/sse.md: Modify insn vperm{i,f}
19038         and vshuf{i,f}.
19040 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
19042         * config/xtensa/xtensa-opts.h: New header.
19043         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
19044         xtensa_strict_align.
19045         * config/xtensa/xtensa.cc (xtensa_option_override): When
19046         -m[no-]strict-align is not specified in the command line set
19047         xtensa_strict_align to 0 if the hardware supports both unaligned
19048         loads and stores or to 1 otherwise.
19049         * config/xtensa/xtensa.opt (mstrict-align): New option.
19050         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
19052 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
19054         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
19055         function.
19057 2023-04-19  Andrew Pinski  <apinski@marvell.com>
19059         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
19061 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19063         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
19064         (VECTOR_BOOL_MODE): Ditto.
19065         (ADJUST_NUNITS): Ditto.
19066         (ADJUST_ALIGNMENT): Ditto.
19067         (ADJUST_BYTESIZE): Ditto.
19068         (ADJUST_PRECISION): Ditto.
19069         (RVV_MODES): Ditto.
19070         (VECTOR_MODE_WITH_PREFIX): Ditto.
19071         * config/riscv/riscv-v.cc (ENTRY): Ditto.
19072         (get_vlmul): Ditto.
19073         (get_ratio): Ditto.
19074         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
19075         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
19076         (vbool64_t): Ditto.
19077         (vbool32_t): Ditto.
19078         (vbool16_t): Ditto.
19079         (vbool8_t): Ditto.
19080         (vbool4_t): Ditto.
19081         (vbool2_t): Ditto.
19082         (vbool1_t): Ditto.
19083         (vint8mf8_t): Ditto.
19084         (vuint8mf8_t): Ditto.
19085         (vint8mf4_t): Ditto.
19086         (vuint8mf4_t): Ditto.
19087         (vint8mf2_t): Ditto.
19088         (vuint8mf2_t): Ditto.
19089         (vint8m1_t): Ditto.
19090         (vuint8m1_t): Ditto.
19091         (vint8m2_t): Ditto.
19092         (vuint8m2_t): Ditto.
19093         (vint8m4_t): Ditto.
19094         (vuint8m4_t): Ditto.
19095         (vint8m8_t): Ditto.
19096         (vuint8m8_t): Ditto.
19097         (vint16mf4_t): Ditto.
19098         (vuint16mf4_t): Ditto.
19099         (vint16mf2_t): Ditto.
19100         (vuint16mf2_t): Ditto.
19101         (vint16m1_t): Ditto.
19102         (vuint16m1_t): Ditto.
19103         (vint16m2_t): Ditto.
19104         (vuint16m2_t): Ditto.
19105         (vint16m4_t): Ditto.
19106         (vuint16m4_t): Ditto.
19107         (vint16m8_t): Ditto.
19108         (vuint16m8_t): Ditto.
19109         (vint32mf2_t): Ditto.
19110         (vuint32mf2_t): Ditto.
19111         (vint32m1_t): Ditto.
19112         (vuint32m1_t): Ditto.
19113         (vint32m2_t): Ditto.
19114         (vuint32m2_t): Ditto.
19115         (vint32m4_t): Ditto.
19116         (vuint32m4_t): Ditto.
19117         (vint32m8_t): Ditto.
19118         (vuint32m8_t): Ditto.
19119         (vint64m1_t): Ditto.
19120         (vuint64m1_t): Ditto.
19121         (vint64m2_t): Ditto.
19122         (vuint64m2_t): Ditto.
19123         (vint64m4_t): Ditto.
19124         (vuint64m4_t): Ditto.
19125         (vint64m8_t): Ditto.
19126         (vuint64m8_t): Ditto.
19127         (vfloat32mf2_t): Ditto.
19128         (vfloat32m1_t): Ditto.
19129         (vfloat32m2_t): Ditto.
19130         (vfloat32m4_t): Ditto.
19131         (vfloat32m8_t): Ditto.
19132         (vfloat64m1_t): Ditto.
19133         (vfloat64m2_t): Ditto.
19134         (vfloat64m4_t): Ditto.
19135         (vfloat64m8_t): Ditto.
19136         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
19137         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
19138         (riscv_convert_vector_bits): Ditto.
19139         * config/riscv/riscv.md:
19140         * config/riscv/vector-iterators.md:
19141         * config/riscv/vector.md
19142         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19143         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
19144         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19145         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
19146         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
19147         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
19148         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
19149         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
19150         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
19152 2023-04-19  Pan Li  <pan2.li@intel.com>
19154         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
19155         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
19157 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
19159         PR target/78904
19160         PR target/78952
19161         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
19162         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
19163         for operand 0. Use any_extract code iterator.
19164         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
19165         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
19166         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
19167         (*cmpqi_ext<mode>_1): Use general_operand predicate
19168         for operand 1. Use any_extract code iterator.
19169         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
19170         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
19172 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19174         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
19175         (aarch64_uaddw2<mode>): Delete.
19176         (aarch64_ssubw2<mode>): Delete.
19177         (aarch64_usubw2<mode>): Delete.
19178         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
19180 2023-04-19  Richard Biener  <rguenther@suse.de>
19182         * tree-ssa-structalias.cc (do_ds_constraint): Use
19183         solve_add_graph_edge.
19185 2023-04-19  Richard Biener  <rguenther@suse.de>
19187         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
19188         split out from ...
19189         (do_sd_constraint): ... here.
19191 2023-04-19  Richard Biener  <rguenther@suse.de>
19193         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
19194         rejecting the merge when A contains only a non-local label.
19196 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
19198         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
19199         (VIRTUAL_REGISTER_NUM_P): Ditto.
19200         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
19201         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
19202         * function.cc (instantiate_decl_rtl): Ditto.
19203         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
19204         (nonzero_address_p): Ditto.
19205         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
19207 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
19209         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
19211 2023-04-19  Richard Biener  <rguenther@suse.de>
19213         * system.h (auto_mpz::operator->()): New.
19214         * realmpfr.h (auto_mpfr::operator->()): New.
19215         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
19216         * real.cc (real_from_string): Likewise.
19217         (dconst_e_ptr): Likewise.
19218         (dconst_sqrt2_ptr): Likewise.
19219         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
19220         Use auto_mpz.
19221         (bound_difference_of_offsetted_base): Likewise.
19222         (number_of_iterations_ne): Likewise.
19223         (number_of_iterations_lt_to_ne): Likewise.
19224         * ubsan.cc: Include realmpfr.h.
19225         (ubsan_instrument_float_cast): Use auto_mpfr.
19227 2023-04-19  Richard Biener  <rguenther@suse.de>
19229         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
19230         edges, remove edges from escaped after special-casing them.
19232 2023-04-19  Richard Biener  <rguenther@suse.de>
19234         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
19235         special casing.
19237 2023-04-19  Richard Biener  <rguenther@suse.de>
19239         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
19240         to the LHS varinfo solution member.
19242 2023-04-19  Richard Biener  <rguenther@suse.de>
19244         * tree-ssa-structalias.cc (topo_visit): Look at the real
19245         destination of edges.
19247 2023-04-19  Richard Biener  <rguenther@suse.de>
19249         PR tree-optimization/44794
19250         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
19251         If an epilogue loop is required set its iteration upper bound.
19253 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
19255         PR target/109465
19256         * config/loongarch/loongarch-protos.h
19257         (loongarch_expand_block_move): Add a parameter as alignment RTX.
19258         * config/loongarch/loongarch.h:
19259         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
19260         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
19261         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
19262         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
19263         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19264         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19265         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
19266         Take the alignment from the parameter, but set it to
19267         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
19268         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
19269         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
19270         (loongarch_block_move_straight): When there are left-over bytes,
19271         half the mode size instead of falling back to byte mode at once.
19272         (loongarch_block_move_loop): Limit the length of loop body with
19273         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19274         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19275         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
19276         to loongarch_expand_block_move.
19278 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
19280         * config/loongarch/loongarch.cc
19281         (loongarch_setup_incoming_varargs): Don't save more GARs than
19282         cfun->va_list_gpr_size / UNITS_PER_WORD.
19284 2023-04-19  Richard Biener  <rguenther@suse.de>
19286         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
19287         no epilogue condition.
19289 2023-04-19  Richard Biener  <rguenther@suse.de>
19291         * gimple.h (gimple_assign_load): Outline...
19292         * gimple.cc (gimple_assign_load): ... here.  Avoid
19293         get_base_address and instead just strip the outermost
19294         handled component, treating a remaining handled component
19295         as load.
19297 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19299         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
19300         definition.
19301         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
19303 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
19305         PR tree-optimization/109011
19306         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
19307         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
19308         CLZ, CTZ and FFS.  Remove vargs variable, use
19309         gimple_build_call_internal rather than gimple_build_call_internal_vec.
19310         (vect_vect_recog_func_ptrs): Adjust popcount entry.
19312 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
19314         PR target/109040
19315         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
19316         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
19317         a new REG rather than the SUBREG.
19319 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19321         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
19322         New pattern.
19324 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19326         PR target/108840
19327         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
19328         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
19330 2023-04-19  Richard Biener  <rguenther@suse.de>
19332         PR rtl-optimization/109237
19333         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
19334         TREE_VISITED on INSN_VAR_LOCATION_DECL.
19335         (delete_trivially_dead_insns): Maintain TREE_VISITED on
19336         active debug bind INSN_VAR_LOCATION_DECL.
19338 2023-04-19  Richard Biener  <rguenther@suse.de>
19340         PR rtl-optimization/109237
19341         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19343 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
19345         * doc/install.texi (enable-decimal-float): Add AArch64.
19347 2023-04-19  liuhongt  <hongtao.liu@intel.com>
19349         PR rtl-optimization/109351
19350         * ira.cc (setup_class_subset_and_memory_move_costs): Check
19351         hard_regno_mode_ok before setting lowest memory move cost for
19352         the mode with different reg classes.
19354 2023-04-18  Jason Merrill  <jason@redhat.com>
19356         * doc/invoke.texi: Remove stray @gol.
19358 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
19360         * ifcvt.cc (cond_move_process_if_block): Consider the result of
19361         targetm.noce_conversion_profitable_p() when replacing the original
19362         sequence with the converted one.
19364 2023-04-18  Mark Harmstone  <mark@harmstone.com>
19366         * common.opt (gcodeview): Add new option.
19367         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
19368         * opts.cc (command_handle_option): Similarly.
19369         * doc/invoke.texi: Add documentation for -gcodeview.
19371 2023-04-18  Andrew Pinski  <apinski@marvell.com>
19373         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
19374         (make_pass_phiopt): Make execute out of line.
19375         (tree_ssa_cs_elim): Move code into ...
19376         (pass_cselim::execute): here.
19378 2023-04-18  Sam James  <sam@gentoo.org>
19380         * system.h: Drop unused INCLUDE_PTHREAD_H.
19382 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
19384         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
19385         condition.
19387 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
19389         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
19390         (bswapdi2, bswapsi2): Similarly.
19392 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
19394         PR target/94908
19395         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
19396         Use CODE_FOR_sse4_1_insertps_v4sf.
19397         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
19398         (expand_vec_perm_1): Call expand_vec_per_insertps.
19399         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
19400         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
19401         (@sse4_1_insertps_<mode>): New insn pattern.
19402         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
19403         pattern from sse4_1_insertps using VI4F_128 mode iterator.
19405 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19407         * value-range.cc (gt_ggc_mx): New.
19408         (gt_pch_nx): New.
19409         * value-range.h (class vrange): Add GTY marker.
19410         (class frange): Same.
19411         (gt_ggc_mx): Remove.
19412         (gt_pch_nx): Remove.
19414 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
19416         * lra-constraints.cc (constraint_unique): New.
19417         (process_address_1): Apply constraint_unique test.
19418         * recog.cc (constrain_operands): Allow relaxed memory
19419         constaints.
19421 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
19423         * doc/extend.texi (Target Builtins): Add RISC-V Vector
19424         Intrinsics.
19425         (RISC-V Vector Intrinsics): Document GCC implemented which
19426         version of RISC-V vector intrinsics and its reference.
19428 2023-04-18  Richard Biener  <rguenther@suse.de>
19430         PR middle-end/108786
19431         * bitmap.h (bitmap_clear_first_set_bit): New.
19432         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
19433         bitmap_first_set_bit and add optional clearing of the bit.
19434         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
19435         (bitmap_clear_first_set_bit): Likewise.
19436         * df-core.cc (df_worklist_dataflow_doublequeue): Use
19437         bitmap_clear_first_set_bit.
19438         * graphite-scop-detection.cc (scop_detection::merge_sese):
19439         Likewise.
19440         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
19441         (sanitize_asan_mark_poison): Likewise.
19442         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
19443         * tree-into-ssa.cc (rewrite_blocks): Likewise.
19444         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
19445         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
19447 2023-04-18  Richard Biener  <rguenther@suse.de>
19449         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
19450         (dump_sa_points_to_info): ... this function.
19451         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
19452         and call dump_sa_stats guarded with TDF_STATS.
19453         (ipa_pta_execute): Likewise.
19454         (compute_may_aliases): Guard dump_alias_info with
19455         TDF_DETAILS|TDF_ALIAS.
19457 2023-04-18  Andrew Pinski  <apinski@marvell.com>
19459         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
19460         the expression that is being tried when TDF_FOLDING
19461         is true.
19462         (phiopt_worker::match_simplify_replacement): Dump
19463         the sequence which was created by gimple_simplify_phiopt
19464         when TDF_FOLDING is true.
19466 2023-04-18  Andrew Pinski  <apinski@marvell.com>
19468         * tree-ssa-phiopt.cc (match_simplify_replacement):
19469         Simplify code that does the movement slightly.
19471 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19473         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
19474         define_expand.
19475         (rev16<mode>2): Rename to...
19476         (aarch64_rev16<mode>2_alt1): ... This.
19477         (rev16<mode>2_alt): Rename to...
19478         (*aarch64_rev16<mode>2_alt2): ... This.
19480 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19482         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
19483         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
19484         declaration.
19485         * range-op-float.cc (zero_range): Use dconstm0.
19486         (zero_to_inf_range): Same.
19487         * real.h (dconstm0): New.
19488         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
19489         (frange::set_zero): Do not declare dconstm0.
19491 2023-04-18  Richard Biener  <rguenther@suse.de>
19493         * system.h (class auto_mpz): New,
19494         * realmpfr.h (class auto_mpfr): Likewise.
19495         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
19496         (do_mpfr_arg2): Likewise.
19497         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
19499 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19501         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
19502         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
19504 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19506         * value-range.cc (frange::operator==): Adjust for NAN.
19507         (range_tests_nan): Remove some NAN tests.
19509 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19511         * inchash.cc (hash::add_real_value): New.
19512         * inchash.h (class hash): Add add_real_value.
19513         * value-range.cc (add_vrange): New.
19514         * value-range.h (inchash::add_vrange): New.
19516 2023-04-18  Richard Biener  <rguenther@suse.de>
19518         PR tree-optimization/109539
19519         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
19520         Re-implement pointer relatedness for PHIs.
19522 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
19524         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
19525         (SV_FP): New iterator.
19526         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
19527         (recip<mode>2): Unify the two patterns using SV_FP.
19528         (div_scale<mode><exec_vcc>): New insn.
19529         (div_fmas<mode><exec>): New insn.
19530         (div_fixup<mode><exec>): New insn.
19531         (div<mode>3): Unify the two expanders and rewrite using hardfp.
19532         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
19533         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
19534         and UNSPEC_DIV_FIXUP.
19535         (vccwait): New attribute.
19537 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19539         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
19540         if the argument matches that.
19542 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19544         * config/aarch64/atomics.md
19545         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
19546         Use SD_HSDI for destination mode iterator.
19548 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
19550         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
19551         of z-extensions and s-extensions.
19552         (riscv_subset_list::parse): Likewise.
19554 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
19556         PR tree-optimization/109240
19557         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
19558         first vec_perm operand and minus as second using fneg/fadd and
19559         minus as first vec_perm operand and plus as second using fneg/fsub.
19561 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19563         * data-streamer.cc (bp_pack_real_value): New.
19564         (bp_unpack_real_value): New.
19565         * data-streamer.h (bp_pack_real_value):  New.
19566         (bp_unpack_real_value): New.
19567         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
19568         bp_unpack_real_value.
19569         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
19570         bp_pack_real_value.
19572 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19574         * wide-int.h (WIDE_INT_MAX_HWIS): New.
19575         (class fixed_wide_int_storage): Use it.
19576         (trailing_wide_ints <N>::set_precision): Use it.
19577         (trailing_wide_ints <N>::extra_size): Use it.
19579 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
19581         * config/loongarch/loongarch-protos.h
19582         (loongarch_addu16i_imm12_operand_p): New function prototype.
19583         (loongarch_split_plus_constant): Likewise.
19584         * config/loongarch/loongarch.cc
19585         (loongarch_addu16i_imm12_operand_p): New function.
19586         (loongarch_split_plus_constant): Likewise.
19587         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
19588         (DUAL_IMM12_OPERAND): Likewise.
19589         (DUAL_ADDU16I_OPERAND): Likewise.
19590         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
19591         constraint.
19592         * config/loongarch/predicates.md (const_dual_imm12_operand): New
19593         predicate.
19594         (const_addu16i_operand): Likewise.
19595         (const_addu16i_imm12_di_operand): Likewise.
19596         (const_addu16i_imm12_si_operand): Likewise.
19597         (plus_di_operand): Likewise.
19598         (plus_si_operand): Likewise.
19599         (plus_si_extend_operand): Likewise.
19600         * config/loongarch/loongarch.md (add<mode>3): Convert to
19601         define_insn_and_split.  Use plus_<mode>_operand predicate
19602         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
19603         and Le constraints.
19604         (*addsi3_extended): Convert to define_insn_and_split.  Use
19605         plus_si_extend_operand instead of arith_operand.  Add
19606         alternatives for La and Le alternatives.
19608 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19610         * value-range.h (Value_Range::Value_Range): New.
19611         (Value_Range::contains_p): New.
19613 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
19615         * value-range.h (class vrange): Make m_discriminator const.
19616         (class irange): Make m_max_ranges const.  Adjust constructors
19617         accordingly.
19618         (class unsupported_range): Construct vrange appropriately.
19619         (class frange): Same.
19621 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
19623         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
19624         definition.
19626 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
19628         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
19630 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
19632         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
19633         readable.
19634         (riscv_expand_epilogue): Likewise.
19636 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
19638         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
19639         stack allocation.
19640         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
19642 2023-04-17  Andrew Pinski  <apinski@marvell.com>
19644         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
19645         prototype.
19647 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
19649         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
19650         global ranges.
19652 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
19654         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
19655         parameter remaining_size.
19656         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
19657         (riscv_expand_prologue): Likewise.
19658         (riscv_expand_epilogue): Likewise.
19660 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
19662         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
19663         roriw for constant counts.
19664         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
19665         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
19666         (simplify_context::simplify_binary_operation_1): Use it.
19667         * expmed.cc (expand_shift_1): Likewise.
19669 2023-04-17  Martin Jambor  <mjambor@suse.cz>
19671         PR ipa/107769
19672         PR ipa/109318
19673         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
19674         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
19675         (ipa_zap_jf_refdesc): New function.
19676         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
19677         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
19678         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
19679         the new parameter of find_reference.
19680         (adjust_references_in_caller): Likewise. Make sure the constant jump
19681         function is not used to decrement a refdec counter again.  Only
19682         decrement refdesc counters when the pass_through jump function allows
19683         it.  Added a detailed dump when decrementing refdesc counters.
19684         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
19685         (ipa_set_jf_simple_pass_through): Initialize the new flag.
19686         (ipa_set_jf_unary_pass_through): Likewise.
19687         (ipa_set_jf_arith_pass_through): Likewise.
19688         (remove_described_reference): Provide a value for the new parameter of
19689         find_reference.
19690         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
19691         the previous pass_through had a flag mandating that we do so.
19692         (propagate_controlled_uses): Likewise.  Only decrement refdesc
19693         counters when the pass_through jump function allows it.
19694         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
19695         parameter of find_reference.
19696         (ipa_write_jump_function): Assert the new flag does not have to be
19697         streamed.
19698         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
19699         it in searching.
19701 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
19702             Di Zhao  <di.zhao@amperecomputing.com>
19704         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
19705         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
19706         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
19707         Check for the above tuning option when processing loads.
19709 2023-04-17  Richard Biener  <rguenther@suse.de>
19711         PR tree-optimization/109524
19712         * tree-vrp.cc (remove_unreachable::m_list): Change to a
19713         vector of pairs of block indices.
19714         (remove_unreachable::maybe_register_block): Adjust.
19715         (remove_unreachable::remove_and_update_globals): Likewise.
19716         Deal with removed blocks.
19718 2023-04-16  Jeff Law  <jlaw@ventanamicro>
19720         PR target/109508
19721         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
19722         TARGET_SFB_ALU, force the true arm into a register.
19724 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
19726         PR target/104989
19727         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
19728         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
19729         size is zero.
19730         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
19731         (pa_function_arg_size): Change return type to int.  Return zero
19732         for arguments larger than 1 GB.  Update comments.
19734 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
19736         PR tree-optimization/109154
19737         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
19738         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
19740 2023-04-15  Jason Merrill  <jason@redhat.com>
19742         PR c++/109514
19743         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
19744         Overhaul lhs_ref.ref analysis.
19746 2023-04-14  Richard Biener  <rguenther@suse.de>
19748         PR tree-optimization/109502
19749         * tree-vect-stmts.cc (vectorizable_assignment): Fix
19750         check for conversion between mask and non-mask types.
19752 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
19753             Jakub Jelinek  <jakub@redhat.com>
19755         PR target/108947
19756         PR target/109040
19757         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
19758         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
19759         smaller than word_mode.
19760         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
19761         <case AND>: Likewise.
19763 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
19765         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
19766         of GEN_INT.
19768 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
19770         PR tree-optimization/108139
19771         PR tree-optimization/109462
19772         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
19773         equivalency check for PHI nodes.
19774         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
19775         does not dominate single-arg equivalency edges.
19777 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
19779         PR target/108910
19780         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
19781         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
19783 2023-04-13  Richard Biener  <rguenther@suse.de>
19785         PR tree-optimization/109491
19786         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
19787         NULL operands test.
19789 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19791         PR target/109479
19792         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
19793         (vint16mf4_t): Ditto.
19794         (vint32mf2_t): Ditto.
19795         (vint64m1_t): Ditto.
19796         (vint64m2_t): Ditto.
19797         (vint64m4_t): Ditto.
19798         (vint64m8_t): Ditto.
19799         (vuint8mf8_t): Ditto.
19800         (vuint16mf4_t): Ditto.
19801         (vuint32mf2_t): Ditto.
19802         (vuint64m1_t): Ditto.
19803         (vuint64m2_t): Ditto.
19804         (vuint64m4_t): Ditto.
19805         (vuint64m8_t): Ditto.
19806         (vfloat32mf2_t): Ditto.
19807         (vbool64_t): Ditto.
19808         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
19809         (register_vector_type): Ditto.
19810         (check_required_extensions): Fix condition.
19811         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
19812         (RVV_REQUIRE_ELEN_64): New define.
19813         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
19814         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
19815         (TARGET_VECTOR_FP64): Ditto.
19816         (ENTRY): Fix predicate.
19817         * config/riscv/vector-iterators.md: Fix predicate.
19819 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
19821         PR tree-optimization/109410
19822         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
19823         block if first statement of the function is a call to returns_twice
19824         function.
19826 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
19828         PR target/109458
19829         * config/i386/i386.cc: Include rtl-error.h.
19830         (ix86_print_operand): For z modifier warning, use warning_for_asm
19831         if this_is_asm_operands.  For Z modifier errors, use %c and code
19832         instead of hardcoded Z.
19834 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
19836         * config/i386/x-mingw32-utf8: Remove extrataneous $@
19838 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
19840         PR tree-optimization/109462
19841         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
19842         check for equivalences if NAME is a phi node.
19844 2023-04-12  Richard Biener  <rguenther@suse.de>
19846         PR tree-optimization/109473
19847         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
19848         Convert scalar result to the computation type before performing
19849         the reduction adjustment.
19851 2023-04-12  Richard Biener  <rguenther@suse.de>
19853         PR tree-optimization/109469
19854         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
19855         a returns-twice call.
19857 2023-04-12  Richard Biener  <rguenther@suse.de>
19859         PR tree-optimization/109434
19860         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
19861         handle possibly throwing calls when processing the LHS
19862         and may-defs are not OK.
19864 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
19866         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
19867         predicate to avoid splitting arith constants.
19869 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
19870             Pan Li  <pan2.li@intel.com>
19871             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19872             Kito Cheng  <kito.cheng@sifive.com>
19874         PR target/109104
19875         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
19876         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
19877         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
19878         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
19879         (riscv_zero_call_used_regs): New.
19880         (TARGET_ZERO_CALL_USED_REGS): New.
19882 2023-04-11  Martin Liska  <mliska@suse.cz>
19884         PR driver/108241
19885         * opts.cc (finish_options): Drop also
19886         x_flag_var_tracking_assignments.
19888 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
19890         PR tree-optimization/108888
19891         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
19893 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
19895         PR target/108812
19896         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
19897         (vsx_sign_extend_v16qi_<mode>): ... this.
19898         (vsx_sign_extend_hi_<mode>): Rename to...
19899         (vsx_sign_extend_v8hi_<mode>): ... this.
19900         (vsx_sign_extend_si_v2di): Rename to...
19901         (vsx_sign_extend_v4si_v2di): ... this.
19902         (vsignextend_qi_<mode>): Remove.
19903         (vsignextend_hi_<mode>): Remove.
19904         (vsignextend_si_v2di): Remove.
19905         (vsignextend_v2di_v1ti): Remove.
19906         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
19907         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
19908         with gen_vsx_sign_extend_v16qi_v4si.
19909         * config/rs6000/rs6000.md (split for DI constant generation):
19910         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
19911         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
19912         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
19913         with gen_vsx_sign_extend_v16qi_si.
19914         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
19915         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
19916         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
19917         vsx_sign_extend_v16qi_v4si.
19918         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
19919         vsx_sign_extend_v8hi_v2di.
19920         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
19921         vsx_sign_extend_v8hi_v4si.
19922         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
19923         vsx_sign_extend_si_v2di.
19924         (__builtin_altivec_vsignext): Set bif-pattern to
19925         vsx_sign_extend_v2di_v1ti.
19926         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
19927         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
19928         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
19929         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
19931 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
19933         PR target/70243
19934         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
19935         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
19937 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
19939         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
19941 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
19943         * common/config/i386/cpuinfo.h (get_available_features):
19944         Detect AMX-COMPLEX.
19945         * common/config/i386/i386-common.cc
19946         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
19947         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
19948         (ix86_handle_option): Handle -mamx-complex.
19949         * common/config/i386/i386-cpuinfo.h (enum processor_features):
19950         Add FEATURE_AMX_COMPLEX.
19951         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
19952         amx-complex.
19953         * config.gcc: Add amxcomplexintrin.h.
19954         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
19955         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
19956         __AMX_COMPLEX__.
19957         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
19958         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
19959         Handle amx-complex.
19960         * config/i386/i386.opt: Add option -mamx-complex.
19961         * config/i386/immintrin.h: Include amxcomplexintrin.h.
19962         * doc/extend.texi: Document amx-complex.
19963         * doc/invoke.texi: Document -mamx-complex.
19964         * doc/sourcebuild.texi: Document target amx-complex.
19965         * config/i386/amxcomplexintrin.h: New file.
19967 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
19969         PR tree-optimization/109392
19970         * tree-vect-generic.cc (tree_vec_extract): Handle failure
19971         of maybe_push_res_to_seq better.
19973 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
19975         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
19976         poly-int-types.h.
19977         (SYSTEM_H): Depend on $(HASHTAB_H).
19978         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
19979         dependency on $(RTL_BASE_H), remove redundant dependency on
19980         insn-modes.h.
19982 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
19984         PR target/107674
19985         * config/arm/arm.cc (arm_effective_regno): New function.
19986         (mve_vector_mem_operand): Use it.
19988 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
19990         PR tree-optimization/109417
19991         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
19992         dependency is in SSA_NAME_FREE_LIST.
19994 2023-04-06  Andrew Pinski  <apinski@marvell.com>
19996         PR tree-optimization/109427
19997         * params.opt (-param=vect-induction-float=):
19998         Fix option attribute typo for IntegerRange.
20000 2023-04-05  Jeff Law  <jlaw@ventanamicro>
20002         PR target/108892
20003         * combine.cc (combine_instructions): Force re-recognition when
20004         after restoring the body of an insn to its original form.
20006 2023-04-05  Martin Jambor  <mjambor@suse.cz>
20008         PR ipa/108959
20009         * ipa-sra.cc (zap_useless_ipcp_results): New function.
20010         (process_isra_node_results): Call it.
20012 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20014         * config/riscv/vector.md: Fix incorrect operand order.
20016 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20018         * config/riscv/riscv-vsetvl.cc
20019         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
20020         demand fusion.
20022 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
20024         * config/riscv/riscv-vector-builtins.def: Fix typo.
20025         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
20026         * config/riscv/vector-iterators.md: Ditto.
20028 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
20030         * doc/md.texi (Including Patterns): Fix page break.
20032 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
20034         PR tree-optimization/109386
20035         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
20036         foperator_le::op1_range, foperator_le::op2_range,
20037         foperator_gt::op1_range, foperator_gt::op2_range,
20038         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
20039         BRS_FALSE case even if the other op is maybe_isnan, not just
20040         known_isnan.
20041         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
20042         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
20043         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
20044         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
20045         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
20046         not just known_isnan.
20048 2023-04-04  Marek Polacek  <polacek@redhat.com>
20050         PR sanitizer/109107
20051         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
20052         when associating.
20053         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
20055 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
20057         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
20058         (mve_vcreateq_f<mode>): Swap operands.
20060 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
20062         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
20064 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
20066         PR target/109384
20067         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20068         Reword diagnostics about zfinx conflict with f, formatting fixes.
20070 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20072         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
20074 2023-04-04  Richard Biener  <rguenther@suse.de>
20076         PR tree-optimization/109304
20077         * tree-profile.cc (tree_profiling): Use symtab node
20078         availability to decide whether to skip adjusting calls.
20079         Do not adjust calls to internal functions.
20081 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
20083         PR target/108807
20084         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
20085         function for permutation control vector by considering big endianness.
20087 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
20089         PR target/108699
20090         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
20091         (rs6000_vprtyb<mode>2): ... this.
20092         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
20093         rs6000_vprtybv2di2.
20094         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
20095         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
20096         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
20097         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
20099 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
20100             Sandra Loosemore  <sandra@codesourcery.com>
20102         * doc/md.texi (Insn Splitting): Tweak wording for readability.
20104 2023-04-03  Martin Jambor  <mjambor@suse.cz>
20106         PR ipa/109303
20107         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
20108         offset + size will be representable in unsigned int.
20110 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20112         * configure.ac (ZSTD_LIB): Move before zstd.h check.
20113         Unset gcc_cv_header_zstd_h without libzstd.
20114         * configure: Regenerate.
20116 2023-04-03  Martin Liska  <mliska@suse.cz>
20118         * doc/invoke.texi: Document new param.
20120 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
20122         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
20123         new check_effective_target function.
20125 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
20127         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
20128         (vfloat32m8_t): Likewise
20130 2023-04-03  liuhongt  <hongtao.liu@intel.com>
20132         * doc/md.texi: Document signbitm2.
20134 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20135             kito-cheng  <kito.cheng@sifive.com>
20137         * config/riscv/vector.md: Fix RA constraint.
20139 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20141         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
20142         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
20143         * config/riscv/vector.md: Fix scalar move bug.
20145 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
20147         * range-op-float.cc (foperator_equal::fold_range): If at least
20148         one of the op ranges is not singleton and neither is NaN and all
20149         4 bounds are zero, return [1, 1].
20150         (foperator_not_equal::fold_range): In the same case return [0, 0].
20152 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
20154         * range-op-float.cc (foperator_equal::fold_range): Perform the
20155         non-singleton handling regardless of maybe_isnan (op1, op2).
20156         (foperator_not_equal::fold_range): Likewise.
20157         (foperator_lt::fold_range, foperator_le::fold_range,
20158         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
20159         real_* comparison check which results in range_false (type)
20160         even if maybe_isnan (op1, op2).  Simplify.
20161         (foperator_ltgt): New class.
20162         (fop_ltgt): New variable.
20163         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
20164         fop_ltgt.
20166 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
20168         PR target/109254
20169         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
20170         returns VOIDmode, handle it like if the register isn't used for
20171         passing arguments at all.
20172         (apply_result_size): If targetm.calls.get_raw_result_mode returns
20173         VOIDmode, handle it like if the register isn't used for returning
20174         results at all.
20175         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
20176         means to return VOIDmode.
20177         * doc/tm.texi: Regenerated.
20178         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
20179         TARGET_SVE for P0_REGNUM.
20180         (aarch64_function_arg_regno_p): Also return true for p0-p3.
20181         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
20183 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
20185         * lra-constraints.cc: (combine_reload_insn): New function.
20187 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
20189         PR tree-optimization/91645
20190         * range-op-float.cc (foperator_unordered_lt::fold_range,
20191         foperator_unordered_le::fold_range,
20192         foperator_unordered_gt::fold_range,
20193         foperator_unordered_ge::fold_range,
20194         foperator_unordered_equal::fold_range): Call the ordered
20195         fold_range on ranges with cleared NaNs.
20196         * value-query.cc (range_query::get_tree_range): Handle also
20197         COMPARISON_CLASS_P trees.
20199 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
20200             Andrew Pinski  <pinskia@gmail.com>
20202         PR target/109328
20203         * config/riscv/t-riscv: Add missing dependencies.
20205 2023-03-31  liuhongt  <hongtao.liu@intel.com>
20207         * config/i386/i386.cc (inline_memory_move_cost): Return 100
20208         for MASK_REGS when MODE_SIZE > 8.
20210 2023-03-31  liuhongt  <hongtao.liu@intel.com>
20212         PR target/85048
20213         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
20214         ufloat/ufix to floatuns/fixuns.
20215         * config/i386/i386-expand.cc
20216         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
20217         * config/i386/sse.md
20218         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
20219         Renamed to ..
20220         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
20221         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
20222         Renamed to ..
20223         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
20224         .. this.
20225         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
20226         Renamed to ..
20227         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
20228         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
20229         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
20230         (ufloatv2siv2df2<mask_name>): Renamed to ..
20231         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
20232         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20233         Renamed to ..
20234         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20235         .. this.
20236         (ufix_notruncv2dfv2si2): Renamed to ..
20237         (fixuns_notruncv2dfv2si2):.. this.
20238         (ufix_notruncv2dfv2si2_mask): Renamed to ..
20239         (fixuns_notruncv2dfv2si2_mask): .. this.
20240         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
20241         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
20242         (ufix_truncv2dfv2si2): Renamed to ..
20243         (*fixuns_truncv2dfv2si2): .. this.
20244         (ufix_truncv2dfv2si2_mask): Renamed to ..
20245         (fixuns_truncv2dfv2si2_mask): .. this.
20246         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
20247         (*fixuns_truncv2dfv2si2_mask_1): .. this.
20248         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
20249         (fixuns_truncv4dfv4si2<mask_name>): .. this.
20250         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20251         Renamed to ..
20252         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20253         .. this.
20254         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
20255         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
20256         .. this.
20258 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
20260         PR tree-optimization/109154
20261         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
20262         * gimple-range-gori.h (may_recompute_p): Add depth param.
20263         * params.opt (ranger-recompute-depth): New param.
20265 2023-03-30  Jason Merrill  <jason@redhat.com>
20267         PR c++/107897
20268         PR c++/108887
20269         * cgraph.h: Move reset() from cgraph_node to symtab_node.
20270         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
20271         remove_from_same_comdat_group.
20273 2023-03-30  Richard Biener  <rguenther@suse.de>
20275         PR tree-optimization/107561
20276         * gimple-ssa-warn-access.cc (get_size_range): Add flags
20277         argument and pass it on.
20278         (check_access): When querying for the size range pass
20279         SR_ALLOW_ZERO when the known destination size is zero.
20281 2023-03-30  Richard Biener  <rguenther@suse.de>
20283         PR tree-optimization/109342
20284         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
20285         overload for edge.  When that edge is a backedge use
20286         dominated_by_p directly.
20288 2023-03-30  liuhongt  <hongtao.liu@intel.com>
20290         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
20291         vpblendd instead of vpblendw for V4SI under avx2.
20293 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
20295         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
20296         for many quick operands, for register-sized modes.
20298 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
20300         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20301         New check.
20303 2023-03-29  Martin Liska  <mliska@suse.cz>
20305         PR bootstrap/109310
20306         * configure.ac: Emit a warning for deprecated option
20307         --enable-link-mutex.
20308         * configure: Regenerate.
20310 2023-03-29  Richard Biener  <rguenther@suse.de>
20312         PR tree-optimization/109331
20313         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
20314         discover a taken edge make sure to cleanup the CFG.
20316 2023-03-29  Richard Biener  <rguenther@suse.de>
20318         PR tree-optimization/109327
20319         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
20320         already removed stmts when draining to_remove.
20322 2023-03-29  Richard Biener  <rguenther@suse.de>
20324         PR ipa/106124
20325         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
20326         so we can re-create the DIE for the type if required.
20328 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
20329             Richard Biener  <rguenther@suse.de>
20331         PR tree-optimization/109301
20332         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
20333         properties_provided from PROP_gimple_opt_math to 0.
20334         (pass_data_expand_powcabs): Change properties_provided from 0 to
20335         PROP_gimple_opt_math.
20337 2023-03-29  Richard Biener  <rguenther@suse.de>
20339         PR tree-optimization/109154
20340         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
20341         inverted condition specially by inverting at the caller.
20342         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
20344 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
20346         PR c/107002
20347         * diagnostic-show-locus.cc (column_range::column_range): Factor
20348         out assertion conditional into...
20349         (column_range::valid_p): ...this new function.
20350         (line_corrections::add_hint): Don't attempt to consolidate hints
20351         if it would lead to invalid column_range instances.
20353 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
20355         PR target/109312
20356         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
20357         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
20358         minor refactor.
20360 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
20362         PR rtl-optimization/109187
20363         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
20364         subtraction in three-way comparison.
20366 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
20368         PR tree-optimization/109265
20369         PR tree-optimization/109274
20370         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
20371         not create a relation record is op1 and op2 are the same symbol.
20372         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
20373         handler for this stmt, but create a new record only if this statement
20374         generates a relation based on the ranges.
20375         (gori_compute::compute_operand2_range): Ditto.
20376         * value-relation.h (value_relation::set_relation): Always create the
20377         record that is requested.
20379 2023-03-28  Richard Biener  <rguenther@suse.de>
20381         PR tree-optimization/107087
20382         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
20383         executable regions to avoid useless work and to better
20384         propagate degenerate PHIs.
20386 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
20388         * config/i386/x-mingw32-utf8: update comments.
20390 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
20392         PR target/109072
20393         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
20394         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
20395         variable.
20396         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
20397         New function.
20398         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
20399         after inlining.  Record which decls are loaded from.  Fix handling
20400         of vops for loads and stores.
20401         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
20402         (aarch64_accesses_vector_load_decl_p): Likewise.
20403         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
20404         variable.
20405         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
20406         that loads from a decl, treat vector stores to those decls as
20407         zero cost.
20408         (aarch64_vector_costs::finish_cost): ...and in that case,
20409         if the vector code does nothing more than a store, give the
20410         prologue a zero cost as well.
20412 2023-03-28  Richard Biener  <rguenther@suse.de>
20414         PR bootstrap/84402
20415         PR tree-optimization/108129
20416         * genmatch.cc (lower_for): For (match ...) delay
20417         substituting into the match operator if possible.
20418         (dt_operand::gen_gimple_expr): For user_id look at the
20419         first substitute for determining how to access operands.
20420         (dt_operand::gen_generic_expr): Likewise.
20421         (dt_node::gen_kids): Properly sort user_ids according
20422         to their substitutes.
20423         (dt_node::gen_kids_1): Code-generate user_id matching.
20425 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
20426             Jonathan Wakely  <jwakely@redhat.com>
20428         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
20429         Use subcommand rather than sub-command in function comments.
20431 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
20433         PR tree-optimization/109154
20434         * value-range.h (frange::flush_denormals_to_zero): Make it public
20435         rather than private.
20436         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
20437         here.
20438         * range-op-float.cc (range_operator_float::fold_range): Call
20439         flush_denormals_to_zero.
20441 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
20443         PR middle-end/106190
20444         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
20445         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
20447 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
20449         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
20450         as 4th argument to set to avoid clear_nan and union_ calls.
20452 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
20454         PR target/109276
20455         * config/i386/i386.cc (assign_386_stack_local): For DImode
20456         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
20457         align 32 rather than 0 to assign_stack_local.
20459 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
20461         PR target/109140
20462         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
20463         on operand #3 to get the final condition code.  Use std::swap.
20464         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
20465         (fucmp<gcond:code>8<P:mode>_vis): Move around.
20466         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
20467         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
20469 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
20471         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
20472         top-level sections.
20474 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
20476         * config.host: Pull in i386/x-mingw32-utf8 Makefile
20477         fragment and reference utf8rc-mingw32.o explicitly
20478         for mingw hosts.
20479         * config/i386/sym-mingw32.cc: prevent name mangling of
20480         stub symbol.
20481         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
20482         depend on manifest file explicitly.
20484 2023-03-28  Richard Biener  <rguenther@suse.de>
20486         Revert:
20487         2023-03-27  Richard Biener  <rguenther@suse.de>
20489         PR rtl-optimization/109237
20490         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
20492 2023-03-28  Richard Biener  <rguenther@suse.de>
20494         * common.opt (gdwarf): Remove Negative(gdwarf-).
20496 2023-03-28  Richard Biener  <rguenther@suse.de>
20498         * common.opt (gdwarf): Add RejectNegative.
20499         (gdwarf-): Likewise.
20500         (ggdb): Likewise.
20501         (gvms): Likewise.
20503 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
20505         * config/cris/constraints.md ("T"): Correct to
20506         define_memory_constraint.
20508 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
20510         * config/cris/cris.md (BW2): New mode-iterator.
20511         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
20512         peephole2s.
20514 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
20516         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
20517         for possible eliminable compares.
20519 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
20521         * config/cris/constraints.md ("R"): Remove unused constraint.
20523 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
20525         PR gcov-profile/109297
20526         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
20527         (merge_stream_usage): Likewise.
20528         (overlap_usage): Likewise.
20530 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
20532         PR target/109296
20533         * config/riscv/thead.md: Add missing mode specifiers.
20535 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
20536             Jiangning Liu  <jiangning.liu@amperecomputing.com>
20537             Manolis Tsamis  <manolis.tsamis@vrull.eu>
20539         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
20541 2023-03-27  Richard Biener  <rguenther@suse.de>
20543         PR rtl-optimization/109237
20544         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
20546 2023-03-27  Richard Biener  <rguenther@suse.de>
20548         PR lto/109263
20549         * lto-wrapper.cc (run_gcc): Parse alternate debug options
20550         as well, they always enable debug.
20552 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
20554         PR target/109167
20555         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
20556         from ...
20557         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
20559 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
20561         PR target/109082
20562         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
20563         than zero when calling vec_sld.
20564         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
20565         zero when calling vec_sld.
20566         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
20567         than zero when calling vec_sld.
20569 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
20571         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
20572         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
20573         loops are represented and which fields are vectors.  Add
20574         documentation for OMP_FOR_PRE_BODY field.  Document internal
20575         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
20576         * tree.def (OMP_FOR): Make documentation consistent with the
20577         Texinfo manual, to fill some gaps and correct errors.
20579 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
20581         PR target/106282
20582         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20583         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
20584         (handle_move_double): Call it before handle_movsi.
20585         * config/m68k/m68k-protos.h: Declare it.
20587 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
20589         PR tree-optimization/109230
20590         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
20592 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
20594         PR ipa/105685
20595         * predict.cc (compute_function_frequency): Don't call
20596         warn_function_cold if function already has cold attribute.
20598 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
20600         * doc/install.texi: Remove anachronistic note
20601         related to languages built and separate source tarballs.
20603 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
20605         PR analyzer/109098
20606         * diagnostic-format-sarif.cc (read_until_eof): Delete.
20607         (maybe_read_file): Delete.
20608         (sarif_builder::maybe_make_artifact_content_object): Use
20609         get_source_file_content rather than maybe_read_file.
20610         Reject it if it's not valid UTF-8.
20611         * input.cc (file_cache_slot::get_full_file_content): New.
20612         (get_source_file_content): New.
20613         (selftest::check_cpp_valid_utf8_p): New.
20614         (selftest::test_cpp_valid_utf8_p): New.
20615         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
20616         * input.h (get_source_file_content): New prototype.
20618 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
20620         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
20621         debugging options.
20622         (Special Functions for Debugging the Analyzer): Convert to a
20623         table, and rewrite in places.
20624         (Other Debugging Techniques): Add notes on how to compare two
20625         different exploded graphs.
20627 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
20629         PR other/109163
20630         * json.cc: Update comments to indicate that we now preserve
20631         insertion order of keys within objects.
20632         (object::print): Traverse keys in insertion order.
20633         (object::set): Preserve insertion order of keys.
20634         (selftest::test_writing_objects): Add an additional key to verify
20635         that we preserve insertion order.
20636         * json.h (object::m_keys): New field.
20638 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
20640         PR tree-optimization/109238
20641         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
20642         predecessors which this block dominates.
20644 2023-03-24  Richard Biener  <rguenther@suse.de>
20646         PR tree-optimization/106912
20647         * tree-profile.cc (tree_profiling): Update stmts only when
20648         profiling or testing coverage.  Make sure to update calls
20649         fntype, stripping 'const' there.
20651 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
20653         PR middle-end/109258
20654         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
20655         if target == const0_rtx.
20657 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
20659         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
20660         Document options and effective targets.
20662 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
20664         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
20665         optional.
20667 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
20669         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
20670         non-earlyclobber alternative.
20672 2023-03-23  Andrew Pinski  <apinski@marvell.com>
20674         PR c/84900
20675         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
20676         as a lvalue.
20678 2023-03-23  Richard Biener  <rguenther@suse.de>
20680         PR tree-optimization/107569
20681         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
20682         Do not push SSA names with zero uses as available leader.
20683         (process_bb): Likewise.
20685 2023-03-23  Richard Biener  <rguenther@suse.de>
20687         PR tree-optimization/109262
20688         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
20689         combining a piecewise complex load avoid touching loads
20690         that throw internally.  Use fun, not cfun throughout.
20692 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
20694         * value-range.cc (irange::irange_union, irange::intersect): Fix
20695         comment spelling bugs.
20696         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
20697         * gimple-range-trace.h: Likewise.
20698         * gimple-range-edge.cc: Likewise.
20699         (gimple_outgoing_range_stmt_p,
20700         gimple_outgoing_range::switch_edge_range,
20701         gimple_outgoing_range::edge_range_p): Likewise.
20702         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
20703         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
20704         assume_query::assume_query, assume_query::calculate_phi): Likewise.
20705         * gimple-range-edge.h: Likewise.
20706         * value-range.h (Value_Range::set, Value_Range::lower_bound,
20707         Value_Range::upper_bound, frange::set_undefined): Likewise.
20708         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
20709         gori_compute): Likewise.
20710         * gimple-range-fold.h (fold_using_range): Likewise.
20711         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
20712         Likewise.
20713         * gimple-range-gori.cc (range_def_chain::in_chain_p,
20714         range_def_chain::dump, gori_map::calculate_gori,
20715         gori_compute::compute_operand_range_switch,
20716         gori_compute::logical_combine, gori_compute::refine_using_relation,
20717         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
20718         Likewise.
20719         * gimple-range.h: Likewise.
20720         (enable_ranger): Likewise.
20721         * range-op.h (empty_range_varying): Likewise.
20722         * value-query.h (value_query): Likewise.
20723         * gimple-range-cache.cc (block_range_cache::set_bb_range,
20724         block_range_cache::dump, ssa_global_cache::clear_global_range,
20725         temporal_cache::temporal_value, temporal_cache::current_p,
20726         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
20727         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
20728         Likewise.
20729         * gimple-range-fold.cc (fur_edge::get_phi_operand,
20730         fur_stmt::get_operand, gimple_range_adjustment,
20731         fold_using_range::range_of_phi,
20732         fold_using_range::relation_fold_and_or): Likewise.
20733         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
20734         * value-query.cc (range_query::value_of_expr,
20735         range_query::value_on_edge, range_query::query_relation): Likewise.
20736         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
20737         intersect_range_with_nonzero_bits): Likewise.
20738         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
20739         exit_range): Likewise.
20740         * value-relation.h: Likewise.
20741         (equiv_oracle, relation_trio::relation_trio, value_relation,
20742         value_relation::value_relation, pe_min): Likewise.
20743         * range-op-float.cc (range_operator_float::rv_fold,
20744         frange_arithmetic, foperator_unordered_equal::op1_range,
20745         foperator_div::rv_fold): Likewise.
20746         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
20747         * value-relation.cc (equiv_oracle::query_relation,
20748         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
20749         value_relation::apply_transitive, relation_chain_head::find_relation,
20750         dom_oracle::query_relation, dom_oracle::find_relation_block,
20751         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
20752         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
20753         create_possibly_reversed_range, adjust_op1_for_overflow,
20754         operator_mult::wi_fold, operator_exact_divide::op1_range,
20755         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
20756         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
20757         range_op_lshift_tests): Likewise.
20759 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
20761         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
20762         (move_callee_saved_registers): Detect the bug condition early.
20764 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
20766         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
20767         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
20768         (V_2REG_ALT): New.
20769         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
20770         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
20771         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
20772         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
20773         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
20775 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
20777         PR tree-optimization/109176
20778         * tree-vect-generic.cc (expand_vector_condition): If a has
20779         vector boolean type and is a comparison, also check if both
20780         the comparison and VEC_COND_EXPR could be successfully expanded
20781         individually.
20783 2023-03-23  Pan Li  <pan2.li@intel.com>
20784             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20786         PR target/108654
20787         PR target/108185
20788         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
20789         for vector mask modes.
20790         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
20791         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
20793 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
20795         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
20797 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20799         PR target/109244
20800         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
20801         (emit_vlmax_op): Ditto.
20802         * config/riscv/riscv-v.cc (get_sew): New function.
20803         (emit_vlmax_vsetvl): Adapt function.
20804         (emit_pred_op): Ditto.
20805         (emit_vlmax_op): Ditto.
20806         (emit_nonvlmax_op): Ditto.
20807         (legitimize_move): Fix LRA ICE.
20808         (gen_no_side_effects_vsetvl_rtx): Adapt function.
20809         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
20810         (@mov<VB:mode><P:mode>_lra): Ditto.
20811         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
20812         (*mov<VB:mode><P:mode>_lra): Ditto.
20814 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20816         PR target/109228
20817         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
20818         __riscv_vlenb support.
20819         (BASE): Ditto.
20820         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20821         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
20822         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
20823         (SHAPE): Ditto.
20824         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20825         * config/riscv/riscv-vector-builtins.cc: Ditto.
20827 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20828             kito-cheng  <kito.cheng@sifive.com>
20830         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
20831         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
20832         (pass_vsetvl::need_vsetvl): Fix bugs.
20833         (pass_vsetvl::backward_demand_fusion): Fix bugs.
20834         (pass_vsetvl::demand_fusion): Fix bugs.
20835         (eliminate_insn): Fix bugs.
20836         (insert_vsetvl): Ditto.
20837         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
20838         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
20839         * config/riscv/vector.md: Ditto.
20841 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20842             kito-cheng  <kito.cheng@sifive.com>
20844         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
20845         * config/riscv/vector-iterators.md (nmsac): Ditto.
20846         (nmsub): Ditto.
20847         (msac): Ditto.
20848         (msub): Ditto.
20849         (nmadd): Ditto.
20850         (nmacc): Ditto.
20851         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
20852         (@pred_mul_plus<mode>): Ditto.
20853         (*pred_madd<mode>): Ditto.
20854         (*pred_macc<mode>): Ditto.
20855         (*pred_mul_plus<mode>): Ditto.
20856         (@pred_mul_plus<mode>_scalar): Ditto.
20857         (*pred_madd<mode>_scalar): Ditto.
20858         (*pred_macc<mode>_scalar): Ditto.
20859         (*pred_mul_plus<mode>_scalar): Ditto.
20860         (*pred_madd<mode>_extended_scalar): Ditto.
20861         (*pred_macc<mode>_extended_scalar): Ditto.
20862         (*pred_mul_plus<mode>_extended_scalar): Ditto.
20863         (@pred_minus_mul<mode>): Ditto.
20864         (*pred_<madd_nmsub><mode>): Ditto.
20865         (*pred_nmsub<mode>): Ditto.
20866         (*pred_<macc_nmsac><mode>): Ditto.
20867         (*pred_nmsac<mode>): Ditto.
20868         (*pred_mul_<optab><mode>): Ditto.
20869         (*pred_minus_mul<mode>): Ditto.
20870         (@pred_mul_<optab><mode>_scalar): Ditto.
20871         (@pred_minus_mul<mode>_scalar): Ditto.
20872         (*pred_<madd_nmsub><mode>_scalar): Ditto.
20873         (*pred_nmsub<mode>_scalar): Ditto.
20874         (*pred_<macc_nmsac><mode>_scalar): Ditto.
20875         (*pred_nmsac<mode>_scalar): Ditto.
20876         (*pred_mul_<optab><mode>_scalar): Ditto.
20877         (*pred_minus_mul<mode>_scalar): Ditto.
20878         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
20879         (*pred_nmsub<mode>_extended_scalar): Ditto.
20880         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
20881         (*pred_nmsac<mode>_extended_scalar): Ditto.
20882         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
20883         (*pred_minus_mul<mode>_extended_scalar): Ditto.
20884         (*pred_<madd_msub><mode>): Ditto.
20885         (*pred_<macc_msac><mode>): Ditto.
20886         (*pred_<madd_msub><mode>_scalar): Ditto.
20887         (*pred_<macc_msac><mode>_scalar): Ditto.
20888         (@pred_neg_mul_<optab><mode>): Ditto.
20889         (@pred_mul_neg_<optab><mode>): Ditto.
20890         (*pred_<nmadd_msub><mode>): Ditto.
20891         (*pred_<nmsub_nmadd><mode>): Ditto.
20892         (*pred_<nmacc_msac><mode>): Ditto.
20893         (*pred_<nmsac_nmacc><mode>): Ditto.
20894         (*pred_neg_mul_<optab><mode>): Ditto.
20895         (*pred_mul_neg_<optab><mode>): Ditto.
20896         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
20897         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
20898         (*pred_<nmadd_msub><mode>_scalar): Ditto.
20899         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
20900         (*pred_<nmacc_msac><mode>_scalar): Ditto.
20901         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
20902         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
20903         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
20904         (@pred_widen_neg_mul_<optab><mode>): Ditto.
20905         (@pred_widen_mul_neg_<optab><mode>): Ditto.
20906         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
20907         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
20909 2023-03-23  liuhongt  <hongtao.liu@intel.com>
20911         * builtins.cc (builtin_memset_read_str): Replace
20912         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
20913         (builtin_memset_gen_str): Ditto.
20914         * config/i386/i386-expand.cc
20915         (ix86_convert_const_wide_int_to_broadcast): Replace
20916         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
20917         (ix86_expand_vector_move): Ditto.
20918         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
20919         Removed.
20920         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
20921         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
20922         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
20923         * doc/tm.texi.in: Ditto.
20924         * target.def: Ditto.
20926 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
20928         * lra.cc (lra): Do not repeat inheritance and live range splitting
20929         when asm error is found.
20931 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
20933         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
20934         (gcn_expand_dpp_distribute_even_insn)
20935         (gcn_expand_dpp_distribute_odd_insn): Declare.
20936         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
20937         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
20938         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
20939         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
20940         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
20941         (fms<mode>4_negop2): New patterns.
20942         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
20943         (gcn_expand_dpp_distribute_even_insn)
20944         (gcn_expand_dpp_distribute_odd_insn): New functions.
20945         * config/gcn/gcn.md: Add entries to unspec enum.
20947 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
20949         PR tree-optimization/109008
20950         * value-range.cc (frange::set): Add nan_state argument.
20951         * value-range.h (class nan_state): New.
20952         (frange::get_nan_state): New.
20954 2023-03-22  Martin Liska  <mliska@suse.cz>
20956         * configure: Regenerate.
20958 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
20960         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
20961         to variants.
20963 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
20965         PR tree-optimization/109192
20966         * gimple-range-gori.cc (gori_compute::compute_operand_range):
20967         Terminate gori calculations if a relation is not relevant.
20968         * value-relation.h (value_relation::set_relation): Allow
20969         equality between op1 and op2 if they are the same.
20971 2023-03-21  Richard Biener  <rguenther@suse.de>
20973         PR tree-optimization/109219
20974         * tree-vect-loop.cc (vectorizable_reduction): Check
20975         slp_node, not STMT_SLP_TYPE.
20976         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
20977         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
20978         Remove assertion on STMT_SLP_TYPE.
20980 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
20982         PR tree-optimization/109215
20983         * tree.h (enum special_array_member): Adjust comments for int_0
20984         and trail_0.
20985         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
20986         has zero sized element type and the array has variable number of
20987         elements or constant one or more elements.
20988         (component_ref_size): Adjust comments, formatting fix.
20990 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
20992         * configure.ac: Add check for the Texinfo 6.8
20993         CONTENTS_OUTPUT_LOCATION customization variable and set it if
20994         supported.
20995         * configure: Regenerate.
20996         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
20997         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
20998         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
20999         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
21001 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21003         * doc/extend.texi: Associate use_hazard_barrier_return index
21004         entry with its attribute.
21005         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
21006         its attribute
21008 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21010         * doc/implement-c.texi: Remove usage of @gol.
21011         * doc/invoke.texi: Ditto.
21012         * doc/sourcebuild.texi: Ditto.
21013         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
21014         texinfo.tex versions, the bug it was working around appears to
21015         be gone.
21017 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21019         * doc/include/texinfo.tex: Update to 2023-01-17.19.
21021 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21023         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
21024         @enddefbuiltin for defining built-in functions.
21025         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
21026         places where it should be used.
21028 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21030         * doc/extend.texi (Formatted Output Function Checking): New
21031         subsection for  grouping together printf et al.
21032         (Exception handling) Fix missing @ sign before copyright
21033         header, which lead to the copyright line leaking into
21034         '(gcc)Exception handling'.
21035         * doc/gcc.texi: Set document language to en_US.
21036         (@copying): Wrap front cover texts in quotations, move in manual
21037         description text.
21039 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21041         * doc/gcc.texi: Add the Indices appendix, to make texinfo
21042         generate nice indices overview page.
21044 2023-03-21  Richard Biener  <rguenther@suse.de>
21046         PR tree-optimization/109170
21047         * gimple-range-op.cc (cfn_pass_through_arg1): New.
21048         (gimple_range_op_handler::maybe_builtin_call): Handle
21049         __builtin_expect via cfn_pass_through_arg1.
21051 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
21053         PR target/109067
21054         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21055         (init_float128_ieee): Delete code to switch complex multiply and divide
21056         for long double.
21057         (complex_multiply_builtin_code): New helper function.
21058         (complex_divide_builtin_code): Likewise.
21059         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
21060         of complex 128-bit multiply and divide built-in functions.
21062 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
21064         PR target/109178
21065         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
21067 2023-03-19  Jonny Grant  <jg@jguk.org>
21069         * doc/extend.texi (Common Function Attributes) <nonnull>:
21070         Correct typo.
21072 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
21074         PR rtl-optimization/109179
21075         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
21076         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
21078 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
21080         PR target/105554
21081         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
21082         to false.
21083         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
21084         to allocate_struct_function instead of false.
21085         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
21086         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
21087         push_struct_function.  Call targetm.target_option.relayout_function
21088         after it.
21089         (tree_function_versioning): Formatting fix.
21091 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
21093         * lra-constraints.cc: Include hooks.h.
21094         (combine_reload_insn): New function.
21095         (lra_constraints): Call it.
21097 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21098             kito-cheng  <kito.cheng@sifive.com>
21100         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
21101         as legitimate value.
21102         * config/riscv/riscv-vector-builtins.cc
21103         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
21104         (function_expander::use_widen_ternop_insn): Ditto.
21105         * config/riscv/vector.md (@vundefined<mode>): New pattern.
21106         (pred_mul_<optab><mode>_undef_merge): Remove.
21107         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
21108         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
21109         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
21110         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
21112 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21114         PR target/109092
21115         * config/riscv/riscv.md: Fix subreg bug.
21117 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
21119         PR middle-end/108685
21120         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
21121         use its loop_father rather than BODY_BB's loop_father.
21122         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
21123         If broken_loop with ordered > collapse and at least one of those
21124         extra loops aren't guaranteed to have at least one iteration, change
21125         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
21126         loop_father to l0_bb's loop_father rather than l1_bb's.
21128 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
21130         PR plugins/108634
21131         * gdbhooks.py (TreePrinter.to_string): Wrap
21132         gdb.parse_and_eval('tree_code_type') in a try block, parse
21133         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
21134         raises exception.  Update comments for the recent tree_code_type
21135         changes.
21137 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
21139         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
21140         issues.  Add more line breaks to example so it doesn't overflow
21141         the margins.
21143 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
21145         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
21146         line breaks in examples.
21147         <malloc>: Fix bad line breaks in running text, also copy-edit
21148         for consistency.
21149         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
21150         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
21151         @gol.
21152         (C++ Dialect Options) <-fcontracts>: Add line break in example.
21153         <-Wctad-maybe-unsupported>: Likewise.
21154         <-Winvalid-constexpr>: Likewise.
21155         (Warning Options) <-Wdangling-pointer>: Likewise.
21156         <-Winterference-size>: Likewise.
21157         <-Wvla-parameter>: Likewise.
21158         (Static Analyzer Options): Fix bad line breaks in running text,
21159         plus add some missing markup.
21160         (Optimize Options) <openacc-privatization>: Fix more bad line
21161         breaks in running text.
21163 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
21165         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
21166         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
21167         (expand_vec_perm_2perm_pblendv): Ditto.
21169 2023-03-16  Martin Liska  <mliska@suse.cz>
21171         PR middle-end/106133
21172         * gcc.cc (driver_handle_option): Use x_main_input_basename
21173         if x_dump_base_name is null.
21174         * opts.cc (common_handle_option): Likewise.
21176 2023-03-16  Richard Biener  <rguenther@suse.de>
21178         PR tree-optimization/109123
21179         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
21180         Do not emit -Wuse-after-free late.
21181         (pass_waccess::check_call): Always check call pointer uses.
21183 2023-03-16  Richard Biener  <rguenther@suse.de>
21185         PR tree-optimization/109141
21186         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
21187         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
21188         out from ...
21189         (renumber_gimple_stmt_uids): ... here and
21190         (renumber_gimple_stmt_uids_in_blocks): ... here.
21191         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
21192         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
21193         to PHIs.
21194         (pass_waccess::check_pointer_uses): Process all PHIs.
21196 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
21198         PR analyzer/109097
21199         * diagnostic-format-sarif.cc (class sarif_invocation): New.
21200         (class sarif_ice_notification): New.
21201         (sarif_builder::m_invocation_obj): New field.
21202         (sarif_invocation::add_notification_for_ice): New.
21203         (sarif_invocation::prepare_to_flush): New.
21204         (sarif_ice_notification::sarif_ice_notification): New.
21205         (sarif_builder::sarif_builder): Add m_invocation_obj.
21206         (sarif_builder::end_diagnostic): Special-case DK_ICE and
21207         DK_ICE_NOBT.
21208         (sarif_builder::flush_to_file): Call prepare_to_flush on
21209         m_invocation_obj.  Pass the latter to make_top_level_object.
21210         (sarif_builder::make_result_object): Move creation of "locations"
21211         array to...
21212         (sarif_builder::make_locations_arr): ...this new function.
21213         (sarif_builder::make_top_level_object): Add "invocation_obj" param
21214         and pass it to make_run_object.
21215         (sarif_builder::make_run_object): Add "invocation_obj" param and
21216         use it.
21217         (sarif_ice_handler): New callback.
21218         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
21219         * diagnostic.cc (diagnostic_initialize): Initialize new field
21220         "ice_handler_cb".
21221         (diagnostic_action_after_output): If it is set, make one attempt
21222         to call ice_handler_cb.
21223         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
21225 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
21227         * config/i386/i386-expand.cc (expand_vec_perm_blend):
21228         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
21229         and fix V2HImode handling.
21230         (expand_vec_perm_1): Try to emit BLEND instruction
21231         before MOVSS/MOVSD.
21232         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
21234 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
21236         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
21238 2023-03-15  Richard Biener  <rguenther@suse.de>
21240         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
21241         Do not diagnose clobbers.
21243 2023-03-15  Richard Biener  <rguenther@suse.de>
21245         PR tree-optimization/109139
21246         * tree-ssa-live.cc (remove_unused_locals): Look at the
21247         base address for unused decls on the LHS of .DEFERRED_INIT.
21249 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
21251         PR other/109086
21252         * builtins.cc (inline_string_cmp): Force the character
21253         difference into "result" pseudo-register, instead of reassign
21254         the pseudo-register.
21256 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21258         * config.gcc: Add thead.o to RISC-V extra_objs.
21259         * config/riscv/peephole.md: Add mempair peephole passes.
21260         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
21261         prototype.
21262         (th_mempair_operands_p): Likewise.
21263         (th_mempair_order_operands): Likewise.
21264         (th_mempair_prepare_save_restore_operands): Likewise.
21265         (th_mempair_save_restore_regs): Likewise.
21266         (th_mempair_output_move): Likewise.
21267         * config/riscv/riscv.cc (riscv_save_reg): Move code.
21268         (riscv_restore_reg): Move code.
21269         (riscv_for_each_saved_reg): Add code to emit mempair insns.
21270         * config/riscv/t-riscv: Add thead.cc.
21271         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
21272         New insn.
21273         (*th_mempair_store_<GPR:mode>2): Likewise.
21274         (*th_mempair_load_extendsidi2): Likewise.
21275         (*th_mempair_load_zero_extendsidi2): Likewise.
21276         * config/riscv/thead.cc: New file.
21278 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21280         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
21281         New constraint "th_f_fmv".
21282         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
21283         "th_r_fmv".
21284         * config/riscv/riscv.cc (riscv_split_doubleword_move):
21285         Add split code for XTheadFmv.
21286         (riscv_secondary_memory_needed): XTheadFmv does not need
21287         secondary memory.
21288         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
21289         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
21290         movdf_hardfloat_rv32.
21291         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
21292         (th_fmv_x_w): New INSN.
21293         (th_fmv_x_hw): New INSN.
21295 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21297         * config/riscv/riscv.md (maddhisi4): New expand.
21298         (msubhisi4): New expand.
21299         * config/riscv/thead.md (*th_mula<mode>): New pattern.
21300         (*th_mulawsi): New pattern.
21301         (*th_mulawsi2): New pattern.
21302         (*th_maddhisi4): New pattern.
21303         (*th_sextw_maddhisi4): New pattern.
21304         (*th_muls<mode>): New pattern.
21305         (*th_mulswsi): New pattern.
21306         (*th_mulswsi2): New pattern.
21307         (*th_msubhisi4): New pattern.
21308         (*th_sextw_msubhisi4): New pattern.
21310 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21312         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
21313         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
21314         Add prototype.
21315         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
21316         XTheadCondMov.
21317         (riscv_expand_conditional_move): New function.
21318         (riscv_expand_conditional_move_onesided): New function.
21319         * config/riscv/riscv.md: Add support for XTheadCondMov.
21320         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
21321         support for XTheadCondMov.
21322         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
21324 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21326         * config/riscv/bitmanip.md (clzdi2): New expand.
21327         (clzsi2): New expand.
21328         (ctz<mode>2): New expand.
21329         (popcount<mode>2): New expand.
21330         (<bitmanip_optab>si2): Rename INSN.
21331         (*<bitmanip_optab>si2): Hide INSN name.
21332         (<bitmanip_optab>di2): Rename INSN.
21333         (*<bitmanip_optab>di2): Hide INSN name.
21334         (rotrsi3): Remove INSN.
21335         (rotr<mode>3): Add expand.
21336         (*rotrsi3): New INSN.
21337         (rotrdi3): Rename INSN.
21338         (*rotrdi3): Hide INSN name.
21339         (rotrsi3_sext): Rename INSN.
21340         (*rotrsi3_sext): Hide INSN name.
21341         (bswap<mode>2): Remove INSN.
21342         (bswapdi2): Add expand.
21343         (bswapsi2): Add expand.
21344         (*bswap<mode>2): Hide INSN name.
21345         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
21346         extraction.
21347         * config/riscv/riscv.md (extv<mode>): New expand.
21348         (extzv<mode>): New expand.
21349         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
21350         (*th_ext<mode>): New INSN.
21351         (*th_extu<mode>): New INSN.
21352         (*th_clz<mode>2): New INSN.
21353         (*th_rev<mode>2): New INSN.
21355 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21357         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
21358         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
21360 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21362         * config/riscv/riscv.md: Include thead.md
21363         * config/riscv/thead.md: New file.
21365 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21367         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
21369 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
21371         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
21372         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
21373         (MASK_XTHEADBB): New.
21374         (MASK_XTHEADBS): New.
21375         (MASK_XTHEADCMO): New.
21376         (MASK_XTHEADCONDMOV): New.
21377         (MASK_XTHEADFMEMIDX): New.
21378         (MASK_XTHEADFMV): New.
21379         (MASK_XTHEADINT): New.
21380         (MASK_XTHEADMAC): New.
21381         (MASK_XTHEADMEMIDX): New.
21382         (MASK_XTHEADMEMPAIR): New.
21383         (MASK_XTHEADSYNC): New.
21384         (TARGET_XTHEADBA): New.
21385         (TARGET_XTHEADBB): New.
21386         (TARGET_XTHEADBS): New.
21387         (TARGET_XTHEADCMO): New.
21388         (TARGET_XTHEADCONDMOV): New.
21389         (TARGET_XTHEADFMEMIDX): New.
21390         (TARGET_XTHEADFMV): New.
21391         (TARGET_XTHEADINT): New.
21392         (TARGET_XTHEADMAC): New.
21393         (TARGET_XTHEADMEMIDX): New.
21394         (TARGET_XTHEADMEMPAIR): new.
21395         (TARGET_XTHEADSYNC): New.
21396         * config/riscv/riscv.opt: Add riscv_xthead_subext.
21398 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
21400         PR target/109117
21401         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
21402         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
21403         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
21405 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
21407         PR target/109109
21408         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
21409         when lo is equal to dhi and hi is a MEM which uses dlo register.
21411 2023-03-14  Martin Jambor  <mjambor@suse.cz>
21413         PR ipa/107925
21414         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
21415         global0 instead of zeroing when it does not have as many counts as
21416         it should.
21418 2023-03-14  Martin Jambor  <mjambor@suse.cz>
21420         PR ipa/107925
21421         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
21422         ipa count, remove assert, lenient_count_portion_handling, dump
21423         also orig_node_count.
21425 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
21427         * config/i386/i386-expand.cc (expand_vec_perm_movs):
21428         Handle V2SImode for TARGET_MMX_WITH_SSE.
21429         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
21430         using V2FI mode iterator to handle both V2SI and V2SF modes.
21432 2023-03-14  Sam James  <sam@gentoo.org>
21434         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
21435         including <sstream> earlier.
21436         * system.h: Add INCLUDE_SSTREAM.
21438 2023-03-14  Richard Biener  <rguenther@suse.de>
21440         * tree-ssa-live.cc (remove_unused_locals): Do not treat
21441         the .DEFERRED_INIT of a variable as use, instead remove
21442         that if it is the only use.
21444 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
21446         PR rtl-optimization/107762
21447         * expr.cc (emit_group_store): Revert latest change.
21449 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21451         PR tree-optimization/109005
21452         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
21453         aggregate type check.
21455 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
21457         PR tree-optimization/109115
21458         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
21459         r.upper_bound () on r.undefined_p () range.
21461 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
21463         PR tree-optimization/106896
21464         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
21465         implementatoin with probability_in; avoid some asserts.
21467 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
21469         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
21471 2023-03-13  Sean Bright  <sean@seanbright.com>
21473         * doc/invoke.texi (Warning Options): Remove errant 'See'
21474         before @xref.
21476 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21478         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
21479         REG_OK_FOR_BASE_P): Remove.
21481 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21483         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
21484         (=vd,vd,vr,vr): Ditto.
21485         * config/riscv/vector.md: Ditto.
21487 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21489         * config/riscv/riscv-vector-builtins.cc
21490         (function_expander::use_compare_insn): Add operand predicate check.
21492 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21494         * config/riscv/vector.md: Fine tune RA constraints.
21496 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
21498         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
21499         hsaco assemble/link.
21501 2023-03-13  Richard Biener  <rguenther@suse.de>
21503         PR tree-optimization/109046
21504         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
21505         piecewise complex loads.
21507 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
21509         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
21510         (aarch64_bf16_ptr_type_node): Adjust comment.
21511         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
21512         bfloat16_type_node rather than aarch64_bf16_type_node.
21513         (aarch64_libgcc_floating_mode_supported_p,
21514         aarch64_scalar_mode_supported_p): Also support BFmode.
21515         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
21516         (aarch64_invalid_binary_op): Remove BFmode related rejections.
21517         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
21518         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
21519         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
21520         aarch64_bf16_type_node.
21521         (aarch64_init_simd_builtin_types): Likewise.
21522         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
21523         which is created in tree.cc already.
21524         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
21526 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
21528         PR middle-end/109031
21529         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
21530         ensure that the type of x is as wide or wider than the type of a.
21532 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
21534         PR target/108583
21535         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
21536         (*bitmask_shift_plus<mode>): New.
21537         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
21538         (@aarch64_bitmask_udiv<mode>3): Remove.
21539         * config/aarch64/aarch64.cc
21540         (aarch64_vectorize_can_special_div_by_constant,
21541         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
21542         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
21543         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
21545 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
21547         PR target/108583
21548         * target.def (preferred_div_as_shifts_over_mult): New.
21549         * doc/tm.texi.in: Document it.
21550         * doc/tm.texi: Regenerate.
21551         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
21552         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
21553         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
21555 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
21556             Richard Sandiford  <richard.sandiford@arm.com>
21558         PR target/108583
21559         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
21560         single use.
21562 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
21563             Andrew MacLeod  <amacleod@redhat.com>
21565         PR target/108583
21566         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
21567         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
21568         Use it.
21569         (gimple_range_op_handler::maybe_non_standard): New.
21570         * range-op.cc (class operator_widen_plus_signed,
21571         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
21572         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
21573         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
21574         operator_widen_mult_unsigned::wi_fold,
21575         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
21576         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
21577         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
21578         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
21580 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
21582         PR target/108583
21583         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
21584         * doc/tm.texi.in: Likewise.
21585         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
21586         * expmed.cc (expand_divmod): Likewise.
21587         * expmed.h (expand_divmod): Likewise.
21588         * expr.cc (force_operand, expand_expr_divmod): Likewise.
21589         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
21590         * target.def (can_special_div_by_const): Remove.
21591         * target.h: Remove tree-core.h include
21592         * targhooks.cc (default_can_special_div_by_const): Remove.
21593         * targhooks.h (default_can_special_div_by_const): Remove.
21594         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
21595         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
21596         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
21598 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
21600         * doc/install.texi2html: Fix issue number typo in comment.
21602 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
21604         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
21605         bool.
21607 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
21609         * doc/invoke.texi (Optimize Options):  Add markup to
21610         description of asan-kernel-mem-intrinsic-prefix, and clarify
21611         wording slightly.
21613 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
21615         * doc/extend.texi (Named Address Spaces): Drop a redundant link
21616         to AVR-LibC.
21618 2023-03-11  Jeff Law  <jlaw@ventanamicro>
21620         PR web/88860
21621         * doc/extend.texi: Clarify Attribute Syntax a bit.
21623 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
21625         * doc/install.texi (Prerequisites): Suggest using newer versions
21626         of Texinfo.
21627         (Final install): Clean up and modernize discussion of how to
21628         build or obtain the GCC manuals.
21629         * doc/install.texi2html: Update comment to point to the PR instead
21630         of "makeinfo 4.7 brokenness" (it's not specific to that version).
21632 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21634         PR target/107703
21635         * optabs.cc (expand_fix): For conversions from BFmode to integral,
21636         use shifts to convert it to SFmode first and then convert SFmode
21637         to integral.
21639 2023-03-10  Andrew Pinski  <apinski@marvell.com>
21641         * config/aarch64/aarch64.md: Add a new define_split
21642         to help combine.
21644 2023-03-10  Richard Biener  <rguenther@suse.de>
21646         * tree-ssa-structalias.cc (solve_graph): Immediately
21647         iterate self-cycles.
21649 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21651         PR tree-optimization/109008
21652         * range-op-float.cc (float_widen_lhs_range): If not
21653         -frounding-math and not IBM double double format, extend lhs
21654         range just by 0.5ulp rather than 1ulp in each direction.
21656 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21658         PR target/107998
21659         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
21660         $tmake_file.
21661         * config/i386/t-cygwin-w64: Remove.
21663 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21665         PR plugins/108634
21666         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
21667         C++14, don't declare as extern const arrays.
21668         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
21669         static constexpr member arrays for C++11 or C++14.
21670         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
21671         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
21672         (TREE_CODE_LENGTH): For C++11 or C++14 use
21673         tree_code_length_tmpl <0>::tree_code_length instead of
21674         tree_code_length.
21675         * tree.cc (tree_code_type, tree_code_length): Remove.
21677 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21679         PR other/108464
21680         * common.opt (fcanon-prefix-map): New option.
21681         * opts.cc: Include file-prefix-map.h.
21682         (flag_canon_prefix_map): New variable.
21683         (common_handle_option): Handle OPT_fcanon_prefix_map.
21684         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
21685         * file-prefix-map.h (flag_canon_prefix_map): Declare.
21686         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
21687         member.
21688         (add_prefix_map): Initialize canonicalize member from
21689         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
21690         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
21691         use lrealpath result only for map->canonicalize map entries.
21692         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
21693         * opts-global.cc (handle_common_deferred_options): Clear
21694         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
21695         * doc/invoke.texi (-fcanon-prefix-map): Document.
21696         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
21697         see also for -fcanon-prefix-map.
21698         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
21700 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21702         PR c/108079
21703         * cgraphunit.cc (check_global_declaration): Don't warn for unused
21704         variables which have OPT_Wunused_variable warning suppressed.
21706 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
21708         PR tree-optimization/109008
21709         * range-op-float.cc (float_widen_lhs_range): If lb is
21710         minimum representable finite number or ub is maximum
21711         representable finite number, instead of widening it to
21712         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
21713         Temporarily clear flag_finite_math_only when canonicalizing
21714         the widened range.
21716 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21718         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
21719         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
21720         (gimple_fold_builtin):  Ditto.
21721         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
21722         (class vleff): Ditto.
21723         (BASE): Ditto.
21724         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21725         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
21726         (vleff): Ditto.
21727         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
21728         (struct fault_load_def): Ditto.
21729         (SHAPE): Ditto.
21730         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21731         * config/riscv/riscv-vector-builtins.cc
21732         (rvv_arg_type_info::get_tree_type): Add size_ptr.
21733         (gimple_folder::gimple_folder): New class.
21734         (gimple_folder::fold): Ditto.
21735         (gimple_fold_builtin): New function.
21736         (get_read_vl_instance): Ditto.
21737         (get_read_vl_decl): Ditto.
21738         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
21739         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
21740         (get_read_vl_instance): New function.
21741         (get_read_vl_decl):  Ditto.
21742         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
21743         (read_vl_insn_p): Ditto.
21744         (available_occurrence_p): Ditto.
21745         (backward_propagate_worthwhile_p): Ditto.
21746         (gen_vsetvl_pat): Adapt for vleff support.
21747         (get_forward_read_vl_insn): New function.
21748         (get_backward_fault_first_load_insn): Ditto.
21749         (source_equal_p): Adapt for vleff support.
21750         (first_ratio_invalid_for_second_sew_p): Remove.
21751         (first_ratio_invalid_for_second_lmul_p): Ditto.
21752         (first_lmul_less_than_second_lmul_p): Ditto.
21753         (first_ratio_less_than_second_ratio_p): Ditto.
21754         (support_relaxed_compatible_p): New function.
21755         (vector_insn_info::operator>): Remove.
21756         (vector_insn_info::operator>=): Refine.
21757         (vector_insn_info::parse_insn): Adapt for vleff support.
21758         (vector_insn_info::compatible_p): Ditto.
21759         (vector_insn_info::update_fault_first_load_avl): New function.
21760         (pass_vsetvl::transfer_after): Adapt for vleff support.
21761         (pass_vsetvl::demand_fusion): Ditto.
21762         (pass_vsetvl::cleanup_insns): Ditto.
21763         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
21764         redundant condtions.
21765         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
21766         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
21767         * config/riscv/riscv.md: Adapt for vleff support.
21768         * config/riscv/t-riscv: Ditto.
21769         * config/riscv/vector-iterators.md: New iterator.
21770         * config/riscv/vector.md (read_vlsi): New pattern.
21771         (read_vldi_zero_extend): Ditto.
21772         (@pred_fault_load<mode>): Ditto.
21774 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21776         * config/riscv/riscv-vector-builtins.cc
21777         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
21778         (function_expander::use_widen_ternop_insn): Ditto.
21779         * optabs.cc (maybe_gen_insn): Extend nops handling.
21781 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21783         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
21784         patterns according to RVV ISA.
21785         * config/riscv/vector-iterators.md: New iterators.
21786         * config/riscv/vector.md
21787         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
21788         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
21789         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
21790         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
21791         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
21792         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
21793         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
21794         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
21795         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
21796         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
21797         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
21798         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
21799         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
21800         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
21802 2023-03-10  Michael Collison  <collison@rivosinc.com>
21804         * tree-vect-loop-manip.cc (vect_do_peeling): Use
21805         result of constant_lower_bound instead of vf for the lower
21806         bound of the epilog loop trip count.
21808 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
21810         * passes.cc (emergency_dump_function): Finish graph generation.
21812 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
21814         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
21815         and bottom bit only.
21817 2023-03-09  Andrew Pinski  <apinski@marvell.com>
21819         PR tree-optimization/108980
21820         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
21821         Reorgnize the call to warning for not strict flexible arrays
21822         to be before the check of warned.
21824 2023-03-09  Jason Merrill  <jason@redhat.com>
21826         * doc/extend.texi: Comment out __is_deducible docs.
21828 2023-03-09  Jason Merrill  <jason@redhat.com>
21830         PR c++/105841
21831         * doc/extend.texi (Type Traits):: Document __is_deducible.
21833 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
21835         PR driver/108865
21836         * config.host: add object for x86_64-*-mingw*.
21837         * config/i386/sym-mingw32.cc: dummy file to attach
21838         symbol.
21839         * config/i386/utf8-mingw32.rc: windres resource file.
21840         * config/i386/winnt-utf8.manifest: XML manifest to
21841         enable UTF-8.
21842         * config/i386/x-mingw32: reference to x-mingw32-utf8.
21843         * config/i386/x-mingw32-utf8: Makefile fragment to
21844         embed UTF-8 manifest.
21846 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
21848         * lra-constraints.cc (process_alt_operands): Use operand modes for
21849         clobbered regs instead of the biggest access mode.
21851 2023-03-09  Richard Biener  <rguenther@suse.de>
21853         PR middle-end/108995
21854         * fold-const.cc (extract_muldiv_1): Avoid folding
21855         (CST * b) / CST2 when sanitizing overflow and we rely on
21856         overflow being undefined.
21858 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
21859             Richard Biener  <rguenther@suse.de>
21861         PR tree-optimization/109008
21862         * range-op-float.cc (float_widen_lhs_range): New function.
21863         (foperator_plus::op1_range, foperator_minus::op1_range,
21864         foperator_minus::op2_range, foperator_mult::op1_range,
21865         foperator_div::op1_range, foperator_div::op2_range): Use it.
21867 2023-03-07  Jonathan Grant  <jg@jguk.org>
21869         PR sanitizer/81649
21870         * doc/invoke.texi (Instrumentation Options):  Clarify
21871         LeakSanitizer behavior.
21873 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
21875         * doc/install.texi (Prerequisites): Add link to gmplib.org.
21877 2023-03-07  Pan Li  <pan2.li@intel.com>
21878             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21880         PR target/108185
21881         PR target/108654
21882         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
21883         modes.
21884         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
21885         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
21886         * genmodes.cc (adj_precision): New.
21887         (ADJUST_PRECISION): New.
21888         (emit_mode_adjustments): Handle ADJUST_PRECISION.
21890 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
21892         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
21894 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
21896         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
21897         {s|u}{max|min} in QI, HI and DI modes.
21898         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
21899         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
21900         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
21901         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
21902         saved in SGPRs.
21904 2023-03-06  Richard Biener  <rguenther@suse.de>
21906         PR tree-optimization/109025
21907         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
21908         the inner LC PHI use is the inner loop PHI latch definition
21909         before classifying an outer PHI as double reduction.
21911 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
21913         PR target/108429
21914         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
21915         generic.
21916         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
21917         (X86_TUNE_USE_SCATTER): Likewise.
21919 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
21921         PR target/109000
21922         * config/loongarch/loongarch.h (FP_RETURN): Use
21923         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
21924         (UNITS_PER_FP_ARG): Likewise.
21926 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21928         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
21929         (pass_vsetvl::backward_demand_fusion): Ditto.
21931 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
21932             SiYu Wu  <siyu@isrc.iscas.ac.cn>
21934         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
21935         instructions.
21936         (riscv_sm3p1_<mode>): New.
21937         (riscv_sm4ed_<mode>): New.
21938         (riscv_sm4ks_<mode>): New.
21939         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
21940         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
21941         ZKSH's built-in functions.
21943 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
21944             SiYu Wu  <siyu@isrc.iscas.ac.cn>
21946         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
21947         (riscv_sha256sig1_<mode>): New.
21948         (riscv_sha256sum0_<mode>): New.
21949         (riscv_sha256sum1_<mode>): New.
21950         (riscv_sha512sig0h): New.
21951         (riscv_sha512sig0l): New.
21952         (riscv_sha512sig1h): New.
21953         (riscv_sha512sig1l): New.
21954         (riscv_sha512sum0r): New.
21955         (riscv_sha512sum1r): New.
21956         (riscv_sha512sig0): New.
21957         (riscv_sha512sig1): New.
21958         (riscv_sha512sum0): New.
21959         (riscv_sha512sum1): New.
21960         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
21961         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
21962         built-in functions.
21963         (DIRECT_BUILTIN): Add new.
21965 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
21966             SiYu Wu  <siyu@isrc.iscas.ac.cn>
21968         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
21969         (DsA): New.
21970         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
21971         (riscv_aes32dsmi): New.
21972         (riscv_aes64ds): New.
21973         (riscv_aes64dsm): New.
21974         (riscv_aes64im): New.
21975         (riscv_aes64ks1i): New.
21976         (riscv_aes64ks2): New.
21977         (riscv_aes32esi): New.
21978         (riscv_aes32esmi): New.
21979         (riscv_aes64es): New.
21980         (riscv_aes64esm): New.
21981         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
21982         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
21983         ZKNE's built-in functions.
21985 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
21986             SiYu Wu  <siyu@isrc.iscas.ac.cn>
21988         * config/riscv/bitmanip.md: Add ZBKB's instructions.
21989         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
21990         * config/riscv/riscv.md: Add new type for crypto instructions.
21991         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
21992         description file.
21993         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
21994         extension's built-in function file.
21996 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
21997             SiYu Wu  <siyu@isrc.iscas.ac.cn>
21999         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
22000         (RISCV_FTYPE_NAME3): New.
22001         (RISCV_ATYPE_QI): New.
22002         (RISCV_ATYPE_HI): New.
22003         (RISCV_FTYPE_ATYPES2): New.
22004         (RISCV_FTYPE_ATYPES3): New.
22005         * config/riscv/riscv-ftypes.def (2): New.
22006         (3): New.
22008 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
22010         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
22011         use exact_log2().
22013 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22014             kito-cheng  <kito.cheng@sifive.com>
22016         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
22017         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
22018         (riscv_register_pragmas): Add builtin function check call.
22019         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
22020         (check_builtin_call): New function.
22021         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
22022         (class vreinterpret): Ditto.
22023         (class vlmul_ext): Ditto.
22024         (class vlmul_trunc): Ditto.
22025         (class vset): Ditto.
22026         (class vget): Ditto.
22027         (BASE): Ditto.
22028         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22029         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22030         (vluxei16): Ditto.
22031         (vluxei32): Ditto.
22032         (vluxei64): Ditto.
22033         (vloxei8): Ditto.
22034         (vloxei16): Ditto.
22035         (vloxei32): Ditto.
22036         (vloxei64): Ditto.
22037         (vsuxei8): Ditto.
22038         (vsuxei16): Ditto.
22039         (vsuxei32): Ditto.
22040         (vsuxei64): Ditto.
22041         (vsoxei8): Ditto.
22042         (vsoxei16): Ditto.
22043         (vsoxei32): Ditto.
22044         (vsoxei64): Ditto.
22045         (vundefined): Add new intrinsic.
22046         (vreinterpret): Ditto.
22047         (vlmul_ext): Ditto.
22048         (vlmul_trunc): Ditto.
22049         (vset): Ditto.
22050         (vget): Ditto.
22051         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
22052         (struct narrow_alu_def): Ditto.
22053         (struct reduc_alu_def): Ditto.
22054         (struct vundefined_def): Ditto.
22055         (struct misc_def): Ditto.
22056         (struct vset_def): Ditto.
22057         (struct vget_def): Ditto.
22058         (SHAPE): Ditto.
22059         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22060         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
22061         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22062         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22063         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22064         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22065         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22066         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22067         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22068         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22069         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22070         (DEF_RVV_LMUL1_OPS): Ditto.
22071         (DEF_RVV_LMUL2_OPS): Ditto.
22072         (DEF_RVV_LMUL4_OPS): Ditto.
22073         (vint16mf4_t): Ditto.
22074         (vint16mf2_t): Ditto.
22075         (vint16m1_t): Ditto.
22076         (vint16m2_t): Ditto.
22077         (vint16m4_t): Ditto.
22078         (vint16m8_t): Ditto.
22079         (vint32mf2_t): Ditto.
22080         (vint32m1_t): Ditto.
22081         (vint32m2_t): Ditto.
22082         (vint32m4_t): Ditto.
22083         (vint32m8_t): Ditto.
22084         (vint64m1_t): Ditto.
22085         (vint64m2_t): Ditto.
22086         (vint64m4_t): Ditto.
22087         (vint64m8_t): Ditto.
22088         (vuint16mf4_t): Ditto.
22089         (vuint16mf2_t): Ditto.
22090         (vuint16m1_t): Ditto.
22091         (vuint16m2_t): Ditto.
22092         (vuint16m4_t): Ditto.
22093         (vuint16m8_t): Ditto.
22094         (vuint32mf2_t): Ditto.
22095         (vuint32m1_t): Ditto.
22096         (vuint32m2_t): Ditto.
22097         (vuint32m4_t): Ditto.
22098         (vuint32m8_t): Ditto.
22099         (vuint64m1_t): Ditto.
22100         (vuint64m2_t): Ditto.
22101         (vuint64m4_t): Ditto.
22102         (vuint64m8_t): Ditto.
22103         (vint8mf4_t): Ditto.
22104         (vint8mf2_t): Ditto.
22105         (vint8m1_t): Ditto.
22106         (vint8m2_t): Ditto.
22107         (vint8m4_t): Ditto.
22108         (vint8m8_t): Ditto.
22109         (vuint8mf4_t): Ditto.
22110         (vuint8mf2_t): Ditto.
22111         (vuint8m1_t): Ditto.
22112         (vuint8m2_t): Ditto.
22113         (vuint8m4_t): Ditto.
22114         (vuint8m8_t): Ditto.
22115         (vint8mf8_t): Ditto.
22116         (vuint8mf8_t): Ditto.
22117         (vfloat32mf2_t): Ditto.
22118         (vfloat32m1_t): Ditto.
22119         (vfloat32m2_t): Ditto.
22120         (vfloat32m4_t): Ditto.
22121         (vfloat64m1_t): Ditto.
22122         (vfloat64m2_t): Ditto.
22123         (vfloat64m4_t): Ditto.
22124         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
22125         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
22126         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22127         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22128         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22129         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22130         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22131         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22132         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22133         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22134         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22135         (DEF_RVV_LMUL1_OPS): Ditto.
22136         (DEF_RVV_LMUL2_OPS): Ditto.
22137         (DEF_RVV_LMUL4_OPS): Ditto.
22138         (DEF_RVV_TYPE_INDEX): Ditto.
22139         (required_extensions_p): Adapt for new intrinsic support/
22140         (get_required_extensions): New function.
22141         (check_required_extensions): Ditto.
22142         (unsigned_base_type_p): Remove.
22143         (rvv_arg_type_info::get_scalar_ptr_type): New function.
22144         (get_mode_for_bitsize): Remove.
22145         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
22146         (rvv_arg_type_info::get_base_vector_type): Ditto.
22147         (rvv_arg_type_info::get_function_type_index): Ditto.
22148         (DEF_RVV_BASE_TYPE): New def.
22149         (function_builder::apply_predication): New class.
22150         (function_expander::mask_mode): Ditto.
22151         (function_checker::function_checker): Ditto.
22152         (function_checker::report_non_ice): Ditto.
22153         (function_checker::report_out_of_range): Ditto.
22154         (function_checker::require_immediate): Ditto.
22155         (function_checker::require_immediate_range): Ditto.
22156         (function_checker::check): Ditto.
22157         (check_builtin_call): Ditto.
22158         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
22159         (DEF_RVV_BASE_TYPE): Ditto.
22160         (DEF_RVV_TYPE_INDEX): Ditto.
22161         (vbool64_t): Ditto.
22162         (vbool32_t): Ditto.
22163         (vbool16_t): Ditto.
22164         (vbool8_t): Ditto.
22165         (vbool4_t): Ditto.
22166         (vbool2_t): Ditto.
22167         (vbool1_t): Ditto.
22168         (vuint8mf8_t): Ditto.
22169         (vuint8mf4_t): Ditto.
22170         (vuint8mf2_t): Ditto.
22171         (vuint8m1_t): Ditto.
22172         (vuint8m2_t): Ditto.
22173         (vint8m4_t): Ditto.
22174         (vuint8m4_t): Ditto.
22175         (vint8m8_t): Ditto.
22176         (vuint8m8_t): Ditto.
22177         (vint16mf4_t): Ditto.
22178         (vuint16mf2_t): Ditto.
22179         (vuint16m1_t): Ditto.
22180         (vuint16m2_t): Ditto.
22181         (vuint16m4_t): Ditto.
22182         (vuint16m8_t): Ditto.
22183         (vint32mf2_t): Ditto.
22184         (vuint32m1_t): Ditto.
22185         (vuint32m2_t): Ditto.
22186         (vuint32m4_t): Ditto.
22187         (vuint32m8_t): Ditto.
22188         (vuint64m1_t): Ditto.
22189         (vuint64m2_t): Ditto.
22190         (vuint64m4_t): Ditto.
22191         (vuint64m8_t): Ditto.
22192         (vfloat32mf2_t): Ditto.
22193         (vfloat32m1_t): Ditto.
22194         (vfloat32m2_t): Ditto.
22195         (vfloat32m4_t): Ditto.
22196         (vfloat32m8_t): Ditto.
22197         (vfloat64m1_t): Ditto.
22198         (vfloat64m4_t): Ditto.
22199         (vector): Move it def.
22200         (scalar): Ditto.
22201         (mask): Ditto.
22202         (signed_vector): Ditto.
22203         (unsigned_vector): Ditto.
22204         (unsigned_scalar): Ditto.
22205         (vector_ptr): Ditto.
22206         (scalar_ptr): Ditto.
22207         (scalar_const_ptr): Ditto.
22208         (void): Ditto.
22209         (size): Ditto.
22210         (ptrdiff): Ditto.
22211         (unsigned_long): Ditto.
22212         (long): Ditto.
22213         (eew8_index): Ditto.
22214         (eew16_index): Ditto.
22215         (eew32_index): Ditto.
22216         (eew64_index): Ditto.
22217         (shift_vector): Ditto.
22218         (double_trunc_vector): Ditto.
22219         (quad_trunc_vector): Ditto.
22220         (oct_trunc_vector): Ditto.
22221         (double_trunc_scalar): Ditto.
22222         (double_trunc_signed_vector): Ditto.
22223         (double_trunc_unsigned_vector): Ditto.
22224         (double_trunc_unsigned_scalar): Ditto.
22225         (double_trunc_float_vector): Ditto.
22226         (float_vector): Ditto.
22227         (lmul1_vector): Ditto.
22228         (widen_lmul1_vector): Ditto.
22229         (eew8_interpret): Ditto.
22230         (eew16_interpret): Ditto.
22231         (eew32_interpret): Ditto.
22232         (eew64_interpret): Ditto.
22233         (vlmul_ext_x2): Ditto.
22234         (vlmul_ext_x4): Ditto.
22235         (vlmul_ext_x8): Ditto.
22236         (vlmul_ext_x16): Ditto.
22237         (vlmul_ext_x32): Ditto.
22238         (vlmul_ext_x64): Ditto.
22239         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
22240         (struct function_type_info): New function.
22241         (struct rvv_arg_type_info): Ditto.
22242         (class function_checker): New class.
22243         (rvv_arg_type_info::get_scalar_type): New function.
22244         (rvv_arg_type_info::get_vector_type): Ditto.
22245         (function_expander::ret_mode): New function.
22246         (function_checker::arg_mode): Ditto.
22247         (function_checker::ret_mode): Ditto.
22248         * config/riscv/t-riscv: Add generator.
22249         * config/riscv/vector-iterators.md: New iterators.
22250         * config/riscv/vector.md (vundefined<mode>): New pattern.
22251         (@vundefined<mode>): Ditto.
22252         (@vreinterpret<mode>): Ditto.
22253         (@vlmul_extx2<mode>): Ditto.
22254         (@vlmul_extx4<mode>): Ditto.
22255         (@vlmul_extx8<mode>): Ditto.
22256         (@vlmul_extx16<mode>): Ditto.
22257         (@vlmul_extx32<mode>): Ditto.
22258         (@vlmul_extx64<mode>): Ditto.
22259         (*vlmul_extx2<mode>): Ditto.
22260         (*vlmul_extx4<mode>): Ditto.
22261         (*vlmul_extx8<mode>): Ditto.
22262         (*vlmul_extx16<mode>): Ditto.
22263         (*vlmul_extx32<mode>): Ditto.
22264         (*vlmul_extx64<mode>): Ditto.
22265         * config/riscv/genrvv-type-indexer.cc: New file.
22267 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22269         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
22270         (slide1_sew64_helper): New function.
22271         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
22272         (get_unknown_min_value): Ditto.
22273         (force_vector_length_operand): Ditto.
22274         (gen_no_side_effects_vsetvl_rtx): Ditto.
22275         (get_vl_x2_rtx): Ditto.
22276         (slide1_sew64_helper): Ditto.
22277         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
22278         (class vrgather): Ditto.
22279         (class vrgatherei16): Ditto.
22280         (class vcompress): Ditto.
22281         (BASE): Ditto.
22282         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22283         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
22284         (vslidedown): Ditto.
22285         (vslide1up): Ditto.
22286         (vslide1down): Ditto.
22287         (vfslide1up): Ditto.
22288         (vfslide1down): Ditto.
22289         (vrgather): Ditto.
22290         (vrgatherei16): Ditto.
22291         (vcompress): Ditto.
22292         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
22293         (vint8mf8_t): Ditto.
22294         (vint8mf4_t): Ditto.
22295         (vint8mf2_t): Ditto.
22296         (vint8m1_t): Ditto.
22297         (vint8m2_t): Ditto.
22298         (vint8m4_t): Ditto.
22299         (vint16mf4_t): Ditto.
22300         (vint16mf2_t): Ditto.
22301         (vint16m1_t): Ditto.
22302         (vint16m2_t): Ditto.
22303         (vint16m4_t): Ditto.
22304         (vint16m8_t): Ditto.
22305         (vint32mf2_t): Ditto.
22306         (vint32m1_t): Ditto.
22307         (vint32m2_t): Ditto.
22308         (vint32m4_t): Ditto.
22309         (vint32m8_t): Ditto.
22310         (vint64m1_t): Ditto.
22311         (vint64m2_t): Ditto.
22312         (vint64m4_t): Ditto.
22313         (vint64m8_t): Ditto.
22314         (vuint8mf8_t): Ditto.
22315         (vuint8mf4_t): Ditto.
22316         (vuint8mf2_t): Ditto.
22317         (vuint8m1_t): Ditto.
22318         (vuint8m2_t): Ditto.
22319         (vuint8m4_t): Ditto.
22320         (vuint16mf4_t): Ditto.
22321         (vuint16mf2_t): Ditto.
22322         (vuint16m1_t): Ditto.
22323         (vuint16m2_t): Ditto.
22324         (vuint16m4_t): Ditto.
22325         (vuint16m8_t): Ditto.
22326         (vuint32mf2_t): Ditto.
22327         (vuint32m1_t): Ditto.
22328         (vuint32m2_t): Ditto.
22329         (vuint32m4_t): Ditto.
22330         (vuint32m8_t): Ditto.
22331         (vuint64m1_t): Ditto.
22332         (vuint64m2_t): Ditto.
22333         (vuint64m4_t): Ditto.
22334         (vuint64m8_t): Ditto.
22335         (vfloat32mf2_t): Ditto.
22336         (vfloat32m1_t): Ditto.
22337         (vfloat32m2_t): Ditto.
22338         (vfloat32m4_t): Ditto.
22339         (vfloat32m8_t): Ditto.
22340         (vfloat64m1_t): Ditto.
22341         (vfloat64m2_t): Ditto.
22342         (vfloat64m4_t): Ditto.
22343         (vfloat64m8_t): Ditto.
22344         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
22345         * config/riscv/riscv.md: Adjust RVV instruction types.
22346         * config/riscv/vector-iterators.md (down): New iterator.
22347         (=vd,vr): New attribute.
22348         (UNSPEC_VSLIDE1UP): New unspec.
22349         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
22350         (*pred_slide<ud><mode>): Ditto.
22351         (*pred_slide<ud><mode>_extended): Ditto.
22352         (@pred_gather<mode>): Ditto.
22353         (@pred_gather<mode>_scalar): Ditto.
22354         (@pred_gatherei16<mode>): Ditto.
22355         (@pred_compress<mode>): Ditto.
22357 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22359         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
22361 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22363         * config/riscv/constraints.md (Wb1): New constraint.
22364         * config/riscv/predicates.md
22365         (vector_least_significant_set_mask_operand): New predicate.
22366         (vector_broadcast_mask_operand): Ditto.
22367         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
22368         (gen_scalar_move_mask): New function.
22369         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
22370         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
22371         (class vmv_s): Ditto.
22372         (BASE): Ditto.
22373         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22374         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
22375         (vmv_s): Ditto.
22376         (vfmv_f): Ditto.
22377         (vfmv_s): Ditto.
22378         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
22379         (SHAPE): Ditto.
22380         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22381         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
22382         (function_expander::use_exact_insn): New function.
22383         (function_expander::use_contiguous_load_insn): New function.
22384         (function_expander::use_contiguous_store_insn): New function.
22385         (function_expander::use_ternop_insn): New function.
22386         (function_expander::use_widen_ternop_insn): New function.
22387         (function_expander::use_scalar_move_insn): New function.
22388         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
22389         * config/riscv/riscv-vector-builtins.h
22390         (function_expander::add_scalar_move_mask_operand): New class.
22391         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
22392         (scalar_move_insn_p): Ditto.
22393         (has_vsetvl_killed_avl_p): Ditto.
22394         (anticipatable_occurrence_p): Ditto.
22395         (insert_vsetvl): Ditto.
22396         (get_vl_vtype_info): Ditto.
22397         (calculate_sew): Ditto.
22398         (calculate_vlmul): Ditto.
22399         (incompatible_avl_p): Ditto.
22400         (different_sew_p): Ditto.
22401         (different_lmul_p): Ditto.
22402         (different_ratio_p): Ditto.
22403         (different_tail_policy_p): Ditto.
22404         (different_mask_policy_p): Ditto.
22405         (possible_zero_avl_p): Ditto.
22406         (first_ratio_invalid_for_second_sew_p): Ditto.
22407         (first_ratio_invalid_for_second_lmul_p): Ditto.
22408         (second_ratio_invalid_for_first_sew_p): Ditto.
22409         (second_ratio_invalid_for_first_lmul_p): Ditto.
22410         (second_sew_less_than_first_sew_p): Ditto.
22411         (first_sew_less_than_second_sew_p): Ditto.
22412         (compare_lmul): Ditto.
22413         (second_lmul_less_than_first_lmul_p): Ditto.
22414         (first_lmul_less_than_second_lmul_p): Ditto.
22415         (first_ratio_less_than_second_ratio_p): Ditto.
22416         (second_ratio_less_than_first_ratio_p): Ditto.
22417         (DEF_INCOMPATIBLE_COND): Ditto.
22418         (greatest_sew): Ditto.
22419         (first_sew): Ditto.
22420         (second_sew): Ditto.
22421         (first_vlmul): Ditto.
22422         (second_vlmul): Ditto.
22423         (first_ratio): Ditto.
22424         (second_ratio): Ditto.
22425         (vlmul_for_first_sew_second_ratio): Ditto.
22426         (ratio_for_second_sew_first_vlmul): Ditto.
22427         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
22428         (always_unavailable): Ditto.
22429         (avl_unavailable_p): Ditto.
22430         (sew_unavailable_p): Ditto.
22431         (lmul_unavailable_p): Ditto.
22432         (ge_sew_unavailable_p): Ditto.
22433         (ge_sew_lmul_unavailable_p): Ditto.
22434         (ge_sew_ratio_unavailable_p): Ditto.
22435         (DEF_UNAVAILABLE_COND): Ditto.
22436         (same_sew_lmul_demand_p): Ditto.
22437         (propagate_avl_across_demands_p): Ditto.
22438         (reg_available_p): Ditto.
22439         (avl_info::has_non_zero_avl): Ditto.
22440         (vl_vtype_info::has_non_zero_avl): Ditto.
22441         (vector_insn_info::operator>=): Refactor.
22442         (vector_insn_info::parse_insn): Adjust for scalar move.
22443         (vector_insn_info::demand_vl_vtype): Remove.
22444         (vector_insn_info::compatible_p): New function.
22445         (vector_insn_info::compatible_avl_p): Ditto.
22446         (vector_insn_info::compatible_vtype_p): Ditto.
22447         (vector_insn_info::available_p): Ditto.
22448         (vector_insn_info::merge): Ditto.
22449         (vector_insn_info::fuse_avl): Ditto.
22450         (vector_insn_info::fuse_sew_lmul): Ditto.
22451         (vector_insn_info::fuse_tail_policy): Ditto.
22452         (vector_insn_info::fuse_mask_policy): Ditto.
22453         (vector_insn_info::dump): Ditto.
22454         (vector_infos_manager::release): Ditto.
22455         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
22456         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
22457         (pass_vsetvl::hard_empty_block_p): Ditto.
22458         (pass_vsetvl::backward_demand_fusion): Ditto.
22459         (pass_vsetvl::forward_demand_fusion): Ditto.
22460         (pass_vsetvl::refine_vsetvls): Ditto.
22461         (pass_vsetvl::cleanup_vsetvls): Ditto.
22462         (pass_vsetvl::commit_vsetvls): Ditto.
22463         (pass_vsetvl::propagate_avl): Ditto.
22464         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
22465         (struct demands_pair): Ditto.
22466         (struct demands_cond): Ditto.
22467         (struct demands_fuse_rule): Ditto.
22468         * config/riscv/vector-iterators.md: New iterator.
22469         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
22470         (*pred_broadcast<mode>): Ditto.
22471         (*pred_broadcast<mode>_extended_scalar): Ditto.
22472         (@pred_extract_first<mode>): Ditto.
22473         (*pred_extract_first<mode>): Ditto.
22474         (@pred_extract_first_trunc<mode>): Ditto.
22475         * config/riscv/riscv-vsetvl.def: New file.
22477 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
22479         * config/riscv/bitmanip.md: allow 0 constant in max/min
22480         pattern.
22482 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
22484         * config/riscv/bitmanip.md: Fix wrong index in the check.
22486 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
22488         PR middle-end/109006
22489         * vec.cc (test_auto_alias): Adjust comment for removal of
22490         m_vecdata.
22491         * read-rtl-function.cc (function_reader::parse_block): Likewise.
22492         * gdbhooks.py: Likewise.
22494 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
22496         PR testsuite/108973
22497         * selftest-diagnostic.cc
22498         (test_diagnostic_context::test_diagnostic_context): Set
22499         caret_max_width to 80.
22501 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
22503         * gimple-ssa-warn-access.cc
22504         (pass_waccess::check_dangling_stores): Skip non-stores.
22506 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
22508         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
22509         after vmsr and vmrs, and lower the case of P0.
22511 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
22513         PR middle-end/109006
22514         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
22516 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
22518         PR middle-end/109006
22519         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
22521 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
22523         PR c/108986
22524         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
22525         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
22526         suppressed on stmt.  For [static %E] warning, print access_nelts
22527         rather than access_size.  Fix up comment wording.
22529 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
22531         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
22532         arch14 instead of z16.
22534 2023-03-03  Anthony Green  <green@moxielogic.com>
22536         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
22538 2023-03-03  Anthony Green  <green@moxielogic.com>
22540         * config/moxie/constraints.md (A, B, W): Change
22541         define_constraint to define_memory_constraint.
22543 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
22545         * toplev.cc (process_options): Fix the spelling of
22546         "-fstack-clash-protection".
22548 2023-03-03  Richard Biener  <rguenther@suse.de>
22550         PR tree-optimization/109002
22551         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
22552         PHI-translate ANTIC_IN.
22554 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
22556         PR tree-optimization/108988
22557         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
22558         size_type_node before passing it as argument to fwrite.  Formatting
22559         fixes.
22561 2023-03-03  Richard Biener  <rguenther@suse.de>
22563         PR target/108738
22564         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
22565         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
22566         * config/i386/i386-features.h (scalar_chain::max_visits): New.
22567         (scalar_chain::build): Add bitmap parameter, return boolean.
22568         (scalar_chain::add_insn): Likewise.
22569         (scalar_chain::analyze_register_chain): Likewise.
22570         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
22571         Initialize max_visits.
22572         (scalar_chain::analyze_register_chain): When we exhaust
22573         max_visits, abort.  Also abort when running into any
22574         disallowed insn.
22575         (scalar_chain::add_insn): Propagate abort.
22576         (scalar_chain::build): Likewise.  When aborting amend
22577         the set of disallowed insn with the insns set.
22578         (convert_scalars_to_vector): Adjust.  Do not convert aborted
22579         chains.
22581 2023-03-03  Richard Biener  <rguenther@suse.de>
22583         PR debug/108772
22584         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
22585         generate a DIE for a function scope static.
22587 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
22589         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
22591 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
22593         PR target/108883
22594         * target.h (emit_support_tinfos_callback): New typedef.
22595         * targhooks.h (default_emit_support_tinfos): Declare.
22596         * targhooks.cc (default_emit_support_tinfos): New function.
22597         * target.def (emit_support_tinfos): New target hook.
22598         * doc/tm.texi.in (emit_support_tinfos): Document it.
22599         * doc/tm.texi: Regenerated.
22600         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
22601         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
22603 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
22605         * ira-costs.cc: Include print-rtl.h.
22606         (record_reg_classes, scan_one_insn): Add code to print debug info.
22607         (record_operand_costs): Find and use smaller cost for hard reg
22608         move.
22610 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
22611             Paul-Antoine Arras  <pa@codesourcery.com>
22613         * builtins.cc (mathfn_built_in_explicit): New.
22614         * config/gcn/gcn.cc: Include case-cfn-macros.h.
22615         (mathfn_built_in_explicit): Add prototype.
22616         (gcn_vectorize_builtin_vectorized_function): New.
22617         (gcn_libc_has_function): New.
22618         (TARGET_LIBC_HAS_FUNCTION): Define.
22619         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
22621 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
22623         PR tree-optimization/108979
22624         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
22625         operations on invariants.
22627 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
22629         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
22630         * config/s390/s390.cc (s390_option_override_internal): Make
22631         partial vector usage the default from z13 on.
22632         * config/s390/vector.md (len_load_v16qi): Add.
22633         (len_store_v16qi): Add.
22635 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
22637         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
22638         of constant 0 offset.
22640 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
22642         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
22643         instead of long.
22644         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
22646 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
22648         * config.gcc: add -with-{no-}msa build option.
22649         * config/mips/mips.h: Likewise.
22650         * doc/install.texi: Likewise.
22652 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
22654         PR tree-optimization/108603
22655         * explow.cc (convert_memory_address_addr_space_1): Only wrap
22656         the result of a recursive call in a CONST if no instructions
22657         were emitted.
22659 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
22661         PR tree-optimization/108430
22662         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
22663         of inverted condition.
22665 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
22667         PR c++/108934
22668         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
22669         comparison copy the bytes from ptr to a temporary buffer and clearing
22670         padding bits in there.
22672 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
22674         PR middle-end/108545
22675         * gimplify.cc (struct tree_operand_hash_no_se): New.
22676         (omp_index_mapping_groups_1, omp_index_mapping_groups,
22677         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
22678         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
22679         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
22680         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
22681         of tree_operand_hash.
22683 2023-03-01  LIU Hao  <lh_mouse@126.com>
22685         PR pch/14940
22686         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
22687         Remove the size limit `pch_VA_max_size`
22689 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
22691         PR middle-end/108546
22692         * omp-low.cc (lower_omp_target): Remove optional handling
22693         on the receiver side, i.e. inside target (data), for
22694         use_device_ptr.
22696 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
22698         PR debug/108967
22699         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
22700         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
22702 2023-03-01  Richard Biener  <rguenther@suse.de>
22704         PR tree-optimization/108970
22705         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
22706         Check we can copy the BBs.
22707         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
22708         check.
22709         (vect_do_peeling): Streamline error handling.
22711 2023-03-01  Richard Biener  <rguenther@suse.de>
22713         PR tree-optimization/108950
22714         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
22715         Check oprnd0 is defined in the loop.
22716         * tree-vect-loop.cc (vectorizable_reduction): Record all
22717         operands vector types, compute that of invariants and
22718         properly update their SLP nodes.
22720 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
22722         PR target/108240
22723         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
22724         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
22726 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
22728         PR middle-end/107411
22729         PR middle-end/107411
22730         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
22731         xasprintf.
22732         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
22733         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
22735 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
22737         PR sanitizer/108894
22738         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
22739         comparison rather than index > bound.
22740         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
22741         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
22742         * doc/invoke.texi (-fsanitize=bounds): Document that whether
22743         flexible array member-like arrays are instrumented or not depends
22744         on -fstrict-flex-arrays* options of strict_flex_array attributes.
22745         (-fsanitize=bounds-strict): Document that flexible array members
22746         are not instrumented.
22748 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
22750         PR target/108922
22751         Revert:
22752         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
22753         (fmod<mode>3): Ditto.
22754         (fpremxf4_i387): Ditto.
22755         (reminderxf3): Ditto.
22756         (reminder<mode>3): Ditto.
22757         (fprem1xf4_i387): Ditto.
22759 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
22761         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
22762         generating FFS with mismatched operand and result modes, by using
22763         an explicit SIGN_EXTEND/ZERO_EXTEND.
22764         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
22765         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
22767 2023-02-27  Patrick Palka  <ppalka@redhat.com>
22769         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
22770         * lra-int.h (lra_change_class): Likewise.
22771         * recog.h (which_op_alt): Likewise.
22772         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
22773         instead of static.
22775 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22777         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
22778         New prototype.
22779         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
22780         New function.
22781         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
22782         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
22784 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
22786         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
22787         (xtensa_get_config_v3): New functions.
22789 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22791         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
22793 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
22795         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
22796         the macro to 0x1000000000.
22798 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
22800         PR modula2/108261
22801         * doc/gm2.texi (-fm2-pathname): New option documented.
22802         (-fm2-pathnameI): New option documented.
22803         (-fm2-prefix=): New option documented.
22804         (-fruntime-modules=): Update default module list.
22806 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
22808         PR target/108919
22809         * config/xtensa/xtensa-protos.h
22810         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
22811         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
22812         to xtensa_expand_call.
22813         (xtensa_expand_call): Emit the call and add a clobber expression
22814         for the static chain to it in case of windowed ABI.
22815         * config/xtensa/xtensa.md (call, call_value, sibcall)
22816         (sibcall_value): Call xtensa_expand_call and complete expansion
22817         right after that call.
22819 2023-02-24  Richard Biener  <rguenther@suse.de>
22821         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
22822         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
22823         changing alignment of vec<T, A, vl_embed> and simplifying
22824         address.
22825         (vec<T, A, vl_embed>::address): Compute as this + 1.
22826         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
22827         vector instead of the offset of the m_vecdata member.
22828         (auto_vec<T, N>::m_data): Turn storage into
22829         uninitialized unsigned char.
22830         (auto_vec<T, N>::auto_vec): Allow allocation of one
22831         stack member.  Initialize m_vec in a special way to
22832         avoid later stringop overflow diagnostics.
22833         * vec.cc (test_auto_alias): New.
22834         (vec_cc_tests): Call it.
22836 2023-02-24  Richard Biener  <rguenther@suse.de>
22838         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
22839         take a const reference to the object, use address to
22840         access data.
22841         (vec<T, A, vl_embed>::contains): Use address to access data.
22842         (vec<T, A, vl_embed>::operator[]): Use address instead of
22843         m_vecdata to access data.
22844         (vec<T, A, vl_embed>::iterate): Likewise.
22845         (vec<T, A, vl_embed>::copy): Likewise.
22846         (vec<T, A, vl_embed>::quick_push): Likewise.
22847         (vec<T, A, vl_embed>::pop): Likewise.
22848         (vec<T, A, vl_embed>::quick_insert): Likewise.
22849         (vec<T, A, vl_embed>::ordered_remove): Likewise.
22850         (vec<T, A, vl_embed>::unordered_remove): Likewise.
22851         (vec<T, A, vl_embed>::block_remove): Likewise.
22852         (vec<T, A, vl_heap>::address): Likewise.
22854 2023-02-24  Martin Liska  <mliska@suse.cz>
22856         PR sanitizer/108834
22857         * asan.cc (asan_add_global): Use proper TU name for normal
22858         global variables (and aux_base_name for the artificial one).
22860 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
22862         * config/i386/i386-builtin.def: Update description of BDESC
22863         and BDESC_FIRST in file comment to include mask2.
22865 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22867         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
22869 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
22871         PR middle-end/108854
22872         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
22873         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
22874         nodes and adjust their DECL_CONTEXT.
22876 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
22878         PR target/108881
22879         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
22880         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
22881         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
22882         __builtin_ia32_cvtne2ps2bf16_v8bf,
22883         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
22884         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
22885         __builtin_ia32_cvtneps2bf16_v8sf_mask,
22886         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
22887         __builtin_ia32_cvtneps2bf16_v4sf_mask,
22888         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
22889         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
22890         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
22891         __builtin_ia32_dpbf16ps_v4sf_mask,
22892         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
22893         OPTION_MASK_ISA_AVX512VL.
22895 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22897         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
22898         Add non-compact 32-bit multilibs.
22900 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
22902         * config/mips/mips.md (*clo<mode>2): New pattern.
22904 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
22906         * config/mips/mips.h (machine_function): New variable
22907         use_hazard_barrier_return_p.
22908         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
22909         (mips_hb_return_internal): New insn pattern.
22910         * config/mips/mips.cc (mips_attribute_table): Add attribute
22911         use_hazard_barrier_return.
22912         (mips_use_hazard_barrier_return_p): New static function.
22913         (mips_function_attr_inlinable_p): Likewise.
22914         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
22915         Emit error for unsupported architecture choice.
22916         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
22917         Return false for use_hazard_barrier_return.
22918         (mips_expand_epilogue): Emit hazard barrier return.
22919         * doc/extend.texi: Document use_hazard_barrier_return.
22921 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
22923         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
22924         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
22925         for the gcc-internal headers.
22927 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
22929         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
22930         and $(POSTCOMPILE) instead of manual dependency listing.
22931         * config/xtensa/xtensa-dynconfig.c: Rename to ...
22932         * config/xtensa/xtensa-dynconfig.cc: ... this.
22934 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
22936         * doc/cfg.texi: Reorder index entries around @items.
22937         * doc/cpp.texi: Ditto.
22938         * doc/cppenv.texi: Ditto.
22939         * doc/cppopts.texi: Ditto.
22940         * doc/generic.texi: Ditto.
22941         * doc/install.texi: Ditto.
22942         * doc/extend.texi: Ditto.
22943         * doc/invoke.texi: Ditto.
22944         * doc/md.texi: Ditto.
22945         * doc/rtl.texi: Ditto.
22946         * doc/tm.texi.in: Ditto.
22947         * doc/trouble.texi: Ditto.
22948         * doc/tm.texi: Regenerate.
22950 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22952         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
22953         the occurrence of general-purpose register used only once and for
22954         transferring intermediate value.
22956 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22958         * config/xtensa/xtensa.cc (machine_function): Add new member
22959         'eliminated_callee_saved_bmp'.
22960         (xtensa_can_eliminate_callee_saved_reg_p): New function to
22961         determine whether the register can be eliminated or not.
22962         (xtensa_expand_prologue): Add invoking the above function and
22963         elimination the use of callee-saved register by using its stack
22964         slot through the stack pointer (or the frame pointer if needed)
22965         directly.
22966         (xtensa_expand_prologue): Modify to not emit register restoration
22967         insn from its stack slot if the register is already eliminated.
22969 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
22971         PR translation/108890
22972         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
22973         around fatal_error format strings.
22975 2023-02-23  Richard Biener  <rguenther@suse.de>
22977         * tree-ssa-structalias.cc (handle_lhs_call): Do not
22978         re-create rhsc, only truncate it.
22980 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
22982         PR middle-end/106258
22983         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
22984         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
22986 2023-02-23  Richard Biener  <rguenther@suse.de>
22988         * tree-if-conv.cc (tree_if_conversion): Properly manage
22989         memory of refs and the contained data references.
22991 2023-02-23  Richard Biener  <rguenther@suse.de>
22993         PR tree-optimization/108888
22994         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
22995         calls to predicate.
22996         (predicate_statements): Only predicate calls with PLF_2.
22998 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23000         * config/xtensa/xtensa.md
23001         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
23002         Add missing "SI:" to PLUS RTXes.
23004 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23006         PR target/108876
23007         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
23008         Emit (use (reg:SI A0_REG)) at the end in the sibling call
23009         (i.e. the same place as (return) in the normal call).
23011 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23013         Revert:
23014         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
23016         PR target/108876
23017         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23018         for A0_REG.
23019         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23020         (sibcall_value, sibcall_value_internal): Add 'use' expression
23021         for A0_REG.
23023 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
23025         * doc/cppdiropts.texi: Reorder @opindex commands to precede
23026         @items they relate to.
23027         * doc/cppopts.texi: Ditto.
23028         * doc/cppwarnopts.texi: Ditto.
23029         * doc/invoke.texi: Ditto.
23030         * doc/lto.texi: Ditto.
23032 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
23034         * internal-fn.cc (expand_MASK_CALL): New.
23035         * internal-fn.def (MASK_CALL): New.
23036         * internal-fn.h (expand_MASK_CALL): New prototype.
23037         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
23038         for mask arguments also.
23039         * tree-if-conv.cc: Include cgraph.h.
23040         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
23041         (predicate_statements): Convert functions to IFN_MASK_CALL.
23042         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
23043         IFN_MASK_CALL as a SIMD function call.
23044         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
23045         IFN_MASK_CALL as an inbranch SIMD function call.
23046         Generate the mask vector arguments.
23048 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23050         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
23051         (class widen_reducop): Ditto.
23052         (class freducop): Ditto.
23053         (class widen_freducop): Ditto.
23054         (BASE): Ditto.
23055         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23056         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23057         (vredmaxu): Ditto.
23058         (vredmax): Ditto.
23059         (vredminu): Ditto.
23060         (vredmin): Ditto.
23061         (vredand): Ditto.
23062         (vredor): Ditto.
23063         (vredxor): Ditto.
23064         (vwredsum): Ditto.
23065         (vwredsumu): Ditto.
23066         (vfredusum): Ditto.
23067         (vfredosum): Ditto.
23068         (vfredmax): Ditto.
23069         (vfredmin): Ditto.
23070         (vfwredosum): Ditto.
23071         (vfwredusum): Ditto.
23072         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
23073         (SHAPE): Ditto.
23074         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23075         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
23076         (DEF_RVV_WU_OPS): Ditto.
23077         (DEF_RVV_WF_OPS): Ditto.
23078         (vint8mf8_t): Ditto.
23079         (vint8mf4_t): Ditto.
23080         (vint8mf2_t): Ditto.
23081         (vint8m1_t): Ditto.
23082         (vint8m2_t): Ditto.
23083         (vint8m4_t): Ditto.
23084         (vint8m8_t): Ditto.
23085         (vint16mf4_t): Ditto.
23086         (vint16mf2_t): Ditto.
23087         (vint16m1_t): Ditto.
23088         (vint16m2_t): Ditto.
23089         (vint16m4_t): Ditto.
23090         (vint16m8_t): Ditto.
23091         (vint32mf2_t): Ditto.
23092         (vint32m1_t): Ditto.
23093         (vint32m2_t): Ditto.
23094         (vint32m4_t): Ditto.
23095         (vint32m8_t): Ditto.
23096         (vuint8mf8_t): Ditto.
23097         (vuint8mf4_t): Ditto.
23098         (vuint8mf2_t): Ditto.
23099         (vuint8m1_t): Ditto.
23100         (vuint8m2_t): Ditto.
23101         (vuint8m4_t): Ditto.
23102         (vuint8m8_t): Ditto.
23103         (vuint16mf4_t): Ditto.
23104         (vuint16mf2_t): Ditto.
23105         (vuint16m1_t): Ditto.
23106         (vuint16m2_t): Ditto.
23107         (vuint16m4_t): Ditto.
23108         (vuint16m8_t): Ditto.
23109         (vuint32mf2_t): Ditto.
23110         (vuint32m1_t): Ditto.
23111         (vuint32m2_t): Ditto.
23112         (vuint32m4_t): Ditto.
23113         (vuint32m8_t): Ditto.
23114         (vfloat32mf2_t): Ditto.
23115         (vfloat32m1_t): Ditto.
23116         (vfloat32m2_t): Ditto.
23117         (vfloat32m4_t): Ditto.
23118         (vfloat32m8_t): Ditto.
23119         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
23120         (DEF_RVV_WU_OPS): Ditto.
23121         (DEF_RVV_WF_OPS): Ditto.
23122         (required_extensions_p): Add reduction support.
23123         (rvv_arg_type_info::get_base_vector_type): Ditto.
23124         (rvv_arg_type_info::get_tree_type): Ditto.
23125         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23126         * config/riscv/riscv.md: Ditto.
23127         * config/riscv/vector-iterators.md (minu): Ditto.
23128         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
23129         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
23130         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
23131         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
23132         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
23133         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
23134         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
23136 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23138         * config/riscv/iterators.md: New iterator.
23139         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
23140         (enum ternop_type): New enum.
23141         (class vmacc): New class.
23142         (class imac): Ditto.
23143         (class vnmsac): Ditto.
23144         (enum widen_ternop_type): New enum.
23145         (class vmadd): Ditto.
23146         (class vnmsub): Ditto.
23147         (class iwmac): Ditto.
23148         (class vwmacc): Ditto.
23149         (class vwmaccu): Ditto.
23150         (class vwmaccsu): Ditto.
23151         (class vwmaccus): Ditto.
23152         (class reverse_binop): Ditto.
23153         (class vfmacc): Ditto.
23154         (class vfnmsac): Ditto.
23155         (class vfmadd): Ditto.
23156         (class vfnmsub): Ditto.
23157         (class vfnmacc): Ditto.
23158         (class vfmsac): Ditto.
23159         (class vfnmadd): Ditto.
23160         (class vfmsub): Ditto.
23161         (class vfwmacc): Ditto.
23162         (class vfwnmacc): Ditto.
23163         (class vfwmsac): Ditto.
23164         (class vfwnmsac): Ditto.
23165         (class float_misc): Ditto.
23166         (class fcmp): Ditto.
23167         (class vfclass): Ditto.
23168         (class vfcvt_x): Ditto.
23169         (class vfcvt_rtz_x): Ditto.
23170         (class vfcvt_f): Ditto.
23171         (class vfwcvt_x): Ditto.
23172         (class vfwcvt_rtz_x): Ditto.
23173         (class vfwcvt_f): Ditto.
23174         (class vfncvt_x): Ditto.
23175         (class vfncvt_rtz_x): Ditto.
23176         (class vfncvt_f): Ditto.
23177         (class vfncvt_rod_f): Ditto.
23178         (BASE): Ditto.
23179         * config/riscv/riscv-vector-builtins-bases.h:
23180         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
23181         (vsext): Ditto.
23182         (vfadd): Ditto.
23183         (vfsub): Ditto.
23184         (vfrsub): Ditto.
23185         (vfwadd): Ditto.
23186         (vfwsub): Ditto.
23187         (vfmul): Ditto.
23188         (vfdiv): Ditto.
23189         (vfrdiv): Ditto.
23190         (vfwmul): Ditto.
23191         (vfmacc): Ditto.
23192         (vfnmsac): Ditto.
23193         (vfmadd): Ditto.
23194         (vfnmsub): Ditto.
23195         (vfnmacc): Ditto.
23196         (vfmsac): Ditto.
23197         (vfnmadd): Ditto.
23198         (vfmsub): Ditto.
23199         (vfwmacc): Ditto.
23200         (vfwnmacc): Ditto.
23201         (vfwmsac): Ditto.
23202         (vfwnmsac): Ditto.
23203         (vfsqrt): Ditto.
23204         (vfrsqrt7): Ditto.
23205         (vfrec7): Ditto.
23206         (vfmin): Ditto.
23207         (vfmax): Ditto.
23208         (vfsgnj): Ditto.
23209         (vfsgnjn): Ditto.
23210         (vfsgnjx): Ditto.
23211         (vfneg): Ditto.
23212         (vfabs): Ditto.
23213         (vmfeq): Ditto.
23214         (vmfne): Ditto.
23215         (vmflt): Ditto.
23216         (vmfle): Ditto.
23217         (vmfgt): Ditto.
23218         (vmfge): Ditto.
23219         (vfclass): Ditto.
23220         (vfmerge): Ditto.
23221         (vfmv_v): Ditto.
23222         (vfcvt_x): Ditto.
23223         (vfcvt_xu): Ditto.
23224         (vfcvt_rtz_x): Ditto.
23225         (vfcvt_rtz_xu): Ditto.
23226         (vfcvt_f): Ditto.
23227         (vfwcvt_x): Ditto.
23228         (vfwcvt_xu): Ditto.
23229         (vfwcvt_rtz_x): Ditto.
23230         (vfwcvt_rtz_xu): Ditto.
23231         (vfwcvt_f): Ditto.
23232         (vfncvt_x): Ditto.
23233         (vfncvt_xu): Ditto.
23234         (vfncvt_rtz_x): Ditto.
23235         (vfncvt_rtz_xu): Ditto.
23236         (vfncvt_f): Ditto.
23237         (vfncvt_rod_f): Ditto.
23238         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23239         (struct move_def): Ditto.
23240         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
23241         (DEF_RVV_CONVERT_I_OPS): Ditto.
23242         (DEF_RVV_CONVERT_U_OPS): Ditto.
23243         (DEF_RVV_WCONVERT_I_OPS): Ditto.
23244         (DEF_RVV_WCONVERT_U_OPS): Ditto.
23245         (DEF_RVV_WCONVERT_F_OPS): Ditto.
23246         (vfloat64m1_t): Ditto.
23247         (vfloat64m2_t): Ditto.
23248         (vfloat64m4_t): Ditto.
23249         (vfloat64m8_t): Ditto.
23250         (vint32mf2_t): Ditto.
23251         (vint32m1_t): Ditto.
23252         (vint32m2_t): Ditto.
23253         (vint32m4_t): Ditto.
23254         (vint32m8_t): Ditto.
23255         (vint64m1_t): Ditto.
23256         (vint64m2_t): Ditto.
23257         (vint64m4_t): Ditto.
23258         (vint64m8_t): Ditto.
23259         (vuint32mf2_t): Ditto.
23260         (vuint32m1_t): Ditto.
23261         (vuint32m2_t): Ditto.
23262         (vuint32m4_t): Ditto.
23263         (vuint32m8_t): Ditto.
23264         (vuint64m1_t): Ditto.
23265         (vuint64m2_t): Ditto.
23266         (vuint64m4_t): Ditto.
23267         (vuint64m8_t): Ditto.
23268         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
23269         (DEF_RVV_CONVERT_U_OPS): Ditto.
23270         (DEF_RVV_WCONVERT_I_OPS): Ditto.
23271         (DEF_RVV_WCONVERT_U_OPS): Ditto.
23272         (DEF_RVV_WCONVERT_F_OPS): Ditto.
23273         (DEF_RVV_F_OPS): Ditto.
23274         (DEF_RVV_WEXTF_OPS): Ditto.
23275         (required_extensions_p): Adjust for floating-point support.
23276         (check_required_extensions): Ditto.
23277         (unsigned_base_type_p): Ditto.
23278         (get_mode_for_bitsize): Ditto.
23279         (rvv_arg_type_info::get_base_vector_type): Ditto.
23280         (rvv_arg_type_info::get_tree_type): Ditto.
23281         * config/riscv/riscv-vector-builtins.def (v_f): New define.
23282         (f): New define.
23283         (f_v): New define.
23284         (xu_v): New define.
23285         (f_w): New define.
23286         (xu_w): New define.
23287         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
23288         (function_expander::arg_mode): New function.
23289         * config/riscv/vector-iterators.md (sof): New iterator.
23290         (vfrecp): Ditto.
23291         (copysign): Ditto.
23292         (n): Ditto.
23293         (msac): Ditto.
23294         (msub): Ditto.
23295         (fixuns_trunc): Ditto.
23296         (floatuns): Ditto.
23297         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23298         (@pred_<optab><mode>): Ditto.
23299         (@pred_<optab><mode>_scalar): Ditto.
23300         (@pred_<optab><mode>_reverse_scalar): Ditto.
23301         (@pred_<copysign><mode>): Ditto.
23302         (@pred_<copysign><mode>_scalar): Ditto.
23303         (@pred_mul_<optab><mode>): Ditto.
23304         (pred_mul_<optab><mode>_undef_merge): Ditto.
23305         (*pred_<madd_nmsub><mode>): Ditto.
23306         (*pred_<macc_nmsac><mode>): Ditto.
23307         (*pred_mul_<optab><mode>): Ditto.
23308         (@pred_mul_<optab><mode>_scalar): Ditto.
23309         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
23310         (*pred_<madd_nmsub><mode>_scalar): Ditto.
23311         (*pred_<macc_nmsac><mode>_scalar): Ditto.
23312         (*pred_mul_<optab><mode>_scalar): Ditto.
23313         (@pred_neg_mul_<optab><mode>): Ditto.
23314         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
23315         (*pred_<nmadd_msub><mode>): Ditto.
23316         (*pred_<nmacc_msac><mode>): Ditto.
23317         (*pred_neg_mul_<optab><mode>): Ditto.
23318         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
23319         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
23320         (*pred_<nmadd_msub><mode>_scalar): Ditto.
23321         (*pred_<nmacc_msac><mode>_scalar): Ditto.
23322         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
23323         (@pred_<misc_op><mode>): Ditto.
23324         (@pred_class<mode>): Ditto.
23325         (@pred_dual_widen_<optab><mode>): Ditto.
23326         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
23327         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
23328         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
23329         (@pred_widen_mul_<optab><mode>): Ditto.
23330         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
23331         (@pred_widen_neg_mul_<optab><mode>): Ditto.
23332         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
23333         (@pred_cmp<mode>): Ditto.
23334         (*pred_cmp<mode>): Ditto.
23335         (*pred_cmp<mode>_narrow): Ditto.
23336         (@pred_cmp<mode>_scalar): Ditto.
23337         (*pred_cmp<mode>_scalar): Ditto.
23338         (*pred_cmp<mode>_scalar_narrow): Ditto.
23339         (@pred_eqne<mode>_scalar): Ditto.
23340         (*pred_eqne<mode>_scalar): Ditto.
23341         (*pred_eqne<mode>_scalar_narrow): Ditto.
23342         (@pred_merge<mode>_scalar): Ditto.
23343         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
23344         (@pred_<fix_cvt><mode>): Ditto.
23345         (@pred_<float_cvt><mode>): Ditto.
23346         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
23347         (@pred_widen_<fix_cvt><mode>): Ditto.
23348         (@pred_widen_<float_cvt><mode>): Ditto.
23349         (@pred_extend<mode>): Ditto.
23350         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
23351         (@pred_narrow_<fix_cvt><mode>): Ditto.
23352         (@pred_narrow_<float_cvt><mode>): Ditto.
23353         (@pred_trunc<mode>): Ditto.
23354         (@pred_rod_trunc<mode>): Ditto.
23356 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
23358         PR middle-end/106258
23359         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
23360         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
23361         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23362         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
23364 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
23366         * common.opt (-Wcomplain-wrong-lang): New.
23367         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
23368         * opts-common.cc (prune_options): Handle it.
23369         * opts-global.cc (complain_wrong_lang): Use it.
23371 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
23373         PR analyzer/108830
23374         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
23376 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
23378         PR target/108876
23379         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23380         for A0_REG.
23381         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23382         (sibcall_value, sibcall_value_internal): Add 'use' expression
23383         for A0_REG.
23385 2023-02-21  Richard Biener  <rguenther@suse.de>
23387         PR tree-optimization/108691
23388         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
23389         assert about calls_setjmp not becoming true when it was false.
23391 2023-02-21  Richard Biener  <rguenther@suse.de>
23393         PR tree-optimization/108793
23394         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
23395         Use convert operands to niter_type when computing num.
23397 2023-02-21  Richard Biener  <rguenther@suse.de>
23399         Revert:
23400         2023-02-13  Richard Biener  <rguenther@suse.de>
23402         PR tree-optimization/108691
23403         * tree-cfg.cc (notice_special_calls): When the CFG is built
23404         honor gimple_call_ctrl_altering_p.
23405         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
23406         temporarily if the call is not control-altering.
23407         * calls.cc (emit_call_1): Do not add REG_SETJMP if
23408         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
23410 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23412         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
23413         true if register A0 (return address register) when -Og is specified.
23415 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
23417         * config/i386/predicates.md
23418         (general_x64constmem_operand): New predicate.
23419         * config/i386/i386.md (*cmpqi_ext<mode>_1):
23420         Use nonimm_x64constmem_operand.
23421         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
23422         (*addqi_ext<mode>_1): Ditto.
23423         (*testqi_ext<mode>_1): Ditto.
23424         (*andqi_ext<mode>_1): Ditto.
23425         (*andqi_ext<mode>_1_cc): Ditto.
23426         (*<any_or:code>qi_ext<mode>_1): Ditto.
23427         (*xorqi_ext<mode>_1_cc): Ditto.
23429 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
23431         PR target/108862
23432         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
23433         gen_umadddi4_highpart{,_le}.
23435 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
23437         * config/riscv/riscv.md (prefetch): Use r instead of p for the
23438         address operand.
23439         (riscv_prefetchi_<mode>): Ditto.
23441 2023-02-20  Richard Biener  <rguenther@suse.de>
23443         PR tree-optimization/108816
23444         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
23445         versioning condition split prerequesite, assert required
23446         invariant.
23448 2023-02-20  Richard Biener  <rguenther@suse.de>
23450         PR tree-optimization/108825
23451         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
23452         loop-local verfication only verify there's no pending SSA
23453         update.
23455 2023-02-20  Richard Biener  <rguenther@suse.de>
23457         PR tree-optimization/108819
23458         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
23459         we have an SSA name as iv_2 as expected.
23461 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
23463         PR tree-optimization/108819
23464         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
23466 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
23468         PR target/108832
23469         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
23470         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
23471         function.
23472         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
23473         with ix86_replace_reg_with_reg.
23475 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
23477         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
23479 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
23481         * config.gcc (triplet_abi): Set its value based on $with_abi,
23482         instead of $target.
23483         (la_canonical_triplet): Set it after $triplet_abi is set
23484         correctly.
23485         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
23486         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
23487         "f64" suffix).
23489 2023-02-18  Andrew Pinski  <apinski@marvell.com>
23491         * match.pd: Remove #if GIMPLE around the
23492         "1 - a" pattern
23494 2023-02-18  Andrew Pinski  <apinski@marvell.com>
23496         * value-query.h (get_range_query): Return the global ranges
23497         for a nullptr func.
23499 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
23501         * doc/invoke.texi (@item -Wall): Fix typo in
23502         -Wuse-after-free.
23504 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
23506         PR target/108831
23507         * config/i386/predicates.md
23508         (nonimm_x64constmem_operand): New predicate.
23509         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
23510         (*subqi_ext<mode>_0): Ditto.
23511         (*andqi_ext<mode>_0): Ditto.
23512         (*<any_or:code>qi_ext<mode>_0): Ditto.
23514 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
23516         PR target/108805
23517         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
23518         int_outermode instead of GET_MODE (tem) to prevent
23519         VOIDmode from entering simplify_gen_subreg.
23521 2023-02-17  Richard Biener  <rguenther@suse.de>
23523         PR tree-optimization/108821
23524         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
23525         move volatile accesses.
23527 2023-02-17  Richard Biener  <rguenther@suse.de>
23529         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
23530         called on virtual operands.
23531         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
23532         ssa_undefined_value_p calls.
23533         (vn_phi_insert): Likewise.
23534         (set_ssa_val_to): Likewise.
23535         (visit_phi): Avoid extra work with equivalences for
23536         virtual operand PHIs.
23538 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23540         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
23541         class.
23542         (class mask_nlogic): Ditto.
23543         (class mask_notlogic): Ditto.
23544         (class vmmv): Ditto.
23545         (class vmclr): Ditto.
23546         (class vmset): Ditto.
23547         (class vmnot): Ditto.
23548         (class vcpop): Ditto.
23549         (class vfirst): Ditto.
23550         (class mask_misc): Ditto.
23551         (class viota): Ditto.
23552         (class vid): Ditto.
23553         (BASE): Ditto.
23554         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23555         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
23556         (vmnand): Ditto.
23557         (vmandn): Ditto.
23558         (vmxor): Ditto.
23559         (vmor): Ditto.
23560         (vmnor): Ditto.
23561         (vmorn): Ditto.
23562         (vmxnor): Ditto.
23563         (vmmv): Ditto.
23564         (vmclr): Ditto.
23565         (vmset): Ditto.
23566         (vmnot): Ditto.
23567         (vcpop): Ditto.
23568         (vfirst): Ditto.
23569         (vmsbf): Ditto.
23570         (vmsif): Ditto.
23571         (vmsof): Ditto.
23572         (viota): Ditto.
23573         (vid): Ditto.
23574         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23575         (struct mask_alu_def): Ditto.
23576         (SHAPE): Ditto.
23577         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23578         * config/riscv/riscv-vector-builtins.cc: Ditto.
23579         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
23580         for dest it scalar RVV intrinsics.
23581         * config/riscv/vector-iterators.md (sof): New iterator.
23582         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
23583         (@pred_<optab>not<mode>): New pattern.
23584         (@pred_popcount<VB:mode><P:mode>): New pattern.
23585         (@pred_ffs<VB:mode><P:mode>): New pattern.
23586         (@pred_<misc_op><mode>): New pattern.
23587         (@pred_iota<mode>): New pattern.
23588         (@pred_series<mode>): New pattern.
23590 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23592         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
23593         (vsbc): Ditto.
23594         (vmerge): Ditto.
23595         (vmv_v): Ditto.
23596         * config/riscv/riscv-vector-builtins.cc: Ditto.
23598 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23599             kito-cheng  <kito.cheng@sifive.com>
23601         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
23602         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
23603         (sew64_scalar_helper): New function.
23604         * config/riscv/vector.md: Normalization.
23606 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23608         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
23609         (vsm): Ditto.
23610         (vsse): Ditto.
23611         (vsoxei64): Ditto.
23612         (vsub): Ditto.
23613         (vand): Ditto.
23614         (vor): Ditto.
23615         (vxor): Ditto.
23616         (vsll): Ditto.
23617         (vsra): Ditto.
23618         (vsrl): Ditto.
23619         (vmin): Ditto.
23620         (vmax): Ditto.
23621         (vminu): Ditto.
23622         (vmaxu): Ditto.
23623         (vmul): Ditto.
23624         (vmulh): Ditto.
23625         (vmulhu): Ditto.
23626         (vmulhsu): Ditto.
23627         (vdiv): Ditto.
23628         (vrem): Ditto.
23629         (vdivu): Ditto.
23630         (vremu): Ditto.
23631         (vnot): Ditto.
23632         (vsext): Ditto.
23633         (vzext): Ditto.
23634         (vwadd): Ditto.
23635         (vwsub): Ditto.
23636         (vwmul): Ditto.
23637         (vwmulu): Ditto.
23638         (vwmulsu): Ditto.
23639         (vwaddu): Ditto.
23640         (vwsubu): Ditto.
23641         (vsbc): Ditto.
23642         (vmsbc): Ditto.
23643         (vnsra): Ditto.
23644         (vmerge): Ditto.
23645         (vmv_v): Ditto.
23646         (vmsne): Ditto.
23647         (vmslt): Ditto.
23648         (vmsgt): Ditto.
23649         (vmsle): Ditto.
23650         (vmsge): Ditto.
23651         (vmsltu): Ditto.
23652         (vmsgtu): Ditto.
23653         (vmsleu): Ditto.
23654         (vmsgeu): Ditto.
23655         (vnmsac): Ditto.
23656         (vmadd): Ditto.
23657         (vnmsub): Ditto.
23658         (vwmacc): Ditto.
23659         (vsadd): Ditto.
23660         (vssub): Ditto.
23661         (vssubu): Ditto.
23662         (vaadd): Ditto.
23663         (vasub): Ditto.
23664         (vasubu): Ditto.
23665         (vsmul): Ditto.
23666         (vssra): Ditto.
23667         (vssrl): Ditto.
23668         (vnclip): Ditto.
23670 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23672         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
23673         (@pred_<optab><mode>_scalar): Ditto.
23674         (*pred_<optab><mode>_scalar): Ditto.
23675         (*pred_<optab><mode>_extended_scalar): Ditto.
23677 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23679         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
23680         (init_builtins): Ditto.
23681         (mangle_builtin_type): Ditto.
23682         (verify_type_context): Ditto.
23683         (handle_pragma_vector):  Ditto.
23684         (builtin_decl): Ditto.
23685         (expand_builtin): Ditto.
23686         (const_vec_all_same_in_range_p): Ditto.
23687         (legitimize_move): Ditto.
23688         (emit_vlmax_op): Ditto.
23689         (emit_nonvlmax_op): Ditto.
23690         (get_vlmul): Ditto.
23691         (get_ratio): Ditto.
23692         (get_ta): Ditto.
23693         (get_ma): Ditto.
23694         (get_avl_type): Ditto.
23695         (calculate_ratio): Ditto.
23696         (enum vlmul_type): Ditto.
23697         (simm5_p): Ditto.
23698         (neg_simm5_p): Ditto.
23699         (has_vi_variant_p): Ditto.
23701 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23703         * config/riscv/riscv-protos.h (simm32_p): Remove.
23704         * config/riscv/riscv-v.cc (simm32_p): Ditto.
23705         * config/riscv/vector.md: Use immediate_operand
23706         instead of riscv_vector::simm32_p.
23708 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
23710         * doc/invoke.texi (Optimize Options): Reword the explanation
23711         getting minimal, maximal and default values of a parameter.
23713 2023-02-16  Patrick Palka  <ppalka@redhat.com>
23715         * addresses.h: Mechanically drop 'static' from 'static inline'
23716         functions via s/^static inline/inline/g.
23717         * asan.h: Likewise.
23718         * attribs.h: Likewise.
23719         * basic-block.h: Likewise.
23720         * bitmap.h: Likewise.
23721         * cfghooks.h: Likewise.
23722         * cfgloop.h: Likewise.
23723         * cgraph.h: Likewise.
23724         * cselib.h: Likewise.
23725         * data-streamer.h: Likewise.
23726         * debug.h: Likewise.
23727         * df.h: Likewise.
23728         * diagnostic.h: Likewise.
23729         * dominance.h: Likewise.
23730         * dumpfile.h: Likewise.
23731         * emit-rtl.h: Likewise.
23732         * except.h: Likewise.
23733         * expmed.h: Likewise.
23734         * expr.h: Likewise.
23735         * fixed-value.h: Likewise.
23736         * gengtype.h: Likewise.
23737         * gimple-expr.h: Likewise.
23738         * gimple-iterator.h: Likewise.
23739         * gimple-predict.h: Likewise.
23740         * gimple-range-fold.h: Likewise.
23741         * gimple-ssa.h: Likewise.
23742         * gimple.h: Likewise.
23743         * graphite.h: Likewise.
23744         * hard-reg-set.h: Likewise.
23745         * hash-map.h: Likewise.
23746         * hash-set.h: Likewise.
23747         * hash-table.h: Likewise.
23748         * hwint.h: Likewise.
23749         * input.h: Likewise.
23750         * insn-addr.h: Likewise.
23751         * internal-fn.h: Likewise.
23752         * ipa-fnsummary.h: Likewise.
23753         * ipa-icf-gimple.h: Likewise.
23754         * ipa-inline.h: Likewise.
23755         * ipa-modref.h: Likewise.
23756         * ipa-prop.h: Likewise.
23757         * ira-int.h: Likewise.
23758         * ira.h: Likewise.
23759         * lra-int.h: Likewise.
23760         * lra.h: Likewise.
23761         * lto-streamer.h: Likewise.
23762         * memmodel.h: Likewise.
23763         * omp-general.h: Likewise.
23764         * optabs-query.h: Likewise.
23765         * optabs.h: Likewise.
23766         * plugin.h: Likewise.
23767         * pretty-print.h: Likewise.
23768         * range.h: Likewise.
23769         * read-md.h: Likewise.
23770         * recog.h: Likewise.
23771         * regs.h: Likewise.
23772         * rtl-iter.h: Likewise.
23773         * rtl.h: Likewise.
23774         * sbitmap.h: Likewise.
23775         * sched-int.h: Likewise.
23776         * sel-sched-ir.h: Likewise.
23777         * sese.h: Likewise.
23778         * sparseset.h: Likewise.
23779         * ssa-iterators.h: Likewise.
23780         * system.h: Likewise.
23781         * target-globals.h: Likewise.
23782         * target.h: Likewise.
23783         * timevar.h: Likewise.
23784         * tree-chrec.h: Likewise.
23785         * tree-data-ref.h: Likewise.
23786         * tree-iterator.h: Likewise.
23787         * tree-outof-ssa.h: Likewise.
23788         * tree-phinodes.h: Likewise.
23789         * tree-scalar-evolution.h: Likewise.
23790         * tree-sra.h: Likewise.
23791         * tree-ssa-alias.h: Likewise.
23792         * tree-ssa-live.h: Likewise.
23793         * tree-ssa-loop-manip.h: Likewise.
23794         * tree-ssa-loop.h: Likewise.
23795         * tree-ssa-operands.h: Likewise.
23796         * tree-ssa-propagate.h: Likewise.
23797         * tree-ssa-sccvn.h: Likewise.
23798         * tree-ssa.h: Likewise.
23799         * tree-ssanames.h: Likewise.
23800         * tree-streamer.h: Likewise.
23801         * tree-switch-conversion.h: Likewise.
23802         * tree-vectorizer.h: Likewise.
23803         * tree.h: Likewise.
23804         * wide-int.h: Likewise.
23806 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
23808         PR tree-optimization/108657
23809         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
23810         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
23811         is a call to internal or builtin function.
23813 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
23815         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
23816         using-declaration to unhide functions.
23818 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
23820         PR tree-optimization/108783
23821         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
23822         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
23823         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
23824         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
23826 2023-02-16  Richard Biener  <rguenther@suse.de>
23828         PR tree-optimization/108791
23829         * tree-ssa-forwprop.cc (optimize_vector_load): Build
23830         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
23831         type.
23833 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
23835         PR target/90458
23836         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
23837         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
23838         (ix86_expand_prologue): Likewise.
23840 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23842         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
23844 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
23846         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
23847         int248_register_operand predicate in zero_extract sub-RTX.
23848         (*cmpqi_ext<mode>_2): Ditto.
23849         (*cmpqi_ext<mode>_3): Ditto.
23850         (*cmpqi_ext<mode>_4): Ditto.
23851         (*extzvqi_mem_rex64): Ditto.
23852         (*extzvqi): Ditto.
23853         (*insvqi_1_mem_rex64): Ditto.
23854         (@insv<mode>_1): Ditto.
23855         (*insvqi_1): Ditto.
23856         (*insvqi_2): Ditto.
23857         (*insvqi_3): Ditto.
23858         (*extendqi<SWI24:mode>_ext_1): Ditto.
23859         (*addqi_ext<mode>_1): Ditto.
23860         (*addqi_ext<mode>_2): Ditto.
23861         (*subqi_ext<mode>_2): Ditto.
23862         (*testqi_ext<mode>_1): Ditto.
23863         (*testqi_ext<mode>_2): Ditto.
23864         (*andqi_ext<mode>_1): Ditto.
23865         (*andqi_ext<mode>_1_cc): Ditto.
23866         (*andqi_ext<mode>_2): Ditto.
23867         (*<any_or:code>qi_ext<mode>_1): Ditto.
23868         (*<any_or:code>qi_ext<mode>_2): Ditto.
23869         (*xorqi_ext<mode>_1_cc): Ditto.
23870         (*negqi_ext<mode>_2): Ditto.
23871         (*ashlqi_ext<mode>_2): Ditto.
23872         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
23874 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
23876         * config/i386/predicates.md (int248_register_operand):
23877         Rename from extr_register_operand.
23878         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
23879         (*extzx<mode>): Ditto.
23880         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
23881         (*ashl<mode>3_mask): Ditto.
23882         (*<any_shiftrt:insn><mode>3_mask): Ditto.
23883         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
23884         (*<any_rotate:insn><mode>3_mask): Ditto.
23885         (*<btsc><mode>_mask): Ditto.
23886         (*btr<mode>_mask): Ditto.
23887         (*jcc_bt<mode>_mask_1): Ditto.
23889 2023-02-15  Richard Biener  <rguenther@suse.de>
23891         PR middle-end/26854
23892         * df-core.cc (df_worklist_propagate_forward): Put later
23893         blocks on worklist and only earlier blocks on pending.
23894         (df_worklist_propagate_backward): Likewise.
23895         (df_worklist_dataflow_doublequeue): Change the iteration
23896         to process new blocks in the same iteration if that
23897         maintains the iteration order.
23899 2023-02-15  Marek Polacek  <polacek@redhat.com>
23901         PR middle-end/106080
23902         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
23903         instead.
23905 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23907         * config/riscv/predicates.md: Refine codes.
23908         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
23909         * config/riscv/riscv-v.cc: Refine codes.
23910         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
23911         enum.
23912         (class imac): New class.
23913         (enum widen_ternop_type): New enum.
23914         (class iwmac): New class.
23915         (BASE): New class.
23916         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23917         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
23918         (vnmsac): Ditto.
23919         (vmadd): Ditto.
23920         (vnmsub): Ditto.
23921         (vwmacc): Ditto.
23922         (vwmaccu): Ditto.
23923         (vwmaccsu): Ditto.
23924         (vwmaccus): Ditto.
23925         * config/riscv/riscv-vector-builtins.cc
23926         (function_builder::apply_predication): Adjust for multiply-add support.
23927         (function_expander::add_vundef_operand): Refine codes.
23928         (function_expander::use_ternop_insn): New function.
23929         (function_expander::use_widen_ternop_insn): Ditto.
23930         * config/riscv/riscv-vector-builtins.h: New function.
23931         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
23932         (pred_mul_<optab><mode>_undef_merge): Ditto.
23933         (*pred_<madd_nmsub><mode>): Ditto.
23934         (*pred_<macc_nmsac><mode>): Ditto.
23935         (*pred_mul_<optab><mode>): Ditto.
23936         (@pred_mul_<optab><mode>_scalar): Ditto.
23937         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
23938         (*pred_<madd_nmsub><mode>_scalar): Ditto.
23939         (*pred_<macc_nmsac><mode>_scalar): Ditto.
23940         (*pred_mul_<optab><mode>_scalar): Ditto.
23941         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
23942         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
23943         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
23944         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
23945         (@pred_widen_mul_plus<su><mode>): Ditto.
23946         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
23947         (@pred_widen_mul_plussu<mode>): Ditto.
23948         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
23949         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
23951 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23953         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
23954         (vector_all_trues_mask_operand): New predicate.
23955         (vector_undef_operand): New predicate.
23956         (ltge_operator): New predicate.
23957         (comparison_except_ltge_operator): New predicate.
23958         (comparison_except_eqge_operator): New predicate.
23959         (ge_operator): New predicate.
23960         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
23961         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
23962         (BASE): Ditto.
23963         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23964         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
23965         (vmsne): Ditto.
23966         (vmslt): Ditto.
23967         (vmsgt): Ditto.
23968         (vmsle): Ditto.
23969         (vmsge): Ditto.
23970         (vmsltu): Ditto.
23971         (vmsgtu): Ditto.
23972         (vmsleu): Ditto.
23973         (vmsgeu): Ditto.
23974         * config/riscv/riscv-vector-builtins-shapes.cc
23975         (struct return_mask_def): Adjust for compare support.
23976         * config/riscv/riscv-vector-builtins.cc
23977         (function_expander::use_compare_insn): New function.
23978         * config/riscv/riscv-vector-builtins.h
23979         (function_expander::add_integer_operand): Ditto.
23980         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
23981         * config/riscv/riscv.md: Add vector min/max attributes.
23982         * config/riscv/vector-iterators.md (xnor): New iterator.
23983         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
23984         (*pred_cmp<mode>): Ditto.
23985         (*pred_cmp<mode>_narrow): Ditto.
23986         (@pred_ltge<mode>): Ditto.
23987         (*pred_ltge<mode>): Ditto.
23988         (*pred_ltge<mode>_narrow): Ditto.
23989         (@pred_cmp<mode>_scalar): Ditto.
23990         (*pred_cmp<mode>_scalar): Ditto.
23991         (*pred_cmp<mode>_scalar_narrow): Ditto.
23992         (@pred_eqne<mode>_scalar): Ditto.
23993         (*pred_eqne<mode>_scalar): Ditto.
23994         (*pred_eqne<mode>_scalar_narrow): Ditto.
23995         (*pred_cmp<mode>_extended_scalar): Ditto.
23996         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
23997         (*pred_eqne<mode>_extended_scalar): Ditto.
23998         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
23999         (@pred_ge<mode>_scalar): Ditto.
24000         (@pred_<optab><mode>): Ditto.
24001         (@pred_n<optab><mode>): Ditto.
24002         (@pred_<optab>n<mode>): Ditto.
24003         (@pred_not<mode>): Ditto.
24005 2023-02-15  Martin Jambor  <mjambor@suse.cz>
24007         PR ipa/108679
24008         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24009         creation of non-scalar replacements even if IPA-CP knows their
24010         contents.
24012 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
24014         PR target/108787
24015         PR target/103109
24016         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
24017         expander, change operand 3 to be TImode, emit maddlddi4 and
24018         umadddi4_highpart{,_le} with its low half and finally add the high
24019         half to the result.
24021 2023-02-15  Martin Liska  <mliska@suse.cz>
24023         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
24025 2023-02-15  Richard Biener  <rguenther@suse.de>
24027         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
24028         for with_poison and alias worklist to it.
24029         (sanitize_asan_mark_poison): Likewise.
24031 2023-02-15  Richard Biener  <rguenther@suse.de>
24033         PR target/108738
24034         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
24035         Combine bitmap test and set.
24036         (scalar_chain::add_insn): Likewise.
24037         (scalar_chain::analyze_register_chain): Remove redundant
24038         attempt to add to queue and instead strengthen assert.
24039         Sink common attempts to mark the def dual-mode.
24040         (scalar_chain::add_to_queue): Remove redundant insn bitmap
24041         check.
24043 2023-02-15  Richard Biener  <rguenther@suse.de>
24045         PR target/108738
24046         * config/i386/i386-features.cc (convert_scalars_to_vector):
24047         Switch candidates bitmaps to tree view before building the chains.
24049 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
24051         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
24052         "failure trying to reload" call.
24054 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
24056         * gdbinit.in (phrs): New command.
24057         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
24058         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
24060 2023-02-14  David Faust  <david.faust@oracle.com>
24062         PR target/108790
24063         * config/bpf/constraints.md (q): New memory constraint.
24064         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
24065         (zero_extendqidi2): Likewise.
24066         (zero_extendsidi2): Likewise.
24067         (*mov<MM:mode>): Likewise.
24069 2023-02-14  Andrew Pinski  <apinski@marvell.com>
24071         PR tree-optimization/108355
24072         PR tree-optimization/96921
24073         * match.pd: Add pattern for "1 - bool_val".
24075 2023-02-14  Richard Biener  <rguenther@suse.de>
24077         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
24078         basic block index hashing on the availability of ->cclhs.
24079         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
24080         rely on ->cclhs availability.
24081         (vn_phi_lookup): Set ->cclhs only when we are eventually
24082         going to CSE the PHI.
24083         (vn_phi_insert): Likewise.
24085 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
24087         * gimplify.cc (gimplify_save_expr): Add missing guard.
24089 2023-02-14  Richard Biener  <rguenther@suse.de>
24091         PR tree-optimization/108782
24092         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
24093         Make sure we're not vectorizing an inner loop.
24095 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
24097         PR sanitizer/108777
24098         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
24099         * asan.h (asan_memfn_rtl): Declare.
24100         * asan.cc (asan_memfn_rtls): New variable.
24101         (asan_memfn_rtl): New function.
24102         * builtins.cc (expand_builtin): If
24103         param_asan_kernel_mem_intrinsic_prefix and function is
24104         kernel-{,hw}address sanitized, emit calls to
24105         __{,hw}asan_{memcpy,memmove,memset} rather than
24106         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
24107         instead of flag_sanitize & SANITIZE_ADDRESS to check if
24108         asan_intercepted_p functions shouldn't be expanded inline.
24110 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
24112         PR tree-optimization/96373
24113         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
24114         operations on the loop mask.  Reject partial vectors if this isn't
24115         possible.
24117 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
24119         PR rtl-optimization/108681
24120         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
24121         code to handle bare uses and clobbers.
24123 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
24125         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
24126         caller_save_p flag when clearing defined_p flag.
24127         (setup_reg_equiv): Ditto.
24128         * lra-constraints.cc (lra_constraints): Ditto.
24130 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
24132         PR target/108516
24133         * config/i386/predicates.md (extr_register_operand):
24134         New special predicate.
24135         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
24136         as operand 1 predicate.
24137         (*exzv<mode>): Ditto.
24138         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
24140 2023-02-13  Richard Biener  <rguenther@suse.de>
24142         PR tree-optimization/28614
24143         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
24144         walking all edges in most cases.
24145         (vn_nary_op_insert_pieces_predicated): Avoid repeated
24146         calls to can_track_predicate_on_edge unless checking is
24147         enabled.
24148         (process_bb): Instead call it once here for each edge
24149         we register possibly multiple predicates on.
24151 2023-02-13  Richard Biener  <rguenther@suse.de>
24153         PR tree-optimization/108691
24154         * tree-cfg.cc (notice_special_calls): When the CFG is built
24155         honor gimple_call_ctrl_altering_p.
24156         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24157         temporarily if the call is not control-altering.
24158         * calls.cc (emit_call_1): Do not add REG_SETJMP if
24159         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
24161 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
24163         PR target/108102
24164         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
24165         (struct s390_sched_state): Initialise to zero.
24166         (s390_sched_variable_issue): For better debuggability also emit
24167         the current side.
24168         (s390_sched_init): Unconditionally reset scheduler state.
24170 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
24172         * ifcvt.h (noce_if_info::cond_inverted): New field.
24173         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
24174         values when cond_inverted is true.
24175         (noce_find_if_block): Allow the condition to be inverted when
24176         handling conditional moves.
24178 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
24180         * config/s390/predicates.md (execute_operation): Use
24181         constrain_operands instead of extract_constrain_insn in order to
24182         determine wheter there exists a valid alternative.
24184 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
24186         * common/config/arc/arc-common.cc (arc_option_optimization_table):
24187         Remove millicode from list.
24189 2023-02-13  Martin Liska  <mliska@suse.cz>
24191         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
24193 2023-02-13  Richard Biener  <rguenther@suse.de>
24195         PR tree-optimization/106722
24196         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
24197         whether we marked a stmt.
24198         (mark_control_dependent_edges_necessary): When
24199         mark_last_stmt_necessary didn't mark any stmt make sure
24200         to mark its control dependent edges.
24201         (propagate_necessity): Likewise.
24203 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
24205         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
24206         (DWARF_FRAME_REGISTERS): New.
24207         (DWARF_REG_TO_UNWIND_COLUMN): New.
24209 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
24211         * doc/sourcebuild.texi: Remove (broken) direct reference to
24212         "The GNU configure and build system".
24214 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
24216         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
24217         gen_add3_insn to gen_rtx_SET.
24218         (riscv_adjust_libcall_cfi_epilogue): Likewise.
24220 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24222         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
24223         (class vnclip): Ditto.
24224         (BASE): Ditto.
24225         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24226         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
24227         (vasub): Ditto.
24228         (vaaddu): Ditto.
24229         (vasubu): Ditto.
24230         (vsmul): Ditto.
24231         (vssra): Ditto.
24232         (vssrl): Ditto.
24233         (vnclipu): Ditto.
24234         (vnclip): Ditto.
24235         * config/riscv/vector-iterators.md (su): Add instruction.
24236         (aadd): Ditto.
24237         (vaalu): Ditto.
24238         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
24239         (@pred_<sat_op><mode>_scalar): Ditto.
24240         (*pred_<sat_op><mode>_scalar): Ditto.
24241         (*pred_<sat_op><mode>_extended_scalar): Ditto.
24242         (@pred_narrow_clip<v_su><mode>): Ditto.
24243         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
24245 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24247         * config/riscv/constraints.md (Wbr): Remove unused constraint.
24248         * config/riscv/predicates.md: Fix move operand predicate.
24249         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
24250         (class vncvt_x): Ditto.
24251         (class vmerge): Ditto.
24252         (class vmv_v): Ditto.
24253         (BASE): Ditto.
24254         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24255         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
24256         (vsrl): Ditto.
24257         (vnsrl): Ditto.
24258         (vnsra): Ditto.
24259         (vncvt_x): Ditto.
24260         (vmerge): Ditto.
24261         (vmv_v): Ditto.
24262         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
24263         (struct move_def): Ditto.
24264         (SHAPE): Ditto.
24265         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24266         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
24267         (DEF_RVV_WEXTU_OPS): Ditto
24268         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
24269         (v_v): Ditto.
24270         (v_x): Ditto.
24271         (x_w): Ditto.
24272         (x): Ditto.
24273         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
24274         * config/riscv/vector-iterators.md (nmsac):New iterator.
24275         (nmsub): New iterator.
24276         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
24277         (@pred_merge<mode>_scalar): New pattern.
24278         (*pred_merge<mode>_scalar): New pattern.
24279         (*pred_merge<mode>_extended_scalar): New pattern.
24280         (@pred_narrow_<optab><mode>): New pattern.
24281         (@pred_narrow_<optab><mode>_scalar): New pattern.
24282         (@pred_trunc<mode>): New pattern.
24284 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24286         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
24287         (class vmsbc): Ditto.
24288         (BASE): Define new class.
24289         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24290         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
24291         (vmsbc): Ditto.
24292         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
24293         New class.
24294         (SHAPE): Ditto.
24295         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24296         * config/riscv/riscv-vector-builtins.cc
24297         (function_expander::use_exact_insn): Adjust for new support
24298         * config/riscv/riscv-vector-builtins.h
24299         (function_base::has_merge_operand_p): New function.
24300         * config/riscv/vector-iterators.md: New iterator.
24301         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
24302         (@pred_msbc<mode>): Ditto.
24303         (@pred_madc<mode>_scalar): Ditto.
24304         (@pred_msbc<mode>_scalar): Ditto.
24305         (*pred_madc<mode>_scalar): Ditto.
24306         (*pred_madc<mode>_extended_scalar): Ditto.
24307         (*pred_msbc<mode>_scalar): Ditto.
24308         (*pred_msbc<mode>_extended_scalar): Ditto.
24309         (@pred_madc<mode>_overflow): Ditto.
24310         (@pred_msbc<mode>_overflow): Ditto.
24311         (@pred_madc<mode>_overflow_scalar): Ditto.
24312         (@pred_msbc<mode>_overflow_scalar): Ditto.
24313         (*pred_madc<mode>_overflow_scalar): Ditto.
24314         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
24315         (*pred_msbc<mode>_overflow_scalar): Ditto.
24316         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
24318 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24320         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
24321         * config/riscv/riscv-v.cc (simm32_p): Ditto.
24322         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
24323         (class vsbc): Ditto.
24324         (BASE): Ditto.
24325         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24326         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
24327         (vsbc): Ditto.
24328         * config/riscv/riscv-vector-builtins-shapes.cc
24329         (struct no_mask_policy_def): Ditto.
24330         (SHAPE): Ditto.
24331         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24332         * config/riscv/riscv-vector-builtins.cc
24333         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
24334         (rvv_arg_type_info::get_tree_type): Ditto.
24335         (function_expander::use_exact_insn): Ditto.
24336         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
24337         (function_base::use_mask_predication_p): New function.
24338         * config/riscv/vector-iterators.md: New iterator.
24339         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
24340         (@pred_sbc<mode>): Ditto.
24341         (@pred_adc<mode>_scalar): Ditto.
24342         (@pred_sbc<mode>_scalar): Ditto.
24343         (*pred_adc<mode>_scalar): Ditto.
24344         (*pred_adc<mode>_extended_scalar): Ditto.
24345         (*pred_sbc<mode>_scalar): Ditto.
24346         (*pred_sbc<mode>_extended_scalar): Ditto.
24348 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24350         * config/riscv/vector.md: use "zero" reg.
24352 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24354         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
24355         class.
24356         (class vwmulsu): Ditto.
24357         (class vwcvt): Ditto.
24358         (BASE): Add integer widening support.
24359         * config/riscv/riscv-vector-builtins-bases.h: Ditto
24360         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
24361         (vwsub): New class.
24362         (vwmul): New class.
24363         (vwmulu): New class.
24364         (vwmulsu): New class.
24365         (vwaddu): New class.
24366         (vwsubu): New class.
24367         (vwcvt_x): New class.
24368         (vwcvtu_x): New class.
24369         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
24370         class.
24371         (struct widen_alu_def): New class.
24372         (SHAPE): New class.
24373         * config/riscv/riscv-vector-builtins-shapes.h: New class.
24374         * config/riscv/riscv-vector-builtins.cc
24375         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
24376         (rvv_arg_type_info::get_tree_type): Ditto.
24377         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
24378         (x_v): Ditto.
24379         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
24380         widening support.
24381         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
24382         * config/riscv/riscv.h (X0_REGNUM): New constant.
24383         * config/riscv/vector-iterators.md: New iterators.
24384         * config/riscv/vector.md
24385         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
24386         pattern.
24387         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
24388         Ditto.
24389         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
24390         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
24391         Ditto.
24392         (@pred_widen_mulsu<mode>): Ditto.
24393         (@pred_widen_mulsu<mode>_scalar): Ditto.
24394         (@pred_<optab><mode>): Ditto.
24396 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24397             kito-cheng  <kito.cheng@sifive.com>
24399         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
24400         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
24401         (BASE): Ditto.
24402         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24403         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
24404         API support.
24405         (vmulhu): Ditto.
24406         (vmulhsu): Ditto.
24407         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
24408         New macro.
24409         (DEF_RVV_FULL_V_U_OPS): Ditto.
24410         (vint8mf8_t): Ditto.
24411         (vint8mf4_t): Ditto.
24412         (vint8mf2_t): Ditto.
24413         (vint8m1_t): Ditto.
24414         (vint8m2_t): Ditto.
24415         (vint8m4_t): Ditto.
24416         (vint8m8_t): Ditto.
24417         (vint16mf4_t): Ditto.
24418         (vint16mf2_t): Ditto.
24419         (vint16m1_t): Ditto.
24420         (vint16m2_t): Ditto.
24421         (vint16m4_t): Ditto.
24422         (vint16m8_t): Ditto.
24423         (vint32mf2_t): Ditto.
24424         (vint32m1_t): Ditto.
24425         (vint32m2_t): Ditto.
24426         (vint32m4_t): Ditto.
24427         (vint32m8_t): Ditto.
24428         (vint64m1_t): Ditto.
24429         (vint64m2_t): Ditto.
24430         (vint64m4_t): Ditto.
24431         (vint64m8_t): Ditto.
24432         (vuint8mf8_t): Ditto.
24433         (vuint8mf4_t): Ditto.
24434         (vuint8mf2_t): Ditto.
24435         (vuint8m1_t): Ditto.
24436         (vuint8m2_t): Ditto.
24437         (vuint8m4_t): Ditto.
24438         (vuint8m8_t): Ditto.
24439         (vuint16mf4_t): Ditto.
24440         (vuint16mf2_t): Ditto.
24441         (vuint16m1_t): Ditto.
24442         (vuint16m2_t): Ditto.
24443         (vuint16m4_t): Ditto.
24444         (vuint16m8_t): Ditto.
24445         (vuint32mf2_t): Ditto.
24446         (vuint32m1_t): Ditto.
24447         (vuint32m2_t): Ditto.
24448         (vuint32m4_t): Ditto.
24449         (vuint32m8_t): Ditto.
24450         (vuint64m1_t): Ditto.
24451         (vuint64m2_t): Ditto.
24452         (vuint64m4_t): Ditto.
24453         (vuint64m8_t): Ditto.
24454         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
24455         (DEF_RVV_FULL_V_U_OPS): Ditto.
24456         (check_required_extensions): Add vmulh support.
24457         (rvv_arg_type_info::get_tree_type): Ditto.
24458         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
24459         (enum rvv_base_type): Ditto.
24460         * config/riscv/riscv.opt: Add 'V' extension flag.
24461         * config/riscv/vector-iterators.md (su): New iterator.
24462         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
24463         (@pred_mulh<v_su><mode>_scalar): Ditto.
24464         (*pred_mulh<v_su><mode>_scalar): Ditto.
24465         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
24467 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24469         * config/riscv/iterators.md: Add sign_extend/zero_extend.
24470         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
24471         (BASE): Ditto.
24472         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
24473         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
24474         define.
24475         (vzext): Ditto.
24476         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
24477         for vsext/vzext support.
24478         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
24479         macro define.
24480         (DEF_RVV_QEXTI_OPS): Ditto.
24481         (DEF_RVV_OEXTI_OPS): Ditto.
24482         (DEF_RVV_WEXTU_OPS): Ditto.
24483         (DEF_RVV_QEXTU_OPS): Ditto.
24484         (DEF_RVV_OEXTU_OPS): Ditto.
24485         (vint16mf4_t): Ditto.
24486         (vint16mf2_t): Ditto.
24487         (vint16m1_t): Ditto.
24488         (vint16m2_t): Ditto.
24489         (vint16m4_t): Ditto.
24490         (vint16m8_t): Ditto.
24491         (vint32mf2_t): Ditto.
24492         (vint32m1_t): Ditto.
24493         (vint32m2_t): Ditto.
24494         (vint32m4_t): Ditto.
24495         (vint32m8_t): Ditto.
24496         (vint64m1_t): Ditto.
24497         (vint64m2_t): Ditto.
24498         (vint64m4_t): Ditto.
24499         (vint64m8_t): Ditto.
24500         (vuint16mf4_t): Ditto.
24501         (vuint16mf2_t): Ditto.
24502         (vuint16m1_t): Ditto.
24503         (vuint16m2_t): Ditto.
24504         (vuint16m4_t): Ditto.
24505         (vuint16m8_t): Ditto.
24506         (vuint32mf2_t): Ditto.
24507         (vuint32m1_t): Ditto.
24508         (vuint32m2_t): Ditto.
24509         (vuint32m4_t): Ditto.
24510         (vuint32m8_t): Ditto.
24511         (vuint64m1_t): Ditto.
24512         (vuint64m2_t): Ditto.
24513         (vuint64m4_t): Ditto.
24514         (vuint64m8_t): Ditto.
24515         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
24516         (DEF_RVV_QEXTI_OPS): Ditto.
24517         (DEF_RVV_OEXTI_OPS): Ditto.
24518         (DEF_RVV_WEXTU_OPS): Ditto.
24519         (DEF_RVV_QEXTU_OPS): Ditto.
24520         (DEF_RVV_OEXTU_OPS): Ditto.
24521         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
24522         support.
24523         (rvv_arg_type_info::get_tree_type): Ditto.
24524         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
24525         * config/riscv/vector-iterators.md (z): New attribute.
24526         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
24527         (@pred_<optab><mode>_vf4): Ditto.
24528         (@pred_<optab><mode>_vf8): Ditto.
24530 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24532         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
24533         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
24534         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
24535         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24536         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
24537         (vssub): Ditto.
24538         (vsaddu): Ditto.
24539         (vssubu): Ditto.
24540         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
24541         support.
24542         (sll.vv): Ditto.
24543         (%3,%v4): Ditto.
24544         (%3,%4): Ditto.
24545         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
24546         (@pred_<optab><mode>_scalar): New pattern.
24547         (*pred_<optab><mode>_scalar): New pattern.
24548         (*pred_<optab><mode>_extended_scalar): New pattern.
24550 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24552         * config/riscv/iterators.md: Add neg and not.
24553         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
24554         (BASE): Ditto.
24555         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24556         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
24557         into alu.
24558         (vsub): Ditto.
24559         (vand): Ditto.
24560         (vor): Ditto.
24561         (vxor): Ditto.
24562         (vsll): Ditto.
24563         (vsra): Ditto.
24564         (vsrl): Ditto.
24565         (vmin): Ditto.
24566         (vmax): Ditto.
24567         (vminu): Ditto.
24568         (vmaxu): Ditto.
24569         (vmul): Ditto.
24570         (vdiv): Ditto.
24571         (vrem): Ditto.
24572         (vdivu): Ditto.
24573         (vremu): Ditto.
24574         (vrsub): Ditto.
24575         (vneg): Ditto.
24576         (vnot): Ditto.
24577         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
24578         (struct alu_def): Ditto.
24579         (SHAPE): Ditto.
24580         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24581         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
24582         * config/riscv/vector-iterators.md: New iterator.
24583         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
24585 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24587         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
24589 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
24591         PR ipa/108605
24592         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
24593         item->offset bit position is too large to be representable as
24594         unsigned int byte position.
24596 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
24598         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
24600 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
24602         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
24603         valid_combine only when ira_use_lra_p is true.
24605 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
24607         * params.opt (ira-simple-lra-insn-threshold): Add new param.
24608         * ira.cc (ira): Use the param to switch on simple LRA.
24610 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
24612         PR tree-optimization/108687
24613         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
24614         back to RFD_NONE mode for calculations.
24615         (ranger_cache::propagate_cache): Call the internal edge range API
24616         with RFD_READ_ONLY instead of changing the external routine.
24618 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
24620         PR tree-optimization/108520
24621         * gimple-range-infer.cc (check_assume_func): Invoke
24622         gimple_range_global directly instead using global_range_query.
24623         * value-query.cc (get_range_global): Add function context and
24624         avoid calling nonnull_arg_p if not cfun.
24625         (gimple_range_global): Add function context pointer.
24626         * value-query.h (imple_range_global): Add function context.
24628 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24630         * config/riscv/constraints.md (Wdm): Adjust constraint.
24631         (Wbr): New constraint.
24632         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
24633         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
24634         (emit_vlmax_op): New function.
24635         (emit_nonvlmax_op): Ditto.
24636         (simm32_p): Ditto.
24637         (neg_simm5_p): Ditto.
24638         (has_vi_variant_p): Ditto.
24639         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
24640         (emit_vlmax_op): New function.
24641         (emit_nonvlmax_op): Ditto.
24642         (expand_const_vector): Adjust function.
24643         (legitimize_move): Ditto.
24644         (simm32_p): New function.
24645         (simm5_p): Ditto.
24646         (neg_simm5_p): Ditto.
24647         (has_vi_variant_p): Ditto.
24648         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
24649         (BASE): Ditto.
24650         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24651         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
24652         unsigned cases.
24653         (vmax): Ditto.
24654         (vminu): Remove signed cases.
24655         (vmaxu): Ditto.
24656         (vdiv): Remove unsigned cases.
24657         (vrem): Ditto.
24658         (vdivu): Remove signed cases.
24659         (vremu): Ditto.
24660         (vadd): Adjust.
24661         (vsub): Ditto.
24662         (vrsub): New class.
24663         (vand): Adjust.
24664         (vor): Ditto.
24665         (vxor): Ditto.
24666         (vmul): Ditto.
24667         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
24668         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
24669         * config/riscv/vector-iterators.md: New iterators.
24670         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
24671         support.
24672         (@pred_<optab><mode>_scalar): New pattern.
24673         (@pred_sub<mode>_reverse_scalar): Ditto.
24674         (*pred_<optab><mode>_scalar): Ditto.
24675         (*pred_<optab><mode>_extended_scalar): Ditto.
24676         (*pred_sub<mode>_reverse_scalar): Ditto.
24677         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
24679 2023-02-10  Richard Biener  <rguenther@suse.de>
24681         PR tree-optimization/108724
24682         * tree-vect-stmts.cc (vectorizable_operation): Avoid
24683         using word_mode vectors when vector lowering will
24684         decompose them to elementwise operations.
24686 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
24688         Revert:
24689         2023-02-09  Martin Liska  <mliska@suse.cz>
24691         PR target/100758
24692         * doc/extend.texi: Document that the function
24693         does not work correctly for old VIA processors.
24695 2023-02-10  Andrew Pinski  <apinski@marvell.com>
24696             Andrew Macleod   <amacleod@redhat.com>
24698         PR tree-optimization/108684
24699         * tree-ssa-dce.cc (simple_dce_from_worklist):
24700         Check all ssa names and not just non-vdef ones
24701         before accepting the inline-asm.
24702         Call unlink_stmt_vdef on the statement before
24703         removing it.
24705 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
24707         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
24708         * ira.cc (validate_equiv_mem): Check memref address variance.
24709         (no_equiv): Clear caller_save_p flag.
24710         (update_equiv_regs): Define caller save equivalence for
24711         valid_combine.
24712         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
24713         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
24714         call_save_p.  Use caller save equivalence depending on the arg.
24715         (split_reg): Adjust the call.
24717 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
24719         PR target/100758
24720         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
24721         (cpu_indicator_init): Call get_available_features for all CPUs with
24722         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
24723         fixes.
24725 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
24727         PR tree-optimization/108688
24728         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
24729         of BIT_INSERT_EXPR extracting exactly all inserted bits even
24730         when without mode precision.  Formatting fixes.
24732 2023-02-09  Andrew Pinski  <apinski@marvell.com>
24734         PR tree-optimization/108688
24735         * match.pd (bit_field_ref [bit_insert]): Avoid generating
24736         BIT_FIELD_REFs of non-mode-precision integral operands.
24738 2023-02-09  Martin Liska  <mliska@suse.cz>
24740         PR target/100758
24741         * doc/extend.texi: Document that the function
24742         does not work correctly for old VIA processors.
24744 2023-02-09  Andreas Schwab  <schwab@suse.de>
24746         * lto-wrapper.cc (merge_and_complain): Handle
24747         -funwind-tables and -fasynchronous-unwind-tables.
24748         (append_compiler_options): Likewise.
24750 2023-02-09  Richard Biener  <rguenther@suse.de>
24752         PR tree-optimization/26854
24753         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
24754         view around insert_updated_phi_nodes_for.
24755         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
24756         in tree view.
24757         (walk_aliased_vdefs_1): Likewise.
24759 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
24761         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
24763 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24765         PR target/108505
24766         * config.gcc (tm_mlib_file): Define new variable.
24768 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
24770         PR tree-optimization/108692
24771         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
24772         widened_code which is different from code, don't call
24773         vect_look_through_possible_promotion but instead just check op is
24774         SSA_NAME with integral type for which vect_is_simple_use is true
24775         and call set_op on this_unprom.
24777 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
24779         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
24780         declaration.
24781         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
24782         definition.
24783         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
24784         to 'aarch_ra_sign_key'.
24785         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
24786         declaration.
24787         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
24788         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
24789         * config/arm/arm.opt: Define.
24791 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
24793         PR tree-optimization/108316
24794         * tree-vect-stmts.cc (get_load_store_type): When using
24795         internal functions for gather/scatter, make sure that the type
24796         of the offset argument is consistent with the offset vector type.
24798 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
24800         Revert:
24801         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
24803         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
24804         * ira.cc (validate_equiv_mem): Check memref address variance.
24805         (update_equiv_regs): Define caller save equivalence for
24806         valid_combine.
24807         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
24808         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
24809         call_save_p.  Use caller save equivalence depending on the arg.
24810         (split_reg): Adjust the call.
24812 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
24814         * tree.def (SAD_EXPR): Remove outdated comment about missing
24815         WIDEN_MINUS_EXPR.
24817 2023-02-07  Marek Polacek  <polacek@redhat.com>
24819         * doc/invoke.texi: Update -fchar8_t documentation.
24821 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
24823         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
24824         * ira.cc (validate_equiv_mem): Check memref address variance.
24825         (update_equiv_regs): Define caller save equivalence for
24826         valid_combine.
24827         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
24828         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
24829         call_save_p.  Use caller save equivalence depending on the arg.
24830         (split_reg): Adjust the call.
24832 2023-02-07  Richard Biener  <rguenther@suse.de>
24834         PR tree-optimization/26854
24835         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
24836         instead of immediate uses.
24838 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
24840         PR tree-optimization/106923
24841         * ipa-split.cc (execute_split_functions): Don't split returns_twice
24842         functions.
24844 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
24846         PR tree-optimization/106433
24847         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
24848         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
24850 2023-02-07  Jan Hubicka  <jh@suse.cz>
24852         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
24853         for znver4.
24855 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
24857         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
24858         (process_asm): Create a constructor for GCN_STACK_SIZE.
24859         (main): Parse the -mstack-size option.
24861 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
24863         PR target/104921
24864         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
24865         Use correct constraint for operand 3.
24867 2023-02-06  Martin Jambor  <mjambor@suse.cz>
24869         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
24871 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
24873         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
24874         New define_int_iterator.
24875         (bytepick_d_ashift_amount): Likewise.
24876         (bytepick_imm): New define_int_attr.
24877         (bytepick_w_lshiftrt_amount): Likewise.
24878         (bytepick_d_lshiftrt_amount): Likewise.
24879         (bytepick_w_<bytepick_imm>): New define_insn template.
24880         (bytepick_w_<bytepick_imm>_extend): Likewise.
24881         (bytepick_d_<bytepick_imm>): Likewise.
24882         (bytepick_w): Remove unused define_insn.
24883         (bytepick_d): Likewise.
24884         (UNSPEC_BYTEPICK_W): Remove unused unspec.
24885         (UNSPEC_BYTEPICK_D): Likewise.
24886         * config/loongarch/predicates.md (const_0_to_3_operand):
24887         Remove unused define_predicate.
24888         (const_0_to_7_operand): Likewise.
24890 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
24892         PR tree-optimization/108655
24893         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
24894         or -fsanitize=unreachable -fsanitize-trap=unreachable return
24895         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
24897 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
24899         * doc/install.texi (Specific): Remove PW32.
24901 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
24903         PR tree-optimization/108647
24904         * range-op.cc (operator_equal::op1_range,
24905         operator_not_equal::op1_range): Don't test op2 bound
24906         equality if op2.undefined_p (), instead set_varying.
24907         (operator_lt::op1_range, operator_le::op1_range,
24908         operator_gt::op1_range, operator_ge::op1_range): Return false if
24909         op2.undefined_p ().
24910         (operator_lt::op2_range, operator_le::op2_range,
24911         operator_gt::op2_range, operator_ge::op2_range): Return false if
24912         op1.undefined_p ().
24914 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
24916         PR tree-optimization/108639
24917         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
24918         widest_int.
24919         (irange::operator==): Same.
24921 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
24923         PR tree-optimization/108647
24924         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
24925         (foperator_lt::op2_range): Same.
24926         (foperator_le::op1_range): Same.
24927         (foperator_le::op2_range): Same.
24928         (foperator_gt::op1_range): Same.
24929         (foperator_gt::op2_range): Same.
24930         (foperator_ge::op1_range): Same.
24931         (foperator_ge::op2_range): Same.
24932         (foperator_unordered_lt::op1_range): Same.
24933         (foperator_unordered_lt::op2_range): Same.
24934         (foperator_unordered_le::op1_range): Same.
24935         (foperator_unordered_le::op2_range): Same.
24936         (foperator_unordered_gt::op1_range): Same.
24937         (foperator_unordered_gt::op2_range): Same.
24938         (foperator_unordered_ge::op1_range): Same.
24939         (foperator_unordered_ge::op2_range): Same.
24941 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
24943         PR tree-optimization/107570
24944         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
24946 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
24948         * doc/gm2.texi (Internals): Remove from menu.
24949         (Using): Comment out ifnohtml conditional.
24950         (Documentation): Use gcc url.
24951         (License): Node simplified.
24952         (Copying): New node.  Include gpl_v3_without_node.
24953         (Contributing): Node simplified.
24954         (Internals): Commented out.
24955         (Libraries): Node simplified.
24956         (Indices): Ditto.
24957         (Contents): Ditto.
24958         (Functions): Ditto.
24960 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
24962         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
24963         attribute.
24964         (mve_vqshluq_m_n_s<mode>): Likewise.
24965         (mve_vshlq_m_<supf><mode>): Likewise.
24966         (mve_vsriq_m_n_<supf><mode>): Likewise.
24967         (mve_vsubq_m_<supf><mode>): Likewise.
24969 2023-02-03  Martin Jambor  <mjambor@suse.cz>
24971         PR ipa/108384
24972         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
24973         when comparing to an IPA-CP value.
24974         (dump_list_of_param_indices): New function.
24975         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
24976         Dump removed candidates using dump_list_of_param_indices.
24977         * ipa-param-manipulation.cc
24978         (ipa_param_body_adjustments::modify_expression): Add assert checking
24979         sizes of a VIEW_CONVERT_EXPR will match.
24980         (ipa_param_body_adjustments::modify_assignment): Likewise.
24982 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
24984         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
24985         * config/riscv/riscv.cc: Ditto.
24987 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24989         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
24990         (sll.vv): Ditto.
24991         (%3,%4): Ditto.
24992         (%3,%v4): Ditto.
24993         * config/riscv/vector.md: Ditto.
24995 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24997         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
24998         * config/riscv/riscv-vector-builtins-bases.cc: New class.
24999         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
25000         (vsra): Ditto.
25001         (vsrl): Ditto.
25002         * config/riscv/riscv-vector-builtins.cc: Ditto.
25003         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
25005 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
25007         * toplev.cc (toplev::main): Only print the version information header
25008         from toplevel main().
25010 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
25012         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
25013         cond_{ashl|ashr|lshr}
25015 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
25017         PR rtl-optimization/108086
25018         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
25019         Adjust size-related commentary accordingly.
25021 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
25023         PR rtl-optimization/108508
25024         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
25025         the splay tree search gives the first clobber in the second group,
25026         make sure that the root of the first clobber group is updated
25027         correctly.  Enter the new clobber group into the definition splay
25028         tree.
25030 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
25032         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
25033         Fix finding best match score.
25035 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
25037         PR debug/106746
25038         PR rtl-optimization/108463
25039         PR target/108484
25040         * cselib.cc (cselib_current_insn): Move declaration earlier.
25041         (cselib_hasher::equal): For debug only locs, temporarily override
25042         cselib_current_insn to their l->setting_insn for the
25043         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
25044         promote some debug locs.
25045         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
25046         when using cselib call cselib_lookup_from_insn on the address but
25047         don't substitute it.
25049 2023-02-02  Richard Biener  <rguenther@suse.de>
25051         PR middle-end/108625
25052         * genmatch.cc (expr::gen_transform): Also disallow resimplification
25053         from pushing to lseq with force_leaf.
25054         (dt_simplify::gen_1): Likewise.
25056 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
25058         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
25059         (struct kernargs): Replace the common content with kernargs_abi.
25060         (struct heap): Delete.
25061         (main): Read GCN_STACK_SIZE envvar.
25062         Allocate space for the device stacks.
25063         Write the new kernargs fields.
25064         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
25065         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
25066         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
25067         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
25068         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
25069         Set up the stacks from the values in the kernargs, not private.
25070         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
25071         (gcn_hsa_declare_function_name): Turn off the private segment.
25072         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
25073         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
25074         * config/gcn/gcn.opt (mstack-size): Change the description.
25076 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25078         PR target/108443
25079         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
25080         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
25081         addressing MVE predicate modes.
25082         (mve_bool_vec_to_const): Change to represent correct MVE predicate
25083         format.
25084         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
25085         modes.
25086         (arm_vector_mode_supported_p): Likewise.
25087         (arm_mode_to_pred_mode): Add V2QI.
25088         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
25089         qualifier.
25090         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
25091         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
25092         (v2qi_UP): New macro.
25093         (v4bi_UP): New macro.
25094         (v8bi_UP): New macro.
25095         (v16bi_UP): New macro.
25096         (arm_expand_builtin_args): Make it able to expand the new predicate
25097         modes.
25098         * config/arm/arm-modes.def (V2QI): New mode.
25099         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
25100         Pred4x4_t): Remove unused predicate builtin types.
25101         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
25102         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
25103         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
25104         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
25105         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
25106         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
25107         of MODE_VECTOR_BOOL.
25108         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
25109         (MVE_VPRED): Likewise.
25110         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
25111         (MVE_vctp): New mode attribute.
25112         (mode1): Remove.
25113         (VCTPQ): Remove.
25114         (VCTPQ_M): Remove.
25115         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
25116         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
25117         attributes.
25118         (mve_vpnothi): Rename this...
25119         (mve_vpnotv16bi): ... to this.
25120         (mve_vctp<mode1>q_mhi): Rename this...
25121         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
25122         (mve_vldrdq_gather_base_z_<supf>v2di,
25123         mve_vldrdq_gather_offset_z_<supf>v2di,
25124         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
25125         mve_vstrdq_scatter_base_p_<supf>v2di,
25126         mve_vstrdq_scatter_offset_p_<supf>v2di,
25127         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
25128         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
25129         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
25130         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
25131         mve_vldrdq_gather_base_wb_z_<supf>v2di,
25132         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
25133         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
25134         predicates.
25135         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
25136         these...
25137         (VCTP): ... with this.
25138         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
25139         (VCTP_M): ... with this.
25140         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
25141         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
25143 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25145         PR target/107674
25146         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
25147         (arm_modes_tieable_p): Make MVE predicate modes tieable.
25148         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
25149         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
25150         simplify_subreg to simplify subregs where the outermode is not scalar.
25152 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25154         PR target/107674
25155         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
25156         new qualifiers parameter and use unsigned short type for MVE predicate.
25157         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
25158         parameter.
25159         (arm_init_crypto_builtins): Likewise.
25161 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
25163         PR ipa/107300
25164         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
25165         * internal-fn.def (TRAP): Remove.
25166         * internal-fn.cc (expand_TRAP): Remove.
25167         * tree.cc (build_common_builtin_nodes): Define
25168         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
25169         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
25170         instead of BUILT_IN_TRAP.
25171         * gimple.cc (gimple_build_builtin_unreachable): Remove
25172         emitting internal function for BUILT_IN_TRAP.
25173         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
25174         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
25175         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
25176         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
25177         BUILT_IN_UNREACHABLE_TRAP.
25178         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
25179         * tree-cfg.cc (verify_gimple_call,
25180         pass_warn_function_return::execute): Likewise.
25181         * attribs.cc (decl_attributes): Don't report exclusions on
25182         BUILT_IN_UNREACHABLE_TRAP either.
25184 2023-02-02  liuhongt  <hongtao.liu@intel.com>
25186         PR tree-optimization/108601
25187         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
25188         * tree-vect-loop.cc
25189         (vectorizable_nonlinear_induction): Remove
25190         vect_can_peel_nonlinear_iv_p.
25191         (vect_can_peel_nonlinear_iv_p): Don't peel
25192         nonlinear iv(mult or shift) for epilog when vf is not
25193         constant and moved the defination to ..
25194         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
25195         .. Here.
25197 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
25199         PR middle-end/108435
25200         * tree-nested.cc (convert_nonlocal_omp_clauses)
25201         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
25202         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
25203         before calling declare_vars.
25204         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
25205         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
25206         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
25207         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
25209 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
25211         * common/config/aarch64/aarch64-common.cc
25212         (struct aarch64_option_extension): Add native_detect and document struct
25213         a bit more.
25214         (all_extensions): Set new field native_detect.
25215         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
25216         unused struct.
25218 2023-02-01  Martin Liska  <mliska@suse.cz>
25220         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
25221         value if set.
25223 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
25225         PR tree-optimization/108356
25226         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
25227         do a search of the DOM tree for a range.
25229 2023-02-01  Martin Liska  <mliska@suse.cz>
25231         PR ipa/108509
25232         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
25233         ony non-null values.
25234         * ipa.cc (walk_polymorphic_call_targets): Likewise.
25236 2023-02-01  Martin Liska  <mliska@suse.cz>
25238         PR driver/108572
25239         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
25240         -gz=zstd.
25242 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
25244         PR debug/108573
25245         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
25246         subregs in DEBUG_INSNs.
25248 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
25250         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
25252 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
25254         * config/s390/s390.cc (s390_restore_gpr_p): New function.
25255         (s390_preserve_gpr_arg_in_range_p): New function.
25256         (s390_preserve_gpr_arg_p): New function.
25257         (s390_preserve_fpr_arg_p): New function.
25258         (s390_register_info_stdarg_fpr): Rename to ...
25259         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
25260         (s390_register_info_stdarg_gpr): Rename to ...
25261         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
25262         (s390_register_info): Use the renamed functions above.
25263         (s390_optimize_register_info): Likewise.
25264         (save_fpr): Generate CFI for -mpreserve-args.
25265         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
25266         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
25267         (s390_optimize_prologue): Likewise.
25268         * config/s390/s390.opt: New option -mpreserve-args
25270 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
25272         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
25273         (restore_gprs): Likewise.
25274         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
25275         frame pointer if a frame-pointer is used.
25276         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
25277         * config/s390/s390.md (stack_tie): Add a register operand and
25278         rename to ...
25279         (@stack_tie<mode>): ... this.
25281 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
25283         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
25284         EMIT_CFI parameter.
25285         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
25286         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
25288 2023-02-01  Richard Biener  <rguenther@suse.de>
25290         PR middle-end/108500
25291         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
25292         with tree traversal algorithm.
25294 2023-02-01  Jason Merrill  <jason@redhat.com>
25296         * doc/invoke.texi: Document -Wno-changes-meaning.
25298 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
25300         * doc/invoke.texi (Static Analyzer Options): Add notes about
25301         limitations of -fanalyzer.
25303 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25305         * config/riscv/constraints.md (vj): New.
25306         (vk): Ditto
25307         * config/riscv/iterators.md: Add more opcode.
25308         * config/riscv/predicates.md (vector_arith_operand): New.
25309         (vector_neg_arith_operand): New.
25310         (vector_shift_operand): New.
25311         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
25312         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
25313         (vsub): Ditto.
25314         (vand): Ditto.
25315         (vor): Ditto.
25316         (vxor): Ditto.
25317         (vsll): Ditto.
25318         (vsra): Ditto.
25319         (vsrl): Ditto.
25320         (vmin): Ditto.
25321         (vmax): Ditto.
25322         (vminu): Ditto.
25323         (vmaxu): Ditto.
25324         (vmul): Ditto.
25325         (vdiv): Ditto.
25326         (vrem): Ditto.
25327         (vdivu): Ditto.
25328         (vremu): Ditto.
25329         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
25330         (vsub): Ditto.
25331         (vand): Ditto.
25332         (vor): Ditto.
25333         (vxor): Ditto.
25334         (vsll): Ditto.
25335         (vsra): Ditto.
25336         (vsrl): Ditto.
25337         (vmin): Ditto.
25338         (vmax): Ditto.
25339         (vminu): Ditto.
25340         (vmaxu): Ditto.
25341         (vmul): Ditto.
25342         (vdiv): Ditto.
25343         (vrem): Ditto.
25344         (vdivu): Ditto.
25345         (vremu): Ditto.
25346         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
25347         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
25348         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
25349         (DEF_RVV_U_OPS): New.
25350         (rvv_arg_type_info::get_base_vector_type): Handle
25351         RVV_BASE_shift_vector.
25352         (rvv_arg_type_info::get_tree_type): Ditto.
25353         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
25354         RVV_BASE_shift_vector.
25355         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
25356         * config/riscv/vector-iterators.md: Handle more opcode.
25357         * config/riscv/vector.md (@pred_<optab><mode>): New.
25359 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
25361         PR target/108589
25362         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
25363         REG_P on SET_DEST.
25365 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
25367         PR tree-optimization/108608
25368         * tree-vect-loop.cc (vect_transform_reduction): Handle single
25369         def-use cycles that involve function calls rather than tree codes.
25371 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
25373         PR tree-optimization/108385
25374         * gimple-range-gori.cc (gori_compute::compute_operand_range):
25375         Allow VARYING computations to continue if there is a relation.
25376         * range-op.cc (pointer_plus_operator::op2_range): New.
25378 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
25380         PR tree-optimization/108359
25381         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
25382         (range_operator::fold_range): If op1 is equivalent to op2 then
25383         invoke new fold_in_parts_equiv to operate on sub-components.
25384         * range-op.h (wi_fold_in_parts_equiv): New prototype.
25386 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
25388         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
25389         not abort calculations if there is a valid relation available.
25390         (gori_compute::refine_using_relation): Pass correct relation trio.
25391         (gori_compute::compute_operand1_range): Create trio and use it.
25392         (gori_compute::compute_operand2_range): Ditto.
25393         * range-op.cc (operator_plus::op1_range): Use correct trio member.
25394         (operator_minus::op1_range): Use correct trio member.
25395         * value-relation.cc (value_relation::create_trio): New.
25396         * value-relation.h (value_relation::create_trio): New prototype.
25398 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
25400         PR target/108599
25401         * config/i386/i386-expand.cc
25402         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
25403         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
25404         equal to bitsize of mode.
25406 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
25408         PR rtl-optimization/108596
25409         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
25410         ends with asm goto and has a crossing fallthrough edge to the same bb
25411         that contains at least one of its labels by restoring EDGE_CROSSING
25412         flag even on possible edge from cur_bb to new_bb successor.
25414 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
25416         PR c++/105593
25417         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
25418         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
25419         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
25420         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
25421         uninitialized automatic variable __W.
25423 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
25425         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
25427 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25429         * config/riscv/riscv-protos.h (get_vector_mode): New function.
25430         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
25431         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
25432         (class loadstore): Adjust for indexed loads/stores support.
25433         (BASE): Ditto.
25434         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
25435         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
25436         (vluxei16): Ditto.
25437         (vluxei32): Ditto.
25438         (vluxei64): Ditto.
25439         (vloxei8): Ditto.
25440         (vloxei16): Ditto.
25441         (vloxei32): Ditto.
25442         (vloxei64): Ditto.
25443         (vsuxei8): Ditto.
25444         (vsuxei16): Ditto.
25445         (vsuxei32): Ditto.
25446         (vsuxei64): Ditto.
25447         (vsoxei8): Ditto.
25448         (vsoxei16): Ditto.
25449         (vsoxei32): Ditto.
25450         (vsoxei64): Ditto.
25451         * config/riscv/riscv-vector-builtins-shapes.cc
25452         (struct indexed_loadstore_def): New class.
25453         (SHAPE): Ditto.
25454         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25455         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
25456         for indexed loads/stores support.
25457         (check_required_extensions): Ditto.
25458         (rvv_arg_type_info::get_base_vector_type): New function.
25459         (rvv_arg_type_info::get_tree_type): Ditto.
25460         (function_builder::add_unique_function): Adjust for indexed loads/stores
25461         support.
25462         (function_expander::use_exact_insn): New function.
25463         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
25464         indexed loads/stores support.
25465         (struct rvv_arg_type_info): Ditto.
25466         (function_expander::index_mode): New function.
25467         (function_base::apply_tail_policy_p): Ditto.
25468         (function_base::apply_mask_policy_p): Ditto.
25469         * config/riscv/vector-iterators.md (unspec): New unspec.
25470         * config/riscv/vector.md (unspec): Ditto.
25471         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
25472         pattern.
25473         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
25474         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
25475         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
25476         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
25477         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
25478         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
25479         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
25480         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
25481         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
25482         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
25483         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
25484         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
25485         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
25487 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
25489         * config.gcc: Recognize x86_64-*-gnu* targets and include
25490         i386/gnu64.h.
25491         * config/i386/gnu64.h: Define configuration for new target
25492         including ld.so location.
25494 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
25496         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
25497         ampere1a to include SM4.
25499 2023-01-30  Andrew Pinski  <apinski@marvell.com>
25501         PR tree-optimization/108582
25502         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
25503         for middlebb to have no phi nodes.
25505 2023-01-30  Richard Biener  <rguenther@suse.de>
25507         PR tree-optimization/108574
25508         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
25509         sameval and def, ignore the equivalence if there's the
25510         danger of oscillating between two values.
25512 2023-01-30  Andreas Schwab  <schwab@suse.de>
25514         * common/config/riscv/riscv-common.cc
25515         (riscv_option_optimization_table)
25516         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
25517         -fasynchronous-unwind-tables and -funwind-tables.
25518         * config.gcc (riscv*-*-linux*): Define
25519         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
25521 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
25523         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
25524         value of includedir.
25526 2023-01-30  Richard Biener  <rguenther@suse.de>
25528         PR ipa/108511
25529         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
25530         assert.
25532 2023-01-30  liuhongt  <hongtao.liu@intel.com>
25534         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
25535         * doc/invoke.texi: Ditto.
25537 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
25539         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
25540         (stmt_may_terminate_function_p): If assuming return or EH
25541         volatile asm is safe.
25542         (find_always_executed_bbs): Fix handling of terminating BBS and
25543         infinite loops; add debug output.
25544         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
25546 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
25548         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
25549         off-by-one in checking the permissible shift-amount.
25551 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
25553         * doc/extend.texi (Named Address Spaces): Update link to the
25554         AVR-Libc manual.
25556 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
25558         * doc/standards.texi (Standards): Fix markup.
25560 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
25562         * doc/standards.texi (Standards): Update link to Objective-C book.
25564 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
25566         * doc/invoke.texi (Instrumentation Options): Update reference to
25567         AddressSanitizer.
25569 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
25571         * doc/standards.texi: Update Go1 link.
25573 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25575         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
25576         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
25577         Support vlse/vsse.
25578         (BASE): Ditto.
25579         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25580         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
25581         (vsse): New class.
25582         * config/riscv/riscv-vector-builtins.cc
25583         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
25584         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
25585         (@pred_strided_store<mode>): Ditto.
25587 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25589         * config/riscv/vector.md (tail_policy_op_idx): Remove.
25590         (mask_policy_op_idx): Remove.
25591         (avl_type_op_idx): Remove.
25593 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
25595         PR tree-optimization/96373
25596         * tree.h (sign_mask_for): Declare.
25597         * tree.cc (sign_mask_for): New function.
25598         (signed_or_unsigned_type_for): For vector types, try to use the
25599         related_int_vector_mode.
25600         * genmatch.cc (commutative_op): Handle conditional internal functions.
25601         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
25603 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
25605         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
25606         Use the likely minimum VF when bounding the denominators to
25607         the estimated number of iterations.
25609 2023-01-27  Richard Biener  <rguenther@suse.de>
25611         PR target/55522
25612         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
25613         and -Ofast FP environment side-effects.
25615 2023-01-27  Richard Biener  <rguenther@suse.de>
25617         PR target/55522
25618         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
25619         Don't add crtfastmath.o for -shared.
25621 2023-01-27  Richard Biener  <rguenther@suse.de>
25623         PR target/55522
25624         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
25625         for -shared.
25627 2023-01-27  Richard Biener  <rguenther@suse.de>
25629         PR target/55522
25630         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
25631         crtfastmath.o for -shared.
25633 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
25635         PR tree-optimization/108306
25636         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
25637         varying for shifts that are always out of void range.
25638         (operator_rshift::fold_range): Return [0, 0] not
25639         varying for shifts that are always out of void range.
25641 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
25643         PR tree-optimization/108447
25644         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
25645         Do not attempt to fold HONOR_NAN types.
25647 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25649         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
25650         Remove _m suffix for "vop_m" C++ overloaded API name.
25652 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25654         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
25655         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25656         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
25657         (vsm): Ditto.
25658         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
25659         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
25660         (vbool64_t): Ditto.
25661         (vbool32_t): Ditto.
25662         (vbool16_t): Ditto.
25663         (vbool8_t): Ditto.
25664         (vbool4_t): Ditto.
25665         (vbool2_t): Ditto.
25666         (vbool1_t): Ditto.
25667         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
25668         (rvv_arg_type_info::get_tree_type): Ditto.
25669         (function_expander::use_contiguous_load_insn): Ditto.
25670         * config/riscv/vector.md (@pred_store<mode>): Ditto.
25672 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25674         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
25675         (vsetvl_discard_result_insn_p): New function.
25676         (reg_killed_by_bb_p): rename to find_reg_killed_by.
25677         (find_reg_killed_by): New name.
25678         (get_vl): allow it to be called by more functions.
25679         (has_vsetvl_killed_avl_p): Add condition.
25680         (get_avl): allow it to be called by more functions.
25681         (insn_should_be_added_p): New function.
25682         (get_all_nonphi_defs): Refine function.
25683         (get_all_sets): Ditto.
25684         (get_same_bb_set): New function.
25685         (any_insn_in_bb_p): Ditto.
25686         (any_set_in_bb_p): Ditto.
25687         (get_vl_vtype_info): Add VLMAX forward optimization.
25688         (source_equal_p): Fix issues.
25689         (extract_single_source): Refine.
25690         (avl_info::multiple_source_equal_p): New function.
25691         (avl_info::operator==): Adjust for final version.
25692         (vl_vtype_info::operator==): Ditto.
25693         (vl_vtype_info::same_avl_p): Ditto.
25694         (vector_insn_info::parse_insn): Ditto.
25695         (vector_insn_info::available_p): New function.
25696         (vector_insn_info::merge): Adjust for final version.
25697         (vector_insn_info::dump): Add hard_empty.
25698         (pass_vsetvl::hard_empty_block_p): New function.
25699         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
25700         (pass_vsetvl::forward_demand_fusion): Ditto.
25701         (pass_vsetvl::demand_fusion): Ditto.
25702         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
25703         (pass_vsetvl::compute_local_properties): Adjust for final version.
25704         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
25705         (pass_vsetvl::refine_vsetvls): Ditto.
25706         (pass_vsetvl::commit_vsetvls): Ditto.
25707         (pass_vsetvl::propagate_avl): New function.
25708         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
25709         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
25711 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
25713         PR other/108560
25714         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
25715         from size_t to int.
25717 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
25719         PR ipa/106061
25720         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
25721         redirection of calls to __builtin_trap in addition to redirection
25722         to __builtin_unreachable.
25724 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25726         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
25728 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25730         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
25731         (emit_vsetvl_insn): Ditto.
25733 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25735         * config/riscv/vector.md: Fix constraints.
25737 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25739         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
25741 2023-01-27  Patrick Palka  <ppalka@redhat.com>
25742             Jakub Jelinek  <jakub@redhat.com>
25744         * tree-core.h (tree_code_type, tree_code_length): For
25745         C++17 and later, add inline keyword, otherwise don't define
25746         the arrays, but declare extern arrays.
25747         * tree.cc (tree_code_type, tree_code_length): Define these
25748         arrays for C++14 and older.
25750 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25752         * config/riscv/riscv-vsetvl.h: Change it into public.
25754 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25756         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
25757         pass.
25759 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25761         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
25763 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25765         * config/riscv/vector.md: Fix incorrect attributes.
25767 2023-01-27  Richard Biener  <rguenther@suse.de>
25769         PR target/55522
25770         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
25771         Don't add crtfastmath.o for -shared.
25773 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
25775         * doc/options.texi (option, RejectNegative): Mention that
25776         -g-started options are also implicitly negatable.
25778 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
25780         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
25781         Use get_typenode_from_name to get fixed-width integer type
25782         nodes.
25783         * config/riscv/riscv-vector-builtins.def: Update define with
25784         fixed-width integer type nodes.
25786 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25788         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
25789         (real_insn_and_same_bb_p): New function.
25790         (same_bb_and_after_or_equal_p): Remove it.
25791         (before_p): New function.
25792         (reg_killed_by_bb_p): Ditto.
25793         (has_vsetvl_killed_avl_p): Ditto.
25794         (get_vl): Move location so that we can call it.
25795         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
25796         (available_occurrence_p): Ditto.
25797         (dominate_probability_p): Remove it.
25798         (can_backward_propagate_p): Remove it.
25799         (get_all_nonphi_defs): New function.
25800         (get_all_predecessors): Ditto.
25801         (any_insn_in_bb_p): Ditto.
25802         (insert_vsetvl): Adjust AVL REG.
25803         (source_equal_p): New function.
25804         (extract_single_source): Ditto.
25805         (avl_info::single_source_equal_p): Ditto.
25806         (avl_info::operator==): Adjust for AVL=REG.
25807         (vl_vtype_info::same_avl_p): Ditto.
25808         (vector_insn_info::set_demand_info): Remove it.
25809         (vector_insn_info::compatible_p): Adjust for AVL=REG.
25810         (vector_insn_info::compatible_avl_p): New function.
25811         (vector_insn_info::merge): Adjust AVL=REG.
25812         (vector_insn_info::dump): Ditto.
25813         (pass_vsetvl::merge_successors): Remove it.
25814         (enum fusion_type): New enum.
25815         (pass_vsetvl::get_backward_fusion_type): New function.
25816         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
25817         (pass_vsetvl::forward_demand_fusion): Ditto.
25818         (pass_vsetvl::demand_fusion): Ditto.
25819         (pass_vsetvl::prune_expressions): Ditto.
25820         (pass_vsetvl::compute_local_properties): Ditto.
25821         (pass_vsetvl::cleanup_vsetvls): Ditto.
25822         (pass_vsetvl::commit_vsetvls): Ditto.
25823         (pass_vsetvl::init): Ditto.
25824         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
25825         (enum merge_type): New enum.
25827 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25829         * config/riscv/riscv-vsetvl.cc
25830         (vector_infos_manager::vector_infos_manager): Add probability.
25831         (vector_infos_manager::dump): Ditto.
25832         (pass_vsetvl::compute_probabilities): Ditto.
25833         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
25835 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25837         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
25838         (vector_insn_info::merge): Ditto.
25839         (vector_insn_info::dump): Ditto.
25840         (pass_vsetvl::merge_successors): Ditto.
25841         (pass_vsetvl::backward_demand_fusion): Ditto.
25842         (pass_vsetvl::forward_demand_fusion): Ditto.
25843         (pass_vsetvl::commit_vsetvls): Ditto.
25844         * config/riscv/riscv-vsetvl.h: Ditto.
25846 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25848         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
25849         rinsn.
25851 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25853         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
25855 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25857         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
25858         Add pre-check for redundant flow.
25860 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25862         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
25863         (vector_infos_manager::free_bitmap_vectors): Ditto.
25864         (pass_vsetvl::pre_vsetvl): Adjust codes.
25865         * config/riscv/riscv-vsetvl.h: New function declaration.
25867 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25869         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
25870         (vector_insn_info::set_demand_info): New function.
25871         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
25872         (pass_vsetvl::merge_successors): Ditto.
25873         (pass_vsetvl::compute_global_backward_infos): Ditto.
25874         (pass_vsetvl::backward_demand_fusion): Ditto.
25875         (pass_vsetvl::forward_demand_fusion): Ditto.
25876         (pass_vsetvl::demand_fusion): New function.
25877         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
25878         * config/riscv/riscv-vsetvl.h: New function declaration.
25880 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25882         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
25884 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25886         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
25887         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
25889 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25891         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
25892         (backward_propagate_worthwhile_p): Fix non-worthwhile.
25894 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25896         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
25898 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25900         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
25901         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
25902         (pass_vsetvl::commit_vsetvls): Ditto.
25903         * config/riscv/riscv-vsetvl.h: New function declaration.
25905 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25907         * config/riscv/vector.md:
25909 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25911         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
25912         pred_store for vse.
25913         * config/riscv/riscv-vector-builtins.cc
25914         (function_expander::add_mem_operand): Refine function.
25915         (function_expander::use_contiguous_load_insn): Adjust new
25916         implementation.
25917         (function_expander::use_contiguous_store_insn): Ditto.
25918         * config/riscv/riscv-vector-builtins.h: Refine function.
25919         * config/riscv/vector.md (@pred_store<mode>): New pattern.
25921 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25923         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
25925 2023-01-26  Marek Polacek  <polacek@redhat.com>
25927         PR middle-end/108543
25928         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
25929         if it was previously set.
25931 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
25933         PR tree-optimization/108540
25934         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
25935         are singletons, use range_true even if op1 != op2
25936         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
25937         even if intersection of the ranges is empty and one has
25938         zero low bound and another zero high bound, use range_true_and_false
25939         rather than range_false.
25940         (foperator_not_equal::fold_range): If both op1 and op2
25941         are singletons, use range_false even if op1 != op2
25942         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
25943         even if intersection of the ranges is empty and one has
25944         zero low bound and another zero high bound, use range_true_and_false
25945         rather than range_true.
25947 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
25949         * value-relation.cc (kind_string): Add const.
25950         (rr_negate_table, rr_swap_table, rr_intersect_table,
25951         rr_union_table, rr_transitive_table): Add static const, change
25952         element type from relation_kind to unsigned char.
25953         (relation_negate, relation_swap, relation_intersect, relation_union,
25954         relation_transitive): Cast rr_*_table element to relation_kind.
25955         (relation_to_code): Add static const.
25956         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
25958 2023-01-26  Richard Biener  <rguenther@suse.de>
25960         PR tree-optimization/108547
25961         * gimple-predicate-analysis.cc (value_sat_pred_p):
25962         Use widest_int.
25964 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
25966         PR tree-optimization/108522
25967         * tree-object-size.cc (compute_object_offset): Make EXPR
25968         argument non-const.  Call component_ref_field_offset.
25970 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25972         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
25973         FEATURE_STRING field.
25975 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
25977         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
25979 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
25981         PR modula2/102343
25982         PR modula2/108182
25983         * gcc.cc: Provide default specs for Modula-2 so that when the
25984         language is not built-in better diagnostics are emitted for
25985         attempts to use .mod or .m2i file extensions.
25987 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
25989         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
25991 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
25993         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
25995 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
25997         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
25998         Fix spacing.
26000 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26002         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
26004 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26006         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
26008 2023-01-25  Richard Biener  <rguenther@suse.de>
26010         PR tree-optimization/108523
26011         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
26012         backedge value for the result when using predication to
26013         prove equivalence.
26015 2023-01-25  Richard Biener  <rguenther@suse.de>
26017         * doc/lto.texi (Command line options): Reword and update reference
26018         to removed lto_read_all_file_options.
26020 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
26022         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
26023         tests.
26025 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
26027         * doc/contrib.texi: Add Jose E. Marchesi.
26029 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
26031         PR tree-optimization/108498
26032         * gimple-ssa-store-merging.cc (class store_operand_info):
26033         End coment with full stop rather than comma.
26034         (split_group): Likewise.
26035         (merged_store_group::apply_stores): Clear string_concatenation if
26036         start or end aren't on a byte boundary.
26038 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
26039             Jakub Jelinek  <jakub@redhat.com>
26041         PR tree-optimization/108522
26042         * tree-object-size.cc (compute_object_offset): Use
26043         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
26045 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26047         * config/xtensa/xtensa.md:
26048         Fix exit from loops detecting references before overwriting in the
26049         split pattern.
26051 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
26053         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
26054         do elimination but only for hard register.
26055         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
26056         calls of get_hard_regno.
26058 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26060         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
26061         of CPU version.
26063 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26065         PR target/108177
26066         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
26067         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
26068         as input operand.
26070 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26072         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
26073         and only include 'csky/t-csky-linux' when enable multilib.
26074         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
26075         define it when disable multilib.
26077 2023-01-24  Richard Biener  <rguenther@suse.de>
26079         PR tree-optimization/108500
26080         * dominance.h (calculate_dominance_info): Add parameter
26081         to indicate fast-query compute, defaulted to true.
26082         * dominance.cc (calculate_dominance_info): Honor
26083         fast-query compute parameter.
26084         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
26085         not compute the dominator fast-query DFS numbers.
26087 2023-01-24  Eric Biggers  <ebiggers@google.com>
26089         PR bootstrap/90543
26090         * optc-save-gen.awk: Fix copy-and-paste error.
26092 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
26094         PR c++/108474
26095         * cgraphbuild.cc: Include gimplify.h.
26096         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
26097         their corresponding DECL_VALUE_EXPR expressions after unsharing.
26099 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26101         PR target/108505
26102         * config.gcc (tm_file): Move the variable out of loop.
26104 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
26105             Yang Yujie  <yangyujie@loongson.cn>
26107         PR target/107731
26108         * config/loongarch/loongarch.cc (loongarch_classify_address):
26109         Add precessint for CONST_INT.
26110         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
26111         (loongarch_print_operand): Increase the processing of '%c'.
26112         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
26113         And port the public operand modifiers information to this document.
26115 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26117         * doc/invoke.texi (-mbranch-protection): Update documentation.
26119 2023-01-23  Richard Biener  <rguenther@suse.de>
26121         PR target/55522
26122         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
26123         for -shared.
26124         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
26125         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
26126         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
26127         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
26129 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26131         * config/arm/aout.h (ra_auth_code): Add entry in enum.
26132         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
26133         to dwarf frame expression.
26134         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
26135         (arm_expand_prologue): Update frame related information and reg notes
26136         for pac/pacbit insn.
26137         (arm_regno_class): Check for pac pseudo reigster.
26138         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
26139         (arm_init_machine_status): Set pacspval_needed to zero.
26140         (arm_debugger_regno): Check for PAC register.
26141         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
26142         register.
26143         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
26144         (arm_unwind_emit): Update REG_CFA_REGISTER case._
26145         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
26146         (DWARF_PAC_REGNUM): Define.
26147         (IS_PAC_REGNUM): Likewise.
26148         (enum reg_class): Add PAC_REG entry.
26149         (machine_function): Add pacbti_needed state to structure.
26150         * config/arm/arm.md (RA_AUTH_CODE): Define.
26152 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26154         * config.gcc ($tm_file): Update variable.
26155         * config/arm/arm-mlib.h: Create new header file.
26156         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
26157         multilib arch directory.
26158         (MULTILIB_REUSE): Add multilib reuse rules.
26159         (MULTILIB_MATCHES): Add multilib match rules.
26161 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26163         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
26164         * config/arm/arm-tables.opt: Regenerate.
26165         * config/arm/arm-tune.md: Likewise.
26166         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
26167         * (-mfix-cmse-cve-2021-35465): Likewise.
26169 2023-01-23  Richard Biener  <rguenther@suse.de>
26171         PR tree-optimization/108482
26172         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
26173         .LOOP_DIST_ALIAS calls.
26175 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26177         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
26178         * config/arm/arm-protos.h: Update.
26179         * config/arm/aarch-common-protos.h: Declare
26180         'aarch_bti_arch_check'.
26181         * config/arm/arm.cc (aarch_bti_enabled) Update.
26182         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
26183         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
26184         * config/arm/arm.md (bti_nop): New insn.
26185         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
26186         (aarch-bti-insert.o): New target.
26187         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
26188         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
26189         compatibility.
26190         (gate): Make use of 'aarch_bti_arch_check'.
26191         * config/arm/arm-passes.def: New file.
26192         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
26194 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26196         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
26197         'aarch-bti-insert.o'.
26198         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
26199         proto.
26200         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
26201         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
26202         (aarch64_output_mi_thunk)
26203         (aarch64_print_patchable_function_entry)
26204         (aarch64_file_end_indicate_exec_stack): Update renamed function
26205         calls to renamed functions.
26206         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
26207         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
26208         target.
26209         * config/aarch64/aarch64-bti-insert.cc: Delete.
26210         * config/arm/aarch-bti-insert.cc: New file including and
26211         generalizing code from aarch64-bti-insert.cc.
26212         * config/arm/aarch-common-protos.h: Update.
26214 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26216         * config/arm/arm.h (arm_arch8m_main): Declare it.
26217         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
26218         Declare it.
26219         * config/arm/arm.cc (arm_arch8m_main): Define it.
26220         (arm_option_reconfigure_globals): Set arm_arch8m_main.
26221         (arm_compute_frame_layout, arm_expand_prologue)
26222         (thumb2_expand_return, arm_expand_epilogue)
26223         (arm_conditional_register_usage): Update for pac codegen.
26224         (arm_current_function_pac_enabled_p): New function.
26225         (aarch_bti_enabled) New function.
26226         (use_return_insn): Return zero when pac is enabled.
26227         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
26228         Add new patterns.
26229         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
26230         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
26232 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26234         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
26235         mbranch-protection.
26237 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26238             Tejas Belagod   <tbelagod@arm.com>
26240         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
26241         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
26243 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26244             Tejas Belagod   <tbelagod@arm.com>
26245             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26247         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
26248         new pseudo register class _UVRSC_PAC.
26250 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26251             Tejas Belagod   <tbelagod@arm.com>
26253         * config/arm/arm-c.cc (arm_cpu_builtins): Define
26254         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
26255         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
26257 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26258             Tejas Belagod   <tbelagod@arm.com>
26260         * doc/sourcebuild.texi: Document arm_pacbti_hw.
26262 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26263             Tejas Belagod   <tbelagod@arm.com>
26264             Richard Earnshaw  <Richard.Earnshaw@arm.com>
26266         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
26267         -mbranch-protection option and initialize appropriate data structures.
26268         * config/arm/arm.opt (-mbranch-protection): New option.
26269         * doc/invoke.texi (Arm Options): Document it.
26271 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26272             Tejas Belagod   <tbelagod@arm.com>
26274         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
26275         * config/arm/arm-cpus.in (pacbti): New feature.
26276         * doc/invoke.texi (Arm Options): Document it.
26278 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
26279             Tejas Belagod   <tbelagod@arm.com>
26281         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
26282         (all_architectures): Fix comment.
26283         (aarch64_parse_extension): Rename return type, enum value names.
26284         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
26285         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
26286         Also rename corresponding enum values.
26287         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
26288         out aarch64_function_type and move it to common code as
26289         aarch_function_type in aarch-common.h.
26290         * config/aarch64/aarch64-protos.h: Include common types header,
26291         move out types aarch64_parse_opt_result and aarch64_key_type to
26292         aarch-common.h
26293         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
26294         and functions out into aarch-common.h and aarch-common.cc.  Fix up
26295         all the name changes resulting from the move.
26296         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
26297         and enum value.
26298         * config/aarch64/aarch64.opt: Include aarch-common.h to import
26299         type move.  Fix up name changes from factoring out common code and
26300         data.
26301         * config/arm/aarch-common-protos.h: Export factored out routines to both
26302         backends.
26303         * config/arm/aarch-common.cc: Include newly factored out types.
26304         Move all mbranch-protection code and data structures from
26305         aarch64.cc.
26306         * config/arm/aarch-common.h: New header that declares types shared
26307         between aarch32 and aarch64 backends.
26308         * config/arm/arm-protos.h: Declare types and variables that are
26309         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
26310         aarch_ra_sign_scope and aarch_enable_bti.
26311         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
26312         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
26313         * config/arm/arm.cc: Add missing includes.
26315 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
26317         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
26319 2023-01-23  Richard Biener  <rguenther@suse.de>
26321         PR tree-optimization/108449
26322         * cgraphunit.cc (check_global_declaration): Do not turn
26323         undefined statics into externs.
26325 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
26327         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
26328         and HI input modes.
26329         * config/pru/pru.md (clz): Fix generated code for QI and HI
26330         input modes.
26332 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
26334         * config/v850/v850.cc (v850_select_section): Put const volatile
26335         objects into read-only sections.
26337 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
26339         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
26340         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
26341         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
26343 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
26345         PR tree-optimization/108457
26346         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
26347         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
26348         argument instead of a temporary.  Formatting fixes.
26350 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
26352         PR tree-optimization/108447
26353         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
26354         (relation_tests): Add self-tests for relation_{intersect,union}
26355         commutativity.
26356         * selftest.h (relation_tests): Declare.
26357         * function-tests.cc (test_ranges): Call it.
26359 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
26361         PR target/108436
26362         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
26363         invalid third argument to __builtin_ia32_prefetch.
26365 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
26367         PR middle-end/108459
26368         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
26369         than fold_unary for NEGATE_EXPR.
26371 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
26373         PR target/108411
26374         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
26375         comment. Move assert about alignment a bit later.
26377 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
26379         PR tree-optimization/108440
26380         * tree-ssa-forwprop.cc: Include gimple-range.h.
26381         (simplify_rotate): For the forms with T2 wider than T and shift counts of
26382         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
26383         to B.  For the forms with T2 wider than T and shift counts of
26384         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
26385         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
26386         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
26387         pass specific ranger instead of get_global_range_query.
26388         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
26389         been created.
26391 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26393         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
26394         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
26395         the pattern.
26396         (aarch64_simd_vec_copy_lane<mode>): Likewise.
26397         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
26399 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
26401         PR debug/106746
26402         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
26403         within debug insns.
26405 2023-01-18  Martin Jambor  <mjambor@suse.cz>
26407         PR ipa/107944
26408         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
26409         lcone_of chain also do not need the body.
26411 2023-01-18  Richard Biener  <rguenther@suse.de>
26413         Revert:
26414         2022-12-16  Richard Biener  <rguenther@suse.de>
26416         PR middle-end/108086
26417         * tree-inline.cc (remap_ssa_name): Do not unshare the
26418         result from the decl_map.
26420 2023-01-18  Murray Steele  <murray.steele@arm.com>
26422         PR target/108442
26423         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
26424         function.
26425         (__arm_vst1q_p_s8): Likewise.
26426         (__arm_vld1q_z_u8): Likewise.
26427         (__arm_vld1q_z_s8): Likewise.
26428         (__arm_vst1q_p_u16): Likewise.
26429         (__arm_vst1q_p_s16): Likewise.
26430         (__arm_vld1q_z_u16): Likewise.
26431         (__arm_vld1q_z_s16): Likewise.
26432         (__arm_vst1q_p_u32): Likewise.
26433         (__arm_vst1q_p_s32): Likewise.
26434         (__arm_vld1q_z_u32): Likewise.
26435         (__arm_vld1q_z_s32): Likewise.
26436         (__arm_vld1q_z_f16): Likewise.
26437         (__arm_vst1q_p_f16): Likewise.
26438         (__arm_vld1q_z_f32): Likewise.
26439         (__arm_vst1q_p_f32): Likewise.
26441 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26443         * config/xtensa/xtensa.md (xorsi3_internal):
26444         Rename from the original of "xorsi3".
26445         (xorsi3): New expansion pattern that emits addition rather than
26446         bitwise-XOR when the second source is a constant of -2147483648
26447         if TARGET_DENSITY.
26449 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
26450             Andrew Pinski  <apinski@marvell.com>
26452         PR target/108396
26453         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
26454         vec_vsubcuqP with vec_vsubcuq.
26456 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
26458         PR target/108348
26459         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
26460         support for invalid uses of MMA opaque type in function arguments.
26462 2023-01-18  liuhongt  <hongtao.liu@intel.com>
26464         PR target/55522
26465         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
26466         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
26467         -share or -mno-daz-ftz is specified.
26468         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
26469         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
26471 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
26473         * config/bpf/bpf.cc (bpf_option_override): Disable
26474         -fstack-protector.
26476 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
26478         PR tree-optimization/106523
26479         * tree-ssa-forwprop.cc (simplify_rotate): For the
26480         patterns with (-Y) & (B - 1) in one operand's shift
26481         count and Y in another, if T2 has wider precision than T,
26482         punt if Y could have a value in [B, B2 - 1] range.
26484 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
26486         PR target/105980
26487         * config/i386/i386.cc (x86_output_mi_thunk): Disable
26488         -mforce-indirect-call for PIC in 32-bit mode.
26490 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
26492         PR ipa/106077
26493         * ipa-modref.cc (modref_access_analysis::analyze): Use
26494         find_always_executed_bbs.
26495         * ipa-sra.cc (process_scan_results): Likewise.
26496         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
26497         (find_always_executed_bbs): New function.
26498         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
26499         (find_always_executed_bbs): Declare.
26501 2023-01-16  Jan Hubicka  <jh@suse.cz>
26503         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
26504         by TARGET_USE_SCATTER.
26505         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
26506         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
26507         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
26508         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
26509         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
26510         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
26512 2023-01-16  Richard Biener  <rguenther@suse.de>
26514         PR target/55522
26515         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
26517 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
26519         PR target/96795
26520         PR target/107515
26521         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
26522         (__ARM_mve_coerce3): Likewise.
26524 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
26526         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
26528 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
26530         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
26531         (number_of_iterations_bitcount): Add call to the above.
26532         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
26533         c[lt]z idiom recognition.
26535 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
26537         * doc/sourcebuild.texi: Add missing target attributes.
26539 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
26541         PR tree-optimization/94793
26542         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
26543         for c[lt]z optabs.
26544         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
26545         (number_of_iterations_cltz_complement): New.
26546         (number_of_iterations_bitcount): Add call to the above.
26548 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
26550         * doc/extend.texi (Common Function Attributes): Fix grammar.
26552 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
26554         PR other/108413
26555         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
26556         * config/riscv/riscv-vsetvl.cc: Likewise.
26558 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
26560         PR c++/105593
26561         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
26562         disable -Winit-self using pragma GCC diagnostic ignored.
26563         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
26564         Likewise.
26565         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
26566         _mm256_undefined_si256): Likewise.
26567         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
26568         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
26569         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
26570         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
26572 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
26574         PR target/108272
26575         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
26576         support for invalid uses in inline asm, factor out the checking and
26577         erroring to lambda function check_and_error_invalid_use.
26579 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
26581         PR tree-optimization/107608
26582         * range-op-float.cc (range_operator_float::fold_range): Avoid
26583         folding into INF when flag_trapping_math.
26584         * value-range.h (frange::known_isinf): Return false for possible NANs.
26586 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26588         * config.gcc (csky-*-*): Support --with-float=softfp.
26590 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26592         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
26593         Rename to xtensa_adjust_reg_alloc_order.
26594         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
26595         Ditto.  And also remove code to reorder register numbers for
26596         leaf functions, rename the tables, and adjust the allocation
26597         order for the call0 ABI to use register A0 more.
26598         (xtensa_leaf_regs): Remove.
26599         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
26600         (order_regs_for_local_alloc): Rename as the above.
26601         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
26603 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26605         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
26606         Change to define_insn_and_split to fold ldr+dup to ld1rq.
26607         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
26609 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
26611         * hash-table.h (is_deleted): Precheck !is_empty.
26612         (mark_deleted): Postcheck !is_empty.
26613         (copy constructor): Test is_empty before is_deleted.
26615 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
26617         PR target/40457
26618         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
26619         moves.
26621 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
26623         PR rtl-optimization/108274
26624         * function.cc (thread_prologue_and_epilogue_insns): Also update the
26625         DF information for calls in a few more cases.
26627 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
26629         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
26630         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
26631         define.
26632         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
26633         (MAX_SYNC_LIBFUNC_SIZE): Define.
26634         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
26635         enabled.
26636         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
26637         libcall when sync libcalls are disabled.
26638         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
26639         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
26640         are disabled on 32-bit target.
26641         * config/pa/pa.opt (matomic-libcalls): New option.
26642         * doc/invoke.texi (HPPA Options): Update.
26644 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
26646         PR rtl-optimization/108117
26647         PR rtl-optimization/108132
26648         * sched-deps.cc (deps_analyze_insn): Do not schedule across
26649         calls before reload.
26651 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26653         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
26654         options for -mlibarch.
26655         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
26656         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
26658 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
26660         * attribs.cc (strict_flex_array_level_of): Move this function to ...
26661         * attribs.h (strict_flex_array_level_of): Remove the declaration.
26662         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
26663         replace the referece to strict_flex_array_level_of with
26664         DECL_NOT_FLEXARRAY.
26665         * tree.cc (component_ref_size): Likewise.
26667 2023-01-13  Richard Biener  <rguenther@suse.de>
26669         PR target/55522
26670         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
26671         crtfastmath.o for -shared.
26672         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
26674 2023-01-13  Richard Biener  <rguenther@suse.de>
26676         PR target/55522
26677         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
26678         crtfastmath.o for -shared.
26679         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
26680         Likewise.
26681         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
26682         Likewise.
26684 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
26686         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
26687         function.
26688         (TARGET_DWARF_FRAME_REG_MODE): Define.
26690 2023-01-13  Richard Biener  <rguenther@suse.de>
26692         PR target/107209
26693         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
26694         update EH info on the fly.
26696 2023-01-13  Richard Biener  <rguenther@suse.de>
26698         PR tree-optimization/108387
26699         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
26700         value before inserting expression into the tables.
26702 2023-01-12  Andrew Pinski  <apinski@marvell.com>
26703             Roger Sayle  <roger@nextmovesoftware.com>
26705         PR tree-optimization/92342
26706         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
26707         Use tcc_comparison and :c for the multiply.
26708         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
26710 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
26711             Richard Sandiford  <richard.sandiford@arm.com>
26713         PR target/105549
26714         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
26715         Check DECL_PACKED for bitfield.
26716         (aarch64_layout_arg): Warn when parameter passing ABI changes.
26717         (aarch64_function_arg_boundary): Do not warn here.
26718         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
26719         changes.
26721 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
26722             Richard Sandiford  <richard.sandiford@arm.com>
26724         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
26725         comment.
26726         (aarch64_layout_arg): Factorize warning conditions.
26727         (aarch64_function_arg_boundary): Fix typo.
26728         * function.cc (currently_expanding_function_start): New variable.
26729         (expand_function_start): Handle
26730         currently_expanding_function_start.
26731         * function.h (currently_expanding_function_start): Declare.
26733 2023-01-12  Richard Biener  <rguenther@suse.de>
26735         PR tree-optimization/99412
26736         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
26737         (swap_ops_for_binary_stmt): Remove reduction handling.
26738         (rewrite_expr_tree_parallel): Adjust.
26739         (reassociate_bb): Likewise.
26740         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
26742 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26744         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
26745         Rearrange the emitting codes.
26747 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26749         * config/xtensa/xtensa.md (*btrue):
26750         Correct value of the attribute "length" that depends on
26751         TARGET_DENSITY and operands, and add '?' character to the register
26752         constraint of the compared operand.
26754 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
26756         * hash-table.h (expand): Check elements and deleted counts.
26757         (verify): Likewise.
26759 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
26761         PR tree-optimization/71343
26762         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
26763         the value number of the expression X << C the same as the value
26764         number for the multiplication X * (1<<C).
26766 2023-01-11  David Faust  <david.faust@oracle.com>
26768         PR target/108293
26769         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
26770         floating point modes.
26772 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
26774         PR tree-optimization/108199
26775         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
26776         for bit-field references.
26778 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
26780         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
26781         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
26782         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
26783         OPTION_MASK_P10_FUSION.
26785 2023-01-11  Richard Biener  <rguenther@suse.de>
26787         PR tree-optimization/107767
26788         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
26789         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
26790         * tree-switch-conversion.cc (switch_conversion::collect):
26791         Count unique non-default targets accounting for later
26792         merging opportunities.
26794 2023-01-11  Martin Liska  <mliska@suse.cz>
26796         PR middle-end/107976
26797         * params.opt: Limit JT params.
26798         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
26800 2023-01-11  Richard Biener  <rguenther@suse.de>
26802         PR tree-optimization/108352
26803         * tree-ssa-threadbackward.cc
26804         (back_threader_profitability::profitable_path_p): Adjust
26805         heuristic that allows non-multi-way branch threads creating
26806         irreducible loops.
26807         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
26808         (--param fsm-scale-path-stmts): Adjust.
26809         * params.opt (--param=fsm-scale-path-blocks=): Remove.
26810         (-param=fsm-scale-path-stmts=): Adjust description.
26812 2023-01-11  Richard Biener  <rguenther@suse.de>
26814         PR tree-optimization/108353
26815         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
26816         Remove.
26817         (add_ssa_edge): Simplify.
26818         (add_control_edge): Likewise.
26819         (ssa_prop_init): Likewise.
26820         (ssa_prop_fini): Likewise.
26821         (ssa_propagation_engine::ssa_propagate): Likewise.
26823 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
26825         * config/s390/s390.md (*not<mode>): New pattern.
26827 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26829         * config/xtensa/xtensa.cc (xtensa_insn_cost):
26830         Let insn cost for size be obtained by applying COSTS_N_INSNS()
26831         to instruction length and then dividing by 3.
26833 2023-01-10  Richard Biener  <rguenther@suse.de>
26835         PR tree-optimization/106293
26836         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
26837         process degenerate PHI defs.
26839 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
26841         PR rtl-optimization/106421
26842         * cprop.cc (bypass_block): Check that DEST is local to this
26843         function (non-NULL) before calling find_edge.
26845 2023-01-10  Martin Jambor  <mjambor@suse.cz>
26847         PR ipa/108110
26848         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
26849         sort_replacements, lookup_first_base_replacement and
26850         m_sorted_replacements_p.
26851         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
26852         (ipa_param_body_adjustments::register_replacement): Set
26853         m_sorted_replacements_p to false.
26854         (compare_param_body_replacement): New function.
26855         (ipa_param_body_adjustments::sort_replacements): Likewise.
26856         (ipa_param_body_adjustments::common_initialization): Call
26857         sort_replacements.
26858         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
26859         m_sorted_replacements_p.
26860         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
26861         std::lower_bound.
26862         (ipa_param_body_adjustments::lookup_first_base_replacement): New
26863         function.
26864         (ipa_param_body_adjustments::modify_call_stmt): Use
26865         lookup_first_base_replacement.
26866         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
26867         adjustments->sort_replacements.
26869 2023-01-10  Richard Biener  <rguenther@suse.de>
26871         PR tree-optimization/108314
26872         * tree-vect-stmts.cc (vectorizable_condition): Do not
26873         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
26875 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26877         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
26879 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26881         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
26883 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26885         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
26886         defines for soft float abi.
26888 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26890         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
26891         (smart_bclri): Likewise.
26892         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
26893         (fast_bclri): Likewise.
26894         (fast_cmpnesi_i): Likewise.
26895         (*fast_cmpltsi_i): Likewise.
26896         (*fast_cmpgeusi_i): Likewise.
26898 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26900         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
26901         flag_fp_int_builtin_inexact || !flag_trapping_math.
26902         (<frm_pattern><mode>2): Likewise.
26904 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
26906         * config/s390/s390.cc (s390_register_info): Check call_used_regs
26907         instead of hard-coding the register numbers for call saved
26908         registers.
26909         (s390_optimize_register_info): Likewise.
26911 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
26913         * doc/gm2.texi (Overview): Fix @node markers.
26914         (Using): Likewise.  Remove subsections that were moved to Overview
26915         from the menu and move others around.
26917 2023-01-09  Richard Biener  <rguenther@suse.de>
26919         PR middle-end/108209
26920         * genmatch.cc (commutative_op): Fix return value for
26921         user-id with non-commutative first replacement.
26923 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
26925         PR target/107453
26926         * calls.cc (expand_call): For calls with
26927         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
26928         Formatting fix.
26930 2023-01-09  Richard Biener  <rguenther@suse.de>
26932         PR middle-end/69482
26933         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
26934         qualified accesses also force objects to memory.
26936 2023-01-09  Martin Liska  <mliska@suse.cz>
26938         PR lto/108330
26939         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
26940         NULL (deleleted value) to a hash_set.
26942 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26944         * config/xtensa/xtensa.md (*splice_bits):
26945         New insn_and_split pattern.
26947 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26949         * config/xtensa/xtensa.cc
26950         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
26951         New helper functions.
26952         (xtensa_set_return_address, xtensa_output_mi_thunk):
26953         Change to use the helper function.
26954         (xtensa_emit_adjust_stack_ptr): Ditto.
26955         And also change to try reusing the content of scratch register
26956         A9 if the register is not modified in the function body.
26958 2023-01-07  LIU Hao  <lh_mouse@126.com>
26960         PR middle-end/108300
26961         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
26962         before <windows.h>.
26963         * diagnostic-color.cc: Likewise.
26964         * plugin.cc: Likewise.
26965         * prefix.cc: Likewise.
26967 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
26969         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
26970         for handling real integer types.
26972 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
26974         Revert:
26975         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
26977         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
26978         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
26979         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
26980         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
26981         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
26982         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
26983         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
26984         (aarch64_simd_dupv2hf): New.
26985         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
26986         Add E_V2HFmode.
26987         * config/aarch64/iterators.md (VHSDF_P): New.
26988         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
26989         Vel, q, vp): Add V2HF.
26990         * config/arm/types.md (neon_fp_reduc_add_h): New.
26992 2023-01-06  Martin Liska  <mliska@suse.cz>
26994         PR middle-end/107966
26995         * doc/options.texi: Fix Var documentation in internal manual.
26997 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
26999         Revert:
27000         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27002         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27003         RTL expansion to allow condition (mask) to be shared/reused,
27004         by avoiding overwriting pseudos and adding REG_EQUAL notes.
27006 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
27008         * common.opt: Add -static-libgm2.
27009         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
27010         * doc/gm2.texi: Document static-libgm2.
27011         * gcc.cc (driver_handle_option): Allow static-libgm2.
27013 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
27015         * common/config/i386/i386-common.cc (processor_alias_table):
27016         Use CPU_ZNVER4 for znver4.
27017         * config/i386/i386.md: Add znver4.md.
27018         * config/i386/znver4.md: New.
27020 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27022         PR tree-optimization/108253
27023         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
27024         types.
27026 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27028         PR middle-end/108237
27029         * generic-match-head.cc: Include tree-pass.h.
27030         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
27031         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
27032         resp. PROP_gimple_lvec property set.
27034 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27036         PR sanitizer/108256
27037         * convert.cc (do_narrow): Punt for MULT_EXPR if original
27038         type doesn't wrap around and -fsanitize=signed-integer-overflow
27039         is on.
27040         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
27042 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
27044         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
27045         * common/config/i386/i386-common.cc: Add Emeraldrapids.
27047 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
27049         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
27050         for meteorlake.
27052 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
27054         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
27055         default constructor to initialize it.
27056         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
27057         for last and iterate to handle recursive calls.  Delete leftover
27058         candidates at the end.
27059         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
27060         on local clones.
27061         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
27062         gc_candidate bit when a clone is used.
27064 2023-01-03  Florian Weimer  <fweimer@redhat.com>
27066         Revert:
27067         2023-01-02  Florian Weimer  <fweimer@redhat.com>
27069         * dwarf2cfi.cc (init_return_column_size): Remove.
27070         (init_one_dwarf_reg_size): Adjust.
27071         (generate_dwarf_reg_sizes): New function.  Extracted
27072         from expand_builtin_init_dwarf_reg_sizes.
27073         (expand_builtin_init_dwarf_reg_sizes): Call
27074         generate_dwarf_reg_sizes.
27075         * target.def (init_dwarf_reg_sizes_extra): Adjust
27076         hook signature.
27077         * config/msp430/msp430.cc
27078         (msp430_init_dwarf_reg_sizes_extra): Adjust.
27079         * config/rs6000/rs6000.cc
27080         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27081         * doc/tm.texi: Update.
27083 2023-01-03  Florian Weimer  <fweimer@redhat.com>
27085         Revert:
27086         2023-01-02  Florian Weimer  <fweimer@redhat.com>
27088         * debug.h (dwarf_reg_sizes_constant): Declare.
27089         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27091 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
27093         PR tree-optimization/105043
27094         * doc/extend.texi (Object Size Checking): Split out into two
27095         subsections and mention _FORTIFY_SOURCE.
27097 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27099         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27100         RTL expansion to allow condition (mask) to be shared/reused,
27101         by avoiding overwriting pseudos and adding REG_EQUAL notes.
27103 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27105         PR target/108229
27106         * config/i386/i386-features.cc
27107         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
27108         the gain/cost of converting a MEM operand.
27110 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
27112         PR middle-end/108264
27113         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
27114         from source which doesn't have scalar integral mode first convert
27115         it to outer_mode.
27117 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
27119         PR rtl-optimization/108263
27120         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
27121         asm goto to EXIT.
27123 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
27125         PR target/87832
27126         * config/i386/lujiazui.md (lujiazui_div): New automaton.
27127         (lua_div): New unit.
27128         (lua_idiv_qi): Correct unit in the reservation.
27129         (lua_idiv_qi_load): Ditto.
27130         (lua_idiv_hi): Ditto.
27131         (lua_idiv_hi_load): Ditto.
27132         (lua_idiv_si): Ditto.
27133         (lua_idiv_si_load): Ditto.
27134         (lua_idiv_di): Ditto.
27135         (lua_idiv_di_load): Ditto.
27136         (lua_fdiv_SF): Ditto.
27137         (lua_fdiv_SF_load): Ditto.
27138         (lua_fdiv_DF): Ditto.
27139         (lua_fdiv_DF_load): Ditto.
27140         (lua_fdiv_XF): Ditto.
27141         (lua_fdiv_XF_load): Ditto.
27142         (lua_ssediv_SF): Ditto.
27143         (lua_ssediv_load_SF): Ditto.
27144         (lua_ssediv_V4SF): Ditto.
27145         (lua_ssediv_load_V4SF): Ditto.
27146         (lua_ssediv_V8SF): Ditto.
27147         (lua_ssediv_load_V8SF): Ditto.
27148         (lua_ssediv_SD): Ditto.
27149         (lua_ssediv_load_SD): Ditto.
27150         (lua_ssediv_V2DF): Ditto.
27151         (lua_ssediv_load_V2DF): Ditto.
27152         (lua_ssediv_V4DF): Ditto.
27153         (lua_ssediv_load_V4DF): Ditto.
27155 2023-01-02  Florian Weimer  <fweimer@redhat.com>
27157         * debug.h (dwarf_reg_sizes_constant): Declare.
27158         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27160 2023-01-02  Florian Weimer  <fweimer@redhat.com>
27162         * dwarf2cfi.cc (init_return_column_size): Remove.
27163         (init_one_dwarf_reg_size): Adjust.
27164         (generate_dwarf_reg_sizes): New function.  Extracted
27165         from expand_builtin_init_dwarf_reg_sizes.
27166         (expand_builtin_init_dwarf_reg_sizes): Call
27167         generate_dwarf_reg_sizes.
27168         * target.def (init_dwarf_reg_sizes_extra): Adjust
27169         hook signature.
27170         * config/msp430/msp430.cc
27171         (msp430_init_dwarf_reg_sizes_extra): Adjust.
27172         * config/rs6000/rs6000.cc
27173         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27174         * doc/tm.texi: Update.
27176 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
27178         * gcc.cc (process_command): Update copyright notice dates.
27179         * gcov-dump.cc (print_version): Ditto.
27180         * gcov.cc (print_version): Ditto.
27181         * gcov-tool.cc (print_version): Ditto.
27182         * gengtype.cc (create_file): Ditto.
27183         * doc/cpp.texi: Bump @copying's copyright year.
27184         * doc/cppinternals.texi: Ditto.
27185         * doc/gcc.texi: Ditto.
27186         * doc/gccint.texi: Ditto.
27187         * doc/gcov.texi: Ditto.
27188         * doc/install.texi: Ditto.
27189         * doc/invoke.texi: Ditto.
27191 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
27192             Uroš Bizjak  <ubizjak@gmail.com>
27194         * config/i386/i386.md (extendditi2): New define_insn.
27195         (define_split): Use DWIH mode iterator to treat new extendditi2
27196         identically to existing extendsidi2_1.
27197         (define_peephole2): Likewise.
27198         (define_peephole2): Likewise.
27199         (define_Split): Likewise.
27202 Copyright (C) 2023 Free Software Foundation, Inc.
27204 Copying and distribution of this file, with or without modification,
27205 are permitted in any medium without royalty provided the copyright
27206 notice and this notice are preserved.