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.
17 (vcmlaq_rot180_m): Delete.
18 (vcmlaq_rot270_m): Delete.
19 (vcmlaq_rot90_m): Delete.
21 (vcmlaq_rot180_f16): Delete.
22 (vcmlaq_rot270_f16): Delete.
23 (vcmlaq_rot90_f16): 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,
69 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_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
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.
91 (vcmulq_rot180_m): Delete.
92 (vcmulq_rot270_m): Delete.
93 (vcmulq_rot90_m): 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,
169 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_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,
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,
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,
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
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
379 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
381 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
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>
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
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>
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
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):
464 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
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>
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>
490 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
491 deallocate alloca-only frame.
493 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
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>
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.
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
535 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
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.
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.
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
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>):
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
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"
762 (noce_emit_store_flag): Change return type from int to bool.
763 Change "reversep" function arg to bool. Change "cond_complex"
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"
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.
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_*
803 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
806 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
808 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
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>
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
833 * gensupport.cc (find_optab): Shift optab by 20 and mode by
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):
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>
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
929 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
931 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
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):
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
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
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"
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>
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>
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
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"
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
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>
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
1230 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
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
1248 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
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
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
1274 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1276 * value-range.cc (irange::intersect): Leave normalization to
1279 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1281 * data-streamer-in.cc (streamer_read_value_range): Adjust for
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):
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
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
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>
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
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'.
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
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
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>
1496 * config/i386/i386.md (movdf_internal): Disparage slightly for
1497 2 alternatives (r,v) and (v,r) by adding constraint modifier
1500 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
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
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
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.
1579 (find_conditional_protection): Ditto.
1580 (is_conditionally_protected): 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
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
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>
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>
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>
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
1681 2023-07-05 Jan Beulich <jbeulich@suse.com>
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>
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):
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.
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):
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
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
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):
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>
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>
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>
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
2171 * config/mips/mips.h(__mips_mips16e2): Defined a new
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):
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>
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
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
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
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
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):
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
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>
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>
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
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
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
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
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
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>
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
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>
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>
2582 * config/i386/i386-features.cc (compute_convert_gain): Provide
2583 more accurate gains for conversion of scalar comparisons to
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
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
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>
2609 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
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
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):
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
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
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):
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
2649 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
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>):
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
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
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
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):
2699 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
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
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
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
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.
2746 (ipa_get_value_range): Same.
2747 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
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
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):
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
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
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>
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
2810 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2812 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
2815 2023-06-26 Andrew Pinski <apinski@marvell.com>
2817 * doc/extend.texi (access attribute): Add
2819 (interrupt/interrupt_handler attribute):
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):
2832 (aarch64_rnd_imm_p): ... This.
2833 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
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):
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
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
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
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
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
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
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
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
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
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>
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
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):
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
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>
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
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
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
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>
3281 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
3282 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
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>):
3412 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>):
3446 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>
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>):
3483 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>):
3546 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>
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
3586 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
3587 2-alternative form. Adjust "mode" attribute. Add "enabled"
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>
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>
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>
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
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"
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"
3648 2023-06-20 Martin Jambor <mjambor@suse.cz>
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
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
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>
3744 * dwarf2out.cc (process_scope_var): Continue processing
3745 the decl after setting a parent in case the existing DIE
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
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.
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
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
3844 2023-06-19 Pan Li <pan2.li@intel.com>
3847 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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>
3867 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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>
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
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.
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
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
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<>
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.
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
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>
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>
4110 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
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>
4123 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
4124 UNSPEC_US_TRUNCATE instead of original us_truncate for
4126 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
4128 (mmx_packsswb): .. this and ..
4129 (mmx_packuswb): .. this.
4130 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
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.
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):
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>
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>
4316 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
4318 2023-06-16 Jakub Jelinek <jakub@redhat.com>
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
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>
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):
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):
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>):
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...
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):
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
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
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
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
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
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>
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
4581 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
4583 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
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>
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
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>):
4615 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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>
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
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
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>
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>
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
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
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
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
4777 (reload_tp_hard): Likewise.
4778 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
4780 * doc/invoke.texi (Arm Options, mtp): Document new values.
4782 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
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,
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
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
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
4920 * gimple-range-op.cc (get_code): Rename from get_code_and_type
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.
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
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>
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>
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>
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>
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]:
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
5228 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
5229 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
5563 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
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>
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
5619 2023-06-09 liuhongt <hongtao.liu@intel.com>
5622 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
5623 view_convert_expr mask to signed type when folding pblendvb
5626 2023-06-09 liuhongt <hongtao.liu@intel.com>
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
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.
5674 (cfn_sincos): Ditto.
5675 * range-op-float.cc (fold_range): Change class to range_operator.
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>
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
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>
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>
5827 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
5829 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
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>
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
5846 2023-06-07 Alex Coplan <alex.coplan@arm.com>
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.
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>):
5867 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
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):
5879 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5881 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
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
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
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
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>
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
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
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
6042 (gen_ld_cmpi_p10): ... this.
6044 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
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):
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.
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>
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):
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
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
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
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>
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
6315 * config/mips/mips.cc (speculation_barrier_libfunc): New static
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
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>
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
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>
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>
6412 * tree-eh.cc (lower_resx): Pass the exception pointer to the
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,
6437 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
6439 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
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>
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>
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>
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>
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"
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>
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
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>
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>
6562 * doc/install.texi: Document (optional) Perl usage for parallel
6565 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
6568 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
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
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>
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
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>
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
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):
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):
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.
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>
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>):
6742 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
6873 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
6876 2023-05-31 Richard Biener <rguenther@suse.de>
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):
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):
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
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>
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
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>
7016 * simplify-rtx.cc (simplify_const_relational_operation): Return
7017 early if we have a MODE_CC comparison that isn't a COMPARE against
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.
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
7059 (<u>avg<mode>3_ceil): Rename to...
7060 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
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>
7070 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
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):
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.
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
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.
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.
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
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):
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>
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
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
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
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
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
7251 (get_repeating_sequence_dup_machine_mode): New function to get the dup
7253 (expand_vector_init_merge_repeating_sequence): New function to perform
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
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>
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.
7315 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
7317 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
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
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
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
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
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):
7391 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
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>
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
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>
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>
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
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
7472 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
7475 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
7509 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
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>
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
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>
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
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
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>
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
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>
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>
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
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
7791 (temporal_cache::current_p): Check always_current method.
7792 (temporal_cache::set_always_current): Add param and set value
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_
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>
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
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>
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
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>
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>
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.
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>
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
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
8042 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
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>
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
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
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>
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
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
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*-*-*
8242 2023-05-20 Pan Li <pan2.li@intel.com>
8244 * mode-switching.cc (entity_map): Initialize the array to zero.
8247 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
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
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
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
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>
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>
8318 * opts.h (handle_deferred_dump_options): Declare.
8319 * opts-global.cc (handle_common_deferred_options): Do not handle
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>
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.
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
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.
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):
8612 * config/i386/i386.cc (ix86_multiplication_cost): Handle
8613 V4QImode and V8QImode.
8614 * config/i386/mmx.md (mulv8qi3): New expander.
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>
8625 * config.gcc: Use = operator instead of ==.
8627 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
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
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
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
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
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,
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
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>
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.
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
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>
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
8967 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
8969 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
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
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
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>
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
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
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.
9042 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9044 * config/s390/s390-protos.h (s390_expand_cpymem): Change
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
9050 * config/s390/s390.md: Change expander into a version which
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
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.
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.
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
9093 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
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>
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>
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
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>
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
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.
9216 (ix86_expand_vecop_qihi): Initialize interleave functions
9217 for MULT code only. Fix comments.
9219 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
9222 * config/i386/mmx.md (mulv2si3): Remove expander.
9223 (mulv2si3): Rename insn pattern from *mulv2si.
9225 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
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>
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
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))):
9254 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
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.
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.
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
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,
9407 * config/arm/arm_mve.h (vfmaq): 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,
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
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.
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.
9485 (vmvnq_s16): Remove.
9486 (vmvnq_s32): Remove.
9487 (vmvnq_n_s16): Remove.
9488 (vmvnq_n_s32): 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.
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,
9733 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
9734 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_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):
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,
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
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
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
9854 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
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
9863 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
9864 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
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.
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.
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,
10038 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_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):
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
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):
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
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
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,
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
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
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>
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
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
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
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):
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.
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
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
11022 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11024 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): 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.
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):
11104 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11106 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11108 * config/arm/arm_mve.h (vrev16q): 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.
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.
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
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
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
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>
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
11707 2023-05-10 Jakub Jelinek <jakub@redhat.com>
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>
11723 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
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>
11732 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
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>
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
11769 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
11788 * config/arm/arm_mve.h (vminaq): 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):
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>):
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
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>):
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.
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>):
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)
12024 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12026 * config/arm/arm_mve.h (vminvq): 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.
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):
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
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.
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.
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>):
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.
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,
12365 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_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.
12398 (vrndaq_m): Remove.
12399 (vrndmq_m): Remove.
12400 (vrndnq_m): Remove.
12401 (vrndpq_m): Remove.
12403 (vrndxq_m): 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.
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.
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.
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.
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.
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.
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 ...
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.
12749 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
12751 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
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):
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
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
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
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
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
12874 Don't update the stat on removal statements.
12876 2023-05-07 Andrew Pinski <apinski@marvell.com>
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>
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
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
12976 2023-05-06 Xi Ruoyao <xry111@xry111.site>
12979 * Makefile.in (s-macro_list): Pass -nostdinc to
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>
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.
13081 (vrshrq_m): Remove.
13083 (vrshrq_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
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.
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):
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,
13278 * config/arm/arm_mve.h (vshrnbq): 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.
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>):
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):
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.
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.
13573 (vshlq_m_r): Remove.
13575 (vshlq_m_n): 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.
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.
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.
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
13902 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
13903 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
13905 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
13906 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
13908 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13909 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
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
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.
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
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>
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>
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>
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>
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>
14115 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14117 (dt_simplify::gen_1): Use it.
14119 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14122 * genmatch.cc (output_line_directive): Only emit commented directive
14125 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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>
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,
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>
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
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):
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):
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>
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>
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):
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):
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>
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
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
14406 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
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>
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
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>
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)
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.
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.
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.
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.
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.
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
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,
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.
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.
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.
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.
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
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):
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.
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.
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.
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):
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
15539 * config/arm/mve.md
15540 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
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
15548 (mve_<mve_addsubmul>q<mode>): ... this.
15549 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
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>):
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
15584 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
15585 * config/arm/arm-mve-builtins-shapes.h (inherent): New
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
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
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
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
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.
15879 (all_unsigned): New.
15881 (integer_8_16): New.
15882 (integer_16_32): New.
15884 (signed_16_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.
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
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):
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>
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):
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):
16094 (optimize_spaceship): Take a gcond * argument, avoid
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):
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):
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.
16118 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16119 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
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.
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
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
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.
16180 (floattype): Ditto.
16182 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
16183 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
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):
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
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):
16470 (register_tuple_type): New function
16471 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
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):
16676 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
16677 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
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
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>
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>
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
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>
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
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>
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
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>
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
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
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
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.
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
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.
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.
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.
17070 (range_uint128): New.
17071 (range_uchar): 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.
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
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
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
17140 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17142 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
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
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
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
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>
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
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.
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)"
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
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>
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>
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
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
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
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
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
17616 2023-04-27 Richard Biener <rguenther@suse.de>
17619 * ipa-param-manipulation.h
17620 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
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
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
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>
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.
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.
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
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
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
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
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.
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>
17995 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
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):
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):
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.
18065 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
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>
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
18100 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
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
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>
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):
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>
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>
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
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
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
18258 2023-04-24 Andrew Pinski <apinski@marvell.com>
18260 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
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.
18307 (Options specification, --with-gnu-as): as and gas always differ
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>
18326 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
18328 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
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
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
18381 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
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):
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):
18409 (back_threader_profitability::possibly_profitable_path_p):
18411 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
18413 * tree-switch-conversion.cc (pass_convert_switch::execute):
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>
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
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
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>
18540 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
18541 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
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>
18555 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
18556 (add_vec_concat_subst_be): 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
18578 2023-04-21 Jan Hubicka <jh@suse.cz>
18580 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
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
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
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
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 *,
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
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>
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>
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>
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
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>
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.
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>
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,
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>
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
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
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):
18861 * config/i386/i386.md (aes): New isa attribute.
18862 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
18863 (aesenclast): 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
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
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
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,
19035 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19037 * config/i386/sse.md: Modify insn vperm{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
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.
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>
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,
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):
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
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>
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
19297 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19299 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
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>
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>):
19324 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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>
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.
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
19421 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
19423 * doc/extend.texi (Target Builtins): Add RISC-V Vector
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):
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
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
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
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
19592 * config/loongarch/predicates.md (const_dual_imm12_operand): New
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
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
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
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
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
19647 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
19649 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
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>
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
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
19698 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
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>
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>
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
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>
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>
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
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>
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>
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
19826 2023-04-12 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
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>
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
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
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
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
19982 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
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>
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>
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
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
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
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>
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>
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>
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>
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
20166 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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>
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>):
20220 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
20221 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
20223 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
20225 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
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>):
20234 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
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>):
20252 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20254 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
20255 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
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>
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):
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>
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>
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>
20356 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
20357 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
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>
20393 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
20394 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
20396 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
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
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
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>
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
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>
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>
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
20479 * config/i386/sym-mingw32.cc: prevent name mangling of
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>
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.
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
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>
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>
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>
20555 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
20557 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
20559 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
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>
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>
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>
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
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>
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
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>
20675 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
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):
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):
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):
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.
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
20783 2023-03-23 Pan Li <pan2.li@intel.com>
20784 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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>
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>
20817 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
20818 __riscv_vlenb support.
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.
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.
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):
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
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
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
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
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
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
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>
21054 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21055 (init_float128_ieee): Delete code to switch complex multiply and divide
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>
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>:
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>
21081 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
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
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>
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>
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
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
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
21149 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
21150 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
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
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
21194 (pass_waccess::check_pointer_uses): Process all PHIs.
21196 2023-03-15 David Malcolm <dmalcolm@redhat.com>
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
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"
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
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
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>
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
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):
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
21284 * config/riscv/riscv.cc (riscv_split_doubleword_move):
21285 Add split code for XTheadFmv.
21286 (riscv_secondary_memory_needed): XTheadFmv does not need
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):
21315 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
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
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>
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>
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>
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
21418 2023-03-14 Martin Jambor <mjambor@suse.cz>
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'
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>
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>
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>
21559 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
21562 2023-03-12 Tamar Christina <tamar.christina@arm.com>
21563 Andrew MacLeod <amacleod@redhat.com>
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):
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>
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
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
21613 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
21615 * doc/extend.texi (Named Address Spaces): Drop a redundant link
21618 2023-03-11 Jeff Law <jlaw@ventanamicro>
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
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>
21635 * optabs.cc (expand_fix): For conversions from BFmode to integral,
21636 use shifts to convert it to SFmode first and then convert SFmode
21639 2023-03-10 Andrew Pinski <apinski@marvell.com>
21641 * config/aarch64/aarch64.md: Add a new define_split
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>
21659 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
21661 * config/i386/t-cygwin-w64: Remove.
21663 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
21675 * tree.cc (tree_code_type, tree_code_length): Remove.
21677 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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.
21724 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21725 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
21727 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
21728 (struct fault_load_def): 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>
21831 * doc/extend.texi (Type Traits):: Document __is_deducible.
21833 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
21836 * config.host: add object for x86_64-*-mingw*.
21837 * config/i386/sym-mingw32.cc: dummy file to attach
21839 * config/i386/utf8-mingw32.rc: windres resource file.
21840 * config/i386/winnt-utf8.manifest: XML manifest to
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>
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>
21882 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
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
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>
21914 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
21916 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
21917 (X86_TUNE_USE_SCATTER): Likewise.
21919 2023-03-06 Xi Ruoyao <xry111@xry111.site>
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
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.
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
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.
22008 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
22010 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
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.
22028 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22029 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22045 (vundefined): Add new intrinsic.
22046 (vreinterpret): Ditto.
22047 (vlmul_ext): Ditto.
22048 (vlmul_trunc): 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.
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.
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.
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.
22211 (unsigned_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.
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.
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.
22373 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22374 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
22378 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): 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
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
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>
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
22561 2023-03-03 Richard Biener <rguenther@suse.de>
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
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
22581 2023-03-03 Richard Biener <rguenther@suse.de>
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>
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
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
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
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>
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>
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
22696 2023-03-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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>
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
22775 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22777 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
22779 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
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>
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>
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
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
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>
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)
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>
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>
23014 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23017 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23019 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23020 (sibcall_value, sibcall_value_internal): Add 'use' expression
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.
23055 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23056 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23065 (vwredsumu): Ditto.
23066 (vfredusum): Ditto.
23067 (vfredosum): Ditto.
23070 (vfwredosum): Ditto.
23071 (vfwredusum): Ditto.
23072 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): 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.
23179 * config/riscv/riscv-vector-builtins-bases.h:
23180 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
23224 (vfcvt_rtz_x): Ditto.
23225 (vfcvt_rtz_xu): Ditto.
23228 (vfwcvt_xu): Ditto.
23229 (vfwcvt_rtz_x): Ditto.
23230 (vfwcvt_rtz_xu): Ditto.
23233 (vfncvt_xu): Ditto.
23234 (vfncvt_rtz_x): Ditto.
23235 (vfncvt_rtz_xu): 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.
23284 (xu_v): 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.
23295 (fixuns_trunc): 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>
23374 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
23376 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23379 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23381 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23382 (sibcall_value, sibcall_value_internal): Add 'use' expression
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>
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>
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
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
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
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>
23469 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
23470 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
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
23485 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
23486 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
23489 2023-02-18 Andrew Pinski <apinski@marvell.com>
23491 * match.pd: Remove #if GIMPLE around the
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
23504 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
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>
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
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.
23554 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23555 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
23574 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23575 (struct mask_alu_def): 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.
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.
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.
23694 (get_avl_type): Ditto.
23695 (calculate_ratio): Ditto.
23696 (enum vlmul_type): 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.
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.
23759 * lra-int.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.
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
23833 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
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.
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
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
23912 (class imac): New class.
23913 (enum widen_ternop_type): New enum.
23914 (class iwmac): New class.
23916 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23917 * config/riscv/riscv-vector-builtins-functions.def (vmacc): 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.
23963 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23964 * config/riscv/riscv-vector-builtins-functions.def (vmseq): 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>
24008 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24009 creation of non-scalar replacements even if IPA-CP knows their
24012 2023-02-15 Jakub Jelinek <jakub@redhat.com>
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>
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
24043 2023-02-15 Richard Biener <rguenther@suse.de>
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>
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
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>
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
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>
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
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.
24225 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24226 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
24235 * config/riscv/vector-iterators.md (su): Add instruction.
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.
24254 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24255 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
24262 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
24263 (struct move_def): 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.
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.
24292 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
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.
24325 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24326 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
24328 * config/riscv/riscv-vector-builtins-shapes.cc
24329 (struct no_mask_policy_def): 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
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
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"
24379 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
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
24387 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
24389 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
24390 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
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.
24402 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24403 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
24407 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
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.
24472 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
24473 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
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
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
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.
24540 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
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.
24555 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24556 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
24577 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
24578 (struct alu_def): 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>
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.
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.
24646 (neg_simm5_p): Ditto.
24647 (has_vi_variant_p): Ditto.
24648 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
24650 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24651 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
24654 (vminu): Remove signed cases.
24656 (vdiv): Remove unsigned cases.
24658 (vdivu): Remove signed cases.
24662 (vrsub): New class.
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
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>
24689 2023-02-09 Martin Liska <mliska@suse.cz>
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
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
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>
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
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>
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
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>
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
24781 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
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
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>
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
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
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
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
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
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>
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
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.
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
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>
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.
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.
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
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>
25038 PR rtl-optimization/108463
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>
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
25084 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
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
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
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.
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
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
25135 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
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>
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>
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
25159 (arm_init_crypto_builtins): Likewise.
25161 2023-02-02 Jakub Jelinek <jakub@redhat.com>
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):
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
25214 (all_extensions): Set new field native_detect.
25215 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
25218 2023-02-01 Martin Liska <mliska@suse.cz>
25220 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
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>
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>
25239 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
25242 2023-02-01 Jakub Jelinek <jakub@redhat.com>
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
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.
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.
25329 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
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>
25362 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
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>
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>
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.
25434 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
25435 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
25451 * config/riscv/riscv-vector-builtins-shapes.cc
25452 (struct indexed_loadstore_def): New class.
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
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
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
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>
25529 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
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
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
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):
25579 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25580 * config/riscv/riscv-vector-builtins-functions.def (vlse): 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>
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>
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>
25624 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
25627 2023-01-27 Richard Biener <rguenther@suse.de>
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.
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.
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>
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>
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
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>
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
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
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
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):
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>
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>):
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
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
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
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
26063 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
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>
26090 * optc-save-gen.awk: Fix copy-and-paste error.
26092 2023-01-24 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
26122 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
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
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
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'
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
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):
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):
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
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
26298 * config/aarch64/aarch64.opt: Include aarch-common.h to import
26299 type move. Fix up name changes from factoring out common code and
26301 * config/arm/aarch-common-protos.h: Export factored out routines to both
26303 * config/arm/aarch-common.cc: Include newly factored out types.
26304 Move all mbranch-protection code and data structures from
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
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}
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>
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>
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
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
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>
26402 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
26403 within debug insns.
26405 2023-01-18 Martin Jambor <mjambor@suse.cz>
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>
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>
26423 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
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
26449 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
26450 Andrew Pinski <apinski@marvell.com>
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>
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>
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
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>
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>
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>
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>
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
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>
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>
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):
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>
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>
26618 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
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
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
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>
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>
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):
26681 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
26684 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
26686 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
26688 (TARGET_DWARF_FRAME_REG_MODE): Define.
26690 2023-01-13 Richard Biener <rguenther@suse.de>
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>
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
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
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>
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
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):
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>
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
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
26862 (ipa_param_body_adjustments::lookup_first_base_replacement): New
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
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>
26926 * calls.cc (expand_call): For calls with
26927 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
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>
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>
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):
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>
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
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
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
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
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>
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
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>
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>
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
27117 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27119 PR rtl-optimization/108263
27120 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
27123 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
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
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.