]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2
3 * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
4 * config/riscv/vector-iterators.md: Ditto.
5 * config/riscv/vector.md: Ditto.
6
7 2023-08-07 Jonathan Wakely <jwakely@redhat.com>
8
9 * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
10
11 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
12
13 * configure: Regenerate.
14
15 2023-08-07 John Ericson <git@JohnEricson.me>
16
17 * configure: Regenerate.
18
19 2023-08-07 Alan Modra <amodra@gmail.com>
20
21 * configure: Regenerate.
22
23 2023-08-07 Alexander von Gluck IV <kallisti5@unixzen.com>
24
25 * configure: Regenerate.
26
27 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
28
29 * configure: Regenerate.
30
31 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
32
33 * configure: Regenerate.
34
35 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
36
37 * configure: Regenerate.
38
39 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
40
41 * configure: Regenerate.
42
43 2023-08-07 Jeff Law <jlaw@ventanamicro.com>
44
45 * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
46 VOIDmode operands to conditional before canonicalization.
47
48 2023-08-07 Manolis Tsamis <manolis.tsamis@vrull.eu>
49
50 * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
51 (find_oldest_value_reg): Inline stack_pointer_rtx check.
52 (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
53
54 2023-08-07 Martin Jambor <mjambor@suse.cz>
55
56 PR ipa/110378
57 * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
58 members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
59 * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
60 (ptr_parm_has_nonarg_uses): Likewise.
61 * ipa-param-manipulation.cc
62 (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
63 (ipa_param_body_adjustments::mark_dead_statements): Move initial
64 checks to get_ddef_if_exists_and_is_used.
65 (ipa_param_body_adjustments::mark_clobbers_dead): New.
66 (ipa_param_body_adjustments::common_initialization): Call
67 mark_clobbers_dead when splitting.
68
69 2023-08-07 Raphael Zinsly <rzinsly@ventanamicro.com>
70
71 * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
72 as an argument and pass it to riscv_emit_int_order_test.
73 (riscv_expand_conditional_move): Handle cases where the condition
74 is not EQ/NE or the second argument to the conditional is not
75 (const_int 0).
76 * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
77 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
78
79 2023-08-07 Andrew Pinski <apinski@marvell.com>
80
81 PR tree-optimization/109959
82 * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
83 New patterns.
84
85 2023-08-07 Richard Biener <rguenther@suse.de>
86
87 * tree-ssa-sink.cc (pass_sink_code::execute): Do not
88 calculate post-dominators. Calculate RPO on the inverted
89 graph and process blocks in that order.
90
91 2023-08-07 liuhongt <hongtao.liu@intel.com>
92
93 PR target/110926
94 * config/i386/i386-protos.h
95 (vpternlog_redundant_operand_mask): Adjust parameter type.
96 * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
97 INTVAL instead of XINT, also adjust parameter type from rtx*
98 to rtx since the function only needs operands[4] in vpternlog
99 pattern.
100 (substitute_vpternlog_operands): Pass operands[4] instead of
101 operands to vpternlog_redundant_operand_mask.
102 * config/i386/sse.md: Ditto.
103
104 2023-08-07 Richard Biener <rguenther@suse.de>
105
106 * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
107 around dumping code.
108
109 2023-08-07 liuhongt <hongtao.liu@intel.com>
110
111 PR target/110762
112 * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
113 to define_expand and break into ..
114 (<insn>v4hf3): .. this.
115 (divv4hf3): .. this.
116 (<insn>v2hf3): .. this.
117 (divv2hf3): .. this.
118 (movd_v2hf_to_sse): New define_expand.
119 (movq_<mode>_to_sse): Extend to V4HFmode.
120 (mmxdoublevecmode): Ditto.
121 (V2FI_V4HF): New mode iterator.
122 * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
123 by using mode iterator V4SF_V8HF, renamed to ..
124 (*vec_concat<mode>): .. this.
125 (*vec_concatv4sf_0): Extend to handle V8HF by using mode
126 iterator V4SF_V8HF, renamed to ..
127 (*vec_concat<mode>_0): .. this.
128 (*vec_concatv8hf_movss): New define_insn.
129 (V4SF_V8HF): New mode iterator.
130
131 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
132
133 * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
134
135 2023-08-07 Jan Beulich <jbeulich@suse.com>
136
137 * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
138 (*mmx_pinsrb): Likewise.
139 (*mmx_pextrb): Likewise.
140 (*mmx_pextrb_zext): Likewise.
141 (mmx_pshufbv8qi3): Likewise.
142 (mmx_pshufbv4qi3): Likewise.
143 (mmx_pswapdv2si2): Likewise.
144 (*pinsrb): Likewise.
145 (*pextrb): Likewise.
146 (*pextrb_zext): Likewise.
147 * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
148 (*sse2_eq<mode>3): Likewise.
149 (*sse2_gt<mode>3): Likewise.
150 (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
151 (*vec_extract<mode>): Likewise.
152 (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
153 (*vec_extractv16qi_zext): Likewise.
154 (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
155 (ssse3_pmaddubsw128): Likewise.
156 (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
157 (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
158 (<ssse3_avx2>_psign<mode>3): Likewise.
159 (<ssse3_avx2>_palignr<mode>): Likewise.
160 (*abs<mode>2): Likewise.
161 (sse4_2_pcmpestr): Likewise.
162 (sse4_2_pcmpestri): Likewise.
163 (sse4_2_pcmpestrm): Likewise.
164 (sse4_2_pcmpestr_cconly): Likewise.
165 (sse4_2_pcmpistr): Likewise.
166 (sse4_2_pcmpistri): Likewise.
167 (sse4_2_pcmpistrm): Likewise.
168 (sse4_2_pcmpistr_cconly): Likewise.
169 (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
170 (vgf2p8affineqb_<mode><mask_name>): Likewise.
171 (vgf2p8mulb_<mode><mask_name>): Likewise.
172 (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
173 "prefix_extra".
174 (*<code>v16qi3 [umaxmin]): Likewise.
175
176 2023-08-07 Jan Beulich <jbeulich@suse.com>
177
178 * config/i386/i386.md (sse4_1_round<mode>2): Make
179 "length_immediate" uniformly 1.
180 * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
181 (mmx_pblendvb_<mode>): Likewise.
182
183 2023-08-07 Jan Beulich <jbeulich@suse.com>
184
185 * config/i386/sse.md
186 (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
187 "prefix" attribute.
188 (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
189 Likewise.
190
191 2023-08-07 Jan Beulich <jbeulich@suse.com>
192
193 * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
194 "prefix_extra", and "mode" attributes.
195 (xop_phadd<u>bd): Likewise.
196 (xop_phadd<u>bq): Likewise.
197 (xop_phadd<u>wd): Likewise.
198 (xop_phadd<u>wq): Likewise.
199 (xop_phadd<u>dq): Likewise.
200 (xop_phsubbw): Likewise.
201 (xop_phsubwd): Likewise.
202 (xop_phsubdq): Likewise.
203 (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
204 (xop_rotr<mode>3): Likewise.
205 (xop_frcz<mode>2): Likewise.
206 (*xop_vmfrcz<mode>2): Likewise.
207 (xop_vrotl<mode>3): Add "prefix" attribute. Change
208 "prefix_extra" to 1.
209 (xop_sha<mode>3): Likewise.
210 (xop_shl<mode>3): Likewise.
211
212 2023-08-07 Jan Beulich <jbeulich@suse.com>
213
214 * config/i386/sse.md
215 (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
216 "prefix_extra".
217 (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
218 (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
219 (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
220 (*avx512f_vextract<shuffletype>32x4_1): Likewise.
221 (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
222 (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
223 (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
224 (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
225 (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
226 (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
227 (vec_extract_lo_v64qi): Likewise.
228 (vec_extract_hi_v64qi): Likewise.
229 (*vec_widen_umult_even_v16si<mask_name>): Likewise.
230 (*vec_widen_smult_even_v16si<mask_name>): Likewise.
231 (*avx512f_<code><mode>3<mask_name>): Likewise.
232 (*vec_extractv4ti): Likewise.
233 (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
234 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
235 Add "length_immediate".
236
237 2023-08-07 Jan Beulich <jbeulich@suse.com>
238
239 * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
240 "prefix_extra".
241 (@rdseed<mode>): Likewise.
242 * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
243 Adjust "prefix_extra".
244 * config/i386/sse.md (@vec_set<mode>_0): Likewise.
245 (*sse4_1_<code><mode>3<mask_name>): Likewise.
246 (*avx2_eq<mode>3): Likewise.
247 (avx2_gt<mode>3): Likewise.
248 (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
249 (*vec_extract<mode>): Likewise.
250 (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
251
252 2023-08-07 Jan Beulich <jbeulich@suse.com>
253
254 * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
255 "prefix_rep". Drop "prefix_extra".
256 (wr<fsgs>base<mode>): Likewise.
257 (ptwrite<mode>): Likewise.
258
259 2023-08-07 Jan Beulich <jbeulich@suse.com>
260
261 * config/i386/i386.md (isa): Move up.
262 (length_immediate): Handle "fma4".
263 (prefix): Handle "ssemuladd".
264 * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
265 (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
266 Likewise.
267 (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
268 (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
269 (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
270 Likewise.
271 (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
272 (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
273 (*fma_fnmadd_<mode>): Likewise.
274 (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
275 Likewise.
276 (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
277 (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
278 (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
279 Likewise.
280 (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
281 (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
282 (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
283 Likewise.
284 (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
285 (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
286 (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
287 Likewise.
288 (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
289 (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
290 (*fmai_fmadd_<mode>): Likewise.
291 (*fmai_fmsub_<mode>): Likewise.
292 (*fmai_fnmadd_<mode><round_name>): Likewise.
293 (*fmai_fnmsub_<mode><round_name>): Likewise.
294 (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
295 (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
296 (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
297 (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
298 (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
299 (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
300 (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
301 (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
302 (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
303 (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
304 (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
305 (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
306 (*fma4i_vmfmadd_<mode>): Likewise.
307 (*fma4i_vmfmsub_<mode>): Likewise.
308 (*fma4i_vmfnmadd_<mode>): Likewise.
309 (*fma4i_vmfnmsub_<mode>): Likewise.
310 (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
311 (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
312 (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
313 Likewise.
314 (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
315 (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
316 (xop_p<macs>dql): Likewise.
317 (xop_p<macs>dqh): Likewise.
318 (xop_p<macs>wd): Likewise.
319 (xop_p<madcs>wd): Likewise.
320 (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
321
322 2023-08-07 Jan Beulich <jbeulich@suse.com>
323
324 * config/i386/i386.md (length_immediate): Handle "sse4arg".
325 (prefix): Likewise.
326 (*xop_pcmov_<mode>): Add "mode" attribute.
327 * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
328 "prefix_rep", "prefix_extra", and "length_immediate" attributes.
329 (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
330 (*xop_pcmov_<mode>): Add "mode" attribute.
331 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
332 attribute.
333 (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
334 "prefix_extra", and "length_immediate" attributes.
335 (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
336 (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
337 and "length_immediate" attributes. Switch "type" to "sse4arg".
338 (xop_pcom_tf<mode>3): Likewise.
339 (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
340
341 2023-08-07 Jan Beulich <jbeulich@suse.com>
342
343 * config/i386/i386.md (prefix_extra): Correct comment. Fold
344 cases yielding 2 into ones yielding 1.
345
346 2023-08-07 Jan Hubicka <jh@suse.cz>
347
348 PR tree-optimization/106293
349 * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
350 * tree-vect-loop.cc (vect_transform_loop): Likewise.
351
352 2023-08-07 Andrew Pinski <apinski@marvell.com>
353
354 PR tree-optimization/96695
355 * match.pd (min_value, max_value): Extend to
356 pointer types too.
357
358 2023-08-06 Jan Hubicka <jh@suse.cz>
359
360 * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
361 __builtin_expect that CPU likely supports cpuid.
362
363 2023-08-06 Jan Hubicka <jh@suse.cz>
364
365 * tree-loop-distribution.cc (loop_distribution::execute): Disable
366 distribution for loops with estimated iterations 0.
367
368 2023-08-06 Jan Hubicka <jh@suse.cz>
369
370 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
371
372 2023-08-04 Xiao Zeng <zengxiao@eswincomputing.com>
373
374 * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
375 more Zicond patterns. Fix whitespace typo.
376 (riscv_rtx_costs): Remove accidental code duplication.
377 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
378
379 2023-08-04 Yan Simonaytes <simonaytes.yan@ispras.ru>
380
381 PR target/110202
382 * config/i386/i386-protos.h
383 (vpternlog_redundant_operand_mask): Declare.
384 (substitute_vpternlog_operands): Declare.
385 * config/i386/i386.cc
386 (vpternlog_redundant_operand_mask): New helper.
387 (substitute_vpternlog_operands): New function. Use them...
388 * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
389
390 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
391
392 * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
393 value of -1 is equivalent to don't care.
394 (extract_integral_bit_field): Indicate that we don't require
395 the most significant word to be zero extended, if we're about
396 to sign extend it.
397 (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
398 of -1 is equivalent to don't care. Don't clear the most
399 significant bits with AND mask when UNSIGNEDP is -1.
400
401 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
402
403 * config/i386/sse.md (define_split): Convert highpart:DF extract
404 from V2DFmode register into a sse2_storehpd instruction.
405 (define_split): Likewise, convert lowpart:DF extract from V2DF
406 register into a sse2_storelpd instruction.
407
408 2023-08-04 Qing Zhao <qing.zhao@oracle.com>
409
410 * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
411 new option.
412
413 2023-08-04 Vladimir N. Makarov <vmakarov@redhat.com>
414
415 * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
416 against early clobber hard regs.
417
418 2023-08-04 Tamar Christina <tamar.christina@arm.com>
419
420 * doc/extend.texi: Document it.
421
422 2023-08-04 Tamar Christina <tamar.christina@arm.com>
423
424 PR target/106346
425 * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
426 vec_widen_<sur>shiftl_hi_<mode>): Remove.
427 (aarch64_<sur>shll<mode>_internal): Renamed to...
428 (aarch64_<su>shll<mode>): .. This.
429 (aarch64_<sur>shll2<mode>_internal): Renamed to...
430 (aarch64_<su>shll2<mode>): .. This.
431 (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
432 optabs.
433 * config/aarch64/constraints.md (D2, DL): New.
434 * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
435
436 2023-08-04 Tamar Christina <tamar.christina@arm.com>
437
438 * gensupport.cc (conlist): Support length 0 attribute.
439
440 2023-08-04 Tamar Christina <tamar.christina@arm.com>
441
442 * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
443 (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
444
445 2023-08-04 Tamar Christina <tamar.christina@arm.com>
446
447 * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
448 of constants.
449 (aarch64_adjust_stmt_cost): Use it.
450 (aarch64_vector_costs::count_ops): Likewise.
451 (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
452 aarch64_adjust_stmt_cost.
453
454 2023-08-04 Richard Biener <rguenther@suse.de>
455
456 PR tree-optimization/110838
457 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
458 Fix right-shift value sanitizing. Properly emit external
459 def mangling in the preheader rather than in the pattern
460 def sequence where it will fail vectorizing.
461
462 2023-08-04 Matthew Malcomson <matthew.malcomson@arm.com>
463
464 PR middle-end/110316
465 PR middle-end/9903
466 * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
467 CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
468 (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
469 (timer::validate_phases): Use integral arithmetic to check
470 validity.
471 (timer::print_row, timer::print): Convert from integral
472 nanoseconds to floating point seconds before printing.
473 (timer::all_zero): Change limit to nanosec count instead of
474 fractional count of seconds.
475 (make_json_for_timevar_time_def): Convert from integral
476 nanoseconds to floating point seconds before recording.
477 * timevar.h (struct timevar_time_def): Update all measurements
478 to use uint64_t nanoseconds rather than seconds stored in a
479 double.
480
481 2023-08-04 Richard Biener <rguenther@suse.de>
482
483 PR tree-optimization/110838
484 * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
485 the arithmetic right-shift case to non-negative operands.
486
487 2023-08-04 Pan Li <pan2.li@intel.com>
488
489 Revert:
490 2023-08-04 Pan Li <pan2.li@intel.com>
491
492 * config/riscv/riscv-vector-builtins-bases.cc
493 (class vfmacc_frm): New class for vfmacc frm.
494 (vfmacc_frm_obj): New declaration.
495 (BASE): Ditto.
496 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
497 * config/riscv/riscv-vector-builtins-functions.def
498 (vfmacc_frm): New function definition.
499 * config/riscv/riscv-vector-builtins.cc
500 (function_expander::use_ternop_insn): Add frm operand support.
501 * config/riscv/vector.md: Add vfmuladd to frm_mode.
502
503 2023-08-04 Pan Li <pan2.li@intel.com>
504
505 Revert:
506 2023-08-04 Pan Li <pan2.li@intel.com>
507
508 * config/riscv/riscv-vector-builtins-bases.cc
509 (class vfnmacc_frm): New class for vfnmacc.
510 (vfnmacc_frm_obj): New declaration.
511 (BASE): Ditto.
512 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
513 * config/riscv/riscv-vector-builtins-functions.def
514 (vfnmacc_frm): New function definition.
515
516 2023-08-04 Pan Li <pan2.li@intel.com>
517
518 Revert:
519 2023-08-04 Pan Li <pan2.li@intel.com>
520
521 * config/riscv/riscv-vector-builtins-bases.cc
522 (class vfmsac_frm): New class for vfmsac frm.
523 (vfmsac_frm_obj): New declaration.
524 (BASE): Ditto.
525 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
526 * config/riscv/riscv-vector-builtins-functions.def
527 (vfmsac_frm): New function definition.
528
529 2023-08-04 Pan Li <pan2.li@intel.com>
530
531 Revert:
532 2023-08-04 Pan Li <pan2.li@intel.com>
533
534 * config/riscv/riscv-vector-builtins-bases.cc
535 (class vfnmsac_frm): New class for vfnmsac frm.
536 (vfnmsac_frm_obj): New declaration.
537 (BASE): Ditto.
538 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
539 * config/riscv/riscv-vector-builtins-functions.def
540 (vfnmsac_frm): New function definition.
541
542 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
543
544 * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
545 (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
546 (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
547 (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
548 (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
549 (attiny102, attiny104): New devices.
550 * doc/avr-mmcu.texi: Regenerate.
551
552 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
553
554 * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
555 and PM_OFFSET entries.
556
557 2023-08-04 Andrew Pinski <apinski@marvell.com>
558
559 PR tree-optimization/110874
560 * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
561 (gimple_maybe_cmp): Likewise.
562 (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
563 and gimple_maybe_cmp instead of being recursive.
564 * match.pd (bit_not_with_nop): New match pattern.
565 (maybe_cmp): Likewise.
566
567 2023-08-04 Drew Ross <drross@redhat.com>
568
569 PR middle-end/101955
570 * match.pd ((signed x << c) >> c): New canonicalization.
571
572 2023-08-04 Pan Li <pan2.li@intel.com>
573
574 * config/riscv/riscv-vector-builtins-bases.cc
575 (class vfnmsac_frm): New class for vfnmsac frm.
576 (vfnmsac_frm_obj): New declaration.
577 (BASE): Ditto.
578 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
579 * config/riscv/riscv-vector-builtins-functions.def
580 (vfnmsac_frm): New function definition.
581
582 2023-08-04 Pan Li <pan2.li@intel.com>
583
584 * config/riscv/riscv-vector-builtins-bases.cc
585 (class vfmsac_frm): New class for vfmsac frm.
586 (vfmsac_frm_obj): New declaration.
587 (BASE): Ditto.
588 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
589 * config/riscv/riscv-vector-builtins-functions.def
590 (vfmsac_frm): New function definition.
591
592 2023-08-04 Pan Li <pan2.li@intel.com>
593
594 * config/riscv/riscv-vector-builtins-bases.cc
595 (class vfnmacc_frm): New class for vfnmacc.
596 (vfnmacc_frm_obj): New declaration.
597 (BASE): Ditto.
598 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
599 * config/riscv/riscv-vector-builtins-functions.def
600 (vfnmacc_frm): New function definition.
601
602 2023-08-04 Hao Liu <hliu@os.amperecomputing.com>
603
604 PR target/110625
605 * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
606 STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
607
608 2023-08-04 Pan Li <pan2.li@intel.com>
609
610 * config/riscv/riscv-vector-builtins-bases.cc
611 (class vfmacc_frm): New class for vfmacc frm.
612 (vfmacc_frm_obj): New declaration.
613 (BASE): Ditto.
614 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
615 * config/riscv/riscv-vector-builtins-functions.def
616 (vfmacc_frm): New function definition.
617 * config/riscv/riscv-vector-builtins.cc
618 (function_expander::use_ternop_insn): Add frm operand support.
619 * config/riscv/vector.md: Add vfmuladd to frm_mode.
620
621 2023-08-04 Pan Li <pan2.li@intel.com>
622
623 * config/riscv/riscv-vector-builtins-bases.cc
624 (vfwmul_frm_obj): New declaration.
625 (vfwmul_frm): Ditto.
626 * config/riscv/riscv-vector-builtins-bases.h:
627 (vfwmul_frm): Ditto.
628 * config/riscv/riscv-vector-builtins-functions.def
629 (vfwmul_frm): New function definition.
630 * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
631
632 2023-08-04 Pan Li <pan2.li@intel.com>
633
634 * config/riscv/riscv-vector-builtins-bases.cc
635 (binop_frm): New declaration.
636 (reverse_binop_frm): Likewise.
637 (BASE): Likewise.
638 * config/riscv/riscv-vector-builtins-bases.h:
639 (vfdiv_frm): New extern declaration.
640 (vfrdiv_frm): Likewise.
641 * config/riscv/riscv-vector-builtins-functions.def
642 (vfdiv_frm): New function definition.
643 (vfrdiv_frm): Likewise.
644 * config/riscv/vector.md: Add vfdiv to frm_mode.
645
646 2023-08-03 Jan Hubicka <jh@suse.cz>
647
648 * tree-cfg.cc (print_loop_info): Print entry count.
649
650 2023-08-03 Jan Hubicka <jh@suse.cz>
651
652 * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
653
654 2023-08-03 Jan Hubicka <jh@suse.cz>
655
656 PR bootstrap/110857
657 * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
658 unadjusted_exit_count.
659
660 2023-08-03 Aldy Hernandez <aldyh@redhat.com>
661
662 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
663 value/mask.
664
665 2023-08-03 Xiao Zeng <zengxiao@eswincomputing.com>
666
667 * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
668 various Zicond patterns.
669 * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND. Use
670 sfb_alu_operand for both arms of the conditional move.
671 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
672
673 2023-08-03 Cupertino Miranda <cupertino.miranda@oracle.com>
674
675 PR target/107844
676 PR target/107479
677 PR target/107480
678 PR target/107481
679 * config.gcc: Added core-builtins.cc and .o files.
680 * config/bpf/bpf-passes.def: Removed file.
681 * config/bpf/bpf-protos.h (bpf_add_core_reloc,
682 bpf_replace_core_move_operands): New prototypes.
683 * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
684 maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
685 bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
686 bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
687 handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
688 Removed.
689 (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
690 * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
691 (mov_reloc_core<mode>): Added.
692 * config/bpf/core-builtins.cc (struct cr_builtin, enum
693 cr_decision struct cr_local, struct cr_final, struct
694 core_builtin_helpers, enum bpf_plugin_states): Added types.
695 (builtins_data, core_builtin_helpers, core_builtin_type_defs):
696 Added variables.
697 (allocate_builtin_data, get_builtin-data, search_builtin_data,
698 remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
699 compare_same_ptr_type, is_attr_preserve_access, core_field_info,
700 bpf_core_get_index, compute_field_expr,
701 pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
702 process_field_expr, pack_enum_value, process_enum_value, pack_type,
703 process_type, bpf_require_core_support, make_core_relo, read_kind,
704 kind_access_index, kind_preserve_field_info, kind_enum_value,
705 kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
706 bpf_handle_plugin_finish_type, bpf_init_core_builtins,
707 construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
708 bpf_expand_core_builtin, bpf_add_core_reloc,
709 bpf_replace_core_move_operands): Added functions.
710 * config/bpf/core-builtins.h (enum bpf_builtins): Added.
711 (bpf_init_core_builtins, bpf_expand_core_builtin,
712 bpf_resolve_overloaded_core_builtin): Added functions.
713 * config/bpf/coreout.cc (struct bpf_core_extra): Added.
714 (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
715 * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
716 * config/bpf/t-bpf: Added core-builtins.o.
717 * doc/extend.texi: Added documentation for new BPF builtins.
718
719 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
720
721 * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
722 ranges to the call to relation_fold_and_or.
723 (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
724 (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
725 * gimple-range-fold.h (relation_fold_and_or): Adjust params.
726 * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
727 a varying op1 and op2 to call.
728 * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
729 (operator_equal::op1_op2_relation): New float version.
730 (operator_not_equal::op1_op2_relation): Ditto.
731 (operator_lt::op1_op2_relation): Ditto.
732 (operator_le::op1_op2_relation): Ditto.
733 (operator_gt::op1_op2_relation): Ditto.
734 (operator_ge::op1_op2_relation) Ditto.
735 * range-op-mixed.h (operator_equal::op1_op2_relation): New float
736 prototype.
737 (operator_not_equal::op1_op2_relation): Ditto.
738 (operator_lt::op1_op2_relation): Ditto.
739 (operator_le::op1_op2_relation): Ditto.
740 (operator_gt::op1_op2_relation): Ditto.
741 (operator_ge::op1_op2_relation): Ditto.
742 * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
743 variations.
744 (range_operator::op1_op2_relation): Add extra params.
745 (operator_equal::op1_op2_relation): Ditto.
746 (operator_not_equal::op1_op2_relation): Ditto.
747 (operator_lt::op1_op2_relation): Ditto.
748 (operator_le::op1_op2_relation): Ditto.
749 (operator_gt::op1_op2_relation): Ditto.
750 (operator_ge::op1_op2_relation): Ditto.
751 * range-op.h (range_operator): New prototypes.
752 (range_op_handler): Ditto.
753
754 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
755
756 * gimple-range-gori.cc (gori_compute::compute_operand1_range):
757 Use identity relation.
758 (gori_compute::compute_operand2_range): Ditto.
759 * value-relation.cc (get_identity_relation): New.
760 * value-relation.h (get_identity_relation): New prototype.
761
762 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
763
764 * value-range.h (Value_Range::set_varying): Set the type.
765 (Value_Range::set_zero): Ditto.
766 (Value_Range::set_nonzero): Ditto.
767
768 2023-08-03 Jeff Law <jeffreyalaw@gmail.com>
769
770 * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
771 recent commit.
772
773 2023-08-03 Pan Li <pan2.li@intel.com>
774
775 * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
776
777 2023-08-03 Richard Sandiford <richard.sandiford@arm.com>
778
779 * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
780
781 2023-08-03 Richard Biener <rguenther@suse.de>
782
783 PR tree-optimization/110838
784 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
785 Adjust the shift operand of RSHIFT_EXPRs.
786
787 2023-08-03 Richard Biener <rguenther@suse.de>
788
789 PR tree-optimization/110702
790 * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
791 we created a NULL pointer based access rewrite that to
792 a LEA.
793
794 2023-08-03 Richard Biener <rguenther@suse.de>
795
796 * tree-ssa-sink.cc: Include tree-ssa-live.h.
797 (pass_sink_code::execute): Instantiate virtual_operand_live
798 and pass it down.
799 (sink_code_in_bb): Pass down virtual_operand_live.
800 (statement_sink_location): Get virtual_operand_live and
801 verify we are not sinking loads across stores by looking up
802 the live virtual operand at the sink location.
803
804 2023-08-03 Richard Biener <rguenther@suse.de>
805
806 * tree-ssa-live.h (class virtual_operand_live): New.
807 * tree-ssa-live.cc (virtual_operand_live::init): New.
808 (virtual_operand_live::get_live_in): Likewise.
809 (virtual_operand_live::get_live_out): Likewise.
810
811 2023-08-03 Richard Biener <rguenther@suse.de>
812
813 * passes.def: Exchange loop splitting and final value
814 replacement passes.
815
816 2023-08-03 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
817
818 * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
819 New function which handles bswap patterns for vec_perm_const.
820 (vectorize_vec_perm_const_1): Call new function.
821 * config/s390/vector.md (*bswap<mode>): Fix operands in output
822 template.
823 (*vstbr<mode>): New insn.
824
825 2023-08-03 Alexandre Oliva <oliva@adacore.com>
826
827 * config/vxworks-smp.opt: New. Introduce -msmp.
828 * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
829 * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
830 lib_smp when -msmp is present in the command line.
831 * doc/invoke.texi: Document it.
832
833 2023-08-03 Yanzhang Wang <yanzhang.wang@intel.com>
834
835 * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
836 when enabling -mno-omit-leaf-frame-pointer
837 (riscv_option_override): Override omit-frame-pointer.
838 (riscv_frame_pointer_required): Save s0 for non-leaf function
839 (TARGET_FRAME_POINTER_REQUIRED): Override defination
840 * config/riscv/riscv.opt: Add option support.
841
842 2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
843
844 PR target/110792
845 * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
846 place operand in a register before gen_<insn>64ti2_doubleword.
847 (<any_rotate>di3): Likewise, for rotations by 32 bits, place
848 operand in a register before gen_<insn>32di2_doubleword.
849 (<any_rotate>32di2_doubleword): Constrain operand to be in register.
850 (<any_rotate>64ti2_doubleword): Likewise.
851
852 2023-08-03 Pan Li <pan2.li@intel.com>
853
854 * config/riscv/riscv-vector-builtins-bases.cc
855 (vfmul_frm_obj): New declaration.
856 (Base): Likewise.
857 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
858 * config/riscv/riscv-vector-builtins-functions.def
859 (vfmul_frm): New function definition.
860 * config/riscv/vector.md: Add vfmul to frm_mode.
861
862 2023-08-03 Andrew Pinski <apinski@marvell.com>
863
864 * match.pd (`~X & X`): Check that the types match.
865 (`~x | x`, `~x ^ x`): Likewise.
866
867 2023-08-03 Pan Li <pan2.li@intel.com>
868
869 * config/riscv/riscv-vector-builtins-bases.h: Remove
870 redudant declaration.
871
872 2023-08-03 Pan Li <pan2.li@intel.com>
873
874 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
875 vfwsub frm.
876 * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
877 * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
878 Add vfwsub function definitions.
879
880 2023-08-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
881
882 PR rtl-optimization/110867
883 * combine.cc (simplify_compare_const): Try the optimization only
884 in case the constant fits into the comparison mode.
885
886 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
887
888 * config/riscv/zicond.md: Remove incorrect zicond patterns and
889 renumber/rename them.
890 (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
891
892 2023-08-02 Richard Biener <rguenther@suse.de>
893
894 * tree-phinodes.h (add_phi_node_to_bb): Remove.
895 * tree-phinodes.cc (add_phi_node_to_bb): Make static.
896
897 2023-08-02 Jan Beulich <jbeulich@suse.com>
898
899 * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
900 two of the alternatives.
901
902 2023-08-02 Richard Biener <rguenther@suse.de>
903
904 PR tree-optimization/92335
905 * tree-ssa-sink.cc (select_best_block): Before loop
906 optimizations avoid sinking unconditional loads/stores
907 in innermost loops to conditional executed places.
908
909 2023-08-02 Andrew Pinski <apinski@marvell.com>
910
911 * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
912 the comparison operands before comparing them.
913
914 2023-08-02 Andrew Pinski <apinski@marvell.com>
915
916 * match.pd (`~X & X`, `~X | X`): Move over to
917 use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
918 handles that already.
919 Remove range test simplifications to true/false as they
920 are now handled by these patterns.
921
922 2023-08-02 Andrew Pinski <apinski@marvell.com>
923
924 * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
925 statement's lhs and rhs to check if trivial dead.
926 Rename inserted_exprs to exprs_maybe_dce; also move it so
927 bitmap is not allocated if not needed.
928
929 2023-08-02 Pan Li <pan2.li@intel.com>
930
931 * config/riscv/riscv-vector-builtins-bases.cc
932 (class widen_binop_frm): New class for binop frm.
933 (BASE): Add vfwadd_frm.
934 * config/riscv/riscv-vector-builtins-bases.h: New declaration.
935 * config/riscv/riscv-vector-builtins-functions.def
936 (vfwadd_frm): New function definition.
937 * config/riscv/riscv-vector-builtins-shapes.cc
938 (BASE_NAME_MAX_LEN): New macro.
939 (struct alu_frm_def): Leverage new base class.
940 (struct build_frm_base): New build base for frm.
941 (struct widen_alu_frm_def): New struct for widen alu frm.
942 (SHAPE): Add widen_alu_frm shape.
943 * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
944 * config/riscv/vector.md (frm_mode): Add vfwalu type.
945
946 2023-08-02 Jan Hubicka <jh@suse.cz>
947
948 * cfgloop.h (loop_count_in): Declare.
949 * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
950 (loop_count_in): Move here from ...
951 * cfgloopmanip.cc (loop_count_in): ... here.
952 (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
953
954 2023-08-02 Jan Hubicka <jh@suse.cz>
955
956 * cfg.cc (scale_strictly_dominated_blocks): New function.
957 * cfg.h (scale_strictly_dominated_blocks): Declare.
958 * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
959
960 2023-08-02 Richard Biener <rguenther@suse.de>
961
962 PR rtl-optimization/110587
963 * lra-spills.cc (return_regno_p): Remove.
964 (regno_in_use_p): Likewise.
965 (lra_final_code_change): Do not remove noop moves
966 between hard registers.
967
968 2023-08-02 liuhongt <hongtao.liu@intel.com>
969
970 PR target/81904
971 * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
972 HFmode, use mode iterator VFH instead.
973 (vec_fmsubadd<mode>4): Ditto.
974 (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
975 Remove scalar mode from iterator, use VFH_AVX512VL instead.
976 (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
977 Ditto.
978
979 2023-08-02 liuhongt <hongtao.liu@intel.com>
980
981 * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
982 pre_reload define_insn_and_split.
983
984 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
985
986 * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
987 using Zicond to implement some conditional moves.
988
989 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
990
991 * config/riscv/zicond.md: Use the X iterator instead of ANYI
992 on the comparison input operands.
993
994 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
995
996 * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
997 Zicond costing.
998 (case SET): For INSNs that just set a REG, take the cost from the
999 SET_SRC.
1000 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
1001
1002 2023-08-02 Hu, Lin1 <lin1.hu@intel.com>
1003
1004 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
1005 Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
1006 (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
1007 (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
1008 (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
1009 (OPTION_MASK_ISA_ABM_SET):
1010 Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
1011
1012 2023-08-01 Andreas Krebbel <krebbel@linux.ibm.com>
1013
1014 * config/s390/s390.cc (s390_encode_section_info): Assume external
1015 symbols without explicit alignment to be unaligned if
1016 -munaligned-symbols has been specified.
1017 * config/s390/s390.opt (-munaligned-symbols): New option.
1018
1019 2023-08-01 Richard Ball <richard.ball@arm.com>
1020
1021 * gimple-fold.cc (fold_ctor_reference):
1022 Add support for poly_int.
1023
1024 2023-08-01 Georg-Johann Lay <avr@gjlay.de>
1025
1026 PR target/110220
1027 * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
1028 LABEL_NUSES of new conditional branch instruction.
1029
1030 2023-08-01 Jan Hubicka <jh@suse.cz>
1031
1032 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
1033 constant prologue peeling.
1034
1035 2023-08-01 Christophe Lyon <christophe.lyon@linaro.org>
1036
1037 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
1038
1039 2023-08-01 Pan Li <pan2.li@intel.com>
1040 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1041
1042 * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
1043 (STATIC_FRM_P): Ditto.
1044 (struct mode_switching_info): New struct for mode switching.
1045 (struct machine_function): Add new field mode switching.
1046 (riscv_emit_frm_mode_set): Add DYN_CALL emit.
1047 (riscv_frm_adjust_mode_after_call): New function for call mode.
1048 (riscv_frm_emit_after_call_in_bb_end): New function for emit
1049 insn when call as the end of bb.
1050 (riscv_frm_mode_needed): New function for frm mode needed.
1051 (frm_unknown_dynamic_p): Remove call check.
1052 (riscv_mode_needed): Extrac function for frm.
1053 (riscv_frm_mode_after): Add DYN_CALL after.
1054 (riscv_mode_entry): Remove backup rtl initialization.
1055 * config/riscv/vector.md (frm_mode): Add dyn_call.
1056 (fsrmsi_restore_exit): Rename to _volatile.
1057 (fsrmsi_restore_volatile): Likewise.
1058
1059 2023-08-01 Pan Li <pan2.li@intel.com>
1060
1061 * config/riscv/riscv-vector-builtins-bases.cc
1062 (class reverse_binop_frm): Add new template for reversed frm.
1063 (vfsub_frm_obj): New obj.
1064 (vfrsub_frm_obj): Likewise.
1065 * config/riscv/riscv-vector-builtins-bases.h:
1066 (vfsub_frm): New declaration.
1067 (vfrsub_frm): Likewise.
1068 * config/riscv/riscv-vector-builtins-functions.def
1069 (vfsub_frm): New function define.
1070 (vfrsub_frm): Likewise.
1071
1072 2023-08-01 Andrew Pinski <apinski@marvell.com>
1073
1074 PR tree-optimization/93044
1075 * match.pd (nested int casts): A truncation (to the same size or smaller)
1076 can always remove the inner cast.
1077
1078 2023-07-31 Hamza Mahfooz <someguy@effective-light.com>
1079
1080 PR c/65213
1081 * doc/invoke.texi (-Wmissing-variable-declarations): Document
1082 new option.
1083
1084 2023-07-31 Andrew Pinski <apinski@marvell.com>
1085
1086 PR tree-optimization/106164
1087 * match.pd (`a != b & a <= b`, `a != b & a >= b`,
1088 `a == b | a < b`, `a == b | a > b`): Handle these cases
1089 too.
1090
1091 2023-07-31 Andrew Pinski <apinski@marvell.com>
1092
1093 PR tree-optimization/106164
1094 * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
1095 patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
1096
1097 2023-07-31 Andrew Pinski <apinski@marvell.com>
1098
1099 PR tree-optimization/100864
1100 * generic-match-head.cc (bitwise_inverted_equal_p): New function.
1101 * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
1102 (gimple_bitwise_inverted_equal_p): New function.
1103 * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
1104 instead of direct matching bit_not.
1105
1106 2023-07-31 Costas Argyris <costas.argyris@gmail.com>
1107
1108 PR driver/77576
1109 * gcc-ar.cc (main): Expand argv and use
1110 temporary response file to call ar if any
1111 expansions were made.
1112
1113 2023-07-31 Andrew MacLeod <amacleod@redhat.com>
1114
1115 PR tree-optimization/110582
1116 * gimple-range-fold.cc (fur_list::get_operand): Do not use the
1117 range vector for non-ssa names.
1118
1119 2023-07-31 David Malcolm <dmalcolm@redhat.com>
1120
1121 PR analyzer/109361
1122 * diagnostic-client-data-hooks.h (class sarif_object): New forward
1123 decl.
1124 (diagnostic_client_data_hooks::add_sarif_invocation_properties):
1125 New vfunc.
1126 * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
1127 (class sarif_invocation): Inherit from sarif_object rather than
1128 json::object.
1129 (class sarif_result): Likewise.
1130 (class sarif_ice_notification): Likewise.
1131 (sarif_object::get_or_create_properties): New.
1132 (sarif_invocation::prepare_to_flush): Add "context" param. Use it
1133 to call the context's add_sarif_invocation_properties hook.
1134 (sarif_builder::flush_to_file): Pass m_context to
1135 sarif_invocation::prepare_to_flush.
1136 * diagnostic-format-sarif.h: New header.
1137 * doc/invoke.texi (Developer Options): Clarify that -ftime-report
1138 writes to stderr. Document that if SARIF diagnostic output is
1139 requested then any timing information is written in JSON form as
1140 part of the SARIF output, rather than to stderr.
1141 * timevar.cc: Include "json.h".
1142 (timer::named_items::m_hash_map): Split out type into...
1143 (timer::named_items::hash_map_t): ...this new typedef.
1144 (timer::named_items::make_json): New function.
1145 (timevar_diff): New function.
1146 (make_json_for_timevar_time_def): New function.
1147 (timer::timevar_def::make_json): New function.
1148 (timer::make_json): New function.
1149 * timevar.h (class json::value): New forward decl.
1150 (timer::make_json): New decl.
1151 (timer::timevar_def::make_json): New decl.
1152 * tree-diagnostic-client-data-hooks.cc: Include
1153 "diagnostic-format-sarif.h" and "timevar.h".
1154 (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
1155 implementation.
1156
1157 2023-07-31 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
1158
1159 * combine.cc (simplify_compare_const): Narrow comparison of
1160 memory and constant.
1161 (try_combine): Adapt new function signature.
1162 (simplify_comparison): Adapt new function signature.
1163
1164 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
1165
1166 * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
1167 variable.
1168 (expand_vector_init_insert_elems): Ditto.
1169
1170 2023-07-31 Hao Liu <hliu@os.amperecomputing.com>
1171
1172 PR target/110625
1173 * config/aarch64/aarch64.cc (count_ops): Only '* count' for
1174 single_defuse_cycle while counting reduction_latency.
1175
1176 2023-07-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1177
1178 * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
1179 (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
1180 (COND_ADD): Remove.
1181 (COND_SUB): Ditto.
1182 (COND_MUL): Ditto.
1183 (COND_DIV): Ditto.
1184 (COND_MOD): Ditto.
1185 (COND_RDIV): Ditto.
1186 (COND_MIN): Ditto.
1187 (COND_MAX): Ditto.
1188 (COND_FMIN): Ditto.
1189 (COND_FMAX): Ditto.
1190 (COND_AND): Ditto.
1191 (COND_IOR): Ditto.
1192 (COND_XOR): Ditto.
1193 (COND_SHL): Ditto.
1194 (COND_SHR): Ditto.
1195 (COND_FMA): Ditto.
1196 (COND_FMS): Ditto.
1197 (COND_FNMA): Ditto.
1198 (COND_FNMS): Ditto.
1199 (COND_NEG): Ditto.
1200 (COND_LEN_ADD): Ditto.
1201 (COND_LEN_SUB): Ditto.
1202 (COND_LEN_MUL): Ditto.
1203 (COND_LEN_DIV): Ditto.
1204 (COND_LEN_MOD): Ditto.
1205 (COND_LEN_RDIV): Ditto.
1206 (COND_LEN_MIN): Ditto.
1207 (COND_LEN_MAX): Ditto.
1208 (COND_LEN_FMIN): Ditto.
1209 (COND_LEN_FMAX): Ditto.
1210 (COND_LEN_AND): Ditto.
1211 (COND_LEN_IOR): Ditto.
1212 (COND_LEN_XOR): Ditto.
1213 (COND_LEN_SHL): Ditto.
1214 (COND_LEN_SHR): Ditto.
1215 (COND_LEN_FMA): Ditto.
1216 (COND_LEN_FMS): Ditto.
1217 (COND_LEN_FNMA): Ditto.
1218 (COND_LEN_FNMS): Ditto.
1219 (COND_LEN_NEG): Ditto.
1220 (ADD): New macro define.
1221 (SUB): Ditto.
1222 (MUL): Ditto.
1223 (DIV): Ditto.
1224 (MOD): Ditto.
1225 (RDIV): Ditto.
1226 (MIN): Ditto.
1227 (MAX): Ditto.
1228 (FMIN): Ditto.
1229 (FMAX): Ditto.
1230 (AND): Ditto.
1231 (IOR): Ditto.
1232 (XOR): Ditto.
1233 (SHL): Ditto.
1234 (SHR): Ditto.
1235 (FMA): Ditto.
1236 (FMS): Ditto.
1237 (FNMA): Ditto.
1238 (FNMS): Ditto.
1239 (NEG): Ditto.
1240
1241 2023-07-31 Roger Sayle <roger@nextmovesoftware.com>
1242
1243 PR target/110843
1244 * config/i386/i386-features.cc (compute_convert_gain): Check
1245 TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
1246 and V4SImode rotates in STV.
1247 (general_scalar_chain::convert_rotate): Likewise.
1248
1249 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
1250
1251 * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
1252 * config/riscv/riscv-protos.h (get_mask_mode): Update return
1253 type.
1254 * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
1255 `.require ()`.
1256 (emit_vlmax_insn): Ditto.
1257 (emit_vlmax_fp_insn): Ditto.
1258 (emit_vlmax_ternary_insn): Ditto.
1259 (emit_vlmax_fp_ternary_insn): Ditto.
1260 (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
1261 (emit_nonvlmax_insn): Ditto.
1262 (emit_vlmax_slide_insn): Ditto.
1263 (emit_nonvlmax_slide_tu_insn): Ditto.
1264 (emit_vlmax_merge_insn): Ditto.
1265 (emit_vlmax_masked_insn): Ditto.
1266 (emit_nonvlmax_masked_insn): Ditto.
1267 (emit_vlmax_masked_store_insn): Ditto.
1268 (emit_nonvlmax_masked_store_insn): Ditto.
1269 (emit_vlmax_masked_mu_insn): Ditto.
1270 (emit_nonvlmax_tu_insn): Ditto.
1271 (emit_nonvlmax_fp_tu_insn): Ditto.
1272 (emit_scalar_move_insn): Ditto.
1273 (emit_vlmax_compress_insn): Ditto.
1274 (emit_vlmax_reduction_insn): Ditto.
1275 (emit_vlmax_fp_reduction_insn): Ditto.
1276 (emit_nonvlmax_fp_reduction_insn): Ditto.
1277 (expand_vec_series): Ditto.
1278 (expand_vector_init_merge_repeating_sequence): Ditto.
1279 (expand_vec_perm): Ditto.
1280 (shuffle_merge_patterns): Ditto.
1281 (shuffle_compress_patterns): Ditto.
1282 (shuffle_decompress_patterns): Ditto.
1283 (expand_reduction): Ditto.
1284 (get_mask_mode): Update return type.
1285 * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
1286 is valid, and use new get_mask_mode interface.
1287
1288 2023-07-31 Pan Li <pan2.li@intel.com>
1289
1290 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
1291 Move rm suffix before mask.
1292
1293 2023-07-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1294
1295 * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
1296 * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
1297 support.
1298
1299 2023-07-29 Roger Sayle <roger@nextmovesoftware.com>
1300
1301 PR target/110790
1302 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
1303 (extzv<mode>): Likewise.
1304 (insv<mode>): Likewise.
1305 (*testqi_ext_3): Likewise.
1306 (*btr<mode>_2): Likewise.
1307 (define_split): Likewise.
1308 (*btsq_imm): Likewise.
1309 (*btrq_imm): Likewise.
1310 (*btcq_imm): Likewise.
1311 (define_peephole2 x3): Likewise.
1312 (*bt<mode>): Likewise
1313 (*bt<mode>_mask): New define_insn_and_split.
1314 (*jcc_bt<mode>): Use QImode for offsets.
1315 (*jcc_bt<mode>_1): Delete obsolete pattern.
1316 (*jcc_bt<mode>_mask): Use QImode offsets.
1317 (*jcc_bt<mode>_mask_1): Likewise.
1318 (define_split): Likewise.
1319 (*bt<mode>_setcqi): Likewise.
1320 (*bt<mode>_setncqi): Likewise.
1321 (*bt<mode>_setnc<mode>): Likewise.
1322 (*bt<mode>_setncqi_2): Likewise.
1323 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
1324 (bmi2_bzhi_<mode>3): Use QImode offsets.
1325 (*bmi2_bzhi_<mode>3): Likewise.
1326 (*bmi2_bzhi_<mode>3_1): Likewise.
1327 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
1328 (@tbm_bextri_<mode>): Likewise.
1329
1330 2023-07-29 Jan Hubicka <jh@suse.cz>
1331
1332 * profile-count.cc (profile_probability::sqrt): New member function.
1333 (profile_probability::pow): Likewise.
1334 * profile-count.h: (profile_probability::sqrt): Declare
1335 (profile_probability::pow): Likewise.
1336 * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
1337
1338 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
1339
1340 * gimple-range-cache.cc (ssa_cache::merge_range): New.
1341 (ssa_lazy_cache::merge_range): New.
1342 * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
1343 (class ssa_lazy_cache): Ditto.
1344 * gimple-range.cc (assume_query::calculate_op): Use merge_range.
1345
1346 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
1347
1348 * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
1349 Move from value-query.cc.
1350 (substitute_and_fold_engine::value_of_stmt): Ditto.
1351 (substitute_and_fold_engine::range_of_expr): New.
1352 * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
1353 range_query. New prototypes.
1354 * value-query.cc (value_query::value_on_edge): Relocate.
1355 (value_query::value_of_stmt): Ditto.
1356 * value-query.h (class value_query): Remove.
1357 (class range_query): Remove base class. Adjust prototypes.
1358
1359 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
1360
1361 PR tree-optimization/110205
1362 * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
1363 * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
1364 Add final override.
1365 * range-op.cc (operator_lshift): Add missing final overrides.
1366 (operator_rshift): Ditto.
1367
1368 2023-07-28 Jose E. Marchesi <jose.marchesi@oracle.com>
1369
1370 * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
1371 optimizations in BPF target.
1372
1373 2023-07-28 Honza <jh@ryzen4.suse.cz>
1374
1375 * cfgloopmanip.cc (loop_count_in): Break out from ...
1376 (loop_exit_for_scaling): Break out from ...
1377 (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
1378 add more sanity check and debug info.
1379 (scale_loop_profile): ... here.
1380 (create_empty_loop_on_edge): Fix whitespac.
1381 * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
1382 * loop-unroll.cc (unroll_loop_constant_iterations): Use
1383 update_loop_exit_probability_scale_dom_bbs.
1384 * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
1385 (tree_transform_and_unroll_loop): Use
1386 update_loop_exit_probability_scale_dom_bbs.
1387 * tree-ssa-loop-split.cc (split_loop): Use
1388 update_loop_exit_probability_scale_dom_bbs.
1389
1390 2023-07-28 Jan Hubicka <jh@suse.cz>
1391
1392 PR middle-end/77689
1393 * tree-ssa-loop-split.cc: Include value-query.h.
1394 (split_at_bb_p): Analyze cases where EQ/NE can be turned
1395 into LT/LE/GT/GE; return updated guard code.
1396 (split_loop): Use guard code.
1397
1398 2023-07-28 Roger Sayle <roger@nextmovesoftware.com>
1399 Richard Biener <rguenther@suse.de>
1400
1401 PR middle-end/28071
1402 PR rtl-optimization/110587
1403 * expr.cc (emit_group_load_1): Simplify logic for calling
1404 force_reg on ORIG_SRC, to avoid making a copy if the source
1405 is already in a pseudo register.
1406
1407 2023-07-28 Jan Hubicka <jh@suse.cz>
1408
1409 PR middle-end/106923
1410 * tree-ssa-loop-split.cc (connect_loops): Change probability
1411 of the test preconditioning second loop to very_likely.
1412 (fix_loop_bb_probability): Handle correctly case where
1413 on of the arms of the conditional is empty.
1414 (split_loop): Fold the test guarding first condition to
1415 see if it is constant true; Set correct entry block
1416 probabilities of the split loops; determine correct loop
1417 eixt probabilities.
1418
1419 2023-07-28 xuli <xuli1@eswincomputing.com>
1420
1421 * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
1422 vsadd[u] and vssub[u].
1423 * config/riscv/vector.md: Ditto.
1424
1425 2023-07-28 Jan Hubicka <jh@suse.cz>
1426
1427 * tree-ssa-loop-split.cc (split_loop): Also support NE driven
1428 loops when IV test is not overflowing.
1429
1430 2023-07-28 liuhongt <hongtao.liu@intel.com>
1431
1432 PR target/110788
1433 * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
1434 UNSPEC_MASKOP.
1435 (avx512cd_maskw_vec_dup<mode>): Ditto.
1436
1437 2023-07-27 David Faust <david.faust@oracle.com>
1438
1439 PR target/110782
1440 PR target/110784
1441 * config/bpf/bpf.opt (msmov): New option.
1442 * config/bpf/bpf.cc (bpf_option_override): Handle it here.
1443 * config/bpf/bpf.md (*extendsidi2): New.
1444 (extendhidi2): New.
1445 (extendqidi2): New.
1446 (extendsisi2): New.
1447 (extendhisi2): New.
1448 (extendqisi2): New.
1449 * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
1450 (eBPF Options): Add -m[no-]smov. Document that -mcpu=v4
1451 also enables -msmov.
1452
1453 2023-07-27 David Faust <david.faust@oracle.com>
1454
1455 * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
1456 Add -mbswap and -msdiv eBPF options.
1457 (eBPF Options): Remove -mkernel. Add -mno-{jmpext, jmp32,
1458 alu32, v3-atomics, bswap, sdiv}. Document that -mcpu=v4 also
1459 enables -msdiv.
1460
1461 2023-07-27 David Faust <david.faust@oracle.com>
1462
1463 * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
1464 in pseudo-C dialect output template.
1465 (sub<AM:mode>3): Likewise.
1466
1467 2023-07-27 Jan Hubicka <jh@suse.cz>
1468
1469 * tree-vect-loop.cc (optimize_mask_stores): Make store
1470 likely.
1471
1472 2023-07-27 Jan Hubicka <jh@suse.cz>
1473
1474 * cfgloop.h (single_dom_exit): Declare.
1475 * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
1476 * cfgrtl.cc (struct cfg_hooks): Fix comment.
1477 * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
1478 * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
1479 * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
1480 Break out from ...
1481 (tree_transform_and_unroll_loop): ... here;
1482
1483 2023-07-27 Jan Hubicka <jh@suse.cz>
1484
1485 * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
1486 tree-ssa-loop-manip.cc and avoid recursion.
1487 (scale_loop_profile): Use scale_dominated_blocks_in_loop.
1488 (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
1489 flag.
1490 * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
1491 (scale_dominated_blocks_in_loop): Declare.
1492 * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
1493 (change_edge_frequency): Remove.
1494 * predict.h (change_edge_frequency): Remove.
1495 * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
1496 cfgloopmanip.cc.
1497 (niter_for_unrolled_loop): Remove.
1498 (tree_transform_and_unroll_loop): Fix profile update.
1499
1500 2023-07-27 Jan Hubicka <jh@suse.cz>
1501
1502 * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
1503 to guessed; fix count of new_bb.
1504
1505 2023-07-27 Jan Hubicka <jh@suse.cz>
1506
1507 * profile-count.h (profile_count::apply_probability): Fix
1508 handling of uninitialized probabilities, optimize scaling
1509 by probability 1.
1510
1511 2023-07-27 Richard Biener <rguenther@suse.de>
1512
1513 PR tree-optimization/91838
1514 * gimple-match-head.cc: Include attribs.h and asan.h.
1515 * generic-match-head.cc: Likewise.
1516 * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
1517
1518 2023-07-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1519
1520 * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
1521 (ADJUST_ALIGNMENT): Ditto.
1522 (ADJUST_PRECISION): Ditto.
1523 (VLS_MODES): Ditto.
1524 (VECTOR_MODE_WITH_PREFIX): Ditto.
1525 * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
1526 * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
1527 * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
1528 (legitimize_move): Enable basic VLS modes support.
1529 (get_vlmul): Ditto.
1530 (get_ratio): Ditto.
1531 (get_vector_mode): Ditto.
1532 * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
1533 * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
1534 (VLS_ENTRY): New macro.
1535 (riscv_v_ext_mode_p): Add vls modes.
1536 (riscv_get_v_regno_alignment): New function.
1537 (riscv_print_operand): Add vls modes.
1538 (riscv_hard_regno_nregs): Ditto.
1539 (riscv_hard_regno_mode_ok): Ditto.
1540 (riscv_regmode_natural_size): Ditto.
1541 (riscv_vectorize_preferred_vector_alignment): Ditto.
1542 * config/riscv/riscv.md: Ditto.
1543 * config/riscv/vector-iterators.md: Ditto.
1544 * config/riscv/vector.md: Ditto.
1545 * config/riscv/autovec-vls.md: New file.
1546
1547 2023-07-27 Pan Li <pan2.li@intel.com>
1548
1549 * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
1550 (vread_csr): Ditto.
1551 (vwrite_csr): Ditto.
1552
1553 2023-07-27 demin.han <demin.han@starfivetech.com>
1554
1555 * config/riscv/autovec.md: Delete which_alternative use in split
1556
1557 2023-07-27 Richard Biener <rguenther@suse.de>
1558
1559 * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
1560 use a worklist ...
1561 (pass_sink_code::execute): ... in the caller.
1562
1563 2023-07-27 Kewen Lin <linkw@linux.ibm.com>
1564 Richard Biener <rguenther@suse.de>
1565
1566 PR tree-optimization/110776
1567 * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
1568 as scalar load.
1569
1570 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
1571
1572 * config/riscv/riscv.md: Include zicond.md
1573 * config/riscv/zicond.md: New file.
1574
1575 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
1576
1577 * common/config/riscv/riscv-common.cc: New extension.
1578 * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
1579 (TARGET_ZICOND): New target.
1580
1581 2023-07-26 Carl Love <cel@us.ibm.com>
1582
1583 * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
1584 specifies the number of built-in arguments to check.
1585 (altivec_resolve_overloaded_builtin): Update calls to find_instance
1586 to pass the number of built-in arguments to be checked.
1587
1588 2023-07-26 David Faust <david.faust@oracle.com>
1589
1590 * config/bpf/bpf.opt (mv3-atomics): New option.
1591 * config/bpf/bpf.cc (bpf_option_override): Handle it here.
1592 * config/bpf/bpf.h (enum_reg_class): Add R0 class.
1593 (REG_CLASS_NAMES): Likewise.
1594 (REG_CLASS_CONTENTS): Likewise.
1595 (REGNO_REG_CLASS): Handle R0.
1596 * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
1597 (UNSPEC_AAND): New unspec.
1598 (UNSPEC_AOR): Likewise.
1599 (UNSPEC_AXOR): Likewise.
1600 (UNSPEC_AFADD): Likewise.
1601 (UNSPEC_AFAND): Likewise.
1602 (UNSPEC_AFOR): Likewise.
1603 (UNSPEC_AFXOR): Likewise.
1604 (UNSPEC_AXCHG): Likewise.
1605 (UNSPEC_ACMPX): Likewise.
1606 (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
1607 Move to...
1608 * config/bpf/atomic.md: ...Here. New file.
1609 * config/bpf/constraints.md (t): New constraint for R0.
1610 * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
1611
1612 2023-07-26 Matthew Malcomson <matthew.malcomson@arm.com>
1613
1614 * tree-vect-stmts.cc (get_group_load_store_type): Reformat
1615 comment.
1616
1617 2023-07-26 Carl Love <cel@us.ibm.com>
1618
1619 * config/rs6000/rs6000-builtins.def: Rename
1620 __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
1621 __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
1622 __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
1623 __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
1624 __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
1625 __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
1626 Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
1627 VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
1628 VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
1629 VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
1630 Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
1631 vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
1632 vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
1633 vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
1634 * config/rs6000/rs6000-c.cc (find_instance): Add case
1635 RS6000_OVLD_VEC_REPLACE_UN.
1636 * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
1637 Fix first argument type. Rename VREPLACE_UN_UV4SI as
1638 VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
1639 VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
1640 VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
1641 VREPLACE_UN_V2DF as VREPLACE_UN_DF.
1642 * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
1643 REPLACE_ELT_V for vector modes.
1644 (REPLACE_ELT): New scalar mode iterator.
1645 (REPLACE_ELT_char): Add scalar attributes.
1646 (vreplace_un_<mode>): Change iterator and mode attribute.
1647
1648 2023-07-26 David Malcolm <dmalcolm@redhat.com>
1649
1650 PR analyzer/104940
1651 * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
1652
1653 2023-07-26 Richard Biener <rguenther@suse.de>
1654
1655 PR tree-optimization/106081
1656 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
1657 Assign layout -1 to splats.
1658
1659 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1660
1661 * range-op-mixed.h (class operator_cast): Add update_bitmask.
1662 * range-op.cc (operator_cast::update_bitmask): New.
1663 (operator_cast::fold_range): Call update_bitmask.
1664
1665 2023-07-26 Li Xu <xuli1@eswincomputing.com>
1666
1667 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
1668 scalar type to float16, eliminate warning.
1669 (vfloat16mf4x3_t): Ditto.
1670 (vfloat16mf4x4_t): Ditto.
1671 (vfloat16mf4x5_t): Ditto.
1672 (vfloat16mf4x6_t): Ditto.
1673 (vfloat16mf4x7_t): Ditto.
1674 (vfloat16mf4x8_t): Ditto.
1675 (vfloat16mf2x2_t): Ditto.
1676 (vfloat16mf2x3_t): Ditto.
1677 (vfloat16mf2x4_t): Ditto.
1678 (vfloat16mf2x5_t): Ditto.
1679 (vfloat16mf2x6_t): Ditto.
1680 (vfloat16mf2x7_t): Ditto.
1681 (vfloat16mf2x8_t): Ditto.
1682 (vfloat16m1x2_t): Ditto.
1683 (vfloat16m1x3_t): Ditto.
1684 (vfloat16m1x4_t): Ditto.
1685 (vfloat16m1x5_t): Ditto.
1686 (vfloat16m1x6_t): Ditto.
1687 (vfloat16m1x7_t): Ditto.
1688 (vfloat16m1x8_t): Ditto.
1689 (vfloat16m2x2_t): Ditto.
1690 (vfloat16m2x3_t): Ditto.
1691 (vfloat16m2x4_t): Ditto.
1692 (vfloat16m4x2_t): Ditto.
1693 * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
1694 * config/riscv/vector.md: add tuple mode in attr sew.
1695
1696 2023-07-26 Uros Bizjak <ubizjak@gmail.com>
1697
1698 PR target/110762
1699 * config/i386/i386.md (plusminusmult): New code iterator.
1700 * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
1701 (movq_<mode>_to_sse): New expander.
1702 (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
1703 subv2sf3 and mulv2sf3 using plusminusmult code iterator. Rewrite
1704 as a wrapper around V4SFmode operation.
1705 (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
1706 nonimmediate_operand.
1707 (*mmx_addv2sf3): Remove SSE alternatives. Change operand 1 and
1708 operand 2 predicates to nonimmediate_operand.
1709 (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
1710 (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
1711 (*mmx_subv2sf3): Remove SSE alternatives. Change operand 1 and
1712 operand 2 predicates to nonimmediate_operand.
1713 (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
1714 nonimmediate_operand.
1715 (*mmx_mulv2sf3): Remove SSE alternatives. Change operand 1 and
1716 operand 2 predicates to nonimmediate_operand.
1717 (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
1718 (<smaxmin:code>v2sf3): Ditto.
1719 (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
1720 predicates to nonimmediate_operand.
1721 (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives. Change
1722 operand 1 and operand 2 predicates to nonimmediate_operand.
1723 (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
1724 (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
1725 (*mmx_haddv2sf3_low): Ditto.
1726 (*mmx_hsubv2sf3_low): Ditto.
1727 (vec_addsubv2sf3): Ditto.
1728 (*mmx_maskcmpv2sf3_comm): Remove.
1729 (*mmx_maskcmpv2sf3): Remove.
1730 (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
1731 (vcond<V2FI:mode>v2sf): Ditto.
1732 (fmav2sf4): Ditto.
1733 (fmsv2sf4): Ditto.
1734 (fnmav2sf4): Ditto.
1735 (fnmsv2sf4): Ditto.
1736 (fix_truncv2sfv2si2): Ditto.
1737 (fixuns_truncv2sfv2si2): Ditto.
1738 (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
1739 Change operand 1 predicate to nonimmediate_operand.
1740 (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
1741 (floatunsv2siv2sf2): Ditto.
1742 (mmx_floatv2siv2sf2): Remove SSE alternatives.
1743 Change operand 1 predicate to nonimmediate_operand.
1744 (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
1745 (rintv2sf2): Ditto.
1746 (lrintv2sfv2si2): Ditto.
1747 (ceilv2sf2): Ditto.
1748 (lceilv2sfv2si2): Ditto.
1749 (floorv2sf2): Ditto.
1750 (lfloorv2sfv2si2): Ditto.
1751 (btruncv2sf2): Ditto.
1752 (roundv2sf2): Ditto.
1753 (lroundv2sfv2si2): Ditto.
1754 (*mmx_roundv2sf2): Remove.
1755
1756 2023-07-26 Jose E. Marchesi <jose.marchesi@oracle.com>
1757
1758 * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
1759
1760 2023-07-26 Richard Biener <rguenther@suse.de>
1761
1762 PR tree-optimization/110799
1763 * tree-ssa-pre.cc (compute_avail): More thoroughly match
1764 up TBAA behavior of redundant loads.
1765
1766 2023-07-26 Jakub Jelinek <jakub@redhat.com>
1767
1768 PR tree-optimization/110755
1769 * range-op-float.cc (frange_arithmetic): Change +0 result to -0
1770 for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
1771 it is exact op1 + (-op1) or op1 - op1.
1772
1773 2023-07-26 Kewen Lin <linkw@linux.ibm.com>
1774
1775 PR target/110741
1776 * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
1777 operands output with "x".
1778
1779 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1780
1781 * range-op.cc (class operator_absu): Add update_bitmask.
1782 (operator_absu::update_bitmask): New.
1783
1784 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1785
1786 * range-op-mixed.h (class operator_abs): Add update_bitmask.
1787 * range-op.cc (operator_abs::update_bitmask): New.
1788
1789 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1790
1791 * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
1792 * range-op.cc (operator_bitwise_not::update_bitmask): New.
1793
1794 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1795
1796 * range-op.cc (update_known_bitmask): Handle unary operators.
1797
1798 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1799
1800 * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
1801
1802 2023-07-26 Jin Ma <jinma@linux.alibaba.com>
1803
1804 * config/riscv/riscv.md: Likewise.
1805
1806 2023-07-26 Jan Hubicka <jh@suse.cz>
1807
1808 * profile-count.cc (profile_count::to_sreal_scale): Value is not know
1809 if we divide by zero.
1810
1811 2023-07-25 David Faust <david.faust@oracle.com>
1812
1813 * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
1814 enclosing parentheses for pseudo-C dialect.
1815 * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
1816 operands of pseudo-C dialect output templates where needed.
1817 (zero_extendqidi2): Likewise.
1818 (zero_extendsidi2): Likewise.
1819 (*mov<MM:mode>): Likewise.
1820
1821 2023-07-25 Aldy Hernandez <aldyh@redhat.com>
1822
1823 * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
1824 (bit_value_mult_const): Same.
1825 (get_individual_bits): Same.
1826
1827 2023-07-25 Haochen Gui <guihaoc@gcc.gnu.org>
1828
1829 PR target/103605
1830 * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
1831 fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
1832 * config/rs6000/rs6000.md (FMINMAX): New int iterator.
1833 (minmax_op): New int attribute.
1834 (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
1835 (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
1836 * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
1837 pattern to fmaxdf3.
1838 (__builtin_vsx_xsmindp): Set pattern to fmindf3.
1839
1840 2023-07-24 David Faust <david.faust@oracle.com>
1841
1842 * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
1843
1844 2023-07-24 Drew Ross <drross@redhat.com>
1845 Jakub Jelinek <jakub@redhat.com>
1846
1847 PR middle-end/109986
1848 * generic-match-head.cc (bitwise_equal_p): New macro.
1849 * gimple-match-head.cc (bitwise_equal_p): New macro.
1850 (gimple_nop_convert): Declare.
1851 (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
1852 * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
1853
1854 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
1855
1856 * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
1857 single quote rather than backquote in diagnostic.
1858
1859 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
1860
1861 PR target/110783
1862 * config/bpf/bpf.opt: New command-line option -msdiv.
1863 * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
1864 * config/bpf/bpf.cc (bpf_option_override): Initialize
1865 bpf_has_sdiv.
1866 * doc/invoke.texi (eBPF Options): Document -msdiv.
1867
1868 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
1869
1870 * config/riscv/riscv.cc (riscv_option_override): Spell out
1871 greater than and use cannot in diagnostic string.
1872
1873 2023-07-24 Richard Biener <rguenther@suse.de>
1874
1875 * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
1876 (_slp_tree::vec_stmts): Remove.
1877 (SLP_TREE_VEC_STMTS): Remove.
1878 * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
1879 (_slp_tree::_slp_tree): Adjust.
1880 (_slp_tree::~_slp_tree): Likewise.
1881 (vect_get_slp_vect_def): Simplify.
1882 (vect_get_slp_defs): Likewise.
1883 (vect_transform_slp_perm_load_1): Adjust.
1884 (vect_add_slp_permutation): Likewise.
1885 (vect_schedule_slp_node): Likewise.
1886 (vectorize_slp_instance_root_stmt): Likewise.
1887 (vect_schedule_scc): Likewise.
1888 * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
1889 (vectorizable_call): Likewise.
1890 (vectorizable_call): Likewise.
1891 (vect_create_vectorized_demotion_stmts): Likewise.
1892 (vectorizable_conversion): Likewise.
1893 (vectorizable_assignment): Likewise.
1894 (vectorizable_shift): Likewise.
1895 (vectorizable_operation): Likewise.
1896 (vectorizable_load): Likewise.
1897 (vectorizable_condition): Likewise.
1898 (vectorizable_comparison): Likewise.
1899 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
1900 (vectorize_fold_left_reduction): Use push_vec_def.
1901 (vect_transform_reduction): Likewise.
1902 (vect_transform_cycle_phi): Likewise.
1903 (vectorizable_lc_phi): Likewise.
1904 (vectorizable_phi): Likewise.
1905 (vectorizable_recurr): Likewise.
1906 (vectorizable_induction): Likewise.
1907 (vectorizable_live_operation): Likewise.
1908
1909 2023-07-24 Richard Biener <rguenther@suse.de>
1910
1911 * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
1912
1913 2023-07-24 Richard Biener <rguenther@suse.de>
1914
1915 * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
1916 * config/i386/i386-expand.cc: Likewise.
1917 * config/i386/i386-features.cc: Likewise.
1918 * config/i386/i386-options.cc: Likewise.
1919
1920 2023-07-24 Robin Dapp <rdapp@ventanamicro.com>
1921
1922 * tree-vect-stmts.cc (vectorizable_conversion): Handle
1923 more demotion/promotion for modifier == NONE.
1924
1925 2023-07-24 Roger Sayle <roger@nextmovesoftware.com>
1926
1927 PR target/110787
1928 PR target/110790
1929 Revert patch.
1930 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
1931 (extzv<mode>): Likewise.
1932 (insv<mode>): Likewise.
1933 (*testqi_ext_3): Likewise.
1934 (*btr<mode>_2): Likewise.
1935 (define_split): Likewise.
1936 (*btsq_imm): Likewise.
1937 (*btrq_imm): Likewise.
1938 (*btcq_imm): Likewise.
1939 (define_peephole2 x3): Likewise.
1940 (*bt<mode>): Likewise
1941 (*bt<mode>_mask): New define_insn_and_split.
1942 (*jcc_bt<mode>): Use QImode for offsets.
1943 (*jcc_bt<mode>_1): Delete obsolete pattern.
1944 (*jcc_bt<mode>_mask): Use QImode offsets.
1945 (*jcc_bt<mode>_mask_1): Likewise.
1946 (define_split): Likewise.
1947 (*bt<mode>_setcqi): Likewise.
1948 (*bt<mode>_setncqi): Likewise.
1949 (*bt<mode>_setnc<mode>): Likewise.
1950 (*bt<mode>_setncqi_2): Likewise.
1951 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
1952 (bmi2_bzhi_<mode>3): Use QImode offsets.
1953 (*bmi2_bzhi_<mode>3): Likewise.
1954 (*bmi2_bzhi_<mode>3_1): Likewise.
1955 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
1956 (@tbm_bextri_<mode>): Likewise.
1957
1958 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
1959
1960 * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
1961 * config/bpf/bpf.opt (mkernel): Remove option.
1962 * config/bpf/bpf.cc (bpf_target_macros): Do not define
1963 BPF_KERNEL_VERSION_CODE.
1964
1965 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
1966
1967 PR target/110786
1968 * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
1969 (mbswap): New option.
1970 * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
1971 * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
1972 * config/bpf/bpf.md: Use bswap instructions if available for
1973 bswap* insn, and fix constraint.
1974 * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
1975
1976 2023-07-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1977
1978 * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
1979 (mask_len_fold_left_plus_<mode>): Ditto.
1980 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1981 (enum reduction_type): Ditto.
1982 (expand_reduction): Add in-order reduction.
1983 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
1984 (expand_reduction): Add in-order reduction.
1985
1986 2023-07-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1987
1988 * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
1989 (vectorize_fold_left_reduction): Ditto.
1990 (vectorizable_reduction): Ditto.
1991 (vect_transform_reduction): Ditto.
1992
1993 2023-07-24 Richard Biener <rguenther@suse.de>
1994
1995 PR tree-optimization/110777
1996 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
1997 Avoid propagating abnormals.
1998
1999 2023-07-24 Richard Biener <rguenther@suse.de>
2000
2001 PR tree-optimization/110766
2002 * tree-scalar-evolution.cc
2003 (analyze_and_compute_bitwise_induction_effect): Check the PHI
2004 is defined in the loop header.
2005
2006 2023-07-24 Kewen Lin <linkw@linux.ibm.com>
2007
2008 PR tree-optimization/110740
2009 * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
2010 loop with a single scalar iteration.
2011
2012 2023-07-24 Pan Li <pan2.li@intel.com>
2013
2014 * config/riscv/riscv-vector-builtins-shapes.cc
2015 (struct alu_frm_def): Take range check.
2016
2017 2023-07-22 Vineet Gupta <vineetg@rivosinc.com>
2018
2019 PR target/110748
2020 * config/riscv/predicates.md (const_0_operand): Add back
2021 const_double.
2022
2023 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
2024
2025 * config/i386/i386-expand.cc (ix86_expand_move): Disable the
2026 64-bit insertions into TImode optimizations with -O0, unless
2027 the function has the "naked" attribute (for PR target/110533).
2028
2029 2023-07-22 Andrew Pinski <apinski@marvell.com>
2030
2031 PR target/110778
2032 * rtl.h (extended_count): Change last argument type
2033 to bool.
2034
2035 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
2036
2037 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
2038 (extzv<mode>): Likewise.
2039 (insv<mode>): Likewise.
2040 (*testqi_ext_3): Likewise.
2041 (*btr<mode>_2): Likewise.
2042 (define_split): Likewise.
2043 (*btsq_imm): Likewise.
2044 (*btrq_imm): Likewise.
2045 (*btcq_imm): Likewise.
2046 (define_peephole2 x3): Likewise.
2047 (*bt<mode>): Likewise
2048 (*bt<mode>_mask): New define_insn_and_split.
2049 (*jcc_bt<mode>): Use QImode for offsets.
2050 (*jcc_bt<mode>_1): Delete obsolete pattern.
2051 (*jcc_bt<mode>_mask): Use QImode offsets.
2052 (*jcc_bt<mode>_mask_1): Likewise.
2053 (define_split): Likewise.
2054 (*bt<mode>_setcqi): Likewise.
2055 (*bt<mode>_setncqi): Likewise.
2056 (*bt<mode>_setnc<mode>): Likewise.
2057 (*bt<mode>_setncqi_2): Likewise.
2058 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
2059 (bmi2_bzhi_<mode>3): Use QImode offsets.
2060 (*bmi2_bzhi_<mode>3): Likewise.
2061 (*bmi2_bzhi_<mode>3_1): Likewise.
2062 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
2063 (@tbm_bextri_<mode>): Likewise.
2064
2065 2023-07-22 Jeff Law <jlaw@ventanamicro.com>
2066
2067 * config/bfin/bfin.md (ones): Fix length computation.
2068
2069 2023-07-22 Vladimir N. Makarov <vmakarov@redhat.com>
2070
2071 * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
2072 (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
2073 instead of FRAME_POINTER_REGNUM to spill pseudos.
2074
2075 2023-07-21 Roger Sayle <roger@nextmovesoftware.com>
2076 Richard Biener <rguenther@suse.de>
2077
2078 PR c/110699
2079 * gimplify.cc (gimplify_compound_lval): If the array's type
2080 is error_mark_node then return GS_ERROR.
2081
2082 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
2083
2084 PR target/110770
2085 * config/bpf/bpf.opt: Added option -masm=<dialect>.
2086 * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
2087 * config/bpf/bpf.cc (bpf_print_register): New function.
2088 (bpf_print_register): Support pseudo-c syntax for registers.
2089 (bpf_print_operand_address): Likewise.
2090 * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
2091 (ASSEMBLER_DIALECT): Define.
2092 * config/bpf/bpf.md: Added pseudo-c templates.
2093 * doc/invoke.texi (-masm=): New eBPF option item.
2094
2095 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
2096
2097 * config/bpf/bpf.md: fixed template for neg instruction.
2098
2099 2023-07-21 Jan Hubicka <jh@suse.cz>
2100
2101 PR target/110727
2102 * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
2103 profiles by vectorization factor.
2104 (vect_transform_loop): Check for flat profiles.
2105
2106 2023-07-21 Jan Hubicka <jh@suse.cz>
2107
2108 * cfgloop.h (maybe_flat_loop_profile): Declare
2109 * cfgloopanal.cc (maybe_flat_loop_profile): New function.
2110 * tree-cfg.cc (print_loop_info): Print info about flat profiles.
2111
2112 2023-07-21 Jan Hubicka <jh@suse.cz>
2113
2114 * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
2115 * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
2116 * predict.cc (estimate_bb_frequencies): Likewise.
2117 * profile.cc (branch_prob): Likewise.
2118 * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
2119
2120 2023-07-21 Iain Sandoe <iain@sandoe.co.uk>
2121
2122 * config.in: Regenerate.
2123 * config/darwin.h (DARWIN_LD_DEMANGLE): New.
2124 (LINK_COMMAND_SPEC_A): Add demangle handling.
2125 * configure: Regenerate.
2126 * configure.ac: Detect linker support for '-demangle'.
2127
2128 2023-07-21 Jan Hubicka <jh@suse.cz>
2129
2130 * sreal.cc (sreal::to_nearest_int): New.
2131 (sreal_verify_basics): Verify also to_nearest_int.
2132 (verify_aritmetics): Likewise.
2133 (sreal_verify_conversions): New.
2134 (sreal_cc_tests): Call sreal_verify_conversions.
2135 * sreal.h: (sreal::to_nearest_int): Declare
2136
2137 2023-07-21 Jan Hubicka <jh@suse.cz>
2138
2139 * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
2140 (should_duplicate_loop_header_p): Return info on profitability.
2141 (do_while_loop_p): Watch for constant conditionals.
2142 (update_profile_after_ch): Do not sanity check that all
2143 static exits are taken.
2144 (ch_base::copy_headers): Run on all loops.
2145 (pass_ch::process_loop_p): Improve heuristics by handling also
2146 do_while loop and duplicating shortest sequence containing all
2147 winning blocks.
2148
2149 2023-07-21 Jan Hubicka <jh@suse.cz>
2150
2151 * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
2152 tests first; update finite_p flag.
2153
2154 2023-07-21 Jan Hubicka <jh@suse.cz>
2155
2156 * cfgloop.cc (flow_loop_dump): Use print_loop_info.
2157 * cfgloop.h (print_loop_info): Declare.
2158 * tree-cfg.cc (print_loop_info): Break out from ...; add
2159 printing of missing fields and profile
2160 (print_loop): ... here.
2161
2162 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2163
2164 * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
2165
2166 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2167
2168 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
2169 (vectorizable_operation): Ditto.
2170
2171 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2172
2173 * config/riscv/autovec.md: Align order of mask and len.
2174 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
2175 (expand_gather_scatter): Ditto.
2176 * doc/md.texi: Ditto.
2177 * internal-fn.cc (add_len_and_mask_args): Ditto.
2178 (add_mask_and_len_args): Ditto.
2179 (expand_partial_load_optab_fn): Ditto.
2180 (expand_partial_store_optab_fn): Ditto.
2181 (expand_scatter_store_optab_fn): Ditto.
2182 (expand_gather_load_optab_fn): Ditto.
2183 (internal_fn_len_index): Ditto.
2184 (internal_fn_mask_index): Ditto.
2185 (internal_len_load_store_bias): Ditto.
2186 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2187 (vectorizable_load): Ditto.
2188
2189 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2190
2191 * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
2192 (mask_len_load<mode><vm>): Ditto.
2193 (len_maskstore<mode><vm>): Ditto.
2194 (mask_len_store<mode><vm>): Ditto.
2195 (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
2196 (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
2197 (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
2198 (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
2199 (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
2200 (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
2201 (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
2202 (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
2203 (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
2204 (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
2205 (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
2206 (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
2207 (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
2208 (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
2209 (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
2210 (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
2211 (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
2212 (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
2213 (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
2214 (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
2215 (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
2216 (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
2217 (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
2218 (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
2219 (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
2220 (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
2221 (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
2222 (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
2223 * doc/md.texi: Ditto.
2224 * genopinit.cc (main): Ditto.
2225 (CMP_NAME): Ditto. Ditto.
2226 * gimple-fold.cc (arith_overflowed_p): Ditto.
2227 (gimple_fold_partial_load_store_mem_ref): Ditto.
2228 (gimple_fold_call): Ditto.
2229 * internal-fn.cc (len_maskload_direct): Ditto.
2230 (mask_len_load_direct): Ditto.
2231 (len_maskstore_direct): Ditto.
2232 (mask_len_store_direct): Ditto.
2233 (expand_call_mem_ref): Ditto.
2234 (expand_len_maskload_optab_fn): Ditto.
2235 (expand_mask_len_load_optab_fn): Ditto.
2236 (expand_len_maskstore_optab_fn): Ditto.
2237 (expand_mask_len_store_optab_fn): Ditto.
2238 (direct_len_maskload_optab_supported_p): Ditto.
2239 (direct_mask_len_load_optab_supported_p): Ditto.
2240 (direct_len_maskstore_optab_supported_p): Ditto.
2241 (direct_mask_len_store_optab_supported_p): Ditto.
2242 (internal_load_fn_p): Ditto.
2243 (internal_store_fn_p): Ditto.
2244 (internal_gather_scatter_fn_p): Ditto.
2245 (internal_fn_len_index): Ditto.
2246 (internal_fn_mask_index): Ditto.
2247 (internal_fn_stored_value_index): Ditto.
2248 (internal_len_load_store_bias): Ditto.
2249 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
2250 (MASK_LEN_GATHER_LOAD): Ditto.
2251 (LEN_MASK_LOAD): Ditto.
2252 (MASK_LEN_LOAD): Ditto.
2253 (LEN_MASK_SCATTER_STORE): Ditto.
2254 (MASK_LEN_SCATTER_STORE): Ditto.
2255 (LEN_MASK_STORE): Ditto.
2256 (MASK_LEN_STORE): Ditto.
2257 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
2258 (supports_vec_scatter_store_p): Ditto.
2259 * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
2260 (target_supports_len_load_store_p): Ditto.
2261 * optabs.def (OPTAB_CD): Ditto.
2262 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
2263 (call_may_clobber_ref_p_1): Ditto.
2264 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
2265 (dse_optimize_stmt): Ditto.
2266 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
2267 (get_alias_ptr_type_for_ptr_address): Ditto.
2268 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
2269 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
2270 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2271 (vect_get_strided_load_store_ops): Ditto.
2272 (vectorizable_store): Ditto.
2273 (vectorizable_load): Ditto.
2274
2275 2023-07-21 Haochen Jiang <haochen.jiang@intel.com>
2276
2277 * config/i386/i386.opt: Fix a typo.
2278
2279 2023-07-21 Richard Biener <rguenther@suse.de>
2280
2281 PR tree-optimization/88540
2282 * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
2283 with NaNs but handle the simple case by if-converting to a
2284 COND_EXPR.
2285
2286 2023-07-21 Andrew Pinski <apinski@marvell.com>
2287
2288 * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
2289 transformation.
2290
2291 2023-07-21 Richard Biener <rguenther@suse.de>
2292
2293 PR tree-optimization/110742
2294 * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
2295 Do not materialize an edge permutation in an external node with
2296 vector defs.
2297 (vect_slp_analyze_node_operations_1): Guard purely internal
2298 nodes better.
2299
2300 2023-07-21 Jan Hubicka <jh@suse.cz>
2301
2302 * cfgloop.cc: Include sreal.h.
2303 (flow_loop_dump): Dump sreal iteration exsitmate.
2304 (get_estimated_loop_iterations): Update.
2305 * cfgloop.h (expected_loop_iterations_by_profile): Declare.
2306 * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
2307 (expected_loop_iterations_unbounded): Use new API.
2308 * cfgloopmanip.cc (scale_loop_profile): Use
2309 expected_loop_iterations_by_profile
2310 * predict.cc (pass_profile::execute): Likewise.
2311 * profile.cc (branch_prob): Likewise.
2312 * tree-ssa-loop-niter.cc: Include sreal.h.
2313 (estimate_numbers_of_iterations): Likewise
2314
2315 2023-07-21 Kewen Lin <linkw@linux.ibm.com>
2316
2317 PR tree-optimization/110744
2318 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
2319 operand for ifn IFN_LEN_STORE.
2320
2321 2023-07-21 liuhongt <hongtao.liu@intel.com>
2322
2323 PR target/89701
2324 * common.opt: (fcf-protection=): Add EnumSet attribute to
2325 support combination of params.
2326
2327 2023-07-21 David Malcolm <dmalcolm@redhat.com>
2328
2329 PR middle-end/110612
2330 * text-art/table.cc (table_geometry::table_geometry): Drop m_table
2331 field.
2332 (table_geometry::table_x_to_canvas_x): Add cast to comparison.
2333 (table_geometry::table_y_to_canvas_y): Likewise.
2334 * text-art/table.h (table_geometry::m_table): Drop unused field.
2335 * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
2336 Add "override".
2337
2338 2023-07-20 Uros Bizjak <ubizjak@gmail.com>
2339
2340 PR target/110717
2341 * config/i386/i386-features.cc
2342 (general_scalar_chain::compute_convert_gain): Calculate gain
2343 for extend higpart case.
2344 (general_scalar_chain::convert_op): Handle
2345 ASHIFTRT/ASHIFT combined RTX.
2346 (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
2347 SImode for SSE2 targets. Handle ASHIFTRT/ASHIFT combined RTX.
2348 * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
2349 New define_insn_and_split pattern.
2350 (*extendv2di2_highpart_stv): Ditto.
2351
2352 2023-07-20 Vladimir N. Makarov <vmakarov@redhat.com>
2353
2354 * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
2355 simplification.
2356
2357 2023-07-20 Andrew Pinski <apinski@marvell.com>
2358
2359 * combine.cc (dump_combine_stats): Remove.
2360 (dump_combine_total_stats): Remove.
2361 (total_attempts, total_merges, total_extras,
2362 total_successes): Remove.
2363 (combine_instructions): Don't increment total stats
2364 instead use statistics_counter_event.
2365 * dumpfile.cc (print_combine_total_stats): Remove.
2366 * dumpfile.h (print_combine_total_stats): Remove.
2367 (dump_combine_total_stats): Remove.
2368 * passes.cc (finish_optimization_passes):
2369 Don't call print_combine_total_stats.
2370 * rtl.h (dump_combine_total_stats): Remove.
2371 (dump_combine_stats): Remove.
2372
2373 2023-07-20 Jan Hubicka <jh@suse.cz>
2374
2375 * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
2376 logical ops.
2377
2378 2023-07-20 Martin Jambor <mjambor@suse.cz>
2379
2380 * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
2381 (analyzer-text-art-ideal-canvas-width): Likewise.
2382 (analyzer-text-art-string-ellipsis-head-len): Likewise.
2383 (analyzer-text-art-string-ellipsis-tail-len): Likewise.
2384
2385 2023-07-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2386
2387 * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
2388 Refine code structure.
2389
2390 2023-07-20 Jan Hubicka <jh@suse.cz>
2391
2392 * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
2393 (get_range_query): ... this one; do
2394 (static_loop_exit): Add query parametr, turn ranger to reference.
2395 (loop_static_stmt_p): New function.
2396 (loop_static_op_p): New function.
2397 (loop_iv_derived_p): Remove.
2398 (loop_combined_static_and_iv_p): New function.
2399 (should_duplicate_loop_header_p): Discover combined onditionals;
2400 do not track iv derived; improve dumps.
2401 (pass_ch::execute): Fix whitespace.
2402
2403 2023-07-20 Richard Biener <rguenther@suse.de>
2404
2405 PR tree-optimization/110204
2406 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
2407 Look through copies generated by PRE.
2408
2409 2023-07-20 Matthew Malcomson <matthew.malcomson@arm.com>
2410
2411 * tree-vect-stmts.cc (get_group_load_store_type): Account for
2412 `gap` when checking if need to peel twice.
2413
2414 2023-07-20 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2415
2416 PR middle-end/77928
2417 * doc/extend.texi: Document iseqsig builtin.
2418 * builtins.cc (fold_builtin_iseqsig): New function.
2419 (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
2420 (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
2421 * builtins.def (BUILT_IN_ISEQSIG): New built-in.
2422
2423 2023-07-20 Pan Li <pan2.li@intel.com>
2424
2425 * config/riscv/vector.md: Fix incorrect match_operand.
2426
2427 2023-07-20 Roger Sayle <roger@nextmovesoftware.com>
2428
2429 * config/i386/i386-expand.cc (ix86_expand_move): Don't call
2430 force_reg, to use SUBREG rather than create a new pseudo when
2431 inserting DFmode fields into TImode with insvti_{high,low}part.
2432 * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
2433 define_insn_and_split...
2434 (*concatditi3_3): 64-bit implementation. Provide alternative
2435 that allows register allocation to use SSE registers that is
2436 split into vec_concatv2di after reload.
2437 (*concatsidi3_3): 32-bit implementation.
2438
2439 2023-07-20 Richard Biener <rguenther@suse.de>
2440
2441 PR middle-end/61747
2442 * internal-fn.cc (expand_vec_cond_optab_fn): When the
2443 value operands are equal to the original comparison operands
2444 preserve that equality by re-using the comparison expansion.
2445 * optabs.cc (emit_conditional_move): When the value operands
2446 are equal to the comparison operands and would be forced to
2447 a register by prepare_cmp_insn do so earlier, preserving the
2448 equality.
2449
2450 2023-07-20 Pan Li <pan2.li@intel.com>
2451
2452 * config/riscv/vector.md: Align pattern format.
2453
2454 2023-07-20 Haochen Jiang <haochen.jiang@intel.com>
2455
2456 * doc/invoke.texi: Remove AVX512VP2INTERSECT in
2457 Granite Rapids{, D} from documentation.
2458
2459 2023-07-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2460
2461 * config/riscv/autovec.md
2462 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
2463 Refactor RVV machine modes.
2464 (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
2465 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
2466 (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
2467 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
2468 (len_mask_gather_load<mode><mode>): Ditto.
2469 (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
2470 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
2471 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
2472 (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
2473 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
2474 (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
2475 (len_mask_scatter_store<mode><mode>): Ditto.
2476 (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
2477 * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
2478 (ADJUST_NUNITS): Ditto.
2479 (ADJUST_ALIGNMENT): Ditto.
2480 (ADJUST_BYTESIZE): Ditto.
2481 (ADJUST_PRECISION): Ditto.
2482 (RVV_MODES): Ditto.
2483 (RVV_WHOLE_MODES): Ditto.
2484 (RVV_FRACT_MODE): Ditto.
2485 (RVV_NF8_MODES): Ditto.
2486 (RVV_NF4_MODES): Ditto.
2487 (VECTOR_MODES_WITH_PREFIX): Ditto.
2488 (VECTOR_MODE_WITH_PREFIX): Ditto.
2489 (RVV_TUPLE_MODES): Ditto.
2490 (RVV_NF2_MODES): Ditto.
2491 (RVV_TUPLE_PARTIAL_MODES): Ditto.
2492 * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
2493 (ENTRY): Ditto.
2494 (TUPLE_ENTRY): Ditto.
2495 (get_vlmul): Ditto.
2496 (get_nf): Ditto.
2497 (get_ratio): Ditto.
2498 (preferred_simd_mode): Ditto.
2499 (autovectorize_vector_modes): Ditto.
2500 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
2501 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
2502 (vbool64_t): Ditto.
2503 (vbool32_t): Ditto.
2504 (vbool16_t): Ditto.
2505 (vbool8_t): Ditto.
2506 (vbool4_t): Ditto.
2507 (vbool2_t): Ditto.
2508 (vbool1_t): Ditto.
2509 (vint8mf8_t): Ditto.
2510 (vuint8mf8_t): Ditto.
2511 (vint8mf4_t): Ditto.
2512 (vuint8mf4_t): Ditto.
2513 (vint8mf2_t): Ditto.
2514 (vuint8mf2_t): Ditto.
2515 (vint8m1_t): Ditto.
2516 (vuint8m1_t): Ditto.
2517 (vint8m2_t): Ditto.
2518 (vuint8m2_t): Ditto.
2519 (vint8m4_t): Ditto.
2520 (vuint8m4_t): Ditto.
2521 (vint8m8_t): Ditto.
2522 (vuint8m8_t): Ditto.
2523 (vint16mf4_t): Ditto.
2524 (vuint16mf4_t): Ditto.
2525 (vint16mf2_t): Ditto.
2526 (vuint16mf2_t): Ditto.
2527 (vint16m1_t): Ditto.
2528 (vuint16m1_t): Ditto.
2529 (vint16m2_t): Ditto.
2530 (vuint16m2_t): Ditto.
2531 (vint16m4_t): Ditto.
2532 (vuint16m4_t): Ditto.
2533 (vint16m8_t): Ditto.
2534 (vuint16m8_t): Ditto.
2535 (vint32mf2_t): Ditto.
2536 (vuint32mf2_t): Ditto.
2537 (vint32m1_t): Ditto.
2538 (vuint32m1_t): Ditto.
2539 (vint32m2_t): Ditto.
2540 (vuint32m2_t): Ditto.
2541 (vint32m4_t): Ditto.
2542 (vuint32m4_t): Ditto.
2543 (vint32m8_t): Ditto.
2544 (vuint32m8_t): Ditto.
2545 (vint64m1_t): Ditto.
2546 (vuint64m1_t): Ditto.
2547 (vint64m2_t): Ditto.
2548 (vuint64m2_t): Ditto.
2549 (vint64m4_t): Ditto.
2550 (vuint64m4_t): Ditto.
2551 (vint64m8_t): Ditto.
2552 (vuint64m8_t): Ditto.
2553 (vfloat16mf4_t): Ditto.
2554 (vfloat16mf2_t): Ditto.
2555 (vfloat16m1_t): Ditto.
2556 (vfloat16m2_t): Ditto.
2557 (vfloat16m4_t): Ditto.
2558 (vfloat16m8_t): Ditto.
2559 (vfloat32mf2_t): Ditto.
2560 (vfloat32m1_t): Ditto.
2561 (vfloat32m2_t): Ditto.
2562 (vfloat32m4_t): Ditto.
2563 (vfloat32m8_t): Ditto.
2564 (vfloat64m1_t): Ditto.
2565 (vfloat64m2_t): Ditto.
2566 (vfloat64m4_t): Ditto.
2567 (vfloat64m8_t): Ditto.
2568 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
2569 (TUPLE_ENTRY): Ditto.
2570 * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
2571 * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
2572 (riscv_v_adjust_nunits): Ditto.
2573 (riscv_v_adjust_bytesize): Ditto.
2574 (riscv_v_adjust_precision): Ditto.
2575 (riscv_convert_vector_bits): Ditto.
2576 * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
2577 * config/riscv/riscv.md: Ditto.
2578 * config/riscv/vector-iterators.md: Ditto.
2579 * config/riscv/vector.md
2580 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
2581 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
2582 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
2583 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
2584 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
2585 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
2586 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
2587 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
2588 (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
2589 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
2590 (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
2591 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
2592 (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
2593 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
2594 (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
2595 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
2596 (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
2597 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
2598 (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
2599 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
2600 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
2601 (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
2602 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
2603 (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
2604 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
2605 (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
2606 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
2607 (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
2608 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
2609 (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
2610 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
2611 (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
2612 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
2613
2614 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
2615
2616 * lra-int.h (lra_update_fp2sp_elimination): New prototype.
2617 (lra_asm_insn_error): New prototype.
2618 * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
2619 existence.
2620 (lra_spill): Call lra_update_fp2sp_elimination.
2621 * lra-eliminations.cc: Remove trailing spaces.
2622 (elimination_fp2sp_occured_p): New static flag.
2623 (lra_eliminate_regs_1): Set the flag up.
2624 (update_reg_eliminate): Modify the assert for stack to frame
2625 pointer elimination.
2626 (lra_update_fp2sp_elimination): New function.
2627 (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
2628
2629 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
2630
2631 * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
2632 dependency.
2633 * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
2634 dependencies from target pragmas.
2635 * config/aarch64/arm_fp16.h (target): Likewise.
2636 * config/aarch64/arm_neon.h (target): Likewise.
2637
2638 2023-07-19 Andrew Pinski <apinski@marvell.com>
2639
2640 PR tree-optimization/110252
2641 * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
2642 (auto_flow_sensitive::auto_flow_sensitive): New constructor.
2643 (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
2644 (match_simplify_replacement): Temporarily
2645 remove the flow sensitive info on the two statements that might
2646 be moved.
2647
2648 2023-07-19 Andrew Pinski <apinski@marvell.com>
2649
2650 * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
2651 with flow_sensitive_info_storage.
2652 (follow_outer_ssa_edges): Update how to save off the flow
2653 sensitive info.
2654 (maybe_fold_comparisons_from_match_pd): Update restoring
2655 of flow sensitive info.
2656 * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
2657 (flow_sensitive_info_storage::restore): New method.
2658 (flow_sensitive_info_storage::save_and_clear): New method.
2659 (flow_sensitive_info_storage::clear_storage): New method.
2660 * tree-ssanames.h (class flow_sensitive_info_storage): New class.
2661
2662 2023-07-19 Andrew Pinski <apinski@marvell.com>
2663
2664 PR tree-optimization/110726
2665 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
2666 Add checks to make sure the type was one bit precision
2667 intergal type.
2668
2669 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2670
2671 * doc/md.texi: Add mask_len_fold_left_plus.
2672 * internal-fn.cc (mask_len_fold_left_direct): Ditto.
2673 (expand_mask_len_fold_left_optab_fn): Ditto.
2674 (direct_mask_len_fold_left_optab_supported_p): Ditto.
2675 * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
2676 * optabs.def (OPTAB_D): Ditto.
2677
2678 2023-07-19 Jakub Jelinek <jakub@redhat.com>
2679
2680 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
2681
2682 2023-07-19 Jakub Jelinek <jakub@redhat.com>
2683
2684 PR tree-optimization/110731
2685 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
2686 divisor as UNSIGNED regardless of sgn.
2687
2688 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
2689
2690 * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
2691 (standard_extensions_p): Add check.
2692 (riscv_subset_list::add): Just return NULL if it failed before.
2693 (riscv_subset_list::parse_std_ext): Continue parse when find a error
2694 (riscv_subset_list::parse): Just return NULL if it failed before.
2695 * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
2696
2697 2023-07-19 Jan Beulich <jbeulich@suse.com>
2698
2699 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
2700 Use gen_vec_set_0.
2701 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
2702 gen_vec_extract_hi.
2703 (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
2704 gen_vec_interleave_low. Rename local variable.
2705
2706 2023-07-19 Jan Beulich <jbeulich@suse.com>
2707
2708 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
2709 alternative. Move AVX512VL part of condition to new "enabled"
2710 attribute.
2711
2712 2023-07-19 liuhongt <hongtao.liu@intel.com>
2713
2714 PR target/109504
2715 * config/i386/i386-builtins.cc
2716 (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
2717 (ix86_register_bf16_builtin_type): Ditto.
2718 * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
2719 isn't available, undef the macros which are used to check the
2720 backend support of the _Float16/__bf16 types when building
2721 libstdc++ and libgcc.
2722 * config/i386/i386.cc (construct_container): Issue errors for
2723 HFmode/BFmode when TARGET_SSE2 is not available.
2724 (function_value_32): Ditto.
2725 (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
2726 (ix86_libgcc_floating_mode_supported_p): Ditto.
2727 (ix86_emit_support_tinfos): Adjust codes.
2728 (ix86_invalid_conversion): Return diagnostic message string
2729 when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
2730 (ix86_invalid_unary_op): New function.
2731 (ix86_invalid_binary_op): Ditto.
2732 (TARGET_INVALID_UNARY_OP): Define.
2733 (TARGET_INVALID_BINARY_OP): Define.
2734 * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
2735 related instrinsics header files.
2736 * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
2737
2738 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
2739
2740 * dwarf2asm.cc: Change FALSE to false.
2741 * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
2742 * dwarf2out.cc (matches_main_base): Change return type from
2743 int to bool. Change "last_match" variable to bool.
2744 (dump_struct_debug): Change return type from int to bool.
2745 Change "matches" and "result" function arguments to bool.
2746 (is_pseudo_reg): Change return type from int to bool.
2747 (is_tagged_type): Ditto.
2748 (same_loc_p): Ditto.
2749 (same_dw_val_p): Change return type from int to bool and adjust
2750 function body accordingly.
2751 (same_attr_p): Ditto.
2752 (same_die_p): Ditto.
2753 (is_type_die): Ditto.
2754 (is_declaration_die): Ditto.
2755 (should_move_die_to_comdat): Ditto.
2756 (is_base_type): Ditto.
2757 (is_based_loc): Ditto.
2758 (local_scope_p): Ditto.
2759 (class_scope_p): Ditto.
2760 (class_or_namespace_scope_p): Ditto.
2761 (is_tagged_type): Ditto.
2762 (is_rust): Use void argument.
2763 (is_nested_in_subprogram): Change return type from int to bool.
2764 (contains_subprogram_definition): Ditto.
2765 (gen_struct_or_union_type_die): Change "nested", "complete"
2766 and "ns_decl" variables to bool.
2767 (is_naming_typedef_decl): Change FALSE to false.
2768
2769 2023-07-18 Jan Hubicka <jh@suse.cz>
2770
2771 * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
2772 for queries not in headers.
2773 (static_loop_exit): Add basic blck parameter; update use of
2774 edge_range_query
2775 (should_duplicate_loop_header_p): Add ranger and static_exits
2776 parameter. Do not account statements that will be optimized
2777 out after duplicaiton in overall size. Add ranger query to
2778 find static exits.
2779 (update_profile_after_ch): Take static_exits has set instead of
2780 single eliminated_edge.
2781 (ch_base::copy_headers): Do all analysis in the first pass;
2782 remember invariant_exits and static_exits.
2783
2784 2023-07-18 Jason Merrill <jason@redhat.com>
2785
2786 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
2787
2788 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
2789
2790 * doc/gm2.texi (Semantic checking): Change example testwithptr
2791 to testnew6.
2792
2793 2023-07-18 Richard Biener <rguenther@suse.de>
2794
2795 PR middle-end/105715
2796 * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
2797 (pass_gimple_isel::execute): ... this. Duplicate
2798 comparison defs of COND_EXPRs.
2799
2800 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2801
2802 * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
2803 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
2804 (riscv_convert_vector_bits): Ditto.
2805
2806 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2807
2808 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
2809 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
2810
2811 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
2812
2813 * config/s390/vx-builtins.md: New vsel pattern.
2814
2815 2023-07-18 liuhongt <hongtao.liu@intel.com>
2816
2817 PR target/110438
2818 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
2819 Remove # from assemble output.
2820
2821 2023-07-18 liuhongt <hongtao.liu@intel.com>
2822
2823 PR target/110591
2824 * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
2825 to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
2826 3 define_peephole2 after the pattern.
2827
2828 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2829
2830 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
2831
2832 2023-07-18 Pan Li <pan2.li@intel.com>
2833 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2834
2835 * config/riscv/riscv.cc (struct machine_function): Add new field.
2836 (riscv_static_frm_mode_p): New function.
2837 (riscv_emit_frm_mode_set): New function for emit FRM.
2838 (riscv_emit_mode_set): Extract function for FRM.
2839 (riscv_mode_needed): Fix the TODO.
2840 (riscv_mode_entry): Initial dynamic frm RTL.
2841 (riscv_mode_exit): Return DYN_EXIT.
2842 * config/riscv/riscv.md: Add rdfrm.
2843 * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
2844 * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
2845 (fsrm): Removed.
2846 (fsrmsi_backup): New pattern for swap.
2847 (fsrmsi_restore): New pattern for restore.
2848 (fsrmsi_restore_exit): New pattern for restore exit.
2849 (frrmsi): New pattern for backup.
2850
2851 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
2852
2853 * doc/extend.texi: Add @cindex on __auto_type.
2854
2855 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
2856
2857 * combine-stack-adj.cc (stack_memref_p): Change return type from
2858 int to bool and adjust function body accordingly.
2859 (rest_of_handle_stack_adjustments): Change return type to void.
2860
2861 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
2862
2863 * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
2864 (cant_combine_insn_p): Change return type from int to bool and adjust
2865 function body accordingly.
2866 (can_combine_p): Ditto.
2867 (combinable_i3pat): Ditto. Change "i1_not_in_src" and "i0_not_in_src"
2868 function arguments from int to bool.
2869 (contains_muldiv): Change return type from int to bool and adjust
2870 function body accordingly.
2871 (try_combine): Ditto. Change "new_direct_jump" pointer function
2872 argument from int to bool. Change "substed_i2", "substed_i1",
2873 "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
2874 "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
2875 "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
2876 "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
2877 "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
2878 "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
2879 from int to bool.
2880 (subst): Change "in_dest", "in_cond" and "unique_copy" function
2881 arguments from int to bool.
2882 (combine_simplify_rtx): Change "in_dest" and "in_cond" function
2883 arguments from int to bool.
2884 (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
2885 function argument from int to bool.
2886 (force_int_to_mode): Change "just_select" function argument
2887 from int to bool. Change "next_select" variable to bool.
2888 (rtx_equal_for_field_assignment_p): Change return type from
2889 int to bool and adjust function body accordingly.
2890 (merge_outer_ops): Ditto. Change "pcomp_p" pointer function
2891 argument from int to bool.
2892 (get_last_value_validate): Change return type from int to bool
2893 and adjust function body accordingly.
2894 (reg_dead_at_p): Ditto.
2895 (reg_bitfield_target_p): Ditto.
2896 (combine_instructions): Ditto. Change "new_direct_jump"
2897 variable to bool.
2898 (can_combine_p): Change return type from int to bool
2899 and adjust function body accordingly.
2900 (likely_spilled_retval_p): Ditto.
2901 (can_change_dest_mode): Change "added_sets" function argument
2902 from int to bool.
2903 (find_split_point): Change "unsignedp" variable to bool.
2904 (simplify_if_then_else): Change "comparison_p" and "swapped"
2905 variables to bool.
2906 (simplify_set): Change "other_changed" variable to bool.
2907 (expand_compound_operation): Change "unsignedp" variable to bool.
2908 (force_to_mode): Change "just_select" function argument
2909 from int to bool. Change "next_select" variable to bool.
2910 (extended_count): Change "unsignedp" function argument to bool.
2911 (simplify_shift_const_1): Change "complement_p" variable to bool.
2912 (simplify_comparison): Change "changed" variable to bool.
2913 (rest_of_handle_combine): Change return type to void.
2914
2915 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
2916
2917 PR plugins/110610
2918 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
2919
2920 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
2921
2922 * ira.cc (setup_reg_class_relations): Continue
2923 if regclass cl3 is hard_reg_set_empty_p.
2924
2925 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2926
2927 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
2928
2929 2023-07-17 Martin Jambor <mjambor@suse.cz>
2930
2931 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
2932 entry_count.
2933
2934 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2935
2936 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
2937
2938 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
2939
2940 PR target/110696
2941 * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
2942 recur add all implied extensions.
2943 (riscv_subset_list::check_implied_ext): Add new method.
2944 (riscv_subset_list::parse): Call checker check_implied_ext.
2945 * config/riscv/riscv-subset.h: Add new method.
2946
2947 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2948
2949 * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
2950 (reduc_smax_scal_<mode>): Ditto.
2951 (reduc_umax_scal_<mode>): Ditto.
2952 (reduc_smin_scal_<mode>): Ditto.
2953 (reduc_umin_scal_<mode>): Ditto.
2954 (reduc_and_scal_<mode>): Ditto.
2955 (reduc_ior_scal_<mode>): Ditto.
2956 (reduc_xor_scal_<mode>): Ditto.
2957 * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
2958 (expand_reduction): New function.
2959 * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
2960 (emit_vlmax_fp_reduction_insn): Ditto.
2961 (get_m1_mode): Ditto.
2962 (expand_cond_len_binop): Fix name.
2963 (expand_reduction): New function
2964 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
2965 (validate_change_or_fail): New function.
2966 (change_insn): Fix VSETVL BUG.
2967 (change_vsetvl_insn): Ditto.
2968 (pass_vsetvl::backward_demand_fusion): Ditto.
2969 (pass_vsetvl::df_post_optimization): Ditto.
2970
2971 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2972
2973 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
2974
2975 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
2976
2977 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
2978 Remove parameter name from declaration of unused parameter.
2979
2980 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
2981
2982 PR tree-optimization/110652
2983 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
2984 NULL_TREE.
2985
2986 2023-07-17 Richard Biener <rguenther@suse.de>
2987
2988 PR tree-optimization/110669
2989 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
2990 Check we matched a header PHI.
2991
2992 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2993
2994 * tree-ssanames.cc (set_bitmask): New.
2995 * tree-ssanames.h (set_bitmask): New.
2996
2997 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2998
2999 * value-range.cc (irange_bitmask::verify_mask): Mask need not be
3000 normalized.
3001 * value-range.h (irange_bitmask::union_): Normalize beforehand.
3002 (irange_bitmask::intersect): Same.
3003
3004 2023-07-17 Andrew Pinski <apinski@marvell.com>
3005
3006 PR tree-optimization/95923
3007 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
3008
3009 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
3010
3011 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
3012 to the std::sort comparison lambda function const.
3013
3014 2023-07-17 Andrew Pinski <apinski@marvell.com>
3015
3016 PR tree-optimization/110666
3017 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
3018
3019 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
3020
3021 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
3022 Arrow Lake and Arrow Lake S.
3023 * common/config/i386/i386-common.cc:
3024 (processor_name): Add arrowlake.
3025 (processor_alias_table): Add arrow lake, arrow lake s and lunar
3026 lake.
3027 * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
3028 Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
3029 * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
3030 * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
3031 arrowlake-s.
3032 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
3033 arrowlake.
3034 * config/i386/i386-options.cc (m_ARROWLAKE): New.
3035 (processor_cost_table): Add arrowlake.
3036 * config/i386/i386.h (enum processor_type):
3037 Add PROCESSOR_ARROWLAKE.
3038 * config/i386/x86-tune.def: Add m_ARROWLAKE.
3039 * doc/extend.texi: Add arrowlake and arrowlake-s.
3040 * doc/invoke.texi: Ditto.
3041
3042 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3043
3044 * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
3045 have the same iterator. Also renaming all the occurence to
3046 VI2_AVX2_AVX512BW.
3047 (usdot_prod<mode>): New define_expand.
3048 (udot_prod<mode>): Ditto.
3049
3050 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3051
3052 * common/config/i386/cpuinfo.h (get_available_features):
3053 Detech SM4.
3054 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
3055 OPTION_MASK_ISA2_SM4_UNSET): New.
3056 (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
3057 (ix86_handle_option): Handle -msm4.
3058 * common/config/i386/i386-cpuinfo.h (enum processor_features):
3059 Add FEATURE_SM4.
3060 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
3061 sm4.
3062 * config.gcc: Add sm4intrin.h.
3063 * config/i386/cpuid.h (bit_SM4): New.
3064 * config/i386/i386-builtin.def (BDESC): Add new builtins.
3065 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
3066 __SM4__.
3067 * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
3068 * config/i386/i386-options.cc (isa2_opts): Add -msm4.
3069 (ix86_valid_target_attribute_inner_p): Handle sm4.
3070 * config/i386/i386.opt: Add option -msm4.
3071 * config/i386/immintrin.h: Include sm4intrin.h
3072 * config/i386/sse.md (vsm4key4_<mode>): New define insn.
3073 (vsm4rnds4_<mode>): Ditto.
3074 * doc/extend.texi: Document sm4.
3075 * doc/invoke.texi: Document -msm4.
3076 * doc/sourcebuild.texi: Document target sm4.
3077 * config/i386/sm4intrin.h: New file.
3078
3079 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3080
3081 * common/config/i386/cpuinfo.h (get_available_features):
3082 Detect SHA512.
3083 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
3084 OPTION_MASK_ISA2_SHA512_UNSET): New.
3085 (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
3086 (ix86_handle_option): Handle -msha512.
3087 * common/config/i386/i386-cpuinfo.h (enum processor_features):
3088 Add FEATURE_SHA512.
3089 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
3090 sha512.
3091 * config.gcc: Add sha512intrin.h.
3092 * config/i386/cpuid.h (bit_SHA512): New.
3093 * config/i386/i386-builtin-types.def:
3094 Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
3095 * config/i386/i386-builtin.def (BDESC): Add new builtins.
3096 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
3097 __SHA512__.
3098 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
3099 V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
3100 * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
3101 * config/i386/i386-options.cc (isa2_opts): Add -msha512.
3102 (ix86_valid_target_attribute_inner_p): Handle sha512.
3103 * config/i386/i386.opt: Add option -msha512.
3104 * config/i386/immintrin.h: Include sha512intrin.h.
3105 * config/i386/sse.md (vsha512msg1): New define insn.
3106 (vsha512msg2): Ditto.
3107 (vsha512rnds2): Ditto.
3108 * doc/extend.texi: Document sha512.
3109 * doc/invoke.texi: Document -msha512.
3110 * doc/sourcebuild.texi: Document target sha512.
3111 * config/i386/sha512intrin.h: New file.
3112
3113 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3114
3115 * common/config/i386/cpuinfo.h (get_available_features):
3116 Detect SM3.
3117 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
3118 OPTION_MASK_ISA2_SM3_UNSET): New.
3119 (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
3120 (ix86_handle_option): Handle -msm3.
3121 * common/config/i386/i386-cpuinfo.h (enum processor_features):
3122 Add FEATURE_SM3.
3123 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
3124 SM3.
3125 * config.gcc: Add sm3intrin.h
3126 * config/i386/cpuid.h (bit_SM3): New.
3127 * config/i386/i386-builtin-types.def:
3128 Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
3129 * config/i386/i386-builtin.def (BDESC): Add new builtins.
3130 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
3131 __SM3__.
3132 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
3133 V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
3134 * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
3135 * config/i386/i386-options.cc (isa2_opts): Add -msm3.
3136 (ix86_valid_target_attribute_inner_p): Handle sm3.
3137 * config/i386/i386.opt: Add option -msm3.
3138 * config/i386/immintrin.h: Include sm3intrin.h.
3139 * config/i386/sse.md (vsm3msg1): New define insn.
3140 (vsm3msg2): Ditto.
3141 (vsm3rnds2): Ditto.
3142 * doc/extend.texi: Document sm3.
3143 * doc/invoke.texi: Document -msm3.
3144 * doc/sourcebuild.texi: Document target sm3.
3145 * config/i386/sm3intrin.h: New file.
3146
3147 2023-07-17 Kong Lingling <lingling.kong@intel.com>
3148 Haochen Jiang <haochen.jiang@intel.com>
3149
3150 * common/config/i386/cpuinfo.h (get_available_features): Detect
3151 avxvnniint16.
3152 * common/config/i386/i386-common.cc
3153 (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
3154 (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
3155 (ix86_handle_option): Handle -mavxvnniint16.
3156 * common/config/i386/i386-cpuinfo.h (enum processor_features):
3157 Add FEATURE_AVXVNNIINT16.
3158 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
3159 avxvnniint16.
3160 * config.gcc: Add avxvnniint16.h.
3161 * config/i386/avxvnniint16intrin.h: New file.
3162 * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
3163 * config/i386/i386-builtin.def: Add new builtins.
3164 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
3165 __AVXVNNIINT16__.
3166 * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
3167 (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
3168 * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
3169 * config/i386/i386.opt: Add option -mavxvnniint16.
3170 * config/i386/immintrin.h: Include avxvnniint16.h.
3171 * config/i386/sse.md
3172 (vpdp<vpdpwprodtype>_<mode>): New define_insn.
3173 * doc/extend.texi: Document avxvnniint16.
3174 * doc/invoke.texi: Document -mavxvnniint16.
3175 * doc/sourcebuild.texi: Document target avxvnniint16.
3176
3177 2023-07-16 Jan Hubicka <jh@suse.cz>
3178
3179 PR middle-end/110649
3180 * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
3181 (vect_transform_loop): Move scale_profile_for_vect_loop after
3182 upper bound updates.
3183
3184 2023-07-16 Jan Hubicka <jh@suse.cz>
3185
3186 PR tree-optimization/110649
3187 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
3188 probability of the if-then-else construct.
3189
3190 2023-07-16 Jan Hubicka <jh@suse.cz>
3191
3192 PR middle-end/110649
3193 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
3194
3195 2023-07-15 Andrew Pinski <apinski@marvell.com>
3196
3197 * doc/contrib.texi: Update my entry.
3198
3199 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
3200
3201 * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
3202 R27_REGNUM.
3203 (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
3204 (tld_load): Likewise.
3205 (tgd_load_pic): Change to expander.
3206 (tld_load_pic, tld_offset_load, tp_load): Likewise.
3207 (tie_load_pic, tle_load): Likewise.
3208 (tgd_load_picsi, tgd_load_picdi): New.
3209 (tld_load_picsi, tld_load_picdi): New.
3210 (tld_offset_load<P:mode>): New.
3211 (tp_load<P:mode>): New.
3212 (tie_load_picsi, tie_load_picdi): New.
3213 (tle_load<P:mode>): New.
3214
3215 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3216
3217 * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
3218 (vcmlaq_rot180, vcmlaq_rot270): New.
3219 * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
3220 (vcmlaq_rot180, vcmlaq_rot270): New.
3221 * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
3222 (vcmlaq_rot180, vcmlaq_rot270): New.
3223 * config/arm/arm-mve-builtins.cc
3224 (function_instance::has_inactive_argument): Handle vcmlaq,
3225 vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
3226 * config/arm/arm_mve.h (vcmlaq): Delete.
3227 (vcmlaq_rot180): Delete.
3228 (vcmlaq_rot270): Delete.
3229 (vcmlaq_rot90): Delete.
3230 (vcmlaq_m): Delete.
3231 (vcmlaq_rot180_m): Delete.
3232 (vcmlaq_rot270_m): Delete.
3233 (vcmlaq_rot90_m): Delete.
3234 (vcmlaq_f16): Delete.
3235 (vcmlaq_rot180_f16): Delete.
3236 (vcmlaq_rot270_f16): Delete.
3237 (vcmlaq_rot90_f16): Delete.
3238 (vcmlaq_f32): Delete.
3239 (vcmlaq_rot180_f32): Delete.
3240 (vcmlaq_rot270_f32): Delete.
3241 (vcmlaq_rot90_f32): Delete.
3242 (vcmlaq_m_f32): Delete.
3243 (vcmlaq_m_f16): Delete.
3244 (vcmlaq_rot180_m_f32): Delete.
3245 (vcmlaq_rot180_m_f16): Delete.
3246 (vcmlaq_rot270_m_f32): Delete.
3247 (vcmlaq_rot270_m_f16): Delete.
3248 (vcmlaq_rot90_m_f32): Delete.
3249 (vcmlaq_rot90_m_f16): Delete.
3250 (__arm_vcmlaq_f16): Delete.
3251 (__arm_vcmlaq_rot180_f16): Delete.
3252 (__arm_vcmlaq_rot270_f16): Delete.
3253 (__arm_vcmlaq_rot90_f16): Delete.
3254 (__arm_vcmlaq_f32): Delete.
3255 (__arm_vcmlaq_rot180_f32): Delete.
3256 (__arm_vcmlaq_rot270_f32): Delete.
3257 (__arm_vcmlaq_rot90_f32): Delete.
3258 (__arm_vcmlaq_m_f32): Delete.
3259 (__arm_vcmlaq_m_f16): Delete.
3260 (__arm_vcmlaq_rot180_m_f32): Delete.
3261 (__arm_vcmlaq_rot180_m_f16): Delete.
3262 (__arm_vcmlaq_rot270_m_f32): Delete.
3263 (__arm_vcmlaq_rot270_m_f16): Delete.
3264 (__arm_vcmlaq_rot90_m_f32): Delete.
3265 (__arm_vcmlaq_rot90_m_f16): Delete.
3266 (__arm_vcmlaq): Delete.
3267 (__arm_vcmlaq_rot180): Delete.
3268 (__arm_vcmlaq_rot270): Delete.
3269 (__arm_vcmlaq_rot90): Delete.
3270 (__arm_vcmlaq_m): Delete.
3271 (__arm_vcmlaq_rot180_m): Delete.
3272 (__arm_vcmlaq_rot270_m): Delete.
3273 (__arm_vcmlaq_rot90_m): Delete.
3274
3275 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3276
3277 * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
3278 (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
3279 * config/arm/iterators.md (MVE_VCMLAQ_M): New.
3280 (mve_insn): Add vcmla.
3281 (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
3282 VCMLAQ_ROT270_M_F.
3283 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
3284 VCMLAQ_ROT270_M_F.
3285 * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
3286 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
3287 (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
3288 (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
3289 into ...
3290 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
3291
3292 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3293
3294 * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
3295 (vcmulq_rot180, vcmulq_rot270): New.
3296 * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
3297 (vcmulq_rot180, vcmulq_rot270): New.
3298 * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
3299 (vcmulq_rot180, vcmulq_rot270): New.
3300 * config/arm/arm_mve.h (vcmulq_rot90): Delete.
3301 (vcmulq_rot270): Delete.
3302 (vcmulq_rot180): Delete.
3303 (vcmulq): Delete.
3304 (vcmulq_m): Delete.
3305 (vcmulq_rot180_m): Delete.
3306 (vcmulq_rot270_m): Delete.
3307 (vcmulq_rot90_m): Delete.
3308 (vcmulq_x): Delete.
3309 (vcmulq_rot90_x): Delete.
3310 (vcmulq_rot180_x): Delete.
3311 (vcmulq_rot270_x): Delete.
3312 (vcmulq_rot90_f16): Delete.
3313 (vcmulq_rot270_f16): Delete.
3314 (vcmulq_rot180_f16): Delete.
3315 (vcmulq_f16): Delete.
3316 (vcmulq_rot90_f32): Delete.
3317 (vcmulq_rot270_f32): Delete.
3318 (vcmulq_rot180_f32): Delete.
3319 (vcmulq_f32): Delete.
3320 (vcmulq_m_f32): Delete.
3321 (vcmulq_m_f16): Delete.
3322 (vcmulq_rot180_m_f32): Delete.
3323 (vcmulq_rot180_m_f16): Delete.
3324 (vcmulq_rot270_m_f32): Delete.
3325 (vcmulq_rot270_m_f16): Delete.
3326 (vcmulq_rot90_m_f32): Delete.
3327 (vcmulq_rot90_m_f16): Delete.
3328 (vcmulq_x_f16): Delete.
3329 (vcmulq_x_f32): Delete.
3330 (vcmulq_rot90_x_f16): Delete.
3331 (vcmulq_rot90_x_f32): Delete.
3332 (vcmulq_rot180_x_f16): Delete.
3333 (vcmulq_rot180_x_f32): Delete.
3334 (vcmulq_rot270_x_f16): Delete.
3335 (vcmulq_rot270_x_f32): Delete.
3336 (__arm_vcmulq_rot90_f16): Delete.
3337 (__arm_vcmulq_rot270_f16): Delete.
3338 (__arm_vcmulq_rot180_f16): Delete.
3339 (__arm_vcmulq_f16): Delete.
3340 (__arm_vcmulq_rot90_f32): Delete.
3341 (__arm_vcmulq_rot270_f32): Delete.
3342 (__arm_vcmulq_rot180_f32): Delete.
3343 (__arm_vcmulq_f32): Delete.
3344 (__arm_vcmulq_m_f32): Delete.
3345 (__arm_vcmulq_m_f16): Delete.
3346 (__arm_vcmulq_rot180_m_f32): Delete.
3347 (__arm_vcmulq_rot180_m_f16): Delete.
3348 (__arm_vcmulq_rot270_m_f32): Delete.
3349 (__arm_vcmulq_rot270_m_f16): Delete.
3350 (__arm_vcmulq_rot90_m_f32): Delete.
3351 (__arm_vcmulq_rot90_m_f16): Delete.
3352 (__arm_vcmulq_x_f16): Delete.
3353 (__arm_vcmulq_x_f32): Delete.
3354 (__arm_vcmulq_rot90_x_f16): Delete.
3355 (__arm_vcmulq_rot90_x_f32): Delete.
3356 (__arm_vcmulq_rot180_x_f16): Delete.
3357 (__arm_vcmulq_rot180_x_f32): Delete.
3358 (__arm_vcmulq_rot270_x_f16): Delete.
3359 (__arm_vcmulq_rot270_x_f32): Delete.
3360 (__arm_vcmulq_rot90): Delete.
3361 (__arm_vcmulq_rot270): Delete.
3362 (__arm_vcmulq_rot180): Delete.
3363 (__arm_vcmulq): Delete.
3364 (__arm_vcmulq_m): Delete.
3365 (__arm_vcmulq_rot180_m): Delete.
3366 (__arm_vcmulq_rot270_m): Delete.
3367 (__arm_vcmulq_rot90_m): Delete.
3368 (__arm_vcmulq_x): Delete.
3369 (__arm_vcmulq_rot90_x): Delete.
3370 (__arm_vcmulq_rot180_x): Delete.
3371 (__arm_vcmulq_rot270_x): Delete.
3372
3373 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3374
3375 * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
3376 (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
3377 * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
3378 (MVE_VCADDQ_VCMULQ_M): New.
3379 (mve_insn): Add vcmul.
3380 (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
3381 VCMULQ_ROT270_M_F.
3382 (VCMUL): Delete.
3383 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
3384 VCMULQ_ROT270_M_F.
3385 * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
3386 @mve_<mve_insn>q<mve_rot>_f<mode>.
3387 (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
3388 (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
3389 into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
3390
3391 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3392
3393 * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
3394 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
3395 * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
3396 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
3397 * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
3398 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
3399 * config/arm/arm-mve-builtins-functions.h (class
3400 unspec_mve_function_exact_insn_rot): New.
3401 * config/arm/arm_mve.h (vcaddq_rot90): Delete.
3402 (vcaddq_rot270): Delete.
3403 (vhcaddq_rot90): Delete.
3404 (vhcaddq_rot270): Delete.
3405 (vcaddq_rot270_m): Delete.
3406 (vcaddq_rot90_m): Delete.
3407 (vhcaddq_rot270_m): Delete.
3408 (vhcaddq_rot90_m): Delete.
3409 (vcaddq_rot90_x): Delete.
3410 (vcaddq_rot270_x): Delete.
3411 (vhcaddq_rot90_x): Delete.
3412 (vhcaddq_rot270_x): Delete.
3413 (vcaddq_rot90_u8): Delete.
3414 (vcaddq_rot270_u8): Delete.
3415 (vhcaddq_rot90_s8): Delete.
3416 (vhcaddq_rot270_s8): Delete.
3417 (vcaddq_rot90_s8): Delete.
3418 (vcaddq_rot270_s8): Delete.
3419 (vcaddq_rot90_u16): Delete.
3420 (vcaddq_rot270_u16): Delete.
3421 (vhcaddq_rot90_s16): Delete.
3422 (vhcaddq_rot270_s16): Delete.
3423 (vcaddq_rot90_s16): Delete.
3424 (vcaddq_rot270_s16): Delete.
3425 (vcaddq_rot90_u32): Delete.
3426 (vcaddq_rot270_u32): Delete.
3427 (vhcaddq_rot90_s32): Delete.
3428 (vhcaddq_rot270_s32): Delete.
3429 (vcaddq_rot90_s32): Delete.
3430 (vcaddq_rot270_s32): Delete.
3431 (vcaddq_rot90_f16): Delete.
3432 (vcaddq_rot270_f16): Delete.
3433 (vcaddq_rot90_f32): Delete.
3434 (vcaddq_rot270_f32): Delete.
3435 (vcaddq_rot270_m_s8): Delete.
3436 (vcaddq_rot270_m_s32): Delete.
3437 (vcaddq_rot270_m_s16): Delete.
3438 (vcaddq_rot270_m_u8): Delete.
3439 (vcaddq_rot270_m_u32): Delete.
3440 (vcaddq_rot270_m_u16): Delete.
3441 (vcaddq_rot90_m_s8): Delete.
3442 (vcaddq_rot90_m_s32): Delete.
3443 (vcaddq_rot90_m_s16): Delete.
3444 (vcaddq_rot90_m_u8): Delete.
3445 (vcaddq_rot90_m_u32): Delete.
3446 (vcaddq_rot90_m_u16): Delete.
3447 (vhcaddq_rot270_m_s8): Delete.
3448 (vhcaddq_rot270_m_s32): Delete.
3449 (vhcaddq_rot270_m_s16): Delete.
3450 (vhcaddq_rot90_m_s8): Delete.
3451 (vhcaddq_rot90_m_s32): Delete.
3452 (vhcaddq_rot90_m_s16): Delete.
3453 (vcaddq_rot270_m_f32): Delete.
3454 (vcaddq_rot270_m_f16): Delete.
3455 (vcaddq_rot90_m_f32): Delete.
3456 (vcaddq_rot90_m_f16): Delete.
3457 (vcaddq_rot90_x_s8): Delete.
3458 (vcaddq_rot90_x_s16): Delete.
3459 (vcaddq_rot90_x_s32): Delete.
3460 (vcaddq_rot90_x_u8): Delete.
3461 (vcaddq_rot90_x_u16): Delete.
3462 (vcaddq_rot90_x_u32): Delete.
3463 (vcaddq_rot270_x_s8): Delete.
3464 (vcaddq_rot270_x_s16): Delete.
3465 (vcaddq_rot270_x_s32): Delete.
3466 (vcaddq_rot270_x_u8): Delete.
3467 (vcaddq_rot270_x_u16): Delete.
3468 (vcaddq_rot270_x_u32): Delete.
3469 (vhcaddq_rot90_x_s8): Delete.
3470 (vhcaddq_rot90_x_s16): Delete.
3471 (vhcaddq_rot90_x_s32): Delete.
3472 (vhcaddq_rot270_x_s8): Delete.
3473 (vhcaddq_rot270_x_s16): Delete.
3474 (vhcaddq_rot270_x_s32): Delete.
3475 (vcaddq_rot90_x_f16): Delete.
3476 (vcaddq_rot90_x_f32): Delete.
3477 (vcaddq_rot270_x_f16): Delete.
3478 (vcaddq_rot270_x_f32): Delete.
3479 (__arm_vcaddq_rot90_u8): Delete.
3480 (__arm_vcaddq_rot270_u8): Delete.
3481 (__arm_vhcaddq_rot90_s8): Delete.
3482 (__arm_vhcaddq_rot270_s8): Delete.
3483 (__arm_vcaddq_rot90_s8): Delete.
3484 (__arm_vcaddq_rot270_s8): Delete.
3485 (__arm_vcaddq_rot90_u16): Delete.
3486 (__arm_vcaddq_rot270_u16): Delete.
3487 (__arm_vhcaddq_rot90_s16): Delete.
3488 (__arm_vhcaddq_rot270_s16): Delete.
3489 (__arm_vcaddq_rot90_s16): Delete.
3490 (__arm_vcaddq_rot270_s16): Delete.
3491 (__arm_vcaddq_rot90_u32): Delete.
3492 (__arm_vcaddq_rot270_u32): Delete.
3493 (__arm_vhcaddq_rot90_s32): Delete.
3494 (__arm_vhcaddq_rot270_s32): Delete.
3495 (__arm_vcaddq_rot90_s32): Delete.
3496 (__arm_vcaddq_rot270_s32): Delete.
3497 (__arm_vcaddq_rot270_m_s8): Delete.
3498 (__arm_vcaddq_rot270_m_s32): Delete.
3499 (__arm_vcaddq_rot270_m_s16): Delete.
3500 (__arm_vcaddq_rot270_m_u8): Delete.
3501 (__arm_vcaddq_rot270_m_u32): Delete.
3502 (__arm_vcaddq_rot270_m_u16): Delete.
3503 (__arm_vcaddq_rot90_m_s8): Delete.
3504 (__arm_vcaddq_rot90_m_s32): Delete.
3505 (__arm_vcaddq_rot90_m_s16): Delete.
3506 (__arm_vcaddq_rot90_m_u8): Delete.
3507 (__arm_vcaddq_rot90_m_u32): Delete.
3508 (__arm_vcaddq_rot90_m_u16): Delete.
3509 (__arm_vhcaddq_rot270_m_s8): Delete.
3510 (__arm_vhcaddq_rot270_m_s32): Delete.
3511 (__arm_vhcaddq_rot270_m_s16): Delete.
3512 (__arm_vhcaddq_rot90_m_s8): Delete.
3513 (__arm_vhcaddq_rot90_m_s32): Delete.
3514 (__arm_vhcaddq_rot90_m_s16): Delete.
3515 (__arm_vcaddq_rot90_x_s8): Delete.
3516 (__arm_vcaddq_rot90_x_s16): Delete.
3517 (__arm_vcaddq_rot90_x_s32): Delete.
3518 (__arm_vcaddq_rot90_x_u8): Delete.
3519 (__arm_vcaddq_rot90_x_u16): Delete.
3520 (__arm_vcaddq_rot90_x_u32): Delete.
3521 (__arm_vcaddq_rot270_x_s8): Delete.
3522 (__arm_vcaddq_rot270_x_s16): Delete.
3523 (__arm_vcaddq_rot270_x_s32): Delete.
3524 (__arm_vcaddq_rot270_x_u8): Delete.
3525 (__arm_vcaddq_rot270_x_u16): Delete.
3526 (__arm_vcaddq_rot270_x_u32): Delete.
3527 (__arm_vhcaddq_rot90_x_s8): Delete.
3528 (__arm_vhcaddq_rot90_x_s16): Delete.
3529 (__arm_vhcaddq_rot90_x_s32): Delete.
3530 (__arm_vhcaddq_rot270_x_s8): Delete.
3531 (__arm_vhcaddq_rot270_x_s16): Delete.
3532 (__arm_vhcaddq_rot270_x_s32): Delete.
3533 (__arm_vcaddq_rot90_f16): Delete.
3534 (__arm_vcaddq_rot270_f16): Delete.
3535 (__arm_vcaddq_rot90_f32): Delete.
3536 (__arm_vcaddq_rot270_f32): Delete.
3537 (__arm_vcaddq_rot270_m_f32): Delete.
3538 (__arm_vcaddq_rot270_m_f16): Delete.
3539 (__arm_vcaddq_rot90_m_f32): Delete.
3540 (__arm_vcaddq_rot90_m_f16): Delete.
3541 (__arm_vcaddq_rot90_x_f16): Delete.
3542 (__arm_vcaddq_rot90_x_f32): Delete.
3543 (__arm_vcaddq_rot270_x_f16): Delete.
3544 (__arm_vcaddq_rot270_x_f32): Delete.
3545 (__arm_vcaddq_rot90): Delete.
3546 (__arm_vcaddq_rot270): Delete.
3547 (__arm_vhcaddq_rot90): Delete.
3548 (__arm_vhcaddq_rot270): Delete.
3549 (__arm_vcaddq_rot270_m): Delete.
3550 (__arm_vcaddq_rot90_m): Delete.
3551 (__arm_vhcaddq_rot270_m): Delete.
3552 (__arm_vhcaddq_rot90_m): Delete.
3553 (__arm_vcaddq_rot90_x): Delete.
3554 (__arm_vcaddq_rot270_x): Delete.
3555 (__arm_vhcaddq_rot90_x): Delete.
3556 (__arm_vhcaddq_rot270_x): Delete.
3557
3558 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
3559
3560 * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
3561 (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
3562 * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
3563 (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
3564 VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
3565 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
3566 VHCADDQ_ROT270_S.
3567 (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
3568 VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
3569 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
3570 VHCADDQ_ROT270_M_S.
3571 (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
3572 VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
3573 VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
3574 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
3575 (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
3576 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
3577 UNSPEC_VCADD270.
3578 (VCADDQ_ROT270_M): Delete.
3579 (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
3580 (VCADDQ_ROT90_M): Delete.
3581 * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
3582 (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
3583 into ...
3584 (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
3585 (mve_vcaddq<mve_rot><mode>): Rename into ...
3586 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
3587 (mve_vcaddq_rot270_m_<supf><mode>)
3588 (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
3589 (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
3590 (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
3591 (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
3592 into ...
3593 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
3594
3595 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
3596
3597 PR target/110588
3598 * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
3599 preparation statement over braces for a single statement.
3600 (*bt<mode>_setncqi): Likewise.
3601 (*bt<mode>_setncqi_2): New define_insn_and_split.
3602
3603 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
3604
3605 * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
3606 case inserting of 64-bit values into a TImode register, to handle
3607 both DImode and DFmode using either *insvti_lowpart_1
3608 or *isnvti_highpart_1.
3609
3610 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
3611
3612 PR target/110206
3613 * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
3614 * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
3615 * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
3616 * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
3617 when the original source contains a paradoxical subreg.
3618
3619 2023-07-14 Jan Hubicka <jh@suse.cz>
3620
3621 * passes.cc (execute_function_todo): Remove
3622 TODO_rebuild_frequencies
3623 * passes.def: Add rebuild_frequencies pass.
3624 * predict.cc (estimate_bb_frequencies): Drop
3625 force parameter.
3626 (tree_estimate_probability): Update call of
3627 estimate_bb_frequencies.
3628 (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
3629 first and do not rebuild if not necessary.
3630 (class pass_rebuild_frequencies): New.
3631 (make_pass_rebuild_frequencies): New.
3632 * profile-count.h: Add profile_count::very_large_p.
3633 * tree-inline.cc (optimize_inline_calls): Do not return
3634 TODO_rebuild_frequencies
3635 * tree-pass.h (TODO_rebuild_frequencies): Remove.
3636 (make_pass_rebuild_frequencies): Declare.
3637
3638 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3639
3640 * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
3641 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3642 (expand_cond_len_ternop): New function.
3643 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
3644 (expand_cond_len_ternop): Ditto.
3645
3646 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
3647
3648 PR target/110657
3649 * config/bpf/bpf.md: Enable instruction scheduling.
3650
3651 2023-07-14 Tamar Christina <tamar.christina@arm.com>
3652
3653 PR tree-optimization/109154
3654 * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
3655 (struct bb_predicate): Add no_predicate_stmts.
3656 (set_bb_predicate): Increase predicate count.
3657 (set_bb_predicate_gimplified_stmts): Conditionally initialize
3658 no_predicate_stmts.
3659 (get_bb_num_predicate_stmts): New.
3660 (init_bb_predicate): Initialzie no_predicate_stmts.
3661 (release_bb_predicate): Cleanup no_predicate_stmts.
3662 (insert_gimplified_predicates): Preserve no_predicate_stmts.
3663
3664 2023-07-14 Tamar Christina <tamar.christina@arm.com>
3665
3666 PR tree-optimization/109154
3667 * tree-if-conv.cc (gen_simplified_condition,
3668 gen_phi_nest_statement): New.
3669 (gen_phi_arg_condition, predicate_scalar_phi): Use it.
3670
3671 2023-07-14 Richard Biener <rguenther@suse.de>
3672
3673 * gimple.h (gimple_phi_arg): New const overload.
3674 (gimple_phi_arg_def): Make gimple arg const.
3675 (gimple_phi_arg_def_from_edge): New inline function.
3676 * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
3677 Likewise.
3678 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
3679 new inline function.
3680 (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
3681
3682 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
3683
3684 * common/config/riscv/riscv-common.cc:
3685 (riscv_implied_info): Add zihintntl item.
3686 (riscv_ext_version_table): Ditto.
3687 (riscv_ext_flag_table): Ditto.
3688 * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
3689 (TARGET_ZIHINTNTL): Ditto.
3690
3691 2023-07-14 Die Li <lidie@eswincomputing.com>
3692
3693 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
3694
3695 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
3696
3697 PR target/101469
3698 * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
3699 used by the address of the following memory operand.
3700
3701 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
3702
3703 PR target/107841
3704 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
3705 deallocate alloca-only frame.
3706
3707 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
3708
3709 PR target/110624
3710 * config/darwin.h (DARWIN_PLATFORM_ID): New.
3711 (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
3712 and SDK data to the static linker.
3713
3714 2023-07-13 Carl Love <cel@us.ibm.com>
3715
3716 * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
3717 built-in definition return type.
3718 * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
3719 define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
3720 * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
3721 argument to return FPSCR fields.
3722 * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
3723 the return value. Add description for
3724 __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
3725
3726 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
3727
3728 PR target/106966
3729 * config/alpha/alpha.cc (alpha_emit_set_long_const):
3730 Always use DImode when constructing long const.
3731
3732 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
3733
3734 * haifa-sched.cc: Change TRUE/FALSE to true/false.
3735 * ira.cc: Ditto.
3736 * lra-assigns.cc: Ditto.
3737 * lra-constraints.cc: Ditto.
3738 * sel-sched.cc: Ditto.
3739
3740 2023-07-13 Andrew Pinski <apinski@marvell.com>
3741
3742 PR tree-optimization/110293
3743 PR tree-optimization/110539
3744 * match.pd: Expand the `x != (typeof x)(x == 0)`
3745 pattern to handle where the inner and outer comparsions
3746 are either `!=` or `==` and handle other constants
3747 than 0.
3748
3749 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
3750
3751 PR middle-end/109520
3752 * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
3753 (lra_asm_insn_error): New prototype.
3754 * lra.cc: Include rtl_error.h.
3755 (lra_set_insn_recog_data): Initialize asm_reloads_num.
3756 (lra_asm_insn_error): New func whose code is taken from ...
3757 * lra-assigns.cc (lra_split_hard_reg_for): ... here. Use lra_asm_insn_error.
3758 * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
3759
3760 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3761
3762 * genmatch.cc (commutative_op): Add COND_LEN_*
3763 * internal-fn.cc (first_commutative_argument): Ditto.
3764 (CASE): Ditto.
3765 (get_unconditional_internal_fn): Ditto.
3766 (can_interpret_as_conditional_op_p): Ditto.
3767 (internal_fn_len_index): Ditto.
3768 * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
3769 * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
3770 (convert_mult_to_fma): Ditto.
3771 (math_opts_dom_walker::after_dom_children): Ditto.
3772
3773 2023-07-13 Pan Li <pan2.li@intel.com>
3774
3775 * config/riscv/riscv.cc (vxrm_rtx): New static var.
3776 (frm_rtx): Ditto.
3777 (global_state_unknown_p): Removed.
3778 (riscv_entity_mode_after): Removed.
3779 (asm_insn_p): New function.
3780 (vxrm_unknown_p): New function for fixed-point.
3781 (riscv_vxrm_mode_after): Ditto.
3782 (frm_unknown_dynamic_p): New function for floating-point.
3783 (riscv_frm_mode_after): Ditto.
3784 (riscv_mode_after): Leverage new functions.
3785
3786 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3787
3788 * tree-vect-stmts.cc (vect_model_load_cost): Remove.
3789 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
3790 calling vect_model_load_cost.
3791
3792 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3793
3794 * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
3795 handle memory_access_type VMAT_CONTIGUOUS, remove some
3796 VMAT_CONTIGUOUS_PERMUTE related handlings.
3797 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
3798 without calling vect_model_load_cost.
3799
3800 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3801
3802 * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
3803 VMAT_CONTIGUOUS_REVERSE any more.
3804 (vectorizable_load): Adjust the costing handling on
3805 VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
3806
3807 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3808
3809 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
3810 VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
3811 (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
3812 assert it will never get VMAT_LOAD_STORE_LANES.
3813
3814 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3815
3816 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
3817 VMAT_GATHER_SCATTER without calling vect_model_load_cost.
3818 (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
3819 remove VMAT_GATHER_SCATTER related handlings and the related parameter
3820 gs_info.
3821
3822 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3823
3824 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
3825 on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
3826 vect_model_load_cost.
3827 (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
3828 VMAT_STRIDED_SLP any more, and remove their related handlings.
3829
3830 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3831
3832 * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
3833 (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
3834 hoisting decision and without calling vect_model_load_cost.
3835 (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
3836 and remove VMAT_INVARIANT related handlings.
3837
3838 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3839
3840 * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
3841 on costing with one extra argument cost_vec.
3842 (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
3843 (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
3844 gs_info.decl set any more.
3845
3846 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3847
3848 * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
3849 to vect_model_load_cost down to some different transform paths
3850 according to the handlings of different vect_memory_access_types.
3851
3852 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3853
3854 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
3855
3856 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3857
3858 * config/riscv/autovec.md
3859 (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
3860 (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
3861 (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
3862 (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
3863 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
3864 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
3865 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
3866 (len_mask_gather_load<mode><mode>): Ditto.
3867 (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
3868 (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
3869 (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
3870 (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
3871 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
3872 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
3873 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
3874 (len_mask_scatter_store<mode><mode>): Ditto.
3875 * config/riscv/predicates.md (const_1_operand): New predicate.
3876 (vector_gs_scale_operand_16): Ditto.
3877 (vector_gs_scale_operand_32): Ditto.
3878 (vector_gs_scale_operand_64): Ditto.
3879 (vector_gs_extension_operand): Ditto.
3880 (vector_gs_scale_operand_16_rv32): Ditto.
3881 (vector_gs_scale_operand_32_rv32): Ditto.
3882 * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
3883 (expand_gather_scatter): New function.
3884 * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
3885 (emit_vlmax_masked_store_insn): New function.
3886 (emit_nonvlmax_masked_store_insn): Ditto.
3887 (modulo_sel_indices): Ditto.
3888 (expand_vec_perm): Fix SLP for gather/scatter.
3889 (prepare_gather_scatter): New function.
3890 (expand_gather_scatter): Ditto.
3891 * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
3892 (subreg:SI (DI CONST_POLY_INT)).
3893 * config/riscv/vector-iterators.md: Add gather/scatter.
3894 * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
3895 (@vec_duplicate<mode>): Ditto.
3896 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
3897 Fix name.
3898 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
3899
3900 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3901
3902 * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
3903 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3904 (expand_cond_len_binop): New function.
3905 * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
3906 (emit_nonvlmax_fp_tu_insn): Ditto.
3907 (need_fp_rounding_p): Ditto.
3908 (expand_cond_len_binop): Ditto.
3909 * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
3910 (TARGET_PREFERRED_ELSE_VALUE): New target hook.
3911
3912 2023-07-12 Jan Hubicka <jh@suse.cz>
3913
3914 * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
3915 (gimple_duplicate_seme_region): ... this; break out profile updating
3916 code to ...
3917 * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
3918 (ch_base::copy_headers): Update.
3919 * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
3920 (gimple_duplicate_seme_region): ... this.
3921
3922 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
3923
3924 PR tree-optimization/107043
3925 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
3926
3927 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
3928
3929 PR tree-optimization/107053
3930 * gimple-range-op.cc (cfn_popcount): Use known set bits.
3931
3932 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
3933
3934 * ira.cc (equiv_init_varies_p): Change return type from int to bool
3935 and adjust function body accordingly.
3936 (equiv_init_movable_p): Ditto.
3937 (memref_used_between_p): Ditto.
3938 * lra-constraints.cc (valid_address_p): Ditto.
3939
3940 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
3941
3942 * range-op.cc (irange_to_masked_value): Remove.
3943 (update_known_bitmask): Update irange value/mask pair instead of
3944 only updating nonzero bits.
3945
3946 2023-07-12 Jan Hubicka <jh@suse.cz>
3947
3948 * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
3949 parameter and rewrite profile updating code to handle edges elimination.
3950 * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
3951 * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
3952 (loop_iv_derived_p): New function.
3953 (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
3954 of PHIs and propagation of IV derived variables.
3955 (ch_base::copy_headers): Pass around the invariant edges hash set.
3956
3957 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
3958
3959 * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
3960 (last_active_insn): Change "skip_use_p" function argument to bool.
3961 (noce_operand_ok): Change return type from int to bool.
3962 (find_cond_trap): Ditto.
3963 (block_jumps_and_fallthru_p): Change "fallthru_p" and
3964 "jump_p" variables to bool.
3965 (noce_find_if_block): Change return type from int to bool.
3966 (cond_exec_find_if_block): Ditto.
3967 (find_if_case_1): Ditto.
3968 (find_if_case_2): Ditto.
3969 (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
3970 (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
3971 (cond_exec_process_insns): Change return type from int to bool.
3972 Change "mod_ok" function arg to bool.
3973 (cond_exec_process_if_block): Change return type from int to bool.
3974 Change "do_multiple_p" function arg to bool. Change "then_mod_ok"
3975 variable to bool.
3976 (noce_emit_store_flag): Change return type from int to bool.
3977 Change "reversep" function arg to bool. Change "cond_complex"
3978 variable to bool.
3979 (noce_try_move): Change return type from int to bool.
3980 (noce_try_ifelse_collapse): Ditto.
3981 (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
3982 (noce_try_addcc): Change return type from int to bool. Change
3983 "subtract" variable to bool.
3984 (noce_try_store_flag_constants): Change return type from int to bool.
3985 (noce_try_store_flag_mask): Ditto. Change "reversep" variable to bool.
3986 (noce_try_cmove): Change return type from int to bool.
3987 (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
3988 (noce_try_minmax): Change return type from int to bool. Change
3989 "unsignedp" variable to bool.
3990 (noce_try_abs): Change return type from int to bool. Change
3991 "negate" variable to bool.
3992 (noce_try_sign_mask): Change return type from int to bool.
3993 (noce_try_move): Ditto.
3994 (noce_try_store_flag_constants): Ditto.
3995 (noce_try_cmove): Ditto.
3996 (noce_try_cmove_arith): Ditto.
3997 (noce_try_minmax): Ditto. Change "unsignedp" variable to bool.
3998 (noce_try_bitop): Change return type from int to bool.
3999 (noce_operand_ok): Ditto.
4000 (noce_convert_multiple_sets): Ditto.
4001 (noce_convert_multiple_sets_1): Ditto.
4002 (noce_process_if_block): Ditto.
4003 (check_cond_move_block): Ditto.
4004 (cond_move_process_if_block): Ditto. Change "success_p"
4005 variable to bool.
4006 (rest_of_handle_if_conversion): Change return type to void.
4007
4008 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4009
4010 * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
4011 (CASE): Ditto.
4012 (get_conditional_len_internal_fn): New function.
4013 * internal-fn.h (get_conditional_len_internal_fn): Ditto.
4014 * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
4015 support.
4016
4017 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
4018
4019 PR target/91681
4020 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
4021
4022 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
4023
4024 PR target/91681
4025 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
4026 define_insn_and_split derived from *add<dwi>3_doubleword_concat
4027 and *add<dwi>3_doubleword_zext.
4028
4029 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
4030
4031 PR target/110598
4032 * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
4033 optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
4034 (peephole2): Simplify rega = 0; rega op= rega cases.
4035
4036 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
4037
4038 * config/i386/i386-expand.cc (ix86_expand_int_compare): If
4039 testing a TImode SUBREG of a 128-bit vector register against
4040 zero, use a PTEST instruction instead of first moving it to
4041 a pair of scalar registers.
4042
4043 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
4044
4045 * genopinit.cc (main): Adjust maximal number of optabs and
4046 machine modes.
4047 * gensupport.cc (find_optab): Shift optab by 20 and mode by
4048 10 bits.
4049 * optabs-query.h (optab_handler): Ditto.
4050 (convert_optab_handler): Ditto.
4051
4052 2023-07-12 Richard Biener <rguenther@suse.de>
4053
4054 PR tree-optimization/110630
4055 * tree-vect-slp.cc (vect_add_slp_permutation): New
4056 offset parameter, honor that for the extract code generation.
4057 (vectorizable_slp_permutation_1): Handle offsetted identities.
4058
4059 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4060
4061 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
4062 (umul<mode>3_highpart): Ditto.
4063
4064 2023-07-12 Jan Beulich <jbeulich@suse.com>
4065
4066 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
4067 alternative. Adjust original last alternative's "prefix"
4068 attribute to maybe_evex.
4069
4070 2023-07-12 Jan Beulich <jbeulich@suse.com>
4071
4072 * config/i386/sse.md (vec_dupv4sf): Make first alternative use
4073 vbroadcastss for AVX2. New AVX512F alternative.
4074 (*vec_dupv4si): New AVX2 and AVX512F alternatives using
4075 vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
4076
4077 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4078
4079 * config/riscv/peephole.md: Remove XThead* peephole passes.
4080 * config/riscv/thead.md: Include thead-peephole.md.
4081 * config/riscv/thead-peephole.md: New file.
4082
4083 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4084
4085 * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
4086 New prototype.
4087 (riscv_index_reg_class): Likewise.
4088 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
4089 (riscv_index_reg_class): New function.
4090 * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
4091 riscv_index_reg_class().
4092 (REGNO_OK_FOR_INDEX_P): Call new function
4093 riscv_regno_ok_for_index_p().
4094
4095 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4096
4097 * config/riscv/riscv-protos.h (enum riscv_address_type):
4098 New location of type definition.
4099 (struct riscv_address_info): Likewise.
4100 * config/riscv/riscv.cc (enum riscv_address_type):
4101 Old location of type definition.
4102 (struct riscv_address_info): Likewise.
4103
4104 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4105
4106 * config/riscv/riscv.h (Xmode): New macro.
4107
4108 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4109
4110 * config/riscv/riscv.cc (riscv_print_operand_address): Use
4111 output_addr_const rather than riscv_print_operand.
4112
4113 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4114
4115 * config/riscv/thead.md: Adjust constraints of th_addsl.
4116
4117 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4118
4119 * config/riscv/thead.cc (th_mempair_operands_p):
4120 Fix documentation of th_mempair_order_operands().
4121
4122 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4123
4124 * config/riscv/thead.cc (th_mempair_save_regs):
4125 Emit REG_FRAME_RELATED_EXPR notes in prologue.
4126
4127 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4128
4129 * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
4130 * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
4131 New XThead extension INSN.
4132 (*zero_extendsidi2_th_extu): New XThead extension INSN.
4133 (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
4134
4135 2023-07-12 liuhongt <hongtao.liu@intel.com>
4136
4137 PR target/110438
4138 PR target/110202
4139 * config/i386/predicates.md
4140 (int_float_vector_all_ones_operand): New predicate.
4141 * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
4142 define_insn.
4143 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
4144 Ditto.
4145 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
4146 Ditto.
4147 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
4148 define_insn_and_split to avoid false dependence.
4149 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
4150 (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
4151 of operands 1 to '0' to avoid false dependence.
4152 (*andnot<mode>3): Ditto.
4153 (iornot<mode>3): Ditto.
4154 (*<nlogic><mode>3): Ditto.
4155
4156 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
4157
4158 * common/config/i386/cpuinfo.h
4159 (get_intel_cpu): Handle Granite Rapids D.
4160 * common/config/i386/i386-common.cc:
4161 (processor_alias_table): Add graniterapids-d.
4162 * common/config/i386/i386-cpuinfo.h
4163 (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
4164 * config.gcc: Add -march=graniterapids-d.
4165 * config/i386/driver-i386.cc (host_detect_local_cpu):
4166 Handle graniterapids-d.
4167 * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
4168 * doc/extend.texi: Add graniterapids-d.
4169 * doc/invoke.texi: Ditto.
4170
4171 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
4172
4173 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
4174 Add OPTION_MASK_ISA_AVX512VL.
4175 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
4176 Ditto.
4177
4178 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4179
4180 * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
4181 * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
4182 (shuffle_compress_patterns): Ditto.
4183 (expand_vec_perm_const_1): Ditto.
4184
4185 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
4186
4187 * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
4188 * cfghooks.h (struct cfg_hooks): Change return type of
4189 verify_flow_info from integer to bool.
4190 * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
4191 (can_delete_label_p): Ditto.
4192 (rtl_verify_flow_info): Change return type from int to bool
4193 and adjust function body accordingly. Change "err" variable to bool.
4194 (rtl_verify_flow_info_1): Ditto.
4195 (free_bb_for_insn): Change return type to void.
4196 (rtl_merge_blocks): Change "b_empty" variable to bool.
4197 (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
4198 (verify_hot_cold_block_grouping): Change return type from int to bool.
4199 Change "err" variable to bool.
4200 (rtl_verify_edges): Ditto.
4201 (rtl_verify_bb_insns): Ditto.
4202 (rtl_verify_bb_pointers): Ditto.
4203 (rtl_verify_bb_insn_chain): Ditto.
4204 (rtl_verify_fallthru): Ditto.
4205 (rtl_verify_bb_layout): Ditto.
4206 (purge_all_dead_edges): Change "purged" variable to bool.
4207 * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
4208 * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
4209 (load_killed_in_block_p): Change return type from int to bool
4210 and adjust function body accordingly.
4211 (oprs_unchanged_p): Return true/false.
4212 (rest_of_handle_gcse2): Change return type to void.
4213 * tree-cfg.cc (gimple_verify_flow_info): Change return type from
4214 int to bool. Change "err" variable to bool.
4215
4216 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
4217
4218 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
4219
4220 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4221
4222 * doc/md.texi: Add COND_LEN_* operations for loop control with length.
4223 * internal-fn.cc (cond_len_unary_direct): Ditto.
4224 (cond_len_binary_direct): Ditto.
4225 (cond_len_ternary_direct): Ditto.
4226 (expand_cond_len_unary_optab_fn): Ditto.
4227 (expand_cond_len_binary_optab_fn): Ditto.
4228 (expand_cond_len_ternary_optab_fn): Ditto.
4229 (direct_cond_len_unary_optab_supported_p): Ditto.
4230 (direct_cond_len_binary_optab_supported_p): Ditto.
4231 (direct_cond_len_ternary_optab_supported_p): Ditto.
4232 * internal-fn.def (COND_LEN_ADD): Ditto.
4233 (COND_LEN_SUB): Ditto.
4234 (COND_LEN_MUL): Ditto.
4235 (COND_LEN_DIV): Ditto.
4236 (COND_LEN_MOD): Ditto.
4237 (COND_LEN_RDIV): Ditto.
4238 (COND_LEN_MIN): Ditto.
4239 (COND_LEN_MAX): Ditto.
4240 (COND_LEN_FMIN): Ditto.
4241 (COND_LEN_FMAX): Ditto.
4242 (COND_LEN_AND): Ditto.
4243 (COND_LEN_IOR): Ditto.
4244 (COND_LEN_XOR): Ditto.
4245 (COND_LEN_SHL): Ditto.
4246 (COND_LEN_SHR): Ditto.
4247 (COND_LEN_FMA): Ditto.
4248 (COND_LEN_FMS): Ditto.
4249 (COND_LEN_FNMA): Ditto.
4250 (COND_LEN_FNMS): Ditto.
4251 (COND_LEN_NEG): Ditto.
4252 * optabs.def (OPTAB_D): Ditto.
4253
4254 2023-07-11 Richard Biener <rguenther@suse.de>
4255
4256 PR tree-optimization/110614
4257 * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
4258 SLP splats are not suitable for re-align ops.
4259
4260 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
4261
4262 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
4263 MEM_P usage.
4264 (vsx_quad_dform_memory_operand): Likewise.
4265
4266 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
4267
4268 * reorg.cc (stop_search_p): Change return type from int to bool
4269 and adjust function body accordingly.
4270 (resource_conflicts_p): Ditto.
4271 (insn_references_resource_p): Change return type from int to bool.
4272 (insn_sets_resource_p): Ditto.
4273 (redirect_with_delay_slots_safe_p): Ditto.
4274 (condition_dominates_p): Change return type from int to bool
4275 and adjust function body accordingly.
4276 (redirect_with_delay_list_safe_p): Ditto.
4277 (check_annul_list_true_false): Ditto. Change "annul_true_p"
4278 function argument to bool.
4279 (steal_delay_list_from_target): Change "pannul_p" function
4280 argument to bool pointer. Change "must_annul" and "used_annul"
4281 variables from int to bool.
4282 (steal_delay_list_from_fallthrough): Ditto.
4283 (own_thread_p): Change return type from int to bool and adjust
4284 function body accordingly. Change "allow_fallthrough" function
4285 argument to bool.
4286 (reorg_redirect_jump): Change return type from int to bool.
4287 (fill_simple_delay_slots): Change "non_jumps_p" function
4288 argument from int to bool. Change "maybe_never" varible to bool.
4289 (fill_slots_from_thread): Change "likely", "thread_if_true" and
4290 "own_thread" function arguments to bool. Change "lose" and
4291 "must_annul" variables to bool.
4292 (delete_from_delay_slot): Change "had_barrier" variable to bool.
4293 (try_merge_delay_insns): Change "annul_p" variable to bool.
4294 (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
4295 variables to bool.
4296 (rest_of_handle_delay_slots): Change return type from int to void
4297 and adjust function body accordingly.
4298
4299 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
4300
4301 * doc/extend.texi (RISC-V Operand Modifiers): New.
4302
4303 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4304
4305 * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
4306 (insert_insn_end_basic_block): Ditto.
4307 (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
4308 * gcse.cc (insert_insn_end_basic_block): Export as global function.
4309 * gcse.h (insert_insn_end_basic_block): Ditto.
4310
4311 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
4312
4313 PR target/110268
4314 * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
4315 (arm_builtin_decl): Hahndle MVE builtins.
4316 * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
4317 (add_unique_function): Fix handling of
4318 __ARM_MVE_PRESERVE_USER_NAMESPACE.
4319 (add_overloaded_function): Likewise.
4320 * config/arm/arm-protos.h (builtin_decl): New declaration.
4321
4322 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
4323
4324 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
4325
4326 2023-07-10 Xi Ruoyao <xry111@xry111.site>
4327
4328 PR tree-optimization/110557
4329 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
4330 Ensure the output sign-extended if necessary.
4331
4332 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
4333
4334 * config/i386/i386.md (peephole2): Transform xchg insn with a
4335 REG_UNUSED note to a (simple) move.
4336 (*insvti_lowpart_1): New define_insn_and_split.
4337 (*insvdi_lowpart_1): Likewise.
4338
4339 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
4340
4341 * config/i386/i386-features.cc (compute_convert_gain): Tweak
4342 gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
4343 (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
4344 avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
4345
4346 2023-07-10 liuhongt <hongtao.liu@intel.com>
4347
4348 PR target/110170
4349 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
4350 splitter to detect fp max pattern.
4351 (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
4352
4353 2023-07-09 Jan Hubicka <jh@suse.cz>
4354
4355 * cfg.cc (check_bb_profile): Dump counts with relative frequency.
4356 (dump_edge_info): Likewise.
4357 (dump_bb_info): Likewise.
4358 * profile-count.cc (profile_count::dump): Add comma between quality and
4359 freq.
4360
4361 2023-07-08 Jan Hubicka <jh@suse.cz>
4362
4363 PR tree-optimization/110600
4364 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
4365
4366 2023-07-08 Jan Hubicka <jh@suse.cz>
4367
4368 PR middle-end/110590
4369 * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
4370 inner loops and be more careful about inconsistent profiles.
4371 (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
4372 exit is followed by other exit.
4373
4374 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
4375
4376 * cprop.cc (reg_available_p): Change return type from int to bool.
4377 (reg_not_set_p): Ditto.
4378 (try_replace_reg): Ditto. Change "success" variable to bool.
4379 (cprop_jump): Change return type from int to void
4380 and adjust function body accordingly.
4381 (constprop_register): Ditto.
4382 (cprop_insn): Ditto. Change "changed" variable to bool.
4383 (local_cprop_pass): Change return type from int to void
4384 and adjust function body accordingly.
4385 (bypass_block): Ditto. Change "change", "may_be_loop_header"
4386 and "removed_p" variables to bool.
4387 (bypass_conditional_jumps): Change return type from int to void
4388 and adjust function body accordingly. Change "changed"
4389 variable to bool.
4390 (one_cprop_pass): Ditto.
4391
4392 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
4393
4394 * gcse.cc (expr_equiv_p): Change return type from int to bool.
4395 (oprs_unchanged_p): Change return type from int to void
4396 and adjust function body accordingly.
4397 (oprs_anticipatable_p): Ditto.
4398 (oprs_available_p): Ditto.
4399 (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p"
4400 arguments to bool. Change "found" variable to bool.
4401 (load_killed_in_block_p): Change return type from int to void and
4402 adjust function body accordingly. Change "avail_p" argument to bool.
4403 (pre_expr_reaches_here_p): Change return type from int to void
4404 and adjust function body accordingly.
4405 (pre_delete): Ditto. Change "changed" variable to bool.
4406 (pre_gcse): Change return type from int to void
4407 and adjust function body accordingly. Change "did_insert" and
4408 "changed" variables to bool.
4409 (one_pre_gcse_pass): Change return type from int to void
4410 and adjust function body accordingly. Change "changed" variable
4411 to bool.
4412 (should_hoist_expr_to_dom): Change return type from int to void
4413 and adjust function body accordingly. Change
4414 "visited_allocated_locally" variable to bool.
4415 (hoist_code): Change return type from int to void and adjust
4416 function body accordingly. Change "changed" variable to bool.
4417 (one_code_hoisting_pass): Ditto.
4418 (pre_edge_insert): Change return type from int to void and adjust
4419 function body accordingly. Change "did_insert" variable to bool.
4420 (pre_expr_reaches_here_p_work): Change return type from int to void
4421 and adjust function body accordingly.
4422 (simple_mem): Ditto.
4423 (want_to_gcse_p): Change return type from int to void
4424 and adjust function body accordingly.
4425 (can_assign_to_reg_without_clobbers_p): Update function body
4426 for bool return type.
4427 (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
4428 (pre_insert_copies): Change "added_copy" variable to bool.
4429
4430 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
4431
4432 PR c++/110595
4433 PR c++/110596
4434 * doc/invoke.texi (Warning Options): Fix typos.
4435
4436 2023-07-07 Jan Hubicka <jh@suse.cz>
4437
4438 * profile-count.cc (profile_count::dump): Add FUN
4439 parameter; print relative frequency.
4440 (profile_count::debug): Update.
4441 * profile-count.h (profile_count::dump): Update
4442 prototype.
4443
4444 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
4445
4446 PR target/43644
4447 PR target/110533
4448 * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
4449 TImode destinations from paradoxical SUBREGs (setting the lowpart)
4450 into explicit zero extensions. Use *insvti_highpart_1 instruction
4451 to set the highpart of a TImode destination.
4452
4453 2023-07-07 Jan Hubicka <jh@suse.cz>
4454
4455 * predict.cc (force_edge_cold): Use
4456 set_edge_probability_and_rescale_others; improve dumps.
4457
4458 2023-07-07 Jan Hubicka <jh@suse.cz>
4459
4460 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
4461 after exit.
4462 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
4463 is known.
4464
4465 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
4466
4467 * config/s390/s390.cc (vec_init): Fix default case
4468
4469 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
4470
4471 * lra-assigns.cc (assign_by_spills): Add reload insns involving
4472 reload pseudos with non-refined class to be processed on the next
4473 sub-pass.
4474 * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
4475 (in_class_p): Use it.
4476 (print_curr_insn_alt): New func.
4477 (process_alt_operands): Use it. Improve debug info.
4478 (curr_insn_transform): Use print_curr_insn_alt. Refine reload
4479 pseudo class if it is not refined yet.
4480
4481 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
4482
4483 * value-range.cc (irange::get_bitmask_from_range): Return all the
4484 known bits for a singleton.
4485 (irange::set_range_from_bitmask): Set a range of a singleton when
4486 all bits are known.
4487
4488 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
4489
4490 * value-range.cc (irange::intersect): Leave normalization to
4491 caller.
4492
4493 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
4494
4495 * data-streamer-in.cc (streamer_read_value_range): Adjust for
4496 value/mask.
4497 * data-streamer-out.cc (streamer_write_vrange): Same.
4498 * range-op.cc (operator_cast::fold_range): Same.
4499 * value-range-pretty-print.cc
4500 (vrange_printer::print_irange_bitmasks): Same.
4501 * value-range-storage.cc (irange_storage::write_lengths_address):
4502 Same.
4503 (irange_storage::set_irange): Same.
4504 (irange_storage::get_irange): Same.
4505 (irange_storage::size): Same.
4506 (irange_storage::dump): Same.
4507 * value-range-storage.h: Same.
4508 * value-range.cc (debug): New.
4509 (irange_bitmask::dump): New.
4510 (add_vrange): Adjust for value/mask.
4511 (irange::operator=): Same.
4512 (irange::set): Same.
4513 (irange::verify_range): Same.
4514 (irange::operator==): Same.
4515 (irange::contains_p): Same.
4516 (irange::irange_single_pair_union): Same.
4517 (irange::union_): Same.
4518 (irange::intersect): Same.
4519 (irange::invert): Same.
4520 (irange::get_nonzero_bits_from_range): Rename to...
4521 (irange::get_bitmask_from_range): ...this.
4522 (irange::set_range_from_nonzero_bits): Rename to...
4523 (irange::set_range_from_bitmask): ...this.
4524 (irange::set_nonzero_bits): Rename to...
4525 (irange::update_bitmask): ...this.
4526 (irange::get_nonzero_bits): Rename to...
4527 (irange::get_bitmask): ...this.
4528 (irange::intersect_nonzero_bits): Rename to...
4529 (irange::intersect_bitmask): ...this.
4530 (irange::union_nonzero_bits): Rename to...
4531 (irange::union_bitmask): ...this.
4532 (irange_bitmask::verify_mask): New.
4533 * value-range.h (class irange_bitmask): New.
4534 (irange_bitmask::set_unknown): New.
4535 (irange_bitmask::unknown_p): New.
4536 (irange_bitmask::irange_bitmask): New.
4537 (irange_bitmask::get_precision): New.
4538 (irange_bitmask::get_nonzero_bits): New.
4539 (irange_bitmask::set_nonzero_bits): New.
4540 (irange_bitmask::operator==): New.
4541 (irange_bitmask::union_): New.
4542 (irange_bitmask::intersect): New.
4543 (class irange): Friend vrange_printer.
4544 (irange::varying_compatible_p): Adjust for bitmask.
4545 (irange::set_varying): Same.
4546 (irange::set_nonzero): Same.
4547
4548 2023-07-07 Jan Beulich <jbeulich@suse.com>
4549
4550 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
4551
4552 2023-07-07 Jan Beulich <jbeulich@suse.com>
4553
4554 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
4555 alternative. Switch new last alternative's "isa" attribute to
4556 "avx512vl".
4557 (vec_extract_hi_v32qi): Likewise.
4558
4559 2023-07-07 Pan Li <pan2.li@intel.com>
4560 Robin Dapp <rdapp@ventanamicro.com>
4561
4562 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
4563 when FRM_MODE_DYN.
4564 (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
4565 (riscv_mode_exit): Likewise for exit mode.
4566 (riscv_mode_needed): Likewise for needed mode.
4567 (riscv_mode_after): Likewise for after mode.
4568
4569 2023-07-07 Pan Li <pan2.li@intel.com>
4570
4571 * config/riscv/vector.md: Fix typo.
4572
4573 2023-07-06 Jan Hubicka <jh@suse.cz>
4574
4575 PR middle-end/25623
4576 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
4577 of iterations determined.
4578 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
4579
4580 2023-07-06 Jan Hubicka <jh@suse.cz>
4581
4582 * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
4583 probability update to be safe on loops with subloops.
4584 Make bound parameter to be iteration bound.
4585 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
4586 of scale_loop_profile.
4587 * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
4588
4589 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
4590
4591 PR tree-optimization/110449
4592 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
4593 vec_loop for the unrolled loop.
4594
4595 2023-07-06 Jan Hubicka <jh@suse.cz>
4596
4597 * cfg.cc (set_edge_probability_and_rescale_others): New function.
4598 (update_bb_profile_for_threading): Use it; simplify the rest.
4599 * cfg.h (set_edge_probability_and_rescale_others): Declare.
4600 * profile-count.h (profile_probability::apply_scale): New.
4601
4602 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
4603
4604 * doc/extend.texi (ARC Built-in Functions): Update documentation
4605 with missing builtins.
4606
4607 2023-07-06 Richard Biener <rguenther@suse.de>
4608
4609 PR tree-optimization/110556
4610 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
4611 assign code and all operands of non-stores.
4612
4613 2023-07-06 Richard Biener <rguenther@suse.de>
4614
4615 PR tree-optimization/110563
4616 * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
4617 Remove second argument.
4618 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
4619 Remove for_epilogue_p argument. Merge assert ...
4620 (vect_analyze_loop_2): ... with check done before determining
4621 partial vectors by moving it after.
4622 * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
4623
4624 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4625
4626 * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
4627 few things re 'reorder' option and strings.
4628 * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
4629
4630 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4631
4632 * gengtype-parse.cc: Clean up obsolete parametrized structs
4633 remnants.
4634 * gengtype.cc: Likewise.
4635 * gengtype.h: Likewise.
4636
4637 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4638
4639 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
4640 Adjust all users.
4641
4642 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4643
4644 * gengtype-parse.cc (token_names): Add '"user"'.
4645 * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
4646 'FIRST_TOKEN_WITH_VALUE'.
4647
4648 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4649
4650 * doc/gty.texi (GTY Options) <string_length>: Enhance.
4651
4652 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4653
4654 * gengtype.cc (write_root, write_roots): Explicitly reject
4655 'string_length' option.
4656 * doc/gty.texi (GTY Options) <string_length>: Document.
4657
4658 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4659
4660 * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
4661 (ggc_pch_write_object): Remove 'bool is_string' argument.
4662 * ggc-common.cc: Adjust.
4663 * ggc-page.cc: Likewise.
4664
4665 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
4666
4667 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
4668
4669 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
4670
4671 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
4672 and add description for inling of function with arch and tune
4673 attributes.
4674
4675 2023-07-06 Richard Biener <rguenther@suse.de>
4676
4677 PR tree-optimization/110515
4678 * tree-ssa-pre.cc (compute_avail): Make code dealing
4679 with hoisting loads with different alias-sets more
4680 robust.
4681
4682 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4683
4684 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
4685
4686 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
4687
4688 * config/i386/i386.cc (ix86_can_inline_p): If callee has
4689 default arch=x86-64 and tune=generic, do not block the
4690 inlining to its caller. Also allow callee with different
4691 arch= to be inlined if it has always_inline attribute and
4692 it's ISA is subset of caller's.
4693
4694 2023-07-06 liuhongt <hongtao.liu@intel.com>
4695
4696 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
4697 DF/SFmode AND/IOR/XOR/ANDN operations.
4698
4699 2023-07-06 Andrew Pinski <apinski@marvell.com>
4700
4701 PR middle-end/110554
4702 * tree-vect-generic.cc (expand_vector_condition): For comparisons,
4703 just build using boolean_type_node instead of the cond_type.
4704 For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
4705 that will feed into the COND_EXPR.
4706
4707 2023-07-06 liuhongt <hongtao.liu@intel.com>
4708
4709 PR target/110170
4710 * config/i386/i386.md (movdf_internal): Disparage slightly for
4711 2 alternatives (r,v) and (v,r) by adding constraint modifier
4712 '?'.
4713
4714 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
4715
4716 PR target/106907
4717 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
4718 initialization of new_addr.
4719
4720 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
4721
4722 PR tree-optimization/110474
4723 * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
4724 unroll factor while selecting the epilog vect loop VF.
4725
4726 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4727
4728 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
4729 call.
4730
4731 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4732
4733 * gimple-range-gori.cc (compute_operand_range): After calling
4734 compute_operand2_range, recursively call self if needed.
4735 (compute_operand2_range): Turn into a leaf function.
4736 (gori_compute::compute_operand1_and_operand2_range): Finish
4737 operand2 calculation.
4738 * gimple-range-gori.h (compute_operand2_range): Remove name param.
4739
4740 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4741
4742 * gimple-range-gori.cc (compute_operand_range): After calling
4743 compute_operand1_range, recursively call self if needed.
4744 (compute_operand1_range): Turn into a leaf function.
4745 (gori_compute::compute_operand1_and_operand2_range): Finish
4746 operand1 calculation.
4747 * gimple-range-gori.h (compute_operand1_range): Remove name param.
4748
4749 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4750
4751 * gimple-range-gori.cc (compute_operand_range): Check for
4752 operand interdependence when both op1 and op2 are computed.
4753 (compute_operand1_and_operand2_range): No checks required now.
4754
4755 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4756
4757 * gimple-range-gori.cc (compute_operand_range): Check for
4758 a relation between op1 and op2 and use that instead.
4759 (compute_operand1_range): Don't look for a relation override.
4760 (compute_operand2_range): Ditto.
4761
4762 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
4763
4764 * doc/contrib.texi (Contributors): Update my entry.
4765
4766 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
4767
4768 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
4769 prob calculation.
4770
4771 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
4772
4773 * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
4774 scehdule_more_p and contributes_to_priority indirect frunction
4775 type from int to bool.
4776 (no_real_insns_p): Change return type from int to bool.
4777 (contributes_to_priority): Ditto.
4778 * haifa-sched.cc (no_real_insns_p): Change return type from
4779 int to bool and adjust function body accordingly.
4780 * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
4781 variable type from int to bool.
4782 (ps_insn_advance_column): Change return type from int to bool.
4783 (ps_has_conflicts): Ditto. Change "has_conflicts"
4784 variable type from int to bool.
4785 * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
4786 (conditions_mutex_p): Ditto.
4787 * sched-ebb.cc (schedule_more_p): Ditto.
4788 (ebb_contributes_to_priority): Change return type from
4789 int to bool and adjust function body accordingly.
4790 * sched-rgn.cc (is_cfg_nonregular): Ditto.
4791 (check_live_1): Ditto.
4792 (is_pfree): Ditto.
4793 (find_conditional_protection): Ditto.
4794 (is_conditionally_protected): Ditto.
4795 (is_prisky): Ditto.
4796 (is_exception_free): Ditto.
4797 (haifa_find_rgns): Change "unreachable" and "too_large_failure"
4798 variables from int to bool.
4799 (extend_rgns): Change "rescan" variable from int to bool.
4800 (check_live): Change return type from
4801 int to bool and adjust function body accordingly.
4802 (can_schedule_ready_p): Ditto.
4803 (schedule_more_p): Ditto.
4804 (contributes_to_priority): Ditto.
4805
4806 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4807
4808 * doc/md.texi: Document that vec_set and vec_extract must not
4809 fail.
4810 * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
4811 (gimple_expand_vec_set_extract_expr): ...to this.
4812 (gimple_expand_vec_exprs): Call renamed function.
4813 * internal-fn.cc (vec_extract_direct): Add.
4814 (expand_vec_extract_optab_fn): New function to expand
4815 vec_extract optab.
4816 (direct_vec_extract_optab_supported_p): Add.
4817 * internal-fn.def (VEC_EXTRACT): Add.
4818 * optabs.cc (can_vec_extract_var_idx_p): New function.
4819 * optabs.h (can_vec_extract_var_idx_p): Declare.
4820
4821 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4822
4823 * config/riscv/autovec.md: Add gen_lowpart.
4824
4825 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4826
4827 * config/riscv/autovec.md: Allow register index operand.
4828
4829 2023-07-05 Pan Li <pan2.li@intel.com>
4830
4831 * config/riscv/riscv-vector-builtins.cc
4832 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
4833
4834 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4835
4836 * config/riscv/autovec.md: Use float_truncate.
4837
4838 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4839
4840 * internal-fn.cc (internal_fn_len_index): Apply
4841 LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
4842 (internal_fn_mask_index): Ditto.
4843 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
4844 (supports_vec_scatter_store_p): Ditto.
4845 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
4846 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
4847 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
4848 (vect_get_strided_load_store_ops): Ditto.
4849 (vectorizable_store): Ditto.
4850 (vectorizable_load): Ditto.
4851
4852 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4853 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4854
4855 * simplify-rtx.cc (native_encode_rtx): Ditto.
4856 (native_decode_vector_rtx): Ditto.
4857 (simplify_const_vector_byte_offset): Ditto.
4858 (simplify_const_vector_subreg): Ditto.
4859 * tree.cc (build_truth_vector_type_for_mode): Ditto.
4860 * varasm.cc (output_constant_pool_2): Ditto.
4861
4862 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
4863
4864 * config/mips/mips.cc (mips_expand_block_move): don't expand for
4865 r6 with -mno-unaligned-access option if one or both of src and
4866 dest are unaligned. restruct: return directly if length is not const.
4867 (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
4868
4869 2023-07-05 Jan Beulich <jbeulich@suse.com>
4870
4871 PR target/100711
4872 * config/i386/sse.md: New splitters to simplify
4873 not;vec_duplicate as a singular vpternlog.
4874 (one_cmpl<mode>2): Allow broadcast for operand 1.
4875 (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
4876
4877 2023-07-05 Jan Beulich <jbeulich@suse.com>
4878
4879 PR target/100711
4880 * config/i386/sse.md: New splitters to simplify
4881 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
4882
4883 2023-07-05 Jan Beulich <jbeulich@suse.com>
4884
4885 PR target/100711
4886 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
4887 form of splitter for PR target/100711.
4888
4889 2023-07-05 Richard Biener <rguenther@suse.de>
4890
4891 PR middle-end/110541
4892 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
4893 reality.
4894
4895 2023-07-05 Jan Beulich <jbeulich@suse.com>
4896
4897 PR target/93768
4898 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
4899 for memory form operand 1.
4900
4901 2023-07-05 Jan Beulich <jbeulich@suse.com>
4902
4903 PR target/93768
4904 * config/i386/i386.cc (ix86_rtx_costs): Further special-case
4905 bitwise vector operations.
4906 * config/i386/sse.md (*iornot<mode>3): New insn.
4907 (*xnor<mode>3): Likewise.
4908 (*<nlogic><mode>3): Likewise.
4909 (andor): New code iterator.
4910 (nlogic): New code attribute.
4911 (ternlog_nlogic): Likewise.
4912
4913 2023-07-05 Richard Biener <rguenther@suse.de>
4914
4915 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
4916
4917 2023-07-05 yulong <shiyulong@iscas.ac.cn>
4918
4919 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
4920
4921 2023-07-05 yulong <shiyulong@iscas.ac.cn>
4922
4923 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
4924 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
4925 (ADJUST_ALIGNMENT): Ditto.
4926 (RVV_TUPLE_PARTIAL_MODES): Ditto.
4927 (ADJUST_NUNITS): Ditto.
4928 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
4929 New types.
4930 (vfloat16mf4x3_t): Ditto.
4931 (vfloat16mf4x4_t): Ditto.
4932 (vfloat16mf4x5_t): Ditto.
4933 (vfloat16mf4x6_t): Ditto.
4934 (vfloat16mf4x7_t): Ditto.
4935 (vfloat16mf4x8_t): Ditto.
4936 (vfloat16mf2x2_t): Ditto.
4937 (vfloat16mf2x3_t): Ditto.
4938 (vfloat16mf2x4_t): Ditto.
4939 (vfloat16mf2x5_t): Ditto.
4940 (vfloat16mf2x6_t): Ditto.
4941 (vfloat16mf2x7_t): Ditto.
4942 (vfloat16mf2x8_t): Ditto.
4943 (vfloat16m1x2_t): Ditto.
4944 (vfloat16m1x3_t): Ditto.
4945 (vfloat16m1x4_t): Ditto.
4946 (vfloat16m1x5_t): Ditto.
4947 (vfloat16m1x6_t): Ditto.
4948 (vfloat16m1x7_t): Ditto.
4949 (vfloat16m1x8_t): Ditto.
4950 (vfloat16m2x2_t): Ditto.
4951 (vfloat16m2x3_t): Ditto.
4952 (vfloat16m2x4_t): Ditto.
4953 (vfloat16m4x2_t): Ditto.
4954 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
4955 (vfloat16mf4x3_t): Ditto.
4956 (vfloat16mf4x4_t): Ditto.
4957 (vfloat16mf4x5_t): Ditto.
4958 (vfloat16mf4x6_t): Ditto.
4959 (vfloat16mf4x7_t): Ditto.
4960 (vfloat16mf4x8_t): Ditto.
4961 (vfloat16mf2x2_t): Ditto.
4962 (vfloat16mf2x3_t): Ditto.
4963 (vfloat16mf2x4_t): Ditto.
4964 (vfloat16mf2x5_t): Ditto.
4965 (vfloat16mf2x6_t): Ditto.
4966 (vfloat16mf2x7_t): Ditto.
4967 (vfloat16mf2x8_t): Ditto.
4968 (vfloat16m1x2_t): Ditto.
4969 (vfloat16m1x3_t): Ditto.
4970 (vfloat16m1x4_t): Ditto.
4971 (vfloat16m1x5_t): Ditto.
4972 (vfloat16m1x6_t): Ditto.
4973 (vfloat16m1x7_t): Ditto.
4974 (vfloat16m1x8_t): Ditto.
4975 (vfloat16m2x2_t): Ditto.
4976 (vfloat16m2x3_t): Ditto.
4977 (vfloat16m2x4_t): Ditto.
4978 (vfloat16m4x2_t): Ditto.
4979 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
4980 * config/riscv/riscv.md: New.
4981 * config/riscv/vector-iterators.md: New.
4982
4983 2023-07-04 Andrew Pinski <apinski@marvell.com>
4984
4985 PR tree-optimization/110487
4986 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
4987 build a nonstandard integer and use that.
4988
4989 2023-07-04 Andrew Pinski <apinski@marvell.com>
4990
4991 * match.pd (a?-1:0): Cast type an integer type
4992 rather the type before the negative.
4993 (a?0:-1): Likewise.
4994
4995 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4996
4997 * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
4998 Change to use HARD_REG_BIT and its macros.
4999 * config/xtensa/xtensa.md
5000 (peephole2: regmove elimination during DFmode input reload):
5001 Likewise.
5002
5003 2023-07-04 Richard Biener <rguenther@suse.de>
5004
5005 PR tree-optimization/110491
5006 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
5007 whether the PHI args are possibly undefined before folding
5008 the COND_EXPR.
5009
5010 2023-07-04 Pan Li <pan2.li@intel.com>
5011 Thomas Schwinge <thomas@codesourcery.com>
5012
5013 * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
5014 bits for machine mode table.
5015 * lto-streamer-out.cc (lto_write_mode_table): Stream out the
5016 HOST machine mode bits.
5017 * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
5018 * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
5019 as the table size.
5020 * tree-streamer.h (streamer_mode_table): Ditto.
5021 (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
5022 as the packing limit.
5023 (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
5024
5025 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
5026
5027 * lto-streamer.h (class lto_input_block): Capture
5028 'lto_file_decl_data *file_data' instead of just
5029 'unsigned char *mode_table'.
5030 * ipa-devirt.cc (ipa_odr_read_section): Adjust.
5031 * ipa-fnsummary.cc (inline_read_section): Likewise.
5032 * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
5033 * ipa-modref.cc (read_section): Likewise.
5034 * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
5035 Likewise.
5036 * ipa-sra.cc (isra_read_summary_section): Likewise.
5037 * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
5038 * lto-section-in.cc (lto_create_simple_input_block): Likewise.
5039 * lto-streamer-in.cc (lto_read_body_or_constructor)
5040 (lto_input_toplevel_asms): Likewise.
5041 * tree-streamer.h (bp_unpack_machine_mode): Likewise.
5042
5043 2023-07-04 Richard Biener <rguenther@suse.de>
5044
5045 * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
5046 (empty_bb_or_one_feeding_into_p): Check for them.
5047 * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
5048 * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
5049
5050 2023-07-04 Richard Biener <rguenther@suse.de>
5051
5052 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
5053 check guarding scalar_niter underflow.
5054
5055 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
5056
5057 PR tree-optimization/110531
5058 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
5059 slp_done_for_suggested_uf to false.
5060
5061 2023-07-04 Richard Biener <rguenther@suse.de>
5062
5063 PR tree-optimization/110228
5064 * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
5065 Mark SSA may-undefs.
5066 (bb_no_side_effects_p): Check stmt uses for undefs.
5067
5068 2023-07-04 Richard Biener <rguenther@suse.de>
5069
5070 PR tree-optimization/110436
5071 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
5072 force live but not relevant pattern stmts relevant.
5073
5074 2023-07-04 Lili Cui <lili.cui@intel.com>
5075
5076 * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
5077 * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
5078
5079 2023-07-04 Richard Biener <rguenther@suse.de>
5080
5081 PR middle-end/110495
5082 * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
5083 since we do not set TREE_OVERFLOW on those since the
5084 introduction of VL vectors.
5085 * match.pd (x +- CST +- CST): For VECTOR_CST do not look
5086 at TREE_OVERFLOW to determine validity of association.
5087
5088 2023-07-04 Richard Biener <rguenther@suse.de>
5089
5090 PR tree-optimization/110310
5091 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
5092 Move costing part ...
5093 (vect_analyze_loop_costing): ... here. Integrate better
5094 estimate for epilogues from ...
5095 (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
5096 with actual epilogue status.
5097 * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
5098 avoid cancelling epilogue vectorization.
5099 (vect_update_epilogue_niters): Remove. No longer update
5100 epilogue LOOP_VINFO_NITERS.
5101
5102 2023-07-04 Pan Li <pan2.li@intel.com>
5103
5104 Revert:
5105 2023-07-03 Pan Li <pan2.li@intel.com>
5106
5107 * config/riscv/vector.md: Fix typo.
5108
5109 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5110
5111 * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
5112 * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
5113 (expand_gather_load_optab_fn): Ditto.
5114 (internal_load_fn_p): Ditto.
5115 (internal_store_fn_p): Ditto.
5116 (internal_gather_scatter_fn_p): Ditto.
5117 (internal_fn_len_index): Ditto.
5118 (internal_fn_mask_index): Ditto.
5119 (internal_fn_stored_value_index): Ditto.
5120 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
5121 (LEN_MASK_SCATTER_STORE): Ditto.
5122 * optabs.def (OPTAB_CD): Ditto.
5123
5124 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5125
5126 * config/riscv/riscv-vsetvl.cc
5127 (vector_insn_info::parse_insn): Add early break.
5128
5129 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
5130
5131 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
5132 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
5133
5134 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
5135
5136 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
5137
5138 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
5139
5140 * common/config/riscv/riscv-common.cc: Add support for zvbb,
5141 zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
5142 zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
5143 * config/riscv/arch-canonicalize: Add canonicalization info for
5144 zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
5145 * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
5146 (MASK_ZVBC): Likewise.
5147 (TARGET_ZVBB): Likewise.
5148 (TARGET_ZVBC): Likewise.
5149 (MASK_ZVKG): Likewise.
5150 (MASK_ZVKNED): Likewise.
5151 (MASK_ZVKNHA): Likewise.
5152 (MASK_ZVKNHB): Likewise.
5153 (MASK_ZVKSED): Likewise.
5154 (MASK_ZVKSH): Likewise.
5155 (MASK_ZVKN): Likewise.
5156 (MASK_ZVKNC): Likewise.
5157 (MASK_ZVKNG): Likewise.
5158 (MASK_ZVKS): Likewise.
5159 (MASK_ZVKSC): Likewise.
5160 (MASK_ZVKSG): Likewise.
5161 (MASK_ZVKT): Likewise.
5162 (TARGET_ZVKG): Likewise.
5163 (TARGET_ZVKNED): Likewise.
5164 (TARGET_ZVKNHA): Likewise.
5165 (TARGET_ZVKNHB): Likewise.
5166 (TARGET_ZVKSED): Likewise.
5167 (TARGET_ZVKSH): Likewise.
5168 (TARGET_ZVKN): Likewise.
5169 (TARGET_ZVKNC): Likewise.
5170 (TARGET_ZVKNG): Likewise.
5171 (TARGET_ZVKS): Likewise.
5172 (TARGET_ZVKSC): Likewise.
5173 (TARGET_ZVKSG): Likewise.
5174 (TARGET_ZVKT): Likewise.
5175 * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
5176
5177 2023-07-03 Andrew Pinski <apinski@marvell.com>
5178
5179 PR middle-end/110510
5180 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
5181
5182 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
5183
5184 * config/darwin.h: Avoid duplicate multiply_defined specs on
5185 earlier Darwin versions with shared libgcc.
5186
5187 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
5188
5189 * tree.h (tree_int_cst_equal): Change return type from int to bool.
5190 (operand_equal_for_phi_arg_p): Ditto.
5191 (tree_map_base_marked_p): Ditto.
5192 * tree.cc (contains_placeholder_p): Update function body
5193 for bool return type.
5194 (type_cache_hasher::equal): Ditto.
5195 (tree_map_base_hash): Change return type
5196 from int to void and adjust function body accordingly.
5197 (tree_int_cst_equal): Ditto.
5198 (operand_equal_for_phi_arg_p): Ditto.
5199 (get_narrower): Change "first" variable to bool.
5200 (cl_option_hasher::equal): Update function body for bool return type.
5201 * ggc.h (ggc_set_mark): Change return type from int to bool.
5202 (ggc_marked_p): Ditto.
5203 * ggc-page.cc (gt_ggc_mx): Change return type
5204 from int to void and adjust function body accordingly.
5205 (ggc_set_mark): Ditto.
5206
5207 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5208
5209 * config/riscv/autovec.md: Change order of
5210 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
5211 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
5212 * doc/md.texi: Ditto.
5213 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
5214 * internal-fn.cc (len_maskload_direct): Ditto.
5215 (len_maskstore_direct): Ditto.
5216 (add_len_and_mask_args): New function.
5217 (expand_partial_load_optab_fn): Change order of
5218 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
5219 (expand_partial_store_optab_fn): Ditto.
5220 (internal_fn_len_index): New function.
5221 (internal_fn_mask_index): Change order of
5222 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
5223 (internal_fn_stored_value_index): Ditto.
5224 (internal_len_load_store_bias): Ditto.
5225 * internal-fn.h (internal_fn_len_index): New function.
5226 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
5227 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
5228 * tree-vect-stmts.cc (vectorizable_store): Ditto.
5229 (vectorizable_load): Ditto.
5230
5231 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
5232
5233 PR modula2/110125
5234 * doc/gm2.texi (Semantic checking): Include examples using
5235 -Wuninit-variable-checking.
5236
5237 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5238
5239 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
5240 (*single_widen_fnma<mode>): Ditto.
5241 (*double_widen_fms<mode>): Ditto.
5242 (*single_widen_fms<mode>): Ditto.
5243 (*double_widen_fnms<mode>): Ditto.
5244 (*single_widen_fnms<mode>): Ditto.
5245
5246 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5247
5248 * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
5249 into "*" in pattern name which simplifies build files.
5250 (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
5251 (*pred_single_widen_mul<mode>): New pattern.
5252
5253 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
5254
5255 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
5256 the index to be 0 or 1.
5257
5258 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
5259
5260 Revert:
5261 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5262
5263 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
5264 (*single_widen_fnma<mode>): Ditto.
5265 (*double_widen_fms<mode>): Ditto.
5266 (*single_widen_fms<mode>): Ditto.
5267 (*double_widen_fnms<mode>): Ditto.
5268 (*single_widen_fnms<mode>): Ditto.
5269
5270 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5271
5272 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
5273 (*single_widen_fnma<mode>): Ditto.
5274 (*double_widen_fms<mode>): Ditto.
5275 (*single_widen_fms<mode>): Ditto.
5276 (*double_widen_fnms<mode>): Ditto.
5277 (*single_widen_fnms<mode>): Ditto.
5278
5279 2023-07-03 Pan Li <pan2.li@intel.com>
5280
5281 * config/riscv/vector.md: Fix typo.
5282
5283 2023-07-03 Richard Biener <rguenther@suse.de>
5284
5285 PR tree-optimization/110506
5286 * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
5287 TYPE_PRECISION access with INTEGRAL_TYPE_P check.
5288
5289 2023-07-03 Richard Biener <rguenther@suse.de>
5290
5291 PR tree-optimization/110506
5292 * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
5293 type before relying on TYPE_PRECISION to produce a nonzero mask.
5294
5295 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5296
5297 * config/mips/mips.md(*and<mode>3_mips16): Generates
5298 ZEB/ZEH instructions.
5299
5300 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5301
5302 * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
5303 address register to M16_REGS for MIPS16.
5304 (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
5305 (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
5306 (AVAIL_NON_MIPS16 (cache..)): Update to
5307 AVAIL_MIPS16E2_OR_NON_MIPS16.
5308 * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
5309 * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
5310
5311 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5312
5313 * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
5314 for ISA_HAS_MIPS16E2.
5315 (ISA_HAS_SYNC): Same as above.
5316 (ISA_HAS_LL_SC): Same as above.
5317
5318 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5319
5320 * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
5321 Add logics for generating instruction.
5322 * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
5323 * config/mips/mips.md(mov_<load>l): Generates instructions.
5324 (mov_<load>r): Same as above.
5325 (mov_<store>l): Adjusted for the conditions above.
5326 (mov_<store>r): Same as above.
5327 (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
5328 (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
5329
5330 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5331
5332 * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
5333 (mips_const_insns): Same as above.
5334 (mips_output_move): Same as above.
5335 (mips_output_function_prologue): Same as above.
5336 * config/mips/mips.md: Same as above
5337
5338 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5339
5340 * config/mips/constraints.md(Yz): New constraints for mips16e2.
5341 * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
5342 (mips_bit_clear_info): Same as above.
5343 * config/mips/mips.cc(mips_bit_clear_info): New function for
5344 generating instructions.
5345 (mips_bit_clear_p): Same as above.
5346 * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
5347 * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
5348 (*and<mode>3): Generates INS instruction.
5349 (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
5350 (ior<mode>3): Add logics for ORI instruction.
5351 (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
5352 (*ior<mode>3_mips16): Add logics for XORI instruction.
5353 (*xor<mode>3_mips16): Generates XORI instrucion.
5354 (*extzv<mode>): Add logics for EXT instruction.
5355 (*insv<mode>): Add logics for INS instruction.
5356 * config/mips/predicates.md(bit_clear_operand): New predicate for
5357 generating bitwise instructions.
5358 (and_reg_operand): Add logics for generating bitwise instructions.
5359
5360 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5361
5362 * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
5363 that uses global pointer register.
5364 (mips16_unextended_reference_p): Same as above.
5365 (mips_pic_base_register): Same as above.
5366 (mips_init_relocs): Same as above.
5367 * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
5368 (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
5369 * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
5370 (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
5371
5372 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5373
5374 * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
5375 * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
5376 (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
5377 (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
5378 (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
5379 * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
5380
5381 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5382
5383 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
5384 for output file.
5385 * config/mips/mips.h(__mips_mips16e2): Defined a new
5386 predefine macro.
5387 (ISA_HAS_MIPS16E2): Defined a new macro.
5388 (ASM_SPEC): Pass mmips16e2 to the assembler.
5389 * config/mips/mips.opt: Add -m(no-)mips16e2 option.
5390 * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
5391 * doc/invoke.texi: Add -m(no-)mips16e2 option..
5392
5393 2023-07-02 Jakub Jelinek <jakub@redhat.com>
5394
5395 PR tree-optimization/110508
5396 * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
5397 REALPART_EXPR opf nlhs if re2 is non-NULL.
5398
5399 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5400
5401 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
5402 Simplify.
5403 * config/xtensa/xtensa.md (*xtensa_clamps):
5404 Add TARGET_MINMAX to the condition.
5405
5406 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5407
5408 * config/xtensa/xtensa.md (*eqne_INT_MIN):
5409 Add missing ":SI" to the match_operator.
5410
5411 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
5412
5413 PR target/108743
5414 * config/darwin.opt: Add fconstant-cfstrings alias to
5415 mconstant-cfstrings.
5416 * doc/invoke.texi: Amend invocation descriptions to reflect
5417 that the fconstant-cfstrings is a target-option alias and to
5418 add the missing mconstant-cfstrings option description to the
5419 Darwin section.
5420
5421 2023-07-01 Jan Hubicka <jh@suse.cz>
5422
5423 * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
5424 parmaeter; update profile.
5425 * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
5426 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
5427 (static_loop_exit): ... this; return the edge to be elliminated.
5428 (ch_base::copy_headers): Handle profile updating for eliminated exits.
5429
5430 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
5431
5432 * config/i386/i386-features.cc (compute_convert_gain): Provide
5433 gains/costs for ROTATE and ROTATERT (by an integer constant).
5434 (general_scalar_chain::convert_rotate): New helper function to
5435 convert a DImode or SImode rotation by an integer constant into
5436 SSE vector form.
5437 (general_scalar_chain::convert_insn): Call the new convert_rotate
5438 for ROTATE and ROTATERT.
5439 (general_scalar_to_vector_candidate_p): Consider ROTATE and
5440 ROTATERT to be candidates if the second operand is an integer
5441 constant, valid for a rotation (or shift) in the given mode.
5442 * config/i386/i386-features.h (general_scalar_chain): Add new
5443 helper method convert_rotate.
5444
5445 2023-07-01 Jan Hubicka <jh@suse.cz>
5446
5447 PR tree-optimization/103680
5448 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
5449 make message clearer.
5450
5451 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
5452
5453 PR tree-optimization/101832
5454 * tree-object-size.cc (addr_object_size): Handle structure/union type
5455 when it has flexible size.
5456
5457 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
5458
5459 * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
5460 (fold_nonarray_ctor_reference): Likewise. Specifically deal
5461 with integral bit-fields.
5462 (fold_ctor_reference): Make sure that the constructor uses the
5463 native storage order.
5464
5465 2023-06-30 Jan Hubicka <jh@suse.cz>
5466
5467 PR middle-end/109849
5468 * predict.cc (estimate_bb_frequencies): Turn to static function.
5469 (expr_expected_value_1): Fix handling of binary expressions with
5470 predicted values.
5471 * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
5472 (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
5473 queue.
5474 * predict.h (estimate_bb_frequencies): No longer declare it.
5475
5476 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
5477
5478 * fold-const.h (multiple_of_p): Change return type from int to bool.
5479 * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
5480 neg_conp_p and neg_var_p variables to bool.
5481 (const_binop): Change sat_p variable to bool.
5482 (merge_ranges): Change no_overlap variable to bool.
5483 (extract_muldiv_1): Change same_p variable to bool.
5484 (tree_swap_operands_p): Update function body for bool return type.
5485 (fold_truth_andor): Change commutative variable to bool.
5486 (multiple_of_p): Change return type
5487 from int to void and adjust function body accordingly.
5488 * optabs.h (expand_twoval_unop): Change return type from int to bool.
5489 (expand_twoval_binop): Ditto.
5490 (can_compare_p): Ditto.
5491 (have_add2_insn): Ditto.
5492 (have_addptr3_insn): Ditto.
5493 (have_sub2_insn): Ditto.
5494 (have_insn_for): Ditto.
5495 * optabs.cc (add_equal_note): Ditto.
5496 (widen_operand): Change no_extend argument from int to bool.
5497 (expand_binop): Ditto.
5498 (expand_twoval_unop): Change return type
5499 from int to void and adjust function body accordingly.
5500 (expand_twoval_binop): Ditto.
5501 (can_compare_p): Ditto.
5502 (have_add2_insn): Ditto.
5503 (have_addptr3_insn): Ditto.
5504 (have_sub2_insn): Ditto.
5505 (have_insn_for): Ditto.
5506
5507 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5508
5509 * config/aarch64/aarch64-simd.md
5510 (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
5511 Expansions for abd vec widen optabs.
5512 (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
5513 * config/aarch64/iterators.md (USMAX_EXT): Code attributes
5514 that give the appropriate extend RTL for the max RTL.
5515
5516 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5517
5518 * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
5519 * optabs.def (vec_widen_sabd_optab,
5520 vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
5521 vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
5522 vec_widen_uabd_optab,
5523 vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
5524 vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
5525 New optabs.
5526 * doc/md.texi: Document them.
5527 * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
5528 to build a VEC_WIDEN_ABD call if the input precision is smaller
5529 than the precision of the output.
5530 (vect_recog_widen_abd_pattern): Should an ABD expression be
5531 found preceeding an extension, replace the two with a
5532 VEC_WIDEN_ABD.
5533
5534 2023-06-30 Pan Li <pan2.li@intel.com>
5535
5536 * config/riscv/vector.md: Refactor the common condition.
5537
5538 2023-06-30 Richard Biener <rguenther@suse.de>
5539
5540 PR tree-optimization/110496
5541 * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
5542 verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
5543
5544 2023-06-30 Richard Biener <rguenther@suse.de>
5545
5546 PR middle-end/110489
5547 * statistics.cc (curr_statistics_hash): Add argument
5548 indicating whether we should allocate the hash.
5549 (statistics_fini_pass): If the hash isn't allocated
5550 only print the summary header.
5551
5552 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
5553 Thomas Schwinge <thomas@codesourcery.com>
5554
5555 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
5556
5557 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
5558
5559 PR target/109435
5560 * config/mips/mips.cc (mips_function_arg_alignment): Returns
5561 the alignment of function argument. In case of typedef type,
5562 it returns the aligment of the aliased type.
5563 (mips_function_arg_boundary): Relocated calculation of the
5564 aligment of function arguments.
5565
5566 2023-06-29 Jan Hubicka <jh@suse.cz>
5567
5568 PR tree-optimization/109849
5569 * ipa-fnsummary.cc (decompose_param_expr): Skip
5570 functions returning its parameter.
5571 (set_cond_stmt_execution_predicate): Return early
5572 if predicate was constructed.
5573
5574 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
5575
5576 PR c/77650
5577 * doc/extend.texi: Document GCC extension on a structure containing
5578 a flexible array member to be a member of another structure.
5579
5580 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
5581
5582 * print-tree.cc (print_node): Print new bit type_include_flexarray.
5583 * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
5584 as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
5585 * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
5586 in bit no_named_args_stdarg_p properly for its corresponding type.
5587 * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
5588 out bit no_named_args_stdarg_p properly for its corresponding type.
5589 * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
5590
5591 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
5592
5593 * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
5594 * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
5595 * tree-vrp.h (maybe_set_nonzero_bits): Remove.
5596
5597 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
5598
5599 * value-range.cc (frange::set): Do not call verify_range.
5600 (frange::normalize_kind): Verify range.
5601 (frange::union_nans): Do not call verify_range.
5602 (frange::union_): Same.
5603 (frange::intersect): Same.
5604 (irange::irange_single_pair_union): Call normalize_kind if
5605 necessary.
5606 (irange::union_): Same.
5607 (irange::intersect): Same.
5608 (irange::set_range_from_nonzero_bits): Verify range.
5609 (irange::set_nonzero_bits): Call normalize_kind if necessary.
5610 (irange::get_nonzero_bits): Tweak comment.
5611 (irange::intersect_nonzero_bits): Call normalize_kind if
5612 necessary.
5613 (irange::union_nonzero_bits): Same.
5614 * value-range.h (irange::normalize_kind): Verify range.
5615
5616 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
5617
5618 * cselib.h (rtx_equal_for_cselib_1):
5619 Change return type from int to bool.
5620 (references_value_p): Ditto.
5621 (rtx_equal_for_cselib_p): Ditto.
5622 * expr.h (can_store_by_pieces): Ditto.
5623 (try_casesi): Ditto.
5624 (try_tablejump): Ditto.
5625 (safe_from_p): Ditto.
5626 * sbitmap.h (bitmap_equal_p): Ditto.
5627 * cselib.cc (references_value_p): Change return type
5628 from int to void and adjust function body accordingly.
5629 (rtx_equal_for_cselib_1): Ditto.
5630 * expr.cc (is_aligning_offset): Ditto.
5631 (can_store_by_pieces): Ditto.
5632 (mostly_zeros_p): Ditto.
5633 (all_zeros_p): Ditto.
5634 (safe_from_p): Ditto.
5635 (is_aligning_offset): Ditto.
5636 (try_casesi): Ditto.
5637 (try_tablejump): Ditto.
5638 (store_constructor): Change "need_to_clear" and
5639 "const_bounds_p" variables to bool.
5640 * sbitmap.cc (bitmap_equal_p): Change return type from int to bool.
5641
5642 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
5643
5644 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
5645 element_precision.
5646
5647 2023-06-29 Richard Biener <rguenther@suse.de>
5648
5649 PR tree-optimization/110460
5650 * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
5651 Only allow integral, pointer and scalar float type scalar_type.
5652
5653 2023-06-29 Lili Cui <lili.cui@intel.com>
5654
5655 PR tree-optimization/110148
5656 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
5657 ops in this function.
5658
5659 2023-06-29 Richard Biener <rguenther@suse.de>
5660
5661 PR middle-end/110452
5662 * expr.cc (store_constructor): Handle uniform boolean
5663 vectors with integer mode specially.
5664
5665 2023-06-29 Richard Biener <rguenther@suse.de>
5666
5667 PR middle-end/110461
5668 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
5669 for VECTOR_TYPE_P.
5670
5671 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
5672
5673 * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
5674 (array_slice): Relax va_gc constructor to handle all vectors
5675 with a vl_embed layout.
5676
5677 2023-06-29 Pan Li <pan2.li@intel.com>
5678
5679 * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
5680 (riscv_mode_needed): Likewise.
5681 (riscv_entity_mode_after): Likewise.
5682 (riscv_mode_after): Likewise.
5683 (riscv_mode_entry): Likewise.
5684 (riscv_mode_exit): Likewise.
5685 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
5686 for FRM.
5687 * config/riscv/riscv.md: Add FRM register.
5688 * config/riscv/vector-iterators.md: Add FRM type.
5689 * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
5690 (fsrm): Define new insn for fsrm instruction.
5691
5692 2023-06-29 Pan Li <pan2.li@intel.com>
5693
5694 * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
5695 Add macro for static frm min and max.
5696 * config/riscv/riscv-vector-builtins-bases.cc
5697 (class binop_frm): New class for floating-point with frm.
5698 (BASE): Add vfadd for frm.
5699 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
5700 * config/riscv/riscv-vector-builtins-functions.def
5701 (vfadd_frm): Likewise.
5702 * config/riscv/riscv-vector-builtins-shapes.cc
5703 (struct alu_frm_def): New struct for alu with frm.
5704 (SHAPE): Add alu with frm.
5705 * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
5706 * config/riscv/riscv-vector-builtins.cc
5707 (function_checker::report_out_of_range_and_not): New function
5708 for report out of range and not val.
5709 (function_checker::require_immediate_range_or): New function
5710 for checking in range or one val.
5711 * config/riscv/riscv-vector-builtins.h: Add function decl.
5712
5713 2023-06-29 Cui, Lili <lili.cui@intel.com>
5714
5715 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
5716 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
5717
5718 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
5719
5720 PR target/110144
5721 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
5722 to insn before validating it.
5723
5724 2023-06-28 Jan Hubicka <jh@suse.cz>
5725
5726 PR middle-end/110334
5727 * ipa-fnsummary.h (ipa_fn_summary): Add
5728 safe_to_inline_to_always_inline.
5729 * ipa-inline.cc (can_early_inline_edge_p): ICE
5730 if SSA is not built; do cycle checking for
5731 always_inline functions.
5732 (inline_always_inline_functions): Be recrusive;
5733 watch for cycles; do not updat overall summary.
5734 (early_inliner): Do not give up on always_inlines.
5735 * ipa-utils.cc (ipa_reverse_postorder): Do not skip
5736 always inlines.
5737
5738 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
5739
5740 * output.h (leaf_function_p): Change return type from int to bool.
5741 (final_forward_branch_p): Ditto.
5742 (only_leaf_regs_used): Ditto.
5743 (maybe_assemble_visibility): Ditto.
5744 * varasm.h (supports_one_only): Ditto.
5745 * rtl.h (compute_alignments): Change return type from int to void.
5746 * final.cc (app_on): Change return type from int to bool.
5747 (compute_alignments): Change return type from int to void
5748 and adjust function body accordingly.
5749 (shorten_branches): Change "something_changed" variable
5750 type from int to bool.
5751 (leaf_function_p): Change return type from int to bool
5752 and adjust function body accordingly.
5753 (final_forward_branch_p): Ditto.
5754 (only_leaf_regs_used): Ditto.
5755 * varasm.cc (contains_pointers_p): Change return type from
5756 int to bool and adjust function body accordingly.
5757 (compare_constant): Ditto.
5758 (maybe_assemble_visibility): Ditto.
5759 (supports_one_only): Ditto.
5760
5761 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
5762
5763 PR debug/110308
5764 * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
5765 (maybe_copy_reg_attrs): New function.
5766 (find_oldest_value_reg): Use maybe_copy_reg_attrs.
5767 (copyprop_hardreg_forward_1): Ditto.
5768
5769 2023-06-28 Richard Biener <rguenther@suse.de>
5770
5771 PR tree-optimization/110434
5772 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
5773 VAR we replace with <retval>.
5774
5775 2023-06-28 Richard Biener <rguenther@suse.de>
5776
5777 PR tree-optimization/110451
5778 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
5779 tcc_comparison are expensive.
5780
5781 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
5782
5783 * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
5784 for TImode comparisons on 32-bit architectures.
5785 * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
5786 SWIM1248x to exclude/avoid TImode being conditional on -m64.
5787 (cbranchti4): New define_expand for TImode on both TARGET_64BIT
5788 and/or with TARGET_SSE4_1.
5789 * config/i386/predicates.md (ix86_timode_comparison_operator):
5790 New predicate that depends upon TARGET_64BIT.
5791 (ix86_timode_comparison_operand): Likewise.
5792
5793 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
5794
5795 PR target/78794
5796 * config/i386/i386-features.cc (compute_convert_gain): Provide
5797 more accurate gains for conversion of scalar comparisons to
5798 PTEST.
5799
5800 2023-06-28 Richard Biener <rguenther@suse.de>
5801
5802 PR tree-optimization/110443
5803 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
5804 gather loads.
5805
5806 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
5807
5808 * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
5809 (peephole2 for move_and_compare): New.
5810 (mode_iterator WORD): New. Set the mode to SI/DImode by
5811 TARGET_POWERPC64.
5812 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
5813 (split pattern for compare_and_move): Likewise.
5814
5815 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5816
5817 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
5818 (*single_widen_fma<mode>): Ditto.
5819
5820 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
5821
5822 PR target/104124
5823 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
5824 to...
5825 (altivec_vupkhs<VU_char>_direct): ...this.
5826 * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
5827 predicate to test if a constant can be loaded with vspltisw and
5828 vupkhsw.
5829 (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
5830 a vector constant can be synthesized with a vspltisw and a vupkhsw.
5831 * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
5832 Declare.
5833 * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
5834 function to return true if OP mode is V2DI and can be synthesized
5835 with vupkhsw and vspltisw.
5836 * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
5837 constants with vspltisw and vupkhsw.
5838
5839 2023-06-28 Jan Hubicka <jh@suse.cz>
5840
5841 PR tree-optimization/110377
5842 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
5843 the ranger query.
5844 (ipa_analyze_node): Enable ranger.
5845
5846 2023-06-28 Richard Biener <rguenther@suse.de>
5847
5848 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
5849 (TYPE_PRECISION_RAW): Provide raw access to the precision
5850 field.
5851 * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
5852 (gimple_canonical_types_compatible_p): Likewise.
5853 * tree-streamer-out.cc (pack_ts_type_common_value_fields):
5854 Stream TYPE_PRECISION_RAW.
5855 * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
5856 Likewise.
5857 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
5858
5859 2023-06-28 Alexandre Oliva <oliva@adacore.com>
5860
5861 * doc/extend.texi (zero-call-used-regs): Document leafy and
5862 variants thereof.
5863 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
5864 LEAFY and variants.
5865 * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
5866 functions in leafy mode.
5867 * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
5868
5869 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5870
5871 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
5872 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
5873 Remove.
5874 (@pred_single_widen_add<mode>): New pattern.
5875 (@pred_single_widen_sub<mode>): New pattern.
5876
5877 2023-06-28 liuhongt <hongtao.liu@intel.com>
5878
5879 * config/i386/i386.cc (ix86_invalid_conversion): New function.
5880 (TARGET_INVALID_CONVERSION): Define as
5881 ix86_invalid_conversion.
5882
5883 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5884
5885 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
5886 expander.
5887 (<float_cvt><vnconvert><mode>2): Ditto.
5888 (<optab><mode><vnconvert>2): Ditto.
5889 (<float_cvt><mode><vnconvert>2): Ditto.
5890 * config/riscv/vector-iterators.md: Add vnconvert.
5891
5892 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5893
5894 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
5895 expander.
5896 (extend<v_quad_trunc><mode>2): Ditto.
5897 (trunc<mode><v_double_trunc>2): Ditto.
5898 (trunc<mode><v_quad_trunc>2): Ditto.
5899 * config/riscv/vector-iterators.md: Add VQEXTF and HF to
5900 V_QUAD_TRUNC and v_quad_trunc.
5901
5902 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5903
5904 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
5905 expander.
5906
5907 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5908
5909 * config/riscv/autovec.md (copysign<mode>3): Add expander.
5910 (xorsign<mode>3): Ditto.
5911 * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
5912 New class.
5913 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
5914 (xorsign): Ditto.
5915 (n): Ditto.
5916 (x): Ditto.
5917 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
5918 (@pred_ncopysign<mode>_scalar): Ditto.
5919
5920 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5921
5922 * config/riscv/autovec.md: VF_AUTO -> VF.
5923 * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
5924 VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
5925 VHF_LMUL1.
5926 * config/riscv/vector.md: Use new iterators.
5927
5928 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5929
5930 * match.pd: Use element_mode and check if target supports
5931 operation with new type.
5932
5933 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5934
5935 * config/aarch64/aarch64-sve-builtins-base.cc
5936 (svdupq_impl::fold_nonconst_dupq): New method.
5937 (svdupq_impl::fold): Call fold_nonconst_dupq.
5938
5939 2023-06-27 Andrew Pinski <apinski@marvell.com>
5940
5941 PR middle-end/110420
5942 PR middle-end/103979
5943 PR middle-end/98619
5944 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
5945
5946 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
5947
5948 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
5949 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
5950 for Value_Range.
5951 (set_switch_stmt_execution_predicate): Same.
5952 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
5953
5954 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
5955
5956 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
5957 ipa_vr instead of value_range.
5958 (gt_pch_nx): Same.
5959 (gt_ggc_mx): Same.
5960 (ipa_get_value_range): Same.
5961 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
5962 ipa_vr.
5963 (gt_ggc_mx): Same.
5964
5965 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
5966
5967 * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
5968 * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
5969 (ipa_set_jfunc_vr): Take a range.
5970 (ipa_compute_jump_functions_for_edge): Pass range to
5971 ipa_set_jfunc_vr.
5972 (ipa_write_jump_function): Call streamer write helper.
5973 (ipa_read_jump_function): Call streamer read helper.
5974 * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
5975
5976 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
5977
5978 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
5979 as a probable initializer rather than a probable complete statement.
5980
5981 2023-06-27 Richard Biener <rguenther@suse.de>
5982
5983 PR tree-optimization/96208
5984 * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
5985 a non-grouped load if it is the same for all lanes.
5986 (vect_build_slp_tree_2): Handle not grouped loads.
5987 (vect_optimize_slp_pass::remove_redundant_permutations):
5988 Likewise.
5989 (vect_transform_slp_perm_load_1): Likewise.
5990 * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
5991 (get_group_load_store_type): Likewise. Handle
5992 invariant accesses.
5993 (vectorizable_load): Likewise.
5994
5995 2023-06-27 liuhongt <hongtao.liu@intel.com>
5996
5997 PR rtl-optimization/110237
5998 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
5999 UNSPEC_MASKMOV.
6000 (maskstore<mode><avx512fmaskmodelower): Ditto.
6001 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
6002 from original <avx512>_store<mode>_mask.
6003
6004 2023-06-27 liuhongt <hongtao.liu@intel.com>
6005
6006 * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
6007 Move flag_expensive_optimizations && !optimize_size to ..
6008 * config/i386/i386-options.cc (ix86_option_override_internal):
6009 .. this, it makes -mvzeroupper independent of optimization
6010 level, but still keeps the behavior of architecture
6011 tuning(emit_vzeroupper) unchanged.
6012
6013 2023-06-27 liuhongt <hongtao.liu@intel.com>
6014
6015 PR target/82735
6016 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
6017 vzeroupper for vzeroupper call_insn.
6018
6019 2023-06-27 Andrew Pinski <apinski@marvell.com>
6020
6021 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
6022 defbuiltin usage.
6023
6024 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6025
6026 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
6027 with base != 0.
6028
6029 2023-06-26 Andrew Pinski <apinski@marvell.com>
6030
6031 * doc/extend.texi (access attribute): Add
6032 cindex for it.
6033 (interrupt/interrupt_handler attribute):
6034 Likewise.
6035
6036 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6037
6038 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
6039 Use <DWI> instead of <V2XWIDE>.
6040 (aarch64_sqrshrun_n<mode>): Likewise.
6041
6042 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6043
6044 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
6045 Rename to...
6046 (aarch64_rnd_imm_p): ... This.
6047 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
6048 Rename to...
6049 (aarch64_int_rnd_operand): ... This.
6050 (aarch64_simd_rshrn_imm_vec): Delete.
6051 * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
6052 Adjust for the above.
6053 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
6054 (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
6055 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
6056 (aarch64_sqrshrun_n<mode>_insn): Likewise.
6057 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
6058 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
6059 (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
6060 (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
6061 * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
6062 Rename to...
6063 (aarch64_rnd_imm_p): ... This.
6064
6065 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
6066
6067 * config/s390/s390.cc (s390_encode_section_info): Set
6068 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
6069 misaligned.
6070
6071 2023-06-26 Jan Hubicka <jh@suse.cz>
6072
6073 PR tree-optimization/109849
6074 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
6075 count of newly constructed forwarder block.
6076
6077 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
6078
6079 * doc/optinfo.texi: Fix "steam" -> "stream".
6080
6081 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6082
6083 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
6084 fix LEN_STORE.
6085 (dse_optimize_stmt): Add LEN_MASK_STORE.
6086
6087 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6088
6089 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
6090 fold of LOAD/STORE with length.
6091
6092 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
6093
6094 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
6095 Check for interdependence between operands 1 and 2.
6096
6097 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
6098
6099 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
6100 into account when costing non-widening/truncating conversions.
6101
6102 2023-06-26 Richard Biener <rguenther@suse.de>
6103
6104 PR tree-optimization/110381
6105 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
6106 Materialize permutes before fold-left reductions.
6107
6108 2023-06-26 Pan Li <pan2.li@intel.com>
6109
6110 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
6111
6112 2023-06-26 Richard Biener <rguenther@suse.de>
6113
6114 * varasm.cc (initializer_constant_valid_p_1): Also
6115 constrain the type of value to be scalar integral
6116 before dispatching to narrowing_initializer_constant_valid_p.
6117
6118 2023-06-26 Richard Biener <rguenther@suse.de>
6119
6120 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
6121 Use element_precision.
6122
6123 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6124
6125 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
6126 vcond patterns.
6127 (vcondu<V:mode><VI:mode>): Ditto.
6128 * config/riscv/riscv-protos.h (expand_vcond): Ditto.
6129 * config/riscv/riscv-v.cc (expand_vcond): Ditto.
6130
6131 2023-06-26 Richard Biener <rguenther@suse.de>
6132
6133 PR tree-optimization/110392
6134 * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
6135 Do early exits on true/false predicate only after normalization.
6136
6137 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6138
6139 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
6140 "length".
6141
6142 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
6143
6144 * config/i386/i386.md (peephole2): Simplify zeroing a register
6145 followed by an IOR, XOR or PLUS operation on it, into a move.
6146 (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
6147 eliminate (and hide from reload) unnecessary word to doubleword
6148 extensions that are followed by left shifts by sufficiently large,
6149 but valid, bit counts.
6150
6151 2023-06-26 liuhongt <hongtao.liu@intel.com>
6152
6153 PR tree-optimization/110371
6154 PR tree-optimization/110018
6155 * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
6156 save intermediate type operand instead of "subtle" vec_dest
6157 for case NONE.
6158
6159 2023-06-26 liuhongt <hongtao.liu@intel.com>
6160
6161 PR tree-optimization/110371
6162 PR tree-optimization/110018
6163 * tree-vect-stmts.cc (vectorizable_conversion): Don't use
6164 intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
6165
6166 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
6167
6168 * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
6169 Override tune_string with arch_string if tune_string is not
6170 explicitly specified.
6171
6172 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6173
6174 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
6175 AVL propagation.
6176 * config/riscv/riscv-vsetvl.h: New function.
6177
6178 2023-06-25 Li Xu <xuli1@eswincomputing.com>
6179
6180 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
6181 emit_move_insn
6182
6183 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6184
6185 * config/riscv/autovec.md (len_load_<mode>): Remove.
6186 (len_maskload<mode><vm>): Remove.
6187 (len_store_<mode>): New pattern.
6188 (len_maskstore<mode><vm>): New pattern.
6189 * config/riscv/predicates.md (autovec_length_operand): New predicate.
6190 * config/riscv/riscv-protos.h (enum insn_type): New enum.
6191 (expand_load_store): New function.
6192 * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
6193 (emit_nonvlmax_masked_insn): Ditto.
6194 (expand_load_store): Ditto.
6195 * config/riscv/riscv-vector-builtins.cc
6196 (function_expander::use_contiguous_store_insn): Add avl_type operand
6197 into pred_store.
6198 * config/riscv/vector.md: Ditto.
6199
6200 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6201
6202 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
6203 argument index.
6204
6205 2023-06-25 Pan Li <pan2.li@intel.com>
6206
6207 * config/riscv/vector.md: Revert.
6208
6209 2023-06-25 Pan Li <pan2.li@intel.com>
6210
6211 * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
6212 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
6213 (ADJUST_ALIGNMENT): Ditto.
6214 (RVV_TUPLE_PARTIAL_MODES): Ditto.
6215 (ADJUST_NUNITS): Ditto.
6216 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
6217 (vfloat16mf4x3_t): Ditto.
6218 (vfloat16mf4x4_t): Ditto.
6219 (vfloat16mf4x5_t): Ditto.
6220 (vfloat16mf4x6_t): Ditto.
6221 (vfloat16mf4x7_t): Ditto.
6222 (vfloat16mf4x8_t): Ditto.
6223 (vfloat16mf2x2_t): Ditto.
6224 (vfloat16mf2x3_t): Ditto.
6225 (vfloat16mf2x4_t): Ditto.
6226 (vfloat16mf2x5_t): Ditto.
6227 (vfloat16mf2x6_t): Ditto.
6228 (vfloat16mf2x7_t): Ditto.
6229 (vfloat16mf2x8_t): Ditto.
6230 (vfloat16m1x2_t): Ditto.
6231 (vfloat16m1x3_t): Ditto.
6232 (vfloat16m1x4_t): Ditto.
6233 (vfloat16m1x5_t): Ditto.
6234 (vfloat16m1x6_t): Ditto.
6235 (vfloat16m1x7_t): Ditto.
6236 (vfloat16m1x8_t): Ditto.
6237 (vfloat16m2x2_t): Ditto.
6238 (vfloat16m2x3_t): Diito.
6239 (vfloat16m2x4_t): Diito.
6240 (vfloat16m4x2_t): Diito.
6241 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
6242 (vfloat16mf4x3_t): Ditto.
6243 (vfloat16mf4x4_t): Ditto.
6244 (vfloat16mf4x5_t): Ditto.
6245 (vfloat16mf4x6_t): Ditto.
6246 (vfloat16mf4x7_t): Ditto.
6247 (vfloat16mf4x8_t): Ditto.
6248 (vfloat16mf2x2_t): Ditto.
6249 (vfloat16mf2x3_t): Ditto.
6250 (vfloat16mf2x4_t): Ditto.
6251 (vfloat16mf2x5_t): Ditto.
6252 (vfloat16mf2x6_t): Ditto.
6253 (vfloat16mf2x7_t): Ditto.
6254 (vfloat16mf2x8_t): Ditto.
6255 (vfloat16m1x2_t): Ditto.
6256 (vfloat16m1x3_t): Ditto.
6257 (vfloat16m1x4_t): Ditto.
6258 (vfloat16m1x5_t): Ditto.
6259 (vfloat16m1x6_t): Ditto.
6260 (vfloat16m1x7_t): Ditto.
6261 (vfloat16m1x8_t): Ditto.
6262 (vfloat16m2x2_t): Ditto.
6263 (vfloat16m2x3_t): Ditto.
6264 (vfloat16m2x4_t): Ditto.
6265 (vfloat16m4x2_t): Ditto.
6266 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
6267 * config/riscv/riscv.md: Ditto.
6268 * config/riscv/vector-iterators.md: Ditto.
6269
6270 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6271
6272 * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
6273 (gimple_fold_partial_load_store_mem_ref): Ditto.
6274 (gimple_fold_partial_store): Ditto.
6275 (gimple_fold_call): Ditto.
6276
6277 2023-06-25 liuhongt <hongtao.liu@intel.com>
6278
6279 PR target/110309
6280 * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
6281 Refine pattern with UNSPEC_MASKLOAD.
6282 (maskload<mode><avx512fmaskmodelower>): Ditto.
6283 (*<avx512>_load<mode>_mask): Extend mode iterator to
6284 VI12HFBF_AVX512VL.
6285 (*<avx512>_load<mode>): Ditto.
6286
6287 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6288
6289 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
6290
6291 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6292
6293 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
6294 LEN_MASK_{LOAD,STORE}
6295
6296 2023-06-25 yulong <shiyulong@iscas.ac.cn>
6297
6298 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
6299
6300 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
6301
6302 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
6303
6304 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6305
6306 * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
6307 (*fma<VI:mode><P:mode>): Ditto.
6308 (*fnma<mode>): Ditto.
6309 (*fnma<VI:mode><P:mode>): Ditto.
6310
6311 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6312
6313 * config/riscv/autovec.md (fma<mode>4): New pattern.
6314 (*fma<mode>): Ditto.
6315 (fnma<mode>4): Ditto.
6316 (*fnma<mode>): Ditto.
6317 (fms<mode>4): Ditto.
6318 (*fms<mode>): Ditto.
6319 (fnms<mode>4): Ditto.
6320 (*fnms<mode>): Ditto.
6321 * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
6322 New function.
6323 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
6324 * config/riscv/vector.md: Fix attribute bug.
6325
6326 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6327
6328 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
6329 Apply LEN_MASK_{LOAD,STORE}.
6330
6331 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6332
6333 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
6334 Add LEN_MASK_{LOAD,STORE}.
6335
6336 2023-06-24 David Malcolm <dmalcolm@redhat.com>
6337
6338 * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
6339 * diagnostic.cc: Likewise.
6340 * text-art/box-drawing.cc: Likewise.
6341 * text-art/canvas.cc: Likewise.
6342 * text-art/ruler.cc: Likewise.
6343 * text-art/selftests.cc: Likewise.
6344 * text-art/selftests.h (text_art::canvas): New forward decl.
6345 * text-art/style.cc: Add #define INCLUDE_VECTOR.
6346 * text-art/styled-string.cc: Likewise.
6347 * text-art/table.cc: Likewise.
6348 * text-art/table.h: Remove #include <vector>.
6349 * text-art/theme.cc: Add #define INCLUDE_VECTOR.
6350 * text-art/types.h: Check that INCLUDE_VECTOR is defined.
6351 Remove #include of <vector> and <string>.
6352 * text-art/widget.cc: Add #define INCLUDE_VECTOR.
6353 * text-art/widget.h: Remove #include <vector>.
6354
6355 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6356
6357 * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
6358 (internal_load_fn_p): Add LEN_MASK_LOAD.
6359 (internal_store_fn_p): Add LEN_MASK_STORE.
6360 (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
6361 (internal_fn_stored_value_index): Add LEN_MASK_STORE.
6362 (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}.
6363 * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
6364 (get_len_load_store_mode): Ditto.
6365 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
6366 (get_len_load_store_mode): Ditto.
6367 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
6368 (get_all_ones_mask): New function.
6369 (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
6370 (vectorizable_load): Ditto.
6371
6372 2023-06-23 Marek Polacek <polacek@redhat.com>
6373
6374 * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
6375 -std=gnu++26. Document that for C++23, its value is 202302L.
6376 * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
6377 * dwarf2out.cc (highest_c_language): Handle GNU C++26.
6378 (gen_compile_unit_die): Likewise.
6379
6380 2023-06-23 Jan Hubicka <jh@suse.cz>
6381
6382 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
6383 demand.
6384 (pass_phiprop::execute): Do not compute it here; return
6385 update_ssa_only_virtuals if something changed.
6386 (pass_data_phiprop): Remove TODO_update_ssa from todos.
6387
6388 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
6389 Aaron Sawdey <acsawdey@linux.ibm.com>
6390
6391 PR target/105325
6392 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
6393 allowed prefixed lwa to be generated.
6394 * config/rs6000/fusion.md: Regenerate.
6395 * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
6396 * config/rs6000/rs6000.md (prefixed attribute): Add support for load
6397 plus compare immediate fused insns.
6398 (maybe_prefixed): Likewise.
6399
6400 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
6401
6402 * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs
6403 of ASHIFT to const0_rtx with sufficiently large shift count.
6404 Optimize highpart SUBREGs of ASHIFT as the shift operand when
6405 the shift count is the correct offset. Optimize SUBREGs of
6406 multi-word logic operations if the SUBREGs of both operands
6407 can be simplified.
6408
6409 2023-06-23 Richard Biener <rguenther@suse.de>
6410
6411 * varasm.cc (initializer_constant_valid_p_1): Only
6412 allow conversions between scalar floating point types.
6413
6414 2023-06-23 Richard Biener <rguenther@suse.de>
6415
6416 * tree-vect-stmts.cc (vectorizable_assignment):
6417 Properly handle non-integral operands when analyzing
6418 conversions.
6419
6420 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
6421
6422 PR tree-optimization/110280
6423 * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
6424 using build_vector_from_val with the element of input operand, and
6425 mask's type if operand and mask's types don't match.
6426
6427 2023-06-23 Richard Biener <rguenther@suse.de>
6428
6429 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
6430 the truth_value_p case with !VECTOR_TYPE_P.
6431
6432 2023-06-23 Richard Biener <rguenther@suse.de>
6433
6434 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
6435 Exit early when the type isn't scalar integral.
6436
6437 2023-06-23 Richard Biener <rguenther@suse.de>
6438
6439 * match.pd ((outertype)((innertype0)a+(innertype1)b)
6440 -> ((newtype)a+(newtype)b)): Use element_precision
6441 where appropriate.
6442
6443 2023-06-23 Richard Biener <rguenther@suse.de>
6444
6445 * fold-const.cc (fold_binary_loc): Use element_precision
6446 when trying (double)float1 CMP (double)float2 to
6447 float1 CMP float2 simplification.
6448 * match.pd: Likewise.
6449
6450 2023-06-23 Richard Biener <rguenther@suse.de>
6451
6452 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
6453 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
6454
6455 2023-06-23 Richard Biener <rguenther@suse.de>
6456
6457 * tree-vect-stmts.cc (vector_vector_composition_type):
6458 Handle composition of a vector from a number of elements that
6459 happens to match its number of lanes.
6460
6461 2023-06-22 Marek Polacek <polacek@redhat.com>
6462
6463 * configure.ac (--enable-host-bind-now): New check. Add
6464 -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
6465 * configure: Regenerate.
6466 * doc/install.texi: Document --enable-host-bind-now.
6467
6468 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
6469
6470 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
6471
6472 2023-06-22 Richard Biener <rguenther@suse.de>
6473
6474 PR tree-optimization/110332
6475 * tree-ssa-phiprop.cc (propagate_with_phi): Always
6476 check aliasing with edge inserted loads.
6477
6478 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
6479 Uros Bizjak <ubizjak@gmail.com>
6480
6481 * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
6482 expansion of ptestc with equal operands as producing const1_rtx.
6483 * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
6484 estimates of UNSPEC_PTEST, where the ptest performs the PAND
6485 or PAND of its operands.
6486 * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
6487 of reg_equal_p operands into an x86_stc instruction.
6488 (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
6489 (define_split): Similar to above for strict_low_part destinations.
6490 (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
6491
6492 2023-06-22 David Malcolm <dmalcolm@redhat.com>
6493
6494 PR analyzer/106626
6495 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
6496 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
6497 text art.
6498 (fanalyzer-debug-text-art): New.
6499
6500 2023-06-22 David Malcolm <dmalcolm@redhat.com>
6501
6502 * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
6503 text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
6504 text-art/style.o, text-art/styled-string.o, text-art/table.o,
6505 text-art/theme.o, and text-art/widget.o.
6506 * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
6507 (COLOR_FG_BRIGHT_RED): New.
6508 (COLOR_FG_BRIGHT_GREEN): New.
6509 (COLOR_FG_BRIGHT_YELLOW): New.
6510 (COLOR_FG_BRIGHT_BLUE): New.
6511 (COLOR_FG_BRIGHT_MAGENTA): New.
6512 (COLOR_FG_BRIGHT_CYAN): New.
6513 (COLOR_FG_BRIGHT_WHITE): New.
6514 (COLOR_BG_BRIGHT_BLACK): New.
6515 (COLOR_BG_BRIGHT_RED): New.
6516 (COLOR_BG_BRIGHT_GREEN): New.
6517 (COLOR_BG_BRIGHT_YELLOW): New.
6518 (COLOR_BG_BRIGHT_BLUE): New.
6519 (COLOR_BG_BRIGHT_MAGENTA): New.
6520 (COLOR_BG_BRIGHT_CYAN): New.
6521 (COLOR_BG_BRIGHT_WHITE): New.
6522 * common.opt (fdiagnostics-text-art-charset=): New option.
6523 (diagnostic-text-art.h): New SourceInclude.
6524 (diagnostic_text_art_charset) New Enum and EnumValues.
6525 * configure: Regenerate.
6526 * configure.ac (gccdepdir): Add text-art to loop.
6527 * diagnostic-diagram.h: New file.
6528 * diagnostic-format-json.cc (json_emit_diagram): New.
6529 (diagnostic_output_format_init_json): Wire it up to
6530 context->m_diagrams.m_emission_cb.
6531 * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
6532 "text-art/canvas.h".
6533 (sarif_result::on_nested_diagnostic): Move code to...
6534 (sarif_result::add_related_location): ...this new function.
6535 (sarif_result::on_diagram): New.
6536 (sarif_builder::emit_diagram): New.
6537 (sarif_builder::make_message_object_for_diagram): New.
6538 (sarif_emit_diagram): New.
6539 (diagnostic_output_format_init_sarif): Set
6540 context->m_diagrams.m_emission_cb to sarif_emit_diagram.
6541 * diagnostic-text-art.h: New file.
6542 * diagnostic.cc: Include "diagnostic-text-art.h",
6543 "diagnostic-diagram.h", and "text-art/theme.h".
6544 (diagnostic_initialize): Initialize context->m_diagrams and
6545 call diagnostics_text_art_charset_init.
6546 (diagnostic_finish): Clean up context->m_diagrams.m_theme.
6547 (diagnostic_emit_diagram): New.
6548 (diagnostics_text_art_charset_init): New.
6549 * diagnostic.h (text_art::theme): New forward decl.
6550 (class diagnostic_diagram): Likewise.
6551 (diagnostic_context::m_diagrams): New field.
6552 (diagnostic_emit_diagram): New decl.
6553 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
6554 -fdiagnostics-text-art-charset=.
6555 (-fdiagnostics-plain-output): Add
6556 -fdiagnostics-text-art-charset=none.
6557 * gcc.cc: Include "diagnostic-text-art.h".
6558 (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
6559 * opts-common.cc (decode_cmdline_options_to_array): Add
6560 "-fdiagnostics-text-art-charset=none" to expanded_args for
6561 -fdiagnostics-plain-output.
6562 * opts.cc: Include "diagnostic-text-art.h".
6563 (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
6564 * pretty-print.cc (pp_unicode_character): New.
6565 * pretty-print.h (pp_unicode_character): New decl.
6566 * selftest-run-tests.cc: Include "text-art/selftests.h".
6567 (selftest::run_tests): Call text_art_tests.
6568 * text-art/box-drawing-chars.inc: New file, generated by
6569 contrib/unicode/gen-box-drawing-chars.py.
6570 * text-art/box-drawing.cc: New file.
6571 * text-art/box-drawing.h: New file.
6572 * text-art/canvas.cc: New file.
6573 * text-art/canvas.h: New file.
6574 * text-art/ruler.cc: New file.
6575 * text-art/ruler.h: New file.
6576 * text-art/selftests.cc: New file.
6577 * text-art/selftests.h: New file.
6578 * text-art/style.cc: New file.
6579 * text-art/styled-string.cc: New file.
6580 * text-art/table.cc: New file.
6581 * text-art/table.h: New file.
6582 * text-art/theme.cc: New file.
6583 * text-art/theme.h: New file.
6584 * text-art/types.h: New file.
6585 * text-art/widget.cc: New file.
6586 * text-art/widget.h: New file.
6587
6588 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
6589
6590 * function.h (emit_initial_value_sets):
6591 Change return type from int to void.
6592 (aggregate_value_p): Change return type from int to bool.
6593 (prologue_contains): Ditto.
6594 (epilogue_contains): Ditto.
6595 (prologue_epilogue_contains): Ditto.
6596 * function.cc (temp_slot): Make "in_use" variable bool.
6597 (make_slot_available): Update for changed "in_use" variable.
6598 (assign_stack_temp_for_type): Ditto.
6599 (emit_initial_value_sets): Change return type from int to void
6600 and update function body accordingly.
6601 (instantiate_virtual_regs): Ditto.
6602 (rest_of_handle_thread_prologue_and_epilogue): Ditto.
6603 (safe_insn_predicate): Change return type from int to bool.
6604 (aggregate_value_p): Change return type from int to bool
6605 and update function body accordingly.
6606 (prologue_contains): Change return type from int to bool.
6607 (prologue_epilogue_contains): Ditto.
6608
6609 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
6610
6611 * common.opt (fp_contract_mode) [on]: Remove fallback.
6612 * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
6613 * doc/invoke.texi (-ffp-contract): Update.
6614 * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
6615
6616 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6617
6618 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
6619 Add alternatives to prefer to avoid same input and output Z register.
6620 (mask_gather_load<mode><v_int_container>): Likewise.
6621 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
6622 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
6623 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
6624 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
6625 Likewise.
6626 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
6627 Likewise.
6628 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6629 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
6630 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6631 <SVE_2BHSI:mode>_sxtw): Likewise.
6632 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6633 <SVE_2BHSI:mode>_uxtw): Likewise.
6634 (@aarch64_ldff1_gather<mode>): Likewise.
6635 (@aarch64_ldff1_gather<mode>): Likewise.
6636 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
6637 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
6638 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
6639 <VNx4_NARROW:mode>): Likewise.
6640 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6641 <VNx2_NARROW:mode>): Likewise.
6642 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6643 <VNx2_NARROW:mode>_sxtw): Likewise.
6644 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6645 <VNx2_NARROW:mode>_uxtw): Likewise.
6646 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
6647 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
6648 <SVE_PARTIAL_I:mode>): Likewise.
6649
6650 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6651
6652 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
6653 Convert to compact alternatives syntax.
6654 (mask_gather_load<mode><v_int_container>): Likewise.
6655 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
6656 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
6657 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
6658 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
6659 Likewise.
6660 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
6661 Likewise.
6662 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6663 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
6664 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6665 <SVE_2BHSI:mode>_sxtw): Likewise.
6666 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6667 <SVE_2BHSI:mode>_uxtw): Likewise.
6668 (@aarch64_ldff1_gather<mode>): Likewise.
6669 (@aarch64_ldff1_gather<mode>): Likewise.
6670 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
6671 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
6672 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
6673 <VNx4_NARROW:mode>): Likewise.
6674 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6675 <VNx2_NARROW:mode>): Likewise.
6676 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6677 <VNx2_NARROW:mode>_sxtw): Likewise.
6678 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6679 <VNx2_NARROW:mode>_uxtw): Likewise.
6680 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
6681 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
6682 <SVE_PARTIAL_I:mode>): Likewise.
6683
6684 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6685
6686 Revert:
6687 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6688
6689 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
6690 Convert to compact alternatives syntax.
6691 (mask_gather_load<mode><v_int_container>): Likewise.
6692 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
6693 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
6694 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
6695 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
6696 Likewise.
6697 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
6698 Likewise.
6699 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6700 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
6701 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6702 <SVE_2BHSI:mode>_sxtw): Likewise.
6703 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6704 <SVE_2BHSI:mode>_uxtw): Likewise.
6705 (@aarch64_ldff1_gather<mode>): Likewise.
6706 (@aarch64_ldff1_gather<mode>): Likewise.
6707 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
6708 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
6709 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
6710 <VNx4_NARROW:mode>): Likewise.
6711 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6712 <VNx2_NARROW:mode>): Likewise.
6713 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6714 <VNx2_NARROW:mode>_sxtw): Likewise.
6715 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6716 <VNx2_NARROW:mode>_uxtw): Likewise.
6717 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
6718 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
6719 <SVE_PARTIAL_I:mode>): Likewise.
6720
6721 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6722
6723 * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
6724 (get_len_load_store_mode): Ditto.
6725 * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
6726 (get_len_load_store_mode): Ditto.
6727 * optabs-tree.cc (can_vec_mask_load_store_p): New function.
6728 (get_len_load_store_mode): Ditto.
6729 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
6730 (get_len_load_store_mode): Ditto.
6731 * tree-if-conv.cc: include optabs-tree instead of optabs-query
6732
6733 2023-06-21 Richard Biener <rguenther@suse.de>
6734
6735 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
6736 split_constant_offset for the POINTER_PLUS_EXPR case.
6737
6738 2023-06-21 Richard Biener <rguenther@suse.de>
6739
6740 * tree-ssa-loop-ivopts.cc (record_group_use): Use
6741 split_constant_offset.
6742
6743 2023-06-21 Richard Biener <rguenther@suse.de>
6744
6745 * tree-loop-distribution.cc (classify_builtin_st): Use
6746 split_constant_offset.
6747 * tree-ssa-loop-ivopts.h (strip_offset): Remove.
6748 * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
6749
6750 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6751
6752 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
6753 Convert to compact alternatives syntax.
6754 (mask_gather_load<mode><v_int_container>): Likewise.
6755 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
6756 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
6757 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
6758 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
6759 Likewise.
6760 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
6761 Likewise.
6762 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6763 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
6764 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6765 <SVE_2BHSI:mode>_sxtw): Likewise.
6766 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
6767 <SVE_2BHSI:mode>_uxtw): Likewise.
6768 (@aarch64_ldff1_gather<mode>): Likewise.
6769 (@aarch64_ldff1_gather<mode>): Likewise.
6770 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
6771 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
6772 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
6773 <VNx4_NARROW:mode>): Likewise.
6774 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6775 <VNx2_NARROW:mode>): Likewise.
6776 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6777 <VNx2_NARROW:mode>_sxtw): Likewise.
6778 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
6779 <VNx2_NARROW:mode>_uxtw): Likewise.
6780 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
6781 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
6782 <SVE_PARTIAL_I:mode>): Likewise.
6783
6784 2023-06-21 Tamar Christina <tamar.christina@arm.com>
6785
6786 PR other/110329
6787 * doc/md.texi: Replace backslashchar.
6788
6789 2023-06-21 Richard Biener <rguenther@suse.de>
6790
6791 * config/i386/i386.cc (ix86_vector_costs::finish_cost):
6792 Overload. For masked main loops make sure the vectorization
6793 factor isn't more than double the number of iterations.
6794
6795 2023-06-21 Jan Beulich <jbeulich@suse.com>
6796
6797 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
6798 value duplication by ix86_build_signbit_mask() when AVX512F and
6799 not HFmode.
6800 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
6801 2-alternative form. Adjust "mode" attribute. Add "enabled"
6802 attribute.
6803 (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
6804 && !TARGET_PREFER_AVX256.
6805 (*<avx512>_vpternlog<mode>_2): Likewise.
6806 (*<avx512>_vpternlog<mode>_3): Likewise.
6807
6808 2023-06-21 liuhongt <hongtao.liu@intel.com>
6809
6810 PR target/110018
6811 * tree-vect-stmts.cc (vectorizable_conversion): Use
6812 intermiediate integer type for float_expr/fix_trunc_expr when
6813 direct optab is not existed.
6814
6815 2023-06-20 Tamar Christina <tamar.christina@arm.com>
6816
6817 PR bootstrap/110324
6818 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
6819
6820 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
6821
6822 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
6823 register operand to the stack pointer. Require the second register
6824 operand to have the number specified in a separate const_int operand.
6825 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
6826 (aarch64_allocate_and_probe_stack_space): Use it.
6827 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
6828 (aarch64_expand_epilogue): Likewise.
6829
6830 2023-06-20 Jakub Jelinek <jakub@redhat.com>
6831
6832 PR middle-end/79173
6833 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
6834 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
6835 type.
6836
6837 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
6838
6839 * calls.h (setjmp_call_p): Change return type from int to bool.
6840 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
6841 (store_one_arg): Change return type from int to bool
6842 and adjust function body accordingly. Change "sibcall_failure"
6843 variable to bool.
6844 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
6845 argument to bool. Change "partial_seen" variable to bool.
6846 (load_register_parameters): Change *sibcall_failure
6847 pointer argument to bool.
6848 (check_sibcall_argument_overlap_1): Change return type from int to bool
6849 and adjust function body accordingly.
6850 (check_sibcall_argument_overlap): Ditto. Change
6851 "mark_stored_args_map" argument to bool.
6852 (emit_call_1): Change "already_popped" variable to bool.
6853 (setjmp_call_p): Change return type from int to bool
6854 and adjust function body accordingly.
6855 (initialize_argument_information): Change *must_preallocate
6856 pointer argument to bool.
6857 (expand_call): Change "pcc_struct_value", "must_preallocate"
6858 and "sibcall_failure" variables to bool.
6859 (emit_library_call_value_1): Change "pcc_struct_value"
6860 variable to bool.
6861
6862 2023-06-20 Martin Jambor <mjambor@suse.cz>
6863
6864 PR ipa/110276
6865 * ipa-sra.cc (struct caller_issues): New field there_is_one.
6866 (check_for_caller_issues): Set it.
6867 (check_all_callers_for_issues): Check it.
6868
6869 2023-06-20 Martin Jambor <mjambor@suse.cz>
6870
6871 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
6872 (struct ipcp_transformation): Rearrange members according to
6873 C++ class coding convention, add m_uid_to_idx,
6874 get_param_index and maybe_create_parm_idx_map.
6875 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
6876 (compare_uids): Likewise.
6877 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
6878 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
6879 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
6880 (ipcp_update_vr): Likewise.
6881 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
6882 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
6883
6884 2023-06-20 Carl Love <cel@us.ibm.com>
6885
6886 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
6887 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
6888 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
6889 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
6890 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
6891 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
6892 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
6893 * config/rs6000/rs6000-builtins.def
6894 (__builtin_vsx_scalar_extract_exp_to_vec,
6895 __builtin_vsx_scalar_extract_sig_to_vec,
6896 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
6897 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
6898 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
6899 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
6900 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
6901 overloaded instance. Update comments.
6902 * config/rs6000/rs6000-overload.def
6903 (__builtin_vec_scalar_insert_exp): Add new overload definition with
6904 vector arguments.
6905 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
6906 overloaded definitions.
6907 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
6908 (DI_to_TI): New mode attribute.
6909 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
6910 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
6911 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
6912 * doc/extend.texi (scalar_extract_exp_to_vec,
6913 scalar_extract_sig_to_vec): Add documentation for new builtins.
6914 (scalar_insert_exp): Add new overloaded builtin definition.
6915
6916 2023-06-20 Li Xu <xuli1@eswincomputing.com>
6917
6918 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
6919 size of vector mask mode to one rvv register.
6920
6921 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6922
6923 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
6924
6925 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
6926
6927 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
6928 switch handler.
6929
6930 2023-06-20 Richard Biener <rguenther@suse.de>
6931
6932 * tree-ssa-dse.cc (dse_classify_store): When we found
6933 no defs and the basic-block with the original definition
6934 ends in __builtin_unreachable[_trap] the store is dead.
6935
6936 2023-06-20 Richard Biener <rguenther@suse.de>
6937
6938 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
6939 keep the virtual SSA form up-to-date.
6940
6941 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6942
6943 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
6944 New define_insn_and_split.
6945
6946 2023-06-20 Tamar Christina <tamar.christina@arm.com>
6947
6948 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
6949
6950 2023-06-20 Jan Beulich <jbeulich@suse.com>
6951
6952 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
6953 constraint. Add new AVX512F alternative.
6954
6955 2023-06-20 Richard Biener <rguenther@suse.de>
6956
6957 PR debug/110295
6958 * dwarf2out.cc (process_scope_var): Continue processing
6959 the decl after setting a parent in case the existing DIE
6960 was in limbo.
6961
6962 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
6963
6964 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
6965 (riscv_arg_has_vector): Simplify.
6966 (riscv_pass_in_vector_p): Adjust warning message.
6967
6968 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
6969
6970 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
6971 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
6972 * config/riscv/riscv.md (riscv_frcsr): New patterns.
6973 (riscv_fscsr): Likewise.
6974
6975 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
6976
6977 PR rtl-optimization/110305
6978 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
6979 Handle HONOR_SNANS for x + 0.0.
6980
6981 2023-06-19 Jan Hubicka <jh@suse.cz>
6982
6983 PR tree-optimization/109811
6984 PR tree-optimization/109849
6985 * passes.def: Add phiprop to early optimization passes.
6986 * tree-ssa-phiprop.cc: Allow clonning.
6987
6988 2023-06-19 Tamar Christina <tamar.christina@arm.com>
6989
6990 * config/aarch64/aarch64.md (arches): Add nosimd.
6991 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
6992 compact syntax.
6993
6994 2023-06-19 Tamar Christina <tamar.christina@arm.com>
6995 Omar Tahir <Omar.Tahir2@arm.com>
6996
6997 * gensupport.cc (class conlist, add_constraints, add_attributes,
6998 skip_spaces, expect_char, preprocess_compact_syntax,
6999 parse_section_layout, parse_section, convert_syntax): New.
7000 (process_rtx): Check for conversion.
7001 * genoutput.cc (process_template): Check for unresolved iterators.
7002 (class data): Add compact_syntax_p.
7003 (gen_insn): Use it.
7004 * gensupport.h (compact_syntax): New.
7005 (hash-set.h): Include.
7006 * doc/md.texi: Document it.
7007
7008 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
7009
7010 * recog.h (check_asm_operands): Change return type from int to bool.
7011 (insn_invalid_p): Ditto.
7012 (verify_changes): Ditto.
7013 (apply_change_group): Ditto.
7014 (constrain_operands): Ditto.
7015 (constrain_operands_cached): Ditto.
7016 (validate_replace_rtx_subexp): Ditto.
7017 (validate_replace_rtx): Ditto.
7018 (validate_replace_rtx_part): Ditto.
7019 (validate_replace_rtx_part_nosimplify): Ditto.
7020 (added_clobbers_hard_reg_p): Ditto.
7021 (peep2_regno_dead_p): Ditto.
7022 (peep2_reg_dead_p): Ditto.
7023 (store_data_bypass_p): Ditto.
7024 (if_test_bypass_p): Ditto.
7025 * rtl.h (split_all_insns_noflow): Change
7026 return type from unsigned int to void.
7027 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
7028 of generated added_clobbers_hard_reg_p from int to bool and adjust
7029 function body accordingly. Change "used" variable type from
7030 int to bool.
7031 * recog.cc (check_asm_operands): Change return type
7032 from int to bool and adjust function body accordingly.
7033 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
7034 (verify_changes): Change return type from int to bool.
7035 (apply_change_group): Change return type from int to bool
7036 and adjust function body accordingly.
7037 (validate_replace_rtx_subexp): Change return type from int to bool.
7038 (validate_replace_rtx): Ditto.
7039 (validate_replace_rtx_part): Ditto.
7040 (validate_replace_rtx_part_nosimplify): Ditto.
7041 (constrain_operands_cached): Ditto.
7042 (constrain_operands): Ditto. Change "lose" and "win"
7043 variables type from int to bool.
7044 (split_all_insns_noflow): Change return type from unsigned int
7045 to void and adjust function body accordingly.
7046 (peep2_regno_dead_p): Change return type from int to bool.
7047 (peep2_reg_dead_p): Ditto.
7048 (peep2_find_free_register): Change "success"
7049 variable type from int to bool
7050 (store_data_bypass_p_1): Change return type from int to bool.
7051 (store_data_bypass_p): Ditto.
7052
7053 2023-06-19 Li Xu <xuli1@eswincomputing.com>
7054
7055 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
7056 Zve32f extension.
7057
7058 2023-06-19 Pan Li <pan2.li@intel.com>
7059
7060 PR target/110299
7061 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
7062 modes.
7063 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
7064 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
7065 VF_ZVE63 and VF_ZVE32.
7066 * config/riscv/vector.md
7067 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
7068 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
7069 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
7070 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
7071 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
7072 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
7073 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
7074 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
7075 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
7076 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
7077
7078 2023-06-19 Pan Li <pan2.li@intel.com>
7079
7080 PR target/110277
7081 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
7082 ret_mode.
7083 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
7084 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
7085 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
7086 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
7087 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
7088 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
7089 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
7090 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
7091 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
7092 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
7093 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
7094 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
7095 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
7096 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
7097
7098 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
7099
7100 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
7101 (gcn_init_libfuncs): Add div and mod functions for all modes.
7102 Add placeholders for divmod functions.
7103 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
7104
7105 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
7106
7107 * tree-vect-generic.cc: Include optabs-libfuncs.h.
7108 (get_compute_type): Check optab_libfunc.
7109 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
7110 (vectorizable_operation): Check optab_libfunc.
7111
7112 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
7113
7114 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
7115 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
7116 (V_MOV, V_MOV_ALT): Likewise.
7117 (scalar_mode, SCALAR_MODE): Add TImode.
7118 (vnsi, VnSI, vndi, VnDI): Likewise.
7119 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
7120 (mov<mode>, mov<mode>_unspec): Use V_MOV.
7121 (*mov<mode>_4reg): New insn.
7122 (mov<mode>_exec): New 4reg variant.
7123 (mov<mode>_sgprbase): Likewise.
7124 (reload_in<mode>, reload_out<mode>): Use V_MOV.
7125 (vec_set<mode>): Likewise.
7126 (vec_duplicate<mode><exec>): New 4reg variant.
7127 (vec_extract<mode><scalar_mode>): Likewise.
7128 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
7129 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
7130 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
7131 (fold_extract_last_<mode>): Use V_MOV.
7132 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
7133 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
7134 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
7135 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
7136 gather<mode>_insn_2offsets<exec>): Use V_MOV.
7137 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
7138 scatter<mode>_insn_1offset<exec_scatter>,
7139 scatter<mode>_insn_1offset_ds<exec_scatter>,
7140 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
7141 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
7142 mask_scatter_store<mode><vnsi>): Likewise.
7143 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
7144 (gcn_hard_regno_mode_ok): Likewise.
7145 (GEN_VNM): Add TImode support.
7146 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
7147 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
7148 V8TImode, and V2TImode.
7149 (print_operand): Add 'J' and 'K' print codes.
7150
7151 2023-06-19 Richard Biener <rguenther@suse.de>
7152
7153 PR tree-optimization/110298
7154 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
7155 Clear number of iterations info before cleaning up the CFG.
7156
7157 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7158
7159 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
7160 Simplify vec_concat of lowpart subreg and high part vec_select.
7161
7162 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
7163
7164 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
7165
7166 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
7167
7168 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
7169 Handle null niters_skip.
7170
7171 2023-06-19 Richard Biener <rguenther@suse.de>
7172
7173 * config/aarch64/aarch64.cc
7174 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
7175 to LOOP_VINFO_MASKS.
7176
7177 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
7178
7179 PR target/105523
7180 * common/config/avr/avr-common.cc: Remove setting
7181 of OPT_fdelete_null_pointer_checks.
7182 * config/avr/avr.cc (avr_option_override): Clear
7183 flag_delete_null_pointer_checks if zero_address_valid.
7184 (avr_addr_space_zero_address_valid): New function.
7185 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
7186 hook.
7187
7188 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7189 Robin Dapp <rdapp.gcc@gmail.com>
7190
7191 * doc/md.texi: Add len_mask{load,store}.
7192 * genopinit.cc (main): Ditto.
7193 (CMP_NAME): Ditto.
7194 * internal-fn.cc (len_maskload_direct): Ditto.
7195 (len_maskstore_direct): Ditto.
7196 (expand_call_mem_ref): Ditto.
7197 (expand_partial_load_optab_fn): Ditto.
7198 (expand_len_maskload_optab_fn): Ditto.
7199 (expand_partial_store_optab_fn): Ditto.
7200 (expand_len_maskstore_optab_fn): Ditto.
7201 (direct_len_maskload_optab_supported_p): Ditto.
7202 (direct_len_maskstore_optab_supported_p): Ditto.
7203 * internal-fn.def (LEN_MASK_LOAD): Ditto.
7204 (LEN_MASK_STORE): Ditto.
7205 * optabs.def (OPTAB_CD): Ditto.
7206
7207 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7208
7209 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
7210
7211 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7212
7213 * config/riscv/autovec.md (<optab><mode>3): Implement binop
7214 expander.
7215 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
7216 (enum vxrm_field_enum): Rename this...
7217 (enum fixed_point_rounding_mode): ...to this.
7218 (enum frm_field_enum): Rename this...
7219 (enum floating_point_rounding_mode): ...to this.
7220 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
7221 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
7222 vector handling.
7223 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
7224 (riscv_excess_precision): Do not convert to float for ZVFH.
7225 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
7226
7227 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7228
7229 * config/riscv/vector-iterators.md: Add VI_QH iterator.
7230 * config/riscv/autovec-opt.md
7231 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
7232 that includes sign extension.
7233 (@pred_extract_first_sextsi<mode>): Dito for SImode.
7234
7235 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7236
7237 * config/riscv/autovec.md (vec_set<mode>): Implement.
7238 (vec_extract<mode><vel>): Implement.
7239 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
7240 (emit_vlmax_slide_insn): Declare.
7241 (emit_nonvlmax_slide_tu_insn): Declare.
7242 (emit_scalar_move_insn): Export.
7243 (emit_nonvlmax_integer_move_insn): Export.
7244 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
7245 (emit_nonvlmax_slide_tu_insn): New function.
7246 (emit_vlmax_masked_mu_insn): No change.
7247 (emit_vlmax_integer_move_insn): Export.
7248
7249 2023-06-19 Richard Biener <rguenther@suse.de>
7250
7251 * tree-vectorizer.h (enum vect_partial_vector_style): New.
7252 (_loop_vec_info::partial_vector_style): Likewise.
7253 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
7254 (rgroup_controls::compare_type): Add.
7255 (vec_loop_masks): Change from a typedef to auto_vec<>
7256 to a structure.
7257 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
7258 Adjust. Convert niters_skip to compare_type.
7259 (vect_set_loop_condition_partial_vectors_avx512): New function
7260 implementing the AVX512 partial vector codegen.
7261 (vect_set_loop_condition): Dispatch to the correct
7262 vect_set_loop_condition_partial_vectors_* function based on
7263 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
7264 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
7265 in the original niter type.
7266 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
7267 partial_vector_style.
7268 (can_produce_all_loop_masks_p): Adjust.
7269 (vect_verify_full_masking): Produce the rgroup_controls vector
7270 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
7271 (vect_verify_full_masking_avx512): New function implementing
7272 verification of AVX512 style masking.
7273 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
7274 (vect_analyze_loop_2): Also try AVX512 style masking.
7275 Adjust condition.
7276 (vect_estimate_min_profitable_iters): Implement AVX512 style
7277 mask producing cost.
7278 (vect_record_loop_mask): Do not build the rgroup_controls
7279 vector here but record masks in a hash-set.
7280 (vect_get_loop_mask): Implement AVX512 style mask query,
7281 complementing the existing while_ult style.
7282
7283 2023-06-19 Richard Biener <rguenther@suse.de>
7284
7285 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
7286 argument.
7287 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
7288 (vectorize_fold_left_reduction): Adjust.
7289 (vect_transform_reduction): Likewise.
7290 (vectorizable_live_operation): Likewise.
7291 * tree-vect-stmts.cc (vectorizable_call): Likewise.
7292 (vectorizable_operation): Likewise.
7293 (vectorizable_store): Likewise.
7294 (vectorizable_load): Likewise.
7295 (vectorizable_condition): Likewise.
7296
7297 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
7298
7299 PR target/110086
7300 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
7301 Add Optimization option property.
7302
7303 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7304
7305 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
7306 Add new pattern for the abovementioned case.
7307
7308 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7309
7310 * config/xtensa/xtensa.cc
7311 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
7312
7313 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
7314
7315 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
7316
7317 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
7318
7319 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
7320
7321 2023-06-19 liuhongt <hongtao.liu@intel.com>
7322
7323 PR target/110235
7324 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
7325 Substitute with ..
7326 (sse2_packsswb<mask_name>): .. this, ..
7327 (avx2_packsswb<mask_name>): .. this and ..
7328 (avx512bw_packsswb<mask_name>): .. this.
7329 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
7330 (sse2_packssdw<mask_name>): .. this, ..
7331 (avx2_packssdw<mask_name>): .. this and ..
7332 (avx512bw_packssdw<mask_name>): .. this.
7333
7334 2023-06-19 liuhongt <hongtao.liu@intel.com>
7335
7336 PR target/110235
7337 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
7338 UNSPEC_US_TRUNCATE instead of original us_truncate for
7339 packusdw/packuswb.
7340 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
7341 with ..
7342 (mmx_packsswb): .. this and ..
7343 (mmx_packuswb): .. this.
7344 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
7345 us_truncate.
7346 (s_trunsuffix): Removed code iterator.
7347 (any_s_truncate): Ditto.
7348 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
7349 UNSPEC_US_TRUNCATE instead of original us_truncate.
7350 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
7351 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
7352
7353 2023-06-18 Pan Li <pan2.li@intel.com>
7354
7355 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
7356
7357 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
7358
7359 * rtl.h (*rtx_equal_p_callback_function):
7360 Change return type from int to bool.
7361 (rtx_equal_p): Ditto.
7362 (*hash_rtx_callback_function): Ditto.
7363 * rtl.cc (rtx_equal_p): Change return type from int to bool
7364 and adjust function body accordingly.
7365 * early-remat.cc (scratch_equal): Ditto.
7366 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
7367 (hash_with_unspec_callback): Ditto.
7368
7369 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
7370
7371 * config/arc/arc.md (movqi_insn): Allow certain constants to
7372 be stored into memory in the pattern's condition.
7373 (movsf_insn): Similarly.
7374
7375 2023-06-18 Honza <jh@ryzen3.suse.cz>
7376
7377 PR tree-optimization/109849
7378 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
7379 ES; handle ipa_predicate::not_sra_candidate.
7380 (evaluate_properties_for_edge): Pass es to
7381 evaluate_conditions_for_known_args.
7382 (ipa_fn_summary_t::duplicate): Handle sra candidates.
7383 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
7384 (load_or_store_of_ptr_parameter): New function.
7385 (points_to_possible_sra_candidate_p): New function.
7386 (analyze_function_body): Initialize points_to_possible_sra_candidate;
7387 determine sra predicates.
7388 (estimate_ipcp_clone_size_and_time): Update call of
7389 evaluate_conditions_for_known_args.
7390 (remap_edge_params): Update points_to_possible_sra_candidate.
7391 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
7392 (write_ipa_call_summary): Likewise.
7393 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
7394 (dump_condition): Dump it.
7395 * ipa-predicate.h (struct inline_param_summary): Add
7396 points_to_possible_sra_candidate.
7397
7398 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
7399
7400 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
7401 function for setting the carry flag.
7402 (ix86_expand_builtin) <handlecarry>: Use it here.
7403 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
7404 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
7405 (usubc<mode>5): Likewise.
7406
7407 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
7408
7409 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
7410 for the immediate constant shift count.
7411 (*concat<mode><dwi>3_2): Likewise.
7412 (*concat<mode><dwi>3_3): Likewise.
7413 (*concat<mode><dwi>3_4): Likewise.
7414 (*concat<mode><dwi>3_5): Likewise.
7415 (*concat<mode><dwi>3_6): Likewise.
7416
7417 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
7418
7419 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
7420 (hash_rtx): Remove.
7421 * early-remat.cc (remat_candidate_hasher::equal): Update
7422 to call rtx_equal_p with rtx_equal_p_callback_function argument.
7423 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
7424 (rtx_equal_p): Remove.
7425 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
7426 argument with NULL default value.
7427 (rtx_equal_p_cb): Remove function declaration.
7428 (hash_rtx_cb): Ditto.
7429 (hash_rtx): Add hash_rtx_callback_function argument
7430 with NULL default value.
7431 * sel-sched-ir.cc (free_nop_pool): Update function comment.
7432 (skip_unspecs_callback): Ditto.
7433 (vinsn_init): Update to call hash_rtx with
7434 hash_rtx_callback_function argument.
7435 (vinsn_equal_p): Ditto.
7436
7437 2023-06-18 yulong <shiyulong@iscas.ac.cn>
7438
7439 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
7440 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
7441 (ADJUST_ALIGNMENT): Ditto.
7442 (RVV_TUPLE_PARTIAL_MODES): Ditto.
7443 (ADJUST_NUNITS): Ditto.
7444 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
7445 New types.
7446 (vfloat16mf4x3_t): Ditto.
7447 (vfloat16mf4x4_t): Ditto.
7448 (vfloat16mf4x5_t): Ditto.
7449 (vfloat16mf4x6_t): Ditto.
7450 (vfloat16mf4x7_t): Ditto.
7451 (vfloat16mf4x8_t): Ditto.
7452 (vfloat16mf2x2_t): Ditto.
7453 (vfloat16mf2x3_t): Ditto.
7454 (vfloat16mf2x4_t): Ditto.
7455 (vfloat16mf2x5_t): Ditto.
7456 (vfloat16mf2x6_t): Ditto.
7457 (vfloat16mf2x7_t): Ditto.
7458 (vfloat16mf2x8_t): Ditto.
7459 (vfloat16m1x2_t): Ditto.
7460 (vfloat16m1x3_t): Ditto.
7461 (vfloat16m1x4_t): Ditto.
7462 (vfloat16m1x5_t): Ditto.
7463 (vfloat16m1x6_t): Ditto.
7464 (vfloat16m1x7_t): Ditto.
7465 (vfloat16m1x8_t): Ditto.
7466 (vfloat16m2x2_t): Ditto.
7467 (vfloat16m2x3_t): Ditto.
7468 (vfloat16m2x4_t): Ditto.
7469 (vfloat16m4x2_t): Ditto.
7470 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
7471 (vfloat16mf4x3_t): Ditto.
7472 (vfloat16mf4x4_t): Ditto.
7473 (vfloat16mf4x5_t): Ditto.
7474 (vfloat16mf4x6_t): Ditto.
7475 (vfloat16mf4x7_t): Ditto.
7476 (vfloat16mf4x8_t): Ditto.
7477 (vfloat16mf2x2_t): Ditto.
7478 (vfloat16mf2x3_t): Ditto.
7479 (vfloat16mf2x4_t): Ditto.
7480 (vfloat16mf2x5_t): Ditto.
7481 (vfloat16mf2x6_t): Ditto.
7482 (vfloat16mf2x7_t): Ditto.
7483 (vfloat16mf2x8_t): Ditto.
7484 (vfloat16m1x2_t): Ditto.
7485 (vfloat16m1x3_t): Ditto.
7486 (vfloat16m1x4_t): Ditto.
7487 (vfloat16m1x5_t): Ditto.
7488 (vfloat16m1x6_t): Ditto.
7489 (vfloat16m1x7_t): Ditto.
7490 (vfloat16m1x8_t): Ditto.
7491 (vfloat16m2x2_t): Ditto.
7492 (vfloat16m2x3_t): Ditto.
7493 (vfloat16m2x4_t): Ditto.
7494 (vfloat16m4x2_t): Ditto.
7495 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
7496 * config/riscv/riscv.md: New.
7497 * config/riscv/vector-iterators.md: New.
7498
7499 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
7500
7501 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
7502 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
7503 Generalize special case for converting TImode to V1TImode to handle
7504 all 128-bit vector conversions.
7505
7506 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
7507
7508 * gcc-ar.cc (main): Refactor to slightly reduce code
7509 duplication. Avoid unnecessary elements in nargv.
7510
7511 2023-06-16 Pan Li <pan2.li@intel.com>
7512
7513 PR target/110265
7514 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
7515 integer reduction expand.
7516 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
7517 and the LMUL1 attr respectively.
7518 * config/riscv/vector.md
7519 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
7520 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
7521 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
7522 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
7523 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
7524 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
7525 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
7526
7527 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7528
7529 PR target/110264
7530 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
7531
7532 2023-06-16 Jakub Jelinek <jakub@redhat.com>
7533
7534 PR middle-end/79173
7535 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
7536 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
7537 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
7538 types.
7539 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
7540 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
7541 * builtins.cc (fold_builtin_addc_subc): New function.
7542 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
7543 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
7544
7545 2023-06-16 Jakub Jelinek <jakub@redhat.com>
7546
7547 PR tree-optimization/110271
7548 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
7549 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
7550 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
7551
7552 2023-06-16 Martin Jambor <mjambor@suse.cz>
7553
7554 * configure: Regenerate.
7555
7556 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
7557 Uros Bizjak <ubizjak@gmail.com>
7558
7559 PR target/31985
7560 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
7561 define_insn_and_split combine *add<dwi>3_doubleword with
7562 a *concat<mode><dwi>3 for more efficient lowering after reload.
7563
7564 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
7565
7566 * ira-lives.cc: Include except.h.
7567 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
7568 when the pseudo does not live at the exception landing pad.
7569
7570 2023-06-16 Alex Coplan <alex.coplan@arm.com>
7571
7572 * doc/invoke.texi: Document -Welaborated-enum-base.
7573
7574 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7575
7576 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
7577 (ushrn2_n): ... This.
7578 (sqshrn2_n): Rename builtins to...
7579 (ssqshrn2_n): ... This.
7580 (uqshrn2_n): Rename builtins to...
7581 (uqushrn2_n): ... This.
7582 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
7583 (vqshrn_high_n_s32): Likewise.
7584 (vqshrn_high_n_s64): Likewise.
7585 (vqshrn_high_n_u16): Likewise.
7586 (vqshrn_high_n_u32): Likewise.
7587 (vqshrn_high_n_u64): Likewise.
7588 (vshrn_high_n_s16): Likewise.
7589 (vshrn_high_n_s32): Likewise.
7590 (vshrn_high_n_s64): Likewise.
7591 (vshrn_high_n_u16): Likewise.
7592 (vshrn_high_n_u32): Likewise.
7593 (vshrn_high_n_u64): Likewise.
7594 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
7595 Rename to...
7596 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
7597 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
7598 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
7599 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
7600 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
7601 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
7602 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
7603 Update expander for the above.
7604
7605 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7606
7607 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
7608 (shrn2_n): ... This.
7609 (rshrn2): Rename builtins to...
7610 (rshrn2_n): ... This.
7611 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
7612 (vrshrn_high_n_s32): Likewise.
7613 (vrshrn_high_n_s64): Likewise.
7614 (vrshrn_high_n_u16): Likewise.
7615 (vrshrn_high_n_u32): Likewise.
7616 (vrshrn_high_n_u64): Likewise.
7617 (vshrn_high_n_s16): Likewise.
7618 (vshrn_high_n_s32): Likewise.
7619 (vshrn_high_n_s64): Likewise.
7620 (vshrn_high_n_u16): Likewise.
7621 (vshrn_high_n_u32): Likewise.
7622 (vshrn_high_n_u64): Likewise.
7623 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
7624 Delete.
7625 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
7626 (aarch64_shrn2<mode>_insn_le): Likewise.
7627 (aarch64_shrn2<mode>_insn_be): Likewise.
7628 (aarch64_shrn2<mode>): Likewise.
7629 (aarch64_rshrn2<mode>_insn_le): Likewise.
7630 (aarch64_rshrn2<mode>_insn_be): Likewise.
7631 (aarch64_rshrn2<mode>): Likewise.
7632 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
7633 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
7634 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
7635 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
7636 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
7637 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
7638 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
7639 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
7640 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
7641 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
7642 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
7643 (aarch64_sqshrun2_n<mode>): New define_expand.
7644 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
7645 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
7646 (aarch64_sqrshrun2_n<mode>): New define_expand.
7647 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
7648 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
7649 Delete unspec values.
7650 (VQSHRN_N): Delete int iterator.
7651
7652 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7653
7654 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
7655 * config/aarch64/aarch64-simd.md
7656 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
7657 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
7658 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
7659 * config/aarch64/iterators.md (shrn_s): New code attribute.
7660
7661 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7662
7663 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
7664 Rename to...
7665 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
7666 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
7667 (aarch64_sqrshrun_n<mode>_insn): Likewise.
7668 (aarch64_sqshrun_n<mode>_insn): Likewise.
7669 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
7670 (aarch64_sqshrun_n<mode>): Likewise.
7671 (aarch64_sqrshrun_n<mode>): Likewise.
7672 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
7673
7674 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7675
7676 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
7677 (shrn_n): ... This.
7678 (rshrn): Rename builtins to...
7679 (rshrn_n): ... This.
7680 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
7681 (vshrn_n_s32): Likewise.
7682 (vshrn_n_s64): Likewise.
7683 (vshrn_n_u16): Likewise.
7684 (vshrn_n_u32): Likewise.
7685 (vshrn_n_u64): Likewise.
7686 (vrshrn_n_s16): Likewise.
7687 (vrshrn_n_s32): Likewise.
7688 (vrshrn_n_s64): Likewise.
7689 (vrshrn_n_u16): Likewise.
7690 (vrshrn_n_u32): Likewise.
7691 (vrshrn_n_u64): Likewise.
7692 * config/aarch64/aarch64-simd.md
7693 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
7694 (aarch64_shrn<mode>): Likewise.
7695 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
7696 (aarch64_rshrn<mode>): Likewise.
7697 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
7698 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
7699 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
7700 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
7701 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
7702 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
7703 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
7704 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
7705 (aarch64_sqshrun_n<mode>): Likewise.
7706 (aarch64_sqrshrun_n<mode>): Likewise.
7707 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
7708 (TRUNCEXTEND): New code attribute.
7709 (TRUNC_SHIFT): Likewise.
7710 (shrn_op): Likewise.
7711 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
7712 New predicate.
7713
7714 2023-06-16 Pan Li <pan2.li@intel.com>
7715
7716 * config/riscv/riscv-vsetvl.cc
7717 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
7718
7719 2023-06-16 Richard Biener <rguenther@suse.de>
7720
7721 PR tree-optimization/110278
7722 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
7723 (x != (typeof x)(x == 0) -> true): Likewise.
7724
7725 2023-06-16 Pali Rohár <pali@kernel.org>
7726
7727 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
7728 (REAL_LIBGCC_SPEC): New define.
7729 * config/i386/mingw.opt: Add mcrtdll=
7730 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
7731 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
7732 (STARTFILE_SPEC): Adjust for -mcrtdll=.
7733 * doc/invoke.texi: Add mcrtdll= documentation.
7734
7735 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
7736
7737 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
7738 (mips_handle_code_readable_attr):New static function.
7739 (mips_get_code_readable_attr):New static enum function.
7740 (mips_set_current_function):Set the code_readable mode.
7741 (mips_option_override):Same as above.
7742 * doc/extend.texi:Document code_readable.
7743
7744 2023-06-16 Richard Biener <rguenther@suse.de>
7745
7746 PR tree-optimization/110269
7747 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
7748 with tree_expr_nonzero_p ...
7749 * match.pd (cmp (convert? addr@0) integer_zerop): With this
7750 pattern.
7751
7752 2023-06-15 Marek Polacek <polacek@redhat.com>
7753
7754 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
7755 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
7756 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
7757 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
7758 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
7759 check.
7760 * configure: Regenerate.
7761 * doc/install.texi: Document --enable-host-pie.
7762
7763 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
7764
7765 * regcprop.cc (maybe_mode_change): Enable stack pointer
7766 propagation.
7767
7768 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
7769
7770 PR tree-optimization/110266
7771 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
7772 complex type.
7773 (adjust_realpart_expr): Ditto.
7774
7775 2023-06-15 Jan Beulich <jbeulich@suse.com>
7776
7777 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
7778 vmovddup.
7779
7780 2023-06-15 Jan Beulich <jbeulich@suse.com>
7781
7782 * config/i386/constraints.md: Mention k and r for B.
7783
7784 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
7785 Andrew Pinski <apinski@marvell.com>
7786
7787 PR target/110136
7788 * config/loongarch/loongarch.md: Modify the register constraints for template
7789 "jumptable" and "indirect_jump" from "r" to "e".
7790
7791 2023-06-15 Xi Ruoyao <xry111@xry111.site>
7792
7793 * config/loongarch/loongarch-tune.h (loongarch_align): New
7794 struct.
7795 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
7796 array.
7797 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
7798 the array.
7799 * config/loongarch/loongarch.cc
7800 (loongarch_option_override_internal): Set the value of
7801 -falign-functions= if -falign-functions is enabled but no value
7802 is given. Likewise for -falign-labels=.
7803
7804 2023-06-15 Jakub Jelinek <jakub@redhat.com>
7805
7806 PR middle-end/79173
7807 * internal-fn.def (UADDC, USUBC): New internal functions.
7808 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
7809 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
7810 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
7811 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
7812 match_uaddc_usubc): New functions.
7813 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
7814 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
7815 other optimizations have been successful for those.
7816 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
7817 * fold-const-call.cc (fold_const_call): Likewise.
7818 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
7819 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
7820 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
7821 patterns.
7822 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
7823 define_expand patterns.
7824 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
7825 into NOTE_INSN_DELETED note rather than nop instruction.
7826 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
7827 Likewise.
7828
7829 2023-06-15 Jakub Jelinek <jakub@redhat.com>
7830
7831 PR middle-end/79173
7832 * config/i386/i386.md (subborrow<mode>): Add alternative with
7833 memory destination and add for it define_peephole2
7834 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
7835 destination in these patterns.
7836
7837 2023-06-15 Jakub Jelinek <jakub@redhat.com>
7838
7839 PR middle-end/79173
7840 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
7841 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
7842 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
7843 using memory destination in these patterns.
7844
7845 2023-06-15 Jakub Jelinek <jakub@redhat.com>
7846
7847 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
7848 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
7849 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
7850 * fold-const-call.cc (fold_const_call): ... here.
7851
7852 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
7853
7854 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
7855 Rename to <su>abd<mode>3.
7856 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
7857 to <su>abd<mode>3.
7858
7859 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
7860
7861 * doc/md.texi (sabd, uabd): Document them.
7862 * internal-fn.def (ABD): Use new optab.
7863 * optabs.def (sabd_optab, uabd_optab): New optabs,
7864 * tree-vect-patterns.cc (vect_recog_absolute_difference):
7865 Recognize the following idiom abs (a - b).
7866 (vect_recog_sad_pattern): Refactor to use
7867 vect_recog_absolute_difference.
7868 (vect_recog_abd_pattern): Use patterns found by
7869 vect_recog_absolute_difference to build a new ABD
7870 internal call.
7871
7872 2023-06-15 chenxiaolong <chenxl04200420@163.com>
7873
7874 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
7875 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
7876
7877 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7878
7879 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
7880 (expand_vec_perm_const_1): Add merge optmization.
7881
7882 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
7883
7884 PR target/110119
7885 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
7886 (riscv_pass_by_reference): Return true for vector mode
7887
7888 2023-06-15 Pan Li <pan2.li@intel.com>
7889
7890 * config/riscv/autovec-opt.md: Align the predictor sytle.
7891 * config/riscv/autovec.md: Ditto.
7892
7893 2023-06-15 Pan Li <pan2.li@intel.com>
7894
7895 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
7896 Take elen instead of scalar BITS_PER_WORD.
7897 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
7898 instead of scaler BITS_PER_WORD.
7899
7900 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
7901
7902 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
7903
7904 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7905
7906 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
7907 Fix signed comparison warning in loop from npats to enelts.
7908
7909 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
7910
7911 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
7912 to offloading compilation.
7913 * config/gcn/mkoffload.cc (main): Adjust.
7914 * config/nvptx/mkoffload.cc (main): Likewise.
7915 * doc/invoke.texi (foffload-options): Update example.
7916
7917 2023-06-14 liuhongt <hongtao.liu@intel.com>
7918
7919 PR target/110227
7920 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
7921 for alternative 2 since there's no evex version for vpcmpeqd
7922 ymm, ymm, ymm.
7923
7924 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
7925
7926 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
7927
7928 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
7929
7930 * config/sh/divtab.cc: Remove.
7931
7932 2023-06-13 Jakub Jelinek <jakub@redhat.com>
7933
7934 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
7935 superfluous spaces around \t for vpcmpeqd.
7936
7937 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
7938
7939 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
7940 clearing vectors with only a single element. Set CLEARED if the
7941 vector was initialized to zero.
7942
7943 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
7944
7945 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
7946 #include.
7947 (ENTRY): Undef.
7948 (TUPLE_ENTRY): Undef.
7949
7950 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7951
7952 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
7953 (shuffle_generic_patterns): Ditto.
7954 (expand_vec_perm_const_1): Ditto.
7955
7956 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7957
7958 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
7959 (shuffle_decompress_patterns): Ditto.
7960
7961 2023-06-13 Richard Biener <rguenther@suse.de>
7962
7963 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
7964
7965 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
7966 Kito Cheng <kito.cheng@sifive.com>
7967
7968 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
7969 warning flag if func is not builtin
7970 * config/riscv/riscv.cc
7971 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
7972 (riscv_arg_has_vector): Determine whether the arg is vector type.
7973 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
7974 (riscv_init_cumulative_args): The same as header.
7975 (riscv_get_arg_info): Add the checking.
7976 (riscv_function_value): Check the func return and set warning flag
7977 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
7978 determine whether warning psabi or not.
7979
7980 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7981
7982 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
7983 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
7984 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
7985 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
7986 with TP_TPIDRURO.
7987 (arm_output_load_tpidr): Define.
7988 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
7989 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
7990 assembly.
7991 (reload_tp_hard): Likewise.
7992 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
7993 arm_tp_type.
7994 * doc/invoke.texi (Arm Options, mtp): Document new values.
7995
7996 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7997
7998 PR target/108779
7999 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
8000 AARCH64_TPIDRRO_EL0 value.
8001 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
8002 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
8003 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
8004 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
8005
8006 2023-06-13 Alexandre Oliva <oliva@adacore.com>
8007
8008 * range-op-float.cc (frange_nextafter): Drop inline.
8009 (frelop_early_resolve): Add static.
8010 (frange_float): Likewise.
8011
8012 2023-06-13 Richard Biener <rguenther@suse.de>
8013
8014 PR middle-end/110232
8015 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
8016 to check whether the buffer covers the whole vector.
8017
8018 2023-06-13 Richard Biener <rguenther@suse.de>
8019
8020 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
8021 .MASK_LOAD and friends set the size of the access to unknown.
8022
8023 2023-06-13 Tejas Belagod <tbelagod@arm.com>
8024
8025 PR target/96339
8026 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
8027 calls that have a constant input predicate vector.
8028 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
8029 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
8030 (svlast_impl::vect_all_same): Check if all vector elements are equal.
8031
8032 2023-06-13 Andi Kleen <ak@linux.intel.com>
8033
8034 * config/i386/gcc-auto-profile: Regenerate.
8035
8036 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8037
8038 * config/riscv/vector-iterators.md: Fix requirement.
8039
8040 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8041
8042 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
8043 (shuffle_decompress_patterns): New function.
8044 (expand_vec_perm_const_1): Add decompress optimization.
8045
8046 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
8047
8048 PR rtl-optimization/101188
8049 * postreload.cc (reload_cse_move2add_invalidate): New function,
8050 extracted from...
8051 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
8052
8053 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
8054
8055 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
8056 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
8057 and if maxv == 1, use constant element for duplicating into register.
8058
8059 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
8060
8061 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
8062 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
8063 (gimplify_adjust_omp_clauses): Change
8064 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
8065 GOMP_MAP_FORCE_PRESENT.
8066 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
8067 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
8068 to/from clauses with present modifier.
8069
8070 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8071
8072 PR tree-optimization/110205
8073 * range-op-float.cc (range_operator::fold_range): Add default FII
8074 fold routine.
8075 * range-op-mixed.h (class operator_gt): Add missing final overrides.
8076 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
8077 (operator_lshift ::update_bitmask): Add final override.
8078 (operator_rshift ::update_bitmask): Add final override.
8079 * range-op.h (range_operator::fold_range): Add FII prototype.
8080
8081 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8082
8083 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
8084 Use range_op_handler directly.
8085 * range-op.cc (range_op_handler::range_op_handler): Unsigned
8086 param instead of tree-code.
8087 (ptr_op_widen_plus_signed): Delete.
8088 (ptr_op_widen_plus_unsigned): Delete.
8089 (ptr_op_widen_mult_signed): Delete.
8090 (ptr_op_widen_mult_unsigned): Delete.
8091 (range_op_table::initialize_integral_ops): Add new opcodes.
8092 * range-op.h (range_op_handler): Use unsigned.
8093 (OP_WIDEN_MULT_SIGNED): New.
8094 (OP_WIDEN_MULT_UNSIGNED): New.
8095 (OP_WIDEN_PLUS_SIGNED): New.
8096 (OP_WIDEN_PLUS_UNSIGNED): New.
8097 (RANGE_OP_TABLE_SIZE): New.
8098 (range_op_table::operator []): Use unsigned.
8099 (range_op_table::set): Use unsigned.
8100 (m_range_tree): Make unsigned.
8101 (ptr_op_widen_mult_signed): Remove.
8102 (ptr_op_widen_mult_unsigned): Remove.
8103 (ptr_op_widen_plus_signed): Remove.
8104 (ptr_op_widen_plus_unsigned): Remove.
8105
8106 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8107
8108 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
8109 manually as there is no access to the default operator.
8110 (cfn_copysign::fold_range): Don't check for validity.
8111 (cfn_ubsan::fold_range): Ditto.
8112 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
8113 * range-op.cc (default_operator): New.
8114 (range_op_handler::range_op_handler): Use default_operator
8115 instead of NULL.
8116 (range_op_handler::operator bool): Move from header, compare
8117 against default operator.
8118 (range_op_handler::range_op): New.
8119 * range-op.h (range_op_handler::operator bool): Move.
8120
8121 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8122
8123 * range-op.cc (unified_table): Delete.
8124 (range_op_table operator_table): Instantiate.
8125 (range_op_table::range_op_table): Rename from unified_table.
8126 (range_op_handler::range_op_handler): Use range_op_table.
8127 * range-op.h (range_op_table::operator []): Inline.
8128 (range_op_table::set): Inline.
8129
8130 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8131
8132 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
8133 pass type.
8134 * gimple-range-op.cc (get_code): Rename from get_code_and_type
8135 and simplify.
8136 (gimple_range_op_handler::supported_p): No need for type.
8137 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
8138 (cfn_copysign::fold_range): Ditto.
8139 (cfn_ubsan::fold_range): Ditto.
8140 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
8141 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
8142 * range-op-float.cc (operator_plus::op1_range): Ditto.
8143 (operator_mult::op1_range): Ditto.
8144 (range_op_float_tests): Ditto.
8145 * range-op.cc (get_op_handler): Remove.
8146 (range_op_handler::set_op_handler): Remove.
8147 (operator_plus::op1_range): No need for type.
8148 (operator_minus::op1_range): Ditto.
8149 (operator_mult::op1_range): Ditto.
8150 (operator_exact_divide::op1_range): Ditto.
8151 (operator_cast::op1_range): Ditto.
8152 (perator_bitwise_not::fold_range): Ditto.
8153 (operator_negate::fold_range): Ditto.
8154 * range-op.h (range_op_handler::range_op_handler): Remove type param.
8155 (range_cast): No need for type.
8156 (range_op_table::operator[]): Check for enum_code >= 0.
8157 * tree-data-ref.cc (compute_distributive_range): No need for type.
8158 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
8159 * value-query.cc (range_query::get_tree_range): Ditto.
8160 * value-relation.cc (relation_oracle::validate_relation): Ditto.
8161 * vr-values.cc (range_of_var_in_loop): Ditto.
8162 (simplify_using_ranges::fold_cond_with_ops): Ditto.
8163
8164 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8165
8166 * range-op-mixed.h (operator_max): Remove final.
8167 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
8168 (pointer_table::pointer_table): Remove.
8169 (class hybrid_max_operator): New.
8170 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
8171 * range-op.cc (pointer_tree_table): Remove.
8172 (unified_table::unified_table): Comment out MAX_EXPR.
8173 (get_op_handler): Remove check of pointer table.
8174 * range-op.h (class pointer_table): Remove.
8175
8176 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8177
8178 * range-op-mixed.h (operator_min): Remove final.
8179 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
8180 (class hybrid_min_operator): New.
8181 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
8182 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
8183
8184 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8185
8186 * range-op-mixed.h (operator_bitwise_or): Remove final.
8187 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
8188 (class hybrid_or_operator): New.
8189 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
8190 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
8191
8192 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8193
8194 * range-op-mixed.h (operator_bitwise_and): Remove final.
8195 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
8196 (class hybrid_and_operator): New.
8197 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
8198 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
8199
8200 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8201
8202 * Makefile.in (OBJS): Add range-op-ptr.o.
8203 * range-op-mixed.h (update_known_bitmask): Move prototype here.
8204 (minus_op1_op2_relation_effect): Move prototype here.
8205 (wi_includes_zero_p): Move function to here.
8206 (wi_zero_p): Ditto.
8207 * range-op.cc (update_known_bitmask): Remove static.
8208 (wi_includes_zero_p): Move to header.
8209 (wi_zero_p): Move to header.
8210 (minus_op1_op2_relation_effect): Remove static.
8211 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
8212 (pointer_plus_operator): Ditto.
8213 (pointer_min_max_operator): Ditto.
8214 (pointer_and_operator): Ditto.
8215 (pointer_or_operator): Ditto.
8216 (pointer_table): Ditto.
8217 (range_op_table::initialize_pointer_ops): Ditto.
8218 * range-op-ptr.cc: New.
8219
8220 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8221
8222 * range-op-mixed.h (class operator_max): Move from...
8223 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
8224 (get_op_handler): Remove the integral table.
8225 (class operator_max): Move from here.
8226 (integral_table::integral_table): Delete.
8227 * range-op.h (class integral_table): Delete.
8228
8229 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8230
8231 * range-op-mixed.h (class operator_min): Move from...
8232 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
8233 (class operator_min): Move from here.
8234 (integral_table::integral_table): Remove MIN_EXPR.
8235
8236 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8237
8238 * range-op-mixed.h (class operator_bitwise_or): Move from...
8239 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
8240 (class operator_bitwise_or): Move from here.
8241 (integral_table::integral_table): Remove BIT_IOR_EXPR.
8242
8243 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8244
8245 * range-op-mixed.h (class operator_bitwise_and): Move from...
8246 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
8247 (get_op_handler): Check for a pointer table entry first.
8248 (class operator_bitwise_and): Move from here.
8249 (integral_table::integral_table): Remove BIT_AND_EXPR.
8250
8251 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8252
8253 * range-op-mixed.h (class operator_bitwise_xor): Move from...
8254 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
8255 (class operator_bitwise_xor): Move from here.
8256 (integral_table::integral_table): Remove BIT_XOR_EXPR.
8257 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
8258
8259 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8260
8261 * range-op-mixed.h (class operator_bitwise_not): Move from...
8262 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
8263 (class operator_bitwise_not): Move from here.
8264 (integral_table::integral_table): Remove BIT_NOT_EXPR.
8265 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
8266
8267 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8268
8269 * range-op-mixed.h (class operator_addr_expr): Move from...
8270 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
8271 (class operator_addr_expr): Move from here.
8272 (integral_table::integral_table): Remove ADDR_EXPR.
8273 (pointer_table::pointer_table): Remove ADDR_EXPR.
8274
8275 2023-06-12 Pan Li <pan2.li@intel.com>
8276
8277 * config/riscv/riscv-vector-builtins-types.def
8278 (vfloat16m1_t): Add type to lmul1 ops.
8279 (vfloat16m2_t): Likewise.
8280 (vfloat16m4_t): Likewise.
8281
8282 2023-06-12 Richard Biener <rguenther@suse.de>
8283
8284 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
8285 .MASK_STORE and friend set the size of the access to
8286 unknown.
8287
8288 2023-06-12 Tamar Christina <tamar.christina@arm.com>
8289
8290 * config.in: Regenerate.
8291 * configure: Regenerate.
8292 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
8293
8294 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8295
8296 * config/riscv/autovec-opt.md
8297 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
8298 (*<any_shiftrt:optab>trunc<mode>): Ditto.
8299 * config/riscv/autovec.md (<optab><mode>3): Change to
8300 define_insn_and_split.
8301 (v<optab><mode>3): Ditto.
8302 (trunc<mode><v_double_trunc>2): Ditto.
8303
8304 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8305
8306 * simplify-rtx.cc (simplify_const_unary_operation):
8307 Handle US_TRUNCATE, SS_TRUNCATE.
8308
8309 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
8310
8311 PR modula2/109952
8312 * doc/gm2.texi (Standard procedures): Fix Next link.
8313
8314 2023-06-12 Tamar Christina <tamar.christina@arm.com>
8315
8316 * config.in: Regenerate.
8317
8318 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
8319
8320 PR middle-end/110142
8321 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
8322 subtype to vect_widened_op_tree and remove subtype parameter, also
8323 remove superfluous overloaded function definition.
8324 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
8325 to call to vect_recog_widen_op_pattern.
8326 (vect_recog_widen_minus_pattern): Likewise.
8327
8328 2023-06-12 liuhongt <hongtao.liu@intel.com>
8329
8330 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
8331 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
8332 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
8333 (vec_unpacks_lo_<mode>): Ditto.
8334 (vec_unpacks_hi_<mode>): Ditto.
8335 (sse_movlhps_<mode>): New define_insn.
8336 (ssse3_palignr<mode>_perm): Extend to V_128H.
8337 (V_128H): New mode iterator.
8338 (ssepackPHmode): New mode attribute.
8339 (vunpck_extract_mode): Ditto.
8340 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
8341 (vpckfloat_temp_mode): Ditto.
8342 (vpckfloat_op_mode): Ditto.
8343 (vunpckfixt_mode): Extend to VxHF.
8344 (vunpckfixt_model): Ditto.
8345 (vunpckfixt_extract_mode): Ditto.
8346
8347 2023-06-12 Richard Biener <rguenther@suse.de>
8348
8349 PR middle-end/110200
8350 * genmatch.cc (expr::gen_transform): Put braces around
8351 the if arm for the (convert ...) short-cut.
8352
8353 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
8354
8355 PR target/109932
8356 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
8357 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
8358
8359 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
8360
8361 PR target/110011
8362 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
8363 floating constant itself for real_to_target call.
8364
8365 2023-06-12 Pan Li <pan2.li@intel.com>
8366
8367 * config/riscv/riscv-vector-builtins-types.def
8368 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
8369 (vfloat16mf2_t): Ditto.
8370 (vfloat16m1_t): Ditto.
8371 (vfloat16m2_t): Ditto.
8372 (vfloat16m4_t): Ditto.
8373
8374 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
8375
8376 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
8377 Do not require a stack frame when debugging is enabled for AIX.
8378
8379 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
8380
8381 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
8382 Remove attribute values.
8383 (insv_notbit): New post-reload insn.
8384 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
8385 (*insv.not-bit.0_split, *insv.not-bit.7_split)
8386 (*insv.xor-extract_split): Split to insv_notbit.
8387 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
8388 (*insv.xor-extract): Remove post-reload insns.
8389 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
8390 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
8391 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
8392 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
8393
8394 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
8395
8396 PR target/109907
8397 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
8398 (MSB, SIZE): New mode attributes.
8399 (any_shift): New code iterator.
8400 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
8401 (*lshr<mode>3_const_split): Add constraint alternative for
8402 the case of shift-offset = MSB. Ditch "length" attribute.
8403 (extzv<mode): New. replaces extzv. Adjust following patterns.
8404 Use avr_out_extr, avr_out_extr_not to print asm.
8405 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
8406 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
8407 * config/avr/constraints.md (C15, C23, C31, Yil): New
8408 * config/avr/predicates.md (reg_or_low_io_operand)
8409 (const7_operand, reg_or_low_io_operand)
8410 (const15_operand, const_0_to_15_operand)
8411 (const23_operand, const_0_to_23_operand)
8412 (const31_operand, const_0_to_31_operand): New.
8413 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
8414 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
8415 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
8416 MSB case to new insn constraint "r" for operands[1].
8417 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
8418 Handle these cases.
8419 (avr_rtx_costs_1): Adjust cost for a new pattern.
8420
8421 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8422
8423 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
8424 (vector_insn_info::parse_insn): Add rtx_insn parse.
8425 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
8426 (get_first_vsetvl): New function.
8427 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
8428 (pass_vsetvl::cleanup_insns): Remove it.
8429 (pass_vsetvl::ssa_post_optimization): New function.
8430 (has_no_uses): Ditto.
8431 (pass_vsetvl::propagate_avl): Remove it.
8432 (pass_vsetvl::df_post_optimization): New function.
8433 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
8434 * config/riscv/riscv-vsetvl.h: Adapt declaration.
8435
8436 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
8437
8438 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
8439 (ipcp_vr_lattice::print): Call dump method.
8440 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
8441 Value_Range.
8442 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
8443 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
8444 range.
8445 (initialize_node_lattices): Pass type when appropriate.
8446 (ipa_vr_operation_and_type_effects): Make type agnostic.
8447 (ipa_value_range_from_jfunc): Same.
8448 (propagate_vr_across_jump_function): Same.
8449 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
8450 (evaluate_properties_for_edge): Same.
8451 * ipa-prop.cc (ipa_vr::get_vrange): Same.
8452 (ipcp_update_vr): Same.
8453 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
8454 (ipa_range_set_and_normalize): Same.
8455
8456 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
8457
8458 PR target/109650
8459 PR target/92729
8460 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
8461 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
8462 (avr_pass_data_ifelse): New pass_data for it.
8463 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
8464 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
8465 (avr_out_cmp_ext): New functions.
8466 (compare_condtition): Make sure REG_CC dies in the branch insn.
8467 (avr_rtx_costs_1): Add computation of cbranch costs.
8468 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
8469 [ADJUST_LEN_CMP_SEXT]Handle them.
8470 (TARGET_CANONICALIZE_COMPARISON): New define.
8471 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
8472 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
8473 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
8474 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
8475 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
8476 (avr_out_cmp_zext): New Protos
8477 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
8478 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
8479 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
8480 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
8481 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
8482 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
8483 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
8484 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
8485 (adjust_len) [add_set_ZN, cmp_zext]: New.
8486 (QIPSI): New mode iterator.
8487 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
8488 (gelt): New code iterator.
8489 (gelt_eqne): New code attribute.
8490 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
8491 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
8492 (*cmpqi_sign_extend): Remove insns.
8493 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
8494 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
8495 * config/avr/predicates.md (scratch_or_d_register_operand): New.
8496 * config/avr/constraints.md (Yxx): New constraint.
8497
8498 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8499
8500 * config/riscv/autovec.md (select_vl<mode>): New pattern.
8501 * config/riscv/riscv-protos.h (expand_select_vl): New function.
8502 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
8503
8504 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8505
8506 * range-op-float.cc (foperator_mult_div_base): Delete.
8507 (foperator_mult_div_base::find_range): Make static local function.
8508 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
8509 (operator_mult::op1_range): Rename from foperator_mult.
8510 (operator_mult::op2_range): Ditto.
8511 (operator_mult::rv_fold): Ditto.
8512 (float_table::float_table): Remove MULT_EXPR.
8513 (class foperator_div): Inherit from range_operator.
8514 (float_table::float_table): Delete.
8515 * range-op-mixed.h (class operator_mult): Combined from integer
8516 and float files.
8517 * range-op.cc (float_tree_table): Delete.
8518 (op_mult): New object.
8519 (unified_table::unified_table): Add MULT_EXPR.
8520 (get_op_handler): Do not check float table any longer.
8521 (class cross_product_operator): Move to range-op-mixed.h.
8522 (class operator_mult): Move to range-op-mixed.h.
8523 (integral_table::integral_table): Remove MULT_EXPR.
8524 (pointer_table::pointer_table): Remove MULT_EXPR.
8525 * range-op.h (float_table): Remove.
8526
8527 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8528
8529 * range-op-float.cc (foperator_negate): Remove. Move prototypes
8530 to range-op-mixed.h
8531 (operator_negate::fold_range): Rename from foperator_negate.
8532 (operator_negate::op1_range): Ditto.
8533 (float_table::float_table): Remove NEGATE_EXPR.
8534 * range-op-mixed.h (class operator_negate): Combined from integer
8535 and float files.
8536 * range-op.cc (op_negate): New object.
8537 (unified_table::unified_table): Add NEGATE_EXPR.
8538 (class operator_negate): Move to range-op-mixed.h.
8539 (integral_table::integral_table): Remove NEGATE_EXPR.
8540 (pointer_table::pointer_table): Remove NEGATE_EXPR.
8541
8542 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8543
8544 * range-op-float.cc (foperator_minus): Remove. Move prototypes
8545 to range-op-mixed.h
8546 (operator_minus::fold_range): Rename from foperator_minus.
8547 (operator_minus::op1_range): Ditto.
8548 (operator_minus::op2_range): Ditto.
8549 (operator_minus::rv_fold): Ditto.
8550 (float_table::float_table): Remove MINUS_EXPR.
8551 * range-op-mixed.h (class operator_minus): Combined from integer
8552 and float files.
8553 * range-op.cc (op_minus): New object.
8554 (unified_table::unified_table): Add MINUS_EXPR.
8555 (class operator_minus): Move to range-op-mixed.h.
8556 (integral_table::integral_table): Remove MINUS_EXPR.
8557 (pointer_table::pointer_table): Remove MINUS_EXPR.
8558
8559 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8560
8561 * range-op-float.cc (foperator_abs): Remove. Move prototypes
8562 to range-op-mixed.h
8563 (operator_abs::fold_range): Rename from foperator_abs.
8564 (operator_abs::op1_range): Ditto.
8565 (float_table::float_table): Remove ABS_EXPR.
8566 * range-op-mixed.h (class operator_abs): Combined from integer
8567 and float files.
8568 * range-op.cc (op_abs): New object.
8569 (unified_table::unified_table): Add ABS_EXPR.
8570 (class operator_abs): Move to range-op-mixed.h.
8571 (integral_table::integral_table): Remove ABS_EXPR.
8572 (pointer_table::pointer_table): Remove ABS_EXPR.
8573
8574 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8575
8576 * range-op-float.cc (foperator_plus): Remove. Move prototypes
8577 to range-op-mixed.h
8578 (operator_plus::fold_range): Rename from foperator_plus.
8579 (operator_plus::op1_range): Ditto.
8580 (operator_plus::op2_range): Ditto.
8581 (operator_plus::rv_fold): Ditto.
8582 (float_table::float_table): Remove PLUS_EXPR.
8583 * range-op-mixed.h (class operator_plus): Combined from integer
8584 and float files.
8585 * range-op.cc (op_plus): New object.
8586 (unified_table::unified_table): Add PLUS_EXPR.
8587 (class operator_plus): Move to range-op-mixed.h.
8588 (integral_table::integral_table): Remove PLUS_EXPR.
8589 (pointer_table::pointer_table): Remove PLUS_EXPR.
8590
8591 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8592
8593 * range-op-mixed.h (class operator_cast): Combined from integer
8594 and float files.
8595 * range-op.cc (op_cast): New object.
8596 (unified_table::unified_table): Add op_cast
8597 (class operator_cast): Move to range-op-mixed.h.
8598 (integral_table::integral_table): Remove op_cast
8599 (pointer_table::pointer_table): Remove op_cast.
8600
8601 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8602
8603 * range-op-float.cc (operator_cst::fold_range): New.
8604 * range-op-mixed.h (class operator_cst): Move from integer file.
8605 * range-op.cc (op_cst): New object.
8606 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
8607 (class operator_cst): Move to range-op-mixed.h.
8608 (integral_table::integral_table): Remove op_cst.
8609 (pointer_table::pointer_table): Remove op_cst.
8610
8611 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8612
8613 * range-op-float.cc (foperator_identity): Remove. Move prototypes
8614 to range-op-mixed.h
8615 (operator_identity::fold_range): Rename from foperator_identity.
8616 (operator_identity::op1_range): Ditto.
8617 (float_table::float_table): Remove fop_identity.
8618 * range-op-mixed.h (class operator_identity): Combined from integer
8619 and float files.
8620 * range-op.cc (op_identity): New object.
8621 (unified_table::unified_table): Add op_identity.
8622 (class operator_identity): Move to range-op-mixed.h.
8623 (integral_table::integral_table): Remove identity.
8624 (pointer_table::pointer_table): Remove identity.
8625
8626 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8627
8628 * range-op-float.cc (foperator_ge): Remove. Move prototypes
8629 to range-op-mixed.h
8630 (operator_ge::fold_range): Rename from foperator_ge.
8631 (operator_ge::op1_range): Ditto.
8632 (float_table::float_table): Remove GE_EXPR.
8633 * range-op-mixed.h (class operator_ge): Combined from integer
8634 and float files.
8635 * range-op.cc (op_ge): New object.
8636 (unified_table::unified_table): Add GE_EXPR.
8637 (class operator_ge): Move to range-op-mixed.h.
8638 (ge_op1_op2_relation): Fold into
8639 operator_ge::op1_op2_relation.
8640 (integral_table::integral_table): Remove GE_EXPR.
8641 (pointer_table::pointer_table): Remove GE_EXPR.
8642 * range-op.h (ge_op1_op2_relation): Delete.
8643
8644 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8645
8646 * range-op-float.cc (foperator_gt): Remove. Move prototypes
8647 to range-op-mixed.h
8648 (operator_gt::fold_range): Rename from foperator_gt.
8649 (operator_gt::op1_range): Ditto.
8650 (float_table::float_table): Remove GT_EXPR.
8651 * range-op-mixed.h (class operator_gt): Combined from integer
8652 and float files.
8653 * range-op.cc (op_gt): New object.
8654 (unified_table::unified_table): Add GT_EXPR.
8655 (class operator_gt): Move to range-op-mixed.h.
8656 (gt_op1_op2_relation): Fold into
8657 operator_gt::op1_op2_relation.
8658 (integral_table::integral_table): Remove GT_EXPR.
8659 (pointer_table::pointer_table): Remove GT_EXPR.
8660 * range-op.h (gt_op1_op2_relation): Delete.
8661
8662 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8663
8664 * range-op-float.cc (foperator_le): Remove. Move prototypes
8665 to range-op-mixed.h
8666 (operator_le::fold_range): Rename from foperator_le.
8667 (operator_le::op1_range): Ditto.
8668 (float_table::float_table): Remove LE_EXPR.
8669 * range-op-mixed.h (class operator_le): Combined from integer
8670 and float files.
8671 * range-op.cc (op_le): New object.
8672 (unified_table::unified_table): Add LE_EXPR.
8673 (class operator_le): Move to range-op-mixed.h.
8674 (le_op1_op2_relation): Fold into
8675 operator_le::op1_op2_relation.
8676 (integral_table::integral_table): Remove LE_EXPR.
8677 (pointer_table::pointer_table): Remove LE_EXPR.
8678 * range-op.h (le_op1_op2_relation): Delete.
8679
8680 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8681
8682 * range-op-float.cc (foperator_lt): Remove. Move prototypes
8683 to range-op-mixed.h
8684 (operator_lt::fold_range): Rename from foperator_lt.
8685 (operator_lt::op1_range): Ditto.
8686 (float_table::float_table): Remove LT_EXPR.
8687 * range-op-mixed.h (class operator_lt): Combined from integer
8688 and float files.
8689 * range-op.cc (op_lt): New object.
8690 (unified_table::unified_table): Add LT_EXPR.
8691 (class operator_lt): Move to range-op-mixed.h.
8692 (lt_op1_op2_relation): Fold into
8693 operator_lt::op1_op2_relation.
8694 (integral_table::integral_table): Remove LT_EXPR.
8695 (pointer_table::pointer_table): Remove LT_EXPR.
8696 * range-op.h (lt_op1_op2_relation): Delete.
8697
8698 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8699
8700 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
8701 to range-op-mixed.h
8702 (operator_equal::fold_range): Rename from foperator_not_equal.
8703 (operator_equal::op1_range): Ditto.
8704 (float_table::float_table): Remove NE_EXPR.
8705 * range-op-mixed.h (class operator_not_equal): Combined from integer
8706 and float files.
8707 * range-op.cc (op_equal): New object.
8708 (unified_table::unified_table): Add NE_EXPR.
8709 (class operator_not_equal): Move to range-op-mixed.h.
8710 (not_equal_op1_op2_relation): Fold into
8711 operator_not_equal::op1_op2_relation.
8712 (integral_table::integral_table): Remove NE_EXPR.
8713 (pointer_table::pointer_table): Remove NE_EXPR.
8714 * range-op.h (not_equal_op1_op2_relation): Delete.
8715
8716 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8717
8718 * range-op-float.cc (foperator_equal): Remove. Move prototypes
8719 to range-op-mixed.h
8720 (operator_equal::fold_range): Rename from foperator_equal.
8721 (operator_equal::op1_range): Ditto.
8722 (float_table::float_table): Remove EQ_EXPR.
8723 * range-op-mixed.h (class operator_equal): Combined from integer
8724 and float files.
8725 * range-op.cc (op_equal): New object.
8726 (unified_table::unified_table): Add EQ_EXPR.
8727 (class operator_equal): Move to range-op-mixed.h.
8728 (equal_op1_op2_relation): Fold into
8729 operator_equal::op1_op2_relation.
8730 (integral_table::integral_table): Remove EQ_EXPR.
8731 (pointer_table::pointer_table): Remove EQ_EXPR.
8732 * range-op.h (equal_op1_op2_relation): Delete.
8733
8734 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8735
8736 * range-op-float.cc (class float_table): Move to header.
8737 (float_table::float_table): Move float only operators to...
8738 (range_op_table::initialize_float_ops): Here.
8739 * range-op-mixed.h: New.
8740 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
8741 to top of file.
8742 (float_tree_table): Moved from range-op-float.cc.
8743 (unified_tree_table): New.
8744 (unified_table::unified_table): New. Call initialize routines.
8745 (get_op_handler): Check unified table first.
8746 (range_op_handler::range_op_handler): Handle no type constructor.
8747 (integral_table::integral_table): Move integral only operators to...
8748 (range_op_table::initialize_integral_ops): Here.
8749 (pointer_table::pointer_table): Move pointer only operators to...
8750 (range_op_table::initialize_pointer_ops): Here.
8751 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
8752 (get_bool_state): Ditto.
8753 (empty_range_varying): Ditto.
8754 (relop_early_resolve): Ditto.
8755 (class range_op_table): Add new init methods for range types.
8756 (class integral_table): Move declaration to here.
8757 (class pointer_table): Move declaration to here.
8758 (class float_table): Move declaration to here.
8759
8760 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8761 Richard Sandiford <richard.sandiford@arm.com>
8762 Richard Biener <rguenther@suse.de>
8763
8764 * doc/md.texi: Add SELECT_VL support.
8765 * internal-fn.def (SELECT_VL): Ditto.
8766 * optabs.def (OPTAB_D): Ditto.
8767 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
8768 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
8769 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
8770 (vectorizable_store): Ditto.
8771 (vectorizable_load): Ditto.
8772 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
8773
8774 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
8775
8776 PR ipa/109886
8777 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
8778 type as well.
8779
8780 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
8781
8782 * range-op.cc (range_cast): Move to...
8783 * range-op.h (range_cast): Here and add generic a version.
8784
8785 2023-06-09 Marek Polacek <polacek@redhat.com>
8786
8787 PR c/39589
8788 PR c++/96868
8789 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
8790 warn about designated initializers in C only.
8791
8792 2023-06-09 Andrew Pinski <apinski@marvell.com>
8793
8794 PR tree-optimization/97711
8795 PR tree-optimization/110155
8796 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
8797 ((zero_one != 0) ? z <op> y : y): Likewise.
8798
8799 2023-06-09 Andrew Pinski <apinski@marvell.com>
8800
8801 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
8802 multiply rather than negation/bit_and.
8803
8804 2023-06-09 Andrew Pinski <apinski@marvell.com>
8805
8806 * match.pd (`X & -Y -> X * Y`): Allow for truncation
8807 and the same type for unsigned types.
8808
8809 2023-06-09 Andrew Pinski <apinski@marvell.com>
8810
8811 PR tree-optimization/110165
8812 PR tree-optimization/110166
8813 * match.pd (zero_one_valued_p): Don't accept
8814 signed 1-bit integers.
8815
8816 2023-06-09 Richard Biener <rguenther@suse.de>
8817
8818 * match.pd (two conversions in a row): Use element_precision
8819 to DTRT for VECTOR_TYPE.
8820
8821 2023-06-09 Pan Li <pan2.li@intel.com>
8822
8823 * config/riscv/riscv.md (enabled): Move to another place, and
8824 add fp_vector_disabled to the cond.
8825 (fp_vector_disabled): New attr defined for disabling fp.
8826 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
8827
8828 2023-06-09 Pan Li <pan2.li@intel.com>
8829
8830 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
8831 literal to int.
8832
8833 2023-06-09 liuhongt <hongtao.liu@intel.com>
8834
8835 PR target/110108
8836 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
8837 view_convert_expr mask to signed type when folding pblendvb
8838 builtins.
8839
8840 2023-06-09 liuhongt <hongtao.liu@intel.com>
8841
8842 PR target/110108
8843 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
8844 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
8845 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
8846 TARGET_64BIT.
8847 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
8848 real codename for __builtin_ia32_pabs{b,w,d}.
8849
8850 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
8851
8852 * gimple-range-op.cc
8853 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
8854 (gimple_range_op_handler::maybe_builtin_call): Adjust.
8855 * gimple-range-op.h (operand1, operand2): Use m_operator.
8856 * range-op.cc (integral_table, pointer_table): Relocate.
8857 (get_op_handler): Rename from get_handler and handle all types.
8858 (range_op_handler::range_op_handler): Relocate.
8859 (range_op_handler::set_op_handler): Relocate and adjust.
8860 (range_op_handler::range_op_handler): Relocate.
8861 (dispatch_trio): New.
8862 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
8863 (range_op_handler::dispatch_kind): New.
8864 (range_op_handler::fold_range): Relocate and Use new dispatch value.
8865 (range_op_handler::op1_range): Ditto.
8866 (range_op_handler::op2_range): Ditto.
8867 (range_op_handler::lhs_op1_relation): Ditto.
8868 (range_op_handler::lhs_op2_relation): Ditto.
8869 (range_op_handler::op1_op2_relation): Ditto.
8870 (range_op_handler::set_op_handler): Use m_operator member.
8871 * range-op.h (range_op_handler::operator bool): Use m_operator.
8872 (range_op_handler::dispatch_kind): New.
8873 (range_op_handler::m_valid): Delete.
8874 (range_op_handler::m_int): Delete
8875 (range_op_handler::m_float): Delete
8876 (range_op_handler::m_operator): New.
8877 (range_op_table::operator[]): Relocate from .cc file.
8878 (range_op_table::set): Ditto.
8879 * value-range.h (class vrange): Make range_op_handler a friend.
8880
8881 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
8882
8883 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
8884 (cfn_pass_through_arg1): Adjust using statemenmt.
8885 (cfn_signbit): Change base class, adjust using statement.
8886 (cfn_copysign): Ditto.
8887 (cfn_sqrt): Ditto.
8888 (cfn_sincos): Ditto.
8889 * range-op-float.cc (fold_range): Change class to range_operator.
8890 (rv_fold): Ditto.
8891 (op1_range): Ditto
8892 (op2_range): Ditto
8893 (lhs_op1_relation): Ditto.
8894 (lhs_op2_relation): Ditto.
8895 (op1_op2_relation): Ditto.
8896 (foperator_*): Ditto.
8897 (class float_table): New. Inherit from range_op_table.
8898 (floating_tree_table) Change to range_op_table pointer.
8899 (class floating_op_table): Delete.
8900 * range-op.cc (operator_equal): Adjust using statement.
8901 (operator_not_equal): Ditto.
8902 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
8903 (operator_minus, operator_cast): Ditto.
8904 (operator_bitwise_and, pointer_plus_operator): Ditto.
8905 (get_float_handle): Change return type.
8906 * range-op.h (range_operator_float): Delete. Relocate all methods
8907 into class range_operator.
8908 (range_op_handler::m_float): Change type to range_operator.
8909 (floating_op_table): Delete.
8910 (floating_tree_table): Change type.
8911
8912 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
8913
8914 * range-op.cc (range_operator::fold_range): Call virtual routine.
8915 (range_operator::update_bitmask): New.
8916 (operator_equal::update_bitmask): New.
8917 (operator_not_equal::update_bitmask): New.
8918 (operator_lt::update_bitmask): New.
8919 (operator_le::update_bitmask): New.
8920 (operator_gt::update_bitmask): New.
8921 (operator_ge::update_bitmask): New.
8922 (operator_ge::update_bitmask): New.
8923 (operator_plus::update_bitmask): New.
8924 (operator_minus::update_bitmask): New.
8925 (operator_pointer_diff::update_bitmask): New.
8926 (operator_min::update_bitmask): New.
8927 (operator_max::update_bitmask): New.
8928 (operator_mult::update_bitmask): New.
8929 (operator_div:operator_div):New.
8930 (operator_div::update_bitmask): New.
8931 (operator_div::m_code): New member.
8932 (operator_exact_divide::operator_exact_divide): New constructor.
8933 (operator_lshift::update_bitmask): New.
8934 (operator_rshift::update_bitmask): New.
8935 (operator_bitwise_and::update_bitmask): New.
8936 (operator_bitwise_or::update_bitmask): New.
8937 (operator_bitwise_xor::update_bitmask): New.
8938 (operator_trunc_mod::update_bitmask): New.
8939 (op_ident, op_unknown, op_ptr_min_max): New.
8940 (op_nop, op_convert): Delete.
8941 (op_ssa, op_paren, op_obj_type): Delete.
8942 (op_realpart, op_imagpart): Delete.
8943 (op_ptr_min, op_ptr_max): Delete.
8944 (pointer_plus_operator:update_bitmask): New.
8945 (range_op_table::set): Do not use m_code.
8946 (integral_table::integral_table): Adjust to single instances.
8947 * range-op.h (range_operator::range_operator): Delete.
8948 (range_operator::m_code): Delete.
8949 (range_operator::update_bitmask): New.
8950
8951 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
8952
8953 * range-op-float.cc (range_operator_float::fold_range): Return
8954 NAN of the result type.
8955
8956 2023-06-08 Jakub Jelinek <jakub@redhat.com>
8957
8958 * optabs.cc (expand_ffs): Add forward declaration.
8959 (expand_doubleword_clz): Rename to ...
8960 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
8961 handle also doubleword CTZ and FFS in addition to CLZ.
8962 (expand_unop): Adjust caller. Also call it for doubleword
8963 ctz_optab and ffs_optab.
8964
8965 2023-06-08 Jakub Jelinek <jakub@redhat.com>
8966
8967 PR target/110152
8968 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
8969 n_words == 2 recurse with mmx_ok as first argument rather than false.
8970
8971 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
8972
8973 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
8974 avoid sign extension/undefined behaviour when setting each bit.
8975
8976 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
8977 Uros Bizjak <ubizjak@gmail.com>
8978
8979 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
8980 Use new x86_stc instruction when the carry flag must be set.
8981 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
8982 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
8983 * config/i386/i386.h (TARGET_SLOW_STC): New define.
8984 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
8985 (x86_stc): New define_insn.
8986 (define_peephole2): Convert x86_stc into alternate implementation
8987 on pentium4 without -Os when a QImode register is available.
8988 (*x86_cmc): New define_insn.
8989 (define_peephole2): Convert *x86_cmc into alternate implementation
8990 on pentium4 without -Os when a QImode register is available.
8991 (*setccc): New define_insn_and_split for a no-op CCCmode move.
8992 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
8993 recognize (and eliminate) the carry flag being copied to itself.
8994 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
8995 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
8996
8997 2023-06-07 Andrew Pinski <apinski@marvell.com>
8998
8999 * match.pd: Fix comment for the
9000 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
9001
9002 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
9003 Jeff Law <jlaw@ventanamicro.com>
9004
9005 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
9006 (rotrsi3_sext): Expose generator.
9007 (rotlsi3 pattern): Hide generator.
9008 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
9009 declaration.
9010 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
9011 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
9012 (mulsi3, <optab>si3): Likewise.
9013 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
9014 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
9015 (<u>mulsidi3): Likewise.
9016 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
9017 (mulsi3_extended, <optab>si3_extended): Likewise.
9018 (splitter for shadd feeding divison): Update RTL pattern to account
9019 for changes in how 32 bit ops are expanded for TARGET_64BIT.
9020 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
9021
9022 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
9023
9024 PR target/109725
9025 * config/riscv/riscv.cc (riscv_print_operand): Calculate
9026 memmodel only when it is valid.
9027
9028 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
9029
9030 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
9031 for constant element of a vector.
9032
9033 2023-06-07 Jakub Jelinek <jakub@redhat.com>
9034
9035 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
9036 instead compare tree_nonzero_bits <= 1U rather than just == 1.
9037
9038 2023-06-07 Alex Coplan <alex.coplan@arm.com>
9039
9040 PR target/110132
9041 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
9042 New. Use it ...
9043 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
9044 names for builtins.
9045 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
9046 setup if in_lto_p, just like we do for SVE.
9047 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
9048 (__arm_st64b): Delete.
9049 (__arm_st64bv): Delete.
9050 (__arm_st64bv0): Delete.
9051
9052 2023-06-07 Alex Coplan <alex.coplan@arm.com>
9053
9054 PR target/110100
9055 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
9056 Use input operand for the destination address.
9057 * config/aarch64/aarch64.md (st64b): Fix constraint on address
9058 operand.
9059
9060 2023-06-07 Alex Coplan <alex.coplan@arm.com>
9061
9062 PR target/110100
9063 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
9064 Replace eight consecutive spaces with tabs.
9065 (aarch64_init_ls64_builtins): Likewise.
9066 (aarch64_expand_builtin_ls64): Likewise.
9067 * config/aarch64/aarch64.md (ld64b): Likewise.
9068 (st64b): Likewise.
9069 (st64bv): Likewise
9070 (st64bv0): Likewise.
9071
9072 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
9073
9074 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
9075 offset table pseudo to a general reg subset.
9076
9077 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9078
9079 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
9080 Rename to...
9081 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
9082 with RTL codes.
9083 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
9084 (aarch64_sqxtun2<mode>_le): Likewise.
9085 (aarch64_sqxtun2<mode>_be): Likewise.
9086 (aarch64_sqxtun2<mode>): Adjust for the above.
9087 (aarch64_sqmovun<mode>): New define_expand.
9088 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
9089 (half_mask): New mode attribute.
9090 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
9091 New predicate.
9092
9093 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9094
9095 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
9096 Reimplement as...
9097 (aarch64_addp<mode>_insn): ... This...
9098 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
9099 (aarch64_addp<mode>): New define_expand.
9100
9101 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9102
9103 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
9104 * config/riscv/riscv-v.cc
9105 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
9106 handling.
9107 (rvv_builder::single_step_npatterns_p): New function.
9108 (rvv_builder::npatterns_all_equal_p): Ditto.
9109 (const_vec_all_in_range_p): Support POLY handling.
9110 (gen_const_vector_dup): Ditto.
9111 (emit_vlmax_gather_insn): Add vrgatherei16.
9112 (emit_vlmax_masked_gather_mu_insn): Ditto.
9113 (expand_const_vector): Add VLA SLP const vector support.
9114 (expand_vec_perm): Support POLY.
9115 (struct expand_vec_perm_d): New struct.
9116 (shuffle_generic_patterns): New function.
9117 (expand_vec_perm_const_1): Ditto.
9118 (expand_vec_perm_const): Ditto.
9119 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
9120 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
9121
9122 2023-06-07 Andrew Pinski <apinski@marvell.com>
9123
9124 PR middle-end/110117
9125 * expr.cc (expand_single_bit_test): Handle
9126 const_int from expand_expr.
9127
9128 2023-06-07 Andrew Pinski <apinski@marvell.com>
9129
9130 * expr.cc (do_store_flag): Rearrange the
9131 TER code so that it overrides the nonzero bits
9132 info if we had `a & POW2`.
9133
9134 2023-06-07 Andrew Pinski <apinski@marvell.com>
9135
9136 PR tree-optimization/110134
9137 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
9138 types.
9139 (-A CMP CST -> B CMP (-CST)): Likewise.
9140
9141 2023-06-07 Andrew Pinski <apinski@marvell.com>
9142
9143 PR tree-optimization/89263
9144 PR tree-optimization/99069
9145 PR tree-optimization/20083
9146 PR tree-optimization/94898
9147 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
9148 one of the operands are constant.
9149
9150 2023-06-07 Andrew Pinski <apinski@marvell.com>
9151
9152 * match.pd (zero_one_valued_p): Match 0 integer constant
9153 too.
9154
9155 2023-06-07 Pan Li <pan2.li@intel.com>
9156
9157 * config/riscv/riscv-vector-builtins-types.def
9158 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
9159 (vfloat32m1_t): Ditto.
9160 (vfloat32m2_t): Ditto.
9161 (vfloat32m4_t): Ditto.
9162 (vfloat32m8_t): Ditto.
9163 (vint16mf4_t): Ditto.
9164 (vint16mf2_t): Ditto.
9165 (vint16m1_t): Ditto.
9166 (vint16m2_t): Ditto.
9167 (vint16m4_t): Ditto.
9168 (vint16m8_t): Ditto.
9169 (vuint16mf4_t): Ditto.
9170 (vuint16mf2_t): Ditto.
9171 (vuint16m1_t): Ditto.
9172 (vuint16m2_t): Ditto.
9173 (vuint16m4_t): Ditto.
9174 (vuint16m8_t): Ditto.
9175 (vint32mf2_t): Ditto.
9176 (vint32m1_t): Ditto.
9177 (vint32m2_t): Ditto.
9178 (vint32m4_t): Ditto.
9179 (vint32m8_t): Ditto.
9180 (vuint32mf2_t): Ditto.
9181 (vuint32m1_t): Ditto.
9182 (vuint32m2_t): Ditto.
9183 (vuint32m4_t): Ditto.
9184 (vuint32m8_t): Ditto.
9185
9186 2023-06-07 Jason Merrill <jason@redhat.com>
9187
9188 PR c++/58487
9189 * doc/invoke.texi: Document it.
9190
9191 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
9192
9193 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
9194 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
9195 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
9196 NOT (BITREVERSE x) as BITREVERSE (NOT x).
9197 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
9198 Optimize PARITY (BITREVERSE x) as PARITY x.
9199 Optimize BITREVERSE (BITREVERSE x) as x.
9200 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
9201 BITREVERSE of a constant integer at compile-time.
9202 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
9203 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
9204 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
9205 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
9206 Optimize COPYSIGN (x, ABS y) as ABS x.
9207 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
9208 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
9209 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
9210 arguments at compile-time.
9211
9212 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
9213
9214 * rtl.h (function_invariant_p): Change return type from int to bool.
9215 * reload1.cc (function_invariant_p): Change return type from
9216 int to bool and adjust function body accordingly.
9217
9218 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9219
9220 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
9221 (*single_<optab>mult_plus<mode>): Ditto.
9222 (*double_<optab>mult_plus<mode>): Ditto.
9223 (*sign_zero_extend_fma): Ditto.
9224 (*zero_sign_extend_fma): Ditto.
9225 * config/riscv/riscv-protos.h (enum insn_type): New enum.
9226
9227 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
9228 Tobias Burnus <tobias@codesourcery.com>
9229
9230 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
9231 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
9232 set.
9233 (omp_get_attachment): Handle map clauses with 'present' modifier.
9234 (omp_group_base): Likewise.
9235 (gimplify_scan_omp_clauses): Reorder present maps to come first.
9236 Set GOVD flags for present defaultmaps.
9237 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
9238 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
9239 clauses.
9240 (lower_omp_target): Handle map clauses with 'present' modifier.
9241 Handle 'to' and 'from' clauses with 'present'.
9242 * tree-core.h (enum omp_clause_defaultmap_kind): Add
9243 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
9244 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
9245 'from' clauses with 'present' modifier. Handle present defaultmap.
9246 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
9247
9248 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
9249
9250 * config/rs6000/genfusion.pl: Delete some dead code.
9251
9252 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
9253
9254 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
9255 split out from...
9256 (gen_ld_cmpi_p10): ... this.
9257
9258 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
9259
9260 PR target/106907
9261 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
9262 duplicate expression.
9263
9264 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9265
9266 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
9267 Handle unsigned reduc_plus_scal_ builtins.
9268 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
9269 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
9270 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
9271 __builtin_aarch64_reduc_plus_scal_v2di.
9272 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
9273
9274 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9275
9276 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
9277 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
9278 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
9279
9280 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9281
9282 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
9283 (aarch64_shrn<mode>_insn_be): Delete.
9284 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
9285 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
9286 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
9287 (aarch64_rshrn<mode>_insn_le): Delete.
9288 (aarch64_rshrn<mode>_insn_be): Delete.
9289 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
9290 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
9291
9292 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9293
9294 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
9295 Define prototype.
9296 (aarch64_pars_overlap_p): Likewise.
9297 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
9298 Express in terms of UNSPEC_ADDV.
9299 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
9300 (*aarch64_<su>addlv<mode>_reduction): Define.
9301 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
9302 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
9303 (aarch64_pars_overlap_p): Likewise.
9304 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
9305 (VQUADW): New mode attribute.
9306 (VWIDE2X_S): Likewise.
9307 (USADDLV): Delete.
9308 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
9309 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
9310
9311 2023-06-06 Richard Biener <rguenther@suse.de>
9312
9313 PR middle-end/110055
9314 * gimplify.cc (gimplify_target_expr): Do not emit
9315 CLOBBERs for variables which have static storage duration
9316 after gimplifying their initializers.
9317
9318 2023-06-06 Richard Biener <rguenther@suse.de>
9319
9320 PR tree-optimization/109143
9321 * tree-ssa-structalias.cc (solution_set_expand): Avoid
9322 one bitmap iteration and optimize bit range setting.
9323
9324 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
9325
9326 PR bootstrap/110120
9327 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
9328 XVECEXP, not XEXP, to access first item of a PARALLEL.
9329
9330 2023-06-06 Pan Li <pan2.li@intel.com>
9331
9332 * config/riscv/riscv-vector-builtins-types.def
9333 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
9334 (vfloat16mf2_t): Likewise.
9335 (vfloat16m1_t): Likewise.
9336 (vfloat16m2_t): Likewise.
9337 (vfloat16m4_t): Likewise.
9338 (vfloat16m8_t): Likewise.
9339 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
9340 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
9341
9342 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
9343
9344 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
9345 for cfi reg/mem machmode
9346 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
9347
9348 2023-06-06 Li Xu <xuli1@eswincomputing.com>
9349
9350 * config/riscv/vector-iterators.md:
9351 Fix 'REQUIREMENT' for machine_mode 'MODE'.
9352 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
9353 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
9354 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
9355
9356 2023-06-06 Pan Li <pan2.li@intel.com>
9357
9358 * config/riscv/vector-iterators.md: Fix typo in mode attr.
9359
9360 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9361 Joel Hutton <joel.hutton@arm.com>
9362
9363 * doc/generic.texi: Remove old tree codes.
9364 * expr.cc (expand_expr_real_2): Remove old tree code cases.
9365 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
9366 * optabs-tree.cc (optab_for_tree_code): Likewise.
9367 (supportable_half_widening_operation): Likewise.
9368 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
9369 * tree-inline.cc (estimate_operator_cost): Likewise.
9370 (op_symbol_code): Likewise.
9371 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
9372 (vect_analyze_data_ref_accesses): Likewise.
9373 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
9374 * cfgexpand.cc (expand_debug_expr): Likewise.
9375 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
9376 (supportable_widening_operation): Likewise.
9377 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
9378 Likewise.
9379 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
9380 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
9381 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
9382 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
9383 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
9384 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
9385 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
9386 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
9387
9388 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9389 Joel Hutton <joel.hutton@arm.com>
9390 Tamar Christina <tamar.christina@arm.com>
9391
9392 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
9393 this ...
9394 (vec_widen_<su>add_lo_<mode>): ... to this.
9395 (vec_widen_<su>addl_hi_<mode>): Rename this ...
9396 (vec_widen_<su>add_hi_<mode>): ... to this.
9397 (vec_widen_<su>subl_lo_<mode>): Rename this ...
9398 (vec_widen_<su>sub_lo_<mode>): ... to this.
9399 (vec_widen_<su>subl_hi_<mode>): Rename this ...
9400 (vec_widen_<su>sub_hi_<mode>): ...to this.
9401 * doc/generic.texi: Document new IFN codes.
9402 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
9403 (commutative_binary_fn_p): Add widen_plus fn's.
9404 (widening_fn_p): New function.
9405 (narrowing_fn_p): New function.
9406 (direct_internal_fn_optab): Change visibility.
9407 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
9408 internal_fn that expands into multiple internal_fns for widening.
9409 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
9410 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
9411 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
9412 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
9413 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
9414 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
9415 (lookup_hilo_internal_fn): Likewise.
9416 (widening_fn_p): Likewise.
9417 (Narrowing_fn_p): Likewise.
9418 * optabs.cc (commutative_optab_p): Add widening plus optabs.
9419 * optabs.def (OPTAB_D): Define widen add, sub optabs.
9420 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
9421 patterns with a hi/lo or even/odd split.
9422 (vect_recog_sad_pattern): Refactor to use new IFN codes.
9423 (vect_recog_widen_plus_pattern): Likewise.
9424 (vect_recog_widen_minus_pattern): Likewise.
9425 (vect_recog_average_pattern): Likewise.
9426 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
9427 _HILO IFNs.
9428 (supportable_widening_operation): Likewise.
9429 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
9430
9431 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9432 Joel Hutton <joel.hutton@arm.com>
9433
9434 * tree-vect-patterns.cc: Add include for gimple-iterator.
9435 (vect_recog_widen_op_pattern): Refactor to use code_helper.
9436 (vect_gimple_build): New function.
9437 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
9438 code_helper.
9439 (vectorizable_call): Likewise.
9440 (vect_gen_widened_results_half): Likewise.
9441 (vect_create_vectorized_demotion_stmts): Likewise.
9442 (vect_create_vectorized_promotion_stmts): Likewise.
9443 (vect_create_half_widening_stmts): Likewise.
9444 (vectorizable_conversion): Likewise.
9445 (supportable_widening_operation): Likewise.
9446 (supportable_narrowing_operation): Likewise.
9447 * tree-vectorizer.h (supportable_widening_operation): Change
9448 prototype to use code_helper.
9449 (supportable_narrowing_operation): Likewise.
9450 (vect_gimple_build): New function prototype.
9451 * tree.h (code_helper::safe_as_tree_code): New function.
9452 (code_helper::safe_as_fn_code): New function.
9453
9454 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
9455
9456 * wide-int.cc (wi::bitreverse_large): New function implementing
9457 bit reversal of an integer.
9458 * wide-int.h (wi::bitreverse): New (template) function prototype.
9459 (bitreverse_large): Prototype helper function/implementation.
9460 (wi::bitreverse): New template wrapper around bitreverse_large.
9461
9462 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
9463
9464 * rtl.h (print_rtl_single): Change return type from int to void.
9465 (print_rtl_single_with_indent): Ditto.
9466 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
9467 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
9468 (rtx_writer::print_rtx_operand_code_0): Ditto.
9469 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
9470 (rtx_writer::print_rtx_operand_code_i): Ditto.
9471 (rtx_writer::print_rtx_operand_code_u): Ditto.
9472 (rtx_writer::print_rtx_operand): Ditto.
9473 (rtx_writer::print_rtx): Ditto.
9474 (rtx_writer::finish_directive): Ditto.
9475 (print_rtl_single): Change return type from int to void
9476 and adjust function body accordingly.
9477 (rtx_writer::print_rtl_single_with_indent): Ditto.
9478
9479 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
9480
9481 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
9482 (reg_class_subset_p): Ditto.
9483 * reginfo.cc (reg_classes_intersect_p): Ditto.
9484 (reg_class_subset_p): Ditto.
9485
9486 2023-06-05 Pan Li <pan2.li@intel.com>
9487
9488 * config/riscv/riscv-vector-builtins-types.def
9489 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
9490 (vfloat32m1_t): Ditto.
9491 (vfloat32m2_t): Ditto.
9492 (vfloat32m4_t): Ditto.
9493 (vfloat32m8_t): Ditto.
9494 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
9495 (vint16mf2_t): Ditto.
9496 (vint16m1_t): Ditto.
9497 (vint16m2_t): Ditto.
9498 (vint16m4_t): Ditto.
9499 (vint16m8_t): Ditto.
9500 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
9501 (vuint16mf2_t): Ditto.
9502 (vuint16m1_t): Ditto.
9503 (vuint16m2_t): Ditto.
9504 (vuint16m4_t): Ditto.
9505 (vuint16m8_t): Ditto.
9506 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
9507 (vint32m1_t): Ditto.
9508 (vint32m2_t): Ditto.
9509 (vint32m4_t): Ditto.
9510 (vint32m8_t): Ditto.
9511 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
9512 (vuint32m1_t): Ditto.
9513 (vuint32m2_t): Ditto.
9514 (vuint32m4_t): Ditto.
9515 (vuint32m8_t): Ditto.
9516 * config/riscv/vector-iterators.md: Add FP=16 support for V,
9517 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
9518
9519 2023-06-05 Andrew Pinski <apinski@marvell.com>
9520
9521 PR bootstrap/110085
9522 * Makefile.in (clean): Remove the removing of
9523 MULTILIB_DIR/MULTILIB_OPTIONS directories.
9524
9525 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
9526
9527 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
9528 prototype.
9529 * config/mips/mips.cc (speculation_barrier_libfunc): New static
9530 variable.
9531 (mips_init_libfuncs): Initialize it.
9532 (mips_emit_speculation_barrier): New function.
9533 * config/mips/mips.md (speculation_barrier): Call
9534 mips_emit_speculation_barrier.
9535
9536 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9537
9538 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
9539 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
9540 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
9541 (rvv_builder::get_merged_repeating_sequence): Ditto.
9542 (rvv_builder::get_merge_scalar_mask): Ditto.
9543 (emit_scalar_move_insn): Ditto.
9544 (emit_vlmax_integer_move_insn): Ditto.
9545 (emit_nonvlmax_integer_move_insn): Ditto.
9546 (emit_vlmax_gather_insn): Ditto.
9547 (emit_vlmax_masked_gather_mu_insn): Ditto.
9548 (get_repeating_sequence_dup_machine_mode): Ditto.
9549
9550 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9551
9552 * config/riscv/autovec.md: Split arguments.
9553 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
9554 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
9555
9556 2023-06-04 Andrew Pinski <apinski@marvell.com>
9557
9558 * expr.cc (do_store_flag): Improve for single bit testing
9559 not against zero but against that single bit.
9560
9561 2023-06-04 Andrew Pinski <apinski@marvell.com>
9562
9563 * expr.cc (do_store_flag): Extend the one bit checking case
9564 to handle the case where we don't have an and but rather still
9565 one bit is known to be non-zero.
9566
9567 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
9568
9569 * config/h8300/constraints.md (Zz): Make this a normal
9570 constraint.
9571 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
9572 * config/h8300/logical.md (H8/SX bit patterns): Remove.
9573
9574 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
9575
9576 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
9577 New insn_and_split patterns.
9578
9579 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9580
9581 PR target/110109
9582 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
9583 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
9584 (@vlmul_extx4<mode>): Ditto.
9585 (@vlmul_extx8<mode>): Ditto.
9586 (@vlmul_extx16<mode>): Ditto.
9587 (@vlmul_extx32<mode>): Ditto.
9588 (@vlmul_extx64<mode>): Ditto.
9589 (*vlmul_extx2<mode>): Ditto.
9590 (*vlmul_extx4<mode>): Ditto.
9591 (*vlmul_extx8<mode>): Ditto.
9592 (*vlmul_extx16<mode>): Ditto.
9593 (*vlmul_extx32<mode>): Ditto.
9594 (*vlmul_extx64<mode>): Ditto.
9595
9596 2023-06-04 Pan Li <pan2.li@intel.com>
9597
9598 * config/riscv/riscv-vector-builtins-types.def
9599 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
9600 (vfloat32m1_t): Likewise.
9601 (vfloat32m2_t): Likewise.
9602 (vfloat32m4_t): Likewise.
9603 (vfloat32m8_t): Likewise.
9604 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
9605 * config/riscv/vector-iterators.md: Add single to half machine
9606 mode conversion.
9607
9608 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9609
9610 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
9611 (*n<optab><mode>): Ditto.
9612 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
9613 (*n<optab><mode>): Ditto.
9614 * config/riscv/vector.md: Ditto.
9615
9616 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
9617
9618 PR target/110083
9619 * config/i386/i386-features.cc (scalar_chain::convert_compare):
9620 Update or delete REG_EQUAL notes, converting CONST_INT and
9621 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
9622
9623 2023-06-04 Jason Merrill <jason@redhat.com>
9624
9625 PR c++/97720
9626 * tree-eh.cc (lower_resx): Pass the exception pointer to the
9627 failure_decl.
9628 * except.h: Tweak comment.
9629
9630 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
9631
9632 * postreload.cc (move2add_use_add2_insn): Handle
9633 trivial single_sets. Rename variable PAT to SET.
9634 (move2add_use_add3_insn, reload_cse_move2add): Similar.
9635
9636 2023-06-04 Pan Li <pan2.li@intel.com>
9637
9638 * config/riscv/riscv-vector-builtins-types.def
9639 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
9640 (vfloat16mf2_t): Likewise.
9641 (vfloat16m1_t): Likewise.
9642 (vfloat16m2_t): Likewise.
9643 (vfloat16m4_t): Likewise.
9644 (vfloat16m8_t): Likewise.
9645 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
9646 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
9647 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
9648 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
9649 vlmul and ratio.
9650
9651 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
9652
9653 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
9654 correct offset.
9655
9656 2023-06-03 Die Li <lidie@eswincomputing.com>
9657
9658 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
9659
9660 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9661
9662 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
9663
9664 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9665
9666 * config/riscv/vector.md: Add vector-opt.md.
9667 * config/riscv/autovec-opt.md: New file.
9668
9669 2023-06-03 liuhongt <hongtao.liu@intel.com>
9670
9671 PR tree-optimization/110067
9672 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
9673 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
9674
9675 2023-06-03 liuhongt <hongtao.liu@intel.com>
9676
9677 PR target/92658
9678 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
9679 (truncv2si<mode>2): Ditto.
9680
9681 2023-06-02 Andrew Pinski <apinski@marvell.com>
9682
9683 PR rtl-optimization/102733
9684 * dse.cc (store_info): Add addrspace field.
9685 (record_store): Record the address space
9686 and check to make sure they are the same.
9687
9688 2023-06-02 Andrew Pinski <apinski@marvell.com>
9689
9690 PR rtl-optimization/110042
9691 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
9692 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
9693
9694 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
9695
9696 PR target/110044
9697 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
9698 Make sure that we do not have a cap on field alignment before altering
9699 the struct layout based on the type alignment of the first entry.
9700
9701 2023-06-02 David Faust <david.faust@oracle.com>
9702
9703 PR debug/110073
9704 * btfout.cc (btf_absolute_func_id): New function.
9705 (btf_asm_func_type): Call it here. Change index parameter from
9706 size_t to ctf_id_t. Use PRIu64 formatter.
9707
9708 2023-06-02 Alex Coplan <alex.coplan@arm.com>
9709
9710 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
9711 (btf_asm_datasec_type): Likewise.
9712
9713 2023-06-02 Carl Love <cel@us.ibm.com>
9714
9715 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
9716 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
9717
9718 2023-06-02 Jason Merrill <jason@redhat.com>
9719
9720 PR c++/110070
9721 PR c++/105838
9722 * tree.h (DECL_MERGEABLE): New.
9723 * tree-core.h (struct tree_decl_common): Mention it.
9724 * gimplify.cc (gimplify_init_constructor): Check it.
9725 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
9726 * varasm.cc (categorize_decl_for_section): Likewise.
9727
9728 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
9729
9730 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
9731 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
9732 (stack_regs_mentioned_p): Change return type from int to bool
9733 and adjust function body accordingly.
9734 (stack_regs_mentioned): Ditto.
9735 (check_asm_stack_operands): Ditto. Change "malformed_asm"
9736 variable to bool.
9737 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
9738 (swap_rtx_condition_1): Change return type from int to bool
9739 and adjust function body accordingly. Change "r" variable to bool.
9740 (swap_rtx_condition): Change return type from int to bool
9741 and adjust function body accordingly.
9742 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
9743 (subst_stack_regs): Ditto.
9744 (convert_regs_entry): Change return type from int to bool and adjust
9745 function body accordingly. Change "inserted" variable to bool.
9746 (convert_regs_1): Recode handling of control_flow_insn_deleted.
9747 (convert_regs_2): Recode handling of cfg_altered.
9748 (convert_regs): Ditto. Change "inserted" variable to bool.
9749
9750 2023-06-02 Jason Merrill <jason@redhat.com>
9751
9752 PR c++/95226
9753 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
9754 (initializer_constant_valid_p_1): Compare float precision.
9755
9756 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
9757
9758 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
9759 semantics.
9760
9761 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9762
9763 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
9764 (vect_set_loop_condition_partial_vectors): Ditto.
9765
9766 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
9767
9768 PR target/110088
9769 * config/avr/avr.md: Add an RTL peephole to optimize operations on
9770 non-LD_REGS after a move from LD_REGS.
9771 (piaop): New code iterator.
9772
9773 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
9774
9775 PR testsuite/66005
9776 * doc/install.texi: Document (optional) Perl usage for parallel
9777 testing of libgomp.
9778
9779 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
9780
9781 PR bootstrap/82856
9782 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
9783 later)".
9784
9785 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9786 KuanLin Chen <best124612@gmail.com>
9787
9788 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
9789 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
9790
9791 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9792
9793 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
9794
9795 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9796
9797 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
9798
9799 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9800
9801 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
9802 __RISCV_ prefix.
9803 (DEF_RVV_FRM_ENUM): Ditto.
9804
9805 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9806
9807 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
9808 intrinsic API expander
9809 * config/riscv/vector.md
9810 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
9811 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
9812 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
9813
9814 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9815
9816 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
9817 * config/riscv/predicates.md (vector_perm_operand): New predicate.
9818 * config/riscv/riscv-protos.h (enum insn_type): New enum.
9819 (expand_vec_perm): New function.
9820 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
9821 (gen_const_vector_dup): Ditto.
9822 (emit_vlmax_gather_insn): Ditto.
9823 (emit_vlmax_masked_gather_mu_insn): Ditto.
9824 (expand_vec_perm): Ditto.
9825
9826 2023-06-01 Jason Merrill <jason@redhat.com>
9827
9828 * doc/invoke.texi (-Wpedantic): Improve clarity.
9829
9830 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
9831
9832 * rtl.h (exp_equiv_p): Change return type from int to bool.
9833 * cse.cc (mention_regs): Change return type from int to bool
9834 and adjust function body accordingly.
9835 (exp_equiv_p): Ditto.
9836 (insert_regs): Ditto. Change "modified" function argument to bool
9837 and update usage accordingly.
9838 (record_jump_cond): Remove always zero "reversed_nonequality"
9839 function argument and update usage accordingly.
9840 (fold_rtx): Change "changed" variable to bool.
9841 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
9842 (is_dead_reg): Change return type from int to bool.
9843
9844 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
9845
9846 * config/xtensa/xtensa.md (adddi3, subdi3):
9847 New RTL generation patterns implemented according to the instruc-
9848 tion idioms described in the Xtensa ISA reference manual (p. 600).
9849
9850 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
9851 Uros Bizjak <ubizjak@gmail.com>
9852
9853 PR target/109973
9854 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
9855 CODE_for_sse4_1_ptestzv2di.
9856 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
9857 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
9858 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
9859 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
9860 when expanding UNSPEC_PTEST to compare against zero.
9861 * config/i386/i386-features.cc (scalar_chain::convert_compare):
9862 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
9863 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
9864 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
9865 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
9866 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
9867 check for suitable matching modes for the UNSPEC_PTEST pattern.
9868 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
9869 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
9870 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
9871 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
9872 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
9873 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
9874 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
9875 current behavior.
9876 (*ptest<mode>_and): Specify CCZ to only perform this optimization
9877 when only the Z flag is required.
9878
9879 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
9880
9881 PR target/109954
9882 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
9883
9884 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9885
9886 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
9887 Add =r,m and =r,m alternatives.
9888 (load_pair<DREG:mode><DREG2:mode>): Likewise.
9889 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
9890
9891 2023-06-01 Pan Li <pan2.li@intel.com>
9892
9893 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
9894 and zvfh.
9895 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
9896 (main): Disable FP16 tuple.
9897 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
9898 (TARGET_VECTOR_ELEN_FP_16): Ditto.
9899 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
9900 Add FP16.
9901 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
9902 (vfloat16mf2_t): Ditto.
9903 (vfloat16m1_t): Ditto.
9904 (vfloat16m2_t): Ditto.
9905 (vfloat16m4_t): Ditto.
9906 (vfloat16m8_t): Ditto.
9907 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
9908 New macro.
9909 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
9910 machine mode based on TARGET_VECTOR_ELEN_FP_16.
9911
9912 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9913
9914 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
9915 (DEF_RVV_FRM_ENUM): New macro.
9916 (handle_pragma_vector): Add FRM enum
9917 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
9918 (RNE): Ditto.
9919 (RTZ): Ditto.
9920 (RDN): Ditto.
9921 (RUP): Ditto.
9922 (RMM): Ditto.
9923
9924 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
9925 Richard Sandiford <richard.sandiford@arm.com>
9926
9927 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
9928 Update call to wi::bswap.
9929 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
9930 Update call to wi::bswap.
9931 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
9932 Update calls to wi::bswap.
9933 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
9934 (wi::bswap_large): New function, with revised API.
9935 * wide-int.h (wi::bswap): New (template) function prototype.
9936 (wide_int_storage::bswap): Remove method.
9937 (sext_large, zext_large): Consistent indentation/line wrapping.
9938 (bswap_large): Prototype helper function containing implementation.
9939 (wi::bswap): New template wrapper around bswap_large.
9940
9941 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9942
9943 PR target/99195
9944 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
9945 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
9946 (usdot_prod<vsi2qi>): Rename to...
9947 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
9948 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
9949 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
9950 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
9951 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
9952 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
9953 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
9954 ... This.
9955
9956 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9957
9958 PR target/99195
9959 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
9960 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
9961 (aarch64_sq<r>dmulh_n<mode>): Rename to...
9962 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
9963 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
9964 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
9965 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
9966 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
9967 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
9968 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
9969 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
9970 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
9971 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
9972 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
9973
9974 2023-05-31 David Faust <david.faust@oracle.com>
9975
9976 * btfout.cc (btf_kind_names): New.
9977 (btf_kind_name): New.
9978 (btf_absolute_var_id): New utility function.
9979 (btf_relative_var_id): Likewise.
9980 (btf_relative_func_id): Likewise.
9981 (btf_absolute_datasec_id): Likewise.
9982 (btf_asm_type_ref): New.
9983 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
9984 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
9985 (btf_asm_varent): Likewise.
9986 (btf_asm_func_arg): Likewise.
9987 (btf_asm_datasec_entry): Likewise.
9988 (btf_asm_datasec_type): Likewise.
9989 (btf_asm_func_type): Likewise. Add index parameter.
9990 (btf_asm_enum_const): Likewise.
9991 (btf_asm_sou_member): Likewise.
9992 (output_btf_vars): Update btf_asm_* call accordingly.
9993 (output_asm_btf_sou_fields): Likewise.
9994 (output_asm_btf_enum_list): Likewise.
9995 (output_asm_btf_func_args_list): Likewise.
9996 (output_asm_btf_vlen_bytes): Likewise.
9997 (output_btf_func_types): Add ctf_container_ref parameter.
9998 Pass it to btf_asm_func_type.
9999 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
10000 (btf_output): Update output_btf_func_types call similarly.
10001
10002 2023-05-31 David Faust <david.faust@oracle.com>
10003
10004 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
10005 and BTF_KIND_FWD which do not use the size/type field at all.
10006
10007 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
10008
10009 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
10010 (active_insn_p): Ditto.
10011 (in_sequence_p): Ditto.
10012 (unshare_all_rtl): Change return type from int to void.
10013 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
10014 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
10015 and adjust function body accordingly.
10016 (mem_expr_equal_p): Ditto.
10017 (unshare_all_rtl): Change return type from int to void
10018 and adjust function body accordingly.
10019 (verify_rtx_sharing): Remove unneeded return.
10020 (active_insn_p): Change return type from int to bool
10021 and adjust function body accordingly.
10022 (in_sequence_p): Ditto.
10023
10024 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
10025
10026 * rtl.h (true_dependence): Change return type from int to bool.
10027 (canon_true_dependence): Ditto.
10028 (read_dependence): Ditto.
10029 (anti_dependence): Ditto.
10030 (canon_anti_dependence): Ditto.
10031 (output_dependence): Ditto.
10032 (canon_output_dependence): Ditto.
10033 (may_alias_p): Ditto.
10034 * alias.h (alias_sets_conflict_p): Ditto.
10035 (alias_sets_must_conflict_p): Ditto.
10036 (objects_must_conflict_p): Ditto.
10037 (nonoverlapping_memrefs_p): Ditto.
10038 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
10039 (record_set): Ditto.
10040 (base_alias_check): Ditto.
10041 (find_base_value): Ditto.
10042 (mems_in_disjoint_alias_sets_p): Ditto.
10043 (get_alias_set_entry): Ditto.
10044 (decl_for_component_ref): Ditto.
10045 (write_dependence_p): Ditto.
10046 (memory_modified_1): Ditto.
10047 (mems_in_disjoint_alias_set_p): Change return type from int to bool
10048 and adjust function body accordingly.
10049 (alias_sets_conflict_p): Ditto.
10050 (alias_sets_must_conflict_p): Ditto.
10051 (objects_must_conflict_p): Ditto.
10052 (rtx_equal_for_memref_p): Ditto.
10053 (base_alias_check): Ditto.
10054 (read_dependence): Ditto.
10055 (nonoverlapping_memrefs_p): Ditto.
10056 (true_dependence_1): Ditto.
10057 (true_dependence): Ditto.
10058 (canon_true_dependence): Ditto.
10059 (write_dependence_p): Ditto.
10060 (anti_dependence): Ditto.
10061 (canon_anti_dependence): Ditto.
10062 (output_dependence): Ditto.
10063 (canon_output_dependence): Ditto.
10064 (may_alias_p): Ditto.
10065 (init_alias_analysis): Change "changed" variable to bool.
10066
10067 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10068
10069 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
10070 expand into define_insn_and_split.
10071
10072 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10073
10074 * config/riscv/vector.md: Remove FRM.
10075
10076 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10077
10078 * config/riscv/vector.md: Remove FRM.
10079
10080 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10081
10082 * config/riscv/vector.md: Remove FRM.
10083
10084 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
10085
10086 PR target/110039
10087 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
10088 pattern.
10089
10090 2023-05-31 Richard Biener <rguenther@suse.de>
10091
10092 PR ipa/109983
10093 PR tree-optimization/109143
10094 * tree-ssa-structalias.cc (struct topo_info): Remove.
10095 (init_topo_info): Likewise.
10096 (free_topo_info): Likewise.
10097 (compute_topo_order): Simplify API, put the component
10098 with ESCAPED last so it's processed first.
10099 (topo_visit): Adjust.
10100 (solve_graph): Likewise.
10101
10102 2023-05-31 Richard Biener <rguenther@suse.de>
10103
10104 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
10105 New.
10106 (add_graph_edge): Count redundant edges we avoid to create.
10107 (dump_sa_stats): Dump them.
10108 (ipa_pta_execute): Do not dump generating constraints when
10109 we are not dumping them.
10110
10111 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10112
10113 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
10114 output template to avoid explicit switch on which_alternative.
10115 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
10116 (and<mode>3): Likewise.
10117 (ior<mode>3): Likewise.
10118 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
10119
10120 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10121
10122 * config/xtensa/predicates.md (xtensa_bit_join_operator):
10123 New predicate.
10124 * config/xtensa/xtensa.md (ior_op): Remove.
10125 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
10126 insn_and_split pattern of the same name to express and capture
10127 the bit-combining operation with both sides swapped.
10128 In addition, replace use of code iterator with new operator
10129 predicate.
10130 (*shlrd_const, *shlrd_per_byte):
10131 Likewise regarding the code iterator.
10132
10133 2023-05-31 Cui, Lili <lili.cui@intel.com>
10134
10135 PR tree-optimization/110038
10136 * params.opt: Add a limit on tree-reassoc-width.
10137 * tree-ssa-reassoc.cc
10138 (rewrite_expr_tree_parallel): Add width limit.
10139
10140 2023-05-31 Pan Li <pan2.li@intel.com>
10141
10142 * common/config/riscv/riscv-common.cc:
10143 (riscv_implied_info): Add zvfh item.
10144 (riscv_ext_version_table): Ditto.
10145 (riscv_ext_flag_table): Ditto.
10146 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
10147 (TARGET_ZVFH): Ditto.
10148
10149 2023-05-30 liuhongt <hongtao.liu@intel.com>
10150
10151 PR tree-optimization/108804
10152 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
10153 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
10154 Add new parameter narrow_src_p.
10155 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
10156 vectorization by truncating to lower precision.
10157 * tree-vectorizer.h (vect_get_range_info): New declare.
10158
10159 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
10160
10161 * lra-int.h (lra_update_sp_offset): Add the prototype.
10162 * lra.cc (setup_sp_offset): Change the return type. Use
10163 lra_update_sp_offset.
10164 * lra-eliminations.cc (lra_update_sp_offset): New function.
10165 (lra_process_new_insns): Push the current insn to reprocess if the
10166 input reload changes sp offset.
10167
10168 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
10169
10170 PR target/110041
10171 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
10172 Fix misleading identation.
10173
10174 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
10175
10176 * rtl.h (comparison_dominates_p): Change return type from int to bool.
10177 (condjump_p): Ditto.
10178 (any_condjump_p): Ditto.
10179 (any_uncondjump_p): Ditto.
10180 (simplejump_p): Ditto.
10181 (returnjump_p): Ditto.
10182 (eh_returnjump_p): Ditto.
10183 (onlyjump_p): Ditto.
10184 (invert_jump_1): Ditto.
10185 (invert_jump): Ditto.
10186 (rtx_renumbered_equal_p): Ditto.
10187 (redirect_jump_1): Ditto.
10188 (redirect_jump): Ditto.
10189 (condjump_in_parallel_p): Ditto.
10190 * jump.cc (invert_exp_1): Adjust forward declaration.
10191 (comparison_dominates_p): Change return type from int to bool
10192 and adjust function body accordingly.
10193 (simplejump_p): Ditto.
10194 (condjump_p): Ditto.
10195 (condjump_in_parallel_p): Ditto.
10196 (any_uncondjump_p): Ditto.
10197 (any_condjump_p): Ditto.
10198 (returnjump_p): Ditto.
10199 (eh_returnjump_p): Ditto.
10200 (onlyjump_p): Ditto.
10201 (redirect_jump_1): Ditto.
10202 (redirect_jump): Ditto.
10203 (invert_exp_1): Ditto.
10204 (invert_jump_1): Ditto.
10205 (invert_jump): Ditto.
10206 (rtx_renumbered_equal_p): Ditto.
10207
10208 2023-05-30 Andrew Pinski <apinski@marvell.com>
10209
10210 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
10211 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
10212 Add ne as a possible cmp.
10213 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
10214
10215 2023-05-30 Andrew Pinski <apinski@marvell.com>
10216
10217 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
10218 pattern.
10219
10220 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
10221
10222 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
10223 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
10224 (and (extend X) C) as (zero_extend (and X C)), to also optimize
10225 modes wider than HOST_WIDE_INT.
10226
10227 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
10228
10229 PR target/107172
10230 * simplify-rtx.cc (simplify_const_relational_operation): Return
10231 early if we have a MODE_CC comparison that isn't a COMPARE against
10232 const0_rtx.
10233
10234 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
10235
10236 * config/riscv/riscv.cc (riscv_const_insns): Allow
10237 const_vec_duplicates.
10238
10239 2023-05-30 liuhongt <hongtao.liu@intel.com>
10240
10241 PR middle-end/108938
10242 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
10243 function, cut from original find_bswap_or_nop function.
10244 (find_bswap_or_nop): Add a new parameter, detect bswap +
10245 rotate and save rotate result in the new parameter.
10246 (bswap_replace): Add a new parameter to indicate rotate and
10247 generate rotate stmt if needed.
10248 (maybe_optimize_vector_constructor): Adjust for new rotate
10249 parameter in the upper 2 functions.
10250 (pass_optimize_bswap::execute): Ditto.
10251 (imm_store_chain_info::output_merged_store): Ditto.
10252
10253 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10254
10255 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
10256 (aarch64_<su>adalp<mode>): New define_expand.
10257 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
10258 (aarch64_<su>addlp<mode>): Convert to define_expand.
10259 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
10260 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
10261 (ADALP): Likewise.
10262 (USADDLP): Likewise.
10263 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
10264
10265 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10266
10267 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
10268 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
10269 srhadd, urhadd builtin codes for standard optab ones.
10270 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
10271 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
10272 unspec.
10273 (<u>avg<mode>3_ceil): Rename to...
10274 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
10275 unspec.
10276 (aarch64_<su>hsub<mode>): New define_expand.
10277 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
10278 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
10279 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
10280
10281 2023-05-30 Andreas Schwab <schwab@suse.de>
10282
10283 PR target/110036
10284 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
10285 match libsanitizer.
10286
10287 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10288
10289 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
10290 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
10291 Declare prototype.
10292 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
10293 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
10294 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
10295 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
10296 (aarch64_<sra_op>sra_n<mode>): New define_expand.
10297 (aarch64_<sra_op>rsra_n<mode>): Likewise.
10298 (aarch64_<sur>sra_n<mode>): Rename to...
10299 (aarch64_<sur>sra_ndi): ... This.
10300 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
10301 any_target_p argument.
10302 (aarch64_extract_vec_duplicate_wide_int): Define.
10303 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
10304 (aarch64_const_vec_rnd_cst_p): Likewise.
10305 (aarch64_vector_mode_supported_any_target_p): Likewise.
10306 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
10307 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
10308 (VSRA): Adjust for the above.
10309 (sur): Likewise.
10310 (V2XWIDE): New mode_attr.
10311 (vec_or_offset): Likewise.
10312 (SHIFTEXTEND): Likewise.
10313 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
10314 predicate.
10315 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
10316 clarify that it applies to current target options.
10317 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
10318 * doc/tm.texi.in: Regenerate.
10319 * stor-layout.cc (mode_for_vector): Check
10320 vector_mode_supported_any_target_p when iterating through vector modes.
10321 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
10322 clarify that it applies to current target options.
10323 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
10324
10325 2023-05-30 Lili Cui <lili.cui@intel.com>
10326
10327 PR tree-optimization/98350
10328 * tree-ssa-reassoc.cc
10329 (rewrite_expr_tree_parallel): Rewrite this function.
10330 (rank_ops_for_fma): New.
10331 (reassociate_bb): Handle new function.
10332
10333 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
10334
10335 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
10336 (rtx_unstable_p): Ditto.
10337 (reg_mentioned_p): Ditto.
10338 (reg_referenced_p): Ditto.
10339 (reg_used_between_p): Ditto.
10340 (reg_set_between_p): Ditto.
10341 (modified_between_p): Ditto.
10342 (no_labels_between_p): Ditto.
10343 (modified_in_p): Ditto.
10344 (reg_set_p): Ditto.
10345 (multiple_sets): Ditto.
10346 (set_noop_p): Ditto.
10347 (noop_move_p): Ditto.
10348 (reg_overlap_mentioned_p): Ditto.
10349 (dead_or_set_p): Ditto.
10350 (dead_or_set_regno_p): Ditto.
10351 (find_reg_fusage): Ditto.
10352 (find_regno_fusage): Ditto.
10353 (side_effects_p): Ditto.
10354 (volatile_refs_p): Ditto.
10355 (volatile_insn_p): Ditto.
10356 (may_trap_p_1): Ditto.
10357 (may_trap_p): Ditto.
10358 (may_trap_or_fault_p): Ditto.
10359 (computed_jump_p): Ditto.
10360 (auto_inc_p): Ditto.
10361 (loc_mentioned_in_p): Ditto.
10362 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
10363 (rtx_unstable_p): Change return type from int to bool
10364 and adjust function body accordingly.
10365 (rtx_addr_can_trap_p): Ditto.
10366 (reg_mentioned_p): Ditto.
10367 (no_labels_between_p): Ditto.
10368 (reg_used_between_p): Ditto.
10369 (reg_referenced_p): Ditto.
10370 (reg_set_between_p): Ditto.
10371 (reg_set_p): Ditto.
10372 (modified_between_p): Ditto.
10373 (modified_in_p): Ditto.
10374 (multiple_sets): Ditto.
10375 (set_noop_p): Ditto.
10376 (noop_move_p): Ditto.
10377 (reg_overlap_mentioned_p): Ditto.
10378 (dead_or_set_p): Ditto.
10379 (dead_or_set_regno_p): Ditto.
10380 (find_reg_fusage): Ditto.
10381 (find_regno_fusage): Ditto.
10382 (remove_node_from_insn_list): Ditto.
10383 (volatile_insn_p): Ditto.
10384 (volatile_refs_p): Ditto.
10385 (side_effects_p): Ditto.
10386 (may_trap_p_1): Ditto.
10387 (may_trap_p): Ditto.
10388 (may_trap_or_fault_p): Ditto.
10389 (computed_jump_p): Ditto.
10390 (auto_inc_p): Ditto.
10391 (loc_mentioned_in_p): Ditto.
10392 * combine.cc (can_combine_p): Update indirect function.
10393
10394 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10395
10396 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
10397 * config/riscv/iterators.md: New attribute.
10398 * config/riscv/vector-iterators.md: New attribute.
10399
10400 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
10401
10402 * config/riscv/riscv.md: Fix signed and unsigned comparison
10403 warning.
10404
10405 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10406
10407 * config/riscv/autovec.md (fnma<mode>4): New pattern.
10408 (*fnma<mode>): Ditto.
10409
10410 2023-05-29 Die Li <lidie@eswincomputing.com>
10411
10412 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
10413 Delete.
10414 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
10415 process for TARGET_XTHEADCONDMOV
10416
10417 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
10418
10419 PR target/110021
10420 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
10421 TARGET_AVX512BW to generate truncv16hiv16qi2.
10422
10423 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
10424
10425 * config/riscv/riscv.md (and<mode>3): New expander.
10426 (*and<mode>3) New pattern.
10427 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
10428 predicate.
10429
10430 2023-05-29 Pan Li <pan2.li@intel.com>
10431
10432 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
10433 comments and rename local variables.
10434 (emit_nonvlmax_insn): Diito.
10435 (emit_vlmax_merge_insn): Ditto.
10436 (emit_vlmax_cmp_insn): Ditto.
10437 (emit_vlmax_cmp_mu_insn): Ditto.
10438 (emit_scalar_move_insn): Ditto.
10439
10440 2023-05-29 Pan Li <pan2.li@intel.com>
10441
10442 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
10443 magic number.
10444 (emit_nonvlmax_insn): Ditto.
10445 (emit_vlmax_merge_insn): Ditto.
10446 (emit_vlmax_cmp_insn): Ditto.
10447 (emit_vlmax_cmp_mu_insn): Ditto.
10448 (expand_vec_series): Ditto.
10449
10450 2023-05-29 Pan Li <pan2.li@intel.com>
10451
10452 * config/riscv/riscv-protos.h (enum insn_type): New type.
10453 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
10454 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
10455 class member.
10456 (rvv_builder::get_merged_repeating_sequence): Ditto.
10457 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
10458 to evaluate the optimization cost.
10459 (rvv_builder::get_merge_scalar_mask): New function to get the merge
10460 mask.
10461 (emit_scalar_move_insn): New function to emit vmv.s.x.
10462 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
10463 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
10464 vmv.v.x.
10465 (get_repeating_sequence_dup_machine_mode): New function to get the dup
10466 machine mode.
10467 (expand_vector_init_merge_repeating_sequence): New function to perform
10468 the optimization.
10469 (expand_vec_init): Add this vector init optimization.
10470 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
10471
10472 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
10473
10474 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
10475 put onto the increment when it is inserted after the position.
10476
10477 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
10478
10479 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
10480 on constants.
10481
10482 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10483
10484 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
10485
10486 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10487
10488 * config/riscv/autovec.md (fma<mode>4): New pattern.
10489 (*fma<mode>): Ditto.
10490 * config/riscv/riscv-protos.h (enum insn_type): New enum.
10491 (emit_vlmax_ternary_insn): New function.
10492 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
10493
10494 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10495
10496 * config/riscv/vector.md: Fix vimuladd instruction bug.
10497
10498 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10499
10500 * config/riscv/riscv.cc (global_state_unknown_p): New function.
10501 (riscv_mode_after): Fix incorrect VXM.
10502
10503 2023-05-29 Pan Li <pan2.li@intel.com>
10504
10505 * common/config/riscv/riscv-common.cc:
10506 (riscv_implied_info): Add zvfhmin item.
10507 (riscv_ext_version_table): Ditto.
10508 (riscv_ext_flag_table): Ditto.
10509 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
10510 (TARGET_ZFHMIN): Align indent.
10511 (TARGET_ZFH): Ditto.
10512 (TARGET_ZVFHMIN): New macro.
10513
10514 2023-05-27 liuhongt <hongtao.liu@intel.com>
10515
10516 PR target/100711
10517 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
10518 to VI_AVX2 to cover more modes.
10519
10520 2023-05-27 liuhongt <hongtao.liu@intel.com>
10521
10522 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
10523 Remove ATOM and ICELAKE(and later) core processors.
10524
10525 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
10526
10527 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
10528 (abs<mode>2): Add.
10529 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
10530 Declare.
10531 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
10532 function.
10533
10534 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
10535 Juzhe Zhong <juzhe.zhong@rivai.ai>
10536
10537 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
10538 expander.
10539 (<optab><v_quad_trunc><mode>2): Dito.
10540 (<optab><v_oct_trunc><mode>2): Dito.
10541 (trunc<mode><v_double_trunc>2): Dito.
10542 (trunc<mode><v_quad_trunc>2): Dito.
10543 (trunc<mode><v_oct_trunc>2): Dito.
10544 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
10545 (autovectorize_vector_modes): Define.
10546 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
10547 hook.
10548 (autovectorize_vector_modes): Implement hook.
10549 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
10550 Implement target hook.
10551 (riscv_vectorize_related_mode): Implement target hook.
10552 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
10553 (TARGET_VECTORIZE_RELATED_MODE): Define.
10554 * config/riscv/vector-iterators.md: Add lowercase versions of
10555 mode_attr iterators.
10556
10557 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
10558 Tobias Burnus <tobias@codesourcery.com>
10559
10560 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
10561 (ASM_SPEC): Use XNACKOPT.
10562 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
10563 (enum hsaco_attr_type): ... this, and generalize the names.
10564 (TARGET_XNACK): New macro.
10565 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
10566 but -mxnack=off.
10567 (output_file_start): Update xnack handling.
10568 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
10569 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
10570 (sram_ecc_type): Rename to ...
10571 (hsaco_attr_type: ... this.)
10572 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
10573 (TEST_XNACK): Delete.
10574 (TEST_XNACK_ANY): New macro.
10575 (TEST_XNACK_ON): New macro.
10576 (main): Support the new -mxnack=on/off/any syntax.
10577 * doc/invoke.texi (-mxnack): Update for new syntax.
10578
10579 2023-05-26 Andrew Pinski <apinski@marvell.com>
10580
10581 * genmatch.cc (emit_debug_printf): New function.
10582 (dt_simplify::gen_1): Emit printf into the code
10583 before the `return true` or returning the folded result
10584 instead of emitting it always.
10585
10586 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10587
10588 * config/xtensa/xtensa-protos.h
10589 (xtensa_expand_block_set_unrolled_loop,
10590 xtensa_expand_block_set_small_loop): Remove.
10591 (xtensa_expand_block_set): New prototype.
10592 * config/xtensa/xtensa.cc
10593 (xtensa_expand_block_set_libcall): New subfunction.
10594 (xtensa_expand_block_set_unrolled_loop,
10595 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
10596 (xtensa_expand_block_set): New function that calls the above
10597 subfunctions.
10598 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
10599 xtensa_expand_block_set().
10600
10601 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10602
10603 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
10604 New prototype.
10605 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
10606 New function.
10607 * config/xtensa/constraints.md (O):
10608 Change to use the above function.
10609 * config/xtensa/xtensa.md (*subsi3_from_const):
10610 New insn_and_split pattern.
10611
10612 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10613
10614 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
10615 Retract excessive line folding, and correct the value of
10616 the "length" insn attribute related to TARGET_DENSITY.
10617 (*extzvsi-1bit_addsubx): Ditto.
10618
10619 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
10620
10621 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
10622 Do not disable call to ix86_expand_vecop_qihi2.
10623
10624 2023-05-26 liuhongt <hongtao.liu@intel.com>
10625
10626 PR target/109610
10627 PR target/109858
10628 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
10629 calculation when !hard_regno_mode_ok for GENERAL_REGS and
10630 mode, otherwise still use GENERAL_REGS.
10631
10632 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10633
10634 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
10635 explict VL and drop VL in ops.
10636
10637 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
10638
10639 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
10640 in different BB blocks.
10641
10642 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
10643
10644 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
10645 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
10646 instructions when available. Emulate truncation via
10647 ix86_expand_vec_perm_const_1 when native truncate insn
10648 is not available.
10649 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
10650 when available. Trivially rename some variables.
10651 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
10652 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
10653 calculation of V*QImode emulations to account for generation of
10654 2x-wider mode instructions.
10655 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
10656 emulations to account for generation of 2x-wider mode instructions.
10657
10658 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
10659
10660 PR target/104327
10661 * config/avr/avr.cc (avr_can_inline_p): New static function.
10662 (TARGET_CAN_INLINE_P): Define to that function.
10663
10664 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
10665
10666 PR target/82931
10667 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
10668 Handle any bit position and use mode QISI.
10669 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
10670 of 2 insns for bit-transfer of respective style.
10671
10672 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
10673
10674 * config/arm/iterators.md (MVE_6): Remove.
10675 * config/arm/mve.md: Replace MVE_6 with MVE_5.
10676
10677 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10678 Richard Sandiford <richard.sandiford@arm.com>
10679
10680 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
10681 function.
10682 (vect_set_loop_controls_directly): Add decrement IV support.
10683 (vect_set_loop_condition_partial_vectors): Ditto.
10684 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
10685 variable.
10686 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
10687 macro.
10688
10689 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10690
10691 PR target/99195
10692 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
10693 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
10694 Fix canonicalization of PLUS operands.
10695 (aarch64_fcmla<rot><mode>): Rename to...
10696 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
10697 Fix canonicalization of PLUS operands.
10698 (aarch64_fcmla_lane<rot><mode>): Rename to...
10699 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
10700 Fix canonicalization of PLUS operands.
10701 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
10702 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
10703 Fix canonicalization of PLUS operands.
10704 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
10705
10706 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
10707
10708 * config/arm/arm.md (rbitsi2): Rename to...
10709 (arm_rbit): ... This.
10710 (ctzsi2): Adjust for the above.
10711 (arm_rev16si2): Convert to define_expand.
10712 (arm_rev16si2_alt1): New pattern.
10713 (arm_rev16si2_alt): Rename to...
10714 (*arm_rev16si2_alt2): ... This.
10715 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
10716 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
10717 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
10718 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
10719
10720 2023-05-25 Alex Coplan <alex.coplan@arm.com>
10721
10722 PR target/109800
10723 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
10724 instead of DFmode.
10725 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
10726 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
10727 DFmode as an rvalue.
10728
10729 2023-05-25 Richard Biener <rguenther@suse.de>
10730
10731 PR target/109955
10732 * tree-vect-stmts.cc (vectorizable_condition): For
10733 embedded comparisons also handle the case when the target
10734 only provides vec_cmp and vcond_mask.
10735
10736 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
10737
10738 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
10739 TLS Local Dynamic.
10740
10741 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10742
10743 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
10744 (seq_cost_ignoring_scalar_moves): Likewise.
10745 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
10746
10747 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10748
10749 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
10750 (vcage_f32): Likewise.
10751 (vcages_f32): Likewise.
10752 (vcageq_f32): Likewise.
10753 (vcaged_f64): Likewise.
10754 (vcageq_f64): Likewise.
10755 (vcagts_f32): Likewise.
10756 (vcagt_f32): Likewise.
10757 (vcagt_f64): Likewise.
10758 (vcagtq_f32): Likewise.
10759 (vcagtd_f64): Likewise.
10760 (vcagtq_f64): Likewise.
10761 (vcale_f32): Likewise.
10762 (vcale_f64): Likewise.
10763 (vcaled_f64): Likewise.
10764 (vcales_f32): Likewise.
10765 (vcaleq_f32): Likewise.
10766 (vcaleq_f64): Likewise.
10767 (vcalt_f32): Likewise.
10768 (vcalt_f64): Likewise.
10769 (vcaltd_f64): Likewise.
10770 (vcaltq_f32): Likewise.
10771 (vcaltq_f64): Likewise.
10772 (vcalts_f32): Likewise.
10773
10774 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
10775
10776 PR target/109173
10777 PR target/109174
10778 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
10779 int to const int or const int to const unsigned int.
10780 (_mm512_mask_srli_epi16): Ditto.
10781 (_mm512_slli_epi16): Ditto.
10782 (_mm512_mask_slli_epi16): Ditto.
10783 (_mm512_maskz_slli_epi16): Ditto.
10784 (_mm512_srai_epi16): Ditto.
10785 (_mm512_mask_srai_epi16): Ditto.
10786 (_mm512_maskz_srai_epi16): Ditto.
10787 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
10788 (_mm512_mask_slli_epi64): Ditto.
10789 (_mm512_maskz_slli_epi64): Ditto.
10790 (_mm512_srli_epi64): Ditto.
10791 (_mm512_mask_srli_epi64): Ditto.
10792 (_mm512_maskz_srli_epi64): Ditto.
10793 (_mm512_srai_epi64): Ditto.
10794 (_mm512_mask_srai_epi64): Ditto.
10795 (_mm512_maskz_srai_epi64): Ditto.
10796 (_mm512_slli_epi32): Ditto.
10797 (_mm512_mask_slli_epi32): Ditto.
10798 (_mm512_maskz_slli_epi32): Ditto.
10799 (_mm512_srli_epi32): Ditto.
10800 (_mm512_mask_srli_epi32): Ditto.
10801 (_mm512_maskz_srli_epi32): Ditto.
10802 (_mm512_srai_epi32): Ditto.
10803 (_mm512_mask_srai_epi32): Ditto.
10804 (_mm512_maskz_srai_epi32): Ditto.
10805 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
10806 (_mm256_maskz_srai_epi16): Ditto.
10807 (_mm_mask_srai_epi16): Ditto.
10808 (_mm_maskz_srai_epi16): Ditto.
10809 (_mm256_mask_slli_epi16): Ditto.
10810 (_mm256_maskz_slli_epi16): Ditto.
10811 (_mm_mask_slli_epi16): Ditto.
10812 (_mm_maskz_slli_epi16): Ditto.
10813 (_mm_maskz_srli_epi16): Ditto.
10814 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
10815 (_mm256_maskz_srli_epi32): Ditto.
10816 (_mm_mask_srli_epi32): Ditto.
10817 (_mm_maskz_srli_epi32): Ditto.
10818 (_mm256_mask_srli_epi64): Ditto.
10819 (_mm256_maskz_srli_epi64): Ditto.
10820 (_mm_mask_srli_epi64): Ditto.
10821 (_mm_maskz_srli_epi64): Ditto.
10822 (_mm256_mask_srai_epi32): Ditto.
10823 (_mm256_maskz_srai_epi32): Ditto.
10824 (_mm_mask_srai_epi32): Ditto.
10825 (_mm_maskz_srai_epi32): Ditto.
10826 (_mm256_srai_epi64): Ditto.
10827 (_mm256_mask_srai_epi64): Ditto.
10828 (_mm256_maskz_srai_epi64): Ditto.
10829 (_mm_srai_epi64): Ditto.
10830 (_mm_mask_srai_epi64): Ditto.
10831 (_mm_maskz_srai_epi64): Ditto.
10832 (_mm_mask_slli_epi32): Ditto.
10833 (_mm_maskz_slli_epi32): Ditto.
10834 (_mm_mask_slli_epi64): Ditto.
10835 (_mm_maskz_slli_epi64): Ditto.
10836 (_mm256_mask_slli_epi32): Ditto.
10837 (_mm256_maskz_slli_epi32): Ditto.
10838 (_mm256_mask_slli_epi64): Ditto.
10839 (_mm256_maskz_slli_epi64): Ditto.
10840
10841 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10842
10843 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
10844 instructions.
10845
10846 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10847
10848 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
10849 * data-streamer-out.cc (streamer_write_vrange): Same.
10850 * value-range.h (class vrange): Make streamer_write_vrange a friend.
10851
10852 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10853
10854 * value-query.cc (range_query::get_tree_range): Set NAN directly
10855 if necessary.
10856 * value-range.cc (frange::set): Assert that bounds are not NAN.
10857
10858 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10859
10860 * value-range.cc (add_vrange): Handle known NANs.
10861
10862 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10863
10864 * value-range.h (frange::set_nan): New.
10865
10866 2023-05-25 Alexandre Oliva <oliva@adacore.com>
10867
10868 PR target/100106
10869 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
10870 requires stricter alignment than MEM's.
10871
10872 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10873
10874 PR tree-optimization/107822
10875 PR tree-optimization/107986
10876 * Makefile.in (OBJS): Add gimple-range-phi.o.
10877 * gimple-range-cache.h (ranger_cache::m_estimate): New
10878 phi_analyzer pointer member.
10879 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
10880 phi_analyzer if no loop info is available.
10881 * gimple-range-phi.cc: New file.
10882 * gimple-range-phi.h: New file.
10883 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
10884
10885 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10886
10887 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
10888 to contructors.
10889 (fold_range): Add range_query parameter.
10890 (fur_relation::fur_relation): New.
10891 (fur_relation::trio): New.
10892 (fur_relation::register_relation): New.
10893 (fold_relations): New.
10894 * gimple-range-fold.h (fold_range): Adjust prototypes.
10895 (fold_relations): New.
10896
10897 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10898
10899 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
10900 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
10901 (ranger_cache::const_query): New.
10902 * gimple-range.cc (gimple_ranger::const_query): New.
10903 * gimple-range.h (gimple_ranger::const_query): New prototype.
10904
10905 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10906
10907 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
10908 (ssa_cache::dump_range_query): Delete.
10909 (ssa_lazy_cache::dump_range_query): Delete.
10910 (ssa_lazy_cache::get_range): Move from header file.
10911 (ssa_lazy_cache::clear_range): ditto.
10912 (ssa_lazy_cache::clear): Ditto.
10913 * gimple-range-cache.h (class ssa_cache): Virtualize.
10914 (class ssa_lazy_cache): Inherit and virtualize.
10915
10916 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
10917
10918 * value-range.h (vrange::kind): Remove.
10919
10920 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
10921
10922 PR middle-end/109840
10923 * match.pd <popcount optimizations>: Preserve zero-extension when
10924 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
10925 popcount((T)x), so the popcount's argument keeps the same type.
10926 <parity optimizations>: Likewise preserve extensions when
10927 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
10928 parity((T)x), so that the parity's argument type is the same.
10929
10930 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
10931
10932 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
10933 (ipcp_store_vr_results): Same.
10934 * ipa-prop.cc (ipa_vr::ipa_vr): New.
10935 (ipa_vr::get_vrange): New.
10936 (ipa_vr::set_unknown): New.
10937 (ipa_vr::streamer_read): New.
10938 (ipa_vr::streamer_write): New.
10939 (write_ipcp_transformation_info): Use new ipa_vr API.
10940 (read_ipcp_transformation_info): Same.
10941 (ipa_vr::nonzero_p): Delete.
10942 (ipcp_update_vr): Use new ipa_vr API.
10943 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
10944 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
10945
10946 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
10947
10948 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
10949 silence overflow warnings later on.
10950
10951 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
10952
10953 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
10954 Remove handling of V8QImode.
10955 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
10956 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
10957 (v<insn>v4qi3): Ditto.
10958 * config/i386/sse.md (v<insn>v8qi3): Remove.
10959
10960 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10961
10962 PR target/99195
10963 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
10964 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
10965 (aarch64_simd_ashr<mode>): Rename to...
10966 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
10967 (aarch64_simd_imm_shl<mode>): Rename to...
10968 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
10969 (aarch64_simd_reg_sshl<mode>): Rename to...
10970 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
10971 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
10972 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
10973 (aarch64_simd_reg_shl<mode>_signed): Rename to...
10974 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
10975 (vec_shr_<mode>): Rename to...
10976 (vec_shr_<mode><vczle><vczbe>): ... This.
10977 (aarch64_<sur>shl<mode>): Rename to...
10978 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
10979 (aarch64_<sur>q<r>shl<mode>): Rename to...
10980 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
10981
10982 2023-05-24 Richard Biener <rguenther@suse.de>
10983
10984 PR target/109944
10985 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
10986 Perform final vector composition using
10987 ix86_expand_vector_init_general instead of setting
10988 the highpart and lowpart which causes spilling.
10989
10990 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10991
10992 PR tree-optimization/109695
10993 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
10994 changed param.
10995 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
10996 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
10997 flag to set_global_range.
10998 (gimple_ranger::prefill_stmt_dependencies): Ditto.
10999
11000 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
11001
11002 PR tree-optimization/109695
11003 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
11004 a positive int.
11005 (temporal_cache::current_p): Check always_current method.
11006 (temporal_cache::set_always_current): Add param and set value
11007 appropriately.
11008 (temporal_cache::always_current_p): New.
11009 (ranger_cache::get_global_range): Adjust.
11010 (ranger_cache::set_global_range): set always current first.
11011
11012 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
11013
11014 PR tree-optimization/109695
11015 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
11016 fold_range with global query to choose an initial value.
11017
11018 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11019
11020 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
11021 prefix.
11022
11023 2023-05-24 Richard Biener <rguenther@suse.de>
11024
11025 PR tree-optimization/109849
11026 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
11027 expressions but take the first sets.
11028
11029 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
11030
11031 PR modula2/109952
11032 * doc/gm2.texi (High procedure function): New node.
11033 (Using): New menu entry for High procedure function.
11034
11035 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
11036
11037 PR rtl-optimization/109940
11038 * early-remat.cc (postorder_index): Rename to...
11039 (rpo_index): ...this.
11040 (compare_candidates): Sort by decreasing rpo_index rather than
11041 increasing postorder_index.
11042 (early_remat::sort_candidates): Calculate the forward RPO from
11043 DF_FORWARD.
11044 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
11045 rather than DF_BACKWARD in reverse.
11046
11047 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11048
11049 PR target/109939
11050 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
11051 qualifier_none for the return operand.
11052
11053 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11054
11055 * config/riscv/autovec.md (<optab><mode>3): New pattern.
11056 (one_cmpl<mode>2): Ditto.
11057 (*<optab>not<mode>): Ditto.
11058 (*n<optab><mode>): Ditto.
11059 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
11060 one_cmpl.
11061
11062 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
11063
11064 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
11065 calculation on n_perms by considering nvectors_per_build.
11066
11067 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11068 Richard Sandiford <richard.sandiford@arm.com>
11069
11070 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
11071 (vec_cmp<mode><vm>): New pattern.
11072 (vec_cmpu<mode><vm>): New pattern.
11073 (vcond<V:mode><VI:mode>): New pattern.
11074 (vcondu<V:mode><VI:mode>): New pattern.
11075 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
11076 (emit_vlmax_merge_insn): New function.
11077 (emit_vlmax_cmp_insn): Ditto.
11078 (emit_vlmax_cmp_mu_insn): Ditto.
11079 (expand_vec_cmp): Ditto.
11080 (expand_vec_cmp_float): Ditto.
11081 (expand_vcond): Ditto.
11082 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
11083 (emit_vlmax_cmp_insn): Ditto.
11084 (emit_vlmax_cmp_mu_insn): Ditto.
11085 (get_cmp_insn_code): Ditto.
11086 (expand_vec_cmp): Ditto.
11087 (expand_vec_cmp_float): Ditto.
11088 (expand_vcond): Ditto.
11089
11090 2023-05-24 Pan Li <pan2.li@intel.com>
11091
11092 * config/riscv/genrvv-type-indexer.cc (main): Add
11093 unsigned_eew*_lmul1_interpret for indexer.
11094 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
11095 Register vuint*m1_t interpret function.
11096 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
11097 New macro for vuint8m1_t.
11098 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
11099 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
11100 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
11101 (vbool1_t): Add to unsigned_eew*_interpret_ops.
11102 (vbool2_t): Likewise.
11103 (vbool4_t): Likewise.
11104 (vbool8_t): Likewise.
11105 (vbool16_t): Likewise.
11106 (vbool32_t): Likewise.
11107 (vbool64_t): Likewise.
11108 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
11109 New macro for vuint*m1_t.
11110 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
11111 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
11112 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
11113 (required_extensions_p): Add vuint*m1_t interpret case.
11114 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
11115 Add vuint*m1_t interpret to base type.
11116 (unsigned_eew16_lmul1_interpret): Likewise.
11117 (unsigned_eew32_lmul1_interpret): Likewise.
11118 (unsigned_eew64_lmul1_interpret): Likewise.
11119
11120 2023-05-24 Pan Li <pan2.li@intel.com>
11121
11122 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
11123 for the eew size list.
11124 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
11125 (main): Add signed_eew*_lmul1_interpret for indexer.
11126 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
11127 Register vint*m1_t interpret function.
11128 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
11129 New macro for vint8m1_t.
11130 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
11131 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
11132 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
11133 (vbool1_t): Add to signed_eew*_interpret_ops.
11134 (vbool2_t): Likewise.
11135 (vbool4_t): Likewise.
11136 (vbool8_t): Likewise.
11137 (vbool16_t): Likewise.
11138 (vbool32_t): Likewise.
11139 (vbool64_t): Likewise.
11140 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
11141 New macro for vint*m1_t.
11142 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
11143 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
11144 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
11145 (required_extensions_p): Add vint8m1_t interpret case.
11146 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
11147 Add vint*m1_t interpret to base type.
11148 (signed_eew16_lmul1_interpret): Likewise.
11149 (signed_eew32_lmul1_interpret): Likewise.
11150 (signed_eew64_lmul1_interpret): Likewise.
11151
11152 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11153
11154 * config/riscv/autovec.md: Adjust for new interface.
11155 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
11156 (emit_nonvlmax_insn): Add AVL operand.
11157 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
11158 (emit_nonvlmax_insn): Add AVL operand.
11159 (sew64_scalar_helper): Adjust for new interface.
11160 (expand_tuple_move): Ditto.
11161 * config/riscv/vector.md: Ditto.
11162
11163 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11164
11165 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
11166 (expand_const_vector): Ditto.
11167 (legitimize_move): Ditto.
11168 (sew64_scalar_helper): Ditto.
11169 (expand_tuple_move): Ditto.
11170 (expand_vector_init_insert_elems): Ditto.
11171 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
11172
11173 2023-05-24 liuhongt <hongtao.liu@intel.com>
11174
11175 PR target/109900
11176 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
11177 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
11178 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
11179 (ix86_masked_all_ones): Handle 64-bit mask.
11180 * config/i386/i386-builtin.def: Replace icode of related
11181 non-mask simd abs builtins with CODE_FOR_nothing.
11182
11183 2023-05-23 Martin Uecker <uecker@tugraz.at>
11184
11185 PR c/109450
11186 * function.cc (gimplify_parm_type): Remove function.
11187 (gimplify_parameters): Call gimplify_type_sizes.
11188
11189 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11190
11191 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
11192 and change to also accept '*subx' pattern.
11193 (*subx): Remove.
11194
11195 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11196
11197 * config/xtensa/predicates.md (addsub_operator): New.
11198 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
11199 *extzvsi-1bit_addsubx): New insn_and_split patterns.
11200 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
11201 Add a special case about ifcvt 'noce_try_cmove()' to handle
11202 constant loads that do not fit into signed 12 bits in the
11203 patterns added above.
11204
11205 2023-05-23 Richard Biener <rguenther@suse.de>
11206
11207 PR tree-optimization/109747
11208 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
11209 the SLP node only once to the cost hook.
11210
11211 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
11212
11213 * config/avr/avr.cc (avr_insn_cost): New static function.
11214 (TARGET_INSN_COST): Define to that function.
11215
11216 2023-05-23 Richard Biener <rguenther@suse.de>
11217
11218 PR target/109944
11219 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
11220 For vector construction or splats apply GPR->XMM move
11221 costing. QImode memory can be handled directly only
11222 with SSE4.1 pinsrb.
11223
11224 2023-05-23 Richard Biener <rguenther@suse.de>
11225
11226 PR tree-optimization/108752
11227 * tree-vect-stmts.cc (vectorizable_operation): For bit
11228 operations with generic word_mode vectors do not cost
11229 an extra stmt. For plus, minus and negate also cost the
11230 constant materialization.
11231
11232 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
11233
11234 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
11235 Call ix86_expand_vec_shift_qihi_constant for shifts
11236 with constant count operand.
11237 * config/i386/i386.cc (ix86_shift_rotate_cost):
11238 Handle V4QImode and V8QImode.
11239 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
11240 (<insn>v4qi3): Ditto.
11241
11242 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11243
11244 * config/riscv/vector.md: Add mode.
11245
11246 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
11247
11248 PR tree-optimization/109934
11249 * value-range.cc (irange::invert): Remove buggy special case.
11250
11251 2023-05-23 Richard Biener <rguenther@suse.de>
11252
11253 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
11254 ANTIC_OUT.
11255
11256 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
11257
11258 PR target/109632
11259 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
11260 subregs between any scalars that are 64 bits or smaller.
11261 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
11262 (bits_etype): New int attribute.
11263 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
11264 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
11265 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
11266
11267 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
11268
11269 * doc/md.texi: Document that <FOO> can be used to refer to the
11270 numerical value of an int iterator FOO. Tweak other parts of
11271 the int iterator documentation.
11272 * read-rtl.cc (iterator_group::has_self_attr): New field.
11273 (map_attr_string): When has_self_attr is true, make <FOO>
11274 expand to the current value of iterator FOO.
11275 (initialize_iterators): Set has_self_attr for int iterators.
11276
11277 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11278
11279 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
11280 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
11281 (RVV_UNOP_NUM): New macro.
11282 (RVV_BINOP_NUM): Ditto.
11283 (legitimize_move): Refactor the framework of RVV auto-vectorization.
11284 (emit_vlmax_op): Ditto.
11285 (emit_vlmax_reg_op): Ditto.
11286 (emit_len_op): Ditto.
11287 (emit_len_binop): Ditto.
11288 (emit_vlmax_tany_many): Ditto.
11289 (emit_nonvlmax_tany_many): Ditto.
11290 (sew64_scalar_helper): Ditto.
11291 (expand_tuple_move): Ditto.
11292 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
11293 (emit_pred_binop): Ditto.
11294 (emit_vlmax_op): Ditto.
11295 (emit_vlmax_tany_many): New function.
11296 (emit_len_op): Remove.
11297 (emit_nonvlmax_tany_many): New function.
11298 (emit_vlmax_reg_op): Remove.
11299 (emit_len_binop): Ditto.
11300 (emit_index_op): Ditto.
11301 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
11302 (expand_const_vector): Ditto.
11303 (legitimize_move): Ditto.
11304 (sew64_scalar_helper): Ditto.
11305 (expand_tuple_move): Ditto.
11306 (expand_vector_init_insert_elems): Ditto.
11307 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
11308 * config/riscv/vector.md: Ditto.
11309
11310 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11311
11312 PR target/109855
11313 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
11314 and constraint for operand 0.
11315 (add_vec_concat_subst_be): Likewise.
11316
11317 2023-05-23 Richard Biener <rguenther@suse.de>
11318
11319 PR tree-optimization/109849
11320 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
11321 and use that to determine what to hoist.
11322
11323 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
11324
11325 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
11326 specific treatment for bit-fields only if they have an integral type
11327 and filter out non-integral bit-fields that do not start and end on
11328 a byte boundary.
11329
11330 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
11331
11332 PR tree-optimization/109920
11333 * value-range.h (RESIZABLE>::~int_range): Use delete[].
11334
11335 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
11336
11337 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
11338 calcuation of integer vector mode costs to reflect generated
11339 instruction sequences of different integer vector modes and
11340 different target ABIs. Remove "speed" function argument.
11341 (ix86_rtx_costs): Update call for removed function argument.
11342 (ix86_vector_costs::add_stmt_cost): Ditto.
11343
11344 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
11345
11346 * value-range.h (class Value_Range): Implement set_zero,
11347 set_nonzero, and nonzero_p.
11348
11349 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
11350
11351 * config/i386/i386.cc (ix86_multiplication_cost): Add
11352 the cost of a memory read to the cost of V?QImode sequences.
11353
11354 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11355
11356 * config/riscv/riscv-v.cc: Add "m_" prefix.
11357
11358 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11359
11360 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
11361 multiple-rgroup of length.
11362 * tree-vect-stmts.cc (vectorizable_store): Ditto.
11363 (vectorizable_load): Ditto.
11364 * tree-vectorizer.h (vect_get_loop_len): Ditto.
11365
11366 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11367
11368 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
11369 codes.
11370
11371 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
11372
11373 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
11374 handling for the case index == count.
11375
11376 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
11377
11378 PR target/90622
11379 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
11380 Don't fold to XOR / AND / XOR if just one bit is copied to the
11381 same position.
11382
11383 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
11384
11385 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
11386 builtin for bit reversal using brev instruction.
11387 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
11388 NVPTX_BUILTIN_BREVLL.
11389 (nvptx_init_builtins): Define "brev" and "brevll".
11390 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
11391 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
11392 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
11393 section, document __builtin_nvptx_brev{,ll}.
11394
11395 2023-05-21 Jakub Jelinek <jakub@redhat.com>
11396
11397 PR tree-optimization/109505
11398 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
11399 Combine successive equal operations with constants,
11400 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
11401 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
11402 operands.
11403
11404 2023-05-21 Andrew Pinski <apinski@marvell.com>
11405
11406 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
11407
11408 2023-05-21 Pan Li <pan2.li@intel.com>
11409
11410 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
11411 rest bool size, aka 2, 4, 8, 16, 32, 64.
11412 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
11413 Register vbool[2|4|8|16|32|64] interpret function.
11414 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
11415 New macro for vbool2_t.
11416 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
11417 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
11418 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
11419 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
11420 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
11421 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
11422 (vint16m1_t): Likewise.
11423 (vint32m1_t): Likewise.
11424 (vint64m1_t): Likewise.
11425 (vuint8m1_t): Likewise.
11426 (vuint16m1_t): Likewise.
11427 (vuint32m1_t): Likewise.
11428 (vuint64m1_t): Likewise.
11429 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
11430 New macro for vbool2_t.
11431 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
11432 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
11433 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
11434 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
11435 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
11436 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
11437 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
11438 vbool2_t interprect to base type.
11439 (bool4_interpret): Likewise.
11440 (bool8_interpret): Likewise.
11441 (bool16_interpret): Likewise.
11442 (bool32_interpret): Likewise.
11443 (bool64_interpret): Likewise.
11444
11445 2023-05-21 Andrew Pinski <apinski@marvell.com>
11446
11447 PR middle-end/109919
11448 * expr.cc (expand_single_bit_test): Don't use the
11449 target for expand_expr.
11450
11451 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
11452
11453 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
11454 section.
11455
11456 2023-05-20 Pan Li <pan2.li@intel.com>
11457
11458 * mode-switching.cc (entity_map): Initialize the array to zero.
11459 (bb_info): Ditto.
11460
11461 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
11462
11463 PR target/105753
11464 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
11465 Remove superfluous "parallel" in insn pattern.
11466 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
11467 printing error text to assembly.
11468
11469 2023-05-20 Andrew Pinski <apinski@marvell.com>
11470
11471 * expr.cc (fold_single_bit_test): Rename to ...
11472 (expand_single_bit_test): This and expand directly.
11473 (do_store_flag): Update for the rename function.
11474
11475 2023-05-20 Andrew Pinski <apinski@marvell.com>
11476
11477 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
11478 instead of shift/and.
11479
11480 2023-05-20 Andrew Pinski <apinski@marvell.com>
11481
11482 * expr.cc (fold_single_bit_test): Add an assert
11483 and simplify based on code being NE_EXPR or EQ_EXPR.
11484
11485 2023-05-20 Andrew Pinski <apinski@marvell.com>
11486
11487 * expr.cc (fold_single_bit_test): Take inner and bitnum
11488 instead of arg0 and arg1. Update the code.
11489 (do_store_flag): Don't create a tree when calling
11490 fold_single_bit_test instead just call it with the bitnum
11491 and the inner tree.
11492
11493 2023-05-20 Andrew Pinski <apinski@marvell.com>
11494
11495 * expr.cc (fold_single_bit_test): Use get_def_for_expr
11496 instead of checking the inner's code.
11497
11498 2023-05-20 Andrew Pinski <apinski@marvell.com>
11499
11500 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
11501 (fold_single_bit_test): This and simplify.
11502
11503 2023-05-20 Andrew Pinski <apinski@marvell.com>
11504
11505 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
11506 expr.cc.
11507 (fold_single_bit_test): Likewise.
11508 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
11509 (fold_single_bit_test): Likewise and make static.
11510 * fold-const.h (fold_single_bit_test): Remove declaration.
11511
11512 2023-05-20 Die Li <lidie@eswincomputing.com>
11513
11514 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
11515 checking.
11516
11517 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
11518
11519 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
11520
11521 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
11522
11523 PR target/106888
11524 * config/riscv/bitmanip.md
11525 (<bitmanip_optab>disi2): Match with any_extend.
11526 (<bitmanip_optab>disi2_sext): New pattern to match
11527 with sign extend using an ANDI instruction.
11528
11529 2023-05-19 Nathan Sidwell <nathan@acm.org>
11530
11531 PR other/99451
11532 * opts.h (handle_deferred_dump_options): Declare.
11533 * opts-global.cc (handle_common_deferred_options): Do not handle
11534 dump options here.
11535 (handle_deferred_dump_options): New.
11536 * toplev.cc (toplev::main): Call it after plugin init.
11537
11538 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
11539
11540 * config/riscv/constraints.md (DsS, DsD): Restore agreement
11541 with shiftm1 mode attribute.
11542
11543 2023-05-19 Andrew Pinski <apinski@marvell.com>
11544
11545 PR driver/33980
11546 * gcc.cc (default_compilers["@c-header"]): Add %w
11547 after the --output-pch.
11548
11549 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
11550
11551 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
11552 to hival, ASHIFT the corresponding regs.
11553
11554 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
11555
11556 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
11557
11558 2023-05-19 Jakub Jelinek <jakub@redhat.com>
11559
11560 PR tree-optimization/105776
11561 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
11562 non-NULL, allow division statement to have a cast as single imm use
11563 rather than comparison/condition.
11564 (match_arith_overflow): In that case remove the cast stmt in addition
11565 to the division statement.
11566
11567 2023-05-19 Jakub Jelinek <jakub@redhat.com>
11568
11569 PR tree-optimization/101856
11570 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
11571 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
11572 support it but umul_highpart_optab does.
11573
11574 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
11575
11576 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
11577 of tree_to_shwi on array indices. Minor tweaks.
11578
11579 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11580
11581 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
11582 * attribs.cc (diag_attr_exclusions): Ditto.
11583 (decl_attributes): Ditto.
11584 (build_type_attribute_qual_variant): Ditto.
11585 * builtins.cc (fold_builtin_carg): Ditto.
11586 (fold_builtin_next_arg): Ditto.
11587 (do_mpc_arg2): Ditto.
11588 * cfgexpand.cc (expand_return): Ditto.
11589 * cgraph.h (decl_in_symtab_p): Ditto.
11590 (symtab_node::get_create): Ditto.
11591 * dwarf2out.cc (base_type_die): Ditto.
11592 (implicit_ptr_descriptor): Ditto.
11593 (gen_array_type_die): Ditto.
11594 (gen_type_die_with_usage): Ditto.
11595 (optimize_location_into_implicit_ptr): Ditto.
11596 * expr.cc (do_store_flag): Ditto.
11597 * fold-const.cc (negate_expr_p): Ditto.
11598 (fold_negate_expr_1): Ditto.
11599 (fold_convert_const): Ditto.
11600 (fold_convert_loc): Ditto.
11601 (constant_boolean_node): Ditto.
11602 (fold_binary_op_with_conditional_arg): Ditto.
11603 (build_fold_addr_expr_with_type_loc): Ditto.
11604 (fold_comparison): Ditto.
11605 (fold_checksum_tree): Ditto.
11606 (tree_unary_nonnegative_warnv_p): Ditto.
11607 (integer_valued_real_unary_p): Ditto.
11608 (fold_read_from_constant_string): Ditto.
11609 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
11610 * gimple-expr.cc (useless_type_conversion_p): Ditto.
11611 (is_gimple_reg): Ditto.
11612 (is_gimple_asm_val): Ditto.
11613 (mark_addressable): Ditto.
11614 * gimple-expr.h (is_gimple_variable): Ditto.
11615 (virtual_operand_p): Ditto.
11616 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
11617 * gimplify.cc (gimplify_bind_expr): Ditto.
11618 (gimplify_return_expr): Ditto.
11619 (gimple_add_padding_init_for_auto_var): Ditto.
11620 (gimplify_addr_expr): Ditto.
11621 (omp_add_variable): Ditto.
11622 (omp_notice_variable): Ditto.
11623 (omp_get_base_pointer): Ditto.
11624 (omp_strip_components_and_deref): Ditto.
11625 (omp_strip_indirections): Ditto.
11626 (omp_accumulate_sibling_list): Ditto.
11627 (omp_build_struct_sibling_lists): Ditto.
11628 (gimplify_adjust_omp_clauses_1): Ditto.
11629 (gimplify_adjust_omp_clauses): Ditto.
11630 (gimplify_omp_for): Ditto.
11631 (goa_lhs_expr_p): Ditto.
11632 (gimplify_one_sizepos): Ditto.
11633 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
11634 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
11635 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
11636 (propagate_controlled_uses): Ditto.
11637 * ipa-sra.cc (type_prevails_p): Ditto.
11638 (scan_expr_access): Ditto.
11639 * optabs-tree.cc (optab_for_tree_code): Ditto.
11640 * toplev.cc (wrapup_global_declaration_1): Ditto.
11641 * trans-mem.cc (transaction_invariant_address_p): Ditto.
11642 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
11643 (verify_gimple_comparison): Ditto.
11644 (verify_gimple_assign_binary): Ditto.
11645 (verify_gimple_assign_single): Ditto.
11646 * tree-complex.cc (get_component_ssa_name): Ditto.
11647 * tree-emutls.cc (lower_emutls_2): Ditto.
11648 * tree-inline.cc (copy_tree_body_r): Ditto.
11649 (estimate_move_cost): Ditto.
11650 (copy_decl_for_dup_finish): Ditto.
11651 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
11652 (note_nonlocal_vla_type): Ditto.
11653 (convert_local_omp_clauses): Ditto.
11654 (remap_vla_decls): Ditto.
11655 (fixup_vla_decls): Ditto.
11656 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
11657 * tree-pretty-print.cc (print_declaration): Ditto.
11658 (print_call_name): Ditto.
11659 * tree-sra.cc (compare_access_positions): Ditto.
11660 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
11661 * tree-ssa-ccp.cc (get_default_value): Ditto.
11662 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
11663 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
11664 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
11665 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
11666 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
11667 * tree-ssa-sink.cc (statement_sink_location): Ditto.
11668 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
11669 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
11670 * tree-ssa-uninit.cc (warn_uninit): Ditto.
11671 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
11672 (non_rewritable_mem_ref_base): Ditto.
11673 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
11674 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
11675 * tree-vect-generic.cc (do_binop): Ditto.
11676 (do_cond): Ditto.
11677 * tree-vect-stmts.cc (vect_init_vector): Ditto.
11678 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
11679 * tree.cc (sign_mask_for): Ditto.
11680 (verify_type_variant): Ditto.
11681 (gimple_canonical_types_compatible_p): Ditto.
11682 (verify_type): Ditto.
11683 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
11684 * var-tracking.cc (prepare_call_arguments): Ditto.
11685 (vt_add_function_parameters): Ditto.
11686 * varasm.cc (decode_addr_const): Ditto.
11687
11688 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11689
11690 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
11691 (lower_reduction_clauses): Ditto.
11692 (lower_send_clauses): Ditto.
11693 (lower_omp_task_reductions): Ditto.
11694 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
11695 (worker_single_copy): Ditto.
11696 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
11697 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
11698
11699 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11700
11701 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
11702 tree.h.
11703 (lto_read_body_or_constructor): Ditto.
11704 * lto-streamer-out.cc (tree_is_indexable): Ditto.
11705 (lto_output_var_decl_ref): Ditto.
11706 (DFS::DFS_write_tree_body): Ditto.
11707 (wrap_refs): Ditto.
11708 (write_symbol_extension_info): Ditto.
11709
11710 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11711
11712 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
11713 defines from tree.h.
11714 (aarch64_mangle_type): Ditto.
11715 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
11716 (alpha_gimplify_va_arg_1): Ditto.
11717 * config/arc/arc.cc (arc_encode_section_info): Ditto.
11718 (arc_is_aux_reg_p): Ditto.
11719 (arc_is_uncached_mem_p): Ditto.
11720 (arc_handle_aux_attribute): Ditto.
11721 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
11722 (arm_handle_cmse_nonsecure_call): Ditto.
11723 (arm_set_default_type_attributes): Ditto.
11724 (arm_is_segment_info_known): Ditto.
11725 (arm_mangle_type): Ditto.
11726 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
11727 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
11728 (avr_decl_absdata_p): Ditto.
11729 (avr_insert_attributes): Ditto.
11730 (avr_section_type_flags): Ditto.
11731 (avr_encode_section_info): Ditto.
11732 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
11733 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
11734 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
11735 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
11736 (csky_mangle_type): Ditto.
11737 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
11738 * config/darwin.cc (is_objc_metadata): Ditto.
11739 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
11740 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
11741 * config/frv/frv.cc (frv_emit_movsi): Ditto.
11742 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
11743 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
11744 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
11745 * config/i386/i386-expand.cc: Ditto.
11746 * config/i386/i386.cc (type_natural_mode): Ditto.
11747 (ix86_function_arg): Ditto.
11748 (ix86_data_alignment): Ditto.
11749 (ix86_local_alignment): Ditto.
11750 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
11751 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
11752 (i386_pe_type_dllexport_p): Ditto.
11753 (i386_pe_adjust_class_at_definition): Ditto.
11754 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
11755 (i386_pe_binds_local_p): Ditto.
11756 (i386_pe_section_type_flags): Ditto.
11757 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
11758 (ia64_gimplify_va_arg): Ditto.
11759 (ia64_in_small_data_p): Ditto.
11760 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
11761 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
11762 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
11763 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
11764 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
11765 (mcore_encode_section_info): Ditto.
11766 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
11767 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
11768 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
11769 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
11770 (pass_in_memory): Ditto.
11771 (nvptx_generate_vector_shuffle): Ditto.
11772 (nvptx_lockless_update): Ditto.
11773 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
11774 (pa_function_value): Ditto.
11775 (pa_function_arg): Ditto.
11776 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
11777 (TEXT_SPACE_P): Ditto.
11778 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
11779 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
11780 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
11781 (riscv_mangle_type): Ditto.
11782 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
11783 (rl78_addsi3_internal): Ditto.
11784 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
11785 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
11786 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
11787 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
11788 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
11789 (rs6000_function_arg_advance_1): Ditto.
11790 (rs6000_function_arg): Ditto.
11791 (rs6000_pass_by_reference): Ditto.
11792 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
11793 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
11794 (rs6000_set_default_type_attributes): Ditto.
11795 (rs6000_elf_in_small_data_p): Ditto.
11796 (IN_NAMED_SECTION): Ditto.
11797 (rs6000_xcoff_encode_section_info): Ditto.
11798 (rs6000_function_value): Ditto.
11799 (invalid_arg_for_unprototyped_fn): Ditto.
11800 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
11801 (s390_vec_n_elem): Ditto.
11802 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
11803 (s390_function_arg_integer): Ditto.
11804 (s390_return_in_memory): Ditto.
11805 (s390_encode_section_info): Ditto.
11806 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
11807 (sh_function_value): Ditto.
11808 * config/sol2.cc (solaris_insert_attributes): Ditto.
11809 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
11810 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
11811 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
11812 (xstormy16_handle_below100_attribute): Ditto.
11813 * config/v850/v850.cc (v850_encode_section_info): Ditto.
11814 (v850_insert_attributes): Ditto.
11815 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
11816 (visium_return_in_memory): Ditto.
11817 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
11818
11819 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
11820
11821 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
11822 (ix86_expand_vecop_qihi): Add op2vec bool variable.
11823 Do not set REG_EQUAL note.
11824 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
11825 Add prototype.
11826 * config/i386/i386.cc (ix86_multiplication_cost): Handle
11827 V4QImode and V8QImode.
11828 * config/i386/mmx.md (mulv8qi3): New expander.
11829 (mulv4qi3): Ditto.
11830 * config/i386/sse.md (mulv8qi3): Remove.
11831
11832 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
11833
11834 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
11835
11836 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
11837
11838 PR bootstrap/105831
11839 * config.gcc: Use = operator instead of ==.
11840
11841 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
11842
11843 PR bootstrap/105831
11844 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
11845 * configure.ac: Likewise.
11846 * configure: Regenerate.
11847
11848 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
11849
11850 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
11851 (__ARM_mve_coerce1): Remove.
11852 (__ARM_mve_coerce2): Remove.
11853 (__ARM_mve_coerce3): Remove.
11854 (__ARM_mve_coerce_i_scalar): New.
11855 (__ARM_mve_coerce_s8_ptr): New.
11856 (__ARM_mve_coerce_u8_ptr): New.
11857 (__ARM_mve_coerce_s16_ptr): New.
11858 (__ARM_mve_coerce_u16_ptr): New.
11859 (__ARM_mve_coerce_s32_ptr): New.
11860 (__ARM_mve_coerce_u32_ptr): New.
11861 (__ARM_mve_coerce_s64_ptr): New.
11862 (__ARM_mve_coerce_u64_ptr): New.
11863 (__ARM_mve_coerce_f_scalar): New.
11864 (__ARM_mve_coerce_f16_ptr): New.
11865 (__ARM_mve_coerce_f32_ptr): New.
11866 (__arm_vst4q): Change _coerce_ overloads.
11867 (__arm_vbicq): Change _coerce_ overloads.
11868 (__arm_vld1q): Change _coerce_ overloads.
11869 (__arm_vld1q_z): Change _coerce_ overloads.
11870 (__arm_vld2q): Change _coerce_ overloads.
11871 (__arm_vld4q): Change _coerce_ overloads.
11872 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
11873 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
11874 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
11875 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
11876 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
11877 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
11878 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
11879 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
11880 (__arm_vst1q_p): Change _coerce_ overloads.
11881 (__arm_vst2q): Change _coerce_ overloads.
11882 (__arm_vst1q): Change _coerce_ overloads.
11883 (__arm_vstrhq): Change _coerce_ overloads.
11884 (__arm_vstrhq_p): Change _coerce_ overloads.
11885 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
11886 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
11887 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
11888 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
11889 (__arm_vstrwq_p): Change _coerce_ overloads.
11890 (__arm_vstrwq): Change _coerce_ overloads.
11891 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
11892 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
11893 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
11894 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
11895 (__arm_vsetq_lane): Change _coerce_ overloads.
11896 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
11897 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
11898 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
11899 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
11900 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
11901 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
11902 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
11903 (__arm_vidupq_x_u8): Change _coerce_ overloads.
11904 (__arm_vddupq_x_u8): Change _coerce_ overloads.
11905 (__arm_vidupq_x_u16): Change _coerce_ overloads.
11906 (__arm_vddupq_x_u16): Change _coerce_ overloads.
11907 (__arm_vidupq_x_u32): Change _coerce_ overloads.
11908 (__arm_vddupq_x_u32): Change _coerce_ overloads.
11909 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
11910 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
11911 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
11912 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
11913 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
11914 (__arm_vidupq_u16): Change _coerce_ overloads.
11915 (__arm_vidupq_u32): Change _coerce_ overloads.
11916 (__arm_vidupq_u8): Change _coerce_ overloads.
11917 (__arm_vddupq_u16): Change _coerce_ overloads.
11918 (__arm_vddupq_u32): Change _coerce_ overloads.
11919 (__arm_vddupq_u8): Change _coerce_ overloads.
11920 (__arm_viwdupq_m): Change _coerce_ overloads.
11921 (__arm_viwdupq_u16): Change _coerce_ overloads.
11922 (__arm_viwdupq_u32): Change _coerce_ overloads.
11923 (__arm_viwdupq_u8): Change _coerce_ overloads.
11924 (__arm_vdwdupq_m): Change _coerce_ overloads.
11925 (__arm_vdwdupq_u16): Change _coerce_ overloads.
11926 (__arm_vdwdupq_u32): Change _coerce_ overloads.
11927 (__arm_vdwdupq_u8): Change _coerce_ overloads.
11928 (__arm_vstrbq): Change _coerce_ overloads.
11929 (__arm_vstrbq_p): Change _coerce_ overloads.
11930 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
11931 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
11932 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
11933 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
11934 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
11935
11936 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
11937
11938 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
11939 scalar constant.
11940
11941 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
11942
11943 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
11944 (__arm_vadcq_u32): Likewise.
11945 (__arm_vadcq_m_s32): Likewise.
11946 (__arm_vadcq_m_u32): Likewise.
11947 (__arm_vsbcq_s32): Likewise.
11948 (__arm_vsbcq_u32): Likewise.
11949 (__arm_vsbcq_m_s32): Likewise.
11950 (__arm_vsbcq_m_u32): Likewise.
11951 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
11952
11953 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
11954
11955 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
11956 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
11957 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
11958 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
11959 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
11960 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
11961 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
11962 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
11963 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
11964 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
11965 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
11966 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
11967 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
11968 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
11969 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
11970 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
11971 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
11972 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
11973 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
11974 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
11975 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
11976 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
11977 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
11978 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
11979 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
11980 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
11981 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
11982 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
11983 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
11984 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
11985 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
11986 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
11987 (mve_vorrq_m_f<mode>)
11988 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
11989 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
11990 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
11991 capitalization in the emitted asm.
11992
11993 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
11994
11995 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
11996 predicates.md.
11997 (Ri): Move constraint definition from predicates.md.
11998 (Rl): Define new constraint.
11999 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
12000 missing constraint.
12001 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
12002 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
12003 op 2. Fix asm output spacing.
12004 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
12005 * config/arm/predicates.md (Ri) Move constraint to constraints.md
12006 (mve_vldrd_immediate): Move it from
12007 constraints.md.
12008 (mve_vstrw_immediate): New predicate.
12009
12010 2023-05-18 Pan Li <pan2.li@intel.com>
12011 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12012 Kito Cheng <kito.cheng@sifive.com>
12013 Richard Biener <rguenther@suse.de>
12014 Richard Sandiford <richard.sandiford@arm.com>
12015
12016 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
12017 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
12018 (struct table_elt): Extend machine_mode to 16 bits.
12019 (struct set): Ditto.
12020 * genmodes.cc (emit_mode_wider): Extend type from char to short.
12021 (emit_mode_complex): Ditto.
12022 (emit_mode_inner): Ditto.
12023 (emit_class_narrowest_mode): Ditto.
12024 * genopinit.cc (main): Extend the machine_mode limit.
12025 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
12026 re-ordered the struct fields for padding.
12027 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
12028 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
12029 (get_mode_alignment): Extend type from char to short.
12030 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
12031 removed the ATTRIBUTE_PACKED.
12032 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
12033 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
12034 m_kind to 2 bits and remove m_spare.
12035 * rtl.h (RTX_CODE_BITSIZE): New macro.
12036 (struct rtx_def): Swap both the bit size and location between the
12037 rtx_code and the machine_mode.
12038 (subreg_shape::unique_id): Extend the machine_mode limit.
12039 * rtlanal.h: Extend machine_mode to 16 bits.
12040 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
12041 bits and re-ordered the struct fields for padding.
12042 (struct tree_decl_common): Extend machine_mode to 16 bits.
12043
12044 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
12045
12046 * genrecog.cc (print_nonbool_test): Fix type error of
12047 switch (SUBREG_BYTE (op))'.
12048
12049 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
12050
12051 * common/config/riscv/riscv-common.cc: Remove
12052 trailing spaces on lines.
12053 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
12054 * config/riscv/riscv.h (enum reg_class): Likewise.
12055 * config/riscv/riscv.md: Likewise.
12056
12057 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
12058
12059 * config/pa/pa.md (clear_cache): New.
12060
12061 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
12062
12063 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
12064 parenthesis. Fix misnamed index entry.
12065 <concept>: Fix misnamed index entry.
12066
12067 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12068
12069 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
12070 combined from ...
12071 (*<optab>si3_mask, *<optab>di3_mask): Here.
12072 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
12073 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
12074 pattern.
12075 (*<bitmanip_optab>si3_sext_mask): Likewise.
12076 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
12077 and const_di_mask_operand.
12078 (bitmanip_rotate): New iterator.
12079 (bitmanip_optab): Add rotates.
12080 * config/riscv/predicates.md (const_si_mask_operand): Renamed
12081 from const31_operand. Generalize to handle more mask constants.
12082 (const_di_mask_operand): Similarly.
12083
12084 2023-05-17 Jakub Jelinek <jakub@redhat.com>
12085
12086 PR c++/109884
12087 * config/i386/i386-builtin-types.def (FLOAT128): Use
12088 float128t_type_node rather than float128_type_node.
12089
12090 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
12091
12092 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
12093 FP_CONTRACT_FAST (no functional change).
12094
12095 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
12096
12097 * config/i386/i386.cc (ix86_multiplication_cost): Correct
12098 calcuation of integer vector mode costs to reflect generated
12099 instruction sequences of different integer vector modes and
12100 different target ABIs.
12101
12102 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12103
12104 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
12105 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
12106 (riscv_mode_needed): Ditto.
12107 (riscv_mode_after): Ditto.
12108 (riscv_mode_entry): Ditto.
12109 (riscv_mode_exit): Ditto.
12110 (riscv_mode_priority): Ditto.
12111 (TARGET_MODE_EMIT): New target hook.
12112 (TARGET_MODE_NEEDED): Ditto.
12113 (TARGET_MODE_AFTER): Ditto.
12114 (TARGET_MODE_ENTRY): Ditto.
12115 (TARGET_MODE_EXIT): Ditto.
12116 (TARGET_MODE_PRIORITY): Ditto.
12117 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
12118 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
12119 * config/riscv/riscv.md: Add csrwvxrm.
12120 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
12121 (vxrmsi): New pattern.
12122
12123 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12124
12125 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
12126 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
12127 (struct narrow_alu_def): Ditto.
12128 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
12129 (function_expander::use_exact_insn): Ditto.
12130 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
12131 (function_base::has_rounding_mode_operand_p): New function.
12132
12133 2023-05-17 Andrew Pinski <apinski@marvell.com>
12134
12135 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
12136 against 0 instead of calling integer_zerop.
12137
12138 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12139
12140 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
12141 (DEF_RVV_VXRM_ENUM): New macro.
12142 (handle_pragma_vector): Add vxrm enum register.
12143 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
12144 (RNU): Ditto.
12145 (RNE): Ditto.
12146 (RDN): Ditto.
12147 (ROD): Ditto.
12148
12149 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
12150
12151 * value-range.h (Value_Range::operator=): New.
12152
12153 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
12154
12155 * value-range.cc (vrange::operator=): Add a stub to copy
12156 unsupported ranges.
12157 * value-range.h (is_a <unsupported_range>): New.
12158 (Value_Range::operator=): Support copying unsupported ranges.
12159
12160 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
12161
12162 * data-streamer-in.cc (streamer_read_real_value): New.
12163 (streamer_read_value_range): New.
12164 * data-streamer-out.cc (streamer_write_real_value): New.
12165 (streamer_write_vrange): New.
12166 * data-streamer.h (streamer_write_vrange): New.
12167 (streamer_read_value_range): New.
12168
12169 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
12170
12171 PR c++/109532
12172 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
12173 is ignored for a fixed underlying type.
12174 (C++ Dialect Options): Likewise for -fstrict-enums.
12175
12176 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
12177
12178 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
12179 special case.
12180
12181 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
12182
12183 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
12184 New.
12185 (s390_atomic_align_for_mode): New.
12186
12187 2023-05-17 Jakub Jelinek <jakub@redhat.com>
12188
12189 * wide-int.cc (wi::from_array): Add missing closing paren in function
12190 comment.
12191
12192 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
12193
12194 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
12195 suggested unroll factor once the previous analysis fails.
12196
12197 2023-05-17 Pan Li <pan2.li@intel.com>
12198
12199 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
12200 macro.
12201 (main): Add bool1 to the type indexer.
12202 * config/riscv/riscv-vector-builtins-functions.def
12203 (vreinterpret): Register vbool1 interpret function.
12204 * config/riscv/riscv-vector-builtins-types.def
12205 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
12206 (vint8m1_t): Add the type to bool1_interpret_ops.
12207 (vint16m1_t): Ditto.
12208 (vint32m1_t): Ditto.
12209 (vint64m1_t): Ditto.
12210 (vuint8m1_t): Ditto.
12211 (vuint16m1_t): Ditto.
12212 (vuint32m1_t): Ditto.
12213 (vuint64m1_t): Ditto.
12214 * config/riscv/riscv-vector-builtins.cc
12215 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
12216 (required_extensions_p): Add bool1 interpret case.
12217 * config/riscv/riscv-vector-builtins.def
12218 (bool1_interpret): Add bool1 interpret to base type.
12219 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
12220 with VB dest for vreinterpret.
12221
12222 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
12223
12224 PR target/106708
12225 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
12226 constants through "lis; xoris".
12227
12228 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
12229
12230 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
12231 default rs6000 target pass for O2 and above.
12232 * doc/invoke.texi: Document -free
12233
12234 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
12235
12236 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
12237 Fix wrong select_kind...
12238
12239 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
12240
12241 * config/s390/s390-protos.h (s390_expand_setmem): Change
12242 function signature.
12243 * config/s390/s390.cc (s390_expand_setmem): For memset's less
12244 than or equal to 256 byte do not perform a libc call.
12245 * config/s390/s390.md: Change expander into a version which
12246 takes 8 operands.
12247
12248 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
12249
12250 * config/s390/s390-protos.h (s390_expand_movmem): New.
12251 * config/s390/s390.cc (s390_expand_movmem): New.
12252 * config/s390/s390.md (movmem<mode>): New.
12253 (*mvcrl): New.
12254 (mvcrl): New.
12255
12256 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
12257
12258 * config/s390/s390-protos.h (s390_expand_cpymem): Change
12259 function signature.
12260 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
12261 than or equal to 256 byte do not perform a libc call.
12262 (s390_expand_insv): Adapt new function signature of
12263 s390_expand_cpymem.
12264 * config/s390/s390.md: Change expander into a version which
12265 takes 8 operands.
12266
12267 2023-05-16 Andrew Pinski <apinski@marvell.com>
12268
12269 PR tree-optimization/109424
12270 * match.pd: Add patterns for min/max of zero_one_valued
12271 values to `&`/`|`.
12272
12273 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12274
12275 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
12276 * config/riscv/riscv-vector-builtins.cc
12277 (function_expander::use_ternop_insn): Add default rounding mode.
12278 (function_expander::use_widen_ternop_insn): Ditto.
12279 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
12280 (riscv_hard_regno_mode_ok): Ditto.
12281 (riscv_conditional_register_usage): Ditto.
12282 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
12283 (FRM_REG_P): Ditto.
12284 (RISCV_DWARF_FRM): Ditto.
12285 * config/riscv/riscv.md: Ditto.
12286 * config/riscv/vector-iterators.md: split no frm and has frm operations.
12287 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
12288 (@pred_<optab><mode>): Ditto.
12289
12290 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
12291
12292 PR tree-optimization/109695
12293 * value-range.cc (irange::operator=): Resize range.
12294 (irange::union_): Same.
12295 (irange::intersect): Same.
12296 (irange::invert): Same.
12297 (int_range_max): Default to 3 sub-ranges and resize as needed.
12298 * value-range.h (irange::maybe_resize): New.
12299 (~int_range): New.
12300 (int_range::int_range): Adjust for resizing.
12301 (int_range::operator=): Same.
12302
12303 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
12304
12305 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
12306 range copying
12307 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
12308 when range changed.
12309
12310 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12311
12312 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
12313 * config/riscv/riscv-vector-builtins.cc
12314 (function_expander::use_exact_insn): Add default rounding mode operand.
12315 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
12316 (riscv_hard_regno_mode_ok): Ditto.
12317 (riscv_conditional_register_usage): Ditto.
12318 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
12319 (VXRM_REG_P): Ditto.
12320 (RISCV_DWARF_VXRM): Ditto.
12321 * config/riscv/riscv.md: Ditto.
12322 * config/riscv/vector.md: Ditto
12323
12324 2023-05-15 Pan Li <pan2.li@intel.com>
12325
12326 * optabs.cc (maybe_gen_insn): Add case to generate instruction
12327 that has 11 operands.
12328
12329 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12330
12331 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
12332 logic for vector modes.
12333
12334 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12335
12336 PR target/99195
12337 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
12338 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
12339 (aarch64_cmtst<mode>): Rename to...
12340 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
12341 (*aarch64_cmtst_same_<mode>): Rename to...
12342 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
12343 (*aarch64_cmtstdi): Rename to...
12344 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
12345 (aarch64_fac<optab><mode>): Rename to...
12346 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
12347
12348 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12349
12350 PR target/99195
12351 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
12352 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
12353
12354 2023-05-15 Pan Li <pan2.li@intel.com>
12355 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12356 kito-cheng <kito.cheng@sifive.com>
12357
12358 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
12359 deciding the mode is constant or not.
12360 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
12361
12362 2023-05-15 Richard Biener <rguenther@suse.de>
12363
12364 PR tree-optimization/109848
12365 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
12366 TARGET_MEM_REF address preparation before the store, not
12367 before the CTOR.
12368
12369 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12370
12371 * config/riscv/riscv.cc
12372 (riscv_vectorize_preferred_vector_alignment): New function.
12373 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
12374
12375 2023-05-14 Andrew Pinski <apinski@marvell.com>
12376
12377 PR tree-optimization/109829
12378 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
12379
12380 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
12381
12382 PR target/109807
12383 * config/i386/i386.cc: Revert the 2023-05-11 change.
12384 (ix86_widen_mult_cost): Return high value instead of
12385 ICEing for unsupported modes.
12386
12387 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
12388
12389 * config/i386/i386.cc (x86_function_profiler): Take
12390 ix86_direct_extern_access into account when generating calls
12391 to __fentry__()
12392
12393 2023-05-14 Pan Li <pan2.li@intel.com>
12394
12395 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
12396 Refactor the or pattern to switch cases.
12397
12398 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12399
12400 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
12401 aarch64_expand_vector_init to this, and remove interleaving case.
12402 Recursively call aarch64_expand_vector_init_fallback, instead of
12403 aarch64_expand_vector_init.
12404 (aarch64_unzip_vector_init): New function.
12405 (aarch64_expand_vector_init): Likewise.
12406
12407 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
12408
12409 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
12410 Pull out function call from the gcc_assert.
12411
12412 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
12413
12414 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
12415 (policy_to_str): New.
12416 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
12417
12418 2023-05-13 Andrew Pinski <apinski@marvell.com>
12419
12420 PR tree-optimization/109834
12421 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
12422 (popcount(rotate(x,y))->popcount(x)): Likewise.
12423
12424 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
12425
12426 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
12427 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
12428 gen_extend_insn to generate zero/sign extension instructions.
12429 Fix comments.
12430 (ix86_expand_vecop_qihi): Initialize interleave functions
12431 for MULT code only. Fix comments.
12432
12433 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
12434
12435 PR target/109797
12436 * config/i386/mmx.md (mulv2si3): Remove expander.
12437 (mulv2si3): Rename insn pattern from *mulv2si.
12438
12439 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
12440
12441 PR libstdc++/109816
12442 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
12443 '!lto_stream_offload_p'.
12444
12445 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
12446 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12447
12448 PR target/109743
12449 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
12450 (local_avl_compatible_p): New.
12451 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
12452 for LCM, rewrite as a backward algorithm.
12453 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
12454 interface, handle a BB at once.
12455
12456 2023-05-12 Richard Biener <rguenther@suse.de>
12457
12458 PR tree-optimization/64731
12459 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
12460 handle TARGET_MEM_REF destinations of stores from vector
12461 CTORs.
12462
12463 2023-05-12 Richard Biener <rguenther@suse.de>
12464
12465 PR tree-optimization/109791
12466 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
12467 New pattern.
12468 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
12469 Likewise.
12470
12471 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12472
12473 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
12474 * config/arm/arm-mve-builtins-base.def (vsriq): New.
12475 * config/arm/arm-mve-builtins-base.h (vsriq): New.
12476 * config/arm/arm-mve-builtins.cc
12477 (function_instance::has_inactive_argument): Handle vsriq.
12478 * config/arm/arm_mve.h (vsriq): Remove.
12479 (vsriq_m): Remove.
12480 (vsriq_n_u8): Remove.
12481 (vsriq_n_s8): Remove.
12482 (vsriq_n_u16): Remove.
12483 (vsriq_n_s16): Remove.
12484 (vsriq_n_u32): Remove.
12485 (vsriq_n_s32): Remove.
12486 (vsriq_m_n_s8): Remove.
12487 (vsriq_m_n_u8): Remove.
12488 (vsriq_m_n_s16): Remove.
12489 (vsriq_m_n_u16): Remove.
12490 (vsriq_m_n_s32): Remove.
12491 (vsriq_m_n_u32): Remove.
12492 (__arm_vsriq_n_u8): Remove.
12493 (__arm_vsriq_n_s8): Remove.
12494 (__arm_vsriq_n_u16): Remove.
12495 (__arm_vsriq_n_s16): Remove.
12496 (__arm_vsriq_n_u32): Remove.
12497 (__arm_vsriq_n_s32): Remove.
12498 (__arm_vsriq_m_n_s8): Remove.
12499 (__arm_vsriq_m_n_u8): Remove.
12500 (__arm_vsriq_m_n_s16): Remove.
12501 (__arm_vsriq_m_n_u16): Remove.
12502 (__arm_vsriq_m_n_s32): Remove.
12503 (__arm_vsriq_m_n_u32): Remove.
12504 (__arm_vsriq): Remove.
12505 (__arm_vsriq_m): Remove.
12506
12507 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12508
12509 * config/arm/iterators.md (mve_insn): Add vsri.
12510 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
12511 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
12512 (mve_vsriq_m_n_<supf><mode>): Rename into ...
12513 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12514
12515 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12516
12517 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
12518 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
12519
12520 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12521
12522 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
12523 * config/arm/arm-mve-builtins-base.def (vsliq): New.
12524 * config/arm/arm-mve-builtins-base.h (vsliq): New.
12525 * config/arm/arm-mve-builtins.cc
12526 (function_instance::has_inactive_argument): Handle vsliq.
12527 * config/arm/arm_mve.h (vsliq): Remove.
12528 (vsliq_m): Remove.
12529 (vsliq_n_u8): Remove.
12530 (vsliq_n_s8): Remove.
12531 (vsliq_n_u16): Remove.
12532 (vsliq_n_s16): Remove.
12533 (vsliq_n_u32): Remove.
12534 (vsliq_n_s32): Remove.
12535 (vsliq_m_n_s8): Remove.
12536 (vsliq_m_n_s32): Remove.
12537 (vsliq_m_n_s16): Remove.
12538 (vsliq_m_n_u8): Remove.
12539 (vsliq_m_n_u32): Remove.
12540 (vsliq_m_n_u16): Remove.
12541 (__arm_vsliq_n_u8): Remove.
12542 (__arm_vsliq_n_s8): Remove.
12543 (__arm_vsliq_n_u16): Remove.
12544 (__arm_vsliq_n_s16): Remove.
12545 (__arm_vsliq_n_u32): Remove.
12546 (__arm_vsliq_n_s32): Remove.
12547 (__arm_vsliq_m_n_s8): Remove.
12548 (__arm_vsliq_m_n_s32): Remove.
12549 (__arm_vsliq_m_n_s16): Remove.
12550 (__arm_vsliq_m_n_u8): Remove.
12551 (__arm_vsliq_m_n_u32): Remove.
12552 (__arm_vsliq_m_n_u16): Remove.
12553 (__arm_vsliq): Remove.
12554 (__arm_vsliq_m): Remove.
12555
12556 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12557
12558 * config/arm/iterators.md (mve_insn>): Add vsli.
12559 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
12560 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12561 (mve_vsliq_m_n_<supf><mode>): Rename into ...
12562 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12563
12564 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12565
12566 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
12567 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
12568
12569 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12570
12571 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
12572 * config/arm/arm-mve-builtins-base.def (vpselq): New.
12573 * config/arm/arm-mve-builtins-base.h (vpselq): New.
12574 * config/arm/arm_mve.h (vpselq): Remove.
12575 (vpselq_u8): Remove.
12576 (vpselq_s8): Remove.
12577 (vpselq_u16): Remove.
12578 (vpselq_s16): Remove.
12579 (vpselq_u32): Remove.
12580 (vpselq_s32): Remove.
12581 (vpselq_u64): Remove.
12582 (vpselq_s64): Remove.
12583 (vpselq_f16): Remove.
12584 (vpselq_f32): Remove.
12585 (__arm_vpselq_u8): Remove.
12586 (__arm_vpselq_s8): Remove.
12587 (__arm_vpselq_u16): Remove.
12588 (__arm_vpselq_s16): Remove.
12589 (__arm_vpselq_u32): Remove.
12590 (__arm_vpselq_s32): Remove.
12591 (__arm_vpselq_u64): Remove.
12592 (__arm_vpselq_s64): Remove.
12593 (__arm_vpselq_f16): Remove.
12594 (__arm_vpselq_f32): Remove.
12595 (__arm_vpselq): Remove.
12596
12597 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12598
12599 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
12600 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
12601
12602 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12603
12604 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
12605 gen_mve_vpselq.
12606 * config/arm/iterators.md (MVE_VPSELQ_F): New.
12607 (mve_insn): Add vpsel.
12608 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
12609 (@mve_<mve_insn>q_<supf><mode>): ... this.
12610 (@mve_vpselq_f<mode>): Rename into ...
12611 (@mve_<mve_insn>q_f<mode>): ... this.
12612
12613 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12614
12615 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
12616 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
12617 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
12618 * config/arm/arm-mve-builtins.cc
12619 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
12620 vfmsq.
12621 * config/arm/arm_mve.h (vfmaq): Remove.
12622 (vfmasq): Remove.
12623 (vfmsq): Remove.
12624 (vfmaq_m): Remove.
12625 (vfmasq_m): Remove.
12626 (vfmsq_m): Remove.
12627 (vfmaq_f16): Remove.
12628 (vfmaq_n_f16): Remove.
12629 (vfmasq_n_f16): Remove.
12630 (vfmsq_f16): Remove.
12631 (vfmaq_f32): Remove.
12632 (vfmaq_n_f32): Remove.
12633 (vfmasq_n_f32): Remove.
12634 (vfmsq_f32): Remove.
12635 (vfmaq_m_f32): Remove.
12636 (vfmaq_m_f16): Remove.
12637 (vfmaq_m_n_f32): Remove.
12638 (vfmaq_m_n_f16): Remove.
12639 (vfmasq_m_n_f32): Remove.
12640 (vfmasq_m_n_f16): Remove.
12641 (vfmsq_m_f32): Remove.
12642 (vfmsq_m_f16): Remove.
12643 (__arm_vfmaq_f16): Remove.
12644 (__arm_vfmaq_n_f16): Remove.
12645 (__arm_vfmasq_n_f16): Remove.
12646 (__arm_vfmsq_f16): Remove.
12647 (__arm_vfmaq_f32): Remove.
12648 (__arm_vfmaq_n_f32): Remove.
12649 (__arm_vfmasq_n_f32): Remove.
12650 (__arm_vfmsq_f32): Remove.
12651 (__arm_vfmaq_m_f32): Remove.
12652 (__arm_vfmaq_m_f16): Remove.
12653 (__arm_vfmaq_m_n_f32): Remove.
12654 (__arm_vfmaq_m_n_f16): Remove.
12655 (__arm_vfmasq_m_n_f32): Remove.
12656 (__arm_vfmasq_m_n_f16): Remove.
12657 (__arm_vfmsq_m_f32): Remove.
12658 (__arm_vfmsq_m_f16): Remove.
12659 (__arm_vfmaq): Remove.
12660 (__arm_vfmasq): Remove.
12661 (__arm_vfmsq): Remove.
12662 (__arm_vfmaq_m): Remove.
12663 (__arm_vfmasq_m): Remove.
12664 (__arm_vfmsq_m): Remove.
12665
12666 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12667
12668 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
12669 VFMSQ_M_F.
12670 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
12671 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
12672 (mve_insn): Add vfma, vfmas, vfms.
12673 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
12674 into ...
12675 (@mve_<mve_insn>q_f<mode>): ... this.
12676 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
12677 (@mve_<mve_insn>q_n_f<mode>): ... this.
12678 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
12679 @mve_<mve_insn>q_m_f<mode>.
12680 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
12681 @mve_<mve_insn>q_m_n_f<mode>.
12682
12683 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12684
12685 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
12686 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
12687
12688 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12689
12690 * config/arm/arm-mve-builtins-base.cc
12691 (FUNCTION_WITH_RTX_M_N_NO_F): New.
12692 (vmvnq): New.
12693 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
12694 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
12695 * config/arm/arm_mve.h (vmvnq): Remove.
12696 (vmvnq_m): Remove.
12697 (vmvnq_x): Remove.
12698 (vmvnq_s8): Remove.
12699 (vmvnq_s16): Remove.
12700 (vmvnq_s32): Remove.
12701 (vmvnq_n_s16): Remove.
12702 (vmvnq_n_s32): Remove.
12703 (vmvnq_u8): Remove.
12704 (vmvnq_u16): Remove.
12705 (vmvnq_u32): Remove.
12706 (vmvnq_n_u16): Remove.
12707 (vmvnq_n_u32): Remove.
12708 (vmvnq_m_u8): Remove.
12709 (vmvnq_m_s8): Remove.
12710 (vmvnq_m_u16): Remove.
12711 (vmvnq_m_s16): Remove.
12712 (vmvnq_m_u32): Remove.
12713 (vmvnq_m_s32): Remove.
12714 (vmvnq_m_n_s16): Remove.
12715 (vmvnq_m_n_u16): Remove.
12716 (vmvnq_m_n_s32): Remove.
12717 (vmvnq_m_n_u32): Remove.
12718 (vmvnq_x_s8): Remove.
12719 (vmvnq_x_s16): Remove.
12720 (vmvnq_x_s32): Remove.
12721 (vmvnq_x_u8): Remove.
12722 (vmvnq_x_u16): Remove.
12723 (vmvnq_x_u32): Remove.
12724 (vmvnq_x_n_s16): Remove.
12725 (vmvnq_x_n_s32): Remove.
12726 (vmvnq_x_n_u16): Remove.
12727 (vmvnq_x_n_u32): Remove.
12728 (__arm_vmvnq_s8): Remove.
12729 (__arm_vmvnq_s16): Remove.
12730 (__arm_vmvnq_s32): Remove.
12731 (__arm_vmvnq_n_s16): Remove.
12732 (__arm_vmvnq_n_s32): Remove.
12733 (__arm_vmvnq_u8): Remove.
12734 (__arm_vmvnq_u16): Remove.
12735 (__arm_vmvnq_u32): Remove.
12736 (__arm_vmvnq_n_u16): Remove.
12737 (__arm_vmvnq_n_u32): Remove.
12738 (__arm_vmvnq_m_u8): Remove.
12739 (__arm_vmvnq_m_s8): Remove.
12740 (__arm_vmvnq_m_u16): Remove.
12741 (__arm_vmvnq_m_s16): Remove.
12742 (__arm_vmvnq_m_u32): Remove.
12743 (__arm_vmvnq_m_s32): Remove.
12744 (__arm_vmvnq_m_n_s16): Remove.
12745 (__arm_vmvnq_m_n_u16): Remove.
12746 (__arm_vmvnq_m_n_s32): Remove.
12747 (__arm_vmvnq_m_n_u32): Remove.
12748 (__arm_vmvnq_x_s8): Remove.
12749 (__arm_vmvnq_x_s16): Remove.
12750 (__arm_vmvnq_x_s32): Remove.
12751 (__arm_vmvnq_x_u8): Remove.
12752 (__arm_vmvnq_x_u16): Remove.
12753 (__arm_vmvnq_x_u32): Remove.
12754 (__arm_vmvnq_x_n_s16): Remove.
12755 (__arm_vmvnq_x_n_s32): Remove.
12756 (__arm_vmvnq_x_n_u16): Remove.
12757 (__arm_vmvnq_x_n_u32): Remove.
12758 (__arm_vmvnq): Remove.
12759 (__arm_vmvnq_m): Remove.
12760 (__arm_vmvnq_x): Remove.
12761
12762 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12763
12764 * config/arm/iterators.md (mve_insn): Add vmvn.
12765 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
12766 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12767 (mve_vmvnq_m_<supf><mode>): Rename into ...
12768 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12769 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
12770 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12771
12772 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12773
12774 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
12775 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
12776
12777 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12778
12779 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
12780 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
12781 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
12782 * config/arm/arm_mve.h (vbrsrq): Remove.
12783 (vbrsrq_m): Remove.
12784 (vbrsrq_x): Remove.
12785 (vbrsrq_n_f16): Remove.
12786 (vbrsrq_n_f32): Remove.
12787 (vbrsrq_n_u8): Remove.
12788 (vbrsrq_n_s8): Remove.
12789 (vbrsrq_n_u16): Remove.
12790 (vbrsrq_n_s16): Remove.
12791 (vbrsrq_n_u32): Remove.
12792 (vbrsrq_n_s32): Remove.
12793 (vbrsrq_m_n_s8): Remove.
12794 (vbrsrq_m_n_s32): Remove.
12795 (vbrsrq_m_n_s16): Remove.
12796 (vbrsrq_m_n_u8): Remove.
12797 (vbrsrq_m_n_u32): Remove.
12798 (vbrsrq_m_n_u16): Remove.
12799 (vbrsrq_m_n_f32): Remove.
12800 (vbrsrq_m_n_f16): Remove.
12801 (vbrsrq_x_n_s8): Remove.
12802 (vbrsrq_x_n_s16): Remove.
12803 (vbrsrq_x_n_s32): Remove.
12804 (vbrsrq_x_n_u8): Remove.
12805 (vbrsrq_x_n_u16): Remove.
12806 (vbrsrq_x_n_u32): Remove.
12807 (vbrsrq_x_n_f16): Remove.
12808 (vbrsrq_x_n_f32): Remove.
12809 (__arm_vbrsrq_n_u8): Remove.
12810 (__arm_vbrsrq_n_s8): Remove.
12811 (__arm_vbrsrq_n_u16): Remove.
12812 (__arm_vbrsrq_n_s16): Remove.
12813 (__arm_vbrsrq_n_u32): Remove.
12814 (__arm_vbrsrq_n_s32): Remove.
12815 (__arm_vbrsrq_m_n_s8): Remove.
12816 (__arm_vbrsrq_m_n_s32): Remove.
12817 (__arm_vbrsrq_m_n_s16): Remove.
12818 (__arm_vbrsrq_m_n_u8): Remove.
12819 (__arm_vbrsrq_m_n_u32): Remove.
12820 (__arm_vbrsrq_m_n_u16): Remove.
12821 (__arm_vbrsrq_x_n_s8): Remove.
12822 (__arm_vbrsrq_x_n_s16): Remove.
12823 (__arm_vbrsrq_x_n_s32): Remove.
12824 (__arm_vbrsrq_x_n_u8): Remove.
12825 (__arm_vbrsrq_x_n_u16): Remove.
12826 (__arm_vbrsrq_x_n_u32): Remove.
12827 (__arm_vbrsrq_n_f16): Remove.
12828 (__arm_vbrsrq_n_f32): Remove.
12829 (__arm_vbrsrq_m_n_f32): Remove.
12830 (__arm_vbrsrq_m_n_f16): Remove.
12831 (__arm_vbrsrq_x_n_f16): Remove.
12832 (__arm_vbrsrq_x_n_f32): Remove.
12833 (__arm_vbrsrq): Remove.
12834 (__arm_vbrsrq_m): Remove.
12835 (__arm_vbrsrq_x): Remove.
12836
12837 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12838
12839 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
12840 (mve_insn): Add vbrsr.
12841 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
12842 (@mve_<mve_insn>q_n_f<mode>): ... this.
12843 (mve_vbrsrq_n_<supf><mode>): Rename into ...
12844 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12845 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
12846 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12847 (mve_vbrsrq_m_n_f<mode>): Rename into ...
12848 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
12849
12850 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12851
12852 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
12853 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
12854
12855 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12856
12857 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
12858 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
12859 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
12860 * config/arm/arm_mve.h (vqshluq): Remove.
12861 (vqshluq_m): Remove.
12862 (vqshluq_n_s8): Remove.
12863 (vqshluq_n_s16): Remove.
12864 (vqshluq_n_s32): Remove.
12865 (vqshluq_m_n_s8): Remove.
12866 (vqshluq_m_n_s16): Remove.
12867 (vqshluq_m_n_s32): Remove.
12868 (__arm_vqshluq_n_s8): Remove.
12869 (__arm_vqshluq_n_s16): Remove.
12870 (__arm_vqshluq_n_s32): Remove.
12871 (__arm_vqshluq_m_n_s8): Remove.
12872 (__arm_vqshluq_m_n_s16): Remove.
12873 (__arm_vqshluq_m_n_s32): Remove.
12874 (__arm_vqshluq): Remove.
12875 (__arm_vqshluq_m): Remove.
12876
12877 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12878
12879 * config/arm/iterators.md (mve_insn): Add vqshlu.
12880 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
12881 (VQSHLUQ_M_N, VQSHLUQ_N): New.
12882 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
12883 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12884 (mve_vqshluq_m_n_s<mode>): Change name into ...
12885 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12886
12887 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12888
12889 * config/arm/arm-mve-builtins-shapes.cc
12890 (binary_lshift_unsigned): New.
12891 * config/arm/arm-mve-builtins-shapes.h
12892 (binary_lshift_unsigned): New.
12893
12894 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12895
12896 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
12897 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
12898 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
12899 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
12900 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
12901 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
12902 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
12903 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
12904 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
12905 (vrmlaldavhaxq): Remove.
12906 (vrmlsldavhaq): Remove.
12907 (vrmlsldavhaxq): Remove.
12908 (vrmlaldavhaq_p): Remove.
12909 (vrmlaldavhaxq_p): Remove.
12910 (vrmlsldavhaq_p): Remove.
12911 (vrmlsldavhaxq_p): Remove.
12912 (vrmlaldavhaq_s32): Remove.
12913 (vrmlaldavhaq_u32): Remove.
12914 (vrmlaldavhaxq_s32): Remove.
12915 (vrmlsldavhaq_s32): Remove.
12916 (vrmlsldavhaxq_s32): Remove.
12917 (vrmlaldavhaq_p_s32): Remove.
12918 (vrmlaldavhaq_p_u32): Remove.
12919 (vrmlaldavhaxq_p_s32): Remove.
12920 (vrmlsldavhaq_p_s32): Remove.
12921 (vrmlsldavhaxq_p_s32): Remove.
12922 (__arm_vrmlaldavhaq_s32): Remove.
12923 (__arm_vrmlaldavhaq_u32): Remove.
12924 (__arm_vrmlaldavhaxq_s32): Remove.
12925 (__arm_vrmlsldavhaq_s32): Remove.
12926 (__arm_vrmlsldavhaxq_s32): Remove.
12927 (__arm_vrmlaldavhaq_p_s32): Remove.
12928 (__arm_vrmlaldavhaq_p_u32): Remove.
12929 (__arm_vrmlaldavhaxq_p_s32): Remove.
12930 (__arm_vrmlsldavhaq_p_s32): Remove.
12931 (__arm_vrmlsldavhaxq_p_s32): Remove.
12932 (__arm_vrmlaldavhaq): Remove.
12933 (__arm_vrmlaldavhaxq): Remove.
12934 (__arm_vrmlsldavhaq): Remove.
12935 (__arm_vrmlsldavhaxq): Remove.
12936 (__arm_vrmlaldavhaq_p): Remove.
12937 (__arm_vrmlaldavhaxq_p): Remove.
12938 (__arm_vrmlsldavhaq_p): Remove.
12939 (__arm_vrmlsldavhaxq_p): Remove.
12940
12941 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12942
12943 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
12944 (MVE_VRMLxLDAVHAxQ_P): New.
12945 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
12946 vrmlsldavhax.
12947 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
12948 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
12949 VRMLALDAVHAQ_P_S.
12950 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
12951 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
12952 (mve_vrmlsldavhaq_sv4si): Merge into ...
12953 (@mve_<mve_insn>q_<supf>v4si): ... this.
12954 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
12955 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
12956 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
12957 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
12958
12959 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12960
12961 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
12962 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
12963 New.
12964 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
12965 * config/arm/arm_mve.h (vqdmulltq): Remove.
12966 (vqdmullbq): Remove.
12967 (vqdmullbq_m): Remove.
12968 (vqdmulltq_m): Remove.
12969 (vqdmulltq_s16): Remove.
12970 (vqdmulltq_n_s16): Remove.
12971 (vqdmullbq_s16): Remove.
12972 (vqdmullbq_n_s16): Remove.
12973 (vqdmulltq_s32): Remove.
12974 (vqdmulltq_n_s32): Remove.
12975 (vqdmullbq_s32): Remove.
12976 (vqdmullbq_n_s32): Remove.
12977 (vqdmullbq_m_n_s32): Remove.
12978 (vqdmullbq_m_n_s16): Remove.
12979 (vqdmullbq_m_s32): Remove.
12980 (vqdmullbq_m_s16): Remove.
12981 (vqdmulltq_m_n_s32): Remove.
12982 (vqdmulltq_m_n_s16): Remove.
12983 (vqdmulltq_m_s32): Remove.
12984 (vqdmulltq_m_s16): Remove.
12985 (__arm_vqdmulltq_s16): Remove.
12986 (__arm_vqdmulltq_n_s16): Remove.
12987 (__arm_vqdmullbq_s16): Remove.
12988 (__arm_vqdmullbq_n_s16): Remove.
12989 (__arm_vqdmulltq_s32): Remove.
12990 (__arm_vqdmulltq_n_s32): Remove.
12991 (__arm_vqdmullbq_s32): Remove.
12992 (__arm_vqdmullbq_n_s32): Remove.
12993 (__arm_vqdmullbq_m_n_s32): Remove.
12994 (__arm_vqdmullbq_m_n_s16): Remove.
12995 (__arm_vqdmullbq_m_s32): Remove.
12996 (__arm_vqdmullbq_m_s16): Remove.
12997 (__arm_vqdmulltq_m_n_s32): Remove.
12998 (__arm_vqdmulltq_m_n_s16): Remove.
12999 (__arm_vqdmulltq_m_s32): Remove.
13000 (__arm_vqdmulltq_m_s16): Remove.
13001 (__arm_vqdmulltq): Remove.
13002 (__arm_vqdmullbq): Remove.
13003 (__arm_vqdmullbq_m): Remove.
13004 (__arm_vqdmulltq_m): Remove.
13005
13006 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
13007
13008 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
13009 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
13010 (mve_insn): Add vqdmullb, vqdmullt.
13011 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
13012 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
13013 VQDMULLTQ_N_S.
13014 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
13015 (mve_vqdmulltq_n_s<mode>): Merge into ...
13016 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13017 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
13018 (@mve_<mve_insn>q_<supf><mode>): ... this.
13019 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
13020 ...
13021 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13022 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
13023 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
13024
13025 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
13026
13027 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
13028 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
13029
13030 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
13031
13032 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
13033 Drop unused parameter.
13034 (riscv_select_multilib): Ditto.
13035 (riscv_compute_multilib): Update call site of
13036 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
13037
13038 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
13039
13040 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
13041 * config/riscv/riscv-protos.h (expand_vec_init): New function.
13042 * config/riscv/riscv-v.cc (class rvv_builder): New class.
13043 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
13044 (rvv_builder::get_merged_repeating_sequence): Ditto.
13045 (expand_vector_init_insert_elems): Ditto.
13046 (expand_vec_init): Ditto.
13047 * config/riscv/vector-iterators.md: New attribute.
13048
13049 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
13050
13051 * config/rs6000/rs6000-builtins.def
13052 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
13053 to xsiexpdp_di.
13054 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
13055 xsiexpdpf to xsiexpdpf_di.
13056 * config/rs6000/vsx.md (xsiexpdp): Rename to...
13057 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
13058 replace TARGET_64BIT with TARGET_POWERPC64.
13059 (xsiexpdpf): Rename to...
13060 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
13061 replace TARGET_64BIT with TARGET_POWERPC64.
13062
13063 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
13064
13065 * config/rs6000/rs6000-builtins.def
13066 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
13067 long long.
13068 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
13069 TARGET_POWERPC64.
13070
13071 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
13072
13073 * config/rs6000/rs6000-builtins.def
13074 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
13075 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
13076 to power9 catalog.
13077 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
13078 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
13079 TARGET_64BIT check.
13080 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
13081 requirement when it has a 64-bit argument.
13082
13083 2023-05-12 Pan Li <pan2.li@intel.com>
13084 Richard Sandiford <richard.sandiford@arm.com>
13085 Richard Biener <rguenther@suse.de>
13086 Jakub Jelinek <jakub@redhat.com>
13087
13088 * mux-utils.h: Add overload operator == and != for pointer_mux.
13089 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
13090 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
13091 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
13092 (dv_as_decl): Ditto.
13093 (dv_as_opaque): Removed due to unnecessary.
13094 (struct variable_hasher): Take decl_or_value as compare_type.
13095 (variable_hasher::equal): Diito.
13096 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
13097 (dv_from_value): Ditto.
13098 (attrs_list_member): Ditto.
13099 (vars_copy): Ditto.
13100 (var_reg_decl_set): Ditto.
13101 (var_reg_delete_and_set): Ditto.
13102 (find_loc_in_1pdv): Ditto.
13103 (canonicalize_values_star): Ditto.
13104 (variable_post_merge_new_vals): Ditto.
13105 (dump_onepart_variable_differences): Ditto.
13106 (variable_different_p): Ditto.
13107 (set_slot_part): Ditto.
13108 (clobber_slot_part): Ditto.
13109 (clobber_variable_part): Ditto.
13110
13111 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
13112
13113 * match.pd: simplify vector shift + bit_and + multiply.
13114
13115 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13116
13117 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
13118 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
13119 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
13120 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
13121 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
13122 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
13123 * config/arm/arm-mve-builtins.cc
13124 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
13125 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
13126 * config/arm/arm_mve.h (vqrdmlashq): Remove.
13127 (vqrdmlahq): Remove.
13128 (vqdmlashq): Remove.
13129 (vqdmlahq): Remove.
13130 (vmlasq): Remove.
13131 (vmlaq): Remove.
13132 (vmlaq_m): Remove.
13133 (vmlasq_m): Remove.
13134 (vqdmlashq_m): Remove.
13135 (vqdmlahq_m): Remove.
13136 (vqrdmlahq_m): Remove.
13137 (vqrdmlashq_m): Remove.
13138 (vmlasq_n_u8): Remove.
13139 (vmlaq_n_u8): Remove.
13140 (vqrdmlashq_n_s8): Remove.
13141 (vqrdmlahq_n_s8): Remove.
13142 (vqdmlahq_n_s8): Remove.
13143 (vqdmlashq_n_s8): Remove.
13144 (vmlasq_n_s8): Remove.
13145 (vmlaq_n_s8): Remove.
13146 (vmlasq_n_u16): Remove.
13147 (vmlaq_n_u16): Remove.
13148 (vqrdmlashq_n_s16): Remove.
13149 (vqrdmlahq_n_s16): Remove.
13150 (vqdmlashq_n_s16): Remove.
13151 (vqdmlahq_n_s16): Remove.
13152 (vmlasq_n_s16): Remove.
13153 (vmlaq_n_s16): Remove.
13154 (vmlasq_n_u32): Remove.
13155 (vmlaq_n_u32): Remove.
13156 (vqrdmlashq_n_s32): Remove.
13157 (vqrdmlahq_n_s32): Remove.
13158 (vqdmlashq_n_s32): Remove.
13159 (vqdmlahq_n_s32): Remove.
13160 (vmlasq_n_s32): Remove.
13161 (vmlaq_n_s32): Remove.
13162 (vmlaq_m_n_s8): Remove.
13163 (vmlaq_m_n_s32): Remove.
13164 (vmlaq_m_n_s16): Remove.
13165 (vmlaq_m_n_u8): Remove.
13166 (vmlaq_m_n_u32): Remove.
13167 (vmlaq_m_n_u16): Remove.
13168 (vmlasq_m_n_s8): Remove.
13169 (vmlasq_m_n_s32): Remove.
13170 (vmlasq_m_n_s16): Remove.
13171 (vmlasq_m_n_u8): Remove.
13172 (vmlasq_m_n_u32): Remove.
13173 (vmlasq_m_n_u16): Remove.
13174 (vqdmlashq_m_n_s8): Remove.
13175 (vqdmlashq_m_n_s32): Remove.
13176 (vqdmlashq_m_n_s16): Remove.
13177 (vqdmlahq_m_n_s8): Remove.
13178 (vqdmlahq_m_n_s32): Remove.
13179 (vqdmlahq_m_n_s16): Remove.
13180 (vqrdmlahq_m_n_s8): Remove.
13181 (vqrdmlahq_m_n_s32): Remove.
13182 (vqrdmlahq_m_n_s16): Remove.
13183 (vqrdmlashq_m_n_s8): Remove.
13184 (vqrdmlashq_m_n_s32): Remove.
13185 (vqrdmlashq_m_n_s16): Remove.
13186 (__arm_vmlasq_n_u8): Remove.
13187 (__arm_vmlaq_n_u8): Remove.
13188 (__arm_vqrdmlashq_n_s8): Remove.
13189 (__arm_vqdmlashq_n_s8): Remove.
13190 (__arm_vqrdmlahq_n_s8): Remove.
13191 (__arm_vqdmlahq_n_s8): Remove.
13192 (__arm_vmlasq_n_s8): Remove.
13193 (__arm_vmlaq_n_s8): Remove.
13194 (__arm_vmlasq_n_u16): Remove.
13195 (__arm_vmlaq_n_u16): Remove.
13196 (__arm_vqrdmlashq_n_s16): Remove.
13197 (__arm_vqdmlashq_n_s16): Remove.
13198 (__arm_vqrdmlahq_n_s16): Remove.
13199 (__arm_vqdmlahq_n_s16): Remove.
13200 (__arm_vmlasq_n_s16): Remove.
13201 (__arm_vmlaq_n_s16): Remove.
13202 (__arm_vmlasq_n_u32): Remove.
13203 (__arm_vmlaq_n_u32): Remove.
13204 (__arm_vqrdmlashq_n_s32): Remove.
13205 (__arm_vqdmlashq_n_s32): Remove.
13206 (__arm_vqrdmlahq_n_s32): Remove.
13207 (__arm_vqdmlahq_n_s32): Remove.
13208 (__arm_vmlasq_n_s32): Remove.
13209 (__arm_vmlaq_n_s32): Remove.
13210 (__arm_vmlaq_m_n_s8): Remove.
13211 (__arm_vmlaq_m_n_s32): Remove.
13212 (__arm_vmlaq_m_n_s16): Remove.
13213 (__arm_vmlaq_m_n_u8): Remove.
13214 (__arm_vmlaq_m_n_u32): Remove.
13215 (__arm_vmlaq_m_n_u16): Remove.
13216 (__arm_vmlasq_m_n_s8): Remove.
13217 (__arm_vmlasq_m_n_s32): Remove.
13218 (__arm_vmlasq_m_n_s16): Remove.
13219 (__arm_vmlasq_m_n_u8): Remove.
13220 (__arm_vmlasq_m_n_u32): Remove.
13221 (__arm_vmlasq_m_n_u16): Remove.
13222 (__arm_vqdmlahq_m_n_s8): Remove.
13223 (__arm_vqdmlahq_m_n_s32): Remove.
13224 (__arm_vqdmlahq_m_n_s16): Remove.
13225 (__arm_vqrdmlahq_m_n_s8): Remove.
13226 (__arm_vqrdmlahq_m_n_s32): Remove.
13227 (__arm_vqrdmlahq_m_n_s16): Remove.
13228 (__arm_vqrdmlashq_m_n_s8): Remove.
13229 (__arm_vqrdmlashq_m_n_s32): Remove.
13230 (__arm_vqrdmlashq_m_n_s16): Remove.
13231 (__arm_vqdmlashq_m_n_s8): Remove.
13232 (__arm_vqdmlashq_m_n_s16): Remove.
13233 (__arm_vqdmlashq_m_n_s32): Remove.
13234 (__arm_vmlasq): Remove.
13235 (__arm_vmlaq): Remove.
13236 (__arm_vqrdmlashq): Remove.
13237 (__arm_vqdmlashq): Remove.
13238 (__arm_vqrdmlahq): Remove.
13239 (__arm_vqdmlahq): Remove.
13240 (__arm_vmlaq_m): Remove.
13241 (__arm_vmlasq_m): Remove.
13242 (__arm_vqdmlahq_m): Remove.
13243 (__arm_vqrdmlahq_m): Remove.
13244 (__arm_vqrdmlashq_m): Remove.
13245 (__arm_vqdmlashq_m): Remove.
13246
13247 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13248
13249 * config/arm/iterators.md (MVE_VMLxQ_N): New.
13250 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
13251 vqrdmlash.
13252 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
13253 VQRDMLASHQ_N_S.
13254 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
13255 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
13256 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
13257 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
13258 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13259
13260 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13261
13262 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
13263 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
13264
13265 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13266
13267 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
13268 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
13269 (vqrdmlsdhxq): New.
13270 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
13271 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
13272 (vqrdmlsdhxq): New.
13273 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
13274 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
13275 (vqrdmlsdhxq): New.
13276 * config/arm/arm-mve-builtins.cc
13277 (function_instance::has_inactive_argument): Handle vqrdmladhq,
13278 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
13279 vqdmlsdhq, vqdmlsdhxq.
13280 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
13281 (vqrdmlsdhq): Remove.
13282 (vqrdmladhxq): Remove.
13283 (vqrdmladhq): Remove.
13284 (vqdmlsdhxq): Remove.
13285 (vqdmlsdhq): Remove.
13286 (vqdmladhxq): Remove.
13287 (vqdmladhq): Remove.
13288 (vqdmladhq_m): Remove.
13289 (vqdmladhxq_m): Remove.
13290 (vqdmlsdhq_m): Remove.
13291 (vqdmlsdhxq_m): Remove.
13292 (vqrdmladhq_m): Remove.
13293 (vqrdmladhxq_m): Remove.
13294 (vqrdmlsdhq_m): Remove.
13295 (vqrdmlsdhxq_m): Remove.
13296 (vqrdmlsdhxq_s8): Remove.
13297 (vqrdmlsdhq_s8): Remove.
13298 (vqrdmladhxq_s8): Remove.
13299 (vqrdmladhq_s8): Remove.
13300 (vqdmlsdhxq_s8): Remove.
13301 (vqdmlsdhq_s8): Remove.
13302 (vqdmladhxq_s8): Remove.
13303 (vqdmladhq_s8): Remove.
13304 (vqrdmlsdhxq_s16): Remove.
13305 (vqrdmlsdhq_s16): Remove.
13306 (vqrdmladhxq_s16): Remove.
13307 (vqrdmladhq_s16): Remove.
13308 (vqdmlsdhxq_s16): Remove.
13309 (vqdmlsdhq_s16): Remove.
13310 (vqdmladhxq_s16): Remove.
13311 (vqdmladhq_s16): Remove.
13312 (vqrdmlsdhxq_s32): Remove.
13313 (vqrdmlsdhq_s32): Remove.
13314 (vqrdmladhxq_s32): Remove.
13315 (vqrdmladhq_s32): Remove.
13316 (vqdmlsdhxq_s32): Remove.
13317 (vqdmlsdhq_s32): Remove.
13318 (vqdmladhxq_s32): Remove.
13319 (vqdmladhq_s32): Remove.
13320 (vqdmladhq_m_s8): Remove.
13321 (vqdmladhq_m_s32): Remove.
13322 (vqdmladhq_m_s16): Remove.
13323 (vqdmladhxq_m_s8): Remove.
13324 (vqdmladhxq_m_s32): Remove.
13325 (vqdmladhxq_m_s16): Remove.
13326 (vqdmlsdhq_m_s8): Remove.
13327 (vqdmlsdhq_m_s32): Remove.
13328 (vqdmlsdhq_m_s16): Remove.
13329 (vqdmlsdhxq_m_s8): Remove.
13330 (vqdmlsdhxq_m_s32): Remove.
13331 (vqdmlsdhxq_m_s16): Remove.
13332 (vqrdmladhq_m_s8): Remove.
13333 (vqrdmladhq_m_s32): Remove.
13334 (vqrdmladhq_m_s16): Remove.
13335 (vqrdmladhxq_m_s8): Remove.
13336 (vqrdmladhxq_m_s32): Remove.
13337 (vqrdmladhxq_m_s16): Remove.
13338 (vqrdmlsdhq_m_s8): Remove.
13339 (vqrdmlsdhq_m_s32): Remove.
13340 (vqrdmlsdhq_m_s16): Remove.
13341 (vqrdmlsdhxq_m_s8): Remove.
13342 (vqrdmlsdhxq_m_s32): Remove.
13343 (vqrdmlsdhxq_m_s16): Remove.
13344 (__arm_vqrdmlsdhxq_s8): Remove.
13345 (__arm_vqrdmlsdhq_s8): Remove.
13346 (__arm_vqrdmladhxq_s8): Remove.
13347 (__arm_vqrdmladhq_s8): Remove.
13348 (__arm_vqdmlsdhxq_s8): Remove.
13349 (__arm_vqdmlsdhq_s8): Remove.
13350 (__arm_vqdmladhxq_s8): Remove.
13351 (__arm_vqdmladhq_s8): Remove.
13352 (__arm_vqrdmlsdhxq_s16): Remove.
13353 (__arm_vqrdmlsdhq_s16): Remove.
13354 (__arm_vqrdmladhxq_s16): Remove.
13355 (__arm_vqrdmladhq_s16): Remove.
13356 (__arm_vqdmlsdhxq_s16): Remove.
13357 (__arm_vqdmlsdhq_s16): Remove.
13358 (__arm_vqdmladhxq_s16): Remove.
13359 (__arm_vqdmladhq_s16): Remove.
13360 (__arm_vqrdmlsdhxq_s32): Remove.
13361 (__arm_vqrdmlsdhq_s32): Remove.
13362 (__arm_vqrdmladhxq_s32): Remove.
13363 (__arm_vqrdmladhq_s32): Remove.
13364 (__arm_vqdmlsdhxq_s32): Remove.
13365 (__arm_vqdmlsdhq_s32): Remove.
13366 (__arm_vqdmladhxq_s32): Remove.
13367 (__arm_vqdmladhq_s32): Remove.
13368 (__arm_vqdmladhq_m_s8): Remove.
13369 (__arm_vqdmladhq_m_s32): Remove.
13370 (__arm_vqdmladhq_m_s16): Remove.
13371 (__arm_vqdmladhxq_m_s8): Remove.
13372 (__arm_vqdmladhxq_m_s32): Remove.
13373 (__arm_vqdmladhxq_m_s16): Remove.
13374 (__arm_vqdmlsdhq_m_s8): Remove.
13375 (__arm_vqdmlsdhq_m_s32): Remove.
13376 (__arm_vqdmlsdhq_m_s16): Remove.
13377 (__arm_vqdmlsdhxq_m_s8): Remove.
13378 (__arm_vqdmlsdhxq_m_s32): Remove.
13379 (__arm_vqdmlsdhxq_m_s16): Remove.
13380 (__arm_vqrdmladhq_m_s8): Remove.
13381 (__arm_vqrdmladhq_m_s32): Remove.
13382 (__arm_vqrdmladhq_m_s16): Remove.
13383 (__arm_vqrdmladhxq_m_s8): Remove.
13384 (__arm_vqrdmladhxq_m_s32): Remove.
13385 (__arm_vqrdmladhxq_m_s16): Remove.
13386 (__arm_vqrdmlsdhq_m_s8): Remove.
13387 (__arm_vqrdmlsdhq_m_s32): Remove.
13388 (__arm_vqrdmlsdhq_m_s16): Remove.
13389 (__arm_vqrdmlsdhxq_m_s8): Remove.
13390 (__arm_vqrdmlsdhxq_m_s32): Remove.
13391 (__arm_vqrdmlsdhxq_m_s16): Remove.
13392 (__arm_vqrdmlsdhxq): Remove.
13393 (__arm_vqrdmlsdhq): Remove.
13394 (__arm_vqrdmladhxq): Remove.
13395 (__arm_vqrdmladhq): Remove.
13396 (__arm_vqdmlsdhxq): Remove.
13397 (__arm_vqdmlsdhq): Remove.
13398 (__arm_vqdmladhxq): Remove.
13399 (__arm_vqdmladhq): Remove.
13400 (__arm_vqdmladhq_m): Remove.
13401 (__arm_vqdmladhxq_m): Remove.
13402 (__arm_vqdmlsdhq_m): Remove.
13403 (__arm_vqdmlsdhxq_m): Remove.
13404 (__arm_vqrdmladhq_m): Remove.
13405 (__arm_vqrdmladhxq_m): Remove.
13406 (__arm_vqrdmlsdhq_m): Remove.
13407 (__arm_vqrdmlsdhxq_m): Remove.
13408
13409 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13410
13411 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
13412 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
13413 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
13414 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
13415 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
13416 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
13417 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
13418 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
13419 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
13420 (mve_vqdmladhq_s<mode>): Merge into ...
13421 (@mve_<mve_insn>q_<supf><mode>): ... this.
13422
13423 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13424
13425 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
13426 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
13427
13428 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13429
13430 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
13431 (vmlsldavaq, vmlsldavaxq): New.
13432 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
13433 (vmlsldavaq, vmlsldavaxq): New.
13434 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
13435 (vmlsldavaq, vmlsldavaxq): New.
13436 * config/arm/arm_mve.h (vmlaldavaq): Remove.
13437 (vmlaldavaxq): Remove.
13438 (vmlsldavaq): Remove.
13439 (vmlsldavaxq): Remove.
13440 (vmlaldavaq_p): Remove.
13441 (vmlaldavaxq_p): Remove.
13442 (vmlsldavaq_p): Remove.
13443 (vmlsldavaxq_p): Remove.
13444 (vmlaldavaq_s16): Remove.
13445 (vmlaldavaxq_s16): Remove.
13446 (vmlsldavaq_s16): Remove.
13447 (vmlsldavaxq_s16): Remove.
13448 (vmlaldavaq_u16): Remove.
13449 (vmlaldavaq_s32): Remove.
13450 (vmlaldavaxq_s32): Remove.
13451 (vmlsldavaq_s32): Remove.
13452 (vmlsldavaxq_s32): Remove.
13453 (vmlaldavaq_u32): Remove.
13454 (vmlaldavaq_p_s32): Remove.
13455 (vmlaldavaq_p_s16): Remove.
13456 (vmlaldavaq_p_u32): Remove.
13457 (vmlaldavaq_p_u16): Remove.
13458 (vmlaldavaxq_p_s32): Remove.
13459 (vmlaldavaxq_p_s16): Remove.
13460 (vmlsldavaq_p_s32): Remove.
13461 (vmlsldavaq_p_s16): Remove.
13462 (vmlsldavaxq_p_s32): Remove.
13463 (vmlsldavaxq_p_s16): Remove.
13464 (__arm_vmlaldavaq_s16): Remove.
13465 (__arm_vmlaldavaxq_s16): Remove.
13466 (__arm_vmlsldavaq_s16): Remove.
13467 (__arm_vmlsldavaxq_s16): Remove.
13468 (__arm_vmlaldavaq_u16): Remove.
13469 (__arm_vmlaldavaq_s32): Remove.
13470 (__arm_vmlaldavaxq_s32): Remove.
13471 (__arm_vmlsldavaq_s32): Remove.
13472 (__arm_vmlsldavaxq_s32): Remove.
13473 (__arm_vmlaldavaq_u32): Remove.
13474 (__arm_vmlaldavaq_p_s32): Remove.
13475 (__arm_vmlaldavaq_p_s16): Remove.
13476 (__arm_vmlaldavaq_p_u32): Remove.
13477 (__arm_vmlaldavaq_p_u16): Remove.
13478 (__arm_vmlaldavaxq_p_s32): Remove.
13479 (__arm_vmlaldavaxq_p_s16): Remove.
13480 (__arm_vmlsldavaq_p_s32): Remove.
13481 (__arm_vmlsldavaq_p_s16): Remove.
13482 (__arm_vmlsldavaxq_p_s32): Remove.
13483 (__arm_vmlsldavaxq_p_s16): Remove.
13484 (__arm_vmlaldavaq): Remove.
13485 (__arm_vmlaldavaxq): Remove.
13486 (__arm_vmlsldavaq): Remove.
13487 (__arm_vmlsldavaxq): Remove.
13488 (__arm_vmlaldavaq_p): Remove.
13489 (__arm_vmlaldavaxq_p): Remove.
13490 (__arm_vmlsldavaq_p): Remove.
13491 (__arm_vmlsldavaxq_p): Remove.
13492
13493 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13494
13495 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
13496 New.
13497 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
13498 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
13499 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
13500 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
13501 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
13502 (mve_vmlaldavaxq_s<mode>): Merge into ...
13503 (@mve_<mve_insn>q_<supf><mode>): ... this.
13504 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
13505 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
13506 ...
13507 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13508
13509 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13510
13511 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
13512 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
13513
13514 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13515
13516 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
13517 (vrmlsldavhq, vrmlsldavhxq): New.
13518 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
13519 (vrmlsldavhq, vrmlsldavhxq): New.
13520 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
13521 (vrmlsldavhq, vrmlsldavhxq): New.
13522 * config/arm/arm-mve-builtins-functions.h
13523 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
13524 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
13525 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
13526 (vrmlsldavhxq): Remove.
13527 (vrmlsldavhq): Remove.
13528 (vrmlaldavhxq): Remove.
13529 (vrmlaldavhq_p): Remove.
13530 (vrmlaldavhxq_p): Remove.
13531 (vrmlsldavhq_p): Remove.
13532 (vrmlsldavhxq_p): Remove.
13533 (vrmlaldavhq_u32): Remove.
13534 (vrmlsldavhxq_s32): Remove.
13535 (vrmlsldavhq_s32): Remove.
13536 (vrmlaldavhxq_s32): Remove.
13537 (vrmlaldavhq_s32): Remove.
13538 (vrmlaldavhq_p_s32): Remove.
13539 (vrmlaldavhxq_p_s32): Remove.
13540 (vrmlsldavhq_p_s32): Remove.
13541 (vrmlsldavhxq_p_s32): Remove.
13542 (vrmlaldavhq_p_u32): Remove.
13543 (__arm_vrmlaldavhq_u32): Remove.
13544 (__arm_vrmlsldavhxq_s32): Remove.
13545 (__arm_vrmlsldavhq_s32): Remove.
13546 (__arm_vrmlaldavhxq_s32): Remove.
13547 (__arm_vrmlaldavhq_s32): Remove.
13548 (__arm_vrmlaldavhq_p_s32): Remove.
13549 (__arm_vrmlaldavhxq_p_s32): Remove.
13550 (__arm_vrmlsldavhq_p_s32): Remove.
13551 (__arm_vrmlsldavhxq_p_s32): Remove.
13552 (__arm_vrmlaldavhq_p_u32): Remove.
13553 (__arm_vrmlaldavhq): Remove.
13554 (__arm_vrmlsldavhxq): Remove.
13555 (__arm_vrmlsldavhq): Remove.
13556 (__arm_vrmlaldavhxq): Remove.
13557 (__arm_vrmlaldavhq_p): Remove.
13558 (__arm_vrmlaldavhxq_p): Remove.
13559 (__arm_vrmlsldavhq_p): Remove.
13560 (__arm_vrmlsldavhxq_p): Remove.
13561
13562 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13563
13564 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
13565 New.
13566 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
13567 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
13568 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
13569 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
13570 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
13571 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
13572 (@mve_<mve_insn>q_<supf>v4si): ... this.
13573 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
13574 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
13575 into ...
13576 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
13577
13578 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13579
13580 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
13581 (vmlsldavq, vmlsldavxq): New.
13582 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
13583 (vmlsldavq, vmlsldavxq): New.
13584 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
13585 (vmlsldavq, vmlsldavxq): New.
13586 * config/arm/arm_mve.h (vmlaldavq): Remove.
13587 (vmlsldavxq): Remove.
13588 (vmlsldavq): Remove.
13589 (vmlaldavxq): Remove.
13590 (vmlaldavq_p): Remove.
13591 (vmlaldavxq_p): Remove.
13592 (vmlsldavq_p): Remove.
13593 (vmlsldavxq_p): Remove.
13594 (vmlaldavq_u16): Remove.
13595 (vmlsldavxq_s16): Remove.
13596 (vmlsldavq_s16): Remove.
13597 (vmlaldavxq_s16): Remove.
13598 (vmlaldavq_s16): Remove.
13599 (vmlaldavq_u32): Remove.
13600 (vmlsldavxq_s32): Remove.
13601 (vmlsldavq_s32): Remove.
13602 (vmlaldavxq_s32): Remove.
13603 (vmlaldavq_s32): Remove.
13604 (vmlaldavq_p_s16): Remove.
13605 (vmlaldavxq_p_s16): Remove.
13606 (vmlsldavq_p_s16): Remove.
13607 (vmlsldavxq_p_s16): Remove.
13608 (vmlaldavq_p_u16): Remove.
13609 (vmlaldavq_p_s32): Remove.
13610 (vmlaldavxq_p_s32): Remove.
13611 (vmlsldavq_p_s32): Remove.
13612 (vmlsldavxq_p_s32): Remove.
13613 (vmlaldavq_p_u32): Remove.
13614 (__arm_vmlaldavq_u16): Remove.
13615 (__arm_vmlsldavxq_s16): Remove.
13616 (__arm_vmlsldavq_s16): Remove.
13617 (__arm_vmlaldavxq_s16): Remove.
13618 (__arm_vmlaldavq_s16): Remove.
13619 (__arm_vmlaldavq_u32): Remove.
13620 (__arm_vmlsldavxq_s32): Remove.
13621 (__arm_vmlsldavq_s32): Remove.
13622 (__arm_vmlaldavxq_s32): Remove.
13623 (__arm_vmlaldavq_s32): Remove.
13624 (__arm_vmlaldavq_p_s16): Remove.
13625 (__arm_vmlaldavxq_p_s16): Remove.
13626 (__arm_vmlsldavq_p_s16): Remove.
13627 (__arm_vmlsldavxq_p_s16): Remove.
13628 (__arm_vmlaldavq_p_u16): Remove.
13629 (__arm_vmlaldavq_p_s32): Remove.
13630 (__arm_vmlaldavxq_p_s32): Remove.
13631 (__arm_vmlsldavq_p_s32): Remove.
13632 (__arm_vmlsldavxq_p_s32): Remove.
13633 (__arm_vmlaldavq_p_u32): Remove.
13634 (__arm_vmlaldavq): Remove.
13635 (__arm_vmlsldavxq): Remove.
13636 (__arm_vmlsldavq): Remove.
13637 (__arm_vmlaldavxq): Remove.
13638 (__arm_vmlaldavq_p): Remove.
13639 (__arm_vmlaldavxq_p): Remove.
13640 (__arm_vmlsldavq_p): Remove.
13641 (__arm_vmlsldavxq_p): Remove.
13642
13643 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13644
13645 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
13646 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
13647 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
13648 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
13649 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
13650 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
13651 (mve_vmlsldavxq_s<mode>): Merge into ...
13652 (@mve_<mve_insn>q_<supf><mode>): ... this.
13653 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
13654 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
13655 ...
13656 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13657
13658 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13659
13660 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
13661 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
13662
13663 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13664
13665 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
13666 * config/arm/arm-mve-builtins-base.def (vabavq): New.
13667 * config/arm/arm-mve-builtins-base.h (vabavq): New.
13668 * config/arm/arm_mve.h (vabavq): Remove.
13669 (vabavq_p): Remove.
13670 (vabavq_s8): Remove.
13671 (vabavq_s16): Remove.
13672 (vabavq_s32): Remove.
13673 (vabavq_u8): Remove.
13674 (vabavq_u16): Remove.
13675 (vabavq_u32): Remove.
13676 (vabavq_p_s8): Remove.
13677 (vabavq_p_u8): Remove.
13678 (vabavq_p_s16): Remove.
13679 (vabavq_p_u16): Remove.
13680 (vabavq_p_s32): Remove.
13681 (vabavq_p_u32): Remove.
13682 (__arm_vabavq_s8): Remove.
13683 (__arm_vabavq_s16): Remove.
13684 (__arm_vabavq_s32): Remove.
13685 (__arm_vabavq_u8): Remove.
13686 (__arm_vabavq_u16): Remove.
13687 (__arm_vabavq_u32): Remove.
13688 (__arm_vabavq_p_s8): Remove.
13689 (__arm_vabavq_p_u8): Remove.
13690 (__arm_vabavq_p_s16): Remove.
13691 (__arm_vabavq_p_u16): Remove.
13692 (__arm_vabavq_p_s32): Remove.
13693 (__arm_vabavq_p_u32): Remove.
13694 (__arm_vabavq): Remove.
13695 (__arm_vabavq_p): Remove.
13696
13697 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13698
13699 * config/arm/iterators.md (mve_insn): Add vabav.
13700 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
13701 (@mve_<mve_insn>q_<supf><mode>): ... this,.
13702 (mve_vabavq_p_<supf><mode>): Rename into ...
13703 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
13704
13705 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13706
13707 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
13708 (vmlsdavaq, vmlsdavaxq): New.
13709 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
13710 (vmlsdavaq, vmlsdavaxq): New.
13711 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
13712 (vmlsdavaq, vmlsdavaxq): New.
13713 * config/arm/arm_mve.h (vmladavaq): Remove.
13714 (vmlsdavaxq): Remove.
13715 (vmlsdavaq): Remove.
13716 (vmladavaxq): Remove.
13717 (vmladavaq_p): Remove.
13718 (vmladavaxq_p): Remove.
13719 (vmlsdavaq_p): Remove.
13720 (vmlsdavaxq_p): Remove.
13721 (vmladavaq_u8): Remove.
13722 (vmlsdavaxq_s8): Remove.
13723 (vmlsdavaq_s8): Remove.
13724 (vmladavaxq_s8): Remove.
13725 (vmladavaq_s8): Remove.
13726 (vmladavaq_u16): Remove.
13727 (vmlsdavaxq_s16): Remove.
13728 (vmlsdavaq_s16): Remove.
13729 (vmladavaxq_s16): Remove.
13730 (vmladavaq_s16): Remove.
13731 (vmladavaq_u32): Remove.
13732 (vmlsdavaxq_s32): Remove.
13733 (vmlsdavaq_s32): Remove.
13734 (vmladavaxq_s32): Remove.
13735 (vmladavaq_s32): Remove.
13736 (vmladavaq_p_s8): Remove.
13737 (vmladavaq_p_s32): Remove.
13738 (vmladavaq_p_s16): Remove.
13739 (vmladavaq_p_u8): Remove.
13740 (vmladavaq_p_u32): Remove.
13741 (vmladavaq_p_u16): Remove.
13742 (vmladavaxq_p_s8): Remove.
13743 (vmladavaxq_p_s32): Remove.
13744 (vmladavaxq_p_s16): Remove.
13745 (vmlsdavaq_p_s8): Remove.
13746 (vmlsdavaq_p_s32): Remove.
13747 (vmlsdavaq_p_s16): Remove.
13748 (vmlsdavaxq_p_s8): Remove.
13749 (vmlsdavaxq_p_s32): Remove.
13750 (vmlsdavaxq_p_s16): Remove.
13751 (__arm_vmladavaq_u8): Remove.
13752 (__arm_vmlsdavaxq_s8): Remove.
13753 (__arm_vmlsdavaq_s8): Remove.
13754 (__arm_vmladavaxq_s8): Remove.
13755 (__arm_vmladavaq_s8): Remove.
13756 (__arm_vmladavaq_u16): Remove.
13757 (__arm_vmlsdavaxq_s16): Remove.
13758 (__arm_vmlsdavaq_s16): Remove.
13759 (__arm_vmladavaxq_s16): Remove.
13760 (__arm_vmladavaq_s16): Remove.
13761 (__arm_vmladavaq_u32): Remove.
13762 (__arm_vmlsdavaxq_s32): Remove.
13763 (__arm_vmlsdavaq_s32): Remove.
13764 (__arm_vmladavaxq_s32): Remove.
13765 (__arm_vmladavaq_s32): Remove.
13766 (__arm_vmladavaq_p_s8): Remove.
13767 (__arm_vmladavaq_p_s32): Remove.
13768 (__arm_vmladavaq_p_s16): Remove.
13769 (__arm_vmladavaq_p_u8): Remove.
13770 (__arm_vmladavaq_p_u32): Remove.
13771 (__arm_vmladavaq_p_u16): Remove.
13772 (__arm_vmladavaxq_p_s8): Remove.
13773 (__arm_vmladavaxq_p_s32): Remove.
13774 (__arm_vmladavaxq_p_s16): Remove.
13775 (__arm_vmlsdavaq_p_s8): Remove.
13776 (__arm_vmlsdavaq_p_s32): Remove.
13777 (__arm_vmlsdavaq_p_s16): Remove.
13778 (__arm_vmlsdavaxq_p_s8): Remove.
13779 (__arm_vmlsdavaxq_p_s32): Remove.
13780 (__arm_vmlsdavaxq_p_s16): Remove.
13781 (__arm_vmladavaq): Remove.
13782 (__arm_vmlsdavaxq): Remove.
13783 (__arm_vmlsdavaq): Remove.
13784 (__arm_vmladavaxq): Remove.
13785 (__arm_vmladavaq_p): Remove.
13786 (__arm_vmladavaxq_p): Remove.
13787 (__arm_vmlsdavaq_p): Remove.
13788 (__arm_vmlsdavaxq_p): Remove.
13789
13790 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13791
13792 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
13793 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
13794
13795 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13796
13797 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
13798 (vmlsdavq, vmlsdavxq): New.
13799 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
13800 (vmlsdavq, vmlsdavxq): New.
13801 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
13802 (vmlsdavq, vmlsdavxq): New.
13803 * config/arm/arm_mve.h (vmladavq): Remove.
13804 (vmlsdavxq): Remove.
13805 (vmlsdavq): Remove.
13806 (vmladavxq): Remove.
13807 (vmladavq_p): Remove.
13808 (vmlsdavxq_p): Remove.
13809 (vmlsdavq_p): Remove.
13810 (vmladavxq_p): Remove.
13811 (vmladavq_u8): Remove.
13812 (vmlsdavxq_s8): Remove.
13813 (vmlsdavq_s8): Remove.
13814 (vmladavxq_s8): Remove.
13815 (vmladavq_s8): Remove.
13816 (vmladavq_u16): Remove.
13817 (vmlsdavxq_s16): Remove.
13818 (vmlsdavq_s16): Remove.
13819 (vmladavxq_s16): Remove.
13820 (vmladavq_s16): Remove.
13821 (vmladavq_u32): Remove.
13822 (vmlsdavxq_s32): Remove.
13823 (vmlsdavq_s32): Remove.
13824 (vmladavxq_s32): Remove.
13825 (vmladavq_s32): Remove.
13826 (vmladavq_p_u8): Remove.
13827 (vmlsdavxq_p_s8): Remove.
13828 (vmlsdavq_p_s8): Remove.
13829 (vmladavxq_p_s8): Remove.
13830 (vmladavq_p_s8): Remove.
13831 (vmladavq_p_u16): Remove.
13832 (vmlsdavxq_p_s16): Remove.
13833 (vmlsdavq_p_s16): Remove.
13834 (vmladavxq_p_s16): Remove.
13835 (vmladavq_p_s16): Remove.
13836 (vmladavq_p_u32): Remove.
13837 (vmlsdavxq_p_s32): Remove.
13838 (vmlsdavq_p_s32): Remove.
13839 (vmladavxq_p_s32): Remove.
13840 (vmladavq_p_s32): Remove.
13841 (__arm_vmladavq_u8): Remove.
13842 (__arm_vmlsdavxq_s8): Remove.
13843 (__arm_vmlsdavq_s8): Remove.
13844 (__arm_vmladavxq_s8): Remove.
13845 (__arm_vmladavq_s8): Remove.
13846 (__arm_vmladavq_u16): Remove.
13847 (__arm_vmlsdavxq_s16): Remove.
13848 (__arm_vmlsdavq_s16): Remove.
13849 (__arm_vmladavxq_s16): Remove.
13850 (__arm_vmladavq_s16): Remove.
13851 (__arm_vmladavq_u32): Remove.
13852 (__arm_vmlsdavxq_s32): Remove.
13853 (__arm_vmlsdavq_s32): Remove.
13854 (__arm_vmladavxq_s32): Remove.
13855 (__arm_vmladavq_s32): Remove.
13856 (__arm_vmladavq_p_u8): Remove.
13857 (__arm_vmlsdavxq_p_s8): Remove.
13858 (__arm_vmlsdavq_p_s8): Remove.
13859 (__arm_vmladavxq_p_s8): Remove.
13860 (__arm_vmladavq_p_s8): Remove.
13861 (__arm_vmladavq_p_u16): Remove.
13862 (__arm_vmlsdavxq_p_s16): Remove.
13863 (__arm_vmlsdavq_p_s16): Remove.
13864 (__arm_vmladavxq_p_s16): Remove.
13865 (__arm_vmladavq_p_s16): Remove.
13866 (__arm_vmladavq_p_u32): Remove.
13867 (__arm_vmlsdavxq_p_s32): Remove.
13868 (__arm_vmlsdavq_p_s32): Remove.
13869 (__arm_vmladavxq_p_s32): Remove.
13870 (__arm_vmladavq_p_s32): Remove.
13871 (__arm_vmladavq): Remove.
13872 (__arm_vmlsdavxq): Remove.
13873 (__arm_vmlsdavq): Remove.
13874 (__arm_vmladavxq): Remove.
13875 (__arm_vmladavq_p): Remove.
13876 (__arm_vmlsdavxq_p): Remove.
13877 (__arm_vmlsdavq_p): Remove.
13878 (__arm_vmladavxq_p): Remove.
13879
13880 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13881
13882 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
13883 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
13884 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
13885 vmlsdavax, vmlsdav, vmlsdavx.
13886 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
13887 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
13888 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
13889 VMLSDAVXQ_S.
13890 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
13891 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
13892 (mve_vmlsdavxq_s<mode>): Merge into ...
13893 (@mve_<mve_insn>q_<supf><mode>): ... this.
13894 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
13895 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
13896 ...
13897 (@mve_<mve_insn>q_<supf><mode>): ... this.
13898 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
13899 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
13900 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13901 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
13902 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
13903 ...
13904 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13905
13906 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13907
13908 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
13909 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
13910
13911 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13912
13913 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
13914 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
13915 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
13916 * config/arm/arm_mve.h (vaddlvaq): Remove.
13917 (vaddlvaq_p): Remove.
13918 (vaddlvaq_u32): Remove.
13919 (vaddlvaq_s32): Remove.
13920 (vaddlvaq_p_s32): Remove.
13921 (vaddlvaq_p_u32): Remove.
13922 (__arm_vaddlvaq_u32): Remove.
13923 (__arm_vaddlvaq_s32): Remove.
13924 (__arm_vaddlvaq_p_s32): Remove.
13925 (__arm_vaddlvaq_p_u32): Remove.
13926 (__arm_vaddlvaq): Remove.
13927 (__arm_vaddlvaq_p): Remove.
13928
13929 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13930
13931 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
13932 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
13933
13934 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13935
13936 * config/arm/iterators.md (mve_insn): Add vaddlva.
13937 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
13938 (@mve_<mve_insn>q_<supf>v4si): ... this.
13939 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
13940 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
13941
13942 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
13943
13944 PR target/109807
13945 * config/i386/i386.cc (ix86_widen_mult_cost):
13946 Handle V4HImode and V2SImode.
13947
13948 2023-05-11 Andrew Pinski <apinski@marvell.com>
13949
13950 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
13951 defined by a phi node with more than one uses, allow for the
13952 only uses are in that same defining statement.
13953
13954 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13955
13956 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
13957 vector constants.
13958
13959 2023-05-11 Pan Li <pan2.li@intel.com>
13960
13961 * config/riscv/vector.md: Add comments for simplifying to vmset.
13962
13963 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13964
13965 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
13966 pattern.
13967 (v<optab><mode>3): Add vector shift pattern.
13968 * config/riscv/vector-iterators.md: New iterator.
13969
13970 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13971
13972 * config/riscv/autovec.md: Use renamed functions.
13973 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
13974 (emit_vlmax_reg_op): To this.
13975 (emit_nonvlmax_op): Rename.
13976 (emit_len_op): To this.
13977 (emit_nonvlmax_binop): Rename.
13978 (emit_len_binop): To this.
13979 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
13980 (emit_pred_binop): Remove vlmax_p.
13981 (emit_vlmax_op): Rename.
13982 (emit_vlmax_reg_op): To this.
13983 (emit_nonvlmax_op): Rename.
13984 (emit_len_op): To this.
13985 (emit_nonvlmax_binop): Rename.
13986 (emit_len_binop): To this.
13987 (sew64_scalar_helper): Use renamed functions.
13988 (expand_tuple_move): Use renamed functions.
13989 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
13990 renamed functions.
13991 * config/riscv/vector.md: Use renamed functions.
13992
13993 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13994 Michael Collison <collison@rivosinc.com>
13995
13996 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
13997 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
13998 * config/riscv/riscv-v.cc (emit_pred_op): New function.
13999 (set_expander_dest_and_mask): New function.
14000 (emit_pred_binop): New function.
14001 (emit_nonvlmax_binop): New function.
14002
14003 2023-05-11 Pan Li <pan2.li@intel.com>
14004
14005 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
14006 * gimple-loop-interchange.cc
14007 (tree_loop_interchange::map_inductions_to_loop): Ditto.
14008 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
14009 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
14010 * tree-ssa-loop-manip.cc (create_iv): Ditto.
14011 (tree_transform_and_unroll_loop): Ditto.
14012 (canonicalize_loop_ivs): Ditto.
14013 * tree-ssa-loop-manip.h (create_iv): Ditto.
14014 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
14015 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
14016 Ditto.
14017 (vect_set_loop_condition_normal): Ditto.
14018 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
14019 * tree-vect-stmts.cc (vectorizable_store): Ditto.
14020 (vectorizable_load): Ditto.
14021
14022 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14023
14024 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
14025 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
14026 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
14027 * config/arm/arm_mve.h (vmovlbq): Remove.
14028 (vmovltq): Remove.
14029 (vmovlbq_m): Remove.
14030 (vmovltq_m): Remove.
14031 (vmovlbq_x): Remove.
14032 (vmovltq_x): Remove.
14033 (vmovlbq_s8): Remove.
14034 (vmovlbq_s16): Remove.
14035 (vmovltq_s8): Remove.
14036 (vmovltq_s16): Remove.
14037 (vmovltq_u8): Remove.
14038 (vmovltq_u16): Remove.
14039 (vmovlbq_u8): Remove.
14040 (vmovlbq_u16): Remove.
14041 (vmovlbq_m_s8): Remove.
14042 (vmovltq_m_s8): Remove.
14043 (vmovlbq_m_u8): Remove.
14044 (vmovltq_m_u8): Remove.
14045 (vmovlbq_m_s16): Remove.
14046 (vmovltq_m_s16): Remove.
14047 (vmovlbq_m_u16): Remove.
14048 (vmovltq_m_u16): Remove.
14049 (vmovlbq_x_s8): Remove.
14050 (vmovlbq_x_s16): Remove.
14051 (vmovlbq_x_u8): Remove.
14052 (vmovlbq_x_u16): Remove.
14053 (vmovltq_x_s8): Remove.
14054 (vmovltq_x_s16): Remove.
14055 (vmovltq_x_u8): Remove.
14056 (vmovltq_x_u16): Remove.
14057 (__arm_vmovlbq_s8): Remove.
14058 (__arm_vmovlbq_s16): Remove.
14059 (__arm_vmovltq_s8): Remove.
14060 (__arm_vmovltq_s16): Remove.
14061 (__arm_vmovltq_u8): Remove.
14062 (__arm_vmovltq_u16): Remove.
14063 (__arm_vmovlbq_u8): Remove.
14064 (__arm_vmovlbq_u16): Remove.
14065 (__arm_vmovlbq_m_s8): Remove.
14066 (__arm_vmovltq_m_s8): Remove.
14067 (__arm_vmovlbq_m_u8): Remove.
14068 (__arm_vmovltq_m_u8): Remove.
14069 (__arm_vmovlbq_m_s16): Remove.
14070 (__arm_vmovltq_m_s16): Remove.
14071 (__arm_vmovlbq_m_u16): Remove.
14072 (__arm_vmovltq_m_u16): Remove.
14073 (__arm_vmovlbq_x_s8): Remove.
14074 (__arm_vmovlbq_x_s16): Remove.
14075 (__arm_vmovlbq_x_u8): Remove.
14076 (__arm_vmovlbq_x_u16): Remove.
14077 (__arm_vmovltq_x_s8): Remove.
14078 (__arm_vmovltq_x_s16): Remove.
14079 (__arm_vmovltq_x_u8): Remove.
14080 (__arm_vmovltq_x_u16): Remove.
14081 (__arm_vmovlbq): Remove.
14082 (__arm_vmovltq): Remove.
14083 (__arm_vmovlbq_m): Remove.
14084 (__arm_vmovltq_m): Remove.
14085 (__arm_vmovlbq_x): Remove.
14086 (__arm_vmovltq_x): Remove.
14087
14088 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14089
14090 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
14091 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
14092
14093 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14094
14095 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
14096 (VMOVLBQ, VMOVLTQ): Merge into ...
14097 (VMOVLxQ): ... this.
14098 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
14099 (VMOVLxQ_M): ... this.
14100 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
14101 (mve_vmovlbq_<supf><mode>): Merge into ...
14102 (@mve_<mve_insn>q_<supf><mode>): ... this.
14103 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
14104 into ...
14105 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14106
14107 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14108
14109 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
14110 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
14111 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
14112 * config/arm/arm-mve-builtins-functions.h
14113 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
14114 * config/arm/arm_mve.h (vaddlvq): Remove.
14115 (vaddlvq_p): Remove.
14116 (vaddlvq_s32): Remove.
14117 (vaddlvq_u32): Remove.
14118 (vaddlvq_p_s32): Remove.
14119 (vaddlvq_p_u32): Remove.
14120 (__arm_vaddlvq_s32): Remove.
14121 (__arm_vaddlvq_u32): Remove.
14122 (__arm_vaddlvq_p_s32): Remove.
14123 (__arm_vaddlvq_p_u32): Remove.
14124 (__arm_vaddlvq): Remove.
14125 (__arm_vaddlvq_p): Remove.
14126
14127 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14128
14129 * config/arm/iterators.md (mve_insn): Add vaddlv.
14130 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
14131 (@mve_<mve_insn>q_<supf>v4si): ... this.
14132 (mve_vaddlvq_p_<supf>v4si): Rename into ...
14133 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
14134
14135 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14136
14137 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
14138 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
14139
14140 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14141
14142 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
14143 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
14144 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
14145 * config/arm/arm_mve.h (vaddvaq): Remove.
14146 (vaddvaq_p): Remove.
14147 (vaddvaq_u8): Remove.
14148 (vaddvaq_s8): Remove.
14149 (vaddvaq_u16): Remove.
14150 (vaddvaq_s16): Remove.
14151 (vaddvaq_u32): Remove.
14152 (vaddvaq_s32): Remove.
14153 (vaddvaq_p_u8): Remove.
14154 (vaddvaq_p_s8): Remove.
14155 (vaddvaq_p_u16): Remove.
14156 (vaddvaq_p_s16): Remove.
14157 (vaddvaq_p_u32): Remove.
14158 (vaddvaq_p_s32): Remove.
14159 (__arm_vaddvaq_u8): Remove.
14160 (__arm_vaddvaq_s8): Remove.
14161 (__arm_vaddvaq_u16): Remove.
14162 (__arm_vaddvaq_s16): Remove.
14163 (__arm_vaddvaq_u32): Remove.
14164 (__arm_vaddvaq_s32): Remove.
14165 (__arm_vaddvaq_p_u8): Remove.
14166 (__arm_vaddvaq_p_s8): Remove.
14167 (__arm_vaddvaq_p_u16): Remove.
14168 (__arm_vaddvaq_p_s16): Remove.
14169 (__arm_vaddvaq_p_u32): Remove.
14170 (__arm_vaddvaq_p_s32): Remove.
14171 (__arm_vaddvaq): Remove.
14172 (__arm_vaddvaq_p): Remove.
14173
14174 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14175
14176 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
14177 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
14178
14179 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14180
14181 * config/arm/iterators.md (mve_insn): Add vaddva.
14182 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
14183 (@mve_<mve_insn>q_<supf><mode>): ... this.
14184 (mve_vaddvaq_p_<supf><mode>): Rename into ...
14185 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
14186
14187 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14188
14189 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
14190 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
14191 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
14192 * config/arm/arm_mve.h (vaddvq): Remove.
14193 (vaddvq_p): Remove.
14194 (vaddvq_s8): Remove.
14195 (vaddvq_s16): Remove.
14196 (vaddvq_s32): Remove.
14197 (vaddvq_u8): Remove.
14198 (vaddvq_u16): Remove.
14199 (vaddvq_u32): Remove.
14200 (vaddvq_p_u8): Remove.
14201 (vaddvq_p_s8): Remove.
14202 (vaddvq_p_u16): Remove.
14203 (vaddvq_p_s16): Remove.
14204 (vaddvq_p_u32): Remove.
14205 (vaddvq_p_s32): Remove.
14206 (__arm_vaddvq_s8): Remove.
14207 (__arm_vaddvq_s16): Remove.
14208 (__arm_vaddvq_s32): Remove.
14209 (__arm_vaddvq_u8): Remove.
14210 (__arm_vaddvq_u16): Remove.
14211 (__arm_vaddvq_u32): Remove.
14212 (__arm_vaddvq_p_u8): Remove.
14213 (__arm_vaddvq_p_s8): Remove.
14214 (__arm_vaddvq_p_u16): Remove.
14215 (__arm_vaddvq_p_s16): Remove.
14216 (__arm_vaddvq_p_u32): Remove.
14217 (__arm_vaddvq_p_s32): Remove.
14218 (__arm_vaddvq): Remove.
14219 (__arm_vaddvq_p): Remove.
14220
14221 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14222
14223 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
14224 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
14225
14226 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14227
14228 * config/arm/iterators.md (mve_insn): Add vaddv.
14229 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
14230 (@mve_<mve_insn>q_<supf><mode>): ... this.
14231 (mve_vaddvq_p_<supf><mode>): Rename into ...
14232 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
14233 * config/arm/vec-common.md: Use gen_mve_q instead of
14234 gen_mve_vaddvq.
14235
14236 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14237
14238 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
14239 (vdupq): New.
14240 * config/arm/arm-mve-builtins-base.def (vdupq): New.
14241 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
14242 * config/arm/arm_mve.h (vdupq_n): Remove.
14243 (vdupq_m): Remove.
14244 (vdupq_n_f16): Remove.
14245 (vdupq_n_f32): Remove.
14246 (vdupq_n_s8): Remove.
14247 (vdupq_n_s16): Remove.
14248 (vdupq_n_s32): Remove.
14249 (vdupq_n_u8): Remove.
14250 (vdupq_n_u16): Remove.
14251 (vdupq_n_u32): Remove.
14252 (vdupq_m_n_u8): Remove.
14253 (vdupq_m_n_s8): Remove.
14254 (vdupq_m_n_u16): Remove.
14255 (vdupq_m_n_s16): Remove.
14256 (vdupq_m_n_u32): Remove.
14257 (vdupq_m_n_s32): Remove.
14258 (vdupq_m_n_f16): Remove.
14259 (vdupq_m_n_f32): Remove.
14260 (vdupq_x_n_s8): Remove.
14261 (vdupq_x_n_s16): Remove.
14262 (vdupq_x_n_s32): Remove.
14263 (vdupq_x_n_u8): Remove.
14264 (vdupq_x_n_u16): Remove.
14265 (vdupq_x_n_u32): Remove.
14266 (vdupq_x_n_f16): Remove.
14267 (vdupq_x_n_f32): Remove.
14268 (__arm_vdupq_n_s8): Remove.
14269 (__arm_vdupq_n_s16): Remove.
14270 (__arm_vdupq_n_s32): Remove.
14271 (__arm_vdupq_n_u8): Remove.
14272 (__arm_vdupq_n_u16): Remove.
14273 (__arm_vdupq_n_u32): Remove.
14274 (__arm_vdupq_m_n_u8): Remove.
14275 (__arm_vdupq_m_n_s8): Remove.
14276 (__arm_vdupq_m_n_u16): Remove.
14277 (__arm_vdupq_m_n_s16): Remove.
14278 (__arm_vdupq_m_n_u32): Remove.
14279 (__arm_vdupq_m_n_s32): Remove.
14280 (__arm_vdupq_x_n_s8): Remove.
14281 (__arm_vdupq_x_n_s16): Remove.
14282 (__arm_vdupq_x_n_s32): Remove.
14283 (__arm_vdupq_x_n_u8): Remove.
14284 (__arm_vdupq_x_n_u16): Remove.
14285 (__arm_vdupq_x_n_u32): Remove.
14286 (__arm_vdupq_n_f16): Remove.
14287 (__arm_vdupq_n_f32): Remove.
14288 (__arm_vdupq_m_n_f16): Remove.
14289 (__arm_vdupq_m_n_f32): Remove.
14290 (__arm_vdupq_x_n_f16): Remove.
14291 (__arm_vdupq_x_n_f32): Remove.
14292 (__arm_vdupq_n): Remove.
14293 (__arm_vdupq_m): Remove.
14294
14295 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14296
14297 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
14298 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
14299
14300 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14301
14302 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
14303 (MVE_FP_N_VDUPQ_ONLY): New.
14304 (mve_insn): Add vdupq.
14305 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
14306 (@mve_<mve_insn>q_n_f<mode>): ... this.
14307 (mve_vdupq_n_<supf><mode>): Rename into ...
14308 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14309 (mve_vdupq_m_n_<supf><mode>): Rename into ...
14310 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14311 (mve_vdupq_m_n_f<mode>): Rename into ...
14312 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
14313
14314 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14315
14316 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
14317 New.
14318 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
14319 (vrev64q): New.
14320 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
14321 (vrev64q): New.
14322 * config/arm/arm_mve.h (vrev16q): Remove.
14323 (vrev32q): Remove.
14324 (vrev64q): Remove.
14325 (vrev64q_m): Remove.
14326 (vrev16q_m): Remove.
14327 (vrev32q_m): Remove.
14328 (vrev16q_x): Remove.
14329 (vrev32q_x): Remove.
14330 (vrev64q_x): Remove.
14331 (vrev64q_f16): Remove.
14332 (vrev64q_f32): Remove.
14333 (vrev32q_f16): Remove.
14334 (vrev16q_s8): Remove.
14335 (vrev32q_s8): Remove.
14336 (vrev32q_s16): Remove.
14337 (vrev64q_s8): Remove.
14338 (vrev64q_s16): Remove.
14339 (vrev64q_s32): Remove.
14340 (vrev64q_u8): Remove.
14341 (vrev64q_u16): Remove.
14342 (vrev64q_u32): Remove.
14343 (vrev32q_u8): Remove.
14344 (vrev32q_u16): Remove.
14345 (vrev16q_u8): Remove.
14346 (vrev64q_m_u8): Remove.
14347 (vrev64q_m_s8): Remove.
14348 (vrev64q_m_u16): Remove.
14349 (vrev64q_m_s16): Remove.
14350 (vrev64q_m_u32): Remove.
14351 (vrev64q_m_s32): Remove.
14352 (vrev16q_m_s8): Remove.
14353 (vrev32q_m_f16): Remove.
14354 (vrev16q_m_u8): Remove.
14355 (vrev32q_m_s8): Remove.
14356 (vrev64q_m_f16): Remove.
14357 (vrev32q_m_u8): Remove.
14358 (vrev32q_m_s16): Remove.
14359 (vrev64q_m_f32): Remove.
14360 (vrev32q_m_u16): Remove.
14361 (vrev16q_x_s8): Remove.
14362 (vrev16q_x_u8): Remove.
14363 (vrev32q_x_s8): Remove.
14364 (vrev32q_x_s16): Remove.
14365 (vrev32q_x_u8): Remove.
14366 (vrev32q_x_u16): Remove.
14367 (vrev64q_x_s8): Remove.
14368 (vrev64q_x_s16): Remove.
14369 (vrev64q_x_s32): Remove.
14370 (vrev64q_x_u8): Remove.
14371 (vrev64q_x_u16): Remove.
14372 (vrev64q_x_u32): Remove.
14373 (vrev32q_x_f16): Remove.
14374 (vrev64q_x_f16): Remove.
14375 (vrev64q_x_f32): Remove.
14376 (__arm_vrev16q_s8): Remove.
14377 (__arm_vrev32q_s8): Remove.
14378 (__arm_vrev32q_s16): Remove.
14379 (__arm_vrev64q_s8): Remove.
14380 (__arm_vrev64q_s16): Remove.
14381 (__arm_vrev64q_s32): Remove.
14382 (__arm_vrev64q_u8): Remove.
14383 (__arm_vrev64q_u16): Remove.
14384 (__arm_vrev64q_u32): Remove.
14385 (__arm_vrev32q_u8): Remove.
14386 (__arm_vrev32q_u16): Remove.
14387 (__arm_vrev16q_u8): Remove.
14388 (__arm_vrev64q_m_u8): Remove.
14389 (__arm_vrev64q_m_s8): Remove.
14390 (__arm_vrev64q_m_u16): Remove.
14391 (__arm_vrev64q_m_s16): Remove.
14392 (__arm_vrev64q_m_u32): Remove.
14393 (__arm_vrev64q_m_s32): Remove.
14394 (__arm_vrev16q_m_s8): Remove.
14395 (__arm_vrev16q_m_u8): Remove.
14396 (__arm_vrev32q_m_s8): Remove.
14397 (__arm_vrev32q_m_u8): Remove.
14398 (__arm_vrev32q_m_s16): Remove.
14399 (__arm_vrev32q_m_u16): Remove.
14400 (__arm_vrev16q_x_s8): Remove.
14401 (__arm_vrev16q_x_u8): Remove.
14402 (__arm_vrev32q_x_s8): Remove.
14403 (__arm_vrev32q_x_s16): Remove.
14404 (__arm_vrev32q_x_u8): Remove.
14405 (__arm_vrev32q_x_u16): Remove.
14406 (__arm_vrev64q_x_s8): Remove.
14407 (__arm_vrev64q_x_s16): Remove.
14408 (__arm_vrev64q_x_s32): Remove.
14409 (__arm_vrev64q_x_u8): Remove.
14410 (__arm_vrev64q_x_u16): Remove.
14411 (__arm_vrev64q_x_u32): Remove.
14412 (__arm_vrev64q_f16): Remove.
14413 (__arm_vrev64q_f32): Remove.
14414 (__arm_vrev32q_f16): Remove.
14415 (__arm_vrev32q_m_f16): Remove.
14416 (__arm_vrev64q_m_f16): Remove.
14417 (__arm_vrev64q_m_f32): Remove.
14418 (__arm_vrev32q_x_f16): Remove.
14419 (__arm_vrev64q_x_f16): Remove.
14420 (__arm_vrev64q_x_f32): Remove.
14421 (__arm_vrev16q): Remove.
14422 (__arm_vrev32q): Remove.
14423 (__arm_vrev64q): Remove.
14424 (__arm_vrev64q_m): Remove.
14425 (__arm_vrev16q_m): Remove.
14426 (__arm_vrev32q_m): Remove.
14427 (__arm_vrev16q_x): Remove.
14428 (__arm_vrev32q_x): Remove.
14429 (__arm_vrev64q_x): Remove.
14430
14431 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14432
14433 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
14434 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
14435 (MVE_FP_M_VREV32Q_ONLY): New iterators.
14436 (mve_insn): Add vrev16q, vrev32q, vrev64q.
14437 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
14438 (@mve_<mve_insn>q_f<mode>): ... this
14439 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
14440 (mve_vrev64q_<supf><mode>): Rename into ...
14441 (@mve_<mve_insn>q_<supf><mode>): ... this.
14442 (mve_vrev32q_<supf><mode>): Rename into
14443 @mve_<mve_insn>q_<supf><mode>.
14444 (mve_vrev16q_<supf>v16qi): Rename into
14445 @mve_<mve_insn>q_<supf><mode>.
14446 (mve_vrev64q_m_<supf><mode>): Rename into
14447 @mve_<mve_insn>q_m_<supf><mode>.
14448 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
14449 (mve_vrev32q_m_<supf><mode>): Rename into
14450 @mve_<mve_insn>q_m_<supf><mode>.
14451 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
14452 (mve_vrev16q_m_<supf>v16qi): Rename into
14453 @mve_<mve_insn>q_m_<supf><mode>.
14454
14455 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14456
14457 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
14458 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
14459 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
14460 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
14461 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
14462 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
14463 * config/arm/arm-mve-builtins-functions.h (class
14464 unspec_based_mve_function_exact_insn_vcmp): New.
14465 * config/arm/arm-mve-builtins.cc
14466 (function_instance::has_inactive_argument): Handle vcmp.
14467 * config/arm/arm_mve.h (vcmpneq): Remove.
14468 (vcmphiq): Remove.
14469 (vcmpeqq): Remove.
14470 (vcmpcsq): Remove.
14471 (vcmpltq): Remove.
14472 (vcmpleq): Remove.
14473 (vcmpgtq): Remove.
14474 (vcmpgeq): Remove.
14475 (vcmpneq_m): Remove.
14476 (vcmphiq_m): Remove.
14477 (vcmpeqq_m): Remove.
14478 (vcmpcsq_m): Remove.
14479 (vcmpcsq_m_n): Remove.
14480 (vcmpltq_m): Remove.
14481 (vcmpleq_m): Remove.
14482 (vcmpgtq_m): Remove.
14483 (vcmpgeq_m): Remove.
14484 (vcmpneq_s8): Remove.
14485 (vcmpneq_s16): Remove.
14486 (vcmpneq_s32): Remove.
14487 (vcmpneq_u8): Remove.
14488 (vcmpneq_u16): Remove.
14489 (vcmpneq_u32): Remove.
14490 (vcmpneq_n_u8): Remove.
14491 (vcmphiq_u8): Remove.
14492 (vcmphiq_n_u8): Remove.
14493 (vcmpeqq_u8): Remove.
14494 (vcmpeqq_n_u8): Remove.
14495 (vcmpcsq_u8): Remove.
14496 (vcmpcsq_n_u8): Remove.
14497 (vcmpneq_n_s8): Remove.
14498 (vcmpltq_s8): Remove.
14499 (vcmpltq_n_s8): Remove.
14500 (vcmpleq_s8): Remove.
14501 (vcmpleq_n_s8): Remove.
14502 (vcmpgtq_s8): Remove.
14503 (vcmpgtq_n_s8): Remove.
14504 (vcmpgeq_s8): Remove.
14505 (vcmpgeq_n_s8): Remove.
14506 (vcmpeqq_s8): Remove.
14507 (vcmpeqq_n_s8): Remove.
14508 (vcmpneq_n_u16): Remove.
14509 (vcmphiq_u16): Remove.
14510 (vcmphiq_n_u16): Remove.
14511 (vcmpeqq_u16): Remove.
14512 (vcmpeqq_n_u16): Remove.
14513 (vcmpcsq_u16): Remove.
14514 (vcmpcsq_n_u16): Remove.
14515 (vcmpneq_n_s16): Remove.
14516 (vcmpltq_s16): Remove.
14517 (vcmpltq_n_s16): Remove.
14518 (vcmpleq_s16): Remove.
14519 (vcmpleq_n_s16): Remove.
14520 (vcmpgtq_s16): Remove.
14521 (vcmpgtq_n_s16): Remove.
14522 (vcmpgeq_s16): Remove.
14523 (vcmpgeq_n_s16): Remove.
14524 (vcmpeqq_s16): Remove.
14525 (vcmpeqq_n_s16): Remove.
14526 (vcmpneq_n_u32): Remove.
14527 (vcmphiq_u32): Remove.
14528 (vcmphiq_n_u32): Remove.
14529 (vcmpeqq_u32): Remove.
14530 (vcmpeqq_n_u32): Remove.
14531 (vcmpcsq_u32): Remove.
14532 (vcmpcsq_n_u32): Remove.
14533 (vcmpneq_n_s32): Remove.
14534 (vcmpltq_s32): Remove.
14535 (vcmpltq_n_s32): Remove.
14536 (vcmpleq_s32): Remove.
14537 (vcmpleq_n_s32): Remove.
14538 (vcmpgtq_s32): Remove.
14539 (vcmpgtq_n_s32): Remove.
14540 (vcmpgeq_s32): Remove.
14541 (vcmpgeq_n_s32): Remove.
14542 (vcmpeqq_s32): Remove.
14543 (vcmpeqq_n_s32): Remove.
14544 (vcmpneq_n_f16): Remove.
14545 (vcmpneq_f16): Remove.
14546 (vcmpltq_n_f16): Remove.
14547 (vcmpltq_f16): Remove.
14548 (vcmpleq_n_f16): Remove.
14549 (vcmpleq_f16): Remove.
14550 (vcmpgtq_n_f16): Remove.
14551 (vcmpgtq_f16): Remove.
14552 (vcmpgeq_n_f16): Remove.
14553 (vcmpgeq_f16): Remove.
14554 (vcmpeqq_n_f16): Remove.
14555 (vcmpeqq_f16): Remove.
14556 (vcmpneq_n_f32): Remove.
14557 (vcmpneq_f32): Remove.
14558 (vcmpltq_n_f32): Remove.
14559 (vcmpltq_f32): Remove.
14560 (vcmpleq_n_f32): Remove.
14561 (vcmpleq_f32): Remove.
14562 (vcmpgtq_n_f32): Remove.
14563 (vcmpgtq_f32): Remove.
14564 (vcmpgeq_n_f32): Remove.
14565 (vcmpgeq_f32): Remove.
14566 (vcmpeqq_n_f32): Remove.
14567 (vcmpeqq_f32): Remove.
14568 (vcmpeqq_m_f16): Remove.
14569 (vcmpeqq_m_f32): Remove.
14570 (vcmpneq_m_u8): Remove.
14571 (vcmpneq_m_n_u8): Remove.
14572 (vcmphiq_m_u8): Remove.
14573 (vcmphiq_m_n_u8): Remove.
14574 (vcmpeqq_m_u8): Remove.
14575 (vcmpeqq_m_n_u8): Remove.
14576 (vcmpcsq_m_u8): Remove.
14577 (vcmpcsq_m_n_u8): Remove.
14578 (vcmpneq_m_s8): Remove.
14579 (vcmpneq_m_n_s8): Remove.
14580 (vcmpltq_m_s8): Remove.
14581 (vcmpltq_m_n_s8): Remove.
14582 (vcmpleq_m_s8): Remove.
14583 (vcmpleq_m_n_s8): Remove.
14584 (vcmpgtq_m_s8): Remove.
14585 (vcmpgtq_m_n_s8): Remove.
14586 (vcmpgeq_m_s8): Remove.
14587 (vcmpgeq_m_n_s8): Remove.
14588 (vcmpeqq_m_s8): Remove.
14589 (vcmpeqq_m_n_s8): Remove.
14590 (vcmpneq_m_u16): Remove.
14591 (vcmpneq_m_n_u16): Remove.
14592 (vcmphiq_m_u16): Remove.
14593 (vcmphiq_m_n_u16): Remove.
14594 (vcmpeqq_m_u16): Remove.
14595 (vcmpeqq_m_n_u16): Remove.
14596 (vcmpcsq_m_u16): Remove.
14597 (vcmpcsq_m_n_u16): Remove.
14598 (vcmpneq_m_s16): Remove.
14599 (vcmpneq_m_n_s16): Remove.
14600 (vcmpltq_m_s16): Remove.
14601 (vcmpltq_m_n_s16): Remove.
14602 (vcmpleq_m_s16): Remove.
14603 (vcmpleq_m_n_s16): Remove.
14604 (vcmpgtq_m_s16): Remove.
14605 (vcmpgtq_m_n_s16): Remove.
14606 (vcmpgeq_m_s16): Remove.
14607 (vcmpgeq_m_n_s16): Remove.
14608 (vcmpeqq_m_s16): Remove.
14609 (vcmpeqq_m_n_s16): Remove.
14610 (vcmpneq_m_u32): Remove.
14611 (vcmpneq_m_n_u32): Remove.
14612 (vcmphiq_m_u32): Remove.
14613 (vcmphiq_m_n_u32): Remove.
14614 (vcmpeqq_m_u32): Remove.
14615 (vcmpeqq_m_n_u32): Remove.
14616 (vcmpcsq_m_u32): Remove.
14617 (vcmpcsq_m_n_u32): Remove.
14618 (vcmpneq_m_s32): Remove.
14619 (vcmpneq_m_n_s32): Remove.
14620 (vcmpltq_m_s32): Remove.
14621 (vcmpltq_m_n_s32): Remove.
14622 (vcmpleq_m_s32): Remove.
14623 (vcmpleq_m_n_s32): Remove.
14624 (vcmpgtq_m_s32): Remove.
14625 (vcmpgtq_m_n_s32): Remove.
14626 (vcmpgeq_m_s32): Remove.
14627 (vcmpgeq_m_n_s32): Remove.
14628 (vcmpeqq_m_s32): Remove.
14629 (vcmpeqq_m_n_s32): Remove.
14630 (vcmpeqq_m_n_f16): Remove.
14631 (vcmpgeq_m_f16): Remove.
14632 (vcmpgeq_m_n_f16): Remove.
14633 (vcmpgtq_m_f16): Remove.
14634 (vcmpgtq_m_n_f16): Remove.
14635 (vcmpleq_m_f16): Remove.
14636 (vcmpleq_m_n_f16): Remove.
14637 (vcmpltq_m_f16): Remove.
14638 (vcmpltq_m_n_f16): Remove.
14639 (vcmpneq_m_f16): Remove.
14640 (vcmpneq_m_n_f16): Remove.
14641 (vcmpeqq_m_n_f32): Remove.
14642 (vcmpgeq_m_f32): Remove.
14643 (vcmpgeq_m_n_f32): Remove.
14644 (vcmpgtq_m_f32): Remove.
14645 (vcmpgtq_m_n_f32): Remove.
14646 (vcmpleq_m_f32): Remove.
14647 (vcmpleq_m_n_f32): Remove.
14648 (vcmpltq_m_f32): Remove.
14649 (vcmpltq_m_n_f32): Remove.
14650 (vcmpneq_m_f32): Remove.
14651 (vcmpneq_m_n_f32): Remove.
14652 (__arm_vcmpneq_s8): Remove.
14653 (__arm_vcmpneq_s16): Remove.
14654 (__arm_vcmpneq_s32): Remove.
14655 (__arm_vcmpneq_u8): Remove.
14656 (__arm_vcmpneq_u16): Remove.
14657 (__arm_vcmpneq_u32): Remove.
14658 (__arm_vcmpneq_n_u8): Remove.
14659 (__arm_vcmphiq_u8): Remove.
14660 (__arm_vcmphiq_n_u8): Remove.
14661 (__arm_vcmpeqq_u8): Remove.
14662 (__arm_vcmpeqq_n_u8): Remove.
14663 (__arm_vcmpcsq_u8): Remove.
14664 (__arm_vcmpcsq_n_u8): Remove.
14665 (__arm_vcmpneq_n_s8): Remove.
14666 (__arm_vcmpltq_s8): Remove.
14667 (__arm_vcmpltq_n_s8): Remove.
14668 (__arm_vcmpleq_s8): Remove.
14669 (__arm_vcmpleq_n_s8): Remove.
14670 (__arm_vcmpgtq_s8): Remove.
14671 (__arm_vcmpgtq_n_s8): Remove.
14672 (__arm_vcmpgeq_s8): Remove.
14673 (__arm_vcmpgeq_n_s8): Remove.
14674 (__arm_vcmpeqq_s8): Remove.
14675 (__arm_vcmpeqq_n_s8): Remove.
14676 (__arm_vcmpneq_n_u16): Remove.
14677 (__arm_vcmphiq_u16): Remove.
14678 (__arm_vcmphiq_n_u16): Remove.
14679 (__arm_vcmpeqq_u16): Remove.
14680 (__arm_vcmpeqq_n_u16): Remove.
14681 (__arm_vcmpcsq_u16): Remove.
14682 (__arm_vcmpcsq_n_u16): Remove.
14683 (__arm_vcmpneq_n_s16): Remove.
14684 (__arm_vcmpltq_s16): Remove.
14685 (__arm_vcmpltq_n_s16): Remove.
14686 (__arm_vcmpleq_s16): Remove.
14687 (__arm_vcmpleq_n_s16): Remove.
14688 (__arm_vcmpgtq_s16): Remove.
14689 (__arm_vcmpgtq_n_s16): Remove.
14690 (__arm_vcmpgeq_s16): Remove.
14691 (__arm_vcmpgeq_n_s16): Remove.
14692 (__arm_vcmpeqq_s16): Remove.
14693 (__arm_vcmpeqq_n_s16): Remove.
14694 (__arm_vcmpneq_n_u32): Remove.
14695 (__arm_vcmphiq_u32): Remove.
14696 (__arm_vcmphiq_n_u32): Remove.
14697 (__arm_vcmpeqq_u32): Remove.
14698 (__arm_vcmpeqq_n_u32): Remove.
14699 (__arm_vcmpcsq_u32): Remove.
14700 (__arm_vcmpcsq_n_u32): Remove.
14701 (__arm_vcmpneq_n_s32): Remove.
14702 (__arm_vcmpltq_s32): Remove.
14703 (__arm_vcmpltq_n_s32): Remove.
14704 (__arm_vcmpleq_s32): Remove.
14705 (__arm_vcmpleq_n_s32): Remove.
14706 (__arm_vcmpgtq_s32): Remove.
14707 (__arm_vcmpgtq_n_s32): Remove.
14708 (__arm_vcmpgeq_s32): Remove.
14709 (__arm_vcmpgeq_n_s32): Remove.
14710 (__arm_vcmpeqq_s32): Remove.
14711 (__arm_vcmpeqq_n_s32): Remove.
14712 (__arm_vcmpneq_m_u8): Remove.
14713 (__arm_vcmpneq_m_n_u8): Remove.
14714 (__arm_vcmphiq_m_u8): Remove.
14715 (__arm_vcmphiq_m_n_u8): Remove.
14716 (__arm_vcmpeqq_m_u8): Remove.
14717 (__arm_vcmpeqq_m_n_u8): Remove.
14718 (__arm_vcmpcsq_m_u8): Remove.
14719 (__arm_vcmpcsq_m_n_u8): Remove.
14720 (__arm_vcmpneq_m_s8): Remove.
14721 (__arm_vcmpneq_m_n_s8): Remove.
14722 (__arm_vcmpltq_m_s8): Remove.
14723 (__arm_vcmpltq_m_n_s8): Remove.
14724 (__arm_vcmpleq_m_s8): Remove.
14725 (__arm_vcmpleq_m_n_s8): Remove.
14726 (__arm_vcmpgtq_m_s8): Remove.
14727 (__arm_vcmpgtq_m_n_s8): Remove.
14728 (__arm_vcmpgeq_m_s8): Remove.
14729 (__arm_vcmpgeq_m_n_s8): Remove.
14730 (__arm_vcmpeqq_m_s8): Remove.
14731 (__arm_vcmpeqq_m_n_s8): Remove.
14732 (__arm_vcmpneq_m_u16): Remove.
14733 (__arm_vcmpneq_m_n_u16): Remove.
14734 (__arm_vcmphiq_m_u16): Remove.
14735 (__arm_vcmphiq_m_n_u16): Remove.
14736 (__arm_vcmpeqq_m_u16): Remove.
14737 (__arm_vcmpeqq_m_n_u16): Remove.
14738 (__arm_vcmpcsq_m_u16): Remove.
14739 (__arm_vcmpcsq_m_n_u16): Remove.
14740 (__arm_vcmpneq_m_s16): Remove.
14741 (__arm_vcmpneq_m_n_s16): Remove.
14742 (__arm_vcmpltq_m_s16): Remove.
14743 (__arm_vcmpltq_m_n_s16): Remove.
14744 (__arm_vcmpleq_m_s16): Remove.
14745 (__arm_vcmpleq_m_n_s16): Remove.
14746 (__arm_vcmpgtq_m_s16): Remove.
14747 (__arm_vcmpgtq_m_n_s16): Remove.
14748 (__arm_vcmpgeq_m_s16): Remove.
14749 (__arm_vcmpgeq_m_n_s16): Remove.
14750 (__arm_vcmpeqq_m_s16): Remove.
14751 (__arm_vcmpeqq_m_n_s16): Remove.
14752 (__arm_vcmpneq_m_u32): Remove.
14753 (__arm_vcmpneq_m_n_u32): Remove.
14754 (__arm_vcmphiq_m_u32): Remove.
14755 (__arm_vcmphiq_m_n_u32): Remove.
14756 (__arm_vcmpeqq_m_u32): Remove.
14757 (__arm_vcmpeqq_m_n_u32): Remove.
14758 (__arm_vcmpcsq_m_u32): Remove.
14759 (__arm_vcmpcsq_m_n_u32): Remove.
14760 (__arm_vcmpneq_m_s32): Remove.
14761 (__arm_vcmpneq_m_n_s32): Remove.
14762 (__arm_vcmpltq_m_s32): Remove.
14763 (__arm_vcmpltq_m_n_s32): Remove.
14764 (__arm_vcmpleq_m_s32): Remove.
14765 (__arm_vcmpleq_m_n_s32): Remove.
14766 (__arm_vcmpgtq_m_s32): Remove.
14767 (__arm_vcmpgtq_m_n_s32): Remove.
14768 (__arm_vcmpgeq_m_s32): Remove.
14769 (__arm_vcmpgeq_m_n_s32): Remove.
14770 (__arm_vcmpeqq_m_s32): Remove.
14771 (__arm_vcmpeqq_m_n_s32): Remove.
14772 (__arm_vcmpneq_n_f16): Remove.
14773 (__arm_vcmpneq_f16): Remove.
14774 (__arm_vcmpltq_n_f16): Remove.
14775 (__arm_vcmpltq_f16): Remove.
14776 (__arm_vcmpleq_n_f16): Remove.
14777 (__arm_vcmpleq_f16): Remove.
14778 (__arm_vcmpgtq_n_f16): Remove.
14779 (__arm_vcmpgtq_f16): Remove.
14780 (__arm_vcmpgeq_n_f16): Remove.
14781 (__arm_vcmpgeq_f16): Remove.
14782 (__arm_vcmpeqq_n_f16): Remove.
14783 (__arm_vcmpeqq_f16): Remove.
14784 (__arm_vcmpneq_n_f32): Remove.
14785 (__arm_vcmpneq_f32): Remove.
14786 (__arm_vcmpltq_n_f32): Remove.
14787 (__arm_vcmpltq_f32): Remove.
14788 (__arm_vcmpleq_n_f32): Remove.
14789 (__arm_vcmpleq_f32): Remove.
14790 (__arm_vcmpgtq_n_f32): Remove.
14791 (__arm_vcmpgtq_f32): Remove.
14792 (__arm_vcmpgeq_n_f32): Remove.
14793 (__arm_vcmpgeq_f32): Remove.
14794 (__arm_vcmpeqq_n_f32): Remove.
14795 (__arm_vcmpeqq_f32): Remove.
14796 (__arm_vcmpeqq_m_f16): Remove.
14797 (__arm_vcmpeqq_m_f32): Remove.
14798 (__arm_vcmpeqq_m_n_f16): Remove.
14799 (__arm_vcmpgeq_m_f16): Remove.
14800 (__arm_vcmpgeq_m_n_f16): Remove.
14801 (__arm_vcmpgtq_m_f16): Remove.
14802 (__arm_vcmpgtq_m_n_f16): Remove.
14803 (__arm_vcmpleq_m_f16): Remove.
14804 (__arm_vcmpleq_m_n_f16): Remove.
14805 (__arm_vcmpltq_m_f16): Remove.
14806 (__arm_vcmpltq_m_n_f16): Remove.
14807 (__arm_vcmpneq_m_f16): Remove.
14808 (__arm_vcmpneq_m_n_f16): Remove.
14809 (__arm_vcmpeqq_m_n_f32): Remove.
14810 (__arm_vcmpgeq_m_f32): Remove.
14811 (__arm_vcmpgeq_m_n_f32): Remove.
14812 (__arm_vcmpgtq_m_f32): Remove.
14813 (__arm_vcmpgtq_m_n_f32): Remove.
14814 (__arm_vcmpleq_m_f32): Remove.
14815 (__arm_vcmpleq_m_n_f32): Remove.
14816 (__arm_vcmpltq_m_f32): Remove.
14817 (__arm_vcmpltq_m_n_f32): Remove.
14818 (__arm_vcmpneq_m_f32): Remove.
14819 (__arm_vcmpneq_m_n_f32): Remove.
14820 (__arm_vcmpneq): Remove.
14821 (__arm_vcmphiq): Remove.
14822 (__arm_vcmpeqq): Remove.
14823 (__arm_vcmpcsq): Remove.
14824 (__arm_vcmpltq): Remove.
14825 (__arm_vcmpleq): Remove.
14826 (__arm_vcmpgtq): Remove.
14827 (__arm_vcmpgeq): Remove.
14828 (__arm_vcmpneq_m): Remove.
14829 (__arm_vcmphiq_m): Remove.
14830 (__arm_vcmpeqq_m): Remove.
14831 (__arm_vcmpcsq_m): Remove.
14832 (__arm_vcmpltq_m): Remove.
14833 (__arm_vcmpleq_m): Remove.
14834 (__arm_vcmpgtq_m): Remove.
14835 (__arm_vcmpgeq_m): Remove.
14836
14837 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14838
14839 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
14840 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
14841
14842 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14843
14844 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
14845 (MVE_CMP_M_N_F, mve_cmp_op1): New.
14846 (isu): Add VCMP*
14847 (supf): Likewise.
14848 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
14849 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
14850 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
14851 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
14852 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
14853 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
14854 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
14855 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
14856 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
14857 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
14858 ...
14859 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
14860 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
14861 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
14862 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
14863 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
14864 into ...
14865 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
14866 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
14867 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
14868 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
14869 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
14870
14871 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
14872
14873 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
14874 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
14875 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
14876 vice versa.
14877
14878 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
14879
14880 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
14881 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
14882 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
14883 Simplify parity(rotate(x,y)) as parity(x).
14884
14885 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14886
14887 * config/riscv/autovec.md (@vec_series<mode>): New pattern
14888 * config/riscv/riscv-protos.h (expand_vec_series): New function.
14889 * config/riscv/riscv-v.cc (emit_binop): Ditto.
14890 (emit_index_op): Ditto.
14891 (expand_vec_series): Ditto.
14892 (expand_const_vector): Add series vector handling.
14893 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
14894
14895 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
14896
14897 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
14898 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
14899 (*concat<mode><dwi>3_2): Likewise.
14900 (*concat<mode><dwi>3_3): Likewise.
14901 (*concat<mode><dwi>3_4): Likewise.
14902 (*concat<mode><dwi>3_5): Likewise.
14903 (*concat<mode><dwi>3_6): Likewise.
14904 (*concat<mode><dwi>3_7): Likewise.
14905
14906 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
14907
14908 PR target/92658
14909 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
14910 (<insn>v4qiv4hi2): New expander.
14911 (<insn>v2hiv2si2): Ditto.
14912 (<insn>v2qiv2si2): Ditto.
14913 (<insn>v2qiv2hi2): Ditto.
14914
14915 2023-05-10 Jeff Law <jlaw@ventanamicro>
14916
14917 * config/h8300/constraints.md (Q): Make this a special memory
14918 constraint.
14919 (Zz): Similarly.
14920
14921 2023-05-10 Jakub Jelinek <jakub@redhat.com>
14922
14923 PR fortran/109788
14924 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
14925 if t is void_list_node.
14926
14927 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14928
14929 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
14930 (aarch64_sqmovun<mode>_insn_be): Delete.
14931 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
14932 (aarch64_sqmovun<mode>): Delete expander.
14933
14934 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14935
14936 PR target/99195
14937 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
14938 Rename to...
14939 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
14940 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
14941 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
14942
14943 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14944
14945 PR target/99195
14946 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
14947 Rename to...
14948 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
14949 (aarch64_<sur>qadd<mode>): Rename to...
14950 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
14951
14952 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14953
14954 * config/aarch64/aarch64-simd.md
14955 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
14956 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
14957 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
14958 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
14959
14960 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14961
14962 PR target/99195
14963 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
14964 (aarch64_xtn<mode>_insn_be): Likewise.
14965 (trunc<mode><Vnarrowq>2): Rename to...
14966 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
14967 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
14968 (aarch64_<su>qmovn<mode>): Likewise.
14969 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
14970 (aarch64_<su>qmovn<mode>_insn_le): Delete.
14971 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
14972
14973 2023-05-10 Li Xu <xuli1@eswincomputing.com>
14974
14975 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
14976 intruction replace null avl with (const_int 0).
14977
14978 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14979
14980 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
14981 incorrect codes.
14982
14983 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14984
14985 PR target/109773
14986 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
14987 (source_equal_p): Fix dead loop in vsetvl avl checking.
14988
14989 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
14990
14991 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
14992 of modeadjusted_dccr.
14993
14994 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
14995
14996 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
14997 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
14998 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
14999 * config/arm/arm-mve-builtins.cc
15000 (function_instance::has_inactive_argument): Handle vmaxaq and
15001 vminaq.
15002 * config/arm/arm_mve.h (vminaq): Remove.
15003 (vmaxaq): Remove.
15004 (vminaq_m): Remove.
15005 (vmaxaq_m): Remove.
15006 (vminaq_s8): Remove.
15007 (vmaxaq_s8): Remove.
15008 (vminaq_s16): Remove.
15009 (vmaxaq_s16): Remove.
15010 (vminaq_s32): Remove.
15011 (vmaxaq_s32): Remove.
15012 (vminaq_m_s8): Remove.
15013 (vmaxaq_m_s8): Remove.
15014 (vminaq_m_s16): Remove.
15015 (vmaxaq_m_s16): Remove.
15016 (vminaq_m_s32): Remove.
15017 (vmaxaq_m_s32): Remove.
15018 (__arm_vminaq_s8): Remove.
15019 (__arm_vmaxaq_s8): Remove.
15020 (__arm_vminaq_s16): Remove.
15021 (__arm_vmaxaq_s16): Remove.
15022 (__arm_vminaq_s32): Remove.
15023 (__arm_vmaxaq_s32): Remove.
15024 (__arm_vminaq_m_s8): Remove.
15025 (__arm_vmaxaq_m_s8): Remove.
15026 (__arm_vminaq_m_s16): Remove.
15027 (__arm_vmaxaq_m_s16): Remove.
15028 (__arm_vminaq_m_s32): Remove.
15029 (__arm_vmaxaq_m_s32): Remove.
15030 (__arm_vminaq): Remove.
15031 (__arm_vmaxaq): Remove.
15032 (__arm_vminaq_m): Remove.
15033 (__arm_vmaxaq_m): Remove.
15034
15035 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15036
15037 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
15038 New.
15039 (mve_insn): Add vmaxa, vmina.
15040 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
15041 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
15042 Merge into ...
15043 (@mve_<mve_insn>q_<supf><mode>): ... this.
15044 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
15045 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15046
15047 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15048
15049 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
15050 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
15051
15052 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15053
15054 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
15055 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
15056 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
15057 * config/arm/arm-mve-builtins.cc
15058 (function_instance::has_inactive_argument): Handle vmaxnmaq and
15059 vminnmaq.
15060 * config/arm/arm_mve.h (vminnmaq): Remove.
15061 (vmaxnmaq): Remove.
15062 (vmaxnmaq_m): Remove.
15063 (vminnmaq_m): Remove.
15064 (vminnmaq_f16): Remove.
15065 (vmaxnmaq_f16): Remove.
15066 (vminnmaq_f32): Remove.
15067 (vmaxnmaq_f32): Remove.
15068 (vmaxnmaq_m_f16): Remove.
15069 (vminnmaq_m_f16): Remove.
15070 (vmaxnmaq_m_f32): Remove.
15071 (vminnmaq_m_f32): Remove.
15072 (__arm_vminnmaq_f16): Remove.
15073 (__arm_vmaxnmaq_f16): Remove.
15074 (__arm_vminnmaq_f32): Remove.
15075 (__arm_vmaxnmaq_f32): Remove.
15076 (__arm_vmaxnmaq_m_f16): Remove.
15077 (__arm_vminnmaq_m_f16): Remove.
15078 (__arm_vmaxnmaq_m_f32): Remove.
15079 (__arm_vminnmaq_m_f32): Remove.
15080 (__arm_vminnmaq): Remove.
15081 (__arm_vmaxnmaq): Remove.
15082 (__arm_vmaxnmaq_m): Remove.
15083 (__arm_vminnmaq_m): Remove.
15084
15085 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15086
15087 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
15088 (MVE_VMAXNMA_VMINNMAQ_M): New.
15089 (mve_insn): Add vmaxnma, vminnma.
15090 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
15091 Merge into ...
15092 (@mve_<mve_insn>q_f<mode>): ... this.
15093 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
15094 (@mve_<mve_insn>q_m_f<mode>): ... this.
15095
15096 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15097
15098 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
15099 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
15100 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
15101 (vminnmavq, vminnmvq): New.
15102 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
15103 (vminnmavq, vminnmvq): New.
15104 * config/arm/arm_mve.h (vminnmvq): Remove.
15105 (vminnmavq): Remove.
15106 (vmaxnmvq): Remove.
15107 (vmaxnmavq): Remove.
15108 (vmaxnmavq_p): Remove.
15109 (vmaxnmvq_p): Remove.
15110 (vminnmavq_p): Remove.
15111 (vminnmvq_p): Remove.
15112 (vminnmvq_f16): Remove.
15113 (vminnmavq_f16): Remove.
15114 (vmaxnmvq_f16): Remove.
15115 (vmaxnmavq_f16): Remove.
15116 (vminnmvq_f32): Remove.
15117 (vminnmavq_f32): Remove.
15118 (vmaxnmvq_f32): Remove.
15119 (vmaxnmavq_f32): Remove.
15120 (vmaxnmavq_p_f16): Remove.
15121 (vmaxnmvq_p_f16): Remove.
15122 (vminnmavq_p_f16): Remove.
15123 (vminnmvq_p_f16): Remove.
15124 (vmaxnmavq_p_f32): Remove.
15125 (vmaxnmvq_p_f32): Remove.
15126 (vminnmavq_p_f32): Remove.
15127 (vminnmvq_p_f32): Remove.
15128 (__arm_vminnmvq_f16): Remove.
15129 (__arm_vminnmavq_f16): Remove.
15130 (__arm_vmaxnmvq_f16): Remove.
15131 (__arm_vmaxnmavq_f16): Remove.
15132 (__arm_vminnmvq_f32): Remove.
15133 (__arm_vminnmavq_f32): Remove.
15134 (__arm_vmaxnmvq_f32): Remove.
15135 (__arm_vmaxnmavq_f32): Remove.
15136 (__arm_vmaxnmavq_p_f16): Remove.
15137 (__arm_vmaxnmvq_p_f16): Remove.
15138 (__arm_vminnmavq_p_f16): Remove.
15139 (__arm_vminnmvq_p_f16): Remove.
15140 (__arm_vmaxnmavq_p_f32): Remove.
15141 (__arm_vmaxnmvq_p_f32): Remove.
15142 (__arm_vminnmavq_p_f32): Remove.
15143 (__arm_vminnmvq_p_f32): Remove.
15144 (__arm_vminnmvq): Remove.
15145 (__arm_vminnmavq): Remove.
15146 (__arm_vmaxnmvq): Remove.
15147 (__arm_vmaxnmavq): Remove.
15148 (__arm_vmaxnmavq_p): Remove.
15149 (__arm_vmaxnmvq_p): Remove.
15150 (__arm_vminnmavq_p): Remove.
15151 (__arm_vminnmvq_p): Remove.
15152 (__arm_vmaxnmavq_m): Remove.
15153 (__arm_vmaxnmvq_m): Remove.
15154
15155 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15156
15157 * config/arm/arm-mve-builtins-functions.h
15158 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
15159
15160 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15161
15162 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
15163 (MVE_VMAXNMxV_MINNMxVQ_P): New.
15164 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
15165 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
15166 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
15167 (@mve_<mve_insn>q_f<mode>): ... this.
15168 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
15169 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
15170 (@mve_<mve_insn>q_p_f<mode>): ... this.
15171
15172 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15173
15174 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
15175 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
15176 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
15177 * config/arm/arm_mve.h (vminnmq): Remove.
15178 (vmaxnmq): Remove.
15179 (vmaxnmq_m): Remove.
15180 (vminnmq_m): Remove.
15181 (vminnmq_x): Remove.
15182 (vmaxnmq_x): Remove.
15183 (vminnmq_f16): Remove.
15184 (vmaxnmq_f16): Remove.
15185 (vminnmq_f32): Remove.
15186 (vmaxnmq_f32): Remove.
15187 (vmaxnmq_m_f32): Remove.
15188 (vmaxnmq_m_f16): Remove.
15189 (vminnmq_m_f32): Remove.
15190 (vminnmq_m_f16): Remove.
15191 (vminnmq_x_f16): Remove.
15192 (vminnmq_x_f32): Remove.
15193 (vmaxnmq_x_f16): Remove.
15194 (vmaxnmq_x_f32): Remove.
15195 (__arm_vminnmq_f16): Remove.
15196 (__arm_vmaxnmq_f16): Remove.
15197 (__arm_vminnmq_f32): Remove.
15198 (__arm_vmaxnmq_f32): Remove.
15199 (__arm_vmaxnmq_m_f32): Remove.
15200 (__arm_vmaxnmq_m_f16): Remove.
15201 (__arm_vminnmq_m_f32): Remove.
15202 (__arm_vminnmq_m_f16): Remove.
15203 (__arm_vminnmq_x_f16): Remove.
15204 (__arm_vminnmq_x_f32): Remove.
15205 (__arm_vmaxnmq_x_f16): Remove.
15206 (__arm_vmaxnmq_x_f32): Remove.
15207 (__arm_vminnmq): Remove.
15208 (__arm_vmaxnmq): Remove.
15209 (__arm_vmaxnmq_m): Remove.
15210 (__arm_vminnmq_m): Remove.
15211 (__arm_vminnmq_x): Remove.
15212 (__arm_vmaxnmq_x): Remove.
15213
15214 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15215
15216 * config/arm/iterators.md (MAX_MIN_F): New.
15217 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
15218 (mve_insn): Add vmaxnm, vminnm.
15219 (max_min_f_str): New.
15220 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
15221 Merge into ...
15222 (@mve_<max_min_f_str>q_f<mode>): ... this.
15223 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
15224 (@mve_<mve_insn>q_m_f<mode>): ... this.
15225
15226 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15227
15228 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
15229 (smax<mode>3): Likewise.
15230
15231 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15232
15233 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
15234 (FUNCTION_PRED_P_S): New.
15235 (vmaxavq, vminavq, vmaxvq, vminvq): New.
15236 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
15237 (vminvq): New.
15238 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
15239 (vminvq): New.
15240 * config/arm/arm_mve.h (vminvq): Remove.
15241 (vmaxvq): Remove.
15242 (vminvq_p): Remove.
15243 (vmaxvq_p): Remove.
15244 (vminvq_u8): Remove.
15245 (vmaxvq_u8): Remove.
15246 (vminvq_s8): Remove.
15247 (vmaxvq_s8): Remove.
15248 (vminvq_u16): Remove.
15249 (vmaxvq_u16): Remove.
15250 (vminvq_s16): Remove.
15251 (vmaxvq_s16): Remove.
15252 (vminvq_u32): Remove.
15253 (vmaxvq_u32): Remove.
15254 (vminvq_s32): Remove.
15255 (vmaxvq_s32): Remove.
15256 (vminvq_p_u8): Remove.
15257 (vmaxvq_p_u8): Remove.
15258 (vminvq_p_s8): Remove.
15259 (vmaxvq_p_s8): Remove.
15260 (vminvq_p_u16): Remove.
15261 (vmaxvq_p_u16): Remove.
15262 (vminvq_p_s16): Remove.
15263 (vmaxvq_p_s16): Remove.
15264 (vminvq_p_u32): Remove.
15265 (vmaxvq_p_u32): Remove.
15266 (vminvq_p_s32): Remove.
15267 (vmaxvq_p_s32): Remove.
15268 (__arm_vminvq_u8): Remove.
15269 (__arm_vmaxvq_u8): Remove.
15270 (__arm_vminvq_s8): Remove.
15271 (__arm_vmaxvq_s8): Remove.
15272 (__arm_vminvq_u16): Remove.
15273 (__arm_vmaxvq_u16): Remove.
15274 (__arm_vminvq_s16): Remove.
15275 (__arm_vmaxvq_s16): Remove.
15276 (__arm_vminvq_u32): Remove.
15277 (__arm_vmaxvq_u32): Remove.
15278 (__arm_vminvq_s32): Remove.
15279 (__arm_vmaxvq_s32): Remove.
15280 (__arm_vminvq_p_u8): Remove.
15281 (__arm_vmaxvq_p_u8): Remove.
15282 (__arm_vminvq_p_s8): Remove.
15283 (__arm_vmaxvq_p_s8): Remove.
15284 (__arm_vminvq_p_u16): Remove.
15285 (__arm_vmaxvq_p_u16): Remove.
15286 (__arm_vminvq_p_s16): Remove.
15287 (__arm_vmaxvq_p_s16): Remove.
15288 (__arm_vminvq_p_u32): Remove.
15289 (__arm_vmaxvq_p_u32): Remove.
15290 (__arm_vminvq_p_s32): Remove.
15291 (__arm_vmaxvq_p_s32): Remove.
15292 (__arm_vminvq): Remove.
15293 (__arm_vmaxvq): Remove.
15294 (__arm_vminvq_p): Remove.
15295 (__arm_vmaxvq_p): Remove.
15296 (vminavq): Remove.
15297 (vmaxavq): Remove.
15298 (vminavq_p): Remove.
15299 (vmaxavq_p): Remove.
15300 (vminavq_s8): Remove.
15301 (vmaxavq_s8): Remove.
15302 (vminavq_s16): Remove.
15303 (vmaxavq_s16): Remove.
15304 (vminavq_s32): Remove.
15305 (vmaxavq_s32): Remove.
15306 (vminavq_p_s8): Remove.
15307 (vmaxavq_p_s8): Remove.
15308 (vminavq_p_s16): Remove.
15309 (vmaxavq_p_s16): Remove.
15310 (vminavq_p_s32): Remove.
15311 (vmaxavq_p_s32): Remove.
15312 (__arm_vminavq_s8): Remove.
15313 (__arm_vmaxavq_s8): Remove.
15314 (__arm_vminavq_s16): Remove.
15315 (__arm_vmaxavq_s16): Remove.
15316 (__arm_vminavq_s32): Remove.
15317 (__arm_vmaxavq_s32): Remove.
15318 (__arm_vminavq_p_s8): Remove.
15319 (__arm_vmaxavq_p_s8): Remove.
15320 (__arm_vminavq_p_s16): Remove.
15321 (__arm_vmaxavq_p_s16): Remove.
15322 (__arm_vminavq_p_s32): Remove.
15323 (__arm_vmaxavq_p_s32): Remove.
15324 (__arm_vminavq): Remove.
15325 (__arm_vmaxavq): Remove.
15326 (__arm_vminavq_p): Remove.
15327 (__arm_vmaxavq_p): Remove.
15328
15329 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15330
15331 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
15332 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
15333 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
15334 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
15335 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
15336 (@mve_<mve_insn>q_<supf><mode>): ... this.
15337 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
15338 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
15339 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15340
15341 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15342
15343 * config/arm/arm-mve-builtins-functions.h (class
15344 unspec_mve_function_exact_insn_pred_p): New.
15345
15346 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15347
15348 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
15349 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
15350
15351 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15352
15353 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
15354 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
15355
15356 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
15357
15358 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
15359 Declare.
15360 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
15361 (ADJUST_REG_ALLOC_ORDER): Likewise.
15362 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
15363 function.
15364 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
15365 Upa rather than Upl for unpredicated movprfx alternatives.
15366
15367 2023-05-09 Jeff Law <jlaw@ventanamicro>
15368
15369 * config/h8300/testcompare.md: Add peephole2 which uses a memory
15370 load to set flags, thus eliminating a compare against zero.
15371
15372 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15373
15374 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
15375 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
15376 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
15377 * config/arm/arm_mve.h (vshlltq): Remove.
15378 (vshllbq): Remove.
15379 (vshllbq_m): Remove.
15380 (vshlltq_m): Remove.
15381 (vshllbq_x): Remove.
15382 (vshlltq_x): Remove.
15383 (vshlltq_n_u8): Remove.
15384 (vshllbq_n_u8): Remove.
15385 (vshlltq_n_s8): Remove.
15386 (vshllbq_n_s8): Remove.
15387 (vshlltq_n_u16): Remove.
15388 (vshllbq_n_u16): Remove.
15389 (vshlltq_n_s16): Remove.
15390 (vshllbq_n_s16): Remove.
15391 (vshllbq_m_n_s8): Remove.
15392 (vshllbq_m_n_s16): Remove.
15393 (vshllbq_m_n_u8): Remove.
15394 (vshllbq_m_n_u16): Remove.
15395 (vshlltq_m_n_s8): Remove.
15396 (vshlltq_m_n_s16): Remove.
15397 (vshlltq_m_n_u8): Remove.
15398 (vshlltq_m_n_u16): Remove.
15399 (vshllbq_x_n_s8): Remove.
15400 (vshllbq_x_n_s16): Remove.
15401 (vshllbq_x_n_u8): Remove.
15402 (vshllbq_x_n_u16): Remove.
15403 (vshlltq_x_n_s8): Remove.
15404 (vshlltq_x_n_s16): Remove.
15405 (vshlltq_x_n_u8): Remove.
15406 (vshlltq_x_n_u16): Remove.
15407 (__arm_vshlltq_n_u8): Remove.
15408 (__arm_vshllbq_n_u8): Remove.
15409 (__arm_vshlltq_n_s8): Remove.
15410 (__arm_vshllbq_n_s8): Remove.
15411 (__arm_vshlltq_n_u16): Remove.
15412 (__arm_vshllbq_n_u16): Remove.
15413 (__arm_vshlltq_n_s16): Remove.
15414 (__arm_vshllbq_n_s16): Remove.
15415 (__arm_vshllbq_m_n_s8): Remove.
15416 (__arm_vshllbq_m_n_s16): Remove.
15417 (__arm_vshllbq_m_n_u8): Remove.
15418 (__arm_vshllbq_m_n_u16): Remove.
15419 (__arm_vshlltq_m_n_s8): Remove.
15420 (__arm_vshlltq_m_n_s16): Remove.
15421 (__arm_vshlltq_m_n_u8): Remove.
15422 (__arm_vshlltq_m_n_u16): Remove.
15423 (__arm_vshllbq_x_n_s8): Remove.
15424 (__arm_vshllbq_x_n_s16): Remove.
15425 (__arm_vshllbq_x_n_u8): Remove.
15426 (__arm_vshllbq_x_n_u16): Remove.
15427 (__arm_vshlltq_x_n_s8): Remove.
15428 (__arm_vshlltq_x_n_s16): Remove.
15429 (__arm_vshlltq_x_n_u8): Remove.
15430 (__arm_vshlltq_x_n_u16): Remove.
15431 (__arm_vshlltq): Remove.
15432 (__arm_vshllbq): Remove.
15433 (__arm_vshllbq_m): Remove.
15434 (__arm_vshlltq_m): Remove.
15435 (__arm_vshllbq_x): Remove.
15436 (__arm_vshlltq_x): Remove.
15437
15438 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15439
15440 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
15441 (VSHLLBQ_N, VSHLLTQ_N): Remove.
15442 (VSHLLxQ_N): New.
15443 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
15444 (VSHLLxQ_M_N): New.
15445 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
15446 (mve_vshlltq_n_<supf><mode>): Merge into ...
15447 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15448 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
15449 Merge into ...
15450 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15451
15452 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15453
15454 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
15455 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
15456
15457 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15458
15459 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
15460 (vqmovntq, vqmovunbq, vqmovuntq): New.
15461 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
15462 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
15463 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
15464 (vqmovntq, vqmovunbq, vqmovuntq): New.
15465 * config/arm/arm-mve-builtins.cc
15466 (function_instance::has_inactive_argument): Handle vmovnbq,
15467 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
15468 * config/arm/arm_mve.h (vqmovntq): Remove.
15469 (vqmovnbq): Remove.
15470 (vqmovnbq_m): Remove.
15471 (vqmovntq_m): Remove.
15472 (vqmovntq_u16): Remove.
15473 (vqmovnbq_u16): Remove.
15474 (vqmovntq_s16): Remove.
15475 (vqmovnbq_s16): Remove.
15476 (vqmovntq_u32): Remove.
15477 (vqmovnbq_u32): Remove.
15478 (vqmovntq_s32): Remove.
15479 (vqmovnbq_s32): Remove.
15480 (vqmovnbq_m_s16): Remove.
15481 (vqmovntq_m_s16): Remove.
15482 (vqmovnbq_m_u16): Remove.
15483 (vqmovntq_m_u16): Remove.
15484 (vqmovnbq_m_s32): Remove.
15485 (vqmovntq_m_s32): Remove.
15486 (vqmovnbq_m_u32): Remove.
15487 (vqmovntq_m_u32): Remove.
15488 (__arm_vqmovntq_u16): Remove.
15489 (__arm_vqmovnbq_u16): Remove.
15490 (__arm_vqmovntq_s16): Remove.
15491 (__arm_vqmovnbq_s16): Remove.
15492 (__arm_vqmovntq_u32): Remove.
15493 (__arm_vqmovnbq_u32): Remove.
15494 (__arm_vqmovntq_s32): Remove.
15495 (__arm_vqmovnbq_s32): Remove.
15496 (__arm_vqmovnbq_m_s16): Remove.
15497 (__arm_vqmovntq_m_s16): Remove.
15498 (__arm_vqmovnbq_m_u16): Remove.
15499 (__arm_vqmovntq_m_u16): Remove.
15500 (__arm_vqmovnbq_m_s32): Remove.
15501 (__arm_vqmovntq_m_s32): Remove.
15502 (__arm_vqmovnbq_m_u32): Remove.
15503 (__arm_vqmovntq_m_u32): Remove.
15504 (__arm_vqmovntq): Remove.
15505 (__arm_vqmovnbq): Remove.
15506 (__arm_vqmovnbq_m): Remove.
15507 (__arm_vqmovntq_m): Remove.
15508 (vmovntq): Remove.
15509 (vmovnbq): Remove.
15510 (vmovnbq_m): Remove.
15511 (vmovntq_m): Remove.
15512 (vmovntq_u16): Remove.
15513 (vmovnbq_u16): Remove.
15514 (vmovntq_s16): Remove.
15515 (vmovnbq_s16): Remove.
15516 (vmovntq_u32): Remove.
15517 (vmovnbq_u32): Remove.
15518 (vmovntq_s32): Remove.
15519 (vmovnbq_s32): Remove.
15520 (vmovnbq_m_s16): Remove.
15521 (vmovntq_m_s16): Remove.
15522 (vmovnbq_m_u16): Remove.
15523 (vmovntq_m_u16): Remove.
15524 (vmovnbq_m_s32): Remove.
15525 (vmovntq_m_s32): Remove.
15526 (vmovnbq_m_u32): Remove.
15527 (vmovntq_m_u32): Remove.
15528 (__arm_vmovntq_u16): Remove.
15529 (__arm_vmovnbq_u16): Remove.
15530 (__arm_vmovntq_s16): Remove.
15531 (__arm_vmovnbq_s16): Remove.
15532 (__arm_vmovntq_u32): Remove.
15533 (__arm_vmovnbq_u32): Remove.
15534 (__arm_vmovntq_s32): Remove.
15535 (__arm_vmovnbq_s32): Remove.
15536 (__arm_vmovnbq_m_s16): Remove.
15537 (__arm_vmovntq_m_s16): Remove.
15538 (__arm_vmovnbq_m_u16): Remove.
15539 (__arm_vmovntq_m_u16): Remove.
15540 (__arm_vmovnbq_m_s32): Remove.
15541 (__arm_vmovntq_m_s32): Remove.
15542 (__arm_vmovnbq_m_u32): Remove.
15543 (__arm_vmovntq_m_u32): Remove.
15544 (__arm_vmovntq): Remove.
15545 (__arm_vmovnbq): Remove.
15546 (__arm_vmovnbq_m): Remove.
15547 (__arm_vmovntq_m): Remove.
15548 (vqmovuntq): Remove.
15549 (vqmovunbq): Remove.
15550 (vqmovunbq_m): Remove.
15551 (vqmovuntq_m): Remove.
15552 (vqmovuntq_s16): Remove.
15553 (vqmovunbq_s16): Remove.
15554 (vqmovuntq_s32): Remove.
15555 (vqmovunbq_s32): Remove.
15556 (vqmovunbq_m_s16): Remove.
15557 (vqmovuntq_m_s16): Remove.
15558 (vqmovunbq_m_s32): Remove.
15559 (vqmovuntq_m_s32): Remove.
15560 (__arm_vqmovuntq_s16): Remove.
15561 (__arm_vqmovunbq_s16): Remove.
15562 (__arm_vqmovuntq_s32): Remove.
15563 (__arm_vqmovunbq_s32): Remove.
15564 (__arm_vqmovunbq_m_s16): Remove.
15565 (__arm_vqmovuntq_m_s16): Remove.
15566 (__arm_vqmovunbq_m_s32): Remove.
15567 (__arm_vqmovuntq_m_s32): Remove.
15568 (__arm_vqmovuntq): Remove.
15569 (__arm_vqmovunbq): Remove.
15570 (__arm_vqmovunbq_m): Remove.
15571 (__arm_vqmovuntq_m): Remove.
15572
15573 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15574
15575 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
15576 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
15577 vqmovunt.
15578 (isu): Likewise.
15579 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
15580 VQMOVUNTQ_S.
15581 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
15582 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
15583 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
15584 (mve_vqmovuntq_s<mode>): Merge into ...
15585 (@mve_<mve_insn>q_<supf><mode>): ... this.
15586 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
15587 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
15588 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
15589 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15590
15591 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15592
15593 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
15594 (binary_move_narrow_unsigned): New.
15595 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
15596 (binary_move_narrow_unsigned): New.
15597
15598 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15599
15600 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
15601 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
15602 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
15603 (vrndpq, vrndq, vrndxq): New.
15604 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
15605 (vrndpq, vrndq, vrndxq): New.
15606 * config/arm/arm_mve.h (vrndxq): Remove.
15607 (vrndq): Remove.
15608 (vrndpq): Remove.
15609 (vrndnq): Remove.
15610 (vrndmq): Remove.
15611 (vrndaq): Remove.
15612 (vrndaq_m): Remove.
15613 (vrndmq_m): Remove.
15614 (vrndnq_m): Remove.
15615 (vrndpq_m): Remove.
15616 (vrndq_m): Remove.
15617 (vrndxq_m): Remove.
15618 (vrndq_x): Remove.
15619 (vrndnq_x): Remove.
15620 (vrndmq_x): Remove.
15621 (vrndpq_x): Remove.
15622 (vrndaq_x): Remove.
15623 (vrndxq_x): Remove.
15624 (vrndxq_f16): Remove.
15625 (vrndxq_f32): Remove.
15626 (vrndq_f16): Remove.
15627 (vrndq_f32): Remove.
15628 (vrndpq_f16): Remove.
15629 (vrndpq_f32): Remove.
15630 (vrndnq_f16): Remove.
15631 (vrndnq_f32): Remove.
15632 (vrndmq_f16): Remove.
15633 (vrndmq_f32): Remove.
15634 (vrndaq_f16): Remove.
15635 (vrndaq_f32): Remove.
15636 (vrndaq_m_f16): Remove.
15637 (vrndmq_m_f16): Remove.
15638 (vrndnq_m_f16): Remove.
15639 (vrndpq_m_f16): Remove.
15640 (vrndq_m_f16): Remove.
15641 (vrndxq_m_f16): Remove.
15642 (vrndaq_m_f32): Remove.
15643 (vrndmq_m_f32): Remove.
15644 (vrndnq_m_f32): Remove.
15645 (vrndpq_m_f32): Remove.
15646 (vrndq_m_f32): Remove.
15647 (vrndxq_m_f32): Remove.
15648 (vrndq_x_f16): Remove.
15649 (vrndq_x_f32): Remove.
15650 (vrndnq_x_f16): Remove.
15651 (vrndnq_x_f32): Remove.
15652 (vrndmq_x_f16): Remove.
15653 (vrndmq_x_f32): Remove.
15654 (vrndpq_x_f16): Remove.
15655 (vrndpq_x_f32): Remove.
15656 (vrndaq_x_f16): Remove.
15657 (vrndaq_x_f32): Remove.
15658 (vrndxq_x_f16): Remove.
15659 (vrndxq_x_f32): Remove.
15660 (__arm_vrndxq_f16): Remove.
15661 (__arm_vrndxq_f32): Remove.
15662 (__arm_vrndq_f16): Remove.
15663 (__arm_vrndq_f32): Remove.
15664 (__arm_vrndpq_f16): Remove.
15665 (__arm_vrndpq_f32): Remove.
15666 (__arm_vrndnq_f16): Remove.
15667 (__arm_vrndnq_f32): Remove.
15668 (__arm_vrndmq_f16): Remove.
15669 (__arm_vrndmq_f32): Remove.
15670 (__arm_vrndaq_f16): Remove.
15671 (__arm_vrndaq_f32): Remove.
15672 (__arm_vrndaq_m_f16): Remove.
15673 (__arm_vrndmq_m_f16): Remove.
15674 (__arm_vrndnq_m_f16): Remove.
15675 (__arm_vrndpq_m_f16): Remove.
15676 (__arm_vrndq_m_f16): Remove.
15677 (__arm_vrndxq_m_f16): Remove.
15678 (__arm_vrndaq_m_f32): Remove.
15679 (__arm_vrndmq_m_f32): Remove.
15680 (__arm_vrndnq_m_f32): Remove.
15681 (__arm_vrndpq_m_f32): Remove.
15682 (__arm_vrndq_m_f32): Remove.
15683 (__arm_vrndxq_m_f32): Remove.
15684 (__arm_vrndq_x_f16): Remove.
15685 (__arm_vrndq_x_f32): Remove.
15686 (__arm_vrndnq_x_f16): Remove.
15687 (__arm_vrndnq_x_f32): Remove.
15688 (__arm_vrndmq_x_f16): Remove.
15689 (__arm_vrndmq_x_f32): Remove.
15690 (__arm_vrndpq_x_f16): Remove.
15691 (__arm_vrndpq_x_f32): Remove.
15692 (__arm_vrndaq_x_f16): Remove.
15693 (__arm_vrndaq_x_f32): Remove.
15694 (__arm_vrndxq_x_f16): Remove.
15695 (__arm_vrndxq_x_f32): Remove.
15696 (__arm_vrndxq): Remove.
15697 (__arm_vrndq): Remove.
15698 (__arm_vrndpq): Remove.
15699 (__arm_vrndnq): Remove.
15700 (__arm_vrndmq): Remove.
15701 (__arm_vrndaq): Remove.
15702 (__arm_vrndaq_m): Remove.
15703 (__arm_vrndmq_m): Remove.
15704 (__arm_vrndnq_m): Remove.
15705 (__arm_vrndpq_m): Remove.
15706 (__arm_vrndq_m): Remove.
15707 (__arm_vrndxq_m): Remove.
15708 (__arm_vrndq_x): Remove.
15709 (__arm_vrndnq_x): Remove.
15710 (__arm_vrndmq_x): Remove.
15711 (__arm_vrndpq_x): Remove.
15712 (__arm_vrndaq_x): Remove.
15713 (__arm_vrndxq_x): Remove.
15714
15715 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15716
15717 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
15718 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
15719 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
15720 (vclzq, vqabsq, vqnegq): New.
15721 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
15722 (vqabsq, vqnegq): New.
15723 * config/arm/arm_mve.h (vabsq): Remove.
15724 (vabsq_m): Remove.
15725 (vabsq_x): Remove.
15726 (vabsq_f16): Remove.
15727 (vabsq_f32): Remove.
15728 (vabsq_s8): Remove.
15729 (vabsq_s16): Remove.
15730 (vabsq_s32): Remove.
15731 (vabsq_m_s8): Remove.
15732 (vabsq_m_s16): Remove.
15733 (vabsq_m_s32): Remove.
15734 (vabsq_m_f16): Remove.
15735 (vabsq_m_f32): Remove.
15736 (vabsq_x_s8): Remove.
15737 (vabsq_x_s16): Remove.
15738 (vabsq_x_s32): Remove.
15739 (vabsq_x_f16): Remove.
15740 (vabsq_x_f32): Remove.
15741 (__arm_vabsq_s8): Remove.
15742 (__arm_vabsq_s16): Remove.
15743 (__arm_vabsq_s32): Remove.
15744 (__arm_vabsq_m_s8): Remove.
15745 (__arm_vabsq_m_s16): Remove.
15746 (__arm_vabsq_m_s32): Remove.
15747 (__arm_vabsq_x_s8): Remove.
15748 (__arm_vabsq_x_s16): Remove.
15749 (__arm_vabsq_x_s32): Remove.
15750 (__arm_vabsq_f16): Remove.
15751 (__arm_vabsq_f32): Remove.
15752 (__arm_vabsq_m_f16): Remove.
15753 (__arm_vabsq_m_f32): Remove.
15754 (__arm_vabsq_x_f16): Remove.
15755 (__arm_vabsq_x_f32): Remove.
15756 (__arm_vabsq): Remove.
15757 (__arm_vabsq_m): Remove.
15758 (__arm_vabsq_x): Remove.
15759 (vnegq): Remove.
15760 (vnegq_m): Remove.
15761 (vnegq_x): Remove.
15762 (vnegq_f16): Remove.
15763 (vnegq_f32): Remove.
15764 (vnegq_s8): Remove.
15765 (vnegq_s16): Remove.
15766 (vnegq_s32): Remove.
15767 (vnegq_m_s8): Remove.
15768 (vnegq_m_s16): Remove.
15769 (vnegq_m_s32): Remove.
15770 (vnegq_m_f16): Remove.
15771 (vnegq_m_f32): Remove.
15772 (vnegq_x_s8): Remove.
15773 (vnegq_x_s16): Remove.
15774 (vnegq_x_s32): Remove.
15775 (vnegq_x_f16): Remove.
15776 (vnegq_x_f32): Remove.
15777 (__arm_vnegq_s8): Remove.
15778 (__arm_vnegq_s16): Remove.
15779 (__arm_vnegq_s32): Remove.
15780 (__arm_vnegq_m_s8): Remove.
15781 (__arm_vnegq_m_s16): Remove.
15782 (__arm_vnegq_m_s32): Remove.
15783 (__arm_vnegq_x_s8): Remove.
15784 (__arm_vnegq_x_s16): Remove.
15785 (__arm_vnegq_x_s32): Remove.
15786 (__arm_vnegq_f16): Remove.
15787 (__arm_vnegq_f32): Remove.
15788 (__arm_vnegq_m_f16): Remove.
15789 (__arm_vnegq_m_f32): Remove.
15790 (__arm_vnegq_x_f16): Remove.
15791 (__arm_vnegq_x_f32): Remove.
15792 (__arm_vnegq): Remove.
15793 (__arm_vnegq_m): Remove.
15794 (__arm_vnegq_x): Remove.
15795 (vclsq): Remove.
15796 (vclsq_m): Remove.
15797 (vclsq_x): Remove.
15798 (vclsq_s8): Remove.
15799 (vclsq_s16): Remove.
15800 (vclsq_s32): Remove.
15801 (vclsq_m_s8): Remove.
15802 (vclsq_m_s16): Remove.
15803 (vclsq_m_s32): Remove.
15804 (vclsq_x_s8): Remove.
15805 (vclsq_x_s16): Remove.
15806 (vclsq_x_s32): Remove.
15807 (__arm_vclsq_s8): Remove.
15808 (__arm_vclsq_s16): Remove.
15809 (__arm_vclsq_s32): Remove.
15810 (__arm_vclsq_m_s8): Remove.
15811 (__arm_vclsq_m_s16): Remove.
15812 (__arm_vclsq_m_s32): Remove.
15813 (__arm_vclsq_x_s8): Remove.
15814 (__arm_vclsq_x_s16): Remove.
15815 (__arm_vclsq_x_s32): Remove.
15816 (__arm_vclsq): Remove.
15817 (__arm_vclsq_m): Remove.
15818 (__arm_vclsq_x): Remove.
15819 (vclzq): Remove.
15820 (vclzq_m): Remove.
15821 (vclzq_x): Remove.
15822 (vclzq_s8): Remove.
15823 (vclzq_s16): Remove.
15824 (vclzq_s32): Remove.
15825 (vclzq_u8): Remove.
15826 (vclzq_u16): Remove.
15827 (vclzq_u32): Remove.
15828 (vclzq_m_u8): Remove.
15829 (vclzq_m_s8): Remove.
15830 (vclzq_m_u16): Remove.
15831 (vclzq_m_s16): Remove.
15832 (vclzq_m_u32): Remove.
15833 (vclzq_m_s32): Remove.
15834 (vclzq_x_s8): Remove.
15835 (vclzq_x_s16): Remove.
15836 (vclzq_x_s32): Remove.
15837 (vclzq_x_u8): Remove.
15838 (vclzq_x_u16): Remove.
15839 (vclzq_x_u32): Remove.
15840 (__arm_vclzq_s8): Remove.
15841 (__arm_vclzq_s16): Remove.
15842 (__arm_vclzq_s32): Remove.
15843 (__arm_vclzq_u8): Remove.
15844 (__arm_vclzq_u16): Remove.
15845 (__arm_vclzq_u32): Remove.
15846 (__arm_vclzq_m_u8): Remove.
15847 (__arm_vclzq_m_s8): Remove.
15848 (__arm_vclzq_m_u16): Remove.
15849 (__arm_vclzq_m_s16): Remove.
15850 (__arm_vclzq_m_u32): Remove.
15851 (__arm_vclzq_m_s32): Remove.
15852 (__arm_vclzq_x_s8): Remove.
15853 (__arm_vclzq_x_s16): Remove.
15854 (__arm_vclzq_x_s32): Remove.
15855 (__arm_vclzq_x_u8): Remove.
15856 (__arm_vclzq_x_u16): Remove.
15857 (__arm_vclzq_x_u32): Remove.
15858 (__arm_vclzq): Remove.
15859 (__arm_vclzq_m): Remove.
15860 (__arm_vclzq_x): Remove.
15861 (vqabsq): Remove.
15862 (vqnegq): Remove.
15863 (vqnegq_m): Remove.
15864 (vqabsq_m): Remove.
15865 (vqabsq_s8): Remove.
15866 (vqabsq_s16): Remove.
15867 (vqabsq_s32): Remove.
15868 (vqnegq_s8): Remove.
15869 (vqnegq_s16): Remove.
15870 (vqnegq_s32): Remove.
15871 (vqnegq_m_s8): Remove.
15872 (vqabsq_m_s8): Remove.
15873 (vqnegq_m_s16): Remove.
15874 (vqabsq_m_s16): Remove.
15875 (vqnegq_m_s32): Remove.
15876 (vqabsq_m_s32): Remove.
15877 (__arm_vqabsq_s8): Remove.
15878 (__arm_vqabsq_s16): Remove.
15879 (__arm_vqabsq_s32): Remove.
15880 (__arm_vqnegq_s8): Remove.
15881 (__arm_vqnegq_s16): Remove.
15882 (__arm_vqnegq_s32): Remove.
15883 (__arm_vqnegq_m_s8): Remove.
15884 (__arm_vqabsq_m_s8): Remove.
15885 (__arm_vqnegq_m_s16): Remove.
15886 (__arm_vqabsq_m_s16): Remove.
15887 (__arm_vqnegq_m_s32): Remove.
15888 (__arm_vqabsq_m_s32): Remove.
15889 (__arm_vqabsq): Remove.
15890 (__arm_vqnegq): Remove.
15891 (__arm_vqnegq_m): Remove.
15892 (__arm_vqabsq_m): Remove.
15893
15894 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15895
15896 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
15897 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
15898 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
15899 vrndm, vrndn, vrndp, vrnd, vrndx.
15900 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
15901 VQABSQ_M_S, VQNEGQ_M_S.
15902 (mve_mnemo): New.
15903 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
15904 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
15905 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
15906 (@mve_<mve_insn>q_f<mode>): ... this.
15907 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
15908 (mve_v<absneg_str>q_f<mode>): ... this.
15909 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
15910 (mve_v<absneg_str>q_s<mode>): ... this.
15911 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
15912 (@mve_<mve_insn>q_<supf><mode>): ... this.
15913 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
15914 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
15915 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
15916 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15917 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
15918 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
15919 (mve_vrndxq_m_f<mode>): Merge into ...
15920 (@mve_<mve_insn>q_m_f<mode>): ... this.
15921
15922 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15923
15924 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
15925 * config/arm/arm-mve-builtins-shapes.h (unary): New.
15926
15927 2023-05-09 Jakub Jelinek <jakub@redhat.com>
15928
15929 * mux-utils.h: Fix comment typo, avoides -> avoids.
15930
15931 2023-05-09 Jakub Jelinek <jakub@redhat.com>
15932
15933 PR tree-optimization/109778
15934 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
15935 wi::zext (x, width) rather than x if width != precision, rather
15936 than using wi::zext (right, width) after the shift.
15937 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
15938 of wi::lrotate or wi::rrotate.
15939
15940 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
15941
15942 * genmatch.cc (get_out_file): Make static and rename to ...
15943 (choose_output): ... this. Reimplement. Update all uses ...
15944 (decision_tree::gen): ... here and ...
15945 (main): ... here.
15946
15947 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
15948
15949 * genmatch.cc (showUsage): Reimplement as ...
15950 (usage): ...this. Adjust all uses.
15951 (main): Print usage when no arguments. Add missing 'return 1'.
15952
15953 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
15954
15955 * genmatch.cc (header_file): Make static.
15956 (emit_func): Rename to...
15957 (fp_decl): ... this. Adjust all uses.
15958 (fp_decl_done): New function. Use it...
15959 (decision_tree::gen): ... here and...
15960 (write_predicate): ... here.
15961 (main): Adjust.
15962
15963 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
15964
15965 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
15966 earlyclobbers.
15967
15968 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
15969 Uros Bizjak <ubizjak@gmail.com>
15970
15971 * config/i386/i386.md (any_or_plus): Move definition earlier.
15972 (*insvti_highpart_1): New define_insn_and_split to overwrite
15973 (insv) the highpart of a TImode register/memory.
15974
15975 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
15976
15977 * auto-profile.cc (auto_profile): Check todo from early_inline
15978 to see if cleanup_tree_vfg needs to be called.
15979 (early_inline): Return todo from early_inliner.
15980
15981 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
15982
15983 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
15984 New.
15985 (pass_vsetvl::get_block_info): New.
15986 (pass_vsetvl::update_vector_info): New.
15987 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
15988 (pass_vsetvl::compute_local_backward_infos): Ditto.
15989 (pass_vsetvl::transfer_before): Ditto.
15990 (pass_vsetvl::transfer_after): Ditto.
15991 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
15992 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
15993 (pass_vsetvl::cleanup_insns): Ditto.
15994 (pass_vsetvl::compute_local_backward_infos): Use
15995 update_vector_info.
15996
15997 2023-05-08 Jeff Law <jlaw@ventanamicro>
15998
15999 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
16000
16001 2023-05-08 Richard Biener <rguenther@suse.de>
16002 Michael Meissner <meissner@linux.ibm.com>
16003
16004 PR middle-end/108623
16005 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
16006 Align bit fields > 1 bit to at least an 8-bit boundary.
16007
16008 2023-05-08 Andrew Pinski <apinski@marvell.com>
16009
16010 PR tree-optimization/109424
16011 PR tree-optimization/59424
16012 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
16013 (factor_out_conditional_operation): This and add support for all unary
16014 operations.
16015 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
16016 to call factor_out_conditional_operation instead.
16017
16018 2023-05-08 Andrew Pinski <apinski@marvell.com>
16019
16020 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
16021 over factor_out_conditional_conversion.
16022
16023 2023-05-08 Andrew Pinski <apinski@marvell.com>
16024
16025 PR tree-optimization/49959
16026 PR tree-optimization/103771
16027 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
16028 Diamond shapped bb form for factor_out_conditional_conversion.
16029
16030 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16031
16032 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
16033 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
16034 (riscv_vector_get_mask_mode): Ditto.
16035 (get_mask_policy_no_pred): Ditto.
16036 (get_tail_policy_no_pred): Ditto.
16037 (get_mask_mode): New function.
16038 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
16039 (get_tail_policy_no_pred): Ditto.
16040 (riscv_vector_mask_mode_p): Ditto.
16041 (riscv_vector_get_mask_mode): Ditto.
16042 (get_mask_mode): New function.
16043 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
16044 global extern.
16045 (get_tail_policy_for_pred): Ditto.
16046 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
16047 (get_mask_policy_for_pred): Ditto
16048 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
16049
16050 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
16051
16052 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
16053 (riscv_select_multilib): New.
16054 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
16055 also handle select_by_abi.
16056 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
16057 to select_by_abi_arch_cmodel from 1.
16058 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
16059 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
16060
16061 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
16062
16063 * Makefile.in: (gimple-match-head.o-warn): Remove.
16064 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
16065 gimple-match-exports.cc.
16066 (gimple-match-auto.h): Only depend on s-gimple-match.
16067 (generic-match-auto.h): Likewise.
16068
16069 2023-05-08 Andrew Pinski <apinski@marvell.com>
16070
16071 PR tree-optimization/109691
16072 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
16073 argument.
16074 If the removed statement can throw, have need_eh_cleanup
16075 include the bb of that statement.
16076 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
16077 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
16078 num_dce.
16079 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
16080 Initialize dceworklist instead of stmts_to_remove.
16081 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
16082 Destore dceworklist instead of stmts_to_remove.
16083 (substitute_and_fold_dom_walker::before_dom_children):
16084 Set dceworklist instead of adding to stmts_to_remove.
16085 (substitute_and_fold_engine::substitute_and_fold):
16086 Call simple_dce_from_worklist instead of poping
16087 from the list.
16088 Don't update the stat on removal statements.
16089
16090 2023-05-07 Andrew Pinski <apinski@marvell.com>
16091
16092 PR target/109762
16093 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
16094 Change argument type to aarch64_feature_flags.
16095 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
16096 constructor argument type to aarch64_feature_flags.
16097 Change m_old_asm_isa_flags to be aarch64_feature_flags.
16098
16099 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
16100
16101 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
16102 more parallel code if can_create_pseudo_p.
16103
16104 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
16105
16106 PR target/43644
16107 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
16108 immediately before moving a multi-word register by parts.
16109
16110 2023-05-06 Jeff Law <jlaw@ventanamicro>
16111
16112 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
16113
16114 2023-05-06 Michael Collison <collison@rivosinc.com>
16115
16116 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
16117 Check that GET_MODE_NUNITS is a multiple of 2.
16118
16119 2023-05-06 Michael Collison <collison@rivosinc.com>
16120
16121 * config/riscv/riscv.cc
16122 (riscv_estimated_poly_value): Implement
16123 TARGET_ESTIMATED_POLY_VALUE.
16124 (riscv_preferred_simd_mode): Implement
16125 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
16126 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
16127 (riscv_empty_mask_is_expensive): Implement
16128 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
16129 (riscv_vectorize_create_costs): Implement
16130 TARGET_VECTORIZE_CREATE_COSTS.
16131 (riscv_support_vector_misalignment): Implement
16132 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
16133 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
16134 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
16135 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
16136 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
16137
16138 2023-05-06 Jeff Law <jlaw@ventanamicro>
16139
16140 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
16141 duplicate definition.
16142
16143 2023-05-06 Michael Collison <collison@rivosinc.com>
16144
16145 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
16146 (riscv_vector_preferred_simd_mode): Ditto.
16147 (get_mask_policy_no_pred): Ditto.
16148 (get_tail_policy_no_pred): Ditto.
16149 (riscv_vector_mask_mode_p): Ditto.
16150 (riscv_vector_get_mask_mode): Ditto.
16151
16152 2023-05-06 Michael Collison <collison@rivosinc.com>
16153
16154 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
16155 Remove static declaration to to make externally visible.
16156 (get_mask_policy_for_pred): Ditto.
16157 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
16158 New external declaration.
16159 (get_mask_policy_for_pred): Ditto.
16160
16161 2023-05-06 Michael Collison <collison@rivosinc.com>
16162
16163 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
16164 (riscv_vector_get_mask_mode): Ditto.
16165 (get_mask_policy_no_pred): Ditto.
16166 (get_tail_policy_no_pred): Ditto.
16167
16168 2023-05-06 Xi Ruoyao <xry111@xry111.site>
16169
16170 * config/loongarch/loongarch.h (struct machine_function): Add
16171 reg_is_wrapped_separately array for register wrapping
16172 information.
16173 * config/loongarch/loongarch.cc
16174 (loongarch_get_separate_components): New function.
16175 (loongarch_components_for_bb): Likewise.
16176 (loongarch_disqualify_components): Likewise.
16177 (loongarch_process_components): Likewise.
16178 (loongarch_emit_prologue_components): Likewise.
16179 (loongarch_emit_epilogue_components): Likewise.
16180 (loongarch_set_handled_components): Likewise.
16181 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
16182 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
16183 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
16184 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
16185 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
16186 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
16187 (loongarch_for_each_saved_reg): Skip registers that are wrapped
16188 separately.
16189
16190 2023-05-06 Xi Ruoyao <xry111@xry111.site>
16191
16192 PR other/109522
16193 * Makefile.in (s-macro_list): Pass -nostdinc to
16194 $(GCC_FOR_TARGET).
16195
16196 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16197
16198 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
16199 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
16200 (preferred_simd_mode): Ditto.
16201 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
16202 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
16203 (riscv_preferred_simd_mode): New function.
16204 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
16205 * config/riscv/vector.md: Add autovec.md.
16206 * config/riscv/autovec.md: New file.
16207
16208 2023-05-06 Jakub Jelinek <jakub@redhat.com>
16209
16210 * real.h (dconst_pi): Define.
16211 (dconst_e_ptr): Formatting fix.
16212 (dconst_pi_ptr): Declare.
16213 * real.cc (dconst_pi_ptr): New function.
16214 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
16215 boundaries range with range computed from sin/cos of the particular
16216 bounds if the argument range is shorter than 2*pi.
16217 (cfn_sincos::op1_range): Take bulps into account when determining
16218 which result ranges are always invalid or behave like known NAN.
16219
16220 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
16221
16222 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
16223 pass type to vrange_storage::equal_p.
16224 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
16225 (irange_storage::equal_p): Same.
16226 (frange_storage::equal_p): Same.
16227 * value-range-storage.h (class frange_storage): Same.
16228
16229 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16230
16231 PR target/109748
16232 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
16233 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
16234
16235 2023-05-06 liuhongt <hongtao.liu@intel.com>
16236
16237 * combine.cc (maybe_swap_commutative_operands): Canonicalize
16238 vec_merge when mask is constant.
16239 * doc/md.texi: Document vec_merge canonicalization.
16240
16241 2023-05-06 Jakub Jelinek <jakub@redhat.com>
16242
16243 * value-range.h (frange_arithmetic): Declare.
16244 * range-op-float.cc (frange_arithmetic): No longer static.
16245 * gimple-range-op.cc (frange_mpfr_arg1): New function.
16246 (cfn_sqrt::fold_range): Intersect the generic boundaries range
16247 with range computed from sqrt of the particular bounds.
16248 (cfn_sqrt::op1_range): Intersect the generic boundaries range
16249 with range computed from squared particular bounds.
16250
16251 2023-05-06 Jakub Jelinek <jakub@redhat.com>
16252
16253 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
16254 earlier with helper variables also renamed.
16255 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
16256 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
16257 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
16258
16259 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
16260
16261 * config/cris/cris.md (splitop): Add PLUS.
16262 * config/cris/cris.cc (cris_split_constant): Also handle
16263 PLUS when a split into two insns may be useful.
16264
16265 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16266
16267 * config/cris/cris.md (movandsplit1): New define_peephole2.
16268
16269 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16270
16271 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
16272
16273 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16274
16275 * doc/md.texi (define_peephole2): Document order of scanning.
16276
16277 2023-05-05 Pan Li <pan2.li@intel.com>
16278 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16279
16280 * config/riscv/vector.md: Allow const as the operand of RVV
16281 indexed load/store.
16282
16283 2023-05-05 Pan Li <pan2.li@intel.com>
16284
16285 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
16286 consumed by simplify_rtx.
16287
16288 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16289
16290 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
16291 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
16292 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
16293 * config/arm/arm_mve.h (vshrq): Remove.
16294 (vrshrq): Remove.
16295 (vrshrq_m): Remove.
16296 (vshrq_m): Remove.
16297 (vrshrq_x): Remove.
16298 (vshrq_x): Remove.
16299 (vshrq_n_s8): Remove.
16300 (vshrq_n_s16): Remove.
16301 (vshrq_n_s32): Remove.
16302 (vshrq_n_u8): Remove.
16303 (vshrq_n_u16): Remove.
16304 (vshrq_n_u32): Remove.
16305 (vrshrq_n_u8): Remove.
16306 (vrshrq_n_s8): Remove.
16307 (vrshrq_n_u16): Remove.
16308 (vrshrq_n_s16): Remove.
16309 (vrshrq_n_u32): Remove.
16310 (vrshrq_n_s32): Remove.
16311 (vrshrq_m_n_s8): Remove.
16312 (vrshrq_m_n_s32): Remove.
16313 (vrshrq_m_n_s16): Remove.
16314 (vrshrq_m_n_u8): Remove.
16315 (vrshrq_m_n_u32): Remove.
16316 (vrshrq_m_n_u16): Remove.
16317 (vshrq_m_n_s8): Remove.
16318 (vshrq_m_n_s32): Remove.
16319 (vshrq_m_n_s16): Remove.
16320 (vshrq_m_n_u8): Remove.
16321 (vshrq_m_n_u32): Remove.
16322 (vshrq_m_n_u16): Remove.
16323 (vrshrq_x_n_s8): Remove.
16324 (vrshrq_x_n_s16): Remove.
16325 (vrshrq_x_n_s32): Remove.
16326 (vrshrq_x_n_u8): Remove.
16327 (vrshrq_x_n_u16): Remove.
16328 (vrshrq_x_n_u32): Remove.
16329 (vshrq_x_n_s8): Remove.
16330 (vshrq_x_n_s16): Remove.
16331 (vshrq_x_n_s32): Remove.
16332 (vshrq_x_n_u8): Remove.
16333 (vshrq_x_n_u16): Remove.
16334 (vshrq_x_n_u32): Remove.
16335 (__arm_vshrq_n_s8): Remove.
16336 (__arm_vshrq_n_s16): Remove.
16337 (__arm_vshrq_n_s32): Remove.
16338 (__arm_vshrq_n_u8): Remove.
16339 (__arm_vshrq_n_u16): Remove.
16340 (__arm_vshrq_n_u32): Remove.
16341 (__arm_vrshrq_n_u8): Remove.
16342 (__arm_vrshrq_n_s8): Remove.
16343 (__arm_vrshrq_n_u16): Remove.
16344 (__arm_vrshrq_n_s16): Remove.
16345 (__arm_vrshrq_n_u32): Remove.
16346 (__arm_vrshrq_n_s32): Remove.
16347 (__arm_vrshrq_m_n_s8): Remove.
16348 (__arm_vrshrq_m_n_s32): Remove.
16349 (__arm_vrshrq_m_n_s16): Remove.
16350 (__arm_vrshrq_m_n_u8): Remove.
16351 (__arm_vrshrq_m_n_u32): Remove.
16352 (__arm_vrshrq_m_n_u16): Remove.
16353 (__arm_vshrq_m_n_s8): Remove.
16354 (__arm_vshrq_m_n_s32): Remove.
16355 (__arm_vshrq_m_n_s16): Remove.
16356 (__arm_vshrq_m_n_u8): Remove.
16357 (__arm_vshrq_m_n_u32): Remove.
16358 (__arm_vshrq_m_n_u16): Remove.
16359 (__arm_vrshrq_x_n_s8): Remove.
16360 (__arm_vrshrq_x_n_s16): Remove.
16361 (__arm_vrshrq_x_n_s32): Remove.
16362 (__arm_vrshrq_x_n_u8): Remove.
16363 (__arm_vrshrq_x_n_u16): Remove.
16364 (__arm_vrshrq_x_n_u32): Remove.
16365 (__arm_vshrq_x_n_s8): Remove.
16366 (__arm_vshrq_x_n_s16): Remove.
16367 (__arm_vshrq_x_n_s32): Remove.
16368 (__arm_vshrq_x_n_u8): Remove.
16369 (__arm_vshrq_x_n_u16): Remove.
16370 (__arm_vshrq_x_n_u32): Remove.
16371 (__arm_vshrq): Remove.
16372 (__arm_vrshrq): Remove.
16373 (__arm_vrshrq_m): Remove.
16374 (__arm_vshrq_m): Remove.
16375 (__arm_vrshrq_x): Remove.
16376 (__arm_vshrq_x): Remove.
16377
16378 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16379
16380 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
16381 (mve_insn): Add vrshr, vshr.
16382 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
16383 (mve_vrshrq_n_<supf><mode>): Merge into ...
16384 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16385 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
16386 into ...
16387 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16388
16389 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16390
16391 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
16392 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
16393
16394 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16395
16396 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
16397 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
16398 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
16399 (vqrshrunbq, vqrshruntq): New.
16400 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
16401 (vqrshrunbq, vqrshruntq): New.
16402 * config/arm/arm-mve-builtins.cc
16403 (function_instance::has_inactive_argument): Handle vqshrunbq,
16404 vqshruntq, vqrshrunbq, vqrshruntq.
16405 * config/arm/arm_mve.h (vqrshrunbq): Remove.
16406 (vqrshruntq): Remove.
16407 (vqrshrunbq_m): Remove.
16408 (vqrshruntq_m): Remove.
16409 (vqrshrunbq_n_s16): Remove.
16410 (vqrshrunbq_n_s32): Remove.
16411 (vqrshruntq_n_s16): Remove.
16412 (vqrshruntq_n_s32): Remove.
16413 (vqrshrunbq_m_n_s32): Remove.
16414 (vqrshrunbq_m_n_s16): Remove.
16415 (vqrshruntq_m_n_s32): Remove.
16416 (vqrshruntq_m_n_s16): Remove.
16417 (__arm_vqrshrunbq_n_s16): Remove.
16418 (__arm_vqrshrunbq_n_s32): Remove.
16419 (__arm_vqrshruntq_n_s16): Remove.
16420 (__arm_vqrshruntq_n_s32): Remove.
16421 (__arm_vqrshrunbq_m_n_s32): Remove.
16422 (__arm_vqrshrunbq_m_n_s16): Remove.
16423 (__arm_vqrshruntq_m_n_s32): Remove.
16424 (__arm_vqrshruntq_m_n_s16): Remove.
16425 (__arm_vqrshrunbq): Remove.
16426 (__arm_vqrshruntq): Remove.
16427 (__arm_vqrshrunbq_m): Remove.
16428 (__arm_vqrshruntq_m): Remove.
16429 (vqshrunbq): Remove.
16430 (vqshruntq): Remove.
16431 (vqshrunbq_m): Remove.
16432 (vqshruntq_m): Remove.
16433 (vqshrunbq_n_s16): Remove.
16434 (vqshruntq_n_s16): Remove.
16435 (vqshrunbq_n_s32): Remove.
16436 (vqshruntq_n_s32): Remove.
16437 (vqshrunbq_m_n_s32): Remove.
16438 (vqshrunbq_m_n_s16): Remove.
16439 (vqshruntq_m_n_s32): Remove.
16440 (vqshruntq_m_n_s16): Remove.
16441 (__arm_vqshrunbq_n_s16): Remove.
16442 (__arm_vqshruntq_n_s16): Remove.
16443 (__arm_vqshrunbq_n_s32): Remove.
16444 (__arm_vqshruntq_n_s32): Remove.
16445 (__arm_vqshrunbq_m_n_s32): Remove.
16446 (__arm_vqshrunbq_m_n_s16): Remove.
16447 (__arm_vqshruntq_m_n_s32): Remove.
16448 (__arm_vqshruntq_m_n_s16): Remove.
16449 (__arm_vqshrunbq): Remove.
16450 (__arm_vqshruntq): Remove.
16451 (__arm_vqshrunbq_m): Remove.
16452 (__arm_vqshruntq_m): Remove.
16453
16454 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16455
16456 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
16457 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
16458 (MVE_SHRN_M_N): Likewise.
16459 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
16460 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
16461 (supf): Likewise.
16462 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
16463 (mve_vqrshruntq_n_s<mode>): Remove.
16464 (mve_vqshrunbq_n_s<mode>): Remove.
16465 (mve_vqshruntq_n_s<mode>): Remove.
16466 (mve_vqrshrunbq_m_n_s<mode>): Remove.
16467 (mve_vqrshruntq_m_n_s<mode>): Remove.
16468 (mve_vqshrunbq_m_n_s<mode>): Remove.
16469 (mve_vqshruntq_m_n_s<mode>): Remove.
16470
16471 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16472
16473 * config/arm/arm-mve-builtins-shapes.cc
16474 (binary_rshift_narrow_unsigned): New.
16475 * config/arm/arm-mve-builtins-shapes.h
16476 (binary_rshift_narrow_unsigned): New.
16477
16478 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16479
16480 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
16481 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
16482 (vqrshrnbq, vqrshrntq): New.
16483 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
16484 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
16485 New.
16486 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
16487 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
16488 * config/arm/arm-mve-builtins.cc
16489 (function_instance::has_inactive_argument): Handle vshrnbq,
16490 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
16491 vqrshrntq.
16492 * config/arm/arm_mve.h (vshrnbq): Remove.
16493 (vshrntq): Remove.
16494 (vshrnbq_m): Remove.
16495 (vshrntq_m): Remove.
16496 (vshrnbq_n_s16): Remove.
16497 (vshrntq_n_s16): Remove.
16498 (vshrnbq_n_u16): Remove.
16499 (vshrntq_n_u16): Remove.
16500 (vshrnbq_n_s32): Remove.
16501 (vshrntq_n_s32): Remove.
16502 (vshrnbq_n_u32): Remove.
16503 (vshrntq_n_u32): Remove.
16504 (vshrnbq_m_n_s32): Remove.
16505 (vshrnbq_m_n_s16): Remove.
16506 (vshrnbq_m_n_u32): Remove.
16507 (vshrnbq_m_n_u16): Remove.
16508 (vshrntq_m_n_s32): Remove.
16509 (vshrntq_m_n_s16): Remove.
16510 (vshrntq_m_n_u32): Remove.
16511 (vshrntq_m_n_u16): Remove.
16512 (__arm_vshrnbq_n_s16): Remove.
16513 (__arm_vshrntq_n_s16): Remove.
16514 (__arm_vshrnbq_n_u16): Remove.
16515 (__arm_vshrntq_n_u16): Remove.
16516 (__arm_vshrnbq_n_s32): Remove.
16517 (__arm_vshrntq_n_s32): Remove.
16518 (__arm_vshrnbq_n_u32): Remove.
16519 (__arm_vshrntq_n_u32): Remove.
16520 (__arm_vshrnbq_m_n_s32): Remove.
16521 (__arm_vshrnbq_m_n_s16): Remove.
16522 (__arm_vshrnbq_m_n_u32): Remove.
16523 (__arm_vshrnbq_m_n_u16): Remove.
16524 (__arm_vshrntq_m_n_s32): Remove.
16525 (__arm_vshrntq_m_n_s16): Remove.
16526 (__arm_vshrntq_m_n_u32): Remove.
16527 (__arm_vshrntq_m_n_u16): Remove.
16528 (__arm_vshrnbq): Remove.
16529 (__arm_vshrntq): Remove.
16530 (__arm_vshrnbq_m): Remove.
16531 (__arm_vshrntq_m): Remove.
16532 (vrshrnbq): Remove.
16533 (vrshrntq): Remove.
16534 (vrshrnbq_m): Remove.
16535 (vrshrntq_m): Remove.
16536 (vrshrnbq_n_s16): Remove.
16537 (vrshrntq_n_s16): Remove.
16538 (vrshrnbq_n_u16): Remove.
16539 (vrshrntq_n_u16): Remove.
16540 (vrshrnbq_n_s32): Remove.
16541 (vrshrntq_n_s32): Remove.
16542 (vrshrnbq_n_u32): Remove.
16543 (vrshrntq_n_u32): Remove.
16544 (vrshrnbq_m_n_s32): Remove.
16545 (vrshrnbq_m_n_s16): Remove.
16546 (vrshrnbq_m_n_u32): Remove.
16547 (vrshrnbq_m_n_u16): Remove.
16548 (vrshrntq_m_n_s32): Remove.
16549 (vrshrntq_m_n_s16): Remove.
16550 (vrshrntq_m_n_u32): Remove.
16551 (vrshrntq_m_n_u16): Remove.
16552 (__arm_vrshrnbq_n_s16): Remove.
16553 (__arm_vrshrntq_n_s16): Remove.
16554 (__arm_vrshrnbq_n_u16): Remove.
16555 (__arm_vrshrntq_n_u16): Remove.
16556 (__arm_vrshrnbq_n_s32): Remove.
16557 (__arm_vrshrntq_n_s32): Remove.
16558 (__arm_vrshrnbq_n_u32): Remove.
16559 (__arm_vrshrntq_n_u32): Remove.
16560 (__arm_vrshrnbq_m_n_s32): Remove.
16561 (__arm_vrshrnbq_m_n_s16): Remove.
16562 (__arm_vrshrnbq_m_n_u32): Remove.
16563 (__arm_vrshrnbq_m_n_u16): Remove.
16564 (__arm_vrshrntq_m_n_s32): Remove.
16565 (__arm_vrshrntq_m_n_s16): Remove.
16566 (__arm_vrshrntq_m_n_u32): Remove.
16567 (__arm_vrshrntq_m_n_u16): Remove.
16568 (__arm_vrshrnbq): Remove.
16569 (__arm_vrshrntq): Remove.
16570 (__arm_vrshrnbq_m): Remove.
16571 (__arm_vrshrntq_m): Remove.
16572 (vqshrnbq): Remove.
16573 (vqshrntq): Remove.
16574 (vqshrnbq_m): Remove.
16575 (vqshrntq_m): Remove.
16576 (vqshrnbq_n_s16): Remove.
16577 (vqshrntq_n_s16): Remove.
16578 (vqshrnbq_n_u16): Remove.
16579 (vqshrntq_n_u16): Remove.
16580 (vqshrnbq_n_s32): Remove.
16581 (vqshrntq_n_s32): Remove.
16582 (vqshrnbq_n_u32): Remove.
16583 (vqshrntq_n_u32): Remove.
16584 (vqshrnbq_m_n_s32): Remove.
16585 (vqshrnbq_m_n_s16): Remove.
16586 (vqshrnbq_m_n_u32): Remove.
16587 (vqshrnbq_m_n_u16): Remove.
16588 (vqshrntq_m_n_s32): Remove.
16589 (vqshrntq_m_n_s16): Remove.
16590 (vqshrntq_m_n_u32): Remove.
16591 (vqshrntq_m_n_u16): Remove.
16592 (__arm_vqshrnbq_n_s16): Remove.
16593 (__arm_vqshrntq_n_s16): Remove.
16594 (__arm_vqshrnbq_n_u16): Remove.
16595 (__arm_vqshrntq_n_u16): Remove.
16596 (__arm_vqshrnbq_n_s32): Remove.
16597 (__arm_vqshrntq_n_s32): Remove.
16598 (__arm_vqshrnbq_n_u32): Remove.
16599 (__arm_vqshrntq_n_u32): Remove.
16600 (__arm_vqshrnbq_m_n_s32): Remove.
16601 (__arm_vqshrnbq_m_n_s16): Remove.
16602 (__arm_vqshrnbq_m_n_u32): Remove.
16603 (__arm_vqshrnbq_m_n_u16): Remove.
16604 (__arm_vqshrntq_m_n_s32): Remove.
16605 (__arm_vqshrntq_m_n_s16): Remove.
16606 (__arm_vqshrntq_m_n_u32): Remove.
16607 (__arm_vqshrntq_m_n_u16): Remove.
16608 (__arm_vqshrnbq): Remove.
16609 (__arm_vqshrntq): Remove.
16610 (__arm_vqshrnbq_m): Remove.
16611 (__arm_vqshrntq_m): Remove.
16612 (vqrshrnbq): Remove.
16613 (vqrshrntq): Remove.
16614 (vqrshrnbq_m): Remove.
16615 (vqrshrntq_m): Remove.
16616 (vqrshrnbq_n_s16): Remove.
16617 (vqrshrnbq_n_u16): Remove.
16618 (vqrshrnbq_n_s32): Remove.
16619 (vqrshrnbq_n_u32): Remove.
16620 (vqrshrntq_n_s16): Remove.
16621 (vqrshrntq_n_u16): Remove.
16622 (vqrshrntq_n_s32): Remove.
16623 (vqrshrntq_n_u32): Remove.
16624 (vqrshrnbq_m_n_s32): Remove.
16625 (vqrshrnbq_m_n_s16): Remove.
16626 (vqrshrnbq_m_n_u32): Remove.
16627 (vqrshrnbq_m_n_u16): Remove.
16628 (vqrshrntq_m_n_s32): Remove.
16629 (vqrshrntq_m_n_s16): Remove.
16630 (vqrshrntq_m_n_u32): Remove.
16631 (vqrshrntq_m_n_u16): Remove.
16632 (__arm_vqrshrnbq_n_s16): Remove.
16633 (__arm_vqrshrnbq_n_u16): Remove.
16634 (__arm_vqrshrnbq_n_s32): Remove.
16635 (__arm_vqrshrnbq_n_u32): Remove.
16636 (__arm_vqrshrntq_n_s16): Remove.
16637 (__arm_vqrshrntq_n_u16): Remove.
16638 (__arm_vqrshrntq_n_s32): Remove.
16639 (__arm_vqrshrntq_n_u32): Remove.
16640 (__arm_vqrshrnbq_m_n_s32): Remove.
16641 (__arm_vqrshrnbq_m_n_s16): Remove.
16642 (__arm_vqrshrnbq_m_n_u32): Remove.
16643 (__arm_vqrshrnbq_m_n_u16): Remove.
16644 (__arm_vqrshrntq_m_n_s32): Remove.
16645 (__arm_vqrshrntq_m_n_s16): Remove.
16646 (__arm_vqrshrntq_m_n_u32): Remove.
16647 (__arm_vqrshrntq_m_n_u16): Remove.
16648 (__arm_vqrshrnbq): Remove.
16649 (__arm_vqrshrntq): Remove.
16650 (__arm_vqrshrnbq_m): Remove.
16651 (__arm_vqrshrntq_m): Remove.
16652
16653 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16654
16655 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
16656 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
16657 vrshrnt, vshrnb, vshrnt.
16658 (isu): New.
16659 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
16660 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
16661 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
16662 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
16663 (mve_vshrntq_n_<supf><mode>): Merge into ...
16664 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16665 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
16666 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
16667 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
16668 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
16669 Merge into ...
16670 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16671
16672 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16673
16674 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
16675 New.
16676 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
16677
16678 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16679
16680 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
16681 (vmaxq, vminq): New.
16682 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
16683 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
16684 * config/arm/arm_mve.h (vminq): Remove.
16685 (vmaxq): Remove.
16686 (vmaxq_m): Remove.
16687 (vminq_m): Remove.
16688 (vminq_x): Remove.
16689 (vmaxq_x): Remove.
16690 (vminq_u8): Remove.
16691 (vmaxq_u8): Remove.
16692 (vminq_s8): Remove.
16693 (vmaxq_s8): Remove.
16694 (vminq_u16): Remove.
16695 (vmaxq_u16): Remove.
16696 (vminq_s16): Remove.
16697 (vmaxq_s16): Remove.
16698 (vminq_u32): Remove.
16699 (vmaxq_u32): Remove.
16700 (vminq_s32): Remove.
16701 (vmaxq_s32): Remove.
16702 (vmaxq_m_s8): Remove.
16703 (vmaxq_m_s32): Remove.
16704 (vmaxq_m_s16): Remove.
16705 (vmaxq_m_u8): Remove.
16706 (vmaxq_m_u32): Remove.
16707 (vmaxq_m_u16): Remove.
16708 (vminq_m_s8): Remove.
16709 (vminq_m_s32): Remove.
16710 (vminq_m_s16): Remove.
16711 (vminq_m_u8): Remove.
16712 (vminq_m_u32): Remove.
16713 (vminq_m_u16): Remove.
16714 (vminq_x_s8): Remove.
16715 (vminq_x_s16): Remove.
16716 (vminq_x_s32): Remove.
16717 (vminq_x_u8): Remove.
16718 (vminq_x_u16): Remove.
16719 (vminq_x_u32): Remove.
16720 (vmaxq_x_s8): Remove.
16721 (vmaxq_x_s16): Remove.
16722 (vmaxq_x_s32): Remove.
16723 (vmaxq_x_u8): Remove.
16724 (vmaxq_x_u16): Remove.
16725 (vmaxq_x_u32): Remove.
16726 (__arm_vminq_u8): Remove.
16727 (__arm_vmaxq_u8): Remove.
16728 (__arm_vminq_s8): Remove.
16729 (__arm_vmaxq_s8): Remove.
16730 (__arm_vminq_u16): Remove.
16731 (__arm_vmaxq_u16): Remove.
16732 (__arm_vminq_s16): Remove.
16733 (__arm_vmaxq_s16): Remove.
16734 (__arm_vminq_u32): Remove.
16735 (__arm_vmaxq_u32): Remove.
16736 (__arm_vminq_s32): Remove.
16737 (__arm_vmaxq_s32): Remove.
16738 (__arm_vmaxq_m_s8): Remove.
16739 (__arm_vmaxq_m_s32): Remove.
16740 (__arm_vmaxq_m_s16): Remove.
16741 (__arm_vmaxq_m_u8): Remove.
16742 (__arm_vmaxq_m_u32): Remove.
16743 (__arm_vmaxq_m_u16): Remove.
16744 (__arm_vminq_m_s8): Remove.
16745 (__arm_vminq_m_s32): Remove.
16746 (__arm_vminq_m_s16): Remove.
16747 (__arm_vminq_m_u8): Remove.
16748 (__arm_vminq_m_u32): Remove.
16749 (__arm_vminq_m_u16): Remove.
16750 (__arm_vminq_x_s8): Remove.
16751 (__arm_vminq_x_s16): Remove.
16752 (__arm_vminq_x_s32): Remove.
16753 (__arm_vminq_x_u8): Remove.
16754 (__arm_vminq_x_u16): Remove.
16755 (__arm_vminq_x_u32): Remove.
16756 (__arm_vmaxq_x_s8): Remove.
16757 (__arm_vmaxq_x_s16): Remove.
16758 (__arm_vmaxq_x_s32): Remove.
16759 (__arm_vmaxq_x_u8): Remove.
16760 (__arm_vmaxq_x_u16): Remove.
16761 (__arm_vmaxq_x_u32): Remove.
16762 (__arm_vminq): Remove.
16763 (__arm_vmaxq): Remove.
16764 (__arm_vmaxq_m): Remove.
16765 (__arm_vminq_m): Remove.
16766 (__arm_vminq_x): Remove.
16767 (__arm_vmaxq_x): Remove.
16768
16769 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16770
16771 * config/arm/iterators.md (MAX_MIN_SU): New.
16772 (max_min_su_str): New.
16773 (max_min_supf): New.
16774 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
16775 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
16776 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
16777
16778 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16779
16780 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
16781 (vqshlq, vshlq): New.
16782 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
16783 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
16784 * config/arm/arm_mve.h (vshlq): Remove.
16785 (vshlq_r): Remove.
16786 (vshlq_n): Remove.
16787 (vshlq_m_r): Remove.
16788 (vshlq_m): Remove.
16789 (vshlq_m_n): Remove.
16790 (vshlq_x): Remove.
16791 (vshlq_x_n): Remove.
16792 (vshlq_s8): Remove.
16793 (vshlq_s16): Remove.
16794 (vshlq_s32): Remove.
16795 (vshlq_u8): Remove.
16796 (vshlq_u16): Remove.
16797 (vshlq_u32): Remove.
16798 (vshlq_r_u8): Remove.
16799 (vshlq_n_u8): Remove.
16800 (vshlq_r_s8): Remove.
16801 (vshlq_n_s8): Remove.
16802 (vshlq_r_u16): Remove.
16803 (vshlq_n_u16): Remove.
16804 (vshlq_r_s16): Remove.
16805 (vshlq_n_s16): Remove.
16806 (vshlq_r_u32): Remove.
16807 (vshlq_n_u32): Remove.
16808 (vshlq_r_s32): Remove.
16809 (vshlq_n_s32): Remove.
16810 (vshlq_m_r_u8): Remove.
16811 (vshlq_m_r_s8): Remove.
16812 (vshlq_m_r_u16): Remove.
16813 (vshlq_m_r_s16): Remove.
16814 (vshlq_m_r_u32): Remove.
16815 (vshlq_m_r_s32): Remove.
16816 (vshlq_m_u8): Remove.
16817 (vshlq_m_s8): Remove.
16818 (vshlq_m_u16): Remove.
16819 (vshlq_m_s16): Remove.
16820 (vshlq_m_u32): Remove.
16821 (vshlq_m_s32): Remove.
16822 (vshlq_m_n_s8): Remove.
16823 (vshlq_m_n_s32): Remove.
16824 (vshlq_m_n_s16): Remove.
16825 (vshlq_m_n_u8): Remove.
16826 (vshlq_m_n_u32): Remove.
16827 (vshlq_m_n_u16): Remove.
16828 (vshlq_x_s8): Remove.
16829 (vshlq_x_s16): Remove.
16830 (vshlq_x_s32): Remove.
16831 (vshlq_x_u8): Remove.
16832 (vshlq_x_u16): Remove.
16833 (vshlq_x_u32): Remove.
16834 (vshlq_x_n_s8): Remove.
16835 (vshlq_x_n_s16): Remove.
16836 (vshlq_x_n_s32): Remove.
16837 (vshlq_x_n_u8): Remove.
16838 (vshlq_x_n_u16): Remove.
16839 (vshlq_x_n_u32): Remove.
16840 (__arm_vshlq_s8): Remove.
16841 (__arm_vshlq_s16): Remove.
16842 (__arm_vshlq_s32): Remove.
16843 (__arm_vshlq_u8): Remove.
16844 (__arm_vshlq_u16): Remove.
16845 (__arm_vshlq_u32): Remove.
16846 (__arm_vshlq_r_u8): Remove.
16847 (__arm_vshlq_n_u8): Remove.
16848 (__arm_vshlq_r_s8): Remove.
16849 (__arm_vshlq_n_s8): Remove.
16850 (__arm_vshlq_r_u16): Remove.
16851 (__arm_vshlq_n_u16): Remove.
16852 (__arm_vshlq_r_s16): Remove.
16853 (__arm_vshlq_n_s16): Remove.
16854 (__arm_vshlq_r_u32): Remove.
16855 (__arm_vshlq_n_u32): Remove.
16856 (__arm_vshlq_r_s32): Remove.
16857 (__arm_vshlq_n_s32): Remove.
16858 (__arm_vshlq_m_r_u8): Remove.
16859 (__arm_vshlq_m_r_s8): Remove.
16860 (__arm_vshlq_m_r_u16): Remove.
16861 (__arm_vshlq_m_r_s16): Remove.
16862 (__arm_vshlq_m_r_u32): Remove.
16863 (__arm_vshlq_m_r_s32): Remove.
16864 (__arm_vshlq_m_u8): Remove.
16865 (__arm_vshlq_m_s8): Remove.
16866 (__arm_vshlq_m_u16): Remove.
16867 (__arm_vshlq_m_s16): Remove.
16868 (__arm_vshlq_m_u32): Remove.
16869 (__arm_vshlq_m_s32): Remove.
16870 (__arm_vshlq_m_n_s8): Remove.
16871 (__arm_vshlq_m_n_s32): Remove.
16872 (__arm_vshlq_m_n_s16): Remove.
16873 (__arm_vshlq_m_n_u8): Remove.
16874 (__arm_vshlq_m_n_u32): Remove.
16875 (__arm_vshlq_m_n_u16): Remove.
16876 (__arm_vshlq_x_s8): Remove.
16877 (__arm_vshlq_x_s16): Remove.
16878 (__arm_vshlq_x_s32): Remove.
16879 (__arm_vshlq_x_u8): Remove.
16880 (__arm_vshlq_x_u16): Remove.
16881 (__arm_vshlq_x_u32): Remove.
16882 (__arm_vshlq_x_n_s8): Remove.
16883 (__arm_vshlq_x_n_s16): Remove.
16884 (__arm_vshlq_x_n_s32): Remove.
16885 (__arm_vshlq_x_n_u8): Remove.
16886 (__arm_vshlq_x_n_u16): Remove.
16887 (__arm_vshlq_x_n_u32): Remove.
16888 (__arm_vshlq): Remove.
16889 (__arm_vshlq_r): Remove.
16890 (__arm_vshlq_n): Remove.
16891 (__arm_vshlq_m_r): Remove.
16892 (__arm_vshlq_m): Remove.
16893 (__arm_vshlq_m_n): Remove.
16894 (__arm_vshlq_x): Remove.
16895 (__arm_vshlq_x_n): Remove.
16896 (vqshlq): Remove.
16897 (vqshlq_r): Remove.
16898 (vqshlq_n): Remove.
16899 (vqshlq_m_r): Remove.
16900 (vqshlq_m_n): Remove.
16901 (vqshlq_m): Remove.
16902 (vqshlq_u8): Remove.
16903 (vqshlq_r_u8): Remove.
16904 (vqshlq_n_u8): Remove.
16905 (vqshlq_s8): Remove.
16906 (vqshlq_r_s8): Remove.
16907 (vqshlq_n_s8): Remove.
16908 (vqshlq_u16): Remove.
16909 (vqshlq_r_u16): Remove.
16910 (vqshlq_n_u16): Remove.
16911 (vqshlq_s16): Remove.
16912 (vqshlq_r_s16): Remove.
16913 (vqshlq_n_s16): Remove.
16914 (vqshlq_u32): Remove.
16915 (vqshlq_r_u32): Remove.
16916 (vqshlq_n_u32): Remove.
16917 (vqshlq_s32): Remove.
16918 (vqshlq_r_s32): Remove.
16919 (vqshlq_n_s32): Remove.
16920 (vqshlq_m_r_u8): Remove.
16921 (vqshlq_m_r_s8): Remove.
16922 (vqshlq_m_r_u16): Remove.
16923 (vqshlq_m_r_s16): Remove.
16924 (vqshlq_m_r_u32): Remove.
16925 (vqshlq_m_r_s32): Remove.
16926 (vqshlq_m_n_s8): Remove.
16927 (vqshlq_m_n_s32): Remove.
16928 (vqshlq_m_n_s16): Remove.
16929 (vqshlq_m_n_u8): Remove.
16930 (vqshlq_m_n_u32): Remove.
16931 (vqshlq_m_n_u16): Remove.
16932 (vqshlq_m_s8): Remove.
16933 (vqshlq_m_s32): Remove.
16934 (vqshlq_m_s16): Remove.
16935 (vqshlq_m_u8): Remove.
16936 (vqshlq_m_u32): Remove.
16937 (vqshlq_m_u16): Remove.
16938 (__arm_vqshlq_u8): Remove.
16939 (__arm_vqshlq_r_u8): Remove.
16940 (__arm_vqshlq_n_u8): Remove.
16941 (__arm_vqshlq_s8): Remove.
16942 (__arm_vqshlq_r_s8): Remove.
16943 (__arm_vqshlq_n_s8): Remove.
16944 (__arm_vqshlq_u16): Remove.
16945 (__arm_vqshlq_r_u16): Remove.
16946 (__arm_vqshlq_n_u16): Remove.
16947 (__arm_vqshlq_s16): Remove.
16948 (__arm_vqshlq_r_s16): Remove.
16949 (__arm_vqshlq_n_s16): Remove.
16950 (__arm_vqshlq_u32): Remove.
16951 (__arm_vqshlq_r_u32): Remove.
16952 (__arm_vqshlq_n_u32): Remove.
16953 (__arm_vqshlq_s32): Remove.
16954 (__arm_vqshlq_r_s32): Remove.
16955 (__arm_vqshlq_n_s32): Remove.
16956 (__arm_vqshlq_m_r_u8): Remove.
16957 (__arm_vqshlq_m_r_s8): Remove.
16958 (__arm_vqshlq_m_r_u16): Remove.
16959 (__arm_vqshlq_m_r_s16): Remove.
16960 (__arm_vqshlq_m_r_u32): Remove.
16961 (__arm_vqshlq_m_r_s32): Remove.
16962 (__arm_vqshlq_m_n_s8): Remove.
16963 (__arm_vqshlq_m_n_s32): Remove.
16964 (__arm_vqshlq_m_n_s16): Remove.
16965 (__arm_vqshlq_m_n_u8): Remove.
16966 (__arm_vqshlq_m_n_u32): Remove.
16967 (__arm_vqshlq_m_n_u16): Remove.
16968 (__arm_vqshlq_m_s8): Remove.
16969 (__arm_vqshlq_m_s32): Remove.
16970 (__arm_vqshlq_m_s16): Remove.
16971 (__arm_vqshlq_m_u8): Remove.
16972 (__arm_vqshlq_m_u32): Remove.
16973 (__arm_vqshlq_m_u16): Remove.
16974 (__arm_vqshlq): Remove.
16975 (__arm_vqshlq_r): Remove.
16976 (__arm_vqshlq_n): Remove.
16977 (__arm_vqshlq_m_r): Remove.
16978 (__arm_vqshlq_m_n): Remove.
16979 (__arm_vqshlq_m): Remove.
16980
16981 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16982
16983 * config/arm/arm-mve-builtins-functions.h (class
16984 unspec_mve_function_exact_insn_vshl): New.
16985
16986 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16987
16988 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
16989 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
16990
16991 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16992
16993 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
16994 (finish_opt_n_resolution): Handle MODE_r.
16995 * config/arm/arm-mve-builtins.def (r): New mode.
16996
16997 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16998
16999 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
17000 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
17001
17002 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17003
17004 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
17005 (vabdq): New.
17006 * config/arm/arm-mve-builtins-base.def (vabdq): New.
17007 * config/arm/arm-mve-builtins-base.h (vabdq): New.
17008 * config/arm/arm_mve.h (vabdq): Remove.
17009 (vabdq_m): Remove.
17010 (vabdq_x): Remove.
17011 (vabdq_u8): Remove.
17012 (vabdq_s8): Remove.
17013 (vabdq_u16): Remove.
17014 (vabdq_s16): Remove.
17015 (vabdq_u32): Remove.
17016 (vabdq_s32): Remove.
17017 (vabdq_f16): Remove.
17018 (vabdq_f32): Remove.
17019 (vabdq_m_s8): Remove.
17020 (vabdq_m_s32): Remove.
17021 (vabdq_m_s16): Remove.
17022 (vabdq_m_u8): Remove.
17023 (vabdq_m_u32): Remove.
17024 (vabdq_m_u16): Remove.
17025 (vabdq_m_f32): Remove.
17026 (vabdq_m_f16): Remove.
17027 (vabdq_x_s8): Remove.
17028 (vabdq_x_s16): Remove.
17029 (vabdq_x_s32): Remove.
17030 (vabdq_x_u8): Remove.
17031 (vabdq_x_u16): Remove.
17032 (vabdq_x_u32): Remove.
17033 (vabdq_x_f16): Remove.
17034 (vabdq_x_f32): Remove.
17035 (__arm_vabdq_u8): Remove.
17036 (__arm_vabdq_s8): Remove.
17037 (__arm_vabdq_u16): Remove.
17038 (__arm_vabdq_s16): Remove.
17039 (__arm_vabdq_u32): Remove.
17040 (__arm_vabdq_s32): Remove.
17041 (__arm_vabdq_m_s8): Remove.
17042 (__arm_vabdq_m_s32): Remove.
17043 (__arm_vabdq_m_s16): Remove.
17044 (__arm_vabdq_m_u8): Remove.
17045 (__arm_vabdq_m_u32): Remove.
17046 (__arm_vabdq_m_u16): Remove.
17047 (__arm_vabdq_x_s8): Remove.
17048 (__arm_vabdq_x_s16): Remove.
17049 (__arm_vabdq_x_s32): Remove.
17050 (__arm_vabdq_x_u8): Remove.
17051 (__arm_vabdq_x_u16): Remove.
17052 (__arm_vabdq_x_u32): Remove.
17053 (__arm_vabdq_f16): Remove.
17054 (__arm_vabdq_f32): Remove.
17055 (__arm_vabdq_m_f32): Remove.
17056 (__arm_vabdq_m_f16): Remove.
17057 (__arm_vabdq_x_f16): Remove.
17058 (__arm_vabdq_x_f32): Remove.
17059 (__arm_vabdq): Remove.
17060 (__arm_vabdq_m): Remove.
17061 (__arm_vabdq_x): Remove.
17062
17063 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17064
17065 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
17066 (MVE_FP_VABDQ_ONLY): New.
17067 (mve_insn): Add vabd.
17068 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
17069 (@mve_<mve_insn>q_f<mode>): ... this.
17070 (mve_vabdq_m_f<mode>): Remove.
17071
17072 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17073
17074 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
17075 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
17076 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
17077 * config/arm/arm_mve.h (vqrdmulhq): Remove.
17078 (vqrdmulhq_m): Remove.
17079 (vqrdmulhq_s8): Remove.
17080 (vqrdmulhq_n_s8): Remove.
17081 (vqrdmulhq_s16): Remove.
17082 (vqrdmulhq_n_s16): Remove.
17083 (vqrdmulhq_s32): Remove.
17084 (vqrdmulhq_n_s32): Remove.
17085 (vqrdmulhq_m_n_s8): Remove.
17086 (vqrdmulhq_m_n_s32): Remove.
17087 (vqrdmulhq_m_n_s16): Remove.
17088 (vqrdmulhq_m_s8): Remove.
17089 (vqrdmulhq_m_s32): Remove.
17090 (vqrdmulhq_m_s16): Remove.
17091 (__arm_vqrdmulhq_s8): Remove.
17092 (__arm_vqrdmulhq_n_s8): Remove.
17093 (__arm_vqrdmulhq_s16): Remove.
17094 (__arm_vqrdmulhq_n_s16): Remove.
17095 (__arm_vqrdmulhq_s32): Remove.
17096 (__arm_vqrdmulhq_n_s32): Remove.
17097 (__arm_vqrdmulhq_m_n_s8): Remove.
17098 (__arm_vqrdmulhq_m_n_s32): Remove.
17099 (__arm_vqrdmulhq_m_n_s16): Remove.
17100 (__arm_vqrdmulhq_m_s8): Remove.
17101 (__arm_vqrdmulhq_m_s32): Remove.
17102 (__arm_vqrdmulhq_m_s16): Remove.
17103 (__arm_vqrdmulhq): Remove.
17104 (__arm_vqrdmulhq_m): Remove.
17105
17106 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17107
17108 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
17109 (MVE_SHIFT_N, MVE_SHIFT_R): New.
17110 (mve_insn): Add vqshl, vshl.
17111 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
17112 (mve_vshlq_n_<supf><mode>): Merge into ...
17113 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
17114 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
17115 ...
17116 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
17117 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
17118 into ...
17119 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
17120 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
17121 into ...
17122 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17123 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
17124 into ...
17125 (@mve_<mve_insn>q_<supf><mode>): ... this.
17126
17127 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17128
17129 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
17130 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
17131 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
17132 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
17133 vqrshlq, vrshlq.
17134 * config/arm/arm_mve.h (vrshlq): Remove.
17135 (vrshlq_m_n): Remove.
17136 (vrshlq_m): Remove.
17137 (vrshlq_x): Remove.
17138 (vrshlq_u8): Remove.
17139 (vrshlq_n_u8): Remove.
17140 (vrshlq_s8): Remove.
17141 (vrshlq_n_s8): Remove.
17142 (vrshlq_u16): Remove.
17143 (vrshlq_n_u16): Remove.
17144 (vrshlq_s16): Remove.
17145 (vrshlq_n_s16): Remove.
17146 (vrshlq_u32): Remove.
17147 (vrshlq_n_u32): Remove.
17148 (vrshlq_s32): Remove.
17149 (vrshlq_n_s32): Remove.
17150 (vrshlq_m_n_u8): Remove.
17151 (vrshlq_m_n_s8): Remove.
17152 (vrshlq_m_n_u16): Remove.
17153 (vrshlq_m_n_s16): Remove.
17154 (vrshlq_m_n_u32): Remove.
17155 (vrshlq_m_n_s32): Remove.
17156 (vrshlq_m_s8): Remove.
17157 (vrshlq_m_s32): Remove.
17158 (vrshlq_m_s16): Remove.
17159 (vrshlq_m_u8): Remove.
17160 (vrshlq_m_u32): Remove.
17161 (vrshlq_m_u16): Remove.
17162 (vrshlq_x_s8): Remove.
17163 (vrshlq_x_s16): Remove.
17164 (vrshlq_x_s32): Remove.
17165 (vrshlq_x_u8): Remove.
17166 (vrshlq_x_u16): Remove.
17167 (vrshlq_x_u32): Remove.
17168 (__arm_vrshlq_u8): Remove.
17169 (__arm_vrshlq_n_u8): Remove.
17170 (__arm_vrshlq_s8): Remove.
17171 (__arm_vrshlq_n_s8): Remove.
17172 (__arm_vrshlq_u16): Remove.
17173 (__arm_vrshlq_n_u16): Remove.
17174 (__arm_vrshlq_s16): Remove.
17175 (__arm_vrshlq_n_s16): Remove.
17176 (__arm_vrshlq_u32): Remove.
17177 (__arm_vrshlq_n_u32): Remove.
17178 (__arm_vrshlq_s32): Remove.
17179 (__arm_vrshlq_n_s32): Remove.
17180 (__arm_vrshlq_m_n_u8): Remove.
17181 (__arm_vrshlq_m_n_s8): Remove.
17182 (__arm_vrshlq_m_n_u16): Remove.
17183 (__arm_vrshlq_m_n_s16): Remove.
17184 (__arm_vrshlq_m_n_u32): Remove.
17185 (__arm_vrshlq_m_n_s32): Remove.
17186 (__arm_vrshlq_m_s8): Remove.
17187 (__arm_vrshlq_m_s32): Remove.
17188 (__arm_vrshlq_m_s16): Remove.
17189 (__arm_vrshlq_m_u8): Remove.
17190 (__arm_vrshlq_m_u32): Remove.
17191 (__arm_vrshlq_m_u16): Remove.
17192 (__arm_vrshlq_x_s8): Remove.
17193 (__arm_vrshlq_x_s16): Remove.
17194 (__arm_vrshlq_x_s32): Remove.
17195 (__arm_vrshlq_x_u8): Remove.
17196 (__arm_vrshlq_x_u16): Remove.
17197 (__arm_vrshlq_x_u32): Remove.
17198 (__arm_vrshlq): Remove.
17199 (__arm_vrshlq_m_n): Remove.
17200 (__arm_vrshlq_m): Remove.
17201 (__arm_vrshlq_x): Remove.
17202 (vqrshlq): Remove.
17203 (vqrshlq_m_n): Remove.
17204 (vqrshlq_m): Remove.
17205 (vqrshlq_u8): Remove.
17206 (vqrshlq_n_u8): Remove.
17207 (vqrshlq_s8): Remove.
17208 (vqrshlq_n_s8): Remove.
17209 (vqrshlq_u16): Remove.
17210 (vqrshlq_n_u16): Remove.
17211 (vqrshlq_s16): Remove.
17212 (vqrshlq_n_s16): Remove.
17213 (vqrshlq_u32): Remove.
17214 (vqrshlq_n_u32): Remove.
17215 (vqrshlq_s32): Remove.
17216 (vqrshlq_n_s32): Remove.
17217 (vqrshlq_m_n_u8): Remove.
17218 (vqrshlq_m_n_s8): Remove.
17219 (vqrshlq_m_n_u16): Remove.
17220 (vqrshlq_m_n_s16): Remove.
17221 (vqrshlq_m_n_u32): Remove.
17222 (vqrshlq_m_n_s32): Remove.
17223 (vqrshlq_m_s8): Remove.
17224 (vqrshlq_m_s32): Remove.
17225 (vqrshlq_m_s16): Remove.
17226 (vqrshlq_m_u8): Remove.
17227 (vqrshlq_m_u32): Remove.
17228 (vqrshlq_m_u16): Remove.
17229 (__arm_vqrshlq_u8): Remove.
17230 (__arm_vqrshlq_n_u8): Remove.
17231 (__arm_vqrshlq_s8): Remove.
17232 (__arm_vqrshlq_n_s8): Remove.
17233 (__arm_vqrshlq_u16): Remove.
17234 (__arm_vqrshlq_n_u16): Remove.
17235 (__arm_vqrshlq_s16): Remove.
17236 (__arm_vqrshlq_n_s16): Remove.
17237 (__arm_vqrshlq_u32): Remove.
17238 (__arm_vqrshlq_n_u32): Remove.
17239 (__arm_vqrshlq_s32): Remove.
17240 (__arm_vqrshlq_n_s32): Remove.
17241 (__arm_vqrshlq_m_n_u8): Remove.
17242 (__arm_vqrshlq_m_n_s8): Remove.
17243 (__arm_vqrshlq_m_n_u16): Remove.
17244 (__arm_vqrshlq_m_n_s16): Remove.
17245 (__arm_vqrshlq_m_n_u32): Remove.
17246 (__arm_vqrshlq_m_n_s32): Remove.
17247 (__arm_vqrshlq_m_s8): Remove.
17248 (__arm_vqrshlq_m_s32): Remove.
17249 (__arm_vqrshlq_m_s16): Remove.
17250 (__arm_vqrshlq_m_u8): Remove.
17251 (__arm_vqrshlq_m_u32): Remove.
17252 (__arm_vqrshlq_m_u16): Remove.
17253 (__arm_vqrshlq): Remove.
17254 (__arm_vqrshlq_m_n): Remove.
17255 (__arm_vqrshlq_m): Remove.
17256
17257 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17258
17259 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
17260 (mve_insn): Add vqrshl, vrshl.
17261 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
17262 (mve_vrshlq_n_<supf><mode>): Merge into ...
17263 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
17264 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
17265 into ...
17266 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17267
17268 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17269
17270 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
17271 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
17272
17273 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17274
17275 PR target/109615
17276 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
17277 denegrate PHI optmization.
17278
17279 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
17280
17281 * config/i386/predicates.md (register_no_SP_operand):
17282 Rename from index_register_operand.
17283 (call_register_operand): Update for rename.
17284 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
17285
17286 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17287
17288 PR bootstrap/84402
17289 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
17290 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
17291 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
17292 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
17293 (s-match): Split into s-generic-match and s-gimple-match.
17294 * configure.ac (with-matchpd-partitions,
17295 DEFAULT_MATCHPD_PARTITIONS): New.
17296 * configure: Regenerate.
17297
17298 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17299
17300 PR bootstrap/84402
17301 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
17302 (decision_tree::gen): Accept list of files instead of single and update
17303 to write function definition to header and main file.
17304 (write_predicate): Likewise.
17305 (write_header): Emit pragmas and new includes.
17306 (main): Create file buffers and cleanup.
17307 (showUsage, write_header_includes): New.
17308
17309 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17310
17311 PR bootstrap/84402
17312 * Makefile.in (OBJS): Add gimple-match-exports.o.
17313 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
17314 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
17315 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
17316 gimple_resimplify5, constant_for_folding, convert_conditional_op,
17317 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
17318 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
17319 do_valueize, try_conditional_simplification, gimple_extract,
17320 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
17321 commutative_ternary_op_p, first_commutative_argument,
17322 associative_binary_op_p, directly_supported_p,
17323 get_conditional_internal_fn): Moved to gimple-match-exports.cc
17324 * gimple-match-exports.cc: New file.
17325
17326 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17327
17328 PR bootstrap/84402
17329 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
17330 debug_dump var.
17331 (dt_simplify::gen_1): Use it.
17332
17333 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17334
17335 PR bootstrap/84402
17336 * genmatch.cc (output_line_directive): Only emit commented directive
17337 when -vv.
17338
17339 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17340
17341 PR bootstrap/84402
17342 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
17343
17344 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
17345
17346 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
17347 unused in_mode/in_n variables.
17348
17349 2023-05-05 Richard Biener <rguenther@suse.de>
17350
17351 PR tree-optimization/109735
17352 * tree-vect-stmts.cc (vectorizable_operation): Perform
17353 conversion for POINTER_DIFF_EXPR unconditionally.
17354
17355 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
17356
17357 * config/i386/mmx.md (mulv2si3): New expander.
17358 (*mulv2si3): New insn pattern.
17359
17360 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
17361 Thomas Schwinge <thomas@codesourcery.com>
17362
17363 PR libgomp/108098
17364 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
17365 alongside reverse-offload function table to prevent NULL values
17366 of the function addresses.
17367
17368 2023-05-05 Jakub Jelinek <jakub@redhat.com>
17369
17370 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
17371 mpft_t -> mpfr_t.
17372 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
17373
17374 2023-05-05 Andrew Pinski <apinski@marvell.com>
17375
17376 PR tree-optimization/109732
17377 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
17378 of the argtrue/argfalse.
17379
17380 2023-05-05 Andrew Pinski <apinski@marvell.com>
17381
17382 PR tree-optimization/109722
17383 * match.pd: Extend the `ABS<a> == 0` pattern
17384 to cover `ABSU<a> == 0` too.
17385
17386 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
17387
17388 PR target/109733
17389 * config/i386/predicates.md (index_reg_operand): New predicate.
17390 * config/i386/i386.md (ashift to lea spliter): Use
17391 general_reg_operand and index_reg_operand predicates.
17392
17393 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17394
17395 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
17396 Rename and reimplement with RTL codes to...
17397 (aarch64_<optab>hn2<mode>_insn_le): .. This.
17398 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
17399 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
17400 codes to...
17401 (aarch64_<optab>hn2<mode>_insn_be): ... This.
17402 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
17403 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
17404 (aarch64_<optab>hn2<mode>): ... This.
17405 (aarch64_r<optab>hn2<mode>): New expander.
17406 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
17407 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
17408 (ADDSUBHN): Delete.
17409 (sur): Remove handling of the above.
17410 (addsub): Likewise.
17411
17412 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17413
17414 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
17415 Delete.
17416 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
17417 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
17418 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
17419 (aarch64_<sur><addsub>hn<mode>): Delete.
17420 (aarch64_<optab>hn<mode>): New define_expand.
17421 (aarch64_r<optab>hn<mode>): Likewise.
17422 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
17423 New predicate.
17424
17425 2023-05-04 Andrew Pinski <apinski@marvell.com>
17426
17427 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
17428 diamond form bb with forwarder only empty blocks better.
17429
17430 2023-05-04 Andrew Pinski <apinski@marvell.com>
17431
17432 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
17433 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
17434 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
17435 of an inline version of it.
17436 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
17437 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
17438
17439 2023-05-04 Andrew Pinski <apinski@marvell.com>
17440
17441 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
17442 the default argument value for dce_ssa_names to nullptr.
17443 Check to make sure dce_ssa_names is a non-nullptr before
17444 calling simple_dce_from_worklist.
17445
17446 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
17447
17448 * config/i386/predicates.md (index_register_operand): Reject
17449 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
17450 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
17451 (call_register_no_elim_operand): Rewrite as ...
17452 (call_register_operand): ... this.
17453 (call_insn_operand): Use call_register_operand predicate.
17454
17455 2023-05-04 Richard Biener <rguenther@suse.de>
17456
17457 PR tree-optimization/109721
17458 * tree-vect-stmts.cc (vectorizable_operation): Make sure
17459 to test word_mode for all !target_support_p operations.
17460
17461 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17462
17463 PR target/99195
17464 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
17465 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
17466 (aarch64_mla<mode>): Rename to...
17467 (aarch64_mla<mode><vczle><vczbe>): ... This.
17468 (*aarch64_mla_elt<mode>): Rename to...
17469 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
17470 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
17471 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
17472 (aarch64_mla_n<mode>): Rename to...
17473 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
17474 (aarch64_mls<mode>): Rename to...
17475 (aarch64_mls<mode><vczle><vczbe>): ... This.
17476 (*aarch64_mls_elt<mode>): Rename to...
17477 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
17478 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
17479 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
17480 (aarch64_mls_n<mode>): Rename to...
17481 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
17482 (fma<mode>4): Rename to...
17483 (fma<mode>4<vczle><vczbe>): ... This.
17484 (*aarch64_fma4_elt<mode>): Rename to...
17485 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
17486 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
17487 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
17488 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
17489 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
17490 (fnma<mode>4): Rename to...
17491 (fnma<mode>4<vczle><vczbe>): ... This.
17492 (*aarch64_fnma4_elt<mode>): Rename to...
17493 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
17494 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
17495 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
17496 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
17497 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
17498 (aarch64_simd_bsl<mode>_internal): Rename to...
17499 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
17500 (*aarch64_simd_bsl<mode>_alt): Rename to...
17501 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
17502
17503 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17504
17505 PR target/99195
17506 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
17507 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
17508 (fabd<mode>3): Rename to...
17509 (fabd<mode>3<vczle><vczbe>): ... This.
17510 (aarch64_<optab>p<mode>): Rename to...
17511 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
17512 (aarch64_faddp<mode>): Rename to...
17513 (aarch64_faddp<mode><vczle><vczbe>): ... This.
17514
17515 2023-05-04 Martin Liska <mliska@suse.cz>
17516
17517 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
17518 (print_version): Use it.
17519 (generate_results): Likewise.
17520
17521 2023-05-04 Richard Biener <rguenther@suse.de>
17522
17523 * tree-cfg.h (last_stmt): Rename to ...
17524 (last_nondebug_stmt): ... this.
17525 * tree-cfg.cc (last_stmt): Rename to ...
17526 (last_nondebug_stmt): ... this.
17527 (assign_discriminators): Adjust.
17528 (group_case_labels_stmt): Likewise.
17529 (gimple_can_duplicate_bb_p): Likewise.
17530 (execute_fixup_cfg): Likewise.
17531 * auto-profile.cc (afdo_propagate_circuit): Likewise.
17532 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
17533 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
17534 (determine_parallel_type): Likewise.
17535 (adjust_context_and_scope): Likewise.
17536 (expand_task_call): Likewise.
17537 (remove_exit_barrier): Likewise.
17538 (expand_omp_taskreg): Likewise.
17539 (expand_omp_for_init_counts): Likewise.
17540 (expand_omp_for_init_vars): Likewise.
17541 (expand_omp_for_static_chunk): Likewise.
17542 (expand_omp_simd): Likewise.
17543 (expand_oacc_for): Likewise.
17544 (expand_omp_for): Likewise.
17545 (expand_omp_sections): Likewise.
17546 (expand_omp_atomic_fetch_op): Likewise.
17547 (expand_omp_atomic_cas): Likewise.
17548 (expand_omp_atomic): Likewise.
17549 (expand_omp_target): Likewise.
17550 (expand_omp): Likewise.
17551 (omp_make_gimple_edges): Likewise.
17552 * trans-mem.cc (tm_region_init): Likewise.
17553 * tree-inline.cc (redirect_all_calls): Likewise.
17554 * tree-parloops.cc (gen_parallel_loop): Likewise.
17555 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
17556 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
17557 Likewise.
17558 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
17559 (may_eliminate_iv): Likewise.
17560 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
17561 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
17562 Likewise.
17563 (estimate_numbers_of_iterations): Likewise.
17564 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
17565 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
17566 (set_predicates_for_bb): Likewise.
17567 (init_loop_unswitch_info): Likewise.
17568 (hoist_guard): Likewise.
17569 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
17570 (minmax_replacement): Likewise.
17571 * tree-ssa-reassoc.cc (update_range_test): Likewise.
17572 (optimize_range_tests_to_bit_test): Likewise.
17573 (optimize_range_tests_var_bound): Likewise.
17574 (optimize_range_tests): Likewise.
17575 (no_side_effect_bb): Likewise.
17576 (suitable_cond_bb): Likewise.
17577 (maybe_optimize_range_tests): Likewise.
17578 (reassociate_bb): Likewise.
17579 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
17580
17581 2023-05-04 Jakub Jelinek <jakub@redhat.com>
17582
17583 PR debug/109676
17584 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
17585 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
17586 for it only if it still has TImode. Don't decide whether to call
17587 fix_debug_reg_uses based on whether SRC is ever set or not.
17588
17589 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
17590
17591 * config/cris/cris.cc (cris_split_constant): New function.
17592 * config/cris/cris.md (splitop): New iterator.
17593 (opsplit1): New define_peephole2.
17594 * config/cris/cris-protos.h (cris_split_constant): Declare.
17595 (cris_splittable_constant_p): New macro.
17596
17597 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
17598
17599 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
17600 to ALL_REGS.
17601
17602 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
17603
17604 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
17605 lra_in_progress, not reload_in_progress.
17606 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
17607 * config/cris/constraints.md ("Q"): Ditto.
17608
17609 2023-05-03 Andrew Pinski <apinski@marvell.com>
17610
17611 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
17612 stats on removed number of statements and phis.
17613
17614 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
17615
17616 PR tree-optimization/109711
17617 * value-range.cc (irange::verify_range): Allow types of
17618 error_mark_node.
17619
17620 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
17621
17622 PR sanitizer/90746
17623 * calls.cc (can_implement_as_sibling_call_p): Reject calls
17624 to __sanitizer_cov_trace_pc.
17625
17626 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
17627
17628 PR target/109661
17629 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
17630 a new ABI break parameter for GCC 14. Set it to the alignment
17631 of enums that have an underlying type. Take the true alignment
17632 of such enums from the TYPE_ALIGN of the underlying type's
17633 TYPE_MAIN_VARIANT.
17634 (aarch64_function_arg_boundary): Update accordingly.
17635 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
17636 Warn about ABI differences.
17637
17638 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
17639
17640 PR target/109661
17641 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
17642 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
17643 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
17644 (aarch64_gimplify_va_arg_expr): Likewise.
17645
17646 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
17647
17648 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
17649 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
17650 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
17651 (vrmulhq): New.
17652 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
17653 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
17654 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
17655 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
17656 * config/arm/arm_mve.h (vhsubq): Remove.
17657 (vhaddq): Remove.
17658 (vhaddq_m): Remove.
17659 (vhsubq_m): Remove.
17660 (vhaddq_x): Remove.
17661 (vhsubq_x): Remove.
17662 (vhsubq_u8): Remove.
17663 (vhsubq_n_u8): Remove.
17664 (vhaddq_u8): Remove.
17665 (vhaddq_n_u8): Remove.
17666 (vhsubq_s8): Remove.
17667 (vhsubq_n_s8): Remove.
17668 (vhaddq_s8): Remove.
17669 (vhaddq_n_s8): Remove.
17670 (vhsubq_u16): Remove.
17671 (vhsubq_n_u16): Remove.
17672 (vhaddq_u16): Remove.
17673 (vhaddq_n_u16): Remove.
17674 (vhsubq_s16): Remove.
17675 (vhsubq_n_s16): Remove.
17676 (vhaddq_s16): Remove.
17677 (vhaddq_n_s16): Remove.
17678 (vhsubq_u32): Remove.
17679 (vhsubq_n_u32): Remove.
17680 (vhaddq_u32): Remove.
17681 (vhaddq_n_u32): Remove.
17682 (vhsubq_s32): Remove.
17683 (vhsubq_n_s32): Remove.
17684 (vhaddq_s32): Remove.
17685 (vhaddq_n_s32): Remove.
17686 (vhaddq_m_n_s8): Remove.
17687 (vhaddq_m_n_s32): Remove.
17688 (vhaddq_m_n_s16): Remove.
17689 (vhaddq_m_n_u8): Remove.
17690 (vhaddq_m_n_u32): Remove.
17691 (vhaddq_m_n_u16): Remove.
17692 (vhaddq_m_s8): Remove.
17693 (vhaddq_m_s32): Remove.
17694 (vhaddq_m_s16): Remove.
17695 (vhaddq_m_u8): Remove.
17696 (vhaddq_m_u32): Remove.
17697 (vhaddq_m_u16): Remove.
17698 (vhsubq_m_n_s8): Remove.
17699 (vhsubq_m_n_s32): Remove.
17700 (vhsubq_m_n_s16): Remove.
17701 (vhsubq_m_n_u8): Remove.
17702 (vhsubq_m_n_u32): Remove.
17703 (vhsubq_m_n_u16): Remove.
17704 (vhsubq_m_s8): Remove.
17705 (vhsubq_m_s32): Remove.
17706 (vhsubq_m_s16): Remove.
17707 (vhsubq_m_u8): Remove.
17708 (vhsubq_m_u32): Remove.
17709 (vhsubq_m_u16): Remove.
17710 (vhaddq_x_n_s8): Remove.
17711 (vhaddq_x_n_s16): Remove.
17712 (vhaddq_x_n_s32): Remove.
17713 (vhaddq_x_n_u8): Remove.
17714 (vhaddq_x_n_u16): Remove.
17715 (vhaddq_x_n_u32): Remove.
17716 (vhaddq_x_s8): Remove.
17717 (vhaddq_x_s16): Remove.
17718 (vhaddq_x_s32): Remove.
17719 (vhaddq_x_u8): Remove.
17720 (vhaddq_x_u16): Remove.
17721 (vhaddq_x_u32): Remove.
17722 (vhsubq_x_n_s8): Remove.
17723 (vhsubq_x_n_s16): Remove.
17724 (vhsubq_x_n_s32): Remove.
17725 (vhsubq_x_n_u8): Remove.
17726 (vhsubq_x_n_u16): Remove.
17727 (vhsubq_x_n_u32): Remove.
17728 (vhsubq_x_s8): Remove.
17729 (vhsubq_x_s16): Remove.
17730 (vhsubq_x_s32): Remove.
17731 (vhsubq_x_u8): Remove.
17732 (vhsubq_x_u16): Remove.
17733 (vhsubq_x_u32): Remove.
17734 (__arm_vhsubq_u8): Remove.
17735 (__arm_vhsubq_n_u8): Remove.
17736 (__arm_vhaddq_u8): Remove.
17737 (__arm_vhaddq_n_u8): Remove.
17738 (__arm_vhsubq_s8): Remove.
17739 (__arm_vhsubq_n_s8): Remove.
17740 (__arm_vhaddq_s8): Remove.
17741 (__arm_vhaddq_n_s8): Remove.
17742 (__arm_vhsubq_u16): Remove.
17743 (__arm_vhsubq_n_u16): Remove.
17744 (__arm_vhaddq_u16): Remove.
17745 (__arm_vhaddq_n_u16): Remove.
17746 (__arm_vhsubq_s16): Remove.
17747 (__arm_vhsubq_n_s16): Remove.
17748 (__arm_vhaddq_s16): Remove.
17749 (__arm_vhaddq_n_s16): Remove.
17750 (__arm_vhsubq_u32): Remove.
17751 (__arm_vhsubq_n_u32): Remove.
17752 (__arm_vhaddq_u32): Remove.
17753 (__arm_vhaddq_n_u32): Remove.
17754 (__arm_vhsubq_s32): Remove.
17755 (__arm_vhsubq_n_s32): Remove.
17756 (__arm_vhaddq_s32): Remove.
17757 (__arm_vhaddq_n_s32): Remove.
17758 (__arm_vhaddq_m_n_s8): Remove.
17759 (__arm_vhaddq_m_n_s32): Remove.
17760 (__arm_vhaddq_m_n_s16): Remove.
17761 (__arm_vhaddq_m_n_u8): Remove.
17762 (__arm_vhaddq_m_n_u32): Remove.
17763 (__arm_vhaddq_m_n_u16): Remove.
17764 (__arm_vhaddq_m_s8): Remove.
17765 (__arm_vhaddq_m_s32): Remove.
17766 (__arm_vhaddq_m_s16): Remove.
17767 (__arm_vhaddq_m_u8): Remove.
17768 (__arm_vhaddq_m_u32): Remove.
17769 (__arm_vhaddq_m_u16): Remove.
17770 (__arm_vhsubq_m_n_s8): Remove.
17771 (__arm_vhsubq_m_n_s32): Remove.
17772 (__arm_vhsubq_m_n_s16): Remove.
17773 (__arm_vhsubq_m_n_u8): Remove.
17774 (__arm_vhsubq_m_n_u32): Remove.
17775 (__arm_vhsubq_m_n_u16): Remove.
17776 (__arm_vhsubq_m_s8): Remove.
17777 (__arm_vhsubq_m_s32): Remove.
17778 (__arm_vhsubq_m_s16): Remove.
17779 (__arm_vhsubq_m_u8): Remove.
17780 (__arm_vhsubq_m_u32): Remove.
17781 (__arm_vhsubq_m_u16): Remove.
17782 (__arm_vhaddq_x_n_s8): Remove.
17783 (__arm_vhaddq_x_n_s16): Remove.
17784 (__arm_vhaddq_x_n_s32): Remove.
17785 (__arm_vhaddq_x_n_u8): Remove.
17786 (__arm_vhaddq_x_n_u16): Remove.
17787 (__arm_vhaddq_x_n_u32): Remove.
17788 (__arm_vhaddq_x_s8): Remove.
17789 (__arm_vhaddq_x_s16): Remove.
17790 (__arm_vhaddq_x_s32): Remove.
17791 (__arm_vhaddq_x_u8): Remove.
17792 (__arm_vhaddq_x_u16): Remove.
17793 (__arm_vhaddq_x_u32): Remove.
17794 (__arm_vhsubq_x_n_s8): Remove.
17795 (__arm_vhsubq_x_n_s16): Remove.
17796 (__arm_vhsubq_x_n_s32): Remove.
17797 (__arm_vhsubq_x_n_u8): Remove.
17798 (__arm_vhsubq_x_n_u16): Remove.
17799 (__arm_vhsubq_x_n_u32): Remove.
17800 (__arm_vhsubq_x_s8): Remove.
17801 (__arm_vhsubq_x_s16): Remove.
17802 (__arm_vhsubq_x_s32): Remove.
17803 (__arm_vhsubq_x_u8): Remove.
17804 (__arm_vhsubq_x_u16): Remove.
17805 (__arm_vhsubq_x_u32): Remove.
17806 (__arm_vhsubq): Remove.
17807 (__arm_vhaddq): Remove.
17808 (__arm_vhaddq_m): Remove.
17809 (__arm_vhsubq_m): Remove.
17810 (__arm_vhaddq_x): Remove.
17811 (__arm_vhsubq_x): Remove.
17812 (vmulhq): Remove.
17813 (vmulhq_m): Remove.
17814 (vmulhq_x): Remove.
17815 (vmulhq_u8): Remove.
17816 (vmulhq_s8): Remove.
17817 (vmulhq_u16): Remove.
17818 (vmulhq_s16): Remove.
17819 (vmulhq_u32): Remove.
17820 (vmulhq_s32): Remove.
17821 (vmulhq_m_s8): Remove.
17822 (vmulhq_m_s32): Remove.
17823 (vmulhq_m_s16): Remove.
17824 (vmulhq_m_u8): Remove.
17825 (vmulhq_m_u32): Remove.
17826 (vmulhq_m_u16): Remove.
17827 (vmulhq_x_s8): Remove.
17828 (vmulhq_x_s16): Remove.
17829 (vmulhq_x_s32): Remove.
17830 (vmulhq_x_u8): Remove.
17831 (vmulhq_x_u16): Remove.
17832 (vmulhq_x_u32): Remove.
17833 (__arm_vmulhq_u8): Remove.
17834 (__arm_vmulhq_s8): Remove.
17835 (__arm_vmulhq_u16): Remove.
17836 (__arm_vmulhq_s16): Remove.
17837 (__arm_vmulhq_u32): Remove.
17838 (__arm_vmulhq_s32): Remove.
17839 (__arm_vmulhq_m_s8): Remove.
17840 (__arm_vmulhq_m_s32): Remove.
17841 (__arm_vmulhq_m_s16): Remove.
17842 (__arm_vmulhq_m_u8): Remove.
17843 (__arm_vmulhq_m_u32): Remove.
17844 (__arm_vmulhq_m_u16): Remove.
17845 (__arm_vmulhq_x_s8): Remove.
17846 (__arm_vmulhq_x_s16): Remove.
17847 (__arm_vmulhq_x_s32): Remove.
17848 (__arm_vmulhq_x_u8): Remove.
17849 (__arm_vmulhq_x_u16): Remove.
17850 (__arm_vmulhq_x_u32): Remove.
17851 (__arm_vmulhq): Remove.
17852 (__arm_vmulhq_m): Remove.
17853 (__arm_vmulhq_x): Remove.
17854 (vqsubq): Remove.
17855 (vqaddq): Remove.
17856 (vqaddq_m): Remove.
17857 (vqsubq_m): Remove.
17858 (vqsubq_u8): Remove.
17859 (vqsubq_n_u8): Remove.
17860 (vqaddq_u8): Remove.
17861 (vqaddq_n_u8): Remove.
17862 (vqsubq_s8): Remove.
17863 (vqsubq_n_s8): Remove.
17864 (vqaddq_s8): Remove.
17865 (vqaddq_n_s8): Remove.
17866 (vqsubq_u16): Remove.
17867 (vqsubq_n_u16): Remove.
17868 (vqaddq_u16): Remove.
17869 (vqaddq_n_u16): Remove.
17870 (vqsubq_s16): Remove.
17871 (vqsubq_n_s16): Remove.
17872 (vqaddq_s16): Remove.
17873 (vqaddq_n_s16): Remove.
17874 (vqsubq_u32): Remove.
17875 (vqsubq_n_u32): Remove.
17876 (vqaddq_u32): Remove.
17877 (vqaddq_n_u32): Remove.
17878 (vqsubq_s32): Remove.
17879 (vqsubq_n_s32): Remove.
17880 (vqaddq_s32): Remove.
17881 (vqaddq_n_s32): Remove.
17882 (vqaddq_m_n_s8): Remove.
17883 (vqaddq_m_n_s32): Remove.
17884 (vqaddq_m_n_s16): Remove.
17885 (vqaddq_m_n_u8): Remove.
17886 (vqaddq_m_n_u32): Remove.
17887 (vqaddq_m_n_u16): Remove.
17888 (vqaddq_m_s8): Remove.
17889 (vqaddq_m_s32): Remove.
17890 (vqaddq_m_s16): Remove.
17891 (vqaddq_m_u8): Remove.
17892 (vqaddq_m_u32): Remove.
17893 (vqaddq_m_u16): Remove.
17894 (vqsubq_m_n_s8): Remove.
17895 (vqsubq_m_n_s32): Remove.
17896 (vqsubq_m_n_s16): Remove.
17897 (vqsubq_m_n_u8): Remove.
17898 (vqsubq_m_n_u32): Remove.
17899 (vqsubq_m_n_u16): Remove.
17900 (vqsubq_m_s8): Remove.
17901 (vqsubq_m_s32): Remove.
17902 (vqsubq_m_s16): Remove.
17903 (vqsubq_m_u8): Remove.
17904 (vqsubq_m_u32): Remove.
17905 (vqsubq_m_u16): Remove.
17906 (__arm_vqsubq_u8): Remove.
17907 (__arm_vqsubq_n_u8): Remove.
17908 (__arm_vqaddq_u8): Remove.
17909 (__arm_vqaddq_n_u8): Remove.
17910 (__arm_vqsubq_s8): Remove.
17911 (__arm_vqsubq_n_s8): Remove.
17912 (__arm_vqaddq_s8): Remove.
17913 (__arm_vqaddq_n_s8): Remove.
17914 (__arm_vqsubq_u16): Remove.
17915 (__arm_vqsubq_n_u16): Remove.
17916 (__arm_vqaddq_u16): Remove.
17917 (__arm_vqaddq_n_u16): Remove.
17918 (__arm_vqsubq_s16): Remove.
17919 (__arm_vqsubq_n_s16): Remove.
17920 (__arm_vqaddq_s16): Remove.
17921 (__arm_vqaddq_n_s16): Remove.
17922 (__arm_vqsubq_u32): Remove.
17923 (__arm_vqsubq_n_u32): Remove.
17924 (__arm_vqaddq_u32): Remove.
17925 (__arm_vqaddq_n_u32): Remove.
17926 (__arm_vqsubq_s32): Remove.
17927 (__arm_vqsubq_n_s32): Remove.
17928 (__arm_vqaddq_s32): Remove.
17929 (__arm_vqaddq_n_s32): Remove.
17930 (__arm_vqaddq_m_n_s8): Remove.
17931 (__arm_vqaddq_m_n_s32): Remove.
17932 (__arm_vqaddq_m_n_s16): Remove.
17933 (__arm_vqaddq_m_n_u8): Remove.
17934 (__arm_vqaddq_m_n_u32): Remove.
17935 (__arm_vqaddq_m_n_u16): Remove.
17936 (__arm_vqaddq_m_s8): Remove.
17937 (__arm_vqaddq_m_s32): Remove.
17938 (__arm_vqaddq_m_s16): Remove.
17939 (__arm_vqaddq_m_u8): Remove.
17940 (__arm_vqaddq_m_u32): Remove.
17941 (__arm_vqaddq_m_u16): Remove.
17942 (__arm_vqsubq_m_n_s8): Remove.
17943 (__arm_vqsubq_m_n_s32): Remove.
17944 (__arm_vqsubq_m_n_s16): Remove.
17945 (__arm_vqsubq_m_n_u8): Remove.
17946 (__arm_vqsubq_m_n_u32): Remove.
17947 (__arm_vqsubq_m_n_u16): Remove.
17948 (__arm_vqsubq_m_s8): Remove.
17949 (__arm_vqsubq_m_s32): Remove.
17950 (__arm_vqsubq_m_s16): Remove.
17951 (__arm_vqsubq_m_u8): Remove.
17952 (__arm_vqsubq_m_u32): Remove.
17953 (__arm_vqsubq_m_u16): Remove.
17954 (__arm_vqsubq): Remove.
17955 (__arm_vqaddq): Remove.
17956 (__arm_vqaddq_m): Remove.
17957 (__arm_vqsubq_m): Remove.
17958 (vqdmulhq): Remove.
17959 (vqdmulhq_m): Remove.
17960 (vqdmulhq_s8): Remove.
17961 (vqdmulhq_n_s8): Remove.
17962 (vqdmulhq_s16): Remove.
17963 (vqdmulhq_n_s16): Remove.
17964 (vqdmulhq_s32): Remove.
17965 (vqdmulhq_n_s32): Remove.
17966 (vqdmulhq_m_n_s8): Remove.
17967 (vqdmulhq_m_n_s32): Remove.
17968 (vqdmulhq_m_n_s16): Remove.
17969 (vqdmulhq_m_s8): Remove.
17970 (vqdmulhq_m_s32): Remove.
17971 (vqdmulhq_m_s16): Remove.
17972 (__arm_vqdmulhq_s8): Remove.
17973 (__arm_vqdmulhq_n_s8): Remove.
17974 (__arm_vqdmulhq_s16): Remove.
17975 (__arm_vqdmulhq_n_s16): Remove.
17976 (__arm_vqdmulhq_s32): Remove.
17977 (__arm_vqdmulhq_n_s32): Remove.
17978 (__arm_vqdmulhq_m_n_s8): Remove.
17979 (__arm_vqdmulhq_m_n_s32): Remove.
17980 (__arm_vqdmulhq_m_n_s16): Remove.
17981 (__arm_vqdmulhq_m_s8): Remove.
17982 (__arm_vqdmulhq_m_s32): Remove.
17983 (__arm_vqdmulhq_m_s16): Remove.
17984 (__arm_vqdmulhq): Remove.
17985 (__arm_vqdmulhq_m): Remove.
17986 (vrhaddq): Remove.
17987 (vrhaddq_m): Remove.
17988 (vrhaddq_x): Remove.
17989 (vrhaddq_u8): Remove.
17990 (vrhaddq_s8): Remove.
17991 (vrhaddq_u16): Remove.
17992 (vrhaddq_s16): Remove.
17993 (vrhaddq_u32): Remove.
17994 (vrhaddq_s32): Remove.
17995 (vrhaddq_m_s8): Remove.
17996 (vrhaddq_m_s32): Remove.
17997 (vrhaddq_m_s16): Remove.
17998 (vrhaddq_m_u8): Remove.
17999 (vrhaddq_m_u32): Remove.
18000 (vrhaddq_m_u16): Remove.
18001 (vrhaddq_x_s8): Remove.
18002 (vrhaddq_x_s16): Remove.
18003 (vrhaddq_x_s32): Remove.
18004 (vrhaddq_x_u8): Remove.
18005 (vrhaddq_x_u16): Remove.
18006 (vrhaddq_x_u32): Remove.
18007 (__arm_vrhaddq_u8): Remove.
18008 (__arm_vrhaddq_s8): Remove.
18009 (__arm_vrhaddq_u16): Remove.
18010 (__arm_vrhaddq_s16): Remove.
18011 (__arm_vrhaddq_u32): Remove.
18012 (__arm_vrhaddq_s32): Remove.
18013 (__arm_vrhaddq_m_s8): Remove.
18014 (__arm_vrhaddq_m_s32): Remove.
18015 (__arm_vrhaddq_m_s16): Remove.
18016 (__arm_vrhaddq_m_u8): Remove.
18017 (__arm_vrhaddq_m_u32): Remove.
18018 (__arm_vrhaddq_m_u16): Remove.
18019 (__arm_vrhaddq_x_s8): Remove.
18020 (__arm_vrhaddq_x_s16): Remove.
18021 (__arm_vrhaddq_x_s32): Remove.
18022 (__arm_vrhaddq_x_u8): Remove.
18023 (__arm_vrhaddq_x_u16): Remove.
18024 (__arm_vrhaddq_x_u32): Remove.
18025 (__arm_vrhaddq): Remove.
18026 (__arm_vrhaddq_m): Remove.
18027 (__arm_vrhaddq_x): Remove.
18028 (vrmulhq): Remove.
18029 (vrmulhq_m): Remove.
18030 (vrmulhq_x): Remove.
18031 (vrmulhq_u8): Remove.
18032 (vrmulhq_s8): Remove.
18033 (vrmulhq_u16): Remove.
18034 (vrmulhq_s16): Remove.
18035 (vrmulhq_u32): Remove.
18036 (vrmulhq_s32): Remove.
18037 (vrmulhq_m_s8): Remove.
18038 (vrmulhq_m_s32): Remove.
18039 (vrmulhq_m_s16): Remove.
18040 (vrmulhq_m_u8): Remove.
18041 (vrmulhq_m_u32): Remove.
18042 (vrmulhq_m_u16): Remove.
18043 (vrmulhq_x_s8): Remove.
18044 (vrmulhq_x_s16): Remove.
18045 (vrmulhq_x_s32): Remove.
18046 (vrmulhq_x_u8): Remove.
18047 (vrmulhq_x_u16): Remove.
18048 (vrmulhq_x_u32): Remove.
18049 (__arm_vrmulhq_u8): Remove.
18050 (__arm_vrmulhq_s8): Remove.
18051 (__arm_vrmulhq_u16): Remove.
18052 (__arm_vrmulhq_s16): Remove.
18053 (__arm_vrmulhq_u32): Remove.
18054 (__arm_vrmulhq_s32): Remove.
18055 (__arm_vrmulhq_m_s8): Remove.
18056 (__arm_vrmulhq_m_s32): Remove.
18057 (__arm_vrmulhq_m_s16): Remove.
18058 (__arm_vrmulhq_m_u8): Remove.
18059 (__arm_vrmulhq_m_u32): Remove.
18060 (__arm_vrmulhq_m_u16): Remove.
18061 (__arm_vrmulhq_x_s8): Remove.
18062 (__arm_vrmulhq_x_s16): Remove.
18063 (__arm_vrmulhq_x_s32): Remove.
18064 (__arm_vrmulhq_x_u8): Remove.
18065 (__arm_vrmulhq_x_u16): Remove.
18066 (__arm_vrmulhq_x_u32): Remove.
18067 (__arm_vrmulhq): Remove.
18068 (__arm_vrmulhq_m): Remove.
18069 (__arm_vrmulhq_x): Remove.
18070
18071 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18072
18073 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
18074 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
18075 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
18076 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
18077 * config/arm/mve.md (mve_vabdq_<supf><mode>)
18078 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
18079 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
18080 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
18081 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
18082 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
18083 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
18084 ...
18085 (@mve_<mve_insn>q_<supf><mode>): ... this.
18086 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
18087 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
18088 gen_mve_vhaddq / gen_mve_vrhaddq.
18089
18090 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18091
18092 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
18093 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
18094 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
18095 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
18096 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
18097 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
18098 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
18099 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
18100 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
18101 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
18102 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
18103 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
18104 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18105
18106 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18107
18108 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
18109 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
18110 vqsubq.
18111 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
18112 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
18113 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
18114 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
18115 (mve_vqsubq_n_<supf><mode>): Merge into ...
18116 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18117
18118 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18119
18120 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
18121 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
18122 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
18123 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
18124 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
18125 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
18126 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
18127 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
18128 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
18129 (mve_vshlq_m_<supf><mode>): Merged into
18130 @mve_<mve_insn>q_m_<supf><mode>.
18131 (mve_vabdq_m_<supf><mode>): Likewise.
18132 (mve_vhaddq_m_<supf><mode>): Likewise.
18133 (mve_vhsubq_m_<supf><mode>): Likewise.
18134 (mve_vmaxq_m_<supf><mode>): Likewise.
18135 (mve_vminq_m_<supf><mode>): Likewise.
18136 (mve_vmulhq_m_<supf><mode>): Likewise.
18137 (mve_vqaddq_m_<supf><mode>): Likewise.
18138 (mve_vqrshlq_m_<supf><mode>): Likewise.
18139 (mve_vqshlq_m_<supf><mode>): Likewise.
18140 (mve_vqsubq_m_<supf><mode>): Likewise.
18141 (mve_vrhaddq_m_<supf><mode>): Likewise.
18142 (mve_vrmulhq_m_<supf><mode>): Likewise.
18143 (mve_vrshlq_m_<supf><mode>): Likewise.
18144 (mve_vqdmladhq_m_s<mode>): Likewise.
18145 (mve_vqdmladhxq_m_s<mode>): Likewise.
18146 (mve_vqdmlsdhq_m_s<mode>): Likewise.
18147 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
18148 (mve_vqdmulhq_m_s<mode>): Likewise.
18149 (mve_vqrdmladhq_m_s<mode>): Likewise.
18150 (mve_vqrdmladhxq_m_s<mode>): Likewise.
18151 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
18152 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
18153 (mve_vqrdmulhq_m_s<mode>): Likewise.
18154
18155 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18156
18157 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
18158 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
18159 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
18160 * config/arm/arm_mve.h (vcreateq_f16): Remove.
18161 (vcreateq_f32): Remove.
18162 (vcreateq_u8): Remove.
18163 (vcreateq_u16): Remove.
18164 (vcreateq_u32): Remove.
18165 (vcreateq_u64): Remove.
18166 (vcreateq_s8): Remove.
18167 (vcreateq_s16): Remove.
18168 (vcreateq_s32): Remove.
18169 (vcreateq_s64): Remove.
18170 (__arm_vcreateq_u8): Remove.
18171 (__arm_vcreateq_u16): Remove.
18172 (__arm_vcreateq_u32): Remove.
18173 (__arm_vcreateq_u64): Remove.
18174 (__arm_vcreateq_s8): Remove.
18175 (__arm_vcreateq_s16): Remove.
18176 (__arm_vcreateq_s32): Remove.
18177 (__arm_vcreateq_s64): Remove.
18178 (__arm_vcreateq_f16): Remove.
18179 (__arm_vcreateq_f32): Remove.
18180
18181 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18182
18183 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
18184 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
18185 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
18186 (@mve_<mve_insn>q_f<mode>): ... this.
18187 (mve_vcreateq_<supf><mode>): Rename into ...
18188 (@mve_<mve_insn>q_<supf><mode>): ... this.
18189
18190 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18191
18192 * config/arm/arm-mve-builtins-shapes.cc (create): New.
18193 * config/arm/arm-mve-builtins-shapes.h: (create): New.
18194
18195 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18196
18197 * config/arm/arm-mve-builtins-functions.h (class
18198 unspec_mve_function_exact_insn): New.
18199
18200 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18201
18202 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
18203 (vorrq): New.
18204 * config/arm/arm-mve-builtins-base.def (vorrq): New.
18205 * config/arm/arm-mve-builtins-base.h (vorrq): New.
18206 * config/arm/arm-mve-builtins.cc
18207 (function_instance::has_inactive_argument): Handle vorrq.
18208 * config/arm/arm_mve.h (vorrq): Remove.
18209 (vorrq_m_n): Remove.
18210 (vorrq_m): Remove.
18211 (vorrq_x): Remove.
18212 (vorrq_u8): Remove.
18213 (vorrq_s8): Remove.
18214 (vorrq_u16): Remove.
18215 (vorrq_s16): Remove.
18216 (vorrq_u32): Remove.
18217 (vorrq_s32): Remove.
18218 (vorrq_n_u16): Remove.
18219 (vorrq_f16): Remove.
18220 (vorrq_n_s16): Remove.
18221 (vorrq_n_u32): Remove.
18222 (vorrq_f32): Remove.
18223 (vorrq_n_s32): Remove.
18224 (vorrq_m_n_s16): Remove.
18225 (vorrq_m_n_u16): Remove.
18226 (vorrq_m_n_s32): Remove.
18227 (vorrq_m_n_u32): Remove.
18228 (vorrq_m_s8): Remove.
18229 (vorrq_m_s32): Remove.
18230 (vorrq_m_s16): Remove.
18231 (vorrq_m_u8): Remove.
18232 (vorrq_m_u32): Remove.
18233 (vorrq_m_u16): Remove.
18234 (vorrq_m_f32): Remove.
18235 (vorrq_m_f16): Remove.
18236 (vorrq_x_s8): Remove.
18237 (vorrq_x_s16): Remove.
18238 (vorrq_x_s32): Remove.
18239 (vorrq_x_u8): Remove.
18240 (vorrq_x_u16): Remove.
18241 (vorrq_x_u32): Remove.
18242 (vorrq_x_f16): Remove.
18243 (vorrq_x_f32): Remove.
18244 (__arm_vorrq_u8): Remove.
18245 (__arm_vorrq_s8): Remove.
18246 (__arm_vorrq_u16): Remove.
18247 (__arm_vorrq_s16): Remove.
18248 (__arm_vorrq_u32): Remove.
18249 (__arm_vorrq_s32): Remove.
18250 (__arm_vorrq_n_u16): Remove.
18251 (__arm_vorrq_n_s16): Remove.
18252 (__arm_vorrq_n_u32): Remove.
18253 (__arm_vorrq_n_s32): Remove.
18254 (__arm_vorrq_m_n_s16): Remove.
18255 (__arm_vorrq_m_n_u16): Remove.
18256 (__arm_vorrq_m_n_s32): Remove.
18257 (__arm_vorrq_m_n_u32): Remove.
18258 (__arm_vorrq_m_s8): Remove.
18259 (__arm_vorrq_m_s32): Remove.
18260 (__arm_vorrq_m_s16): Remove.
18261 (__arm_vorrq_m_u8): Remove.
18262 (__arm_vorrq_m_u32): Remove.
18263 (__arm_vorrq_m_u16): Remove.
18264 (__arm_vorrq_x_s8): Remove.
18265 (__arm_vorrq_x_s16): Remove.
18266 (__arm_vorrq_x_s32): Remove.
18267 (__arm_vorrq_x_u8): Remove.
18268 (__arm_vorrq_x_u16): Remove.
18269 (__arm_vorrq_x_u32): Remove.
18270 (__arm_vorrq_f16): Remove.
18271 (__arm_vorrq_f32): Remove.
18272 (__arm_vorrq_m_f32): Remove.
18273 (__arm_vorrq_m_f16): Remove.
18274 (__arm_vorrq_x_f16): Remove.
18275 (__arm_vorrq_x_f32): Remove.
18276 (__arm_vorrq): Remove.
18277 (__arm_vorrq_m_n): Remove.
18278 (__arm_vorrq_m): Remove.
18279 (__arm_vorrq_x): Remove.
18280
18281 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18282
18283 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
18284 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
18285 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
18286 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
18287
18288 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18289
18290 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
18291 (vandq,veorq): New.
18292 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
18293 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
18294 * config/arm/arm_mve.h (vandq): Remove.
18295 (vandq_m): Remove.
18296 (vandq_x): Remove.
18297 (vandq_u8): Remove.
18298 (vandq_s8): Remove.
18299 (vandq_u16): Remove.
18300 (vandq_s16): Remove.
18301 (vandq_u32): Remove.
18302 (vandq_s32): Remove.
18303 (vandq_f16): Remove.
18304 (vandq_f32): Remove.
18305 (vandq_m_s8): Remove.
18306 (vandq_m_s32): Remove.
18307 (vandq_m_s16): Remove.
18308 (vandq_m_u8): Remove.
18309 (vandq_m_u32): Remove.
18310 (vandq_m_u16): Remove.
18311 (vandq_m_f32): Remove.
18312 (vandq_m_f16): Remove.
18313 (vandq_x_s8): Remove.
18314 (vandq_x_s16): Remove.
18315 (vandq_x_s32): Remove.
18316 (vandq_x_u8): Remove.
18317 (vandq_x_u16): Remove.
18318 (vandq_x_u32): Remove.
18319 (vandq_x_f16): Remove.
18320 (vandq_x_f32): Remove.
18321 (__arm_vandq_u8): Remove.
18322 (__arm_vandq_s8): Remove.
18323 (__arm_vandq_u16): Remove.
18324 (__arm_vandq_s16): Remove.
18325 (__arm_vandq_u32): Remove.
18326 (__arm_vandq_s32): Remove.
18327 (__arm_vandq_m_s8): Remove.
18328 (__arm_vandq_m_s32): Remove.
18329 (__arm_vandq_m_s16): Remove.
18330 (__arm_vandq_m_u8): Remove.
18331 (__arm_vandq_m_u32): Remove.
18332 (__arm_vandq_m_u16): Remove.
18333 (__arm_vandq_x_s8): Remove.
18334 (__arm_vandq_x_s16): Remove.
18335 (__arm_vandq_x_s32): Remove.
18336 (__arm_vandq_x_u8): Remove.
18337 (__arm_vandq_x_u16): Remove.
18338 (__arm_vandq_x_u32): Remove.
18339 (__arm_vandq_f16): Remove.
18340 (__arm_vandq_f32): Remove.
18341 (__arm_vandq_m_f32): Remove.
18342 (__arm_vandq_m_f16): Remove.
18343 (__arm_vandq_x_f16): Remove.
18344 (__arm_vandq_x_f32): Remove.
18345 (__arm_vandq): Remove.
18346 (__arm_vandq_m): Remove.
18347 (__arm_vandq_x): Remove.
18348 (veorq_m): Remove.
18349 (veorq_x): Remove.
18350 (veorq_u8): Remove.
18351 (veorq_s8): Remove.
18352 (veorq_u16): Remove.
18353 (veorq_s16): Remove.
18354 (veorq_u32): Remove.
18355 (veorq_s32): Remove.
18356 (veorq_f16): Remove.
18357 (veorq_f32): Remove.
18358 (veorq_m_s8): Remove.
18359 (veorq_m_s32): Remove.
18360 (veorq_m_s16): Remove.
18361 (veorq_m_u8): Remove.
18362 (veorq_m_u32): Remove.
18363 (veorq_m_u16): Remove.
18364 (veorq_m_f32): Remove.
18365 (veorq_m_f16): Remove.
18366 (veorq_x_s8): Remove.
18367 (veorq_x_s16): Remove.
18368 (veorq_x_s32): Remove.
18369 (veorq_x_u8): Remove.
18370 (veorq_x_u16): Remove.
18371 (veorq_x_u32): Remove.
18372 (veorq_x_f16): Remove.
18373 (veorq_x_f32): Remove.
18374 (__arm_veorq_u8): Remove.
18375 (__arm_veorq_s8): Remove.
18376 (__arm_veorq_u16): Remove.
18377 (__arm_veorq_s16): Remove.
18378 (__arm_veorq_u32): Remove.
18379 (__arm_veorq_s32): Remove.
18380 (__arm_veorq_m_s8): Remove.
18381 (__arm_veorq_m_s32): Remove.
18382 (__arm_veorq_m_s16): Remove.
18383 (__arm_veorq_m_u8): Remove.
18384 (__arm_veorq_m_u32): Remove.
18385 (__arm_veorq_m_u16): Remove.
18386 (__arm_veorq_x_s8): Remove.
18387 (__arm_veorq_x_s16): Remove.
18388 (__arm_veorq_x_s32): Remove.
18389 (__arm_veorq_x_u8): Remove.
18390 (__arm_veorq_x_u16): Remove.
18391 (__arm_veorq_x_u32): Remove.
18392 (__arm_veorq_f16): Remove.
18393 (__arm_veorq_f32): Remove.
18394 (__arm_veorq_m_f32): Remove.
18395 (__arm_veorq_m_f16): Remove.
18396 (__arm_veorq_x_f16): Remove.
18397 (__arm_veorq_x_f32): Remove.
18398 (__arm_veorq): Remove.
18399 (__arm_veorq_m): Remove.
18400 (__arm_veorq_x): Remove.
18401
18402 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18403
18404 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
18405 (MVE_FP_M_BINARY_LOGIC): New.
18406 (MVE_INT_M_N_BINARY_LOGIC): New.
18407 (MVE_INT_N_BINARY_LOGIC): New.
18408 (mve_insn): Add vand, veor, vorr, vbic.
18409 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
18410 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
18411 (mve_vbicq_m_<supf><mode>): Merge into ...
18412 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
18413 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
18414 (mve_vbicq_m_f<mode>): Merge into ...
18415 (@mve_<mve_insn>q_m_f<mode>): ... this.
18416 (mve_vorrq_n_<supf><mode>)
18417 (mve_vbicq_n_<supf><mode>): Merge into ...
18418 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18419 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
18420 into ...
18421 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18422
18423 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18424
18425 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
18426 * config/arm/arm-mve-builtins-shapes.h (binary): New.
18427
18428 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18429
18430 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
18431 New.
18432 (vaddq, vmulq, vsubq): New.
18433 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
18434 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
18435 * config/arm/arm_mve.h (vaddq): Remove.
18436 (vaddq_m): Remove.
18437 (vaddq_x): Remove.
18438 (vaddq_n_u8): Remove.
18439 (vaddq_n_s8): Remove.
18440 (vaddq_n_u16): Remove.
18441 (vaddq_n_s16): Remove.
18442 (vaddq_n_u32): Remove.
18443 (vaddq_n_s32): Remove.
18444 (vaddq_n_f16): Remove.
18445 (vaddq_n_f32): Remove.
18446 (vaddq_m_n_s8): Remove.
18447 (vaddq_m_n_s32): Remove.
18448 (vaddq_m_n_s16): Remove.
18449 (vaddq_m_n_u8): Remove.
18450 (vaddq_m_n_u32): Remove.
18451 (vaddq_m_n_u16): Remove.
18452 (vaddq_m_s8): Remove.
18453 (vaddq_m_s32): Remove.
18454 (vaddq_m_s16): Remove.
18455 (vaddq_m_u8): Remove.
18456 (vaddq_m_u32): Remove.
18457 (vaddq_m_u16): Remove.
18458 (vaddq_m_f32): Remove.
18459 (vaddq_m_f16): Remove.
18460 (vaddq_m_n_f32): Remove.
18461 (vaddq_m_n_f16): Remove.
18462 (vaddq_s8): Remove.
18463 (vaddq_s16): Remove.
18464 (vaddq_s32): Remove.
18465 (vaddq_u8): Remove.
18466 (vaddq_u16): Remove.
18467 (vaddq_u32): Remove.
18468 (vaddq_f16): Remove.
18469 (vaddq_f32): Remove.
18470 (vaddq_x_s8): Remove.
18471 (vaddq_x_s16): Remove.
18472 (vaddq_x_s32): Remove.
18473 (vaddq_x_n_s8): Remove.
18474 (vaddq_x_n_s16): Remove.
18475 (vaddq_x_n_s32): Remove.
18476 (vaddq_x_u8): Remove.
18477 (vaddq_x_u16): Remove.
18478 (vaddq_x_u32): Remove.
18479 (vaddq_x_n_u8): Remove.
18480 (vaddq_x_n_u16): Remove.
18481 (vaddq_x_n_u32): Remove.
18482 (vaddq_x_f16): Remove.
18483 (vaddq_x_f32): Remove.
18484 (vaddq_x_n_f16): Remove.
18485 (vaddq_x_n_f32): Remove.
18486 (__arm_vaddq_n_u8): Remove.
18487 (__arm_vaddq_n_s8): Remove.
18488 (__arm_vaddq_n_u16): Remove.
18489 (__arm_vaddq_n_s16): Remove.
18490 (__arm_vaddq_n_u32): Remove.
18491 (__arm_vaddq_n_s32): Remove.
18492 (__arm_vaddq_m_n_s8): Remove.
18493 (__arm_vaddq_m_n_s32): Remove.
18494 (__arm_vaddq_m_n_s16): Remove.
18495 (__arm_vaddq_m_n_u8): Remove.
18496 (__arm_vaddq_m_n_u32): Remove.
18497 (__arm_vaddq_m_n_u16): Remove.
18498 (__arm_vaddq_m_s8): Remove.
18499 (__arm_vaddq_m_s32): Remove.
18500 (__arm_vaddq_m_s16): Remove.
18501 (__arm_vaddq_m_u8): Remove.
18502 (__arm_vaddq_m_u32): Remove.
18503 (__arm_vaddq_m_u16): Remove.
18504 (__arm_vaddq_s8): Remove.
18505 (__arm_vaddq_s16): Remove.
18506 (__arm_vaddq_s32): Remove.
18507 (__arm_vaddq_u8): Remove.
18508 (__arm_vaddq_u16): Remove.
18509 (__arm_vaddq_u32): Remove.
18510 (__arm_vaddq_x_s8): Remove.
18511 (__arm_vaddq_x_s16): Remove.
18512 (__arm_vaddq_x_s32): Remove.
18513 (__arm_vaddq_x_n_s8): Remove.
18514 (__arm_vaddq_x_n_s16): Remove.
18515 (__arm_vaddq_x_n_s32): Remove.
18516 (__arm_vaddq_x_u8): Remove.
18517 (__arm_vaddq_x_u16): Remove.
18518 (__arm_vaddq_x_u32): Remove.
18519 (__arm_vaddq_x_n_u8): Remove.
18520 (__arm_vaddq_x_n_u16): Remove.
18521 (__arm_vaddq_x_n_u32): Remove.
18522 (__arm_vaddq_n_f16): Remove.
18523 (__arm_vaddq_n_f32): Remove.
18524 (__arm_vaddq_m_f32): Remove.
18525 (__arm_vaddq_m_f16): Remove.
18526 (__arm_vaddq_m_n_f32): Remove.
18527 (__arm_vaddq_m_n_f16): Remove.
18528 (__arm_vaddq_f16): Remove.
18529 (__arm_vaddq_f32): Remove.
18530 (__arm_vaddq_x_f16): Remove.
18531 (__arm_vaddq_x_f32): Remove.
18532 (__arm_vaddq_x_n_f16): Remove.
18533 (__arm_vaddq_x_n_f32): Remove.
18534 (__arm_vaddq): Remove.
18535 (__arm_vaddq_m): Remove.
18536 (__arm_vaddq_x): Remove.
18537 (vmulq): Remove.
18538 (vmulq_m): Remove.
18539 (vmulq_x): Remove.
18540 (vmulq_u8): Remove.
18541 (vmulq_n_u8): Remove.
18542 (vmulq_s8): Remove.
18543 (vmulq_n_s8): Remove.
18544 (vmulq_u16): Remove.
18545 (vmulq_n_u16): Remove.
18546 (vmulq_s16): Remove.
18547 (vmulq_n_s16): Remove.
18548 (vmulq_u32): Remove.
18549 (vmulq_n_u32): Remove.
18550 (vmulq_s32): Remove.
18551 (vmulq_n_s32): Remove.
18552 (vmulq_n_f16): Remove.
18553 (vmulq_f16): Remove.
18554 (vmulq_n_f32): Remove.
18555 (vmulq_f32): Remove.
18556 (vmulq_m_n_s8): Remove.
18557 (vmulq_m_n_s32): Remove.
18558 (vmulq_m_n_s16): Remove.
18559 (vmulq_m_n_u8): Remove.
18560 (vmulq_m_n_u32): Remove.
18561 (vmulq_m_n_u16): Remove.
18562 (vmulq_m_s8): Remove.
18563 (vmulq_m_s32): Remove.
18564 (vmulq_m_s16): Remove.
18565 (vmulq_m_u8): Remove.
18566 (vmulq_m_u32): Remove.
18567 (vmulq_m_u16): Remove.
18568 (vmulq_m_f32): Remove.
18569 (vmulq_m_f16): Remove.
18570 (vmulq_m_n_f32): Remove.
18571 (vmulq_m_n_f16): Remove.
18572 (vmulq_x_s8): Remove.
18573 (vmulq_x_s16): Remove.
18574 (vmulq_x_s32): Remove.
18575 (vmulq_x_n_s8): Remove.
18576 (vmulq_x_n_s16): Remove.
18577 (vmulq_x_n_s32): Remove.
18578 (vmulq_x_u8): Remove.
18579 (vmulq_x_u16): Remove.
18580 (vmulq_x_u32): Remove.
18581 (vmulq_x_n_u8): Remove.
18582 (vmulq_x_n_u16): Remove.
18583 (vmulq_x_n_u32): Remove.
18584 (vmulq_x_f16): Remove.
18585 (vmulq_x_f32): Remove.
18586 (vmulq_x_n_f16): Remove.
18587 (vmulq_x_n_f32): Remove.
18588 (__arm_vmulq_u8): Remove.
18589 (__arm_vmulq_n_u8): Remove.
18590 (__arm_vmulq_s8): Remove.
18591 (__arm_vmulq_n_s8): Remove.
18592 (__arm_vmulq_u16): Remove.
18593 (__arm_vmulq_n_u16): Remove.
18594 (__arm_vmulq_s16): Remove.
18595 (__arm_vmulq_n_s16): Remove.
18596 (__arm_vmulq_u32): Remove.
18597 (__arm_vmulq_n_u32): Remove.
18598 (__arm_vmulq_s32): Remove.
18599 (__arm_vmulq_n_s32): Remove.
18600 (__arm_vmulq_m_n_s8): Remove.
18601 (__arm_vmulq_m_n_s32): Remove.
18602 (__arm_vmulq_m_n_s16): Remove.
18603 (__arm_vmulq_m_n_u8): Remove.
18604 (__arm_vmulq_m_n_u32): Remove.
18605 (__arm_vmulq_m_n_u16): Remove.
18606 (__arm_vmulq_m_s8): Remove.
18607 (__arm_vmulq_m_s32): Remove.
18608 (__arm_vmulq_m_s16): Remove.
18609 (__arm_vmulq_m_u8): Remove.
18610 (__arm_vmulq_m_u32): Remove.
18611 (__arm_vmulq_m_u16): Remove.
18612 (__arm_vmulq_x_s8): Remove.
18613 (__arm_vmulq_x_s16): Remove.
18614 (__arm_vmulq_x_s32): Remove.
18615 (__arm_vmulq_x_n_s8): Remove.
18616 (__arm_vmulq_x_n_s16): Remove.
18617 (__arm_vmulq_x_n_s32): Remove.
18618 (__arm_vmulq_x_u8): Remove.
18619 (__arm_vmulq_x_u16): Remove.
18620 (__arm_vmulq_x_u32): Remove.
18621 (__arm_vmulq_x_n_u8): Remove.
18622 (__arm_vmulq_x_n_u16): Remove.
18623 (__arm_vmulq_x_n_u32): Remove.
18624 (__arm_vmulq_n_f16): Remove.
18625 (__arm_vmulq_f16): Remove.
18626 (__arm_vmulq_n_f32): Remove.
18627 (__arm_vmulq_f32): Remove.
18628 (__arm_vmulq_m_f32): Remove.
18629 (__arm_vmulq_m_f16): Remove.
18630 (__arm_vmulq_m_n_f32): Remove.
18631 (__arm_vmulq_m_n_f16): Remove.
18632 (__arm_vmulq_x_f16): Remove.
18633 (__arm_vmulq_x_f32): Remove.
18634 (__arm_vmulq_x_n_f16): Remove.
18635 (__arm_vmulq_x_n_f32): Remove.
18636 (__arm_vmulq): Remove.
18637 (__arm_vmulq_m): Remove.
18638 (__arm_vmulq_x): Remove.
18639 (vsubq): Remove.
18640 (vsubq_m): Remove.
18641 (vsubq_x): Remove.
18642 (vsubq_n_f16): Remove.
18643 (vsubq_n_f32): Remove.
18644 (vsubq_u8): Remove.
18645 (vsubq_n_u8): Remove.
18646 (vsubq_s8): Remove.
18647 (vsubq_n_s8): Remove.
18648 (vsubq_u16): Remove.
18649 (vsubq_n_u16): Remove.
18650 (vsubq_s16): Remove.
18651 (vsubq_n_s16): Remove.
18652 (vsubq_u32): Remove.
18653 (vsubq_n_u32): Remove.
18654 (vsubq_s32): Remove.
18655 (vsubq_n_s32): Remove.
18656 (vsubq_f16): Remove.
18657 (vsubq_f32): Remove.
18658 (vsubq_m_s8): Remove.
18659 (vsubq_m_u8): Remove.
18660 (vsubq_m_s16): Remove.
18661 (vsubq_m_u16): Remove.
18662 (vsubq_m_s32): Remove.
18663 (vsubq_m_u32): Remove.
18664 (vsubq_m_n_s8): Remove.
18665 (vsubq_m_n_s32): Remove.
18666 (vsubq_m_n_s16): Remove.
18667 (vsubq_m_n_u8): Remove.
18668 (vsubq_m_n_u32): Remove.
18669 (vsubq_m_n_u16): Remove.
18670 (vsubq_m_f32): Remove.
18671 (vsubq_m_f16): Remove.
18672 (vsubq_m_n_f32): Remove.
18673 (vsubq_m_n_f16): Remove.
18674 (vsubq_x_s8): Remove.
18675 (vsubq_x_s16): Remove.
18676 (vsubq_x_s32): Remove.
18677 (vsubq_x_n_s8): Remove.
18678 (vsubq_x_n_s16): Remove.
18679 (vsubq_x_n_s32): Remove.
18680 (vsubq_x_u8): Remove.
18681 (vsubq_x_u16): Remove.
18682 (vsubq_x_u32): Remove.
18683 (vsubq_x_n_u8): Remove.
18684 (vsubq_x_n_u16): Remove.
18685 (vsubq_x_n_u32): Remove.
18686 (vsubq_x_f16): Remove.
18687 (vsubq_x_f32): Remove.
18688 (vsubq_x_n_f16): Remove.
18689 (vsubq_x_n_f32): Remove.
18690 (__arm_vsubq_u8): Remove.
18691 (__arm_vsubq_n_u8): Remove.
18692 (__arm_vsubq_s8): Remove.
18693 (__arm_vsubq_n_s8): Remove.
18694 (__arm_vsubq_u16): Remove.
18695 (__arm_vsubq_n_u16): Remove.
18696 (__arm_vsubq_s16): Remove.
18697 (__arm_vsubq_n_s16): Remove.
18698 (__arm_vsubq_u32): Remove.
18699 (__arm_vsubq_n_u32): Remove.
18700 (__arm_vsubq_s32): Remove.
18701 (__arm_vsubq_n_s32): Remove.
18702 (__arm_vsubq_m_s8): Remove.
18703 (__arm_vsubq_m_u8): Remove.
18704 (__arm_vsubq_m_s16): Remove.
18705 (__arm_vsubq_m_u16): Remove.
18706 (__arm_vsubq_m_s32): Remove.
18707 (__arm_vsubq_m_u32): Remove.
18708 (__arm_vsubq_m_n_s8): Remove.
18709 (__arm_vsubq_m_n_s32): Remove.
18710 (__arm_vsubq_m_n_s16): Remove.
18711 (__arm_vsubq_m_n_u8): Remove.
18712 (__arm_vsubq_m_n_u32): Remove.
18713 (__arm_vsubq_m_n_u16): Remove.
18714 (__arm_vsubq_x_s8): Remove.
18715 (__arm_vsubq_x_s16): Remove.
18716 (__arm_vsubq_x_s32): Remove.
18717 (__arm_vsubq_x_n_s8): Remove.
18718 (__arm_vsubq_x_n_s16): Remove.
18719 (__arm_vsubq_x_n_s32): Remove.
18720 (__arm_vsubq_x_u8): Remove.
18721 (__arm_vsubq_x_u16): Remove.
18722 (__arm_vsubq_x_u32): Remove.
18723 (__arm_vsubq_x_n_u8): Remove.
18724 (__arm_vsubq_x_n_u16): Remove.
18725 (__arm_vsubq_x_n_u32): Remove.
18726 (__arm_vsubq_n_f16): Remove.
18727 (__arm_vsubq_n_f32): Remove.
18728 (__arm_vsubq_f16): Remove.
18729 (__arm_vsubq_f32): Remove.
18730 (__arm_vsubq_m_f32): Remove.
18731 (__arm_vsubq_m_f16): Remove.
18732 (__arm_vsubq_m_n_f32): Remove.
18733 (__arm_vsubq_m_n_f16): Remove.
18734 (__arm_vsubq_x_f16): Remove.
18735 (__arm_vsubq_x_f32): Remove.
18736 (__arm_vsubq_x_n_f16): Remove.
18737 (__arm_vsubq_x_n_f32): Remove.
18738 (__arm_vsubq): Remove.
18739 (__arm_vsubq_m): Remove.
18740 (__arm_vsubq_x): Remove.
18741 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
18742 Remove.
18743 (vmulq_u, vmulq_s, vmulq_f): Remove.
18744 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
18745 (mve_vmulq_<supf><mode>): Remove.
18746
18747 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18748
18749 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
18750 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
18751 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
18752 iterators.
18753 * config/arm/mve.md
18754 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
18755 Factorize into ...
18756 (@mve_<mve_insn>q_n_f<mode>): ... this.
18757 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
18758 (mve_vsubq_n_<supf><mode>): Factorize into ...
18759 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18760 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
18761 into ...
18762 (mve_<mve_addsubmul>q<mode>): ... this.
18763 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
18764 Factorize into ...
18765 (mve_<mve_addsubmul>q_f<mode>): ... this.
18766 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
18767 (mve_vsubq_m_<supf><mode>): Factorize into ...
18768 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
18769 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
18770 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
18771 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18772 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
18773 Factorize into ...
18774 (@mve_<mve_insn>q_m_f<mode>): ... this.
18775 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
18776 (mve_vsubq_m_n_f<mode>): Factorize into ...
18777 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
18778
18779 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18780
18781 * config/arm/arm-mve-builtins-functions.h (class
18782 unspec_based_mve_function_base): New.
18783 (class unspec_based_mve_function_exact_insn): New.
18784
18785 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18786
18787 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
18788 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
18789
18790 2023-05-03 Murray Steele <murray.steele@arm.com>
18791 Christophe Lyon <christophe.lyon@arm.com>
18792
18793 * config/arm/arm-mve-builtins-base.cc (class
18794 vuninitializedq_impl): New.
18795 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
18796 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
18797 declaration.
18798 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
18799 * config/arm/arm-mve-builtins-shapes.h (inherent): New
18800 declaration.
18801 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
18802 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
18803 (__arm_vuninitializedq_u8): Remove.
18804 (__arm_vuninitializedq_u16): Remove.
18805 (__arm_vuninitializedq_u32): Remove.
18806 (__arm_vuninitializedq_u64): Remove.
18807 (__arm_vuninitializedq_s8): Remove.
18808 (__arm_vuninitializedq_s16): Remove.
18809 (__arm_vuninitializedq_s32): Remove.
18810 (__arm_vuninitializedq_s64): Remove.
18811 (__arm_vuninitializedq_f16): Remove.
18812 (__arm_vuninitializedq_f32): Remove.
18813
18814 2023-05-03 Murray Steele <murray.steele@arm.com>
18815 Christophe Lyon <christophe.lyon@arm.com>
18816
18817 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
18818 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
18819 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
18820 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
18821 (parse_type): Likewise.
18822 (parse_signature): Likewise.
18823 (build_one): Likewise.
18824 (build_all): Likewise.
18825 (overloaded_base): New struct.
18826 (unary_convert_def): Likewise.
18827 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
18828 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
18829 macro.
18830 (TYPES_reinterpret_unsigned1): Likewise.
18831 (TYPES_reinterpret_integer): Likewise.
18832 (TYPES_reinterpret_integer1): Likewise.
18833 (TYPES_reinterpret_float1): Likewise.
18834 (TYPES_reinterpret_float): Likewise.
18835 (reinterpret_integer): New.
18836 (reinterpret_float): New.
18837 (handle_arm_mve_h): Register builtins.
18838 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
18839 (vreinterpretq_s32): Likewise.
18840 (vreinterpretq_s64): Likewise.
18841 (vreinterpretq_s8): Likewise.
18842 (vreinterpretq_u16): Likewise.
18843 (vreinterpretq_u32): Likewise.
18844 (vreinterpretq_u64): Likewise.
18845 (vreinterpretq_u8): Likewise.
18846 (vreinterpretq_f16): Likewise.
18847 (vreinterpretq_f32): Likewise.
18848 (vreinterpretq_s16_s32): Likewise.
18849 (vreinterpretq_s16_s64): Likewise.
18850 (vreinterpretq_s16_s8): Likewise.
18851 (vreinterpretq_s16_u16): Likewise.
18852 (vreinterpretq_s16_u32): Likewise.
18853 (vreinterpretq_s16_u64): Likewise.
18854 (vreinterpretq_s16_u8): Likewise.
18855 (vreinterpretq_s32_s16): Likewise.
18856 (vreinterpretq_s32_s64): Likewise.
18857 (vreinterpretq_s32_s8): Likewise.
18858 (vreinterpretq_s32_u16): Likewise.
18859 (vreinterpretq_s32_u32): Likewise.
18860 (vreinterpretq_s32_u64): Likewise.
18861 (vreinterpretq_s32_u8): Likewise.
18862 (vreinterpretq_s64_s16): Likewise.
18863 (vreinterpretq_s64_s32): Likewise.
18864 (vreinterpretq_s64_s8): Likewise.
18865 (vreinterpretq_s64_u16): Likewise.
18866 (vreinterpretq_s64_u32): Likewise.
18867 (vreinterpretq_s64_u64): Likewise.
18868 (vreinterpretq_s64_u8): Likewise.
18869 (vreinterpretq_s8_s16): Likewise.
18870 (vreinterpretq_s8_s32): Likewise.
18871 (vreinterpretq_s8_s64): Likewise.
18872 (vreinterpretq_s8_u16): Likewise.
18873 (vreinterpretq_s8_u32): Likewise.
18874 (vreinterpretq_s8_u64): Likewise.
18875 (vreinterpretq_s8_u8): Likewise.
18876 (vreinterpretq_u16_s16): Likewise.
18877 (vreinterpretq_u16_s32): Likewise.
18878 (vreinterpretq_u16_s64): Likewise.
18879 (vreinterpretq_u16_s8): Likewise.
18880 (vreinterpretq_u16_u32): Likewise.
18881 (vreinterpretq_u16_u64): Likewise.
18882 (vreinterpretq_u16_u8): Likewise.
18883 (vreinterpretq_u32_s16): Likewise.
18884 (vreinterpretq_u32_s32): Likewise.
18885 (vreinterpretq_u32_s64): Likewise.
18886 (vreinterpretq_u32_s8): Likewise.
18887 (vreinterpretq_u32_u16): Likewise.
18888 (vreinterpretq_u32_u64): Likewise.
18889 (vreinterpretq_u32_u8): Likewise.
18890 (vreinterpretq_u64_s16): Likewise.
18891 (vreinterpretq_u64_s32): Likewise.
18892 (vreinterpretq_u64_s64): Likewise.
18893 (vreinterpretq_u64_s8): Likewise.
18894 (vreinterpretq_u64_u16): Likewise.
18895 (vreinterpretq_u64_u32): Likewise.
18896 (vreinterpretq_u64_u8): Likewise.
18897 (vreinterpretq_u8_s16): Likewise.
18898 (vreinterpretq_u8_s32): Likewise.
18899 (vreinterpretq_u8_s64): Likewise.
18900 (vreinterpretq_u8_s8): Likewise.
18901 (vreinterpretq_u8_u16): Likewise.
18902 (vreinterpretq_u8_u32): Likewise.
18903 (vreinterpretq_u8_u64): Likewise.
18904 (vreinterpretq_s32_f16): Likewise.
18905 (vreinterpretq_s32_f32): Likewise.
18906 (vreinterpretq_u16_f16): Likewise.
18907 (vreinterpretq_u16_f32): Likewise.
18908 (vreinterpretq_u32_f16): Likewise.
18909 (vreinterpretq_u32_f32): Likewise.
18910 (vreinterpretq_u64_f16): Likewise.
18911 (vreinterpretq_u64_f32): Likewise.
18912 (vreinterpretq_u8_f16): Likewise.
18913 (vreinterpretq_u8_f32): Likewise.
18914 (vreinterpretq_f16_f32): Likewise.
18915 (vreinterpretq_f16_s16): Likewise.
18916 (vreinterpretq_f16_s32): Likewise.
18917 (vreinterpretq_f16_s64): Likewise.
18918 (vreinterpretq_f16_s8): Likewise.
18919 (vreinterpretq_f16_u16): Likewise.
18920 (vreinterpretq_f16_u32): Likewise.
18921 (vreinterpretq_f16_u64): Likewise.
18922 (vreinterpretq_f16_u8): Likewise.
18923 (vreinterpretq_f32_f16): Likewise.
18924 (vreinterpretq_f32_s16): Likewise.
18925 (vreinterpretq_f32_s32): Likewise.
18926 (vreinterpretq_f32_s64): Likewise.
18927 (vreinterpretq_f32_s8): Likewise.
18928 (vreinterpretq_f32_u16): Likewise.
18929 (vreinterpretq_f32_u32): Likewise.
18930 (vreinterpretq_f32_u64): Likewise.
18931 (vreinterpretq_f32_u8): Likewise.
18932 (vreinterpretq_s16_f16): Likewise.
18933 (vreinterpretq_s16_f32): Likewise.
18934 (vreinterpretq_s64_f16): Likewise.
18935 (vreinterpretq_s64_f32): Likewise.
18936 (vreinterpretq_s8_f16): Likewise.
18937 (vreinterpretq_s8_f32): Likewise.
18938 (__arm_vreinterpretq_f16): Likewise.
18939 (__arm_vreinterpretq_f32): Likewise.
18940 (__arm_vreinterpretq_s16): Likewise.
18941 (__arm_vreinterpretq_s32): Likewise.
18942 (__arm_vreinterpretq_s64): Likewise.
18943 (__arm_vreinterpretq_s8): Likewise.
18944 (__arm_vreinterpretq_u16): Likewise.
18945 (__arm_vreinterpretq_u32): Likewise.
18946 (__arm_vreinterpretq_u64): Likewise.
18947 (__arm_vreinterpretq_u8): Likewise.
18948 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
18949 (__arm_vreinterpretq_s16_s64): Likewise.
18950 (__arm_vreinterpretq_s16_s8): Likewise.
18951 (__arm_vreinterpretq_s16_u16): Likewise.
18952 (__arm_vreinterpretq_s16_u32): Likewise.
18953 (__arm_vreinterpretq_s16_u64): Likewise.
18954 (__arm_vreinterpretq_s16_u8): Likewise.
18955 (__arm_vreinterpretq_s32_s16): Likewise.
18956 (__arm_vreinterpretq_s32_s64): Likewise.
18957 (__arm_vreinterpretq_s32_s8): Likewise.
18958 (__arm_vreinterpretq_s32_u16): Likewise.
18959 (__arm_vreinterpretq_s32_u32): Likewise.
18960 (__arm_vreinterpretq_s32_u64): Likewise.
18961 (__arm_vreinterpretq_s32_u8): Likewise.
18962 (__arm_vreinterpretq_s64_s16): Likewise.
18963 (__arm_vreinterpretq_s64_s32): Likewise.
18964 (__arm_vreinterpretq_s64_s8): Likewise.
18965 (__arm_vreinterpretq_s64_u16): Likewise.
18966 (__arm_vreinterpretq_s64_u32): Likewise.
18967 (__arm_vreinterpretq_s64_u64): Likewise.
18968 (__arm_vreinterpretq_s64_u8): Likewise.
18969 (__arm_vreinterpretq_s8_s16): Likewise.
18970 (__arm_vreinterpretq_s8_s32): Likewise.
18971 (__arm_vreinterpretq_s8_s64): Likewise.
18972 (__arm_vreinterpretq_s8_u16): Likewise.
18973 (__arm_vreinterpretq_s8_u32): Likewise.
18974 (__arm_vreinterpretq_s8_u64): Likewise.
18975 (__arm_vreinterpretq_s8_u8): Likewise.
18976 (__arm_vreinterpretq_u16_s16): Likewise.
18977 (__arm_vreinterpretq_u16_s32): Likewise.
18978 (__arm_vreinterpretq_u16_s64): Likewise.
18979 (__arm_vreinterpretq_u16_s8): Likewise.
18980 (__arm_vreinterpretq_u16_u32): Likewise.
18981 (__arm_vreinterpretq_u16_u64): Likewise.
18982 (__arm_vreinterpretq_u16_u8): Likewise.
18983 (__arm_vreinterpretq_u32_s16): Likewise.
18984 (__arm_vreinterpretq_u32_s32): Likewise.
18985 (__arm_vreinterpretq_u32_s64): Likewise.
18986 (__arm_vreinterpretq_u32_s8): Likewise.
18987 (__arm_vreinterpretq_u32_u16): Likewise.
18988 (__arm_vreinterpretq_u32_u64): Likewise.
18989 (__arm_vreinterpretq_u32_u8): Likewise.
18990 (__arm_vreinterpretq_u64_s16): Likewise.
18991 (__arm_vreinterpretq_u64_s32): Likewise.
18992 (__arm_vreinterpretq_u64_s64): Likewise.
18993 (__arm_vreinterpretq_u64_s8): Likewise.
18994 (__arm_vreinterpretq_u64_u16): Likewise.
18995 (__arm_vreinterpretq_u64_u32): Likewise.
18996 (__arm_vreinterpretq_u64_u8): Likewise.
18997 (__arm_vreinterpretq_u8_s16): Likewise.
18998 (__arm_vreinterpretq_u8_s32): Likewise.
18999 (__arm_vreinterpretq_u8_s64): Likewise.
19000 (__arm_vreinterpretq_u8_s8): Likewise.
19001 (__arm_vreinterpretq_u8_u16): Likewise.
19002 (__arm_vreinterpretq_u8_u32): Likewise.
19003 (__arm_vreinterpretq_u8_u64): Likewise.
19004 (__arm_vreinterpretq_s32_f16): Likewise.
19005 (__arm_vreinterpretq_s32_f32): Likewise.
19006 (__arm_vreinterpretq_s16_f16): Likewise.
19007 (__arm_vreinterpretq_s16_f32): Likewise.
19008 (__arm_vreinterpretq_s64_f16): Likewise.
19009 (__arm_vreinterpretq_s64_f32): Likewise.
19010 (__arm_vreinterpretq_s8_f16): Likewise.
19011 (__arm_vreinterpretq_s8_f32): Likewise.
19012 (__arm_vreinterpretq_u16_f16): Likewise.
19013 (__arm_vreinterpretq_u16_f32): Likewise.
19014 (__arm_vreinterpretq_u32_f16): Likewise.
19015 (__arm_vreinterpretq_u32_f32): Likewise.
19016 (__arm_vreinterpretq_u64_f16): Likewise.
19017 (__arm_vreinterpretq_u64_f32): Likewise.
19018 (__arm_vreinterpretq_u8_f16): Likewise.
19019 (__arm_vreinterpretq_u8_f32): Likewise.
19020 (__arm_vreinterpretq_f16_f32): Likewise.
19021 (__arm_vreinterpretq_f16_s16): Likewise.
19022 (__arm_vreinterpretq_f16_s32): Likewise.
19023 (__arm_vreinterpretq_f16_s64): Likewise.
19024 (__arm_vreinterpretq_f16_s8): Likewise.
19025 (__arm_vreinterpretq_f16_u16): Likewise.
19026 (__arm_vreinterpretq_f16_u32): Likewise.
19027 (__arm_vreinterpretq_f16_u64): Likewise.
19028 (__arm_vreinterpretq_f16_u8): Likewise.
19029 (__arm_vreinterpretq_f32_f16): Likewise.
19030 (__arm_vreinterpretq_f32_s16): Likewise.
19031 (__arm_vreinterpretq_f32_s32): Likewise.
19032 (__arm_vreinterpretq_f32_s64): Likewise.
19033 (__arm_vreinterpretq_f32_s8): Likewise.
19034 (__arm_vreinterpretq_f32_u16): Likewise.
19035 (__arm_vreinterpretq_f32_u32): Likewise.
19036 (__arm_vreinterpretq_f32_u64): Likewise.
19037 (__arm_vreinterpretq_f32_u8): Likewise.
19038 (__arm_vreinterpretq_s16): Likewise.
19039 (__arm_vreinterpretq_s32): Likewise.
19040 (__arm_vreinterpretq_s64): Likewise.
19041 (__arm_vreinterpretq_s8): Likewise.
19042 (__arm_vreinterpretq_u16): Likewise.
19043 (__arm_vreinterpretq_u32): Likewise.
19044 (__arm_vreinterpretq_u64): Likewise.
19045 (__arm_vreinterpretq_u8): Likewise.
19046 (__arm_vreinterpretq_f16): Likewise.
19047 (__arm_vreinterpretq_f32): Likewise.
19048 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
19049 * config/arm/unspecs.md: (REINTERPRET): New unspec.
19050
19051 2023-05-03 Murray Steele <murray.steele@arm.com>
19052 Christophe Lyon <christophe.lyon@arm.com>
19053 Christophe Lyon <christophe.lyon@arm.com
19054
19055 * config.gcc: Add arm-mve-builtins-base.o and
19056 arm-mve-builtins-shapes.o to extra_objs.
19057 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
19058 numberspace.
19059 (arm_expand_builtin): Likewise
19060 (arm_check_builtin_call): Likewise
19061 (arm_describe_resolver): Likewise.
19062 * config/arm/arm-builtins.h (enum resolver_ident): Add
19063 arm_mve_resolver.
19064 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
19065 (arm_resolve_overloaded_builtin): Handle MVE builtins.
19066 (arm_register_target_pragmas): Register arm_check_builtin_call.
19067 * config/arm/arm-mve-builtins.cc (class registered_function): New
19068 class.
19069 (struct registered_function_hasher): New struct.
19070 (pred_suffixes): New table.
19071 (mode_suffixes): New table.
19072 (type_suffix_info): New table.
19073 (TYPES_float16): New.
19074 (TYPES_all_float): New.
19075 (TYPES_integer_8): New.
19076 (TYPES_integer_8_16): New.
19077 (TYPES_integer_16_32): New.
19078 (TYPES_integer_32): New.
19079 (TYPES_signed_16_32): New.
19080 (TYPES_signed_32): New.
19081 (TYPES_all_signed): New.
19082 (TYPES_all_unsigned): New.
19083 (TYPES_all_integer): New.
19084 (TYPES_all_integer_with_64): New.
19085 (DEF_VECTOR_TYPE): New.
19086 (DEF_DOUBLE_TYPE): New.
19087 (DEF_MVE_TYPES_ARRAY): New.
19088 (all_integer): New.
19089 (all_integer_with_64): New.
19090 (float16): New.
19091 (all_float): New.
19092 (all_signed): New.
19093 (all_unsigned): New.
19094 (integer_8): New.
19095 (integer_8_16): New.
19096 (integer_16_32): New.
19097 (integer_32): New.
19098 (signed_16_32): New.
19099 (signed_32): New.
19100 (register_vector_type): Use void_type_node for mve.fp-only types when
19101 mve.fp is not enabled.
19102 (register_builtin_tuple_types): Likewise.
19103 (handle_arm_mve_h): New function..
19104 (matches_type_p): Likewise..
19105 (report_out_of_range): Likewise.
19106 (report_not_enum): Likewise.
19107 (report_missing_float): Likewise.
19108 (report_non_ice): Likewise.
19109 (check_requires_float): Likewise.
19110 (function_instance::hash): Likewise
19111 (function_instance::call_properties): Likewise.
19112 (function_instance::reads_global_state_p): Likewise.
19113 (function_instance::modifies_global_state_p): Likewise.
19114 (function_instance::could_trap_p): Likewise.
19115 (function_instance::has_inactive_argument): Likewise.
19116 (registered_function_hasher::hash): Likewise.
19117 (registered_function_hasher::equal): Likewise.
19118 (function_builder::function_builder): Likewise.
19119 (function_builder::~function_builder): Likewise.
19120 (function_builder::append_name): Likewise.
19121 (function_builder::finish_name): Likewise.
19122 (function_builder::get_name): Likewise.
19123 (add_attribute): Likewise.
19124 (function_builder::get_attributes): Likewise.
19125 (function_builder::add_function): Likewise.
19126 (function_builder::add_unique_function): Likewise.
19127 (function_builder::add_overloaded_function): Likewise.
19128 (function_builder::add_overloaded_functions): Likewise.
19129 (function_builder::register_function_group): Likewise.
19130 (function_call_info::function_call_info): Likewise.
19131 (function_resolver::function_resolver): Likewise.
19132 (function_resolver::get_vector_type): Likewise.
19133 (function_resolver::get_scalar_type_name): Likewise.
19134 (function_resolver::get_argument_type): Likewise.
19135 (function_resolver::scalar_argument_p): Likewise.
19136 (function_resolver::report_no_such_form): Likewise.
19137 (function_resolver::lookup_form): Likewise.
19138 (function_resolver::resolve_to): Likewise.
19139 (function_resolver::infer_vector_or_tuple_type): Likewise.
19140 (function_resolver::infer_vector_type): Likewise.
19141 (function_resolver::require_vector_or_scalar_type): Likewise.
19142 (function_resolver::require_vector_type): Likewise.
19143 (function_resolver::require_matching_vector_type): Likewise.
19144 (function_resolver::require_derived_vector_type): Likewise.
19145 (function_resolver::require_derived_scalar_type): Likewise.
19146 (function_resolver::require_integer_immediate): Likewise.
19147 (function_resolver::require_scalar_type): Likewise.
19148 (function_resolver::check_num_arguments): Likewise.
19149 (function_resolver::check_gp_argument): Likewise.
19150 (function_resolver::finish_opt_n_resolution): Likewise.
19151 (function_resolver::resolve_unary): Likewise.
19152 (function_resolver::resolve_unary_n): Likewise.
19153 (function_resolver::resolve_uniform): Likewise.
19154 (function_resolver::resolve_uniform_opt_n): Likewise.
19155 (function_resolver::resolve): Likewise.
19156 (function_checker::function_checker): Likewise.
19157 (function_checker::argument_exists_p): Likewise.
19158 (function_checker::require_immediate): Likewise.
19159 (function_checker::require_immediate_enum): Likewise.
19160 (function_checker::require_immediate_range): Likewise.
19161 (function_checker::check): Likewise.
19162 (gimple_folder::gimple_folder): Likewise.
19163 (gimple_folder::fold): Likewise.
19164 (function_expander::function_expander): Likewise.
19165 (function_expander::direct_optab_handler): Likewise.
19166 (function_expander::get_fallback_value): Likewise.
19167 (function_expander::get_reg_target): Likewise.
19168 (function_expander::add_output_operand): Likewise.
19169 (function_expander::add_input_operand): Likewise.
19170 (function_expander::add_integer_operand): Likewise.
19171 (function_expander::generate_insn): Likewise.
19172 (function_expander::use_exact_insn): Likewise.
19173 (function_expander::use_unpred_insn): Likewise.
19174 (function_expander::use_pred_x_insn): Likewise.
19175 (function_expander::use_cond_insn): Likewise.
19176 (function_expander::map_to_rtx_codes): Likewise.
19177 (function_expander::expand): Likewise.
19178 (resolve_overloaded_builtin): Likewise.
19179 (check_builtin_call): Likewise.
19180 (gimple_fold_builtin): Likewise.
19181 (expand_builtin): Likewise.
19182 (gt_ggc_mx): Likewise.
19183 (gt_pch_nx): Likewise.
19184 (gt_pch_nx): Likewise.
19185 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
19186 (s16): Likewise.
19187 (s32): Likewise.
19188 (s64): Likewise.
19189 (u8): Likewise.
19190 (u16): Likewise.
19191 (u32): Likewise.
19192 (u64): Likewise.
19193 (f16): Likewise.
19194 (f32): Likewise.
19195 (n): New mode.
19196 (offset): New mode.
19197 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
19198 (CP_READ_FPCR): Likewise.
19199 (CP_RAISE_FP_EXCEPTIONS): Likewise.
19200 (CP_READ_MEMORY): Likewise.
19201 (CP_WRITE_MEMORY): Likewise.
19202 (enum units_index): New enum.
19203 (enum predication_index): New.
19204 (enum type_class_index): New.
19205 (enum mode_suffix_index): New enum.
19206 (enum type_suffix_index): New.
19207 (struct mode_suffix_info): New struct.
19208 (struct type_suffix_info): New.
19209 (struct function_group_info): Likewise.
19210 (class function_instance): Likewise.
19211 (class registered_function): Likewise.
19212 (class function_builder): Likewise.
19213 (class function_call_info): Likewise.
19214 (class function_resolver): Likewise.
19215 (class function_checker): Likewise.
19216 (class gimple_folder): Likewise.
19217 (class function_expander): Likewise.
19218 (get_mve_pred16_t): Likewise.
19219 (find_mode_suffix): New function.
19220 (class function_base): Likewise.
19221 (class function_shape): Likewise.
19222 (function_instance::operator==): New function.
19223 (function_instance::operator!=): Likewise.
19224 (function_instance::vectors_per_tuple): Likewise.
19225 (function_instance::mode_suffix): Likewise.
19226 (function_instance::type_suffix): Likewise.
19227 (function_instance::scalar_type): Likewise.
19228 (function_instance::vector_type): Likewise.
19229 (function_instance::tuple_type): Likewise.
19230 (function_instance::vector_mode): Likewise.
19231 (function_call_info::function_returns_void_p): Likewise.
19232 (function_base::call_properties): Likewise.
19233 * config/arm/arm-protos.h (enum arm_builtin_class): Add
19234 ARM_BUILTIN_MVE.
19235 (handle_arm_mve_h): New.
19236 (resolve_overloaded_builtin): New.
19237 (check_builtin_call): New.
19238 (gimple_fold_builtin): New.
19239 (expand_builtin): New.
19240 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
19241 arm_gimple_fold_builtin.
19242 (arm_gimple_fold_builtin): New function.
19243 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
19244 * config/arm/predicates.md (arm_any_register_operand): New predicate.
19245 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
19246 (arm-mve-builtins-shapes.o): New target.
19247 (arm-mve-builtins-base.o): New target.
19248 * config/arm/arm-mve-builtins-base.cc: New file.
19249 * config/arm/arm-mve-builtins-base.def: New file.
19250 * config/arm/arm-mve-builtins-base.h: New file.
19251 * config/arm/arm-mve-builtins-functions.h: New file.
19252 * config/arm/arm-mve-builtins-shapes.cc: New file.
19253 * config/arm/arm-mve-builtins-shapes.h: New file.
19254
19255 2023-05-03 Murray Steele <murray.steele@arm.com>
19256 Christophe Lyon <christophe.lyon@arm.com>
19257 Christophe Lyon <christophe.lyon@arm.com>
19258
19259 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
19260 New function.
19261 (arm_init_builtin): Use arm_general_add_builtin_function instead
19262 of arm_add_builtin_function.
19263 (arm_init_acle_builtins): Likewise.
19264 (arm_init_mve_builtins): Likewise.
19265 (arm_init_crypto_builtins): Likewise.
19266 (arm_init_builtins): Likewise.
19267 (arm_general_builtin_decl): New function.
19268 (arm_builtin_decl): Defer to numberspace-specialized functions.
19269 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
19270 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
19271 (arm_general_expand_builtin_1): ... specialize for general builtins.
19272 (arm_expand_acle_builtin): Use arm_general_expand_builtin
19273 instead of arm_expand_builtin.
19274 (arm_expand_mve_builtin): Likewise.
19275 (arm_expand_neon_builtin): Likewise.
19276 (arm_expand_vfp_builtin): Likewise.
19277 (arm_general_expand_builtin): New function.
19278 (arm_expand_builtin): Specialize for general builtins.
19279 (arm_general_check_builtin_call): New function.
19280 (arm_check_builtin_call): Specialize for general builtins.
19281 (arm_describe_resolver): Validate numberspace.
19282 (arm_cde_end_args): Likewise.
19283 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
19284 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
19285
19286 2023-05-03 Martin Liska <mliska@suse.cz>
19287
19288 PR target/109713
19289 * config/riscv/sync.md: Add gcc_unreachable to a switch.
19290
19291 2023-05-03 Richard Biener <rguenther@suse.de>
19292
19293 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
19294 (patch_loop_exit): Likewise.
19295 (connect_loops): Likewise.
19296 (split_loop): Likewise.
19297 (control_dep_semi_invariant_p): Likewise.
19298 (do_split_loop_on_cond): Likewise.
19299 (split_loop_on_cond): Likewise.
19300 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
19301 Likewise.
19302 (simplify_loop_version): Likewise.
19303 (evaluate_bbs): Likewise.
19304 (find_loop_guard): Likewise.
19305 (clean_up_after_unswitching): Likewise.
19306 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
19307 Likewise.
19308 (optimize_spaceship): Take a gcond * argument, avoid
19309 last_stmt.
19310 (math_opts_dom_walker::after_dom_children): Adjust call to
19311 optimize_spaceship.
19312 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
19313 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
19314 Likewise.
19315
19316 2023-05-03 Andreas Schwab <schwab@suse.de>
19317
19318 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
19319
19320 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19321
19322 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
19323 New function.
19324 (class vlseg): New class.
19325 (class vsseg): Ditto.
19326 (class vlsseg): Ditto.
19327 (class vssseg): Ditto.
19328 (class seg_indexed_load): Ditto.
19329 (class seg_indexed_store): Ditto.
19330 (class vlsegff): Ditto.
19331 (BASE): Ditto.
19332 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19333 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
19334 Ditto.
19335 (vsseg): Ditto.
19336 (vlsseg): Ditto.
19337 (vssseg): Ditto.
19338 (vluxseg): Ditto.
19339 (vloxseg): Ditto.
19340 (vsuxseg): Ditto.
19341 (vsoxseg): Ditto.
19342 (vlsegff): Ditto.
19343 * config/riscv/riscv-vector-builtins-shapes.cc (struct
19344 seg_loadstore_def): Ditto.
19345 (struct seg_indexed_loadstore_def): Ditto.
19346 (struct seg_fault_load_def): Ditto.
19347 (SHAPE): Ditto.
19348 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19349 * config/riscv/riscv-vector-builtins.cc
19350 (function_builder::append_nf): New function.
19351 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
19352 Change ptr from double into float.
19353 (vfloat32m1x3_t): Ditto.
19354 (vfloat32m1x4_t): Ditto.
19355 (vfloat32m1x5_t): Ditto.
19356 (vfloat32m1x6_t): Ditto.
19357 (vfloat32m1x7_t): Ditto.
19358 (vfloat32m1x8_t): Ditto.
19359 (vfloat32m2x2_t): Ditto.
19360 (vfloat32m2x3_t): Ditto.
19361 (vfloat32m2x4_t): Ditto.
19362 (vfloat32m4x2_t): Ditto.
19363 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
19364 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
19365 segment ff load.
19366 * config/riscv/riscv.md: Add segment instructions.
19367 * config/riscv/vector-iterators.md: Support segment intrinsics.
19368 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
19369 pattern.
19370 (@pred_unit_strided_store<mode>): Ditto.
19371 (@pred_strided_load<mode>): Ditto.
19372 (@pred_strided_store<mode>): Ditto.
19373 (@pred_fault_load<mode>): Ditto.
19374 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
19375 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
19376 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
19377 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
19378 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
19379 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
19380 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
19381 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
19382 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
19383 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
19384 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
19385 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
19386 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
19387 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
19388
19389 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19390
19391 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
19392 tuple type support.
19393 (inttype): Ditto.
19394 (floattype): Ditto.
19395 (main): Ditto.
19396 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
19397 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
19398 tuple type vset.
19399 (vget): Add tuple type vget.
19400 * config/riscv/riscv-vector-builtins-types.def
19401 (DEF_RVV_TUPLE_OPS): New macro.
19402 (vint8mf8x2_t): Ditto.
19403 (vuint8mf8x2_t): Ditto.
19404 (vint8mf8x3_t): Ditto.
19405 (vuint8mf8x3_t): Ditto.
19406 (vint8mf8x4_t): Ditto.
19407 (vuint8mf8x4_t): Ditto.
19408 (vint8mf8x5_t): Ditto.
19409 (vuint8mf8x5_t): Ditto.
19410 (vint8mf8x6_t): Ditto.
19411 (vuint8mf8x6_t): Ditto.
19412 (vint8mf8x7_t): Ditto.
19413 (vuint8mf8x7_t): Ditto.
19414 (vint8mf8x8_t): Ditto.
19415 (vuint8mf8x8_t): Ditto.
19416 (vint8mf4x2_t): Ditto.
19417 (vuint8mf4x2_t): Ditto.
19418 (vint8mf4x3_t): Ditto.
19419 (vuint8mf4x3_t): Ditto.
19420 (vint8mf4x4_t): Ditto.
19421 (vuint8mf4x4_t): Ditto.
19422 (vint8mf4x5_t): Ditto.
19423 (vuint8mf4x5_t): Ditto.
19424 (vint8mf4x6_t): Ditto.
19425 (vuint8mf4x6_t): Ditto.
19426 (vint8mf4x7_t): Ditto.
19427 (vuint8mf4x7_t): Ditto.
19428 (vint8mf4x8_t): Ditto.
19429 (vuint8mf4x8_t): Ditto.
19430 (vint8mf2x2_t): Ditto.
19431 (vuint8mf2x2_t): Ditto.
19432 (vint8mf2x3_t): Ditto.
19433 (vuint8mf2x3_t): Ditto.
19434 (vint8mf2x4_t): Ditto.
19435 (vuint8mf2x4_t): Ditto.
19436 (vint8mf2x5_t): Ditto.
19437 (vuint8mf2x5_t): Ditto.
19438 (vint8mf2x6_t): Ditto.
19439 (vuint8mf2x6_t): Ditto.
19440 (vint8mf2x7_t): Ditto.
19441 (vuint8mf2x7_t): Ditto.
19442 (vint8mf2x8_t): Ditto.
19443 (vuint8mf2x8_t): Ditto.
19444 (vint8m1x2_t): Ditto.
19445 (vuint8m1x2_t): Ditto.
19446 (vint8m1x3_t): Ditto.
19447 (vuint8m1x3_t): Ditto.
19448 (vint8m1x4_t): Ditto.
19449 (vuint8m1x4_t): Ditto.
19450 (vint8m1x5_t): Ditto.
19451 (vuint8m1x5_t): Ditto.
19452 (vint8m1x6_t): Ditto.
19453 (vuint8m1x6_t): Ditto.
19454 (vint8m1x7_t): Ditto.
19455 (vuint8m1x7_t): Ditto.
19456 (vint8m1x8_t): Ditto.
19457 (vuint8m1x8_t): Ditto.
19458 (vint8m2x2_t): Ditto.
19459 (vuint8m2x2_t): Ditto.
19460 (vint8m2x3_t): Ditto.
19461 (vuint8m2x3_t): Ditto.
19462 (vint8m2x4_t): Ditto.
19463 (vuint8m2x4_t): Ditto.
19464 (vint8m4x2_t): Ditto.
19465 (vuint8m4x2_t): Ditto.
19466 (vint16mf4x2_t): Ditto.
19467 (vuint16mf4x2_t): Ditto.
19468 (vint16mf4x3_t): Ditto.
19469 (vuint16mf4x3_t): Ditto.
19470 (vint16mf4x4_t): Ditto.
19471 (vuint16mf4x4_t): Ditto.
19472 (vint16mf4x5_t): Ditto.
19473 (vuint16mf4x5_t): Ditto.
19474 (vint16mf4x6_t): Ditto.
19475 (vuint16mf4x6_t): Ditto.
19476 (vint16mf4x7_t): Ditto.
19477 (vuint16mf4x7_t): Ditto.
19478 (vint16mf4x8_t): Ditto.
19479 (vuint16mf4x8_t): Ditto.
19480 (vint16mf2x2_t): Ditto.
19481 (vuint16mf2x2_t): Ditto.
19482 (vint16mf2x3_t): Ditto.
19483 (vuint16mf2x3_t): Ditto.
19484 (vint16mf2x4_t): Ditto.
19485 (vuint16mf2x4_t): Ditto.
19486 (vint16mf2x5_t): Ditto.
19487 (vuint16mf2x5_t): Ditto.
19488 (vint16mf2x6_t): Ditto.
19489 (vuint16mf2x6_t): Ditto.
19490 (vint16mf2x7_t): Ditto.
19491 (vuint16mf2x7_t): Ditto.
19492 (vint16mf2x8_t): Ditto.
19493 (vuint16mf2x8_t): Ditto.
19494 (vint16m1x2_t): Ditto.
19495 (vuint16m1x2_t): Ditto.
19496 (vint16m1x3_t): Ditto.
19497 (vuint16m1x3_t): Ditto.
19498 (vint16m1x4_t): Ditto.
19499 (vuint16m1x4_t): Ditto.
19500 (vint16m1x5_t): Ditto.
19501 (vuint16m1x5_t): Ditto.
19502 (vint16m1x6_t): Ditto.
19503 (vuint16m1x6_t): Ditto.
19504 (vint16m1x7_t): Ditto.
19505 (vuint16m1x7_t): Ditto.
19506 (vint16m1x8_t): Ditto.
19507 (vuint16m1x8_t): Ditto.
19508 (vint16m2x2_t): Ditto.
19509 (vuint16m2x2_t): Ditto.
19510 (vint16m2x3_t): Ditto.
19511 (vuint16m2x3_t): Ditto.
19512 (vint16m2x4_t): Ditto.
19513 (vuint16m2x4_t): Ditto.
19514 (vint16m4x2_t): Ditto.
19515 (vuint16m4x2_t): Ditto.
19516 (vint32mf2x2_t): Ditto.
19517 (vuint32mf2x2_t): Ditto.
19518 (vint32mf2x3_t): Ditto.
19519 (vuint32mf2x3_t): Ditto.
19520 (vint32mf2x4_t): Ditto.
19521 (vuint32mf2x4_t): Ditto.
19522 (vint32mf2x5_t): Ditto.
19523 (vuint32mf2x5_t): Ditto.
19524 (vint32mf2x6_t): Ditto.
19525 (vuint32mf2x6_t): Ditto.
19526 (vint32mf2x7_t): Ditto.
19527 (vuint32mf2x7_t): Ditto.
19528 (vint32mf2x8_t): Ditto.
19529 (vuint32mf2x8_t): Ditto.
19530 (vint32m1x2_t): Ditto.
19531 (vuint32m1x2_t): Ditto.
19532 (vint32m1x3_t): Ditto.
19533 (vuint32m1x3_t): Ditto.
19534 (vint32m1x4_t): Ditto.
19535 (vuint32m1x4_t): Ditto.
19536 (vint32m1x5_t): Ditto.
19537 (vuint32m1x5_t): Ditto.
19538 (vint32m1x6_t): Ditto.
19539 (vuint32m1x6_t): Ditto.
19540 (vint32m1x7_t): Ditto.
19541 (vuint32m1x7_t): Ditto.
19542 (vint32m1x8_t): Ditto.
19543 (vuint32m1x8_t): Ditto.
19544 (vint32m2x2_t): Ditto.
19545 (vuint32m2x2_t): Ditto.
19546 (vint32m2x3_t): Ditto.
19547 (vuint32m2x3_t): Ditto.
19548 (vint32m2x4_t): Ditto.
19549 (vuint32m2x4_t): Ditto.
19550 (vint32m4x2_t): Ditto.
19551 (vuint32m4x2_t): Ditto.
19552 (vint64m1x2_t): Ditto.
19553 (vuint64m1x2_t): Ditto.
19554 (vint64m1x3_t): Ditto.
19555 (vuint64m1x3_t): Ditto.
19556 (vint64m1x4_t): Ditto.
19557 (vuint64m1x4_t): Ditto.
19558 (vint64m1x5_t): Ditto.
19559 (vuint64m1x5_t): Ditto.
19560 (vint64m1x6_t): Ditto.
19561 (vuint64m1x6_t): Ditto.
19562 (vint64m1x7_t): Ditto.
19563 (vuint64m1x7_t): Ditto.
19564 (vint64m1x8_t): Ditto.
19565 (vuint64m1x8_t): Ditto.
19566 (vint64m2x2_t): Ditto.
19567 (vuint64m2x2_t): Ditto.
19568 (vint64m2x3_t): Ditto.
19569 (vuint64m2x3_t): Ditto.
19570 (vint64m2x4_t): Ditto.
19571 (vuint64m2x4_t): Ditto.
19572 (vint64m4x2_t): Ditto.
19573 (vuint64m4x2_t): Ditto.
19574 (vfloat32mf2x2_t): Ditto.
19575 (vfloat32mf2x3_t): Ditto.
19576 (vfloat32mf2x4_t): Ditto.
19577 (vfloat32mf2x5_t): Ditto.
19578 (vfloat32mf2x6_t): Ditto.
19579 (vfloat32mf2x7_t): Ditto.
19580 (vfloat32mf2x8_t): Ditto.
19581 (vfloat32m1x2_t): Ditto.
19582 (vfloat32m1x3_t): Ditto.
19583 (vfloat32m1x4_t): Ditto.
19584 (vfloat32m1x5_t): Ditto.
19585 (vfloat32m1x6_t): Ditto.
19586 (vfloat32m1x7_t): Ditto.
19587 (vfloat32m1x8_t): Ditto.
19588 (vfloat32m2x2_t): Ditto.
19589 (vfloat32m2x3_t): Ditto.
19590 (vfloat32m2x4_t): Ditto.
19591 (vfloat32m4x2_t): Ditto.
19592 (vfloat64m1x2_t): Ditto.
19593 (vfloat64m1x3_t): Ditto.
19594 (vfloat64m1x4_t): Ditto.
19595 (vfloat64m1x5_t): Ditto.
19596 (vfloat64m1x6_t): Ditto.
19597 (vfloat64m1x7_t): Ditto.
19598 (vfloat64m1x8_t): Ditto.
19599 (vfloat64m2x2_t): Ditto.
19600 (vfloat64m2x3_t): Ditto.
19601 (vfloat64m2x4_t): Ditto.
19602 (vfloat64m4x2_t): Ditto.
19603 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
19604 Ditto.
19605 (DEF_RVV_TYPE_INDEX): Ditto.
19606 (rvv_arg_type_info::get_tuple_subpart_type): New function.
19607 (DEF_RVV_TUPLE_TYPE): New macro.
19608 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
19609 Adapt for tuple vget/vset support.
19610 (vint8mf4_t): Ditto.
19611 (vuint8mf4_t): Ditto.
19612 (vint8mf2_t): Ditto.
19613 (vuint8mf2_t): Ditto.
19614 (vint8m1_t): Ditto.
19615 (vuint8m1_t): Ditto.
19616 (vint8m2_t): Ditto.
19617 (vuint8m2_t): Ditto.
19618 (vint8m4_t): Ditto.
19619 (vuint8m4_t): Ditto.
19620 (vint8m8_t): Ditto.
19621 (vuint8m8_t): Ditto.
19622 (vint16mf4_t): Ditto.
19623 (vuint16mf4_t): Ditto.
19624 (vint16mf2_t): Ditto.
19625 (vuint16mf2_t): Ditto.
19626 (vint16m1_t): Ditto.
19627 (vuint16m1_t): Ditto.
19628 (vint16m2_t): Ditto.
19629 (vuint16m2_t): Ditto.
19630 (vint16m4_t): Ditto.
19631 (vuint16m4_t): Ditto.
19632 (vint16m8_t): Ditto.
19633 (vuint16m8_t): Ditto.
19634 (vint32mf2_t): Ditto.
19635 (vuint32mf2_t): Ditto.
19636 (vint32m1_t): Ditto.
19637 (vuint32m1_t): Ditto.
19638 (vint32m2_t): Ditto.
19639 (vuint32m2_t): Ditto.
19640 (vint32m4_t): Ditto.
19641 (vuint32m4_t): Ditto.
19642 (vint32m8_t): Ditto.
19643 (vuint32m8_t): Ditto.
19644 (vint64m1_t): Ditto.
19645 (vuint64m1_t): Ditto.
19646 (vint64m2_t): Ditto.
19647 (vuint64m2_t): Ditto.
19648 (vint64m4_t): Ditto.
19649 (vuint64m4_t): Ditto.
19650 (vint64m8_t): Ditto.
19651 (vuint64m8_t): Ditto.
19652 (vfloat32mf2_t): Ditto.
19653 (vfloat32m1_t): Ditto.
19654 (vfloat32m2_t): Ditto.
19655 (vfloat32m4_t): Ditto.
19656 (vfloat32m8_t): Ditto.
19657 (vfloat64m1_t): Ditto.
19658 (vfloat64m2_t): Ditto.
19659 (vfloat64m4_t): Ditto.
19660 (vfloat64m8_t): Ditto.
19661 (tuple_subpart): Add tuple subpart base type.
19662 * config/riscv/riscv-vector-builtins.h (struct
19663 rvv_arg_type_info): Ditto.
19664 (tuple_type_field): New function.
19665
19666 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19667
19668 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
19669 (RVV_TUPLE_PARTIAL_MODES): Ditto.
19670 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
19671 function.
19672 (get_nf): Ditto.
19673 (get_subpart_mode): Ditto.
19674 (get_tuple_mode): Ditto.
19675 (expand_tuple_move): Ditto.
19676 * config/riscv/riscv-v.cc (ENTRY): New macro.
19677 (TUPLE_ENTRY): Ditto.
19678 (get_nf): New function.
19679 (get_subpart_mode): Ditto.
19680 (get_tuple_mode): Ditto.
19681 (expand_tuple_move): Ditto.
19682 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
19683 New macro.
19684 (register_tuple_type): New function
19685 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
19686 New macro.
19687 (vint8mf8x2_t): New macro.
19688 (vuint8mf8x2_t): Ditto.
19689 (vint8mf8x3_t): Ditto.
19690 (vuint8mf8x3_t): Ditto.
19691 (vint8mf8x4_t): Ditto.
19692 (vuint8mf8x4_t): Ditto.
19693 (vint8mf8x5_t): Ditto.
19694 (vuint8mf8x5_t): Ditto.
19695 (vint8mf8x6_t): Ditto.
19696 (vuint8mf8x6_t): Ditto.
19697 (vint8mf8x7_t): Ditto.
19698 (vuint8mf8x7_t): Ditto.
19699 (vint8mf8x8_t): Ditto.
19700 (vuint8mf8x8_t): Ditto.
19701 (vint8mf4x2_t): Ditto.
19702 (vuint8mf4x2_t): Ditto.
19703 (vint8mf4x3_t): Ditto.
19704 (vuint8mf4x3_t): Ditto.
19705 (vint8mf4x4_t): Ditto.
19706 (vuint8mf4x4_t): Ditto.
19707 (vint8mf4x5_t): Ditto.
19708 (vuint8mf4x5_t): Ditto.
19709 (vint8mf4x6_t): Ditto.
19710 (vuint8mf4x6_t): Ditto.
19711 (vint8mf4x7_t): Ditto.
19712 (vuint8mf4x7_t): Ditto.
19713 (vint8mf4x8_t): Ditto.
19714 (vuint8mf4x8_t): Ditto.
19715 (vint8mf2x2_t): Ditto.
19716 (vuint8mf2x2_t): Ditto.
19717 (vint8mf2x3_t): Ditto.
19718 (vuint8mf2x3_t): Ditto.
19719 (vint8mf2x4_t): Ditto.
19720 (vuint8mf2x4_t): Ditto.
19721 (vint8mf2x5_t): Ditto.
19722 (vuint8mf2x5_t): Ditto.
19723 (vint8mf2x6_t): Ditto.
19724 (vuint8mf2x6_t): Ditto.
19725 (vint8mf2x7_t): Ditto.
19726 (vuint8mf2x7_t): Ditto.
19727 (vint8mf2x8_t): Ditto.
19728 (vuint8mf2x8_t): Ditto.
19729 (vint8m1x2_t): Ditto.
19730 (vuint8m1x2_t): Ditto.
19731 (vint8m1x3_t): Ditto.
19732 (vuint8m1x3_t): Ditto.
19733 (vint8m1x4_t): Ditto.
19734 (vuint8m1x4_t): Ditto.
19735 (vint8m1x5_t): Ditto.
19736 (vuint8m1x5_t): Ditto.
19737 (vint8m1x6_t): Ditto.
19738 (vuint8m1x6_t): Ditto.
19739 (vint8m1x7_t): Ditto.
19740 (vuint8m1x7_t): Ditto.
19741 (vint8m1x8_t): Ditto.
19742 (vuint8m1x8_t): Ditto.
19743 (vint8m2x2_t): Ditto.
19744 (vuint8m2x2_t): Ditto.
19745 (vint8m2x3_t): Ditto.
19746 (vuint8m2x3_t): Ditto.
19747 (vint8m2x4_t): Ditto.
19748 (vuint8m2x4_t): Ditto.
19749 (vint8m4x2_t): Ditto.
19750 (vuint8m4x2_t): Ditto.
19751 (vint16mf4x2_t): Ditto.
19752 (vuint16mf4x2_t): Ditto.
19753 (vint16mf4x3_t): Ditto.
19754 (vuint16mf4x3_t): Ditto.
19755 (vint16mf4x4_t): Ditto.
19756 (vuint16mf4x4_t): Ditto.
19757 (vint16mf4x5_t): Ditto.
19758 (vuint16mf4x5_t): Ditto.
19759 (vint16mf4x6_t): Ditto.
19760 (vuint16mf4x6_t): Ditto.
19761 (vint16mf4x7_t): Ditto.
19762 (vuint16mf4x7_t): Ditto.
19763 (vint16mf4x8_t): Ditto.
19764 (vuint16mf4x8_t): Ditto.
19765 (vint16mf2x2_t): Ditto.
19766 (vuint16mf2x2_t): Ditto.
19767 (vint16mf2x3_t): Ditto.
19768 (vuint16mf2x3_t): Ditto.
19769 (vint16mf2x4_t): Ditto.
19770 (vuint16mf2x4_t): Ditto.
19771 (vint16mf2x5_t): Ditto.
19772 (vuint16mf2x5_t): Ditto.
19773 (vint16mf2x6_t): Ditto.
19774 (vuint16mf2x6_t): Ditto.
19775 (vint16mf2x7_t): Ditto.
19776 (vuint16mf2x7_t): Ditto.
19777 (vint16mf2x8_t): Ditto.
19778 (vuint16mf2x8_t): Ditto.
19779 (vint16m1x2_t): Ditto.
19780 (vuint16m1x2_t): Ditto.
19781 (vint16m1x3_t): Ditto.
19782 (vuint16m1x3_t): Ditto.
19783 (vint16m1x4_t): Ditto.
19784 (vuint16m1x4_t): Ditto.
19785 (vint16m1x5_t): Ditto.
19786 (vuint16m1x5_t): Ditto.
19787 (vint16m1x6_t): Ditto.
19788 (vuint16m1x6_t): Ditto.
19789 (vint16m1x7_t): Ditto.
19790 (vuint16m1x7_t): Ditto.
19791 (vint16m1x8_t): Ditto.
19792 (vuint16m1x8_t): Ditto.
19793 (vint16m2x2_t): Ditto.
19794 (vuint16m2x2_t): Ditto.
19795 (vint16m2x3_t): Ditto.
19796 (vuint16m2x3_t): Ditto.
19797 (vint16m2x4_t): Ditto.
19798 (vuint16m2x4_t): Ditto.
19799 (vint16m4x2_t): Ditto.
19800 (vuint16m4x2_t): Ditto.
19801 (vint32mf2x2_t): Ditto.
19802 (vuint32mf2x2_t): Ditto.
19803 (vint32mf2x3_t): Ditto.
19804 (vuint32mf2x3_t): Ditto.
19805 (vint32mf2x4_t): Ditto.
19806 (vuint32mf2x4_t): Ditto.
19807 (vint32mf2x5_t): Ditto.
19808 (vuint32mf2x5_t): Ditto.
19809 (vint32mf2x6_t): Ditto.
19810 (vuint32mf2x6_t): Ditto.
19811 (vint32mf2x7_t): Ditto.
19812 (vuint32mf2x7_t): Ditto.
19813 (vint32mf2x8_t): Ditto.
19814 (vuint32mf2x8_t): Ditto.
19815 (vint32m1x2_t): Ditto.
19816 (vuint32m1x2_t): Ditto.
19817 (vint32m1x3_t): Ditto.
19818 (vuint32m1x3_t): Ditto.
19819 (vint32m1x4_t): Ditto.
19820 (vuint32m1x4_t): Ditto.
19821 (vint32m1x5_t): Ditto.
19822 (vuint32m1x5_t): Ditto.
19823 (vint32m1x6_t): Ditto.
19824 (vuint32m1x6_t): Ditto.
19825 (vint32m1x7_t): Ditto.
19826 (vuint32m1x7_t): Ditto.
19827 (vint32m1x8_t): Ditto.
19828 (vuint32m1x8_t): Ditto.
19829 (vint32m2x2_t): Ditto.
19830 (vuint32m2x2_t): Ditto.
19831 (vint32m2x3_t): Ditto.
19832 (vuint32m2x3_t): Ditto.
19833 (vint32m2x4_t): Ditto.
19834 (vuint32m2x4_t): Ditto.
19835 (vint32m4x2_t): Ditto.
19836 (vuint32m4x2_t): Ditto.
19837 (vint64m1x2_t): Ditto.
19838 (vuint64m1x2_t): Ditto.
19839 (vint64m1x3_t): Ditto.
19840 (vuint64m1x3_t): Ditto.
19841 (vint64m1x4_t): Ditto.
19842 (vuint64m1x4_t): Ditto.
19843 (vint64m1x5_t): Ditto.
19844 (vuint64m1x5_t): Ditto.
19845 (vint64m1x6_t): Ditto.
19846 (vuint64m1x6_t): Ditto.
19847 (vint64m1x7_t): Ditto.
19848 (vuint64m1x7_t): Ditto.
19849 (vint64m1x8_t): Ditto.
19850 (vuint64m1x8_t): Ditto.
19851 (vint64m2x2_t): Ditto.
19852 (vuint64m2x2_t): Ditto.
19853 (vint64m2x3_t): Ditto.
19854 (vuint64m2x3_t): Ditto.
19855 (vint64m2x4_t): Ditto.
19856 (vuint64m2x4_t): Ditto.
19857 (vint64m4x2_t): Ditto.
19858 (vuint64m4x2_t): Ditto.
19859 (vfloat32mf2x2_t): Ditto.
19860 (vfloat32mf2x3_t): Ditto.
19861 (vfloat32mf2x4_t): Ditto.
19862 (vfloat32mf2x5_t): Ditto.
19863 (vfloat32mf2x6_t): Ditto.
19864 (vfloat32mf2x7_t): Ditto.
19865 (vfloat32mf2x8_t): Ditto.
19866 (vfloat32m1x2_t): Ditto.
19867 (vfloat32m1x3_t): Ditto.
19868 (vfloat32m1x4_t): Ditto.
19869 (vfloat32m1x5_t): Ditto.
19870 (vfloat32m1x6_t): Ditto.
19871 (vfloat32m1x7_t): Ditto.
19872 (vfloat32m1x8_t): Ditto.
19873 (vfloat32m2x2_t): Ditto.
19874 (vfloat32m2x3_t): Ditto.
19875 (vfloat32m2x4_t): Ditto.
19876 (vfloat32m4x2_t): Ditto.
19877 (vfloat64m1x2_t): Ditto.
19878 (vfloat64m1x3_t): Ditto.
19879 (vfloat64m1x4_t): Ditto.
19880 (vfloat64m1x5_t): Ditto.
19881 (vfloat64m1x6_t): Ditto.
19882 (vfloat64m1x7_t): Ditto.
19883 (vfloat64m1x8_t): Ditto.
19884 (vfloat64m2x2_t): Ditto.
19885 (vfloat64m2x3_t): Ditto.
19886 (vfloat64m2x4_t): Ditto.
19887 (vfloat64m4x2_t): Ditto.
19888 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
19889 Ditto.
19890 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
19891 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
19892 function.
19893 (TUPLE_ENTRY): Ditto.
19894 (riscv_v_ext_mode_p): New function.
19895 (riscv_v_adjust_nunits): Add tuple mode adjustment.
19896 (riscv_classify_address): Ditto.
19897 (riscv_binary_cost): Ditto.
19898 (riscv_rtx_costs): Ditto.
19899 (riscv_secondary_memory_needed): Ditto.
19900 (riscv_hard_regno_nregs): Ditto.
19901 (riscv_hard_regno_mode_ok): Ditto.
19902 (riscv_vector_mode_supported_p): Ditto.
19903 (riscv_regmode_natural_size): Ditto.
19904 (riscv_array_mode): New function.
19905 (TARGET_ARRAY_MODE): New target hook.
19906 * config/riscv/riscv.md: Add tuple modes.
19907 * config/riscv/vector-iterators.md: Ditto.
19908 * config/riscv/vector.md (mov<mode>): Add tuple modes data
19909 movement.
19910 (*mov<VT:mode>_<P:mode>): Ditto.
19911
19912 2023-05-03 Richard Biener <rguenther@suse.de>
19913
19914 * cse.cc (cse_insn): Track an equivalence to the destination
19915 separately and delay using src_related for it.
19916
19917 2023-05-03 Richard Biener <rguenther@suse.de>
19918
19919 * cse.cc (HASH): Turn into inline function and mix
19920 in another HASH_SHIFT bits.
19921 (SAFE_HASH): Likewise.
19922
19923 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19924
19925 PR target/99195
19926 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
19927 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
19928
19929 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19930
19931 PR target/99195
19932 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
19933 (add<mode>3<vczle><vczbe>): ... This.
19934 (sub<mode>3): Rename to...
19935 (sub<mode>3<vczle><vczbe>): ... This.
19936 (mul<mode>3): Rename to...
19937 (mul<mode>3<vczle><vczbe>): ... This.
19938 (*div<mode>3): Rename to...
19939 (*div<mode>3<vczle><vczbe>): ... This.
19940 (neg<mode>2): Rename to...
19941 (neg<mode>2<vczle><vczbe>): ... This.
19942 (abs<mode>2): Rename to...
19943 (abs<mode>2<vczle><vczbe>): ... This.
19944 (<frint_pattern><mode>2): Rename to...
19945 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
19946 (<fmaxmin><mode>3): Rename to...
19947 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
19948 (*sqrt<mode>2): Rename to...
19949 (*sqrt<mode>2<vczle><vczbe>): ... This.
19950
19951 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
19952
19953 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
19954
19955 2023-05-03 Martin Liska <mliska@suse.cz>
19956
19957 PR tree-optimization/109693
19958 * value-range-storage.cc (vrange_allocator::vrange_allocator):
19959 Remove unused field.
19960 * value-range-storage.h: Likewise.
19961
19962 2023-05-02 Andrew Pinski <apinski@marvell.com>
19963
19964 * tree-ssa-phiopt.cc (move_stmt): New function.
19965 (match_simplify_replacement): Use move_stmt instead
19966 of the inlined version.
19967
19968 2023-05-02 Andrew Pinski <apinski@marvell.com>
19969
19970 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
19971 pattern.
19972
19973 2023-05-02 Andrew Pinski <apinski@marvell.com>
19974
19975 PR tree-optimization/109702
19976 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
19977 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
19978
19979 2023-05-02 Andrew Pinski <apinski@marvell.com>
19980
19981 PR target/109657
19982 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
19983 insn_and_split pattern.
19984
19985 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
19986
19987 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
19988 load mapping.
19989
19990 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
19991
19992 * config/riscv/sync.md (mem_thread_fence_1): Change fence
19993 depending on the given memory model.
19994
19995 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
19996
19997 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
19998 riscv_union_memmodels function to sync.md.
19999 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
20000 get the union of two memmodels in sync.md.
20001 (riscv_print_operand): Add %I and %J flags that output the
20002 optimal LR/SC flag bits for a given memory model.
20003 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
20004 bits on SC op and replace with optimized %I, %J flags.
20005
20006 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20007
20008 * config/riscv/riscv.cc
20009 (riscv_memmodel_needs_amo_release): Change function name.
20010 (riscv_print_operand): Remove unneeded %F case.
20011 * config/riscv/sync.md: Remove unneeded fences.
20012
20013 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20014
20015 PR target/89835
20016 * config/riscv/sync.md (atomic_store<mode>): Use simple store
20017 instruction in combination with fence(s).
20018
20019 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20020
20021 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
20022 of %A to include release bits.
20023
20024 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20025
20026 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
20027 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
20028 pair.
20029
20030 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20031
20032 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
20033 sequentially consistent LR.aqrl/SC.rl pairs.
20034
20035 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20036
20037 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
20038 sanitize memmodel input with memmodel_base.
20039
20040 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
20041 Pan Li <pan2.li@intel.com>
20042
20043 PR target/109617
20044 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
20045
20046 2023-05-02 Romain Naour <romain.naour@gmail.com>
20047
20048 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
20049 the namespace.
20050
20051 2023-05-02 Martin Liska <mliska@suse.cz>
20052
20053 * doc/invoke.texi: Update documentation based on param.opt file.
20054
20055 2023-05-02 Richard Biener <rguenther@suse.de>
20056
20057 PR tree-optimization/109672
20058 * tree-vect-stmts.cc (vectorizable_operation): For plus,
20059 minus and negate always check the vector mode is word mode.
20060
20061 2023-05-01 Andrew Pinski <apinski@marvell.com>
20062
20063 * tree-ssa-phiopt.cc: Update comment about
20064 how the transformation are implemented.
20065
20066 2023-05-01 Jeff Law <jlaw@ventanamicro>
20067
20068 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
20069
20070 2023-05-01 Jeff Law <jlaw@ventanamicro>
20071
20072 * config/cris/cris.cc (TARGET_LRA_P): Remove.
20073 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
20074 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
20075 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
20076 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
20077 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
20078
20079 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
20080
20081 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
20082 * print-tree.cc (print_decl_identifier): Implement it.
20083 * toplev.cc (output_stack_usage_1): Use it.
20084
20085 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20086
20087 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
20088 friends.
20089
20090 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20091
20092 * value-range.h (irange::set_nonzero): Inline.
20093
20094 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20095
20096 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
20097 precision.
20098 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
20099 invalid_range, as it is an inverse range.
20100 * tree-vrp.cc (find_case_label_range): Avoid trees.
20101 * value-range.cc (irange::irange_set): Delete.
20102 (irange::irange_set_1bit_anti_range): Delete.
20103 (irange::irange_set_anti_range): Delete.
20104 (irange::set): Cleanup.
20105 * value-range.h (class irange): Remove irange_set,
20106 irange_set_anti_range, irange_set_1bit_anti_range.
20107 (irange::set_undefined): Remove set to m_type.
20108
20109 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20110
20111 * range-op.cc (update_known_bitmask): Adjust for irange containing
20112 wide_ints internally.
20113 * tree-ssanames.cc (set_nonzero_bits): Same.
20114 * tree-ssanames.h (set_nonzero_bits): Same.
20115 * value-range-storage.cc (irange_storage::set_irange): Same.
20116 (irange_storage::get_irange): Same.
20117 * value-range.cc (irange::operator=): Same.
20118 (irange::irange_set): Same.
20119 (irange::irange_set_1bit_anti_range): Same.
20120 (irange::irange_set_anti_range): Same.
20121 (irange::set): Same.
20122 (irange::verify_range): Same.
20123 (irange::contains_p): Same.
20124 (irange::irange_single_pair_union): Same.
20125 (irange::union_): Same.
20126 (irange::irange_contains_p): Same.
20127 (irange::intersect): Same.
20128 (irange::invert): Same.
20129 (irange::set_range_from_nonzero_bits): Same.
20130 (irange::set_nonzero_bits): Same.
20131 (mask_to_wi): Same.
20132 (irange::intersect_nonzero_bits): Same.
20133 (irange::union_nonzero_bits): Same.
20134 (gt_ggc_mx): Same.
20135 (gt_pch_nx): Same.
20136 (tree_range): Same.
20137 (range_tests_strict_enum): Same.
20138 (range_tests_misc): Same.
20139 (range_tests_nonzero_bits): Same.
20140 * value-range.h (irange::type): Same.
20141 (irange::varying_compatible_p): Same.
20142 (irange::irange): Same.
20143 (int_range::int_range): Same.
20144 (irange::set_undefined): Same.
20145 (irange::set_varying): Same.
20146 (irange::lower_bound): Same.
20147 (irange::upper_bound): Same.
20148
20149 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20150
20151 * gimple-range-fold.cc (tree_lower_bound): Delete.
20152 (tree_upper_bound): Delete.
20153 (vrp_val_max): Delete.
20154 (vrp_val_min): Delete.
20155 (fold_using_range::range_of_ssa_name_with_loop_info): Call
20156 range_of_var_in_loop.
20157 * vr-values.cc (valid_value_p): Delete.
20158 (fix_overflow): Delete.
20159 (get_scev_info): New.
20160 (bounds_of_var_in_loop): Refactor into...
20161 (induction_variable_may_overflow_p): ...this,
20162 (range_from_loop_direction): ...and this,
20163 (range_of_var_in_loop): ...and this.
20164 * vr-values.h (bounds_of_var_in_loop): Delete.
20165 (range_of_var_in_loop): New.
20166
20167 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20168
20169 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
20170 irange_val*.
20171 (vrp_val_max): New.
20172 (vrp_val_min): New.
20173 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
20174 * range-op.cc (max_limit): Same.
20175 (min_limit): Same.
20176 (plus_minus_ranges): Same.
20177 (operator_rshift::op1_range): Same.
20178 (operator_cast::inside_domain_p): Same.
20179 * value-range.cc (vrp_val_is_max): Delete.
20180 (vrp_val_is_min): Delete.
20181 (range_tests_misc): Use irange_val_*.
20182 * value-range.h (vrp_val_is_min): Delete.
20183 (vrp_val_is_max): Delete.
20184 (vrp_val_max): Delete.
20185 (irange_val_min): New.
20186 (vrp_val_min): Delete.
20187 (irange_val_max): New.
20188 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
20189
20190 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20191
20192 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
20193 * gimple-fold.cc (size_must_be_zero_p): Same.
20194 * gimple-loop-versioning.cc
20195 (loop_versioning::prune_loop_conditions): Same.
20196 * gimple-range-edge.cc (gcond_edge_range): Same.
20197 (gimple_outgoing_range::calc_switch_ranges): Same.
20198 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
20199 (adjust_realpart_expr): Same.
20200 (fold_using_range::range_of_address): Same.
20201 (fold_using_range::relation_fold_and_or): Same.
20202 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
20203 (range_is_either_true_or_false): Same.
20204 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
20205 (cfn_clz::fold_range): Same.
20206 (cfn_ctz::fold_range): Same.
20207 * gimple-range-tests.cc (class test_expr_eval): Same.
20208 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
20209 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
20210 (propagate_vr_across_jump_function): Same.
20211 (decide_whether_version_node): Same.
20212 * ipa-prop.cc (ipa_get_value_range): Same.
20213 * ipa-prop.h (ipa_range_set_and_normalize): Same.
20214 * range-op.cc (get_shift_range): Same.
20215 (value_range_from_overflowed_bounds): Same.
20216 (value_range_with_overflow): Same.
20217 (create_possibly_reversed_range): Same.
20218 (equal_op1_op2_relation): Same.
20219 (not_equal_op1_op2_relation): Same.
20220 (lt_op1_op2_relation): Same.
20221 (le_op1_op2_relation): Same.
20222 (gt_op1_op2_relation): Same.
20223 (ge_op1_op2_relation): Same.
20224 (operator_mult::op1_range): Same.
20225 (operator_exact_divide::op1_range): Same.
20226 (operator_lshift::op1_range): Same.
20227 (operator_rshift::op1_range): Same.
20228 (operator_cast::op1_range): Same.
20229 (operator_logical_and::fold_range): Same.
20230 (set_nonzero_range_from_mask): Same.
20231 (operator_bitwise_or::op1_range): Same.
20232 (operator_bitwise_xor::op1_range): Same.
20233 (operator_addr_expr::fold_range): Same.
20234 (pointer_plus_operator::wi_fold): Same.
20235 (pointer_or_operator::op1_range): Same.
20236 (INT): Same.
20237 (UINT): Same.
20238 (INT16): Same.
20239 (UINT16): Same.
20240 (SCHAR): Same.
20241 (UCHAR): Same.
20242 (range_op_cast_tests): Same.
20243 (range_op_lshift_tests): Same.
20244 (range_op_rshift_tests): Same.
20245 (range_op_bitwise_and_tests): Same.
20246 (range_relational_tests): Same.
20247 * range.cc (range_zero): Same.
20248 (range_nonzero): Same.
20249 * range.h (range_true): Same.
20250 (range_false): Same.
20251 (range_true_and_false): Same.
20252 * tree-data-ref.cc (split_constant_offset_1): Same.
20253 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
20254 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
20255 (find_unswitching_predicates_for_bb): Same.
20256 * tree-ssa-phiopt.cc (value_replacement): Same.
20257 * tree-ssa-threadbackward.cc
20258 (back_threader::find_taken_edge_cond): Same.
20259 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
20260 * tree-vrp.cc (find_case_label_range): Same.
20261 * value-query.cc (range_query::get_tree_range): Same.
20262 * value-range.cc (irange::set_nonnegative): Same.
20263 (frange::contains_p): Same.
20264 (frange::singleton_p): Same.
20265 (frange::internal_singleton_p): Same.
20266 (irange::irange_set): Same.
20267 (irange::irange_set_1bit_anti_range): Same.
20268 (irange::irange_set_anti_range): Same.
20269 (irange::set): Same.
20270 (irange::operator==): Same.
20271 (irange::singleton_p): Same.
20272 (irange::contains_p): Same.
20273 (irange::set_range_from_nonzero_bits): Same.
20274 (DEFINE_INT_RANGE_INSTANCE): Same.
20275 (INT): Same.
20276 (UINT): Same.
20277 (SCHAR): Same.
20278 (UINT128): Same.
20279 (UCHAR): Same.
20280 (range): New.
20281 (tree_range): New.
20282 (range_int): New.
20283 (range_uint): New.
20284 (range_uint128): New.
20285 (range_uchar): New.
20286 (range_char): New.
20287 (build_range3): Convert to irange wide_int API.
20288 (range_tests_irange3): Same.
20289 (range_tests_int_range_max): Same.
20290 (range_tests_strict_enum): Same.
20291 (range_tests_misc): Same.
20292 (range_tests_nonzero_bits): Same.
20293 (range_tests_nan): Same.
20294 (range_tests_signed_zeros): Same.
20295 * value-range.h (Value_Range::Value_Range): Same.
20296 (irange::set): Same.
20297 (irange::nonzero_p): Same.
20298 (irange::contains_p): Same.
20299 (range_includes_zero_p): Same.
20300 (irange::set_nonzero): Same.
20301 (irange::set_zero): Same.
20302 (contains_zero_p): Same.
20303 (frange::contains_p): Same.
20304 * vr-values.cc
20305 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
20306 (bounds_of_var_in_loop): Same.
20307 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
20308
20309 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20310
20311 * value-range.cc (irange::irange_union): Rename to...
20312 (irange::union_): ...this.
20313 (irange::irange_intersect): Rename to...
20314 (irange::intersect): ...this.
20315 * value-range.h (irange::union_): Delete.
20316 (irange::intersect): Delete.
20317
20318 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20319
20320 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
20321
20322 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20323
20324 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
20325 ranger API.
20326 (compare_ranges): Delete.
20327 (compare_range_with_value): Delete.
20328 (bounds_of_var_in_loop): Tidy up by using ranger API.
20329 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
20330 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
20331 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
20332 strict_overflow_p and only_ranges.
20333 (simplify_using_ranges::legacy_fold_cond): Adjust call to
20334 legacy_fold_cond_overflow.
20335 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
20336 rename.
20337 (range_fits_type_p): Rename value_range to irange.
20338 * vr-values.h (range_fits_type_p): Adjust prototype.
20339
20340 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20341
20342 * value-range.cc (irange::irange_set_anti_range): Remove uses of
20343 tree_lower_bound and tree_upper_bound.
20344 (irange::verify_range): Same.
20345 (irange::operator==): Same.
20346 (irange::singleton_p): Same.
20347 * value-range.h (irange::tree_lower_bound): Delete.
20348 (irange::tree_upper_bound): Delete.
20349 (irange::lower_bound): Delete.
20350 (irange::upper_bound): Delete.
20351 (irange::zero_p): Remove uses of tree_lower_bound and
20352 tree_upper_bound.
20353
20354 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20355
20356 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
20357 kind() call.
20358 (determine_value_range): Same.
20359 (record_nonwrapping_iv): Same.
20360 (infer_loop_bounds_from_signedness): Same.
20361 (scev_var_range_cant_overflow): Same.
20362 * tree-vrp.cc (operand_less_p): Delete.
20363 * tree-vrp.h (operand_less_p): Delete.
20364 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
20365 (irange::value_inside_range): Delete.
20366 * value-range.h (vrange::kind): Delete.
20367 (irange::num_pairs): Remove check of m_kind.
20368 (irange::min): Delete.
20369 (irange::max): Delete.
20370
20371 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20372
20373 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
20374 for vrange_storage.
20375 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
20376 (sbr_vector::grow): Same.
20377 (sbr_vector::set_bb_range): Same.
20378 (sbr_vector::get_bb_range): Same.
20379 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
20380 (sbr_sparse_bitmap::set_bb_range): Same.
20381 (sbr_sparse_bitmap::get_bb_range): Same.
20382 (block_range_cache::block_range_cache): Same.
20383 (ssa_global_cache::ssa_global_cache): Same.
20384 (ssa_global_cache::get_global_range): Same.
20385 (ssa_global_cache::set_global_range): Same.
20386 * gimple-range-cache.h: Same.
20387 * gimple-range-edge.cc
20388 (gimple_outgoing_range::gimple_outgoing_range): Same.
20389 (gimple_outgoing_range::switch_edge_range): Same.
20390 (gimple_outgoing_range::calc_switch_ranges): Same.
20391 * gimple-range-edge.h: Same.
20392 * gimple-range-infer.cc
20393 (infer_range_manager::infer_range_manager): Same.
20394 (infer_range_manager::get_nonzero): Same.
20395 (infer_range_manager::maybe_adjust_range): Same.
20396 (infer_range_manager::add_range): Same.
20397 * gimple-range-infer.h: Rename obstack_vrange_allocator to
20398 vrange_allocator.
20399 * tree-core.h (struct irange_storage_slot): Remove.
20400 (struct tree_ssa_name): Remove irange_info and frange_info. Make
20401 range_info a pointer to vrange_storage.
20402 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
20403 (range_info_alloc): Same.
20404 (range_info_free): Same.
20405 (range_info_get_range): Same.
20406 (range_info_set_range): Same.
20407 (get_nonzero_bits): Same.
20408 * value-query.cc (get_ssa_name_range_info): Same.
20409 * value-range-storage.cc (class vrange_internal_alloc): New.
20410 (class vrange_obstack_alloc): New.
20411 (class vrange_ggc_alloc): New.
20412 (vrange_allocator::vrange_allocator): New.
20413 (vrange_allocator::~vrange_allocator): New.
20414 (vrange_storage::alloc_slot): New.
20415 (vrange_allocator::alloc): New.
20416 (vrange_allocator::free): New.
20417 (vrange_allocator::clone): New.
20418 (vrange_allocator::clone_varying): New.
20419 (vrange_allocator::clone_undefined): New.
20420 (vrange_storage::alloc): New.
20421 (vrange_storage::set_vrange): Remove slot argument.
20422 (vrange_storage::get_vrange): Same.
20423 (vrange_storage::fits_p): Same.
20424 (vrange_storage::equal_p): New.
20425 (irange_storage::write_lengths_address): New.
20426 (irange_storage::lengths_address): New.
20427 (irange_storage_slot::alloc_slot): Remove.
20428 (irange_storage::alloc): New.
20429 (irange_storage_slot::irange_storage_slot): Remove.
20430 (irange_storage::irange_storage): New.
20431 (write_wide_int): New.
20432 (irange_storage_slot::set_irange): Remove.
20433 (irange_storage::set_irange): New.
20434 (read_wide_int): New.
20435 (irange_storage_slot::get_irange): Remove.
20436 (irange_storage::get_irange): New.
20437 (irange_storage_slot::size): Remove.
20438 (irange_storage::equal_p): New.
20439 (irange_storage_slot::num_wide_ints_needed): Remove.
20440 (irange_storage::size): New.
20441 (irange_storage_slot::fits_p): Remove.
20442 (irange_storage::fits_p): New.
20443 (irange_storage_slot::dump): Remove.
20444 (irange_storage::dump): New.
20445 (frange_storage_slot::alloc_slot): Remove.
20446 (frange_storage::alloc): New.
20447 (frange_storage_slot::set_frange): Remove.
20448 (frange_storage::set_frange): New.
20449 (frange_storage_slot::get_frange): Remove.
20450 (frange_storage::get_frange): New.
20451 (frange_storage_slot::fits_p): Remove.
20452 (frange_storage::equal_p): New.
20453 (frange_storage::fits_p): New.
20454 (ggc_vrange_allocator): New.
20455 (ggc_alloc_vrange_storage): New.
20456 * value-range-storage.h (class vrange_storage): Rewrite.
20457 (class irange_storage): Rewrite.
20458 (class frange_storage): Rewrite.
20459 (class obstack_vrange_allocator): Remove.
20460 (class ggc_vrange_allocator): Remove.
20461 (vrange_allocator::alloc_vrange): Remove.
20462 (vrange_allocator::alloc_irange): Remove.
20463 (vrange_allocator::alloc_frange): Remove.
20464 (ggc_alloc_vrange_storage): New.
20465 * value-range.h (class irange): Rename vrange_allocator to
20466 irange_storage.
20467 (class frange): Same.
20468
20469 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
20470
20471 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
20472 inc to avoid clobbering the carry flag.
20473
20474 2023-04-30 Andrew Pinski <apinski@marvell.com>
20475
20476 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
20477 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
20478
20479 2023-04-30 Andrew Pinski <apinski@marvell.com>
20480
20481 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
20482 Allow some builtin/internal function calls which
20483 are known not to trap/throw.
20484 (phiopt_worker::match_simplify_replacement):
20485 Use name instead of getting the lhs again.
20486
20487 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
20488
20489 * configure: Regenerate.
20490 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
20491
20492 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
20493
20494 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
20495 emit_insn_if_valid_for_reload.
20496 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
20497 to be recognized, also try emitting a parallel that clobbers
20498 TARGET_FLAGS_REGNUM, as applicable.
20499
20500 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
20501
20502 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
20503 to a define_insn.
20504 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
20505 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
20506
20507 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
20508
20509 * config/stormy16/stormy16.md (any_lshift): New code iterator.
20510 (any_or_plus): Likewise.
20511 (any_rotate): Likewise.
20512 (*<any_lshift>_and_internal): New define_insn_and_split to
20513 recognize a logical shift followed by an AND, and split it
20514 again after reload.
20515 (*swpn): New define_insn matching xstormy16's swpn.
20516 (*swpn_zext): New define_insn recognizing swpn followed by
20517 zero_extendqihi2, i.e. with the high byte set to zero.
20518 (*swpn_sext): Likewise, for swpn followed by cbw.
20519 (*swpn_sext_2): Likewise, for an alternate RTL form.
20520 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
20521 sequence is split in the correct place to recognize the *swpn_zext
20522 followed by any_or_plus (ior, xor or plus) instruction.
20523
20524 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
20525
20526 PR target/105525
20527 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
20528 (lm32-*-uclinux*): Likewise.
20529
20530 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
20531
20532 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
20533 for riscv_use_save_libcall.
20534 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
20535 (riscv_compute_frame_info): restructure to decouple stack allocation
20536 for rv32e w/o save-restore.
20537
20538 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
20539
20540 * doc/install.texi: Fix documentation typo
20541
20542 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
20543
20544 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
20545 (u): Add div/udiv cases.
20546 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
20547 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
20548 divmod expansion.
20549 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
20550 (thead_c906_tune_info): Likewise.
20551 (optimize_size_tune_info): Likewise.
20552 (riscv_use_divmod_expander): New function.
20553 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
20554
20555 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
20556
20557 * config/riscv/bitmanip.md: Added clmulr instruction.
20558 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
20559 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
20560 (type): Add clmul
20561 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
20562 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
20563 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
20564 functions to riscv-cmo.def.
20565 * config/riscv/generic.md: Add clmul to list of instructions
20566 using the generic_imul reservation.
20567
20568 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
20569
20570 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
20571
20572 2023-04-28 Andrew Pinski <apinski@marvell.com>
20573
20574 PR tree-optimization/100958
20575 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
20576 (pass_phiopt::execute): Don't call two_value_replacement.
20577 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
20578 handle what two_value_replacement did.
20579
20580 2023-04-28 Andrew Pinski <apinski@marvell.com>
20581
20582 * match.pd: Add patterns for
20583 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
20584
20585 2023-04-28 Andrew Pinski <apinski@marvell.com>
20586
20587 * match.pd: Factor out the deciding the min/max from
20588 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
20589 pattern to ...
20590 * fold-const.cc (minmax_from_comparison): this new function.
20591 * fold-const.h (minmax_from_comparison): New prototype.
20592
20593 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
20594
20595 PR rtl-optimization/109476
20596 * lower-subreg.cc: Include explow.h for force_reg.
20597 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
20598 If decomposing a suitable LSHIFTRT and we're not splitting
20599 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
20600 instead of setting a high part SUBREG to zero, which helps combine.
20601 (decompose_multiword_subregs): Update call to resolve_shift_zext.
20602
20603 2023-04-28 Richard Biener <rguenther@suse.de>
20604
20605 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
20606 consider scatters.
20607 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
20608 gather-scatter info and cost emulated scatters accordingly.
20609 (get_load_store_type): Support emulated scatters.
20610 (vectorizable_store): Likewise. Emulate them by extracting
20611 scalar offsets and data, doing scalar stores.
20612
20613 2023-04-28 Richard Biener <rguenther@suse.de>
20614
20615 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
20616 Tame down element extracts and scalar loads for gather/scatter
20617 similar to elementwise strided accesses.
20618
20619 2023-04-28 Pan Li <pan2.li@intel.com>
20620 kito-cheng <kito.cheng@sifive.com>
20621
20622 * config/riscv/vector.md: Add new define split to perform
20623 the simplification.
20624
20625 2023-04-28 Richard Biener <rguenther@suse.de>
20626
20627 PR ipa/109652
20628 * ipa-param-manipulation.cc
20629 (ipa_param_body_adjustments::modify_expression): Allow
20630 conversion of a register to a non-register type. Elide
20631 conversions inside BIT_FIELD_REFs.
20632
20633 2023-04-28 Richard Biener <rguenther@suse.de>
20634
20635 PR tree-optimization/109644
20636 * tree-cfg.cc (verify_types_in_gimple_reference): Check
20637 register constraints on the outermost VIEW_CONVERT_EXPR
20638 only. Do not allow register or invariant bases on
20639 multi-level or possibly variable index handled components.
20640
20641 2023-04-28 Richard Biener <rguenther@suse.de>
20642
20643 * gimplify.cc (gimplify_compound_lval): When there's a
20644 non-register type produced by one of the handled component
20645 operations make sure we get a non-register base.
20646
20647 2023-04-28 Richard Biener <rguenther@suse.de>
20648
20649 PR tree-optimization/108752
20650 * tree-vect-generic.cc (build_replicated_const): Rename
20651 to build_replicated_int_cst and move to tree.{h,cc}.
20652 (do_plus_minus): Adjust.
20653 (do_negate): Likewise.
20654 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
20655 arithmetic vector operations in lowered form.
20656 * tree.h (build_replicated_int_cst): Declare.
20657 * tree.cc (build_replicated_int_cst): Moved from
20658 tree-vect-generic.cc build_replicated_const.
20659
20660 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20661
20662 PR target/99195
20663 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
20664 (aarch64_rbit<mode><vczle><vczbe>): ... This.
20665 (neg<mode>2): Rename to...
20666 (neg<mode>2<vczle><vczbe>): ... This.
20667 (abs<mode>2): Rename to...
20668 (abs<mode>2<vczle><vczbe>): ... This.
20669 (aarch64_abs<mode>): Rename to...
20670 (aarch64_abs<mode><vczle><vczbe>): ... This.
20671 (one_cmpl<mode>2): Rename to...
20672 (one_cmpl<mode>2<vczle><vczbe>): ... This.
20673 (clrsb<mode>2): Rename to...
20674 (clrsb<mode>2<vczle><vczbe>): ... This.
20675 (clz<mode>2): Rename to...
20676 (clz<mode>2<vczle><vczbe>): ... This.
20677 (popcount<mode>2): Rename to...
20678 (popcount<mode>2<vczle><vczbe>): ... This.
20679
20680 2023-04-28 Jakub Jelinek <jakub@redhat.com>
20681
20682 * gimple-range-op.cc (class cfn_sqrt): New type.
20683 (op_cfn_sqrt): New variable.
20684 (gimple_range_op_handler::maybe_builtin_call): Handle
20685 CASE_CFN_SQRT{,_FN}.
20686
20687 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
20688 Jakub Jelinek <jakub@redhat.com>
20689
20690 * value-range.h (frange_nextafter): Declare.
20691 * gimple-range-op.cc (class cfn_sincos): New.
20692 (op_cfn_sin, op_cfn_cos): New variables.
20693 (gimple_range_op_handler::maybe_builtin_call): Handle
20694 CASE_CFN_{SIN,COS}{,_FN}.
20695
20696 2023-04-28 Jakub Jelinek <jakub@redhat.com>
20697
20698 * target.def (libm_function_max_error): New target hook.
20699 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
20700 * doc/tm.texi: Regenerated.
20701 * targhooks.h (default_libm_function_max_error,
20702 glibc_linux_libm_function_max_error): Declare.
20703 * targhooks.cc: Include case-cfn-macros.h.
20704 (default_libm_function_max_error,
20705 glibc_linux_libm_function_max_error): New functions.
20706 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20707 * config/linux-protos.h (linux_libm_function_max_error): Declare.
20708 * config/linux.cc: Include target.h and targhooks.h.
20709 (linux_libm_function_max_error): New function.
20710 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
20711 (arc_libm_function_max_error): New function.
20712 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20713 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
20714 (ix86_libm_function_max_error): New function.
20715 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20716 * config/rs6000/rs6000-protos.h
20717 (rs6000_linux_libm_function_max_error): Declare.
20718 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
20719 and case-cfn-macros.h.
20720 (rs6000_linux_libm_function_max_error): New function.
20721 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20722 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20723 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
20724 (or1k_libm_function_max_error): New function.
20725 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
20726
20727 2023-04-28 Alexandre Oliva <oliva@adacore.com>
20728
20729 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
20730 Move detach value calls...
20731 (pass_harden_conditional_branches::execute): ... here.
20732 (pass_harden_compares::execute): Detach values before
20733 compares.
20734
20735 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
20736
20737 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
20738 (cml<addsub_as><mode>4): Likewise.
20739 (vec_addsub<mode>3): Likewise.
20740 (cadd<rot><mode>3): Likewise.
20741 (vec_fmaddsub<mode>4): Likewise.
20742 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
20743
20744 2023-04-27 Andrew Pinski <apinski@marvell.com>
20745
20746 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
20747 up to 2 min/max expressions in the sequence/match code.
20748
20749 2023-04-27 Andrew Pinski <apinski@marvell.com>
20750
20751 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
20752 COMPARISON.
20753 * tree-eh.cc (operation_could_trap_helper_p): Treate
20754 MIN_EXPR/MAX_EXPR similar as other comparisons.
20755
20756 2023-04-27 Andrew Pinski <apinski@marvell.com>
20757
20758 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
20759 prototype.
20760 (cond_if_else_store_replacement): Likewise.
20761 (get_non_trapping): Likewise.
20762 (store_elim_worker): Move into ...
20763 (pass_cselim::execute): This.
20764
20765 2023-04-27 Andrew Pinski <apinski@marvell.com>
20766
20767 * tree-ssa-phiopt.cc (two_value_replacement): Remove
20768 prototype.
20769 (match_simplify_replacement): Likewise.
20770 (factor_out_conditional_conversion): Likewise.
20771 (value_replacement): Likewise.
20772 (minmax_replacement): Likewise.
20773 (spaceship_replacement): Likewise.
20774 (cond_removal_in_builtin_zero_pattern): Likewise.
20775 (hoist_adjacent_loads): Likewise.
20776 (tree_ssa_phiopt_worker): Move into ...
20777 (pass_phiopt::execute): this.
20778
20779 2023-04-27 Andrew Pinski <apinski@marvell.com>
20780
20781 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
20782 do_store_elim argument and split that part out to ...
20783 (store_elim_worker): This new function.
20784 (pass_cselim::execute): Call store_elim_worker.
20785 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
20786
20787 2023-04-27 Jan Hubicka <jh@suse.cz>
20788
20789 * cfgloopmanip.h (unloop_loops): Export.
20790 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
20791 that no longer loop.
20792 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
20793 vectors of loops to unloop.
20794 (canonicalize_induction_variables): Free vectors here.
20795 (tree_unroll_loops_completely): Free vectors here.
20796
20797 2023-04-27 Richard Biener <rguenther@suse.de>
20798
20799 PR tree-optimization/109170
20800 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
20801 Handle __builtin_expect and similar via cfn_pass_through_arg1
20802 and inspecting the calls fnspec.
20803 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
20804 and BUILT_IN_EXPECT_WITH_PROBABILITY.
20805
20806 2023-04-27 Alexandre Oliva <oliva@adacore.com>
20807
20808 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
20809
20810 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
20811
20812 PR tree-optimization/109639
20813 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
20814 (propagate_vr_across_jump_function): Same.
20815 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
20816 * ipa-prop.h (ipa_range_set_and_normalize): New.
20817 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
20818
20819 2023-04-27 Richard Biener <rguenther@suse.de>
20820
20821 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
20822 create a CTOR operand in the result when simplifying GIMPLE.
20823
20824 2023-04-27 Richard Biener <rguenther@suse.de>
20825
20826 * gimplify.cc (gimplify_compound_lval): When the base
20827 gimplified to a register make sure to split up chains
20828 of operations.
20829
20830 2023-04-27 Richard Biener <rguenther@suse.de>
20831
20832 PR ipa/109607
20833 * ipa-param-manipulation.h
20834 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
20835 argument.
20836 * ipa-param-manipulation.cc
20837 (ipa_param_body_adjustments::modify_expression): Likewise.
20838 When we need a conversion and the replacement is a register
20839 split the conversion out.
20840 (ipa_param_body_adjustments::modify_assignment): Pass
20841 extra_stmts to RHS modify_expression.
20842
20843 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
20844
20845 * doc/extend.texi (Zero Length): Describe example.
20846
20847 2023-04-27 Richard Biener <rguenther@suse.de>
20848
20849 PR tree-optimization/109594
20850 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
20851 what we rewrite to a register based on the above.
20852
20853 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
20854
20855 * config/riscv/riscv.cc: Fix whitespace.
20856 * config/riscv/sync.md: Fix whitespace.
20857
20858 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20859
20860 PR tree-optimization/108697
20861 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
20862 not clear the vector on an out of range query.
20863 (ssa_cache::dump): Use dump_range_query instead of get_range.
20864 (ssa_cache::dump_range_query): New.
20865 (ssa_lazy_cache::dump_range_query): New.
20866 (ssa_lazy_cache::set_range): New.
20867 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
20868 (class ssa_lazy_cache): New.
20869 (ssa_lazy_cache::ssa_lazy_cache): New.
20870 (ssa_lazy_cache::~ssa_lazy_cache): New.
20871 (ssa_lazy_cache::get_range): New.
20872 (ssa_lazy_cache::clear_range): New.
20873 (ssa_lazy_cache::clear): New.
20874 (ssa_lazy_cache::dump): New.
20875 * gimple-range-path.cc (path_range_query::path_range_query): Do
20876 not allocate a ssa_cache object nor has_cache bitmap.
20877 (path_range_query::~path_range_query): Do not free objects.
20878 (path_range_query::clear_cache): Remove.
20879 (path_range_query::get_cache): Adjust.
20880 (path_range_query::set_cache): Remove.
20881 (path_range_query::dump): Don't call through a pointer.
20882 (path_range_query::internal_range_of_expr): Set cache directly.
20883 (path_range_query::reset_path): Clear cache directly.
20884 (path_range_query::ssa_range_in_phi): Fold with globals only.
20885 (path_range_query::compute_ranges_in_phis): Simply set range.
20886 (path_range_query::compute_ranges_in_block): Call cache directly.
20887 * gimple-range-path.h (class path_range_query): Replace bitmap
20888 and cache pointer with lazy cache object.
20889 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
20890
20891 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20892
20893 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
20894 (ssa_cache::~ssa_cache): Rename.
20895 (ssa_cache::has_range): New.
20896 (ssa_cache::get_range): Rename.
20897 (ssa_cache::set_range): Rename.
20898 (ssa_cache::clear_range): Rename.
20899 (ssa_cache::clear): Rename.
20900 (ssa_cache::dump): Rename and use get_range.
20901 (ranger_cache::get_global_range): Use get_range and set_range.
20902 (ranger_cache::range_of_def): Use get_range.
20903 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
20904 (class ranger_cache): Use ssa_cache.
20905 * gimple-range-path.cc (path_range_query::path_range_query): Use
20906 ssa_cache.
20907 (path_range_query::get_cache): Use get_range.
20908 (path_range_query::set_cache): Use set_range.
20909 * gimple-range-path.h (class path_range_query): Use ssa_cache.
20910 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
20911 (assume_query::range_of_expr): Use get_range.
20912 (assume_query::assume_query): Use set_range.
20913 (assume_query::calculate_op): Use get_range and set_range.
20914 * gimple-range.h (class assume_query): Use ssa_cache.
20915
20916 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20917
20918 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
20919 and local to optionally zero memory.
20920 (br_vector::grow): Only zero memory if flag is set.
20921 (class sbr_lazy_vector): New.
20922 (sbr_lazy_vector::sbr_lazy_vector): New.
20923 (sbr_lazy_vector::set_bb_range): New.
20924 (sbr_lazy_vector::get_bb_range): New.
20925 (sbr_lazy_vector::bb_range_p): New.
20926 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
20927 * gimple-range-gori.cc (gori_map::calculate_gori): Use
20928 param_vrp_switch_limit.
20929 (gori_compute::gori_compute): Use param_vrp_switch_limit.
20930 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
20931 (vrp_switch_limit): Rename from evrp_switch_limit.
20932 (vrp_vector_threshold): New.
20933
20934 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20935
20936 * value-relation.cc (dom_oracle::query_relation): Check early for lack
20937 of any relation.
20938 * value-relation.h (equiv_oracle::has_equiv_p): New.
20939
20940 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20941
20942 PR tree-optimization/109417
20943 * gimple-range-gori.cc (range_def_chain::register_dependency):
20944 Save the ssa version number, not the pointer.
20945 (gori_compute::may_recompute_p): No need to check if a dependency
20946 is in the free list.
20947 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
20948 fields to be unsigned int instead of trees.
20949 (ange_def_chain::depend1): Adjust.
20950 (ange_def_chain::depend2): Adjust.
20951 * gimple-range.h: Include "ssa.h" to inline ssa_name().
20952
20953 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
20954
20955 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
20956 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
20957 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
20958
20959 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
20960
20961 PR target/104338
20962 * config/riscv/riscv-protos.h: Add helper function stubs.
20963 * config/riscv/riscv.cc: Add helper functions for subword masking.
20964 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
20965 -mno-inline-atomics.
20966 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
20967 fetch_and_nand, CAS, and exchange ops.
20968 * doc/invoke.texi: Add blurb regarding new command-line flags
20969 -minline-atomics and -mno-inline-atomics.
20970
20971 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20972
20973 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
20974 Reimplement using standard RTL codes instead of unspec.
20975 (aarch64_rshrn2<mode>_insn_be): Likewise.
20976 (aarch64_rshrn2<mode>): Adjust for the above.
20977 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
20978
20979 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20980
20981 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
20982 with standard RTL codes instead of an UNSPEC.
20983 (aarch64_rshrn<mode>_insn_be): Likewise.
20984 (aarch64_rshrn<mode>): Adjust for the above.
20985 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
20986
20987 2023-04-26 Pan Li <pan2.li@intel.com>
20988 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20989
20990 * config/riscv/riscv.cc (riscv_classify_address): Allow
20991 const0_rtx for the RVV load/store.
20992
20993 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
20994
20995 * range-op.cc (range_op_cast_tests): Remove legacy support.
20996 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
20997 * value-range.cc (irange::operator=): Same.
20998 (get_legacy_range): Same.
20999 (irange::copy_legacy_to_multi_range): Delete.
21000 (irange::copy_to_legacy): Delete.
21001 (irange::irange_set_anti_range): Delete.
21002 (irange::set): Remove legacy support.
21003 (irange::verify_range): Same.
21004 (irange::legacy_lower_bound): Delete.
21005 (irange::legacy_upper_bound): Delete.
21006 (irange::legacy_equal_p): Delete.
21007 (irange::operator==): Remove legacy support.
21008 (irange::singleton_p): Same.
21009 (irange::value_inside_range): Same.
21010 (irange::contains_p): Same.
21011 (intersect_ranges): Delete.
21012 (irange::legacy_intersect): Delete.
21013 (union_ranges): Delete.
21014 (irange::legacy_union): Delete.
21015 (irange::legacy_verbose_union_): Delete.
21016 (irange::legacy_verbose_intersect): Delete.
21017 (irange::irange_union): Remove legacy support.
21018 (irange::irange_intersect): Same.
21019 (irange::intersect): Same.
21020 (irange::invert): Same.
21021 (ranges_from_anti_range): Delete.
21022 (gt_pch_nx): Adjust for legacy removal.
21023 (gt_ggc_mx): Same.
21024 (range_tests_legacy): Delete.
21025 (range_tests_misc): Adjust for legacy removal.
21026 (range_tests): Same.
21027 * value-range.h (class irange): Same.
21028 (irange::legacy_mode_p): Delete.
21029 (ranges_from_anti_range): Delete.
21030 (irange::nonzero_p): Adjust for legacy removal.
21031 (irange::lower_bound): Same.
21032 (irange::upper_bound): Same.
21033 (irange::union_): Same.
21034 (irange::intersect): Same.
21035 (irange::set_nonzero): Same.
21036 (irange::set_zero): Same.
21037 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
21038
21039 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21040
21041 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
21042 of range_has_numeric_bounds_p with irange API.
21043 (range_has_numeric_bounds_p): Delete.
21044 * value-range.h (range_has_numeric_bounds_p): Delete.
21045
21046 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21047
21048 * tree-data-ref.cc (compute_distributive_range): Replace uses of
21049 range_int_cst_p with irange API.
21050 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
21051 * tree-vrp.h (range_int_cst_p): Delete.
21052 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
21053 range_int_cst_p with irange API.
21054 (vr_set_zero_nonzero_bits): Same.
21055 (range_fits_type_p): Same.
21056 (simplify_using_ranges::simplify_casted_cond): Same.
21057 * tree-vrp.cc (range_int_cst_p): Remove.
21058
21059 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21060
21061 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
21062
21063 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21064
21065 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
21066 API uses to new API.
21067 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
21068 * internal-fn.cc (get_min_precision): Same.
21069 * match.pd: Same.
21070 * tree-affine.cc (expr_to_aff_combination): Same.
21071 * tree-data-ref.cc (dr_step_indicator): Same.
21072 * tree-dfa.cc (get_ref_base_and_extent): Same.
21073 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
21074 * tree-ssa-phiopt.cc (two_value_replacement): Same.
21075 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
21076 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
21077 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
21078 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
21079 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
21080 * tree.cc (get_range_pos_neg): Same.
21081
21082 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21083
21084 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
21085 vrange::dump instead of ad-hoc dumper.
21086 * tree-ssa-strlen.cc (dump_strlen_info): Same.
21087 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
21088 dump_generic_node.
21089
21090 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21091
21092 * range-op.cc (operator_cast::op1_range): Use
21093 create_possibly_reversed_range.
21094 (operator_bitwise_and::simple_op1_range_solver): Same.
21095 * value-range.cc (swap_out_of_order_endpoints): Delete.
21096 (irange::set): Remove call to swap_out_of_order_endpoints.
21097
21098 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21099
21100 * builtins.cc (determine_block_size): Convert use of legacy API to
21101 get_legacy_range.
21102 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
21103 (array_bounds_checker::check_array_ref): Same.
21104 * gimple-ssa-warn-restrict.cc
21105 (builtin_memref::extend_offset_range): Same.
21106 * ipa-cp.cc (ipcp_store_vr_results): Same.
21107 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
21108 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
21109 (ipa_write_jump_function): Same.
21110 * pointer-query.cc (get_size_range): Same.
21111 * tree-data-ref.cc (split_constant_offset): Same.
21112 * tree-ssa-strlen.cc (get_range): Same.
21113 (maybe_diag_stxncpy_trunc): Same.
21114 (strlen_pass::get_len_or_size): Same.
21115 (strlen_pass::count_nonzero_bytes_addr): Same.
21116 * tree-vect-patterns.cc (vect_get_range_info): Same.
21117 * value-range.cc (irange::maybe_anti_range): Remove.
21118 (get_legacy_range): New.
21119 (irange::copy_to_legacy): Use get_legacy_range.
21120 (ranges_from_anti_range): Same.
21121 * value-range.h (class irange): Remove maybe_anti_range.
21122 (get_legacy_range): New.
21123 * vr-values.cc (check_for_binary_op_overflow): Convert use of
21124 legacy API to get_legacy_range.
21125 (compare_ranges): Same.
21126 (compare_range_with_value): Same.
21127 (bounds_of_var_in_loop): Same.
21128 (find_case_label_ranges): Same.
21129 (simplify_using_ranges::simplify_switch_using_ranges): Same.
21130
21131 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21132
21133 * value-range-pretty-print.cc (vrange_printer::visit): Remove
21134 constant_p use.
21135 * value-range.cc (irange::constant_p): Remove.
21136 (irange::get_nonzero_bits_from_range): Remove constant_p use.
21137 * value-range.h (class irange): Remove constant_p.
21138 (irange::num_pairs): Remove constant_p use.
21139
21140 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21141
21142 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
21143 symbolics support.
21144 (irange::set): Same.
21145 (irange::legacy_lower_bound): Same.
21146 (irange::legacy_upper_bound): Same.
21147 (irange::contains_p): Same.
21148 (range_tests_legacy): Same.
21149 (irange::normalize_addresses): Remove.
21150 (irange::normalize_symbolics): Remove.
21151 (irange::symbolic_p): Remove.
21152 * value-range.h (class irange): Remove symbolic_p,
21153 normalize_symbolics, and normalize_addresses.
21154 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
21155 Remove symbolics support.
21156
21157 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21158
21159 * value-range.cc (irange::may_contain_p): Remove.
21160 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
21161 usage with contains_p.
21162 * vr-values.cc (compare_range_with_value): Same.
21163
21164 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21165
21166 * tree-vrp.cc (supported_types_p): Remove.
21167 (defined_ranges_p): Remove.
21168 (range_fold_binary_expr): Remove.
21169 (range_fold_unary_expr): Remove.
21170 * tree-vrp.h (range_fold_unary_expr): Remove.
21171 (range_fold_binary_expr): Remove.
21172
21173 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21174
21175 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
21176 (ipa_value_range_from_jfunc): Same.
21177 (propagate_vr_across_jump_function): Same.
21178 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
21179 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
21180 * vr-values.cc (bounds_of_var_in_loop): Same.
21181
21182 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21183
21184 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
21185 Add irange argument.
21186 (check_out_of_bounds_and_warn): Remove check for vr.
21187 (array_bounds_checker::check_array_ref): Remove pointer qualifier
21188 for vr and adjust accordingly.
21189 * gimple-array-bounds.h (get_value_range): Add irange argument.
21190 * value-query.cc (class equiv_allocator): Delete.
21191 (range_query::get_value_range): Delete.
21192 (range_query::range_query): Remove allocator access.
21193 (range_query::~range_query): Same.
21194 * value-query.h (get_value_range): Delete.
21195 * vr-values.cc
21196 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
21197 call to get_value_range.
21198 (check_for_binary_op_overflow): Same.
21199 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
21200 (simplify_using_ranges::simplify_abs_using_ranges): Same.
21201 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
21202 (simplify_using_ranges::simplify_casted_cond): Same.
21203 (simplify_using_ranges::simplify_switch_using_ranges): Same.
21204 (simplify_using_ranges::two_valued_val_range_p): Same.
21205
21206 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21207
21208 * vr-values.cc
21209 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
21210 Rename to...
21211 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
21212 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
21213 (simplify_using_ranges::legacy_fold_cond): ...this.
21214 (simplify_using_ranges::fold_cond): Rename
21215 vrp_evaluate_conditional_warnv_with_ops to
21216 legacy_fold_cond_overflow.
21217 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
21218 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
21219 legacy_fold_cond_overflow respectively.
21220
21221 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21222
21223 * vr-values.cc (get_vr_for_comparison): Remove.
21224 (compare_name_with_value): Same.
21225 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
21226 compare_name_with_value.
21227 * vr-values.h: Remove compare_name_with_value.
21228 Remove get_vr_for_comparison.
21229
21230 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
21231
21232 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
21233 (bswapsi2): New define_insn.
21234 (swaphi): New define_insn to exchange two registers (swpw).
21235 (define_peephole2): Recognize exchange of registers as swaphi.
21236
21237 2023-04-26 Richard Biener <rguenther@suse.de>
21238
21239 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
21240 Avoid last_stmt.
21241 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
21242 * predict.cc (apply_return_prediction): Likewise.
21243 * sese.cc (set_ifsese_condition): Likewise. Simplify.
21244 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
21245 (make_edges_bb): Likewise.
21246 (make_cond_expr_edges): Likewise.
21247 (end_recording_case_labels): Likewise.
21248 (make_gimple_asm_edges): Likewise.
21249 (cleanup_dead_labels): Likewise.
21250 (group_case_labels): Likewise.
21251 (gimple_can_merge_blocks_p): Likewise.
21252 (gimple_merge_blocks): Likewise.
21253 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
21254 (gimple_duplicate_sese_tail): Avoid last_stmt.
21255 (find_loop_dist_alias): Likewise.
21256 (gimple_block_ends_with_condjump_p): Likewise.
21257 (gimple_purge_dead_eh_edges): Likewise.
21258 (gimple_purge_dead_abnormal_call_edges): Likewise.
21259 (pass_warn_function_return::execute): Likewise.
21260 (execute_fixup_cfg): Likewise.
21261 * tree-eh.cc (redirect_eh_edge_1): Likewise.
21262 (pass_lower_resx::execute): Likewise.
21263 (pass_lower_eh_dispatch::execute): Likewise.
21264 (cleanup_empty_eh): Likewise.
21265 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
21266 (predicate_bbs): Likewise.
21267 (ifcvt_split_critical_edges): Likewise.
21268 * tree-loop-distribution.cc (create_edge_for_control_dependence):
21269 Likewise.
21270 (loop_distribution::transform_reduction_loop): Likewise.
21271 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
21272 (try_transform_to_exit_first_loop_alt): Likewise.
21273 (transform_to_exit_first_loop): Likewise.
21274 (create_parallel_loop): Likewise.
21275 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
21276 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
21277 (eliminate_unnecessary_stmts): Likewise.
21278 * tree-ssa-dom.cc
21279 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
21280 Likewise.
21281 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
21282 (pass_tree_ifcombine::execute): Likewise.
21283 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
21284 (should_duplicate_loop_header_p): Likewise.
21285 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
21286 (tree_estimate_loop_size): Likewise.
21287 (try_unroll_loop_completely): Likewise.
21288 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
21289 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
21290 (canonicalize_loop_ivs): Likewise.
21291 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
21292 (bound_difference): Likewise.
21293 (number_of_iterations_popcount): Likewise.
21294 (number_of_iterations_cltz): Likewise.
21295 (number_of_iterations_cltz_complement): Likewise.
21296 (simplify_using_initial_conditions): Likewise.
21297 (number_of_iterations_exit_assumptions): Likewise.
21298 (loop_niter_by_eval): Likewise.
21299 (estimate_numbers_of_iterations): Likewise.
21300
21301 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21302
21303 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
21304
21305 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
21306
21307 PR target/108758
21308 * config/rs6000/rs6000-builtins.def
21309 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
21310 __builtin_vsx_scalar_cmp_exp_qp_lt,
21311 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
21312 to power9-vector.
21313
21314 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
21315
21316 PR target/109069
21317 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
21318 easy_vector_constant with const_vector_each_byte_same, add
21319 handlings in preparation for !easy_vector_constant, and update
21320 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
21321 * config/rs6000/predicates.md (const_vector_each_byte_same): New
21322 predicate.
21323
21324 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21325
21326 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
21327 (*pred_ltge<mode>_merge_tie_mask): Ditto.
21328 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
21329 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
21330 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
21331 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
21332 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
21333
21334 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21335
21336 * config/riscv/vector.md: Fix redundant vmv1r.v.
21337
21338 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21339
21340 * config/riscv/vector.md: Fix RA constraint.
21341
21342 2023-04-26 Pan Li <pan2.li@intel.com>
21343
21344 PR target/109272
21345 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
21346 check for vn_reference equal.
21347
21348 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21349
21350 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
21351 auto-vectorization preference.
21352 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
21353 auto-vectorization.
21354 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
21355
21356 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
21357
21358 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
21359 and bclridisi_nottwobits patterns.
21360 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
21361 predicate to avoid splitting arith constants.
21362 (const_nottwobits_not_arith_operand): New predicate.
21363
21364 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
21365
21366 * recog.cc (peep2_attempt, peep2_update_life): Correct
21367 head-comment description of parameter match_len.
21368
21369 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
21370
21371 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
21372 riscv_split_symbol() drop in_splitter arg.
21373 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
21374 riscv_split_symbol() drop in_splitter arg.
21375 riscv_force_temporary() drop in_splitter arg.
21376 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
21377 riscv_split_symbol() drop in_splitter arg.
21378
21379 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
21380
21381 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
21382 superfluous debug temporaries for single GIMPLE assignments.
21383
21384 2023-04-25 Richard Biener <rguenther@suse.de>
21385
21386 PR tree-optimization/109609
21387 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
21388 Clarify semantics.
21389 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
21390 the size given by arg_max_access_size_given_by_arg_p as
21391 maximum, not exact, size.
21392
21393 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21394
21395 PR target/99195
21396 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
21397 (orn<mode>3<vczle><vczbe>): ... This.
21398 (bic<mode>3): Rename to...
21399 (bic<mode>3<vczle><vczbe>): ... This.
21400 (<su><maxmin><mode>3): Rename to...
21401 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
21402
21403 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21404
21405 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
21406 * config/aarch64/iterators.md (VQDIV): New mode iterator.
21407 (vnx2di): New mode attribute.
21408
21409 2023-04-25 Richard Biener <rguenther@suse.de>
21410
21411 PR rtl-optimization/109585
21412 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
21413
21414 2023-04-25 Jakub Jelinek <jakub@redhat.com>
21415
21416 PR target/109566
21417 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
21418 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
21419 is larger than signed int maximum.
21420
21421 2023-04-25 Martin Liska <mliska@suse.cz>
21422
21423 * doc/gcov.texi: Document the new "calls" field and document
21424 the API bump. Mention also "block_ids" for lines.
21425 * gcov.cc (output_intermediate_json_line): Output info about
21426 calls and extend branches as well.
21427 (generate_results): Bump version to 2.
21428 (output_line_details): Use block ID instead of a non-sensual
21429 index.
21430
21431 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
21432
21433 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
21434 length attribute for the first (memory operand) alternative.
21435
21436 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
21437
21438 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
21439 * config/aarch64/constraints.md: Make "Umn" relaxed memory
21440 constraint.
21441 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
21442
21443 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
21444
21445 * value-range.cc (frange::set): Adjust constructor.
21446 * value-range.h (nan_state::nan_state): Replace default
21447 constructor with one taking an argument.
21448
21449 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
21450
21451 * ipa-cp.cc (ipa_range_contains_p): New.
21452 (decide_whether_version_node): Use it.
21453
21454 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
21455
21456 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
21457 simplify two successive VEC_PERM_EXPRs with same VLA mask,
21458 where mask chooses elements in reverse order.
21459
21460 2023-04-24 Andrew Pinski <apinski@marvell.com>
21461
21462 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
21463 and support diamond shaped basic block form.
21464 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
21465
21466 2023-04-24 Andrew Pinski <apinski@marvell.com>
21467
21468 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
21469 Instead of calling last_and_only_stmt, look for the last statement
21470 manually.
21471
21472 2023-04-24 Andrew Pinski <apinski@marvell.com>
21473
21474 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
21475 New function.
21476 (match_simplify_replacement): Call
21477 empty_bb_or_one_feeding_into_p instead of doing it inline.
21478
21479 2023-04-24 Andrew Pinski <apinski@marvell.com>
21480
21481 PR tree-optimization/68894
21482 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
21483 continue for the do_hoist_loads diamond case.
21484
21485 2023-04-24 Andrew Pinski <apinski@marvell.com>
21486
21487 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
21488 code for better code readability.
21489
21490 2023-04-24 Andrew Pinski <apinski@marvell.com>
21491
21492 PR tree-optimization/109604
21493 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
21494 diamond form check from ...
21495 (minmax_replacement): Here.
21496
21497 2023-04-24 Patrick Palka <ppalka@redhat.com>
21498
21499 * tree.cc (strip_array_types): Don't define here.
21500 (is_typedef_decl): Don't define here.
21501 (typedef_variant_p): Don't define here.
21502 * tree.h (strip_array_types): Define here.
21503 (is_typedef_decl): Define here.
21504 (typedef_variant_p): Define here.
21505
21506 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
21507
21508 * doc/generic.texi (OpenMP): Add != to allowed
21509 conditions and state that vars can be unsigned.
21510 * tree.def (OMP_FOR): Likewise.
21511
21512 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21513
21514 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
21515
21516 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
21517
21518 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
21519 Remove explicit Solaris 11 references.
21520 Markup fixes.
21521 (Options specification, --with-gnu-as): as and gas always differ
21522 on Solaris.
21523 Remove /usr/ccs/bin reference.
21524 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
21525 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
21526 (*-*-solaris2*): ... here.
21527 Update bundled GCC versions.
21528 Don't refer to pre-built binaries.
21529 Remove /bin/sh warning.
21530 Update assembler, linker recommendations.
21531 Document GNAT bootstrap compiler.
21532 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
21533 (sparc64-*-solaris2*): Move content...
21534 (sparcv9-*-solaris2*): ...here.
21535 Add GDC for 64-bit bootstrap compilers.
21536
21537 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21538
21539 PR target/109406
21540 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
21541 case.
21542 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
21543 pattern.
21544
21545 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21546
21547 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
21548 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
21549 (aarch64_<su>abal2<mode>): New define_expand.
21550 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
21551 (aarch64_rtx_costs): Handle ABD rtxes.
21552 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
21553 * config/aarch64/iterators.md (ABAL2): Delete.
21554 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
21555
21556 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21557
21558 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
21559 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
21560 (<sur>sadv16qi): Rename to...
21561 (<su>sadv16qi): ... This. Adjust for the above.
21562 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
21563 (<su>sad<vsi2qi>): ... This. Adjust for the above.
21564 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
21565 * config/aarch64/iterators.md (ABAL): Delete.
21566 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
21567
21568 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21569
21570 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
21571 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
21572 (aarch64_<su>abdl2<mode>): New define_expand.
21573 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
21574 * config/aarch64/iterators.md (ABDL2): Delete.
21575 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
21576
21577 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21578
21579 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
21580 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
21581 unspec.
21582 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
21583 * config/aarch64/iterators.md (ABDL): Delete.
21584 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
21585
21586 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21587
21588 * config/aarch64/aarch64-simd.md
21589 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
21590
21591 2023-04-24 Richard Biener <rguenther@suse.de>
21592
21593 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
21594 last_stmt.
21595 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
21596 Likewise.
21597 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
21598 (set_switch_stmt_execution_predicate): Likewise.
21599 (phi_result_unknown_predicate): Likewise.
21600 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
21601 (ipa_analyze_indirect_call_uses): Likewise.
21602 * predict.cc (predict_iv_comparison): Likewise.
21603 (predict_extra_loop_exits): Likewise.
21604 (predict_loops): Likewise.
21605 (tree_predict_by_opcode): Likewise.
21606 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
21607 Likewise.
21608 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
21609 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
21610 (replace_phi_edge_with_variable): Likewise.
21611 (two_value_replacement): Likewise.
21612 (value_replacement): Likewise.
21613 (minmax_replacement): Likewise.
21614 (spaceship_replacement): Likewise.
21615 (cond_removal_in_builtin_zero_pattern): Likewise.
21616 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
21617 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
21618 (vn_phi_lookup): Likewise.
21619 (vn_phi_insert): Likewise.
21620 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
21621 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
21622 Likewise.
21623 (back_threader_profitability::possibly_profitable_path_p):
21624 Likewise.
21625 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
21626 Likewise.
21627 * tree-switch-conversion.cc (pass_convert_switch::execute):
21628 Likewise.
21629 (pass_lower_switch<O0>::execute): Likewise.
21630 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
21631 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
21632 * tree-vect-slp.cc (vect_slp_function): Likewise.
21633 * tree-vect-stmts.cc (cfun_returns): Likewise.
21634 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
21635 (vect_loop_dist_alias_call): Likewise.
21636
21637 2023-04-24 Richard Biener <rguenther@suse.de>
21638
21639 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
21640
21641 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21642
21643 * config/riscv/riscv-vsetvl.cc
21644 (vector_infos_manager::all_avail_in_compatible_p): New function.
21645 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
21646 * config/riscv/riscv-vsetvl.h: New function.
21647
21648 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21649
21650 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
21651 comment for cleanup_insns.
21652
21653 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21654
21655 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
21656 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
21657 with the fault first load property.
21658
21659 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21660
21661 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
21662 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
21663
21664 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21665
21666 PR target/99195
21667 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
21668 (aarch64_addp<mode><vczle><vczbe>): ... This.
21669
21670 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
21671
21672 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
21673 provide reasonable values for common arithmetic operations and
21674 immediate operands (in several machine modes).
21675
21676 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
21677
21678 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
21679 format specifier to output high_part register name of SImode reg.
21680 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
21681 (zero_extendqihi2): Fix lengths, consistent formatting and add
21682 "and Rx,#255" alternative, for documentation purposes.
21683 (zero_extendhisi2): New define_insn.
21684
21685 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
21686
21687 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
21688 SImode shifts by two by performing a single bit SImode shift twice.
21689
21690 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
21691
21692 PR tree-optimization/109593
21693 * value-range.cc (frange::operator==): Handle NANs.
21694
21695 2023-04-23 liuhongt <hongtao.liu@intel.com>
21696
21697 PR rtl-optimization/108707
21698 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
21699 GENERAL_REGS when preferred reg_class is not known.
21700
21701 2023-04-22 Andrew Pinski <apinski@marvell.com>
21702
21703 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
21704 Change the code around slightly to move diamond
21705 handling for do_store_elim/do_hoist_loads out of
21706 the big if/else.
21707
21708 2023-04-22 Andrew Pinski <apinski@marvell.com>
21709
21710 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
21711 Remove check on empty_block_p.
21712
21713 2023-04-22 Jakub Jelinek <jakub@redhat.com>
21714
21715 PR bootstrap/109589
21716 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
21717 * realmpfr.h (class auto_mpfr): Likewise.
21718
21719 2023-04-22 Jakub Jelinek <jakub@redhat.com>
21720
21721 PR tree-optimization/109583
21722 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
21723 if vec_mode is not VECTOR_MODE_P.
21724
21725 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
21726 Ondrej Kubanek <kubanek0ondrej@gmail.com>
21727
21728 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
21729 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
21730 loop profile and bounds after header duplication.
21731 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
21732 Break out from try_peel_loop; fix handling of 0 iterations.
21733 (try_peel_loop): Use adjust_loop_info_after_peeling.
21734
21735 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
21736
21737 PR tree-optimization/109546
21738 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
21739 not fold conditions with ADDR_EXPR early.
21740
21741 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21742
21743 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
21744 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
21745 for umax.
21746 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
21747 (*aarch64_<optab><mode>3_zero): Define.
21748 (*aarch64_<optab><mode>3_cssc): Likewise.
21749 * config/aarch64/iterators.md (maxminand): New code attribute.
21750
21751 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21752
21753 PR target/108779
21754 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
21755 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
21756 Define prototype.
21757 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
21758 (aarch64_override_options_internal): Handle the above.
21759 (aarch64_output_load_tp): New function.
21760 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
21761 aarch64_output_load_tp.
21762 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
21763 (mtp=): New option.
21764 * doc/invoke.texi (AArch64 Options): Document -mtp=.
21765
21766 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21767
21768 PR target/99195
21769 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
21770 (add_vec_concat_subst_be): Likewise.
21771 (vczle): Likewise.
21772 (vczbe): Likewise.
21773 (add<mode>3): Rename to...
21774 (add<mode>3<vczle><vczbe>): ... This.
21775 (sub<mode>3): Rename to...
21776 (sub<mode>3<vczle><vczbe>): ... This.
21777 (mul<mode>3): Rename to...
21778 (mul<mode>3<vczle><vczbe>): ... This.
21779 (and<mode>3): Rename to...
21780 (and<mode>3<vczle><vczbe>): ... This.
21781 (ior<mode>3): Rename to...
21782 (ior<mode>3<vczle><vczbe>): ... This.
21783 (xor<mode>3): Rename to...
21784 (xor<mode>3<vczle><vczbe>): ... This.
21785 * config/aarch64/iterators.md (VDZ): Define.
21786
21787 2023-04-21 Patrick Palka <ppalka@redhat.com>
21788
21789 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
21790 and type_p.
21791
21792 2023-04-21 Jan Hubicka <jh@suse.cz>
21793
21794 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
21795 commit.
21796
21797 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
21798
21799 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
21800 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
21801
21802 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
21803
21804 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
21805 force_reg instead of copy_to_mode_reg.
21806 (aarch64_expand_vector_init): Likewise.
21807
21808 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
21809
21810 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
21811 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
21812 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
21813 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
21814 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
21815 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
21816 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
21817 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
21818 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
21819 * config/i386/predicates.md (index_register_operand):
21820 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
21821 * config/i386/i386.cc (ix86_legitimate_address_p): Use
21822 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
21823 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
21824
21825 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21826 Ondrej Kubanek <kubanek0ondrej@gmail.com>
21827
21828 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
21829 latch.
21830
21831 2023-04-21 Richard Biener <rguenther@suse.de>
21832
21833 * is-a.h (safe_is_a): New.
21834
21835 2023-04-21 Richard Biener <rguenther@suse.de>
21836
21837 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
21838 (gphi_iterator::operator*): Likewise.
21839
21840 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21841 Michal Jires <michal@jires.eu>
21842
21843 * ipa-inline.cc (class inline_badness): New class.
21844 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
21845 of sreal.
21846 (update_edge_key): Update.
21847 (lookup_recursive_calls): Likewise.
21848 (recursive_inlining): Likewise.
21849 (add_new_edges_to_heap): Likewise.
21850 (inline_small_functions): Likewise.
21851
21852 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21853
21854 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
21855
21856 2023-04-21 Richard Biener <rguenther@suse.de>
21857
21858 PR tree-optimization/109573
21859 * tree-vect-loop.cc (vectorizable_live_operation): Allow
21860 unhandled SSA copy as well. Demote assert to checking only.
21861
21862 2023-04-21 Richard Biener <rguenther@suse.de>
21863
21864 * df-core.cc (df_analyze): Compute RPO on the reverse graph
21865 for DF_BACKWARD problems.
21866 (loop_post_order_compute): Rename to ...
21867 (loop_rev_post_order_compute): ... this, compute a RPO.
21868 (loop_inverted_post_order_compute): Rename to ...
21869 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
21870 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
21871 problems, RPO on the inverted graph for DF_BACKWARD.
21872
21873 2023-04-21 Richard Biener <rguenther@suse.de>
21874
21875 * cfganal.h (inverted_rev_post_order_compute): Rename
21876 from ...
21877 (inverted_post_order_compute): ... this. Add struct function
21878 argument, change allocation to a C array.
21879 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
21880 * lcm.cc (compute_antinout_edge): Adjust.
21881 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
21882 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
21883 * tree-ssa-pre.cc (compute_antic): Likewise.
21884
21885 2023-04-21 Richard Biener <rguenther@suse.de>
21886
21887 * df.h (df_d::postorder_inverted): Change back to int *,
21888 clarify comments.
21889 * df-core.cc (rest_of_handle_df_finish): Adjust.
21890 (df_analyze_1): Likewise.
21891 (df_analyze): For DF_FORWARD problems use RPO on the forward
21892 graph. Adjust.
21893 (loop_inverted_post_order_compute): Adjust API.
21894 (df_analyze_loop): Adjust.
21895 (df_get_n_blocks): Likewise.
21896 (df_get_postorder): Likewise.
21897
21898 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21899
21900 PR target/108270
21901 * config/riscv/riscv-vsetvl.cc
21902 (vector_infos_manager::all_empty_predecessor_p): New function.
21903 (pass_vsetvl::backward_demand_fusion): Ditto.
21904 * config/riscv/riscv-vsetvl.h: Ditto.
21905
21906 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
21907
21908 PR target/109582
21909 * config/riscv/generic.md: Change standard names to insn names.
21910
21911 2023-04-21 Richard Biener <rguenther@suse.de>
21912
21913 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
21914 (compute_laterin): Use RPO.
21915 (compute_available): Likewise.
21916
21917 2023-04-21 Peng Fan <fanpeng@loongson.cn>
21918
21919 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
21920
21921 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21922
21923 PR target/109547
21924 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
21925 (vector_insn_info::skip_avl_compatible_p): Ditto.
21926 (vector_insn_info::merge): Remove default value.
21927 (pass_vsetvl::compute_local_backward_infos): Ditto.
21928 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
21929 * config/riscv/riscv-vsetvl.h: Ditto.
21930
21931 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
21932
21933 * doc/extend.texi (Common Function Attributes): Remove duplicate
21934 word.
21935
21936 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
21937
21938 PR tree-optimization/109564
21939 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
21940 UNDEFINED range names when deciding if all PHI arguments are the same,
21941
21942 2023-04-20 Jakub Jelinek <jakub@redhat.com>
21943
21944 PR tree-optimization/109011
21945 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
21946 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
21947 .CTZ (X) = PREC - .POPCOUNT (X | -X).
21948
21949 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
21950
21951 * lra-constraints.cc (match_reload): Exclude some hard regs for
21952 multi-reg inout reload pseudos used in asm in different mode.
21953
21954 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
21955
21956 * config/arm/arm.cc (thumb1_legitimate_address_p):
21957 Use VIRTUAL_REGISTER_P predicate.
21958 (arm_eliminable_register): Ditto.
21959 * config/avr/avr.md (push<mode>_1): Ditto.
21960 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
21961 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
21962 * config/i386/predicates.md (register_no_elim_operand): Ditto.
21963 * config/iq2000/predicates.md (call_insn_operand): Ditto.
21964 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
21965
21966 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
21967
21968 PR target/78952
21969 * config/i386/predicates.md (extract_operator): New predicate.
21970 * config/i386/i386.md (any_extract): Remove code iterator.
21971 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
21972 (*cmpqi_ext<mode>_1): Ditto.
21973 (*cmpqi_ext<mode>_2): Ditto.
21974 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
21975 (*cmpqi_ext<mode>_3): Ditto.
21976 (*cmpqi_ext<mode>_4): Ditto.
21977 (*extzvqi_mem_rex64): Ditto.
21978 (*extzvqi): Ditto.
21979 (*insvqi_2): Ditto.
21980 (*extendqi<SWI24:mode>_ext_1): Ditto.
21981 (*addqi_ext<mode>_0): Ditto.
21982 (*addqi_ext<mode>_1): Ditto.
21983 (*addqi_ext<mode>_2): Ditto.
21984 (*subqi_ext<mode>_0): Ditto.
21985 (*subqi_ext<mode>_2): Ditto.
21986 (*testqi_ext<mode>_1): Ditto.
21987 (*testqi_ext<mode>_2): Ditto.
21988 (*andqi_ext<mode>_0): Ditto.
21989 (*andqi_ext<mode>_1): Ditto.
21990 (*andqi_ext<mode>_1_cc): Ditto.
21991 (*andqi_ext<mode>_2): Ditto.
21992 (*<any_or:code>qi_ext<mode>_0): Ditto.
21993 (*<any_or:code>qi_ext<mode>_1): Ditto.
21994 (*<any_or:code>qi_ext<mode>_2): Ditto.
21995 (*xorqi_ext<mode>_1_cc): Ditto.
21996 (*negqi_ext<mode>_2): Ditto.
21997 (*ashlqi_ext<mode>_2): Ditto.
21998 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
21999
22000 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
22001
22002 PR target/108248
22003 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
22004 <bitmanip_insn> as the type to allow for fine grained control of
22005 scheduling these insns.
22006 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
22007 min, max.
22008 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
22009 pcnt, signed and unsigned min/max.
22010
22011 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22012 kito-cheng <kito.cheng@sifive.com>
22013
22014 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
22015
22016 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22017 kito-cheng <kito.cheng@sifive.com>
22018
22019 PR target/109535
22020 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
22021 (pass_vsetvl::cleanup_insns): Fix bug.
22022
22023 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
22024
22025 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
22026 (ldexp<mode>3): Delete.
22027 (ldexp<mode>3<exec>): Change "B" to "A".
22028
22029 2023-04-20 Jakub Jelinek <jakub@redhat.com>
22030 Jonathan Wakely <jwakely@redhat.com>
22031
22032 * tree.h (built_in_function_equal_p): New helper function.
22033 (fndecl_built_in_p): Turn into variadic template to support
22034 1 or more built_in_function arguments.
22035 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
22036 * gimplify.cc (goa_stabilize_expr): Likewise.
22037 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
22038 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
22039 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
22040 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
22041 cgraph_update_edges_for_call_stmt_node,
22042 cgraph_edge::verify_corresponds_to_fndecl,
22043 cgraph_node::verify_node): Likewise.
22044 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
22045 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
22046 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
22047
22048 2023-04-20 Jakub Jelinek <jakub@redhat.com>
22049
22050 PR tree-optimization/109011
22051 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
22052 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
22053 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
22054 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
22055 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
22056 case.
22057 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
22058
22059 2023-04-20 Richard Biener <rguenther@suse.de>
22060
22061 * df-core.cc (rest_of_handle_df_initialize): Remove
22062 computation of df->postorder, df->postorder_inverted and
22063 df->n_blocks.
22064
22065 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22066
22067 * common/config/i386/i386-common.cc
22068 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
22069 (ix86_handle_option): Set AVX flag for VAES.
22070 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
22071 Add OPTION_MASK_ISA2_VAES_UNSET.
22072 (def_builtin): Share builtin between AES and VAES.
22073 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
22074 Ditto.
22075 * config/i386/i386.md (aes): New isa attribute.
22076 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
22077 (aesenclast): Ditto.
22078 (aesdec): Ditto.
22079 (aesdeclast): Ditto.
22080 * config/i386/vaesintrin.h: Remove redundant avx target push.
22081 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
22082 (_mm_aesdeclast_si128): Ditto.
22083 (_mm_aesenc_si128): Ditto.
22084 (_mm_aesenclast_si128): Ditto.
22085
22086 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
22087
22088 * config/i386/avx2intrin.h
22089 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
22090 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
22091 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
22092 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
22093 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
22094 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
22095 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
22096 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
22097 (_mm_reduce_add_epi16): New instrinsics.
22098 (_mm_reduce_mul_epi16): Ditto.
22099 (_mm_reduce_and_epi16): Ditto.
22100 (_mm_reduce_or_epi16): Ditto.
22101 (_mm_reduce_max_epi16): Ditto.
22102 (_mm_reduce_max_epu16): Ditto.
22103 (_mm_reduce_min_epi16): Ditto.
22104 (_mm_reduce_min_epu16): Ditto.
22105 (_mm256_reduce_add_epi16): Ditto.
22106 (_mm256_reduce_mul_epi16): Ditto.
22107 (_mm256_reduce_and_epi16): Ditto.
22108 (_mm256_reduce_or_epi16): Ditto.
22109 (_mm256_reduce_max_epi16): Ditto.
22110 (_mm256_reduce_max_epu16): Ditto.
22111 (_mm256_reduce_min_epi16): Ditto.
22112 (_mm256_reduce_min_epu16): Ditto.
22113 (_mm_reduce_add_epi8): Ditto.
22114 (_mm_reduce_mul_epi8): Ditto.
22115 (_mm_reduce_and_epi8): Ditto.
22116 (_mm_reduce_or_epi8): Ditto.
22117 (_mm_reduce_max_epi8): Ditto.
22118 (_mm_reduce_max_epu8): Ditto.
22119 (_mm_reduce_min_epi8): Ditto.
22120 (_mm_reduce_min_epu8): Ditto.
22121 (_mm256_reduce_add_epi8): Ditto.
22122 (_mm256_reduce_mul_epi8): Ditto.
22123 (_mm256_reduce_and_epi8): Ditto.
22124 (_mm256_reduce_or_epi8): Ditto.
22125 (_mm256_reduce_max_epi8): Ditto.
22126 (_mm256_reduce_max_epu8): Ditto.
22127 (_mm256_reduce_min_epi8): Ditto.
22128 (_mm256_reduce_min_epu8): Ditto.
22129 * config/i386/avx512vlbwintrin.h:
22130 (_mm_mask_reduce_add_epi16): Ditto.
22131 (_mm_mask_reduce_mul_epi16): Ditto.
22132 (_mm_mask_reduce_and_epi16): Ditto.
22133 (_mm_mask_reduce_or_epi16): Ditto.
22134 (_mm_mask_reduce_max_epi16): Ditto.
22135 (_mm_mask_reduce_max_epu16): Ditto.
22136 (_mm_mask_reduce_min_epi16): Ditto.
22137 (_mm_mask_reduce_min_epu16): Ditto.
22138 (_mm256_mask_reduce_add_epi16): Ditto.
22139 (_mm256_mask_reduce_mul_epi16): Ditto.
22140 (_mm256_mask_reduce_and_epi16): Ditto.
22141 (_mm256_mask_reduce_or_epi16): Ditto.
22142 (_mm256_mask_reduce_max_epi16): Ditto.
22143 (_mm256_mask_reduce_max_epu16): Ditto.
22144 (_mm256_mask_reduce_min_epi16): Ditto.
22145 (_mm256_mask_reduce_min_epu16): Ditto.
22146 (_mm_mask_reduce_add_epi8): Ditto.
22147 (_mm_mask_reduce_mul_epi8): Ditto.
22148 (_mm_mask_reduce_and_epi8): Ditto.
22149 (_mm_mask_reduce_or_epi8): Ditto.
22150 (_mm_mask_reduce_max_epi8): Ditto.
22151 (_mm_mask_reduce_max_epu8): Ditto.
22152 (_mm_mask_reduce_min_epi8): Ditto.
22153 (_mm_mask_reduce_min_epu8): Ditto.
22154 (_mm256_mask_reduce_add_epi8): Ditto.
22155 (_mm256_mask_reduce_mul_epi8): Ditto.
22156 (_mm256_mask_reduce_and_epi8): Ditto.
22157 (_mm256_mask_reduce_or_epi8): Ditto.
22158 (_mm256_mask_reduce_max_epi8): Ditto.
22159 (_mm256_mask_reduce_max_epu8): Ditto.
22160 (_mm256_mask_reduce_min_epi8): Ditto.
22161 (_mm256_mask_reduce_min_epu8): Ditto.
22162
22163 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22164
22165 * common/config/i386/i386-common.cc
22166 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
22167 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
22168 (OPTION_MASK_ISA_AVX_UNSET):
22169 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
22170 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
22171 * config/i386/i386.md (vpclmulqdqvl): New.
22172 * config/i386/sse.md (pclmulqdq): Add evex encoding.
22173 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
22174 push.
22175
22176 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22177
22178 * config/i386/avx512vlbwintrin.h
22179 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
22180 (_mm_mask_blend_epi8): Ditto.
22181 (_mm256_mask_blend_epi16): Ditto.
22182 (_mm256_mask_blend_epi8): Ditto.
22183 * config/i386/avx512vlintrin.h
22184 (_mm256_mask_blend_pd): Ditto.
22185 (_mm256_mask_blend_ps): Ditto.
22186 (_mm256_mask_blend_epi64): Ditto.
22187 (_mm256_mask_blend_epi32): Ditto.
22188 (_mm_mask_blend_pd): Ditto.
22189 (_mm_mask_blend_ps): Ditto.
22190 (_mm_mask_blend_epi64): Ditto.
22191 (_mm_mask_blend_epi32): Ditto.
22192 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
22193 (VF_AVX512HFBFVL): Move it before the first usage.
22194 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
22195 to VF_AVX512HFBFVL.
22196
22197 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22198
22199 * common/config/i386/i386-common.cc
22200 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
22201 to OPTION_MASK_ISA_AVX512BW_SET.
22202 (OPTION_MASK_ISA_AVX512F_UNSET):
22203 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
22204 (OPTION_MASK_ISA_AVX512BW_UNSET):
22205 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
22206 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
22207 * config/i386/avx512vbmi2vlintrin.h: Ditto.
22208 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
22209 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
22210 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
22211 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
22212 VI12_AVX512VL.
22213 (compressstore<mode>_mask): Ditto.
22214 (expand<mode>_mask): Ditto.
22215 (expand<mode>_maskz): Ditto.
22216 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
22217 VI12_VI48F_AVX512VL.
22218
22219 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22220
22221 * common/config/i386/i386-common.cc
22222 (OPTION_MASK_ISA_AVX512BITALG_SET):
22223 Change OPTION_MASK_ISA_AVX512F_SET
22224 to OPTION_MASK_ISA_AVX512BW_SET.
22225 (OPTION_MASK_ISA_AVX512F_UNSET):
22226 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
22227 (OPTION_MASK_ISA_AVX512BW_UNSET):
22228 Add OPTION_MASK_ISA_AVX512BITALG_SET.
22229 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
22230 * config/i386/i386-builtin.def:
22231 Remove redundant OPTION_MASK_ISA_AVX512BW.
22232 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
22233 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
22234 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
22235
22236 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
22237
22238 * config/i386/i386-expand.cc
22239 (ix86_check_builtin_isa_match): Correct wrong comments.
22240 Add a new macro SHARE_BUILTIN and refactor the current if
22241 clauses to macro.
22242
22243 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
22244
22245 * config/i386/cpuid.h: Open a new section for Extended Features
22246 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
22247 %ecx == 1).
22248
22249 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
22250
22251 * config/i386/sse.md: Modify insn vperm{i,f}
22252 and vshuf{i,f}.
22253
22254 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
22255
22256 * config/xtensa/xtensa-opts.h: New header.
22257 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
22258 xtensa_strict_align.
22259 * config/xtensa/xtensa.cc (xtensa_option_override): When
22260 -m[no-]strict-align is not specified in the command line set
22261 xtensa_strict_align to 0 if the hardware supports both unaligned
22262 loads and stores or to 1 otherwise.
22263 * config/xtensa/xtensa.opt (mstrict-align): New option.
22264 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
22265
22266 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
22267
22268 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
22269 function.
22270
22271 2023-04-19 Andrew Pinski <apinski@marvell.com>
22272
22273 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
22274
22275 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22276
22277 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
22278 (VECTOR_BOOL_MODE): Ditto.
22279 (ADJUST_NUNITS): Ditto.
22280 (ADJUST_ALIGNMENT): Ditto.
22281 (ADJUST_BYTESIZE): Ditto.
22282 (ADJUST_PRECISION): Ditto.
22283 (RVV_MODES): Ditto.
22284 (VECTOR_MODE_WITH_PREFIX): Ditto.
22285 * config/riscv/riscv-v.cc (ENTRY): Ditto.
22286 (get_vlmul): Ditto.
22287 (get_ratio): Ditto.
22288 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
22289 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
22290 (vbool64_t): Ditto.
22291 (vbool32_t): Ditto.
22292 (vbool16_t): Ditto.
22293 (vbool8_t): Ditto.
22294 (vbool4_t): Ditto.
22295 (vbool2_t): Ditto.
22296 (vbool1_t): Ditto.
22297 (vint8mf8_t): Ditto.
22298 (vuint8mf8_t): Ditto.
22299 (vint8mf4_t): Ditto.
22300 (vuint8mf4_t): Ditto.
22301 (vint8mf2_t): Ditto.
22302 (vuint8mf2_t): Ditto.
22303 (vint8m1_t): Ditto.
22304 (vuint8m1_t): Ditto.
22305 (vint8m2_t): Ditto.
22306 (vuint8m2_t): Ditto.
22307 (vint8m4_t): Ditto.
22308 (vuint8m4_t): Ditto.
22309 (vint8m8_t): Ditto.
22310 (vuint8m8_t): Ditto.
22311 (vint16mf4_t): Ditto.
22312 (vuint16mf4_t): Ditto.
22313 (vint16mf2_t): Ditto.
22314 (vuint16mf2_t): Ditto.
22315 (vint16m1_t): Ditto.
22316 (vuint16m1_t): Ditto.
22317 (vint16m2_t): Ditto.
22318 (vuint16m2_t): Ditto.
22319 (vint16m4_t): Ditto.
22320 (vuint16m4_t): Ditto.
22321 (vint16m8_t): Ditto.
22322 (vuint16m8_t): Ditto.
22323 (vint32mf2_t): Ditto.
22324 (vuint32mf2_t): Ditto.
22325 (vint32m1_t): Ditto.
22326 (vuint32m1_t): Ditto.
22327 (vint32m2_t): Ditto.
22328 (vuint32m2_t): Ditto.
22329 (vint32m4_t): Ditto.
22330 (vuint32m4_t): Ditto.
22331 (vint32m8_t): Ditto.
22332 (vuint32m8_t): Ditto.
22333 (vint64m1_t): Ditto.
22334 (vuint64m1_t): Ditto.
22335 (vint64m2_t): Ditto.
22336 (vuint64m2_t): Ditto.
22337 (vint64m4_t): Ditto.
22338 (vuint64m4_t): Ditto.
22339 (vint64m8_t): Ditto.
22340 (vuint64m8_t): Ditto.
22341 (vfloat32mf2_t): Ditto.
22342 (vfloat32m1_t): Ditto.
22343 (vfloat32m2_t): Ditto.
22344 (vfloat32m4_t): Ditto.
22345 (vfloat32m8_t): Ditto.
22346 (vfloat64m1_t): Ditto.
22347 (vfloat64m2_t): Ditto.
22348 (vfloat64m4_t): Ditto.
22349 (vfloat64m8_t): Ditto.
22350 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
22351 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
22352 (riscv_convert_vector_bits): Ditto.
22353 * config/riscv/riscv.md:
22354 * config/riscv/vector-iterators.md:
22355 * config/riscv/vector.md
22356 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
22357 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
22358 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
22359 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
22360 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
22361 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
22362 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
22363 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
22364 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
22365
22366 2023-04-19 Pan Li <pan2.li@intel.com>
22367
22368 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
22369 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
22370
22371 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
22372
22373 PR target/78904
22374 PR target/78952
22375 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
22376 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
22377 for operand 0. Use any_extract code iterator.
22378 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
22379 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
22380 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
22381 (*cmpqi_ext<mode>_1): Use general_operand predicate
22382 for operand 1. Use any_extract code iterator.
22383 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
22384 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
22385
22386 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22387
22388 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
22389 (aarch64_uaddw2<mode>): Delete.
22390 (aarch64_ssubw2<mode>): Delete.
22391 (aarch64_usubw2<mode>): Delete.
22392 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
22393
22394 2023-04-19 Richard Biener <rguenther@suse.de>
22395
22396 * tree-ssa-structalias.cc (do_ds_constraint): Use
22397 solve_add_graph_edge.
22398
22399 2023-04-19 Richard Biener <rguenther@suse.de>
22400
22401 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
22402 split out from ...
22403 (do_sd_constraint): ... here.
22404
22405 2023-04-19 Richard Biener <rguenther@suse.de>
22406
22407 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
22408 rejecting the merge when A contains only a non-local label.
22409
22410 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
22411
22412 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
22413 (VIRTUAL_REGISTER_NUM_P): Ditto.
22414 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
22415 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
22416 * function.cc (instantiate_decl_rtl): Ditto.
22417 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
22418 (nonzero_address_p): Ditto.
22419 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
22420
22421 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
22422
22423 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
22424
22425 2023-04-19 Richard Biener <rguenther@suse.de>
22426
22427 * system.h (auto_mpz::operator->()): New.
22428 * realmpfr.h (auto_mpfr::operator->()): New.
22429 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
22430 * real.cc (real_from_string): Likewise.
22431 (dconst_e_ptr): Likewise.
22432 (dconst_sqrt2_ptr): Likewise.
22433 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
22434 Use auto_mpz.
22435 (bound_difference_of_offsetted_base): Likewise.
22436 (number_of_iterations_ne): Likewise.
22437 (number_of_iterations_lt_to_ne): Likewise.
22438 * ubsan.cc: Include realmpfr.h.
22439 (ubsan_instrument_float_cast): Use auto_mpfr.
22440
22441 2023-04-19 Richard Biener <rguenther@suse.de>
22442
22443 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
22444 edges, remove edges from escaped after special-casing them.
22445
22446 2023-04-19 Richard Biener <rguenther@suse.de>
22447
22448 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
22449 special casing.
22450
22451 2023-04-19 Richard Biener <rguenther@suse.de>
22452
22453 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
22454 to the LHS varinfo solution member.
22455
22456 2023-04-19 Richard Biener <rguenther@suse.de>
22457
22458 * tree-ssa-structalias.cc (topo_visit): Look at the real
22459 destination of edges.
22460
22461 2023-04-19 Richard Biener <rguenther@suse.de>
22462
22463 PR tree-optimization/44794
22464 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
22465 If an epilogue loop is required set its iteration upper bound.
22466
22467 2023-04-19 Xi Ruoyao <xry111@xry111.site>
22468
22469 PR target/109465
22470 * config/loongarch/loongarch-protos.h
22471 (loongarch_expand_block_move): Add a parameter as alignment RTX.
22472 * config/loongarch/loongarch.h:
22473 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
22474 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
22475 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
22476 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
22477 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
22478 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
22479 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
22480 Take the alignment from the parameter, but set it to
22481 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
22482 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
22483 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
22484 (loongarch_block_move_straight): When there are left-over bytes,
22485 half the mode size instead of falling back to byte mode at once.
22486 (loongarch_block_move_loop): Limit the length of loop body with
22487 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
22488 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
22489 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
22490 to loongarch_expand_block_move.
22491
22492 2023-04-19 Xi Ruoyao <xry111@xry111.site>
22493
22494 * config/loongarch/loongarch.cc
22495 (loongarch_setup_incoming_varargs): Don't save more GARs than
22496 cfun->va_list_gpr_size / UNITS_PER_WORD.
22497
22498 2023-04-19 Richard Biener <rguenther@suse.de>
22499
22500 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
22501 no epilogue condition.
22502
22503 2023-04-19 Richard Biener <rguenther@suse.de>
22504
22505 * gimple.h (gimple_assign_load): Outline...
22506 * gimple.cc (gimple_assign_load): ... here. Avoid
22507 get_base_address and instead just strip the outermost
22508 handled component, treating a remaining handled component
22509 as load.
22510
22511 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22512
22513 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
22514 definition.
22515 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
22516
22517 2023-04-19 Jakub Jelinek <jakub@redhat.com>
22518
22519 PR tree-optimization/109011
22520 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
22521 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
22522 CLZ, CTZ and FFS. Remove vargs variable, use
22523 gimple_build_call_internal rather than gimple_build_call_internal_vec.
22524 (vect_vect_recog_func_ptrs): Adjust popcount entry.
22525
22526 2023-04-19 Jakub Jelinek <jakub@redhat.com>
22527
22528 PR target/109040
22529 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
22530 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
22531 a new REG rather than the SUBREG.
22532
22533 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22534
22535 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
22536 New pattern.
22537
22538 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22539
22540 PR target/108840
22541 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
22542 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
22543
22544 2023-04-19 Richard Biener <rguenther@suse.de>
22545
22546 PR rtl-optimization/109237
22547 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
22548 TREE_VISITED on INSN_VAR_LOCATION_DECL.
22549 (delete_trivially_dead_insns): Maintain TREE_VISITED on
22550 active debug bind INSN_VAR_LOCATION_DECL.
22551
22552 2023-04-19 Richard Biener <rguenther@suse.de>
22553
22554 PR rtl-optimization/109237
22555 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
22556
22557 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
22558
22559 * doc/install.texi (enable-decimal-float): Add AArch64.
22560
22561 2023-04-19 liuhongt <hongtao.liu@intel.com>
22562
22563 PR rtl-optimization/109351
22564 * ira.cc (setup_class_subset_and_memory_move_costs): Check
22565 hard_regno_mode_ok before setting lowest memory move cost for
22566 the mode with different reg classes.
22567
22568 2023-04-18 Jason Merrill <jason@redhat.com>
22569
22570 * doc/invoke.texi: Remove stray @gol.
22571
22572 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22573
22574 * ifcvt.cc (cond_move_process_if_block): Consider the result of
22575 targetm.noce_conversion_profitable_p() when replacing the original
22576 sequence with the converted one.
22577
22578 2023-04-18 Mark Harmstone <mark@harmstone.com>
22579
22580 * common.opt (gcodeview): Add new option.
22581 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
22582 * opts.cc (command_handle_option): Similarly.
22583 * doc/invoke.texi: Add documentation for -gcodeview.
22584
22585 2023-04-18 Andrew Pinski <apinski@marvell.com>
22586
22587 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
22588 (make_pass_phiopt): Make execute out of line.
22589 (tree_ssa_cs_elim): Move code into ...
22590 (pass_cselim::execute): here.
22591
22592 2023-04-18 Sam James <sam@gentoo.org>
22593
22594 * system.h: Drop unused INCLUDE_PTHREAD_H.
22595
22596 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
22597
22598 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
22599 condition.
22600
22601 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
22602
22603 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
22604 (bswapdi2, bswapsi2): Similarly.
22605
22606 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
22607
22608 PR target/94908
22609 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
22610 Use CODE_FOR_sse4_1_insertps_v4sf.
22611 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
22612 (expand_vec_perm_1): Call expand_vec_per_insertps.
22613 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
22614 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
22615 (@sse4_1_insertps_<mode>): New insn pattern.
22616 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
22617 pattern from sse4_1_insertps using VI4F_128 mode iterator.
22618
22619 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22620
22621 * value-range.cc (gt_ggc_mx): New.
22622 (gt_pch_nx): New.
22623 * value-range.h (class vrange): Add GTY marker.
22624 (class frange): Same.
22625 (gt_ggc_mx): Remove.
22626 (gt_pch_nx): Remove.
22627
22628 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
22629
22630 * lra-constraints.cc (constraint_unique): New.
22631 (process_address_1): Apply constraint_unique test.
22632 * recog.cc (constrain_operands): Allow relaxed memory
22633 constaints.
22634
22635 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
22636
22637 * doc/extend.texi (Target Builtins): Add RISC-V Vector
22638 Intrinsics.
22639 (RISC-V Vector Intrinsics): Document GCC implemented which
22640 version of RISC-V vector intrinsics and its reference.
22641
22642 2023-04-18 Richard Biener <rguenther@suse.de>
22643
22644 PR middle-end/108786
22645 * bitmap.h (bitmap_clear_first_set_bit): New.
22646 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
22647 bitmap_first_set_bit and add optional clearing of the bit.
22648 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
22649 (bitmap_clear_first_set_bit): Likewise.
22650 * df-core.cc (df_worklist_dataflow_doublequeue): Use
22651 bitmap_clear_first_set_bit.
22652 * graphite-scop-detection.cc (scop_detection::merge_sese):
22653 Likewise.
22654 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
22655 (sanitize_asan_mark_poison): Likewise.
22656 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
22657 * tree-into-ssa.cc (rewrite_blocks): Likewise.
22658 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
22659 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
22660
22661 2023-04-18 Richard Biener <rguenther@suse.de>
22662
22663 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
22664 (dump_sa_points_to_info): ... this function.
22665 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
22666 and call dump_sa_stats guarded with TDF_STATS.
22667 (ipa_pta_execute): Likewise.
22668 (compute_may_aliases): Guard dump_alias_info with
22669 TDF_DETAILS|TDF_ALIAS.
22670
22671 2023-04-18 Andrew Pinski <apinski@marvell.com>
22672
22673 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
22674 the expression that is being tried when TDF_FOLDING
22675 is true.
22676 (phiopt_worker::match_simplify_replacement): Dump
22677 the sequence which was created by gimple_simplify_phiopt
22678 when TDF_FOLDING is true.
22679
22680 2023-04-18 Andrew Pinski <apinski@marvell.com>
22681
22682 * tree-ssa-phiopt.cc (match_simplify_replacement):
22683 Simplify code that does the movement slightly.
22684
22685 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22686
22687 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
22688 define_expand.
22689 (rev16<mode>2): Rename to...
22690 (aarch64_rev16<mode>2_alt1): ... This.
22691 (rev16<mode>2_alt): Rename to...
22692 (*aarch64_rev16<mode>2_alt2): ... This.
22693
22694 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22695
22696 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
22697 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
22698 declaration.
22699 * range-op-float.cc (zero_range): Use dconstm0.
22700 (zero_to_inf_range): Same.
22701 * real.h (dconstm0): New.
22702 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
22703 (frange::set_zero): Do not declare dconstm0.
22704
22705 2023-04-18 Richard Biener <rguenther@suse.de>
22706
22707 * system.h (class auto_mpz): New,
22708 * realmpfr.h (class auto_mpfr): Likewise.
22709 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
22710 (do_mpfr_arg2): Likewise.
22711 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
22712
22713 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22714
22715 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
22716 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
22717
22718 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22719
22720 * value-range.cc (frange::operator==): Adjust for NAN.
22721 (range_tests_nan): Remove some NAN tests.
22722
22723 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22724
22725 * inchash.cc (hash::add_real_value): New.
22726 * inchash.h (class hash): Add add_real_value.
22727 * value-range.cc (add_vrange): New.
22728 * value-range.h (inchash::add_vrange): New.
22729
22730 2023-04-18 Richard Biener <rguenther@suse.de>
22731
22732 PR tree-optimization/109539
22733 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
22734 Re-implement pointer relatedness for PHIs.
22735
22736 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
22737
22738 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
22739 (SV_FP): New iterator.
22740 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
22741 (recip<mode>2): Unify the two patterns using SV_FP.
22742 (div_scale<mode><exec_vcc>): New insn.
22743 (div_fmas<mode><exec>): New insn.
22744 (div_fixup<mode><exec>): New insn.
22745 (div<mode>3): Unify the two expanders and rewrite using hardfp.
22746 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
22747 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
22748 and UNSPEC_DIV_FIXUP.
22749 (vccwait): New attribute.
22750
22751 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22752
22753 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
22754 if the argument matches that.
22755
22756 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22757
22758 * config/aarch64/atomics.md
22759 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
22760 Use SD_HSDI for destination mode iterator.
22761
22762 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
22763
22764 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
22765 of z-extensions and s-extensions.
22766 (riscv_subset_list::parse): Likewise.
22767
22768 2023-04-18 Jakub Jelinek <jakub@redhat.com>
22769
22770 PR tree-optimization/109240
22771 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
22772 first vec_perm operand and minus as second using fneg/fadd and
22773 minus as first vec_perm operand and plus as second using fneg/fsub.
22774
22775 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22776
22777 * data-streamer.cc (bp_pack_real_value): New.
22778 (bp_unpack_real_value): New.
22779 * data-streamer.h (bp_pack_real_value): New.
22780 (bp_unpack_real_value): New.
22781 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
22782 bp_unpack_real_value.
22783 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
22784 bp_pack_real_value.
22785
22786 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22787
22788 * wide-int.h (WIDE_INT_MAX_HWIS): New.
22789 (class fixed_wide_int_storage): Use it.
22790 (trailing_wide_ints <N>::set_precision): Use it.
22791 (trailing_wide_ints <N>::extra_size): Use it.
22792
22793 2023-04-18 Xi Ruoyao <xry111@xry111.site>
22794
22795 * config/loongarch/loongarch-protos.h
22796 (loongarch_addu16i_imm12_operand_p): New function prototype.
22797 (loongarch_split_plus_constant): Likewise.
22798 * config/loongarch/loongarch.cc
22799 (loongarch_addu16i_imm12_operand_p): New function.
22800 (loongarch_split_plus_constant): Likewise.
22801 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
22802 (DUAL_IMM12_OPERAND): Likewise.
22803 (DUAL_ADDU16I_OPERAND): Likewise.
22804 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
22805 constraint.
22806 * config/loongarch/predicates.md (const_dual_imm12_operand): New
22807 predicate.
22808 (const_addu16i_operand): Likewise.
22809 (const_addu16i_imm12_di_operand): Likewise.
22810 (const_addu16i_imm12_si_operand): Likewise.
22811 (plus_di_operand): Likewise.
22812 (plus_si_operand): Likewise.
22813 (plus_si_extend_operand): Likewise.
22814 * config/loongarch/loongarch.md (add<mode>3): Convert to
22815 define_insn_and_split. Use plus_<mode>_operand predicate
22816 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
22817 and Le constraints.
22818 (*addsi3_extended): Convert to define_insn_and_split. Use
22819 plus_si_extend_operand instead of arith_operand. Add
22820 alternatives for La and Le alternatives.
22821
22822 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22823
22824 * value-range.h (Value_Range::Value_Range): New.
22825 (Value_Range::contains_p): New.
22826
22827 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22828
22829 * value-range.h (class vrange): Make m_discriminator const.
22830 (class irange): Make m_max_ranges const. Adjust constructors
22831 accordingly.
22832 (class unsupported_range): Construct vrange appropriately.
22833 (class frange): Same.
22834
22835 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
22836
22837 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
22838 definition.
22839
22840 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
22841
22842 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
22843
22844 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
22845
22846 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
22847 readable.
22848 (riscv_expand_epilogue): Likewise.
22849
22850 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
22851
22852 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
22853 stack allocation.
22854 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
22855
22856 2023-04-17 Andrew Pinski <apinski@marvell.com>
22857
22858 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
22859 prototype.
22860
22861 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
22862
22863 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
22864 global ranges.
22865
22866 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
22867
22868 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
22869 parameter remaining_size.
22870 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
22871 (riscv_expand_prologue): Likewise.
22872 (riscv_expand_epilogue): Likewise.
22873
22874 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
22875
22876 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
22877 roriw for constant counts.
22878 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
22879 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
22880 (simplify_context::simplify_binary_operation_1): Use it.
22881 * expmed.cc (expand_shift_1): Likewise.
22882
22883 2023-04-17 Martin Jambor <mjambor@suse.cz>
22884
22885 PR ipa/107769
22886 PR ipa/109318
22887 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
22888 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
22889 (ipa_zap_jf_refdesc): New function.
22890 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
22891 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
22892 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
22893 the new parameter of find_reference.
22894 (adjust_references_in_caller): Likewise. Make sure the constant jump
22895 function is not used to decrement a refdec counter again. Only
22896 decrement refdesc counters when the pass_through jump function allows
22897 it. Added a detailed dump when decrementing refdesc counters.
22898 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
22899 (ipa_set_jf_simple_pass_through): Initialize the new flag.
22900 (ipa_set_jf_unary_pass_through): Likewise.
22901 (ipa_set_jf_arith_pass_through): Likewise.
22902 (remove_described_reference): Provide a value for the new parameter of
22903 find_reference.
22904 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
22905 the previous pass_through had a flag mandating that we do so.
22906 (propagate_controlled_uses): Likewise. Only decrement refdesc
22907 counters when the pass_through jump function allows it.
22908 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
22909 parameter of find_reference.
22910 (ipa_write_jump_function): Assert the new flag does not have to be
22911 streamed.
22912 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
22913 it in searching.
22914
22915 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
22916 Di Zhao <di.zhao@amperecomputing.com>
22917
22918 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
22919 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
22920 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
22921 Check for the above tuning option when processing loads.
22922
22923 2023-04-17 Richard Biener <rguenther@suse.de>
22924
22925 PR tree-optimization/109524
22926 * tree-vrp.cc (remove_unreachable::m_list): Change to a
22927 vector of pairs of block indices.
22928 (remove_unreachable::maybe_register_block): Adjust.
22929 (remove_unreachable::remove_and_update_globals): Likewise.
22930 Deal with removed blocks.
22931
22932 2023-04-16 Jeff Law <jlaw@ventanamicro>
22933
22934 PR target/109508
22935 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
22936 TARGET_SFB_ALU, force the true arm into a register.
22937
22938 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
22939
22940 PR target/104989
22941 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
22942 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
22943 size is zero.
22944 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
22945 (pa_function_arg_size): Change return type to int. Return zero
22946 for arguments larger than 1 GB. Update comments.
22947
22948 2023-04-15 Jakub Jelinek <jakub@redhat.com>
22949
22950 PR tree-optimization/109154
22951 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
22952 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
22953
22954 2023-04-15 Jason Merrill <jason@redhat.com>
22955
22956 PR c++/109514
22957 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
22958 Overhaul lhs_ref.ref analysis.
22959
22960 2023-04-14 Richard Biener <rguenther@suse.de>
22961
22962 PR tree-optimization/109502
22963 * tree-vect-stmts.cc (vectorizable_assignment): Fix
22964 check for conversion between mask and non-mask types.
22965
22966 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
22967 Jakub Jelinek <jakub@redhat.com>
22968
22969 PR target/108947
22970 PR target/109040
22971 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
22972 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
22973 smaller than word_mode.
22974 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
22975 <case AND>: Likewise.
22976
22977 2023-04-14 Jakub Jelinek <jakub@redhat.com>
22978
22979 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
22980 of GEN_INT.
22981
22982 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
22983
22984 PR tree-optimization/108139
22985 PR tree-optimization/109462
22986 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
22987 equivalency check for PHI nodes.
22988 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
22989 does not dominate single-arg equivalency edges.
22990
22991 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
22992
22993 PR target/108910
22994 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
22995 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
22996
22997 2023-04-13 Richard Biener <rguenther@suse.de>
22998
22999 PR tree-optimization/109491
23000 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
23001 NULL operands test.
23002
23003 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23004
23005 PR target/109479
23006 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
23007 (vint16mf4_t): Ditto.
23008 (vint32mf2_t): Ditto.
23009 (vint64m1_t): Ditto.
23010 (vint64m2_t): Ditto.
23011 (vint64m4_t): Ditto.
23012 (vint64m8_t): Ditto.
23013 (vuint8mf8_t): Ditto.
23014 (vuint16mf4_t): Ditto.
23015 (vuint32mf2_t): Ditto.
23016 (vuint64m1_t): Ditto.
23017 (vuint64m2_t): Ditto.
23018 (vuint64m4_t): Ditto.
23019 (vuint64m8_t): Ditto.
23020 (vfloat32mf2_t): Ditto.
23021 (vbool64_t): Ditto.
23022 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
23023 (register_vector_type): Ditto.
23024 (check_required_extensions): Fix condition.
23025 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
23026 (RVV_REQUIRE_ELEN_64): New define.
23027 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
23028 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
23029 (TARGET_VECTOR_FP64): Ditto.
23030 (ENTRY): Fix predicate.
23031 * config/riscv/vector-iterators.md: Fix predicate.
23032
23033 2023-04-12 Jakub Jelinek <jakub@redhat.com>
23034
23035 PR tree-optimization/109410
23036 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
23037 block if first statement of the function is a call to returns_twice
23038 function.
23039
23040 2023-04-12 Jakub Jelinek <jakub@redhat.com>
23041
23042 PR target/109458
23043 * config/i386/i386.cc: Include rtl-error.h.
23044 (ix86_print_operand): For z modifier warning, use warning_for_asm
23045 if this_is_asm_operands. For Z modifier errors, use %c and code
23046 instead of hardcoded Z.
23047
23048 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
23049
23050 * config/i386/x-mingw32-utf8: Remove extrataneous $@
23051
23052 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
23053
23054 PR tree-optimization/109462
23055 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
23056 check for equivalences if NAME is a phi node.
23057
23058 2023-04-12 Richard Biener <rguenther@suse.de>
23059
23060 PR tree-optimization/109473
23061 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
23062 Convert scalar result to the computation type before performing
23063 the reduction adjustment.
23064
23065 2023-04-12 Richard Biener <rguenther@suse.de>
23066
23067 PR tree-optimization/109469
23068 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
23069 a returns-twice call.
23070
23071 2023-04-12 Richard Biener <rguenther@suse.de>
23072
23073 PR tree-optimization/109434
23074 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
23075 handle possibly throwing calls when processing the LHS
23076 and may-defs are not OK.
23077
23078 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
23079
23080 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
23081 predicate to avoid splitting arith constants.
23082
23083 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
23084 Pan Li <pan2.li@intel.com>
23085 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23086 Kito Cheng <kito.cheng@sifive.com>
23087
23088 PR target/109104
23089 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
23090 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
23091 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
23092 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
23093 (riscv_zero_call_used_regs): New.
23094 (TARGET_ZERO_CALL_USED_REGS): New.
23095
23096 2023-04-11 Martin Liska <mliska@suse.cz>
23097
23098 PR driver/108241
23099 * opts.cc (finish_options): Drop also
23100 x_flag_var_tracking_assignments.
23101
23102 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
23103
23104 PR tree-optimization/108888
23105 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
23106
23107 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
23108
23109 PR target/108812
23110 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
23111 (vsx_sign_extend_v16qi_<mode>): ... this.
23112 (vsx_sign_extend_hi_<mode>): Rename to...
23113 (vsx_sign_extend_v8hi_<mode>): ... this.
23114 (vsx_sign_extend_si_v2di): Rename to...
23115 (vsx_sign_extend_v4si_v2di): ... this.
23116 (vsignextend_qi_<mode>): Remove.
23117 (vsignextend_hi_<mode>): Remove.
23118 (vsignextend_si_v2di): Remove.
23119 (vsignextend_v2di_v1ti): Remove.
23120 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
23121 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
23122 with gen_vsx_sign_extend_v16qi_v4si.
23123 * config/rs6000/rs6000.md (split for DI constant generation):
23124 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
23125 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
23126 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
23127 with gen_vsx_sign_extend_v16qi_si.
23128 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
23129 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
23130 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
23131 vsx_sign_extend_v16qi_v4si.
23132 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
23133 vsx_sign_extend_v8hi_v2di.
23134 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
23135 vsx_sign_extend_v8hi_v4si.
23136 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
23137 vsx_sign_extend_si_v2di.
23138 (__builtin_altivec_vsignext): Set bif-pattern to
23139 vsx_sign_extend_v2di_v1ti.
23140 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
23141 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
23142 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
23143 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
23144
23145 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
23146
23147 PR target/70243
23148 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
23149 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
23150
23151 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
23152
23153 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
23154
23155 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
23156
23157 * common/config/i386/cpuinfo.h (get_available_features):
23158 Detect AMX-COMPLEX.
23159 * common/config/i386/i386-common.cc
23160 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
23161 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
23162 (ix86_handle_option): Handle -mamx-complex.
23163 * common/config/i386/i386-cpuinfo.h (enum processor_features):
23164 Add FEATURE_AMX_COMPLEX.
23165 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
23166 amx-complex.
23167 * config.gcc: Add amxcomplexintrin.h.
23168 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
23169 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
23170 __AMX_COMPLEX__.
23171 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
23172 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
23173 Handle amx-complex.
23174 * config/i386/i386.opt: Add option -mamx-complex.
23175 * config/i386/immintrin.h: Include amxcomplexintrin.h.
23176 * doc/extend.texi: Document amx-complex.
23177 * doc/invoke.texi: Document -mamx-complex.
23178 * doc/sourcebuild.texi: Document target amx-complex.
23179 * config/i386/amxcomplexintrin.h: New file.
23180
23181 2023-04-08 Jakub Jelinek <jakub@redhat.com>
23182
23183 PR tree-optimization/109392
23184 * tree-vect-generic.cc (tree_vec_extract): Handle failure
23185 of maybe_push_res_to_seq better.
23186
23187 2023-04-08 Jakub Jelinek <jakub@redhat.com>
23188
23189 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
23190 poly-int-types.h.
23191 (SYSTEM_H): Depend on $(HASHTAB_H).
23192 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
23193 dependency on $(RTL_BASE_H), remove redundant dependency on
23194 insn-modes.h.
23195
23196 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
23197
23198 PR target/107674
23199 * config/arm/arm.cc (arm_effective_regno): New function.
23200 (mve_vector_mem_operand): Use it.
23201
23202 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
23203
23204 PR tree-optimization/109417
23205 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
23206 dependency is in SSA_NAME_FREE_LIST.
23207
23208 2023-04-06 Andrew Pinski <apinski@marvell.com>
23209
23210 PR tree-optimization/109427
23211 * params.opt (-param=vect-induction-float=):
23212 Fix option attribute typo for IntegerRange.
23213
23214 2023-04-05 Jeff Law <jlaw@ventanamicro>
23215
23216 PR target/108892
23217 * combine.cc (combine_instructions): Force re-recognition when
23218 after restoring the body of an insn to its original form.
23219
23220 2023-04-05 Martin Jambor <mjambor@suse.cz>
23221
23222 PR ipa/108959
23223 * ipa-sra.cc (zap_useless_ipcp_results): New function.
23224 (process_isra_node_results): Call it.
23225
23226 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23227
23228 * config/riscv/vector.md: Fix incorrect operand order.
23229
23230 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23231
23232 * config/riscv/riscv-vsetvl.cc
23233 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
23234 demand fusion.
23235
23236 2023-04-05 Li Xu <xuli1@eswincomputing.com>
23237
23238 * config/riscv/riscv-vector-builtins.def: Fix typo.
23239 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
23240 * config/riscv/vector-iterators.md: Ditto.
23241
23242 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
23243
23244 * doc/md.texi (Including Patterns): Fix page break.
23245
23246 2023-04-04 Jakub Jelinek <jakub@redhat.com>
23247
23248 PR tree-optimization/109386
23249 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
23250 foperator_le::op1_range, foperator_le::op2_range,
23251 foperator_gt::op1_range, foperator_gt::op2_range,
23252 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
23253 BRS_FALSE case even if the other op is maybe_isnan, not just
23254 known_isnan.
23255 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
23256 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
23257 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
23258 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
23259 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
23260 not just known_isnan.
23261
23262 2023-04-04 Marek Polacek <polacek@redhat.com>
23263
23264 PR sanitizer/109107
23265 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
23266 when associating.
23267 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
23268
23269 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
23270
23271 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
23272 (mve_vcreateq_f<mode>): Swap operands.
23273
23274 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
23275
23276 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
23277
23278 2023-04-04 Jakub Jelinek <jakub@redhat.com>
23279
23280 PR target/109384
23281 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
23282 Reword diagnostics about zfinx conflict with f, formatting fixes.
23283
23284 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23285
23286 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
23287
23288 2023-04-04 Richard Biener <rguenther@suse.de>
23289
23290 PR tree-optimization/109304
23291 * tree-profile.cc (tree_profiling): Use symtab node
23292 availability to decide whether to skip adjusting calls.
23293 Do not adjust calls to internal functions.
23294
23295 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
23296
23297 PR target/108807
23298 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
23299 function for permutation control vector by considering big endianness.
23300
23301 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
23302
23303 PR target/108699
23304 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
23305 (rs6000_vprtyb<mode>2): ... this.
23306 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
23307 rs6000_vprtybv2di2.
23308 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
23309 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
23310 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
23311 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
23312
23313 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
23314 Sandra Loosemore <sandra@codesourcery.com>
23315
23316 * doc/md.texi (Insn Splitting): Tweak wording for readability.
23317
23318 2023-04-03 Martin Jambor <mjambor@suse.cz>
23319
23320 PR ipa/109303
23321 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
23322 offset + size will be representable in unsigned int.
23323
23324 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23325
23326 * configure.ac (ZSTD_LIB): Move before zstd.h check.
23327 Unset gcc_cv_header_zstd_h without libzstd.
23328 * configure: Regenerate.
23329
23330 2023-04-03 Martin Liska <mliska@suse.cz>
23331
23332 * doc/invoke.texi: Document new param.
23333
23334 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
23335
23336 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
23337 new check_effective_target function.
23338
23339 2023-04-03 Li Xu <xuli1@eswincomputing.com>
23340
23341 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
23342 (vfloat32m8_t): Likewise
23343
23344 2023-04-03 liuhongt <hongtao.liu@intel.com>
23345
23346 * doc/md.texi: Document signbitm2.
23347
23348 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23349 kito-cheng <kito.cheng@sifive.com>
23350
23351 * config/riscv/vector.md: Fix RA constraint.
23352
23353 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23354
23355 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
23356 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
23357 * config/riscv/vector.md: Fix scalar move bug.
23358
23359 2023-04-01 Jakub Jelinek <jakub@redhat.com>
23360
23361 * range-op-float.cc (foperator_equal::fold_range): If at least
23362 one of the op ranges is not singleton and neither is NaN and all
23363 4 bounds are zero, return [1, 1].
23364 (foperator_not_equal::fold_range): In the same case return [0, 0].
23365
23366 2023-04-01 Jakub Jelinek <jakub@redhat.com>
23367
23368 * range-op-float.cc (foperator_equal::fold_range): Perform the
23369 non-singleton handling regardless of maybe_isnan (op1, op2).
23370 (foperator_not_equal::fold_range): Likewise.
23371 (foperator_lt::fold_range, foperator_le::fold_range,
23372 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
23373 real_* comparison check which results in range_false (type)
23374 even if maybe_isnan (op1, op2). Simplify.
23375 (foperator_ltgt): New class.
23376 (fop_ltgt): New variable.
23377 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
23378 fop_ltgt.
23379
23380 2023-04-01 Jakub Jelinek <jakub@redhat.com>
23381
23382 PR target/109254
23383 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
23384 returns VOIDmode, handle it like if the register isn't used for
23385 passing arguments at all.
23386 (apply_result_size): If targetm.calls.get_raw_result_mode returns
23387 VOIDmode, handle it like if the register isn't used for returning
23388 results at all.
23389 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
23390 means to return VOIDmode.
23391 * doc/tm.texi: Regenerated.
23392 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
23393 TARGET_SVE for P0_REGNUM.
23394 (aarch64_function_arg_regno_p): Also return true for p0-p3.
23395 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
23396
23397 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
23398
23399 * lra-constraints.cc: (combine_reload_insn): New function.
23400
23401 2023-03-31 Jakub Jelinek <jakub@redhat.com>
23402
23403 PR tree-optimization/91645
23404 * range-op-float.cc (foperator_unordered_lt::fold_range,
23405 foperator_unordered_le::fold_range,
23406 foperator_unordered_gt::fold_range,
23407 foperator_unordered_ge::fold_range,
23408 foperator_unordered_equal::fold_range): Call the ordered
23409 fold_range on ranges with cleared NaNs.
23410 * value-query.cc (range_query::get_tree_range): Handle also
23411 COMPARISON_CLASS_P trees.
23412
23413 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
23414 Andrew Pinski <pinskia@gmail.com>
23415
23416 PR target/109328
23417 * config/riscv/t-riscv: Add missing dependencies.
23418
23419 2023-03-31 liuhongt <hongtao.liu@intel.com>
23420
23421 * config/i386/i386.cc (inline_memory_move_cost): Return 100
23422 for MASK_REGS when MODE_SIZE > 8.
23423
23424 2023-03-31 liuhongt <hongtao.liu@intel.com>
23425
23426 PR target/85048
23427 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
23428 ufloat/ufix to floatuns/fixuns.
23429 * config/i386/i386-expand.cc
23430 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
23431 * config/i386/sse.md
23432 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
23433 Renamed to ..
23434 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
23435 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
23436 Renamed to ..
23437 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
23438 .. this.
23439 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
23440 Renamed to ..
23441 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
23442 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
23443 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
23444 (ufloatv2siv2df2<mask_name>): Renamed to ..
23445 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
23446 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
23447 Renamed to ..
23448 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
23449 .. this.
23450 (ufix_notruncv2dfv2si2): Renamed to ..
23451 (fixuns_notruncv2dfv2si2):.. this.
23452 (ufix_notruncv2dfv2si2_mask): Renamed to ..
23453 (fixuns_notruncv2dfv2si2_mask): .. this.
23454 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
23455 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
23456 (ufix_truncv2dfv2si2): Renamed to ..
23457 (*fixuns_truncv2dfv2si2): .. this.
23458 (ufix_truncv2dfv2si2_mask): Renamed to ..
23459 (fixuns_truncv2dfv2si2_mask): .. this.
23460 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
23461 (*fixuns_truncv2dfv2si2_mask_1): .. this.
23462 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
23463 (fixuns_truncv4dfv4si2<mask_name>): .. this.
23464 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
23465 Renamed to ..
23466 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
23467 .. this.
23468 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
23469 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
23470 .. this.
23471
23472 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
23473
23474 PR tree-optimization/109154
23475 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
23476 * gimple-range-gori.h (may_recompute_p): Add depth param.
23477 * params.opt (ranger-recompute-depth): New param.
23478
23479 2023-03-30 Jason Merrill <jason@redhat.com>
23480
23481 PR c++/107897
23482 PR c++/108887
23483 * cgraph.h: Move reset() from cgraph_node to symtab_node.
23484 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
23485 remove_from_same_comdat_group.
23486
23487 2023-03-30 Richard Biener <rguenther@suse.de>
23488
23489 PR tree-optimization/107561
23490 * gimple-ssa-warn-access.cc (get_size_range): Add flags
23491 argument and pass it on.
23492 (check_access): When querying for the size range pass
23493 SR_ALLOW_ZERO when the known destination size is zero.
23494
23495 2023-03-30 Richard Biener <rguenther@suse.de>
23496
23497 PR tree-optimization/109342
23498 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
23499 overload for edge. When that edge is a backedge use
23500 dominated_by_p directly.
23501
23502 2023-03-30 liuhongt <hongtao.liu@intel.com>
23503
23504 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
23505 vpblendd instead of vpblendw for V4SI under avx2.
23506
23507 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
23508
23509 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
23510 for many quick operands, for register-sized modes.
23511
23512 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
23513
23514 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
23515 New check.
23516
23517 2023-03-29 Martin Liska <mliska@suse.cz>
23518
23519 PR bootstrap/109310
23520 * configure.ac: Emit a warning for deprecated option
23521 --enable-link-mutex.
23522 * configure: Regenerate.
23523
23524 2023-03-29 Richard Biener <rguenther@suse.de>
23525
23526 PR tree-optimization/109331
23527 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
23528 discover a taken edge make sure to cleanup the CFG.
23529
23530 2023-03-29 Richard Biener <rguenther@suse.de>
23531
23532 PR tree-optimization/109327
23533 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
23534 already removed stmts when draining to_remove.
23535
23536 2023-03-29 Richard Biener <rguenther@suse.de>
23537
23538 PR ipa/106124
23539 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
23540 so we can re-create the DIE for the type if required.
23541
23542 2023-03-29 Jakub Jelinek <jakub@redhat.com>
23543 Richard Biener <rguenther@suse.de>
23544
23545 PR tree-optimization/109301
23546 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
23547 properties_provided from PROP_gimple_opt_math to 0.
23548 (pass_data_expand_powcabs): Change properties_provided from 0 to
23549 PROP_gimple_opt_math.
23550
23551 2023-03-29 Richard Biener <rguenther@suse.de>
23552
23553 PR tree-optimization/109154
23554 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
23555 inverted condition specially by inverting at the caller.
23556 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
23557
23558 2023-03-28 David Malcolm <dmalcolm@redhat.com>
23559
23560 PR c/107002
23561 * diagnostic-show-locus.cc (column_range::column_range): Factor
23562 out assertion conditional into...
23563 (column_range::valid_p): ...this new function.
23564 (line_corrections::add_hint): Don't attempt to consolidate hints
23565 if it would lead to invalid column_range instances.
23566
23567 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
23568
23569 PR target/109312
23570 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
23571 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
23572 minor refactor.
23573
23574 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
23575
23576 PR rtl-optimization/109187
23577 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
23578 subtraction in three-way comparison.
23579
23580 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
23581
23582 PR tree-optimization/109265
23583 PR tree-optimization/109274
23584 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
23585 not create a relation record is op1 and op2 are the same symbol.
23586 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
23587 handler for this stmt, but create a new record only if this statement
23588 generates a relation based on the ranges.
23589 (gori_compute::compute_operand2_range): Ditto.
23590 * value-relation.h (value_relation::set_relation): Always create the
23591 record that is requested.
23592
23593 2023-03-28 Richard Biener <rguenther@suse.de>
23594
23595 PR tree-optimization/107087
23596 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
23597 executable regions to avoid useless work and to better
23598 propagate degenerate PHIs.
23599
23600 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
23601
23602 * config/i386/x-mingw32-utf8: update comments.
23603
23604 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
23605
23606 PR target/109072
23607 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
23608 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
23609 variable.
23610 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
23611 New function.
23612 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
23613 after inlining. Record which decls are loaded from. Fix handling
23614 of vops for loads and stores.
23615 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
23616 (aarch64_accesses_vector_load_decl_p): Likewise.
23617 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
23618 variable.
23619 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
23620 that loads from a decl, treat vector stores to those decls as
23621 zero cost.
23622 (aarch64_vector_costs::finish_cost): ...and in that case,
23623 if the vector code does nothing more than a store, give the
23624 prologue a zero cost as well.
23625
23626 2023-03-28 Richard Biener <rguenther@suse.de>
23627
23628 PR bootstrap/84402
23629 PR tree-optimization/108129
23630 * genmatch.cc (lower_for): For (match ...) delay
23631 substituting into the match operator if possible.
23632 (dt_operand::gen_gimple_expr): For user_id look at the
23633 first substitute for determining how to access operands.
23634 (dt_operand::gen_generic_expr): Likewise.
23635 (dt_node::gen_kids): Properly sort user_ids according
23636 to their substitutes.
23637 (dt_node::gen_kids_1): Code-generate user_id matching.
23638
23639 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23640 Jonathan Wakely <jwakely@redhat.com>
23641
23642 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
23643 Use subcommand rather than sub-command in function comments.
23644
23645 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23646
23647 PR tree-optimization/109154
23648 * value-range.h (frange::flush_denormals_to_zero): Make it public
23649 rather than private.
23650 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
23651 here.
23652 * range-op-float.cc (range_operator_float::fold_range): Call
23653 flush_denormals_to_zero.
23654
23655 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23656
23657 PR middle-end/106190
23658 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
23659 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
23660
23661 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23662
23663 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
23664 as 4th argument to set to avoid clear_nan and union_ calls.
23665
23666 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23667
23668 PR target/109276
23669 * config/i386/i386.cc (assign_386_stack_local): For DImode
23670 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
23671 align 32 rather than 0 to assign_stack_local.
23672
23673 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
23674
23675 PR target/109140
23676 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
23677 on operand #3 to get the final condition code. Use std::swap.
23678 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
23679 (fucmp<gcond:code>8<P:mode>_vis): Move around.
23680 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
23681 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
23682
23683 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
23684
23685 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
23686 top-level sections.
23687
23688 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
23689
23690 * config.host: Pull in i386/x-mingw32-utf8 Makefile
23691 fragment and reference utf8rc-mingw32.o explicitly
23692 for mingw hosts.
23693 * config/i386/sym-mingw32.cc: prevent name mangling of
23694 stub symbol.
23695 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
23696 depend on manifest file explicitly.
23697
23698 2023-03-28 Richard Biener <rguenther@suse.de>
23699
23700 Revert:
23701 2023-03-27 Richard Biener <rguenther@suse.de>
23702
23703 PR rtl-optimization/109237
23704 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
23705
23706 2023-03-28 Richard Biener <rguenther@suse.de>
23707
23708 * common.opt (gdwarf): Remove Negative(gdwarf-).
23709
23710 2023-03-28 Richard Biener <rguenther@suse.de>
23711
23712 * common.opt (gdwarf): Add RejectNegative.
23713 (gdwarf-): Likewise.
23714 (ggdb): Likewise.
23715 (gvms): Likewise.
23716
23717 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23718
23719 * config/cris/constraints.md ("T"): Correct to
23720 define_memory_constraint.
23721
23722 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23723
23724 * config/cris/cris.md (BW2): New mode-iterator.
23725 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
23726 peephole2s.
23727
23728 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23729
23730 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
23731 for possible eliminable compares.
23732
23733 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23734
23735 * config/cris/constraints.md ("R"): Remove unused constraint.
23736
23737 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
23738
23739 PR gcov-profile/109297
23740 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
23741 (merge_stream_usage): Likewise.
23742 (overlap_usage): Likewise.
23743
23744 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
23745
23746 PR target/109296
23747 * config/riscv/thead.md: Add missing mode specifiers.
23748
23749 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
23750 Jiangning Liu <jiangning.liu@amperecomputing.com>
23751 Manolis Tsamis <manolis.tsamis@vrull.eu>
23752
23753 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
23754
23755 2023-03-27 Richard Biener <rguenther@suse.de>
23756
23757 PR rtl-optimization/109237
23758 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
23759
23760 2023-03-27 Richard Biener <rguenther@suse.de>
23761
23762 PR lto/109263
23763 * lto-wrapper.cc (run_gcc): Parse alternate debug options
23764 as well, they always enable debug.
23765
23766 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
23767
23768 PR target/109167
23769 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
23770 from ...
23771 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
23772
23773 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
23774
23775 PR target/109082
23776 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
23777 than zero when calling vec_sld.
23778 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
23779 zero when calling vec_sld.
23780 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
23781 than zero when calling vec_sld.
23782
23783 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
23784
23785 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
23786 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
23787 loops are represented and which fields are vectors. Add
23788 documentation for OMP_FOR_PRE_BODY field. Document internal
23789 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
23790 * tree.def (OMP_FOR): Make documentation consistent with the
23791 Texinfo manual, to fill some gaps and correct errors.
23792
23793 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
23794
23795 PR target/106282
23796 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
23797 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
23798 (handle_move_double): Call it before handle_movsi.
23799 * config/m68k/m68k-protos.h: Declare it.
23800
23801 2023-03-26 Jakub Jelinek <jakub@redhat.com>
23802
23803 PR tree-optimization/109230
23804 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
23805
23806 2023-03-26 Jakub Jelinek <jakub@redhat.com>
23807
23808 PR ipa/105685
23809 * predict.cc (compute_function_frequency): Don't call
23810 warn_function_cold if function already has cold attribute.
23811
23812 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
23813
23814 * doc/install.texi: Remove anachronistic note
23815 related to languages built and separate source tarballs.
23816
23817 2023-03-25 David Malcolm <dmalcolm@redhat.com>
23818
23819 PR analyzer/109098
23820 * diagnostic-format-sarif.cc (read_until_eof): Delete.
23821 (maybe_read_file): Delete.
23822 (sarif_builder::maybe_make_artifact_content_object): Use
23823 get_source_file_content rather than maybe_read_file.
23824 Reject it if it's not valid UTF-8.
23825 * input.cc (file_cache_slot::get_full_file_content): New.
23826 (get_source_file_content): New.
23827 (selftest::check_cpp_valid_utf8_p): New.
23828 (selftest::test_cpp_valid_utf8_p): New.
23829 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
23830 * input.h (get_source_file_content): New prototype.
23831
23832 2023-03-24 David Malcolm <dmalcolm@redhat.com>
23833
23834 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
23835 debugging options.
23836 (Special Functions for Debugging the Analyzer): Convert to a
23837 table, and rewrite in places.
23838 (Other Debugging Techniques): Add notes on how to compare two
23839 different exploded graphs.
23840
23841 2023-03-24 David Malcolm <dmalcolm@redhat.com>
23842
23843 PR other/109163
23844 * json.cc: Update comments to indicate that we now preserve
23845 insertion order of keys within objects.
23846 (object::print): Traverse keys in insertion order.
23847 (object::set): Preserve insertion order of keys.
23848 (selftest::test_writing_objects): Add an additional key to verify
23849 that we preserve insertion order.
23850 * json.h (object::m_keys): New field.
23851
23852 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
23853
23854 PR tree-optimization/109238
23855 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
23856 predecessors which this block dominates.
23857
23858 2023-03-24 Richard Biener <rguenther@suse.de>
23859
23860 PR tree-optimization/106912
23861 * tree-profile.cc (tree_profiling): Update stmts only when
23862 profiling or testing coverage. Make sure to update calls
23863 fntype, stripping 'const' there.
23864
23865 2023-03-24 Jakub Jelinek <jakub@redhat.com>
23866
23867 PR middle-end/109258
23868 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
23869 if target == const0_rtx.
23870
23871 2023-03-24 Alexandre Oliva <oliva@adacore.com>
23872
23873 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
23874 Document options and effective targets.
23875
23876 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
23877
23878 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
23879 optional.
23880
23881 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
23882
23883 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
23884 non-earlyclobber alternative.
23885
23886 2023-03-23 Andrew Pinski <apinski@marvell.com>
23887
23888 PR c/84900
23889 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
23890 as a lvalue.
23891
23892 2023-03-23 Richard Biener <rguenther@suse.de>
23893
23894 PR tree-optimization/107569
23895 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
23896 Do not push SSA names with zero uses as available leader.
23897 (process_bb): Likewise.
23898
23899 2023-03-23 Richard Biener <rguenther@suse.de>
23900
23901 PR tree-optimization/109262
23902 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
23903 combining a piecewise complex load avoid touching loads
23904 that throw internally. Use fun, not cfun throughout.
23905
23906 2023-03-23 Jakub Jelinek <jakub@redhat.com>
23907
23908 * value-range.cc (irange::irange_union, irange::intersect): Fix
23909 comment spelling bugs.
23910 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
23911 * gimple-range-trace.h: Likewise.
23912 * gimple-range-edge.cc: Likewise.
23913 (gimple_outgoing_range_stmt_p,
23914 gimple_outgoing_range::switch_edge_range,
23915 gimple_outgoing_range::edge_range_p): Likewise.
23916 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
23917 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
23918 assume_query::assume_query, assume_query::calculate_phi): Likewise.
23919 * gimple-range-edge.h: Likewise.
23920 * value-range.h (Value_Range::set, Value_Range::lower_bound,
23921 Value_Range::upper_bound, frange::set_undefined): Likewise.
23922 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
23923 gori_compute): Likewise.
23924 * gimple-range-fold.h (fold_using_range): Likewise.
23925 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
23926 Likewise.
23927 * gimple-range-gori.cc (range_def_chain::in_chain_p,
23928 range_def_chain::dump, gori_map::calculate_gori,
23929 gori_compute::compute_operand_range_switch,
23930 gori_compute::logical_combine, gori_compute::refine_using_relation,
23931 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
23932 Likewise.
23933 * gimple-range.h: Likewise.
23934 (enable_ranger): Likewise.
23935 * range-op.h (empty_range_varying): Likewise.
23936 * value-query.h (value_query): Likewise.
23937 * gimple-range-cache.cc (block_range_cache::set_bb_range,
23938 block_range_cache::dump, ssa_global_cache::clear_global_range,
23939 temporal_cache::temporal_value, temporal_cache::current_p,
23940 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
23941 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
23942 Likewise.
23943 * gimple-range-fold.cc (fur_edge::get_phi_operand,
23944 fur_stmt::get_operand, gimple_range_adjustment,
23945 fold_using_range::range_of_phi,
23946 fold_using_range::relation_fold_and_or): Likewise.
23947 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
23948 * value-query.cc (range_query::value_of_expr,
23949 range_query::value_on_edge, range_query::query_relation): Likewise.
23950 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
23951 intersect_range_with_nonzero_bits): Likewise.
23952 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
23953 exit_range): Likewise.
23954 * value-relation.h: Likewise.
23955 (equiv_oracle, relation_trio::relation_trio, value_relation,
23956 value_relation::value_relation, pe_min): Likewise.
23957 * range-op-float.cc (range_operator_float::rv_fold,
23958 frange_arithmetic, foperator_unordered_equal::op1_range,
23959 foperator_div::rv_fold): Likewise.
23960 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
23961 * value-relation.cc (equiv_oracle::query_relation,
23962 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
23963 value_relation::apply_transitive, relation_chain_head::find_relation,
23964 dom_oracle::query_relation, dom_oracle::find_relation_block,
23965 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
23966 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
23967 create_possibly_reversed_range, adjust_op1_for_overflow,
23968 operator_mult::wi_fold, operator_exact_divide::op1_range,
23969 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
23970 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
23971 range_op_lshift_tests): Likewise.
23972
23973 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
23974
23975 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
23976 (move_callee_saved_registers): Detect the bug condition early.
23977
23978 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
23979
23980 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
23981 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
23982 (V_2REG_ALT): New.
23983 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
23984 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
23985 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
23986 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
23987 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
23988
23989 2023-03-23 Jakub Jelinek <jakub@redhat.com>
23990
23991 PR tree-optimization/109176
23992 * tree-vect-generic.cc (expand_vector_condition): If a has
23993 vector boolean type and is a comparison, also check if both
23994 the comparison and VEC_COND_EXPR could be successfully expanded
23995 individually.
23996
23997 2023-03-23 Pan Li <pan2.li@intel.com>
23998 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23999
24000 PR target/108654
24001 PR target/108185
24002 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
24003 for vector mask modes.
24004 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
24005 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
24006
24007 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
24008
24009 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
24010
24011 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24012
24013 PR target/109244
24014 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
24015 (emit_vlmax_op): Ditto.
24016 * config/riscv/riscv-v.cc (get_sew): New function.
24017 (emit_vlmax_vsetvl): Adapt function.
24018 (emit_pred_op): Ditto.
24019 (emit_vlmax_op): Ditto.
24020 (emit_nonvlmax_op): Ditto.
24021 (legitimize_move): Fix LRA ICE.
24022 (gen_no_side_effects_vsetvl_rtx): Adapt function.
24023 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
24024 (@mov<VB:mode><P:mode>_lra): Ditto.
24025 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
24026 (*mov<VB:mode><P:mode>_lra): Ditto.
24027
24028 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24029
24030 PR target/109228
24031 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
24032 __riscv_vlenb support.
24033 (BASE): Ditto.
24034 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24035 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
24036 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
24037 (SHAPE): Ditto.
24038 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24039 * config/riscv/riscv-vector-builtins.cc: Ditto.
24040
24041 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24042 kito-cheng <kito.cheng@sifive.com>
24043
24044 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
24045 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
24046 (pass_vsetvl::need_vsetvl): Fix bugs.
24047 (pass_vsetvl::backward_demand_fusion): Fix bugs.
24048 (pass_vsetvl::demand_fusion): Fix bugs.
24049 (eliminate_insn): Fix bugs.
24050 (insert_vsetvl): Ditto.
24051 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
24052 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
24053 * config/riscv/vector.md: Ditto.
24054
24055 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24056 kito-cheng <kito.cheng@sifive.com>
24057
24058 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
24059 * config/riscv/vector-iterators.md (nmsac): Ditto.
24060 (nmsub): Ditto.
24061 (msac): Ditto.
24062 (msub): Ditto.
24063 (nmadd): Ditto.
24064 (nmacc): Ditto.
24065 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
24066 (@pred_mul_plus<mode>): Ditto.
24067 (*pred_madd<mode>): Ditto.
24068 (*pred_macc<mode>): Ditto.
24069 (*pred_mul_plus<mode>): Ditto.
24070 (@pred_mul_plus<mode>_scalar): Ditto.
24071 (*pred_madd<mode>_scalar): Ditto.
24072 (*pred_macc<mode>_scalar): Ditto.
24073 (*pred_mul_plus<mode>_scalar): Ditto.
24074 (*pred_madd<mode>_extended_scalar): Ditto.
24075 (*pred_macc<mode>_extended_scalar): Ditto.
24076 (*pred_mul_plus<mode>_extended_scalar): Ditto.
24077 (@pred_minus_mul<mode>): Ditto.
24078 (*pred_<madd_nmsub><mode>): Ditto.
24079 (*pred_nmsub<mode>): Ditto.
24080 (*pred_<macc_nmsac><mode>): Ditto.
24081 (*pred_nmsac<mode>): Ditto.
24082 (*pred_mul_<optab><mode>): Ditto.
24083 (*pred_minus_mul<mode>): Ditto.
24084 (@pred_mul_<optab><mode>_scalar): Ditto.
24085 (@pred_minus_mul<mode>_scalar): Ditto.
24086 (*pred_<madd_nmsub><mode>_scalar): Ditto.
24087 (*pred_nmsub<mode>_scalar): Ditto.
24088 (*pred_<macc_nmsac><mode>_scalar): Ditto.
24089 (*pred_nmsac<mode>_scalar): Ditto.
24090 (*pred_mul_<optab><mode>_scalar): Ditto.
24091 (*pred_minus_mul<mode>_scalar): Ditto.
24092 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
24093 (*pred_nmsub<mode>_extended_scalar): Ditto.
24094 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
24095 (*pred_nmsac<mode>_extended_scalar): Ditto.
24096 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
24097 (*pred_minus_mul<mode>_extended_scalar): Ditto.
24098 (*pred_<madd_msub><mode>): Ditto.
24099 (*pred_<macc_msac><mode>): Ditto.
24100 (*pred_<madd_msub><mode>_scalar): Ditto.
24101 (*pred_<macc_msac><mode>_scalar): Ditto.
24102 (@pred_neg_mul_<optab><mode>): Ditto.
24103 (@pred_mul_neg_<optab><mode>): Ditto.
24104 (*pred_<nmadd_msub><mode>): Ditto.
24105 (*pred_<nmsub_nmadd><mode>): Ditto.
24106 (*pred_<nmacc_msac><mode>): Ditto.
24107 (*pred_<nmsac_nmacc><mode>): Ditto.
24108 (*pred_neg_mul_<optab><mode>): Ditto.
24109 (*pred_mul_neg_<optab><mode>): Ditto.
24110 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
24111 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
24112 (*pred_<nmadd_msub><mode>_scalar): Ditto.
24113 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
24114 (*pred_<nmacc_msac><mode>_scalar): Ditto.
24115 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
24116 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
24117 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
24118 (@pred_widen_neg_mul_<optab><mode>): Ditto.
24119 (@pred_widen_mul_neg_<optab><mode>): Ditto.
24120 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
24121 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
24122
24123 2023-03-23 liuhongt <hongtao.liu@intel.com>
24124
24125 * builtins.cc (builtin_memset_read_str): Replace
24126 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
24127 (builtin_memset_gen_str): Ditto.
24128 * config/i386/i386-expand.cc
24129 (ix86_convert_const_wide_int_to_broadcast): Replace
24130 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
24131 (ix86_expand_vector_move): Ditto.
24132 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
24133 Removed.
24134 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
24135 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
24136 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
24137 * doc/tm.texi.in: Ditto.
24138 * target.def: Ditto.
24139
24140 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
24141
24142 * lra.cc (lra): Do not repeat inheritance and live range splitting
24143 when asm error is found.
24144
24145 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
24146
24147 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
24148 (gcn_expand_dpp_distribute_even_insn)
24149 (gcn_expand_dpp_distribute_odd_insn): Declare.
24150 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
24151 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
24152 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
24153 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
24154 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
24155 (fms<mode>4_negop2): New patterns.
24156 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
24157 (gcn_expand_dpp_distribute_even_insn)
24158 (gcn_expand_dpp_distribute_odd_insn): New functions.
24159 * config/gcn/gcn.md: Add entries to unspec enum.
24160
24161 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
24162
24163 PR tree-optimization/109008
24164 * value-range.cc (frange::set): Add nan_state argument.
24165 * value-range.h (class nan_state): New.
24166 (frange::get_nan_state): New.
24167
24168 2023-03-22 Martin Liska <mliska@suse.cz>
24169
24170 * configure: Regenerate.
24171
24172 2023-03-21 Joseph Myers <joseph@codesourcery.com>
24173
24174 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
24175 to variants.
24176
24177 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
24178
24179 PR tree-optimization/109192
24180 * gimple-range-gori.cc (gori_compute::compute_operand_range):
24181 Terminate gori calculations if a relation is not relevant.
24182 * value-relation.h (value_relation::set_relation): Allow
24183 equality between op1 and op2 if they are the same.
24184
24185 2023-03-21 Richard Biener <rguenther@suse.de>
24186
24187 PR tree-optimization/109219
24188 * tree-vect-loop.cc (vectorizable_reduction): Check
24189 slp_node, not STMT_SLP_TYPE.
24190 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
24191 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
24192 Remove assertion on STMT_SLP_TYPE.
24193
24194 2023-03-21 Jakub Jelinek <jakub@redhat.com>
24195
24196 PR tree-optimization/109215
24197 * tree.h (enum special_array_member): Adjust comments for int_0
24198 and trail_0.
24199 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
24200 has zero sized element type and the array has variable number of
24201 elements or constant one or more elements.
24202 (component_ref_size): Adjust comments, formatting fix.
24203
24204 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24205
24206 * configure.ac: Add check for the Texinfo 6.8
24207 CONTENTS_OUTPUT_LOCATION customization variable and set it if
24208 supported.
24209 * configure: Regenerate.
24210 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
24211 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
24212 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
24213 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
24214
24215 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24216
24217 * doc/extend.texi: Associate use_hazard_barrier_return index
24218 entry with its attribute.
24219 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
24220 its attribute
24221
24222 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24223
24224 * doc/implement-c.texi: Remove usage of @gol.
24225 * doc/invoke.texi: Ditto.
24226 * doc/sourcebuild.texi: Ditto.
24227 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
24228 texinfo.tex versions, the bug it was working around appears to
24229 be gone.
24230
24231 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24232
24233 * doc/include/texinfo.tex: Update to 2023-01-17.19.
24234
24235 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24236
24237 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
24238 @enddefbuiltin for defining built-in functions.
24239 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
24240 places where it should be used.
24241
24242 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24243
24244 * doc/extend.texi (Formatted Output Function Checking): New
24245 subsection for grouping together printf et al.
24246 (Exception handling) Fix missing @ sign before copyright
24247 header, which lead to the copyright line leaking into
24248 '(gcc)Exception handling'.
24249 * doc/gcc.texi: Set document language to en_US.
24250 (@copying): Wrap front cover texts in quotations, move in manual
24251 description text.
24252
24253 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24254
24255 * doc/gcc.texi: Add the Indices appendix, to make texinfo
24256 generate nice indices overview page.
24257
24258 2023-03-21 Richard Biener <rguenther@suse.de>
24259
24260 PR tree-optimization/109170
24261 * gimple-range-op.cc (cfn_pass_through_arg1): New.
24262 (gimple_range_op_handler::maybe_builtin_call): Handle
24263 __builtin_expect via cfn_pass_through_arg1.
24264
24265 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
24266
24267 PR target/109067
24268 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
24269 (init_float128_ieee): Delete code to switch complex multiply and divide
24270 for long double.
24271 (complex_multiply_builtin_code): New helper function.
24272 (complex_divide_builtin_code): Likewise.
24273 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
24274 of complex 128-bit multiply and divide built-in functions.
24275
24276 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
24277
24278 PR target/109178
24279 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
24280
24281 2023-03-19 Jonny Grant <jg@jguk.org>
24282
24283 * doc/extend.texi (Common Function Attributes) <nonnull>:
24284 Correct typo.
24285
24286 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
24287
24288 PR rtl-optimization/109179
24289 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
24290 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
24291
24292 2023-03-17 Jakub Jelinek <jakub@redhat.com>
24293
24294 PR target/105554
24295 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
24296 to false.
24297 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
24298 to allocate_struct_function instead of false.
24299 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
24300 nor DECL_RESULT here. Pass true as ABSTRACT_P to
24301 push_struct_function. Call targetm.target_option.relayout_function
24302 after it.
24303 (tree_function_versioning): Formatting fix.
24304
24305 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
24306
24307 * lra-constraints.cc: Include hooks.h.
24308 (combine_reload_insn): New function.
24309 (lra_constraints): Call it.
24310
24311 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24312 kito-cheng <kito.cheng@sifive.com>
24313
24314 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
24315 as legitimate value.
24316 * config/riscv/riscv-vector-builtins.cc
24317 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
24318 (function_expander::use_widen_ternop_insn): Ditto.
24319 * config/riscv/vector.md (@vundefined<mode>): New pattern.
24320 (pred_mul_<optab><mode>_undef_merge): Remove.
24321 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
24322 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
24323 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
24324 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
24325
24326 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24327
24328 PR target/109092
24329 * config/riscv/riscv.md: Fix subreg bug.
24330
24331 2023-03-17 Jakub Jelinek <jakub@redhat.com>
24332
24333 PR middle-end/108685
24334 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
24335 use its loop_father rather than BODY_BB's loop_father.
24336 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
24337 If broken_loop with ordered > collapse and at least one of those
24338 extra loops aren't guaranteed to have at least one iteration, change
24339 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
24340 loop_father to l0_bb's loop_father rather than l1_bb's.
24341
24342 2023-03-17 Jakub Jelinek <jakub@redhat.com>
24343
24344 PR plugins/108634
24345 * gdbhooks.py (TreePrinter.to_string): Wrap
24346 gdb.parse_and_eval('tree_code_type') in a try block, parse
24347 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
24348 raises exception. Update comments for the recent tree_code_type
24349 changes.
24350
24351 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
24352
24353 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
24354 issues. Add more line breaks to example so it doesn't overflow
24355 the margins.
24356
24357 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
24358
24359 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
24360 line breaks in examples.
24361 <malloc>: Fix bad line breaks in running text, also copy-edit
24362 for consistency.
24363 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
24364 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
24365 @gol.
24366 (C++ Dialect Options) <-fcontracts>: Add line break in example.
24367 <-Wctad-maybe-unsupported>: Likewise.
24368 <-Winvalid-constexpr>: Likewise.
24369 (Warning Options) <-Wdangling-pointer>: Likewise.
24370 <-Winterference-size>: Likewise.
24371 <-Wvla-parameter>: Likewise.
24372 (Static Analyzer Options): Fix bad line breaks in running text,
24373 plus add some missing markup.
24374 (Optimize Options) <openacc-privatization>: Fix more bad line
24375 breaks in running text.
24376
24377 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
24378
24379 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
24380 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
24381 (expand_vec_perm_2perm_pblendv): Ditto.
24382
24383 2023-03-16 Martin Liska <mliska@suse.cz>
24384
24385 PR middle-end/106133
24386 * gcc.cc (driver_handle_option): Use x_main_input_basename
24387 if x_dump_base_name is null.
24388 * opts.cc (common_handle_option): Likewise.
24389
24390 2023-03-16 Richard Biener <rguenther@suse.de>
24391
24392 PR tree-optimization/109123
24393 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
24394 Do not emit -Wuse-after-free late.
24395 (pass_waccess::check_call): Always check call pointer uses.
24396
24397 2023-03-16 Richard Biener <rguenther@suse.de>
24398
24399 PR tree-optimization/109141
24400 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
24401 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
24402 out from ...
24403 (renumber_gimple_stmt_uids): ... here and
24404 (renumber_gimple_stmt_uids_in_blocks): ... here.
24405 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
24406 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
24407 to PHIs.
24408 (pass_waccess::check_pointer_uses): Process all PHIs.
24409
24410 2023-03-15 David Malcolm <dmalcolm@redhat.com>
24411
24412 PR analyzer/109097
24413 * diagnostic-format-sarif.cc (class sarif_invocation): New.
24414 (class sarif_ice_notification): New.
24415 (sarif_builder::m_invocation_obj): New field.
24416 (sarif_invocation::add_notification_for_ice): New.
24417 (sarif_invocation::prepare_to_flush): New.
24418 (sarif_ice_notification::sarif_ice_notification): New.
24419 (sarif_builder::sarif_builder): Add m_invocation_obj.
24420 (sarif_builder::end_diagnostic): Special-case DK_ICE and
24421 DK_ICE_NOBT.
24422 (sarif_builder::flush_to_file): Call prepare_to_flush on
24423 m_invocation_obj. Pass the latter to make_top_level_object.
24424 (sarif_builder::make_result_object): Move creation of "locations"
24425 array to...
24426 (sarif_builder::make_locations_arr): ...this new function.
24427 (sarif_builder::make_top_level_object): Add "invocation_obj" param
24428 and pass it to make_run_object.
24429 (sarif_builder::make_run_object): Add "invocation_obj" param and
24430 use it.
24431 (sarif_ice_handler): New callback.
24432 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
24433 * diagnostic.cc (diagnostic_initialize): Initialize new field
24434 "ice_handler_cb".
24435 (diagnostic_action_after_output): If it is set, make one attempt
24436 to call ice_handler_cb.
24437 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
24438
24439 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
24440
24441 * config/i386/i386-expand.cc (expand_vec_perm_blend):
24442 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
24443 and fix V2HImode handling.
24444 (expand_vec_perm_1): Try to emit BLEND instruction
24445 before MOVSS/MOVSD.
24446 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
24447
24448 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
24449
24450 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
24451
24452 2023-03-15 Richard Biener <rguenther@suse.de>
24453
24454 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
24455 Do not diagnose clobbers.
24456
24457 2023-03-15 Richard Biener <rguenther@suse.de>
24458
24459 PR tree-optimization/109139
24460 * tree-ssa-live.cc (remove_unused_locals): Look at the
24461 base address for unused decls on the LHS of .DEFERRED_INIT.
24462
24463 2023-03-15 Xi Ruoyao <xry111@xry111.site>
24464
24465 PR other/109086
24466 * builtins.cc (inline_string_cmp): Force the character
24467 difference into "result" pseudo-register, instead of reassign
24468 the pseudo-register.
24469
24470 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24471
24472 * config.gcc: Add thead.o to RISC-V extra_objs.
24473 * config/riscv/peephole.md: Add mempair peephole passes.
24474 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
24475 prototype.
24476 (th_mempair_operands_p): Likewise.
24477 (th_mempair_order_operands): Likewise.
24478 (th_mempair_prepare_save_restore_operands): Likewise.
24479 (th_mempair_save_restore_regs): Likewise.
24480 (th_mempair_output_move): Likewise.
24481 * config/riscv/riscv.cc (riscv_save_reg): Move code.
24482 (riscv_restore_reg): Move code.
24483 (riscv_for_each_saved_reg): Add code to emit mempair insns.
24484 * config/riscv/t-riscv: Add thead.cc.
24485 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
24486 New insn.
24487 (*th_mempair_store_<GPR:mode>2): Likewise.
24488 (*th_mempair_load_extendsidi2): Likewise.
24489 (*th_mempair_load_zero_extendsidi2): Likewise.
24490 * config/riscv/thead.cc: New file.
24491
24492 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24493
24494 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
24495 New constraint "th_f_fmv".
24496 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
24497 "th_r_fmv".
24498 * config/riscv/riscv.cc (riscv_split_doubleword_move):
24499 Add split code for XTheadFmv.
24500 (riscv_secondary_memory_needed): XTheadFmv does not need
24501 secondary memory.
24502 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
24503 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
24504 movdf_hardfloat_rv32.
24505 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
24506 (th_fmv_x_w): New INSN.
24507 (th_fmv_x_hw): New INSN.
24508
24509 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24510
24511 * config/riscv/riscv.md (maddhisi4): New expand.
24512 (msubhisi4): New expand.
24513 * config/riscv/thead.md (*th_mula<mode>): New pattern.
24514 (*th_mulawsi): New pattern.
24515 (*th_mulawsi2): New pattern.
24516 (*th_maddhisi4): New pattern.
24517 (*th_sextw_maddhisi4): New pattern.
24518 (*th_muls<mode>): New pattern.
24519 (*th_mulswsi): New pattern.
24520 (*th_mulswsi2): New pattern.
24521 (*th_msubhisi4): New pattern.
24522 (*th_sextw_msubhisi4): New pattern.
24523
24524 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24525
24526 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
24527 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
24528 Add prototype.
24529 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
24530 XTheadCondMov.
24531 (riscv_expand_conditional_move): New function.
24532 (riscv_expand_conditional_move_onesided): New function.
24533 * config/riscv/riscv.md: Add support for XTheadCondMov.
24534 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
24535 support for XTheadCondMov.
24536 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
24537
24538 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24539
24540 * config/riscv/bitmanip.md (clzdi2): New expand.
24541 (clzsi2): New expand.
24542 (ctz<mode>2): New expand.
24543 (popcount<mode>2): New expand.
24544 (<bitmanip_optab>si2): Rename INSN.
24545 (*<bitmanip_optab>si2): Hide INSN name.
24546 (<bitmanip_optab>di2): Rename INSN.
24547 (*<bitmanip_optab>di2): Hide INSN name.
24548 (rotrsi3): Remove INSN.
24549 (rotr<mode>3): Add expand.
24550 (*rotrsi3): New INSN.
24551 (rotrdi3): Rename INSN.
24552 (*rotrdi3): Hide INSN name.
24553 (rotrsi3_sext): Rename INSN.
24554 (*rotrsi3_sext): Hide INSN name.
24555 (bswap<mode>2): Remove INSN.
24556 (bswapdi2): Add expand.
24557 (bswapsi2): Add expand.
24558 (*bswap<mode>2): Hide INSN name.
24559 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
24560 extraction.
24561 * config/riscv/riscv.md (extv<mode>): New expand.
24562 (extzv<mode>): New expand.
24563 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
24564 (*th_ext<mode>): New INSN.
24565 (*th_extu<mode>): New INSN.
24566 (*th_clz<mode>2): New INSN.
24567 (*th_rev<mode>2): New INSN.
24568
24569 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24570
24571 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
24572 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
24573
24574 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24575
24576 * config/riscv/riscv.md: Include thead.md
24577 * config/riscv/thead.md: New file.
24578
24579 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24580
24581 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
24582
24583 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24584
24585 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
24586 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
24587 (MASK_XTHEADBB): New.
24588 (MASK_XTHEADBS): New.
24589 (MASK_XTHEADCMO): New.
24590 (MASK_XTHEADCONDMOV): New.
24591 (MASK_XTHEADFMEMIDX): New.
24592 (MASK_XTHEADFMV): New.
24593 (MASK_XTHEADINT): New.
24594 (MASK_XTHEADMAC): New.
24595 (MASK_XTHEADMEMIDX): New.
24596 (MASK_XTHEADMEMPAIR): New.
24597 (MASK_XTHEADSYNC): New.
24598 (TARGET_XTHEADBA): New.
24599 (TARGET_XTHEADBB): New.
24600 (TARGET_XTHEADBS): New.
24601 (TARGET_XTHEADCMO): New.
24602 (TARGET_XTHEADCONDMOV): New.
24603 (TARGET_XTHEADFMEMIDX): New.
24604 (TARGET_XTHEADFMV): New.
24605 (TARGET_XTHEADINT): New.
24606 (TARGET_XTHEADMAC): New.
24607 (TARGET_XTHEADMEMIDX): New.
24608 (TARGET_XTHEADMEMPAIR): new.
24609 (TARGET_XTHEADSYNC): New.
24610 * config/riscv/riscv.opt: Add riscv_xthead_subext.
24611
24612 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
24613
24614 PR target/109117
24615 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
24616 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
24617 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
24618
24619 2023-03-14 Jakub Jelinek <jakub@redhat.com>
24620
24621 PR target/109109
24622 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
24623 when lo is equal to dhi and hi is a MEM which uses dlo register.
24624
24625 2023-03-14 Martin Jambor <mjambor@suse.cz>
24626
24627 PR ipa/107925
24628 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
24629 global0 instead of zeroing when it does not have as many counts as
24630 it should.
24631
24632 2023-03-14 Martin Jambor <mjambor@suse.cz>
24633
24634 PR ipa/107925
24635 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
24636 ipa count, remove assert, lenient_count_portion_handling, dump
24637 also orig_node_count.
24638
24639 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
24640
24641 * config/i386/i386-expand.cc (expand_vec_perm_movs):
24642 Handle V2SImode for TARGET_MMX_WITH_SSE.
24643 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
24644 using V2FI mode iterator to handle both V2SI and V2SF modes.
24645
24646 2023-03-14 Sam James <sam@gentoo.org>
24647
24648 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
24649 including <sstream> earlier.
24650 * system.h: Add INCLUDE_SSTREAM.
24651
24652 2023-03-14 Richard Biener <rguenther@suse.de>
24653
24654 * tree-ssa-live.cc (remove_unused_locals): Do not treat
24655 the .DEFERRED_INIT of a variable as use, instead remove
24656 that if it is the only use.
24657
24658 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
24659
24660 PR rtl-optimization/107762
24661 * expr.cc (emit_group_store): Revert latest change.
24662
24663 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
24664
24665 PR tree-optimization/109005
24666 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
24667 aggregate type check.
24668
24669 2023-03-14 Jakub Jelinek <jakub@redhat.com>
24670
24671 PR tree-optimization/109115
24672 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
24673 r.upper_bound () on r.undefined_p () range.
24674
24675 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
24676
24677 PR tree-optimization/106896
24678 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
24679 implementatoin with probability_in; avoid some asserts.
24680
24681 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
24682
24683 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
24684
24685 2023-03-13 Sean Bright <sean@seanbright.com>
24686
24687 * doc/invoke.texi (Warning Options): Remove errant 'See'
24688 before @xref.
24689
24690 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24691
24692 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
24693 REG_OK_FOR_BASE_P): Remove.
24694
24695 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24696
24697 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
24698 (=vd,vd,vr,vr): Ditto.
24699 * config/riscv/vector.md: Ditto.
24700
24701 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24702
24703 * config/riscv/riscv-vector-builtins.cc
24704 (function_expander::use_compare_insn): Add operand predicate check.
24705
24706 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24707
24708 * config/riscv/vector.md: Fine tune RA constraints.
24709
24710 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
24711
24712 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
24713 hsaco assemble/link.
24714
24715 2023-03-13 Richard Biener <rguenther@suse.de>
24716
24717 PR tree-optimization/109046
24718 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
24719 piecewise complex loads.
24720
24721 2023-03-12 Jakub Jelinek <jakub@redhat.com>
24722
24723 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
24724 (aarch64_bf16_ptr_type_node): Adjust comment.
24725 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
24726 bfloat16_type_node rather than aarch64_bf16_type_node.
24727 (aarch64_libgcc_floating_mode_supported_p,
24728 aarch64_scalar_mode_supported_p): Also support BFmode.
24729 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
24730 (aarch64_invalid_binary_op): Remove BFmode related rejections.
24731 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
24732 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
24733 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
24734 aarch64_bf16_type_node.
24735 (aarch64_init_simd_builtin_types): Likewise.
24736 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
24737 which is created in tree.cc already.
24738 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
24739
24740 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
24741
24742 PR middle-end/109031
24743 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
24744 ensure that the type of x is as wide or wider than the type of a.
24745
24746 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24747
24748 PR target/108583
24749 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
24750 (*bitmask_shift_plus<mode>): New.
24751 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
24752 (@aarch64_bitmask_udiv<mode>3): Remove.
24753 * config/aarch64/aarch64.cc
24754 (aarch64_vectorize_can_special_div_by_constant,
24755 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
24756 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
24757 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
24758
24759 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24760
24761 PR target/108583
24762 * target.def (preferred_div_as_shifts_over_mult): New.
24763 * doc/tm.texi.in: Document it.
24764 * doc/tm.texi: Regenerate.
24765 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
24766 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
24767 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
24768
24769 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24770 Richard Sandiford <richard.sandiford@arm.com>
24771
24772 PR target/108583
24773 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
24774 single use.
24775
24776 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24777 Andrew MacLeod <amacleod@redhat.com>
24778
24779 PR target/108583
24780 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
24781 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
24782 Use it.
24783 (gimple_range_op_handler::maybe_non_standard): New.
24784 * range-op.cc (class operator_widen_plus_signed,
24785 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
24786 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
24787 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
24788 operator_widen_mult_unsigned::wi_fold,
24789 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
24790 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
24791 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
24792 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
24793
24794 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24795
24796 PR target/108583
24797 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
24798 * doc/tm.texi.in: Likewise.
24799 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
24800 * expmed.cc (expand_divmod): Likewise.
24801 * expmed.h (expand_divmod): Likewise.
24802 * expr.cc (force_operand, expand_expr_divmod): Likewise.
24803 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
24804 * target.def (can_special_div_by_const): Remove.
24805 * target.h: Remove tree-core.h include
24806 * targhooks.cc (default_can_special_div_by_const): Remove.
24807 * targhooks.h (default_can_special_div_by_const): Remove.
24808 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
24809 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
24810 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
24811
24812 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
24813
24814 * doc/install.texi2html: Fix issue number typo in comment.
24815
24816 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
24817
24818 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
24819 bool.
24820
24821 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
24822
24823 * doc/invoke.texi (Optimize Options): Add markup to
24824 description of asan-kernel-mem-intrinsic-prefix, and clarify
24825 wording slightly.
24826
24827 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
24828
24829 * doc/extend.texi (Named Address Spaces): Drop a redundant link
24830 to AVR-LibC.
24831
24832 2023-03-11 Jeff Law <jlaw@ventanamicro>
24833
24834 PR web/88860
24835 * doc/extend.texi: Clarify Attribute Syntax a bit.
24836
24837 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
24838
24839 * doc/install.texi (Prerequisites): Suggest using newer versions
24840 of Texinfo.
24841 (Final install): Clean up and modernize discussion of how to
24842 build or obtain the GCC manuals.
24843 * doc/install.texi2html: Update comment to point to the PR instead
24844 of "makeinfo 4.7 brokenness" (it's not specific to that version).
24845
24846 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24847
24848 PR target/107703
24849 * optabs.cc (expand_fix): For conversions from BFmode to integral,
24850 use shifts to convert it to SFmode first and then convert SFmode
24851 to integral.
24852
24853 2023-03-10 Andrew Pinski <apinski@marvell.com>
24854
24855 * config/aarch64/aarch64.md: Add a new define_split
24856 to help combine.
24857
24858 2023-03-10 Richard Biener <rguenther@suse.de>
24859
24860 * tree-ssa-structalias.cc (solve_graph): Immediately
24861 iterate self-cycles.
24862
24863 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24864
24865 PR tree-optimization/109008
24866 * range-op-float.cc (float_widen_lhs_range): If not
24867 -frounding-math and not IBM double double format, extend lhs
24868 range just by 0.5ulp rather than 1ulp in each direction.
24869
24870 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24871
24872 PR target/107998
24873 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
24874 $tmake_file.
24875 * config/i386/t-cygwin-w64: Remove.
24876
24877 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24878
24879 PR plugins/108634
24880 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
24881 C++14, don't declare as extern const arrays.
24882 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
24883 static constexpr member arrays for C++11 or C++14.
24884 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
24885 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
24886 (TREE_CODE_LENGTH): For C++11 or C++14 use
24887 tree_code_length_tmpl <0>::tree_code_length instead of
24888 tree_code_length.
24889 * tree.cc (tree_code_type, tree_code_length): Remove.
24890
24891 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24892
24893 PR other/108464
24894 * common.opt (fcanon-prefix-map): New option.
24895 * opts.cc: Include file-prefix-map.h.
24896 (flag_canon_prefix_map): New variable.
24897 (common_handle_option): Handle OPT_fcanon_prefix_map.
24898 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
24899 * file-prefix-map.h (flag_canon_prefix_map): Declare.
24900 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
24901 member.
24902 (add_prefix_map): Initialize canonicalize member from
24903 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
24904 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
24905 use lrealpath result only for map->canonicalize map entries.
24906 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
24907 * opts-global.cc (handle_common_deferred_options): Clear
24908 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
24909 * doc/invoke.texi (-fcanon-prefix-map): Document.
24910 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
24911 see also for -fcanon-prefix-map.
24912 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
24913
24914 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24915
24916 PR c/108079
24917 * cgraphunit.cc (check_global_declaration): Don't warn for unused
24918 variables which have OPT_Wunused_variable warning suppressed.
24919
24920 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24921
24922 PR tree-optimization/109008
24923 * range-op-float.cc (float_widen_lhs_range): If lb is
24924 minimum representable finite number or ub is maximum
24925 representable finite number, instead of widening it to
24926 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
24927 Temporarily clear flag_finite_math_only when canonicalizing
24928 the widened range.
24929
24930 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24931
24932 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
24933 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
24934 (gimple_fold_builtin): Ditto.
24935 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
24936 (class vleff): Ditto.
24937 (BASE): Ditto.
24938 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24939 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
24940 (vleff): Ditto.
24941 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
24942 (struct fault_load_def): Ditto.
24943 (SHAPE): Ditto.
24944 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24945 * config/riscv/riscv-vector-builtins.cc
24946 (rvv_arg_type_info::get_tree_type): Add size_ptr.
24947 (gimple_folder::gimple_folder): New class.
24948 (gimple_folder::fold): Ditto.
24949 (gimple_fold_builtin): New function.
24950 (get_read_vl_instance): Ditto.
24951 (get_read_vl_decl): Ditto.
24952 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
24953 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
24954 (get_read_vl_instance): New function.
24955 (get_read_vl_decl): Ditto.
24956 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
24957 (read_vl_insn_p): Ditto.
24958 (available_occurrence_p): Ditto.
24959 (backward_propagate_worthwhile_p): Ditto.
24960 (gen_vsetvl_pat): Adapt for vleff support.
24961 (get_forward_read_vl_insn): New function.
24962 (get_backward_fault_first_load_insn): Ditto.
24963 (source_equal_p): Adapt for vleff support.
24964 (first_ratio_invalid_for_second_sew_p): Remove.
24965 (first_ratio_invalid_for_second_lmul_p): Ditto.
24966 (first_lmul_less_than_second_lmul_p): Ditto.
24967 (first_ratio_less_than_second_ratio_p): Ditto.
24968 (support_relaxed_compatible_p): New function.
24969 (vector_insn_info::operator>): Remove.
24970 (vector_insn_info::operator>=): Refine.
24971 (vector_insn_info::parse_insn): Adapt for vleff support.
24972 (vector_insn_info::compatible_p): Ditto.
24973 (vector_insn_info::update_fault_first_load_avl): New function.
24974 (pass_vsetvl::transfer_after): Adapt for vleff support.
24975 (pass_vsetvl::demand_fusion): Ditto.
24976 (pass_vsetvl::cleanup_insns): Ditto.
24977 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
24978 redundant condtions.
24979 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
24980 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
24981 * config/riscv/riscv.md: Adapt for vleff support.
24982 * config/riscv/t-riscv: Ditto.
24983 * config/riscv/vector-iterators.md: New iterator.
24984 * config/riscv/vector.md (read_vlsi): New pattern.
24985 (read_vldi_zero_extend): Ditto.
24986 (@pred_fault_load<mode>): Ditto.
24987
24988 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24989
24990 * config/riscv/riscv-vector-builtins.cc
24991 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
24992 (function_expander::use_widen_ternop_insn): Ditto.
24993 * optabs.cc (maybe_gen_insn): Extend nops handling.
24994
24995 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24996
24997 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
24998 patterns according to RVV ISA.
24999 * config/riscv/vector-iterators.md: New iterators.
25000 * config/riscv/vector.md
25001 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
25002 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
25003 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
25004 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
25005 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
25006 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
25007 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
25008 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
25009 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
25010 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
25011 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
25012 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
25013 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
25014 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
25015
25016 2023-03-10 Michael Collison <collison@rivosinc.com>
25017
25018 * tree-vect-loop-manip.cc (vect_do_peeling): Use
25019 result of constant_lower_bound instead of vf for the lower
25020 bound of the epilog loop trip count.
25021
25022 2023-03-09 Tamar Christina <tamar.christina@arm.com>
25023
25024 * passes.cc (emergency_dump_function): Finish graph generation.
25025
25026 2023-03-09 Tamar Christina <tamar.christina@arm.com>
25027
25028 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
25029 and bottom bit only.
25030
25031 2023-03-09 Andrew Pinski <apinski@marvell.com>
25032
25033 PR tree-optimization/108980
25034 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
25035 Reorgnize the call to warning for not strict flexible arrays
25036 to be before the check of warned.
25037
25038 2023-03-09 Jason Merrill <jason@redhat.com>
25039
25040 * doc/extend.texi: Comment out __is_deducible docs.
25041
25042 2023-03-09 Jason Merrill <jason@redhat.com>
25043
25044 PR c++/105841
25045 * doc/extend.texi (Type Traits):: Document __is_deducible.
25046
25047 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
25048
25049 PR driver/108865
25050 * config.host: add object for x86_64-*-mingw*.
25051 * config/i386/sym-mingw32.cc: dummy file to attach
25052 symbol.
25053 * config/i386/utf8-mingw32.rc: windres resource file.
25054 * config/i386/winnt-utf8.manifest: XML manifest to
25055 enable UTF-8.
25056 * config/i386/x-mingw32: reference to x-mingw32-utf8.
25057 * config/i386/x-mingw32-utf8: Makefile fragment to
25058 embed UTF-8 manifest.
25059
25060 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
25061
25062 * lra-constraints.cc (process_alt_operands): Use operand modes for
25063 clobbered regs instead of the biggest access mode.
25064
25065 2023-03-09 Richard Biener <rguenther@suse.de>
25066
25067 PR middle-end/108995
25068 * fold-const.cc (extract_muldiv_1): Avoid folding
25069 (CST * b) / CST2 when sanitizing overflow and we rely on
25070 overflow being undefined.
25071
25072 2023-03-09 Jakub Jelinek <jakub@redhat.com>
25073 Richard Biener <rguenther@suse.de>
25074
25075 PR tree-optimization/109008
25076 * range-op-float.cc (float_widen_lhs_range): New function.
25077 (foperator_plus::op1_range, foperator_minus::op1_range,
25078 foperator_minus::op2_range, foperator_mult::op1_range,
25079 foperator_div::op1_range, foperator_div::op2_range): Use it.
25080
25081 2023-03-07 Jonathan Grant <jg@jguk.org>
25082
25083 PR sanitizer/81649
25084 * doc/invoke.texi (Instrumentation Options): Clarify
25085 LeakSanitizer behavior.
25086
25087 2023-03-07 Benson Muite <benson_muite@emailplus.org>
25088
25089 * doc/install.texi (Prerequisites): Add link to gmplib.org.
25090
25091 2023-03-07 Pan Li <pan2.li@intel.com>
25092 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25093
25094 PR target/108185
25095 PR target/108654
25096 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
25097 modes.
25098 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
25099 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
25100 * genmodes.cc (adj_precision): New.
25101 (ADJUST_PRECISION): New.
25102 (emit_mode_adjustments): Handle ADJUST_PRECISION.
25103
25104 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
25105
25106 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
25107
25108 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
25109
25110 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
25111 {s|u}{max|min} in QI, HI and DI modes.
25112 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
25113 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
25114 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
25115 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
25116 saved in SGPRs.
25117
25118 2023-03-06 Richard Biener <rguenther@suse.de>
25119
25120 PR tree-optimization/109025
25121 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
25122 the inner LC PHI use is the inner loop PHI latch definition
25123 before classifying an outer PHI as double reduction.
25124
25125 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
25126
25127 PR target/108429
25128 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
25129 generic.
25130 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
25131 (X86_TUNE_USE_SCATTER): Likewise.
25132
25133 2023-03-06 Xi Ruoyao <xry111@xry111.site>
25134
25135 PR target/109000
25136 * config/loongarch/loongarch.h (FP_RETURN): Use
25137 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
25138 (UNITS_PER_FP_ARG): Likewise.
25139
25140 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25141
25142 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
25143 (pass_vsetvl::backward_demand_fusion): Ditto.
25144
25145 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25146 SiYu Wu <siyu@isrc.iscas.ac.cn>
25147
25148 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
25149 instructions.
25150 (riscv_sm3p1_<mode>): New.
25151 (riscv_sm4ed_<mode>): New.
25152 (riscv_sm4ks_<mode>): New.
25153 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
25154 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
25155 ZKSH's built-in functions.
25156
25157 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25158 SiYu Wu <siyu@isrc.iscas.ac.cn>
25159
25160 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
25161 (riscv_sha256sig1_<mode>): New.
25162 (riscv_sha256sum0_<mode>): New.
25163 (riscv_sha256sum1_<mode>): New.
25164 (riscv_sha512sig0h): New.
25165 (riscv_sha512sig0l): New.
25166 (riscv_sha512sig1h): New.
25167 (riscv_sha512sig1l): New.
25168 (riscv_sha512sum0r): New.
25169 (riscv_sha512sum1r): New.
25170 (riscv_sha512sig0): New.
25171 (riscv_sha512sig1): New.
25172 (riscv_sha512sum0): New.
25173 (riscv_sha512sum1): New.
25174 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
25175 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
25176 built-in functions.
25177 (DIRECT_BUILTIN): Add new.
25178
25179 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25180 SiYu Wu <siyu@isrc.iscas.ac.cn>
25181
25182 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
25183 (DsA): New.
25184 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
25185 (riscv_aes32dsmi): New.
25186 (riscv_aes64ds): New.
25187 (riscv_aes64dsm): New.
25188 (riscv_aes64im): New.
25189 (riscv_aes64ks1i): New.
25190 (riscv_aes64ks2): New.
25191 (riscv_aes32esi): New.
25192 (riscv_aes32esmi): New.
25193 (riscv_aes64es): New.
25194 (riscv_aes64esm): New.
25195 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
25196 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
25197 ZKNE's built-in functions.
25198
25199 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25200 SiYu Wu <siyu@isrc.iscas.ac.cn>
25201
25202 * config/riscv/bitmanip.md: Add ZBKB's instructions.
25203 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
25204 * config/riscv/riscv.md: Add new type for crypto instructions.
25205 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
25206 description file.
25207 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
25208 extension's built-in function file.
25209
25210 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25211 SiYu Wu <siyu@isrc.iscas.ac.cn>
25212
25213 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
25214 (RISCV_FTYPE_NAME3): New.
25215 (RISCV_ATYPE_QI): New.
25216 (RISCV_ATYPE_HI): New.
25217 (RISCV_FTYPE_ATYPES2): New.
25218 (RISCV_FTYPE_ATYPES3): New.
25219 * config/riscv/riscv-ftypes.def (2): New.
25220 (3): New.
25221
25222 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
25223
25224 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
25225 use exact_log2().
25226
25227 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25228 kito-cheng <kito.cheng@sifive.com>
25229
25230 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
25231 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
25232 (riscv_register_pragmas): Add builtin function check call.
25233 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
25234 (check_builtin_call): New function.
25235 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
25236 (class vreinterpret): Ditto.
25237 (class vlmul_ext): Ditto.
25238 (class vlmul_trunc): Ditto.
25239 (class vset): Ditto.
25240 (class vget): Ditto.
25241 (BASE): Ditto.
25242 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25243 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
25244 (vluxei16): Ditto.
25245 (vluxei32): Ditto.
25246 (vluxei64): Ditto.
25247 (vloxei8): Ditto.
25248 (vloxei16): Ditto.
25249 (vloxei32): Ditto.
25250 (vloxei64): Ditto.
25251 (vsuxei8): Ditto.
25252 (vsuxei16): Ditto.
25253 (vsuxei32): Ditto.
25254 (vsuxei64): Ditto.
25255 (vsoxei8): Ditto.
25256 (vsoxei16): Ditto.
25257 (vsoxei32): Ditto.
25258 (vsoxei64): Ditto.
25259 (vundefined): Add new intrinsic.
25260 (vreinterpret): Ditto.
25261 (vlmul_ext): Ditto.
25262 (vlmul_trunc): Ditto.
25263 (vset): Ditto.
25264 (vget): Ditto.
25265 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
25266 (struct narrow_alu_def): Ditto.
25267 (struct reduc_alu_def): Ditto.
25268 (struct vundefined_def): Ditto.
25269 (struct misc_def): Ditto.
25270 (struct vset_def): Ditto.
25271 (struct vget_def): Ditto.
25272 (SHAPE): Ditto.
25273 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25274 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
25275 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
25276 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
25277 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
25278 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
25279 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
25280 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
25281 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
25282 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
25283 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
25284 (DEF_RVV_LMUL1_OPS): Ditto.
25285 (DEF_RVV_LMUL2_OPS): Ditto.
25286 (DEF_RVV_LMUL4_OPS): Ditto.
25287 (vint16mf4_t): Ditto.
25288 (vint16mf2_t): Ditto.
25289 (vint16m1_t): Ditto.
25290 (vint16m2_t): Ditto.
25291 (vint16m4_t): Ditto.
25292 (vint16m8_t): Ditto.
25293 (vint32mf2_t): Ditto.
25294 (vint32m1_t): Ditto.
25295 (vint32m2_t): Ditto.
25296 (vint32m4_t): Ditto.
25297 (vint32m8_t): Ditto.
25298 (vint64m1_t): Ditto.
25299 (vint64m2_t): Ditto.
25300 (vint64m4_t): Ditto.
25301 (vint64m8_t): Ditto.
25302 (vuint16mf4_t): Ditto.
25303 (vuint16mf2_t): Ditto.
25304 (vuint16m1_t): Ditto.
25305 (vuint16m2_t): Ditto.
25306 (vuint16m4_t): Ditto.
25307 (vuint16m8_t): Ditto.
25308 (vuint32mf2_t): Ditto.
25309 (vuint32m1_t): Ditto.
25310 (vuint32m2_t): Ditto.
25311 (vuint32m4_t): Ditto.
25312 (vuint32m8_t): Ditto.
25313 (vuint64m1_t): Ditto.
25314 (vuint64m2_t): Ditto.
25315 (vuint64m4_t): Ditto.
25316 (vuint64m8_t): Ditto.
25317 (vint8mf4_t): Ditto.
25318 (vint8mf2_t): Ditto.
25319 (vint8m1_t): Ditto.
25320 (vint8m2_t): Ditto.
25321 (vint8m4_t): Ditto.
25322 (vint8m8_t): Ditto.
25323 (vuint8mf4_t): Ditto.
25324 (vuint8mf2_t): Ditto.
25325 (vuint8m1_t): Ditto.
25326 (vuint8m2_t): Ditto.
25327 (vuint8m4_t): Ditto.
25328 (vuint8m8_t): Ditto.
25329 (vint8mf8_t): Ditto.
25330 (vuint8mf8_t): Ditto.
25331 (vfloat32mf2_t): Ditto.
25332 (vfloat32m1_t): Ditto.
25333 (vfloat32m2_t): Ditto.
25334 (vfloat32m4_t): Ditto.
25335 (vfloat64m1_t): Ditto.
25336 (vfloat64m2_t): Ditto.
25337 (vfloat64m4_t): Ditto.
25338 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
25339 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
25340 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
25341 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
25342 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
25343 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
25344 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
25345 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
25346 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
25347 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
25348 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
25349 (DEF_RVV_LMUL1_OPS): Ditto.
25350 (DEF_RVV_LMUL2_OPS): Ditto.
25351 (DEF_RVV_LMUL4_OPS): Ditto.
25352 (DEF_RVV_TYPE_INDEX): Ditto.
25353 (required_extensions_p): Adapt for new intrinsic support/
25354 (get_required_extensions): New function.
25355 (check_required_extensions): Ditto.
25356 (unsigned_base_type_p): Remove.
25357 (rvv_arg_type_info::get_scalar_ptr_type): New function.
25358 (get_mode_for_bitsize): Remove.
25359 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
25360 (rvv_arg_type_info::get_base_vector_type): Ditto.
25361 (rvv_arg_type_info::get_function_type_index): Ditto.
25362 (DEF_RVV_BASE_TYPE): New def.
25363 (function_builder::apply_predication): New class.
25364 (function_expander::mask_mode): Ditto.
25365 (function_checker::function_checker): Ditto.
25366 (function_checker::report_non_ice): Ditto.
25367 (function_checker::report_out_of_range): Ditto.
25368 (function_checker::require_immediate): Ditto.
25369 (function_checker::require_immediate_range): Ditto.
25370 (function_checker::check): Ditto.
25371 (check_builtin_call): Ditto.
25372 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
25373 (DEF_RVV_BASE_TYPE): Ditto.
25374 (DEF_RVV_TYPE_INDEX): Ditto.
25375 (vbool64_t): Ditto.
25376 (vbool32_t): Ditto.
25377 (vbool16_t): Ditto.
25378 (vbool8_t): Ditto.
25379 (vbool4_t): Ditto.
25380 (vbool2_t): Ditto.
25381 (vbool1_t): Ditto.
25382 (vuint8mf8_t): Ditto.
25383 (vuint8mf4_t): Ditto.
25384 (vuint8mf2_t): Ditto.
25385 (vuint8m1_t): Ditto.
25386 (vuint8m2_t): Ditto.
25387 (vint8m4_t): Ditto.
25388 (vuint8m4_t): Ditto.
25389 (vint8m8_t): Ditto.
25390 (vuint8m8_t): Ditto.
25391 (vint16mf4_t): Ditto.
25392 (vuint16mf2_t): Ditto.
25393 (vuint16m1_t): Ditto.
25394 (vuint16m2_t): Ditto.
25395 (vuint16m4_t): Ditto.
25396 (vuint16m8_t): Ditto.
25397 (vint32mf2_t): Ditto.
25398 (vuint32m1_t): Ditto.
25399 (vuint32m2_t): Ditto.
25400 (vuint32m4_t): Ditto.
25401 (vuint32m8_t): Ditto.
25402 (vuint64m1_t): Ditto.
25403 (vuint64m2_t): Ditto.
25404 (vuint64m4_t): Ditto.
25405 (vuint64m8_t): Ditto.
25406 (vfloat32mf2_t): Ditto.
25407 (vfloat32m1_t): Ditto.
25408 (vfloat32m2_t): Ditto.
25409 (vfloat32m4_t): Ditto.
25410 (vfloat32m8_t): Ditto.
25411 (vfloat64m1_t): Ditto.
25412 (vfloat64m4_t): Ditto.
25413 (vector): Move it def.
25414 (scalar): Ditto.
25415 (mask): Ditto.
25416 (signed_vector): Ditto.
25417 (unsigned_vector): Ditto.
25418 (unsigned_scalar): Ditto.
25419 (vector_ptr): Ditto.
25420 (scalar_ptr): Ditto.
25421 (scalar_const_ptr): Ditto.
25422 (void): Ditto.
25423 (size): Ditto.
25424 (ptrdiff): Ditto.
25425 (unsigned_long): Ditto.
25426 (long): Ditto.
25427 (eew8_index): Ditto.
25428 (eew16_index): Ditto.
25429 (eew32_index): Ditto.
25430 (eew64_index): Ditto.
25431 (shift_vector): Ditto.
25432 (double_trunc_vector): Ditto.
25433 (quad_trunc_vector): Ditto.
25434 (oct_trunc_vector): Ditto.
25435 (double_trunc_scalar): Ditto.
25436 (double_trunc_signed_vector): Ditto.
25437 (double_trunc_unsigned_vector): Ditto.
25438 (double_trunc_unsigned_scalar): Ditto.
25439 (double_trunc_float_vector): Ditto.
25440 (float_vector): Ditto.
25441 (lmul1_vector): Ditto.
25442 (widen_lmul1_vector): Ditto.
25443 (eew8_interpret): Ditto.
25444 (eew16_interpret): Ditto.
25445 (eew32_interpret): Ditto.
25446 (eew64_interpret): Ditto.
25447 (vlmul_ext_x2): Ditto.
25448 (vlmul_ext_x4): Ditto.
25449 (vlmul_ext_x8): Ditto.
25450 (vlmul_ext_x16): Ditto.
25451 (vlmul_ext_x32): Ditto.
25452 (vlmul_ext_x64): Ditto.
25453 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
25454 (struct function_type_info): New function.
25455 (struct rvv_arg_type_info): Ditto.
25456 (class function_checker): New class.
25457 (rvv_arg_type_info::get_scalar_type): New function.
25458 (rvv_arg_type_info::get_vector_type): Ditto.
25459 (function_expander::ret_mode): New function.
25460 (function_checker::arg_mode): Ditto.
25461 (function_checker::ret_mode): Ditto.
25462 * config/riscv/t-riscv: Add generator.
25463 * config/riscv/vector-iterators.md: New iterators.
25464 * config/riscv/vector.md (vundefined<mode>): New pattern.
25465 (@vundefined<mode>): Ditto.
25466 (@vreinterpret<mode>): Ditto.
25467 (@vlmul_extx2<mode>): Ditto.
25468 (@vlmul_extx4<mode>): Ditto.
25469 (@vlmul_extx8<mode>): Ditto.
25470 (@vlmul_extx16<mode>): Ditto.
25471 (@vlmul_extx32<mode>): Ditto.
25472 (@vlmul_extx64<mode>): Ditto.
25473 (*vlmul_extx2<mode>): Ditto.
25474 (*vlmul_extx4<mode>): Ditto.
25475 (*vlmul_extx8<mode>): Ditto.
25476 (*vlmul_extx16<mode>): Ditto.
25477 (*vlmul_extx32<mode>): Ditto.
25478 (*vlmul_extx64<mode>): Ditto.
25479 * config/riscv/genrvv-type-indexer.cc: New file.
25480
25481 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25482
25483 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
25484 (slide1_sew64_helper): New function.
25485 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
25486 (get_unknown_min_value): Ditto.
25487 (force_vector_length_operand): Ditto.
25488 (gen_no_side_effects_vsetvl_rtx): Ditto.
25489 (get_vl_x2_rtx): Ditto.
25490 (slide1_sew64_helper): Ditto.
25491 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
25492 (class vrgather): Ditto.
25493 (class vrgatherei16): Ditto.
25494 (class vcompress): Ditto.
25495 (BASE): Ditto.
25496 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25497 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
25498 (vslidedown): Ditto.
25499 (vslide1up): Ditto.
25500 (vslide1down): Ditto.
25501 (vfslide1up): Ditto.
25502 (vfslide1down): Ditto.
25503 (vrgather): Ditto.
25504 (vrgatherei16): Ditto.
25505 (vcompress): Ditto.
25506 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
25507 (vint8mf8_t): Ditto.
25508 (vint8mf4_t): Ditto.
25509 (vint8mf2_t): Ditto.
25510 (vint8m1_t): Ditto.
25511 (vint8m2_t): Ditto.
25512 (vint8m4_t): Ditto.
25513 (vint16mf4_t): Ditto.
25514 (vint16mf2_t): Ditto.
25515 (vint16m1_t): Ditto.
25516 (vint16m2_t): Ditto.
25517 (vint16m4_t): Ditto.
25518 (vint16m8_t): Ditto.
25519 (vint32mf2_t): Ditto.
25520 (vint32m1_t): Ditto.
25521 (vint32m2_t): Ditto.
25522 (vint32m4_t): Ditto.
25523 (vint32m8_t): Ditto.
25524 (vint64m1_t): Ditto.
25525 (vint64m2_t): Ditto.
25526 (vint64m4_t): Ditto.
25527 (vint64m8_t): Ditto.
25528 (vuint8mf8_t): Ditto.
25529 (vuint8mf4_t): Ditto.
25530 (vuint8mf2_t): Ditto.
25531 (vuint8m1_t): Ditto.
25532 (vuint8m2_t): Ditto.
25533 (vuint8m4_t): Ditto.
25534 (vuint16mf4_t): Ditto.
25535 (vuint16mf2_t): Ditto.
25536 (vuint16m1_t): Ditto.
25537 (vuint16m2_t): Ditto.
25538 (vuint16m4_t): Ditto.
25539 (vuint16m8_t): Ditto.
25540 (vuint32mf2_t): Ditto.
25541 (vuint32m1_t): Ditto.
25542 (vuint32m2_t): Ditto.
25543 (vuint32m4_t): Ditto.
25544 (vuint32m8_t): Ditto.
25545 (vuint64m1_t): Ditto.
25546 (vuint64m2_t): Ditto.
25547 (vuint64m4_t): Ditto.
25548 (vuint64m8_t): Ditto.
25549 (vfloat32mf2_t): Ditto.
25550 (vfloat32m1_t): Ditto.
25551 (vfloat32m2_t): Ditto.
25552 (vfloat32m4_t): Ditto.
25553 (vfloat32m8_t): Ditto.
25554 (vfloat64m1_t): Ditto.
25555 (vfloat64m2_t): Ditto.
25556 (vfloat64m4_t): Ditto.
25557 (vfloat64m8_t): Ditto.
25558 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
25559 * config/riscv/riscv.md: Adjust RVV instruction types.
25560 * config/riscv/vector-iterators.md (down): New iterator.
25561 (=vd,vr): New attribute.
25562 (UNSPEC_VSLIDE1UP): New unspec.
25563 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
25564 (*pred_slide<ud><mode>): Ditto.
25565 (*pred_slide<ud><mode>_extended): Ditto.
25566 (@pred_gather<mode>): Ditto.
25567 (@pred_gather<mode>_scalar): Ditto.
25568 (@pred_gatherei16<mode>): Ditto.
25569 (@pred_compress<mode>): Ditto.
25570
25571 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25572
25573 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
25574
25575 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25576
25577 * config/riscv/constraints.md (Wb1): New constraint.
25578 * config/riscv/predicates.md
25579 (vector_least_significant_set_mask_operand): New predicate.
25580 (vector_broadcast_mask_operand): Ditto.
25581 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
25582 (gen_scalar_move_mask): New function.
25583 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
25584 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
25585 (class vmv_s): Ditto.
25586 (BASE): Ditto.
25587 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25588 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
25589 (vmv_s): Ditto.
25590 (vfmv_f): Ditto.
25591 (vfmv_s): Ditto.
25592 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
25593 (SHAPE): Ditto.
25594 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25595 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
25596 (function_expander::use_exact_insn): New function.
25597 (function_expander::use_contiguous_load_insn): New function.
25598 (function_expander::use_contiguous_store_insn): New function.
25599 (function_expander::use_ternop_insn): New function.
25600 (function_expander::use_widen_ternop_insn): New function.
25601 (function_expander::use_scalar_move_insn): New function.
25602 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
25603 * config/riscv/riscv-vector-builtins.h
25604 (function_expander::add_scalar_move_mask_operand): New class.
25605 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
25606 (scalar_move_insn_p): Ditto.
25607 (has_vsetvl_killed_avl_p): Ditto.
25608 (anticipatable_occurrence_p): Ditto.
25609 (insert_vsetvl): Ditto.
25610 (get_vl_vtype_info): Ditto.
25611 (calculate_sew): Ditto.
25612 (calculate_vlmul): Ditto.
25613 (incompatible_avl_p): Ditto.
25614 (different_sew_p): Ditto.
25615 (different_lmul_p): Ditto.
25616 (different_ratio_p): Ditto.
25617 (different_tail_policy_p): Ditto.
25618 (different_mask_policy_p): Ditto.
25619 (possible_zero_avl_p): Ditto.
25620 (first_ratio_invalid_for_second_sew_p): Ditto.
25621 (first_ratio_invalid_for_second_lmul_p): Ditto.
25622 (second_ratio_invalid_for_first_sew_p): Ditto.
25623 (second_ratio_invalid_for_first_lmul_p): Ditto.
25624 (second_sew_less_than_first_sew_p): Ditto.
25625 (first_sew_less_than_second_sew_p): Ditto.
25626 (compare_lmul): Ditto.
25627 (second_lmul_less_than_first_lmul_p): Ditto.
25628 (first_lmul_less_than_second_lmul_p): Ditto.
25629 (first_ratio_less_than_second_ratio_p): Ditto.
25630 (second_ratio_less_than_first_ratio_p): Ditto.
25631 (DEF_INCOMPATIBLE_COND): Ditto.
25632 (greatest_sew): Ditto.
25633 (first_sew): Ditto.
25634 (second_sew): Ditto.
25635 (first_vlmul): Ditto.
25636 (second_vlmul): Ditto.
25637 (first_ratio): Ditto.
25638 (second_ratio): Ditto.
25639 (vlmul_for_first_sew_second_ratio): Ditto.
25640 (ratio_for_second_sew_first_vlmul): Ditto.
25641 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
25642 (always_unavailable): Ditto.
25643 (avl_unavailable_p): Ditto.
25644 (sew_unavailable_p): Ditto.
25645 (lmul_unavailable_p): Ditto.
25646 (ge_sew_unavailable_p): Ditto.
25647 (ge_sew_lmul_unavailable_p): Ditto.
25648 (ge_sew_ratio_unavailable_p): Ditto.
25649 (DEF_UNAVAILABLE_COND): Ditto.
25650 (same_sew_lmul_demand_p): Ditto.
25651 (propagate_avl_across_demands_p): Ditto.
25652 (reg_available_p): Ditto.
25653 (avl_info::has_non_zero_avl): Ditto.
25654 (vl_vtype_info::has_non_zero_avl): Ditto.
25655 (vector_insn_info::operator>=): Refactor.
25656 (vector_insn_info::parse_insn): Adjust for scalar move.
25657 (vector_insn_info::demand_vl_vtype): Remove.
25658 (vector_insn_info::compatible_p): New function.
25659 (vector_insn_info::compatible_avl_p): Ditto.
25660 (vector_insn_info::compatible_vtype_p): Ditto.
25661 (vector_insn_info::available_p): Ditto.
25662 (vector_insn_info::merge): Ditto.
25663 (vector_insn_info::fuse_avl): Ditto.
25664 (vector_insn_info::fuse_sew_lmul): Ditto.
25665 (vector_insn_info::fuse_tail_policy): Ditto.
25666 (vector_insn_info::fuse_mask_policy): Ditto.
25667 (vector_insn_info::dump): Ditto.
25668 (vector_infos_manager::release): Ditto.
25669 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
25670 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
25671 (pass_vsetvl::hard_empty_block_p): Ditto.
25672 (pass_vsetvl::backward_demand_fusion): Ditto.
25673 (pass_vsetvl::forward_demand_fusion): Ditto.
25674 (pass_vsetvl::refine_vsetvls): Ditto.
25675 (pass_vsetvl::cleanup_vsetvls): Ditto.
25676 (pass_vsetvl::commit_vsetvls): Ditto.
25677 (pass_vsetvl::propagate_avl): Ditto.
25678 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
25679 (struct demands_pair): Ditto.
25680 (struct demands_cond): Ditto.
25681 (struct demands_fuse_rule): Ditto.
25682 * config/riscv/vector-iterators.md: New iterator.
25683 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
25684 (*pred_broadcast<mode>): Ditto.
25685 (*pred_broadcast<mode>_extended_scalar): Ditto.
25686 (@pred_extract_first<mode>): Ditto.
25687 (*pred_extract_first<mode>): Ditto.
25688 (@pred_extract_first_trunc<mode>): Ditto.
25689 * config/riscv/riscv-vsetvl.def: New file.
25690
25691 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
25692
25693 * config/riscv/bitmanip.md: allow 0 constant in max/min
25694 pattern.
25695
25696 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
25697
25698 * config/riscv/bitmanip.md: Fix wrong index in the check.
25699
25700 2023-03-04 Jakub Jelinek <jakub@redhat.com>
25701
25702 PR middle-end/109006
25703 * vec.cc (test_auto_alias): Adjust comment for removal of
25704 m_vecdata.
25705 * read-rtl-function.cc (function_reader::parse_block): Likewise.
25706 * gdbhooks.py: Likewise.
25707
25708 2023-03-04 Jakub Jelinek <jakub@redhat.com>
25709
25710 PR testsuite/108973
25711 * selftest-diagnostic.cc
25712 (test_diagnostic_context::test_diagnostic_context): Set
25713 caret_max_width to 80.
25714
25715 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25716
25717 * gimple-ssa-warn-access.cc
25718 (pass_waccess::check_dangling_stores): Skip non-stores.
25719
25720 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25721
25722 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
25723 after vmsr and vmrs, and lower the case of P0.
25724
25725 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
25726
25727 PR middle-end/109006
25728 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
25729
25730 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
25731
25732 PR middle-end/109006
25733 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
25734
25735 2023-03-03 Jakub Jelinek <jakub@redhat.com>
25736
25737 PR c/108986
25738 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
25739 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
25740 suppressed on stmt. For [static %E] warning, print access_nelts
25741 rather than access_size. Fix up comment wording.
25742
25743 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
25744
25745 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
25746 arch14 instead of z16.
25747
25748 2023-03-03 Anthony Green <green@moxielogic.com>
25749
25750 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
25751
25752 2023-03-03 Anthony Green <green@moxielogic.com>
25753
25754 * config/moxie/constraints.md (A, B, W): Change
25755 define_constraint to define_memory_constraint.
25756
25757 2023-03-03 Xi Ruoyao <xry111@xry111.site>
25758
25759 * toplev.cc (process_options): Fix the spelling of
25760 "-fstack-clash-protection".
25761
25762 2023-03-03 Richard Biener <rguenther@suse.de>
25763
25764 PR tree-optimization/109002
25765 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
25766 PHI-translate ANTIC_IN.
25767
25768 2023-03-03 Jakub Jelinek <jakub@redhat.com>
25769
25770 PR tree-optimization/108988
25771 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
25772 size_type_node before passing it as argument to fwrite. Formatting
25773 fixes.
25774
25775 2023-03-03 Richard Biener <rguenther@suse.de>
25776
25777 PR target/108738
25778 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
25779 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
25780 * config/i386/i386-features.h (scalar_chain::max_visits): New.
25781 (scalar_chain::build): Add bitmap parameter, return boolean.
25782 (scalar_chain::add_insn): Likewise.
25783 (scalar_chain::analyze_register_chain): Likewise.
25784 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
25785 Initialize max_visits.
25786 (scalar_chain::analyze_register_chain): When we exhaust
25787 max_visits, abort. Also abort when running into any
25788 disallowed insn.
25789 (scalar_chain::add_insn): Propagate abort.
25790 (scalar_chain::build): Likewise. When aborting amend
25791 the set of disallowed insn with the insns set.
25792 (convert_scalars_to_vector): Adjust. Do not convert aborted
25793 chains.
25794
25795 2023-03-03 Richard Biener <rguenther@suse.de>
25796
25797 PR debug/108772
25798 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
25799 generate a DIE for a function scope static.
25800
25801 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25802
25803 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
25804
25805 2023-03-02 Jakub Jelinek <jakub@redhat.com>
25806
25807 PR target/108883
25808 * target.h (emit_support_tinfos_callback): New typedef.
25809 * targhooks.h (default_emit_support_tinfos): Declare.
25810 * targhooks.cc (default_emit_support_tinfos): New function.
25811 * target.def (emit_support_tinfos): New target hook.
25812 * doc/tm.texi.in (emit_support_tinfos): Document it.
25813 * doc/tm.texi: Regenerated.
25814 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
25815 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
25816
25817 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
25818
25819 * ira-costs.cc: Include print-rtl.h.
25820 (record_reg_classes, scan_one_insn): Add code to print debug info.
25821 (record_operand_costs): Find and use smaller cost for hard reg
25822 move.
25823
25824 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
25825 Paul-Antoine Arras <pa@codesourcery.com>
25826
25827 * builtins.cc (mathfn_built_in_explicit): New.
25828 * config/gcn/gcn.cc: Include case-cfn-macros.h.
25829 (mathfn_built_in_explicit): Add prototype.
25830 (gcn_vectorize_builtin_vectorized_function): New.
25831 (gcn_libc_has_function): New.
25832 (TARGET_LIBC_HAS_FUNCTION): Define.
25833 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
25834
25835 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
25836
25837 PR tree-optimization/108979
25838 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
25839 operations on invariants.
25840
25841 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
25842
25843 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
25844 * config/s390/s390.cc (s390_option_override_internal): Make
25845 partial vector usage the default from z13 on.
25846 * config/s390/vector.md (len_load_v16qi): Add.
25847 (len_store_v16qi): Add.
25848
25849 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25850
25851 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
25852 of constant 0 offset.
25853
25854 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
25855
25856 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
25857 instead of long.
25858 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
25859
25860 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
25861
25862 * config.gcc: add -with-{no-}msa build option.
25863 * config/mips/mips.h: Likewise.
25864 * doc/install.texi: Likewise.
25865
25866 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
25867
25868 PR tree-optimization/108603
25869 * explow.cc (convert_memory_address_addr_space_1): Only wrap
25870 the result of a recursive call in a CONST if no instructions
25871 were emitted.
25872
25873 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
25874
25875 PR tree-optimization/108430
25876 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
25877 of inverted condition.
25878
25879 2023-03-02 Jakub Jelinek <jakub@redhat.com>
25880
25881 PR c++/108934
25882 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
25883 comparison copy the bytes from ptr to a temporary buffer and clearing
25884 padding bits in there.
25885
25886 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
25887
25888 PR middle-end/108545
25889 * gimplify.cc (struct tree_operand_hash_no_se): New.
25890 (omp_index_mapping_groups_1, omp_index_mapping_groups,
25891 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
25892 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
25893 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
25894 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
25895 of tree_operand_hash.
25896
25897 2023-03-01 LIU Hao <lh_mouse@126.com>
25898
25899 PR pch/14940
25900 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
25901 Remove the size limit `pch_VA_max_size`
25902
25903 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
25904
25905 PR middle-end/108546
25906 * omp-low.cc (lower_omp_target): Remove optional handling
25907 on the receiver side, i.e. inside target (data), for
25908 use_device_ptr.
25909
25910 2023-03-01 Jakub Jelinek <jakub@redhat.com>
25911
25912 PR debug/108967
25913 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
25914 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
25915
25916 2023-03-01 Richard Biener <rguenther@suse.de>
25917
25918 PR tree-optimization/108970
25919 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
25920 Check we can copy the BBs.
25921 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
25922 check.
25923 (vect_do_peeling): Streamline error handling.
25924
25925 2023-03-01 Richard Biener <rguenther@suse.de>
25926
25927 PR tree-optimization/108950
25928 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
25929 Check oprnd0 is defined in the loop.
25930 * tree-vect-loop.cc (vectorizable_reduction): Record all
25931 operands vector types, compute that of invariants and
25932 properly update their SLP nodes.
25933
25934 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
25935
25936 PR target/108240
25937 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
25938 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
25939
25940 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
25941
25942 PR middle-end/107411
25943 PR middle-end/107411
25944 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
25945 xasprintf.
25946 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
25947 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
25948
25949 2023-02-28 Jakub Jelinek <jakub@redhat.com>
25950
25951 PR sanitizer/108894
25952 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
25953 comparison rather than index > bound.
25954 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
25955 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
25956 * doc/invoke.texi (-fsanitize=bounds): Document that whether
25957 flexible array member-like arrays are instrumented or not depends
25958 on -fstrict-flex-arrays* options of strict_flex_array attributes.
25959 (-fsanitize=bounds-strict): Document that flexible array members
25960 are not instrumented.
25961
25962 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
25963
25964 PR target/108922
25965 Revert:
25966 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
25967 (fmod<mode>3): Ditto.
25968 (fpremxf4_i387): Ditto.
25969 (reminderxf3): Ditto.
25970 (reminder<mode>3): Ditto.
25971 (fprem1xf4_i387): Ditto.
25972
25973 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
25974
25975 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
25976 generating FFS with mismatched operand and result modes, by using
25977 an explicit SIGN_EXTEND/ZERO_EXTEND.
25978 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
25979 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
25980
25981 2023-02-27 Patrick Palka <ppalka@redhat.com>
25982
25983 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
25984 * lra-int.h (lra_change_class): Likewise.
25985 * recog.h (which_op_alt): Likewise.
25986 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
25987 instead of static.
25988
25989 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25990
25991 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
25992 New prototype.
25993 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
25994 New function.
25995 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
25996 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
25997
25998 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
25999
26000 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
26001 (xtensa_get_config_v3): New functions.
26002
26003 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26004
26005 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
26006
26007 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
26008
26009 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
26010 the macro to 0x1000000000.
26011
26012 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
26013
26014 PR modula2/108261
26015 * doc/gm2.texi (-fm2-pathname): New option documented.
26016 (-fm2-pathnameI): New option documented.
26017 (-fm2-prefix=): New option documented.
26018 (-fruntime-modules=): Update default module list.
26019
26020 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
26021
26022 PR target/108919
26023 * config/xtensa/xtensa-protos.h
26024 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
26025 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
26026 to xtensa_expand_call.
26027 (xtensa_expand_call): Emit the call and add a clobber expression
26028 for the static chain to it in case of windowed ABI.
26029 * config/xtensa/xtensa.md (call, call_value, sibcall)
26030 (sibcall_value): Call xtensa_expand_call and complete expansion
26031 right after that call.
26032
26033 2023-02-24 Richard Biener <rguenther@suse.de>
26034
26035 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
26036 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
26037 changing alignment of vec<T, A, vl_embed> and simplifying
26038 address.
26039 (vec<T, A, vl_embed>::address): Compute as this + 1.
26040 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
26041 vector instead of the offset of the m_vecdata member.
26042 (auto_vec<T, N>::m_data): Turn storage into
26043 uninitialized unsigned char.
26044 (auto_vec<T, N>::auto_vec): Allow allocation of one
26045 stack member. Initialize m_vec in a special way to
26046 avoid later stringop overflow diagnostics.
26047 * vec.cc (test_auto_alias): New.
26048 (vec_cc_tests): Call it.
26049
26050 2023-02-24 Richard Biener <rguenther@suse.de>
26051
26052 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
26053 take a const reference to the object, use address to
26054 access data.
26055 (vec<T, A, vl_embed>::contains): Use address to access data.
26056 (vec<T, A, vl_embed>::operator[]): Use address instead of
26057 m_vecdata to access data.
26058 (vec<T, A, vl_embed>::iterate): Likewise.
26059 (vec<T, A, vl_embed>::copy): Likewise.
26060 (vec<T, A, vl_embed>::quick_push): Likewise.
26061 (vec<T, A, vl_embed>::pop): Likewise.
26062 (vec<T, A, vl_embed>::quick_insert): Likewise.
26063 (vec<T, A, vl_embed>::ordered_remove): Likewise.
26064 (vec<T, A, vl_embed>::unordered_remove): Likewise.
26065 (vec<T, A, vl_embed>::block_remove): Likewise.
26066 (vec<T, A, vl_heap>::address): Likewise.
26067
26068 2023-02-24 Martin Liska <mliska@suse.cz>
26069
26070 PR sanitizer/108834
26071 * asan.cc (asan_add_global): Use proper TU name for normal
26072 global variables (and aux_base_name for the artificial one).
26073
26074 2023-02-24 Jakub Jelinek <jakub@redhat.com>
26075
26076 * config/i386/i386-builtin.def: Update description of BDESC
26077 and BDESC_FIRST in file comment to include mask2.
26078
26079 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26080
26081 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
26082
26083 2023-02-24 Jakub Jelinek <jakub@redhat.com>
26084
26085 PR middle-end/108854
26086 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
26087 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
26088 nodes and adjust their DECL_CONTEXT.
26089
26090 2023-02-24 Jakub Jelinek <jakub@redhat.com>
26091
26092 PR target/108881
26093 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
26094 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
26095 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
26096 __builtin_ia32_cvtne2ps2bf16_v8bf,
26097 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
26098 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
26099 __builtin_ia32_cvtneps2bf16_v8sf_mask,
26100 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
26101 __builtin_ia32_cvtneps2bf16_v4sf_mask,
26102 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
26103 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
26104 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
26105 __builtin_ia32_dpbf16ps_v4sf_mask,
26106 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
26107 OPTION_MASK_ISA_AVX512VL.
26108
26109 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
26110
26111 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
26112 Add non-compact 32-bit multilibs.
26113
26114 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
26115
26116 * config/mips/mips.md (*clo<mode>2): New pattern.
26117
26118 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
26119
26120 * config/mips/mips.h (machine_function): New variable
26121 use_hazard_barrier_return_p.
26122 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
26123 (mips_hb_return_internal): New insn pattern.
26124 * config/mips/mips.cc (mips_attribute_table): Add attribute
26125 use_hazard_barrier_return.
26126 (mips_use_hazard_barrier_return_p): New static function.
26127 (mips_function_attr_inlinable_p): Likewise.
26128 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
26129 Emit error for unsupported architecture choice.
26130 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
26131 Return false for use_hazard_barrier_return.
26132 (mips_expand_epilogue): Emit hazard barrier return.
26133 * doc/extend.texi: Document use_hazard_barrier_return.
26134
26135 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
26136
26137 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
26138 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
26139 for the gcc-internal headers.
26140
26141 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
26142
26143 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
26144 and $(POSTCOMPILE) instead of manual dependency listing.
26145 * config/xtensa/xtensa-dynconfig.c: Rename to ...
26146 * config/xtensa/xtensa-dynconfig.cc: ... this.
26147
26148 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
26149
26150 * doc/cfg.texi: Reorder index entries around @items.
26151 * doc/cpp.texi: Ditto.
26152 * doc/cppenv.texi: Ditto.
26153 * doc/cppopts.texi: Ditto.
26154 * doc/generic.texi: Ditto.
26155 * doc/install.texi: Ditto.
26156 * doc/extend.texi: Ditto.
26157 * doc/invoke.texi: Ditto.
26158 * doc/md.texi: Ditto.
26159 * doc/rtl.texi: Ditto.
26160 * doc/tm.texi.in: Ditto.
26161 * doc/trouble.texi: Ditto.
26162 * doc/tm.texi: Regenerate.
26163
26164 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26165
26166 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
26167 the occurrence of general-purpose register used only once and for
26168 transferring intermediate value.
26169
26170 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26171
26172 * config/xtensa/xtensa.cc (machine_function): Add new member
26173 'eliminated_callee_saved_bmp'.
26174 (xtensa_can_eliminate_callee_saved_reg_p): New function to
26175 determine whether the register can be eliminated or not.
26176 (xtensa_expand_prologue): Add invoking the above function and
26177 elimination the use of callee-saved register by using its stack
26178 slot through the stack pointer (or the frame pointer if needed)
26179 directly.
26180 (xtensa_expand_prologue): Modify to not emit register restoration
26181 insn from its stack slot if the register is already eliminated.
26182
26183 2023-02-23 Jakub Jelinek <jakub@redhat.com>
26184
26185 PR translation/108890
26186 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
26187 around fatal_error format strings.
26188
26189 2023-02-23 Richard Biener <rguenther@suse.de>
26190
26191 * tree-ssa-structalias.cc (handle_lhs_call): Do not
26192 re-create rhsc, only truncate it.
26193
26194 2023-02-23 Jakub Jelinek <jakub@redhat.com>
26195
26196 PR middle-end/106258
26197 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
26198 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
26199
26200 2023-02-23 Richard Biener <rguenther@suse.de>
26201
26202 * tree-if-conv.cc (tree_if_conversion): Properly manage
26203 memory of refs and the contained data references.
26204
26205 2023-02-23 Richard Biener <rguenther@suse.de>
26206
26207 PR tree-optimization/108888
26208 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
26209 calls to predicate.
26210 (predicate_statements): Only predicate calls with PLF_2.
26211
26212 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26213
26214 * config/xtensa/xtensa.md
26215 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
26216 Add missing "SI:" to PLUS RTXes.
26217
26218 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
26219
26220 PR target/108876
26221 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
26222 Emit (use (reg:SI A0_REG)) at the end in the sibling call
26223 (i.e. the same place as (return) in the normal call).
26224
26225 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
26226
26227 Revert:
26228 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
26229
26230 PR target/108876
26231 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
26232 for A0_REG.
26233 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
26234 (sibcall_value, sibcall_value_internal): Add 'use' expression
26235 for A0_REG.
26236
26237 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
26238
26239 * doc/cppdiropts.texi: Reorder @opindex commands to precede
26240 @items they relate to.
26241 * doc/cppopts.texi: Ditto.
26242 * doc/cppwarnopts.texi: Ditto.
26243 * doc/invoke.texi: Ditto.
26244 * doc/lto.texi: Ditto.
26245
26246 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
26247
26248 * internal-fn.cc (expand_MASK_CALL): New.
26249 * internal-fn.def (MASK_CALL): New.
26250 * internal-fn.h (expand_MASK_CALL): New prototype.
26251 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
26252 for mask arguments also.
26253 * tree-if-conv.cc: Include cgraph.h.
26254 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
26255 (predicate_statements): Convert functions to IFN_MASK_CALL.
26256 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
26257 IFN_MASK_CALL as a SIMD function call.
26258 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
26259 IFN_MASK_CALL as an inbranch SIMD function call.
26260 Generate the mask vector arguments.
26261
26262 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26263
26264 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
26265 (class widen_reducop): Ditto.
26266 (class freducop): Ditto.
26267 (class widen_freducop): Ditto.
26268 (BASE): Ditto.
26269 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26270 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
26271 (vredmaxu): Ditto.
26272 (vredmax): Ditto.
26273 (vredminu): Ditto.
26274 (vredmin): Ditto.
26275 (vredand): Ditto.
26276 (vredor): Ditto.
26277 (vredxor): Ditto.
26278 (vwredsum): Ditto.
26279 (vwredsumu): Ditto.
26280 (vfredusum): Ditto.
26281 (vfredosum): Ditto.
26282 (vfredmax): Ditto.
26283 (vfredmin): Ditto.
26284 (vfwredosum): Ditto.
26285 (vfwredusum): Ditto.
26286 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
26287 (SHAPE): Ditto.
26288 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26289 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
26290 (DEF_RVV_WU_OPS): Ditto.
26291 (DEF_RVV_WF_OPS): Ditto.
26292 (vint8mf8_t): Ditto.
26293 (vint8mf4_t): Ditto.
26294 (vint8mf2_t): Ditto.
26295 (vint8m1_t): Ditto.
26296 (vint8m2_t): Ditto.
26297 (vint8m4_t): Ditto.
26298 (vint8m8_t): Ditto.
26299 (vint16mf4_t): Ditto.
26300 (vint16mf2_t): Ditto.
26301 (vint16m1_t): Ditto.
26302 (vint16m2_t): Ditto.
26303 (vint16m4_t): Ditto.
26304 (vint16m8_t): Ditto.
26305 (vint32mf2_t): Ditto.
26306 (vint32m1_t): Ditto.
26307 (vint32m2_t): Ditto.
26308 (vint32m4_t): Ditto.
26309 (vint32m8_t): Ditto.
26310 (vuint8mf8_t): Ditto.
26311 (vuint8mf4_t): Ditto.
26312 (vuint8mf2_t): Ditto.
26313 (vuint8m1_t): Ditto.
26314 (vuint8m2_t): Ditto.
26315 (vuint8m4_t): Ditto.
26316 (vuint8m8_t): Ditto.
26317 (vuint16mf4_t): Ditto.
26318 (vuint16mf2_t): Ditto.
26319 (vuint16m1_t): Ditto.
26320 (vuint16m2_t): Ditto.
26321 (vuint16m4_t): Ditto.
26322 (vuint16m8_t): Ditto.
26323 (vuint32mf2_t): Ditto.
26324 (vuint32m1_t): Ditto.
26325 (vuint32m2_t): Ditto.
26326 (vuint32m4_t): Ditto.
26327 (vuint32m8_t): Ditto.
26328 (vfloat32mf2_t): Ditto.
26329 (vfloat32m1_t): Ditto.
26330 (vfloat32m2_t): Ditto.
26331 (vfloat32m4_t): Ditto.
26332 (vfloat32m8_t): Ditto.
26333 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
26334 (DEF_RVV_WU_OPS): Ditto.
26335 (DEF_RVV_WF_OPS): Ditto.
26336 (required_extensions_p): Add reduction support.
26337 (rvv_arg_type_info::get_base_vector_type): Ditto.
26338 (rvv_arg_type_info::get_tree_type): Ditto.
26339 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
26340 * config/riscv/riscv.md: Ditto.
26341 * config/riscv/vector-iterators.md (minu): Ditto.
26342 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
26343 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
26344 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
26345 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
26346 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
26347 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
26348 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
26349
26350 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26351
26352 * config/riscv/iterators.md: New iterator.
26353 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
26354 (enum ternop_type): New enum.
26355 (class vmacc): New class.
26356 (class imac): Ditto.
26357 (class vnmsac): Ditto.
26358 (enum widen_ternop_type): New enum.
26359 (class vmadd): Ditto.
26360 (class vnmsub): Ditto.
26361 (class iwmac): Ditto.
26362 (class vwmacc): Ditto.
26363 (class vwmaccu): Ditto.
26364 (class vwmaccsu): Ditto.
26365 (class vwmaccus): Ditto.
26366 (class reverse_binop): Ditto.
26367 (class vfmacc): Ditto.
26368 (class vfnmsac): Ditto.
26369 (class vfmadd): Ditto.
26370 (class vfnmsub): Ditto.
26371 (class vfnmacc): Ditto.
26372 (class vfmsac): Ditto.
26373 (class vfnmadd): Ditto.
26374 (class vfmsub): Ditto.
26375 (class vfwmacc): Ditto.
26376 (class vfwnmacc): Ditto.
26377 (class vfwmsac): Ditto.
26378 (class vfwnmsac): Ditto.
26379 (class float_misc): Ditto.
26380 (class fcmp): Ditto.
26381 (class vfclass): Ditto.
26382 (class vfcvt_x): Ditto.
26383 (class vfcvt_rtz_x): Ditto.
26384 (class vfcvt_f): Ditto.
26385 (class vfwcvt_x): Ditto.
26386 (class vfwcvt_rtz_x): Ditto.
26387 (class vfwcvt_f): Ditto.
26388 (class vfncvt_x): Ditto.
26389 (class vfncvt_rtz_x): Ditto.
26390 (class vfncvt_f): Ditto.
26391 (class vfncvt_rod_f): Ditto.
26392 (BASE): Ditto.
26393 * config/riscv/riscv-vector-builtins-bases.h:
26394 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
26395 (vsext): Ditto.
26396 (vfadd): Ditto.
26397 (vfsub): Ditto.
26398 (vfrsub): Ditto.
26399 (vfwadd): Ditto.
26400 (vfwsub): Ditto.
26401 (vfmul): Ditto.
26402 (vfdiv): Ditto.
26403 (vfrdiv): Ditto.
26404 (vfwmul): Ditto.
26405 (vfmacc): Ditto.
26406 (vfnmsac): Ditto.
26407 (vfmadd): Ditto.
26408 (vfnmsub): Ditto.
26409 (vfnmacc): Ditto.
26410 (vfmsac): Ditto.
26411 (vfnmadd): Ditto.
26412 (vfmsub): Ditto.
26413 (vfwmacc): Ditto.
26414 (vfwnmacc): Ditto.
26415 (vfwmsac): Ditto.
26416 (vfwnmsac): Ditto.
26417 (vfsqrt): Ditto.
26418 (vfrsqrt7): Ditto.
26419 (vfrec7): Ditto.
26420 (vfmin): Ditto.
26421 (vfmax): Ditto.
26422 (vfsgnj): Ditto.
26423 (vfsgnjn): Ditto.
26424 (vfsgnjx): Ditto.
26425 (vfneg): Ditto.
26426 (vfabs): Ditto.
26427 (vmfeq): Ditto.
26428 (vmfne): Ditto.
26429 (vmflt): Ditto.
26430 (vmfle): Ditto.
26431 (vmfgt): Ditto.
26432 (vmfge): Ditto.
26433 (vfclass): Ditto.
26434 (vfmerge): Ditto.
26435 (vfmv_v): Ditto.
26436 (vfcvt_x): Ditto.
26437 (vfcvt_xu): Ditto.
26438 (vfcvt_rtz_x): Ditto.
26439 (vfcvt_rtz_xu): Ditto.
26440 (vfcvt_f): Ditto.
26441 (vfwcvt_x): Ditto.
26442 (vfwcvt_xu): Ditto.
26443 (vfwcvt_rtz_x): Ditto.
26444 (vfwcvt_rtz_xu): Ditto.
26445 (vfwcvt_f): Ditto.
26446 (vfncvt_x): Ditto.
26447 (vfncvt_xu): Ditto.
26448 (vfncvt_rtz_x): Ditto.
26449 (vfncvt_rtz_xu): Ditto.
26450 (vfncvt_f): Ditto.
26451 (vfncvt_rod_f): Ditto.
26452 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
26453 (struct move_def): Ditto.
26454 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
26455 (DEF_RVV_CONVERT_I_OPS): Ditto.
26456 (DEF_RVV_CONVERT_U_OPS): Ditto.
26457 (DEF_RVV_WCONVERT_I_OPS): Ditto.
26458 (DEF_RVV_WCONVERT_U_OPS): Ditto.
26459 (DEF_RVV_WCONVERT_F_OPS): Ditto.
26460 (vfloat64m1_t): Ditto.
26461 (vfloat64m2_t): Ditto.
26462 (vfloat64m4_t): Ditto.
26463 (vfloat64m8_t): Ditto.
26464 (vint32mf2_t): Ditto.
26465 (vint32m1_t): Ditto.
26466 (vint32m2_t): Ditto.
26467 (vint32m4_t): Ditto.
26468 (vint32m8_t): Ditto.
26469 (vint64m1_t): Ditto.
26470 (vint64m2_t): Ditto.
26471 (vint64m4_t): Ditto.
26472 (vint64m8_t): Ditto.
26473 (vuint32mf2_t): Ditto.
26474 (vuint32m1_t): Ditto.
26475 (vuint32m2_t): Ditto.
26476 (vuint32m4_t): Ditto.
26477 (vuint32m8_t): Ditto.
26478 (vuint64m1_t): Ditto.
26479 (vuint64m2_t): Ditto.
26480 (vuint64m4_t): Ditto.
26481 (vuint64m8_t): Ditto.
26482 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
26483 (DEF_RVV_CONVERT_U_OPS): Ditto.
26484 (DEF_RVV_WCONVERT_I_OPS): Ditto.
26485 (DEF_RVV_WCONVERT_U_OPS): Ditto.
26486 (DEF_RVV_WCONVERT_F_OPS): Ditto.
26487 (DEF_RVV_F_OPS): Ditto.
26488 (DEF_RVV_WEXTF_OPS): Ditto.
26489 (required_extensions_p): Adjust for floating-point support.
26490 (check_required_extensions): Ditto.
26491 (unsigned_base_type_p): Ditto.
26492 (get_mode_for_bitsize): Ditto.
26493 (rvv_arg_type_info::get_base_vector_type): Ditto.
26494 (rvv_arg_type_info::get_tree_type): Ditto.
26495 * config/riscv/riscv-vector-builtins.def (v_f): New define.
26496 (f): New define.
26497 (f_v): New define.
26498 (xu_v): New define.
26499 (f_w): New define.
26500 (xu_w): New define.
26501 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
26502 (function_expander::arg_mode): New function.
26503 * config/riscv/vector-iterators.md (sof): New iterator.
26504 (vfrecp): Ditto.
26505 (copysign): Ditto.
26506 (n): Ditto.
26507 (msac): Ditto.
26508 (msub): Ditto.
26509 (fixuns_trunc): Ditto.
26510 (floatuns): Ditto.
26511 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
26512 (@pred_<optab><mode>): Ditto.
26513 (@pred_<optab><mode>_scalar): Ditto.
26514 (@pred_<optab><mode>_reverse_scalar): Ditto.
26515 (@pred_<copysign><mode>): Ditto.
26516 (@pred_<copysign><mode>_scalar): Ditto.
26517 (@pred_mul_<optab><mode>): Ditto.
26518 (pred_mul_<optab><mode>_undef_merge): Ditto.
26519 (*pred_<madd_nmsub><mode>): Ditto.
26520 (*pred_<macc_nmsac><mode>): Ditto.
26521 (*pred_mul_<optab><mode>): Ditto.
26522 (@pred_mul_<optab><mode>_scalar): Ditto.
26523 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
26524 (*pred_<madd_nmsub><mode>_scalar): Ditto.
26525 (*pred_<macc_nmsac><mode>_scalar): Ditto.
26526 (*pred_mul_<optab><mode>_scalar): Ditto.
26527 (@pred_neg_mul_<optab><mode>): Ditto.
26528 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
26529 (*pred_<nmadd_msub><mode>): Ditto.
26530 (*pred_<nmacc_msac><mode>): Ditto.
26531 (*pred_neg_mul_<optab><mode>): Ditto.
26532 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
26533 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
26534 (*pred_<nmadd_msub><mode>_scalar): Ditto.
26535 (*pred_<nmacc_msac><mode>_scalar): Ditto.
26536 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
26537 (@pred_<misc_op><mode>): Ditto.
26538 (@pred_class<mode>): Ditto.
26539 (@pred_dual_widen_<optab><mode>): Ditto.
26540 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
26541 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
26542 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
26543 (@pred_widen_mul_<optab><mode>): Ditto.
26544 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
26545 (@pred_widen_neg_mul_<optab><mode>): Ditto.
26546 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
26547 (@pred_cmp<mode>): Ditto.
26548 (*pred_cmp<mode>): Ditto.
26549 (*pred_cmp<mode>_narrow): Ditto.
26550 (@pred_cmp<mode>_scalar): Ditto.
26551 (*pred_cmp<mode>_scalar): Ditto.
26552 (*pred_cmp<mode>_scalar_narrow): Ditto.
26553 (@pred_eqne<mode>_scalar): Ditto.
26554 (*pred_eqne<mode>_scalar): Ditto.
26555 (*pred_eqne<mode>_scalar_narrow): Ditto.
26556 (@pred_merge<mode>_scalar): Ditto.
26557 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
26558 (@pred_<fix_cvt><mode>): Ditto.
26559 (@pred_<float_cvt><mode>): Ditto.
26560 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
26561 (@pred_widen_<fix_cvt><mode>): Ditto.
26562 (@pred_widen_<float_cvt><mode>): Ditto.
26563 (@pred_extend<mode>): Ditto.
26564 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
26565 (@pred_narrow_<fix_cvt><mode>): Ditto.
26566 (@pred_narrow_<float_cvt><mode>): Ditto.
26567 (@pred_trunc<mode>): Ditto.
26568 (@pred_rod_trunc<mode>): Ditto.
26569
26570 2023-02-22 Jakub Jelinek <jakub@redhat.com>
26571
26572 PR middle-end/106258
26573 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
26574 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
26575 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
26576 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
26577
26578 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
26579
26580 * common.opt (-Wcomplain-wrong-lang): New.
26581 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
26582 * opts-common.cc (prune_options): Handle it.
26583 * opts-global.cc (complain_wrong_lang): Use it.
26584
26585 2023-02-21 David Malcolm <dmalcolm@redhat.com>
26586
26587 PR analyzer/108830
26588 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
26589
26590 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
26591
26592 PR target/108876
26593 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
26594 for A0_REG.
26595 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
26596 (sibcall_value, sibcall_value_internal): Add 'use' expression
26597 for A0_REG.
26598
26599 2023-02-21 Richard Biener <rguenther@suse.de>
26600
26601 PR tree-optimization/108691
26602 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
26603 assert about calls_setjmp not becoming true when it was false.
26604
26605 2023-02-21 Richard Biener <rguenther@suse.de>
26606
26607 PR tree-optimization/108793
26608 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
26609 Use convert operands to niter_type when computing num.
26610
26611 2023-02-21 Richard Biener <rguenther@suse.de>
26612
26613 Revert:
26614 2023-02-13 Richard Biener <rguenther@suse.de>
26615
26616 PR tree-optimization/108691
26617 * tree-cfg.cc (notice_special_calls): When the CFG is built
26618 honor gimple_call_ctrl_altering_p.
26619 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
26620 temporarily if the call is not control-altering.
26621 * calls.cc (emit_call_1): Do not add REG_SETJMP if
26622 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
26623
26624 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26625
26626 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
26627 true if register A0 (return address register) when -Og is specified.
26628
26629 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
26630
26631 * config/i386/predicates.md
26632 (general_x64constmem_operand): New predicate.
26633 * config/i386/i386.md (*cmpqi_ext<mode>_1):
26634 Use nonimm_x64constmem_operand.
26635 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
26636 (*addqi_ext<mode>_1): Ditto.
26637 (*testqi_ext<mode>_1): Ditto.
26638 (*andqi_ext<mode>_1): Ditto.
26639 (*andqi_ext<mode>_1_cc): Ditto.
26640 (*<any_or:code>qi_ext<mode>_1): Ditto.
26641 (*xorqi_ext<mode>_1_cc): Ditto.
26642
26643 2023-02-20 Jakub Jelinek <jakub2redhat.com>
26644
26645 PR target/108862
26646 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
26647 gen_umadddi4_highpart{,_le}.
26648
26649 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
26650
26651 * config/riscv/riscv.md (prefetch): Use r instead of p for the
26652 address operand.
26653 (riscv_prefetchi_<mode>): Ditto.
26654
26655 2023-02-20 Richard Biener <rguenther@suse.de>
26656
26657 PR tree-optimization/108816
26658 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
26659 versioning condition split prerequesite, assert required
26660 invariant.
26661
26662 2023-02-20 Richard Biener <rguenther@suse.de>
26663
26664 PR tree-optimization/108825
26665 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
26666 loop-local verfication only verify there's no pending SSA
26667 update.
26668
26669 2023-02-20 Richard Biener <rguenther@suse.de>
26670
26671 PR tree-optimization/108819
26672 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
26673 we have an SSA name as iv_2 as expected.
26674
26675 2023-02-18 Jakub Jelinek <jakub@redhat.com>
26676
26677 PR tree-optimization/108819
26678 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
26679
26680 2023-02-18 Jakub Jelinek <jakub@redhat.com>
26681
26682 PR target/108832
26683 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
26684 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
26685 function.
26686 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
26687 with ix86_replace_reg_with_reg.
26688
26689 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
26690
26691 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
26692
26693 2023-02-18 Xi Ruoyao <xry111@xry111.site>
26694
26695 * config.gcc (triplet_abi): Set its value based on $with_abi,
26696 instead of $target.
26697 (la_canonical_triplet): Set it after $triplet_abi is set
26698 correctly.
26699 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
26700 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
26701 "f64" suffix).
26702
26703 2023-02-18 Andrew Pinski <apinski@marvell.com>
26704
26705 * match.pd: Remove #if GIMPLE around the
26706 "1 - a" pattern
26707
26708 2023-02-18 Andrew Pinski <apinski@marvell.com>
26709
26710 * value-query.h (get_range_query): Return the global ranges
26711 for a nullptr func.
26712
26713 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
26714
26715 * doc/invoke.texi (@item -Wall): Fix typo in
26716 -Wuse-after-free.
26717
26718 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
26719
26720 PR target/108831
26721 * config/i386/predicates.md
26722 (nonimm_x64constmem_operand): New predicate.
26723 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
26724 (*subqi_ext<mode>_0): Ditto.
26725 (*andqi_ext<mode>_0): Ditto.
26726 (*<any_or:code>qi_ext<mode>_0): Ditto.
26727
26728 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
26729
26730 PR target/108805
26731 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
26732 int_outermode instead of GET_MODE (tem) to prevent
26733 VOIDmode from entering simplify_gen_subreg.
26734
26735 2023-02-17 Richard Biener <rguenther@suse.de>
26736
26737 PR tree-optimization/108821
26738 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
26739 move volatile accesses.
26740
26741 2023-02-17 Richard Biener <rguenther@suse.de>
26742
26743 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
26744 called on virtual operands.
26745 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
26746 ssa_undefined_value_p calls.
26747 (vn_phi_insert): Likewise.
26748 (set_ssa_val_to): Likewise.
26749 (visit_phi): Avoid extra work with equivalences for
26750 virtual operand PHIs.
26751
26752 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26753
26754 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
26755 class.
26756 (class mask_nlogic): Ditto.
26757 (class mask_notlogic): Ditto.
26758 (class vmmv): Ditto.
26759 (class vmclr): Ditto.
26760 (class vmset): Ditto.
26761 (class vmnot): Ditto.
26762 (class vcpop): Ditto.
26763 (class vfirst): Ditto.
26764 (class mask_misc): Ditto.
26765 (class viota): Ditto.
26766 (class vid): Ditto.
26767 (BASE): Ditto.
26768 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26769 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
26770 (vmnand): Ditto.
26771 (vmandn): Ditto.
26772 (vmxor): Ditto.
26773 (vmor): Ditto.
26774 (vmnor): Ditto.
26775 (vmorn): Ditto.
26776 (vmxnor): Ditto.
26777 (vmmv): Ditto.
26778 (vmclr): Ditto.
26779 (vmset): Ditto.
26780 (vmnot): Ditto.
26781 (vcpop): Ditto.
26782 (vfirst): Ditto.
26783 (vmsbf): Ditto.
26784 (vmsif): Ditto.
26785 (vmsof): Ditto.
26786 (viota): Ditto.
26787 (vid): Ditto.
26788 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
26789 (struct mask_alu_def): Ditto.
26790 (SHAPE): Ditto.
26791 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26792 * config/riscv/riscv-vector-builtins.cc: Ditto.
26793 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
26794 for dest it scalar RVV intrinsics.
26795 * config/riscv/vector-iterators.md (sof): New iterator.
26796 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
26797 (@pred_<optab>not<mode>): New pattern.
26798 (@pred_popcount<VB:mode><P:mode>): New pattern.
26799 (@pred_ffs<VB:mode><P:mode>): New pattern.
26800 (@pred_<misc_op><mode>): New pattern.
26801 (@pred_iota<mode>): New pattern.
26802 (@pred_series<mode>): New pattern.
26803
26804 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26805
26806 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
26807 (vsbc): Ditto.
26808 (vmerge): Ditto.
26809 (vmv_v): Ditto.
26810 * config/riscv/riscv-vector-builtins.cc: Ditto.
26811
26812 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26813 kito-cheng <kito.cheng@sifive.com>
26814
26815 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
26816 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
26817 (sew64_scalar_helper): New function.
26818 * config/riscv/vector.md: Normalization.
26819
26820 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26821
26822 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
26823 (vsm): Ditto.
26824 (vsse): Ditto.
26825 (vsoxei64): Ditto.
26826 (vsub): Ditto.
26827 (vand): Ditto.
26828 (vor): Ditto.
26829 (vxor): Ditto.
26830 (vsll): Ditto.
26831 (vsra): Ditto.
26832 (vsrl): Ditto.
26833 (vmin): Ditto.
26834 (vmax): Ditto.
26835 (vminu): Ditto.
26836 (vmaxu): Ditto.
26837 (vmul): Ditto.
26838 (vmulh): Ditto.
26839 (vmulhu): Ditto.
26840 (vmulhsu): Ditto.
26841 (vdiv): Ditto.
26842 (vrem): Ditto.
26843 (vdivu): Ditto.
26844 (vremu): Ditto.
26845 (vnot): Ditto.
26846 (vsext): Ditto.
26847 (vzext): Ditto.
26848 (vwadd): Ditto.
26849 (vwsub): Ditto.
26850 (vwmul): Ditto.
26851 (vwmulu): Ditto.
26852 (vwmulsu): Ditto.
26853 (vwaddu): Ditto.
26854 (vwsubu): Ditto.
26855 (vsbc): Ditto.
26856 (vmsbc): Ditto.
26857 (vnsra): Ditto.
26858 (vmerge): Ditto.
26859 (vmv_v): Ditto.
26860 (vmsne): Ditto.
26861 (vmslt): Ditto.
26862 (vmsgt): Ditto.
26863 (vmsle): Ditto.
26864 (vmsge): Ditto.
26865 (vmsltu): Ditto.
26866 (vmsgtu): Ditto.
26867 (vmsleu): Ditto.
26868 (vmsgeu): Ditto.
26869 (vnmsac): Ditto.
26870 (vmadd): Ditto.
26871 (vnmsub): Ditto.
26872 (vwmacc): Ditto.
26873 (vsadd): Ditto.
26874 (vssub): Ditto.
26875 (vssubu): Ditto.
26876 (vaadd): Ditto.
26877 (vasub): Ditto.
26878 (vasubu): Ditto.
26879 (vsmul): Ditto.
26880 (vssra): Ditto.
26881 (vssrl): Ditto.
26882 (vnclip): Ditto.
26883
26884 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26885
26886 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
26887 (@pred_<optab><mode>_scalar): Ditto.
26888 (*pred_<optab><mode>_scalar): Ditto.
26889 (*pred_<optab><mode>_extended_scalar): Ditto.
26890
26891 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26892
26893 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
26894 (init_builtins): Ditto.
26895 (mangle_builtin_type): Ditto.
26896 (verify_type_context): Ditto.
26897 (handle_pragma_vector): Ditto.
26898 (builtin_decl): Ditto.
26899 (expand_builtin): Ditto.
26900 (const_vec_all_same_in_range_p): Ditto.
26901 (legitimize_move): Ditto.
26902 (emit_vlmax_op): Ditto.
26903 (emit_nonvlmax_op): Ditto.
26904 (get_vlmul): Ditto.
26905 (get_ratio): Ditto.
26906 (get_ta): Ditto.
26907 (get_ma): Ditto.
26908 (get_avl_type): Ditto.
26909 (calculate_ratio): Ditto.
26910 (enum vlmul_type): Ditto.
26911 (simm5_p): Ditto.
26912 (neg_simm5_p): Ditto.
26913 (has_vi_variant_p): Ditto.
26914
26915 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26916
26917 * config/riscv/riscv-protos.h (simm32_p): Remove.
26918 * config/riscv/riscv-v.cc (simm32_p): Ditto.
26919 * config/riscv/vector.md: Use immediate_operand
26920 instead of riscv_vector::simm32_p.
26921
26922 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
26923
26924 * doc/invoke.texi (Optimize Options): Reword the explanation
26925 getting minimal, maximal and default values of a parameter.
26926
26927 2023-02-16 Patrick Palka <ppalka@redhat.com>
26928
26929 * addresses.h: Mechanically drop 'static' from 'static inline'
26930 functions via s/^static inline/inline/g.
26931 * asan.h: Likewise.
26932 * attribs.h: Likewise.
26933 * basic-block.h: Likewise.
26934 * bitmap.h: Likewise.
26935 * cfghooks.h: Likewise.
26936 * cfgloop.h: Likewise.
26937 * cgraph.h: Likewise.
26938 * cselib.h: Likewise.
26939 * data-streamer.h: Likewise.
26940 * debug.h: Likewise.
26941 * df.h: Likewise.
26942 * diagnostic.h: Likewise.
26943 * dominance.h: Likewise.
26944 * dumpfile.h: Likewise.
26945 * emit-rtl.h: Likewise.
26946 * except.h: Likewise.
26947 * expmed.h: Likewise.
26948 * expr.h: Likewise.
26949 * fixed-value.h: Likewise.
26950 * gengtype.h: Likewise.
26951 * gimple-expr.h: Likewise.
26952 * gimple-iterator.h: Likewise.
26953 * gimple-predict.h: Likewise.
26954 * gimple-range-fold.h: Likewise.
26955 * gimple-ssa.h: Likewise.
26956 * gimple.h: Likewise.
26957 * graphite.h: Likewise.
26958 * hard-reg-set.h: Likewise.
26959 * hash-map.h: Likewise.
26960 * hash-set.h: Likewise.
26961 * hash-table.h: Likewise.
26962 * hwint.h: Likewise.
26963 * input.h: Likewise.
26964 * insn-addr.h: Likewise.
26965 * internal-fn.h: Likewise.
26966 * ipa-fnsummary.h: Likewise.
26967 * ipa-icf-gimple.h: Likewise.
26968 * ipa-inline.h: Likewise.
26969 * ipa-modref.h: Likewise.
26970 * ipa-prop.h: Likewise.
26971 * ira-int.h: Likewise.
26972 * ira.h: Likewise.
26973 * lra-int.h: Likewise.
26974 * lra.h: Likewise.
26975 * lto-streamer.h: Likewise.
26976 * memmodel.h: Likewise.
26977 * omp-general.h: Likewise.
26978 * optabs-query.h: Likewise.
26979 * optabs.h: Likewise.
26980 * plugin.h: Likewise.
26981 * pretty-print.h: Likewise.
26982 * range.h: Likewise.
26983 * read-md.h: Likewise.
26984 * recog.h: Likewise.
26985 * regs.h: Likewise.
26986 * rtl-iter.h: Likewise.
26987 * rtl.h: Likewise.
26988 * sbitmap.h: Likewise.
26989 * sched-int.h: Likewise.
26990 * sel-sched-ir.h: Likewise.
26991 * sese.h: Likewise.
26992 * sparseset.h: Likewise.
26993 * ssa-iterators.h: Likewise.
26994 * system.h: Likewise.
26995 * target-globals.h: Likewise.
26996 * target.h: Likewise.
26997 * timevar.h: Likewise.
26998 * tree-chrec.h: Likewise.
26999 * tree-data-ref.h: Likewise.
27000 * tree-iterator.h: Likewise.
27001 * tree-outof-ssa.h: Likewise.
27002 * tree-phinodes.h: Likewise.
27003 * tree-scalar-evolution.h: Likewise.
27004 * tree-sra.h: Likewise.
27005 * tree-ssa-alias.h: Likewise.
27006 * tree-ssa-live.h: Likewise.
27007 * tree-ssa-loop-manip.h: Likewise.
27008 * tree-ssa-loop.h: Likewise.
27009 * tree-ssa-operands.h: Likewise.
27010 * tree-ssa-propagate.h: Likewise.
27011 * tree-ssa-sccvn.h: Likewise.
27012 * tree-ssa.h: Likewise.
27013 * tree-ssanames.h: Likewise.
27014 * tree-streamer.h: Likewise.
27015 * tree-switch-conversion.h: Likewise.
27016 * tree-vectorizer.h: Likewise.
27017 * tree.h: Likewise.
27018 * wide-int.h: Likewise.
27019
27020 2023-02-16 Jakub Jelinek <jakub@redhat.com>
27021
27022 PR tree-optimization/108657
27023 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
27024 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
27025 is a call to internal or builtin function.
27026
27027 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
27028
27029 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
27030 using-declaration to unhide functions.
27031
27032 2023-02-16 Jakub Jelinek <jakub@redhat.com>
27033
27034 PR tree-optimization/108783
27035 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
27036 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
27037 t to curr->op. Otherwise, punt if either newop1 or newop2 are
27038 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
27039
27040 2023-02-16 Richard Biener <rguenther@suse.de>
27041
27042 PR tree-optimization/108791
27043 * tree-ssa-forwprop.cc (optimize_vector_load): Build
27044 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
27045 type.
27046
27047 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
27048
27049 PR target/90458
27050 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
27051 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
27052 (ix86_expand_prologue): Likewise.
27053
27054 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
27055
27056 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
27057
27058 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
27059
27060 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
27061 int248_register_operand predicate in zero_extract sub-RTX.
27062 (*cmpqi_ext<mode>_2): Ditto.
27063 (*cmpqi_ext<mode>_3): Ditto.
27064 (*cmpqi_ext<mode>_4): Ditto.
27065 (*extzvqi_mem_rex64): Ditto.
27066 (*extzvqi): Ditto.
27067 (*insvqi_1_mem_rex64): Ditto.
27068 (@insv<mode>_1): Ditto.
27069 (*insvqi_1): Ditto.
27070 (*insvqi_2): Ditto.
27071 (*insvqi_3): Ditto.
27072 (*extendqi<SWI24:mode>_ext_1): Ditto.
27073 (*addqi_ext<mode>_1): Ditto.
27074 (*addqi_ext<mode>_2): Ditto.
27075 (*subqi_ext<mode>_2): Ditto.
27076 (*testqi_ext<mode>_1): Ditto.
27077 (*testqi_ext<mode>_2): Ditto.
27078 (*andqi_ext<mode>_1): Ditto.
27079 (*andqi_ext<mode>_1_cc): Ditto.
27080 (*andqi_ext<mode>_2): Ditto.
27081 (*<any_or:code>qi_ext<mode>_1): Ditto.
27082 (*<any_or:code>qi_ext<mode>_2): Ditto.
27083 (*xorqi_ext<mode>_1_cc): Ditto.
27084 (*negqi_ext<mode>_2): Ditto.
27085 (*ashlqi_ext<mode>_2): Ditto.
27086 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
27087
27088 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
27089
27090 * config/i386/predicates.md (int248_register_operand):
27091 Rename from extr_register_operand.
27092 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
27093 (*extzx<mode>): Ditto.
27094 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
27095 (*ashl<mode>3_mask): Ditto.
27096 (*<any_shiftrt:insn><mode>3_mask): Ditto.
27097 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
27098 (*<any_rotate:insn><mode>3_mask): Ditto.
27099 (*<btsc><mode>_mask): Ditto.
27100 (*btr<mode>_mask): Ditto.
27101 (*jcc_bt<mode>_mask_1): Ditto.
27102
27103 2023-02-15 Richard Biener <rguenther@suse.de>
27104
27105 PR middle-end/26854
27106 * df-core.cc (df_worklist_propagate_forward): Put later
27107 blocks on worklist and only earlier blocks on pending.
27108 (df_worklist_propagate_backward): Likewise.
27109 (df_worklist_dataflow_doublequeue): Change the iteration
27110 to process new blocks in the same iteration if that
27111 maintains the iteration order.
27112
27113 2023-02-15 Marek Polacek <polacek@redhat.com>
27114
27115 PR middle-end/106080
27116 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
27117 instead.
27118
27119 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27120
27121 * config/riscv/predicates.md: Refine codes.
27122 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
27123 * config/riscv/riscv-v.cc: Refine codes.
27124 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
27125 enum.
27126 (class imac): New class.
27127 (enum widen_ternop_type): New enum.
27128 (class iwmac): New class.
27129 (BASE): New class.
27130 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27131 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
27132 (vnmsac): Ditto.
27133 (vmadd): Ditto.
27134 (vnmsub): Ditto.
27135 (vwmacc): Ditto.
27136 (vwmaccu): Ditto.
27137 (vwmaccsu): Ditto.
27138 (vwmaccus): Ditto.
27139 * config/riscv/riscv-vector-builtins.cc
27140 (function_builder::apply_predication): Adjust for multiply-add support.
27141 (function_expander::add_vundef_operand): Refine codes.
27142 (function_expander::use_ternop_insn): New function.
27143 (function_expander::use_widen_ternop_insn): Ditto.
27144 * config/riscv/riscv-vector-builtins.h: New function.
27145 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
27146 (pred_mul_<optab><mode>_undef_merge): Ditto.
27147 (*pred_<madd_nmsub><mode>): Ditto.
27148 (*pred_<macc_nmsac><mode>): Ditto.
27149 (*pred_mul_<optab><mode>): Ditto.
27150 (@pred_mul_<optab><mode>_scalar): Ditto.
27151 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
27152 (*pred_<madd_nmsub><mode>_scalar): Ditto.
27153 (*pred_<macc_nmsac><mode>_scalar): Ditto.
27154 (*pred_mul_<optab><mode>_scalar): Ditto.
27155 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
27156 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
27157 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
27158 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
27159 (@pred_widen_mul_plus<su><mode>): Ditto.
27160 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
27161 (@pred_widen_mul_plussu<mode>): Ditto.
27162 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
27163 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
27164
27165 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27166
27167 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
27168 (vector_all_trues_mask_operand): New predicate.
27169 (vector_undef_operand): New predicate.
27170 (ltge_operator): New predicate.
27171 (comparison_except_ltge_operator): New predicate.
27172 (comparison_except_eqge_operator): New predicate.
27173 (ge_operator): New predicate.
27174 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
27175 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
27176 (BASE): Ditto.
27177 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27178 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
27179 (vmsne): Ditto.
27180 (vmslt): Ditto.
27181 (vmsgt): Ditto.
27182 (vmsle): Ditto.
27183 (vmsge): Ditto.
27184 (vmsltu): Ditto.
27185 (vmsgtu): Ditto.
27186 (vmsleu): Ditto.
27187 (vmsgeu): Ditto.
27188 * config/riscv/riscv-vector-builtins-shapes.cc
27189 (struct return_mask_def): Adjust for compare support.
27190 * config/riscv/riscv-vector-builtins.cc
27191 (function_expander::use_compare_insn): New function.
27192 * config/riscv/riscv-vector-builtins.h
27193 (function_expander::add_integer_operand): Ditto.
27194 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
27195 * config/riscv/riscv.md: Add vector min/max attributes.
27196 * config/riscv/vector-iterators.md (xnor): New iterator.
27197 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
27198 (*pred_cmp<mode>): Ditto.
27199 (*pred_cmp<mode>_narrow): Ditto.
27200 (@pred_ltge<mode>): Ditto.
27201 (*pred_ltge<mode>): Ditto.
27202 (*pred_ltge<mode>_narrow): Ditto.
27203 (@pred_cmp<mode>_scalar): Ditto.
27204 (*pred_cmp<mode>_scalar): Ditto.
27205 (*pred_cmp<mode>_scalar_narrow): Ditto.
27206 (@pred_eqne<mode>_scalar): Ditto.
27207 (*pred_eqne<mode>_scalar): Ditto.
27208 (*pred_eqne<mode>_scalar_narrow): Ditto.
27209 (*pred_cmp<mode>_extended_scalar): Ditto.
27210 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
27211 (*pred_eqne<mode>_extended_scalar): Ditto.
27212 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
27213 (@pred_ge<mode>_scalar): Ditto.
27214 (@pred_<optab><mode>): Ditto.
27215 (@pred_n<optab><mode>): Ditto.
27216 (@pred_<optab>n<mode>): Ditto.
27217 (@pred_not<mode>): Ditto.
27218
27219 2023-02-15 Martin Jambor <mjambor@suse.cz>
27220
27221 PR ipa/108679
27222 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
27223 creation of non-scalar replacements even if IPA-CP knows their
27224 contents.
27225
27226 2023-02-15 Jakub Jelinek <jakub@redhat.com>
27227
27228 PR target/108787
27229 PR target/103109
27230 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
27231 expander, change operand 3 to be TImode, emit maddlddi4 and
27232 umadddi4_highpart{,_le} with its low half and finally add the high
27233 half to the result.
27234
27235 2023-02-15 Martin Liska <mliska@suse.cz>
27236
27237 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
27238
27239 2023-02-15 Richard Biener <rguenther@suse.de>
27240
27241 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
27242 for with_poison and alias worklist to it.
27243 (sanitize_asan_mark_poison): Likewise.
27244
27245 2023-02-15 Richard Biener <rguenther@suse.de>
27246
27247 PR target/108738
27248 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
27249 Combine bitmap test and set.
27250 (scalar_chain::add_insn): Likewise.
27251 (scalar_chain::analyze_register_chain): Remove redundant
27252 attempt to add to queue and instead strengthen assert.
27253 Sink common attempts to mark the def dual-mode.
27254 (scalar_chain::add_to_queue): Remove redundant insn bitmap
27255 check.
27256
27257 2023-02-15 Richard Biener <rguenther@suse.de>
27258
27259 PR target/108738
27260 * config/i386/i386-features.cc (convert_scalars_to_vector):
27261 Switch candidates bitmaps to tree view before building the chains.
27262
27263 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
27264
27265 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
27266 "failure trying to reload" call.
27267
27268 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
27269
27270 * gdbinit.in (phrs): New command.
27271 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
27272 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
27273
27274 2023-02-14 David Faust <david.faust@oracle.com>
27275
27276 PR target/108790
27277 * config/bpf/constraints.md (q): New memory constraint.
27278 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
27279 (zero_extendqidi2): Likewise.
27280 (zero_extendsidi2): Likewise.
27281 (*mov<MM:mode>): Likewise.
27282
27283 2023-02-14 Andrew Pinski <apinski@marvell.com>
27284
27285 PR tree-optimization/108355
27286 PR tree-optimization/96921
27287 * match.pd: Add pattern for "1 - bool_val".
27288
27289 2023-02-14 Richard Biener <rguenther@suse.de>
27290
27291 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
27292 basic block index hashing on the availability of ->cclhs.
27293 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
27294 rely on ->cclhs availability.
27295 (vn_phi_lookup): Set ->cclhs only when we are eventually
27296 going to CSE the PHI.
27297 (vn_phi_insert): Likewise.
27298
27299 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
27300
27301 * gimplify.cc (gimplify_save_expr): Add missing guard.
27302
27303 2023-02-14 Richard Biener <rguenther@suse.de>
27304
27305 PR tree-optimization/108782
27306 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
27307 Make sure we're not vectorizing an inner loop.
27308
27309 2023-02-14 Jakub Jelinek <jakub@redhat.com>
27310
27311 PR sanitizer/108777
27312 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
27313 * asan.h (asan_memfn_rtl): Declare.
27314 * asan.cc (asan_memfn_rtls): New variable.
27315 (asan_memfn_rtl): New function.
27316 * builtins.cc (expand_builtin): If
27317 param_asan_kernel_mem_intrinsic_prefix and function is
27318 kernel-{,hw}address sanitized, emit calls to
27319 __{,hw}asan_{memcpy,memmove,memset} rather than
27320 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
27321 instead of flag_sanitize & SANITIZE_ADDRESS to check if
27322 asan_intercepted_p functions shouldn't be expanded inline.
27323
27324 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
27325
27326 PR tree-optimization/96373
27327 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
27328 operations on the loop mask. Reject partial vectors if this isn't
27329 possible.
27330
27331 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
27332
27333 PR rtl-optimization/108681
27334 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
27335 code to handle bare uses and clobbers.
27336
27337 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
27338
27339 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
27340 caller_save_p flag when clearing defined_p flag.
27341 (setup_reg_equiv): Ditto.
27342 * lra-constraints.cc (lra_constraints): Ditto.
27343
27344 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
27345
27346 PR target/108516
27347 * config/i386/predicates.md (extr_register_operand):
27348 New special predicate.
27349 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
27350 as operand 1 predicate.
27351 (*exzv<mode>): Ditto.
27352 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
27353
27354 2023-02-13 Richard Biener <rguenther@suse.de>
27355
27356 PR tree-optimization/28614
27357 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
27358 walking all edges in most cases.
27359 (vn_nary_op_insert_pieces_predicated): Avoid repeated
27360 calls to can_track_predicate_on_edge unless checking is
27361 enabled.
27362 (process_bb): Instead call it once here for each edge
27363 we register possibly multiple predicates on.
27364
27365 2023-02-13 Richard Biener <rguenther@suse.de>
27366
27367 PR tree-optimization/108691
27368 * tree-cfg.cc (notice_special_calls): When the CFG is built
27369 honor gimple_call_ctrl_altering_p.
27370 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
27371 temporarily if the call is not control-altering.
27372 * calls.cc (emit_call_1): Do not add REG_SETJMP if
27373 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
27374
27375 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
27376
27377 PR target/108102
27378 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
27379 (struct s390_sched_state): Initialise to zero.
27380 (s390_sched_variable_issue): For better debuggability also emit
27381 the current side.
27382 (s390_sched_init): Unconditionally reset scheduler state.
27383
27384 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
27385
27386 * ifcvt.h (noce_if_info::cond_inverted): New field.
27387 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
27388 values when cond_inverted is true.
27389 (noce_find_if_block): Allow the condition to be inverted when
27390 handling conditional moves.
27391
27392 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
27393
27394 * config/s390/predicates.md (execute_operation): Use
27395 constrain_operands instead of extract_constrain_insn in order to
27396 determine wheter there exists a valid alternative.
27397
27398 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
27399
27400 * common/config/arc/arc-common.cc (arc_option_optimization_table):
27401 Remove millicode from list.
27402
27403 2023-02-13 Martin Liska <mliska@suse.cz>
27404
27405 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
27406
27407 2023-02-13 Richard Biener <rguenther@suse.de>
27408
27409 PR tree-optimization/106722
27410 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
27411 whether we marked a stmt.
27412 (mark_control_dependent_edges_necessary): When
27413 mark_last_stmt_necessary didn't mark any stmt make sure
27414 to mark its control dependent edges.
27415 (propagate_necessity): Likewise.
27416
27417 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
27418
27419 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
27420 (DWARF_FRAME_REGISTERS): New.
27421 (DWARF_REG_TO_UNWIND_COLUMN): New.
27422
27423 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
27424
27425 * doc/sourcebuild.texi: Remove (broken) direct reference to
27426 "The GNU configure and build system".
27427
27428 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
27429
27430 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
27431 gen_add3_insn to gen_rtx_SET.
27432 (riscv_adjust_libcall_cfi_epilogue): Likewise.
27433
27434 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27435
27436 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
27437 (class vnclip): Ditto.
27438 (BASE): Ditto.
27439 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27440 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
27441 (vasub): Ditto.
27442 (vaaddu): Ditto.
27443 (vasubu): Ditto.
27444 (vsmul): Ditto.
27445 (vssra): Ditto.
27446 (vssrl): Ditto.
27447 (vnclipu): Ditto.
27448 (vnclip): Ditto.
27449 * config/riscv/vector-iterators.md (su): Add instruction.
27450 (aadd): Ditto.
27451 (vaalu): Ditto.
27452 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
27453 (@pred_<sat_op><mode>_scalar): Ditto.
27454 (*pred_<sat_op><mode>_scalar): Ditto.
27455 (*pred_<sat_op><mode>_extended_scalar): Ditto.
27456 (@pred_narrow_clip<v_su><mode>): Ditto.
27457 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
27458
27459 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27460
27461 * config/riscv/constraints.md (Wbr): Remove unused constraint.
27462 * config/riscv/predicates.md: Fix move operand predicate.
27463 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
27464 (class vncvt_x): Ditto.
27465 (class vmerge): Ditto.
27466 (class vmv_v): Ditto.
27467 (BASE): Ditto.
27468 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27469 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
27470 (vsrl): Ditto.
27471 (vnsrl): Ditto.
27472 (vnsra): Ditto.
27473 (vncvt_x): Ditto.
27474 (vmerge): Ditto.
27475 (vmv_v): Ditto.
27476 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
27477 (struct move_def): Ditto.
27478 (SHAPE): Ditto.
27479 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27480 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
27481 (DEF_RVV_WEXTU_OPS): Ditto
27482 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
27483 (v_v): Ditto.
27484 (v_x): Ditto.
27485 (x_w): Ditto.
27486 (x): Ditto.
27487 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
27488 * config/riscv/vector-iterators.md (nmsac):New iterator.
27489 (nmsub): New iterator.
27490 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
27491 (@pred_merge<mode>_scalar): New pattern.
27492 (*pred_merge<mode>_scalar): New pattern.
27493 (*pred_merge<mode>_extended_scalar): New pattern.
27494 (@pred_narrow_<optab><mode>): New pattern.
27495 (@pred_narrow_<optab><mode>_scalar): New pattern.
27496 (@pred_trunc<mode>): New pattern.
27497
27498 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27499
27500 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
27501 (class vmsbc): Ditto.
27502 (BASE): Define new class.
27503 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27504 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
27505 (vmsbc): Ditto.
27506 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
27507 New class.
27508 (SHAPE): Ditto.
27509 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27510 * config/riscv/riscv-vector-builtins.cc
27511 (function_expander::use_exact_insn): Adjust for new support
27512 * config/riscv/riscv-vector-builtins.h
27513 (function_base::has_merge_operand_p): New function.
27514 * config/riscv/vector-iterators.md: New iterator.
27515 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
27516 (@pred_msbc<mode>): Ditto.
27517 (@pred_madc<mode>_scalar): Ditto.
27518 (@pred_msbc<mode>_scalar): Ditto.
27519 (*pred_madc<mode>_scalar): Ditto.
27520 (*pred_madc<mode>_extended_scalar): Ditto.
27521 (*pred_msbc<mode>_scalar): Ditto.
27522 (*pred_msbc<mode>_extended_scalar): Ditto.
27523 (@pred_madc<mode>_overflow): Ditto.
27524 (@pred_msbc<mode>_overflow): Ditto.
27525 (@pred_madc<mode>_overflow_scalar): Ditto.
27526 (@pred_msbc<mode>_overflow_scalar): Ditto.
27527 (*pred_madc<mode>_overflow_scalar): Ditto.
27528 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
27529 (*pred_msbc<mode>_overflow_scalar): Ditto.
27530 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
27531
27532 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27533
27534 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
27535 * config/riscv/riscv-v.cc (simm32_p): Ditto.
27536 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
27537 (class vsbc): Ditto.
27538 (BASE): Ditto.
27539 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27540 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
27541 (vsbc): Ditto.
27542 * config/riscv/riscv-vector-builtins-shapes.cc
27543 (struct no_mask_policy_def): Ditto.
27544 (SHAPE): Ditto.
27545 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27546 * config/riscv/riscv-vector-builtins.cc
27547 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
27548 (rvv_arg_type_info::get_tree_type): Ditto.
27549 (function_expander::use_exact_insn): Ditto.
27550 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
27551 (function_base::use_mask_predication_p): New function.
27552 * config/riscv/vector-iterators.md: New iterator.
27553 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
27554 (@pred_sbc<mode>): Ditto.
27555 (@pred_adc<mode>_scalar): Ditto.
27556 (@pred_sbc<mode>_scalar): Ditto.
27557 (*pred_adc<mode>_scalar): Ditto.
27558 (*pred_adc<mode>_extended_scalar): Ditto.
27559 (*pred_sbc<mode>_scalar): Ditto.
27560 (*pred_sbc<mode>_extended_scalar): Ditto.
27561
27562 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27563
27564 * config/riscv/vector.md: use "zero" reg.
27565
27566 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27567
27568 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
27569 class.
27570 (class vwmulsu): Ditto.
27571 (class vwcvt): Ditto.
27572 (BASE): Add integer widening support.
27573 * config/riscv/riscv-vector-builtins-bases.h: Ditto
27574 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
27575 (vwsub): New class.
27576 (vwmul): New class.
27577 (vwmulu): New class.
27578 (vwmulsu): New class.
27579 (vwaddu): New class.
27580 (vwsubu): New class.
27581 (vwcvt_x): New class.
27582 (vwcvtu_x): New class.
27583 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
27584 class.
27585 (struct widen_alu_def): New class.
27586 (SHAPE): New class.
27587 * config/riscv/riscv-vector-builtins-shapes.h: New class.
27588 * config/riscv/riscv-vector-builtins.cc
27589 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
27590 (rvv_arg_type_info::get_tree_type): Ditto.
27591 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
27592 (x_v): Ditto.
27593 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
27594 widening support.
27595 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
27596 * config/riscv/riscv.h (X0_REGNUM): New constant.
27597 * config/riscv/vector-iterators.md: New iterators.
27598 * config/riscv/vector.md
27599 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
27600 pattern.
27601 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
27602 Ditto.
27603 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
27604 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
27605 Ditto.
27606 (@pred_widen_mulsu<mode>): Ditto.
27607 (@pred_widen_mulsu<mode>_scalar): Ditto.
27608 (@pred_<optab><mode>): Ditto.
27609
27610 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27611 kito-cheng <kito.cheng@sifive.com>
27612
27613 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
27614 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
27615 (BASE): Ditto.
27616 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27617 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
27618 API support.
27619 (vmulhu): Ditto.
27620 (vmulhsu): Ditto.
27621 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
27622 New macro.
27623 (DEF_RVV_FULL_V_U_OPS): Ditto.
27624 (vint8mf8_t): Ditto.
27625 (vint8mf4_t): Ditto.
27626 (vint8mf2_t): Ditto.
27627 (vint8m1_t): Ditto.
27628 (vint8m2_t): Ditto.
27629 (vint8m4_t): Ditto.
27630 (vint8m8_t): Ditto.
27631 (vint16mf4_t): Ditto.
27632 (vint16mf2_t): Ditto.
27633 (vint16m1_t): Ditto.
27634 (vint16m2_t): Ditto.
27635 (vint16m4_t): Ditto.
27636 (vint16m8_t): Ditto.
27637 (vint32mf2_t): Ditto.
27638 (vint32m1_t): Ditto.
27639 (vint32m2_t): Ditto.
27640 (vint32m4_t): Ditto.
27641 (vint32m8_t): Ditto.
27642 (vint64m1_t): Ditto.
27643 (vint64m2_t): Ditto.
27644 (vint64m4_t): Ditto.
27645 (vint64m8_t): Ditto.
27646 (vuint8mf8_t): Ditto.
27647 (vuint8mf4_t): Ditto.
27648 (vuint8mf2_t): Ditto.
27649 (vuint8m1_t): Ditto.
27650 (vuint8m2_t): Ditto.
27651 (vuint8m4_t): Ditto.
27652 (vuint8m8_t): Ditto.
27653 (vuint16mf4_t): Ditto.
27654 (vuint16mf2_t): Ditto.
27655 (vuint16m1_t): Ditto.
27656 (vuint16m2_t): Ditto.
27657 (vuint16m4_t): Ditto.
27658 (vuint16m8_t): Ditto.
27659 (vuint32mf2_t): Ditto.
27660 (vuint32m1_t): Ditto.
27661 (vuint32m2_t): Ditto.
27662 (vuint32m4_t): Ditto.
27663 (vuint32m8_t): Ditto.
27664 (vuint64m1_t): Ditto.
27665 (vuint64m2_t): Ditto.
27666 (vuint64m4_t): Ditto.
27667 (vuint64m8_t): Ditto.
27668 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
27669 (DEF_RVV_FULL_V_U_OPS): Ditto.
27670 (check_required_extensions): Add vmulh support.
27671 (rvv_arg_type_info::get_tree_type): Ditto.
27672 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
27673 (enum rvv_base_type): Ditto.
27674 * config/riscv/riscv.opt: Add 'V' extension flag.
27675 * config/riscv/vector-iterators.md (su): New iterator.
27676 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
27677 (@pred_mulh<v_su><mode>_scalar): Ditto.
27678 (*pred_mulh<v_su><mode>_scalar): Ditto.
27679 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
27680
27681 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27682
27683 * config/riscv/iterators.md: Add sign_extend/zero_extend.
27684 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
27685 (BASE): Ditto.
27686 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
27687 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
27688 define.
27689 (vzext): Ditto.
27690 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
27691 for vsext/vzext support.
27692 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
27693 macro define.
27694 (DEF_RVV_QEXTI_OPS): Ditto.
27695 (DEF_RVV_OEXTI_OPS): Ditto.
27696 (DEF_RVV_WEXTU_OPS): Ditto.
27697 (DEF_RVV_QEXTU_OPS): Ditto.
27698 (DEF_RVV_OEXTU_OPS): Ditto.
27699 (vint16mf4_t): Ditto.
27700 (vint16mf2_t): Ditto.
27701 (vint16m1_t): Ditto.
27702 (vint16m2_t): Ditto.
27703 (vint16m4_t): Ditto.
27704 (vint16m8_t): Ditto.
27705 (vint32mf2_t): Ditto.
27706 (vint32m1_t): Ditto.
27707 (vint32m2_t): Ditto.
27708 (vint32m4_t): Ditto.
27709 (vint32m8_t): Ditto.
27710 (vint64m1_t): Ditto.
27711 (vint64m2_t): Ditto.
27712 (vint64m4_t): Ditto.
27713 (vint64m8_t): Ditto.
27714 (vuint16mf4_t): Ditto.
27715 (vuint16mf2_t): Ditto.
27716 (vuint16m1_t): Ditto.
27717 (vuint16m2_t): Ditto.
27718 (vuint16m4_t): Ditto.
27719 (vuint16m8_t): Ditto.
27720 (vuint32mf2_t): Ditto.
27721 (vuint32m1_t): Ditto.
27722 (vuint32m2_t): Ditto.
27723 (vuint32m4_t): Ditto.
27724 (vuint32m8_t): Ditto.
27725 (vuint64m1_t): Ditto.
27726 (vuint64m2_t): Ditto.
27727 (vuint64m4_t): Ditto.
27728 (vuint64m8_t): Ditto.
27729 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
27730 (DEF_RVV_QEXTI_OPS): Ditto.
27731 (DEF_RVV_OEXTI_OPS): Ditto.
27732 (DEF_RVV_WEXTU_OPS): Ditto.
27733 (DEF_RVV_QEXTU_OPS): Ditto.
27734 (DEF_RVV_OEXTU_OPS): Ditto.
27735 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
27736 support.
27737 (rvv_arg_type_info::get_tree_type): Ditto.
27738 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
27739 * config/riscv/vector-iterators.md (z): New attribute.
27740 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
27741 (@pred_<optab><mode>_vf4): Ditto.
27742 (@pred_<optab><mode>_vf8): Ditto.
27743
27744 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27745
27746 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
27747 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
27748 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
27749 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27750 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
27751 (vssub): Ditto.
27752 (vsaddu): Ditto.
27753 (vssubu): Ditto.
27754 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
27755 support.
27756 (sll.vv): Ditto.
27757 (%3,%v4): Ditto.
27758 (%3,%4): Ditto.
27759 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
27760 (@pred_<optab><mode>_scalar): New pattern.
27761 (*pred_<optab><mode>_scalar): New pattern.
27762 (*pred_<optab><mode>_extended_scalar): New pattern.
27763
27764 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27765
27766 * config/riscv/iterators.md: Add neg and not.
27767 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
27768 (BASE): Ditto.
27769 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27770 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
27771 into alu.
27772 (vsub): Ditto.
27773 (vand): Ditto.
27774 (vor): Ditto.
27775 (vxor): Ditto.
27776 (vsll): Ditto.
27777 (vsra): Ditto.
27778 (vsrl): Ditto.
27779 (vmin): Ditto.
27780 (vmax): Ditto.
27781 (vminu): Ditto.
27782 (vmaxu): Ditto.
27783 (vmul): Ditto.
27784 (vdiv): Ditto.
27785 (vrem): Ditto.
27786 (vdivu): Ditto.
27787 (vremu): Ditto.
27788 (vrsub): Ditto.
27789 (vneg): Ditto.
27790 (vnot): Ditto.
27791 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
27792 (struct alu_def): Ditto.
27793 (SHAPE): Ditto.
27794 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27795 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
27796 * config/riscv/vector-iterators.md: New iterator.
27797 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
27798
27799 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27800
27801 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
27802
27803 2023-02-11 Jakub Jelinek <jakub@redhat.com>
27804
27805 PR ipa/108605
27806 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
27807 item->offset bit position is too large to be representable as
27808 unsigned int byte position.
27809
27810 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
27811
27812 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
27813
27814 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
27815
27816 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
27817 valid_combine only when ira_use_lra_p is true.
27818
27819 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
27820
27821 * params.opt (ira-simple-lra-insn-threshold): Add new param.
27822 * ira.cc (ira): Use the param to switch on simple LRA.
27823
27824 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
27825
27826 PR tree-optimization/108687
27827 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
27828 back to RFD_NONE mode for calculations.
27829 (ranger_cache::propagate_cache): Call the internal edge range API
27830 with RFD_READ_ONLY instead of changing the external routine.
27831
27832 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
27833
27834 PR tree-optimization/108520
27835 * gimple-range-infer.cc (check_assume_func): Invoke
27836 gimple_range_global directly instead using global_range_query.
27837 * value-query.cc (get_range_global): Add function context and
27838 avoid calling nonnull_arg_p if not cfun.
27839 (gimple_range_global): Add function context pointer.
27840 * value-query.h (imple_range_global): Add function context.
27841
27842 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27843
27844 * config/riscv/constraints.md (Wdm): Adjust constraint.
27845 (Wbr): New constraint.
27846 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
27847 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
27848 (emit_vlmax_op): New function.
27849 (emit_nonvlmax_op): Ditto.
27850 (simm32_p): Ditto.
27851 (neg_simm5_p): Ditto.
27852 (has_vi_variant_p): Ditto.
27853 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
27854 (emit_vlmax_op): New function.
27855 (emit_nonvlmax_op): Ditto.
27856 (expand_const_vector): Adjust function.
27857 (legitimize_move): Ditto.
27858 (simm32_p): New function.
27859 (simm5_p): Ditto.
27860 (neg_simm5_p): Ditto.
27861 (has_vi_variant_p): Ditto.
27862 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
27863 (BASE): Ditto.
27864 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27865 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
27866 unsigned cases.
27867 (vmax): Ditto.
27868 (vminu): Remove signed cases.
27869 (vmaxu): Ditto.
27870 (vdiv): Remove unsigned cases.
27871 (vrem): Ditto.
27872 (vdivu): Remove signed cases.
27873 (vremu): Ditto.
27874 (vadd): Adjust.
27875 (vsub): Ditto.
27876 (vrsub): New class.
27877 (vand): Adjust.
27878 (vor): Ditto.
27879 (vxor): Ditto.
27880 (vmul): Ditto.
27881 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
27882 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
27883 * config/riscv/vector-iterators.md: New iterators.
27884 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
27885 support.
27886 (@pred_<optab><mode>_scalar): New pattern.
27887 (@pred_sub<mode>_reverse_scalar): Ditto.
27888 (*pred_<optab><mode>_scalar): Ditto.
27889 (*pred_<optab><mode>_extended_scalar): Ditto.
27890 (*pred_sub<mode>_reverse_scalar): Ditto.
27891 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
27892
27893 2023-02-10 Richard Biener <rguenther@suse.de>
27894
27895 PR tree-optimization/108724
27896 * tree-vect-stmts.cc (vectorizable_operation): Avoid
27897 using word_mode vectors when vector lowering will
27898 decompose them to elementwise operations.
27899
27900 2023-02-10 Jakub Jelinek <jakub@redhat.com>
27901
27902 Revert:
27903 2023-02-09 Martin Liska <mliska@suse.cz>
27904
27905 PR target/100758
27906 * doc/extend.texi: Document that the function
27907 does not work correctly for old VIA processors.
27908
27909 2023-02-10 Andrew Pinski <apinski@marvell.com>
27910 Andrew Macleod <amacleod@redhat.com>
27911
27912 PR tree-optimization/108684
27913 * tree-ssa-dce.cc (simple_dce_from_worklist):
27914 Check all ssa names and not just non-vdef ones
27915 before accepting the inline-asm.
27916 Call unlink_stmt_vdef on the statement before
27917 removing it.
27918
27919 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
27920
27921 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
27922 * ira.cc (validate_equiv_mem): Check memref address variance.
27923 (no_equiv): Clear caller_save_p flag.
27924 (update_equiv_regs): Define caller save equivalence for
27925 valid_combine.
27926 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
27927 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
27928 call_save_p. Use caller save equivalence depending on the arg.
27929 (split_reg): Adjust the call.
27930
27931 2023-02-09 Jakub Jelinek <jakub@redhat.com>
27932
27933 PR target/100758
27934 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
27935 (cpu_indicator_init): Call get_available_features for all CPUs with
27936 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
27937 fixes.
27938
27939 2023-02-09 Jakub Jelinek <jakub@redhat.com>
27940
27941 PR tree-optimization/108688
27942 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
27943 of BIT_INSERT_EXPR extracting exactly all inserted bits even
27944 when without mode precision. Formatting fixes.
27945
27946 2023-02-09 Andrew Pinski <apinski@marvell.com>
27947
27948 PR tree-optimization/108688
27949 * match.pd (bit_field_ref [bit_insert]): Avoid generating
27950 BIT_FIELD_REFs of non-mode-precision integral operands.
27951
27952 2023-02-09 Martin Liska <mliska@suse.cz>
27953
27954 PR target/100758
27955 * doc/extend.texi: Document that the function
27956 does not work correctly for old VIA processors.
27957
27958 2023-02-09 Andreas Schwab <schwab@suse.de>
27959
27960 * lto-wrapper.cc (merge_and_complain): Handle
27961 -funwind-tables and -fasynchronous-unwind-tables.
27962 (append_compiler_options): Likewise.
27963
27964 2023-02-09 Richard Biener <rguenther@suse.de>
27965
27966 PR tree-optimization/26854
27967 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
27968 view around insert_updated_phi_nodes_for.
27969 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
27970 in tree view.
27971 (walk_aliased_vdefs_1): Likewise.
27972
27973 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
27974
27975 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
27976
27977 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
27978
27979 PR target/108505
27980 * config.gcc (tm_mlib_file): Define new variable.
27981
27982 2023-02-08 Jakub Jelinek <jakub@redhat.com>
27983
27984 PR tree-optimization/108692
27985 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
27986 widened_code which is different from code, don't call
27987 vect_look_through_possible_promotion but instead just check op is
27988 SSA_NAME with integral type for which vect_is_simple_use is true
27989 and call set_op on this_unprom.
27990
27991 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
27992
27993 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
27994 declaration.
27995 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
27996 definition.
27997 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
27998 to 'aarch_ra_sign_key'.
27999 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
28000 declaration.
28001 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
28002 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
28003 * config/arm/arm.opt: Define.
28004
28005 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
28006
28007 PR tree-optimization/108316
28008 * tree-vect-stmts.cc (get_load_store_type): When using
28009 internal functions for gather/scatter, make sure that the type
28010 of the offset argument is consistent with the offset vector type.
28011
28012 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
28013
28014 Revert:
28015 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
28016
28017 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
28018 * ira.cc (validate_equiv_mem): Check memref address variance.
28019 (update_equiv_regs): Define caller save equivalence for
28020 valid_combine.
28021 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
28022 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
28023 call_save_p. Use caller save equivalence depending on the arg.
28024 (split_reg): Adjust the call.
28025
28026 2023-02-08 Jakub Jelinek <jakub@redhat.com>
28027
28028 * tree.def (SAD_EXPR): Remove outdated comment about missing
28029 WIDEN_MINUS_EXPR.
28030
28031 2023-02-07 Marek Polacek <polacek@redhat.com>
28032
28033 * doc/invoke.texi: Update -fchar8_t documentation.
28034
28035 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
28036
28037 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
28038 * ira.cc (validate_equiv_mem): Check memref address variance.
28039 (update_equiv_regs): Define caller save equivalence for
28040 valid_combine.
28041 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
28042 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
28043 call_save_p. Use caller save equivalence depending on the arg.
28044 (split_reg): Adjust the call.
28045
28046 2023-02-07 Richard Biener <rguenther@suse.de>
28047
28048 PR tree-optimization/26854
28049 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
28050 instead of immediate uses.
28051
28052 2023-02-07 Jakub Jelinek <jakub@redhat.com>
28053
28054 PR tree-optimization/106923
28055 * ipa-split.cc (execute_split_functions): Don't split returns_twice
28056 functions.
28057
28058 2023-02-07 Jakub Jelinek <jakub@redhat.com>
28059
28060 PR tree-optimization/106433
28061 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
28062 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
28063
28064 2023-02-07 Jan Hubicka <jh@suse.cz>
28065
28066 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
28067 for znver4.
28068
28069 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
28070
28071 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
28072 (process_asm): Create a constructor for GCN_STACK_SIZE.
28073 (main): Parse the -mstack-size option.
28074
28075 2023-02-06 Alex Coplan <alex.coplan@arm.com>
28076
28077 PR target/104921
28078 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
28079 Use correct constraint for operand 3.
28080
28081 2023-02-06 Martin Jambor <mjambor@suse.cz>
28082
28083 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
28084
28085 2023-02-06 Xi Ruoyao <xry111@xry111.site>
28086
28087 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
28088 New define_int_iterator.
28089 (bytepick_d_ashift_amount): Likewise.
28090 (bytepick_imm): New define_int_attr.
28091 (bytepick_w_lshiftrt_amount): Likewise.
28092 (bytepick_d_lshiftrt_amount): Likewise.
28093 (bytepick_w_<bytepick_imm>): New define_insn template.
28094 (bytepick_w_<bytepick_imm>_extend): Likewise.
28095 (bytepick_d_<bytepick_imm>): Likewise.
28096 (bytepick_w): Remove unused define_insn.
28097 (bytepick_d): Likewise.
28098 (UNSPEC_BYTEPICK_W): Remove unused unspec.
28099 (UNSPEC_BYTEPICK_D): Likewise.
28100 * config/loongarch/predicates.md (const_0_to_3_operand):
28101 Remove unused define_predicate.
28102 (const_0_to_7_operand): Likewise.
28103
28104 2023-02-06 Jakub Jelinek <jakub@redhat.com>
28105
28106 PR tree-optimization/108655
28107 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
28108 or -fsanitize=unreachable -fsanitize-trap=unreachable return
28109 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
28110
28111 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
28112
28113 * doc/install.texi (Specific): Remove PW32.
28114
28115 2023-02-03 Jakub Jelinek <jakub@redhat.com>
28116
28117 PR tree-optimization/108647
28118 * range-op.cc (operator_equal::op1_range,
28119 operator_not_equal::op1_range): Don't test op2 bound
28120 equality if op2.undefined_p (), instead set_varying.
28121 (operator_lt::op1_range, operator_le::op1_range,
28122 operator_gt::op1_range, operator_ge::op1_range): Return false if
28123 op2.undefined_p ().
28124 (operator_lt::op2_range, operator_le::op2_range,
28125 operator_gt::op2_range, operator_ge::op2_range): Return false if
28126 op1.undefined_p ().
28127
28128 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
28129
28130 PR tree-optimization/108639
28131 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
28132 widest_int.
28133 (irange::operator==): Same.
28134
28135 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
28136
28137 PR tree-optimization/108647
28138 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
28139 (foperator_lt::op2_range): Same.
28140 (foperator_le::op1_range): Same.
28141 (foperator_le::op2_range): Same.
28142 (foperator_gt::op1_range): Same.
28143 (foperator_gt::op2_range): Same.
28144 (foperator_ge::op1_range): Same.
28145 (foperator_ge::op2_range): Same.
28146 (foperator_unordered_lt::op1_range): Same.
28147 (foperator_unordered_lt::op2_range): Same.
28148 (foperator_unordered_le::op1_range): Same.
28149 (foperator_unordered_le::op2_range): Same.
28150 (foperator_unordered_gt::op1_range): Same.
28151 (foperator_unordered_gt::op2_range): Same.
28152 (foperator_unordered_ge::op1_range): Same.
28153 (foperator_unordered_ge::op2_range): Same.
28154
28155 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
28156
28157 PR tree-optimization/107570
28158 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
28159
28160 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
28161
28162 * doc/gm2.texi (Internals): Remove from menu.
28163 (Using): Comment out ifnohtml conditional.
28164 (Documentation): Use gcc url.
28165 (License): Node simplified.
28166 (Copying): New node. Include gpl_v3_without_node.
28167 (Contributing): Node simplified.
28168 (Internals): Commented out.
28169 (Libraries): Node simplified.
28170 (Indices): Ditto.
28171 (Contents): Ditto.
28172 (Functions): Ditto.
28173
28174 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
28175
28176 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
28177 attribute.
28178 (mve_vqshluq_m_n_s<mode>): Likewise.
28179 (mve_vshlq_m_<supf><mode>): Likewise.
28180 (mve_vsriq_m_n_<supf><mode>): Likewise.
28181 (mve_vsubq_m_<supf><mode>): Likewise.
28182
28183 2023-02-03 Martin Jambor <mjambor@suse.cz>
28184
28185 PR ipa/108384
28186 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
28187 when comparing to an IPA-CP value.
28188 (dump_list_of_param_indices): New function.
28189 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
28190 Dump removed candidates using dump_list_of_param_indices.
28191 * ipa-param-manipulation.cc
28192 (ipa_param_body_adjustments::modify_expression): Add assert checking
28193 sizes of a VIEW_CONVERT_EXPR will match.
28194 (ipa_param_body_adjustments::modify_assignment): Likewise.
28195
28196 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
28197
28198 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
28199 * config/riscv/riscv.cc: Ditto.
28200
28201 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28202
28203 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
28204 (sll.vv): Ditto.
28205 (%3,%4): Ditto.
28206 (%3,%v4): Ditto.
28207 * config/riscv/vector.md: Ditto.
28208
28209 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28210
28211 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
28212 * config/riscv/riscv-vector-builtins-bases.cc: New class.
28213 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
28214 (vsra): Ditto.
28215 (vsrl): Ditto.
28216 * config/riscv/riscv-vector-builtins.cc: Ditto.
28217 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
28218
28219 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
28220
28221 * toplev.cc (toplev::main): Only print the version information header
28222 from toplevel main().
28223
28224 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
28225
28226 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
28227 cond_{ashl|ashr|lshr}
28228
28229 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
28230
28231 PR rtl-optimization/108086
28232 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
28233 Adjust size-related commentary accordingly.
28234
28235 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
28236
28237 PR rtl-optimization/108508
28238 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
28239 the splay tree search gives the first clobber in the second group,
28240 make sure that the root of the first clobber group is updated
28241 correctly. Enter the new clobber group into the definition splay
28242 tree.
28243
28244 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
28245
28246 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
28247 Fix finding best match score.
28248
28249 2023-02-02 Jakub Jelinek <jakub@redhat.com>
28250
28251 PR debug/106746
28252 PR rtl-optimization/108463
28253 PR target/108484
28254 * cselib.cc (cselib_current_insn): Move declaration earlier.
28255 (cselib_hasher::equal): For debug only locs, temporarily override
28256 cselib_current_insn to their l->setting_insn for the
28257 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
28258 promote some debug locs.
28259 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
28260 when using cselib call cselib_lookup_from_insn on the address but
28261 don't substitute it.
28262
28263 2023-02-02 Richard Biener <rguenther@suse.de>
28264
28265 PR middle-end/108625
28266 * genmatch.cc (expr::gen_transform): Also disallow resimplification
28267 from pushing to lseq with force_leaf.
28268 (dt_simplify::gen_1): Likewise.
28269
28270 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
28271
28272 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
28273 (struct kernargs): Replace the common content with kernargs_abi.
28274 (struct heap): Delete.
28275 (main): Read GCN_STACK_SIZE envvar.
28276 Allocate space for the device stacks.
28277 Write the new kernargs fields.
28278 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
28279 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
28280 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
28281 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
28282 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
28283 Set up the stacks from the values in the kernargs, not private.
28284 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
28285 (gcn_hsa_declare_function_name): Turn off the private segment.
28286 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
28287 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
28288 * config/gcn/gcn.opt (mstack-size): Change the description.
28289
28290 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
28291
28292 PR target/108443
28293 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
28294 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
28295 addressing MVE predicate modes.
28296 (mve_bool_vec_to_const): Change to represent correct MVE predicate
28297 format.
28298 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
28299 modes.
28300 (arm_vector_mode_supported_p): Likewise.
28301 (arm_mode_to_pred_mode): Add V2QI.
28302 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
28303 qualifier.
28304 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
28305 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
28306 (v2qi_UP): New macro.
28307 (v4bi_UP): New macro.
28308 (v8bi_UP): New macro.
28309 (v16bi_UP): New macro.
28310 (arm_expand_builtin_args): Make it able to expand the new predicate
28311 modes.
28312 * config/arm/arm-modes.def (V2QI): New mode.
28313 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
28314 Pred4x4_t): Remove unused predicate builtin types.
28315 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
28316 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
28317 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
28318 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
28319 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
28320 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
28321 of MODE_VECTOR_BOOL.
28322 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
28323 (MVE_VPRED): Likewise.
28324 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
28325 (MVE_vctp): New mode attribute.
28326 (mode1): Remove.
28327 (VCTPQ): Remove.
28328 (VCTPQ_M): Remove.
28329 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
28330 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
28331 attributes.
28332 (mve_vpnothi): Rename this...
28333 (mve_vpnotv16bi): ... to this.
28334 (mve_vctp<mode1>q_mhi): Rename this...
28335 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
28336 (mve_vldrdq_gather_base_z_<supf>v2di,
28337 mve_vldrdq_gather_offset_z_<supf>v2di,
28338 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
28339 mve_vstrdq_scatter_base_p_<supf>v2di,
28340 mve_vstrdq_scatter_offset_p_<supf>v2di,
28341 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
28342 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
28343 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
28344 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
28345 mve_vldrdq_gather_base_wb_z_<supf>v2di,
28346 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
28347 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
28348 predicates.
28349 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
28350 these...
28351 (VCTP): ... with this.
28352 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
28353 (VCTP_M): ... with this.
28354 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
28355 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
28356
28357 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
28358
28359 PR target/107674
28360 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
28361 (arm_modes_tieable_p): Make MVE predicate modes tieable.
28362 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
28363 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
28364 simplify_subreg to simplify subregs where the outermode is not scalar.
28365
28366 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
28367
28368 PR target/107674
28369 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
28370 new qualifiers parameter and use unsigned short type for MVE predicate.
28371 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
28372 parameter.
28373 (arm_init_crypto_builtins): Likewise.
28374
28375 2023-02-02 Jakub Jelinek <jakub@redhat.com>
28376
28377 PR ipa/107300
28378 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
28379 * internal-fn.def (TRAP): Remove.
28380 * internal-fn.cc (expand_TRAP): Remove.
28381 * tree.cc (build_common_builtin_nodes): Define
28382 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
28383 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
28384 instead of BUILT_IN_TRAP.
28385 * gimple.cc (gimple_build_builtin_unreachable): Remove
28386 emitting internal function for BUILT_IN_TRAP.
28387 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
28388 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
28389 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
28390 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
28391 BUILT_IN_UNREACHABLE_TRAP.
28392 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
28393 * tree-cfg.cc (verify_gimple_call,
28394 pass_warn_function_return::execute): Likewise.
28395 * attribs.cc (decl_attributes): Don't report exclusions on
28396 BUILT_IN_UNREACHABLE_TRAP either.
28397
28398 2023-02-02 liuhongt <hongtao.liu@intel.com>
28399
28400 PR tree-optimization/108601
28401 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
28402 * tree-vect-loop.cc
28403 (vectorizable_nonlinear_induction): Remove
28404 vect_can_peel_nonlinear_iv_p.
28405 (vect_can_peel_nonlinear_iv_p): Don't peel
28406 nonlinear iv(mult or shift) for epilog when vf is not
28407 constant and moved the defination to ..
28408 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
28409 .. Here.
28410
28411 2023-02-02 Jakub Jelinek <jakub@redhat.com>
28412
28413 PR middle-end/108435
28414 * tree-nested.cc (convert_nonlocal_omp_clauses)
28415 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
28416 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
28417 before calling declare_vars.
28418 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
28419 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
28420 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
28421 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
28422
28423 2023-02-01 Tamar Christina <tamar.christina@arm.com>
28424
28425 * common/config/aarch64/aarch64-common.cc
28426 (struct aarch64_option_extension): Add native_detect and document struct
28427 a bit more.
28428 (all_extensions): Set new field native_detect.
28429 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
28430 unused struct.
28431
28432 2023-02-01 Martin Liska <mliska@suse.cz>
28433
28434 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
28435 value if set.
28436
28437 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
28438
28439 PR tree-optimization/108356
28440 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
28441 do a search of the DOM tree for a range.
28442
28443 2023-02-01 Martin Liska <mliska@suse.cz>
28444
28445 PR ipa/108509
28446 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
28447 ony non-null values.
28448 * ipa.cc (walk_polymorphic_call_targets): Likewise.
28449
28450 2023-02-01 Martin Liska <mliska@suse.cz>
28451
28452 PR driver/108572
28453 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
28454 -gz=zstd.
28455
28456 2023-02-01 Jakub Jelinek <jakub@redhat.com>
28457
28458 PR debug/108573
28459 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
28460 subregs in DEBUG_INSNs.
28461
28462 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
28463
28464 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
28465
28466 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
28467
28468 * config/s390/s390.cc (s390_restore_gpr_p): New function.
28469 (s390_preserve_gpr_arg_in_range_p): New function.
28470 (s390_preserve_gpr_arg_p): New function.
28471 (s390_preserve_fpr_arg_p): New function.
28472 (s390_register_info_stdarg_fpr): Rename to ...
28473 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
28474 (s390_register_info_stdarg_gpr): Rename to ...
28475 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
28476 (s390_register_info): Use the renamed functions above.
28477 (s390_optimize_register_info): Likewise.
28478 (save_fpr): Generate CFI for -mpreserve-args.
28479 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
28480 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
28481 (s390_optimize_prologue): Likewise.
28482 * config/s390/s390.opt: New option -mpreserve-args
28483
28484 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
28485
28486 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
28487 (restore_gprs): Likewise.
28488 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
28489 frame pointer if a frame-pointer is used.
28490 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
28491 * config/s390/s390.md (stack_tie): Add a register operand and
28492 rename to ...
28493 (@stack_tie<mode>): ... this.
28494
28495 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
28496
28497 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
28498 EMIT_CFI parameter.
28499 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
28500 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
28501
28502 2023-02-01 Richard Biener <rguenther@suse.de>
28503
28504 PR middle-end/108500
28505 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
28506 with tree traversal algorithm.
28507
28508 2023-02-01 Jason Merrill <jason@redhat.com>
28509
28510 * doc/invoke.texi: Document -Wno-changes-meaning.
28511
28512 2023-02-01 David Malcolm <dmalcolm@redhat.com>
28513
28514 * doc/invoke.texi (Static Analyzer Options): Add notes about
28515 limitations of -fanalyzer.
28516
28517 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28518
28519 * config/riscv/constraints.md (vj): New.
28520 (vk): Ditto
28521 * config/riscv/iterators.md: Add more opcode.
28522 * config/riscv/predicates.md (vector_arith_operand): New.
28523 (vector_neg_arith_operand): New.
28524 (vector_shift_operand): New.
28525 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
28526 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
28527 (vsub): Ditto.
28528 (vand): Ditto.
28529 (vor): Ditto.
28530 (vxor): Ditto.
28531 (vsll): Ditto.
28532 (vsra): Ditto.
28533 (vsrl): Ditto.
28534 (vmin): Ditto.
28535 (vmax): Ditto.
28536 (vminu): Ditto.
28537 (vmaxu): Ditto.
28538 (vmul): Ditto.
28539 (vdiv): Ditto.
28540 (vrem): Ditto.
28541 (vdivu): Ditto.
28542 (vremu): Ditto.
28543 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
28544 (vsub): Ditto.
28545 (vand): Ditto.
28546 (vor): Ditto.
28547 (vxor): Ditto.
28548 (vsll): Ditto.
28549 (vsra): Ditto.
28550 (vsrl): Ditto.
28551 (vmin): Ditto.
28552 (vmax): Ditto.
28553 (vminu): Ditto.
28554 (vmaxu): Ditto.
28555 (vmul): Ditto.
28556 (vdiv): Ditto.
28557 (vrem): Ditto.
28558 (vdivu): Ditto.
28559 (vremu): Ditto.
28560 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
28561 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
28562 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
28563 (DEF_RVV_U_OPS): New.
28564 (rvv_arg_type_info::get_base_vector_type): Handle
28565 RVV_BASE_shift_vector.
28566 (rvv_arg_type_info::get_tree_type): Ditto.
28567 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
28568 RVV_BASE_shift_vector.
28569 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
28570 * config/riscv/vector-iterators.md: Handle more opcode.
28571 * config/riscv/vector.md (@pred_<optab><mode>): New.
28572
28573 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
28574
28575 PR target/108589
28576 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
28577 REG_P on SET_DEST.
28578
28579 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
28580
28581 PR tree-optimization/108608
28582 * tree-vect-loop.cc (vect_transform_reduction): Handle single
28583 def-use cycles that involve function calls rather than tree codes.
28584
28585 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
28586
28587 PR tree-optimization/108385
28588 * gimple-range-gori.cc (gori_compute::compute_operand_range):
28589 Allow VARYING computations to continue if there is a relation.
28590 * range-op.cc (pointer_plus_operator::op2_range): New.
28591
28592 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
28593
28594 PR tree-optimization/108359
28595 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
28596 (range_operator::fold_range): If op1 is equivalent to op2 then
28597 invoke new fold_in_parts_equiv to operate on sub-components.
28598 * range-op.h (wi_fold_in_parts_equiv): New prototype.
28599
28600 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
28601
28602 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
28603 not abort calculations if there is a valid relation available.
28604 (gori_compute::refine_using_relation): Pass correct relation trio.
28605 (gori_compute::compute_operand1_range): Create trio and use it.
28606 (gori_compute::compute_operand2_range): Ditto.
28607 * range-op.cc (operator_plus::op1_range): Use correct trio member.
28608 (operator_minus::op1_range): Use correct trio member.
28609 * value-relation.cc (value_relation::create_trio): New.
28610 * value-relation.h (value_relation::create_trio): New prototype.
28611
28612 2023-01-31 Jakub Jelinek <jakub@redhat.com>
28613
28614 PR target/108599
28615 * config/i386/i386-expand.cc
28616 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
28617 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
28618 equal to bitsize of mode.
28619
28620 2023-01-31 Jakub Jelinek <jakub@redhat.com>
28621
28622 PR rtl-optimization/108596
28623 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
28624 ends with asm goto and has a crossing fallthrough edge to the same bb
28625 that contains at least one of its labels by restoring EDGE_CROSSING
28626 flag even on possible edge from cur_bb to new_bb successor.
28627
28628 2023-01-31 Jakub Jelinek <jakub@redhat.com>
28629
28630 PR c++/105593
28631 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
28632 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
28633 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
28634 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
28635 uninitialized automatic variable __W.
28636
28637 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
28638
28639 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
28640
28641 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28642
28643 * config/riscv/riscv-protos.h (get_vector_mode): New function.
28644 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
28645 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
28646 (class loadstore): Adjust for indexed loads/stores support.
28647 (BASE): Ditto.
28648 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
28649 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
28650 (vluxei16): Ditto.
28651 (vluxei32): Ditto.
28652 (vluxei64): Ditto.
28653 (vloxei8): Ditto.
28654 (vloxei16): Ditto.
28655 (vloxei32): Ditto.
28656 (vloxei64): Ditto.
28657 (vsuxei8): Ditto.
28658 (vsuxei16): Ditto.
28659 (vsuxei32): Ditto.
28660 (vsuxei64): Ditto.
28661 (vsoxei8): Ditto.
28662 (vsoxei16): Ditto.
28663 (vsoxei32): Ditto.
28664 (vsoxei64): Ditto.
28665 * config/riscv/riscv-vector-builtins-shapes.cc
28666 (struct indexed_loadstore_def): New class.
28667 (SHAPE): Ditto.
28668 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
28669 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
28670 for indexed loads/stores support.
28671 (check_required_extensions): Ditto.
28672 (rvv_arg_type_info::get_base_vector_type): New function.
28673 (rvv_arg_type_info::get_tree_type): Ditto.
28674 (function_builder::add_unique_function): Adjust for indexed loads/stores
28675 support.
28676 (function_expander::use_exact_insn): New function.
28677 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
28678 indexed loads/stores support.
28679 (struct rvv_arg_type_info): Ditto.
28680 (function_expander::index_mode): New function.
28681 (function_base::apply_tail_policy_p): Ditto.
28682 (function_base::apply_mask_policy_p): Ditto.
28683 * config/riscv/vector-iterators.md (unspec): New unspec.
28684 * config/riscv/vector.md (unspec): Ditto.
28685 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
28686 pattern.
28687 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
28688 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
28689 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
28690 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
28691 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
28692 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
28693 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
28694 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
28695 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
28696 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
28697 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
28698 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
28699 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
28700
28701 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
28702
28703 * config.gcc: Recognize x86_64-*-gnu* targets and include
28704 i386/gnu64.h.
28705 * config/i386/gnu64.h: Define configuration for new target
28706 including ld.so location.
28707
28708 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
28709
28710 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
28711 ampere1a to include SM4.
28712
28713 2023-01-30 Andrew Pinski <apinski@marvell.com>
28714
28715 PR tree-optimization/108582
28716 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
28717 for middlebb to have no phi nodes.
28718
28719 2023-01-30 Richard Biener <rguenther@suse.de>
28720
28721 PR tree-optimization/108574
28722 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
28723 sameval and def, ignore the equivalence if there's the
28724 danger of oscillating between two values.
28725
28726 2023-01-30 Andreas Schwab <schwab@suse.de>
28727
28728 * common/config/riscv/riscv-common.cc
28729 (riscv_option_optimization_table)
28730 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
28731 -fasynchronous-unwind-tables and -funwind-tables.
28732 * config.gcc (riscv*-*-linux*): Define
28733 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
28734
28735 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
28736
28737 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
28738 value of includedir.
28739
28740 2023-01-30 Richard Biener <rguenther@suse.de>
28741
28742 PR ipa/108511
28743 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
28744 assert.
28745
28746 2023-01-30 liuhongt <hongtao.liu@intel.com>
28747
28748 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
28749 * doc/invoke.texi: Ditto.
28750
28751 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
28752
28753 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
28754 (stmt_may_terminate_function_p): If assuming return or EH
28755 volatile asm is safe.
28756 (find_always_executed_bbs): Fix handling of terminating BBS and
28757 infinite loops; add debug output.
28758 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
28759
28760 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
28761
28762 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
28763 off-by-one in checking the permissible shift-amount.
28764
28765 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28766
28767 * doc/extend.texi (Named Address Spaces): Update link to the
28768 AVR-Libc manual.
28769
28770 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28771
28772 * doc/standards.texi (Standards): Fix markup.
28773
28774 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28775
28776 * doc/standards.texi (Standards): Update link to Objective-C book.
28777
28778 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28779
28780 * doc/invoke.texi (Instrumentation Options): Update reference to
28781 AddressSanitizer.
28782
28783 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28784
28785 * doc/standards.texi: Update Go1 link.
28786
28787 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28788
28789 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
28790 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
28791 Support vlse/vsse.
28792 (BASE): Ditto.
28793 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28794 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
28795 (vsse): New class.
28796 * config/riscv/riscv-vector-builtins.cc
28797 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
28798 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
28799 (@pred_strided_store<mode>): Ditto.
28800
28801 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28802
28803 * config/riscv/vector.md (tail_policy_op_idx): Remove.
28804 (mask_policy_op_idx): Remove.
28805 (avl_type_op_idx): Remove.
28806
28807 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
28808
28809 PR tree-optimization/96373
28810 * tree.h (sign_mask_for): Declare.
28811 * tree.cc (sign_mask_for): New function.
28812 (signed_or_unsigned_type_for): For vector types, try to use the
28813 related_int_vector_mode.
28814 * genmatch.cc (commutative_op): Handle conditional internal functions.
28815 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
28816
28817 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
28818
28819 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
28820 Use the likely minimum VF when bounding the denominators to
28821 the estimated number of iterations.
28822
28823 2023-01-27 Richard Biener <rguenther@suse.de>
28824
28825 PR target/55522
28826 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
28827 and -Ofast FP environment side-effects.
28828
28829 2023-01-27 Richard Biener <rguenther@suse.de>
28830
28831 PR target/55522
28832 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
28833 Don't add crtfastmath.o for -shared.
28834
28835 2023-01-27 Richard Biener <rguenther@suse.de>
28836
28837 PR target/55522
28838 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
28839 for -shared.
28840
28841 2023-01-27 Richard Biener <rguenther@suse.de>
28842
28843 PR target/55522
28844 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
28845 crtfastmath.o for -shared.
28846
28847 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
28848
28849 PR tree-optimization/108306
28850 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
28851 varying for shifts that are always out of void range.
28852 (operator_rshift::fold_range): Return [0, 0] not
28853 varying for shifts that are always out of void range.
28854
28855 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
28856
28857 PR tree-optimization/108447
28858 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
28859 Do not attempt to fold HONOR_NAN types.
28860
28861 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28862
28863 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
28864 Remove _m suffix for "vop_m" C++ overloaded API name.
28865
28866 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28867
28868 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
28869 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28870 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
28871 (vsm): Ditto.
28872 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
28873 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
28874 (vbool64_t): Ditto.
28875 (vbool32_t): Ditto.
28876 (vbool16_t): Ditto.
28877 (vbool8_t): Ditto.
28878 (vbool4_t): Ditto.
28879 (vbool2_t): Ditto.
28880 (vbool1_t): Ditto.
28881 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
28882 (rvv_arg_type_info::get_tree_type): Ditto.
28883 (function_expander::use_contiguous_load_insn): Ditto.
28884 * config/riscv/vector.md (@pred_store<mode>): Ditto.
28885
28886 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28887
28888 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
28889 (vsetvl_discard_result_insn_p): New function.
28890 (reg_killed_by_bb_p): rename to find_reg_killed_by.
28891 (find_reg_killed_by): New name.
28892 (get_vl): allow it to be called by more functions.
28893 (has_vsetvl_killed_avl_p): Add condition.
28894 (get_avl): allow it to be called by more functions.
28895 (insn_should_be_added_p): New function.
28896 (get_all_nonphi_defs): Refine function.
28897 (get_all_sets): Ditto.
28898 (get_same_bb_set): New function.
28899 (any_insn_in_bb_p): Ditto.
28900 (any_set_in_bb_p): Ditto.
28901 (get_vl_vtype_info): Add VLMAX forward optimization.
28902 (source_equal_p): Fix issues.
28903 (extract_single_source): Refine.
28904 (avl_info::multiple_source_equal_p): New function.
28905 (avl_info::operator==): Adjust for final version.
28906 (vl_vtype_info::operator==): Ditto.
28907 (vl_vtype_info::same_avl_p): Ditto.
28908 (vector_insn_info::parse_insn): Ditto.
28909 (vector_insn_info::available_p): New function.
28910 (vector_insn_info::merge): Adjust for final version.
28911 (vector_insn_info::dump): Add hard_empty.
28912 (pass_vsetvl::hard_empty_block_p): New function.
28913 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
28914 (pass_vsetvl::forward_demand_fusion): Ditto.
28915 (pass_vsetvl::demand_fusion): Ditto.
28916 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
28917 (pass_vsetvl::compute_local_properties): Adjust for final version.
28918 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
28919 (pass_vsetvl::refine_vsetvls): Ditto.
28920 (pass_vsetvl::commit_vsetvls): Ditto.
28921 (pass_vsetvl::propagate_avl): New function.
28922 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
28923 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
28924
28925 2023-01-27 Jakub Jelinek <jakub@redhat.com>
28926
28927 PR other/108560
28928 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
28929 from size_t to int.
28930
28931 2023-01-27 Jakub Jelinek <jakub@redhat.com>
28932
28933 PR ipa/106061
28934 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
28935 redirection of calls to __builtin_trap in addition to redirection
28936 to __builtin_unreachable.
28937
28938 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28939
28940 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
28941
28942 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28943
28944 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
28945 (emit_vsetvl_insn): Ditto.
28946
28947 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28948
28949 * config/riscv/vector.md: Fix constraints.
28950
28951 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28952
28953 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
28954
28955 2023-01-27 Patrick Palka <ppalka@redhat.com>
28956 Jakub Jelinek <jakub@redhat.com>
28957
28958 * tree-core.h (tree_code_type, tree_code_length): For
28959 C++17 and later, add inline keyword, otherwise don't define
28960 the arrays, but declare extern arrays.
28961 * tree.cc (tree_code_type, tree_code_length): Define these
28962 arrays for C++14 and older.
28963
28964 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28965
28966 * config/riscv/riscv-vsetvl.h: Change it into public.
28967
28968 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28969
28970 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
28971 pass.
28972
28973 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28974
28975 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
28976
28977 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28978
28979 * config/riscv/vector.md: Fix incorrect attributes.
28980
28981 2023-01-27 Richard Biener <rguenther@suse.de>
28982
28983 PR target/55522
28984 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
28985 Don't add crtfastmath.o for -shared.
28986
28987 2023-01-27 Alexandre Oliva <oliva@gnu.org>
28988
28989 * doc/options.texi (option, RejectNegative): Mention that
28990 -g-started options are also implicitly negatable.
28991
28992 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
28993
28994 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
28995 Use get_typenode_from_name to get fixed-width integer type
28996 nodes.
28997 * config/riscv/riscv-vector-builtins.def: Update define with
28998 fixed-width integer type nodes.
28999
29000 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29001
29002 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
29003 (real_insn_and_same_bb_p): New function.
29004 (same_bb_and_after_or_equal_p): Remove it.
29005 (before_p): New function.
29006 (reg_killed_by_bb_p): Ditto.
29007 (has_vsetvl_killed_avl_p): Ditto.
29008 (get_vl): Move location so that we can call it.
29009 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
29010 (available_occurrence_p): Ditto.
29011 (dominate_probability_p): Remove it.
29012 (can_backward_propagate_p): Remove it.
29013 (get_all_nonphi_defs): New function.
29014 (get_all_predecessors): Ditto.
29015 (any_insn_in_bb_p): Ditto.
29016 (insert_vsetvl): Adjust AVL REG.
29017 (source_equal_p): New function.
29018 (extract_single_source): Ditto.
29019 (avl_info::single_source_equal_p): Ditto.
29020 (avl_info::operator==): Adjust for AVL=REG.
29021 (vl_vtype_info::same_avl_p): Ditto.
29022 (vector_insn_info::set_demand_info): Remove it.
29023 (vector_insn_info::compatible_p): Adjust for AVL=REG.
29024 (vector_insn_info::compatible_avl_p): New function.
29025 (vector_insn_info::merge): Adjust AVL=REG.
29026 (vector_insn_info::dump): Ditto.
29027 (pass_vsetvl::merge_successors): Remove it.
29028 (enum fusion_type): New enum.
29029 (pass_vsetvl::get_backward_fusion_type): New function.
29030 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
29031 (pass_vsetvl::forward_demand_fusion): Ditto.
29032 (pass_vsetvl::demand_fusion): Ditto.
29033 (pass_vsetvl::prune_expressions): Ditto.
29034 (pass_vsetvl::compute_local_properties): Ditto.
29035 (pass_vsetvl::cleanup_vsetvls): Ditto.
29036 (pass_vsetvl::commit_vsetvls): Ditto.
29037 (pass_vsetvl::init): Ditto.
29038 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
29039 (enum merge_type): New enum.
29040
29041 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29042
29043 * config/riscv/riscv-vsetvl.cc
29044 (vector_infos_manager::vector_infos_manager): Add probability.
29045 (vector_infos_manager::dump): Ditto.
29046 (pass_vsetvl::compute_probabilities): Ditto.
29047 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
29048
29049 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29050
29051 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
29052 (vector_insn_info::merge): Ditto.
29053 (vector_insn_info::dump): Ditto.
29054 (pass_vsetvl::merge_successors): Ditto.
29055 (pass_vsetvl::backward_demand_fusion): Ditto.
29056 (pass_vsetvl::forward_demand_fusion): Ditto.
29057 (pass_vsetvl::commit_vsetvls): Ditto.
29058 * config/riscv/riscv-vsetvl.h: Ditto.
29059
29060 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29061
29062 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
29063 rinsn.
29064
29065 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29066
29067 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
29068
29069 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29070
29071 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
29072 Add pre-check for redundant flow.
29073
29074 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29075
29076 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
29077 (vector_infos_manager::free_bitmap_vectors): Ditto.
29078 (pass_vsetvl::pre_vsetvl): Adjust codes.
29079 * config/riscv/riscv-vsetvl.h: New function declaration.
29080
29081 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29082
29083 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
29084 (vector_insn_info::set_demand_info): New function.
29085 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
29086 (pass_vsetvl::merge_successors): Ditto.
29087 (pass_vsetvl::compute_global_backward_infos): Ditto.
29088 (pass_vsetvl::backward_demand_fusion): Ditto.
29089 (pass_vsetvl::forward_demand_fusion): Ditto.
29090 (pass_vsetvl::demand_fusion): New function.
29091 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
29092 * config/riscv/riscv-vsetvl.h: New function declaration.
29093
29094 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29095
29096 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
29097
29098 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29099
29100 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
29101 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
29102
29103 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29104
29105 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
29106 (backward_propagate_worthwhile_p): Fix non-worthwhile.
29107
29108 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29109
29110 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
29111
29112 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29113
29114 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
29115 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
29116 (pass_vsetvl::commit_vsetvls): Ditto.
29117 * config/riscv/riscv-vsetvl.h: New function declaration.
29118
29119 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29120
29121 * config/riscv/vector.md:
29122
29123 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29124
29125 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
29126 pred_store for vse.
29127 * config/riscv/riscv-vector-builtins.cc
29128 (function_expander::add_mem_operand): Refine function.
29129 (function_expander::use_contiguous_load_insn): Adjust new
29130 implementation.
29131 (function_expander::use_contiguous_store_insn): Ditto.
29132 * config/riscv/riscv-vector-builtins.h: Refine function.
29133 * config/riscv/vector.md (@pred_store<mode>): New pattern.
29134
29135 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29136
29137 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
29138
29139 2023-01-26 Marek Polacek <polacek@redhat.com>
29140
29141 PR middle-end/108543
29142 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
29143 if it was previously set.
29144
29145 2023-01-26 Jakub Jelinek <jakub@redhat.com>
29146
29147 PR tree-optimization/108540
29148 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
29149 are singletons, use range_true even if op1 != op2
29150 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
29151 even if intersection of the ranges is empty and one has
29152 zero low bound and another zero high bound, use range_true_and_false
29153 rather than range_false.
29154 (foperator_not_equal::fold_range): If both op1 and op2
29155 are singletons, use range_false even if op1 != op2
29156 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
29157 even if intersection of the ranges is empty and one has
29158 zero low bound and another zero high bound, use range_true_and_false
29159 rather than range_true.
29160
29161 2023-01-26 Jakub Jelinek <jakub@redhat.com>
29162
29163 * value-relation.cc (kind_string): Add const.
29164 (rr_negate_table, rr_swap_table, rr_intersect_table,
29165 rr_union_table, rr_transitive_table): Add static const, change
29166 element type from relation_kind to unsigned char.
29167 (relation_negate, relation_swap, relation_intersect, relation_union,
29168 relation_transitive): Cast rr_*_table element to relation_kind.
29169 (relation_to_code): Add static const.
29170 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
29171
29172 2023-01-26 Richard Biener <rguenther@suse.de>
29173
29174 PR tree-optimization/108547
29175 * gimple-predicate-analysis.cc (value_sat_pred_p):
29176 Use widest_int.
29177
29178 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
29179
29180 PR tree-optimization/108522
29181 * tree-object-size.cc (compute_object_offset): Make EXPR
29182 argument non-const. Call component_ref_field_offset.
29183
29184 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29185
29186 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
29187 FEATURE_STRING field.
29188
29189 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
29190
29191 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
29192
29193 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
29194
29195 PR modula2/102343
29196 PR modula2/108182
29197 * gcc.cc: Provide default specs for Modula-2 so that when the
29198 language is not built-in better diagnostics are emitted for
29199 attempts to use .mod or .m2i file extensions.
29200
29201 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29202
29203 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
29204
29205 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29206
29207 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
29208
29209 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29210
29211 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
29212 Fix spacing.
29213
29214 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29215
29216 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
29217
29218 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29219
29220 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
29221
29222 2023-01-25 Richard Biener <rguenther@suse.de>
29223
29224 PR tree-optimization/108523
29225 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
29226 backedge value for the result when using predication to
29227 prove equivalence.
29228
29229 2023-01-25 Richard Biener <rguenther@suse.de>
29230
29231 * doc/lto.texi (Command line options): Reword and update reference
29232 to removed lto_read_all_file_options.
29233
29234 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
29235
29236 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
29237 tests.
29238
29239 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
29240
29241 * doc/contrib.texi: Add Jose E. Marchesi.
29242
29243 2023-01-25 Jakub Jelinek <jakub@redhat.com>
29244
29245 PR tree-optimization/108498
29246 * gimple-ssa-store-merging.cc (class store_operand_info):
29247 End coment with full stop rather than comma.
29248 (split_group): Likewise.
29249 (merged_store_group::apply_stores): Clear string_concatenation if
29250 start or end aren't on a byte boundary.
29251
29252 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
29253 Jakub Jelinek <jakub@redhat.com>
29254
29255 PR tree-optimization/108522
29256 * tree-object-size.cc (compute_object_offset): Use
29257 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
29258
29259 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29260
29261 * config/xtensa/xtensa.md:
29262 Fix exit from loops detecting references before overwriting in the
29263 split pattern.
29264
29265 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
29266
29267 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
29268 do elimination but only for hard register.
29269 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
29270 calls of get_hard_regno.
29271
29272 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
29273
29274 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
29275 of CPU version.
29276
29277 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
29278
29279 PR target/108177
29280 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
29281 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
29282 as input operand.
29283
29284 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
29285
29286 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
29287 and only include 'csky/t-csky-linux' when enable multilib.
29288 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
29289 define it when disable multilib.
29290
29291 2023-01-24 Richard Biener <rguenther@suse.de>
29292
29293 PR tree-optimization/108500
29294 * dominance.h (calculate_dominance_info): Add parameter
29295 to indicate fast-query compute, defaulted to true.
29296 * dominance.cc (calculate_dominance_info): Honor
29297 fast-query compute parameter.
29298 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
29299 not compute the dominator fast-query DFS numbers.
29300
29301 2023-01-24 Eric Biggers <ebiggers@google.com>
29302
29303 PR bootstrap/90543
29304 * optc-save-gen.awk: Fix copy-and-paste error.
29305
29306 2023-01-24 Jakub Jelinek <jakub@redhat.com>
29307
29308 PR c++/108474
29309 * cgraphbuild.cc: Include gimplify.h.
29310 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
29311 their corresponding DECL_VALUE_EXPR expressions after unsharing.
29312
29313 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29314
29315 PR target/108505
29316 * config.gcc (tm_file): Move the variable out of loop.
29317
29318 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
29319 Yang Yujie <yangyujie@loongson.cn>
29320
29321 PR target/107731
29322 * config/loongarch/loongarch.cc (loongarch_classify_address):
29323 Add precessint for CONST_INT.
29324 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
29325 (loongarch_print_operand): Increase the processing of '%c'.
29326 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
29327 And port the public operand modifiers information to this document.
29328
29329 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29330
29331 * doc/invoke.texi (-mbranch-protection): Update documentation.
29332
29333 2023-01-23 Richard Biener <rguenther@suse.de>
29334
29335 PR target/55522
29336 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
29337 for -shared.
29338 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
29339 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
29340 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
29341 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
29342
29343 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29344
29345 * config/arm/aout.h (ra_auth_code): Add entry in enum.
29346 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
29347 to dwarf frame expression.
29348 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
29349 (arm_expand_prologue): Update frame related information and reg notes
29350 for pac/pacbit insn.
29351 (arm_regno_class): Check for pac pseudo reigster.
29352 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
29353 (arm_init_machine_status): Set pacspval_needed to zero.
29354 (arm_debugger_regno): Check for PAC register.
29355 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
29356 register.
29357 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
29358 (arm_unwind_emit): Update REG_CFA_REGISTER case._
29359 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
29360 (DWARF_PAC_REGNUM): Define.
29361 (IS_PAC_REGNUM): Likewise.
29362 (enum reg_class): Add PAC_REG entry.
29363 (machine_function): Add pacbti_needed state to structure.
29364 * config/arm/arm.md (RA_AUTH_CODE): Define.
29365
29366 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29367
29368 * config.gcc ($tm_file): Update variable.
29369 * config/arm/arm-mlib.h: Create new header file.
29370 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
29371 multilib arch directory.
29372 (MULTILIB_REUSE): Add multilib reuse rules.
29373 (MULTILIB_MATCHES): Add multilib match rules.
29374
29375 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29376
29377 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
29378 * config/arm/arm-tables.opt: Regenerate.
29379 * config/arm/arm-tune.md: Likewise.
29380 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
29381 * (-mfix-cmse-cve-2021-35465): Likewise.
29382
29383 2023-01-23 Richard Biener <rguenther@suse.de>
29384
29385 PR tree-optimization/108482
29386 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
29387 .LOOP_DIST_ALIAS calls.
29388
29389 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29390
29391 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
29392 * config/arm/arm-protos.h: Update.
29393 * config/arm/aarch-common-protos.h: Declare
29394 'aarch_bti_arch_check'.
29395 * config/arm/arm.cc (aarch_bti_enabled) Update.
29396 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
29397 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
29398 * config/arm/arm.md (bti_nop): New insn.
29399 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
29400 (aarch-bti-insert.o): New target.
29401 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
29402 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
29403 compatibility.
29404 (gate): Make use of 'aarch_bti_arch_check'.
29405 * config/arm/arm-passes.def: New file.
29406 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
29407
29408 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29409
29410 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
29411 'aarch-bti-insert.o'.
29412 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
29413 proto.
29414 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
29415 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
29416 (aarch64_output_mi_thunk)
29417 (aarch64_print_patchable_function_entry)
29418 (aarch64_file_end_indicate_exec_stack): Update renamed function
29419 calls to renamed functions.
29420 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
29421 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
29422 target.
29423 * config/aarch64/aarch64-bti-insert.cc: Delete.
29424 * config/arm/aarch-bti-insert.cc: New file including and
29425 generalizing code from aarch64-bti-insert.cc.
29426 * config/arm/aarch-common-protos.h: Update.
29427
29428 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29429
29430 * config/arm/arm.h (arm_arch8m_main): Declare it.
29431 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
29432 Declare it.
29433 * config/arm/arm.cc (arm_arch8m_main): Define it.
29434 (arm_option_reconfigure_globals): Set arm_arch8m_main.
29435 (arm_compute_frame_layout, arm_expand_prologue)
29436 (thumb2_expand_return, arm_expand_epilogue)
29437 (arm_conditional_register_usage): Update for pac codegen.
29438 (arm_current_function_pac_enabled_p): New function.
29439 (aarch_bti_enabled) New function.
29440 (use_return_insn): Return zero when pac is enabled.
29441 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
29442 Add new patterns.
29443 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
29444 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
29445
29446 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29447
29448 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
29449 mbranch-protection.
29450
29451 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29452 Tejas Belagod <tbelagod@arm.com>
29453
29454 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
29455 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
29456
29457 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29458 Tejas Belagod <tbelagod@arm.com>
29459 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29460
29461 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
29462 new pseudo register class _UVRSC_PAC.
29463
29464 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29465 Tejas Belagod <tbelagod@arm.com>
29466
29467 * config/arm/arm-c.cc (arm_cpu_builtins): Define
29468 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
29469 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
29470
29471 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29472 Tejas Belagod <tbelagod@arm.com>
29473
29474 * doc/sourcebuild.texi: Document arm_pacbti_hw.
29475
29476 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29477 Tejas Belagod <tbelagod@arm.com>
29478 Richard Earnshaw <Richard.Earnshaw@arm.com>
29479
29480 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
29481 -mbranch-protection option and initialize appropriate data structures.
29482 * config/arm/arm.opt (-mbranch-protection): New option.
29483 * doc/invoke.texi (Arm Options): Document it.
29484
29485 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29486 Tejas Belagod <tbelagod@arm.com>
29487
29488 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
29489 * config/arm/arm-cpus.in (pacbti): New feature.
29490 * doc/invoke.texi (Arm Options): Document it.
29491
29492 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29493 Tejas Belagod <tbelagod@arm.com>
29494
29495 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
29496 (all_architectures): Fix comment.
29497 (aarch64_parse_extension): Rename return type, enum value names.
29498 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
29499 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
29500 Also rename corresponding enum values.
29501 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
29502 out aarch64_function_type and move it to common code as
29503 aarch_function_type in aarch-common.h.
29504 * config/aarch64/aarch64-protos.h: Include common types header,
29505 move out types aarch64_parse_opt_result and aarch64_key_type to
29506 aarch-common.h
29507 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
29508 and functions out into aarch-common.h and aarch-common.cc. Fix up
29509 all the name changes resulting from the move.
29510 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
29511 and enum value.
29512 * config/aarch64/aarch64.opt: Include aarch-common.h to import
29513 type move. Fix up name changes from factoring out common code and
29514 data.
29515 * config/arm/aarch-common-protos.h: Export factored out routines to both
29516 backends.
29517 * config/arm/aarch-common.cc: Include newly factored out types.
29518 Move all mbranch-protection code and data structures from
29519 aarch64.cc.
29520 * config/arm/aarch-common.h: New header that declares types shared
29521 between aarch32 and aarch64 backends.
29522 * config/arm/arm-protos.h: Declare types and variables that are
29523 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
29524 aarch_ra_sign_scope and aarch_enable_bti.
29525 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
29526 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
29527 * config/arm/arm.cc: Add missing includes.
29528
29529 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
29530
29531 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
29532
29533 2023-01-23 Richard Biener <rguenther@suse.de>
29534
29535 PR tree-optimization/108449
29536 * cgraphunit.cc (check_global_declaration): Do not turn
29537 undefined statics into externs.
29538
29539 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
29540
29541 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
29542 and HI input modes.
29543 * config/pru/pru.md (clz): Fix generated code for QI and HI
29544 input modes.
29545
29546 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
29547
29548 * config/v850/v850.cc (v850_select_section): Put const volatile
29549 objects into read-only sections.
29550
29551 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
29552
29553 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
29554 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
29555 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
29556
29557 2023-01-20 Jakub Jelinek <jakub@redhat.com>
29558
29559 PR tree-optimization/108457
29560 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
29561 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
29562 argument instead of a temporary. Formatting fixes.
29563
29564 2023-01-19 Jakub Jelinek <jakub@redhat.com>
29565
29566 PR tree-optimization/108447
29567 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
29568 (relation_tests): Add self-tests for relation_{intersect,union}
29569 commutativity.
29570 * selftest.h (relation_tests): Declare.
29571 * function-tests.cc (test_ranges): Call it.
29572
29573 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
29574
29575 PR target/108436
29576 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
29577 invalid third argument to __builtin_ia32_prefetch.
29578
29579 2023-01-19 Jakub Jelinek <jakub@redhat.com>
29580
29581 PR middle-end/108459
29582 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
29583 than fold_unary for NEGATE_EXPR.
29584
29585 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
29586
29587 PR target/108411
29588 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
29589 comment. Move assert about alignment a bit later.
29590
29591 2023-01-19 Jakub Jelinek <jakub@redhat.com>
29592
29593 PR tree-optimization/108440
29594 * tree-ssa-forwprop.cc: Include gimple-range.h.
29595 (simplify_rotate): For the forms with T2 wider than T and shift counts of
29596 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
29597 to B. For the forms with T2 wider than T and shift counts of
29598 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
29599 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
29600 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
29601 pass specific ranger instead of get_global_range_query.
29602 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
29603 been created.
29604
29605 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
29606
29607 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
29608 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
29609 the pattern.
29610 (aarch64_simd_vec_copy_lane<mode>): Likewise.
29611 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
29612
29613 2023-01-19 Alexandre Oliva <oliva@adacore.com>
29614
29615 PR debug/106746
29616 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
29617 within debug insns.
29618
29619 2023-01-18 Martin Jambor <mjambor@suse.cz>
29620
29621 PR ipa/107944
29622 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
29623 lcone_of chain also do not need the body.
29624
29625 2023-01-18 Richard Biener <rguenther@suse.de>
29626
29627 Revert:
29628 2022-12-16 Richard Biener <rguenther@suse.de>
29629
29630 PR middle-end/108086
29631 * tree-inline.cc (remap_ssa_name): Do not unshare the
29632 result from the decl_map.
29633
29634 2023-01-18 Murray Steele <murray.steele@arm.com>
29635
29636 PR target/108442
29637 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
29638 function.
29639 (__arm_vst1q_p_s8): Likewise.
29640 (__arm_vld1q_z_u8): Likewise.
29641 (__arm_vld1q_z_s8): Likewise.
29642 (__arm_vst1q_p_u16): Likewise.
29643 (__arm_vst1q_p_s16): Likewise.
29644 (__arm_vld1q_z_u16): Likewise.
29645 (__arm_vld1q_z_s16): Likewise.
29646 (__arm_vst1q_p_u32): Likewise.
29647 (__arm_vst1q_p_s32): Likewise.
29648 (__arm_vld1q_z_u32): Likewise.
29649 (__arm_vld1q_z_s32): Likewise.
29650 (__arm_vld1q_z_f16): Likewise.
29651 (__arm_vst1q_p_f16): Likewise.
29652 (__arm_vld1q_z_f32): Likewise.
29653 (__arm_vst1q_p_f32): Likewise.
29654
29655 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29656
29657 * config/xtensa/xtensa.md (xorsi3_internal):
29658 Rename from the original of "xorsi3".
29659 (xorsi3): New expansion pattern that emits addition rather than
29660 bitwise-XOR when the second source is a constant of -2147483648
29661 if TARGET_DENSITY.
29662
29663 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
29664 Andrew Pinski <apinski@marvell.com>
29665
29666 PR target/108396
29667 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
29668 vec_vsubcuqP with vec_vsubcuq.
29669
29670 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
29671
29672 PR target/108348
29673 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
29674 support for invalid uses of MMA opaque type in function arguments.
29675
29676 2023-01-18 liuhongt <hongtao.liu@intel.com>
29677
29678 PR target/55522
29679 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
29680 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
29681 -share or -mno-daz-ftz is specified.
29682 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
29683 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
29684
29685 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
29686
29687 * config/bpf/bpf.cc (bpf_option_override): Disable
29688 -fstack-protector.
29689
29690 2023-01-17 Jakub Jelinek <jakub@redhat.com>
29691
29692 PR tree-optimization/106523
29693 * tree-ssa-forwprop.cc (simplify_rotate): For the
29694 patterns with (-Y) & (B - 1) in one operand's shift
29695 count and Y in another, if T2 has wider precision than T,
29696 punt if Y could have a value in [B, B2 - 1] range.
29697
29698 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
29699
29700 PR target/105980
29701 * config/i386/i386.cc (x86_output_mi_thunk): Disable
29702 -mforce-indirect-call for PIC in 32-bit mode.
29703
29704 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
29705
29706 PR ipa/106077
29707 * ipa-modref.cc (modref_access_analysis::analyze): Use
29708 find_always_executed_bbs.
29709 * ipa-sra.cc (process_scan_results): Likewise.
29710 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
29711 (find_always_executed_bbs): New function.
29712 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
29713 (find_always_executed_bbs): Declare.
29714
29715 2023-01-16 Jan Hubicka <jh@suse.cz>
29716
29717 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
29718 by TARGET_USE_SCATTER.
29719 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
29720 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
29721 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
29722 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
29723 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
29724 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
29725
29726 2023-01-16 Richard Biener <rguenther@suse.de>
29727
29728 PR target/55522
29729 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
29730
29731 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
29732
29733 PR target/96795
29734 PR target/107515
29735 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
29736 (__ARM_mve_coerce3): Likewise.
29737
29738 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29739
29740 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
29741
29742 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29743
29744 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
29745 (number_of_iterations_bitcount): Add call to the above.
29746 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
29747 c[lt]z idiom recognition.
29748
29749 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29750
29751 * doc/sourcebuild.texi: Add missing target attributes.
29752
29753 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29754
29755 PR tree-optimization/94793
29756 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
29757 for c[lt]z optabs.
29758 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
29759 (number_of_iterations_cltz_complement): New.
29760 (number_of_iterations_bitcount): Add call to the above.
29761
29762 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
29763
29764 * doc/extend.texi (Common Function Attributes): Fix grammar.
29765
29766 2023-01-16 Jakub Jelinek <jakub@redhat.com>
29767
29768 PR other/108413
29769 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
29770 * config/riscv/riscv-vsetvl.cc: Likewise.
29771
29772 2023-01-16 Jakub Jelinek <jakub@redhat.com>
29773
29774 PR c++/105593
29775 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
29776 disable -Winit-self using pragma GCC diagnostic ignored.
29777 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
29778 Likewise.
29779 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
29780 _mm256_undefined_si256): Likewise.
29781 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
29782 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
29783 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
29784 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
29785
29786 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
29787
29788 PR target/108272
29789 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
29790 support for invalid uses in inline asm, factor out the checking and
29791 erroring to lambda function check_and_error_invalid_use.
29792
29793 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
29794
29795 PR tree-optimization/107608
29796 * range-op-float.cc (range_operator_float::fold_range): Avoid
29797 folding into INF when flag_trapping_math.
29798 * value-range.h (frange::known_isinf): Return false for possible NANs.
29799
29800 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
29801
29802 * config.gcc (csky-*-*): Support --with-float=softfp.
29803
29804 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29805
29806 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
29807 Rename to xtensa_adjust_reg_alloc_order.
29808 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
29809 Ditto. And also remove code to reorder register numbers for
29810 leaf functions, rename the tables, and adjust the allocation
29811 order for the call0 ABI to use register A0 more.
29812 (xtensa_leaf_regs): Remove.
29813 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
29814 (order_regs_for_local_alloc): Rename as the above.
29815 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
29816
29817 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
29818
29819 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
29820 Change to define_insn_and_split to fold ldr+dup to ld1rq.
29821 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
29822
29823 2023-01-14 Alexandre Oliva <oliva@adacore.com>
29824
29825 * hash-table.h (is_deleted): Precheck !is_empty.
29826 (mark_deleted): Postcheck !is_empty.
29827 (copy constructor): Test is_empty before is_deleted.
29828
29829 2023-01-14 Alexandre Oliva <oliva@adacore.com>
29830
29831 PR target/40457
29832 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
29833 moves.
29834
29835 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
29836
29837 PR rtl-optimization/108274
29838 * function.cc (thread_prologue_and_epilogue_insns): Also update the
29839 DF information for calls in a few more cases.
29840
29841 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
29842
29843 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
29844 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
29845 define.
29846 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
29847 (MAX_SYNC_LIBFUNC_SIZE): Define.
29848 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
29849 enabled.
29850 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
29851 libcall when sync libcalls are disabled.
29852 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
29853 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
29854 are disabled on 32-bit target.
29855 * config/pa/pa.opt (matomic-libcalls): New option.
29856 * doc/invoke.texi (HPPA Options): Update.
29857
29858 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
29859
29860 PR rtl-optimization/108117
29861 PR rtl-optimization/108132
29862 * sched-deps.cc (deps_analyze_insn): Do not schedule across
29863 calls before reload.
29864
29865 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29866
29867 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
29868 options for -mlibarch.
29869 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
29870 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
29871
29872 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
29873
29874 * attribs.cc (strict_flex_array_level_of): Move this function to ...
29875 * attribs.h (strict_flex_array_level_of): Remove the declaration.
29876 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
29877 replace the referece to strict_flex_array_level_of with
29878 DECL_NOT_FLEXARRAY.
29879 * tree.cc (component_ref_size): Likewise.
29880
29881 2023-01-13 Richard Biener <rguenther@suse.de>
29882
29883 PR target/55522
29884 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
29885 crtfastmath.o for -shared.
29886 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
29887
29888 2023-01-13 Richard Biener <rguenther@suse.de>
29889
29890 PR target/55522
29891 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
29892 crtfastmath.o for -shared.
29893 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
29894 Likewise.
29895 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
29896 Likewise.
29897
29898 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
29899
29900 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
29901 function.
29902 (TARGET_DWARF_FRAME_REG_MODE): Define.
29903
29904 2023-01-13 Richard Biener <rguenther@suse.de>
29905
29906 PR target/107209
29907 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
29908 update EH info on the fly.
29909
29910 2023-01-13 Richard Biener <rguenther@suse.de>
29911
29912 PR tree-optimization/108387
29913 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
29914 value before inserting expression into the tables.
29915
29916 2023-01-12 Andrew Pinski <apinski@marvell.com>
29917 Roger Sayle <roger@nextmovesoftware.com>
29918
29919 PR tree-optimization/92342
29920 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
29921 Use tcc_comparison and :c for the multiply.
29922 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
29923
29924 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
29925 Richard Sandiford <richard.sandiford@arm.com>
29926
29927 PR target/105549
29928 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
29929 Check DECL_PACKED for bitfield.
29930 (aarch64_layout_arg): Warn when parameter passing ABI changes.
29931 (aarch64_function_arg_boundary): Do not warn here.
29932 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
29933 changes.
29934
29935 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
29936 Richard Sandiford <richard.sandiford@arm.com>
29937
29938 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
29939 comment.
29940 (aarch64_layout_arg): Factorize warning conditions.
29941 (aarch64_function_arg_boundary): Fix typo.
29942 * function.cc (currently_expanding_function_start): New variable.
29943 (expand_function_start): Handle
29944 currently_expanding_function_start.
29945 * function.h (currently_expanding_function_start): Declare.
29946
29947 2023-01-12 Richard Biener <rguenther@suse.de>
29948
29949 PR tree-optimization/99412
29950 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
29951 (swap_ops_for_binary_stmt): Remove reduction handling.
29952 (rewrite_expr_tree_parallel): Adjust.
29953 (reassociate_bb): Likewise.
29954 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
29955
29956 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29957
29958 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
29959 Rearrange the emitting codes.
29960
29961 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29962
29963 * config/xtensa/xtensa.md (*btrue):
29964 Correct value of the attribute "length" that depends on
29965 TARGET_DENSITY and operands, and add '?' character to the register
29966 constraint of the compared operand.
29967
29968 2023-01-12 Alexandre Oliva <oliva@adacore.com>
29969
29970 * hash-table.h (expand): Check elements and deleted counts.
29971 (verify): Likewise.
29972
29973 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
29974
29975 PR tree-optimization/71343
29976 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
29977 the value number of the expression X << C the same as the value
29978 number for the multiplication X * (1<<C).
29979
29980 2023-01-11 David Faust <david.faust@oracle.com>
29981
29982 PR target/108293
29983 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
29984 floating point modes.
29985
29986 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
29987
29988 PR tree-optimization/108199
29989 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
29990 for bit-field references.
29991
29992 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
29993
29994 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
29995 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
29996 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
29997 OPTION_MASK_P10_FUSION.
29998
29999 2023-01-11 Richard Biener <rguenther@suse.de>
30000
30001 PR tree-optimization/107767
30002 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
30003 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
30004 * tree-switch-conversion.cc (switch_conversion::collect):
30005 Count unique non-default targets accounting for later
30006 merging opportunities.
30007
30008 2023-01-11 Martin Liska <mliska@suse.cz>
30009
30010 PR middle-end/107976
30011 * params.opt: Limit JT params.
30012 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
30013
30014 2023-01-11 Richard Biener <rguenther@suse.de>
30015
30016 PR tree-optimization/108352
30017 * tree-ssa-threadbackward.cc
30018 (back_threader_profitability::profitable_path_p): Adjust
30019 heuristic that allows non-multi-way branch threads creating
30020 irreducible loops.
30021 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
30022 (--param fsm-scale-path-stmts): Adjust.
30023 * params.opt (--param=fsm-scale-path-blocks=): Remove.
30024 (-param=fsm-scale-path-stmts=): Adjust description.
30025
30026 2023-01-11 Richard Biener <rguenther@suse.de>
30027
30028 PR tree-optimization/108353
30029 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
30030 Remove.
30031 (add_ssa_edge): Simplify.
30032 (add_control_edge): Likewise.
30033 (ssa_prop_init): Likewise.
30034 (ssa_prop_fini): Likewise.
30035 (ssa_propagation_engine::ssa_propagate): Likewise.
30036
30037 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
30038
30039 * config/s390/s390.md (*not<mode>): New pattern.
30040
30041 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
30042
30043 * config/xtensa/xtensa.cc (xtensa_insn_cost):
30044 Let insn cost for size be obtained by applying COSTS_N_INSNS()
30045 to instruction length and then dividing by 3.
30046
30047 2023-01-10 Richard Biener <rguenther@suse.de>
30048
30049 PR tree-optimization/106293
30050 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
30051 process degenerate PHI defs.
30052
30053 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
30054
30055 PR rtl-optimization/106421
30056 * cprop.cc (bypass_block): Check that DEST is local to this
30057 function (non-NULL) before calling find_edge.
30058
30059 2023-01-10 Martin Jambor <mjambor@suse.cz>
30060
30061 PR ipa/108110
30062 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
30063 sort_replacements, lookup_first_base_replacement and
30064 m_sorted_replacements_p.
30065 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
30066 (ipa_param_body_adjustments::register_replacement): Set
30067 m_sorted_replacements_p to false.
30068 (compare_param_body_replacement): New function.
30069 (ipa_param_body_adjustments::sort_replacements): Likewise.
30070 (ipa_param_body_adjustments::common_initialization): Call
30071 sort_replacements.
30072 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
30073 m_sorted_replacements_p.
30074 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
30075 std::lower_bound.
30076 (ipa_param_body_adjustments::lookup_first_base_replacement): New
30077 function.
30078 (ipa_param_body_adjustments::modify_call_stmt): Use
30079 lookup_first_base_replacement.
30080 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
30081 adjustments->sort_replacements.
30082
30083 2023-01-10 Richard Biener <rguenther@suse.de>
30084
30085 PR tree-optimization/108314
30086 * tree-vect-stmts.cc (vectorizable_condition): Do not
30087 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
30088
30089 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30090
30091 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
30092
30093 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30094
30095 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
30096
30097 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30098
30099 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
30100 defines for soft float abi.
30101
30102 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30103
30104 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
30105 (smart_bclri): Likewise.
30106 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
30107 (fast_bclri): Likewise.
30108 (fast_cmpnesi_i): Likewise.
30109 (*fast_cmpltsi_i): Likewise.
30110 (*fast_cmpgeusi_i): Likewise.
30111
30112 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30113
30114 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
30115 flag_fp_int_builtin_inexact || !flag_trapping_math.
30116 (<frm_pattern><mode>2): Likewise.
30117
30118 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
30119
30120 * config/s390/s390.cc (s390_register_info): Check call_used_regs
30121 instead of hard-coding the register numbers for call saved
30122 registers.
30123 (s390_optimize_register_info): Likewise.
30124
30125 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
30126
30127 * doc/gm2.texi (Overview): Fix @node markers.
30128 (Using): Likewise. Remove subsections that were moved to Overview
30129 from the menu and move others around.
30130
30131 2023-01-09 Richard Biener <rguenther@suse.de>
30132
30133 PR middle-end/108209
30134 * genmatch.cc (commutative_op): Fix return value for
30135 user-id with non-commutative first replacement.
30136
30137 2023-01-09 Jakub Jelinek <jakub@redhat.com>
30138
30139 PR target/107453
30140 * calls.cc (expand_call): For calls with
30141 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
30142 Formatting fix.
30143
30144 2023-01-09 Richard Biener <rguenther@suse.de>
30145
30146 PR middle-end/69482
30147 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
30148 qualified accesses also force objects to memory.
30149
30150 2023-01-09 Martin Liska <mliska@suse.cz>
30151
30152 PR lto/108330
30153 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
30154 NULL (deleleted value) to a hash_set.
30155
30156 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
30157
30158 * config/xtensa/xtensa.md (*splice_bits):
30159 New insn_and_split pattern.
30160
30161 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
30162
30163 * config/xtensa/xtensa.cc
30164 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
30165 New helper functions.
30166 (xtensa_set_return_address, xtensa_output_mi_thunk):
30167 Change to use the helper function.
30168 (xtensa_emit_adjust_stack_ptr): Ditto.
30169 And also change to try reusing the content of scratch register
30170 A9 if the register is not modified in the function body.
30171
30172 2023-01-07 LIU Hao <lh_mouse@126.com>
30173
30174 PR middle-end/108300
30175 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
30176 before <windows.h>.
30177 * diagnostic-color.cc: Likewise.
30178 * plugin.cc: Likewise.
30179 * prefix.cc: Likewise.
30180
30181 2023-01-06 Joseph Myers <joseph@codesourcery.com>
30182
30183 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
30184 for handling real integer types.
30185
30186 2023-01-06 Tamar Christina <tamar.christina@arm.com>
30187
30188 Revert:
30189 2022-12-12 Tamar Christina <tamar.christina@arm.com>
30190
30191 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
30192 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
30193 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
30194 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
30195 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
30196 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
30197 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
30198 (aarch64_simd_dupv2hf): New.
30199 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
30200 Add E_V2HFmode.
30201 * config/aarch64/iterators.md (VHSDF_P): New.
30202 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
30203 Vel, q, vp): Add V2HF.
30204 * config/arm/types.md (neon_fp_reduc_add_h): New.
30205
30206 2023-01-06 Martin Liska <mliska@suse.cz>
30207
30208 PR middle-end/107966
30209 * doc/options.texi: Fix Var documentation in internal manual.
30210
30211 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
30212
30213 Revert:
30214 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
30215
30216 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
30217 RTL expansion to allow condition (mask) to be shared/reused,
30218 by avoiding overwriting pseudos and adding REG_EQUAL notes.
30219
30220 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
30221
30222 * common.opt: Add -static-libgm2.
30223 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
30224 * doc/gm2.texi: Document static-libgm2.
30225 * gcc.cc (driver_handle_option): Allow static-libgm2.
30226
30227 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
30228
30229 * common/config/i386/i386-common.cc (processor_alias_table):
30230 Use CPU_ZNVER4 for znver4.
30231 * config/i386/i386.md: Add znver4.md.
30232 * config/i386/znver4.md: New.
30233
30234 2023-01-04 Jakub Jelinek <jakub@redhat.com>
30235
30236 PR tree-optimization/108253
30237 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
30238 types.
30239
30240 2023-01-04 Jakub Jelinek <jakub@redhat.com>
30241
30242 PR middle-end/108237
30243 * generic-match-head.cc: Include tree-pass.h.
30244 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
30245 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
30246 resp. PROP_gimple_lvec property set.
30247
30248 2023-01-04 Jakub Jelinek <jakub@redhat.com>
30249
30250 PR sanitizer/108256
30251 * convert.cc (do_narrow): Punt for MULT_EXPR if original
30252 type doesn't wrap around and -fsanitize=signed-integer-overflow
30253 is on.
30254 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
30255
30256 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
30257
30258 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
30259 * common/config/i386/i386-common.cc: Add Emeraldrapids.
30260
30261 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
30262
30263 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
30264 for meteorlake.
30265
30266 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
30267
30268 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
30269 default constructor to initialize it.
30270 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
30271 for last and iterate to handle recursive calls. Delete leftover
30272 candidates at the end.
30273 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
30274 on local clones.
30275 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
30276 gc_candidate bit when a clone is used.
30277
30278 2023-01-03 Florian Weimer <fweimer@redhat.com>
30279
30280 Revert:
30281 2023-01-02 Florian Weimer <fweimer@redhat.com>
30282
30283 * dwarf2cfi.cc (init_return_column_size): Remove.
30284 (init_one_dwarf_reg_size): Adjust.
30285 (generate_dwarf_reg_sizes): New function. Extracted
30286 from expand_builtin_init_dwarf_reg_sizes.
30287 (expand_builtin_init_dwarf_reg_sizes): Call
30288 generate_dwarf_reg_sizes.
30289 * target.def (init_dwarf_reg_sizes_extra): Adjust
30290 hook signature.
30291 * config/msp430/msp430.cc
30292 (msp430_init_dwarf_reg_sizes_extra): Adjust.
30293 * config/rs6000/rs6000.cc
30294 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
30295 * doc/tm.texi: Update.
30296
30297 2023-01-03 Florian Weimer <fweimer@redhat.com>
30298
30299 Revert:
30300 2023-01-02 Florian Weimer <fweimer@redhat.com>
30301
30302 * debug.h (dwarf_reg_sizes_constant): Declare.
30303 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
30304
30305 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
30306
30307 PR tree-optimization/105043
30308 * doc/extend.texi (Object Size Checking): Split out into two
30309 subsections and mention _FORTIFY_SOURCE.
30310
30311 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
30312
30313 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
30314 RTL expansion to allow condition (mask) to be shared/reused,
30315 by avoiding overwriting pseudos and adding REG_EQUAL notes.
30316
30317 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
30318
30319 PR target/108229
30320 * config/i386/i386-features.cc
30321 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
30322 the gain/cost of converting a MEM operand.
30323
30324 2023-01-03 Jakub Jelinek <jakub@redhat.com>
30325
30326 PR middle-end/108264
30327 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
30328 from source which doesn't have scalar integral mode first convert
30329 it to outer_mode.
30330
30331 2023-01-03 Jakub Jelinek <jakub@redhat.com>
30332
30333 PR rtl-optimization/108263
30334 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
30335 asm goto to EXIT.
30336
30337 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
30338
30339 PR target/87832
30340 * config/i386/lujiazui.md (lujiazui_div): New automaton.
30341 (lua_div): New unit.
30342 (lua_idiv_qi): Correct unit in the reservation.
30343 (lua_idiv_qi_load): Ditto.
30344 (lua_idiv_hi): Ditto.
30345 (lua_idiv_hi_load): Ditto.
30346 (lua_idiv_si): Ditto.
30347 (lua_idiv_si_load): Ditto.
30348 (lua_idiv_di): Ditto.
30349 (lua_idiv_di_load): Ditto.
30350 (lua_fdiv_SF): Ditto.
30351 (lua_fdiv_SF_load): Ditto.
30352 (lua_fdiv_DF): Ditto.
30353 (lua_fdiv_DF_load): Ditto.
30354 (lua_fdiv_XF): Ditto.
30355 (lua_fdiv_XF_load): Ditto.
30356 (lua_ssediv_SF): Ditto.
30357 (lua_ssediv_load_SF): Ditto.
30358 (lua_ssediv_V4SF): Ditto.
30359 (lua_ssediv_load_V4SF): Ditto.
30360 (lua_ssediv_V8SF): Ditto.
30361 (lua_ssediv_load_V8SF): Ditto.
30362 (lua_ssediv_SD): Ditto.
30363 (lua_ssediv_load_SD): Ditto.
30364 (lua_ssediv_V2DF): Ditto.
30365 (lua_ssediv_load_V2DF): Ditto.
30366 (lua_ssediv_V4DF): Ditto.
30367 (lua_ssediv_load_V4DF): Ditto.
30368
30369 2023-01-02 Florian Weimer <fweimer@redhat.com>
30370
30371 * debug.h (dwarf_reg_sizes_constant): Declare.
30372 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
30373
30374 2023-01-02 Florian Weimer <fweimer@redhat.com>
30375
30376 * dwarf2cfi.cc (init_return_column_size): Remove.
30377 (init_one_dwarf_reg_size): Adjust.
30378 (generate_dwarf_reg_sizes): New function. Extracted
30379 from expand_builtin_init_dwarf_reg_sizes.
30380 (expand_builtin_init_dwarf_reg_sizes): Call
30381 generate_dwarf_reg_sizes.
30382 * target.def (init_dwarf_reg_sizes_extra): Adjust
30383 hook signature.
30384 * config/msp430/msp430.cc
30385 (msp430_init_dwarf_reg_sizes_extra): Adjust.
30386 * config/rs6000/rs6000.cc
30387 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
30388 * doc/tm.texi: Update.
30389
30390 2023-01-02 Jakub Jelinek <jakub@redhat.com>
30391
30392 * gcc.cc (process_command): Update copyright notice dates.
30393 * gcov-dump.cc (print_version): Ditto.
30394 * gcov.cc (print_version): Ditto.
30395 * gcov-tool.cc (print_version): Ditto.
30396 * gengtype.cc (create_file): Ditto.
30397 * doc/cpp.texi: Bump @copying's copyright year.
30398 * doc/cppinternals.texi: Ditto.
30399 * doc/gcc.texi: Ditto.
30400 * doc/gccint.texi: Ditto.
30401 * doc/gcov.texi: Ditto.
30402 * doc/install.texi: Ditto.
30403 * doc/invoke.texi: Ditto.
30404
30405 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
30406 Uroš Bizjak <ubizjak@gmail.com>
30407
30408 * config/i386/i386.md (extendditi2): New define_insn.
30409 (define_split): Use DWIH mode iterator to treat new extendditi2
30410 identically to existing extendsidi2_1.
30411 (define_peephole2): Likewise.
30412 (define_peephole2): Likewise.
30413 (define_Split): Likewise.
30414
30415 \f
30416 Copyright (C) 2023 Free Software Foundation, Inc.
30417
30418 Copying and distribution of this file, with or without modification,
30419 are permitted in any medium without royalty provided the copyright
30420 notice and this notice are preserved.