1 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
7 2023-08-07 Jonathan Wakely <jwakely@redhat.com>
9 * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
11 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
13 * configure: Regenerate.
15 2023-08-07 John Ericson <git@JohnEricson.me>
17 * configure: Regenerate.
19 2023-08-07 Alan Modra <amodra@gmail.com>
21 * configure: Regenerate.
23 2023-08-07 Alexander von Gluck IV <kallisti5@unixzen.com>
25 * configure: Regenerate.
27 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
29 * configure: Regenerate.
31 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
33 * configure: Regenerate.
35 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
37 * configure: Regenerate.
39 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
41 * configure: Regenerate.
43 2023-08-07 Jeff Law <jlaw@ventanamicro.com>
45 * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
46 VOIDmode operands to conditional before canonicalization.
48 2023-08-07 Manolis Tsamis <manolis.tsamis@vrull.eu>
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.
54 2023-08-07 Martin Jambor <mjambor@suse.cz>
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.
69 2023-08-07 Raphael Zinsly <rzinsly@ventanamicro.com>
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
76 * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
77 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
79 2023-08-07 Andrew Pinski <apinski@marvell.com>
81 PR tree-optimization/109959
82 * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
85 2023-08-07 Richard Biener <rguenther@suse.de>
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.
91 2023-08-07 liuhongt <hongtao.liu@intel.com>
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
100 (substitute_vpternlog_operands): Pass operands[4] instead of
101 operands to vpternlog_redundant_operand_mask.
102 * config/i386/sse.md: Ditto.
104 2023-08-07 Richard Biener <rguenther@suse.de>
106 * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
109 2023-08-07 liuhongt <hongtao.liu@intel.com>
112 * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
113 to define_expand and break into ..
114 (<insn>v4hf3): .. this.
116 (<insn>v2hf3): .. 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.
131 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
133 * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
135 2023-08-07 Jan Beulich <jbeulich@suse.com>
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.
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
174 (*<code>v16qi3 [umaxmin]): Likewise.
176 2023-08-07 Jan Beulich <jbeulich@suse.com>
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.
183 2023-08-07 Jan Beulich <jbeulich@suse.com>
186 (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
188 (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
191 2023-08-07 Jan Beulich <jbeulich@suse.com>
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
209 (xop_sha<mode>3): Likewise.
210 (xop_shl<mode>3): Likewise.
212 2023-08-07 Jan Beulich <jbeulich@suse.com>
215 (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
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".
237 2023-08-07 Jan Beulich <jbeulich@suse.com>
239 * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
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.
252 2023-08-07 Jan Beulich <jbeulich@suse.com>
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.
259 2023-08-07 Jan Beulich <jbeulich@suse.com>
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>):
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>):
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>):
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>):
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>):
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>):
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>):
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.
322 2023-08-07 Jan Beulich <jbeulich@suse.com>
324 * config/i386/i386.md (length_immediate): Handle "sse4arg".
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"
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.
341 2023-08-07 Jan Beulich <jbeulich@suse.com>
343 * config/i386/i386.md (prefix_extra): Correct comment. Fold
344 cases yielding 2 into ones yielding 1.
346 2023-08-07 Jan Hubicka <jh@suse.cz>
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.
352 2023-08-07 Andrew Pinski <apinski@marvell.com>
354 PR tree-optimization/96695
355 * match.pd (min_value, max_value): Extend to
358 2023-08-06 Jan Hubicka <jh@suse.cz>
360 * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
361 __builtin_expect that CPU likely supports cpuid.
363 2023-08-06 Jan Hubicka <jh@suse.cz>
365 * tree-loop-distribution.cc (loop_distribution::execute): Disable
366 distribution for loops with estimated iterations 0.
368 2023-08-06 Jan Hubicka <jh@suse.cz>
370 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
372 2023-08-04 Xiao Zeng <zengxiao@eswincomputing.com>
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>
379 2023-08-04 Yan Simonaytes <simonaytes.yan@ispras.ru>
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.
390 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
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
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.
401 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
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.
408 2023-08-04 Qing Zhao <qing.zhao@oracle.com>
410 * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
413 2023-08-04 Vladimir N. Makarov <vmakarov@redhat.com>
415 * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
416 against early clobber hard regs.
418 2023-08-04 Tamar Christina <tamar.christina@arm.com>
420 * doc/extend.texi: Document it.
422 2023-08-04 Tamar Christina <tamar.christina@arm.com>
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
433 * config/aarch64/constraints.md (D2, DL): New.
434 * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
436 2023-08-04 Tamar Christina <tamar.christina@arm.com>
438 * gensupport.cc (conlist): Support length 0 attribute.
440 2023-08-04 Tamar Christina <tamar.christina@arm.com>
442 * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
443 (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
445 2023-08-04 Tamar Christina <tamar.christina@arm.com>
447 * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
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.
454 2023-08-04 Richard Biener <rguenther@suse.de>
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.
462 2023-08-04 Matthew Malcomson <matthew.malcomson@arm.com>
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
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
481 2023-08-04 Richard Biener <rguenther@suse.de>
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.
487 2023-08-04 Pan Li <pan2.li@intel.com>
490 2023-08-04 Pan Li <pan2.li@intel.com>
492 * config/riscv/riscv-vector-builtins-bases.cc
493 (class vfmacc_frm): New class for vfmacc frm.
494 (vfmacc_frm_obj): New declaration.
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.
503 2023-08-04 Pan Li <pan2.li@intel.com>
506 2023-08-04 Pan Li <pan2.li@intel.com>
508 * config/riscv/riscv-vector-builtins-bases.cc
509 (class vfnmacc_frm): New class for vfnmacc.
510 (vfnmacc_frm_obj): New declaration.
512 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
513 * config/riscv/riscv-vector-builtins-functions.def
514 (vfnmacc_frm): New function definition.
516 2023-08-04 Pan Li <pan2.li@intel.com>
519 2023-08-04 Pan Li <pan2.li@intel.com>
521 * config/riscv/riscv-vector-builtins-bases.cc
522 (class vfmsac_frm): New class for vfmsac frm.
523 (vfmsac_frm_obj): New declaration.
525 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
526 * config/riscv/riscv-vector-builtins-functions.def
527 (vfmsac_frm): New function definition.
529 2023-08-04 Pan Li <pan2.li@intel.com>
532 2023-08-04 Pan Li <pan2.li@intel.com>
534 * config/riscv/riscv-vector-builtins-bases.cc
535 (class vfnmsac_frm): New class for vfnmsac frm.
536 (vfnmsac_frm_obj): New declaration.
538 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
539 * config/riscv/riscv-vector-builtins-functions.def
540 (vfnmsac_frm): New function definition.
542 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
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.
552 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
554 * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
555 and PM_OFFSET entries.
557 2023-08-04 Andrew Pinski <apinski@marvell.com>
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.
567 2023-08-04 Drew Ross <drross@redhat.com>
570 * match.pd ((signed x << c) >> c): New canonicalization.
572 2023-08-04 Pan Li <pan2.li@intel.com>
574 * config/riscv/riscv-vector-builtins-bases.cc
575 (class vfnmsac_frm): New class for vfnmsac frm.
576 (vfnmsac_frm_obj): New declaration.
578 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
579 * config/riscv/riscv-vector-builtins-functions.def
580 (vfnmsac_frm): New function definition.
582 2023-08-04 Pan Li <pan2.li@intel.com>
584 * config/riscv/riscv-vector-builtins-bases.cc
585 (class vfmsac_frm): New class for vfmsac frm.
586 (vfmsac_frm_obj): New declaration.
588 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
589 * config/riscv/riscv-vector-builtins-functions.def
590 (vfmsac_frm): New function definition.
592 2023-08-04 Pan Li <pan2.li@intel.com>
594 * config/riscv/riscv-vector-builtins-bases.cc
595 (class vfnmacc_frm): New class for vfnmacc.
596 (vfnmacc_frm_obj): New declaration.
598 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
599 * config/riscv/riscv-vector-builtins-functions.def
600 (vfnmacc_frm): New function definition.
602 2023-08-04 Hao Liu <hliu@os.amperecomputing.com>
605 * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
606 STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
608 2023-08-04 Pan Li <pan2.li@intel.com>
610 * config/riscv/riscv-vector-builtins-bases.cc
611 (class vfmacc_frm): New class for vfmacc frm.
612 (vfmacc_frm_obj): New declaration.
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.
621 2023-08-04 Pan Li <pan2.li@intel.com>
623 * config/riscv/riscv-vector-builtins-bases.cc
624 (vfwmul_frm_obj): New declaration.
626 * config/riscv/riscv-vector-builtins-bases.h:
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.
632 2023-08-04 Pan Li <pan2.li@intel.com>
634 * config/riscv/riscv-vector-builtins-bases.cc
635 (binop_frm): New declaration.
636 (reverse_binop_frm): 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.
646 2023-08-03 Jan Hubicka <jh@suse.cz>
648 * tree-cfg.cc (print_loop_info): Print entry count.
650 2023-08-03 Jan Hubicka <jh@suse.cz>
652 * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
654 2023-08-03 Jan Hubicka <jh@suse.cz>
657 * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
658 unadjusted_exit_count.
660 2023-08-03 Aldy Hernandez <aldyh@redhat.com>
662 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
665 2023-08-03 Xiao Zeng <zengxiao@eswincomputing.com>
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>
673 2023-08-03 Cupertino Miranda <cupertino.miranda@oracle.com>
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):
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):
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.
719 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
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
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
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.
754 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
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.
762 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
764 * value-range.h (Value_Range::set_varying): Set the type.
765 (Value_Range::set_zero): Ditto.
766 (Value_Range::set_nonzero): Ditto.
768 2023-08-03 Jeff Law <jeffreyalaw@gmail.com>
770 * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
773 2023-08-03 Pan Li <pan2.li@intel.com>
775 * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
777 2023-08-03 Richard Sandiford <richard.sandiford@arm.com>
779 * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
781 2023-08-03 Richard Biener <rguenther@suse.de>
783 PR tree-optimization/110838
784 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
785 Adjust the shift operand of RSHIFT_EXPRs.
787 2023-08-03 Richard Biener <rguenther@suse.de>
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
794 2023-08-03 Richard Biener <rguenther@suse.de>
796 * tree-ssa-sink.cc: Include tree-ssa-live.h.
797 (pass_sink_code::execute): Instantiate virtual_operand_live
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.
804 2023-08-03 Richard Biener <rguenther@suse.de>
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.
811 2023-08-03 Richard Biener <rguenther@suse.de>
813 * passes.def: Exchange loop splitting and final value
816 2023-08-03 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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
823 (*vstbr<mode>): New insn.
825 2023-08-03 Alexandre Oliva <oliva@adacore.com>
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.
833 2023-08-03 Yanzhang Wang <yanzhang.wang@intel.com>
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.
842 2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
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.
852 2023-08-03 Pan Li <pan2.li@intel.com>
854 * config/riscv/riscv-vector-builtins-bases.cc
855 (vfmul_frm_obj): New declaration.
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.
862 2023-08-03 Andrew Pinski <apinski@marvell.com>
864 * match.pd (`~X & X`): Check that the types match.
865 (`~x | x`, `~x ^ x`): Likewise.
867 2023-08-03 Pan Li <pan2.li@intel.com>
869 * config/riscv/riscv-vector-builtins-bases.h: Remove
870 redudant declaration.
872 2023-08-03 Pan Li <pan2.li@intel.com>
874 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
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.
880 2023-08-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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.
886 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
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.
892 2023-08-02 Richard Biener <rguenther@suse.de>
894 * tree-phinodes.h (add_phi_node_to_bb): Remove.
895 * tree-phinodes.cc (add_phi_node_to_bb): Make static.
897 2023-08-02 Jan Beulich <jbeulich@suse.com>
899 * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
900 two of the alternatives.
902 2023-08-02 Richard Biener <rguenther@suse.de>
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.
909 2023-08-02 Andrew Pinski <apinski@marvell.com>
911 * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
912 the comparison operands before comparing them.
914 2023-08-02 Andrew Pinski <apinski@marvell.com>
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.
922 2023-08-02 Andrew Pinski <apinski@marvell.com>
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.
929 2023-08-02 Pan Li <pan2.li@intel.com>
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.
946 2023-08-02 Jan Hubicka <jh@suse.cz>
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.
954 2023-08-02 Jan Hubicka <jh@suse.cz>
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.
960 2023-08-02 Richard Biener <rguenther@suse.de>
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.
968 2023-08-02 liuhongt <hongtao.liu@intel.com>
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>):
979 2023-08-02 liuhongt <hongtao.liu@intel.com>
981 * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
982 pre_reload define_insn_and_split.
984 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
986 * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
987 using Zicond to implement some conditional moves.
989 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
991 * config/riscv/zicond.md: Use the X iterator instead of ANYI
992 on the comparison input operands.
994 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
996 * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
998 (case SET): For INSNs that just set a REG, take the cost from the
1000 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
1002 2023-08-02 Hu, Lin1 <lin1.hu@intel.com>
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.
1012 2023-08-01 Andreas Krebbel <krebbel@linux.ibm.com>
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.
1019 2023-08-01 Richard Ball <richard.ball@arm.com>
1021 * gimple-fold.cc (fold_ctor_reference):
1022 Add support for poly_int.
1024 2023-08-01 Georg-Johann Lay <avr@gjlay.de>
1027 * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
1028 LABEL_NUSES of new conditional branch instruction.
1030 2023-08-01 Jan Hubicka <jh@suse.cz>
1032 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
1033 constant prologue peeling.
1035 2023-08-01 Christophe Lyon <christophe.lyon@linaro.org>
1037 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
1039 2023-08-01 Pan Li <pan2.li@intel.com>
1040 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
1059 2023-08-01 Pan Li <pan2.li@intel.com>
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.
1072 2023-08-01 Andrew Pinski <apinski@marvell.com>
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.
1078 2023-07-31 Hamza Mahfooz <someguy@effective-light.com>
1081 * doc/invoke.texi (-Wmissing-variable-declarations): Document
1084 2023-07-31 Andrew Pinski <apinski@marvell.com>
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
1091 2023-07-31 Andrew Pinski <apinski@marvell.com>
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)`.
1097 2023-07-31 Andrew Pinski <apinski@marvell.com>
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.
1106 2023-07-31 Costas Argyris <costas.argyris@gmail.com>
1109 * gcc-ar.cc (main): Expand argv and use
1110 temporary response file to call ar if any
1111 expansions were made.
1113 2023-07-31 Andrew MacLeod <amacleod@redhat.com>
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.
1119 2023-07-31 David Malcolm <dmalcolm@redhat.com>
1122 * diagnostic-client-data-hooks.h (class sarif_object): New forward
1124 (diagnostic_client_data_hooks::add_sarif_invocation_properties):
1126 * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
1127 (class sarif_invocation): Inherit from sarif_object rather than
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
1157 2023-07-31 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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.
1164 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
1166 * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
1168 (expand_vector_init_insert_elems): Ditto.
1170 2023-07-31 Hao Liu <hliu@os.amperecomputing.com>
1173 * config/aarch64/aarch64.cc (count_ops): Only '* count' for
1174 single_defuse_cycle while counting reduction_latency.
1176 2023-07-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1178 * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
1179 (DEF_INTERNAL_SIGNED_COND_FN): 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.
1241 2023-07-31 Roger Sayle <roger@nextmovesoftware.com>
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.
1249 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
1251 * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
1252 * config/riscv/riscv-protos.h (get_mask_mode): Update return
1254 * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
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.
1288 2023-07-31 Pan Li <pan2.li@intel.com>
1290 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
1291 Move rm suffix before mask.
1293 2023-07-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1295 * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
1296 * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
1299 2023-07-29 Roger Sayle <roger@nextmovesoftware.com>
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.
1330 2023-07-29 Jan Hubicka <jh@suse.cz>
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.
1338 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
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.
1346 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
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.
1359 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
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):
1365 * range-op.cc (operator_lshift): Add missing final overrides.
1366 (operator_rshift): Ditto.
1368 2023-07-28 Jose E. Marchesi <jose.marchesi@oracle.com>
1370 * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
1371 optimizations in BPF target.
1373 2023-07-28 Honza <jh@ryzen4.suse.cz>
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.
1390 2023-07-28 Jan Hubicka <jh@suse.cz>
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.
1398 2023-07-28 Roger Sayle <roger@nextmovesoftware.com>
1399 Richard Biener <rguenther@suse.de>
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.
1407 2023-07-28 Jan Hubicka <jh@suse.cz>
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
1419 2023-07-28 xuli <xuli1@eswincomputing.com>
1421 * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
1422 vsadd[u] and vssub[u].
1423 * config/riscv/vector.md: Ditto.
1425 2023-07-28 Jan Hubicka <jh@suse.cz>
1427 * tree-ssa-loop-split.cc (split_loop): Also support NE driven
1428 loops when IV test is not overflowing.
1430 2023-07-28 liuhongt <hongtao.liu@intel.com>
1433 * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
1435 (avx512cd_maskw_vec_dup<mode>): Ditto.
1437 2023-07-27 David Faust <david.faust@oracle.com>
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.
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.
1453 2023-07-27 David Faust <david.faust@oracle.com>
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
1461 2023-07-27 David Faust <david.faust@oracle.com>
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.
1467 2023-07-27 Jan Hubicka <jh@suse.cz>
1469 * tree-vect-loop.cc (optimize_mask_stores): Make store
1472 2023-07-27 Jan Hubicka <jh@suse.cz>
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):
1481 (tree_transform_and_unroll_loop): ... here;
1483 2023-07-27 Jan Hubicka <jh@suse.cz>
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
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
1497 (niter_for_unrolled_loop): Remove.
1498 (tree_transform_and_unroll_loop): Fix profile update.
1500 2023-07-27 Jan Hubicka <jh@suse.cz>
1502 * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
1503 to guessed; fix count of new_bb.
1505 2023-07-27 Jan Hubicka <jh@suse.cz>
1507 * profile-count.h (profile_count::apply_probability): Fix
1508 handling of uninitialized probabilities, optimize scaling
1511 2023-07-27 Richard Biener <rguenther@suse.de>
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.
1518 2023-07-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1520 * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
1521 (ADJUST_ALIGNMENT): Ditto.
1522 (ADJUST_PRECISION): 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.
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.
1547 2023-07-27 Pan Li <pan2.li@intel.com>
1549 * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
1551 (vwrite_csr): Ditto.
1553 2023-07-27 demin.han <demin.han@starfivetech.com>
1555 * config/riscv/autovec.md: Delete which_alternative use in split
1557 2023-07-27 Richard Biener <rguenther@suse.de>
1559 * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
1561 (pass_sink_code::execute): ... in the caller.
1563 2023-07-27 Kewen Lin <linkw@linux.ibm.com>
1564 Richard Biener <rguenther@suse.de>
1566 PR tree-optimization/110776
1567 * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
1570 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
1572 * config/riscv/riscv.md: Include zicond.md
1573 * config/riscv/zicond.md: New file.
1575 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
1577 * common/config/riscv/riscv-common.cc: New extension.
1578 * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
1579 (TARGET_ZICOND): New target.
1581 2023-07-26 Carl Love <cel@us.ibm.com>
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.
1588 2023-07-26 David Faust <david.faust@oracle.com>
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.
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.
1612 2023-07-26 Matthew Malcomson <matthew.malcomson@arm.com>
1614 * tree-vect-stmts.cc (get_group_load_store_type): Reformat
1617 2023-07-26 Carl Love <cel@us.ibm.com>
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.
1648 2023-07-26 David Malcolm <dmalcolm@redhat.com>
1651 * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
1653 2023-07-26 Richard Biener <rguenther@suse.de>
1655 PR tree-optimization/106081
1656 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
1657 Assign layout -1 to splats.
1659 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
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.
1665 2023-07-26 Li Xu <xuli1@eswincomputing.com>
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.
1696 2023-07-26 Uros Bizjak <ubizjak@gmail.com>
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.
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.
1746 (lrintv2sfv2si2): Ditto.
1748 (lceilv2sfv2si2): Ditto.
1749 (floorv2sf2): Ditto.
1750 (lfloorv2sfv2si2): Ditto.
1751 (btruncv2sf2): Ditto.
1752 (roundv2sf2): Ditto.
1753 (lroundv2sfv2si2): Ditto.
1754 (*mmx_roundv2sf2): Remove.
1756 2023-07-26 Jose E. Marchesi <jose.marchesi@oracle.com>
1758 * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
1760 2023-07-26 Richard Biener <rguenther@suse.de>
1762 PR tree-optimization/110799
1763 * tree-ssa-pre.cc (compute_avail): More thoroughly match
1764 up TBAA behavior of redundant loads.
1766 2023-07-26 Jakub Jelinek <jakub@redhat.com>
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.
1773 2023-07-26 Kewen Lin <linkw@linux.ibm.com>
1776 * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
1777 operands output with "x".
1779 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1781 * range-op.cc (class operator_absu): Add update_bitmask.
1782 (operator_absu::update_bitmask): New.
1784 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1786 * range-op-mixed.h (class operator_abs): Add update_bitmask.
1787 * range-op.cc (operator_abs::update_bitmask): New.
1789 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1791 * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
1792 * range-op.cc (operator_bitwise_not::update_bitmask): New.
1794 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1796 * range-op.cc (update_known_bitmask): Handle unary operators.
1798 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
1800 * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
1802 2023-07-26 Jin Ma <jinma@linux.alibaba.com>
1804 * config/riscv/riscv.md: Likewise.
1806 2023-07-26 Jan Hubicka <jh@suse.cz>
1808 * profile-count.cc (profile_count::to_sreal_scale): Value is not know
1809 if we divide by zero.
1811 2023-07-25 David Faust <david.faust@oracle.com>
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.
1821 2023-07-25 Aldy Hernandez <aldyh@redhat.com>
1823 * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
1824 (bit_value_mult_const): Same.
1825 (get_individual_bits): Same.
1827 2023-07-25 Haochen Gui <guihaoc@gcc.gnu.org>
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
1838 (__builtin_vsx_xsmindp): Set pattern to fmindf3.
1840 2023-07-24 David Faust <david.faust@oracle.com>
1842 * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
1844 2023-07-24 Drew Ross <drross@redhat.com>
1845 Jakub Jelinek <jakub@redhat.com>
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.
1854 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
1856 * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
1857 single quote rather than backquote in diagnostic.
1859 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
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
1866 * doc/invoke.texi (eBPF Options): Document -msdiv.
1868 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
1870 * config/riscv/riscv.cc (riscv_option_override): Spell out
1871 greater than and use cannot in diagnostic string.
1873 2023-07-24 Richard Biener <rguenther@suse.de>
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.
1909 2023-07-24 Richard Biener <rguenther@suse.de>
1911 * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
1913 2023-07-24 Richard Biener <rguenther@suse.de>
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.
1920 2023-07-24 Robin Dapp <rdapp@ventanamicro.com>
1922 * tree-vect-stmts.cc (vectorizable_conversion): Handle
1923 more demotion/promotion for modifier == NONE.
1925 2023-07-24 Roger Sayle <roger@nextmovesoftware.com>
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.
1958 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
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.
1965 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
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.
1976 2023-07-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
1986 2023-07-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
1993 2023-07-24 Richard Biener <rguenther@suse.de>
1995 PR tree-optimization/110777
1996 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
1997 Avoid propagating abnormals.
1999 2023-07-24 Richard Biener <rguenther@suse.de>
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.
2006 2023-07-24 Kewen Lin <linkw@linux.ibm.com>
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.
2012 2023-07-24 Pan Li <pan2.li@intel.com>
2014 * config/riscv/riscv-vector-builtins-shapes.cc
2015 (struct alu_frm_def): Take range check.
2017 2023-07-22 Vineet Gupta <vineetg@rivosinc.com>
2020 * config/riscv/predicates.md (const_0_operand): Add back
2023 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
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).
2029 2023-07-22 Andrew Pinski <apinski@marvell.com>
2032 * rtl.h (extended_count): Change last argument type
2035 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
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.
2065 2023-07-22 Jeff Law <jlaw@ventanamicro.com>
2067 * config/bfin/bfin.md (ones): Fix length computation.
2069 2023-07-22 Vladimir N. Makarov <vmakarov@redhat.com>
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.
2075 2023-07-21 Roger Sayle <roger@nextmovesoftware.com>
2076 Richard Biener <rguenther@suse.de>
2079 * gimplify.cc (gimplify_compound_lval): If the array's type
2080 is error_mark_node then return GS_ERROR.
2082 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
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.
2095 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
2097 * config/bpf/bpf.md: fixed template for neg instruction.
2099 2023-07-21 Jan Hubicka <jh@suse.cz>
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.
2106 2023-07-21 Jan Hubicka <jh@suse.cz>
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.
2112 2023-07-21 Jan Hubicka <jh@suse.cz>
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
2120 2023-07-21 Iain Sandoe <iain@sandoe.co.uk>
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'.
2128 2023-07-21 Jan Hubicka <jh@suse.cz>
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
2137 2023-07-21 Jan Hubicka <jh@suse.cz>
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
2149 2023-07-21 Jan Hubicka <jh@suse.cz>
2151 * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
2152 tests first; update finite_p flag.
2154 2023-07-21 Jan Hubicka <jh@suse.cz>
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.
2162 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2164 * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
2166 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2168 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
2169 (vectorizable_operation): Ditto.
2171 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
2189 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
2275 2023-07-21 Haochen Jiang <haochen.jiang@intel.com>
2277 * config/i386/i386.opt: Fix a typo.
2279 2023-07-21 Richard Biener <rguenther@suse.de>
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
2286 2023-07-21 Andrew Pinski <apinski@marvell.com>
2288 * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
2291 2023-07-21 Richard Biener <rguenther@suse.de>
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
2297 (vect_slp_analyze_node_operations_1): Guard purely internal
2300 2023-07-21 Jan Hubicka <jh@suse.cz>
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
2315 2023-07-21 Kewen Lin <linkw@linux.ibm.com>
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.
2321 2023-07-21 liuhongt <hongtao.liu@intel.com>
2324 * common.opt: (fcf-protection=): Add EnumSet attribute to
2325 support combination of params.
2327 2023-07-21 David Malcolm <dmalcolm@redhat.com>
2329 PR middle-end/110612
2330 * text-art/table.cc (table_geometry::table_geometry): Drop m_table
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):
2338 2023-07-20 Uros Bizjak <ubizjak@gmail.com>
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.
2352 2023-07-20 Vladimir N. Makarov <vmakarov@redhat.com>
2354 * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
2357 2023-07-20 Andrew Pinski <apinski@marvell.com>
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.
2373 2023-07-20 Jan Hubicka <jh@suse.cz>
2375 * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
2378 2023-07-20 Martin Jambor <mjambor@suse.cz>
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.
2385 2023-07-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2387 * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
2388 Refine code structure.
2390 2023-07-20 Jan Hubicka <jh@suse.cz>
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.
2403 2023-07-20 Richard Biener <rguenther@suse.de>
2405 PR tree-optimization/110204
2406 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
2407 Look through copies generated by PRE.
2409 2023-07-20 Matthew Malcomson <matthew.malcomson@arm.com>
2411 * tree-vect-stmts.cc (get_group_load_store_type): Account for
2412 `gap` when checking if need to peel twice.
2414 2023-07-20 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
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.
2423 2023-07-20 Pan Li <pan2.li@intel.com>
2425 * config/riscv/vector.md: Fix incorrect match_operand.
2427 2023-07-20 Roger Sayle <roger@nextmovesoftware.com>
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.
2439 2023-07-20 Richard Biener <rguenther@suse.de>
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
2450 2023-07-20 Pan Li <pan2.li@intel.com>
2452 * config/riscv/vector.md: Align pattern format.
2454 2023-07-20 Haochen Jiang <haochen.jiang@intel.com>
2456 * doc/invoke.texi: Remove AVX512VP2INTERSECT in
2457 Granite Rapids{, D} from documentation.
2459 2023-07-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
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.
2494 (TUPLE_ENTRY): 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.
2509 (vint8mf8_t): Ditto.
2510 (vuint8mf8_t): Ditto.
2511 (vint8mf4_t): Ditto.
2512 (vuint8mf4_t): Ditto.
2513 (vint8mf2_t): Ditto.
2514 (vuint8mf2_t): Ditto.
2516 (vuint8m1_t): Ditto.
2518 (vuint8m2_t): Ditto.
2520 (vuint8m4_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.
2614 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
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
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.
2629 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
2631 * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
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.
2638 2023-07-19 Andrew Pinski <apinski@marvell.com>
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
2648 2023-07-19 Andrew Pinski <apinski@marvell.com>
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
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.
2662 2023-07-19 Andrew Pinski <apinski@marvell.com>
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
2669 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
2678 2023-07-19 Jakub Jelinek <jakub@redhat.com>
2680 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
2682 2023-07-19 Jakub Jelinek <jakub@redhat.com>
2684 PR tree-optimization/110731
2685 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
2686 divisor as UNSIGNED regardless of sgn.
2688 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
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.
2697 2023-07-19 Jan Beulich <jbeulich@suse.com>
2699 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
2701 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
2703 (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
2704 gen_vec_interleave_low. Rename local variable.
2706 2023-07-19 Jan Beulich <jbeulich@suse.com>
2708 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
2709 alternative. Move AVX512VL part of condition to new "enabled"
2712 2023-07-19 liuhongt <hongtao.liu@intel.com>
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.
2738 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
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.
2769 2023-07-18 Jan Hubicka <jh@suse.cz>
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
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
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.
2784 2023-07-18 Jason Merrill <jason@redhat.com>
2786 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
2788 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
2790 * doc/gm2.texi (Semantic checking): Change example testwithptr
2793 2023-07-18 Richard Biener <rguenther@suse.de>
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.
2800 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
2806 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2808 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
2809 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
2811 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
2813 * config/s390/vx-builtins.md: New vsel pattern.
2815 2023-07-18 liuhongt <hongtao.liu@intel.com>
2818 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
2819 Remove # from assemble output.
2821 2023-07-18 liuhongt <hongtao.liu@intel.com>
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.
2828 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2830 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
2832 2023-07-18 Pan Li <pan2.li@intel.com>
2833 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
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.
2851 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
2853 * doc/extend.texi: Add @cindex on __auto_type.
2855 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
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.
2861 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
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
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"
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
2903 (find_split_point): Change "unsignedp" variable to bool.
2904 (simplify_if_then_else): Change "comparison_p" and "swapped"
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.
2915 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
2918 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
2920 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
2922 * ira.cc (setup_reg_class_relations): Continue
2923 if regclass cl3 is hard_reg_set_empty_p.
2925 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2927 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
2929 2023-07-17 Martin Jambor <mjambor@suse.cz>
2931 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
2934 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2936 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
2938 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
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.
2947 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
2971 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2973 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
2975 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
2977 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
2978 Remove parameter name from declaration of unused parameter.
2980 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
2982 PR tree-optimization/110652
2983 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
2986 2023-07-17 Richard Biener <rguenther@suse.de>
2988 PR tree-optimization/110669
2989 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
2990 Check we matched a header PHI.
2992 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2994 * tree-ssanames.cc (set_bitmask): New.
2995 * tree-ssanames.h (set_bitmask): New.
2997 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
2999 * value-range.cc (irange_bitmask::verify_mask): Mask need not be
3001 * value-range.h (irange_bitmask::union_): Normalize beforehand.
3002 (irange_bitmask::intersect): Same.
3004 2023-07-17 Andrew Pinski <apinski@marvell.com>
3006 PR tree-optimization/95923
3007 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
3009 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
3011 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
3012 to the std::sort comparison lambda function const.
3014 2023-07-17 Andrew Pinski <apinski@marvell.com>
3016 PR tree-optimization/110666
3017 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
3019 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
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
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
3032 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
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.
3042 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3044 * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
3045 have the same iterator. Also renaming all the occurence to
3047 (usdot_prod<mode>): New define_expand.
3048 (udot_prod<mode>): Ditto.
3050 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3052 * common/config/i386/cpuinfo.h (get_available_features):
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):
3060 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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.
3079 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3081 * common/config/i386/cpuinfo.h (get_available_features):
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):
3089 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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.
3113 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
3115 * common/config/i386/cpuinfo.h (get_available_features):
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):
3123 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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.
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.
3147 2023-07-17 Kong Lingling <lingling.kong@intel.com>
3148 Haochen Jiang <haochen.jiang@intel.com>
3150 * common/config/i386/cpuinfo.h (get_available_features): Detect
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
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
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.
3177 2023-07-16 Jan Hubicka <jh@suse.cz>
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.
3184 2023-07-16 Jan Hubicka <jh@suse.cz>
3186 PR tree-optimization/110649
3187 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
3188 probability of the if-then-else construct.
3190 2023-07-16 Jan Hubicka <jh@suse.cz>
3192 PR middle-end/110649
3193 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
3195 2023-07-15 Andrew Pinski <apinski@marvell.com>
3197 * doc/contrib.texi: Update my entry.
3199 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
3201 * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
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.
3215 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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.
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.
3275 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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,
3283 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_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
3290 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
3292 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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.
3305 (vcmulq_rot180_m): Delete.
3306 (vcmulq_rot270_m): Delete.
3307 (vcmulq_rot90_m): 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.
3373 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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,
3383 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_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>.
3391 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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.
3558 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
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,
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,
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,
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
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
3593 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
3595 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
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.
3603 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
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.
3610 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
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.
3619 2023-07-14 Jan Hubicka <jh@suse.cz>
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
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.
3638 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
3646 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
3649 * config/bpf/bpf.md: Enable instruction scheduling.
3651 2023-07-14 Tamar Christina <tamar.christina@arm.com>
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
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.
3664 2023-07-14 Tamar Christina <tamar.christina@arm.com>
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.
3671 2023-07-14 Richard Biener <rguenther@suse.de>
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):
3678 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
3679 new inline function.
3680 (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
3682 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
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.
3691 2023-07-14 Die Li <lidie@eswincomputing.com>
3693 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
3695 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
3698 * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
3699 used by the address of the following memory operand.
3701 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
3704 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
3705 deallocate alloca-only frame.
3707 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
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.
3714 2023-07-13 Carl Love <cel@us.ibm.com>
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.
3726 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
3729 * config/alpha/alpha.cc (alpha_emit_set_long_const):
3730 Always use DImode when constructing long const.
3732 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
3734 * haifa-sched.cc: Change TRUE/FALSE to true/false.
3736 * lra-assigns.cc: Ditto.
3737 * lra-constraints.cc: Ditto.
3738 * sel-sched.cc: Ditto.
3740 2023-07-13 Andrew Pinski <apinski@marvell.com>
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
3749 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
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.
3760 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3762 * genmatch.cc (commutative_op): Add COND_LEN_*
3763 * internal-fn.cc (first_commutative_argument): 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.
3773 2023-07-13 Pan Li <pan2.li@intel.com>
3775 * config/riscv/riscv.cc (vxrm_rtx): New static var.
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.
3786 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3792 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3800 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3807 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3814 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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
3822 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3830 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3838 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3846 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
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.
3852 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
3854 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
3856 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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>):
3898 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
3900 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
3912 2023-07-12 Jan Hubicka <jh@suse.cz>
3914 * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
3915 (gimple_duplicate_seme_region): ... this; break out profile updating
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.
3922 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
3924 PR tree-optimization/107043
3925 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
3927 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
3929 PR tree-optimization/107053
3930 * gimple-range-op.cc (cfn_popcount): Use known set bits.
3932 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
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.
3940 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
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.
3946 2023-07-12 Jan Hubicka <jh@suse.cz>
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.
3957 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
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"
3976 (noce_emit_store_flag): Change return type from int to bool.
3977 Change "reversep" function arg to bool. Change "cond_complex"
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"
4006 (rest_of_handle_if_conversion): Change return type to void.
4008 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4010 * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
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_*
4017 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
4020 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
4022 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
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.
4029 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
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.
4036 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
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.
4043 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
4045 * genopinit.cc (main): Adjust maximal number of optabs and
4047 * gensupport.cc (find_optab): Shift optab by 20 and mode by
4049 * optabs-query.h (optab_handler): Ditto.
4050 (convert_optab_handler): Ditto.
4052 2023-07-12 Richard Biener <rguenther@suse.de>
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.
4059 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4061 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
4062 (umul<mode>3_highpart): Ditto.
4064 2023-07-12 Jan Beulich <jbeulich@suse.com>
4066 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
4067 alternative. Adjust original last alternative's "prefix"
4068 attribute to maybe_evex.
4070 2023-07-12 Jan Beulich <jbeulich@suse.com>
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.
4077 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
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.
4083 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4085 * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
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().
4095 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
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.
4104 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4106 * config/riscv/riscv.h (Xmode): New macro.
4108 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4110 * config/riscv/riscv.cc (riscv_print_operand_address): Use
4111 output_addr_const rather than riscv_print_operand.
4113 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4115 * config/riscv/thead.md: Adjust constraints of th_addsl.
4117 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4119 * config/riscv/thead.cc (th_mempair_operands_p):
4120 Fix documentation of th_mempair_order_operands().
4122 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
4124 * config/riscv/thead.cc (th_mempair_save_regs):
4125 Emit REG_FRAME_RELATED_EXPR notes in prologue.
4127 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
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.
4135 2023-07-12 liuhongt <hongtao.liu@intel.com>
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
4143 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
4145 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
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.
4156 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
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.
4171 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
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):
4178 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
4185 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
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.
4216 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
4218 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
4220 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
4254 2023-07-11 Richard Biener <rguenther@suse.de>
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.
4260 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
4262 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
4264 (vsx_quad_dform_memory_operand): Likewise.
4266 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
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
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"
4296 (rest_of_handle_delay_slots): Change return type from int to void
4297 and adjust function body accordingly.
4299 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
4301 * doc/extend.texi (RISC-V Operand Modifiers): New.
4303 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
4311 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
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.
4322 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
4324 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
4326 2023-07-10 Xi Ruoyao <xry111@xry111.site>
4328 PR tree-optimization/110557
4329 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
4330 Ensure the output sign-extended if necessary.
4332 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
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.
4339 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
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.
4346 2023-07-10 liuhongt <hongtao.liu@intel.com>
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.
4353 2023-07-09 Jan Hubicka <jh@suse.cz>
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
4361 2023-07-08 Jan Hubicka <jh@suse.cz>
4363 PR tree-optimization/110600
4364 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
4366 2023-07-08 Jan Hubicka <jh@suse.cz>
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.
4374 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
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"
4390 (one_cprop_pass): Ditto.
4392 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
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
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.
4430 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
4434 * doc/invoke.texi (Warning Options): Fix typos.
4436 2023-07-07 Jan Hubicka <jh@suse.cz>
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
4444 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
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.
4453 2023-07-07 Jan Hubicka <jh@suse.cz>
4455 * predict.cc (force_edge_cold): Use
4456 set_edge_probability_and_rescale_others; improve dumps.
4458 2023-07-07 Jan Hubicka <jh@suse.cz>
4460 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
4462 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
4465 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
4467 * config/s390/s390.cc (vec_init): Fix default case
4469 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
4471 * lra-assigns.cc (assign_by_spills): Add reload insns involving
4472 reload pseudos with non-refined class to be processed on the next
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.
4481 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
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
4488 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
4490 * value-range.cc (irange::intersect): Leave normalization to
4493 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
4495 * data-streamer-in.cc (streamer_read_value_range): Adjust for
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):
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.
4548 2023-07-07 Jan Beulich <jbeulich@suse.com>
4550 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
4552 2023-07-07 Jan Beulich <jbeulich@suse.com>
4554 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
4555 alternative. Switch new last alternative's "isa" attribute to
4557 (vec_extract_hi_v32qi): Likewise.
4559 2023-07-07 Pan Li <pan2.li@intel.com>
4560 Robin Dapp <rdapp@ventanamicro.com>
4562 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
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.
4569 2023-07-07 Pan Li <pan2.li@intel.com>
4571 * config/riscv/vector.md: Fix typo.
4573 2023-07-06 Jan Hubicka <jh@suse.cz>
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.
4580 2023-07-06 Jan Hubicka <jh@suse.cz>
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.
4589 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
4591 PR tree-optimization/110449
4592 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
4593 vec_loop for the unrolled loop.
4595 2023-07-06 Jan Hubicka <jh@suse.cz>
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.
4602 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
4604 * doc/extend.texi (ARC Built-in Functions): Update documentation
4605 with missing builtins.
4607 2023-07-06 Richard Biener <rguenther@suse.de>
4609 PR tree-optimization/110556
4610 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
4611 assign code and all operands of non-stores.
4613 2023-07-06 Richard Biener <rguenther@suse.de>
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.
4624 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
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'.
4630 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4632 * gengtype-parse.cc: Clean up obsolete parametrized structs
4634 * gengtype.cc: Likewise.
4635 * gengtype.h: Likewise.
4637 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4639 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
4642 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
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'.
4648 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4650 * doc/gty.texi (GTY Options) <string_length>: Enhance.
4652 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
4654 * gengtype.cc (write_root, write_roots): Explicitly reject
4655 'string_length' option.
4656 * doc/gty.texi (GTY Options) <string_length>: Document.
4658 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
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.
4665 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
4667 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
4669 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
4671 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
4672 and add description for inling of function with arch and tune
4675 2023-07-06 Richard Biener <rguenther@suse.de>
4677 PR tree-optimization/110515
4678 * tree-ssa-pre.cc (compute_avail): Make code dealing
4679 with hoisting loads with different alias-sets more
4682 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4684 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
4686 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
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.
4694 2023-07-06 liuhongt <hongtao.liu@intel.com>
4696 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
4697 DF/SFmode AND/IOR/XOR/ANDN operations.
4699 2023-07-06 Andrew Pinski <apinski@marvell.com>
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.
4707 2023-07-06 liuhongt <hongtao.liu@intel.com>
4710 * config/i386/i386.md (movdf_internal): Disparage slightly for
4711 2 alternatives (r,v) and (v,r) by adding constraint modifier
4714 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
4717 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
4718 initialization of new_addr.
4720 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
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.
4726 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
4728 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
4731 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
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.
4740 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
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.
4749 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
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.
4755 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
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.
4762 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
4764 * doc/contrib.texi (Contributors): Update my entry.
4766 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
4768 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
4771 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
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.
4793 (find_conditional_protection): Ditto.
4794 (is_conditionally_protected): 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.
4806 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4808 * doc/md.texi: Document that vec_set and vec_extract must not
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
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.
4821 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4823 * config/riscv/autovec.md: Add gen_lowpart.
4825 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4827 * config/riscv/autovec.md: Allow register index operand.
4829 2023-07-05 Pan Li <pan2.li@intel.com>
4831 * config/riscv/riscv-vector-builtins.cc
4832 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
4834 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4836 * config/riscv/autovec.md: Use float_truncate.
4838 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
4852 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
4853 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
4862 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
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.
4869 2023-07-05 Jan Beulich <jbeulich@suse.com>
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.
4877 2023-07-05 Jan Beulich <jbeulich@suse.com>
4880 * config/i386/sse.md: New splitters to simplify
4881 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
4883 2023-07-05 Jan Beulich <jbeulich@suse.com>
4886 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
4887 form of splitter for PR target/100711.
4889 2023-07-05 Richard Biener <rguenther@suse.de>
4891 PR middle-end/110541
4892 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
4895 2023-07-05 Jan Beulich <jbeulich@suse.com>
4898 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
4899 for memory form operand 1.
4901 2023-07-05 Jan Beulich <jbeulich@suse.com>
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.
4913 2023-07-05 Richard Biener <rguenther@suse.de>
4915 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
4917 2023-07-05 yulong <shiyulong@iscas.ac.cn>
4919 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
4921 2023-07-05 yulong <shiyulong@iscas.ac.cn>
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):
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.
4983 2023-07-04 Andrew Pinski <apinski@marvell.com>
4985 PR tree-optimization/110487
4986 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
4987 build a nonstandard integer and use that.
4989 2023-07-04 Andrew Pinski <apinski@marvell.com>
4991 * match.pd (a?-1:0): Cast type an integer type
4992 rather the type before the negative.
4995 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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):
5003 2023-07-04 Richard Biener <rguenther@suse.de>
5005 PR tree-optimization/110491
5006 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
5007 whether the PHI args are possibly undefined before folding
5010 2023-07-04 Pan Li <pan2.li@intel.com>
5011 Thomas Schwinge <thomas@codesourcery.com>
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
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'.
5025 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
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):
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.
5043 2023-07-04 Richard Biener <rguenther@suse.de>
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.
5050 2023-07-04 Richard Biener <rguenther@suse.de>
5052 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
5053 check guarding scalar_niter underflow.
5055 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
5057 PR tree-optimization/110531
5058 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
5059 slp_done_for_suggested_uf to false.
5061 2023-07-04 Richard Biener <rguenther@suse.de>
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.
5068 2023-07-04 Richard Biener <rguenther@suse.de>
5070 PR tree-optimization/110436
5071 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
5072 force live but not relevant pattern stmts relevant.
5074 2023-07-04 Lili Cui <lili.cui@intel.com>
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.
5079 2023-07-04 Richard Biener <rguenther@suse.de>
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.
5088 2023-07-04 Richard Biener <rguenther@suse.de>
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.
5102 2023-07-04 Pan Li <pan2.li@intel.com>
5105 2023-07-03 Pan Li <pan2.li@intel.com>
5107 * config/riscv/vector.md: Fix typo.
5109 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
5124 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5126 * config/riscv/riscv-vsetvl.cc
5127 (vector_insn_info::parse_insn): Add early break.
5129 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
5131 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
5132 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
5134 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
5136 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
5138 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
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.
5177 2023-07-03 Andrew Pinski <apinski@marvell.com>
5179 PR middle-end/110510
5180 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
5182 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
5184 * config/darwin.h: Avoid duplicate multiply_defined specs on
5185 earlier Darwin versions with shared libgcc.
5187 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
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.
5207 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
5231 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
5234 * doc/gm2.texi (Semantic checking): Include examples using
5235 -Wuninit-variable-checking.
5237 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
5246 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
5253 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
5255 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
5256 the index to be 0 or 1.
5258 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
5261 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
5270 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
5279 2023-07-03 Pan Li <pan2.li@intel.com>
5281 * config/riscv/vector.md: Fix typo.
5283 2023-07-03 Richard Biener <rguenther@suse.de>
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.
5289 2023-07-03 Richard Biener <rguenther@suse.de>
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.
5295 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5297 * config/mips/mips.md(*and<mode>3_mips16): Generates
5298 ZEB/ZEH instructions.
5300 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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.
5311 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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.
5318 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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`.
5330 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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
5338 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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.
5360 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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`.
5372 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
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.
5381 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
5383 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
5385 * config/mips/mips.h(__mips_mips16e2): Defined a new
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..
5393 2023-07-02 Jakub Jelinek <jakub@redhat.com>
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.
5399 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5401 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
5403 * config/xtensa/xtensa.md (*xtensa_clamps):
5404 Add TARGET_MINMAX to the condition.
5406 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5408 * config/xtensa/xtensa.md (*eqne_INT_MIN):
5409 Add missing ":SI" to the match_operator.
5411 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
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
5421 2023-07-01 Jan Hubicka <jh@suse.cz>
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.
5430 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
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
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.
5445 2023-07-01 Jan Hubicka <jh@suse.cz>
5447 PR tree-optimization/103680
5448 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
5449 make message clearer.
5451 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
5453 PR tree-optimization/101832
5454 * tree-object-size.cc (addr_object_size): Handle structure/union type
5455 when it has flexible size.
5457 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
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.
5465 2023-06-30 Jan Hubicka <jh@suse.cz>
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
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
5474 * predict.h (estimate_bb_frequencies): No longer declare it.
5476 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
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.
5507 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
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.
5516 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
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):
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
5534 2023-06-30 Pan Li <pan2.li@intel.com>
5536 * config/riscv/vector.md: Refactor the common condition.
5538 2023-06-30 Richard Biener <rguenther@suse.de>
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.
5544 2023-06-30 Richard Biener <rguenther@suse.de>
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.
5552 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
5553 Thomas Schwinge <thomas@codesourcery.com>
5555 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
5557 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
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.
5566 2023-06-29 Jan Hubicka <jh@suse.cz>
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.
5574 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
5577 * doc/extend.texi: Document GCC extension on a structure containing
5578 a flexible array member to be a member of another structure.
5580 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
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.
5591 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
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.
5597 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
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
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
5613 (irange::union_nonzero_bits): Same.
5614 * value-range.h (irange::normalize_kind): Verify range.
5616 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
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.
5642 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
5644 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
5647 2023-06-29 Richard Biener <rguenther@suse.de>
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.
5653 2023-06-29 Lili Cui <lili.cui@intel.com>
5655 PR tree-optimization/110148
5656 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
5657 ops in this function.
5659 2023-06-29 Richard Biener <rguenther@suse.de>
5661 PR middle-end/110452
5662 * expr.cc (store_constructor): Handle uniform boolean
5663 vectors with integer mode specially.
5665 2023-06-29 Richard Biener <rguenther@suse.de>
5667 PR middle-end/110461
5668 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
5671 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
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.
5677 2023-06-29 Pan Li <pan2.li@intel.com>
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
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.
5692 2023-06-29 Pan Li <pan2.li@intel.com>
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.
5713 2023-06-29 Cui, Lili <lili.cui@intel.com>
5715 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
5716 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
5718 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
5721 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
5722 to insn before validating it.
5724 2023-06-28 Jan Hubicka <jh@suse.cz>
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
5738 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
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.
5761 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
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.
5769 2023-06-28 Richard Biener <rguenther@suse.de>
5771 PR tree-optimization/110434
5772 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
5773 VAR we replace with <retval>.
5775 2023-06-28 Richard Biener <rguenther@suse.de>
5777 PR tree-optimization/110451
5778 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
5779 tcc_comparison are expensive.
5781 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
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.
5793 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
5796 * config/i386/i386-features.cc (compute_convert_gain): Provide
5797 more accurate gains for conversion of scalar comparisons to
5800 2023-06-28 Richard Biener <rguenther@suse.de>
5802 PR tree-optimization/110443
5803 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
5806 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
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
5812 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
5813 (split pattern for compare_and_move): Likewise.
5815 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5817 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
5818 (*single_widen_fma<mode>): Ditto.
5820 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
5823 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
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
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):
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.
5839 2023-06-28 Jan Hubicka <jh@suse.cz>
5841 PR tree-optimization/110377
5842 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
5844 (ipa_analyze_node): Enable ranger.
5846 2023-06-28 Richard Biener <rguenther@suse.de>
5848 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
5849 (TYPE_PRECISION_RAW): Provide raw access to the precision
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):
5857 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
5859 2023-06-28 Alexandre Oliva <oliva@adacore.com>
5861 * doc/extend.texi (zero-call-used-regs): Document leafy and
5863 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
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.
5869 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5871 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
5872 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
5874 (@pred_single_widen_add<mode>): New pattern.
5875 (@pred_single_widen_sub<mode>): New pattern.
5877 2023-06-28 liuhongt <hongtao.liu@intel.com>
5879 * config/i386/i386.cc (ix86_invalid_conversion): New function.
5880 (TARGET_INVALID_CONVERSION): Define as
5881 ix86_invalid_conversion.
5883 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5885 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
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.
5892 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5894 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
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.
5902 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5904 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
5907 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
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):
5913 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
5917 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
5918 (@pred_ncopysign<mode>_scalar): Ditto.
5920 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
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
5926 * config/riscv/vector.md: Use new iterators.
5928 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
5930 * match.pd: Use element_mode and check if target supports
5931 operation with new type.
5933 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5935 * config/aarch64/aarch64-sve-builtins-base.cc
5936 (svdupq_impl::fold_nonconst_dupq): New method.
5937 (svdupq_impl::fold): Call fold_nonconst_dupq.
5939 2023-06-27 Andrew Pinski <apinski@marvell.com>
5941 PR middle-end/110420
5942 PR middle-end/103979
5944 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
5946 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
5948 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
5949 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
5951 (set_switch_stmt_execution_predicate): Same.
5952 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
5954 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
5956 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
5957 ipa_vr instead of value_range.
5960 (ipa_get_value_range): Same.
5961 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
5965 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
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
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.
5976 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
5978 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
5979 as a probable initializer rather than a probable complete statement.
5981 2023-06-27 Richard Biener <rguenther@suse.de>
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):
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
5993 (vectorizable_load): Likewise.
5995 2023-06-27 liuhongt <hongtao.liu@intel.com>
5997 PR rtl-optimization/110237
5998 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
6000 (maskstore<mode><avx512fmaskmodelower): Ditto.
6001 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
6002 from original <avx512>_store<mode>_mask.
6004 2023-06-27 liuhongt <hongtao.liu@intel.com>
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.
6013 2023-06-27 liuhongt <hongtao.liu@intel.com>
6016 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
6017 vzeroupper for vzeroupper call_insn.
6019 2023-06-27 Andrew Pinski <apinski@marvell.com>
6021 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
6024 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6026 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
6029 2023-06-26 Andrew Pinski <apinski@marvell.com>
6031 * doc/extend.texi (access attribute): Add
6033 (interrupt/interrupt_handler attribute):
6036 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6038 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
6039 Use <DWI> instead of <V2XWIDE>.
6040 (aarch64_sqrshrun_n<mode>): Likewise.
6042 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6044 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
6046 (aarch64_rnd_imm_p): ... This.
6047 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
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):
6063 (aarch64_rnd_imm_p): ... This.
6065 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
6067 * config/s390/s390.cc (s390_encode_section_info): Set
6068 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
6071 2023-06-26 Jan Hubicka <jh@suse.cz>
6073 PR tree-optimization/109849
6074 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
6075 count of newly constructed forwarder block.
6077 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
6079 * doc/optinfo.texi: Fix "steam" -> "stream".
6081 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6083 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
6085 (dse_optimize_stmt): Add LEN_MASK_STORE.
6087 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6089 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
6090 fold of LOAD/STORE with length.
6092 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
6094 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
6095 Check for interdependence between operands 1 and 2.
6097 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
6099 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
6100 into account when costing non-widening/truncating conversions.
6102 2023-06-26 Richard Biener <rguenther@suse.de>
6104 PR tree-optimization/110381
6105 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
6106 Materialize permutes before fold-left reductions.
6108 2023-06-26 Pan Li <pan2.li@intel.com>
6110 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
6112 2023-06-26 Richard Biener <rguenther@suse.de>
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.
6118 2023-06-26 Richard Biener <rguenther@suse.de>
6120 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
6121 Use element_precision.
6123 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6125 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
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.
6131 2023-06-26 Richard Biener <rguenther@suse.de>
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.
6137 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6139 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
6142 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
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.
6151 2023-06-26 liuhongt <hongtao.liu@intel.com>
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
6159 2023-06-26 liuhongt <hongtao.liu@intel.com>
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.
6166 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
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.
6172 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6174 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
6176 * config/riscv/riscv-vsetvl.h: New function.
6178 2023-06-25 Li Xu <xuli1@eswincomputing.com>
6180 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
6183 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
6198 * config/riscv/vector.md: Ditto.
6200 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6202 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
6205 2023-06-25 Pan Li <pan2.li@intel.com>
6207 * config/riscv/vector.md: Revert.
6209 2023-06-25 Pan Li <pan2.li@intel.com>
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.
6270 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
6277 2023-06-25 liuhongt <hongtao.liu@intel.com>
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
6285 (*<avx512>_load<mode>): Ditto.
6287 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6289 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
6291 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6293 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
6294 LEN_MASK_{LOAD,STORE}
6296 2023-06-25 yulong <shiyulong@iscas.ac.cn>
6298 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
6300 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
6302 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
6304 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
6311 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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):
6323 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
6324 * config/riscv/vector.md: Fix attribute bug.
6326 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6328 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
6329 Apply LEN_MASK_{LOAD,STORE}.
6331 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6333 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
6334 Add LEN_MASK_{LOAD,STORE}.
6336 2023-06-24 David Malcolm <dmalcolm@redhat.com>
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>.
6355 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
6372 2023-06-23 Marek Polacek <polacek@redhat.com>
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.
6380 2023-06-23 Jan Hubicka <jh@suse.cz>
6382 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
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.
6388 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
6389 Aaron Sawdey <acsawdey@linux.ibm.com>
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.
6400 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
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
6409 2023-06-23 Richard Biener <rguenther@suse.de>
6411 * varasm.cc (initializer_constant_valid_p_1): Only
6412 allow conversions between scalar floating point types.
6414 2023-06-23 Richard Biener <rguenther@suse.de>
6416 * tree-vect-stmts.cc (vectorizable_assignment):
6417 Properly handle non-integral operands when analyzing
6420 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
6427 2023-06-23 Richard Biener <rguenther@suse.de>
6429 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
6430 the truth_value_p case with !VECTOR_TYPE_P.
6432 2023-06-23 Richard Biener <rguenther@suse.de>
6434 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
6435 Exit early when the type isn't scalar integral.
6437 2023-06-23 Richard Biener <rguenther@suse.de>
6439 * match.pd ((outertype)((innertype0)a+(innertype1)b)
6440 -> ((newtype)a+(newtype)b)): Use element_precision
6443 2023-06-23 Richard Biener <rguenther@suse.de>
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.
6450 2023-06-23 Richard Biener <rguenther@suse.de>
6452 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
6453 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
6455 2023-06-23 Richard Biener <rguenther@suse.de>
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.
6461 2023-06-22 Marek Polacek <polacek@redhat.com>
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.
6468 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
6470 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
6472 2023-06-22 Richard Biener <rguenther@suse.de>
6474 PR tree-optimization/110332
6475 * tree-ssa-phiprop.cc (propagate_with_phi): Always
6476 check aliasing with edge inserted loads.
6478 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
6479 Uros Bizjak <ubizjak@gmail.com>
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.
6492 2023-06-22 David Malcolm <dmalcolm@redhat.com>
6495 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
6496 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
6498 (fanalyzer-debug-text-art): New.
6500 2023-06-22 David Malcolm <dmalcolm@redhat.com>
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.
6588 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
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.
6609 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
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.
6616 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>):
6626 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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.
6650 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>):
6660 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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.
6684 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6687 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>):
6697 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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.
6721 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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
6733 2023-06-21 Richard Biener <rguenther@suse.de>
6735 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
6736 split_constant_offset for the POINTER_PLUS_EXPR case.
6738 2023-06-21 Richard Biener <rguenther@suse.de>
6740 * tree-ssa-loop-ivopts.cc (record_group_use): Use
6741 split_constant_offset.
6743 2023-06-21 Richard Biener <rguenther@suse.de>
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.
6750 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>):
6760 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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.
6784 2023-06-21 Tamar Christina <tamar.christina@arm.com>
6787 * doc/md.texi: Replace backslashchar.
6789 2023-06-21 Richard Biener <rguenther@suse.de>
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.
6795 2023-06-21 Jan Beulich <jbeulich@suse.com>
6797 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
6798 value duplication by ix86_build_signbit_mask() when AVX512F and
6800 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
6801 2-alternative form. Adjust "mode" attribute. Add "enabled"
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.
6808 2023-06-21 liuhongt <hongtao.liu@intel.com>
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.
6815 2023-06-20 Tamar Christina <tamar.christina@arm.com>
6818 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
6820 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
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.
6830 2023-06-20 Jakub Jelinek <jakub@redhat.com>
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
6837 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
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"
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"
6862 2023-06-20 Martin Jambor <mjambor@suse.cz>
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.
6869 2023-06-20 Martin Jambor <mjambor@suse.cz>
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.
6884 2023-06-20 Carl Love <cel@us.ibm.com>
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
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.
6916 2023-06-20 Li Xu <xuli1@eswincomputing.com>
6918 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
6919 size of vector mask mode to one rvv register.
6921 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6923 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
6925 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
6927 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
6930 2023-06-20 Richard Biener <rguenther@suse.de>
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.
6936 2023-06-20 Richard Biener <rguenther@suse.de>
6938 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
6939 keep the virtual SSA form up-to-date.
6941 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6943 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
6944 New define_insn_and_split.
6946 2023-06-20 Tamar Christina <tamar.christina@arm.com>
6948 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
6950 2023-06-20 Jan Beulich <jbeulich@suse.com>
6952 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
6953 constraint. Add new AVX512F alternative.
6955 2023-06-20 Richard Biener <rguenther@suse.de>
6958 * dwarf2out.cc (process_scope_var): Continue processing
6959 the decl after setting a parent in case the existing DIE
6962 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
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.
6968 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
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.
6975 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
6977 PR rtl-optimization/110305
6978 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
6979 Handle HONOR_SNANS for x + 0.0.
6981 2023-06-19 Jan Hubicka <jh@suse.cz>
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.
6988 2023-06-19 Tamar Christina <tamar.christina@arm.com>
6990 * config/aarch64/aarch64.md (arches): Add nosimd.
6991 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
6994 2023-06-19 Tamar Christina <tamar.christina@arm.com>
6995 Omar Tahir <Omar.Tahir2@arm.com>
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.
7004 * gensupport.h (compact_syntax): New.
7005 (hash-set.h): Include.
7006 * doc/md.texi: Document it.
7008 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
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
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.
7053 2023-06-19 Li Xu <xuli1@eswincomputing.com>
7055 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
7058 2023-06-19 Pan Li <pan2.li@intel.com>
7061 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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.
7078 2023-06-19 Pan Li <pan2.li@intel.com>
7081 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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.
7098 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
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.
7105 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
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.
7112 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
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.
7151 2023-06-19 Richard Biener <rguenther@suse.de>
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.
7157 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7159 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
7160 Simplify vec_concat of lowpart subreg and high part vec_select.
7162 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
7164 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
7166 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
7168 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
7169 Handle null niters_skip.
7171 2023-06-19 Richard Biener <rguenther@suse.de>
7173 * config/aarch64/aarch64.cc
7174 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
7175 to LOOP_VINFO_MASKS.
7177 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
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
7188 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7189 Robin Dapp <rdapp.gcc@gmail.com>
7191 * doc/md.texi: Add len_mask{load,store}.
7192 * genopinit.cc (main): 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.
7207 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7209 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
7211 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
7213 * config/riscv/autovec.md (<optab><mode>3): Implement binop
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
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.
7227 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
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.
7235 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
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.
7249 2023-06-19 Richard Biener <rguenther@suse.de>
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<>
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.
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.
7283 2023-06-19 Richard Biener <rguenther@suse.de>
7285 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
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.
7297 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
7300 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
7301 Add Optimization option property.
7303 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7305 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
7306 Add new pattern for the abovementioned case.
7308 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7310 * config/xtensa/xtensa.cc
7311 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
7313 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
7315 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
7317 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
7319 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
7321 2023-06-19 liuhongt <hongtao.liu@intel.com>
7324 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
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.
7334 2023-06-19 liuhongt <hongtao.liu@intel.com>
7337 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
7338 UNSPEC_US_TRUNCATE instead of original us_truncate for
7340 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
7342 (mmx_packsswb): .. this and ..
7343 (mmx_packuswb): .. this.
7344 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
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.
7353 2023-06-18 Pan Li <pan2.li@intel.com>
7355 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
7357 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
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.
7369 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
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.
7375 2023-06-18 Honza <jh@ryzen3.suse.cz>
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.
7398 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
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.
7407 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
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.
7417 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
7419 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
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.
7437 2023-06-18 yulong <shiyulong@iscas.ac.cn>
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):
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.
7499 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
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.
7506 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
7508 * gcc-ar.cc (main): Refactor to slightly reduce code
7509 duplication. Avoid unnecessary elements in nargv.
7511 2023-06-16 Pan Li <pan2.li@intel.com>
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.
7527 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7530 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
7532 2023-06-16 Jakub Jelinek <jakub@redhat.com>
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
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.
7545 2023-06-16 Jakub Jelinek <jakub@redhat.com>
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.
7552 2023-06-16 Martin Jambor <mjambor@suse.cz>
7554 * configure: Regenerate.
7556 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
7557 Uros Bizjak <ubizjak@gmail.com>
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.
7564 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
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.
7570 2023-06-16 Alex Coplan <alex.coplan@arm.com>
7572 * doc/invoke.texi: Document -Welaborated-enum-base.
7574 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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):
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.
7605 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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):
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.
7652 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
7661 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7663 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
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.
7674 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7676 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
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):
7714 2023-06-16 Pan Li <pan2.li@intel.com>
7716 * config/riscv/riscv-vsetvl.cc
7717 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
7719 2023-06-16 Richard Biener <rguenther@suse.de>
7721 PR tree-optimization/110278
7722 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
7723 (x != (typeof x)(x == 0) -> true): Likewise.
7725 2023-06-16 Pali Rohár <pali@kernel.org>
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.
7735 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
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.
7744 2023-06-16 Richard Biener <rguenther@suse.de>
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
7752 2023-06-15 Marek Polacek <polacek@redhat.com>
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
7760 * configure: Regenerate.
7761 * doc/install.texi: Document --enable-host-pie.
7763 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
7765 * regcprop.cc (maybe_mode_change): Enable stack pointer
7768 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
7770 PR tree-optimization/110266
7771 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
7773 (adjust_realpart_expr): Ditto.
7775 2023-06-15 Jan Beulich <jbeulich@suse.com>
7777 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
7780 2023-06-15 Jan Beulich <jbeulich@suse.com>
7782 * config/i386/constraints.md: Mention k and r for B.
7784 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
7785 Andrew Pinski <apinski@marvell.com>
7788 * config/loongarch/loongarch.md: Modify the register constraints for template
7789 "jumptable" and "indirect_jump" from "r" to "e".
7791 2023-06-15 Xi Ruoyao <xry111@xry111.site>
7793 * config/loongarch/loongarch-tune.h (loongarch_align): New
7795 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
7797 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
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=.
7804 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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
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>):
7829 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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.
7837 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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.
7845 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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.
7852 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
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
7859 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
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
7872 2023-06-15 chenxiaolong <chenxl04200420@163.com>
7874 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
7875 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
7877 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7879 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
7880 (expand_vec_perm_const_1): Add merge optmization.
7882 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
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
7888 2023-06-15 Pan Li <pan2.li@intel.com>
7890 * config/riscv/autovec-opt.md: Align the predictor sytle.
7891 * config/riscv/autovec.md: Ditto.
7893 2023-06-15 Pan Li <pan2.li@intel.com>
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.
7900 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
7902 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
7904 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7906 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
7907 Fix signed comparison warning in loop from npats to enelts.
7909 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
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.
7917 2023-06-14 liuhongt <hongtao.liu@intel.com>
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
7924 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
7926 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
7928 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
7930 * config/sh/divtab.cc: Remove.
7932 2023-06-13 Jakub Jelinek <jakub@redhat.com>
7934 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
7935 superfluous spaces around \t for vpcmpeqd.
7937 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
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.
7943 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
7945 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
7948 (TUPLE_ENTRY): Undef.
7950 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
7956 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7958 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
7959 (shuffle_decompress_patterns): Ditto.
7961 2023-06-13 Richard Biener <rguenther@suse.de>
7963 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
7965 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
7966 Kito Cheng <kito.cheng@sifive.com>
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.
7980 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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
7991 (reload_tp_hard): Likewise.
7992 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
7994 * doc/invoke.texi (Arm Options, mtp): Document new values.
7996 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
8006 2023-06-13 Alexandre Oliva <oliva@adacore.com>
8008 * range-op-float.cc (frange_nextafter): Drop inline.
8009 (frelop_early_resolve): Add static.
8010 (frange_float): Likewise.
8012 2023-06-13 Richard Biener <rguenther@suse.de>
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.
8018 2023-06-13 Richard Biener <rguenther@suse.de>
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.
8023 2023-06-13 Tejas Belagod <tbelagod@arm.com>
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.
8032 2023-06-13 Andi Kleen <ak@linux.intel.com>
8034 * config/i386/gcc-auto-profile: Regenerate.
8036 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8038 * config/riscv/vector-iterators.md: Fix requirement.
8040 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
8046 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
8048 PR rtl-optimization/101188
8049 * postreload.cc (reload_cse_move2add_invalidate): New function,
8051 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
8053 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
8059 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
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.
8070 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8072 PR tree-optimization/110205
8073 * range-op-float.cc (range_operator::fold_range): Add default FII
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.
8081 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8106 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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
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.
8121 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8130 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
8132 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
8134 * gimple-range-op.cc (get_code): Rename from get_code_and_type
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.
8164 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8176 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8184 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8192 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8200 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
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.
8220 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8229 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8236 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8243 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8251 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8259 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8267 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
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.
8275 2023-06-12 Pan Li <pan2.li@intel.com>
8277 * config/riscv/riscv-vector-builtins-types.def
8278 (vfloat16m1_t): Add type to lmul1 ops.
8279 (vfloat16m2_t): Likewise.
8280 (vfloat16m4_t): Likewise.
8282 2023-06-12 Richard Biener <rguenther@suse.de>
8284 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
8285 .MASK_STORE and friend set the size of the access to
8288 2023-06-12 Tamar Christina <tamar.christina@arm.com>
8290 * config.in: Regenerate.
8291 * configure: Regenerate.
8292 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
8294 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
8304 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8306 * simplify-rtx.cc (simplify_const_unary_operation):
8307 Handle US_TRUNCATE, SS_TRUNCATE.
8309 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
8312 * doc/gm2.texi (Standard procedures): Fix Next link.
8314 2023-06-12 Tamar Christina <tamar.christina@arm.com>
8316 * config.in: Regenerate.
8318 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
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.
8328 2023-06-12 liuhongt <hongtao.liu@intel.com>
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.
8347 2023-06-12 Richard Biener <rguenther@suse.de>
8349 PR middle-end/110200
8350 * genmatch.cc (expr::gen_transform): Put braces around
8351 the if arm for the (convert ...) short-cut.
8353 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
8356 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
8357 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
8359 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
8362 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
8363 floating constant itself for real_to_target call.
8365 2023-06-12 Pan Li <pan2.li@intel.com>
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.
8374 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
8376 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
8377 Do not require a stack frame when debugging is enabled for AIX.
8379 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
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.
8394 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
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]:
8419 (avr_rtx_costs_1): Adjust cost for a new pattern.
8421 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
8436 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
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
8442 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
8443 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
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.
8456 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
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.
8498 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
8504 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
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
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.
8527 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8529 * range-op-float.cc (foperator_negate): Remove. Move prototypes
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
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.
8542 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8544 * range-op-float.cc (foperator_minus): Remove. Move prototypes
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
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.
8559 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8561 * range-op-float.cc (foperator_abs): Remove. Move prototypes
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
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.
8574 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8576 * range-op-float.cc (foperator_plus): Remove. Move prototypes
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
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.
8591 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8593 * range-op-mixed.h (class operator_cast): Combined from integer
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.
8601 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
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.
8611 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8613 * range-op-float.cc (foperator_identity): Remove. Move prototypes
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
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.
8626 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8628 * range-op-float.cc (foperator_ge): Remove. Move prototypes
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
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.
8644 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8646 * range-op-float.cc (foperator_gt): Remove. Move prototypes
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
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.
8662 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8664 * range-op-float.cc (foperator_le): Remove. Move prototypes
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
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.
8680 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8682 * range-op-float.cc (foperator_lt): Remove. Move prototypes
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
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.
8698 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8700 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
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
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.
8716 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
8718 * range-op-float.cc (foperator_equal): Remove. Move prototypes
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
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.
8734 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
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
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.
8760 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8761 Richard Sandiford <richard.sandiford@arm.com>
8762 Richard Biener <rguenther@suse.de>
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.
8774 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
8777 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
8780 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
8782 * range-op.cc (range_cast): Move to...
8783 * range-op.h (range_cast): Here and add generic a version.
8785 2023-06-09 Marek Polacek <polacek@redhat.com>
8789 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
8790 warn about designated initializers in C only.
8792 2023-06-09 Andrew Pinski <apinski@marvell.com>
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.
8799 2023-06-09 Andrew Pinski <apinski@marvell.com>
8801 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
8802 multiply rather than negation/bit_and.
8804 2023-06-09 Andrew Pinski <apinski@marvell.com>
8806 * match.pd (`X & -Y -> X * Y`): Allow for truncation
8807 and the same type for unsigned types.
8809 2023-06-09 Andrew Pinski <apinski@marvell.com>
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.
8816 2023-06-09 Richard Biener <rguenther@suse.de>
8818 * match.pd (two conversions in a row): Use element_precision
8819 to DTRT for VECTOR_TYPE.
8821 2023-06-09 Pan Li <pan2.li@intel.com>
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.
8828 2023-06-09 Pan Li <pan2.li@intel.com>
8830 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
8833 2023-06-09 liuhongt <hongtao.liu@intel.com>
8836 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
8837 view_convert_expr mask to signed type when folding pblendvb
8840 2023-06-09 liuhongt <hongtao.liu@intel.com>
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
8847 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
8848 real codename for __builtin_ia32_pabs{b,w,d}.
8850 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
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.
8881 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
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.
8888 (cfn_sincos): Ditto.
8889 * range-op-float.cc (fold_range): Change class to range_operator.
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.
8912 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
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.
8951 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
8953 * range-op-float.cc (range_operator_float::fold_range): Return
8954 NAN of the result type.
8956 2023-06-08 Jakub Jelinek <jakub@redhat.com>
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.
8965 2023-06-08 Jakub Jelinek <jakub@redhat.com>
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.
8971 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
8973 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
8974 avoid sign extension/undefined behaviour when setting each bit.
8976 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
8977 Uros Bizjak <ubizjak@gmail.com>
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.
8997 2023-06-07 Andrew Pinski <apinski@marvell.com>
8999 * match.pd: Fix comment for the
9000 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
9002 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
9003 Jeff Law <jlaw@ventanamicro.com>
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
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.
9022 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
9025 * config/riscv/riscv.cc (riscv_print_operand): Calculate
9026 memmodel only when it is valid.
9028 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
9030 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
9031 for constant element of a vector.
9033 2023-06-07 Jakub Jelinek <jakub@redhat.com>
9035 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
9036 instead compare tree_nonzero_bits <= 1U rather than just == 1.
9038 2023-06-07 Alex Coplan <alex.coplan@arm.com>
9041 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
9043 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
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.
9052 2023-06-07 Alex Coplan <alex.coplan@arm.com>
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
9060 2023-06-07 Alex Coplan <alex.coplan@arm.com>
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.
9070 (st64bv0): Likewise.
9072 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
9074 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
9075 offset table pseudo to a general reg subset.
9077 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9079 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
9081 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
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):
9093 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9095 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
9097 (aarch64_addp<mode>_insn): ... This...
9098 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
9099 (aarch64_addp<mode>): New define_expand.
9101 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
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.
9122 2023-06-07 Andrew Pinski <apinski@marvell.com>
9124 PR middle-end/110117
9125 * expr.cc (expand_single_bit_test): Handle
9126 const_int from expand_expr.
9128 2023-06-07 Andrew Pinski <apinski@marvell.com>
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`.
9134 2023-06-07 Andrew Pinski <apinski@marvell.com>
9136 PR tree-optimization/110134
9137 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
9139 (-A CMP CST -> B CMP (-CST)): Likewise.
9141 2023-06-07 Andrew Pinski <apinski@marvell.com>
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.
9150 2023-06-07 Andrew Pinski <apinski@marvell.com>
9152 * match.pd (zero_one_valued_p): Match 0 integer constant
9155 2023-06-07 Pan Li <pan2.li@intel.com>
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.
9186 2023-06-07 Jason Merrill <jason@redhat.com>
9189 * doc/invoke.texi: Document it.
9191 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
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.
9212 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
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.
9218 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9227 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
9228 Tobias Burnus <tobias@codesourcery.com>
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
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
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.
9248 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
9250 * config/rs6000/genfusion.pl: Delete some dead code.
9252 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
9254 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
9256 (gen_ld_cmpi_p10): ... this.
9258 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
9261 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
9262 duplicate expression.
9264 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
9274 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
9280 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
9292 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9294 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
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.
9308 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
9309 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
9311 2023-06-06 Richard Biener <rguenther@suse.de>
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.
9318 2023-06-06 Richard Biener <rguenther@suse.de>
9320 PR tree-optimization/109143
9321 * tree-ssa-structalias.cc (solution_set_expand): Avoid
9322 one bitmap iteration and optimize bit range setting.
9324 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
9327 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
9328 XVECEXP, not XEXP, to access first item of a PARALLEL.
9330 2023-06-06 Pan Li <pan2.li@intel.com>
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.
9342 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
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
9348 2023-06-06 Li Xu <xuli1@eswincomputing.com>
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.
9356 2023-06-06 Pan Li <pan2.li@intel.com>
9358 * config/riscv/vector-iterators.md: Fix typo in mode attr.
9360 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9361 Joel Hutton <joel.hutton@arm.com>
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):
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.
9388 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9389 Joel Hutton <joel.hutton@arm.com>
9390 Tamar Christina <tamar.christina@arm.com>
9392 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
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
9428 (supportable_widening_operation): Likewise.
9429 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
9431 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
9432 Joel Hutton <joel.hutton@arm.com>
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
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.
9454 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
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.
9462 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
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.
9479 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
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.
9486 2023-06-05 Pan Li <pan2.li@intel.com>
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.
9519 2023-06-05 Andrew Pinski <apinski@marvell.com>
9522 * Makefile.in (clean): Remove the removing of
9523 MULTILIB_DIR/MULTILIB_OPTIONS directories.
9525 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
9527 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
9529 * config/mips/mips.cc (speculation_barrier_libfunc): New static
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.
9536 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9550 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9556 2023-06-04 Andrew Pinski <apinski@marvell.com>
9558 * expr.cc (do_store_flag): Improve for single bit testing
9559 not against zero but against that single bit.
9561 2023-06-04 Andrew Pinski <apinski@marvell.com>
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.
9567 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
9569 * config/h8300/constraints.md (Zz): Make this a normal
9571 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
9572 * config/h8300/logical.md (H8/SX bit patterns): Remove.
9574 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
9576 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
9577 New insn_and_split patterns.
9579 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9596 2023-06-04 Pan Li <pan2.li@intel.com>
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
9608 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9616 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
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.
9623 2023-06-04 Jason Merrill <jason@redhat.com>
9626 * tree-eh.cc (lower_resx): Pass the exception pointer to the
9628 * except.h: Tweak comment.
9630 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
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.
9636 2023-06-04 Pan Li <pan2.li@intel.com>
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,
9651 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
9653 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
9656 2023-06-03 Die Li <lidie@eswincomputing.com>
9658 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
9660 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9662 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
9664 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9666 * config/riscv/vector.md: Add vector-opt.md.
9667 * config/riscv/autovec-opt.md: New file.
9669 2023-06-03 liuhongt <hongtao.liu@intel.com>
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.
9675 2023-06-03 liuhongt <hongtao.liu@intel.com>
9678 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
9679 (truncv2si<mode>2): Ditto.
9681 2023-06-02 Andrew Pinski <apinski@marvell.com>
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.
9688 2023-06-02 Andrew Pinski <apinski@marvell.com>
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.
9694 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
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.
9701 2023-06-02 David Faust <david.faust@oracle.com>
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.
9708 2023-06-02 Alex Coplan <alex.coplan@arm.com>
9710 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
9711 (btf_asm_datasec_type): Likewise.
9713 2023-06-02 Carl Love <cel@us.ibm.com>
9715 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
9716 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
9718 2023-06-02 Jason Merrill <jason@redhat.com>
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.
9728 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
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"
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.
9750 2023-06-02 Jason Merrill <jason@redhat.com>
9753 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
9754 (initializer_constant_valid_p_1): Compare float precision.
9756 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
9758 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
9761 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9763 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
9764 (vect_set_loop_condition_partial_vectors): Ditto.
9766 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
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.
9773 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
9776 * doc/install.texi: Document (optional) Perl usage for parallel
9779 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
9782 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
9785 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9786 KuanLin Chen <best124612@gmail.com>
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.
9791 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9793 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
9795 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9797 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
9799 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9801 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
9803 (DEF_RVV_FRM_ENUM): Ditto.
9805 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9814 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9826 2023-06-01 Jason Merrill <jason@redhat.com>
9828 * doc/invoke.texi (-Wpedantic): Improve clarity.
9830 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
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.
9844 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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).
9850 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
9851 Uros Bizjak <ubizjak@gmail.com>
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
9876 (*ptest<mode>_and): Specify CCZ to only perform this optimization
9877 when only the Z flag is required.
9879 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
9882 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
9884 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
9891 2023-06-01 Pan Li <pan2.li@intel.com>
9893 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
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):
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):
9909 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
9910 machine mode based on TARGET_VECTOR_ELEN_FP_16.
9912 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
9924 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
9925 Richard Sandiford <richard.sandiford@arm.com>
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.
9941 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>):
9956 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
9974 2023-05-31 David Faust <david.faust@oracle.com>
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.
10002 2023-05-31 David Faust <david.faust@oracle.com>
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.
10007 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
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.
10024 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
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.
10067 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10069 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
10070 expand into define_insn_and_split.
10072 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10074 * config/riscv/vector.md: Remove FRM.
10076 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10078 * config/riscv/vector.md: Remove FRM.
10080 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10082 * config/riscv/vector.md: Remove FRM.
10084 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
10087 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
10090 2023-05-31 Richard Biener <rguenther@suse.de>
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.
10102 2023-05-31 Richard Biener <rguenther@suse.de>
10104 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
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.
10111 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
10120 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10122 * config/xtensa/predicates.md (xtensa_bit_join_operator):
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
10130 (*shlrd_const, *shlrd_per_byte):
10131 Likewise regarding the code iterator.
10133 2023-05-31 Cui, Lili <lili.cui@intel.com>
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.
10140 2023-05-31 Pan Li <pan2.li@intel.com>
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.
10149 2023-05-30 liuhongt <hongtao.liu@intel.com>
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.
10159 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
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.
10168 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
10171 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
10172 Fix misleading identation.
10174 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
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.
10208 2023-05-30 Andrew Pinski <apinski@marvell.com>
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.
10215 2023-05-30 Andrew Pinski <apinski@marvell.com>
10217 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
10220 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
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.
10227 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
10230 * simplify-rtx.cc (simplify_const_relational_operation): Return
10231 early if we have a MODE_CC comparison that isn't a COMPARE against
10234 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
10236 * config/riscv/riscv.cc (riscv_const_insns): Allow
10237 const_vec_duplicates.
10239 2023-05-30 liuhongt <hongtao.liu@intel.com>
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.
10253 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
10262 (USADDLP): Likewise.
10263 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
10265 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
10273 (<u>avg<mode>3_ceil): Rename to...
10274 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
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.
10281 2023-05-30 Andreas Schwab <schwab@suse.de>
10284 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
10285 match libsanitizer.
10287 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10289 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
10290 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
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.
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
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.
10325 2023-05-30 Lili Cui <lili.cui@intel.com>
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.
10333 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
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.
10394 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
10400 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
10402 * config/riscv/riscv.md: Fix signed and unsigned comparison
10405 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10407 * config/riscv/autovec.md (fnma<mode>4): New pattern.
10408 (*fnma<mode>): Ditto.
10410 2023-05-29 Die Li <lidie@eswincomputing.com>
10412 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
10414 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
10415 process for TARGET_XTHEADCONDMOV
10417 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
10420 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
10421 TARGET_AVX512BW to generate truncv16hiv16qi2.
10423 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
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
10430 2023-05-29 Pan Li <pan2.li@intel.com>
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.
10440 2023-05-29 Pan Li <pan2.li@intel.com>
10442 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
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.
10450 2023-05-29 Pan Li <pan2.li@intel.com>
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
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
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
10465 (get_repeating_sequence_dup_machine_mode): New function to get the dup
10467 (expand_vector_init_merge_repeating_sequence): New function to perform
10469 (expand_vec_init): Add this vector init optimization.
10470 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
10472 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
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.
10477 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
10479 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
10482 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10484 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
10486 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
10494 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10496 * config/riscv/vector.md: Fix vimuladd instruction bug.
10498 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10500 * config/riscv/riscv.cc (global_state_unknown_p): New function.
10501 (riscv_mode_after): Fix incorrect VXM.
10503 2023-05-29 Pan Li <pan2.li@intel.com>
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.
10514 2023-05-27 liuhongt <hongtao.liu@intel.com>
10517 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
10518 to VI_AVX2 to cover more modes.
10520 2023-05-27 liuhongt <hongtao.liu@intel.com>
10522 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
10523 Remove ATOM and ICELAKE(and later) core processors.
10525 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
10527 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
10529 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
10531 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
10534 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
10535 Juzhe Zhong <juzhe.zhong@rivai.ai>
10537 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
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
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.
10557 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
10558 Tobias Burnus <tobias@codesourcery.com>
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
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.
10579 2023-05-26 Andrew Pinski <apinski@marvell.com>
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.
10586 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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
10598 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
10599 xtensa_expand_block_set().
10601 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10603 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
10605 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
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.
10612 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
10619 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
10621 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
10622 Do not disable call to ix86_expand_vecop_qihi2.
10624 2023-05-26 liuhongt <hongtao.liu@intel.com>
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.
10632 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10634 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
10635 explict VL and drop VL in ops.
10637 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
10639 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
10640 in different BB blocks.
10642 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
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
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.
10658 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
10661 * config/avr/avr.cc (avr_can_inline_p): New static function.
10662 (TARGET_CAN_INLINE_P): Define to that function.
10664 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
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.
10672 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
10674 * config/arm/iterators.md (MVE_6): Remove.
10675 * config/arm/mve.md: Replace MVE_6 with MVE_5.
10677 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10678 Richard Sandiford <richard.sandiford@arm.com>
10680 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
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
10686 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
10689 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
10706 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
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.
10720 2023-05-25 Alex Coplan <alex.coplan@arm.com>
10723 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
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.
10729 2023-05-25 Richard Biener <rguenther@suse.de>
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.
10736 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
10738 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
10741 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
10747 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
10774 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
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.
10841 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10843 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
10846 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
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.
10852 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10854 * value-query.cc (range_query::get_tree_range): Set NAN directly
10856 * value-range.cc (frange::set): Assert that bounds are not NAN.
10858 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10860 * value-range.cc (add_vrange): Handle known NANs.
10862 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
10864 * value-range.h (frange::set_nan): New.
10866 2023-05-25 Alexandre Oliva <oliva@adacore.com>
10869 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
10870 requires stricter alignment than MEM's.
10872 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
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.
10885 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10887 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
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.
10897 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
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.
10905 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
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.
10916 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
10918 * value-range.h (vrange::kind): Remove.
10920 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
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.
10930 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
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.
10946 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
10948 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
10949 silence overflow warnings later on.
10951 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
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.
10960 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
10982 2023-05-24 Richard Biener <rguenther@suse.de>
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.
10990 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
10992 PR tree-optimization/109695
10993 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
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.
11000 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
11002 PR tree-optimization/109695
11003 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
11005 (temporal_cache::current_p): Check always_current method.
11006 (temporal_cache::set_always_current): Add param and set value
11008 (temporal_cache::always_current_p): New.
11009 (ranger_cache::get_global_range): Adjust.
11010 (ranger_cache::set_global_range): set always current first.
11012 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
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.
11018 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11020 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
11023 2023-05-24 Richard Biener <rguenther@suse.de>
11025 PR tree-optimization/109849
11026 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
11027 expressions but take the first sets.
11029 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
11032 * doc/gm2.texi (High procedure function): New node.
11033 (Using): New menu entry for High procedure function.
11035 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
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
11044 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
11045 rather than DF_BACKWARD in reverse.
11047 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11050 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
11051 qualifier_none for the return operand.
11053 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
11062 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
11064 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
11065 calculation on n_perms by considering nvectors_per_build.
11067 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11068 Richard Sandiford <richard.sandiford@arm.com>
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.
11090 2023-05-24 Pan Li <pan2.li@intel.com>
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.
11120 2023-05-24 Pan Li <pan2.li@intel.com>
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.
11152 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
11163 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
11173 2023-05-24 liuhongt <hongtao.liu@intel.com>
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.
11183 2023-05-23 Martin Uecker <uecker@tugraz.at>
11186 * function.cc (gimplify_parm_type): Remove function.
11187 (gimplify_parameters): Call gimplify_type_sizes.
11189 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11191 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
11192 and change to also accept '*subx' pattern.
11195 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
11205 2023-05-23 Richard Biener <rguenther@suse.de>
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.
11211 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
11213 * config/avr/avr.cc (avr_insn_cost): New static function.
11214 (TARGET_INSN_COST): Define to that function.
11216 2023-05-23 Richard Biener <rguenther@suse.de>
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.
11224 2023-05-23 Richard Biener <rguenther@suse.de>
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.
11232 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
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.
11242 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11244 * config/riscv/vector.md: Add mode.
11246 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
11248 PR tree-optimization/109934
11249 * value-range.cc (irange::invert): Remove buggy special case.
11251 2023-05-23 Richard Biener <rguenther@suse.de>
11253 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
11256 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
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.
11267 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
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.
11277 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
11310 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
11317 2023-05-23 Richard Biener <rguenther@suse.de>
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.
11323 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
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
11330 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
11332 PR tree-optimization/109920
11333 * value-range.h (RESIZABLE>::~int_range): Use delete[].
11335 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
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.
11344 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
11346 * value-range.h (class Value_Range): Implement set_zero,
11347 set_nonzero, and nonzero_p.
11349 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
11351 * config/i386/i386.cc (ix86_multiplication_cost): Add
11352 the cost of a memory read to the cost of V?QImode sequences.
11354 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11356 * config/riscv/riscv-v.cc: Add "m_" prefix.
11358 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
11366 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11368 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
11371 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
11373 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
11374 handling for the case index == count.
11376 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
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
11383 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
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}.
11395 2023-05-21 Jakub Jelinek <jakub@redhat.com>
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
11404 2023-05-21 Andrew Pinski <apinski@marvell.com>
11406 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
11408 2023-05-21 Pan Li <pan2.li@intel.com>
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.
11445 2023-05-21 Andrew Pinski <apinski@marvell.com>
11447 PR middle-end/109919
11448 * expr.cc (expand_single_bit_test): Don't use the
11449 target for expand_expr.
11451 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
11453 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
11456 2023-05-20 Pan Li <pan2.li@intel.com>
11458 * mode-switching.cc (entity_map): Initialize the array to zero.
11461 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
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.
11469 2023-05-20 Andrew Pinski <apinski@marvell.com>
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.
11475 2023-05-20 Andrew Pinski <apinski@marvell.com>
11477 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
11478 instead of shift/and.
11480 2023-05-20 Andrew Pinski <apinski@marvell.com>
11482 * expr.cc (fold_single_bit_test): Add an assert
11483 and simplify based on code being NE_EXPR or EQ_EXPR.
11485 2023-05-20 Andrew Pinski <apinski@marvell.com>
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.
11493 2023-05-20 Andrew Pinski <apinski@marvell.com>
11495 * expr.cc (fold_single_bit_test): Use get_def_for_expr
11496 instead of checking the inner's code.
11498 2023-05-20 Andrew Pinski <apinski@marvell.com>
11500 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
11501 (fold_single_bit_test): This and simplify.
11503 2023-05-20 Andrew Pinski <apinski@marvell.com>
11505 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
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.
11512 2023-05-20 Die Li <lidie@eswincomputing.com>
11514 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
11517 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
11519 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
11521 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
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.
11529 2023-05-19 Nathan Sidwell <nathan@acm.org>
11532 * opts.h (handle_deferred_dump_options): Declare.
11533 * opts-global.cc (handle_common_deferred_options): Do not handle
11535 (handle_deferred_dump_options): New.
11536 * toplev.cc (toplev::main): Call it after plugin init.
11538 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
11540 * config/riscv/constraints.md (DsS, DsD): Restore agreement
11541 with shiftm1 mode attribute.
11543 2023-05-19 Andrew Pinski <apinski@marvell.com>
11546 * gcc.cc (default_compilers["@c-header"]): Add %w
11547 after the --output-pch.
11549 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
11551 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
11552 to hival, ASHIFT the corresponding regs.
11554 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
11556 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
11558 2023-05-19 Jakub Jelinek <jakub@redhat.com>
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.
11567 2023-05-19 Jakub Jelinek <jakub@redhat.com>
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.
11574 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
11576 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
11577 of tree_to_shwi on array indices. Minor tweaks.
11579 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
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.
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.
11688 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
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.
11699 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11701 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
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.
11710 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
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.
11819 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
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):
11826 * config/i386/i386.cc (ix86_multiplication_cost): Handle
11827 V4QImode and V8QImode.
11828 * config/i386/mmx.md (mulv8qi3): New expander.
11830 * config/i386/sse.md (mulv8qi3): Remove.
11832 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
11834 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
11836 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
11838 PR bootstrap/105831
11839 * config.gcc: Use = operator instead of ==.
11841 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
11843 PR bootstrap/105831
11844 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
11845 * configure.ac: Likewise.
11846 * configure: Regenerate.
11848 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
11936 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
11938 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
11941 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
11953 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
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.
11993 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
11995 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
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
12008 (mve_vstrw_immediate): New predicate.
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>
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.
12044 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
12046 * genrecog.cc (print_nonbool_test): Fix type error of
12047 switch (SUBREG_BYTE (op))'.
12049 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
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.
12057 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
12059 * config/pa/pa.md (clear_cache): New.
12061 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
12063 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
12064 parenthesis. Fix misnamed index entry.
12065 <concept>: Fix misnamed index entry.
12067 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12069 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
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
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.
12084 2023-05-17 Jakub Jelinek <jakub@redhat.com>
12087 * config/i386/i386-builtin-types.def (FLOAT128): Use
12088 float128t_type_node rather than float128_type_node.
12090 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
12092 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
12093 FP_CONTRACT_FAST (no functional change).
12095 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
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.
12102 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
12123 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
12133 2023-05-17 Andrew Pinski <apinski@marvell.com>
12135 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
12136 against 0 instead of calling integer_zerop.
12138 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
12149 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
12151 * value-range.h (Value_Range::operator=): New.
12153 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
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.
12160 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
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.
12169 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
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.
12176 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
12178 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
12181 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
12183 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
12185 (s390_atomic_align_for_mode): New.
12187 2023-05-17 Jakub Jelinek <jakub@redhat.com>
12189 * wide-int.cc (wi::from_array): Add missing closing paren in function
12192 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
12194 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
12195 suggested unroll factor once the previous analysis fails.
12197 2023-05-17 Pan Li <pan2.li@intel.com>
12199 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
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.
12222 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
12225 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
12226 constants through "lis; xoris".
12228 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
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
12234 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
12236 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
12237 Fix wrong select_kind...
12239 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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
12248 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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.
12256 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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
12267 2023-05-16 Andrew Pinski <apinski@marvell.com>
12269 PR tree-optimization/109424
12270 * match.pd: Add patterns for min/max of zero_one_valued
12273 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
12290 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
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.
12300 (int_range::int_range): Adjust for resizing.
12301 (int_range::operator=): Same.
12303 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
12305 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
12307 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
12308 when range changed.
12310 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
12324 2023-05-15 Pan Li <pan2.li@intel.com>
12326 * optabs.cc (maybe_gen_insn): Add case to generate instruction
12327 that has 11 operands.
12329 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12331 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
12332 logic for vector modes.
12334 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
12348 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12351 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
12352 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
12354 2023-05-15 Pan Li <pan2.li@intel.com>
12355 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12356 kito-cheng <kito.cheng@sifive.com>
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.
12362 2023-05-15 Richard Biener <rguenther@suse.de>
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
12369 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12371 * config/riscv/riscv.cc
12372 (riscv_vectorize_preferred_vector_alignment): New function.
12373 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
12375 2023-05-14 Andrew Pinski <apinski@marvell.com>
12377 PR tree-optimization/109829
12378 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
12380 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
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.
12387 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
12389 * config/i386/i386.cc (x86_function_profiler): Take
12390 ix86_direct_extern_access into account when generating calls
12393 2023-05-14 Pan Li <pan2.li@intel.com>
12395 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
12396 Refactor the or pattern to switch cases.
12398 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
12407 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
12409 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
12410 Pull out function call from the gcc_assert.
12412 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
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.
12418 2023-05-13 Andrew Pinski <apinski@marvell.com>
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.
12424 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
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.
12430 (ix86_expand_vecop_qihi): Initialize interleave functions
12431 for MULT code only. Fix comments.
12433 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
12436 * config/i386/mmx.md (mulv2si3): Remove expander.
12437 (mulv2si3): Rename insn pattern from *mulv2si.
12439 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
12441 PR libstdc++/109816
12442 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
12443 '!lto_stream_offload_p'.
12445 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
12446 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
12456 2023-05-12 Richard Biener <rguenther@suse.de>
12458 PR tree-optimization/64731
12459 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
12460 handle TARGET_MEM_REF destinations of stores from vector
12463 2023-05-12 Richard Biener <rguenther@suse.de>
12465 PR tree-optimization/109791
12466 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
12468 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
12471 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
12507 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12515 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12517 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
12518 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
12520 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
12556 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12564 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12566 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
12567 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
12569 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12597 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12599 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
12600 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
12602 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12604 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
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.
12613 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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,
12621 * config/arm/arm_mve.h (vfmaq): Remove.
12625 (vfmasq_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.
12666 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12668 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_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
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>.
12683 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12685 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
12686 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
12688 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12690 * config/arm/arm-mve-builtins-base.cc
12691 (FUNCTION_WITH_RTX_M_N_NO_F): 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.
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.
12762 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12772 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12774 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
12775 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
12777 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12837 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12850 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12852 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
12853 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
12855 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12877 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12887 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12894 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
12941 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12943 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
12944 (MVE_VRMLxLDAVHAxQ_P): New.
12945 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
12947 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
12948 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_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.
12959 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
12961 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
12962 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
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.
13006 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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,
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
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.
13025 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
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.
13030 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
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.
13038 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
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.
13049 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
13051 * config/rs6000/rs6000-builtins.def
13052 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
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.
13063 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
13065 * config/rs6000/rs6000-builtins.def
13066 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
13068 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
13071 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
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
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.
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>
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.
13111 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
13113 * match.pd: simplify vector shift + bit_and + multiply.
13115 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
13247 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13249 * config/arm/iterators.md (MVE_VMLxQ_N): New.
13250 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
13252 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_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.
13260 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13262 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
13263 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
13265 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13409 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13423 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13425 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
13426 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
13428 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13493 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13495 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
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
13507 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13509 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13511 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
13512 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
13514 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13562 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13564 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
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
13576 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
13578 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13643 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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
13656 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13658 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13660 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
13661 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
13663 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13697 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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,.
13705 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13790 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13792 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
13793 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
13795 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13880 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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,
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
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
13904 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13906 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13908 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
13909 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
13911 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13929 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
13931 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
13932 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
13934 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
13942 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
13945 * config/i386/i386.cc (ix86_widen_mult_cost):
13946 Handle V4HImode and V2SImode.
13948 2023-05-11 Andrew Pinski <apinski@marvell.com>
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.
13954 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13956 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
13959 2023-05-11 Pan Li <pan2.li@intel.com>
13961 * config/riscv/vector.md: Add comments for simplifying to vmset.
13963 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13965 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
13967 (v<optab><mode>3): Add vector shift pattern.
13968 * config/riscv/vector-iterators.md: New iterator.
13970 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
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
13991 * config/riscv/vector.md: Use renamed functions.
13993 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
13994 Michael Collison <collison@rivosinc.com>
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.
14003 2023-05-11 Pan Li <pan2.li@intel.com>
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):
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.
14022 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
14088 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14090 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
14091 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
14093 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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
14105 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14107 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14127 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14135 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14137 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
14138 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
14140 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14174 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14176 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
14177 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
14179 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14187 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14221 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14223 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
14224 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
14226 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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
14236 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14238 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): 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.
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.
14295 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14297 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
14298 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
14300 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
14314 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14316 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
14318 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
14320 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
14322 * config/arm/arm_mve.h (vrev16q): 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.
14431 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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>.
14455 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
14837 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14839 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
14840 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
14842 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
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.
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
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
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.
14871 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
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
14878 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
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).
14885 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
14895 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
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.
14906 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
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.
14915 2023-05-10 Jeff Law <jlaw@ventanamicro>
14917 * config/h8300/constraints.md (Q): Make this a special memory
14921 2023-05-10 Jakub Jelinek <jakub@redhat.com>
14924 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
14925 if t is void_list_node.
14927 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
14934 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14937 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
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.
14943 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14946 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
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.
14952 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
14960 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
14973 2023-05-10 Li Xu <xuli1@eswincomputing.com>
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).
14978 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14980 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
14983 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14986 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
14987 (source_equal_p): Fix dead loop in vsetvl avl checking.
14989 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
14991 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
14992 of modeadjusted_dccr.
14994 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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
15002 * config/arm/arm_mve.h (vminaq): 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.
15035 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15037 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
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>):
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.
15047 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15049 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
15050 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
15052 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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
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.
15085 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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>):
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.
15096 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
15155 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15157 * config/arm/arm-mve-builtins-functions.h
15158 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
15160 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
15172 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
15214 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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>):
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.
15226 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15228 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
15229 (smax<mode>3): Likewise.
15231 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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)
15238 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
15240 * config/arm/arm_mve.h (vminvq): 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.
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.
15329 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
15341 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15343 * config/arm/arm-mve-builtins-functions.h (class
15344 unspec_mve_function_exact_insn_pred_p): New.
15346 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15348 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
15349 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
15351 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15353 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
15354 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
15356 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
15358 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
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
15364 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
15365 Upa rather than Upl for unpredicated movprfx alternatives.
15367 2023-05-09 Jeff Law <jlaw@ventanamicro>
15369 * config/h8300/testcompare.md: Add peephole2 which uses a memory
15370 load to set flags, thus eliminating a compare against zero.
15372 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
15438 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15440 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
15441 (VSHLLBQ_N, VSHLLTQ_N): Remove.
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>):
15450 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15452 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15454 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
15455 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
15457 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
15573 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15575 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
15576 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
15579 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_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.
15591 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
15598 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
15612 (vrndaq_m): Remove.
15613 (vrndmq_m): Remove.
15614 (vrndnq_m): Remove.
15615 (vrndpq_m): Remove.
15617 (vrndxq_m): 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.
15715 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
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.
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.
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.
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.
15894 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
15922 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
15924 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
15925 * config/arm/arm-mve-builtins-shapes.h (unary): New.
15927 2023-05-09 Jakub Jelinek <jakub@redhat.com>
15929 * mux-utils.h: Fix comment typo, avoides -> avoids.
15931 2023-05-09 Jakub Jelinek <jakub@redhat.com>
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.
15940 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
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 ...
15947 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
15949 * genmatch.cc (showUsage): Reimplement as ...
15950 (usage): ...this. Adjust all uses.
15951 (main): Print usage when no arguments. Add missing 'return 1'.
15953 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
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.
15963 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
15965 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
15968 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
15969 Uros Bizjak <ubizjak@gmail.com>
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.
15975 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
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.
15981 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
15983 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
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.
15997 2023-05-08 Jeff Law <jlaw@ventanamicro>
15999 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
16001 2023-05-08 Richard Biener <rguenther@suse.de>
16002 Michael Meissner <meissner@linux.ibm.com>
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.
16008 2023-05-08 Andrew Pinski <apinski@marvell.com>
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
16015 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
16016 to call factor_out_conditional_operation instead.
16018 2023-05-08 Andrew Pinski <apinski@marvell.com>
16020 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
16021 over factor_out_conditional_conversion.
16023 2023-05-08 Andrew Pinski <apinski@marvell.com>
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.
16030 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
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.
16050 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
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.
16061 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
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.
16069 2023-05-08 Andrew Pinski <apinski@marvell.com>
16071 PR tree-optimization/109691
16072 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
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
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
16088 Don't update the stat on removal statements.
16090 2023-05-07 Andrew Pinski <apinski@marvell.com>
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.
16099 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
16101 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
16102 more parallel code if can_create_pseudo_p.
16104 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
16107 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
16108 immediately before moving a multi-word register by parts.
16110 2023-05-06 Jeff Law <jlaw@ventanamicro>
16112 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
16114 2023-05-06 Michael Collison <collison@rivosinc.com>
16116 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
16117 Check that GET_MODE_NUNITS is a multiple of 2.
16119 2023-05-06 Michael Collison <collison@rivosinc.com>
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.
16138 2023-05-06 Jeff Law <jlaw@ventanamicro>
16140 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
16141 duplicate definition.
16143 2023-05-06 Michael Collison <collison@rivosinc.com>
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.
16152 2023-05-06 Michael Collison <collison@rivosinc.com>
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.
16161 2023-05-06 Michael Collison <collison@rivosinc.com>
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.
16168 2023-05-06 Xi Ruoyao <xry111@xry111.site>
16170 * config/loongarch/loongarch.h (struct machine_function): Add
16171 reg_is_wrapped_separately array for register wrapping
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
16190 2023-05-06 Xi Ruoyao <xry111@xry111.site>
16193 * Makefile.in (s-macro_list): Pass -nostdinc to
16196 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
16208 2023-05-06 Jakub Jelinek <jakub@redhat.com>
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.
16220 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
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.
16229 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16232 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
16233 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
16235 2023-05-06 liuhongt <hongtao.liu@intel.com>
16237 * combine.cc (maybe_swap_commutative_operands): Canonicalize
16238 vec_merge when mask is constant.
16239 * doc/md.texi: Document vec_merge canonicalization.
16241 2023-05-06 Jakub Jelinek <jakub@redhat.com>
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.
16251 2023-05-06 Jakub Jelinek <jakub@redhat.com>
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).
16259 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
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.
16265 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16267 * config/cris/cris.md (movandsplit1): New define_peephole2.
16269 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16271 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
16273 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
16275 * doc/md.texi (define_peephole2): Document order of scanning.
16277 2023-05-05 Pan Li <pan2.li@intel.com>
16278 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16280 * config/riscv/vector.md: Allow const as the operand of RVV
16281 indexed load/store.
16283 2023-05-05 Pan Li <pan2.li@intel.com>
16285 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
16286 consumed by simplify_rtx.
16288 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16295 (vrshrq_m): Remove.
16297 (vrshrq_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.
16378 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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
16387 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16389 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16391 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
16392 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
16394 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16454 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
16471 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16478 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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):
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,
16492 * config/arm/arm_mve.h (vshrnbq): 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.
16653 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
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>):
16670 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16672 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16674 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
16676 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
16678 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
16769 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16778 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16787 (vshlq_m_r): Remove.
16789 (vshlq_m_n): 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.
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.
16981 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16983 * config/arm/arm-mve-builtins-functions.h (class
16984 unspec_mve_function_exact_insn_vshl): New.
16986 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16988 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
16989 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
16991 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
16997 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
16999 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
17000 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
17002 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17004 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): 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.
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.
17063 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
17072 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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.
17106 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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
17116 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
17117 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
17119 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
17120 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
17122 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17123 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
17125 (@mve_<mve_insn>q_<supf><mode>): ... this.
17127 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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
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.
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.
17257 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
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
17266 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17268 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17270 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
17271 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
17273 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17276 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
17277 denegrate PHI optmization.
17279 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
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.
17286 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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.
17298 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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.
17309 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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.
17326 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17329 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
17331 (dt_simplify::gen_1): Use it.
17333 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17336 * genmatch.cc (output_line_directive): Only emit commented directive
17339 2023-05-05 Tamar Christina <tamar.christina@arm.com>
17342 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
17344 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
17346 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
17347 unused in_mode/in_n variables.
17349 2023-05-05 Richard Biener <rguenther@suse.de>
17351 PR tree-optimization/109735
17352 * tree-vect-stmts.cc (vectorizable_operation): Perform
17353 conversion for POINTER_DIFF_EXPR unconditionally.
17355 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
17357 * config/i386/mmx.md (mulv2si3): New expander.
17358 (*mulv2si3): New insn pattern.
17360 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
17361 Thomas Schwinge <thomas@codesourcery.com>
17364 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
17365 alongside reverse-offload function table to prevent NULL values
17366 of the function addresses.
17368 2023-05-05 Jakub Jelinek <jakub@redhat.com>
17370 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
17372 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
17374 2023-05-05 Andrew Pinski <apinski@marvell.com>
17376 PR tree-optimization/109732
17377 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
17378 of the argtrue/argfalse.
17380 2023-05-05 Andrew Pinski <apinski@marvell.com>
17382 PR tree-optimization/109722
17383 * match.pd: Extend the `ABS<a> == 0` pattern
17384 to cover `ABSU<a> == 0` too.
17386 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
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.
17393 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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.
17412 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17414 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
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):
17425 2023-05-04 Andrew Pinski <apinski@marvell.com>
17427 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
17428 diamond form bb with forwarder only empty blocks better.
17430 2023-05-04 Andrew Pinski <apinski@marvell.com>
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.
17439 2023-05-04 Andrew Pinski <apinski@marvell.com>
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.
17446 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
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.
17455 2023-05-04 Richard Biener <rguenther@suse.de>
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.
17461 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
17503 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
17515 2023-05-04 Martin Liska <mliska@suse.cz>
17517 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
17518 (print_version): Use it.
17519 (generate_results): Likewise.
17521 2023-05-04 Richard Biener <rguenther@suse.de>
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):
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):
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.
17581 2023-05-04 Jakub Jelinek <jakub@redhat.com>
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.
17589 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
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.
17597 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
17599 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
17602 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
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.
17609 2023-05-03 Andrew Pinski <apinski@marvell.com>
17611 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
17612 stats on removed number of statements and phis.
17614 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
17616 PR tree-optimization/109711
17617 * value-range.cc (irange::verify_range): Allow types of
17620 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
17623 * calls.cc (can_implement_as_sibling_call_p): Reject calls
17624 to __sanitizer_cov_trace_pc.
17626 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
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
17634 (aarch64_function_arg_boundary): Update accordingly.
17635 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
17636 Warn about ABI differences.
17638 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
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.
17646 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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)
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.
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.
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.
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.
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.
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.
18071 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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
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.
18090 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18106 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18108 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
18109 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
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.
18118 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18155 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18181 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18190 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18192 * config/arm/arm-mve-builtins-shapes.cc (create): New.
18193 * config/arm/arm-mve-builtins-shapes.h: (create): New.
18195 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18197 * config/arm/arm-mve-builtins-functions.h (class
18198 unspec_mve_function_exact_insn): New.
18200 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18202 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): 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.
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.
18281 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18288 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
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.
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.
18402 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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
18421 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18423 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18425 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
18426 * config/arm/arm-mve-builtins-shapes.h (binary): New.
18428 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18430 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
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.
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.
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.
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):
18743 (vmulq_u, vmulq_s, vmulq_f): Remove.
18744 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
18745 (mve_vmulq_<supf><mode>): Remove.
18747 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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
18753 * config/arm/mve.md
18754 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
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
18762 (mve_<mve_addsubmul>q<mode>): ... this.
18763 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
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>):
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.
18779 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
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.
18785 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
18787 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
18788 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
18790 2023-05-03 Murray Steele <murray.steele@arm.com>
18791 Christophe Lyon <christophe.lyon@arm.com>
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
18798 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
18799 * config/arm/arm-mve-builtins-shapes.h (inherent): New
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.
18814 2023-05-03 Murray Steele <murray.steele@arm.com>
18815 Christophe Lyon <christophe.lyon@arm.com>
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
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.
19051 2023-05-03 Murray Steele <murray.steele@arm.com>
19052 Christophe Lyon <christophe.lyon@arm.com>
19053 Christophe Lyon <christophe.lyon@arm.com
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
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
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
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.
19093 (all_unsigned): New.
19095 (integer_8_16): New.
19096 (integer_16_32): New.
19098 (signed_16_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.
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
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.
19255 2023-05-03 Murray Steele <murray.steele@arm.com>
19256 Christophe Lyon <christophe.lyon@arm.com>
19257 Christophe Lyon <christophe.lyon@arm.com>
19259 * config/arm/arm-builtins.cc (arm_general_add_builtin_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.
19286 2023-05-03 Martin Liska <mliska@suse.cz>
19289 * config/riscv/sync.md: Add gcc_unreachable to a switch.
19291 2023-05-03 Richard Biener <rguenther@suse.de>
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):
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):
19308 (optimize_spaceship): Take a gcond * argument, avoid
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):
19316 2023-05-03 Andreas Schwab <schwab@suse.de>
19318 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
19320 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19322 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
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.
19332 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19333 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
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.
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
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
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.
19389 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19391 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
19392 tuple type support.
19394 (floattype): Ditto.
19396 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
19397 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
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):
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.
19666 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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
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):
19684 (register_tuple_type): New function
19685 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
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):
19890 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
19891 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
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
19910 (*mov<VT:mode>_<P:mode>): Ditto.
19912 2023-05-03 Richard Biener <rguenther@suse.de>
19914 * cse.cc (cse_insn): Track an equivalence to the destination
19915 separately and delay using src_related for it.
19917 2023-05-03 Richard Biener <rguenther@suse.de>
19919 * cse.cc (HASH): Turn into inline function and mix
19920 in another HASH_SHIFT bits.
19921 (SAFE_HASH): Likewise.
19923 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19926 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
19927 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
19929 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
19951 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
19953 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
19955 2023-05-03 Martin Liska <mliska@suse.cz>
19957 PR tree-optimization/109693
19958 * value-range-storage.cc (vrange_allocator::vrange_allocator):
19959 Remove unused field.
19960 * value-range-storage.h: Likewise.
19962 2023-05-02 Andrew Pinski <apinski@marvell.com>
19964 * tree-ssa-phiopt.cc (move_stmt): New function.
19965 (match_simplify_replacement): Use move_stmt instead
19966 of the inlined version.
19968 2023-05-02 Andrew Pinski <apinski@marvell.com>
19970 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
19973 2023-05-02 Andrew Pinski <apinski@marvell.com>
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.
19979 2023-05-02 Andrew Pinski <apinski@marvell.com>
19982 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
19983 insn_and_split pattern.
19985 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
19987 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
19990 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
19992 * config/riscv/sync.md (mem_thread_fence_1): Change fence
19993 depending on the given memory model.
19995 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
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.
20006 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
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.
20013 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20016 * config/riscv/sync.md (atomic_store<mode>): Use simple store
20017 instruction in combination with fence(s).
20019 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20021 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
20022 of %A to include release bits.
20024 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20026 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
20027 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
20030 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20032 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
20033 sequentially consistent LR.aqrl/SC.rl pairs.
20035 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
20037 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
20038 sanitize memmodel input with memmodel_base.
20040 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
20041 Pan Li <pan2.li@intel.com>
20044 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
20046 2023-05-02 Romain Naour <romain.naour@gmail.com>
20048 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
20051 2023-05-02 Martin Liska <mliska@suse.cz>
20053 * doc/invoke.texi: Update documentation based on param.opt file.
20055 2023-05-02 Richard Biener <rguenther@suse.de>
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.
20061 2023-05-01 Andrew Pinski <apinski@marvell.com>
20063 * tree-ssa-phiopt.cc: Update comment about
20064 how the transformation are implemented.
20066 2023-05-01 Jeff Law <jlaw@ventanamicro>
20068 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
20070 2023-05-01 Jeff Law <jlaw@ventanamicro>
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.
20079 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
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.
20085 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20087 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
20090 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20092 * value-range.h (irange::set_nonzero): Inline.
20094 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20096 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
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.
20109 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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.
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.
20149 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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.
20167 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20169 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
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.
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_*.
20190 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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.
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.
20284 (range_uint128): New.
20285 (range_uchar): 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.
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.
20309 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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.
20318 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20320 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
20322 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20324 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
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
20337 (range_fits_type_p): Rename value_range to irange.
20338 * vr-values.h (range_fits_type_p): Adjust prototype.
20340 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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
20354 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
20356 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
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.
20371 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
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
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
20467 (class frange): Same.
20469 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
20471 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
20472 inc to avoid clobbering the carry flag.
20474 2023-04-30 Andrew Pinski <apinski@marvell.com>
20476 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
20477 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
20479 2023-04-30 Andrew Pinski <apinski@marvell.com>
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.
20487 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
20489 * configure: Regenerate.
20490 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
20492 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
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.
20500 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
20502 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
20504 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
20505 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
20507 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
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.
20524 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
20527 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
20528 (lm32-*-uclinux*): Likewise.
20530 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
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.
20538 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
20540 * doc/install.texi: Fix documentation typo
20542 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
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
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.
20555 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
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.
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.
20568 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
20570 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
20572 2023-04-28 Andrew Pinski <apinski@marvell.com>
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.
20580 2023-04-28 Andrew Pinski <apinski@marvell.com>
20582 * match.pd: Add patterns for
20583 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
20585 2023-04-28 Andrew Pinski <apinski@marvell.com>
20587 * match.pd: Factor out the deciding the min/max from
20588 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
20590 * fold-const.cc (minmax_from_comparison): this new function.
20591 * fold-const.h (minmax_from_comparison): New prototype.
20593 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
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.
20603 2023-04-28 Richard Biener <rguenther@suse.de>
20605 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
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.
20613 2023-04-28 Richard Biener <rguenther@suse.de>
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.
20619 2023-04-28 Pan Li <pan2.li@intel.com>
20620 kito-cheng <kito.cheng@sifive.com>
20622 * config/riscv/vector.md: Add new define split to perform
20623 the simplification.
20625 2023-04-28 Richard Biener <rguenther@suse.de>
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.
20633 2023-04-28 Richard Biener <rguenther@suse.de>
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.
20641 2023-04-28 Richard Biener <rguenther@suse.de>
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.
20647 2023-04-28 Richard Biener <rguenther@suse.de>
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.
20660 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
20680 2023-04-28 Jakub Jelinek <jakub@redhat.com>
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}.
20687 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
20688 Jakub Jelinek <jakub@redhat.com>
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}.
20696 2023-04-28 Jakub Jelinek <jakub@redhat.com>
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.
20727 2023-04-28 Alexandre Oliva <oliva@adacore.com>
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
20735 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
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.
20744 2023-04-27 Andrew Pinski <apinski@marvell.com>
20746 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
20747 up to 2 min/max expressions in the sequence/match code.
20749 2023-04-27 Andrew Pinski <apinski@marvell.com>
20751 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
20753 * tree-eh.cc (operation_could_trap_helper_p): Treate
20754 MIN_EXPR/MAX_EXPR similar as other comparisons.
20756 2023-04-27 Andrew Pinski <apinski@marvell.com>
20758 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
20760 (cond_if_else_store_replacement): Likewise.
20761 (get_non_trapping): Likewise.
20762 (store_elim_worker): Move into ...
20763 (pass_cselim::execute): This.
20765 2023-04-27 Andrew Pinski <apinski@marvell.com>
20767 * tree-ssa-phiopt.cc (two_value_replacement): Remove
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.
20779 2023-04-27 Andrew Pinski <apinski@marvell.com>
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.
20787 2023-04-27 Jan Hubicka <jh@suse.cz>
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.
20797 2023-04-27 Richard Biener <rguenther@suse.de>
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.
20806 2023-04-27 Alexandre Oliva <oliva@adacore.com>
20808 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
20810 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
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.
20819 2023-04-27 Richard Biener <rguenther@suse.de>
20821 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
20822 create a CTOR operand in the result when simplifying GIMPLE.
20824 2023-04-27 Richard Biener <rguenther@suse.de>
20826 * gimplify.cc (gimplify_compound_lval): When the base
20827 gimplified to a register make sure to split up chains
20830 2023-04-27 Richard Biener <rguenther@suse.de>
20833 * ipa-param-manipulation.h
20834 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
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.
20843 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
20845 * doc/extend.texi (Zero Length): Describe example.
20847 2023-04-27 Richard Biener <rguenther@suse.de>
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.
20853 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
20855 * config/riscv/riscv.cc: Fix whitespace.
20856 * config/riscv/sync.md: Fix whitespace.
20858 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
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.
20891 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
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
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.
20916 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
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.
20934 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
20936 * value-relation.cc (dom_oracle::query_relation): Check early for lack
20938 * value-relation.h (equiv_oracle::has_equiv_p): New.
20940 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
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().
20953 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
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.
20959 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
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.
20971 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
20979 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
20987 2023-04-26 Pan Li <pan2.li@intel.com>
20988 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20990 * config/riscv/riscv.cc (riscv_classify_address): Allow
20991 const0_rtx for the RVV load/store.
20993 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
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.
21039 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21046 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21059 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21061 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
21063 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
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.
21082 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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
21090 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21098 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21100 * builtins.cc (determine_block_size): Convert use of legacy API to
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.
21131 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21133 * value-range-pretty-print.cc (vrange_printer::visit): Remove
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.
21140 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21142 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
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.
21157 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21164 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21173 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21182 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
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.
21206 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
21209 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
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.
21221 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
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.
21230 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
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.
21237 2023-04-26 Richard Biener <rguenther@suse.de>
21239 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
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):
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.
21279 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
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.
21301 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21303 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
21305 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
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
21314 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
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
21324 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
21334 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21336 * config/riscv/vector.md: Fix redundant vmv1r.v.
21338 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21340 * config/riscv/vector.md: Fix RA constraint.
21342 2023-04-26 Pan Li <pan2.li@intel.com>
21345 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
21346 check for vn_reference equal.
21348 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
21356 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
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.
21364 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
21366 * recog.cc (peep2_attempt, peep2_update_life): Correct
21367 head-comment description of parameter match_len.
21369 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
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.
21379 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
21381 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
21382 superfluous debug temporaries for single GIMPLE assignments.
21384 2023-04-25 Richard Biener <rguenther@suse.de>
21386 PR tree-optimization/109609
21387 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
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.
21393 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
21403 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
21409 2023-04-25 Richard Biener <rguenther@suse.de>
21411 PR rtl-optimization/109585
21412 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
21414 2023-04-25 Jakub Jelinek <jakub@redhat.com>
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.
21421 2023-04-25 Martin Liska <mliska@suse.cz>
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
21431 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
21433 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
21434 length attribute for the first (memory operand) alternative.
21436 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
21438 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
21439 * config/aarch64/constraints.md: Make "Umn" relaxed memory
21441 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
21443 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
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.
21449 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
21451 * ipa-cp.cc (ipa_range_contains_p): New.
21452 (decide_whether_version_node): Use it.
21454 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
21460 2023-04-24 Andrew Pinski <apinski@marvell.com>
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
21466 2023-04-24 Andrew Pinski <apinski@marvell.com>
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
21472 2023-04-24 Andrew Pinski <apinski@marvell.com>
21474 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
21476 (match_simplify_replacement): Call
21477 empty_bb_or_one_feeding_into_p instead of doing it inline.
21479 2023-04-24 Andrew Pinski <apinski@marvell.com>
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.
21485 2023-04-24 Andrew Pinski <apinski@marvell.com>
21487 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
21488 code for better code readability.
21490 2023-04-24 Andrew Pinski <apinski@marvell.com>
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.
21497 2023-04-24 Patrick Palka <ppalka@redhat.com>
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.
21506 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
21508 * doc/generic.texi (OpenMP): Add != to allowed
21509 conditions and state that vars can be unsigned.
21510 * tree.def (OMP_FOR): Likewise.
21512 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21514 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
21516 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
21518 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
21519 Remove explicit Solaris 11 references.
21521 (Options specification, --with-gnu-as): as and gas always differ
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.
21537 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21540 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
21542 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
21545 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
21556 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
21568 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
21577 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21579 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
21580 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
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.
21586 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21588 * config/aarch64/aarch64-simd.md
21589 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
21591 2023-04-24 Richard Biener <rguenther@suse.de>
21593 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
21595 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
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):
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):
21623 (back_threader_profitability::possibly_profitable_path_p):
21625 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
21627 * tree-switch-conversion.cc (pass_convert_switch::execute):
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.
21637 2023-04-24 Richard Biener <rguenther@suse.de>
21639 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
21641 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
21648 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21650 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
21651 comment for cleanup_insns.
21653 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
21659 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21661 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
21662 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
21664 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21667 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
21668 (aarch64_addp<mode><vczle><vczbe>): ... This.
21670 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
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).
21676 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
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.
21685 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
21687 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
21688 SImode shifts by two by performing a single bit SImode shift twice.
21690 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
21692 PR tree-optimization/109593
21693 * value-range.cc (frange::operator==): Handle NANs.
21695 2023-04-23 liuhongt <hongtao.liu@intel.com>
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.
21701 2023-04-22 Andrew Pinski <apinski@marvell.com>
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
21708 2023-04-22 Andrew Pinski <apinski@marvell.com>
21710 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
21711 Remove check on empty_block_p.
21713 2023-04-22 Jakub Jelinek <jakub@redhat.com>
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.
21719 2023-04-22 Jakub Jelinek <jakub@redhat.com>
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.
21725 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
21726 Ondrej Kubanek <kubanek0ondrej@gmail.com>
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.
21735 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
21737 PR tree-optimization/109546
21738 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
21739 not fold conditions with ADDR_EXPR early.
21741 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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.
21751 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21754 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
21755 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
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=.
21766 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21769 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
21770 (add_vec_concat_subst_be): 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.
21787 2023-04-21 Patrick Palka <ppalka@redhat.com>
21789 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
21792 2023-04-21 Jan Hubicka <jh@suse.cz>
21794 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
21797 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
21799 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
21800 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
21802 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
21808 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
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.
21825 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21826 Ondrej Kubanek <kubanek0ondrej@gmail.com>
21828 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
21831 2023-04-21 Richard Biener <rguenther@suse.de>
21833 * is-a.h (safe_is_a): New.
21835 2023-04-21 Richard Biener <rguenther@suse.de>
21837 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
21838 (gphi_iterator::operator*): Likewise.
21840 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21841 Michal Jires <michal@jires.eu>
21843 * ipa-inline.cc (class inline_badness): New class.
21844 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
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.
21852 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
21854 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
21856 2023-04-21 Richard Biener <rguenther@suse.de>
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.
21862 2023-04-21 Richard Biener <rguenther@suse.de>
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.
21873 2023-04-21 Richard Biener <rguenther@suse.de>
21875 * cfganal.h (inverted_rev_post_order_compute): Rename
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.
21885 2023-04-21 Richard Biener <rguenther@suse.de>
21887 * df.h (df_d::postorder_inverted): Change back to int *,
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
21893 (loop_inverted_post_order_compute): Adjust API.
21894 (df_analyze_loop): Adjust.
21895 (df_get_n_blocks): Likewise.
21896 (df_get_postorder): Likewise.
21898 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
21906 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
21909 * config/riscv/generic.md: Change standard names to insn names.
21911 2023-04-21 Richard Biener <rguenther@suse.de>
21913 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
21914 (compute_laterin): Use RPO.
21915 (compute_available): Likewise.
21917 2023-04-21 Peng Fan <fanpeng@loongson.cn>
21919 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
21921 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
21931 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
21933 * doc/extend.texi (Common Function Attributes): Remove duplicate
21936 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
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,
21942 2023-04-20 Jakub Jelinek <jakub@redhat.com>
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).
21949 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
21951 * lra-constraints.cc (match_reload): Exclude some hard regs for
21952 multi-reg inout reload pseudos used in asm in different mode.
21954 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
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.
21966 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
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.
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.
22000 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
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,
22008 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
22009 pcnt, signed and unsigned min/max.
22011 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22012 kito-cheng <kito.cheng@sifive.com>
22014 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
22016 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22017 kito-cheng <kito.cheng@sifive.com>
22020 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
22021 (pass_vsetvl::cleanup_insns): Fix bug.
22023 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
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".
22029 2023-04-20 Jakub Jelinek <jakub@redhat.com>
22030 Jonathan Wakely <jwakely@redhat.com>
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.
22048 2023-04-20 Jakub Jelinek <jakub@redhat.com>
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
22057 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
22059 2023-04-20 Richard Biener <rguenther@suse.de>
22061 * df-core.cc (rest_of_handle_df_initialize): Remove
22062 computation of df->postorder, df->postorder_inverted and
22065 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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):
22075 * config/i386/i386.md (aes): New isa attribute.
22076 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
22077 (aesenclast): 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.
22086 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
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.
22163 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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
22176 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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.
22197 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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
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.
22219 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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.
22236 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
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
22243 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
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,
22249 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
22251 * config/i386/sse.md: Modify insn vperm{i,f}
22254 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
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.
22266 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
22268 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
22271 2023-04-19 Andrew Pinski <apinski@marvell.com>
22273 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
22275 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
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.
22366 2023-04-19 Pan Li <pan2.li@intel.com>
22368 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
22369 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
22371 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
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.
22386 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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.
22394 2023-04-19 Richard Biener <rguenther@suse.de>
22396 * tree-ssa-structalias.cc (do_ds_constraint): Use
22397 solve_add_graph_edge.
22399 2023-04-19 Richard Biener <rguenther@suse.de>
22401 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
22403 (do_sd_constraint): ... here.
22405 2023-04-19 Richard Biener <rguenther@suse.de>
22407 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
22408 rejecting the merge when A contains only a non-local label.
22410 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
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.
22421 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
22423 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
22425 2023-04-19 Richard Biener <rguenther@suse.de>
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):
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.
22441 2023-04-19 Richard Biener <rguenther@suse.de>
22443 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
22444 edges, remove edges from escaped after special-casing them.
22446 2023-04-19 Richard Biener <rguenther@suse.de>
22448 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
22451 2023-04-19 Richard Biener <rguenther@suse.de>
22453 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
22454 to the LHS varinfo solution member.
22456 2023-04-19 Richard Biener <rguenther@suse.de>
22458 * tree-ssa-structalias.cc (topo_visit): Look at the real
22459 destination of edges.
22461 2023-04-19 Richard Biener <rguenther@suse.de>
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.
22467 2023-04-19 Xi Ruoyao <xry111@xry111.site>
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.
22492 2023-04-19 Xi Ruoyao <xry111@xry111.site>
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.
22498 2023-04-19 Richard Biener <rguenther@suse.de>
22500 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
22501 no epilogue condition.
22503 2023-04-19 Richard Biener <rguenther@suse.de>
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
22511 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22513 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
22515 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
22517 2023-04-19 Jakub Jelinek <jakub@redhat.com>
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.
22526 2023-04-19 Jakub Jelinek <jakub@redhat.com>
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.
22533 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22535 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
22538 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22541 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
22542 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
22544 2023-04-19 Richard Biener <rguenther@suse.de>
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.
22552 2023-04-19 Richard Biener <rguenther@suse.de>
22554 PR rtl-optimization/109237
22555 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
22557 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
22559 * doc/install.texi (enable-decimal-float): Add AArch64.
22561 2023-04-19 liuhongt <hongtao.liu@intel.com>
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.
22568 2023-04-18 Jason Merrill <jason@redhat.com>
22570 * doc/invoke.texi: Remove stray @gol.
22572 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
22578 2023-04-18 Mark Harmstone <mark@harmstone.com>
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.
22585 2023-04-18 Andrew Pinski <apinski@marvell.com>
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.
22592 2023-04-18 Sam James <sam@gentoo.org>
22594 * system.h: Drop unused INCLUDE_PTHREAD_H.
22596 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
22598 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
22601 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
22603 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
22604 (bswapdi2, bswapsi2): Similarly.
22606 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
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.
22619 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22621 * value-range.cc (gt_ggc_mx): New.
22623 * value-range.h (class vrange): Add GTY marker.
22624 (class frange): Same.
22625 (gt_ggc_mx): Remove.
22626 (gt_pch_nx): Remove.
22628 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
22630 * lra-constraints.cc (constraint_unique): New.
22631 (process_address_1): Apply constraint_unique test.
22632 * recog.cc (constrain_operands): Allow relaxed memory
22635 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
22637 * doc/extend.texi (Target Builtins): Add RISC-V Vector
22639 (RISC-V Vector Intrinsics): Document GCC implemented which
22640 version of RISC-V vector intrinsics and its reference.
22642 2023-04-18 Richard Biener <rguenther@suse.de>
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):
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.
22661 2023-04-18 Richard Biener <rguenther@suse.de>
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.
22671 2023-04-18 Andrew Pinski <apinski@marvell.com>
22673 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
22674 the expression that is being tried when TDF_FOLDING
22676 (phiopt_worker::match_simplify_replacement): Dump
22677 the sequence which was created by gimple_simplify_phiopt
22678 when TDF_FOLDING is true.
22680 2023-04-18 Andrew Pinski <apinski@marvell.com>
22682 * tree-ssa-phiopt.cc (match_simplify_replacement):
22683 Simplify code that does the movement slightly.
22685 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22687 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
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.
22694 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22696 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
22697 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
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.
22705 2023-04-18 Richard Biener <rguenther@suse.de>
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;
22713 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22715 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
22716 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
22718 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22720 * value-range.cc (frange::operator==): Adjust for NAN.
22721 (range_tests_nan): Remove some NAN tests.
22723 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
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.
22730 2023-04-18 Richard Biener <rguenther@suse.de>
22732 PR tree-optimization/109539
22733 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
22734 Re-implement pointer relatedness for PHIs.
22736 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
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.
22751 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22753 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
22754 if the argument matches that.
22756 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22758 * config/aarch64/atomics.md
22759 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
22760 Use SD_HSDI for destination mode iterator.
22762 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
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.
22768 2023-04-18 Jakub Jelinek <jakub@redhat.com>
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.
22775 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
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.
22786 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
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.
22793 2023-04-18 Xi Ruoyao <xry111@xry111.site>
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
22806 * config/loongarch/predicates.md (const_dual_imm12_operand): New
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.
22822 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22824 * value-range.h (Value_Range::Value_Range): New.
22825 (Value_Range::contains_p): New.
22827 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
22829 * value-range.h (class vrange): Make m_discriminator const.
22830 (class irange): Make m_max_ranges const. Adjust constructors
22832 (class unsupported_range): Construct vrange appropriately.
22833 (class frange): Same.
22835 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
22837 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
22840 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
22842 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
22844 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
22846 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
22848 (riscv_expand_epilogue): Likewise.
22850 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
22852 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
22854 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
22856 2023-04-17 Andrew Pinski <apinski@marvell.com>
22858 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
22861 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
22863 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
22866 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
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.
22874 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
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.
22883 2023-04-17 Martin Jambor <mjambor@suse.cz>
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
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
22912 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
22915 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
22916 Di Zhao <di.zhao@amperecomputing.com>
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.
22923 2023-04-17 Richard Biener <rguenther@suse.de>
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.
22932 2023-04-16 Jeff Law <jlaw@ventanamicro>
22935 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
22936 TARGET_SFB_ALU, force the true arm into a register.
22938 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
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
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.
22948 2023-04-15 Jakub Jelinek <jakub@redhat.com>
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.
22954 2023-04-15 Jason Merrill <jason@redhat.com>
22957 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
22958 Overhaul lhs_ref.ref analysis.
22960 2023-04-14 Richard Biener <rguenther@suse.de>
22962 PR tree-optimization/109502
22963 * tree-vect-stmts.cc (vectorizable_assignment): Fix
22964 check for conversion between mask and non-mask types.
22966 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
22967 Jakub Jelinek <jakub@redhat.com>
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.
22977 2023-04-14 Jakub Jelinek <jakub@redhat.com>
22979 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
22982 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
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.
22991 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
22994 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
22995 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
22997 2023-04-13 Richard Biener <rguenther@suse.de>
22999 PR tree-optimization/109491
23000 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
23001 NULL operands test.
23003 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
23033 2023-04-12 Jakub Jelinek <jakub@redhat.com>
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
23040 2023-04-12 Jakub Jelinek <jakub@redhat.com>
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.
23048 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
23050 * config/i386/x-mingw32-utf8: Remove extrataneous $@
23052 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
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.
23058 2023-04-12 Richard Biener <rguenther@suse.de>
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.
23065 2023-04-12 Richard Biener <rguenther@suse.de>
23067 PR tree-optimization/109469
23068 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
23069 a returns-twice call.
23071 2023-04-12 Richard Biener <rguenther@suse.de>
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.
23078 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
23080 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
23081 predicate to avoid splitting arith constants.
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>
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.
23096 2023-04-11 Martin Liska <mliska@suse.cz>
23099 * opts.cc (finish_options): Drop also
23100 x_flag_var_tracking_assignments.
23102 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
23104 PR tree-optimization/108888
23105 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
23107 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
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.
23145 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
23148 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
23149 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
23151 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
23153 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
23155 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
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
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
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.
23181 2023-04-08 Jakub Jelinek <jakub@redhat.com>
23183 PR tree-optimization/109392
23184 * tree-vect-generic.cc (tree_vec_extract): Handle failure
23185 of maybe_push_res_to_seq better.
23187 2023-04-08 Jakub Jelinek <jakub@redhat.com>
23189 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
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
23196 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
23199 * config/arm/arm.cc (arm_effective_regno): New function.
23200 (mve_vector_mem_operand): Use it.
23202 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
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.
23208 2023-04-06 Andrew Pinski <apinski@marvell.com>
23210 PR tree-optimization/109427
23211 * params.opt (-param=vect-induction-float=):
23212 Fix option attribute typo for IntegerRange.
23214 2023-04-05 Jeff Law <jlaw@ventanamicro>
23217 * combine.cc (combine_instructions): Force re-recognition when
23218 after restoring the body of an insn to its original form.
23220 2023-04-05 Martin Jambor <mjambor@suse.cz>
23223 * ipa-sra.cc (zap_useless_ipcp_results): New function.
23224 (process_isra_node_results): Call it.
23226 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23228 * config/riscv/vector.md: Fix incorrect operand order.
23230 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23232 * config/riscv/riscv-vsetvl.cc
23233 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
23236 2023-04-05 Li Xu <xuli1@eswincomputing.com>
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.
23242 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
23244 * doc/md.texi (Including Patterns): Fix page break.
23246 2023-04-04 Jakub Jelinek <jakub@redhat.com>
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
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.
23262 2023-04-04 Marek Polacek <polacek@redhat.com>
23264 PR sanitizer/109107
23265 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
23267 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
23269 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
23271 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
23272 (mve_vcreateq_f<mode>): Swap operands.
23274 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
23276 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
23278 2023-04-04 Jakub Jelinek <jakub@redhat.com>
23281 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
23282 Reword diagnostics about zfinx conflict with f, formatting fixes.
23284 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23286 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
23288 2023-04-04 Richard Biener <rguenther@suse.de>
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.
23295 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
23298 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
23299 function for permutation control vector by considering big endianness.
23301 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
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.
23313 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
23314 Sandra Loosemore <sandra@codesourcery.com>
23316 * doc/md.texi (Insn Splitting): Tweak wording for readability.
23318 2023-04-03 Martin Jambor <mjambor@suse.cz>
23321 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
23322 offset + size will be representable in unsigned int.
23324 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23326 * configure.ac (ZSTD_LIB): Move before zstd.h check.
23327 Unset gcc_cv_header_zstd_h without libzstd.
23328 * configure: Regenerate.
23330 2023-04-03 Martin Liska <mliska@suse.cz>
23332 * doc/invoke.texi: Document new param.
23334 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
23336 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
23337 new check_effective_target function.
23339 2023-04-03 Li Xu <xuli1@eswincomputing.com>
23341 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
23342 (vfloat32m8_t): Likewise
23344 2023-04-03 liuhongt <hongtao.liu@intel.com>
23346 * doc/md.texi: Document signbitm2.
23348 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23349 kito-cheng <kito.cheng@sifive.com>
23351 * config/riscv/vector.md: Fix RA constraint.
23353 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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.
23359 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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].
23366 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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
23380 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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
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.
23397 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
23399 * lra-constraints.cc: (combine_reload_insn): New function.
23401 2023-03-31 Jakub Jelinek <jakub@redhat.com>
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.
23413 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
23414 Andrew Pinski <pinskia@gmail.com>
23417 * config/riscv/t-riscv: Add missing dependencies.
23419 2023-03-31 liuhongt <hongtao.liu@intel.com>
23421 * config/i386/i386.cc (inline_memory_move_cost): Return 100
23422 for MASK_REGS when MODE_SIZE > 8.
23424 2023-03-31 liuhongt <hongtao.liu@intel.com>
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>):
23434 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
23435 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
23437 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
23439 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
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>):
23448 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
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>):
23466 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
23468 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
23469 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
23472 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
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.
23479 2023-03-30 Jason Merrill <jason@redhat.com>
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.
23487 2023-03-30 Richard Biener <rguenther@suse.de>
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.
23495 2023-03-30 Richard Biener <rguenther@suse.de>
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.
23502 2023-03-30 liuhongt <hongtao.liu@intel.com>
23504 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
23505 vpblendd instead of vpblendw for V4SI under avx2.
23507 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
23509 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
23510 for many quick operands, for register-sized modes.
23512 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
23514 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
23517 2023-03-29 Martin Liska <mliska@suse.cz>
23519 PR bootstrap/109310
23520 * configure.ac: Emit a warning for deprecated option
23521 --enable-link-mutex.
23522 * configure: Regenerate.
23524 2023-03-29 Richard Biener <rguenther@suse.de>
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.
23530 2023-03-29 Richard Biener <rguenther@suse.de>
23532 PR tree-optimization/109327
23533 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
23534 already removed stmts when draining to_remove.
23536 2023-03-29 Richard Biener <rguenther@suse.de>
23539 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
23540 so we can re-create the DIE for the type if required.
23542 2023-03-29 Jakub Jelinek <jakub@redhat.com>
23543 Richard Biener <rguenther@suse.de>
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.
23551 2023-03-29 Richard Biener <rguenther@suse.de>
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.
23558 2023-03-28 David Malcolm <dmalcolm@redhat.com>
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.
23567 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
23570 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
23571 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
23574 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
23576 PR rtl-optimization/109187
23577 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
23578 subtraction in three-way comparison.
23580 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
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.
23593 2023-03-28 Richard Biener <rguenther@suse.de>
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.
23600 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
23602 * config/i386/x-mingw32-utf8: update comments.
23604 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
23607 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
23608 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
23610 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
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
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
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.
23626 2023-03-28 Richard Biener <rguenther@suse.de>
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.
23639 2023-03-28 Jakub Jelinek <jakub@redhat.com>
23640 Jonathan Wakely <jwakely@redhat.com>
23642 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
23643 Use subcommand rather than sub-command in function comments.
23645 2023-03-28 Jakub Jelinek <jakub@redhat.com>
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
23652 * range-op-float.cc (range_operator_float::fold_range): Call
23653 flush_denormals_to_zero.
23655 2023-03-28 Jakub Jelinek <jakub@redhat.com>
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.
23661 2023-03-28 Jakub Jelinek <jakub@redhat.com>
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.
23666 2023-03-28 Jakub Jelinek <jakub@redhat.com>
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.
23673 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
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.
23683 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
23685 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
23686 top-level sections.
23688 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
23690 * config.host: Pull in i386/x-mingw32-utf8 Makefile
23691 fragment and reference utf8rc-mingw32.o explicitly
23693 * config/i386/sym-mingw32.cc: prevent name mangling of
23695 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
23696 depend on manifest file explicitly.
23698 2023-03-28 Richard Biener <rguenther@suse.de>
23701 2023-03-27 Richard Biener <rguenther@suse.de>
23703 PR rtl-optimization/109237
23704 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
23706 2023-03-28 Richard Biener <rguenther@suse.de>
23708 * common.opt (gdwarf): Remove Negative(gdwarf-).
23710 2023-03-28 Richard Biener <rguenther@suse.de>
23712 * common.opt (gdwarf): Add RejectNegative.
23713 (gdwarf-): Likewise.
23717 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23719 * config/cris/constraints.md ("T"): Correct to
23720 define_memory_constraint.
23722 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23724 * config/cris/cris.md (BW2): New mode-iterator.
23725 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
23728 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23730 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
23731 for possible eliminable compares.
23733 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
23735 * config/cris/constraints.md ("R"): Remove unused constraint.
23737 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
23739 PR gcov-profile/109297
23740 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
23741 (merge_stream_usage): Likewise.
23742 (overlap_usage): Likewise.
23744 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
23747 * config/riscv/thead.md: Add missing mode specifiers.
23749 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
23750 Jiangning Liu <jiangning.liu@amperecomputing.com>
23751 Manolis Tsamis <manolis.tsamis@vrull.eu>
23753 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
23755 2023-03-27 Richard Biener <rguenther@suse.de>
23757 PR rtl-optimization/109237
23758 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
23760 2023-03-27 Richard Biener <rguenther@suse.de>
23763 * lto-wrapper.cc (run_gcc): Parse alternate debug options
23764 as well, they always enable debug.
23766 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
23769 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
23771 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
23773 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
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.
23783 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
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.
23793 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
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.
23801 2023-03-26 Jakub Jelinek <jakub@redhat.com>
23803 PR tree-optimization/109230
23804 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
23806 2023-03-26 Jakub Jelinek <jakub@redhat.com>
23809 * predict.cc (compute_function_frequency): Don't call
23810 warn_function_cold if function already has cold attribute.
23812 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
23814 * doc/install.texi: Remove anachronistic note
23815 related to languages built and separate source tarballs.
23817 2023-03-25 David Malcolm <dmalcolm@redhat.com>
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.
23832 2023-03-24 David Malcolm <dmalcolm@redhat.com>
23834 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
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.
23841 2023-03-24 David Malcolm <dmalcolm@redhat.com>
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.
23852 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
23854 PR tree-optimization/109238
23855 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
23856 predecessors which this block dominates.
23858 2023-03-24 Richard Biener <rguenther@suse.de>
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.
23865 2023-03-24 Jakub Jelinek <jakub@redhat.com>
23867 PR middle-end/109258
23868 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
23869 if target == const0_rtx.
23871 2023-03-24 Alexandre Oliva <oliva@adacore.com>
23873 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
23874 Document options and effective targets.
23876 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
23878 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
23881 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
23883 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
23884 non-earlyclobber alternative.
23886 2023-03-23 Andrew Pinski <apinski@marvell.com>
23889 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
23892 2023-03-23 Richard Biener <rguenther@suse.de>
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.
23899 2023-03-23 Richard Biener <rguenther@suse.de>
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.
23906 2023-03-23 Jakub Jelinek <jakub@redhat.com>
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):
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):
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):
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.
23973 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
23975 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
23976 (move_callee_saved_registers): Detect the bug condition early.
23978 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
23980 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
23981 * config/gcn/gcn-valu.md (V_1REG_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.
23989 2023-03-23 Jakub Jelinek <jakub@redhat.com>
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
23997 2023-03-23 Pan Li <pan2.li@intel.com>
23998 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
24007 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
24009 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
24011 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
24028 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24031 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
24032 __riscv_vlenb support.
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.
24038 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24039 * config/riscv/riscv-vector-builtins.cc: Ditto.
24041 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24042 kito-cheng <kito.cheng@sifive.com>
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.
24055 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24056 kito-cheng <kito.cheng@sifive.com>
24058 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
24059 * config/riscv/vector-iterators.md (nmsac): 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.
24123 2023-03-23 liuhongt <hongtao.liu@intel.com>
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):
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.
24140 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
24142 * lra.cc (lra): Do not repeat inheritance and live range splitting
24143 when asm error is found.
24145 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
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.
24161 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
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.
24168 2023-03-22 Martin Liska <mliska@suse.cz>
24170 * configure: Regenerate.
24172 2023-03-21 Joseph Myers <joseph@codesourcery.com>
24174 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
24177 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
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.
24185 2023-03-21 Richard Biener <rguenther@suse.de>
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.
24194 2023-03-21 Jakub Jelinek <jakub@redhat.com>
24196 PR tree-optimization/109215
24197 * tree.h (enum special_array_member): Adjust comments for int_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.
24204 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24206 * configure.ac: Add check for the Texinfo 6.8
24207 CONTENTS_OUTPUT_LOCATION customization variable and set it if
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.
24215 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
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
24222 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
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
24231 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24233 * doc/include/texinfo.tex: Update to 2023-01-17.19.
24235 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
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.
24242 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
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
24253 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
24255 * doc/gcc.texi: Add the Indices appendix, to make texinfo
24256 generate nice indices overview page.
24258 2023-03-21 Richard Biener <rguenther@suse.de>
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.
24265 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
24268 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
24269 (init_float128_ieee): Delete code to switch complex multiply and divide
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.
24276 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
24279 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
24281 2023-03-19 Jonny Grant <jg@jguk.org>
24283 * doc/extend.texi (Common Function Attributes) <nonnull>:
24286 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
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.
24292 2023-03-17 Jakub Jelinek <jakub@redhat.com>
24295 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
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
24303 (tree_function_versioning): Formatting fix.
24305 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
24307 * lra-constraints.cc: Include hooks.h.
24308 (combine_reload_insn): New function.
24309 (lra_constraints): Call it.
24311 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24312 kito-cheng <kito.cheng@sifive.com>
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.
24326 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24329 * config/riscv/riscv.md: Fix subreg bug.
24331 2023-03-17 Jakub Jelinek <jakub@redhat.com>
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.
24342 2023-03-17 Jakub Jelinek <jakub@redhat.com>
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
24351 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
24353 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
24354 issues. Add more line breaks to example so it doesn't overflow
24357 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
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
24363 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
24364 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
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.
24377 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
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.
24383 2023-03-16 Martin Liska <mliska@suse.cz>
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.
24390 2023-03-16 Richard Biener <rguenther@suse.de>
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.
24397 2023-03-16 Richard Biener <rguenther@suse.de>
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
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
24408 (pass_waccess::check_pointer_uses): Process all PHIs.
24410 2023-03-15 David Malcolm <dmalcolm@redhat.com>
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
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"
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
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
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.
24439 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
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.
24448 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
24450 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
24452 2023-03-15 Richard Biener <rguenther@suse.de>
24454 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
24455 Do not diagnose clobbers.
24457 2023-03-15 Richard Biener <rguenther@suse.de>
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.
24463 2023-03-15 Xi Ruoyao <xry111@xry111.site>
24466 * builtins.cc (inline_string_cmp): Force the character
24467 difference into "result" pseudo-register, instead of reassign
24468 the pseudo-register.
24470 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
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
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):
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.
24492 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
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
24498 * config/riscv/riscv.cc (riscv_split_doubleword_move):
24499 Add split code for XTheadFmv.
24500 (riscv_secondary_memory_needed): XTheadFmv does not need
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.
24509 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
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.
24524 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24526 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
24527 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
24529 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
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.
24538 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
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
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.
24569 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24571 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
24572 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
24574 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24576 * config/riscv/riscv.md: Include thead.md
24577 * config/riscv/thead.md: New file.
24579 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
24581 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
24583 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
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.
24612 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
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.
24619 2023-03-14 Jakub Jelinek <jakub@redhat.com>
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.
24625 2023-03-14 Martin Jambor <mjambor@suse.cz>
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
24632 2023-03-14 Martin Jambor <mjambor@suse.cz>
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.
24639 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
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.
24646 2023-03-14 Sam James <sam@gentoo.org>
24648 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
24649 including <sstream> earlier.
24650 * system.h: Add INCLUDE_SSTREAM.
24652 2023-03-14 Richard Biener <rguenther@suse.de>
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.
24658 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
24660 PR rtl-optimization/107762
24661 * expr.cc (emit_group_store): Revert latest change.
24663 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
24665 PR tree-optimization/109005
24666 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
24667 aggregate type check.
24669 2023-03-14 Jakub Jelinek <jakub@redhat.com>
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.
24675 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
24677 PR tree-optimization/106896
24678 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
24679 implementatoin with probability_in; avoid some asserts.
24681 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
24683 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
24685 2023-03-13 Sean Bright <sean@seanbright.com>
24687 * doc/invoke.texi (Warning Options): Remove errant 'See'
24690 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24692 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
24693 REG_OK_FOR_BASE_P): Remove.
24695 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24697 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
24698 (=vd,vd,vr,vr): Ditto.
24699 * config/riscv/vector.md: Ditto.
24701 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24703 * config/riscv/riscv-vector-builtins.cc
24704 (function_expander::use_compare_insn): Add operand predicate check.
24706 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24708 * config/riscv/vector.md: Fine tune RA constraints.
24710 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
24712 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
24713 hsaco assemble/link.
24715 2023-03-13 Richard Biener <rguenther@suse.de>
24717 PR tree-optimization/109046
24718 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
24719 piecewise complex loads.
24721 2023-03-12 Jakub Jelinek <jakub@redhat.com>
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.
24740 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
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.
24746 2023-03-12 Tamar Christina <tamar.christina@arm.com>
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.
24759 2023-03-12 Tamar Christina <tamar.christina@arm.com>
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.
24769 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24770 Richard Sandiford <richard.sandiford@arm.com>
24773 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
24776 2023-03-12 Tamar Christina <tamar.christina@arm.com>
24777 Andrew MacLeod <amacleod@redhat.com>
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):
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
24794 2023-03-12 Tamar Christina <tamar.christina@arm.com>
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.
24812 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
24814 * doc/install.texi2html: Fix issue number typo in comment.
24816 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
24818 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
24821 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
24823 * doc/invoke.texi (Optimize Options): Add markup to
24824 description of asan-kernel-mem-intrinsic-prefix, and clarify
24827 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
24829 * doc/extend.texi (Named Address Spaces): Drop a redundant link
24832 2023-03-11 Jeff Law <jlaw@ventanamicro>
24835 * doc/extend.texi: Clarify Attribute Syntax a bit.
24837 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
24839 * doc/install.texi (Prerequisites): Suggest using newer versions
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).
24846 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24849 * optabs.cc (expand_fix): For conversions from BFmode to integral,
24850 use shifts to convert it to SFmode first and then convert SFmode
24853 2023-03-10 Andrew Pinski <apinski@marvell.com>
24855 * config/aarch64/aarch64.md: Add a new define_split
24858 2023-03-10 Richard Biener <rguenther@suse.de>
24860 * tree-ssa-structalias.cc (solve_graph): Immediately
24861 iterate self-cycles.
24863 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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.
24870 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24873 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
24875 * config/i386/t-cygwin-w64: Remove.
24877 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
24889 * tree.cc (tree_code_type, tree_code_length): Remove.
24891 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
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.
24914 2023-03-10 Jakub Jelinek <jakub@redhat.com>
24917 * cgraphunit.cc (check_global_declaration): Don't warn for unused
24918 variables which have OPT_Wunused_variable warning suppressed.
24920 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
24930 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
24938 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24939 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
24941 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
24942 (struct fault_load_def): 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.
24988 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
24995 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
25016 2023-03-10 Michael Collison <collison@rivosinc.com>
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.
25022 2023-03-09 Tamar Christina <tamar.christina@arm.com>
25024 * passes.cc (emergency_dump_function): Finish graph generation.
25026 2023-03-09 Tamar Christina <tamar.christina@arm.com>
25028 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
25029 and bottom bit only.
25031 2023-03-09 Andrew Pinski <apinski@marvell.com>
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.
25038 2023-03-09 Jason Merrill <jason@redhat.com>
25040 * doc/extend.texi: Comment out __is_deducible docs.
25042 2023-03-09 Jason Merrill <jason@redhat.com>
25045 * doc/extend.texi (Type Traits):: Document __is_deducible.
25047 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
25050 * config.host: add object for x86_64-*-mingw*.
25051 * config/i386/sym-mingw32.cc: dummy file to attach
25053 * config/i386/utf8-mingw32.rc: windres resource file.
25054 * config/i386/winnt-utf8.manifest: XML manifest to
25056 * config/i386/x-mingw32: reference to x-mingw32-utf8.
25057 * config/i386/x-mingw32-utf8: Makefile fragment to
25058 embed UTF-8 manifest.
25060 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
25062 * lra-constraints.cc (process_alt_operands): Use operand modes for
25063 clobbered regs instead of the biggest access mode.
25065 2023-03-09 Richard Biener <rguenther@suse.de>
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.
25072 2023-03-09 Jakub Jelinek <jakub@redhat.com>
25073 Richard Biener <rguenther@suse.de>
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.
25081 2023-03-07 Jonathan Grant <jg@jguk.org>
25084 * doc/invoke.texi (Instrumentation Options): Clarify
25085 LeakSanitizer behavior.
25087 2023-03-07 Benson Muite <benson_muite@emailplus.org>
25089 * doc/install.texi (Prerequisites): Add link to gmplib.org.
25091 2023-03-07 Pan Li <pan2.li@intel.com>
25092 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25096 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
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.
25104 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
25106 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
25108 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
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
25118 2023-03-06 Richard Biener <rguenther@suse.de>
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.
25125 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
25128 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
25130 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
25131 (X86_TUNE_USE_SCATTER): Likewise.
25133 2023-03-06 Xi Ruoyao <xry111@xry111.site>
25136 * config/loongarch/loongarch.h (FP_RETURN): Use
25137 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
25138 (UNITS_PER_FP_ARG): Likewise.
25140 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25142 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
25143 (pass_vsetvl::backward_demand_fusion): Ditto.
25145 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25146 SiYu Wu <siyu@isrc.iscas.ac.cn>
25148 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
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.
25157 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25158 SiYu Wu <siyu@isrc.iscas.ac.cn>
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.
25179 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25180 SiYu Wu <siyu@isrc.iscas.ac.cn>
25182 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
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.
25199 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25200 SiYu Wu <siyu@isrc.iscas.ac.cn>
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
25207 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
25208 extension's built-in function file.
25210 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
25211 SiYu Wu <siyu@isrc.iscas.ac.cn>
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.
25222 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
25224 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
25227 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25228 kito-cheng <kito.cheng@sifive.com>
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.
25242 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25243 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
25259 (vundefined): Add new intrinsic.
25260 (vreinterpret): Ditto.
25261 (vlmul_ext): Ditto.
25262 (vlmul_trunc): 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.
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.
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.
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.
25425 (unsigned_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.
25481 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
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.
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.
25571 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25573 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
25575 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
25587 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25588 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
25592 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): 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.
25691 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
25693 * config/riscv/bitmanip.md: allow 0 constant in max/min
25696 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
25698 * config/riscv/bitmanip.md: Fix wrong index in the check.
25700 2023-03-04 Jakub Jelinek <jakub@redhat.com>
25702 PR middle-end/109006
25703 * vec.cc (test_auto_alias): Adjust comment for removal of
25705 * read-rtl-function.cc (function_reader::parse_block): Likewise.
25706 * gdbhooks.py: Likewise.
25708 2023-03-04 Jakub Jelinek <jakub@redhat.com>
25710 PR testsuite/108973
25711 * selftest-diagnostic.cc
25712 (test_diagnostic_context::test_diagnostic_context): Set
25713 caret_max_width to 80.
25715 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25717 * gimple-ssa-warn-access.cc
25718 (pass_waccess::check_dangling_stores): Skip non-stores.
25720 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25722 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
25723 after vmsr and vmrs, and lower the case of P0.
25725 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
25727 PR middle-end/109006
25728 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
25730 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
25732 PR middle-end/109006
25733 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
25735 2023-03-03 Jakub Jelinek <jakub@redhat.com>
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.
25743 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
25745 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
25746 arch14 instead of z16.
25748 2023-03-03 Anthony Green <green@moxielogic.com>
25750 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
25752 2023-03-03 Anthony Green <green@moxielogic.com>
25754 * config/moxie/constraints.md (A, B, W): Change
25755 define_constraint to define_memory_constraint.
25757 2023-03-03 Xi Ruoyao <xry111@xry111.site>
25759 * toplev.cc (process_options): Fix the spelling of
25760 "-fstack-clash-protection".
25762 2023-03-03 Richard Biener <rguenther@suse.de>
25764 PR tree-optimization/109002
25765 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
25766 PHI-translate ANTIC_IN.
25768 2023-03-03 Jakub Jelinek <jakub@redhat.com>
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
25775 2023-03-03 Richard Biener <rguenther@suse.de>
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
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
25795 2023-03-03 Richard Biener <rguenther@suse.de>
25798 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
25799 generate a DIE for a function scope static.
25801 2023-03-03 Alexandre Oliva <oliva@adacore.com>
25803 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
25805 2023-03-02 Jakub Jelinek <jakub@redhat.com>
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.
25817 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
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
25824 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
25825 Paul-Antoine Arras <pa@codesourcery.com>
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.
25835 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
25837 PR tree-optimization/108979
25838 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
25839 operations on invariants.
25841 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
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.
25849 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25851 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
25852 of constant 0 offset.
25854 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
25856 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
25858 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
25860 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
25862 * config.gcc: add -with-{no-}msa build option.
25863 * config/mips/mips.h: Likewise.
25864 * doc/install.texi: Likewise.
25866 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
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
25873 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
25875 PR tree-optimization/108430
25876 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
25877 of inverted condition.
25879 2023-03-02 Jakub Jelinek <jakub@redhat.com>
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.
25886 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
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.
25897 2023-03-01 LIU Hao <lh_mouse@126.com>
25900 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
25901 Remove the size limit `pch_VA_max_size`
25903 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
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
25910 2023-03-01 Jakub Jelinek <jakub@redhat.com>
25913 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
25914 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
25916 2023-03-01 Richard Biener <rguenther@suse.de>
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
25923 (vect_do_peeling): Streamline error handling.
25925 2023-03-01 Richard Biener <rguenther@suse.de>
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.
25934 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
25937 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
25938 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
25940 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
25942 PR middle-end/107411
25943 PR middle-end/107411
25944 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
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.
25949 2023-02-28 Jakub Jelinek <jakub@redhat.com>
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.
25962 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
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.
25973 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
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.
25981 2023-02-27 Patrick Palka <ppalka@redhat.com>
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
25989 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25991 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
25993 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
25995 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
25996 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
25998 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
26000 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
26001 (xtensa_get_config_v3): New functions.
26003 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26005 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
26007 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
26009 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
26010 the macro to 0x1000000000.
26012 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
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.
26020 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
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.
26033 2023-02-24 Richard Biener <rguenther@suse.de>
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
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.
26050 2023-02-24 Richard Biener <rguenther@suse.de>
26052 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
26053 take a const reference to the object, use address to
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.
26068 2023-02-24 Martin Liska <mliska@suse.cz>
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).
26074 2023-02-24 Jakub Jelinek <jakub@redhat.com>
26076 * config/i386/i386-builtin.def: Update description of BDESC
26077 and BDESC_FIRST in file comment to include mask2.
26079 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26081 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
26083 2023-02-24 Jakub Jelinek <jakub@redhat.com>
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.
26090 2023-02-24 Jakub Jelinek <jakub@redhat.com>
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.
26109 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
26111 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
26112 Add non-compact 32-bit multilibs.
26114 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
26116 * config/mips/mips.md (*clo<mode>2): New pattern.
26118 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
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.
26135 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
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.
26141 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
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.
26148 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
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.
26164 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
26170 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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)
26180 (xtensa_expand_prologue): Modify to not emit register restoration
26181 insn from its stack slot if the register is already eliminated.
26183 2023-02-23 Jakub Jelinek <jakub@redhat.com>
26185 PR translation/108890
26186 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
26187 around fatal_error format strings.
26189 2023-02-23 Richard Biener <rguenther@suse.de>
26191 * tree-ssa-structalias.cc (handle_lhs_call): Do not
26192 re-create rhsc, only truncate it.
26194 2023-02-23 Jakub Jelinek <jakub@redhat.com>
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.
26200 2023-02-23 Richard Biener <rguenther@suse.de>
26202 * tree-if-conv.cc (tree_if_conversion): Properly manage
26203 memory of refs and the contained data references.
26205 2023-02-23 Richard Biener <rguenther@suse.de>
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.
26212 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26214 * config/xtensa/xtensa.md
26215 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
26216 Add missing "SI:" to PLUS RTXes.
26218 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
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).
26225 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
26228 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
26231 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
26233 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
26234 (sibcall_value, sibcall_value_internal): Add 'use' expression
26237 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
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.
26246 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
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.
26262 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
26269 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26270 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
26279 (vwredsumu): Ditto.
26280 (vfredusum): Ditto.
26281 (vfredosum): Ditto.
26284 (vfwredosum): Ditto.
26285 (vfwredusum): Ditto.
26286 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): 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.
26350 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
26393 * config/riscv/riscv-vector-builtins-bases.h:
26394 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
26438 (vfcvt_rtz_x): Ditto.
26439 (vfcvt_rtz_xu): Ditto.
26442 (vfwcvt_xu): Ditto.
26443 (vfwcvt_rtz_x): Ditto.
26444 (vfwcvt_rtz_xu): Ditto.
26447 (vfncvt_xu): Ditto.
26448 (vfncvt_rtz_x): Ditto.
26449 (vfncvt_rtz_xu): 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.
26498 (xu_v): 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.
26509 (fixuns_trunc): 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.
26570 2023-02-22 Jakub Jelinek <jakub@redhat.com>
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.
26578 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
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.
26585 2023-02-21 David Malcolm <dmalcolm@redhat.com>
26588 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
26590 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
26593 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
26595 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
26596 (sibcall_value, sibcall_value_internal): Add 'use' expression
26599 2023-02-21 Richard Biener <rguenther@suse.de>
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.
26605 2023-02-21 Richard Biener <rguenther@suse.de>
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.
26611 2023-02-21 Richard Biener <rguenther@suse.de>
26614 2023-02-13 Richard Biener <rguenther@suse.de>
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.
26624 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26626 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
26627 true if register A0 (return address register) when -Og is specified.
26629 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
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.
26643 2023-02-20 Jakub Jelinek <jakub2redhat.com>
26646 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
26647 gen_umadddi4_highpart{,_le}.
26649 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
26651 * config/riscv/riscv.md (prefetch): Use r instead of p for the
26653 (riscv_prefetchi_<mode>): Ditto.
26655 2023-02-20 Richard Biener <rguenther@suse.de>
26657 PR tree-optimization/108816
26658 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
26659 versioning condition split prerequesite, assert required
26662 2023-02-20 Richard Biener <rguenther@suse.de>
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
26669 2023-02-20 Richard Biener <rguenther@suse.de>
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.
26675 2023-02-18 Jakub Jelinek <jakub@redhat.com>
26677 PR tree-optimization/108819
26678 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
26680 2023-02-18 Jakub Jelinek <jakub@redhat.com>
26683 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
26684 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
26686 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
26687 with ix86_replace_reg_with_reg.
26689 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
26691 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
26693 2023-02-18 Xi Ruoyao <xry111@xry111.site>
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
26699 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
26700 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
26703 2023-02-18 Andrew Pinski <apinski@marvell.com>
26705 * match.pd: Remove #if GIMPLE around the
26708 2023-02-18 Andrew Pinski <apinski@marvell.com>
26710 * value-query.h (get_range_query): Return the global ranges
26711 for a nullptr func.
26713 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
26715 * doc/invoke.texi (@item -Wall): Fix typo in
26718 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
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.
26728 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
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.
26735 2023-02-17 Richard Biener <rguenther@suse.de>
26737 PR tree-optimization/108821
26738 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
26739 move volatile accesses.
26741 2023-02-17 Richard Biener <rguenther@suse.de>
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.
26752 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26754 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
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.
26768 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26769 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
26788 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
26789 (struct mask_alu_def): 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.
26804 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26806 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
26810 * config/riscv/riscv-vector-builtins.cc: Ditto.
26812 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26813 kito-cheng <kito.cheng@sifive.com>
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.
26820 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26822 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
26884 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
26891 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
26908 (get_avl_type): Ditto.
26909 (calculate_ratio): Ditto.
26910 (enum vlmul_type): Ditto.
26912 (neg_simm5_p): Ditto.
26913 (has_vi_variant_p): Ditto.
26915 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
26922 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
26924 * doc/invoke.texi (Optimize Options): Reword the explanation
26925 getting minimal, maximal and default values of a parameter.
26927 2023-02-16 Patrick Palka <ppalka@redhat.com>
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.
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.
26973 * lra-int.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.
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.
27020 2023-02-16 Jakub Jelinek <jakub@redhat.com>
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.
27027 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
27029 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
27030 using-declaration to unhide functions.
27032 2023-02-16 Jakub Jelinek <jakub@redhat.com>
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.
27040 2023-02-16 Richard Biener <rguenther@suse.de>
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
27047 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
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.
27054 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
27056 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
27058 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
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.
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.
27088 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
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.
27103 2023-02-15 Richard Biener <rguenther@suse.de>
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.
27113 2023-02-15 Marek Polacek <polacek@redhat.com>
27115 PR middle-end/106080
27116 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
27119 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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
27126 (class imac): New class.
27127 (enum widen_ternop_type): New enum.
27128 (class iwmac): New class.
27130 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27131 * config/riscv/riscv-vector-builtins-functions.def (vmacc): 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.
27165 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
27177 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27178 * config/riscv/riscv-vector-builtins-functions.def (vmseq): 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.
27219 2023-02-15 Martin Jambor <mjambor@suse.cz>
27222 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
27223 creation of non-scalar replacements even if IPA-CP knows their
27226 2023-02-15 Jakub Jelinek <jakub@redhat.com>
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.
27235 2023-02-15 Martin Liska <mliska@suse.cz>
27237 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
27239 2023-02-15 Richard Biener <rguenther@suse.de>
27241 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
27242 for with_poison and alias worklist to it.
27243 (sanitize_asan_mark_poison): Likewise.
27245 2023-02-15 Richard Biener <rguenther@suse.de>
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
27257 2023-02-15 Richard Biener <rguenther@suse.de>
27260 * config/i386/i386-features.cc (convert_scalars_to_vector):
27261 Switch candidates bitmaps to tree view before building the chains.
27263 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
27265 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
27266 "failure trying to reload" call.
27268 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
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.
27274 2023-02-14 David Faust <david.faust@oracle.com>
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.
27283 2023-02-14 Andrew Pinski <apinski@marvell.com>
27285 PR tree-optimization/108355
27286 PR tree-optimization/96921
27287 * match.pd: Add pattern for "1 - bool_val".
27289 2023-02-14 Richard Biener <rguenther@suse.de>
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.
27299 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
27301 * gimplify.cc (gimplify_save_expr): Add missing guard.
27303 2023-02-14 Richard Biener <rguenther@suse.de>
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.
27309 2023-02-14 Jakub Jelinek <jakub@redhat.com>
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.
27324 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
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
27331 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
27333 PR rtl-optimization/108681
27334 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
27335 code to handle bare uses and clobbers.
27337 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
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.
27344 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
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.
27354 2023-02-13 Richard Biener <rguenther@suse.de>
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
27362 (process_bb): Instead call it once here for each edge
27363 we register possibly multiple predicates on.
27365 2023-02-13 Richard Biener <rguenther@suse.de>
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.
27375 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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
27382 (s390_sched_init): Unconditionally reset scheduler state.
27384 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
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.
27392 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
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.
27398 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
27400 * common/config/arc/arc-common.cc (arc_option_optimization_table):
27401 Remove millicode from list.
27403 2023-02-13 Martin Liska <mliska@suse.cz>
27405 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
27407 2023-02-13 Richard Biener <rguenther@suse.de>
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.
27417 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
27419 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
27420 (DWARF_FRAME_REGISTERS): New.
27421 (DWARF_REG_TO_UNWIND_COLUMN): New.
27423 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
27425 * doc/sourcebuild.texi: Remove (broken) direct reference to
27426 "The GNU configure and build system".
27428 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
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.
27434 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27436 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
27437 (class vnclip): Ditto.
27439 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27440 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
27449 * config/riscv/vector-iterators.md (su): Add instruction.
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.
27459 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
27468 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27469 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
27476 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
27477 (struct move_def): 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.
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.
27498 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
27506 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
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.
27532 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
27539 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27540 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
27542 * config/riscv/riscv-vector-builtins-shapes.cc
27543 (struct no_mask_policy_def): 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.
27562 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27564 * config/riscv/vector.md: use "zero" reg.
27566 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27568 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
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
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"
27593 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
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
27601 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
27603 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
27604 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
27606 (@pred_widen_mulsu<mode>): Ditto.
27607 (@pred_widen_mulsu<mode>_scalar): Ditto.
27608 (@pred_<optab><mode>): Ditto.
27610 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27611 kito-cheng <kito.cheng@sifive.com>
27613 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
27614 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
27616 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27617 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
27621 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
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.
27681 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27683 * config/riscv/iterators.md: Add sign_extend/zero_extend.
27684 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
27686 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
27687 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
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
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
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.
27744 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
27754 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
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.
27764 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27766 * config/riscv/iterators.md: Add neg and not.
27767 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
27769 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27770 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
27791 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
27792 (struct alu_def): 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
27799 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27801 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
27803 2023-02-11 Jakub Jelinek <jakub@redhat.com>
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.
27810 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
27812 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
27814 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
27816 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
27817 valid_combine only when ira_use_lra_p is true.
27819 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
27821 * params.opt (ira-simple-lra-insn-threshold): Add new param.
27822 * ira.cc (ira): Use the param to switch on simple LRA.
27824 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
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.
27832 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
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.
27842 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
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.
27860 (neg_simm5_p): Ditto.
27861 (has_vi_variant_p): Ditto.
27862 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
27864 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27865 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
27868 (vminu): Remove signed cases.
27870 (vdiv): Remove unsigned cases.
27872 (vdivu): Remove signed cases.
27876 (vrsub): New class.
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
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.
27893 2023-02-10 Richard Biener <rguenther@suse.de>
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.
27900 2023-02-10 Jakub Jelinek <jakub@redhat.com>
27903 2023-02-09 Martin Liska <mliska@suse.cz>
27906 * doc/extend.texi: Document that the function
27907 does not work correctly for old VIA processors.
27909 2023-02-10 Andrew Pinski <apinski@marvell.com>
27910 Andrew Macleod <amacleod@redhat.com>
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
27919 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
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
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.
27931 2023-02-09 Jakub Jelinek <jakub@redhat.com>
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
27939 2023-02-09 Jakub Jelinek <jakub@redhat.com>
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.
27946 2023-02-09 Andrew Pinski <apinski@marvell.com>
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.
27952 2023-02-09 Martin Liska <mliska@suse.cz>
27955 * doc/extend.texi: Document that the function
27956 does not work correctly for old VIA processors.
27958 2023-02-09 Andreas Schwab <schwab@suse.de>
27960 * lto-wrapper.cc (merge_and_complain): Handle
27961 -funwind-tables and -fasynchronous-unwind-tables.
27962 (append_compiler_options): Likewise.
27964 2023-02-09 Richard Biener <rguenther@suse.de>
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
27971 (walk_aliased_vdefs_1): Likewise.
27973 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
27975 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
27977 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
27980 * config.gcc (tm_mlib_file): Define new variable.
27982 2023-02-08 Jakub Jelinek <jakub@redhat.com>
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.
27991 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
27993 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
27995 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
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
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.
28005 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
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.
28012 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
28015 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
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
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.
28026 2023-02-08 Jakub Jelinek <jakub@redhat.com>
28028 * tree.def (SAD_EXPR): Remove outdated comment about missing
28031 2023-02-07 Marek Polacek <polacek@redhat.com>
28033 * doc/invoke.texi: Update -fchar8_t documentation.
28035 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
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
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.
28046 2023-02-07 Richard Biener <rguenther@suse.de>
28048 PR tree-optimization/26854
28049 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
28050 instead of immediate uses.
28052 2023-02-07 Jakub Jelinek <jakub@redhat.com>
28054 PR tree-optimization/106923
28055 * ipa-split.cc (execute_split_functions): Don't split returns_twice
28058 2023-02-07 Jakub Jelinek <jakub@redhat.com>
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.
28064 2023-02-07 Jan Hubicka <jh@suse.cz>
28066 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
28069 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
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.
28075 2023-02-06 Alex Coplan <alex.coplan@arm.com>
28078 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
28079 Use correct constraint for operand 3.
28081 2023-02-06 Martin Jambor <mjambor@suse.cz>
28083 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
28085 2023-02-06 Xi Ruoyao <xry111@xry111.site>
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.
28104 2023-02-06 Jakub Jelinek <jakub@redhat.com>
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.
28111 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
28113 * doc/install.texi (Specific): Remove PW32.
28115 2023-02-03 Jakub Jelinek <jakub@redhat.com>
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 ().
28128 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
28130 PR tree-optimization/108639
28131 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
28133 (irange::operator==): Same.
28135 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
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.
28155 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
28157 PR tree-optimization/107570
28158 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
28160 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
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.
28172 (Functions): Ditto.
28174 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
28176 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
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.
28183 2023-02-03 Martin Jambor <mjambor@suse.cz>
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.
28196 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
28198 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
28199 * config/riscv/riscv.cc: Ditto.
28201 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28203 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
28207 * config/riscv/vector.md: Ditto.
28209 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
28216 * config/riscv/riscv-vector-builtins.cc: Ditto.
28217 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
28219 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
28221 * toplev.cc (toplev::main): Only print the version information header
28222 from toplevel main().
28224 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
28226 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
28227 cond_{ashl|ashr|lshr}
28229 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
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.
28235 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
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
28244 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
28246 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
28247 Fix finding best match score.
28249 2023-02-02 Jakub Jelinek <jakub@redhat.com>
28252 PR rtl-optimization/108463
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.
28263 2023-02-02 Richard Biener <rguenther@suse.de>
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.
28270 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
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.
28290 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
28298 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
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
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
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.
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
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
28349 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
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.
28357 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
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.
28366 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
28373 (arm_init_crypto_builtins): Likewise.
28375 2023-02-02 Jakub Jelinek <jakub@redhat.com>
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.
28398 2023-02-02 liuhongt <hongtao.liu@intel.com>
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):
28411 2023-02-02 Jakub Jelinek <jakub@redhat.com>
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).
28423 2023-02-01 Tamar Christina <tamar.christina@arm.com>
28425 * common/config/aarch64/aarch64-common.cc
28426 (struct aarch64_option_extension): Add native_detect and document struct
28428 (all_extensions): Set new field native_detect.
28429 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
28432 2023-02-01 Martin Liska <mliska@suse.cz>
28434 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
28437 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
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.
28443 2023-02-01 Martin Liska <mliska@suse.cz>
28446 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
28447 ony non-null values.
28448 * ipa.cc (walk_polymorphic_call_targets): Likewise.
28450 2023-02-01 Martin Liska <mliska@suse.cz>
28453 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
28456 2023-02-01 Jakub Jelinek <jakub@redhat.com>
28459 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
28460 subregs in DEBUG_INSNs.
28462 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
28464 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
28466 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
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
28484 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
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
28493 (@stack_tie<mode>): ... this.
28495 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
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.
28502 2023-02-01 Richard Biener <rguenther@suse.de>
28504 PR middle-end/108500
28505 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
28506 with tree traversal algorithm.
28508 2023-02-01 Jason Merrill <jason@redhat.com>
28510 * doc/invoke.texi: Document -Wno-changes-meaning.
28512 2023-02-01 David Malcolm <dmalcolm@redhat.com>
28514 * doc/invoke.texi (Static Analyzer Options): Add notes about
28515 limitations of -fanalyzer.
28517 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28519 * config/riscv/constraints.md (vj): New.
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.
28543 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
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.
28573 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
28576 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
28579 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
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.
28585 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
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.
28592 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
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.
28600 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
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.
28612 2023-01-31 Jakub Jelinek <jakub@redhat.com>
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.
28620 2023-01-31 Jakub Jelinek <jakub@redhat.com>
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.
28628 2023-01-31 Jakub Jelinek <jakub@redhat.com>
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.
28637 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
28639 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
28641 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
28648 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
28649 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
28665 * config/riscv/riscv-vector-builtins-shapes.cc
28666 (struct indexed_loadstore_def): New class.
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
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
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.
28701 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
28703 * config.gcc: Recognize x86_64-*-gnu* targets and include
28705 * config/i386/gnu64.h: Define configuration for new target
28706 including ld.so location.
28708 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
28710 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
28711 ampere1a to include SM4.
28713 2023-01-30 Andrew Pinski <apinski@marvell.com>
28715 PR tree-optimization/108582
28716 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
28717 for middlebb to have no phi nodes.
28719 2023-01-30 Richard Biener <rguenther@suse.de>
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.
28726 2023-01-30 Andreas Schwab <schwab@suse.de>
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.
28735 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
28737 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
28738 value of includedir.
28740 2023-01-30 Richard Biener <rguenther@suse.de>
28743 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
28746 2023-01-30 liuhongt <hongtao.liu@intel.com>
28748 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
28749 * doc/invoke.texi: Ditto.
28751 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
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
28760 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
28762 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
28763 off-by-one in checking the permissible shift-amount.
28765 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28767 * doc/extend.texi (Named Address Spaces): Update link to the
28770 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28772 * doc/standards.texi (Standards): Fix markup.
28774 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28776 * doc/standards.texi (Standards): Update link to Objective-C book.
28778 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28780 * doc/invoke.texi (Instrumentation Options): Update reference to
28783 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
28785 * doc/standards.texi: Update Go1 link.
28787 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28789 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
28790 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
28793 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28794 * config/riscv/riscv-vector-builtins-functions.def (vlse): 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.
28801 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28803 * config/riscv/vector.md (tail_policy_op_idx): Remove.
28804 (mask_policy_op_idx): Remove.
28805 (avl_type_op_idx): Remove.
28807 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
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.
28817 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
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.
28823 2023-01-27 Richard Biener <rguenther@suse.de>
28826 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
28827 and -Ofast FP environment side-effects.
28829 2023-01-27 Richard Biener <rguenther@suse.de>
28832 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
28833 Don't add crtfastmath.o for -shared.
28835 2023-01-27 Richard Biener <rguenther@suse.de>
28838 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
28841 2023-01-27 Richard Biener <rguenther@suse.de>
28844 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
28845 crtfastmath.o for -shared.
28847 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
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.
28855 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
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.
28861 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28863 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
28864 Remove _m suffix for "vop_m" C++ overloaded API name.
28866 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
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.
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.
28886 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
28925 2023-01-27 Jakub Jelinek <jakub@redhat.com>
28928 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
28929 from size_t to int.
28931 2023-01-27 Jakub Jelinek <jakub@redhat.com>
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.
28938 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28940 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
28942 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28944 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
28945 (emit_vsetvl_insn): Ditto.
28947 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28949 * config/riscv/vector.md: Fix constraints.
28951 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28953 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
28955 2023-01-27 Patrick Palka <ppalka@redhat.com>
28956 Jakub Jelinek <jakub@redhat.com>
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.
28964 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28966 * config/riscv/riscv-vsetvl.h: Change it into public.
28968 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28970 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
28973 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28975 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
28977 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28979 * config/riscv/vector.md: Fix incorrect attributes.
28981 2023-01-27 Richard Biener <rguenther@suse.de>
28984 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
28985 Don't add crtfastmath.o for -shared.
28987 2023-01-27 Alexandre Oliva <oliva@gnu.org>
28989 * doc/options.texi (option, RejectNegative): Mention that
28990 -g-started options are also implicitly negatable.
28992 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
28994 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
28995 Use get_typenode_from_name to get fixed-width integer type
28997 * config/riscv/riscv-vector-builtins.def: Update define with
28998 fixed-width integer type nodes.
29000 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29041 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29049 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29060 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29062 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
29065 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29067 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
29069 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29071 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
29072 Add pre-check for redundant flow.
29074 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29081 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29094 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29096 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
29098 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29100 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
29101 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
29103 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29105 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
29106 (backward_propagate_worthwhile_p): Fix non-worthwhile.
29108 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29110 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
29112 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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.
29119 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29121 * config/riscv/vector.md:
29123 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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
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.
29135 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29137 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
29139 2023-01-26 Marek Polacek <polacek@redhat.com>
29141 PR middle-end/108543
29142 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
29143 if it was previously set.
29145 2023-01-26 Jakub Jelinek <jakub@redhat.com>
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.
29161 2023-01-26 Jakub Jelinek <jakub@redhat.com>
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.
29172 2023-01-26 Richard Biener <rguenther@suse.de>
29174 PR tree-optimization/108547
29175 * gimple-predicate-analysis.cc (value_sat_pred_p):
29178 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
29180 PR tree-optimization/108522
29181 * tree-object-size.cc (compute_object_offset): Make EXPR
29182 argument non-const. Call component_ref_field_offset.
29184 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29186 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
29187 FEATURE_STRING field.
29189 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
29191 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
29193 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
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.
29201 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29203 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
29205 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29207 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
29209 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29211 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
29214 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29216 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
29218 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
29220 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
29222 2023-01-25 Richard Biener <rguenther@suse.de>
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
29229 2023-01-25 Richard Biener <rguenther@suse.de>
29231 * doc/lto.texi (Command line options): Reword and update reference
29232 to removed lto_read_all_file_options.
29234 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
29236 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
29239 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
29241 * doc/contrib.texi: Add Jose E. Marchesi.
29243 2023-01-25 Jakub Jelinek <jakub@redhat.com>
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.
29252 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
29253 Jakub Jelinek <jakub@redhat.com>
29255 PR tree-optimization/108522
29256 * tree-object-size.cc (compute_object_offset): Use
29257 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
29259 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29261 * config/xtensa/xtensa.md:
29262 Fix exit from loops detecting references before overwriting in the
29265 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
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.
29272 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
29274 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
29277 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
29284 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
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.
29291 2023-01-24 Richard Biener <rguenther@suse.de>
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.
29301 2023-01-24 Eric Biggers <ebiggers@google.com>
29304 * optc-save-gen.awk: Fix copy-and-paste error.
29306 2023-01-24 Jakub Jelinek <jakub@redhat.com>
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.
29313 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29316 * config.gcc (tm_file): Move the variable out of loop.
29318 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
29319 Yang Yujie <yangyujie@loongson.cn>
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.
29329 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29331 * doc/invoke.texi (-mbranch-protection): Update documentation.
29333 2023-01-23 Richard Biener <rguenther@suse.de>
29336 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
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.
29343 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
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
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.
29366 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
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.
29375 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
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.
29383 2023-01-23 Richard Biener <rguenther@suse.de>
29385 PR tree-optimization/108482
29386 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
29387 .LOOP_DIST_ALIAS calls.
29389 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
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
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.
29408 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
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'
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
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.
29428 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29430 * config/arm/arm.h (arm_arch8m_main): Declare it.
29431 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
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):
29443 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
29444 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
29446 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29448 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
29449 mbranch-protection.
29451 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29452 Tejas Belagod <tbelagod@arm.com>
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.
29457 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29458 Tejas Belagod <tbelagod@arm.com>
29459 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29461 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
29462 new pseudo register class _UVRSC_PAC.
29464 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29465 Tejas Belagod <tbelagod@arm.com>
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.
29471 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29472 Tejas Belagod <tbelagod@arm.com>
29474 * doc/sourcebuild.texi: Document arm_pacbti_hw.
29476 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29477 Tejas Belagod <tbelagod@arm.com>
29478 Richard Earnshaw <Richard.Earnshaw@arm.com>
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.
29485 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29486 Tejas Belagod <tbelagod@arm.com>
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.
29492 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
29493 Tejas Belagod <tbelagod@arm.com>
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
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
29512 * config/aarch64/aarch64.opt: Include aarch-common.h to import
29513 type move. Fix up name changes from factoring out common code and
29515 * config/arm/aarch-common-protos.h: Export factored out routines to both
29517 * config/arm/aarch-common.cc: Include newly factored out types.
29518 Move all mbranch-protection code and data structures from
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.
29529 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
29531 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
29533 2023-01-23 Richard Biener <rguenther@suse.de>
29535 PR tree-optimization/108449
29536 * cgraphunit.cc (check_global_declaration): Do not turn
29537 undefined statics into externs.
29539 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
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
29546 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
29548 * config/v850/v850.cc (v850_select_section): Put const volatile
29549 objects into read-only sections.
29551 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
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".
29557 2023-01-20 Jakub Jelinek <jakub@redhat.com>
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.
29564 2023-01-19 Jakub Jelinek <jakub@redhat.com>
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}
29570 * selftest.h (relation_tests): Declare.
29571 * function-tests.cc (test_ranges): Call it.
29573 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
29576 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
29577 invalid third argument to __builtin_ia32_prefetch.
29579 2023-01-19 Jakub Jelinek <jakub@redhat.com>
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.
29585 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
29588 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
29589 comment. Move assert about alignment a bit later.
29591 2023-01-19 Jakub Jelinek <jakub@redhat.com>
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
29605 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
29607 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
29608 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
29610 (aarch64_simd_vec_copy_lane<mode>): Likewise.
29611 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
29613 2023-01-19 Alexandre Oliva <oliva@adacore.com>
29616 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
29617 within debug insns.
29619 2023-01-18 Martin Jambor <mjambor@suse.cz>
29622 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
29623 lcone_of chain also do not need the body.
29625 2023-01-18 Richard Biener <rguenther@suse.de>
29628 2022-12-16 Richard Biener <rguenther@suse.de>
29630 PR middle-end/108086
29631 * tree-inline.cc (remap_ssa_name): Do not unshare the
29632 result from the decl_map.
29634 2023-01-18 Murray Steele <murray.steele@arm.com>
29637 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
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.
29655 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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
29663 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
29664 Andrew Pinski <apinski@marvell.com>
29667 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
29668 vec_vsubcuqP with vec_vsubcuq.
29670 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
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.
29676 2023-01-18 liuhongt <hongtao.liu@intel.com>
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.
29685 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
29687 * config/bpf/bpf.cc (bpf_option_override): Disable
29690 2023-01-17 Jakub Jelinek <jakub@redhat.com>
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.
29698 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
29701 * config/i386/i386.cc (x86_output_mi_thunk): Disable
29702 -mforce-indirect-call for PIC in 32-bit mode.
29704 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
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.
29715 2023-01-16 Jan Hubicka <jh@suse.cz>
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.
29726 2023-01-16 Richard Biener <rguenther@suse.de>
29729 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
29731 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
29735 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
29736 (__ARM_mve_coerce3): Likewise.
29738 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29740 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
29742 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
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.
29749 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29751 * doc/sourcebuild.texi: Add missing target attributes.
29753 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
29755 PR tree-optimization/94793
29756 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
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.
29762 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
29764 * doc/extend.texi (Common Function Attributes): Fix grammar.
29766 2023-01-16 Jakub Jelinek <jakub@redhat.com>
29769 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
29770 * config/riscv/riscv-vsetvl.cc: Likewise.
29772 2023-01-16 Jakub Jelinek <jakub@redhat.com>
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):
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.
29786 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
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.
29793 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
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.
29800 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
29802 * config.gcc (csky-*-*): Support --with-float=softfp.
29804 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
29817 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
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.
29823 2023-01-14 Alexandre Oliva <oliva@adacore.com>
29825 * hash-table.h (is_deleted): Precheck !is_empty.
29826 (mark_deleted): Postcheck !is_empty.
29827 (copy constructor): Test is_empty before is_deleted.
29829 2023-01-14 Alexandre Oliva <oliva@adacore.com>
29832 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
29835 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
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.
29841 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
29843 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
29844 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
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
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.
29858 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
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.
29865 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
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.
29872 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
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.
29881 2023-01-13 Richard Biener <rguenther@suse.de>
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.
29888 2023-01-13 Richard Biener <rguenther@suse.de>
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):
29895 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
29898 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
29900 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
29902 (TARGET_DWARF_FRAME_REG_MODE): Define.
29904 2023-01-13 Richard Biener <rguenther@suse.de>
29907 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
29908 update EH info on the fly.
29910 2023-01-13 Richard Biener <rguenther@suse.de>
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.
29916 2023-01-12 Andrew Pinski <apinski@marvell.com>
29917 Roger Sayle <roger@nextmovesoftware.com>
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.
29924 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
29925 Richard Sandiford <richard.sandiford@arm.com>
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
29935 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
29936 Richard Sandiford <richard.sandiford@arm.com>
29938 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
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.
29947 2023-01-12 Richard Biener <rguenther@suse.de>
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.
29956 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
29958 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
29959 Rearrange the emitting codes.
29961 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
29968 2023-01-12 Alexandre Oliva <oliva@adacore.com>
29970 * hash-table.h (expand): Check elements and deleted counts.
29971 (verify): Likewise.
29973 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
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).
29980 2023-01-11 David Faust <david.faust@oracle.com>
29983 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
29984 floating point modes.
29986 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
29988 PR tree-optimization/108199
29989 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
29990 for bit-field references.
29992 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
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.
29999 2023-01-11 Richard Biener <rguenther@suse.de>
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.
30008 2023-01-11 Martin Liska <mliska@suse.cz>
30010 PR middle-end/107976
30011 * params.opt: Limit JT params.
30012 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
30014 2023-01-11 Richard Biener <rguenther@suse.de>
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
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.
30026 2023-01-11 Richard Biener <rguenther@suse.de>
30028 PR tree-optimization/108353
30029 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
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.
30037 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
30039 * config/s390/s390.md (*not<mode>): New pattern.
30041 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
30047 2023-01-10 Richard Biener <rguenther@suse.de>
30049 PR tree-optimization/106293
30050 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
30051 process degenerate PHI defs.
30053 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
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.
30059 2023-01-10 Martin Jambor <mjambor@suse.cz>
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
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
30076 (ipa_param_body_adjustments::lookup_first_base_replacement): New
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.
30083 2023-01-10 Richard Biener <rguenther@suse.de>
30085 PR tree-optimization/108314
30086 * tree-vect-stmts.cc (vectorizable_condition): Do not
30087 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
30089 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30091 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
30093 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30095 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
30097 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30099 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
30100 defines for soft float abi.
30102 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
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.
30112 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
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.
30118 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
30120 * config/s390/s390.cc (s390_register_info): Check call_used_regs
30121 instead of hard-coding the register numbers for call saved
30123 (s390_optimize_register_info): Likewise.
30125 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
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.
30131 2023-01-09 Richard Biener <rguenther@suse.de>
30133 PR middle-end/108209
30134 * genmatch.cc (commutative_op): Fix return value for
30135 user-id with non-commutative first replacement.
30137 2023-01-09 Jakub Jelinek <jakub@redhat.com>
30140 * calls.cc (expand_call): For calls with
30141 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
30144 2023-01-09 Richard Biener <rguenther@suse.de>
30146 PR middle-end/69482
30147 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
30148 qualified accesses also force objects to memory.
30150 2023-01-09 Martin Liska <mliska@suse.cz>
30153 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
30154 NULL (deleleted value) to a hash_set.
30156 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
30158 * config/xtensa/xtensa.md (*splice_bits):
30159 New insn_and_split pattern.
30161 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
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.
30172 2023-01-07 LIU Hao <lh_mouse@126.com>
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.
30181 2023-01-06 Joseph Myers <joseph@codesourcery.com>
30183 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
30184 for handling real integer types.
30186 2023-01-06 Tamar Christina <tamar.christina@arm.com>
30189 2022-12-12 Tamar Christina <tamar.christina@arm.com>
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):
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.
30206 2023-01-06 Martin Liska <mliska@suse.cz>
30208 PR middle-end/107966
30209 * doc/options.texi: Fix Var documentation in internal manual.
30211 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
30214 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
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.
30220 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
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.
30227 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
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.
30234 2023-01-04 Jakub Jelinek <jakub@redhat.com>
30236 PR tree-optimization/108253
30237 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
30240 2023-01-04 Jakub Jelinek <jakub@redhat.com>
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.
30248 2023-01-04 Jakub Jelinek <jakub@redhat.com>
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
30254 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
30256 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
30258 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
30259 * common/config/i386/i386-common.cc: Add Emeraldrapids.
30261 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
30263 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
30266 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
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
30275 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
30276 gc_candidate bit when a clone is used.
30278 2023-01-03 Florian Weimer <fweimer@redhat.com>
30281 2023-01-02 Florian Weimer <fweimer@redhat.com>
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
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.
30297 2023-01-03 Florian Weimer <fweimer@redhat.com>
30300 2023-01-02 Florian Weimer <fweimer@redhat.com>
30302 * debug.h (dwarf_reg_sizes_constant): Declare.
30303 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
30305 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
30307 PR tree-optimization/105043
30308 * doc/extend.texi (Object Size Checking): Split out into two
30309 subsections and mention _FORTIFY_SOURCE.
30311 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
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.
30317 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
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.
30324 2023-01-03 Jakub Jelinek <jakub@redhat.com>
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
30331 2023-01-03 Jakub Jelinek <jakub@redhat.com>
30333 PR rtl-optimization/108263
30334 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
30337 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
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.
30369 2023-01-02 Florian Weimer <fweimer@redhat.com>
30371 * debug.h (dwarf_reg_sizes_constant): Declare.
30372 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
30374 2023-01-02 Florian Weimer <fweimer@redhat.com>
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
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.
30390 2023-01-02 Jakub Jelinek <jakub@redhat.com>
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.
30405 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
30406 Uroš Bizjak <ubizjak@gmail.com>
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.
30416 Copyright (C) 2023 Free Software Foundation, Inc.
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.