1 2023-05-27 liuhongt <hongtao.liu@intel.com>
4 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
5 to VI_AVX2 to cover more modes.
7 2023-05-27 liuhongt <hongtao.liu@intel.com>
9 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
10 Remove ATOM and ICELAKE(and later) core processors.
12 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
14 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
16 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
18 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
21 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
22 Juzhe Zhong <juzhe.zhong@rivai.ai>
24 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
26 (<optab><v_quad_trunc><mode>2): Dito.
27 (<optab><v_oct_trunc><mode>2): Dito.
28 (trunc<mode><v_double_trunc>2): Dito.
29 (trunc<mode><v_quad_trunc>2): Dito.
30 (trunc<mode><v_oct_trunc>2): Dito.
31 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
32 (autovectorize_vector_modes): Define.
33 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
35 (autovectorize_vector_modes): Implement hook.
36 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
37 Implement target hook.
38 (riscv_vectorize_related_mode): Implement target hook.
39 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
40 (TARGET_VECTORIZE_RELATED_MODE): Define.
41 * config/riscv/vector-iterators.md: Add lowercase versions of
44 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
45 Tobias Burnus <tobias@codesourcery.com>
47 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
48 (ASM_SPEC): Use XNACKOPT.
49 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
50 (enum hsaco_attr_type): ... this, and generalize the names.
51 (TARGET_XNACK): New macro.
52 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
54 (output_file_start): Update xnack handling.
55 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
56 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
57 (sram_ecc_type): Rename to ...
58 (hsaco_attr_type: ... this.)
59 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
61 (TEST_XNACK_ANY): New macro.
62 (TEST_XNACK_ON): New macro.
63 (main): Support the new -mxnack=on/off/any syntax.
64 * doc/invoke.texi (-mxnack): Update for new syntax.
66 2023-05-26 Andrew Pinski <apinski@marvell.com>
68 * genmatch.cc (emit_debug_printf): New function.
69 (dt_simplify::gen_1): Emit printf into the code
70 before the `return true` or returning the folded result
71 instead of emitting it always.
73 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
75 * config/xtensa/xtensa-protos.h
76 (xtensa_expand_block_set_unrolled_loop,
77 xtensa_expand_block_set_small_loop): Remove.
78 (xtensa_expand_block_set): New prototype.
79 * config/xtensa/xtensa.cc
80 (xtensa_expand_block_set_libcall): New subfunction.
81 (xtensa_expand_block_set_unrolled_loop,
82 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
83 (xtensa_expand_block_set): New function that calls the above
85 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
86 xtensa_expand_block_set().
88 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
90 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
92 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
94 * config/xtensa/constraints.md (O):
95 Change to use the above function.
96 * config/xtensa/xtensa.md (*subsi3_from_const):
97 New insn_and_split pattern.
99 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
101 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
102 Retract excessive line folding, and correct the value of
103 the "length" insn attribute related to TARGET_DENSITY.
104 (*extzvsi-1bit_addsubx): Ditto.
106 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
108 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
109 Do not disable call to ix86_expand_vecop_qihi2.
111 2023-05-26 liuhongt <hongtao.liu@intel.com>
115 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
116 calculation when !hard_regno_mode_ok for GENERAL_REGS and
117 mode, otherwise still use GENERAL_REGS.
119 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
121 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
122 explict VL and drop VL in ops.
124 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
126 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
127 in different BB blocks.
129 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
131 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
132 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
133 instructions when available. Emulate truncation via
134 ix86_expand_vec_perm_const_1 when native truncate insn
136 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
137 when available. Trivially rename some variables.
138 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
139 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
140 calculation of V*QImode emulations to account for generation of
141 2x-wider mode instructions.
142 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
143 emulations to account for generation of 2x-wider mode instructions.
145 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
148 * config/avr/avr.cc (avr_can_inline_p): New static function.
149 (TARGET_CAN_INLINE_P): Define to that function.
151 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
154 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
155 Handle any bit position and use mode QISI.
156 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
157 of 2 insns for bit-transfer of respective style.
159 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
161 * config/arm/iterators.md (MVE_6): Remove.
162 * config/arm/mve.md: Replace MVE_6 with MVE_5.
164 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
165 Richard Sandiford <richard.sandiford@arm.com>
167 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
169 (vect_set_loop_controls_directly): Add decrement IV support.
170 (vect_set_loop_condition_partial_vectors): Ditto.
171 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
173 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
176 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
179 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
180 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
181 Fix canonicalization of PLUS operands.
182 (aarch64_fcmla<rot><mode>): Rename to...
183 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
184 Fix canonicalization of PLUS operands.
185 (aarch64_fcmla_lane<rot><mode>): Rename to...
186 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
187 Fix canonicalization of PLUS operands.
188 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
189 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
190 Fix canonicalization of PLUS operands.
191 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
193 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
195 * config/arm/arm.md (rbitsi2): Rename to...
196 (arm_rbit): ... This.
197 (ctzsi2): Adjust for the above.
198 (arm_rev16si2): Convert to define_expand.
199 (arm_rev16si2_alt1): New pattern.
200 (arm_rev16si2_alt): Rename to...
201 (*arm_rev16si2_alt2): ... This.
202 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
203 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
204 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
205 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
207 2023-05-25 Alex Coplan <alex.coplan@arm.com>
210 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
212 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
213 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
216 2023-05-25 Richard Biener <rguenther@suse.de>
219 * tree-vect-stmts.cc (vectorizable_condition): For
220 embedded comparisons also handle the case when the target
221 only provides vec_cmp and vcond_mask.
223 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
225 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
228 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
230 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
231 (seq_cost_ignoring_scalar_moves): Likewise.
232 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
234 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
236 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
237 (vcage_f32): Likewise.
238 (vcages_f32): Likewise.
239 (vcageq_f32): Likewise.
240 (vcaged_f64): Likewise.
241 (vcageq_f64): Likewise.
242 (vcagts_f32): Likewise.
243 (vcagt_f32): Likewise.
244 (vcagt_f64): Likewise.
245 (vcagtq_f32): Likewise.
246 (vcagtd_f64): Likewise.
247 (vcagtq_f64): Likewise.
248 (vcale_f32): Likewise.
249 (vcale_f64): Likewise.
250 (vcaled_f64): Likewise.
251 (vcales_f32): Likewise.
252 (vcaleq_f32): Likewise.
253 (vcaleq_f64): Likewise.
254 (vcalt_f32): Likewise.
255 (vcalt_f64): Likewise.
256 (vcaltd_f64): Likewise.
257 (vcaltq_f32): Likewise.
258 (vcaltq_f64): Likewise.
259 (vcalts_f32): Likewise.
261 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
265 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
266 int to const int or const int to const unsigned int.
267 (_mm512_mask_srli_epi16): Ditto.
268 (_mm512_slli_epi16): Ditto.
269 (_mm512_mask_slli_epi16): Ditto.
270 (_mm512_maskz_slli_epi16): Ditto.
271 (_mm512_srai_epi16): Ditto.
272 (_mm512_mask_srai_epi16): Ditto.
273 (_mm512_maskz_srai_epi16): Ditto.
274 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
275 (_mm512_mask_slli_epi64): Ditto.
276 (_mm512_maskz_slli_epi64): Ditto.
277 (_mm512_srli_epi64): Ditto.
278 (_mm512_mask_srli_epi64): Ditto.
279 (_mm512_maskz_srli_epi64): Ditto.
280 (_mm512_srai_epi64): Ditto.
281 (_mm512_mask_srai_epi64): Ditto.
282 (_mm512_maskz_srai_epi64): Ditto.
283 (_mm512_slli_epi32): Ditto.
284 (_mm512_mask_slli_epi32): Ditto.
285 (_mm512_maskz_slli_epi32): Ditto.
286 (_mm512_srli_epi32): Ditto.
287 (_mm512_mask_srli_epi32): Ditto.
288 (_mm512_maskz_srli_epi32): Ditto.
289 (_mm512_srai_epi32): Ditto.
290 (_mm512_mask_srai_epi32): Ditto.
291 (_mm512_maskz_srai_epi32): Ditto.
292 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
293 (_mm256_maskz_srai_epi16): Ditto.
294 (_mm_mask_srai_epi16): Ditto.
295 (_mm_maskz_srai_epi16): Ditto.
296 (_mm256_mask_slli_epi16): Ditto.
297 (_mm256_maskz_slli_epi16): Ditto.
298 (_mm_mask_slli_epi16): Ditto.
299 (_mm_maskz_slli_epi16): Ditto.
300 (_mm_maskz_srli_epi16): Ditto.
301 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
302 (_mm256_maskz_srli_epi32): Ditto.
303 (_mm_mask_srli_epi32): Ditto.
304 (_mm_maskz_srli_epi32): Ditto.
305 (_mm256_mask_srli_epi64): Ditto.
306 (_mm256_maskz_srli_epi64): Ditto.
307 (_mm_mask_srli_epi64): Ditto.
308 (_mm_maskz_srli_epi64): Ditto.
309 (_mm256_mask_srai_epi32): Ditto.
310 (_mm256_maskz_srai_epi32): Ditto.
311 (_mm_mask_srai_epi32): Ditto.
312 (_mm_maskz_srai_epi32): Ditto.
313 (_mm256_srai_epi64): Ditto.
314 (_mm256_mask_srai_epi64): Ditto.
315 (_mm256_maskz_srai_epi64): Ditto.
316 (_mm_srai_epi64): Ditto.
317 (_mm_mask_srai_epi64): Ditto.
318 (_mm_maskz_srai_epi64): Ditto.
319 (_mm_mask_slli_epi32): Ditto.
320 (_mm_maskz_slli_epi32): Ditto.
321 (_mm_mask_slli_epi64): Ditto.
322 (_mm_maskz_slli_epi64): Ditto.
323 (_mm256_mask_slli_epi32): Ditto.
324 (_mm256_maskz_slli_epi32): Ditto.
325 (_mm256_mask_slli_epi64): Ditto.
326 (_mm256_maskz_slli_epi64): Ditto.
328 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
330 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
333 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
335 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
336 * data-streamer-out.cc (streamer_write_vrange): Same.
337 * value-range.h (class vrange): Make streamer_write_vrange a friend.
339 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
341 * value-query.cc (range_query::get_tree_range): Set NAN directly
343 * value-range.cc (frange::set): Assert that bounds are not NAN.
345 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
347 * value-range.cc (add_vrange): Handle known NANs.
349 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
351 * value-range.h (frange::set_nan): New.
353 2023-05-25 Alexandre Oliva <oliva@adacore.com>
356 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
357 requires stricter alignment than MEM's.
359 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
361 PR tree-optimization/107822
362 PR tree-optimization/107986
363 * Makefile.in (OBJS): Add gimple-range-phi.o.
364 * gimple-range-cache.h (ranger_cache::m_estimate): New
365 phi_analyzer pointer member.
366 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
367 phi_analyzer if no loop info is available.
368 * gimple-range-phi.cc: New file.
369 * gimple-range-phi.h: New file.
370 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
372 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
374 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
376 (fold_range): Add range_query parameter.
377 (fur_relation::fur_relation): New.
378 (fur_relation::trio): New.
379 (fur_relation::register_relation): New.
380 (fold_relations): New.
381 * gimple-range-fold.h (fold_range): Adjust prototypes.
382 (fold_relations): New.
384 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
386 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
387 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
388 (ranger_cache::const_query): New.
389 * gimple-range.cc (gimple_ranger::const_query): New.
390 * gimple-range.h (gimple_ranger::const_query): New prototype.
392 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
394 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
395 (ssa_cache::dump_range_query): Delete.
396 (ssa_lazy_cache::dump_range_query): Delete.
397 (ssa_lazy_cache::get_range): Move from header file.
398 (ssa_lazy_cache::clear_range): ditto.
399 (ssa_lazy_cache::clear): Ditto.
400 * gimple-range-cache.h (class ssa_cache): Virtualize.
401 (class ssa_lazy_cache): Inherit and virtualize.
403 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
405 * value-range.h (vrange::kind): Remove.
407 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
410 * match.pd <popcount optimizations>: Preserve zero-extension when
411 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
412 popcount((T)x), so the popcount's argument keeps the same type.
413 <parity optimizations>: Likewise preserve extensions when
414 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
415 parity((T)x), so that the parity's argument type is the same.
417 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
419 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
420 (ipcp_store_vr_results): Same.
421 * ipa-prop.cc (ipa_vr::ipa_vr): New.
422 (ipa_vr::get_vrange): New.
423 (ipa_vr::set_unknown): New.
424 (ipa_vr::streamer_read): New.
425 (ipa_vr::streamer_write): New.
426 (write_ipcp_transformation_info): Use new ipa_vr API.
427 (read_ipcp_transformation_info): Same.
428 (ipa_vr::nonzero_p): Delete.
429 (ipcp_update_vr): Use new ipa_vr API.
430 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
431 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
433 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
435 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
436 silence overflow warnings later on.
438 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
440 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
441 Remove handling of V8QImode.
442 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
443 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
444 (v<insn>v4qi3): Ditto.
445 * config/i386/sse.md (v<insn>v8qi3): Remove.
447 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
450 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
451 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
452 (aarch64_simd_ashr<mode>): Rename to...
453 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
454 (aarch64_simd_imm_shl<mode>): Rename to...
455 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
456 (aarch64_simd_reg_sshl<mode>): Rename to...
457 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
458 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
459 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
460 (aarch64_simd_reg_shl<mode>_signed): Rename to...
461 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
462 (vec_shr_<mode>): Rename to...
463 (vec_shr_<mode><vczle><vczbe>): ... This.
464 (aarch64_<sur>shl<mode>): Rename to...
465 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
466 (aarch64_<sur>q<r>shl<mode>): Rename to...
467 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
469 2023-05-24 Richard Biener <rguenther@suse.de>
472 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
473 Perform final vector composition using
474 ix86_expand_vector_init_general instead of setting
475 the highpart and lowpart which causes spilling.
477 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
479 PR tree-optimization/109695
480 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
482 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
483 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
484 flag to set_global_range.
485 (gimple_ranger::prefill_stmt_dependencies): Ditto.
487 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
489 PR tree-optimization/109695
490 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
492 (temporal_cache::current_p): Check always_current method.
493 (temporal_cache::set_always_current): Add param and set value
495 (temporal_cache::always_current_p): New.
496 (ranger_cache::get_global_range): Adjust.
497 (ranger_cache::set_global_range): set always current first.
499 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
501 PR tree-optimization/109695
502 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
503 fold_range with global query to choose an initial value.
505 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
507 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
510 2023-05-24 Richard Biener <rguenther@suse.de>
512 PR tree-optimization/109849
513 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
514 expressions but take the first sets.
516 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
519 * doc/gm2.texi (High procedure function): New node.
520 (Using): New menu entry for High procedure function.
522 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
524 PR rtl-optimization/109940
525 * early-remat.cc (postorder_index): Rename to...
526 (rpo_index): ...this.
527 (compare_candidates): Sort by decreasing rpo_index rather than
528 increasing postorder_index.
529 (early_remat::sort_candidates): Calculate the forward RPO from
531 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
532 rather than DF_BACKWARD in reverse.
534 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
537 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
538 qualifier_none for the return operand.
540 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
542 * config/riscv/autovec.md (<optab><mode>3): New pattern.
543 (one_cmpl<mode>2): Ditto.
544 (*<optab>not<mode>): Ditto.
545 (*n<optab><mode>): Ditto.
546 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
549 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
551 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
552 calculation on n_perms by considering nvectors_per_build.
554 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
555 Richard Sandiford <richard.sandiford@arm.com>
557 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
558 (vec_cmp<mode><vm>): New pattern.
559 (vec_cmpu<mode><vm>): New pattern.
560 (vcond<V:mode><VI:mode>): New pattern.
561 (vcondu<V:mode><VI:mode>): New pattern.
562 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
563 (emit_vlmax_merge_insn): New function.
564 (emit_vlmax_cmp_insn): Ditto.
565 (emit_vlmax_cmp_mu_insn): Ditto.
566 (expand_vec_cmp): Ditto.
567 (expand_vec_cmp_float): Ditto.
568 (expand_vcond): Ditto.
569 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
570 (emit_vlmax_cmp_insn): Ditto.
571 (emit_vlmax_cmp_mu_insn): Ditto.
572 (get_cmp_insn_code): Ditto.
573 (expand_vec_cmp): Ditto.
574 (expand_vec_cmp_float): Ditto.
575 (expand_vcond): Ditto.
577 2023-05-24 Pan Li <pan2.li@intel.com>
579 * config/riscv/genrvv-type-indexer.cc (main): Add
580 unsigned_eew*_lmul1_interpret for indexer.
581 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
582 Register vuint*m1_t interpret function.
583 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
584 New macro for vuint8m1_t.
585 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
586 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
587 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
588 (vbool1_t): Add to unsigned_eew*_interpret_ops.
589 (vbool2_t): Likewise.
590 (vbool4_t): Likewise.
591 (vbool8_t): Likewise.
592 (vbool16_t): Likewise.
593 (vbool32_t): Likewise.
594 (vbool64_t): Likewise.
595 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
596 New macro for vuint*m1_t.
597 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
598 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
599 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
600 (required_extensions_p): Add vuint*m1_t interpret case.
601 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
602 Add vuint*m1_t interpret to base type.
603 (unsigned_eew16_lmul1_interpret): Likewise.
604 (unsigned_eew32_lmul1_interpret): Likewise.
605 (unsigned_eew64_lmul1_interpret): Likewise.
607 2023-05-24 Pan Li <pan2.li@intel.com>
609 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
610 for the eew size list.
611 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
612 (main): Add signed_eew*_lmul1_interpret for indexer.
613 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
614 Register vint*m1_t interpret function.
615 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
616 New macro for vint8m1_t.
617 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
618 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
619 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
620 (vbool1_t): Add to signed_eew*_interpret_ops.
621 (vbool2_t): Likewise.
622 (vbool4_t): Likewise.
623 (vbool8_t): Likewise.
624 (vbool16_t): Likewise.
625 (vbool32_t): Likewise.
626 (vbool64_t): Likewise.
627 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
628 New macro for vint*m1_t.
629 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
630 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
631 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
632 (required_extensions_p): Add vint8m1_t interpret case.
633 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
634 Add vint*m1_t interpret to base type.
635 (signed_eew16_lmul1_interpret): Likewise.
636 (signed_eew32_lmul1_interpret): Likewise.
637 (signed_eew64_lmul1_interpret): Likewise.
639 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
641 * config/riscv/autovec.md: Adjust for new interface.
642 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
643 (emit_nonvlmax_insn): Add AVL operand.
644 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
645 (emit_nonvlmax_insn): Add AVL operand.
646 (sew64_scalar_helper): Adjust for new interface.
647 (expand_tuple_move): Ditto.
648 * config/riscv/vector.md: Ditto.
650 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
652 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
653 (expand_const_vector): Ditto.
654 (legitimize_move): Ditto.
655 (sew64_scalar_helper): Ditto.
656 (expand_tuple_move): Ditto.
657 (expand_vector_init_insert_elems): Ditto.
658 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
660 2023-05-24 liuhongt <hongtao.liu@intel.com>
663 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
664 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
665 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
666 (ix86_masked_all_ones): Handle 64-bit mask.
667 * config/i386/i386-builtin.def: Replace icode of related
668 non-mask simd abs builtins with CODE_FOR_nothing.
670 2023-05-23 Martin Uecker <uecker@tugraz.at>
673 * function.cc (gimplify_parm_type): Remove function.
674 (gimplify_parameters): Call gimplify_type_sizes.
676 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
678 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
679 and change to also accept '*subx' pattern.
682 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
684 * config/xtensa/predicates.md (addsub_operator): New.
685 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
686 *extzvsi-1bit_addsubx): New insn_and_split patterns.
687 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
688 Add a special case about ifcvt 'noce_try_cmove()' to handle
689 constant loads that do not fit into signed 12 bits in the
690 patterns added above.
692 2023-05-23 Richard Biener <rguenther@suse.de>
694 PR tree-optimization/109747
695 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
696 the SLP node only once to the cost hook.
698 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
700 * config/avr/avr.cc (avr_insn_cost): New static function.
701 (TARGET_INSN_COST): Define to that function.
703 2023-05-23 Richard Biener <rguenther@suse.de>
706 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
707 For vector construction or splats apply GPR->XMM move
708 costing. QImode memory can be handled directly only
711 2023-05-23 Richard Biener <rguenther@suse.de>
713 PR tree-optimization/108752
714 * tree-vect-stmts.cc (vectorizable_operation): For bit
715 operations with generic word_mode vectors do not cost
716 an extra stmt. For plus, minus and negate also cost the
717 constant materialization.
719 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
721 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
722 Call ix86_expand_vec_shift_qihi_constant for shifts
723 with constant count operand.
724 * config/i386/i386.cc (ix86_shift_rotate_cost):
725 Handle V4QImode and V8QImode.
726 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
727 (<insn>v4qi3): Ditto.
729 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
731 * config/riscv/vector.md: Add mode.
733 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
735 PR tree-optimization/109934
736 * value-range.cc (irange::invert): Remove buggy special case.
738 2023-05-23 Richard Biener <rguenther@suse.de>
740 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
743 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
746 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
747 subregs between any scalars that are 64 bits or smaller.
748 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
749 (bits_etype): New int attribute.
750 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
751 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
752 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
754 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
756 * doc/md.texi: Document that <FOO> can be used to refer to the
757 numerical value of an int iterator FOO. Tweak other parts of
758 the int iterator documentation.
759 * read-rtl.cc (iterator_group::has_self_attr): New field.
760 (map_attr_string): When has_self_attr is true, make <FOO>
761 expand to the current value of iterator FOO.
762 (initialize_iterators): Set has_self_attr for int iterators.
764 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
766 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
767 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
768 (RVV_UNOP_NUM): New macro.
769 (RVV_BINOP_NUM): Ditto.
770 (legitimize_move): Refactor the framework of RVV auto-vectorization.
771 (emit_vlmax_op): Ditto.
772 (emit_vlmax_reg_op): Ditto.
773 (emit_len_op): Ditto.
774 (emit_len_binop): Ditto.
775 (emit_vlmax_tany_many): Ditto.
776 (emit_nonvlmax_tany_many): Ditto.
777 (sew64_scalar_helper): Ditto.
778 (expand_tuple_move): Ditto.
779 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
780 (emit_pred_binop): Ditto.
781 (emit_vlmax_op): Ditto.
782 (emit_vlmax_tany_many): New function.
783 (emit_len_op): Remove.
784 (emit_nonvlmax_tany_many): New function.
785 (emit_vlmax_reg_op): Remove.
786 (emit_len_binop): Ditto.
787 (emit_index_op): Ditto.
788 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
789 (expand_const_vector): Ditto.
790 (legitimize_move): Ditto.
791 (sew64_scalar_helper): Ditto.
792 (expand_tuple_move): Ditto.
793 (expand_vector_init_insert_elems): Ditto.
794 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
795 * config/riscv/vector.md: Ditto.
797 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
800 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
801 and constraint for operand 0.
802 (add_vec_concat_subst_be): Likewise.
804 2023-05-23 Richard Biener <rguenther@suse.de>
806 PR tree-optimization/109849
807 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
808 and use that to determine what to hoist.
810 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
812 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
813 specific treatment for bit-fields only if they have an integral type
814 and filter out non-integral bit-fields that do not start and end on
817 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
819 PR tree-optimization/109920
820 * value-range.h (RESIZABLE>::~int_range): Use delete[].
822 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
824 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
825 calcuation of integer vector mode costs to reflect generated
826 instruction sequences of different integer vector modes and
827 different target ABIs. Remove "speed" function argument.
828 (ix86_rtx_costs): Update call for removed function argument.
829 (ix86_vector_costs::add_stmt_cost): Ditto.
831 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
833 * value-range.h (class Value_Range): Implement set_zero,
834 set_nonzero, and nonzero_p.
836 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
838 * config/i386/i386.cc (ix86_multiplication_cost): Add
839 the cost of a memory read to the cost of V?QImode sequences.
841 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
843 * config/riscv/riscv-v.cc: Add "m_" prefix.
845 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
847 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
848 multiple-rgroup of length.
849 * tree-vect-stmts.cc (vectorizable_store): Ditto.
850 (vectorizable_load): Ditto.
851 * tree-vectorizer.h (vect_get_loop_len): Ditto.
853 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
855 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
858 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
860 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
861 handling for the case index == count.
863 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
866 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
867 Don't fold to XOR / AND / XOR if just one bit is copied to the
870 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
872 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
873 builtin for bit reversal using brev instruction.
874 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
875 NVPTX_BUILTIN_BREVLL.
876 (nvptx_init_builtins): Define "brev" and "brevll".
877 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
878 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
879 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
880 section, document __builtin_nvptx_brev{,ll}.
882 2023-05-21 Jakub Jelinek <jakub@redhat.com>
884 PR tree-optimization/109505
885 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
886 Combine successive equal operations with constants,
887 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
888 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
891 2023-05-21 Andrew Pinski <apinski@marvell.com>
893 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
895 2023-05-21 Pan Li <pan2.li@intel.com>
897 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
898 rest bool size, aka 2, 4, 8, 16, 32, 64.
899 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
900 Register vbool[2|4|8|16|32|64] interpret function.
901 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
902 New macro for vbool2_t.
903 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
904 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
905 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
906 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
907 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
908 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
909 (vint16m1_t): Likewise.
910 (vint32m1_t): Likewise.
911 (vint64m1_t): Likewise.
912 (vuint8m1_t): Likewise.
913 (vuint16m1_t): Likewise.
914 (vuint32m1_t): Likewise.
915 (vuint64m1_t): Likewise.
916 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
917 New macro for vbool2_t.
918 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
919 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
920 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
921 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
922 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
923 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
924 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
925 vbool2_t interprect to base type.
926 (bool4_interpret): Likewise.
927 (bool8_interpret): Likewise.
928 (bool16_interpret): Likewise.
929 (bool32_interpret): Likewise.
930 (bool64_interpret): Likewise.
932 2023-05-21 Andrew Pinski <apinski@marvell.com>
935 * expr.cc (expand_single_bit_test): Don't use the
936 target for expand_expr.
938 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
940 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
943 2023-05-20 Pan Li <pan2.li@intel.com>
945 * mode-switching.cc (entity_map): Initialize the array to zero.
948 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
951 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
952 Remove superfluous "parallel" in insn pattern.
953 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
954 printing error text to assembly.
956 2023-05-20 Andrew Pinski <apinski@marvell.com>
958 * expr.cc (fold_single_bit_test): Rename to ...
959 (expand_single_bit_test): This and expand directly.
960 (do_store_flag): Update for the rename function.
962 2023-05-20 Andrew Pinski <apinski@marvell.com>
964 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
965 instead of shift/and.
967 2023-05-20 Andrew Pinski <apinski@marvell.com>
969 * expr.cc (fold_single_bit_test): Add an assert
970 and simplify based on code being NE_EXPR or EQ_EXPR.
972 2023-05-20 Andrew Pinski <apinski@marvell.com>
974 * expr.cc (fold_single_bit_test): Take inner and bitnum
975 instead of arg0 and arg1. Update the code.
976 (do_store_flag): Don't create a tree when calling
977 fold_single_bit_test instead just call it with the bitnum
980 2023-05-20 Andrew Pinski <apinski@marvell.com>
982 * expr.cc (fold_single_bit_test): Use get_def_for_expr
983 instead of checking the inner's code.
985 2023-05-20 Andrew Pinski <apinski@marvell.com>
987 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
988 (fold_single_bit_test): This and simplify.
990 2023-05-20 Andrew Pinski <apinski@marvell.com>
992 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
994 (fold_single_bit_test): Likewise.
995 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
996 (fold_single_bit_test): Likewise and make static.
997 * fold-const.h (fold_single_bit_test): Remove declaration.
999 2023-05-20 Die Li <lidie@eswincomputing.com>
1001 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
1004 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
1006 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
1008 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
1011 * config/riscv/bitmanip.md
1012 (<bitmanip_optab>disi2): Match with any_extend.
1013 (<bitmanip_optab>disi2_sext): New pattern to match
1014 with sign extend using an ANDI instruction.
1016 2023-05-19 Nathan Sidwell <nathan@acm.org>
1019 * opts.h (handle_deferred_dump_options): Declare.
1020 * opts-global.cc (handle_common_deferred_options): Do not handle
1022 (handle_deferred_dump_options): New.
1023 * toplev.cc (toplev::main): Call it after plugin init.
1025 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
1027 * config/riscv/constraints.md (DsS, DsD): Restore agreement
1028 with shiftm1 mode attribute.
1030 2023-05-19 Andrew Pinski <apinski@marvell.com>
1033 * gcc.cc (default_compilers["@c-header"]): Add %w
1034 after the --output-pch.
1036 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
1038 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
1039 to hival, ASHIFT the corresponding regs.
1041 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
1043 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
1045 2023-05-19 Jakub Jelinek <jakub@redhat.com>
1047 PR tree-optimization/105776
1048 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
1049 non-NULL, allow division statement to have a cast as single imm use
1050 rather than comparison/condition.
1051 (match_arith_overflow): In that case remove the cast stmt in addition
1052 to the division statement.
1054 2023-05-19 Jakub Jelinek <jakub@redhat.com>
1056 PR tree-optimization/101856
1057 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
1058 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
1059 support it but umul_highpart_optab does.
1061 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
1063 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
1064 of tree_to_shwi on array indices. Minor tweaks.
1066 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1068 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
1069 * attribs.cc (diag_attr_exclusions): Ditto.
1070 (decl_attributes): Ditto.
1071 (build_type_attribute_qual_variant): Ditto.
1072 * builtins.cc (fold_builtin_carg): Ditto.
1073 (fold_builtin_next_arg): Ditto.
1074 (do_mpc_arg2): Ditto.
1075 * cfgexpand.cc (expand_return): Ditto.
1076 * cgraph.h (decl_in_symtab_p): Ditto.
1077 (symtab_node::get_create): Ditto.
1078 * dwarf2out.cc (base_type_die): Ditto.
1079 (implicit_ptr_descriptor): Ditto.
1080 (gen_array_type_die): Ditto.
1081 (gen_type_die_with_usage): Ditto.
1082 (optimize_location_into_implicit_ptr): Ditto.
1083 * expr.cc (do_store_flag): Ditto.
1084 * fold-const.cc (negate_expr_p): Ditto.
1085 (fold_negate_expr_1): Ditto.
1086 (fold_convert_const): Ditto.
1087 (fold_convert_loc): Ditto.
1088 (constant_boolean_node): Ditto.
1089 (fold_binary_op_with_conditional_arg): Ditto.
1090 (build_fold_addr_expr_with_type_loc): Ditto.
1091 (fold_comparison): Ditto.
1092 (fold_checksum_tree): Ditto.
1093 (tree_unary_nonnegative_warnv_p): Ditto.
1094 (integer_valued_real_unary_p): Ditto.
1095 (fold_read_from_constant_string): Ditto.
1096 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
1097 * gimple-expr.cc (useless_type_conversion_p): Ditto.
1098 (is_gimple_reg): Ditto.
1099 (is_gimple_asm_val): Ditto.
1100 (mark_addressable): Ditto.
1101 * gimple-expr.h (is_gimple_variable): Ditto.
1102 (virtual_operand_p): Ditto.
1103 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
1104 * gimplify.cc (gimplify_bind_expr): Ditto.
1105 (gimplify_return_expr): Ditto.
1106 (gimple_add_padding_init_for_auto_var): Ditto.
1107 (gimplify_addr_expr): Ditto.
1108 (omp_add_variable): Ditto.
1109 (omp_notice_variable): Ditto.
1110 (omp_get_base_pointer): Ditto.
1111 (omp_strip_components_and_deref): Ditto.
1112 (omp_strip_indirections): Ditto.
1113 (omp_accumulate_sibling_list): Ditto.
1114 (omp_build_struct_sibling_lists): Ditto.
1115 (gimplify_adjust_omp_clauses_1): Ditto.
1116 (gimplify_adjust_omp_clauses): Ditto.
1117 (gimplify_omp_for): Ditto.
1118 (goa_lhs_expr_p): Ditto.
1119 (gimplify_one_sizepos): Ditto.
1120 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
1121 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
1122 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
1123 (propagate_controlled_uses): Ditto.
1124 * ipa-sra.cc (type_prevails_p): Ditto.
1125 (scan_expr_access): Ditto.
1126 * optabs-tree.cc (optab_for_tree_code): Ditto.
1127 * toplev.cc (wrapup_global_declaration_1): Ditto.
1128 * trans-mem.cc (transaction_invariant_address_p): Ditto.
1129 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
1130 (verify_gimple_comparison): Ditto.
1131 (verify_gimple_assign_binary): Ditto.
1132 (verify_gimple_assign_single): Ditto.
1133 * tree-complex.cc (get_component_ssa_name): Ditto.
1134 * tree-emutls.cc (lower_emutls_2): Ditto.
1135 * tree-inline.cc (copy_tree_body_r): Ditto.
1136 (estimate_move_cost): Ditto.
1137 (copy_decl_for_dup_finish): Ditto.
1138 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
1139 (note_nonlocal_vla_type): Ditto.
1140 (convert_local_omp_clauses): Ditto.
1141 (remap_vla_decls): Ditto.
1142 (fixup_vla_decls): Ditto.
1143 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
1144 * tree-pretty-print.cc (print_declaration): Ditto.
1145 (print_call_name): Ditto.
1146 * tree-sra.cc (compare_access_positions): Ditto.
1147 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
1148 * tree-ssa-ccp.cc (get_default_value): Ditto.
1149 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
1150 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
1151 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
1152 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
1153 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
1154 * tree-ssa-sink.cc (statement_sink_location): Ditto.
1155 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
1156 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
1157 * tree-ssa-uninit.cc (warn_uninit): Ditto.
1158 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
1159 (non_rewritable_mem_ref_base): Ditto.
1160 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
1161 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
1162 * tree-vect-generic.cc (do_binop): Ditto.
1164 * tree-vect-stmts.cc (vect_init_vector): Ditto.
1165 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
1166 * tree.cc (sign_mask_for): Ditto.
1167 (verify_type_variant): Ditto.
1168 (gimple_canonical_types_compatible_p): Ditto.
1169 (verify_type): Ditto.
1170 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
1171 * var-tracking.cc (prepare_call_arguments): Ditto.
1172 (vt_add_function_parameters): Ditto.
1173 * varasm.cc (decode_addr_const): Ditto.
1175 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1177 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
1178 (lower_reduction_clauses): Ditto.
1179 (lower_send_clauses): Ditto.
1180 (lower_omp_task_reductions): Ditto.
1181 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
1182 (worker_single_copy): Ditto.
1183 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
1184 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
1186 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1188 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
1190 (lto_read_body_or_constructor): Ditto.
1191 * lto-streamer-out.cc (tree_is_indexable): Ditto.
1192 (lto_output_var_decl_ref): Ditto.
1193 (DFS::DFS_write_tree_body): Ditto.
1195 (write_symbol_extension_info): Ditto.
1197 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1199 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
1200 defines from tree.h.
1201 (aarch64_mangle_type): Ditto.
1202 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
1203 (alpha_gimplify_va_arg_1): Ditto.
1204 * config/arc/arc.cc (arc_encode_section_info): Ditto.
1205 (arc_is_aux_reg_p): Ditto.
1206 (arc_is_uncached_mem_p): Ditto.
1207 (arc_handle_aux_attribute): Ditto.
1208 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
1209 (arm_handle_cmse_nonsecure_call): Ditto.
1210 (arm_set_default_type_attributes): Ditto.
1211 (arm_is_segment_info_known): Ditto.
1212 (arm_mangle_type): Ditto.
1213 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
1214 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
1215 (avr_decl_absdata_p): Ditto.
1216 (avr_insert_attributes): Ditto.
1217 (avr_section_type_flags): Ditto.
1218 (avr_encode_section_info): Ditto.
1219 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
1220 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
1221 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
1222 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
1223 (csky_mangle_type): Ditto.
1224 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
1225 * config/darwin.cc (is_objc_metadata): Ditto.
1226 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
1227 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
1228 * config/frv/frv.cc (frv_emit_movsi): Ditto.
1229 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
1230 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
1231 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
1232 * config/i386/i386-expand.cc: Ditto.
1233 * config/i386/i386.cc (type_natural_mode): Ditto.
1234 (ix86_function_arg): Ditto.
1235 (ix86_data_alignment): Ditto.
1236 (ix86_local_alignment): Ditto.
1237 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
1238 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
1239 (i386_pe_type_dllexport_p): Ditto.
1240 (i386_pe_adjust_class_at_definition): Ditto.
1241 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
1242 (i386_pe_binds_local_p): Ditto.
1243 (i386_pe_section_type_flags): Ditto.
1244 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
1245 (ia64_gimplify_va_arg): Ditto.
1246 (ia64_in_small_data_p): Ditto.
1247 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
1248 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
1249 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
1250 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
1251 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
1252 (mcore_encode_section_info): Ditto.
1253 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
1254 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
1255 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
1256 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
1257 (pass_in_memory): Ditto.
1258 (nvptx_generate_vector_shuffle): Ditto.
1259 (nvptx_lockless_update): Ditto.
1260 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
1261 (pa_function_value): Ditto.
1262 (pa_function_arg): Ditto.
1263 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
1264 (TEXT_SPACE_P): Ditto.
1265 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
1266 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
1267 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
1268 (riscv_mangle_type): Ditto.
1269 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
1270 (rl78_addsi3_internal): Ditto.
1271 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
1272 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
1273 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
1274 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
1275 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
1276 (rs6000_function_arg_advance_1): Ditto.
1277 (rs6000_function_arg): Ditto.
1278 (rs6000_pass_by_reference): Ditto.
1279 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
1280 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
1281 (rs6000_set_default_type_attributes): Ditto.
1282 (rs6000_elf_in_small_data_p): Ditto.
1283 (IN_NAMED_SECTION): Ditto.
1284 (rs6000_xcoff_encode_section_info): Ditto.
1285 (rs6000_function_value): Ditto.
1286 (invalid_arg_for_unprototyped_fn): Ditto.
1287 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
1288 (s390_vec_n_elem): Ditto.
1289 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
1290 (s390_function_arg_integer): Ditto.
1291 (s390_return_in_memory): Ditto.
1292 (s390_encode_section_info): Ditto.
1293 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
1294 (sh_function_value): Ditto.
1295 * config/sol2.cc (solaris_insert_attributes): Ditto.
1296 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
1297 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
1298 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
1299 (xstormy16_handle_below100_attribute): Ditto.
1300 * config/v850/v850.cc (v850_encode_section_info): Ditto.
1301 (v850_insert_attributes): Ditto.
1302 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
1303 (visium_return_in_memory): Ditto.
1304 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
1306 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
1308 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
1309 (ix86_expand_vecop_qihi): Add op2vec bool variable.
1310 Do not set REG_EQUAL note.
1311 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
1313 * config/i386/i386.cc (ix86_multiplication_cost): Handle
1314 V4QImode and V8QImode.
1315 * config/i386/mmx.md (mulv8qi3): New expander.
1317 * config/i386/sse.md (mulv8qi3): Remove.
1319 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
1321 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
1323 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
1326 * config.gcc: Use = operator instead of ==.
1328 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
1331 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
1332 * configure.ac: Likewise.
1333 * configure: Regenerate.
1335 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
1337 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
1338 (__ARM_mve_coerce1): Remove.
1339 (__ARM_mve_coerce2): Remove.
1340 (__ARM_mve_coerce3): Remove.
1341 (__ARM_mve_coerce_i_scalar): New.
1342 (__ARM_mve_coerce_s8_ptr): New.
1343 (__ARM_mve_coerce_u8_ptr): New.
1344 (__ARM_mve_coerce_s16_ptr): New.
1345 (__ARM_mve_coerce_u16_ptr): New.
1346 (__ARM_mve_coerce_s32_ptr): New.
1347 (__ARM_mve_coerce_u32_ptr): New.
1348 (__ARM_mve_coerce_s64_ptr): New.
1349 (__ARM_mve_coerce_u64_ptr): New.
1350 (__ARM_mve_coerce_f_scalar): New.
1351 (__ARM_mve_coerce_f16_ptr): New.
1352 (__ARM_mve_coerce_f32_ptr): New.
1353 (__arm_vst4q): Change _coerce_ overloads.
1354 (__arm_vbicq): Change _coerce_ overloads.
1355 (__arm_vld1q): Change _coerce_ overloads.
1356 (__arm_vld1q_z): Change _coerce_ overloads.
1357 (__arm_vld2q): Change _coerce_ overloads.
1358 (__arm_vld4q): Change _coerce_ overloads.
1359 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
1360 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
1361 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
1362 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
1363 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
1364 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
1365 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
1366 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
1367 (__arm_vst1q_p): Change _coerce_ overloads.
1368 (__arm_vst2q): Change _coerce_ overloads.
1369 (__arm_vst1q): Change _coerce_ overloads.
1370 (__arm_vstrhq): Change _coerce_ overloads.
1371 (__arm_vstrhq_p): Change _coerce_ overloads.
1372 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
1373 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
1374 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
1375 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
1376 (__arm_vstrwq_p): Change _coerce_ overloads.
1377 (__arm_vstrwq): Change _coerce_ overloads.
1378 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
1379 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
1380 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
1381 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
1382 (__arm_vsetq_lane): Change _coerce_ overloads.
1383 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
1384 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
1385 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
1386 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
1387 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
1388 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
1389 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
1390 (__arm_vidupq_x_u8): Change _coerce_ overloads.
1391 (__arm_vddupq_x_u8): Change _coerce_ overloads.
1392 (__arm_vidupq_x_u16): Change _coerce_ overloads.
1393 (__arm_vddupq_x_u16): Change _coerce_ overloads.
1394 (__arm_vidupq_x_u32): Change _coerce_ overloads.
1395 (__arm_vddupq_x_u32): Change _coerce_ overloads.
1396 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
1397 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
1398 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
1399 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
1400 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
1401 (__arm_vidupq_u16): Change _coerce_ overloads.
1402 (__arm_vidupq_u32): Change _coerce_ overloads.
1403 (__arm_vidupq_u8): Change _coerce_ overloads.
1404 (__arm_vddupq_u16): Change _coerce_ overloads.
1405 (__arm_vddupq_u32): Change _coerce_ overloads.
1406 (__arm_vddupq_u8): Change _coerce_ overloads.
1407 (__arm_viwdupq_m): Change _coerce_ overloads.
1408 (__arm_viwdupq_u16): Change _coerce_ overloads.
1409 (__arm_viwdupq_u32): Change _coerce_ overloads.
1410 (__arm_viwdupq_u8): Change _coerce_ overloads.
1411 (__arm_vdwdupq_m): Change _coerce_ overloads.
1412 (__arm_vdwdupq_u16): Change _coerce_ overloads.
1413 (__arm_vdwdupq_u32): Change _coerce_ overloads.
1414 (__arm_vdwdupq_u8): Change _coerce_ overloads.
1415 (__arm_vstrbq): Change _coerce_ overloads.
1416 (__arm_vstrbq_p): Change _coerce_ overloads.
1417 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
1418 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
1419 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
1420 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
1421 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
1423 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
1425 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
1428 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
1430 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
1431 (__arm_vadcq_u32): Likewise.
1432 (__arm_vadcq_m_s32): Likewise.
1433 (__arm_vadcq_m_u32): Likewise.
1434 (__arm_vsbcq_s32): Likewise.
1435 (__arm_vsbcq_u32): Likewise.
1436 (__arm_vsbcq_m_s32): Likewise.
1437 (__arm_vsbcq_m_u32): Likewise.
1438 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
1440 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
1442 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
1443 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
1444 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
1445 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
1446 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
1447 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
1448 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
1449 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
1450 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
1451 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
1452 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
1453 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
1454 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
1455 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
1456 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
1457 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
1458 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
1459 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
1460 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
1461 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
1462 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
1463 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
1464 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
1465 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
1466 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
1467 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
1468 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
1469 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
1470 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
1471 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
1472 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
1473 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
1474 (mve_vorrq_m_f<mode>)
1475 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
1476 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
1477 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
1478 capitalization in the emitted asm.
1480 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
1482 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
1484 (Ri): Move constraint definition from predicates.md.
1485 (Rl): Define new constraint.
1486 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
1488 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
1489 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
1490 op 2. Fix asm output spacing.
1491 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
1492 * config/arm/predicates.md (Ri) Move constraint to constraints.md
1493 (mve_vldrd_immediate): Move it from
1495 (mve_vstrw_immediate): New predicate.
1497 2023-05-18 Pan Li <pan2.li@intel.com>
1498 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1499 Kito Cheng <kito.cheng@sifive.com>
1500 Richard Biener <rguenther@suse.de>
1501 Richard Sandiford <richard.sandiford@arm.com>
1503 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
1504 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
1505 (struct table_elt): Extend machine_mode to 16 bits.
1506 (struct set): Ditto.
1507 * genmodes.cc (emit_mode_wider): Extend type from char to short.
1508 (emit_mode_complex): Ditto.
1509 (emit_mode_inner): Ditto.
1510 (emit_class_narrowest_mode): Ditto.
1511 * genopinit.cc (main): Extend the machine_mode limit.
1512 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
1513 re-ordered the struct fields for padding.
1514 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
1515 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
1516 (get_mode_alignment): Extend type from char to short.
1517 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
1518 removed the ATTRIBUTE_PACKED.
1519 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
1520 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
1521 m_kind to 2 bits and remove m_spare.
1522 * rtl.h (RTX_CODE_BITSIZE): New macro.
1523 (struct rtx_def): Swap both the bit size and location between the
1524 rtx_code and the machine_mode.
1525 (subreg_shape::unique_id): Extend the machine_mode limit.
1526 * rtlanal.h: Extend machine_mode to 16 bits.
1527 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
1528 bits and re-ordered the struct fields for padding.
1529 (struct tree_decl_common): Extend machine_mode to 16 bits.
1531 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
1533 * genrecog.cc (print_nonbool_test): Fix type error of
1534 switch (SUBREG_BYTE (op))'.
1536 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
1538 * common/config/riscv/riscv-common.cc: Remove
1539 trailing spaces on lines.
1540 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
1541 * config/riscv/riscv.h (enum reg_class): Likewise.
1542 * config/riscv/riscv.md: Likewise.
1544 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
1546 * config/pa/pa.md (clear_cache): New.
1548 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
1550 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
1551 parenthesis. Fix misnamed index entry.
1552 <concept>: Fix misnamed index entry.
1554 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1556 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
1558 (*<optab>si3_mask, *<optab>di3_mask): Here.
1559 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
1560 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
1562 (*<bitmanip_optab>si3_sext_mask): Likewise.
1563 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
1564 and const_di_mask_operand.
1565 (bitmanip_rotate): New iterator.
1566 (bitmanip_optab): Add rotates.
1567 * config/riscv/predicates.md (const_si_mask_operand): Renamed
1568 from const31_operand. Generalize to handle more mask constants.
1569 (const_di_mask_operand): Similarly.
1571 2023-05-17 Jakub Jelinek <jakub@redhat.com>
1574 * config/i386/i386-builtin-types.def (FLOAT128): Use
1575 float128t_type_node rather than float128_type_node.
1577 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
1579 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
1580 FP_CONTRACT_FAST (no functional change).
1582 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
1584 * config/i386/i386.cc (ix86_multiplication_cost): Correct
1585 calcuation of integer vector mode costs to reflect generated
1586 instruction sequences of different integer vector modes and
1587 different target ABIs.
1589 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1591 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
1592 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
1593 (riscv_mode_needed): Ditto.
1594 (riscv_mode_after): Ditto.
1595 (riscv_mode_entry): Ditto.
1596 (riscv_mode_exit): Ditto.
1597 (riscv_mode_priority): Ditto.
1598 (TARGET_MODE_EMIT): New target hook.
1599 (TARGET_MODE_NEEDED): Ditto.
1600 (TARGET_MODE_AFTER): Ditto.
1601 (TARGET_MODE_ENTRY): Ditto.
1602 (TARGET_MODE_EXIT): Ditto.
1603 (TARGET_MODE_PRIORITY): Ditto.
1604 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
1605 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
1606 * config/riscv/riscv.md: Add csrwvxrm.
1607 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
1608 (vxrmsi): New pattern.
1610 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1612 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
1613 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
1614 (struct narrow_alu_def): Ditto.
1615 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
1616 (function_expander::use_exact_insn): Ditto.
1617 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
1618 (function_base::has_rounding_mode_operand_p): New function.
1620 2023-05-17 Andrew Pinski <apinski@marvell.com>
1622 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
1623 against 0 instead of calling integer_zerop.
1625 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1627 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
1628 (DEF_RVV_VXRM_ENUM): New macro.
1629 (handle_pragma_vector): Add vxrm enum register.
1630 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
1636 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
1638 * value-range.h (Value_Range::operator=): New.
1640 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
1642 * value-range.cc (vrange::operator=): Add a stub to copy
1644 * value-range.h (is_a <unsupported_range>): New.
1645 (Value_Range::operator=): Support copying unsupported ranges.
1647 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
1649 * data-streamer-in.cc (streamer_read_real_value): New.
1650 (streamer_read_value_range): New.
1651 * data-streamer-out.cc (streamer_write_real_value): New.
1652 (streamer_write_vrange): New.
1653 * data-streamer.h (streamer_write_vrange): New.
1654 (streamer_read_value_range): New.
1656 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
1659 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
1660 is ignored for a fixed underlying type.
1661 (C++ Dialect Options): Likewise for -fstrict-enums.
1663 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
1665 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
1668 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
1670 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
1672 (s390_atomic_align_for_mode): New.
1674 2023-05-17 Jakub Jelinek <jakub@redhat.com>
1676 * wide-int.cc (wi::from_array): Add missing closing paren in function
1679 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
1681 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
1682 suggested unroll factor once the previous analysis fails.
1684 2023-05-17 Pan Li <pan2.li@intel.com>
1686 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
1688 (main): Add bool1 to the type indexer.
1689 * config/riscv/riscv-vector-builtins-functions.def
1690 (vreinterpret): Register vbool1 interpret function.
1691 * config/riscv/riscv-vector-builtins-types.def
1692 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
1693 (vint8m1_t): Add the type to bool1_interpret_ops.
1694 (vint16m1_t): Ditto.
1695 (vint32m1_t): Ditto.
1696 (vint64m1_t): Ditto.
1697 (vuint8m1_t): Ditto.
1698 (vuint16m1_t): Ditto.
1699 (vuint32m1_t): Ditto.
1700 (vuint64m1_t): Ditto.
1701 * config/riscv/riscv-vector-builtins.cc
1702 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
1703 (required_extensions_p): Add bool1 interpret case.
1704 * config/riscv/riscv-vector-builtins.def
1705 (bool1_interpret): Add bool1 interpret to base type.
1706 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
1707 with VB dest for vreinterpret.
1709 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
1712 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
1713 constants through "lis; xoris".
1715 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
1717 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
1718 default rs6000 target pass for O2 and above.
1719 * doc/invoke.texi: Document -free
1721 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
1723 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
1724 Fix wrong select_kind...
1726 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
1728 * config/s390/s390-protos.h (s390_expand_setmem): Change
1730 * config/s390/s390.cc (s390_expand_setmem): For memset's less
1731 than or equal to 256 byte do not perform a libc call.
1732 * config/s390/s390.md: Change expander into a version which
1735 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
1737 * config/s390/s390-protos.h (s390_expand_movmem): New.
1738 * config/s390/s390.cc (s390_expand_movmem): New.
1739 * config/s390/s390.md (movmem<mode>): New.
1743 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
1745 * config/s390/s390-protos.h (s390_expand_cpymem): Change
1747 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
1748 than or equal to 256 byte do not perform a libc call.
1749 (s390_expand_insv): Adapt new function signature of
1751 * config/s390/s390.md: Change expander into a version which
1754 2023-05-16 Andrew Pinski <apinski@marvell.com>
1756 PR tree-optimization/109424
1757 * match.pd: Add patterns for min/max of zero_one_valued
1760 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1762 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
1763 * config/riscv/riscv-vector-builtins.cc
1764 (function_expander::use_ternop_insn): Add default rounding mode.
1765 (function_expander::use_widen_ternop_insn): Ditto.
1766 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
1767 (riscv_hard_regno_mode_ok): Ditto.
1768 (riscv_conditional_register_usage): Ditto.
1769 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
1771 (RISCV_DWARF_FRM): Ditto.
1772 * config/riscv/riscv.md: Ditto.
1773 * config/riscv/vector-iterators.md: split no frm and has frm operations.
1774 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
1775 (@pred_<optab><mode>): Ditto.
1777 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
1779 PR tree-optimization/109695
1780 * value-range.cc (irange::operator=): Resize range.
1781 (irange::union_): Same.
1782 (irange::intersect): Same.
1783 (irange::invert): Same.
1784 (int_range_max): Default to 3 sub-ranges and resize as needed.
1785 * value-range.h (irange::maybe_resize): New.
1787 (int_range::int_range): Adjust for resizing.
1788 (int_range::operator=): Same.
1790 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
1792 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
1794 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
1797 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1799 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
1800 * config/riscv/riscv-vector-builtins.cc
1801 (function_expander::use_exact_insn): Add default rounding mode operand.
1802 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
1803 (riscv_hard_regno_mode_ok): Ditto.
1804 (riscv_conditional_register_usage): Ditto.
1805 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
1806 (VXRM_REG_P): Ditto.
1807 (RISCV_DWARF_VXRM): Ditto.
1808 * config/riscv/riscv.md: Ditto.
1809 * config/riscv/vector.md: Ditto
1811 2023-05-15 Pan Li <pan2.li@intel.com>
1813 * optabs.cc (maybe_gen_insn): Add case to generate instruction
1814 that has 11 operands.
1816 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1818 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
1819 logic for vector modes.
1821 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1824 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
1825 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
1826 (aarch64_cmtst<mode>): Rename to...
1827 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
1828 (*aarch64_cmtst_same_<mode>): Rename to...
1829 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
1830 (*aarch64_cmtstdi): Rename to...
1831 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
1832 (aarch64_fac<optab><mode>): Rename to...
1833 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
1835 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1838 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
1839 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
1841 2023-05-15 Pan Li <pan2.li@intel.com>
1842 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1843 kito-cheng <kito.cheng@sifive.com>
1845 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
1846 deciding the mode is constant or not.
1847 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
1849 2023-05-15 Richard Biener <rguenther@suse.de>
1851 PR tree-optimization/109848
1852 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
1853 TARGET_MEM_REF address preparation before the store, not
1856 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1858 * config/riscv/riscv.cc
1859 (riscv_vectorize_preferred_vector_alignment): New function.
1860 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
1862 2023-05-14 Andrew Pinski <apinski@marvell.com>
1864 PR tree-optimization/109829
1865 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
1867 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
1870 * config/i386/i386.cc: Revert the 2023-05-11 change.
1871 (ix86_widen_mult_cost): Return high value instead of
1872 ICEing for unsupported modes.
1874 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
1876 * config/i386/i386.cc (x86_function_profiler): Take
1877 ix86_direct_extern_access into account when generating calls
1880 2023-05-14 Pan Li <pan2.li@intel.com>
1882 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
1883 Refactor the or pattern to switch cases.
1885 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1887 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
1888 aarch64_expand_vector_init to this, and remove interleaving case.
1889 Recursively call aarch64_expand_vector_init_fallback, instead of
1890 aarch64_expand_vector_init.
1891 (aarch64_unzip_vector_init): New function.
1892 (aarch64_expand_vector_init): Likewise.
1894 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
1896 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
1897 Pull out function call from the gcc_assert.
1899 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
1901 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
1902 (policy_to_str): New.
1903 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
1905 2023-05-13 Andrew Pinski <apinski@marvell.com>
1907 PR tree-optimization/109834
1908 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
1909 (popcount(rotate(x,y))->popcount(x)): Likewise.
1911 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
1913 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
1914 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
1915 gen_extend_insn to generate zero/sign extension instructions.
1917 (ix86_expand_vecop_qihi): Initialize interleave functions
1918 for MULT code only. Fix comments.
1920 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
1923 * config/i386/mmx.md (mulv2si3): Remove expander.
1924 (mulv2si3): Rename insn pattern from *mulv2si.
1926 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
1929 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
1930 '!lto_stream_offload_p'.
1932 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
1933 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1936 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
1937 (local_avl_compatible_p): New.
1938 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
1939 for LCM, rewrite as a backward algorithm.
1940 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
1941 interface, handle a BB at once.
1943 2023-05-12 Richard Biener <rguenther@suse.de>
1945 PR tree-optimization/64731
1946 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
1947 handle TARGET_MEM_REF destinations of stores from vector
1950 2023-05-12 Richard Biener <rguenther@suse.de>
1952 PR tree-optimization/109791
1953 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
1955 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
1958 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1960 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
1961 * config/arm/arm-mve-builtins-base.def (vsriq): New.
1962 * config/arm/arm-mve-builtins-base.h (vsriq): New.
1963 * config/arm/arm-mve-builtins.cc
1964 (function_instance::has_inactive_argument): Handle vsriq.
1965 * config/arm/arm_mve.h (vsriq): Remove.
1967 (vsriq_n_u8): Remove.
1968 (vsriq_n_s8): Remove.
1969 (vsriq_n_u16): Remove.
1970 (vsriq_n_s16): Remove.
1971 (vsriq_n_u32): Remove.
1972 (vsriq_n_s32): Remove.
1973 (vsriq_m_n_s8): Remove.
1974 (vsriq_m_n_u8): Remove.
1975 (vsriq_m_n_s16): Remove.
1976 (vsriq_m_n_u16): Remove.
1977 (vsriq_m_n_s32): Remove.
1978 (vsriq_m_n_u32): Remove.
1979 (__arm_vsriq_n_u8): Remove.
1980 (__arm_vsriq_n_s8): Remove.
1981 (__arm_vsriq_n_u16): Remove.
1982 (__arm_vsriq_n_s16): Remove.
1983 (__arm_vsriq_n_u32): Remove.
1984 (__arm_vsriq_n_s32): Remove.
1985 (__arm_vsriq_m_n_s8): Remove.
1986 (__arm_vsriq_m_n_u8): Remove.
1987 (__arm_vsriq_m_n_s16): Remove.
1988 (__arm_vsriq_m_n_u16): Remove.
1989 (__arm_vsriq_m_n_s32): Remove.
1990 (__arm_vsriq_m_n_u32): Remove.
1991 (__arm_vsriq): Remove.
1992 (__arm_vsriq_m): Remove.
1994 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1996 * config/arm/iterators.md (mve_insn): Add vsri.
1997 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
1998 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
1999 (mve_vsriq_m_n_<supf><mode>): Rename into ...
2000 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2002 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2004 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
2005 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
2007 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2009 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
2010 * config/arm/arm-mve-builtins-base.def (vsliq): New.
2011 * config/arm/arm-mve-builtins-base.h (vsliq): New.
2012 * config/arm/arm-mve-builtins.cc
2013 (function_instance::has_inactive_argument): Handle vsliq.
2014 * config/arm/arm_mve.h (vsliq): Remove.
2016 (vsliq_n_u8): Remove.
2017 (vsliq_n_s8): Remove.
2018 (vsliq_n_u16): Remove.
2019 (vsliq_n_s16): Remove.
2020 (vsliq_n_u32): Remove.
2021 (vsliq_n_s32): Remove.
2022 (vsliq_m_n_s8): Remove.
2023 (vsliq_m_n_s32): Remove.
2024 (vsliq_m_n_s16): Remove.
2025 (vsliq_m_n_u8): Remove.
2026 (vsliq_m_n_u32): Remove.
2027 (vsliq_m_n_u16): Remove.
2028 (__arm_vsliq_n_u8): Remove.
2029 (__arm_vsliq_n_s8): Remove.
2030 (__arm_vsliq_n_u16): Remove.
2031 (__arm_vsliq_n_s16): Remove.
2032 (__arm_vsliq_n_u32): Remove.
2033 (__arm_vsliq_n_s32): Remove.
2034 (__arm_vsliq_m_n_s8): Remove.
2035 (__arm_vsliq_m_n_s32): Remove.
2036 (__arm_vsliq_m_n_s16): Remove.
2037 (__arm_vsliq_m_n_u8): Remove.
2038 (__arm_vsliq_m_n_u32): Remove.
2039 (__arm_vsliq_m_n_u16): Remove.
2040 (__arm_vsliq): Remove.
2041 (__arm_vsliq_m): Remove.
2043 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2045 * config/arm/iterators.md (mve_insn>): Add vsli.
2046 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
2047 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2048 (mve_vsliq_m_n_<supf><mode>): Rename into ...
2049 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2051 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2053 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
2054 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
2056 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2058 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
2059 * config/arm/arm-mve-builtins-base.def (vpselq): New.
2060 * config/arm/arm-mve-builtins-base.h (vpselq): New.
2061 * config/arm/arm_mve.h (vpselq): Remove.
2062 (vpselq_u8): Remove.
2063 (vpselq_s8): Remove.
2064 (vpselq_u16): Remove.
2065 (vpselq_s16): Remove.
2066 (vpselq_u32): Remove.
2067 (vpselq_s32): Remove.
2068 (vpselq_u64): Remove.
2069 (vpselq_s64): Remove.
2070 (vpselq_f16): Remove.
2071 (vpselq_f32): Remove.
2072 (__arm_vpselq_u8): Remove.
2073 (__arm_vpselq_s8): Remove.
2074 (__arm_vpselq_u16): Remove.
2075 (__arm_vpselq_s16): Remove.
2076 (__arm_vpselq_u32): Remove.
2077 (__arm_vpselq_s32): Remove.
2078 (__arm_vpselq_u64): Remove.
2079 (__arm_vpselq_s64): Remove.
2080 (__arm_vpselq_f16): Remove.
2081 (__arm_vpselq_f32): Remove.
2082 (__arm_vpselq): Remove.
2084 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2086 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
2087 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
2089 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2091 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
2093 * config/arm/iterators.md (MVE_VPSELQ_F): New.
2094 (mve_insn): Add vpsel.
2095 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
2096 (@mve_<mve_insn>q_<supf><mode>): ... this.
2097 (@mve_vpselq_f<mode>): Rename into ...
2098 (@mve_<mve_insn>q_f<mode>): ... this.
2100 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2102 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
2103 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
2104 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
2105 * config/arm/arm-mve-builtins.cc
2106 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
2108 * config/arm/arm_mve.h (vfmaq): Remove.
2114 (vfmaq_f16): Remove.
2115 (vfmaq_n_f16): Remove.
2116 (vfmasq_n_f16): Remove.
2117 (vfmsq_f16): Remove.
2118 (vfmaq_f32): Remove.
2119 (vfmaq_n_f32): Remove.
2120 (vfmasq_n_f32): Remove.
2121 (vfmsq_f32): Remove.
2122 (vfmaq_m_f32): Remove.
2123 (vfmaq_m_f16): Remove.
2124 (vfmaq_m_n_f32): Remove.
2125 (vfmaq_m_n_f16): Remove.
2126 (vfmasq_m_n_f32): Remove.
2127 (vfmasq_m_n_f16): Remove.
2128 (vfmsq_m_f32): Remove.
2129 (vfmsq_m_f16): Remove.
2130 (__arm_vfmaq_f16): Remove.
2131 (__arm_vfmaq_n_f16): Remove.
2132 (__arm_vfmasq_n_f16): Remove.
2133 (__arm_vfmsq_f16): Remove.
2134 (__arm_vfmaq_f32): Remove.
2135 (__arm_vfmaq_n_f32): Remove.
2136 (__arm_vfmasq_n_f32): Remove.
2137 (__arm_vfmsq_f32): Remove.
2138 (__arm_vfmaq_m_f32): Remove.
2139 (__arm_vfmaq_m_f16): Remove.
2140 (__arm_vfmaq_m_n_f32): Remove.
2141 (__arm_vfmaq_m_n_f16): Remove.
2142 (__arm_vfmasq_m_n_f32): Remove.
2143 (__arm_vfmasq_m_n_f16): Remove.
2144 (__arm_vfmsq_m_f32): Remove.
2145 (__arm_vfmsq_m_f16): Remove.
2146 (__arm_vfmaq): Remove.
2147 (__arm_vfmasq): Remove.
2148 (__arm_vfmsq): Remove.
2149 (__arm_vfmaq_m): Remove.
2150 (__arm_vfmasq_m): Remove.
2151 (__arm_vfmsq_m): Remove.
2153 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2155 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
2157 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
2158 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
2159 (mve_insn): Add vfma, vfmas, vfms.
2160 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
2162 (@mve_<mve_insn>q_f<mode>): ... this.
2163 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
2164 (@mve_<mve_insn>q_n_f<mode>): ... this.
2165 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
2166 @mve_<mve_insn>q_m_f<mode>.
2167 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
2168 @mve_<mve_insn>q_m_n_f<mode>.
2170 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2172 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
2173 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
2175 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2177 * config/arm/arm-mve-builtins-base.cc
2178 (FUNCTION_WITH_RTX_M_N_NO_F): New.
2180 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
2181 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
2182 * config/arm/arm_mve.h (vmvnq): Remove.
2186 (vmvnq_s16): Remove.
2187 (vmvnq_s32): Remove.
2188 (vmvnq_n_s16): Remove.
2189 (vmvnq_n_s32): Remove.
2191 (vmvnq_u16): Remove.
2192 (vmvnq_u32): Remove.
2193 (vmvnq_n_u16): Remove.
2194 (vmvnq_n_u32): Remove.
2195 (vmvnq_m_u8): Remove.
2196 (vmvnq_m_s8): Remove.
2197 (vmvnq_m_u16): Remove.
2198 (vmvnq_m_s16): Remove.
2199 (vmvnq_m_u32): Remove.
2200 (vmvnq_m_s32): Remove.
2201 (vmvnq_m_n_s16): Remove.
2202 (vmvnq_m_n_u16): Remove.
2203 (vmvnq_m_n_s32): Remove.
2204 (vmvnq_m_n_u32): Remove.
2205 (vmvnq_x_s8): Remove.
2206 (vmvnq_x_s16): Remove.
2207 (vmvnq_x_s32): Remove.
2208 (vmvnq_x_u8): Remove.
2209 (vmvnq_x_u16): Remove.
2210 (vmvnq_x_u32): Remove.
2211 (vmvnq_x_n_s16): Remove.
2212 (vmvnq_x_n_s32): Remove.
2213 (vmvnq_x_n_u16): Remove.
2214 (vmvnq_x_n_u32): Remove.
2215 (__arm_vmvnq_s8): Remove.
2216 (__arm_vmvnq_s16): Remove.
2217 (__arm_vmvnq_s32): Remove.
2218 (__arm_vmvnq_n_s16): Remove.
2219 (__arm_vmvnq_n_s32): Remove.
2220 (__arm_vmvnq_u8): Remove.
2221 (__arm_vmvnq_u16): Remove.
2222 (__arm_vmvnq_u32): Remove.
2223 (__arm_vmvnq_n_u16): Remove.
2224 (__arm_vmvnq_n_u32): Remove.
2225 (__arm_vmvnq_m_u8): Remove.
2226 (__arm_vmvnq_m_s8): Remove.
2227 (__arm_vmvnq_m_u16): Remove.
2228 (__arm_vmvnq_m_s16): Remove.
2229 (__arm_vmvnq_m_u32): Remove.
2230 (__arm_vmvnq_m_s32): Remove.
2231 (__arm_vmvnq_m_n_s16): Remove.
2232 (__arm_vmvnq_m_n_u16): Remove.
2233 (__arm_vmvnq_m_n_s32): Remove.
2234 (__arm_vmvnq_m_n_u32): Remove.
2235 (__arm_vmvnq_x_s8): Remove.
2236 (__arm_vmvnq_x_s16): Remove.
2237 (__arm_vmvnq_x_s32): Remove.
2238 (__arm_vmvnq_x_u8): Remove.
2239 (__arm_vmvnq_x_u16): Remove.
2240 (__arm_vmvnq_x_u32): Remove.
2241 (__arm_vmvnq_x_n_s16): Remove.
2242 (__arm_vmvnq_x_n_s32): Remove.
2243 (__arm_vmvnq_x_n_u16): Remove.
2244 (__arm_vmvnq_x_n_u32): Remove.
2245 (__arm_vmvnq): Remove.
2246 (__arm_vmvnq_m): Remove.
2247 (__arm_vmvnq_x): Remove.
2249 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2251 * config/arm/iterators.md (mve_insn): Add vmvn.
2252 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
2253 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2254 (mve_vmvnq_m_<supf><mode>): Rename into ...
2255 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
2256 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
2257 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2259 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2261 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
2262 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
2264 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2266 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
2267 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
2268 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
2269 * config/arm/arm_mve.h (vbrsrq): Remove.
2272 (vbrsrq_n_f16): Remove.
2273 (vbrsrq_n_f32): Remove.
2274 (vbrsrq_n_u8): Remove.
2275 (vbrsrq_n_s8): Remove.
2276 (vbrsrq_n_u16): Remove.
2277 (vbrsrq_n_s16): Remove.
2278 (vbrsrq_n_u32): Remove.
2279 (vbrsrq_n_s32): Remove.
2280 (vbrsrq_m_n_s8): Remove.
2281 (vbrsrq_m_n_s32): Remove.
2282 (vbrsrq_m_n_s16): Remove.
2283 (vbrsrq_m_n_u8): Remove.
2284 (vbrsrq_m_n_u32): Remove.
2285 (vbrsrq_m_n_u16): Remove.
2286 (vbrsrq_m_n_f32): Remove.
2287 (vbrsrq_m_n_f16): Remove.
2288 (vbrsrq_x_n_s8): Remove.
2289 (vbrsrq_x_n_s16): Remove.
2290 (vbrsrq_x_n_s32): Remove.
2291 (vbrsrq_x_n_u8): Remove.
2292 (vbrsrq_x_n_u16): Remove.
2293 (vbrsrq_x_n_u32): Remove.
2294 (vbrsrq_x_n_f16): Remove.
2295 (vbrsrq_x_n_f32): Remove.
2296 (__arm_vbrsrq_n_u8): Remove.
2297 (__arm_vbrsrq_n_s8): Remove.
2298 (__arm_vbrsrq_n_u16): Remove.
2299 (__arm_vbrsrq_n_s16): Remove.
2300 (__arm_vbrsrq_n_u32): Remove.
2301 (__arm_vbrsrq_n_s32): Remove.
2302 (__arm_vbrsrq_m_n_s8): Remove.
2303 (__arm_vbrsrq_m_n_s32): Remove.
2304 (__arm_vbrsrq_m_n_s16): Remove.
2305 (__arm_vbrsrq_m_n_u8): Remove.
2306 (__arm_vbrsrq_m_n_u32): Remove.
2307 (__arm_vbrsrq_m_n_u16): Remove.
2308 (__arm_vbrsrq_x_n_s8): Remove.
2309 (__arm_vbrsrq_x_n_s16): Remove.
2310 (__arm_vbrsrq_x_n_s32): Remove.
2311 (__arm_vbrsrq_x_n_u8): Remove.
2312 (__arm_vbrsrq_x_n_u16): Remove.
2313 (__arm_vbrsrq_x_n_u32): Remove.
2314 (__arm_vbrsrq_n_f16): Remove.
2315 (__arm_vbrsrq_n_f32): Remove.
2316 (__arm_vbrsrq_m_n_f32): Remove.
2317 (__arm_vbrsrq_m_n_f16): Remove.
2318 (__arm_vbrsrq_x_n_f16): Remove.
2319 (__arm_vbrsrq_x_n_f32): Remove.
2320 (__arm_vbrsrq): Remove.
2321 (__arm_vbrsrq_m): Remove.
2322 (__arm_vbrsrq_x): Remove.
2324 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2326 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
2327 (mve_insn): Add vbrsr.
2328 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
2329 (@mve_<mve_insn>q_n_f<mode>): ... this.
2330 (mve_vbrsrq_n_<supf><mode>): Rename into ...
2331 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2332 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
2333 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2334 (mve_vbrsrq_m_n_f<mode>): Rename into ...
2335 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
2337 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2339 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
2340 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
2342 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2344 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
2345 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
2346 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
2347 * config/arm/arm_mve.h (vqshluq): Remove.
2348 (vqshluq_m): Remove.
2349 (vqshluq_n_s8): Remove.
2350 (vqshluq_n_s16): Remove.
2351 (vqshluq_n_s32): Remove.
2352 (vqshluq_m_n_s8): Remove.
2353 (vqshluq_m_n_s16): Remove.
2354 (vqshluq_m_n_s32): Remove.
2355 (__arm_vqshluq_n_s8): Remove.
2356 (__arm_vqshluq_n_s16): Remove.
2357 (__arm_vqshluq_n_s32): Remove.
2358 (__arm_vqshluq_m_n_s8): Remove.
2359 (__arm_vqshluq_m_n_s16): Remove.
2360 (__arm_vqshluq_m_n_s32): Remove.
2361 (__arm_vqshluq): Remove.
2362 (__arm_vqshluq_m): Remove.
2364 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2366 * config/arm/iterators.md (mve_insn): Add vqshlu.
2367 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
2368 (VQSHLUQ_M_N, VQSHLUQ_N): New.
2369 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
2370 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2371 (mve_vqshluq_m_n_s<mode>): Change name into ...
2372 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2374 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2376 * config/arm/arm-mve-builtins-shapes.cc
2377 (binary_lshift_unsigned): New.
2378 * config/arm/arm-mve-builtins-shapes.h
2379 (binary_lshift_unsigned): New.
2381 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2383 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
2384 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
2385 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
2386 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
2387 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
2388 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
2389 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
2390 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
2391 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
2392 (vrmlaldavhaxq): Remove.
2393 (vrmlsldavhaq): Remove.
2394 (vrmlsldavhaxq): Remove.
2395 (vrmlaldavhaq_p): Remove.
2396 (vrmlaldavhaxq_p): Remove.
2397 (vrmlsldavhaq_p): Remove.
2398 (vrmlsldavhaxq_p): Remove.
2399 (vrmlaldavhaq_s32): Remove.
2400 (vrmlaldavhaq_u32): Remove.
2401 (vrmlaldavhaxq_s32): Remove.
2402 (vrmlsldavhaq_s32): Remove.
2403 (vrmlsldavhaxq_s32): Remove.
2404 (vrmlaldavhaq_p_s32): Remove.
2405 (vrmlaldavhaq_p_u32): Remove.
2406 (vrmlaldavhaxq_p_s32): Remove.
2407 (vrmlsldavhaq_p_s32): Remove.
2408 (vrmlsldavhaxq_p_s32): Remove.
2409 (__arm_vrmlaldavhaq_s32): Remove.
2410 (__arm_vrmlaldavhaq_u32): Remove.
2411 (__arm_vrmlaldavhaxq_s32): Remove.
2412 (__arm_vrmlsldavhaq_s32): Remove.
2413 (__arm_vrmlsldavhaxq_s32): Remove.
2414 (__arm_vrmlaldavhaq_p_s32): Remove.
2415 (__arm_vrmlaldavhaq_p_u32): Remove.
2416 (__arm_vrmlaldavhaxq_p_s32): Remove.
2417 (__arm_vrmlsldavhaq_p_s32): Remove.
2418 (__arm_vrmlsldavhaxq_p_s32): Remove.
2419 (__arm_vrmlaldavhaq): Remove.
2420 (__arm_vrmlaldavhaxq): Remove.
2421 (__arm_vrmlsldavhaq): Remove.
2422 (__arm_vrmlsldavhaxq): Remove.
2423 (__arm_vrmlaldavhaq_p): Remove.
2424 (__arm_vrmlaldavhaxq_p): Remove.
2425 (__arm_vrmlsldavhaq_p): Remove.
2426 (__arm_vrmlsldavhaxq_p): Remove.
2428 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2430 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
2431 (MVE_VRMLxLDAVHAxQ_P): New.
2432 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
2434 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
2435 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
2437 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
2438 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
2439 (mve_vrmlsldavhaq_sv4si): Merge into ...
2440 (@mve_<mve_insn>q_<supf>v4si): ... this.
2441 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
2442 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
2443 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
2444 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
2446 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2448 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
2449 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
2451 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
2452 * config/arm/arm_mve.h (vqdmulltq): Remove.
2453 (vqdmullbq): Remove.
2454 (vqdmullbq_m): Remove.
2455 (vqdmulltq_m): Remove.
2456 (vqdmulltq_s16): Remove.
2457 (vqdmulltq_n_s16): Remove.
2458 (vqdmullbq_s16): Remove.
2459 (vqdmullbq_n_s16): Remove.
2460 (vqdmulltq_s32): Remove.
2461 (vqdmulltq_n_s32): Remove.
2462 (vqdmullbq_s32): Remove.
2463 (vqdmullbq_n_s32): Remove.
2464 (vqdmullbq_m_n_s32): Remove.
2465 (vqdmullbq_m_n_s16): Remove.
2466 (vqdmullbq_m_s32): Remove.
2467 (vqdmullbq_m_s16): Remove.
2468 (vqdmulltq_m_n_s32): Remove.
2469 (vqdmulltq_m_n_s16): Remove.
2470 (vqdmulltq_m_s32): Remove.
2471 (vqdmulltq_m_s16): Remove.
2472 (__arm_vqdmulltq_s16): Remove.
2473 (__arm_vqdmulltq_n_s16): Remove.
2474 (__arm_vqdmullbq_s16): Remove.
2475 (__arm_vqdmullbq_n_s16): Remove.
2476 (__arm_vqdmulltq_s32): Remove.
2477 (__arm_vqdmulltq_n_s32): Remove.
2478 (__arm_vqdmullbq_s32): Remove.
2479 (__arm_vqdmullbq_n_s32): Remove.
2480 (__arm_vqdmullbq_m_n_s32): Remove.
2481 (__arm_vqdmullbq_m_n_s16): Remove.
2482 (__arm_vqdmullbq_m_s32): Remove.
2483 (__arm_vqdmullbq_m_s16): Remove.
2484 (__arm_vqdmulltq_m_n_s32): Remove.
2485 (__arm_vqdmulltq_m_n_s16): Remove.
2486 (__arm_vqdmulltq_m_s32): Remove.
2487 (__arm_vqdmulltq_m_s16): Remove.
2488 (__arm_vqdmulltq): Remove.
2489 (__arm_vqdmullbq): Remove.
2490 (__arm_vqdmullbq_m): Remove.
2491 (__arm_vqdmulltq_m): Remove.
2493 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2495 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
2496 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
2497 (mve_insn): Add vqdmullb, vqdmullt.
2498 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
2499 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
2501 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
2502 (mve_vqdmulltq_n_s<mode>): Merge into ...
2503 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2504 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
2505 (@mve_<mve_insn>q_<supf><mode>): ... this.
2506 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
2508 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2509 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
2510 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
2512 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
2514 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
2515 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
2517 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
2519 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
2520 Drop unused parameter.
2521 (riscv_select_multilib): Ditto.
2522 (riscv_compute_multilib): Update call site of
2523 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
2525 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
2527 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
2528 * config/riscv/riscv-protos.h (expand_vec_init): New function.
2529 * config/riscv/riscv-v.cc (class rvv_builder): New class.
2530 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
2531 (rvv_builder::get_merged_repeating_sequence): Ditto.
2532 (expand_vector_init_insert_elems): Ditto.
2533 (expand_vec_init): Ditto.
2534 * config/riscv/vector-iterators.md: New attribute.
2536 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
2538 * config/rs6000/rs6000-builtins.def
2539 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
2541 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
2542 xsiexpdpf to xsiexpdpf_di.
2543 * config/rs6000/vsx.md (xsiexpdp): Rename to...
2544 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
2545 replace TARGET_64BIT with TARGET_POWERPC64.
2546 (xsiexpdpf): Rename to...
2547 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
2548 replace TARGET_64BIT with TARGET_POWERPC64.
2550 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
2552 * config/rs6000/rs6000-builtins.def
2553 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
2555 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
2558 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
2560 * config/rs6000/rs6000-builtins.def
2561 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
2562 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
2564 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
2565 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
2567 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
2568 requirement when it has a 64-bit argument.
2570 2023-05-12 Pan Li <pan2.li@intel.com>
2571 Richard Sandiford <richard.sandiford@arm.com>
2572 Richard Biener <rguenther@suse.de>
2573 Jakub Jelinek <jakub@redhat.com>
2575 * mux-utils.h: Add overload operator == and != for pointer_mux.
2576 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
2577 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
2578 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
2579 (dv_as_decl): Ditto.
2580 (dv_as_opaque): Removed due to unnecessary.
2581 (struct variable_hasher): Take decl_or_value as compare_type.
2582 (variable_hasher::equal): Diito.
2583 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
2584 (dv_from_value): Ditto.
2585 (attrs_list_member): Ditto.
2587 (var_reg_decl_set): Ditto.
2588 (var_reg_delete_and_set): Ditto.
2589 (find_loc_in_1pdv): Ditto.
2590 (canonicalize_values_star): Ditto.
2591 (variable_post_merge_new_vals): Ditto.
2592 (dump_onepart_variable_differences): Ditto.
2593 (variable_different_p): Ditto.
2594 (set_slot_part): Ditto.
2595 (clobber_slot_part): Ditto.
2596 (clobber_variable_part): Ditto.
2598 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
2600 * match.pd: simplify vector shift + bit_and + multiply.
2602 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2604 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
2605 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
2606 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
2607 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
2608 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
2609 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
2610 * config/arm/arm-mve-builtins.cc
2611 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
2612 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
2613 * config/arm/arm_mve.h (vqrdmlashq): Remove.
2614 (vqrdmlahq): Remove.
2615 (vqdmlashq): Remove.
2621 (vqdmlashq_m): Remove.
2622 (vqdmlahq_m): Remove.
2623 (vqrdmlahq_m): Remove.
2624 (vqrdmlashq_m): Remove.
2625 (vmlasq_n_u8): Remove.
2626 (vmlaq_n_u8): Remove.
2627 (vqrdmlashq_n_s8): Remove.
2628 (vqrdmlahq_n_s8): Remove.
2629 (vqdmlahq_n_s8): Remove.
2630 (vqdmlashq_n_s8): Remove.
2631 (vmlasq_n_s8): Remove.
2632 (vmlaq_n_s8): Remove.
2633 (vmlasq_n_u16): Remove.
2634 (vmlaq_n_u16): Remove.
2635 (vqrdmlashq_n_s16): Remove.
2636 (vqrdmlahq_n_s16): Remove.
2637 (vqdmlashq_n_s16): Remove.
2638 (vqdmlahq_n_s16): Remove.
2639 (vmlasq_n_s16): Remove.
2640 (vmlaq_n_s16): Remove.
2641 (vmlasq_n_u32): Remove.
2642 (vmlaq_n_u32): Remove.
2643 (vqrdmlashq_n_s32): Remove.
2644 (vqrdmlahq_n_s32): Remove.
2645 (vqdmlashq_n_s32): Remove.
2646 (vqdmlahq_n_s32): Remove.
2647 (vmlasq_n_s32): Remove.
2648 (vmlaq_n_s32): Remove.
2649 (vmlaq_m_n_s8): Remove.
2650 (vmlaq_m_n_s32): Remove.
2651 (vmlaq_m_n_s16): Remove.
2652 (vmlaq_m_n_u8): Remove.
2653 (vmlaq_m_n_u32): Remove.
2654 (vmlaq_m_n_u16): Remove.
2655 (vmlasq_m_n_s8): Remove.
2656 (vmlasq_m_n_s32): Remove.
2657 (vmlasq_m_n_s16): Remove.
2658 (vmlasq_m_n_u8): Remove.
2659 (vmlasq_m_n_u32): Remove.
2660 (vmlasq_m_n_u16): Remove.
2661 (vqdmlashq_m_n_s8): Remove.
2662 (vqdmlashq_m_n_s32): Remove.
2663 (vqdmlashq_m_n_s16): Remove.
2664 (vqdmlahq_m_n_s8): Remove.
2665 (vqdmlahq_m_n_s32): Remove.
2666 (vqdmlahq_m_n_s16): Remove.
2667 (vqrdmlahq_m_n_s8): Remove.
2668 (vqrdmlahq_m_n_s32): Remove.
2669 (vqrdmlahq_m_n_s16): Remove.
2670 (vqrdmlashq_m_n_s8): Remove.
2671 (vqrdmlashq_m_n_s32): Remove.
2672 (vqrdmlashq_m_n_s16): Remove.
2673 (__arm_vmlasq_n_u8): Remove.
2674 (__arm_vmlaq_n_u8): Remove.
2675 (__arm_vqrdmlashq_n_s8): Remove.
2676 (__arm_vqdmlashq_n_s8): Remove.
2677 (__arm_vqrdmlahq_n_s8): Remove.
2678 (__arm_vqdmlahq_n_s8): Remove.
2679 (__arm_vmlasq_n_s8): Remove.
2680 (__arm_vmlaq_n_s8): Remove.
2681 (__arm_vmlasq_n_u16): Remove.
2682 (__arm_vmlaq_n_u16): Remove.
2683 (__arm_vqrdmlashq_n_s16): Remove.
2684 (__arm_vqdmlashq_n_s16): Remove.
2685 (__arm_vqrdmlahq_n_s16): Remove.
2686 (__arm_vqdmlahq_n_s16): Remove.
2687 (__arm_vmlasq_n_s16): Remove.
2688 (__arm_vmlaq_n_s16): Remove.
2689 (__arm_vmlasq_n_u32): Remove.
2690 (__arm_vmlaq_n_u32): Remove.
2691 (__arm_vqrdmlashq_n_s32): Remove.
2692 (__arm_vqdmlashq_n_s32): Remove.
2693 (__arm_vqrdmlahq_n_s32): Remove.
2694 (__arm_vqdmlahq_n_s32): Remove.
2695 (__arm_vmlasq_n_s32): Remove.
2696 (__arm_vmlaq_n_s32): Remove.
2697 (__arm_vmlaq_m_n_s8): Remove.
2698 (__arm_vmlaq_m_n_s32): Remove.
2699 (__arm_vmlaq_m_n_s16): Remove.
2700 (__arm_vmlaq_m_n_u8): Remove.
2701 (__arm_vmlaq_m_n_u32): Remove.
2702 (__arm_vmlaq_m_n_u16): Remove.
2703 (__arm_vmlasq_m_n_s8): Remove.
2704 (__arm_vmlasq_m_n_s32): Remove.
2705 (__arm_vmlasq_m_n_s16): Remove.
2706 (__arm_vmlasq_m_n_u8): Remove.
2707 (__arm_vmlasq_m_n_u32): Remove.
2708 (__arm_vmlasq_m_n_u16): Remove.
2709 (__arm_vqdmlahq_m_n_s8): Remove.
2710 (__arm_vqdmlahq_m_n_s32): Remove.
2711 (__arm_vqdmlahq_m_n_s16): Remove.
2712 (__arm_vqrdmlahq_m_n_s8): Remove.
2713 (__arm_vqrdmlahq_m_n_s32): Remove.
2714 (__arm_vqrdmlahq_m_n_s16): Remove.
2715 (__arm_vqrdmlashq_m_n_s8): Remove.
2716 (__arm_vqrdmlashq_m_n_s32): Remove.
2717 (__arm_vqrdmlashq_m_n_s16): Remove.
2718 (__arm_vqdmlashq_m_n_s8): Remove.
2719 (__arm_vqdmlashq_m_n_s16): Remove.
2720 (__arm_vqdmlashq_m_n_s32): Remove.
2721 (__arm_vmlasq): Remove.
2722 (__arm_vmlaq): Remove.
2723 (__arm_vqrdmlashq): Remove.
2724 (__arm_vqdmlashq): Remove.
2725 (__arm_vqrdmlahq): Remove.
2726 (__arm_vqdmlahq): Remove.
2727 (__arm_vmlaq_m): Remove.
2728 (__arm_vmlasq_m): Remove.
2729 (__arm_vqdmlahq_m): Remove.
2730 (__arm_vqrdmlahq_m): Remove.
2731 (__arm_vqrdmlashq_m): Remove.
2732 (__arm_vqdmlashq_m): Remove.
2734 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2736 * config/arm/iterators.md (MVE_VMLxQ_N): New.
2737 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
2739 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
2741 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
2742 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
2743 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
2744 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
2745 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2747 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2749 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
2750 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
2752 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2754 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
2755 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
2757 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
2758 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
2760 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
2761 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
2763 * config/arm/arm-mve-builtins.cc
2764 (function_instance::has_inactive_argument): Handle vqrdmladhq,
2765 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
2766 vqdmlsdhq, vqdmlsdhxq.
2767 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
2768 (vqrdmlsdhq): Remove.
2769 (vqrdmladhxq): Remove.
2770 (vqrdmladhq): Remove.
2771 (vqdmlsdhxq): Remove.
2772 (vqdmlsdhq): Remove.
2773 (vqdmladhxq): Remove.
2774 (vqdmladhq): Remove.
2775 (vqdmladhq_m): Remove.
2776 (vqdmladhxq_m): Remove.
2777 (vqdmlsdhq_m): Remove.
2778 (vqdmlsdhxq_m): Remove.
2779 (vqrdmladhq_m): Remove.
2780 (vqrdmladhxq_m): Remove.
2781 (vqrdmlsdhq_m): Remove.
2782 (vqrdmlsdhxq_m): Remove.
2783 (vqrdmlsdhxq_s8): Remove.
2784 (vqrdmlsdhq_s8): Remove.
2785 (vqrdmladhxq_s8): Remove.
2786 (vqrdmladhq_s8): Remove.
2787 (vqdmlsdhxq_s8): Remove.
2788 (vqdmlsdhq_s8): Remove.
2789 (vqdmladhxq_s8): Remove.
2790 (vqdmladhq_s8): Remove.
2791 (vqrdmlsdhxq_s16): Remove.
2792 (vqrdmlsdhq_s16): Remove.
2793 (vqrdmladhxq_s16): Remove.
2794 (vqrdmladhq_s16): Remove.
2795 (vqdmlsdhxq_s16): Remove.
2796 (vqdmlsdhq_s16): Remove.
2797 (vqdmladhxq_s16): Remove.
2798 (vqdmladhq_s16): Remove.
2799 (vqrdmlsdhxq_s32): Remove.
2800 (vqrdmlsdhq_s32): Remove.
2801 (vqrdmladhxq_s32): Remove.
2802 (vqrdmladhq_s32): Remove.
2803 (vqdmlsdhxq_s32): Remove.
2804 (vqdmlsdhq_s32): Remove.
2805 (vqdmladhxq_s32): Remove.
2806 (vqdmladhq_s32): Remove.
2807 (vqdmladhq_m_s8): Remove.
2808 (vqdmladhq_m_s32): Remove.
2809 (vqdmladhq_m_s16): Remove.
2810 (vqdmladhxq_m_s8): Remove.
2811 (vqdmladhxq_m_s32): Remove.
2812 (vqdmladhxq_m_s16): Remove.
2813 (vqdmlsdhq_m_s8): Remove.
2814 (vqdmlsdhq_m_s32): Remove.
2815 (vqdmlsdhq_m_s16): Remove.
2816 (vqdmlsdhxq_m_s8): Remove.
2817 (vqdmlsdhxq_m_s32): Remove.
2818 (vqdmlsdhxq_m_s16): Remove.
2819 (vqrdmladhq_m_s8): Remove.
2820 (vqrdmladhq_m_s32): Remove.
2821 (vqrdmladhq_m_s16): Remove.
2822 (vqrdmladhxq_m_s8): Remove.
2823 (vqrdmladhxq_m_s32): Remove.
2824 (vqrdmladhxq_m_s16): Remove.
2825 (vqrdmlsdhq_m_s8): Remove.
2826 (vqrdmlsdhq_m_s32): Remove.
2827 (vqrdmlsdhq_m_s16): Remove.
2828 (vqrdmlsdhxq_m_s8): Remove.
2829 (vqrdmlsdhxq_m_s32): Remove.
2830 (vqrdmlsdhxq_m_s16): Remove.
2831 (__arm_vqrdmlsdhxq_s8): Remove.
2832 (__arm_vqrdmlsdhq_s8): Remove.
2833 (__arm_vqrdmladhxq_s8): Remove.
2834 (__arm_vqrdmladhq_s8): Remove.
2835 (__arm_vqdmlsdhxq_s8): Remove.
2836 (__arm_vqdmlsdhq_s8): Remove.
2837 (__arm_vqdmladhxq_s8): Remove.
2838 (__arm_vqdmladhq_s8): Remove.
2839 (__arm_vqrdmlsdhxq_s16): Remove.
2840 (__arm_vqrdmlsdhq_s16): Remove.
2841 (__arm_vqrdmladhxq_s16): Remove.
2842 (__arm_vqrdmladhq_s16): Remove.
2843 (__arm_vqdmlsdhxq_s16): Remove.
2844 (__arm_vqdmlsdhq_s16): Remove.
2845 (__arm_vqdmladhxq_s16): Remove.
2846 (__arm_vqdmladhq_s16): Remove.
2847 (__arm_vqrdmlsdhxq_s32): Remove.
2848 (__arm_vqrdmlsdhq_s32): Remove.
2849 (__arm_vqrdmladhxq_s32): Remove.
2850 (__arm_vqrdmladhq_s32): Remove.
2851 (__arm_vqdmlsdhxq_s32): Remove.
2852 (__arm_vqdmlsdhq_s32): Remove.
2853 (__arm_vqdmladhxq_s32): Remove.
2854 (__arm_vqdmladhq_s32): Remove.
2855 (__arm_vqdmladhq_m_s8): Remove.
2856 (__arm_vqdmladhq_m_s32): Remove.
2857 (__arm_vqdmladhq_m_s16): Remove.
2858 (__arm_vqdmladhxq_m_s8): Remove.
2859 (__arm_vqdmladhxq_m_s32): Remove.
2860 (__arm_vqdmladhxq_m_s16): Remove.
2861 (__arm_vqdmlsdhq_m_s8): Remove.
2862 (__arm_vqdmlsdhq_m_s32): Remove.
2863 (__arm_vqdmlsdhq_m_s16): Remove.
2864 (__arm_vqdmlsdhxq_m_s8): Remove.
2865 (__arm_vqdmlsdhxq_m_s32): Remove.
2866 (__arm_vqdmlsdhxq_m_s16): Remove.
2867 (__arm_vqrdmladhq_m_s8): Remove.
2868 (__arm_vqrdmladhq_m_s32): Remove.
2869 (__arm_vqrdmladhq_m_s16): Remove.
2870 (__arm_vqrdmladhxq_m_s8): Remove.
2871 (__arm_vqrdmladhxq_m_s32): Remove.
2872 (__arm_vqrdmladhxq_m_s16): Remove.
2873 (__arm_vqrdmlsdhq_m_s8): Remove.
2874 (__arm_vqrdmlsdhq_m_s32): Remove.
2875 (__arm_vqrdmlsdhq_m_s16): Remove.
2876 (__arm_vqrdmlsdhxq_m_s8): Remove.
2877 (__arm_vqrdmlsdhxq_m_s32): Remove.
2878 (__arm_vqrdmlsdhxq_m_s16): Remove.
2879 (__arm_vqrdmlsdhxq): Remove.
2880 (__arm_vqrdmlsdhq): Remove.
2881 (__arm_vqrdmladhxq): Remove.
2882 (__arm_vqrdmladhq): Remove.
2883 (__arm_vqdmlsdhxq): Remove.
2884 (__arm_vqdmlsdhq): Remove.
2885 (__arm_vqdmladhxq): Remove.
2886 (__arm_vqdmladhq): Remove.
2887 (__arm_vqdmladhq_m): Remove.
2888 (__arm_vqdmladhxq_m): Remove.
2889 (__arm_vqdmlsdhq_m): Remove.
2890 (__arm_vqdmlsdhxq_m): Remove.
2891 (__arm_vqrdmladhq_m): Remove.
2892 (__arm_vqrdmladhxq_m): Remove.
2893 (__arm_vqrdmlsdhq_m): Remove.
2894 (__arm_vqrdmlsdhxq_m): Remove.
2896 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2898 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
2899 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
2900 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
2901 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
2902 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
2903 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
2904 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
2905 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
2906 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
2907 (mve_vqdmladhq_s<mode>): Merge into ...
2908 (@mve_<mve_insn>q_<supf><mode>): ... this.
2910 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2912 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
2913 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
2915 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2917 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
2918 (vmlsldavaq, vmlsldavaxq): New.
2919 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
2920 (vmlsldavaq, vmlsldavaxq): New.
2921 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
2922 (vmlsldavaq, vmlsldavaxq): New.
2923 * config/arm/arm_mve.h (vmlaldavaq): Remove.
2924 (vmlaldavaxq): Remove.
2925 (vmlsldavaq): Remove.
2926 (vmlsldavaxq): Remove.
2927 (vmlaldavaq_p): Remove.
2928 (vmlaldavaxq_p): Remove.
2929 (vmlsldavaq_p): Remove.
2930 (vmlsldavaxq_p): Remove.
2931 (vmlaldavaq_s16): Remove.
2932 (vmlaldavaxq_s16): Remove.
2933 (vmlsldavaq_s16): Remove.
2934 (vmlsldavaxq_s16): Remove.
2935 (vmlaldavaq_u16): Remove.
2936 (vmlaldavaq_s32): Remove.
2937 (vmlaldavaxq_s32): Remove.
2938 (vmlsldavaq_s32): Remove.
2939 (vmlsldavaxq_s32): Remove.
2940 (vmlaldavaq_u32): Remove.
2941 (vmlaldavaq_p_s32): Remove.
2942 (vmlaldavaq_p_s16): Remove.
2943 (vmlaldavaq_p_u32): Remove.
2944 (vmlaldavaq_p_u16): Remove.
2945 (vmlaldavaxq_p_s32): Remove.
2946 (vmlaldavaxq_p_s16): Remove.
2947 (vmlsldavaq_p_s32): Remove.
2948 (vmlsldavaq_p_s16): Remove.
2949 (vmlsldavaxq_p_s32): Remove.
2950 (vmlsldavaxq_p_s16): Remove.
2951 (__arm_vmlaldavaq_s16): Remove.
2952 (__arm_vmlaldavaxq_s16): Remove.
2953 (__arm_vmlsldavaq_s16): Remove.
2954 (__arm_vmlsldavaxq_s16): Remove.
2955 (__arm_vmlaldavaq_u16): Remove.
2956 (__arm_vmlaldavaq_s32): Remove.
2957 (__arm_vmlaldavaxq_s32): Remove.
2958 (__arm_vmlsldavaq_s32): Remove.
2959 (__arm_vmlsldavaxq_s32): Remove.
2960 (__arm_vmlaldavaq_u32): Remove.
2961 (__arm_vmlaldavaq_p_s32): Remove.
2962 (__arm_vmlaldavaq_p_s16): Remove.
2963 (__arm_vmlaldavaq_p_u32): Remove.
2964 (__arm_vmlaldavaq_p_u16): Remove.
2965 (__arm_vmlaldavaxq_p_s32): Remove.
2966 (__arm_vmlaldavaxq_p_s16): Remove.
2967 (__arm_vmlsldavaq_p_s32): Remove.
2968 (__arm_vmlsldavaq_p_s16): Remove.
2969 (__arm_vmlsldavaxq_p_s32): Remove.
2970 (__arm_vmlsldavaxq_p_s16): Remove.
2971 (__arm_vmlaldavaq): Remove.
2972 (__arm_vmlaldavaxq): Remove.
2973 (__arm_vmlsldavaq): Remove.
2974 (__arm_vmlsldavaxq): Remove.
2975 (__arm_vmlaldavaq_p): Remove.
2976 (__arm_vmlaldavaxq_p): Remove.
2977 (__arm_vmlsldavaq_p): Remove.
2978 (__arm_vmlsldavaxq_p): Remove.
2980 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2982 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
2984 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
2985 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
2986 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
2987 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
2988 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
2989 (mve_vmlaldavaxq_s<mode>): Merge into ...
2990 (@mve_<mve_insn>q_<supf><mode>): ... this.
2991 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
2992 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
2994 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2996 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2998 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
2999 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
3001 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3003 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
3004 (vrmlsldavhq, vrmlsldavhxq): New.
3005 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
3006 (vrmlsldavhq, vrmlsldavhxq): New.
3007 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
3008 (vrmlsldavhq, vrmlsldavhxq): New.
3009 * config/arm/arm-mve-builtins-functions.h
3010 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
3011 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
3012 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
3013 (vrmlsldavhxq): Remove.
3014 (vrmlsldavhq): Remove.
3015 (vrmlaldavhxq): Remove.
3016 (vrmlaldavhq_p): Remove.
3017 (vrmlaldavhxq_p): Remove.
3018 (vrmlsldavhq_p): Remove.
3019 (vrmlsldavhxq_p): Remove.
3020 (vrmlaldavhq_u32): Remove.
3021 (vrmlsldavhxq_s32): Remove.
3022 (vrmlsldavhq_s32): Remove.
3023 (vrmlaldavhxq_s32): Remove.
3024 (vrmlaldavhq_s32): Remove.
3025 (vrmlaldavhq_p_s32): Remove.
3026 (vrmlaldavhxq_p_s32): Remove.
3027 (vrmlsldavhq_p_s32): Remove.
3028 (vrmlsldavhxq_p_s32): Remove.
3029 (vrmlaldavhq_p_u32): Remove.
3030 (__arm_vrmlaldavhq_u32): Remove.
3031 (__arm_vrmlsldavhxq_s32): Remove.
3032 (__arm_vrmlsldavhq_s32): Remove.
3033 (__arm_vrmlaldavhxq_s32): Remove.
3034 (__arm_vrmlaldavhq_s32): Remove.
3035 (__arm_vrmlaldavhq_p_s32): Remove.
3036 (__arm_vrmlaldavhxq_p_s32): Remove.
3037 (__arm_vrmlsldavhq_p_s32): Remove.
3038 (__arm_vrmlsldavhxq_p_s32): Remove.
3039 (__arm_vrmlaldavhq_p_u32): Remove.
3040 (__arm_vrmlaldavhq): Remove.
3041 (__arm_vrmlsldavhxq): Remove.
3042 (__arm_vrmlsldavhq): Remove.
3043 (__arm_vrmlaldavhxq): Remove.
3044 (__arm_vrmlaldavhq_p): Remove.
3045 (__arm_vrmlaldavhxq_p): Remove.
3046 (__arm_vrmlsldavhq_p): Remove.
3047 (__arm_vrmlsldavhxq_p): Remove.
3049 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3051 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
3053 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
3054 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
3055 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
3056 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
3057 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
3058 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
3059 (@mve_<mve_insn>q_<supf>v4si): ... this.
3060 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
3061 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
3063 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3065 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3067 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
3068 (vmlsldavq, vmlsldavxq): New.
3069 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
3070 (vmlsldavq, vmlsldavxq): New.
3071 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
3072 (vmlsldavq, vmlsldavxq): New.
3073 * config/arm/arm_mve.h (vmlaldavq): Remove.
3074 (vmlsldavxq): Remove.
3075 (vmlsldavq): Remove.
3076 (vmlaldavxq): Remove.
3077 (vmlaldavq_p): Remove.
3078 (vmlaldavxq_p): Remove.
3079 (vmlsldavq_p): Remove.
3080 (vmlsldavxq_p): Remove.
3081 (vmlaldavq_u16): Remove.
3082 (vmlsldavxq_s16): Remove.
3083 (vmlsldavq_s16): Remove.
3084 (vmlaldavxq_s16): Remove.
3085 (vmlaldavq_s16): Remove.
3086 (vmlaldavq_u32): Remove.
3087 (vmlsldavxq_s32): Remove.
3088 (vmlsldavq_s32): Remove.
3089 (vmlaldavxq_s32): Remove.
3090 (vmlaldavq_s32): Remove.
3091 (vmlaldavq_p_s16): Remove.
3092 (vmlaldavxq_p_s16): Remove.
3093 (vmlsldavq_p_s16): Remove.
3094 (vmlsldavxq_p_s16): Remove.
3095 (vmlaldavq_p_u16): Remove.
3096 (vmlaldavq_p_s32): Remove.
3097 (vmlaldavxq_p_s32): Remove.
3098 (vmlsldavq_p_s32): Remove.
3099 (vmlsldavxq_p_s32): Remove.
3100 (vmlaldavq_p_u32): Remove.
3101 (__arm_vmlaldavq_u16): Remove.
3102 (__arm_vmlsldavxq_s16): Remove.
3103 (__arm_vmlsldavq_s16): Remove.
3104 (__arm_vmlaldavxq_s16): Remove.
3105 (__arm_vmlaldavq_s16): Remove.
3106 (__arm_vmlaldavq_u32): Remove.
3107 (__arm_vmlsldavxq_s32): Remove.
3108 (__arm_vmlsldavq_s32): Remove.
3109 (__arm_vmlaldavxq_s32): Remove.
3110 (__arm_vmlaldavq_s32): Remove.
3111 (__arm_vmlaldavq_p_s16): Remove.
3112 (__arm_vmlaldavxq_p_s16): Remove.
3113 (__arm_vmlsldavq_p_s16): Remove.
3114 (__arm_vmlsldavxq_p_s16): Remove.
3115 (__arm_vmlaldavq_p_u16): Remove.
3116 (__arm_vmlaldavq_p_s32): Remove.
3117 (__arm_vmlaldavxq_p_s32): Remove.
3118 (__arm_vmlsldavq_p_s32): Remove.
3119 (__arm_vmlsldavxq_p_s32): Remove.
3120 (__arm_vmlaldavq_p_u32): Remove.
3121 (__arm_vmlaldavq): Remove.
3122 (__arm_vmlsldavxq): Remove.
3123 (__arm_vmlsldavq): Remove.
3124 (__arm_vmlaldavxq): Remove.
3125 (__arm_vmlaldavq_p): Remove.
3126 (__arm_vmlaldavxq_p): Remove.
3127 (__arm_vmlsldavq_p): Remove.
3128 (__arm_vmlsldavxq_p): Remove.
3130 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3132 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
3133 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
3134 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
3135 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
3136 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
3137 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
3138 (mve_vmlsldavxq_s<mode>): Merge into ...
3139 (@mve_<mve_insn>q_<supf><mode>): ... this.
3140 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
3141 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
3143 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3145 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3147 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
3148 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
3150 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3152 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
3153 * config/arm/arm-mve-builtins-base.def (vabavq): New.
3154 * config/arm/arm-mve-builtins-base.h (vabavq): New.
3155 * config/arm/arm_mve.h (vabavq): Remove.
3157 (vabavq_s8): Remove.
3158 (vabavq_s16): Remove.
3159 (vabavq_s32): Remove.
3160 (vabavq_u8): Remove.
3161 (vabavq_u16): Remove.
3162 (vabavq_u32): Remove.
3163 (vabavq_p_s8): Remove.
3164 (vabavq_p_u8): Remove.
3165 (vabavq_p_s16): Remove.
3166 (vabavq_p_u16): Remove.
3167 (vabavq_p_s32): Remove.
3168 (vabavq_p_u32): Remove.
3169 (__arm_vabavq_s8): Remove.
3170 (__arm_vabavq_s16): Remove.
3171 (__arm_vabavq_s32): Remove.
3172 (__arm_vabavq_u8): Remove.
3173 (__arm_vabavq_u16): Remove.
3174 (__arm_vabavq_u32): Remove.
3175 (__arm_vabavq_p_s8): Remove.
3176 (__arm_vabavq_p_u8): Remove.
3177 (__arm_vabavq_p_s16): Remove.
3178 (__arm_vabavq_p_u16): Remove.
3179 (__arm_vabavq_p_s32): Remove.
3180 (__arm_vabavq_p_u32): Remove.
3181 (__arm_vabavq): Remove.
3182 (__arm_vabavq_p): Remove.
3184 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3186 * config/arm/iterators.md (mve_insn): Add vabav.
3187 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
3188 (@mve_<mve_insn>q_<supf><mode>): ... this,.
3189 (mve_vabavq_p_<supf><mode>): Rename into ...
3190 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
3192 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3194 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
3195 (vmlsdavaq, vmlsdavaxq): New.
3196 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
3197 (vmlsdavaq, vmlsdavaxq): New.
3198 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
3199 (vmlsdavaq, vmlsdavaxq): New.
3200 * config/arm/arm_mve.h (vmladavaq): Remove.
3201 (vmlsdavaxq): Remove.
3202 (vmlsdavaq): Remove.
3203 (vmladavaxq): Remove.
3204 (vmladavaq_p): Remove.
3205 (vmladavaxq_p): Remove.
3206 (vmlsdavaq_p): Remove.
3207 (vmlsdavaxq_p): Remove.
3208 (vmladavaq_u8): Remove.
3209 (vmlsdavaxq_s8): Remove.
3210 (vmlsdavaq_s8): Remove.
3211 (vmladavaxq_s8): Remove.
3212 (vmladavaq_s8): Remove.
3213 (vmladavaq_u16): Remove.
3214 (vmlsdavaxq_s16): Remove.
3215 (vmlsdavaq_s16): Remove.
3216 (vmladavaxq_s16): Remove.
3217 (vmladavaq_s16): Remove.
3218 (vmladavaq_u32): Remove.
3219 (vmlsdavaxq_s32): Remove.
3220 (vmlsdavaq_s32): Remove.
3221 (vmladavaxq_s32): Remove.
3222 (vmladavaq_s32): Remove.
3223 (vmladavaq_p_s8): Remove.
3224 (vmladavaq_p_s32): Remove.
3225 (vmladavaq_p_s16): Remove.
3226 (vmladavaq_p_u8): Remove.
3227 (vmladavaq_p_u32): Remove.
3228 (vmladavaq_p_u16): Remove.
3229 (vmladavaxq_p_s8): Remove.
3230 (vmladavaxq_p_s32): Remove.
3231 (vmladavaxq_p_s16): Remove.
3232 (vmlsdavaq_p_s8): Remove.
3233 (vmlsdavaq_p_s32): Remove.
3234 (vmlsdavaq_p_s16): Remove.
3235 (vmlsdavaxq_p_s8): Remove.
3236 (vmlsdavaxq_p_s32): Remove.
3237 (vmlsdavaxq_p_s16): Remove.
3238 (__arm_vmladavaq_u8): Remove.
3239 (__arm_vmlsdavaxq_s8): Remove.
3240 (__arm_vmlsdavaq_s8): Remove.
3241 (__arm_vmladavaxq_s8): Remove.
3242 (__arm_vmladavaq_s8): Remove.
3243 (__arm_vmladavaq_u16): Remove.
3244 (__arm_vmlsdavaxq_s16): Remove.
3245 (__arm_vmlsdavaq_s16): Remove.
3246 (__arm_vmladavaxq_s16): Remove.
3247 (__arm_vmladavaq_s16): Remove.
3248 (__arm_vmladavaq_u32): Remove.
3249 (__arm_vmlsdavaxq_s32): Remove.
3250 (__arm_vmlsdavaq_s32): Remove.
3251 (__arm_vmladavaxq_s32): Remove.
3252 (__arm_vmladavaq_s32): Remove.
3253 (__arm_vmladavaq_p_s8): Remove.
3254 (__arm_vmladavaq_p_s32): Remove.
3255 (__arm_vmladavaq_p_s16): Remove.
3256 (__arm_vmladavaq_p_u8): Remove.
3257 (__arm_vmladavaq_p_u32): Remove.
3258 (__arm_vmladavaq_p_u16): Remove.
3259 (__arm_vmladavaxq_p_s8): Remove.
3260 (__arm_vmladavaxq_p_s32): Remove.
3261 (__arm_vmladavaxq_p_s16): Remove.
3262 (__arm_vmlsdavaq_p_s8): Remove.
3263 (__arm_vmlsdavaq_p_s32): Remove.
3264 (__arm_vmlsdavaq_p_s16): Remove.
3265 (__arm_vmlsdavaxq_p_s8): Remove.
3266 (__arm_vmlsdavaxq_p_s32): Remove.
3267 (__arm_vmlsdavaxq_p_s16): Remove.
3268 (__arm_vmladavaq): Remove.
3269 (__arm_vmlsdavaxq): Remove.
3270 (__arm_vmlsdavaq): Remove.
3271 (__arm_vmladavaxq): Remove.
3272 (__arm_vmladavaq_p): Remove.
3273 (__arm_vmladavaxq_p): Remove.
3274 (__arm_vmlsdavaq_p): Remove.
3275 (__arm_vmlsdavaxq_p): Remove.
3277 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3279 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
3280 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
3282 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3284 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
3285 (vmlsdavq, vmlsdavxq): New.
3286 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
3287 (vmlsdavq, vmlsdavxq): New.
3288 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
3289 (vmlsdavq, vmlsdavxq): New.
3290 * config/arm/arm_mve.h (vmladavq): Remove.
3291 (vmlsdavxq): Remove.
3293 (vmladavxq): Remove.
3294 (vmladavq_p): Remove.
3295 (vmlsdavxq_p): Remove.
3296 (vmlsdavq_p): Remove.
3297 (vmladavxq_p): Remove.
3298 (vmladavq_u8): Remove.
3299 (vmlsdavxq_s8): Remove.
3300 (vmlsdavq_s8): Remove.
3301 (vmladavxq_s8): Remove.
3302 (vmladavq_s8): Remove.
3303 (vmladavq_u16): Remove.
3304 (vmlsdavxq_s16): Remove.
3305 (vmlsdavq_s16): Remove.
3306 (vmladavxq_s16): Remove.
3307 (vmladavq_s16): Remove.
3308 (vmladavq_u32): Remove.
3309 (vmlsdavxq_s32): Remove.
3310 (vmlsdavq_s32): Remove.
3311 (vmladavxq_s32): Remove.
3312 (vmladavq_s32): Remove.
3313 (vmladavq_p_u8): Remove.
3314 (vmlsdavxq_p_s8): Remove.
3315 (vmlsdavq_p_s8): Remove.
3316 (vmladavxq_p_s8): Remove.
3317 (vmladavq_p_s8): Remove.
3318 (vmladavq_p_u16): Remove.
3319 (vmlsdavxq_p_s16): Remove.
3320 (vmlsdavq_p_s16): Remove.
3321 (vmladavxq_p_s16): Remove.
3322 (vmladavq_p_s16): Remove.
3323 (vmladavq_p_u32): Remove.
3324 (vmlsdavxq_p_s32): Remove.
3325 (vmlsdavq_p_s32): Remove.
3326 (vmladavxq_p_s32): Remove.
3327 (vmladavq_p_s32): Remove.
3328 (__arm_vmladavq_u8): Remove.
3329 (__arm_vmlsdavxq_s8): Remove.
3330 (__arm_vmlsdavq_s8): Remove.
3331 (__arm_vmladavxq_s8): Remove.
3332 (__arm_vmladavq_s8): Remove.
3333 (__arm_vmladavq_u16): Remove.
3334 (__arm_vmlsdavxq_s16): Remove.
3335 (__arm_vmlsdavq_s16): Remove.
3336 (__arm_vmladavxq_s16): Remove.
3337 (__arm_vmladavq_s16): Remove.
3338 (__arm_vmladavq_u32): Remove.
3339 (__arm_vmlsdavxq_s32): Remove.
3340 (__arm_vmlsdavq_s32): Remove.
3341 (__arm_vmladavxq_s32): Remove.
3342 (__arm_vmladavq_s32): Remove.
3343 (__arm_vmladavq_p_u8): Remove.
3344 (__arm_vmlsdavxq_p_s8): Remove.
3345 (__arm_vmlsdavq_p_s8): Remove.
3346 (__arm_vmladavxq_p_s8): Remove.
3347 (__arm_vmladavq_p_s8): Remove.
3348 (__arm_vmladavq_p_u16): Remove.
3349 (__arm_vmlsdavxq_p_s16): Remove.
3350 (__arm_vmlsdavq_p_s16): Remove.
3351 (__arm_vmladavxq_p_s16): Remove.
3352 (__arm_vmladavq_p_s16): Remove.
3353 (__arm_vmladavq_p_u32): Remove.
3354 (__arm_vmlsdavxq_p_s32): Remove.
3355 (__arm_vmlsdavq_p_s32): Remove.
3356 (__arm_vmladavxq_p_s32): Remove.
3357 (__arm_vmladavq_p_s32): Remove.
3358 (__arm_vmladavq): Remove.
3359 (__arm_vmlsdavxq): Remove.
3360 (__arm_vmlsdavq): Remove.
3361 (__arm_vmladavxq): Remove.
3362 (__arm_vmladavq_p): Remove.
3363 (__arm_vmlsdavxq_p): Remove.
3364 (__arm_vmlsdavq_p): Remove.
3365 (__arm_vmladavxq_p): Remove.
3367 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3369 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
3370 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
3371 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
3372 vmlsdavax, vmlsdav, vmlsdavx.
3373 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
3374 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
3375 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
3377 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
3378 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
3379 (mve_vmlsdavxq_s<mode>): Merge into ...
3380 (@mve_<mve_insn>q_<supf><mode>): ... this.
3381 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
3382 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
3384 (@mve_<mve_insn>q_<supf><mode>): ... this.
3385 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
3386 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
3387 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3388 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
3389 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
3391 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3393 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3395 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
3396 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
3398 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3400 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
3401 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
3402 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
3403 * config/arm/arm_mve.h (vaddlvaq): Remove.
3404 (vaddlvaq_p): Remove.
3405 (vaddlvaq_u32): Remove.
3406 (vaddlvaq_s32): Remove.
3407 (vaddlvaq_p_s32): Remove.
3408 (vaddlvaq_p_u32): Remove.
3409 (__arm_vaddlvaq_u32): Remove.
3410 (__arm_vaddlvaq_s32): Remove.
3411 (__arm_vaddlvaq_p_s32): Remove.
3412 (__arm_vaddlvaq_p_u32): Remove.
3413 (__arm_vaddlvaq): Remove.
3414 (__arm_vaddlvaq_p): Remove.
3416 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3418 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
3419 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
3421 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3423 * config/arm/iterators.md (mve_insn): Add vaddlva.
3424 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
3425 (@mve_<mve_insn>q_<supf>v4si): ... this.
3426 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
3427 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3429 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
3432 * config/i386/i386.cc (ix86_widen_mult_cost):
3433 Handle V4HImode and V2SImode.
3435 2023-05-11 Andrew Pinski <apinski@marvell.com>
3437 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
3438 defined by a phi node with more than one uses, allow for the
3439 only uses are in that same defining statement.
3441 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
3443 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
3446 2023-05-11 Pan Li <pan2.li@intel.com>
3448 * config/riscv/vector.md: Add comments for simplifying to vmset.
3450 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
3452 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
3454 (v<optab><mode>3): Add vector shift pattern.
3455 * config/riscv/vector-iterators.md: New iterator.
3457 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
3459 * config/riscv/autovec.md: Use renamed functions.
3460 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
3461 (emit_vlmax_reg_op): To this.
3462 (emit_nonvlmax_op): Rename.
3463 (emit_len_op): To this.
3464 (emit_nonvlmax_binop): Rename.
3465 (emit_len_binop): To this.
3466 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
3467 (emit_pred_binop): Remove vlmax_p.
3468 (emit_vlmax_op): Rename.
3469 (emit_vlmax_reg_op): To this.
3470 (emit_nonvlmax_op): Rename.
3471 (emit_len_op): To this.
3472 (emit_nonvlmax_binop): Rename.
3473 (emit_len_binop): To this.
3474 (sew64_scalar_helper): Use renamed functions.
3475 (expand_tuple_move): Use renamed functions.
3476 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
3478 * config/riscv/vector.md: Use renamed functions.
3480 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
3481 Michael Collison <collison@rivosinc.com>
3483 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
3484 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
3485 * config/riscv/riscv-v.cc (emit_pred_op): New function.
3486 (set_expander_dest_and_mask): New function.
3487 (emit_pred_binop): New function.
3488 (emit_nonvlmax_binop): New function.
3490 2023-05-11 Pan Li <pan2.li@intel.com>
3492 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
3493 * gimple-loop-interchange.cc
3494 (tree_loop_interchange::map_inductions_to_loop): Ditto.
3495 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
3496 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
3497 * tree-ssa-loop-manip.cc (create_iv): Ditto.
3498 (tree_transform_and_unroll_loop): Ditto.
3499 (canonicalize_loop_ivs): Ditto.
3500 * tree-ssa-loop-manip.h (create_iv): Ditto.
3501 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
3502 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
3504 (vect_set_loop_condition_normal): Ditto.
3505 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
3506 * tree-vect-stmts.cc (vectorizable_store): Ditto.
3507 (vectorizable_load): Ditto.
3509 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3511 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
3512 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
3513 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
3514 * config/arm/arm_mve.h (vmovlbq): Remove.
3516 (vmovlbq_m): Remove.
3517 (vmovltq_m): Remove.
3518 (vmovlbq_x): Remove.
3519 (vmovltq_x): Remove.
3520 (vmovlbq_s8): Remove.
3521 (vmovlbq_s16): Remove.
3522 (vmovltq_s8): Remove.
3523 (vmovltq_s16): Remove.
3524 (vmovltq_u8): Remove.
3525 (vmovltq_u16): Remove.
3526 (vmovlbq_u8): Remove.
3527 (vmovlbq_u16): Remove.
3528 (vmovlbq_m_s8): Remove.
3529 (vmovltq_m_s8): Remove.
3530 (vmovlbq_m_u8): Remove.
3531 (vmovltq_m_u8): Remove.
3532 (vmovlbq_m_s16): Remove.
3533 (vmovltq_m_s16): Remove.
3534 (vmovlbq_m_u16): Remove.
3535 (vmovltq_m_u16): Remove.
3536 (vmovlbq_x_s8): Remove.
3537 (vmovlbq_x_s16): Remove.
3538 (vmovlbq_x_u8): Remove.
3539 (vmovlbq_x_u16): Remove.
3540 (vmovltq_x_s8): Remove.
3541 (vmovltq_x_s16): Remove.
3542 (vmovltq_x_u8): Remove.
3543 (vmovltq_x_u16): Remove.
3544 (__arm_vmovlbq_s8): Remove.
3545 (__arm_vmovlbq_s16): Remove.
3546 (__arm_vmovltq_s8): Remove.
3547 (__arm_vmovltq_s16): Remove.
3548 (__arm_vmovltq_u8): Remove.
3549 (__arm_vmovltq_u16): Remove.
3550 (__arm_vmovlbq_u8): Remove.
3551 (__arm_vmovlbq_u16): Remove.
3552 (__arm_vmovlbq_m_s8): Remove.
3553 (__arm_vmovltq_m_s8): Remove.
3554 (__arm_vmovlbq_m_u8): Remove.
3555 (__arm_vmovltq_m_u8): Remove.
3556 (__arm_vmovlbq_m_s16): Remove.
3557 (__arm_vmovltq_m_s16): Remove.
3558 (__arm_vmovlbq_m_u16): Remove.
3559 (__arm_vmovltq_m_u16): Remove.
3560 (__arm_vmovlbq_x_s8): Remove.
3561 (__arm_vmovlbq_x_s16): Remove.
3562 (__arm_vmovlbq_x_u8): Remove.
3563 (__arm_vmovlbq_x_u16): Remove.
3564 (__arm_vmovltq_x_s8): Remove.
3565 (__arm_vmovltq_x_s16): Remove.
3566 (__arm_vmovltq_x_u8): Remove.
3567 (__arm_vmovltq_x_u16): Remove.
3568 (__arm_vmovlbq): Remove.
3569 (__arm_vmovltq): Remove.
3570 (__arm_vmovlbq_m): Remove.
3571 (__arm_vmovltq_m): Remove.
3572 (__arm_vmovlbq_x): Remove.
3573 (__arm_vmovltq_x): Remove.
3575 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3577 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
3578 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
3580 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3582 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
3583 (VMOVLBQ, VMOVLTQ): Merge into ...
3584 (VMOVLxQ): ... this.
3585 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
3586 (VMOVLxQ_M): ... this.
3587 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
3588 (mve_vmovlbq_<supf><mode>): Merge into ...
3589 (@mve_<mve_insn>q_<supf><mode>): ... this.
3590 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
3592 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3594 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3596 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
3597 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
3598 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
3599 * config/arm/arm-mve-builtins-functions.h
3600 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
3601 * config/arm/arm_mve.h (vaddlvq): Remove.
3602 (vaddlvq_p): Remove.
3603 (vaddlvq_s32): Remove.
3604 (vaddlvq_u32): Remove.
3605 (vaddlvq_p_s32): Remove.
3606 (vaddlvq_p_u32): Remove.
3607 (__arm_vaddlvq_s32): Remove.
3608 (__arm_vaddlvq_u32): Remove.
3609 (__arm_vaddlvq_p_s32): Remove.
3610 (__arm_vaddlvq_p_u32): Remove.
3611 (__arm_vaddlvq): Remove.
3612 (__arm_vaddlvq_p): Remove.
3614 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3616 * config/arm/iterators.md (mve_insn): Add vaddlv.
3617 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
3618 (@mve_<mve_insn>q_<supf>v4si): ... this.
3619 (mve_vaddlvq_p_<supf>v4si): Rename into ...
3620 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3622 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3624 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
3625 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
3627 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3629 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
3630 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
3631 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
3632 * config/arm/arm_mve.h (vaddvaq): Remove.
3633 (vaddvaq_p): Remove.
3634 (vaddvaq_u8): Remove.
3635 (vaddvaq_s8): Remove.
3636 (vaddvaq_u16): Remove.
3637 (vaddvaq_s16): Remove.
3638 (vaddvaq_u32): Remove.
3639 (vaddvaq_s32): Remove.
3640 (vaddvaq_p_u8): Remove.
3641 (vaddvaq_p_s8): Remove.
3642 (vaddvaq_p_u16): Remove.
3643 (vaddvaq_p_s16): Remove.
3644 (vaddvaq_p_u32): Remove.
3645 (vaddvaq_p_s32): Remove.
3646 (__arm_vaddvaq_u8): Remove.
3647 (__arm_vaddvaq_s8): Remove.
3648 (__arm_vaddvaq_u16): Remove.
3649 (__arm_vaddvaq_s16): Remove.
3650 (__arm_vaddvaq_u32): Remove.
3651 (__arm_vaddvaq_s32): Remove.
3652 (__arm_vaddvaq_p_u8): Remove.
3653 (__arm_vaddvaq_p_s8): Remove.
3654 (__arm_vaddvaq_p_u16): Remove.
3655 (__arm_vaddvaq_p_s16): Remove.
3656 (__arm_vaddvaq_p_u32): Remove.
3657 (__arm_vaddvaq_p_s32): Remove.
3658 (__arm_vaddvaq): Remove.
3659 (__arm_vaddvaq_p): Remove.
3661 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3663 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
3664 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
3666 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3668 * config/arm/iterators.md (mve_insn): Add vaddva.
3669 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
3670 (@mve_<mve_insn>q_<supf><mode>): ... this.
3671 (mve_vaddvaq_p_<supf><mode>): Rename into ...
3672 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3674 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3676 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
3677 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
3678 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
3679 * config/arm/arm_mve.h (vaddvq): Remove.
3681 (vaddvq_s8): Remove.
3682 (vaddvq_s16): Remove.
3683 (vaddvq_s32): Remove.
3684 (vaddvq_u8): Remove.
3685 (vaddvq_u16): Remove.
3686 (vaddvq_u32): Remove.
3687 (vaddvq_p_u8): Remove.
3688 (vaddvq_p_s8): Remove.
3689 (vaddvq_p_u16): Remove.
3690 (vaddvq_p_s16): Remove.
3691 (vaddvq_p_u32): Remove.
3692 (vaddvq_p_s32): Remove.
3693 (__arm_vaddvq_s8): Remove.
3694 (__arm_vaddvq_s16): Remove.
3695 (__arm_vaddvq_s32): Remove.
3696 (__arm_vaddvq_u8): Remove.
3697 (__arm_vaddvq_u16): Remove.
3698 (__arm_vaddvq_u32): Remove.
3699 (__arm_vaddvq_p_u8): Remove.
3700 (__arm_vaddvq_p_s8): Remove.
3701 (__arm_vaddvq_p_u16): Remove.
3702 (__arm_vaddvq_p_s16): Remove.
3703 (__arm_vaddvq_p_u32): Remove.
3704 (__arm_vaddvq_p_s32): Remove.
3705 (__arm_vaddvq): Remove.
3706 (__arm_vaddvq_p): Remove.
3708 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3710 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
3711 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
3713 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3715 * config/arm/iterators.md (mve_insn): Add vaddv.
3716 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
3717 (@mve_<mve_insn>q_<supf><mode>): ... this.
3718 (mve_vaddvq_p_<supf><mode>): Rename into ...
3719 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3720 * config/arm/vec-common.md: Use gen_mve_q instead of
3723 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3725 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
3727 * config/arm/arm-mve-builtins-base.def (vdupq): New.
3728 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
3729 * config/arm/arm_mve.h (vdupq_n): Remove.
3731 (vdupq_n_f16): Remove.
3732 (vdupq_n_f32): Remove.
3733 (vdupq_n_s8): Remove.
3734 (vdupq_n_s16): Remove.
3735 (vdupq_n_s32): Remove.
3736 (vdupq_n_u8): Remove.
3737 (vdupq_n_u16): Remove.
3738 (vdupq_n_u32): Remove.
3739 (vdupq_m_n_u8): Remove.
3740 (vdupq_m_n_s8): Remove.
3741 (vdupq_m_n_u16): Remove.
3742 (vdupq_m_n_s16): Remove.
3743 (vdupq_m_n_u32): Remove.
3744 (vdupq_m_n_s32): Remove.
3745 (vdupq_m_n_f16): Remove.
3746 (vdupq_m_n_f32): Remove.
3747 (vdupq_x_n_s8): Remove.
3748 (vdupq_x_n_s16): Remove.
3749 (vdupq_x_n_s32): Remove.
3750 (vdupq_x_n_u8): Remove.
3751 (vdupq_x_n_u16): Remove.
3752 (vdupq_x_n_u32): Remove.
3753 (vdupq_x_n_f16): Remove.
3754 (vdupq_x_n_f32): Remove.
3755 (__arm_vdupq_n_s8): Remove.
3756 (__arm_vdupq_n_s16): Remove.
3757 (__arm_vdupq_n_s32): Remove.
3758 (__arm_vdupq_n_u8): Remove.
3759 (__arm_vdupq_n_u16): Remove.
3760 (__arm_vdupq_n_u32): Remove.
3761 (__arm_vdupq_m_n_u8): Remove.
3762 (__arm_vdupq_m_n_s8): Remove.
3763 (__arm_vdupq_m_n_u16): Remove.
3764 (__arm_vdupq_m_n_s16): Remove.
3765 (__arm_vdupq_m_n_u32): Remove.
3766 (__arm_vdupq_m_n_s32): Remove.
3767 (__arm_vdupq_x_n_s8): Remove.
3768 (__arm_vdupq_x_n_s16): Remove.
3769 (__arm_vdupq_x_n_s32): Remove.
3770 (__arm_vdupq_x_n_u8): Remove.
3771 (__arm_vdupq_x_n_u16): Remove.
3772 (__arm_vdupq_x_n_u32): Remove.
3773 (__arm_vdupq_n_f16): Remove.
3774 (__arm_vdupq_n_f32): Remove.
3775 (__arm_vdupq_m_n_f16): Remove.
3776 (__arm_vdupq_m_n_f32): Remove.
3777 (__arm_vdupq_x_n_f16): Remove.
3778 (__arm_vdupq_x_n_f32): Remove.
3779 (__arm_vdupq_n): Remove.
3780 (__arm_vdupq_m): Remove.
3782 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3784 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
3785 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
3787 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3789 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
3790 (MVE_FP_N_VDUPQ_ONLY): New.
3791 (mve_insn): Add vdupq.
3792 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
3793 (@mve_<mve_insn>q_n_f<mode>): ... this.
3794 (mve_vdupq_n_<supf><mode>): Rename into ...
3795 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3796 (mve_vdupq_m_n_<supf><mode>): Rename into ...
3797 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3798 (mve_vdupq_m_n_f<mode>): Rename into ...
3799 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
3801 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3803 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
3805 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
3807 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
3809 * config/arm/arm_mve.h (vrev16q): Remove.
3812 (vrev64q_m): Remove.
3813 (vrev16q_m): Remove.
3814 (vrev32q_m): Remove.
3815 (vrev16q_x): Remove.
3816 (vrev32q_x): Remove.
3817 (vrev64q_x): Remove.
3818 (vrev64q_f16): Remove.
3819 (vrev64q_f32): Remove.
3820 (vrev32q_f16): Remove.
3821 (vrev16q_s8): Remove.
3822 (vrev32q_s8): Remove.
3823 (vrev32q_s16): Remove.
3824 (vrev64q_s8): Remove.
3825 (vrev64q_s16): Remove.
3826 (vrev64q_s32): Remove.
3827 (vrev64q_u8): Remove.
3828 (vrev64q_u16): Remove.
3829 (vrev64q_u32): Remove.
3830 (vrev32q_u8): Remove.
3831 (vrev32q_u16): Remove.
3832 (vrev16q_u8): Remove.
3833 (vrev64q_m_u8): Remove.
3834 (vrev64q_m_s8): Remove.
3835 (vrev64q_m_u16): Remove.
3836 (vrev64q_m_s16): Remove.
3837 (vrev64q_m_u32): Remove.
3838 (vrev64q_m_s32): Remove.
3839 (vrev16q_m_s8): Remove.
3840 (vrev32q_m_f16): Remove.
3841 (vrev16q_m_u8): Remove.
3842 (vrev32q_m_s8): Remove.
3843 (vrev64q_m_f16): Remove.
3844 (vrev32q_m_u8): Remove.
3845 (vrev32q_m_s16): Remove.
3846 (vrev64q_m_f32): Remove.
3847 (vrev32q_m_u16): Remove.
3848 (vrev16q_x_s8): Remove.
3849 (vrev16q_x_u8): Remove.
3850 (vrev32q_x_s8): Remove.
3851 (vrev32q_x_s16): Remove.
3852 (vrev32q_x_u8): Remove.
3853 (vrev32q_x_u16): Remove.
3854 (vrev64q_x_s8): Remove.
3855 (vrev64q_x_s16): Remove.
3856 (vrev64q_x_s32): Remove.
3857 (vrev64q_x_u8): Remove.
3858 (vrev64q_x_u16): Remove.
3859 (vrev64q_x_u32): Remove.
3860 (vrev32q_x_f16): Remove.
3861 (vrev64q_x_f16): Remove.
3862 (vrev64q_x_f32): Remove.
3863 (__arm_vrev16q_s8): Remove.
3864 (__arm_vrev32q_s8): Remove.
3865 (__arm_vrev32q_s16): Remove.
3866 (__arm_vrev64q_s8): Remove.
3867 (__arm_vrev64q_s16): Remove.
3868 (__arm_vrev64q_s32): Remove.
3869 (__arm_vrev64q_u8): Remove.
3870 (__arm_vrev64q_u16): Remove.
3871 (__arm_vrev64q_u32): Remove.
3872 (__arm_vrev32q_u8): Remove.
3873 (__arm_vrev32q_u16): Remove.
3874 (__arm_vrev16q_u8): Remove.
3875 (__arm_vrev64q_m_u8): Remove.
3876 (__arm_vrev64q_m_s8): Remove.
3877 (__arm_vrev64q_m_u16): Remove.
3878 (__arm_vrev64q_m_s16): Remove.
3879 (__arm_vrev64q_m_u32): Remove.
3880 (__arm_vrev64q_m_s32): Remove.
3881 (__arm_vrev16q_m_s8): Remove.
3882 (__arm_vrev16q_m_u8): Remove.
3883 (__arm_vrev32q_m_s8): Remove.
3884 (__arm_vrev32q_m_u8): Remove.
3885 (__arm_vrev32q_m_s16): Remove.
3886 (__arm_vrev32q_m_u16): Remove.
3887 (__arm_vrev16q_x_s8): Remove.
3888 (__arm_vrev16q_x_u8): Remove.
3889 (__arm_vrev32q_x_s8): Remove.
3890 (__arm_vrev32q_x_s16): Remove.
3891 (__arm_vrev32q_x_u8): Remove.
3892 (__arm_vrev32q_x_u16): Remove.
3893 (__arm_vrev64q_x_s8): Remove.
3894 (__arm_vrev64q_x_s16): Remove.
3895 (__arm_vrev64q_x_s32): Remove.
3896 (__arm_vrev64q_x_u8): Remove.
3897 (__arm_vrev64q_x_u16): Remove.
3898 (__arm_vrev64q_x_u32): Remove.
3899 (__arm_vrev64q_f16): Remove.
3900 (__arm_vrev64q_f32): Remove.
3901 (__arm_vrev32q_f16): Remove.
3902 (__arm_vrev32q_m_f16): Remove.
3903 (__arm_vrev64q_m_f16): Remove.
3904 (__arm_vrev64q_m_f32): Remove.
3905 (__arm_vrev32q_x_f16): Remove.
3906 (__arm_vrev64q_x_f16): Remove.
3907 (__arm_vrev64q_x_f32): Remove.
3908 (__arm_vrev16q): Remove.
3909 (__arm_vrev32q): Remove.
3910 (__arm_vrev64q): Remove.
3911 (__arm_vrev64q_m): Remove.
3912 (__arm_vrev16q_m): Remove.
3913 (__arm_vrev32q_m): Remove.
3914 (__arm_vrev16q_x): Remove.
3915 (__arm_vrev32q_x): Remove.
3916 (__arm_vrev64q_x): Remove.
3918 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3920 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
3921 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
3922 (MVE_FP_M_VREV32Q_ONLY): New iterators.
3923 (mve_insn): Add vrev16q, vrev32q, vrev64q.
3924 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
3925 (@mve_<mve_insn>q_f<mode>): ... this
3926 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
3927 (mve_vrev64q_<supf><mode>): Rename into ...
3928 (@mve_<mve_insn>q_<supf><mode>): ... this.
3929 (mve_vrev32q_<supf><mode>): Rename into
3930 @mve_<mve_insn>q_<supf><mode>.
3931 (mve_vrev16q_<supf>v16qi): Rename into
3932 @mve_<mve_insn>q_<supf><mode>.
3933 (mve_vrev64q_m_<supf><mode>): Rename into
3934 @mve_<mve_insn>q_m_<supf><mode>.
3935 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
3936 (mve_vrev32q_m_<supf><mode>): Rename into
3937 @mve_<mve_insn>q_m_<supf><mode>.
3938 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
3939 (mve_vrev16q_m_<supf>v16qi): Rename into
3940 @mve_<mve_insn>q_m_<supf><mode>.
3942 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3944 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
3945 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
3946 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
3947 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
3948 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
3949 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
3950 * config/arm/arm-mve-builtins-functions.h (class
3951 unspec_based_mve_function_exact_insn_vcmp): New.
3952 * config/arm/arm-mve-builtins.cc
3953 (function_instance::has_inactive_argument): Handle vcmp.
3954 * config/arm/arm_mve.h (vcmpneq): Remove.
3962 (vcmpneq_m): Remove.
3963 (vcmphiq_m): Remove.
3964 (vcmpeqq_m): Remove.
3965 (vcmpcsq_m): Remove.
3966 (vcmpcsq_m_n): Remove.
3967 (vcmpltq_m): Remove.
3968 (vcmpleq_m): Remove.
3969 (vcmpgtq_m): Remove.
3970 (vcmpgeq_m): Remove.
3971 (vcmpneq_s8): Remove.
3972 (vcmpneq_s16): Remove.
3973 (vcmpneq_s32): Remove.
3974 (vcmpneq_u8): Remove.
3975 (vcmpneq_u16): Remove.
3976 (vcmpneq_u32): Remove.
3977 (vcmpneq_n_u8): Remove.
3978 (vcmphiq_u8): Remove.
3979 (vcmphiq_n_u8): Remove.
3980 (vcmpeqq_u8): Remove.
3981 (vcmpeqq_n_u8): Remove.
3982 (vcmpcsq_u8): Remove.
3983 (vcmpcsq_n_u8): Remove.
3984 (vcmpneq_n_s8): Remove.
3985 (vcmpltq_s8): Remove.
3986 (vcmpltq_n_s8): Remove.
3987 (vcmpleq_s8): Remove.
3988 (vcmpleq_n_s8): Remove.
3989 (vcmpgtq_s8): Remove.
3990 (vcmpgtq_n_s8): Remove.
3991 (vcmpgeq_s8): Remove.
3992 (vcmpgeq_n_s8): Remove.
3993 (vcmpeqq_s8): Remove.
3994 (vcmpeqq_n_s8): Remove.
3995 (vcmpneq_n_u16): Remove.
3996 (vcmphiq_u16): Remove.
3997 (vcmphiq_n_u16): Remove.
3998 (vcmpeqq_u16): Remove.
3999 (vcmpeqq_n_u16): Remove.
4000 (vcmpcsq_u16): Remove.
4001 (vcmpcsq_n_u16): Remove.
4002 (vcmpneq_n_s16): Remove.
4003 (vcmpltq_s16): Remove.
4004 (vcmpltq_n_s16): Remove.
4005 (vcmpleq_s16): Remove.
4006 (vcmpleq_n_s16): Remove.
4007 (vcmpgtq_s16): Remove.
4008 (vcmpgtq_n_s16): Remove.
4009 (vcmpgeq_s16): Remove.
4010 (vcmpgeq_n_s16): Remove.
4011 (vcmpeqq_s16): Remove.
4012 (vcmpeqq_n_s16): Remove.
4013 (vcmpneq_n_u32): Remove.
4014 (vcmphiq_u32): Remove.
4015 (vcmphiq_n_u32): Remove.
4016 (vcmpeqq_u32): Remove.
4017 (vcmpeqq_n_u32): Remove.
4018 (vcmpcsq_u32): Remove.
4019 (vcmpcsq_n_u32): Remove.
4020 (vcmpneq_n_s32): Remove.
4021 (vcmpltq_s32): Remove.
4022 (vcmpltq_n_s32): Remove.
4023 (vcmpleq_s32): Remove.
4024 (vcmpleq_n_s32): Remove.
4025 (vcmpgtq_s32): Remove.
4026 (vcmpgtq_n_s32): Remove.
4027 (vcmpgeq_s32): Remove.
4028 (vcmpgeq_n_s32): Remove.
4029 (vcmpeqq_s32): Remove.
4030 (vcmpeqq_n_s32): Remove.
4031 (vcmpneq_n_f16): Remove.
4032 (vcmpneq_f16): Remove.
4033 (vcmpltq_n_f16): Remove.
4034 (vcmpltq_f16): Remove.
4035 (vcmpleq_n_f16): Remove.
4036 (vcmpleq_f16): Remove.
4037 (vcmpgtq_n_f16): Remove.
4038 (vcmpgtq_f16): Remove.
4039 (vcmpgeq_n_f16): Remove.
4040 (vcmpgeq_f16): Remove.
4041 (vcmpeqq_n_f16): Remove.
4042 (vcmpeqq_f16): Remove.
4043 (vcmpneq_n_f32): Remove.
4044 (vcmpneq_f32): Remove.
4045 (vcmpltq_n_f32): Remove.
4046 (vcmpltq_f32): Remove.
4047 (vcmpleq_n_f32): Remove.
4048 (vcmpleq_f32): Remove.
4049 (vcmpgtq_n_f32): Remove.
4050 (vcmpgtq_f32): Remove.
4051 (vcmpgeq_n_f32): Remove.
4052 (vcmpgeq_f32): Remove.
4053 (vcmpeqq_n_f32): Remove.
4054 (vcmpeqq_f32): Remove.
4055 (vcmpeqq_m_f16): Remove.
4056 (vcmpeqq_m_f32): Remove.
4057 (vcmpneq_m_u8): Remove.
4058 (vcmpneq_m_n_u8): Remove.
4059 (vcmphiq_m_u8): Remove.
4060 (vcmphiq_m_n_u8): Remove.
4061 (vcmpeqq_m_u8): Remove.
4062 (vcmpeqq_m_n_u8): Remove.
4063 (vcmpcsq_m_u8): Remove.
4064 (vcmpcsq_m_n_u8): Remove.
4065 (vcmpneq_m_s8): Remove.
4066 (vcmpneq_m_n_s8): Remove.
4067 (vcmpltq_m_s8): Remove.
4068 (vcmpltq_m_n_s8): Remove.
4069 (vcmpleq_m_s8): Remove.
4070 (vcmpleq_m_n_s8): Remove.
4071 (vcmpgtq_m_s8): Remove.
4072 (vcmpgtq_m_n_s8): Remove.
4073 (vcmpgeq_m_s8): Remove.
4074 (vcmpgeq_m_n_s8): Remove.
4075 (vcmpeqq_m_s8): Remove.
4076 (vcmpeqq_m_n_s8): Remove.
4077 (vcmpneq_m_u16): Remove.
4078 (vcmpneq_m_n_u16): Remove.
4079 (vcmphiq_m_u16): Remove.
4080 (vcmphiq_m_n_u16): Remove.
4081 (vcmpeqq_m_u16): Remove.
4082 (vcmpeqq_m_n_u16): Remove.
4083 (vcmpcsq_m_u16): Remove.
4084 (vcmpcsq_m_n_u16): Remove.
4085 (vcmpneq_m_s16): Remove.
4086 (vcmpneq_m_n_s16): Remove.
4087 (vcmpltq_m_s16): Remove.
4088 (vcmpltq_m_n_s16): Remove.
4089 (vcmpleq_m_s16): Remove.
4090 (vcmpleq_m_n_s16): Remove.
4091 (vcmpgtq_m_s16): Remove.
4092 (vcmpgtq_m_n_s16): Remove.
4093 (vcmpgeq_m_s16): Remove.
4094 (vcmpgeq_m_n_s16): Remove.
4095 (vcmpeqq_m_s16): Remove.
4096 (vcmpeqq_m_n_s16): Remove.
4097 (vcmpneq_m_u32): Remove.
4098 (vcmpneq_m_n_u32): Remove.
4099 (vcmphiq_m_u32): Remove.
4100 (vcmphiq_m_n_u32): Remove.
4101 (vcmpeqq_m_u32): Remove.
4102 (vcmpeqq_m_n_u32): Remove.
4103 (vcmpcsq_m_u32): Remove.
4104 (vcmpcsq_m_n_u32): Remove.
4105 (vcmpneq_m_s32): Remove.
4106 (vcmpneq_m_n_s32): Remove.
4107 (vcmpltq_m_s32): Remove.
4108 (vcmpltq_m_n_s32): Remove.
4109 (vcmpleq_m_s32): Remove.
4110 (vcmpleq_m_n_s32): Remove.
4111 (vcmpgtq_m_s32): Remove.
4112 (vcmpgtq_m_n_s32): Remove.
4113 (vcmpgeq_m_s32): Remove.
4114 (vcmpgeq_m_n_s32): Remove.
4115 (vcmpeqq_m_s32): Remove.
4116 (vcmpeqq_m_n_s32): Remove.
4117 (vcmpeqq_m_n_f16): Remove.
4118 (vcmpgeq_m_f16): Remove.
4119 (vcmpgeq_m_n_f16): Remove.
4120 (vcmpgtq_m_f16): Remove.
4121 (vcmpgtq_m_n_f16): Remove.
4122 (vcmpleq_m_f16): Remove.
4123 (vcmpleq_m_n_f16): Remove.
4124 (vcmpltq_m_f16): Remove.
4125 (vcmpltq_m_n_f16): Remove.
4126 (vcmpneq_m_f16): Remove.
4127 (vcmpneq_m_n_f16): Remove.
4128 (vcmpeqq_m_n_f32): Remove.
4129 (vcmpgeq_m_f32): Remove.
4130 (vcmpgeq_m_n_f32): Remove.
4131 (vcmpgtq_m_f32): Remove.
4132 (vcmpgtq_m_n_f32): Remove.
4133 (vcmpleq_m_f32): Remove.
4134 (vcmpleq_m_n_f32): Remove.
4135 (vcmpltq_m_f32): Remove.
4136 (vcmpltq_m_n_f32): Remove.
4137 (vcmpneq_m_f32): Remove.
4138 (vcmpneq_m_n_f32): Remove.
4139 (__arm_vcmpneq_s8): Remove.
4140 (__arm_vcmpneq_s16): Remove.
4141 (__arm_vcmpneq_s32): Remove.
4142 (__arm_vcmpneq_u8): Remove.
4143 (__arm_vcmpneq_u16): Remove.
4144 (__arm_vcmpneq_u32): Remove.
4145 (__arm_vcmpneq_n_u8): Remove.
4146 (__arm_vcmphiq_u8): Remove.
4147 (__arm_vcmphiq_n_u8): Remove.
4148 (__arm_vcmpeqq_u8): Remove.
4149 (__arm_vcmpeqq_n_u8): Remove.
4150 (__arm_vcmpcsq_u8): Remove.
4151 (__arm_vcmpcsq_n_u8): Remove.
4152 (__arm_vcmpneq_n_s8): Remove.
4153 (__arm_vcmpltq_s8): Remove.
4154 (__arm_vcmpltq_n_s8): Remove.
4155 (__arm_vcmpleq_s8): Remove.
4156 (__arm_vcmpleq_n_s8): Remove.
4157 (__arm_vcmpgtq_s8): Remove.
4158 (__arm_vcmpgtq_n_s8): Remove.
4159 (__arm_vcmpgeq_s8): Remove.
4160 (__arm_vcmpgeq_n_s8): Remove.
4161 (__arm_vcmpeqq_s8): Remove.
4162 (__arm_vcmpeqq_n_s8): Remove.
4163 (__arm_vcmpneq_n_u16): Remove.
4164 (__arm_vcmphiq_u16): Remove.
4165 (__arm_vcmphiq_n_u16): Remove.
4166 (__arm_vcmpeqq_u16): Remove.
4167 (__arm_vcmpeqq_n_u16): Remove.
4168 (__arm_vcmpcsq_u16): Remove.
4169 (__arm_vcmpcsq_n_u16): Remove.
4170 (__arm_vcmpneq_n_s16): Remove.
4171 (__arm_vcmpltq_s16): Remove.
4172 (__arm_vcmpltq_n_s16): Remove.
4173 (__arm_vcmpleq_s16): Remove.
4174 (__arm_vcmpleq_n_s16): Remove.
4175 (__arm_vcmpgtq_s16): Remove.
4176 (__arm_vcmpgtq_n_s16): Remove.
4177 (__arm_vcmpgeq_s16): Remove.
4178 (__arm_vcmpgeq_n_s16): Remove.
4179 (__arm_vcmpeqq_s16): Remove.
4180 (__arm_vcmpeqq_n_s16): Remove.
4181 (__arm_vcmpneq_n_u32): Remove.
4182 (__arm_vcmphiq_u32): Remove.
4183 (__arm_vcmphiq_n_u32): Remove.
4184 (__arm_vcmpeqq_u32): Remove.
4185 (__arm_vcmpeqq_n_u32): Remove.
4186 (__arm_vcmpcsq_u32): Remove.
4187 (__arm_vcmpcsq_n_u32): Remove.
4188 (__arm_vcmpneq_n_s32): Remove.
4189 (__arm_vcmpltq_s32): Remove.
4190 (__arm_vcmpltq_n_s32): Remove.
4191 (__arm_vcmpleq_s32): Remove.
4192 (__arm_vcmpleq_n_s32): Remove.
4193 (__arm_vcmpgtq_s32): Remove.
4194 (__arm_vcmpgtq_n_s32): Remove.
4195 (__arm_vcmpgeq_s32): Remove.
4196 (__arm_vcmpgeq_n_s32): Remove.
4197 (__arm_vcmpeqq_s32): Remove.
4198 (__arm_vcmpeqq_n_s32): Remove.
4199 (__arm_vcmpneq_m_u8): Remove.
4200 (__arm_vcmpneq_m_n_u8): Remove.
4201 (__arm_vcmphiq_m_u8): Remove.
4202 (__arm_vcmphiq_m_n_u8): Remove.
4203 (__arm_vcmpeqq_m_u8): Remove.
4204 (__arm_vcmpeqq_m_n_u8): Remove.
4205 (__arm_vcmpcsq_m_u8): Remove.
4206 (__arm_vcmpcsq_m_n_u8): Remove.
4207 (__arm_vcmpneq_m_s8): Remove.
4208 (__arm_vcmpneq_m_n_s8): Remove.
4209 (__arm_vcmpltq_m_s8): Remove.
4210 (__arm_vcmpltq_m_n_s8): Remove.
4211 (__arm_vcmpleq_m_s8): Remove.
4212 (__arm_vcmpleq_m_n_s8): Remove.
4213 (__arm_vcmpgtq_m_s8): Remove.
4214 (__arm_vcmpgtq_m_n_s8): Remove.
4215 (__arm_vcmpgeq_m_s8): Remove.
4216 (__arm_vcmpgeq_m_n_s8): Remove.
4217 (__arm_vcmpeqq_m_s8): Remove.
4218 (__arm_vcmpeqq_m_n_s8): Remove.
4219 (__arm_vcmpneq_m_u16): Remove.
4220 (__arm_vcmpneq_m_n_u16): Remove.
4221 (__arm_vcmphiq_m_u16): Remove.
4222 (__arm_vcmphiq_m_n_u16): Remove.
4223 (__arm_vcmpeqq_m_u16): Remove.
4224 (__arm_vcmpeqq_m_n_u16): Remove.
4225 (__arm_vcmpcsq_m_u16): Remove.
4226 (__arm_vcmpcsq_m_n_u16): Remove.
4227 (__arm_vcmpneq_m_s16): Remove.
4228 (__arm_vcmpneq_m_n_s16): Remove.
4229 (__arm_vcmpltq_m_s16): Remove.
4230 (__arm_vcmpltq_m_n_s16): Remove.
4231 (__arm_vcmpleq_m_s16): Remove.
4232 (__arm_vcmpleq_m_n_s16): Remove.
4233 (__arm_vcmpgtq_m_s16): Remove.
4234 (__arm_vcmpgtq_m_n_s16): Remove.
4235 (__arm_vcmpgeq_m_s16): Remove.
4236 (__arm_vcmpgeq_m_n_s16): Remove.
4237 (__arm_vcmpeqq_m_s16): Remove.
4238 (__arm_vcmpeqq_m_n_s16): Remove.
4239 (__arm_vcmpneq_m_u32): Remove.
4240 (__arm_vcmpneq_m_n_u32): Remove.
4241 (__arm_vcmphiq_m_u32): Remove.
4242 (__arm_vcmphiq_m_n_u32): Remove.
4243 (__arm_vcmpeqq_m_u32): Remove.
4244 (__arm_vcmpeqq_m_n_u32): Remove.
4245 (__arm_vcmpcsq_m_u32): Remove.
4246 (__arm_vcmpcsq_m_n_u32): Remove.
4247 (__arm_vcmpneq_m_s32): Remove.
4248 (__arm_vcmpneq_m_n_s32): Remove.
4249 (__arm_vcmpltq_m_s32): Remove.
4250 (__arm_vcmpltq_m_n_s32): Remove.
4251 (__arm_vcmpleq_m_s32): Remove.
4252 (__arm_vcmpleq_m_n_s32): Remove.
4253 (__arm_vcmpgtq_m_s32): Remove.
4254 (__arm_vcmpgtq_m_n_s32): Remove.
4255 (__arm_vcmpgeq_m_s32): Remove.
4256 (__arm_vcmpgeq_m_n_s32): Remove.
4257 (__arm_vcmpeqq_m_s32): Remove.
4258 (__arm_vcmpeqq_m_n_s32): Remove.
4259 (__arm_vcmpneq_n_f16): Remove.
4260 (__arm_vcmpneq_f16): Remove.
4261 (__arm_vcmpltq_n_f16): Remove.
4262 (__arm_vcmpltq_f16): Remove.
4263 (__arm_vcmpleq_n_f16): Remove.
4264 (__arm_vcmpleq_f16): Remove.
4265 (__arm_vcmpgtq_n_f16): Remove.
4266 (__arm_vcmpgtq_f16): Remove.
4267 (__arm_vcmpgeq_n_f16): Remove.
4268 (__arm_vcmpgeq_f16): Remove.
4269 (__arm_vcmpeqq_n_f16): Remove.
4270 (__arm_vcmpeqq_f16): Remove.
4271 (__arm_vcmpneq_n_f32): Remove.
4272 (__arm_vcmpneq_f32): Remove.
4273 (__arm_vcmpltq_n_f32): Remove.
4274 (__arm_vcmpltq_f32): Remove.
4275 (__arm_vcmpleq_n_f32): Remove.
4276 (__arm_vcmpleq_f32): Remove.
4277 (__arm_vcmpgtq_n_f32): Remove.
4278 (__arm_vcmpgtq_f32): Remove.
4279 (__arm_vcmpgeq_n_f32): Remove.
4280 (__arm_vcmpgeq_f32): Remove.
4281 (__arm_vcmpeqq_n_f32): Remove.
4282 (__arm_vcmpeqq_f32): Remove.
4283 (__arm_vcmpeqq_m_f16): Remove.
4284 (__arm_vcmpeqq_m_f32): Remove.
4285 (__arm_vcmpeqq_m_n_f16): Remove.
4286 (__arm_vcmpgeq_m_f16): Remove.
4287 (__arm_vcmpgeq_m_n_f16): Remove.
4288 (__arm_vcmpgtq_m_f16): Remove.
4289 (__arm_vcmpgtq_m_n_f16): Remove.
4290 (__arm_vcmpleq_m_f16): Remove.
4291 (__arm_vcmpleq_m_n_f16): Remove.
4292 (__arm_vcmpltq_m_f16): Remove.
4293 (__arm_vcmpltq_m_n_f16): Remove.
4294 (__arm_vcmpneq_m_f16): Remove.
4295 (__arm_vcmpneq_m_n_f16): Remove.
4296 (__arm_vcmpeqq_m_n_f32): Remove.
4297 (__arm_vcmpgeq_m_f32): Remove.
4298 (__arm_vcmpgeq_m_n_f32): Remove.
4299 (__arm_vcmpgtq_m_f32): Remove.
4300 (__arm_vcmpgtq_m_n_f32): Remove.
4301 (__arm_vcmpleq_m_f32): Remove.
4302 (__arm_vcmpleq_m_n_f32): Remove.
4303 (__arm_vcmpltq_m_f32): Remove.
4304 (__arm_vcmpltq_m_n_f32): Remove.
4305 (__arm_vcmpneq_m_f32): Remove.
4306 (__arm_vcmpneq_m_n_f32): Remove.
4307 (__arm_vcmpneq): Remove.
4308 (__arm_vcmphiq): Remove.
4309 (__arm_vcmpeqq): Remove.
4310 (__arm_vcmpcsq): Remove.
4311 (__arm_vcmpltq): Remove.
4312 (__arm_vcmpleq): Remove.
4313 (__arm_vcmpgtq): Remove.
4314 (__arm_vcmpgeq): Remove.
4315 (__arm_vcmpneq_m): Remove.
4316 (__arm_vcmphiq_m): Remove.
4317 (__arm_vcmpeqq_m): Remove.
4318 (__arm_vcmpcsq_m): Remove.
4319 (__arm_vcmpltq_m): Remove.
4320 (__arm_vcmpleq_m): Remove.
4321 (__arm_vcmpgtq_m): Remove.
4322 (__arm_vcmpgeq_m): Remove.
4324 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4326 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
4327 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
4329 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4331 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
4332 (MVE_CMP_M_N_F, mve_cmp_op1): New.
4335 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
4336 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
4337 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
4338 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
4339 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
4340 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
4341 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
4342 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
4343 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
4344 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
4346 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
4347 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
4348 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
4349 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
4350 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
4352 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
4353 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
4354 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
4355 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
4356 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
4358 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
4360 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
4361 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
4362 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
4365 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
4367 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
4368 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
4369 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
4370 Simplify parity(rotate(x,y)) as parity(x).
4372 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4374 * config/riscv/autovec.md (@vec_series<mode>): New pattern
4375 * config/riscv/riscv-protos.h (expand_vec_series): New function.
4376 * config/riscv/riscv-v.cc (emit_binop): Ditto.
4377 (emit_index_op): Ditto.
4378 (expand_vec_series): Ditto.
4379 (expand_const_vector): Add series vector handling.
4380 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
4382 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
4384 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
4385 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
4386 (*concat<mode><dwi>3_2): Likewise.
4387 (*concat<mode><dwi>3_3): Likewise.
4388 (*concat<mode><dwi>3_4): Likewise.
4389 (*concat<mode><dwi>3_5): Likewise.
4390 (*concat<mode><dwi>3_6): Likewise.
4391 (*concat<mode><dwi>3_7): Likewise.
4393 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
4396 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
4397 (<insn>v4qiv4hi2): New expander.
4398 (<insn>v2hiv2si2): Ditto.
4399 (<insn>v2qiv2si2): Ditto.
4400 (<insn>v2qiv2hi2): Ditto.
4402 2023-05-10 Jeff Law <jlaw@ventanamicro>
4404 * config/h8300/constraints.md (Q): Make this a special memory
4408 2023-05-10 Jakub Jelinek <jakub@redhat.com>
4411 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
4412 if t is void_list_node.
4414 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4416 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
4417 (aarch64_sqmovun<mode>_insn_be): Delete.
4418 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
4419 (aarch64_sqmovun<mode>): Delete expander.
4421 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4424 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
4426 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
4427 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
4428 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
4430 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4433 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
4435 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
4436 (aarch64_<sur>qadd<mode>): Rename to...
4437 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
4439 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4441 * config/aarch64/aarch64-simd.md
4442 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
4443 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
4444 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
4445 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
4447 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4450 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
4451 (aarch64_xtn<mode>_insn_be): Likewise.
4452 (trunc<mode><Vnarrowq>2): Rename to...
4453 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
4454 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
4455 (aarch64_<su>qmovn<mode>): Likewise.
4456 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
4457 (aarch64_<su>qmovn<mode>_insn_le): Delete.
4458 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
4460 2023-05-10 Li Xu <xuli1@eswincomputing.com>
4462 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
4463 intruction replace null avl with (const_int 0).
4465 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4467 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
4470 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4473 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
4474 (source_equal_p): Fix dead loop in vsetvl avl checking.
4476 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
4478 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
4479 of modeadjusted_dccr.
4481 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4483 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
4484 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
4485 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
4486 * config/arm/arm-mve-builtins.cc
4487 (function_instance::has_inactive_argument): Handle vmaxaq and
4489 * config/arm/arm_mve.h (vminaq): Remove.
4493 (vminaq_s8): Remove.
4494 (vmaxaq_s8): Remove.
4495 (vminaq_s16): Remove.
4496 (vmaxaq_s16): Remove.
4497 (vminaq_s32): Remove.
4498 (vmaxaq_s32): Remove.
4499 (vminaq_m_s8): Remove.
4500 (vmaxaq_m_s8): Remove.
4501 (vminaq_m_s16): Remove.
4502 (vmaxaq_m_s16): Remove.
4503 (vminaq_m_s32): Remove.
4504 (vmaxaq_m_s32): Remove.
4505 (__arm_vminaq_s8): Remove.
4506 (__arm_vmaxaq_s8): Remove.
4507 (__arm_vminaq_s16): Remove.
4508 (__arm_vmaxaq_s16): Remove.
4509 (__arm_vminaq_s32): Remove.
4510 (__arm_vmaxaq_s32): Remove.
4511 (__arm_vminaq_m_s8): Remove.
4512 (__arm_vmaxaq_m_s8): Remove.
4513 (__arm_vminaq_m_s16): Remove.
4514 (__arm_vmaxaq_m_s16): Remove.
4515 (__arm_vminaq_m_s32): Remove.
4516 (__arm_vmaxaq_m_s32): Remove.
4517 (__arm_vminaq): Remove.
4518 (__arm_vmaxaq): Remove.
4519 (__arm_vminaq_m): Remove.
4520 (__arm_vmaxaq_m): Remove.
4522 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4524 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
4526 (mve_insn): Add vmaxa, vmina.
4527 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
4528 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
4530 (@mve_<mve_insn>q_<supf><mode>): ... this.
4531 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
4532 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4534 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4536 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
4537 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
4539 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4541 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
4542 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
4543 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
4544 * config/arm/arm-mve-builtins.cc
4545 (function_instance::has_inactive_argument): Handle vmaxnmaq and
4547 * config/arm/arm_mve.h (vminnmaq): Remove.
4549 (vmaxnmaq_m): Remove.
4550 (vminnmaq_m): Remove.
4551 (vminnmaq_f16): Remove.
4552 (vmaxnmaq_f16): Remove.
4553 (vminnmaq_f32): Remove.
4554 (vmaxnmaq_f32): Remove.
4555 (vmaxnmaq_m_f16): Remove.
4556 (vminnmaq_m_f16): Remove.
4557 (vmaxnmaq_m_f32): Remove.
4558 (vminnmaq_m_f32): Remove.
4559 (__arm_vminnmaq_f16): Remove.
4560 (__arm_vmaxnmaq_f16): Remove.
4561 (__arm_vminnmaq_f32): Remove.
4562 (__arm_vmaxnmaq_f32): Remove.
4563 (__arm_vmaxnmaq_m_f16): Remove.
4564 (__arm_vminnmaq_m_f16): Remove.
4565 (__arm_vmaxnmaq_m_f32): Remove.
4566 (__arm_vminnmaq_m_f32): Remove.
4567 (__arm_vminnmaq): Remove.
4568 (__arm_vmaxnmaq): Remove.
4569 (__arm_vmaxnmaq_m): Remove.
4570 (__arm_vminnmaq_m): Remove.
4572 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4574 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
4575 (MVE_VMAXNMA_VMINNMAQ_M): New.
4576 (mve_insn): Add vmaxnma, vminnma.
4577 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
4579 (@mve_<mve_insn>q_f<mode>): ... this.
4580 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
4581 (@mve_<mve_insn>q_m_f<mode>): ... this.
4583 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4585 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
4586 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
4587 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
4588 (vminnmavq, vminnmvq): New.
4589 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
4590 (vminnmavq, vminnmvq): New.
4591 * config/arm/arm_mve.h (vminnmvq): Remove.
4592 (vminnmavq): Remove.
4594 (vmaxnmavq): Remove.
4595 (vmaxnmavq_p): Remove.
4596 (vmaxnmvq_p): Remove.
4597 (vminnmavq_p): Remove.
4598 (vminnmvq_p): Remove.
4599 (vminnmvq_f16): Remove.
4600 (vminnmavq_f16): Remove.
4601 (vmaxnmvq_f16): Remove.
4602 (vmaxnmavq_f16): Remove.
4603 (vminnmvq_f32): Remove.
4604 (vminnmavq_f32): Remove.
4605 (vmaxnmvq_f32): Remove.
4606 (vmaxnmavq_f32): Remove.
4607 (vmaxnmavq_p_f16): Remove.
4608 (vmaxnmvq_p_f16): Remove.
4609 (vminnmavq_p_f16): Remove.
4610 (vminnmvq_p_f16): Remove.
4611 (vmaxnmavq_p_f32): Remove.
4612 (vmaxnmvq_p_f32): Remove.
4613 (vminnmavq_p_f32): Remove.
4614 (vminnmvq_p_f32): Remove.
4615 (__arm_vminnmvq_f16): Remove.
4616 (__arm_vminnmavq_f16): Remove.
4617 (__arm_vmaxnmvq_f16): Remove.
4618 (__arm_vmaxnmavq_f16): Remove.
4619 (__arm_vminnmvq_f32): Remove.
4620 (__arm_vminnmavq_f32): Remove.
4621 (__arm_vmaxnmvq_f32): Remove.
4622 (__arm_vmaxnmavq_f32): Remove.
4623 (__arm_vmaxnmavq_p_f16): Remove.
4624 (__arm_vmaxnmvq_p_f16): Remove.
4625 (__arm_vminnmavq_p_f16): Remove.
4626 (__arm_vminnmvq_p_f16): Remove.
4627 (__arm_vmaxnmavq_p_f32): Remove.
4628 (__arm_vmaxnmvq_p_f32): Remove.
4629 (__arm_vminnmavq_p_f32): Remove.
4630 (__arm_vminnmvq_p_f32): Remove.
4631 (__arm_vminnmvq): Remove.
4632 (__arm_vminnmavq): Remove.
4633 (__arm_vmaxnmvq): Remove.
4634 (__arm_vmaxnmavq): Remove.
4635 (__arm_vmaxnmavq_p): Remove.
4636 (__arm_vmaxnmvq_p): Remove.
4637 (__arm_vminnmavq_p): Remove.
4638 (__arm_vminnmvq_p): Remove.
4639 (__arm_vmaxnmavq_m): Remove.
4640 (__arm_vmaxnmvq_m): Remove.
4642 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4644 * config/arm/arm-mve-builtins-functions.h
4645 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
4647 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4649 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
4650 (MVE_VMAXNMxV_MINNMxVQ_P): New.
4651 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
4652 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
4653 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
4654 (@mve_<mve_insn>q_f<mode>): ... this.
4655 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
4656 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
4657 (@mve_<mve_insn>q_p_f<mode>): ... this.
4659 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4661 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
4662 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
4663 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
4664 * config/arm/arm_mve.h (vminnmq): Remove.
4666 (vmaxnmq_m): Remove.
4667 (vminnmq_m): Remove.
4668 (vminnmq_x): Remove.
4669 (vmaxnmq_x): Remove.
4670 (vminnmq_f16): Remove.
4671 (vmaxnmq_f16): Remove.
4672 (vminnmq_f32): Remove.
4673 (vmaxnmq_f32): Remove.
4674 (vmaxnmq_m_f32): Remove.
4675 (vmaxnmq_m_f16): Remove.
4676 (vminnmq_m_f32): Remove.
4677 (vminnmq_m_f16): Remove.
4678 (vminnmq_x_f16): Remove.
4679 (vminnmq_x_f32): Remove.
4680 (vmaxnmq_x_f16): Remove.
4681 (vmaxnmq_x_f32): Remove.
4682 (__arm_vminnmq_f16): Remove.
4683 (__arm_vmaxnmq_f16): Remove.
4684 (__arm_vminnmq_f32): Remove.
4685 (__arm_vmaxnmq_f32): Remove.
4686 (__arm_vmaxnmq_m_f32): Remove.
4687 (__arm_vmaxnmq_m_f16): Remove.
4688 (__arm_vminnmq_m_f32): Remove.
4689 (__arm_vminnmq_m_f16): Remove.
4690 (__arm_vminnmq_x_f16): Remove.
4691 (__arm_vminnmq_x_f32): Remove.
4692 (__arm_vmaxnmq_x_f16): Remove.
4693 (__arm_vmaxnmq_x_f32): Remove.
4694 (__arm_vminnmq): Remove.
4695 (__arm_vmaxnmq): Remove.
4696 (__arm_vmaxnmq_m): Remove.
4697 (__arm_vminnmq_m): Remove.
4698 (__arm_vminnmq_x): Remove.
4699 (__arm_vmaxnmq_x): Remove.
4701 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4703 * config/arm/iterators.md (MAX_MIN_F): New.
4704 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
4705 (mve_insn): Add vmaxnm, vminnm.
4706 (max_min_f_str): New.
4707 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
4709 (@mve_<max_min_f_str>q_f<mode>): ... this.
4710 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
4711 (@mve_<mve_insn>q_m_f<mode>): ... this.
4713 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4715 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
4716 (smax<mode>3): Likewise.
4718 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4720 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
4721 (FUNCTION_PRED_P_S): New.
4722 (vmaxavq, vminavq, vmaxvq, vminvq): New.
4723 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
4725 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
4727 * config/arm/arm_mve.h (vminvq): Remove.
4731 (vminvq_u8): Remove.
4732 (vmaxvq_u8): Remove.
4733 (vminvq_s8): Remove.
4734 (vmaxvq_s8): Remove.
4735 (vminvq_u16): Remove.
4736 (vmaxvq_u16): Remove.
4737 (vminvq_s16): Remove.
4738 (vmaxvq_s16): Remove.
4739 (vminvq_u32): Remove.
4740 (vmaxvq_u32): Remove.
4741 (vminvq_s32): Remove.
4742 (vmaxvq_s32): Remove.
4743 (vminvq_p_u8): Remove.
4744 (vmaxvq_p_u8): Remove.
4745 (vminvq_p_s8): Remove.
4746 (vmaxvq_p_s8): Remove.
4747 (vminvq_p_u16): Remove.
4748 (vmaxvq_p_u16): Remove.
4749 (vminvq_p_s16): Remove.
4750 (vmaxvq_p_s16): Remove.
4751 (vminvq_p_u32): Remove.
4752 (vmaxvq_p_u32): Remove.
4753 (vminvq_p_s32): Remove.
4754 (vmaxvq_p_s32): Remove.
4755 (__arm_vminvq_u8): Remove.
4756 (__arm_vmaxvq_u8): Remove.
4757 (__arm_vminvq_s8): Remove.
4758 (__arm_vmaxvq_s8): Remove.
4759 (__arm_vminvq_u16): Remove.
4760 (__arm_vmaxvq_u16): Remove.
4761 (__arm_vminvq_s16): Remove.
4762 (__arm_vmaxvq_s16): Remove.
4763 (__arm_vminvq_u32): Remove.
4764 (__arm_vmaxvq_u32): Remove.
4765 (__arm_vminvq_s32): Remove.
4766 (__arm_vmaxvq_s32): Remove.
4767 (__arm_vminvq_p_u8): Remove.
4768 (__arm_vmaxvq_p_u8): Remove.
4769 (__arm_vminvq_p_s8): Remove.
4770 (__arm_vmaxvq_p_s8): Remove.
4771 (__arm_vminvq_p_u16): Remove.
4772 (__arm_vmaxvq_p_u16): Remove.
4773 (__arm_vminvq_p_s16): Remove.
4774 (__arm_vmaxvq_p_s16): Remove.
4775 (__arm_vminvq_p_u32): Remove.
4776 (__arm_vmaxvq_p_u32): Remove.
4777 (__arm_vminvq_p_s32): Remove.
4778 (__arm_vmaxvq_p_s32): Remove.
4779 (__arm_vminvq): Remove.
4780 (__arm_vmaxvq): Remove.
4781 (__arm_vminvq_p): Remove.
4782 (__arm_vmaxvq_p): Remove.
4785 (vminavq_p): Remove.
4786 (vmaxavq_p): Remove.
4787 (vminavq_s8): Remove.
4788 (vmaxavq_s8): Remove.
4789 (vminavq_s16): Remove.
4790 (vmaxavq_s16): Remove.
4791 (vminavq_s32): Remove.
4792 (vmaxavq_s32): Remove.
4793 (vminavq_p_s8): Remove.
4794 (vmaxavq_p_s8): Remove.
4795 (vminavq_p_s16): Remove.
4796 (vmaxavq_p_s16): Remove.
4797 (vminavq_p_s32): Remove.
4798 (vmaxavq_p_s32): Remove.
4799 (__arm_vminavq_s8): Remove.
4800 (__arm_vmaxavq_s8): Remove.
4801 (__arm_vminavq_s16): Remove.
4802 (__arm_vmaxavq_s16): Remove.
4803 (__arm_vminavq_s32): Remove.
4804 (__arm_vmaxavq_s32): Remove.
4805 (__arm_vminavq_p_s8): Remove.
4806 (__arm_vmaxavq_p_s8): Remove.
4807 (__arm_vminavq_p_s16): Remove.
4808 (__arm_vmaxavq_p_s16): Remove.
4809 (__arm_vminavq_p_s32): Remove.
4810 (__arm_vmaxavq_p_s32): Remove.
4811 (__arm_vminavq): Remove.
4812 (__arm_vmaxavq): Remove.
4813 (__arm_vminavq_p): Remove.
4814 (__arm_vmaxavq_p): Remove.
4816 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4818 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
4819 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
4820 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
4821 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
4822 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
4823 (@mve_<mve_insn>q_<supf><mode>): ... this.
4824 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
4825 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
4826 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4828 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4830 * config/arm/arm-mve-builtins-functions.h (class
4831 unspec_mve_function_exact_insn_pred_p): New.
4833 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4835 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
4836 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
4838 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4840 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
4841 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
4843 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
4845 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
4847 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
4848 (ADJUST_REG_ALLOC_ORDER): Likewise.
4849 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
4851 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
4852 Upa rather than Upl for unpredicated movprfx alternatives.
4854 2023-05-09 Jeff Law <jlaw@ventanamicro>
4856 * config/h8300/testcompare.md: Add peephole2 which uses a memory
4857 load to set flags, thus eliminating a compare against zero.
4859 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4861 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
4862 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
4863 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
4864 * config/arm/arm_mve.h (vshlltq): Remove.
4866 (vshllbq_m): Remove.
4867 (vshlltq_m): Remove.
4868 (vshllbq_x): Remove.
4869 (vshlltq_x): Remove.
4870 (vshlltq_n_u8): Remove.
4871 (vshllbq_n_u8): Remove.
4872 (vshlltq_n_s8): Remove.
4873 (vshllbq_n_s8): Remove.
4874 (vshlltq_n_u16): Remove.
4875 (vshllbq_n_u16): Remove.
4876 (vshlltq_n_s16): Remove.
4877 (vshllbq_n_s16): Remove.
4878 (vshllbq_m_n_s8): Remove.
4879 (vshllbq_m_n_s16): Remove.
4880 (vshllbq_m_n_u8): Remove.
4881 (vshllbq_m_n_u16): Remove.
4882 (vshlltq_m_n_s8): Remove.
4883 (vshlltq_m_n_s16): Remove.
4884 (vshlltq_m_n_u8): Remove.
4885 (vshlltq_m_n_u16): Remove.
4886 (vshllbq_x_n_s8): Remove.
4887 (vshllbq_x_n_s16): Remove.
4888 (vshllbq_x_n_u8): Remove.
4889 (vshllbq_x_n_u16): Remove.
4890 (vshlltq_x_n_s8): Remove.
4891 (vshlltq_x_n_s16): Remove.
4892 (vshlltq_x_n_u8): Remove.
4893 (vshlltq_x_n_u16): Remove.
4894 (__arm_vshlltq_n_u8): Remove.
4895 (__arm_vshllbq_n_u8): Remove.
4896 (__arm_vshlltq_n_s8): Remove.
4897 (__arm_vshllbq_n_s8): Remove.
4898 (__arm_vshlltq_n_u16): Remove.
4899 (__arm_vshllbq_n_u16): Remove.
4900 (__arm_vshlltq_n_s16): Remove.
4901 (__arm_vshllbq_n_s16): Remove.
4902 (__arm_vshllbq_m_n_s8): Remove.
4903 (__arm_vshllbq_m_n_s16): Remove.
4904 (__arm_vshllbq_m_n_u8): Remove.
4905 (__arm_vshllbq_m_n_u16): Remove.
4906 (__arm_vshlltq_m_n_s8): Remove.
4907 (__arm_vshlltq_m_n_s16): Remove.
4908 (__arm_vshlltq_m_n_u8): Remove.
4909 (__arm_vshlltq_m_n_u16): Remove.
4910 (__arm_vshllbq_x_n_s8): Remove.
4911 (__arm_vshllbq_x_n_s16): Remove.
4912 (__arm_vshllbq_x_n_u8): Remove.
4913 (__arm_vshllbq_x_n_u16): Remove.
4914 (__arm_vshlltq_x_n_s8): Remove.
4915 (__arm_vshlltq_x_n_s16): Remove.
4916 (__arm_vshlltq_x_n_u8): Remove.
4917 (__arm_vshlltq_x_n_u16): Remove.
4918 (__arm_vshlltq): Remove.
4919 (__arm_vshllbq): Remove.
4920 (__arm_vshllbq_m): Remove.
4921 (__arm_vshlltq_m): Remove.
4922 (__arm_vshllbq_x): Remove.
4923 (__arm_vshlltq_x): Remove.
4925 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4927 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
4928 (VSHLLBQ_N, VSHLLTQ_N): Remove.
4930 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
4932 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
4933 (mve_vshlltq_n_<supf><mode>): Merge into ...
4934 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4935 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
4937 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4939 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4941 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
4942 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
4944 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4946 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
4947 (vqmovntq, vqmovunbq, vqmovuntq): New.
4948 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
4949 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
4950 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
4951 (vqmovntq, vqmovunbq, vqmovuntq): New.
4952 * config/arm/arm-mve-builtins.cc
4953 (function_instance::has_inactive_argument): Handle vmovnbq,
4954 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
4955 * config/arm/arm_mve.h (vqmovntq): Remove.
4957 (vqmovnbq_m): Remove.
4958 (vqmovntq_m): Remove.
4959 (vqmovntq_u16): Remove.
4960 (vqmovnbq_u16): Remove.
4961 (vqmovntq_s16): Remove.
4962 (vqmovnbq_s16): Remove.
4963 (vqmovntq_u32): Remove.
4964 (vqmovnbq_u32): Remove.
4965 (vqmovntq_s32): Remove.
4966 (vqmovnbq_s32): Remove.
4967 (vqmovnbq_m_s16): Remove.
4968 (vqmovntq_m_s16): Remove.
4969 (vqmovnbq_m_u16): Remove.
4970 (vqmovntq_m_u16): Remove.
4971 (vqmovnbq_m_s32): Remove.
4972 (vqmovntq_m_s32): Remove.
4973 (vqmovnbq_m_u32): Remove.
4974 (vqmovntq_m_u32): Remove.
4975 (__arm_vqmovntq_u16): Remove.
4976 (__arm_vqmovnbq_u16): Remove.
4977 (__arm_vqmovntq_s16): Remove.
4978 (__arm_vqmovnbq_s16): Remove.
4979 (__arm_vqmovntq_u32): Remove.
4980 (__arm_vqmovnbq_u32): Remove.
4981 (__arm_vqmovntq_s32): Remove.
4982 (__arm_vqmovnbq_s32): Remove.
4983 (__arm_vqmovnbq_m_s16): Remove.
4984 (__arm_vqmovntq_m_s16): Remove.
4985 (__arm_vqmovnbq_m_u16): Remove.
4986 (__arm_vqmovntq_m_u16): Remove.
4987 (__arm_vqmovnbq_m_s32): Remove.
4988 (__arm_vqmovntq_m_s32): Remove.
4989 (__arm_vqmovnbq_m_u32): Remove.
4990 (__arm_vqmovntq_m_u32): Remove.
4991 (__arm_vqmovntq): Remove.
4992 (__arm_vqmovnbq): Remove.
4993 (__arm_vqmovnbq_m): Remove.
4994 (__arm_vqmovntq_m): Remove.
4997 (vmovnbq_m): Remove.
4998 (vmovntq_m): Remove.
4999 (vmovntq_u16): Remove.
5000 (vmovnbq_u16): Remove.
5001 (vmovntq_s16): Remove.
5002 (vmovnbq_s16): Remove.
5003 (vmovntq_u32): Remove.
5004 (vmovnbq_u32): Remove.
5005 (vmovntq_s32): Remove.
5006 (vmovnbq_s32): Remove.
5007 (vmovnbq_m_s16): Remove.
5008 (vmovntq_m_s16): Remove.
5009 (vmovnbq_m_u16): Remove.
5010 (vmovntq_m_u16): Remove.
5011 (vmovnbq_m_s32): Remove.
5012 (vmovntq_m_s32): Remove.
5013 (vmovnbq_m_u32): Remove.
5014 (vmovntq_m_u32): Remove.
5015 (__arm_vmovntq_u16): Remove.
5016 (__arm_vmovnbq_u16): Remove.
5017 (__arm_vmovntq_s16): Remove.
5018 (__arm_vmovnbq_s16): Remove.
5019 (__arm_vmovntq_u32): Remove.
5020 (__arm_vmovnbq_u32): Remove.
5021 (__arm_vmovntq_s32): Remove.
5022 (__arm_vmovnbq_s32): Remove.
5023 (__arm_vmovnbq_m_s16): Remove.
5024 (__arm_vmovntq_m_s16): Remove.
5025 (__arm_vmovnbq_m_u16): Remove.
5026 (__arm_vmovntq_m_u16): Remove.
5027 (__arm_vmovnbq_m_s32): Remove.
5028 (__arm_vmovntq_m_s32): Remove.
5029 (__arm_vmovnbq_m_u32): Remove.
5030 (__arm_vmovntq_m_u32): Remove.
5031 (__arm_vmovntq): Remove.
5032 (__arm_vmovnbq): Remove.
5033 (__arm_vmovnbq_m): Remove.
5034 (__arm_vmovntq_m): Remove.
5035 (vqmovuntq): Remove.
5036 (vqmovunbq): Remove.
5037 (vqmovunbq_m): Remove.
5038 (vqmovuntq_m): Remove.
5039 (vqmovuntq_s16): Remove.
5040 (vqmovunbq_s16): Remove.
5041 (vqmovuntq_s32): Remove.
5042 (vqmovunbq_s32): Remove.
5043 (vqmovunbq_m_s16): Remove.
5044 (vqmovuntq_m_s16): Remove.
5045 (vqmovunbq_m_s32): Remove.
5046 (vqmovuntq_m_s32): Remove.
5047 (__arm_vqmovuntq_s16): Remove.
5048 (__arm_vqmovunbq_s16): Remove.
5049 (__arm_vqmovuntq_s32): Remove.
5050 (__arm_vqmovunbq_s32): Remove.
5051 (__arm_vqmovunbq_m_s16): Remove.
5052 (__arm_vqmovuntq_m_s16): Remove.
5053 (__arm_vqmovunbq_m_s32): Remove.
5054 (__arm_vqmovuntq_m_s32): Remove.
5055 (__arm_vqmovuntq): Remove.
5056 (__arm_vqmovunbq): Remove.
5057 (__arm_vqmovunbq_m): Remove.
5058 (__arm_vqmovuntq_m): Remove.
5060 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5062 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
5063 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
5066 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
5068 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
5069 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
5070 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
5071 (mve_vqmovuntq_s<mode>): Merge into ...
5072 (@mve_<mve_insn>q_<supf><mode>): ... this.
5073 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
5074 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
5075 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
5076 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5078 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5080 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
5081 (binary_move_narrow_unsigned): New.
5082 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
5083 (binary_move_narrow_unsigned): New.
5085 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5087 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
5088 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
5089 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
5090 (vrndpq, vrndq, vrndxq): New.
5091 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
5092 (vrndpq, vrndq, vrndxq): New.
5093 * config/arm/arm_mve.h (vrndxq): Remove.
5111 (vrndxq_f16): Remove.
5112 (vrndxq_f32): Remove.
5113 (vrndq_f16): Remove.
5114 (vrndq_f32): Remove.
5115 (vrndpq_f16): Remove.
5116 (vrndpq_f32): Remove.
5117 (vrndnq_f16): Remove.
5118 (vrndnq_f32): Remove.
5119 (vrndmq_f16): Remove.
5120 (vrndmq_f32): Remove.
5121 (vrndaq_f16): Remove.
5122 (vrndaq_f32): Remove.
5123 (vrndaq_m_f16): Remove.
5124 (vrndmq_m_f16): Remove.
5125 (vrndnq_m_f16): Remove.
5126 (vrndpq_m_f16): Remove.
5127 (vrndq_m_f16): Remove.
5128 (vrndxq_m_f16): Remove.
5129 (vrndaq_m_f32): Remove.
5130 (vrndmq_m_f32): Remove.
5131 (vrndnq_m_f32): Remove.
5132 (vrndpq_m_f32): Remove.
5133 (vrndq_m_f32): Remove.
5134 (vrndxq_m_f32): Remove.
5135 (vrndq_x_f16): Remove.
5136 (vrndq_x_f32): Remove.
5137 (vrndnq_x_f16): Remove.
5138 (vrndnq_x_f32): Remove.
5139 (vrndmq_x_f16): Remove.
5140 (vrndmq_x_f32): Remove.
5141 (vrndpq_x_f16): Remove.
5142 (vrndpq_x_f32): Remove.
5143 (vrndaq_x_f16): Remove.
5144 (vrndaq_x_f32): Remove.
5145 (vrndxq_x_f16): Remove.
5146 (vrndxq_x_f32): Remove.
5147 (__arm_vrndxq_f16): Remove.
5148 (__arm_vrndxq_f32): Remove.
5149 (__arm_vrndq_f16): Remove.
5150 (__arm_vrndq_f32): Remove.
5151 (__arm_vrndpq_f16): Remove.
5152 (__arm_vrndpq_f32): Remove.
5153 (__arm_vrndnq_f16): Remove.
5154 (__arm_vrndnq_f32): Remove.
5155 (__arm_vrndmq_f16): Remove.
5156 (__arm_vrndmq_f32): Remove.
5157 (__arm_vrndaq_f16): Remove.
5158 (__arm_vrndaq_f32): Remove.
5159 (__arm_vrndaq_m_f16): Remove.
5160 (__arm_vrndmq_m_f16): Remove.
5161 (__arm_vrndnq_m_f16): Remove.
5162 (__arm_vrndpq_m_f16): Remove.
5163 (__arm_vrndq_m_f16): Remove.
5164 (__arm_vrndxq_m_f16): Remove.
5165 (__arm_vrndaq_m_f32): Remove.
5166 (__arm_vrndmq_m_f32): Remove.
5167 (__arm_vrndnq_m_f32): Remove.
5168 (__arm_vrndpq_m_f32): Remove.
5169 (__arm_vrndq_m_f32): Remove.
5170 (__arm_vrndxq_m_f32): Remove.
5171 (__arm_vrndq_x_f16): Remove.
5172 (__arm_vrndq_x_f32): Remove.
5173 (__arm_vrndnq_x_f16): Remove.
5174 (__arm_vrndnq_x_f32): Remove.
5175 (__arm_vrndmq_x_f16): Remove.
5176 (__arm_vrndmq_x_f32): Remove.
5177 (__arm_vrndpq_x_f16): Remove.
5178 (__arm_vrndpq_x_f32): Remove.
5179 (__arm_vrndaq_x_f16): Remove.
5180 (__arm_vrndaq_x_f32): Remove.
5181 (__arm_vrndxq_x_f16): Remove.
5182 (__arm_vrndxq_x_f32): Remove.
5183 (__arm_vrndxq): Remove.
5184 (__arm_vrndq): Remove.
5185 (__arm_vrndpq): Remove.
5186 (__arm_vrndnq): Remove.
5187 (__arm_vrndmq): Remove.
5188 (__arm_vrndaq): Remove.
5189 (__arm_vrndaq_m): Remove.
5190 (__arm_vrndmq_m): Remove.
5191 (__arm_vrndnq_m): Remove.
5192 (__arm_vrndpq_m): Remove.
5193 (__arm_vrndq_m): Remove.
5194 (__arm_vrndxq_m): Remove.
5195 (__arm_vrndq_x): Remove.
5196 (__arm_vrndnq_x): Remove.
5197 (__arm_vrndmq_x): Remove.
5198 (__arm_vrndpq_x): Remove.
5199 (__arm_vrndaq_x): Remove.
5200 (__arm_vrndxq_x): Remove.
5202 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5204 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
5205 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
5206 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
5207 (vclzq, vqabsq, vqnegq): New.
5208 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
5209 (vqabsq, vqnegq): New.
5210 * config/arm/arm_mve.h (vabsq): Remove.
5213 (vabsq_f16): Remove.
5214 (vabsq_f32): Remove.
5216 (vabsq_s16): Remove.
5217 (vabsq_s32): Remove.
5218 (vabsq_m_s8): Remove.
5219 (vabsq_m_s16): Remove.
5220 (vabsq_m_s32): Remove.
5221 (vabsq_m_f16): Remove.
5222 (vabsq_m_f32): Remove.
5223 (vabsq_x_s8): Remove.
5224 (vabsq_x_s16): Remove.
5225 (vabsq_x_s32): Remove.
5226 (vabsq_x_f16): Remove.
5227 (vabsq_x_f32): Remove.
5228 (__arm_vabsq_s8): Remove.
5229 (__arm_vabsq_s16): Remove.
5230 (__arm_vabsq_s32): Remove.
5231 (__arm_vabsq_m_s8): Remove.
5232 (__arm_vabsq_m_s16): Remove.
5233 (__arm_vabsq_m_s32): Remove.
5234 (__arm_vabsq_x_s8): Remove.
5235 (__arm_vabsq_x_s16): Remove.
5236 (__arm_vabsq_x_s32): Remove.
5237 (__arm_vabsq_f16): Remove.
5238 (__arm_vabsq_f32): Remove.
5239 (__arm_vabsq_m_f16): Remove.
5240 (__arm_vabsq_m_f32): Remove.
5241 (__arm_vabsq_x_f16): Remove.
5242 (__arm_vabsq_x_f32): Remove.
5243 (__arm_vabsq): Remove.
5244 (__arm_vabsq_m): Remove.
5245 (__arm_vabsq_x): Remove.
5249 (vnegq_f16): Remove.
5250 (vnegq_f32): Remove.
5252 (vnegq_s16): Remove.
5253 (vnegq_s32): Remove.
5254 (vnegq_m_s8): Remove.
5255 (vnegq_m_s16): Remove.
5256 (vnegq_m_s32): Remove.
5257 (vnegq_m_f16): Remove.
5258 (vnegq_m_f32): Remove.
5259 (vnegq_x_s8): Remove.
5260 (vnegq_x_s16): Remove.
5261 (vnegq_x_s32): Remove.
5262 (vnegq_x_f16): Remove.
5263 (vnegq_x_f32): Remove.
5264 (__arm_vnegq_s8): Remove.
5265 (__arm_vnegq_s16): Remove.
5266 (__arm_vnegq_s32): Remove.
5267 (__arm_vnegq_m_s8): Remove.
5268 (__arm_vnegq_m_s16): Remove.
5269 (__arm_vnegq_m_s32): Remove.
5270 (__arm_vnegq_x_s8): Remove.
5271 (__arm_vnegq_x_s16): Remove.
5272 (__arm_vnegq_x_s32): Remove.
5273 (__arm_vnegq_f16): Remove.
5274 (__arm_vnegq_f32): Remove.
5275 (__arm_vnegq_m_f16): Remove.
5276 (__arm_vnegq_m_f32): Remove.
5277 (__arm_vnegq_x_f16): Remove.
5278 (__arm_vnegq_x_f32): Remove.
5279 (__arm_vnegq): Remove.
5280 (__arm_vnegq_m): Remove.
5281 (__arm_vnegq_x): Remove.
5286 (vclsq_s16): Remove.
5287 (vclsq_s32): Remove.
5288 (vclsq_m_s8): Remove.
5289 (vclsq_m_s16): Remove.
5290 (vclsq_m_s32): Remove.
5291 (vclsq_x_s8): Remove.
5292 (vclsq_x_s16): Remove.
5293 (vclsq_x_s32): Remove.
5294 (__arm_vclsq_s8): Remove.
5295 (__arm_vclsq_s16): Remove.
5296 (__arm_vclsq_s32): Remove.
5297 (__arm_vclsq_m_s8): Remove.
5298 (__arm_vclsq_m_s16): Remove.
5299 (__arm_vclsq_m_s32): Remove.
5300 (__arm_vclsq_x_s8): Remove.
5301 (__arm_vclsq_x_s16): Remove.
5302 (__arm_vclsq_x_s32): Remove.
5303 (__arm_vclsq): Remove.
5304 (__arm_vclsq_m): Remove.
5305 (__arm_vclsq_x): Remove.
5310 (vclzq_s16): Remove.
5311 (vclzq_s32): Remove.
5313 (vclzq_u16): Remove.
5314 (vclzq_u32): Remove.
5315 (vclzq_m_u8): Remove.
5316 (vclzq_m_s8): Remove.
5317 (vclzq_m_u16): Remove.
5318 (vclzq_m_s16): Remove.
5319 (vclzq_m_u32): Remove.
5320 (vclzq_m_s32): Remove.
5321 (vclzq_x_s8): Remove.
5322 (vclzq_x_s16): Remove.
5323 (vclzq_x_s32): Remove.
5324 (vclzq_x_u8): Remove.
5325 (vclzq_x_u16): Remove.
5326 (vclzq_x_u32): Remove.
5327 (__arm_vclzq_s8): Remove.
5328 (__arm_vclzq_s16): Remove.
5329 (__arm_vclzq_s32): Remove.
5330 (__arm_vclzq_u8): Remove.
5331 (__arm_vclzq_u16): Remove.
5332 (__arm_vclzq_u32): Remove.
5333 (__arm_vclzq_m_u8): Remove.
5334 (__arm_vclzq_m_s8): Remove.
5335 (__arm_vclzq_m_u16): Remove.
5336 (__arm_vclzq_m_s16): Remove.
5337 (__arm_vclzq_m_u32): Remove.
5338 (__arm_vclzq_m_s32): Remove.
5339 (__arm_vclzq_x_s8): Remove.
5340 (__arm_vclzq_x_s16): Remove.
5341 (__arm_vclzq_x_s32): Remove.
5342 (__arm_vclzq_x_u8): Remove.
5343 (__arm_vclzq_x_u16): Remove.
5344 (__arm_vclzq_x_u32): Remove.
5345 (__arm_vclzq): Remove.
5346 (__arm_vclzq_m): Remove.
5347 (__arm_vclzq_x): Remove.
5352 (vqabsq_s8): Remove.
5353 (vqabsq_s16): Remove.
5354 (vqabsq_s32): Remove.
5355 (vqnegq_s8): Remove.
5356 (vqnegq_s16): Remove.
5357 (vqnegq_s32): Remove.
5358 (vqnegq_m_s8): Remove.
5359 (vqabsq_m_s8): Remove.
5360 (vqnegq_m_s16): Remove.
5361 (vqabsq_m_s16): Remove.
5362 (vqnegq_m_s32): Remove.
5363 (vqabsq_m_s32): Remove.
5364 (__arm_vqabsq_s8): Remove.
5365 (__arm_vqabsq_s16): Remove.
5366 (__arm_vqabsq_s32): Remove.
5367 (__arm_vqnegq_s8): Remove.
5368 (__arm_vqnegq_s16): Remove.
5369 (__arm_vqnegq_s32): Remove.
5370 (__arm_vqnegq_m_s8): Remove.
5371 (__arm_vqabsq_m_s8): Remove.
5372 (__arm_vqnegq_m_s16): Remove.
5373 (__arm_vqabsq_m_s16): Remove.
5374 (__arm_vqnegq_m_s32): Remove.
5375 (__arm_vqabsq_m_s32): Remove.
5376 (__arm_vqabsq): Remove.
5377 (__arm_vqnegq): Remove.
5378 (__arm_vqnegq_m): Remove.
5379 (__arm_vqabsq_m): Remove.
5381 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5383 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
5384 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
5385 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
5386 vrndm, vrndn, vrndp, vrnd, vrndx.
5387 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
5388 VQABSQ_M_S, VQNEGQ_M_S.
5390 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
5391 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
5392 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
5393 (@mve_<mve_insn>q_f<mode>): ... this.
5394 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
5395 (mve_v<absneg_str>q_f<mode>): ... this.
5396 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
5397 (mve_v<absneg_str>q_s<mode>): ... this.
5398 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
5399 (@mve_<mve_insn>q_<supf><mode>): ... this.
5400 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
5401 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
5402 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
5403 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5404 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
5405 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
5406 (mve_vrndxq_m_f<mode>): Merge into ...
5407 (@mve_<mve_insn>q_m_f<mode>): ... this.
5409 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5411 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
5412 * config/arm/arm-mve-builtins-shapes.h (unary): New.
5414 2023-05-09 Jakub Jelinek <jakub@redhat.com>
5416 * mux-utils.h: Fix comment typo, avoides -> avoids.
5418 2023-05-09 Jakub Jelinek <jakub@redhat.com>
5420 PR tree-optimization/109778
5421 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
5422 wi::zext (x, width) rather than x if width != precision, rather
5423 than using wi::zext (right, width) after the shift.
5424 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
5425 of wi::lrotate or wi::rrotate.
5427 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
5429 * genmatch.cc (get_out_file): Make static and rename to ...
5430 (choose_output): ... this. Reimplement. Update all uses ...
5431 (decision_tree::gen): ... here and ...
5434 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
5436 * genmatch.cc (showUsage): Reimplement as ...
5437 (usage): ...this. Adjust all uses.
5438 (main): Print usage when no arguments. Add missing 'return 1'.
5440 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
5442 * genmatch.cc (header_file): Make static.
5443 (emit_func): Rename to...
5444 (fp_decl): ... this. Adjust all uses.
5445 (fp_decl_done): New function. Use it...
5446 (decision_tree::gen): ... here and...
5447 (write_predicate): ... here.
5450 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
5452 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
5455 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
5456 Uros Bizjak <ubizjak@gmail.com>
5458 * config/i386/i386.md (any_or_plus): Move definition earlier.
5459 (*insvti_highpart_1): New define_insn_and_split to overwrite
5460 (insv) the highpart of a TImode register/memory.
5462 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
5464 * auto-profile.cc (auto_profile): Check todo from early_inline
5465 to see if cleanup_tree_vfg needs to be called.
5466 (early_inline): Return todo from early_inliner.
5468 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
5470 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
5472 (pass_vsetvl::get_block_info): New.
5473 (pass_vsetvl::update_vector_info): New.
5474 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
5475 (pass_vsetvl::compute_local_backward_infos): Ditto.
5476 (pass_vsetvl::transfer_before): Ditto.
5477 (pass_vsetvl::transfer_after): Ditto.
5478 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
5479 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
5480 (pass_vsetvl::cleanup_insns): Ditto.
5481 (pass_vsetvl::compute_local_backward_infos): Use
5484 2023-05-08 Jeff Law <jlaw@ventanamicro>
5486 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
5488 2023-05-08 Richard Biener <rguenther@suse.de>
5489 Michael Meissner <meissner@linux.ibm.com>
5491 PR middle-end/108623
5492 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
5493 Align bit fields > 1 bit to at least an 8-bit boundary.
5495 2023-05-08 Andrew Pinski <apinski@marvell.com>
5497 PR tree-optimization/109424
5498 PR tree-optimization/59424
5499 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
5500 (factor_out_conditional_operation): This and add support for all unary
5502 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
5503 to call factor_out_conditional_operation instead.
5505 2023-05-08 Andrew Pinski <apinski@marvell.com>
5507 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
5508 over factor_out_conditional_conversion.
5510 2023-05-08 Andrew Pinski <apinski@marvell.com>
5512 PR tree-optimization/49959
5513 PR tree-optimization/103771
5514 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
5515 Diamond shapped bb form for factor_out_conditional_conversion.
5517 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5519 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
5520 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
5521 (riscv_vector_get_mask_mode): Ditto.
5522 (get_mask_policy_no_pred): Ditto.
5523 (get_tail_policy_no_pred): Ditto.
5524 (get_mask_mode): New function.
5525 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
5526 (get_tail_policy_no_pred): Ditto.
5527 (riscv_vector_mask_mode_p): Ditto.
5528 (riscv_vector_get_mask_mode): Ditto.
5529 (get_mask_mode): New function.
5530 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
5532 (get_tail_policy_for_pred): Ditto.
5533 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
5534 (get_mask_policy_for_pred): Ditto
5535 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
5537 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
5539 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
5540 (riscv_select_multilib): New.
5541 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
5542 also handle select_by_abi.
5543 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
5544 to select_by_abi_arch_cmodel from 1.
5545 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
5546 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
5548 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
5550 * Makefile.in: (gimple-match-head.o-warn): Remove.
5551 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
5552 gimple-match-exports.cc.
5553 (gimple-match-auto.h): Only depend on s-gimple-match.
5554 (generic-match-auto.h): Likewise.
5556 2023-05-08 Andrew Pinski <apinski@marvell.com>
5558 PR tree-optimization/109691
5559 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
5561 If the removed statement can throw, have need_eh_cleanup
5562 include the bb of that statement.
5563 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
5564 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
5566 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
5567 Initialize dceworklist instead of stmts_to_remove.
5568 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
5569 Destore dceworklist instead of stmts_to_remove.
5570 (substitute_and_fold_dom_walker::before_dom_children):
5571 Set dceworklist instead of adding to stmts_to_remove.
5572 (substitute_and_fold_engine::substitute_and_fold):
5573 Call simple_dce_from_worklist instead of poping
5575 Don't update the stat on removal statements.
5577 2023-05-07 Andrew Pinski <apinski@marvell.com>
5580 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
5581 Change argument type to aarch64_feature_flags.
5582 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
5583 constructor argument type to aarch64_feature_flags.
5584 Change m_old_asm_isa_flags to be aarch64_feature_flags.
5586 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
5588 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
5589 more parallel code if can_create_pseudo_p.
5591 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
5594 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
5595 immediately before moving a multi-word register by parts.
5597 2023-05-06 Jeff Law <jlaw@ventanamicro>
5599 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
5601 2023-05-06 Michael Collison <collison@rivosinc.com>
5603 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
5604 Check that GET_MODE_NUNITS is a multiple of 2.
5606 2023-05-06 Michael Collison <collison@rivosinc.com>
5608 * config/riscv/riscv.cc
5609 (riscv_estimated_poly_value): Implement
5610 TARGET_ESTIMATED_POLY_VALUE.
5611 (riscv_preferred_simd_mode): Implement
5612 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
5613 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
5614 (riscv_empty_mask_is_expensive): Implement
5615 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
5616 (riscv_vectorize_create_costs): Implement
5617 TARGET_VECTORIZE_CREATE_COSTS.
5618 (riscv_support_vector_misalignment): Implement
5619 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
5620 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
5621 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
5622 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
5623 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
5625 2023-05-06 Jeff Law <jlaw@ventanamicro>
5627 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
5628 duplicate definition.
5630 2023-05-06 Michael Collison <collison@rivosinc.com>
5632 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
5633 (riscv_vector_preferred_simd_mode): Ditto.
5634 (get_mask_policy_no_pred): Ditto.
5635 (get_tail_policy_no_pred): Ditto.
5636 (riscv_vector_mask_mode_p): Ditto.
5637 (riscv_vector_get_mask_mode): Ditto.
5639 2023-05-06 Michael Collison <collison@rivosinc.com>
5641 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
5642 Remove static declaration to to make externally visible.
5643 (get_mask_policy_for_pred): Ditto.
5644 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
5645 New external declaration.
5646 (get_mask_policy_for_pred): Ditto.
5648 2023-05-06 Michael Collison <collison@rivosinc.com>
5650 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
5651 (riscv_vector_get_mask_mode): Ditto.
5652 (get_mask_policy_no_pred): Ditto.
5653 (get_tail_policy_no_pred): Ditto.
5655 2023-05-06 Xi Ruoyao <xry111@xry111.site>
5657 * config/loongarch/loongarch.h (struct machine_function): Add
5658 reg_is_wrapped_separately array for register wrapping
5660 * config/loongarch/loongarch.cc
5661 (loongarch_get_separate_components): New function.
5662 (loongarch_components_for_bb): Likewise.
5663 (loongarch_disqualify_components): Likewise.
5664 (loongarch_process_components): Likewise.
5665 (loongarch_emit_prologue_components): Likewise.
5666 (loongarch_emit_epilogue_components): Likewise.
5667 (loongarch_set_handled_components): Likewise.
5668 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
5669 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
5670 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
5671 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
5672 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
5673 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
5674 (loongarch_for_each_saved_reg): Skip registers that are wrapped
5677 2023-05-06 Xi Ruoyao <xry111@xry111.site>
5680 * Makefile.in (s-macro_list): Pass -nostdinc to
5683 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5685 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
5686 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
5687 (preferred_simd_mode): Ditto.
5688 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
5689 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
5690 (riscv_preferred_simd_mode): New function.
5691 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
5692 * config/riscv/vector.md: Add autovec.md.
5693 * config/riscv/autovec.md: New file.
5695 2023-05-06 Jakub Jelinek <jakub@redhat.com>
5697 * real.h (dconst_pi): Define.
5698 (dconst_e_ptr): Formatting fix.
5699 (dconst_pi_ptr): Declare.
5700 * real.cc (dconst_pi_ptr): New function.
5701 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
5702 boundaries range with range computed from sin/cos of the particular
5703 bounds if the argument range is shorter than 2*pi.
5704 (cfn_sincos::op1_range): Take bulps into account when determining
5705 which result ranges are always invalid or behave like known NAN.
5707 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
5709 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
5710 pass type to vrange_storage::equal_p.
5711 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
5712 (irange_storage::equal_p): Same.
5713 (frange_storage::equal_p): Same.
5714 * value-range-storage.h (class frange_storage): Same.
5716 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5719 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
5720 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
5722 2023-05-06 liuhongt <hongtao.liu@intel.com>
5724 * combine.cc (maybe_swap_commutative_operands): Canonicalize
5725 vec_merge when mask is constant.
5726 * doc/md.texi: Document vec_merge canonicalization.
5728 2023-05-06 Jakub Jelinek <jakub@redhat.com>
5730 * value-range.h (frange_arithmetic): Declare.
5731 * range-op-float.cc (frange_arithmetic): No longer static.
5732 * gimple-range-op.cc (frange_mpfr_arg1): New function.
5733 (cfn_sqrt::fold_range): Intersect the generic boundaries range
5734 with range computed from sqrt of the particular bounds.
5735 (cfn_sqrt::op1_range): Intersect the generic boundaries range
5736 with range computed from squared particular bounds.
5738 2023-05-06 Jakub Jelinek <jakub@redhat.com>
5740 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
5741 earlier with helper variables also renamed.
5742 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
5743 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
5744 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
5746 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
5748 * config/cris/cris.md (splitop): Add PLUS.
5749 * config/cris/cris.cc (cris_split_constant): Also handle
5750 PLUS when a split into two insns may be useful.
5752 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
5754 * config/cris/cris.md (movandsplit1): New define_peephole2.
5756 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
5758 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
5760 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
5762 * doc/md.texi (define_peephole2): Document order of scanning.
5764 2023-05-05 Pan Li <pan2.li@intel.com>
5765 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5767 * config/riscv/vector.md: Allow const as the operand of RVV
5770 2023-05-05 Pan Li <pan2.li@intel.com>
5772 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
5773 consumed by simplify_rtx.
5775 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5777 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
5778 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
5779 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
5780 * config/arm/arm_mve.h (vshrq): Remove.
5786 (vshrq_n_s8): Remove.
5787 (vshrq_n_s16): Remove.
5788 (vshrq_n_s32): Remove.
5789 (vshrq_n_u8): Remove.
5790 (vshrq_n_u16): Remove.
5791 (vshrq_n_u32): Remove.
5792 (vrshrq_n_u8): Remove.
5793 (vrshrq_n_s8): Remove.
5794 (vrshrq_n_u16): Remove.
5795 (vrshrq_n_s16): Remove.
5796 (vrshrq_n_u32): Remove.
5797 (vrshrq_n_s32): Remove.
5798 (vrshrq_m_n_s8): Remove.
5799 (vrshrq_m_n_s32): Remove.
5800 (vrshrq_m_n_s16): Remove.
5801 (vrshrq_m_n_u8): Remove.
5802 (vrshrq_m_n_u32): Remove.
5803 (vrshrq_m_n_u16): Remove.
5804 (vshrq_m_n_s8): Remove.
5805 (vshrq_m_n_s32): Remove.
5806 (vshrq_m_n_s16): Remove.
5807 (vshrq_m_n_u8): Remove.
5808 (vshrq_m_n_u32): Remove.
5809 (vshrq_m_n_u16): Remove.
5810 (vrshrq_x_n_s8): Remove.
5811 (vrshrq_x_n_s16): Remove.
5812 (vrshrq_x_n_s32): Remove.
5813 (vrshrq_x_n_u8): Remove.
5814 (vrshrq_x_n_u16): Remove.
5815 (vrshrq_x_n_u32): Remove.
5816 (vshrq_x_n_s8): Remove.
5817 (vshrq_x_n_s16): Remove.
5818 (vshrq_x_n_s32): Remove.
5819 (vshrq_x_n_u8): Remove.
5820 (vshrq_x_n_u16): Remove.
5821 (vshrq_x_n_u32): Remove.
5822 (__arm_vshrq_n_s8): Remove.
5823 (__arm_vshrq_n_s16): Remove.
5824 (__arm_vshrq_n_s32): Remove.
5825 (__arm_vshrq_n_u8): Remove.
5826 (__arm_vshrq_n_u16): Remove.
5827 (__arm_vshrq_n_u32): Remove.
5828 (__arm_vrshrq_n_u8): Remove.
5829 (__arm_vrshrq_n_s8): Remove.
5830 (__arm_vrshrq_n_u16): Remove.
5831 (__arm_vrshrq_n_s16): Remove.
5832 (__arm_vrshrq_n_u32): Remove.
5833 (__arm_vrshrq_n_s32): Remove.
5834 (__arm_vrshrq_m_n_s8): Remove.
5835 (__arm_vrshrq_m_n_s32): Remove.
5836 (__arm_vrshrq_m_n_s16): Remove.
5837 (__arm_vrshrq_m_n_u8): Remove.
5838 (__arm_vrshrq_m_n_u32): Remove.
5839 (__arm_vrshrq_m_n_u16): Remove.
5840 (__arm_vshrq_m_n_s8): Remove.
5841 (__arm_vshrq_m_n_s32): Remove.
5842 (__arm_vshrq_m_n_s16): Remove.
5843 (__arm_vshrq_m_n_u8): Remove.
5844 (__arm_vshrq_m_n_u32): Remove.
5845 (__arm_vshrq_m_n_u16): Remove.
5846 (__arm_vrshrq_x_n_s8): Remove.
5847 (__arm_vrshrq_x_n_s16): Remove.
5848 (__arm_vrshrq_x_n_s32): Remove.
5849 (__arm_vrshrq_x_n_u8): Remove.
5850 (__arm_vrshrq_x_n_u16): Remove.
5851 (__arm_vrshrq_x_n_u32): Remove.
5852 (__arm_vshrq_x_n_s8): Remove.
5853 (__arm_vshrq_x_n_s16): Remove.
5854 (__arm_vshrq_x_n_s32): Remove.
5855 (__arm_vshrq_x_n_u8): Remove.
5856 (__arm_vshrq_x_n_u16): Remove.
5857 (__arm_vshrq_x_n_u32): Remove.
5858 (__arm_vshrq): Remove.
5859 (__arm_vrshrq): Remove.
5860 (__arm_vrshrq_m): Remove.
5861 (__arm_vshrq_m): Remove.
5862 (__arm_vrshrq_x): Remove.
5863 (__arm_vshrq_x): Remove.
5865 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5867 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
5868 (mve_insn): Add vrshr, vshr.
5869 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
5870 (mve_vrshrq_n_<supf><mode>): Merge into ...
5871 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5872 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
5874 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5876 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5878 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
5879 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
5881 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5883 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
5884 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
5885 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
5886 (vqrshrunbq, vqrshruntq): New.
5887 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
5888 (vqrshrunbq, vqrshruntq): New.
5889 * config/arm/arm-mve-builtins.cc
5890 (function_instance::has_inactive_argument): Handle vqshrunbq,
5891 vqshruntq, vqrshrunbq, vqrshruntq.
5892 * config/arm/arm_mve.h (vqrshrunbq): Remove.
5893 (vqrshruntq): Remove.
5894 (vqrshrunbq_m): Remove.
5895 (vqrshruntq_m): Remove.
5896 (vqrshrunbq_n_s16): Remove.
5897 (vqrshrunbq_n_s32): Remove.
5898 (vqrshruntq_n_s16): Remove.
5899 (vqrshruntq_n_s32): Remove.
5900 (vqrshrunbq_m_n_s32): Remove.
5901 (vqrshrunbq_m_n_s16): Remove.
5902 (vqrshruntq_m_n_s32): Remove.
5903 (vqrshruntq_m_n_s16): Remove.
5904 (__arm_vqrshrunbq_n_s16): Remove.
5905 (__arm_vqrshrunbq_n_s32): Remove.
5906 (__arm_vqrshruntq_n_s16): Remove.
5907 (__arm_vqrshruntq_n_s32): Remove.
5908 (__arm_vqrshrunbq_m_n_s32): Remove.
5909 (__arm_vqrshrunbq_m_n_s16): Remove.
5910 (__arm_vqrshruntq_m_n_s32): Remove.
5911 (__arm_vqrshruntq_m_n_s16): Remove.
5912 (__arm_vqrshrunbq): Remove.
5913 (__arm_vqrshruntq): Remove.
5914 (__arm_vqrshrunbq_m): Remove.
5915 (__arm_vqrshruntq_m): Remove.
5916 (vqshrunbq): Remove.
5917 (vqshruntq): Remove.
5918 (vqshrunbq_m): Remove.
5919 (vqshruntq_m): Remove.
5920 (vqshrunbq_n_s16): Remove.
5921 (vqshruntq_n_s16): Remove.
5922 (vqshrunbq_n_s32): Remove.
5923 (vqshruntq_n_s32): Remove.
5924 (vqshrunbq_m_n_s32): Remove.
5925 (vqshrunbq_m_n_s16): Remove.
5926 (vqshruntq_m_n_s32): Remove.
5927 (vqshruntq_m_n_s16): Remove.
5928 (__arm_vqshrunbq_n_s16): Remove.
5929 (__arm_vqshruntq_n_s16): Remove.
5930 (__arm_vqshrunbq_n_s32): Remove.
5931 (__arm_vqshruntq_n_s32): Remove.
5932 (__arm_vqshrunbq_m_n_s32): Remove.
5933 (__arm_vqshrunbq_m_n_s16): Remove.
5934 (__arm_vqshruntq_m_n_s32): Remove.
5935 (__arm_vqshruntq_m_n_s16): Remove.
5936 (__arm_vqshrunbq): Remove.
5937 (__arm_vqshruntq): Remove.
5938 (__arm_vqshrunbq_m): Remove.
5939 (__arm_vqshruntq_m): Remove.
5941 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5943 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
5944 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
5945 (MVE_SHRN_M_N): Likewise.
5946 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
5947 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
5949 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
5950 (mve_vqrshruntq_n_s<mode>): Remove.
5951 (mve_vqshrunbq_n_s<mode>): Remove.
5952 (mve_vqshruntq_n_s<mode>): Remove.
5953 (mve_vqrshrunbq_m_n_s<mode>): Remove.
5954 (mve_vqrshruntq_m_n_s<mode>): Remove.
5955 (mve_vqshrunbq_m_n_s<mode>): Remove.
5956 (mve_vqshruntq_m_n_s<mode>): Remove.
5958 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5960 * config/arm/arm-mve-builtins-shapes.cc
5961 (binary_rshift_narrow_unsigned): New.
5962 * config/arm/arm-mve-builtins-shapes.h
5963 (binary_rshift_narrow_unsigned): New.
5965 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5967 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
5968 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
5969 (vqrshrnbq, vqrshrntq): New.
5970 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
5971 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
5973 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
5974 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
5975 * config/arm/arm-mve-builtins.cc
5976 (function_instance::has_inactive_argument): Handle vshrnbq,
5977 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
5979 * config/arm/arm_mve.h (vshrnbq): Remove.
5981 (vshrnbq_m): Remove.
5982 (vshrntq_m): Remove.
5983 (vshrnbq_n_s16): Remove.
5984 (vshrntq_n_s16): Remove.
5985 (vshrnbq_n_u16): Remove.
5986 (vshrntq_n_u16): Remove.
5987 (vshrnbq_n_s32): Remove.
5988 (vshrntq_n_s32): Remove.
5989 (vshrnbq_n_u32): Remove.
5990 (vshrntq_n_u32): Remove.
5991 (vshrnbq_m_n_s32): Remove.
5992 (vshrnbq_m_n_s16): Remove.
5993 (vshrnbq_m_n_u32): Remove.
5994 (vshrnbq_m_n_u16): Remove.
5995 (vshrntq_m_n_s32): Remove.
5996 (vshrntq_m_n_s16): Remove.
5997 (vshrntq_m_n_u32): Remove.
5998 (vshrntq_m_n_u16): Remove.
5999 (__arm_vshrnbq_n_s16): Remove.
6000 (__arm_vshrntq_n_s16): Remove.
6001 (__arm_vshrnbq_n_u16): Remove.
6002 (__arm_vshrntq_n_u16): Remove.
6003 (__arm_vshrnbq_n_s32): Remove.
6004 (__arm_vshrntq_n_s32): Remove.
6005 (__arm_vshrnbq_n_u32): Remove.
6006 (__arm_vshrntq_n_u32): Remove.
6007 (__arm_vshrnbq_m_n_s32): Remove.
6008 (__arm_vshrnbq_m_n_s16): Remove.
6009 (__arm_vshrnbq_m_n_u32): Remove.
6010 (__arm_vshrnbq_m_n_u16): Remove.
6011 (__arm_vshrntq_m_n_s32): Remove.
6012 (__arm_vshrntq_m_n_s16): Remove.
6013 (__arm_vshrntq_m_n_u32): Remove.
6014 (__arm_vshrntq_m_n_u16): Remove.
6015 (__arm_vshrnbq): Remove.
6016 (__arm_vshrntq): Remove.
6017 (__arm_vshrnbq_m): Remove.
6018 (__arm_vshrntq_m): Remove.
6021 (vrshrnbq_m): Remove.
6022 (vrshrntq_m): Remove.
6023 (vrshrnbq_n_s16): Remove.
6024 (vrshrntq_n_s16): Remove.
6025 (vrshrnbq_n_u16): Remove.
6026 (vrshrntq_n_u16): Remove.
6027 (vrshrnbq_n_s32): Remove.
6028 (vrshrntq_n_s32): Remove.
6029 (vrshrnbq_n_u32): Remove.
6030 (vrshrntq_n_u32): Remove.
6031 (vrshrnbq_m_n_s32): Remove.
6032 (vrshrnbq_m_n_s16): Remove.
6033 (vrshrnbq_m_n_u32): Remove.
6034 (vrshrnbq_m_n_u16): Remove.
6035 (vrshrntq_m_n_s32): Remove.
6036 (vrshrntq_m_n_s16): Remove.
6037 (vrshrntq_m_n_u32): Remove.
6038 (vrshrntq_m_n_u16): Remove.
6039 (__arm_vrshrnbq_n_s16): Remove.
6040 (__arm_vrshrntq_n_s16): Remove.
6041 (__arm_vrshrnbq_n_u16): Remove.
6042 (__arm_vrshrntq_n_u16): Remove.
6043 (__arm_vrshrnbq_n_s32): Remove.
6044 (__arm_vrshrntq_n_s32): Remove.
6045 (__arm_vrshrnbq_n_u32): Remove.
6046 (__arm_vrshrntq_n_u32): Remove.
6047 (__arm_vrshrnbq_m_n_s32): Remove.
6048 (__arm_vrshrnbq_m_n_s16): Remove.
6049 (__arm_vrshrnbq_m_n_u32): Remove.
6050 (__arm_vrshrnbq_m_n_u16): Remove.
6051 (__arm_vrshrntq_m_n_s32): Remove.
6052 (__arm_vrshrntq_m_n_s16): Remove.
6053 (__arm_vrshrntq_m_n_u32): Remove.
6054 (__arm_vrshrntq_m_n_u16): Remove.
6055 (__arm_vrshrnbq): Remove.
6056 (__arm_vrshrntq): Remove.
6057 (__arm_vrshrnbq_m): Remove.
6058 (__arm_vrshrntq_m): Remove.
6061 (vqshrnbq_m): Remove.
6062 (vqshrntq_m): Remove.
6063 (vqshrnbq_n_s16): Remove.
6064 (vqshrntq_n_s16): Remove.
6065 (vqshrnbq_n_u16): Remove.
6066 (vqshrntq_n_u16): Remove.
6067 (vqshrnbq_n_s32): Remove.
6068 (vqshrntq_n_s32): Remove.
6069 (vqshrnbq_n_u32): Remove.
6070 (vqshrntq_n_u32): Remove.
6071 (vqshrnbq_m_n_s32): Remove.
6072 (vqshrnbq_m_n_s16): Remove.
6073 (vqshrnbq_m_n_u32): Remove.
6074 (vqshrnbq_m_n_u16): Remove.
6075 (vqshrntq_m_n_s32): Remove.
6076 (vqshrntq_m_n_s16): Remove.
6077 (vqshrntq_m_n_u32): Remove.
6078 (vqshrntq_m_n_u16): Remove.
6079 (__arm_vqshrnbq_n_s16): Remove.
6080 (__arm_vqshrntq_n_s16): Remove.
6081 (__arm_vqshrnbq_n_u16): Remove.
6082 (__arm_vqshrntq_n_u16): Remove.
6083 (__arm_vqshrnbq_n_s32): Remove.
6084 (__arm_vqshrntq_n_s32): Remove.
6085 (__arm_vqshrnbq_n_u32): Remove.
6086 (__arm_vqshrntq_n_u32): Remove.
6087 (__arm_vqshrnbq_m_n_s32): Remove.
6088 (__arm_vqshrnbq_m_n_s16): Remove.
6089 (__arm_vqshrnbq_m_n_u32): Remove.
6090 (__arm_vqshrnbq_m_n_u16): Remove.
6091 (__arm_vqshrntq_m_n_s32): Remove.
6092 (__arm_vqshrntq_m_n_s16): Remove.
6093 (__arm_vqshrntq_m_n_u32): Remove.
6094 (__arm_vqshrntq_m_n_u16): Remove.
6095 (__arm_vqshrnbq): Remove.
6096 (__arm_vqshrntq): Remove.
6097 (__arm_vqshrnbq_m): Remove.
6098 (__arm_vqshrntq_m): Remove.
6099 (vqrshrnbq): Remove.
6100 (vqrshrntq): Remove.
6101 (vqrshrnbq_m): Remove.
6102 (vqrshrntq_m): Remove.
6103 (vqrshrnbq_n_s16): Remove.
6104 (vqrshrnbq_n_u16): Remove.
6105 (vqrshrnbq_n_s32): Remove.
6106 (vqrshrnbq_n_u32): Remove.
6107 (vqrshrntq_n_s16): Remove.
6108 (vqrshrntq_n_u16): Remove.
6109 (vqrshrntq_n_s32): Remove.
6110 (vqrshrntq_n_u32): Remove.
6111 (vqrshrnbq_m_n_s32): Remove.
6112 (vqrshrnbq_m_n_s16): Remove.
6113 (vqrshrnbq_m_n_u32): Remove.
6114 (vqrshrnbq_m_n_u16): Remove.
6115 (vqrshrntq_m_n_s32): Remove.
6116 (vqrshrntq_m_n_s16): Remove.
6117 (vqrshrntq_m_n_u32): Remove.
6118 (vqrshrntq_m_n_u16): Remove.
6119 (__arm_vqrshrnbq_n_s16): Remove.
6120 (__arm_vqrshrnbq_n_u16): Remove.
6121 (__arm_vqrshrnbq_n_s32): Remove.
6122 (__arm_vqrshrnbq_n_u32): Remove.
6123 (__arm_vqrshrntq_n_s16): Remove.
6124 (__arm_vqrshrntq_n_u16): Remove.
6125 (__arm_vqrshrntq_n_s32): Remove.
6126 (__arm_vqrshrntq_n_u32): Remove.
6127 (__arm_vqrshrnbq_m_n_s32): Remove.
6128 (__arm_vqrshrnbq_m_n_s16): Remove.
6129 (__arm_vqrshrnbq_m_n_u32): Remove.
6130 (__arm_vqrshrnbq_m_n_u16): Remove.
6131 (__arm_vqrshrntq_m_n_s32): Remove.
6132 (__arm_vqrshrntq_m_n_s16): Remove.
6133 (__arm_vqrshrntq_m_n_u32): Remove.
6134 (__arm_vqrshrntq_m_n_u16): Remove.
6135 (__arm_vqrshrnbq): Remove.
6136 (__arm_vqrshrntq): Remove.
6137 (__arm_vqrshrnbq_m): Remove.
6138 (__arm_vqrshrntq_m): Remove.
6140 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6142 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
6143 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
6144 vrshrnt, vshrnb, vshrnt.
6146 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
6147 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
6148 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
6149 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
6150 (mve_vshrntq_n_<supf><mode>): Merge into ...
6151 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6152 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
6153 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
6154 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
6155 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
6157 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6159 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6161 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
6163 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
6165 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6167 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
6168 (vmaxq, vminq): New.
6169 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
6170 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
6171 * config/arm/arm_mve.h (vminq): Remove.
6181 (vminq_u16): Remove.
6182 (vmaxq_u16): Remove.
6183 (vminq_s16): Remove.
6184 (vmaxq_s16): Remove.
6185 (vminq_u32): Remove.
6186 (vmaxq_u32): Remove.
6187 (vminq_s32): Remove.
6188 (vmaxq_s32): Remove.
6189 (vmaxq_m_s8): Remove.
6190 (vmaxq_m_s32): Remove.
6191 (vmaxq_m_s16): Remove.
6192 (vmaxq_m_u8): Remove.
6193 (vmaxq_m_u32): Remove.
6194 (vmaxq_m_u16): Remove.
6195 (vminq_m_s8): Remove.
6196 (vminq_m_s32): Remove.
6197 (vminq_m_s16): Remove.
6198 (vminq_m_u8): Remove.
6199 (vminq_m_u32): Remove.
6200 (vminq_m_u16): Remove.
6201 (vminq_x_s8): Remove.
6202 (vminq_x_s16): Remove.
6203 (vminq_x_s32): Remove.
6204 (vminq_x_u8): Remove.
6205 (vminq_x_u16): Remove.
6206 (vminq_x_u32): Remove.
6207 (vmaxq_x_s8): Remove.
6208 (vmaxq_x_s16): Remove.
6209 (vmaxq_x_s32): Remove.
6210 (vmaxq_x_u8): Remove.
6211 (vmaxq_x_u16): Remove.
6212 (vmaxq_x_u32): Remove.
6213 (__arm_vminq_u8): Remove.
6214 (__arm_vmaxq_u8): Remove.
6215 (__arm_vminq_s8): Remove.
6216 (__arm_vmaxq_s8): Remove.
6217 (__arm_vminq_u16): Remove.
6218 (__arm_vmaxq_u16): Remove.
6219 (__arm_vminq_s16): Remove.
6220 (__arm_vmaxq_s16): Remove.
6221 (__arm_vminq_u32): Remove.
6222 (__arm_vmaxq_u32): Remove.
6223 (__arm_vminq_s32): Remove.
6224 (__arm_vmaxq_s32): Remove.
6225 (__arm_vmaxq_m_s8): Remove.
6226 (__arm_vmaxq_m_s32): Remove.
6227 (__arm_vmaxq_m_s16): Remove.
6228 (__arm_vmaxq_m_u8): Remove.
6229 (__arm_vmaxq_m_u32): Remove.
6230 (__arm_vmaxq_m_u16): Remove.
6231 (__arm_vminq_m_s8): Remove.
6232 (__arm_vminq_m_s32): Remove.
6233 (__arm_vminq_m_s16): Remove.
6234 (__arm_vminq_m_u8): Remove.
6235 (__arm_vminq_m_u32): Remove.
6236 (__arm_vminq_m_u16): Remove.
6237 (__arm_vminq_x_s8): Remove.
6238 (__arm_vminq_x_s16): Remove.
6239 (__arm_vminq_x_s32): Remove.
6240 (__arm_vminq_x_u8): Remove.
6241 (__arm_vminq_x_u16): Remove.
6242 (__arm_vminq_x_u32): Remove.
6243 (__arm_vmaxq_x_s8): Remove.
6244 (__arm_vmaxq_x_s16): Remove.
6245 (__arm_vmaxq_x_s32): Remove.
6246 (__arm_vmaxq_x_u8): Remove.
6247 (__arm_vmaxq_x_u16): Remove.
6248 (__arm_vmaxq_x_u32): Remove.
6249 (__arm_vminq): Remove.
6250 (__arm_vmaxq): Remove.
6251 (__arm_vmaxq_m): Remove.
6252 (__arm_vminq_m): Remove.
6253 (__arm_vminq_x): Remove.
6254 (__arm_vmaxq_x): Remove.
6256 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6258 * config/arm/iterators.md (MAX_MIN_SU): New.
6259 (max_min_su_str): New.
6260 (max_min_supf): New.
6261 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
6262 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
6263 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
6265 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6267 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
6268 (vqshlq, vshlq): New.
6269 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
6270 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
6271 * config/arm/arm_mve.h (vshlq): Remove.
6274 (vshlq_m_r): Remove.
6276 (vshlq_m_n): Remove.
6278 (vshlq_x_n): Remove.
6280 (vshlq_s16): Remove.
6281 (vshlq_s32): Remove.
6283 (vshlq_u16): Remove.
6284 (vshlq_u32): Remove.
6285 (vshlq_r_u8): Remove.
6286 (vshlq_n_u8): Remove.
6287 (vshlq_r_s8): Remove.
6288 (vshlq_n_s8): Remove.
6289 (vshlq_r_u16): Remove.
6290 (vshlq_n_u16): Remove.
6291 (vshlq_r_s16): Remove.
6292 (vshlq_n_s16): Remove.
6293 (vshlq_r_u32): Remove.
6294 (vshlq_n_u32): Remove.
6295 (vshlq_r_s32): Remove.
6296 (vshlq_n_s32): Remove.
6297 (vshlq_m_r_u8): Remove.
6298 (vshlq_m_r_s8): Remove.
6299 (vshlq_m_r_u16): Remove.
6300 (vshlq_m_r_s16): Remove.
6301 (vshlq_m_r_u32): Remove.
6302 (vshlq_m_r_s32): Remove.
6303 (vshlq_m_u8): Remove.
6304 (vshlq_m_s8): Remove.
6305 (vshlq_m_u16): Remove.
6306 (vshlq_m_s16): Remove.
6307 (vshlq_m_u32): Remove.
6308 (vshlq_m_s32): Remove.
6309 (vshlq_m_n_s8): Remove.
6310 (vshlq_m_n_s32): Remove.
6311 (vshlq_m_n_s16): Remove.
6312 (vshlq_m_n_u8): Remove.
6313 (vshlq_m_n_u32): Remove.
6314 (vshlq_m_n_u16): Remove.
6315 (vshlq_x_s8): Remove.
6316 (vshlq_x_s16): Remove.
6317 (vshlq_x_s32): Remove.
6318 (vshlq_x_u8): Remove.
6319 (vshlq_x_u16): Remove.
6320 (vshlq_x_u32): Remove.
6321 (vshlq_x_n_s8): Remove.
6322 (vshlq_x_n_s16): Remove.
6323 (vshlq_x_n_s32): Remove.
6324 (vshlq_x_n_u8): Remove.
6325 (vshlq_x_n_u16): Remove.
6326 (vshlq_x_n_u32): Remove.
6327 (__arm_vshlq_s8): Remove.
6328 (__arm_vshlq_s16): Remove.
6329 (__arm_vshlq_s32): Remove.
6330 (__arm_vshlq_u8): Remove.
6331 (__arm_vshlq_u16): Remove.
6332 (__arm_vshlq_u32): Remove.
6333 (__arm_vshlq_r_u8): Remove.
6334 (__arm_vshlq_n_u8): Remove.
6335 (__arm_vshlq_r_s8): Remove.
6336 (__arm_vshlq_n_s8): Remove.
6337 (__arm_vshlq_r_u16): Remove.
6338 (__arm_vshlq_n_u16): Remove.
6339 (__arm_vshlq_r_s16): Remove.
6340 (__arm_vshlq_n_s16): Remove.
6341 (__arm_vshlq_r_u32): Remove.
6342 (__arm_vshlq_n_u32): Remove.
6343 (__arm_vshlq_r_s32): Remove.
6344 (__arm_vshlq_n_s32): Remove.
6345 (__arm_vshlq_m_r_u8): Remove.
6346 (__arm_vshlq_m_r_s8): Remove.
6347 (__arm_vshlq_m_r_u16): Remove.
6348 (__arm_vshlq_m_r_s16): Remove.
6349 (__arm_vshlq_m_r_u32): Remove.
6350 (__arm_vshlq_m_r_s32): Remove.
6351 (__arm_vshlq_m_u8): Remove.
6352 (__arm_vshlq_m_s8): Remove.
6353 (__arm_vshlq_m_u16): Remove.
6354 (__arm_vshlq_m_s16): Remove.
6355 (__arm_vshlq_m_u32): Remove.
6356 (__arm_vshlq_m_s32): Remove.
6357 (__arm_vshlq_m_n_s8): Remove.
6358 (__arm_vshlq_m_n_s32): Remove.
6359 (__arm_vshlq_m_n_s16): Remove.
6360 (__arm_vshlq_m_n_u8): Remove.
6361 (__arm_vshlq_m_n_u32): Remove.
6362 (__arm_vshlq_m_n_u16): Remove.
6363 (__arm_vshlq_x_s8): Remove.
6364 (__arm_vshlq_x_s16): Remove.
6365 (__arm_vshlq_x_s32): Remove.
6366 (__arm_vshlq_x_u8): Remove.
6367 (__arm_vshlq_x_u16): Remove.
6368 (__arm_vshlq_x_u32): Remove.
6369 (__arm_vshlq_x_n_s8): Remove.
6370 (__arm_vshlq_x_n_s16): Remove.
6371 (__arm_vshlq_x_n_s32): Remove.
6372 (__arm_vshlq_x_n_u8): Remove.
6373 (__arm_vshlq_x_n_u16): Remove.
6374 (__arm_vshlq_x_n_u32): Remove.
6375 (__arm_vshlq): Remove.
6376 (__arm_vshlq_r): Remove.
6377 (__arm_vshlq_n): Remove.
6378 (__arm_vshlq_m_r): Remove.
6379 (__arm_vshlq_m): Remove.
6380 (__arm_vshlq_m_n): Remove.
6381 (__arm_vshlq_x): Remove.
6382 (__arm_vshlq_x_n): Remove.
6386 (vqshlq_m_r): Remove.
6387 (vqshlq_m_n): Remove.
6389 (vqshlq_u8): Remove.
6390 (vqshlq_r_u8): Remove.
6391 (vqshlq_n_u8): Remove.
6392 (vqshlq_s8): Remove.
6393 (vqshlq_r_s8): Remove.
6394 (vqshlq_n_s8): Remove.
6395 (vqshlq_u16): Remove.
6396 (vqshlq_r_u16): Remove.
6397 (vqshlq_n_u16): Remove.
6398 (vqshlq_s16): Remove.
6399 (vqshlq_r_s16): Remove.
6400 (vqshlq_n_s16): Remove.
6401 (vqshlq_u32): Remove.
6402 (vqshlq_r_u32): Remove.
6403 (vqshlq_n_u32): Remove.
6404 (vqshlq_s32): Remove.
6405 (vqshlq_r_s32): Remove.
6406 (vqshlq_n_s32): Remove.
6407 (vqshlq_m_r_u8): Remove.
6408 (vqshlq_m_r_s8): Remove.
6409 (vqshlq_m_r_u16): Remove.
6410 (vqshlq_m_r_s16): Remove.
6411 (vqshlq_m_r_u32): Remove.
6412 (vqshlq_m_r_s32): Remove.
6413 (vqshlq_m_n_s8): Remove.
6414 (vqshlq_m_n_s32): Remove.
6415 (vqshlq_m_n_s16): Remove.
6416 (vqshlq_m_n_u8): Remove.
6417 (vqshlq_m_n_u32): Remove.
6418 (vqshlq_m_n_u16): Remove.
6419 (vqshlq_m_s8): Remove.
6420 (vqshlq_m_s32): Remove.
6421 (vqshlq_m_s16): Remove.
6422 (vqshlq_m_u8): Remove.
6423 (vqshlq_m_u32): Remove.
6424 (vqshlq_m_u16): Remove.
6425 (__arm_vqshlq_u8): Remove.
6426 (__arm_vqshlq_r_u8): Remove.
6427 (__arm_vqshlq_n_u8): Remove.
6428 (__arm_vqshlq_s8): Remove.
6429 (__arm_vqshlq_r_s8): Remove.
6430 (__arm_vqshlq_n_s8): Remove.
6431 (__arm_vqshlq_u16): Remove.
6432 (__arm_vqshlq_r_u16): Remove.
6433 (__arm_vqshlq_n_u16): Remove.
6434 (__arm_vqshlq_s16): Remove.
6435 (__arm_vqshlq_r_s16): Remove.
6436 (__arm_vqshlq_n_s16): Remove.
6437 (__arm_vqshlq_u32): Remove.
6438 (__arm_vqshlq_r_u32): Remove.
6439 (__arm_vqshlq_n_u32): Remove.
6440 (__arm_vqshlq_s32): Remove.
6441 (__arm_vqshlq_r_s32): Remove.
6442 (__arm_vqshlq_n_s32): Remove.
6443 (__arm_vqshlq_m_r_u8): Remove.
6444 (__arm_vqshlq_m_r_s8): Remove.
6445 (__arm_vqshlq_m_r_u16): Remove.
6446 (__arm_vqshlq_m_r_s16): Remove.
6447 (__arm_vqshlq_m_r_u32): Remove.
6448 (__arm_vqshlq_m_r_s32): Remove.
6449 (__arm_vqshlq_m_n_s8): Remove.
6450 (__arm_vqshlq_m_n_s32): Remove.
6451 (__arm_vqshlq_m_n_s16): Remove.
6452 (__arm_vqshlq_m_n_u8): Remove.
6453 (__arm_vqshlq_m_n_u32): Remove.
6454 (__arm_vqshlq_m_n_u16): Remove.
6455 (__arm_vqshlq_m_s8): Remove.
6456 (__arm_vqshlq_m_s32): Remove.
6457 (__arm_vqshlq_m_s16): Remove.
6458 (__arm_vqshlq_m_u8): Remove.
6459 (__arm_vqshlq_m_u32): Remove.
6460 (__arm_vqshlq_m_u16): Remove.
6461 (__arm_vqshlq): Remove.
6462 (__arm_vqshlq_r): Remove.
6463 (__arm_vqshlq_n): Remove.
6464 (__arm_vqshlq_m_r): Remove.
6465 (__arm_vqshlq_m_n): Remove.
6466 (__arm_vqshlq_m): Remove.
6468 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6470 * config/arm/arm-mve-builtins-functions.h (class
6471 unspec_mve_function_exact_insn_vshl): New.
6473 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6475 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
6476 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
6478 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6480 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
6481 (finish_opt_n_resolution): Handle MODE_r.
6482 * config/arm/arm-mve-builtins.def (r): New mode.
6484 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6486 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
6487 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
6489 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6491 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
6493 * config/arm/arm-mve-builtins-base.def (vabdq): New.
6494 * config/arm/arm-mve-builtins-base.h (vabdq): New.
6495 * config/arm/arm_mve.h (vabdq): Remove.
6500 (vabdq_u16): Remove.
6501 (vabdq_s16): Remove.
6502 (vabdq_u32): Remove.
6503 (vabdq_s32): Remove.
6504 (vabdq_f16): Remove.
6505 (vabdq_f32): Remove.
6506 (vabdq_m_s8): Remove.
6507 (vabdq_m_s32): Remove.
6508 (vabdq_m_s16): Remove.
6509 (vabdq_m_u8): Remove.
6510 (vabdq_m_u32): Remove.
6511 (vabdq_m_u16): Remove.
6512 (vabdq_m_f32): Remove.
6513 (vabdq_m_f16): Remove.
6514 (vabdq_x_s8): Remove.
6515 (vabdq_x_s16): Remove.
6516 (vabdq_x_s32): Remove.
6517 (vabdq_x_u8): Remove.
6518 (vabdq_x_u16): Remove.
6519 (vabdq_x_u32): Remove.
6520 (vabdq_x_f16): Remove.
6521 (vabdq_x_f32): Remove.
6522 (__arm_vabdq_u8): Remove.
6523 (__arm_vabdq_s8): Remove.
6524 (__arm_vabdq_u16): Remove.
6525 (__arm_vabdq_s16): Remove.
6526 (__arm_vabdq_u32): Remove.
6527 (__arm_vabdq_s32): Remove.
6528 (__arm_vabdq_m_s8): Remove.
6529 (__arm_vabdq_m_s32): Remove.
6530 (__arm_vabdq_m_s16): Remove.
6531 (__arm_vabdq_m_u8): Remove.
6532 (__arm_vabdq_m_u32): Remove.
6533 (__arm_vabdq_m_u16): Remove.
6534 (__arm_vabdq_x_s8): Remove.
6535 (__arm_vabdq_x_s16): Remove.
6536 (__arm_vabdq_x_s32): Remove.
6537 (__arm_vabdq_x_u8): Remove.
6538 (__arm_vabdq_x_u16): Remove.
6539 (__arm_vabdq_x_u32): Remove.
6540 (__arm_vabdq_f16): Remove.
6541 (__arm_vabdq_f32): Remove.
6542 (__arm_vabdq_m_f32): Remove.
6543 (__arm_vabdq_m_f16): Remove.
6544 (__arm_vabdq_x_f16): Remove.
6545 (__arm_vabdq_x_f32): Remove.
6546 (__arm_vabdq): Remove.
6547 (__arm_vabdq_m): Remove.
6548 (__arm_vabdq_x): Remove.
6550 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6552 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
6553 (MVE_FP_VABDQ_ONLY): New.
6554 (mve_insn): Add vabd.
6555 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
6556 (@mve_<mve_insn>q_f<mode>): ... this.
6557 (mve_vabdq_m_f<mode>): Remove.
6559 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6561 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
6562 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
6563 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
6564 * config/arm/arm_mve.h (vqrdmulhq): Remove.
6565 (vqrdmulhq_m): Remove.
6566 (vqrdmulhq_s8): Remove.
6567 (vqrdmulhq_n_s8): Remove.
6568 (vqrdmulhq_s16): Remove.
6569 (vqrdmulhq_n_s16): Remove.
6570 (vqrdmulhq_s32): Remove.
6571 (vqrdmulhq_n_s32): Remove.
6572 (vqrdmulhq_m_n_s8): Remove.
6573 (vqrdmulhq_m_n_s32): Remove.
6574 (vqrdmulhq_m_n_s16): Remove.
6575 (vqrdmulhq_m_s8): Remove.
6576 (vqrdmulhq_m_s32): Remove.
6577 (vqrdmulhq_m_s16): Remove.
6578 (__arm_vqrdmulhq_s8): Remove.
6579 (__arm_vqrdmulhq_n_s8): Remove.
6580 (__arm_vqrdmulhq_s16): Remove.
6581 (__arm_vqrdmulhq_n_s16): Remove.
6582 (__arm_vqrdmulhq_s32): Remove.
6583 (__arm_vqrdmulhq_n_s32): Remove.
6584 (__arm_vqrdmulhq_m_n_s8): Remove.
6585 (__arm_vqrdmulhq_m_n_s32): Remove.
6586 (__arm_vqrdmulhq_m_n_s16): Remove.
6587 (__arm_vqrdmulhq_m_s8): Remove.
6588 (__arm_vqrdmulhq_m_s32): Remove.
6589 (__arm_vqrdmulhq_m_s16): Remove.
6590 (__arm_vqrdmulhq): Remove.
6591 (__arm_vqrdmulhq_m): Remove.
6593 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6595 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
6596 (MVE_SHIFT_N, MVE_SHIFT_R): New.
6597 (mve_insn): Add vqshl, vshl.
6598 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
6599 (mve_vshlq_n_<supf><mode>): Merge into ...
6600 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6601 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
6603 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
6604 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
6606 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
6607 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
6609 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6610 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
6612 (@mve_<mve_insn>q_<supf><mode>): ... this.
6614 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6616 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
6617 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
6618 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
6619 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
6621 * config/arm/arm_mve.h (vrshlq): Remove.
6622 (vrshlq_m_n): Remove.
6625 (vrshlq_u8): Remove.
6626 (vrshlq_n_u8): Remove.
6627 (vrshlq_s8): Remove.
6628 (vrshlq_n_s8): Remove.
6629 (vrshlq_u16): Remove.
6630 (vrshlq_n_u16): Remove.
6631 (vrshlq_s16): Remove.
6632 (vrshlq_n_s16): Remove.
6633 (vrshlq_u32): Remove.
6634 (vrshlq_n_u32): Remove.
6635 (vrshlq_s32): Remove.
6636 (vrshlq_n_s32): Remove.
6637 (vrshlq_m_n_u8): Remove.
6638 (vrshlq_m_n_s8): Remove.
6639 (vrshlq_m_n_u16): Remove.
6640 (vrshlq_m_n_s16): Remove.
6641 (vrshlq_m_n_u32): Remove.
6642 (vrshlq_m_n_s32): Remove.
6643 (vrshlq_m_s8): Remove.
6644 (vrshlq_m_s32): Remove.
6645 (vrshlq_m_s16): Remove.
6646 (vrshlq_m_u8): Remove.
6647 (vrshlq_m_u32): Remove.
6648 (vrshlq_m_u16): Remove.
6649 (vrshlq_x_s8): Remove.
6650 (vrshlq_x_s16): Remove.
6651 (vrshlq_x_s32): Remove.
6652 (vrshlq_x_u8): Remove.
6653 (vrshlq_x_u16): Remove.
6654 (vrshlq_x_u32): Remove.
6655 (__arm_vrshlq_u8): Remove.
6656 (__arm_vrshlq_n_u8): Remove.
6657 (__arm_vrshlq_s8): Remove.
6658 (__arm_vrshlq_n_s8): Remove.
6659 (__arm_vrshlq_u16): Remove.
6660 (__arm_vrshlq_n_u16): Remove.
6661 (__arm_vrshlq_s16): Remove.
6662 (__arm_vrshlq_n_s16): Remove.
6663 (__arm_vrshlq_u32): Remove.
6664 (__arm_vrshlq_n_u32): Remove.
6665 (__arm_vrshlq_s32): Remove.
6666 (__arm_vrshlq_n_s32): Remove.
6667 (__arm_vrshlq_m_n_u8): Remove.
6668 (__arm_vrshlq_m_n_s8): Remove.
6669 (__arm_vrshlq_m_n_u16): Remove.
6670 (__arm_vrshlq_m_n_s16): Remove.
6671 (__arm_vrshlq_m_n_u32): Remove.
6672 (__arm_vrshlq_m_n_s32): Remove.
6673 (__arm_vrshlq_m_s8): Remove.
6674 (__arm_vrshlq_m_s32): Remove.
6675 (__arm_vrshlq_m_s16): Remove.
6676 (__arm_vrshlq_m_u8): Remove.
6677 (__arm_vrshlq_m_u32): Remove.
6678 (__arm_vrshlq_m_u16): Remove.
6679 (__arm_vrshlq_x_s8): Remove.
6680 (__arm_vrshlq_x_s16): Remove.
6681 (__arm_vrshlq_x_s32): Remove.
6682 (__arm_vrshlq_x_u8): Remove.
6683 (__arm_vrshlq_x_u16): Remove.
6684 (__arm_vrshlq_x_u32): Remove.
6685 (__arm_vrshlq): Remove.
6686 (__arm_vrshlq_m_n): Remove.
6687 (__arm_vrshlq_m): Remove.
6688 (__arm_vrshlq_x): Remove.
6690 (vqrshlq_m_n): Remove.
6691 (vqrshlq_m): Remove.
6692 (vqrshlq_u8): Remove.
6693 (vqrshlq_n_u8): Remove.
6694 (vqrshlq_s8): Remove.
6695 (vqrshlq_n_s8): Remove.
6696 (vqrshlq_u16): Remove.
6697 (vqrshlq_n_u16): Remove.
6698 (vqrshlq_s16): Remove.
6699 (vqrshlq_n_s16): Remove.
6700 (vqrshlq_u32): Remove.
6701 (vqrshlq_n_u32): Remove.
6702 (vqrshlq_s32): Remove.
6703 (vqrshlq_n_s32): Remove.
6704 (vqrshlq_m_n_u8): Remove.
6705 (vqrshlq_m_n_s8): Remove.
6706 (vqrshlq_m_n_u16): Remove.
6707 (vqrshlq_m_n_s16): Remove.
6708 (vqrshlq_m_n_u32): Remove.
6709 (vqrshlq_m_n_s32): Remove.
6710 (vqrshlq_m_s8): Remove.
6711 (vqrshlq_m_s32): Remove.
6712 (vqrshlq_m_s16): Remove.
6713 (vqrshlq_m_u8): Remove.
6714 (vqrshlq_m_u32): Remove.
6715 (vqrshlq_m_u16): Remove.
6716 (__arm_vqrshlq_u8): Remove.
6717 (__arm_vqrshlq_n_u8): Remove.
6718 (__arm_vqrshlq_s8): Remove.
6719 (__arm_vqrshlq_n_s8): Remove.
6720 (__arm_vqrshlq_u16): Remove.
6721 (__arm_vqrshlq_n_u16): Remove.
6722 (__arm_vqrshlq_s16): Remove.
6723 (__arm_vqrshlq_n_s16): Remove.
6724 (__arm_vqrshlq_u32): Remove.
6725 (__arm_vqrshlq_n_u32): Remove.
6726 (__arm_vqrshlq_s32): Remove.
6727 (__arm_vqrshlq_n_s32): Remove.
6728 (__arm_vqrshlq_m_n_u8): Remove.
6729 (__arm_vqrshlq_m_n_s8): Remove.
6730 (__arm_vqrshlq_m_n_u16): Remove.
6731 (__arm_vqrshlq_m_n_s16): Remove.
6732 (__arm_vqrshlq_m_n_u32): Remove.
6733 (__arm_vqrshlq_m_n_s32): Remove.
6734 (__arm_vqrshlq_m_s8): Remove.
6735 (__arm_vqrshlq_m_s32): Remove.
6736 (__arm_vqrshlq_m_s16): Remove.
6737 (__arm_vqrshlq_m_u8): Remove.
6738 (__arm_vqrshlq_m_u32): Remove.
6739 (__arm_vqrshlq_m_u16): Remove.
6740 (__arm_vqrshlq): Remove.
6741 (__arm_vqrshlq_m_n): Remove.
6742 (__arm_vqrshlq_m): Remove.
6744 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6746 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
6747 (mve_insn): Add vqrshl, vrshl.
6748 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
6749 (mve_vrshlq_n_<supf><mode>): Merge into ...
6750 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6751 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
6753 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6755 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
6757 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
6758 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
6760 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6763 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
6764 denegrate PHI optmization.
6766 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
6768 * config/i386/predicates.md (register_no_SP_operand):
6769 Rename from index_register_operand.
6770 (call_register_operand): Update for rename.
6771 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
6773 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6776 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
6777 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
6778 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
6779 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
6780 (s-match): Split into s-generic-match and s-gimple-match.
6781 * configure.ac (with-matchpd-partitions,
6782 DEFAULT_MATCHPD_PARTITIONS): New.
6783 * configure: Regenerate.
6785 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6788 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
6789 (decision_tree::gen): Accept list of files instead of single and update
6790 to write function definition to header and main file.
6791 (write_predicate): Likewise.
6792 (write_header): Emit pragmas and new includes.
6793 (main): Create file buffers and cleanup.
6794 (showUsage, write_header_includes): New.
6796 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6799 * Makefile.in (OBJS): Add gimple-match-exports.o.
6800 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
6801 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
6802 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
6803 gimple_resimplify5, constant_for_folding, convert_conditional_op,
6804 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
6805 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
6806 do_valueize, try_conditional_simplification, gimple_extract,
6807 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
6808 commutative_ternary_op_p, first_commutative_argument,
6809 associative_binary_op_p, directly_supported_p,
6810 get_conditional_internal_fn): Moved to gimple-match-exports.cc
6811 * gimple-match-exports.cc: New file.
6813 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6816 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
6818 (dt_simplify::gen_1): Use it.
6820 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6823 * genmatch.cc (output_line_directive): Only emit commented directive
6826 2023-05-05 Tamar Christina <tamar.christina@arm.com>
6829 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
6831 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
6833 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
6834 unused in_mode/in_n variables.
6836 2023-05-05 Richard Biener <rguenther@suse.de>
6838 PR tree-optimization/109735
6839 * tree-vect-stmts.cc (vectorizable_operation): Perform
6840 conversion for POINTER_DIFF_EXPR unconditionally.
6842 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
6844 * config/i386/mmx.md (mulv2si3): New expander.
6845 (*mulv2si3): New insn pattern.
6847 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
6848 Thomas Schwinge <thomas@codesourcery.com>
6851 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
6852 alongside reverse-offload function table to prevent NULL values
6853 of the function addresses.
6855 2023-05-05 Jakub Jelinek <jakub@redhat.com>
6857 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
6859 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
6861 2023-05-05 Andrew Pinski <apinski@marvell.com>
6863 PR tree-optimization/109732
6864 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
6865 of the argtrue/argfalse.
6867 2023-05-05 Andrew Pinski <apinski@marvell.com>
6869 PR tree-optimization/109722
6870 * match.pd: Extend the `ABS<a> == 0` pattern
6871 to cover `ABSU<a> == 0` too.
6873 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
6876 * config/i386/predicates.md (index_reg_operand): New predicate.
6877 * config/i386/i386.md (ashift to lea spliter): Use
6878 general_reg_operand and index_reg_operand predicates.
6880 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6882 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
6883 Rename and reimplement with RTL codes to...
6884 (aarch64_<optab>hn2<mode>_insn_le): .. This.
6885 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
6886 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
6888 (aarch64_<optab>hn2<mode>_insn_be): ... This.
6889 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
6890 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
6891 (aarch64_<optab>hn2<mode>): ... This.
6892 (aarch64_r<optab>hn2<mode>): New expander.
6893 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
6894 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
6896 (sur): Remove handling of the above.
6899 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6901 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
6903 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
6904 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
6905 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
6906 (aarch64_<sur><addsub>hn<mode>): Delete.
6907 (aarch64_<optab>hn<mode>): New define_expand.
6908 (aarch64_r<optab>hn<mode>): Likewise.
6909 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
6912 2023-05-04 Andrew Pinski <apinski@marvell.com>
6914 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
6915 diamond form bb with forwarder only empty blocks better.
6917 2023-05-04 Andrew Pinski <apinski@marvell.com>
6919 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
6920 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
6921 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
6922 of an inline version of it.
6923 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
6924 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
6926 2023-05-04 Andrew Pinski <apinski@marvell.com>
6928 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
6929 the default argument value for dce_ssa_names to nullptr.
6930 Check to make sure dce_ssa_names is a non-nullptr before
6931 calling simple_dce_from_worklist.
6933 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
6935 * config/i386/predicates.md (index_register_operand): Reject
6936 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
6937 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
6938 (call_register_no_elim_operand): Rewrite as ...
6939 (call_register_operand): ... this.
6940 (call_insn_operand): Use call_register_operand predicate.
6942 2023-05-04 Richard Biener <rguenther@suse.de>
6944 PR tree-optimization/109721
6945 * tree-vect-stmts.cc (vectorizable_operation): Make sure
6946 to test word_mode for all !target_support_p operations.
6948 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6951 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
6952 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
6953 (aarch64_mla<mode>): Rename to...
6954 (aarch64_mla<mode><vczle><vczbe>): ... This.
6955 (*aarch64_mla_elt<mode>): Rename to...
6956 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
6957 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
6958 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
6959 (aarch64_mla_n<mode>): Rename to...
6960 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
6961 (aarch64_mls<mode>): Rename to...
6962 (aarch64_mls<mode><vczle><vczbe>): ... This.
6963 (*aarch64_mls_elt<mode>): Rename to...
6964 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
6965 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
6966 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
6967 (aarch64_mls_n<mode>): Rename to...
6968 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
6969 (fma<mode>4): Rename to...
6970 (fma<mode>4<vczle><vczbe>): ... This.
6971 (*aarch64_fma4_elt<mode>): Rename to...
6972 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
6973 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
6974 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
6975 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
6976 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
6977 (fnma<mode>4): Rename to...
6978 (fnma<mode>4<vczle><vczbe>): ... This.
6979 (*aarch64_fnma4_elt<mode>): Rename to...
6980 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
6981 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
6982 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
6983 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
6984 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
6985 (aarch64_simd_bsl<mode>_internal): Rename to...
6986 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
6987 (*aarch64_simd_bsl<mode>_alt): Rename to...
6988 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
6990 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6993 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
6994 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
6995 (fabd<mode>3): Rename to...
6996 (fabd<mode>3<vczle><vczbe>): ... This.
6997 (aarch64_<optab>p<mode>): Rename to...
6998 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
6999 (aarch64_faddp<mode>): Rename to...
7000 (aarch64_faddp<mode><vczle><vczbe>): ... This.
7002 2023-05-04 Martin Liska <mliska@suse.cz>
7004 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
7005 (print_version): Use it.
7006 (generate_results): Likewise.
7008 2023-05-04 Richard Biener <rguenther@suse.de>
7010 * tree-cfg.h (last_stmt): Rename to ...
7011 (last_nondebug_stmt): ... this.
7012 * tree-cfg.cc (last_stmt): Rename to ...
7013 (last_nondebug_stmt): ... this.
7014 (assign_discriminators): Adjust.
7015 (group_case_labels_stmt): Likewise.
7016 (gimple_can_duplicate_bb_p): Likewise.
7017 (execute_fixup_cfg): Likewise.
7018 * auto-profile.cc (afdo_propagate_circuit): Likewise.
7019 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
7020 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
7021 (determine_parallel_type): Likewise.
7022 (adjust_context_and_scope): Likewise.
7023 (expand_task_call): Likewise.
7024 (remove_exit_barrier): Likewise.
7025 (expand_omp_taskreg): Likewise.
7026 (expand_omp_for_init_counts): Likewise.
7027 (expand_omp_for_init_vars): Likewise.
7028 (expand_omp_for_static_chunk): Likewise.
7029 (expand_omp_simd): Likewise.
7030 (expand_oacc_for): Likewise.
7031 (expand_omp_for): Likewise.
7032 (expand_omp_sections): Likewise.
7033 (expand_omp_atomic_fetch_op): Likewise.
7034 (expand_omp_atomic_cas): Likewise.
7035 (expand_omp_atomic): Likewise.
7036 (expand_omp_target): Likewise.
7037 (expand_omp): Likewise.
7038 (omp_make_gimple_edges): Likewise.
7039 * trans-mem.cc (tm_region_init): Likewise.
7040 * tree-inline.cc (redirect_all_calls): Likewise.
7041 * tree-parloops.cc (gen_parallel_loop): Likewise.
7042 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
7043 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
7045 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
7046 (may_eliminate_iv): Likewise.
7047 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
7048 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
7050 (estimate_numbers_of_iterations): Likewise.
7051 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
7052 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
7053 (set_predicates_for_bb): Likewise.
7054 (init_loop_unswitch_info): Likewise.
7055 (hoist_guard): Likewise.
7056 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
7057 (minmax_replacement): Likewise.
7058 * tree-ssa-reassoc.cc (update_range_test): Likewise.
7059 (optimize_range_tests_to_bit_test): Likewise.
7060 (optimize_range_tests_var_bound): Likewise.
7061 (optimize_range_tests): Likewise.
7062 (no_side_effect_bb): Likewise.
7063 (suitable_cond_bb): Likewise.
7064 (maybe_optimize_range_tests): Likewise.
7065 (reassociate_bb): Likewise.
7066 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
7068 2023-05-04 Jakub Jelinek <jakub@redhat.com>
7071 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
7072 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
7073 for it only if it still has TImode. Don't decide whether to call
7074 fix_debug_reg_uses based on whether SRC is ever set or not.
7076 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
7078 * config/cris/cris.cc (cris_split_constant): New function.
7079 * config/cris/cris.md (splitop): New iterator.
7080 (opsplit1): New define_peephole2.
7081 * config/cris/cris-protos.h (cris_split_constant): Declare.
7082 (cris_splittable_constant_p): New macro.
7084 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
7086 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
7089 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
7091 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
7092 lra_in_progress, not reload_in_progress.
7093 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
7094 * config/cris/constraints.md ("Q"): Ditto.
7096 2023-05-03 Andrew Pinski <apinski@marvell.com>
7098 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
7099 stats on removed number of statements and phis.
7101 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
7103 PR tree-optimization/109711
7104 * value-range.cc (irange::verify_range): Allow types of
7107 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
7110 * calls.cc (can_implement_as_sibling_call_p): Reject calls
7111 to __sanitizer_cov_trace_pc.
7113 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
7116 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
7117 a new ABI break parameter for GCC 14. Set it to the alignment
7118 of enums that have an underlying type. Take the true alignment
7119 of such enums from the TYPE_ALIGN of the underlying type's
7121 (aarch64_function_arg_boundary): Update accordingly.
7122 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
7123 Warn about ABI differences.
7125 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
7128 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
7129 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
7130 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
7131 (aarch64_gimplify_va_arg_expr): Likewise.
7133 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7135 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
7136 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
7137 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
7139 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
7140 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
7141 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
7142 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
7143 * config/arm/arm_mve.h (vhsubq): Remove.
7149 (vhsubq_u8): Remove.
7150 (vhsubq_n_u8): Remove.
7151 (vhaddq_u8): Remove.
7152 (vhaddq_n_u8): Remove.
7153 (vhsubq_s8): Remove.
7154 (vhsubq_n_s8): Remove.
7155 (vhaddq_s8): Remove.
7156 (vhaddq_n_s8): Remove.
7157 (vhsubq_u16): Remove.
7158 (vhsubq_n_u16): Remove.
7159 (vhaddq_u16): Remove.
7160 (vhaddq_n_u16): Remove.
7161 (vhsubq_s16): Remove.
7162 (vhsubq_n_s16): Remove.
7163 (vhaddq_s16): Remove.
7164 (vhaddq_n_s16): Remove.
7165 (vhsubq_u32): Remove.
7166 (vhsubq_n_u32): Remove.
7167 (vhaddq_u32): Remove.
7168 (vhaddq_n_u32): Remove.
7169 (vhsubq_s32): Remove.
7170 (vhsubq_n_s32): Remove.
7171 (vhaddq_s32): Remove.
7172 (vhaddq_n_s32): Remove.
7173 (vhaddq_m_n_s8): Remove.
7174 (vhaddq_m_n_s32): Remove.
7175 (vhaddq_m_n_s16): Remove.
7176 (vhaddq_m_n_u8): Remove.
7177 (vhaddq_m_n_u32): Remove.
7178 (vhaddq_m_n_u16): Remove.
7179 (vhaddq_m_s8): Remove.
7180 (vhaddq_m_s32): Remove.
7181 (vhaddq_m_s16): Remove.
7182 (vhaddq_m_u8): Remove.
7183 (vhaddq_m_u32): Remove.
7184 (vhaddq_m_u16): Remove.
7185 (vhsubq_m_n_s8): Remove.
7186 (vhsubq_m_n_s32): Remove.
7187 (vhsubq_m_n_s16): Remove.
7188 (vhsubq_m_n_u8): Remove.
7189 (vhsubq_m_n_u32): Remove.
7190 (vhsubq_m_n_u16): Remove.
7191 (vhsubq_m_s8): Remove.
7192 (vhsubq_m_s32): Remove.
7193 (vhsubq_m_s16): Remove.
7194 (vhsubq_m_u8): Remove.
7195 (vhsubq_m_u32): Remove.
7196 (vhsubq_m_u16): Remove.
7197 (vhaddq_x_n_s8): Remove.
7198 (vhaddq_x_n_s16): Remove.
7199 (vhaddq_x_n_s32): Remove.
7200 (vhaddq_x_n_u8): Remove.
7201 (vhaddq_x_n_u16): Remove.
7202 (vhaddq_x_n_u32): Remove.
7203 (vhaddq_x_s8): Remove.
7204 (vhaddq_x_s16): Remove.
7205 (vhaddq_x_s32): Remove.
7206 (vhaddq_x_u8): Remove.
7207 (vhaddq_x_u16): Remove.
7208 (vhaddq_x_u32): Remove.
7209 (vhsubq_x_n_s8): Remove.
7210 (vhsubq_x_n_s16): Remove.
7211 (vhsubq_x_n_s32): Remove.
7212 (vhsubq_x_n_u8): Remove.
7213 (vhsubq_x_n_u16): Remove.
7214 (vhsubq_x_n_u32): Remove.
7215 (vhsubq_x_s8): Remove.
7216 (vhsubq_x_s16): Remove.
7217 (vhsubq_x_s32): Remove.
7218 (vhsubq_x_u8): Remove.
7219 (vhsubq_x_u16): Remove.
7220 (vhsubq_x_u32): Remove.
7221 (__arm_vhsubq_u8): Remove.
7222 (__arm_vhsubq_n_u8): Remove.
7223 (__arm_vhaddq_u8): Remove.
7224 (__arm_vhaddq_n_u8): Remove.
7225 (__arm_vhsubq_s8): Remove.
7226 (__arm_vhsubq_n_s8): Remove.
7227 (__arm_vhaddq_s8): Remove.
7228 (__arm_vhaddq_n_s8): Remove.
7229 (__arm_vhsubq_u16): Remove.
7230 (__arm_vhsubq_n_u16): Remove.
7231 (__arm_vhaddq_u16): Remove.
7232 (__arm_vhaddq_n_u16): Remove.
7233 (__arm_vhsubq_s16): Remove.
7234 (__arm_vhsubq_n_s16): Remove.
7235 (__arm_vhaddq_s16): Remove.
7236 (__arm_vhaddq_n_s16): Remove.
7237 (__arm_vhsubq_u32): Remove.
7238 (__arm_vhsubq_n_u32): Remove.
7239 (__arm_vhaddq_u32): Remove.
7240 (__arm_vhaddq_n_u32): Remove.
7241 (__arm_vhsubq_s32): Remove.
7242 (__arm_vhsubq_n_s32): Remove.
7243 (__arm_vhaddq_s32): Remove.
7244 (__arm_vhaddq_n_s32): Remove.
7245 (__arm_vhaddq_m_n_s8): Remove.
7246 (__arm_vhaddq_m_n_s32): Remove.
7247 (__arm_vhaddq_m_n_s16): Remove.
7248 (__arm_vhaddq_m_n_u8): Remove.
7249 (__arm_vhaddq_m_n_u32): Remove.
7250 (__arm_vhaddq_m_n_u16): Remove.
7251 (__arm_vhaddq_m_s8): Remove.
7252 (__arm_vhaddq_m_s32): Remove.
7253 (__arm_vhaddq_m_s16): Remove.
7254 (__arm_vhaddq_m_u8): Remove.
7255 (__arm_vhaddq_m_u32): Remove.
7256 (__arm_vhaddq_m_u16): Remove.
7257 (__arm_vhsubq_m_n_s8): Remove.
7258 (__arm_vhsubq_m_n_s32): Remove.
7259 (__arm_vhsubq_m_n_s16): Remove.
7260 (__arm_vhsubq_m_n_u8): Remove.
7261 (__arm_vhsubq_m_n_u32): Remove.
7262 (__arm_vhsubq_m_n_u16): Remove.
7263 (__arm_vhsubq_m_s8): Remove.
7264 (__arm_vhsubq_m_s32): Remove.
7265 (__arm_vhsubq_m_s16): Remove.
7266 (__arm_vhsubq_m_u8): Remove.
7267 (__arm_vhsubq_m_u32): Remove.
7268 (__arm_vhsubq_m_u16): Remove.
7269 (__arm_vhaddq_x_n_s8): Remove.
7270 (__arm_vhaddq_x_n_s16): Remove.
7271 (__arm_vhaddq_x_n_s32): Remove.
7272 (__arm_vhaddq_x_n_u8): Remove.
7273 (__arm_vhaddq_x_n_u16): Remove.
7274 (__arm_vhaddq_x_n_u32): Remove.
7275 (__arm_vhaddq_x_s8): Remove.
7276 (__arm_vhaddq_x_s16): Remove.
7277 (__arm_vhaddq_x_s32): Remove.
7278 (__arm_vhaddq_x_u8): Remove.
7279 (__arm_vhaddq_x_u16): Remove.
7280 (__arm_vhaddq_x_u32): Remove.
7281 (__arm_vhsubq_x_n_s8): Remove.
7282 (__arm_vhsubq_x_n_s16): Remove.
7283 (__arm_vhsubq_x_n_s32): Remove.
7284 (__arm_vhsubq_x_n_u8): Remove.
7285 (__arm_vhsubq_x_n_u16): Remove.
7286 (__arm_vhsubq_x_n_u32): Remove.
7287 (__arm_vhsubq_x_s8): Remove.
7288 (__arm_vhsubq_x_s16): Remove.
7289 (__arm_vhsubq_x_s32): Remove.
7290 (__arm_vhsubq_x_u8): Remove.
7291 (__arm_vhsubq_x_u16): Remove.
7292 (__arm_vhsubq_x_u32): Remove.
7293 (__arm_vhsubq): Remove.
7294 (__arm_vhaddq): Remove.
7295 (__arm_vhaddq_m): Remove.
7296 (__arm_vhsubq_m): Remove.
7297 (__arm_vhaddq_x): Remove.
7298 (__arm_vhsubq_x): Remove.
7302 (vmulhq_u8): Remove.
7303 (vmulhq_s8): Remove.
7304 (vmulhq_u16): Remove.
7305 (vmulhq_s16): Remove.
7306 (vmulhq_u32): Remove.
7307 (vmulhq_s32): Remove.
7308 (vmulhq_m_s8): Remove.
7309 (vmulhq_m_s32): Remove.
7310 (vmulhq_m_s16): Remove.
7311 (vmulhq_m_u8): Remove.
7312 (vmulhq_m_u32): Remove.
7313 (vmulhq_m_u16): Remove.
7314 (vmulhq_x_s8): Remove.
7315 (vmulhq_x_s16): Remove.
7316 (vmulhq_x_s32): Remove.
7317 (vmulhq_x_u8): Remove.
7318 (vmulhq_x_u16): Remove.
7319 (vmulhq_x_u32): Remove.
7320 (__arm_vmulhq_u8): Remove.
7321 (__arm_vmulhq_s8): Remove.
7322 (__arm_vmulhq_u16): Remove.
7323 (__arm_vmulhq_s16): Remove.
7324 (__arm_vmulhq_u32): Remove.
7325 (__arm_vmulhq_s32): Remove.
7326 (__arm_vmulhq_m_s8): Remove.
7327 (__arm_vmulhq_m_s32): Remove.
7328 (__arm_vmulhq_m_s16): Remove.
7329 (__arm_vmulhq_m_u8): Remove.
7330 (__arm_vmulhq_m_u32): Remove.
7331 (__arm_vmulhq_m_u16): Remove.
7332 (__arm_vmulhq_x_s8): Remove.
7333 (__arm_vmulhq_x_s16): Remove.
7334 (__arm_vmulhq_x_s32): Remove.
7335 (__arm_vmulhq_x_u8): Remove.
7336 (__arm_vmulhq_x_u16): Remove.
7337 (__arm_vmulhq_x_u32): Remove.
7338 (__arm_vmulhq): Remove.
7339 (__arm_vmulhq_m): Remove.
7340 (__arm_vmulhq_x): Remove.
7345 (vqsubq_u8): Remove.
7346 (vqsubq_n_u8): Remove.
7347 (vqaddq_u8): Remove.
7348 (vqaddq_n_u8): Remove.
7349 (vqsubq_s8): Remove.
7350 (vqsubq_n_s8): Remove.
7351 (vqaddq_s8): Remove.
7352 (vqaddq_n_s8): Remove.
7353 (vqsubq_u16): Remove.
7354 (vqsubq_n_u16): Remove.
7355 (vqaddq_u16): Remove.
7356 (vqaddq_n_u16): Remove.
7357 (vqsubq_s16): Remove.
7358 (vqsubq_n_s16): Remove.
7359 (vqaddq_s16): Remove.
7360 (vqaddq_n_s16): Remove.
7361 (vqsubq_u32): Remove.
7362 (vqsubq_n_u32): Remove.
7363 (vqaddq_u32): Remove.
7364 (vqaddq_n_u32): Remove.
7365 (vqsubq_s32): Remove.
7366 (vqsubq_n_s32): Remove.
7367 (vqaddq_s32): Remove.
7368 (vqaddq_n_s32): Remove.
7369 (vqaddq_m_n_s8): Remove.
7370 (vqaddq_m_n_s32): Remove.
7371 (vqaddq_m_n_s16): Remove.
7372 (vqaddq_m_n_u8): Remove.
7373 (vqaddq_m_n_u32): Remove.
7374 (vqaddq_m_n_u16): Remove.
7375 (vqaddq_m_s8): Remove.
7376 (vqaddq_m_s32): Remove.
7377 (vqaddq_m_s16): Remove.
7378 (vqaddq_m_u8): Remove.
7379 (vqaddq_m_u32): Remove.
7380 (vqaddq_m_u16): Remove.
7381 (vqsubq_m_n_s8): Remove.
7382 (vqsubq_m_n_s32): Remove.
7383 (vqsubq_m_n_s16): Remove.
7384 (vqsubq_m_n_u8): Remove.
7385 (vqsubq_m_n_u32): Remove.
7386 (vqsubq_m_n_u16): Remove.
7387 (vqsubq_m_s8): Remove.
7388 (vqsubq_m_s32): Remove.
7389 (vqsubq_m_s16): Remove.
7390 (vqsubq_m_u8): Remove.
7391 (vqsubq_m_u32): Remove.
7392 (vqsubq_m_u16): Remove.
7393 (__arm_vqsubq_u8): Remove.
7394 (__arm_vqsubq_n_u8): Remove.
7395 (__arm_vqaddq_u8): Remove.
7396 (__arm_vqaddq_n_u8): Remove.
7397 (__arm_vqsubq_s8): Remove.
7398 (__arm_vqsubq_n_s8): Remove.
7399 (__arm_vqaddq_s8): Remove.
7400 (__arm_vqaddq_n_s8): Remove.
7401 (__arm_vqsubq_u16): Remove.
7402 (__arm_vqsubq_n_u16): Remove.
7403 (__arm_vqaddq_u16): Remove.
7404 (__arm_vqaddq_n_u16): Remove.
7405 (__arm_vqsubq_s16): Remove.
7406 (__arm_vqsubq_n_s16): Remove.
7407 (__arm_vqaddq_s16): Remove.
7408 (__arm_vqaddq_n_s16): Remove.
7409 (__arm_vqsubq_u32): Remove.
7410 (__arm_vqsubq_n_u32): Remove.
7411 (__arm_vqaddq_u32): Remove.
7412 (__arm_vqaddq_n_u32): Remove.
7413 (__arm_vqsubq_s32): Remove.
7414 (__arm_vqsubq_n_s32): Remove.
7415 (__arm_vqaddq_s32): Remove.
7416 (__arm_vqaddq_n_s32): Remove.
7417 (__arm_vqaddq_m_n_s8): Remove.
7418 (__arm_vqaddq_m_n_s32): Remove.
7419 (__arm_vqaddq_m_n_s16): Remove.
7420 (__arm_vqaddq_m_n_u8): Remove.
7421 (__arm_vqaddq_m_n_u32): Remove.
7422 (__arm_vqaddq_m_n_u16): Remove.
7423 (__arm_vqaddq_m_s8): Remove.
7424 (__arm_vqaddq_m_s32): Remove.
7425 (__arm_vqaddq_m_s16): Remove.
7426 (__arm_vqaddq_m_u8): Remove.
7427 (__arm_vqaddq_m_u32): Remove.
7428 (__arm_vqaddq_m_u16): Remove.
7429 (__arm_vqsubq_m_n_s8): Remove.
7430 (__arm_vqsubq_m_n_s32): Remove.
7431 (__arm_vqsubq_m_n_s16): Remove.
7432 (__arm_vqsubq_m_n_u8): Remove.
7433 (__arm_vqsubq_m_n_u32): Remove.
7434 (__arm_vqsubq_m_n_u16): Remove.
7435 (__arm_vqsubq_m_s8): Remove.
7436 (__arm_vqsubq_m_s32): Remove.
7437 (__arm_vqsubq_m_s16): Remove.
7438 (__arm_vqsubq_m_u8): Remove.
7439 (__arm_vqsubq_m_u32): Remove.
7440 (__arm_vqsubq_m_u16): Remove.
7441 (__arm_vqsubq): Remove.
7442 (__arm_vqaddq): Remove.
7443 (__arm_vqaddq_m): Remove.
7444 (__arm_vqsubq_m): Remove.
7446 (vqdmulhq_m): Remove.
7447 (vqdmulhq_s8): Remove.
7448 (vqdmulhq_n_s8): Remove.
7449 (vqdmulhq_s16): Remove.
7450 (vqdmulhq_n_s16): Remove.
7451 (vqdmulhq_s32): Remove.
7452 (vqdmulhq_n_s32): Remove.
7453 (vqdmulhq_m_n_s8): Remove.
7454 (vqdmulhq_m_n_s32): Remove.
7455 (vqdmulhq_m_n_s16): Remove.
7456 (vqdmulhq_m_s8): Remove.
7457 (vqdmulhq_m_s32): Remove.
7458 (vqdmulhq_m_s16): Remove.
7459 (__arm_vqdmulhq_s8): Remove.
7460 (__arm_vqdmulhq_n_s8): Remove.
7461 (__arm_vqdmulhq_s16): Remove.
7462 (__arm_vqdmulhq_n_s16): Remove.
7463 (__arm_vqdmulhq_s32): Remove.
7464 (__arm_vqdmulhq_n_s32): Remove.
7465 (__arm_vqdmulhq_m_n_s8): Remove.
7466 (__arm_vqdmulhq_m_n_s32): Remove.
7467 (__arm_vqdmulhq_m_n_s16): Remove.
7468 (__arm_vqdmulhq_m_s8): Remove.
7469 (__arm_vqdmulhq_m_s32): Remove.
7470 (__arm_vqdmulhq_m_s16): Remove.
7471 (__arm_vqdmulhq): Remove.
7472 (__arm_vqdmulhq_m): Remove.
7474 (vrhaddq_m): Remove.
7475 (vrhaddq_x): Remove.
7476 (vrhaddq_u8): Remove.
7477 (vrhaddq_s8): Remove.
7478 (vrhaddq_u16): Remove.
7479 (vrhaddq_s16): Remove.
7480 (vrhaddq_u32): Remove.
7481 (vrhaddq_s32): Remove.
7482 (vrhaddq_m_s8): Remove.
7483 (vrhaddq_m_s32): Remove.
7484 (vrhaddq_m_s16): Remove.
7485 (vrhaddq_m_u8): Remove.
7486 (vrhaddq_m_u32): Remove.
7487 (vrhaddq_m_u16): Remove.
7488 (vrhaddq_x_s8): Remove.
7489 (vrhaddq_x_s16): Remove.
7490 (vrhaddq_x_s32): Remove.
7491 (vrhaddq_x_u8): Remove.
7492 (vrhaddq_x_u16): Remove.
7493 (vrhaddq_x_u32): Remove.
7494 (__arm_vrhaddq_u8): Remove.
7495 (__arm_vrhaddq_s8): Remove.
7496 (__arm_vrhaddq_u16): Remove.
7497 (__arm_vrhaddq_s16): Remove.
7498 (__arm_vrhaddq_u32): Remove.
7499 (__arm_vrhaddq_s32): Remove.
7500 (__arm_vrhaddq_m_s8): Remove.
7501 (__arm_vrhaddq_m_s32): Remove.
7502 (__arm_vrhaddq_m_s16): Remove.
7503 (__arm_vrhaddq_m_u8): Remove.
7504 (__arm_vrhaddq_m_u32): Remove.
7505 (__arm_vrhaddq_m_u16): Remove.
7506 (__arm_vrhaddq_x_s8): Remove.
7507 (__arm_vrhaddq_x_s16): Remove.
7508 (__arm_vrhaddq_x_s32): Remove.
7509 (__arm_vrhaddq_x_u8): Remove.
7510 (__arm_vrhaddq_x_u16): Remove.
7511 (__arm_vrhaddq_x_u32): Remove.
7512 (__arm_vrhaddq): Remove.
7513 (__arm_vrhaddq_m): Remove.
7514 (__arm_vrhaddq_x): Remove.
7516 (vrmulhq_m): Remove.
7517 (vrmulhq_x): Remove.
7518 (vrmulhq_u8): Remove.
7519 (vrmulhq_s8): Remove.
7520 (vrmulhq_u16): Remove.
7521 (vrmulhq_s16): Remove.
7522 (vrmulhq_u32): Remove.
7523 (vrmulhq_s32): Remove.
7524 (vrmulhq_m_s8): Remove.
7525 (vrmulhq_m_s32): Remove.
7526 (vrmulhq_m_s16): Remove.
7527 (vrmulhq_m_u8): Remove.
7528 (vrmulhq_m_u32): Remove.
7529 (vrmulhq_m_u16): Remove.
7530 (vrmulhq_x_s8): Remove.
7531 (vrmulhq_x_s16): Remove.
7532 (vrmulhq_x_s32): Remove.
7533 (vrmulhq_x_u8): Remove.
7534 (vrmulhq_x_u16): Remove.
7535 (vrmulhq_x_u32): Remove.
7536 (__arm_vrmulhq_u8): Remove.
7537 (__arm_vrmulhq_s8): Remove.
7538 (__arm_vrmulhq_u16): Remove.
7539 (__arm_vrmulhq_s16): Remove.
7540 (__arm_vrmulhq_u32): Remove.
7541 (__arm_vrmulhq_s32): Remove.
7542 (__arm_vrmulhq_m_s8): Remove.
7543 (__arm_vrmulhq_m_s32): Remove.
7544 (__arm_vrmulhq_m_s16): Remove.
7545 (__arm_vrmulhq_m_u8): Remove.
7546 (__arm_vrmulhq_m_u32): Remove.
7547 (__arm_vrmulhq_m_u16): Remove.
7548 (__arm_vrmulhq_x_s8): Remove.
7549 (__arm_vrmulhq_x_s16): Remove.
7550 (__arm_vrmulhq_x_s32): Remove.
7551 (__arm_vrmulhq_x_u8): Remove.
7552 (__arm_vrmulhq_x_u16): Remove.
7553 (__arm_vrmulhq_x_u32): Remove.
7554 (__arm_vrmulhq): Remove.
7555 (__arm_vrmulhq_m): Remove.
7556 (__arm_vrmulhq_x): Remove.
7558 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7560 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
7561 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
7562 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
7563 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
7564 * config/arm/mve.md (mve_vabdq_<supf><mode>)
7565 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
7566 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
7567 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
7568 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
7569 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
7570 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
7572 (@mve_<mve_insn>q_<supf><mode>): ... this.
7573 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
7574 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
7575 gen_mve_vhaddq / gen_mve_vrhaddq.
7577 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7579 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
7580 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
7581 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
7582 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
7583 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
7584 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
7585 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
7586 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
7587 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
7588 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
7589 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
7590 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
7591 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7593 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7595 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
7596 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
7598 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
7599 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
7600 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
7601 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
7602 (mve_vqsubq_n_<supf><mode>): Merge into ...
7603 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7605 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7607 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
7608 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
7609 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
7610 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
7611 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
7612 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
7613 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
7614 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
7615 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
7616 (mve_vshlq_m_<supf><mode>): Merged into
7617 @mve_<mve_insn>q_m_<supf><mode>.
7618 (mve_vabdq_m_<supf><mode>): Likewise.
7619 (mve_vhaddq_m_<supf><mode>): Likewise.
7620 (mve_vhsubq_m_<supf><mode>): Likewise.
7621 (mve_vmaxq_m_<supf><mode>): Likewise.
7622 (mve_vminq_m_<supf><mode>): Likewise.
7623 (mve_vmulhq_m_<supf><mode>): Likewise.
7624 (mve_vqaddq_m_<supf><mode>): Likewise.
7625 (mve_vqrshlq_m_<supf><mode>): Likewise.
7626 (mve_vqshlq_m_<supf><mode>): Likewise.
7627 (mve_vqsubq_m_<supf><mode>): Likewise.
7628 (mve_vrhaddq_m_<supf><mode>): Likewise.
7629 (mve_vrmulhq_m_<supf><mode>): Likewise.
7630 (mve_vrshlq_m_<supf><mode>): Likewise.
7631 (mve_vqdmladhq_m_s<mode>): Likewise.
7632 (mve_vqdmladhxq_m_s<mode>): Likewise.
7633 (mve_vqdmlsdhq_m_s<mode>): Likewise.
7634 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
7635 (mve_vqdmulhq_m_s<mode>): Likewise.
7636 (mve_vqrdmladhq_m_s<mode>): Likewise.
7637 (mve_vqrdmladhxq_m_s<mode>): Likewise.
7638 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
7639 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
7640 (mve_vqrdmulhq_m_s<mode>): Likewise.
7642 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7644 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
7645 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
7646 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
7647 * config/arm/arm_mve.h (vcreateq_f16): Remove.
7648 (vcreateq_f32): Remove.
7649 (vcreateq_u8): Remove.
7650 (vcreateq_u16): Remove.
7651 (vcreateq_u32): Remove.
7652 (vcreateq_u64): Remove.
7653 (vcreateq_s8): Remove.
7654 (vcreateq_s16): Remove.
7655 (vcreateq_s32): Remove.
7656 (vcreateq_s64): Remove.
7657 (__arm_vcreateq_u8): Remove.
7658 (__arm_vcreateq_u16): Remove.
7659 (__arm_vcreateq_u32): Remove.
7660 (__arm_vcreateq_u64): Remove.
7661 (__arm_vcreateq_s8): Remove.
7662 (__arm_vcreateq_s16): Remove.
7663 (__arm_vcreateq_s32): Remove.
7664 (__arm_vcreateq_s64): Remove.
7665 (__arm_vcreateq_f16): Remove.
7666 (__arm_vcreateq_f32): Remove.
7668 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7670 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
7671 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
7672 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
7673 (@mve_<mve_insn>q_f<mode>): ... this.
7674 (mve_vcreateq_<supf><mode>): Rename into ...
7675 (@mve_<mve_insn>q_<supf><mode>): ... this.
7677 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7679 * config/arm/arm-mve-builtins-shapes.cc (create): New.
7680 * config/arm/arm-mve-builtins-shapes.h: (create): New.
7682 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7684 * config/arm/arm-mve-builtins-functions.h (class
7685 unspec_mve_function_exact_insn): New.
7687 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7689 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
7691 * config/arm/arm-mve-builtins-base.def (vorrq): New.
7692 * config/arm/arm-mve-builtins-base.h (vorrq): New.
7693 * config/arm/arm-mve-builtins.cc
7694 (function_instance::has_inactive_argument): Handle vorrq.
7695 * config/arm/arm_mve.h (vorrq): Remove.
7696 (vorrq_m_n): Remove.
7701 (vorrq_u16): Remove.
7702 (vorrq_s16): Remove.
7703 (vorrq_u32): Remove.
7704 (vorrq_s32): Remove.
7705 (vorrq_n_u16): Remove.
7706 (vorrq_f16): Remove.
7707 (vorrq_n_s16): Remove.
7708 (vorrq_n_u32): Remove.
7709 (vorrq_f32): Remove.
7710 (vorrq_n_s32): Remove.
7711 (vorrq_m_n_s16): Remove.
7712 (vorrq_m_n_u16): Remove.
7713 (vorrq_m_n_s32): Remove.
7714 (vorrq_m_n_u32): Remove.
7715 (vorrq_m_s8): Remove.
7716 (vorrq_m_s32): Remove.
7717 (vorrq_m_s16): Remove.
7718 (vorrq_m_u8): Remove.
7719 (vorrq_m_u32): Remove.
7720 (vorrq_m_u16): Remove.
7721 (vorrq_m_f32): Remove.
7722 (vorrq_m_f16): Remove.
7723 (vorrq_x_s8): Remove.
7724 (vorrq_x_s16): Remove.
7725 (vorrq_x_s32): Remove.
7726 (vorrq_x_u8): Remove.
7727 (vorrq_x_u16): Remove.
7728 (vorrq_x_u32): Remove.
7729 (vorrq_x_f16): Remove.
7730 (vorrq_x_f32): Remove.
7731 (__arm_vorrq_u8): Remove.
7732 (__arm_vorrq_s8): Remove.
7733 (__arm_vorrq_u16): Remove.
7734 (__arm_vorrq_s16): Remove.
7735 (__arm_vorrq_u32): Remove.
7736 (__arm_vorrq_s32): Remove.
7737 (__arm_vorrq_n_u16): Remove.
7738 (__arm_vorrq_n_s16): Remove.
7739 (__arm_vorrq_n_u32): Remove.
7740 (__arm_vorrq_n_s32): Remove.
7741 (__arm_vorrq_m_n_s16): Remove.
7742 (__arm_vorrq_m_n_u16): Remove.
7743 (__arm_vorrq_m_n_s32): Remove.
7744 (__arm_vorrq_m_n_u32): Remove.
7745 (__arm_vorrq_m_s8): Remove.
7746 (__arm_vorrq_m_s32): Remove.
7747 (__arm_vorrq_m_s16): Remove.
7748 (__arm_vorrq_m_u8): Remove.
7749 (__arm_vorrq_m_u32): Remove.
7750 (__arm_vorrq_m_u16): Remove.
7751 (__arm_vorrq_x_s8): Remove.
7752 (__arm_vorrq_x_s16): Remove.
7753 (__arm_vorrq_x_s32): Remove.
7754 (__arm_vorrq_x_u8): Remove.
7755 (__arm_vorrq_x_u16): Remove.
7756 (__arm_vorrq_x_u32): Remove.
7757 (__arm_vorrq_f16): Remove.
7758 (__arm_vorrq_f32): Remove.
7759 (__arm_vorrq_m_f32): Remove.
7760 (__arm_vorrq_m_f16): Remove.
7761 (__arm_vorrq_x_f16): Remove.
7762 (__arm_vorrq_x_f32): Remove.
7763 (__arm_vorrq): Remove.
7764 (__arm_vorrq_m_n): Remove.
7765 (__arm_vorrq_m): Remove.
7766 (__arm_vorrq_x): Remove.
7768 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7770 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
7771 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
7772 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
7773 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
7775 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7777 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
7779 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
7780 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
7781 * config/arm/arm_mve.h (vandq): Remove.
7786 (vandq_u16): Remove.
7787 (vandq_s16): Remove.
7788 (vandq_u32): Remove.
7789 (vandq_s32): Remove.
7790 (vandq_f16): Remove.
7791 (vandq_f32): Remove.
7792 (vandq_m_s8): Remove.
7793 (vandq_m_s32): Remove.
7794 (vandq_m_s16): Remove.
7795 (vandq_m_u8): Remove.
7796 (vandq_m_u32): Remove.
7797 (vandq_m_u16): Remove.
7798 (vandq_m_f32): Remove.
7799 (vandq_m_f16): Remove.
7800 (vandq_x_s8): Remove.
7801 (vandq_x_s16): Remove.
7802 (vandq_x_s32): Remove.
7803 (vandq_x_u8): Remove.
7804 (vandq_x_u16): Remove.
7805 (vandq_x_u32): Remove.
7806 (vandq_x_f16): Remove.
7807 (vandq_x_f32): Remove.
7808 (__arm_vandq_u8): Remove.
7809 (__arm_vandq_s8): Remove.
7810 (__arm_vandq_u16): Remove.
7811 (__arm_vandq_s16): Remove.
7812 (__arm_vandq_u32): Remove.
7813 (__arm_vandq_s32): Remove.
7814 (__arm_vandq_m_s8): Remove.
7815 (__arm_vandq_m_s32): Remove.
7816 (__arm_vandq_m_s16): Remove.
7817 (__arm_vandq_m_u8): Remove.
7818 (__arm_vandq_m_u32): Remove.
7819 (__arm_vandq_m_u16): Remove.
7820 (__arm_vandq_x_s8): Remove.
7821 (__arm_vandq_x_s16): Remove.
7822 (__arm_vandq_x_s32): Remove.
7823 (__arm_vandq_x_u8): Remove.
7824 (__arm_vandq_x_u16): Remove.
7825 (__arm_vandq_x_u32): Remove.
7826 (__arm_vandq_f16): Remove.
7827 (__arm_vandq_f32): Remove.
7828 (__arm_vandq_m_f32): Remove.
7829 (__arm_vandq_m_f16): Remove.
7830 (__arm_vandq_x_f16): Remove.
7831 (__arm_vandq_x_f32): Remove.
7832 (__arm_vandq): Remove.
7833 (__arm_vandq_m): Remove.
7834 (__arm_vandq_x): Remove.
7839 (veorq_u16): Remove.
7840 (veorq_s16): Remove.
7841 (veorq_u32): Remove.
7842 (veorq_s32): Remove.
7843 (veorq_f16): Remove.
7844 (veorq_f32): Remove.
7845 (veorq_m_s8): Remove.
7846 (veorq_m_s32): Remove.
7847 (veorq_m_s16): Remove.
7848 (veorq_m_u8): Remove.
7849 (veorq_m_u32): Remove.
7850 (veorq_m_u16): Remove.
7851 (veorq_m_f32): Remove.
7852 (veorq_m_f16): Remove.
7853 (veorq_x_s8): Remove.
7854 (veorq_x_s16): Remove.
7855 (veorq_x_s32): Remove.
7856 (veorq_x_u8): Remove.
7857 (veorq_x_u16): Remove.
7858 (veorq_x_u32): Remove.
7859 (veorq_x_f16): Remove.
7860 (veorq_x_f32): Remove.
7861 (__arm_veorq_u8): Remove.
7862 (__arm_veorq_s8): Remove.
7863 (__arm_veorq_u16): Remove.
7864 (__arm_veorq_s16): Remove.
7865 (__arm_veorq_u32): Remove.
7866 (__arm_veorq_s32): Remove.
7867 (__arm_veorq_m_s8): Remove.
7868 (__arm_veorq_m_s32): Remove.
7869 (__arm_veorq_m_s16): Remove.
7870 (__arm_veorq_m_u8): Remove.
7871 (__arm_veorq_m_u32): Remove.
7872 (__arm_veorq_m_u16): Remove.
7873 (__arm_veorq_x_s8): Remove.
7874 (__arm_veorq_x_s16): Remove.
7875 (__arm_veorq_x_s32): Remove.
7876 (__arm_veorq_x_u8): Remove.
7877 (__arm_veorq_x_u16): Remove.
7878 (__arm_veorq_x_u32): Remove.
7879 (__arm_veorq_f16): Remove.
7880 (__arm_veorq_f32): Remove.
7881 (__arm_veorq_m_f32): Remove.
7882 (__arm_veorq_m_f16): Remove.
7883 (__arm_veorq_x_f16): Remove.
7884 (__arm_veorq_x_f32): Remove.
7885 (__arm_veorq): Remove.
7886 (__arm_veorq_m): Remove.
7887 (__arm_veorq_x): Remove.
7889 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7891 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
7892 (MVE_FP_M_BINARY_LOGIC): New.
7893 (MVE_INT_M_N_BINARY_LOGIC): New.
7894 (MVE_INT_N_BINARY_LOGIC): New.
7895 (mve_insn): Add vand, veor, vorr, vbic.
7896 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
7897 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
7898 (mve_vbicq_m_<supf><mode>): Merge into ...
7899 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7900 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
7901 (mve_vbicq_m_f<mode>): Merge into ...
7902 (@mve_<mve_insn>q_m_f<mode>): ... this.
7903 (mve_vorrq_n_<supf><mode>)
7904 (mve_vbicq_n_<supf><mode>): Merge into ...
7905 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7906 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
7908 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7910 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7912 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
7913 * config/arm/arm-mve-builtins-shapes.h (binary): New.
7915 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7917 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
7919 (vaddq, vmulq, vsubq): New.
7920 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
7921 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
7922 * config/arm/arm_mve.h (vaddq): Remove.
7925 (vaddq_n_u8): Remove.
7926 (vaddq_n_s8): Remove.
7927 (vaddq_n_u16): Remove.
7928 (vaddq_n_s16): Remove.
7929 (vaddq_n_u32): Remove.
7930 (vaddq_n_s32): Remove.
7931 (vaddq_n_f16): Remove.
7932 (vaddq_n_f32): Remove.
7933 (vaddq_m_n_s8): Remove.
7934 (vaddq_m_n_s32): Remove.
7935 (vaddq_m_n_s16): Remove.
7936 (vaddq_m_n_u8): Remove.
7937 (vaddq_m_n_u32): Remove.
7938 (vaddq_m_n_u16): Remove.
7939 (vaddq_m_s8): Remove.
7940 (vaddq_m_s32): Remove.
7941 (vaddq_m_s16): Remove.
7942 (vaddq_m_u8): Remove.
7943 (vaddq_m_u32): Remove.
7944 (vaddq_m_u16): Remove.
7945 (vaddq_m_f32): Remove.
7946 (vaddq_m_f16): Remove.
7947 (vaddq_m_n_f32): Remove.
7948 (vaddq_m_n_f16): Remove.
7950 (vaddq_s16): Remove.
7951 (vaddq_s32): Remove.
7953 (vaddq_u16): Remove.
7954 (vaddq_u32): Remove.
7955 (vaddq_f16): Remove.
7956 (vaddq_f32): Remove.
7957 (vaddq_x_s8): Remove.
7958 (vaddq_x_s16): Remove.
7959 (vaddq_x_s32): Remove.
7960 (vaddq_x_n_s8): Remove.
7961 (vaddq_x_n_s16): Remove.
7962 (vaddq_x_n_s32): Remove.
7963 (vaddq_x_u8): Remove.
7964 (vaddq_x_u16): Remove.
7965 (vaddq_x_u32): Remove.
7966 (vaddq_x_n_u8): Remove.
7967 (vaddq_x_n_u16): Remove.
7968 (vaddq_x_n_u32): Remove.
7969 (vaddq_x_f16): Remove.
7970 (vaddq_x_f32): Remove.
7971 (vaddq_x_n_f16): Remove.
7972 (vaddq_x_n_f32): Remove.
7973 (__arm_vaddq_n_u8): Remove.
7974 (__arm_vaddq_n_s8): Remove.
7975 (__arm_vaddq_n_u16): Remove.
7976 (__arm_vaddq_n_s16): Remove.
7977 (__arm_vaddq_n_u32): Remove.
7978 (__arm_vaddq_n_s32): Remove.
7979 (__arm_vaddq_m_n_s8): Remove.
7980 (__arm_vaddq_m_n_s32): Remove.
7981 (__arm_vaddq_m_n_s16): Remove.
7982 (__arm_vaddq_m_n_u8): Remove.
7983 (__arm_vaddq_m_n_u32): Remove.
7984 (__arm_vaddq_m_n_u16): Remove.
7985 (__arm_vaddq_m_s8): Remove.
7986 (__arm_vaddq_m_s32): Remove.
7987 (__arm_vaddq_m_s16): Remove.
7988 (__arm_vaddq_m_u8): Remove.
7989 (__arm_vaddq_m_u32): Remove.
7990 (__arm_vaddq_m_u16): Remove.
7991 (__arm_vaddq_s8): Remove.
7992 (__arm_vaddq_s16): Remove.
7993 (__arm_vaddq_s32): Remove.
7994 (__arm_vaddq_u8): Remove.
7995 (__arm_vaddq_u16): Remove.
7996 (__arm_vaddq_u32): Remove.
7997 (__arm_vaddq_x_s8): Remove.
7998 (__arm_vaddq_x_s16): Remove.
7999 (__arm_vaddq_x_s32): Remove.
8000 (__arm_vaddq_x_n_s8): Remove.
8001 (__arm_vaddq_x_n_s16): Remove.
8002 (__arm_vaddq_x_n_s32): Remove.
8003 (__arm_vaddq_x_u8): Remove.
8004 (__arm_vaddq_x_u16): Remove.
8005 (__arm_vaddq_x_u32): Remove.
8006 (__arm_vaddq_x_n_u8): Remove.
8007 (__arm_vaddq_x_n_u16): Remove.
8008 (__arm_vaddq_x_n_u32): Remove.
8009 (__arm_vaddq_n_f16): Remove.
8010 (__arm_vaddq_n_f32): Remove.
8011 (__arm_vaddq_m_f32): Remove.
8012 (__arm_vaddq_m_f16): Remove.
8013 (__arm_vaddq_m_n_f32): Remove.
8014 (__arm_vaddq_m_n_f16): Remove.
8015 (__arm_vaddq_f16): Remove.
8016 (__arm_vaddq_f32): Remove.
8017 (__arm_vaddq_x_f16): Remove.
8018 (__arm_vaddq_x_f32): Remove.
8019 (__arm_vaddq_x_n_f16): Remove.
8020 (__arm_vaddq_x_n_f32): Remove.
8021 (__arm_vaddq): Remove.
8022 (__arm_vaddq_m): Remove.
8023 (__arm_vaddq_x): Remove.
8028 (vmulq_n_u8): Remove.
8030 (vmulq_n_s8): Remove.
8031 (vmulq_u16): Remove.
8032 (vmulq_n_u16): Remove.
8033 (vmulq_s16): Remove.
8034 (vmulq_n_s16): Remove.
8035 (vmulq_u32): Remove.
8036 (vmulq_n_u32): Remove.
8037 (vmulq_s32): Remove.
8038 (vmulq_n_s32): Remove.
8039 (vmulq_n_f16): Remove.
8040 (vmulq_f16): Remove.
8041 (vmulq_n_f32): Remove.
8042 (vmulq_f32): Remove.
8043 (vmulq_m_n_s8): Remove.
8044 (vmulq_m_n_s32): Remove.
8045 (vmulq_m_n_s16): Remove.
8046 (vmulq_m_n_u8): Remove.
8047 (vmulq_m_n_u32): Remove.
8048 (vmulq_m_n_u16): Remove.
8049 (vmulq_m_s8): Remove.
8050 (vmulq_m_s32): Remove.
8051 (vmulq_m_s16): Remove.
8052 (vmulq_m_u8): Remove.
8053 (vmulq_m_u32): Remove.
8054 (vmulq_m_u16): Remove.
8055 (vmulq_m_f32): Remove.
8056 (vmulq_m_f16): Remove.
8057 (vmulq_m_n_f32): Remove.
8058 (vmulq_m_n_f16): Remove.
8059 (vmulq_x_s8): Remove.
8060 (vmulq_x_s16): Remove.
8061 (vmulq_x_s32): Remove.
8062 (vmulq_x_n_s8): Remove.
8063 (vmulq_x_n_s16): Remove.
8064 (vmulq_x_n_s32): Remove.
8065 (vmulq_x_u8): Remove.
8066 (vmulq_x_u16): Remove.
8067 (vmulq_x_u32): Remove.
8068 (vmulq_x_n_u8): Remove.
8069 (vmulq_x_n_u16): Remove.
8070 (vmulq_x_n_u32): Remove.
8071 (vmulq_x_f16): Remove.
8072 (vmulq_x_f32): Remove.
8073 (vmulq_x_n_f16): Remove.
8074 (vmulq_x_n_f32): Remove.
8075 (__arm_vmulq_u8): Remove.
8076 (__arm_vmulq_n_u8): Remove.
8077 (__arm_vmulq_s8): Remove.
8078 (__arm_vmulq_n_s8): Remove.
8079 (__arm_vmulq_u16): Remove.
8080 (__arm_vmulq_n_u16): Remove.
8081 (__arm_vmulq_s16): Remove.
8082 (__arm_vmulq_n_s16): Remove.
8083 (__arm_vmulq_u32): Remove.
8084 (__arm_vmulq_n_u32): Remove.
8085 (__arm_vmulq_s32): Remove.
8086 (__arm_vmulq_n_s32): Remove.
8087 (__arm_vmulq_m_n_s8): Remove.
8088 (__arm_vmulq_m_n_s32): Remove.
8089 (__arm_vmulq_m_n_s16): Remove.
8090 (__arm_vmulq_m_n_u8): Remove.
8091 (__arm_vmulq_m_n_u32): Remove.
8092 (__arm_vmulq_m_n_u16): Remove.
8093 (__arm_vmulq_m_s8): Remove.
8094 (__arm_vmulq_m_s32): Remove.
8095 (__arm_vmulq_m_s16): Remove.
8096 (__arm_vmulq_m_u8): Remove.
8097 (__arm_vmulq_m_u32): Remove.
8098 (__arm_vmulq_m_u16): Remove.
8099 (__arm_vmulq_x_s8): Remove.
8100 (__arm_vmulq_x_s16): Remove.
8101 (__arm_vmulq_x_s32): Remove.
8102 (__arm_vmulq_x_n_s8): Remove.
8103 (__arm_vmulq_x_n_s16): Remove.
8104 (__arm_vmulq_x_n_s32): Remove.
8105 (__arm_vmulq_x_u8): Remove.
8106 (__arm_vmulq_x_u16): Remove.
8107 (__arm_vmulq_x_u32): Remove.
8108 (__arm_vmulq_x_n_u8): Remove.
8109 (__arm_vmulq_x_n_u16): Remove.
8110 (__arm_vmulq_x_n_u32): Remove.
8111 (__arm_vmulq_n_f16): Remove.
8112 (__arm_vmulq_f16): Remove.
8113 (__arm_vmulq_n_f32): Remove.
8114 (__arm_vmulq_f32): Remove.
8115 (__arm_vmulq_m_f32): Remove.
8116 (__arm_vmulq_m_f16): Remove.
8117 (__arm_vmulq_m_n_f32): Remove.
8118 (__arm_vmulq_m_n_f16): Remove.
8119 (__arm_vmulq_x_f16): Remove.
8120 (__arm_vmulq_x_f32): Remove.
8121 (__arm_vmulq_x_n_f16): Remove.
8122 (__arm_vmulq_x_n_f32): Remove.
8123 (__arm_vmulq): Remove.
8124 (__arm_vmulq_m): Remove.
8125 (__arm_vmulq_x): Remove.
8129 (vsubq_n_f16): Remove.
8130 (vsubq_n_f32): Remove.
8132 (vsubq_n_u8): Remove.
8134 (vsubq_n_s8): Remove.
8135 (vsubq_u16): Remove.
8136 (vsubq_n_u16): Remove.
8137 (vsubq_s16): Remove.
8138 (vsubq_n_s16): Remove.
8139 (vsubq_u32): Remove.
8140 (vsubq_n_u32): Remove.
8141 (vsubq_s32): Remove.
8142 (vsubq_n_s32): Remove.
8143 (vsubq_f16): Remove.
8144 (vsubq_f32): Remove.
8145 (vsubq_m_s8): Remove.
8146 (vsubq_m_u8): Remove.
8147 (vsubq_m_s16): Remove.
8148 (vsubq_m_u16): Remove.
8149 (vsubq_m_s32): Remove.
8150 (vsubq_m_u32): Remove.
8151 (vsubq_m_n_s8): Remove.
8152 (vsubq_m_n_s32): Remove.
8153 (vsubq_m_n_s16): Remove.
8154 (vsubq_m_n_u8): Remove.
8155 (vsubq_m_n_u32): Remove.
8156 (vsubq_m_n_u16): Remove.
8157 (vsubq_m_f32): Remove.
8158 (vsubq_m_f16): Remove.
8159 (vsubq_m_n_f32): Remove.
8160 (vsubq_m_n_f16): Remove.
8161 (vsubq_x_s8): Remove.
8162 (vsubq_x_s16): Remove.
8163 (vsubq_x_s32): Remove.
8164 (vsubq_x_n_s8): Remove.
8165 (vsubq_x_n_s16): Remove.
8166 (vsubq_x_n_s32): Remove.
8167 (vsubq_x_u8): Remove.
8168 (vsubq_x_u16): Remove.
8169 (vsubq_x_u32): Remove.
8170 (vsubq_x_n_u8): Remove.
8171 (vsubq_x_n_u16): Remove.
8172 (vsubq_x_n_u32): Remove.
8173 (vsubq_x_f16): Remove.
8174 (vsubq_x_f32): Remove.
8175 (vsubq_x_n_f16): Remove.
8176 (vsubq_x_n_f32): Remove.
8177 (__arm_vsubq_u8): Remove.
8178 (__arm_vsubq_n_u8): Remove.
8179 (__arm_vsubq_s8): Remove.
8180 (__arm_vsubq_n_s8): Remove.
8181 (__arm_vsubq_u16): Remove.
8182 (__arm_vsubq_n_u16): Remove.
8183 (__arm_vsubq_s16): Remove.
8184 (__arm_vsubq_n_s16): Remove.
8185 (__arm_vsubq_u32): Remove.
8186 (__arm_vsubq_n_u32): Remove.
8187 (__arm_vsubq_s32): Remove.
8188 (__arm_vsubq_n_s32): Remove.
8189 (__arm_vsubq_m_s8): Remove.
8190 (__arm_vsubq_m_u8): Remove.
8191 (__arm_vsubq_m_s16): Remove.
8192 (__arm_vsubq_m_u16): Remove.
8193 (__arm_vsubq_m_s32): Remove.
8194 (__arm_vsubq_m_u32): Remove.
8195 (__arm_vsubq_m_n_s8): Remove.
8196 (__arm_vsubq_m_n_s32): Remove.
8197 (__arm_vsubq_m_n_s16): Remove.
8198 (__arm_vsubq_m_n_u8): Remove.
8199 (__arm_vsubq_m_n_u32): Remove.
8200 (__arm_vsubq_m_n_u16): Remove.
8201 (__arm_vsubq_x_s8): Remove.
8202 (__arm_vsubq_x_s16): Remove.
8203 (__arm_vsubq_x_s32): Remove.
8204 (__arm_vsubq_x_n_s8): Remove.
8205 (__arm_vsubq_x_n_s16): Remove.
8206 (__arm_vsubq_x_n_s32): Remove.
8207 (__arm_vsubq_x_u8): Remove.
8208 (__arm_vsubq_x_u16): Remove.
8209 (__arm_vsubq_x_u32): Remove.
8210 (__arm_vsubq_x_n_u8): Remove.
8211 (__arm_vsubq_x_n_u16): Remove.
8212 (__arm_vsubq_x_n_u32): Remove.
8213 (__arm_vsubq_n_f16): Remove.
8214 (__arm_vsubq_n_f32): Remove.
8215 (__arm_vsubq_f16): Remove.
8216 (__arm_vsubq_f32): Remove.
8217 (__arm_vsubq_m_f32): Remove.
8218 (__arm_vsubq_m_f16): Remove.
8219 (__arm_vsubq_m_n_f32): Remove.
8220 (__arm_vsubq_m_n_f16): Remove.
8221 (__arm_vsubq_x_f16): Remove.
8222 (__arm_vsubq_x_f32): Remove.
8223 (__arm_vsubq_x_n_f16): Remove.
8224 (__arm_vsubq_x_n_f32): Remove.
8225 (__arm_vsubq): Remove.
8226 (__arm_vsubq_m): Remove.
8227 (__arm_vsubq_x): Remove.
8228 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
8230 (vmulq_u, vmulq_s, vmulq_f): Remove.
8231 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
8232 (mve_vmulq_<supf><mode>): Remove.
8234 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8236 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
8237 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
8238 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
8241 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
8243 (@mve_<mve_insn>q_n_f<mode>): ... this.
8244 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
8245 (mve_vsubq_n_<supf><mode>): Factorize into ...
8246 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8247 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
8249 (mve_<mve_addsubmul>q<mode>): ... this.
8250 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
8252 (mve_<mve_addsubmul>q_f<mode>): ... this.
8253 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
8254 (mve_vsubq_m_<supf><mode>): Factorize into ...
8255 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
8256 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
8257 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
8258 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8259 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
8261 (@mve_<mve_insn>q_m_f<mode>): ... this.
8262 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
8263 (mve_vsubq_m_n_f<mode>): Factorize into ...
8264 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
8266 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8268 * config/arm/arm-mve-builtins-functions.h (class
8269 unspec_based_mve_function_base): New.
8270 (class unspec_based_mve_function_exact_insn): New.
8272 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8274 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
8275 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
8277 2023-05-03 Murray Steele <murray.steele@arm.com>
8278 Christophe Lyon <christophe.lyon@arm.com>
8280 * config/arm/arm-mve-builtins-base.cc (class
8281 vuninitializedq_impl): New.
8282 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
8283 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
8285 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
8286 * config/arm/arm-mve-builtins-shapes.h (inherent): New
8288 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
8289 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
8290 (__arm_vuninitializedq_u8): Remove.
8291 (__arm_vuninitializedq_u16): Remove.
8292 (__arm_vuninitializedq_u32): Remove.
8293 (__arm_vuninitializedq_u64): Remove.
8294 (__arm_vuninitializedq_s8): Remove.
8295 (__arm_vuninitializedq_s16): Remove.
8296 (__arm_vuninitializedq_s32): Remove.
8297 (__arm_vuninitializedq_s64): Remove.
8298 (__arm_vuninitializedq_f16): Remove.
8299 (__arm_vuninitializedq_f32): Remove.
8301 2023-05-03 Murray Steele <murray.steele@arm.com>
8302 Christophe Lyon <christophe.lyon@arm.com>
8304 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
8305 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
8306 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
8307 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
8308 (parse_type): Likewise.
8309 (parse_signature): Likewise.
8310 (build_one): Likewise.
8311 (build_all): Likewise.
8312 (overloaded_base): New struct.
8313 (unary_convert_def): Likewise.
8314 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
8315 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
8317 (TYPES_reinterpret_unsigned1): Likewise.
8318 (TYPES_reinterpret_integer): Likewise.
8319 (TYPES_reinterpret_integer1): Likewise.
8320 (TYPES_reinterpret_float1): Likewise.
8321 (TYPES_reinterpret_float): Likewise.
8322 (reinterpret_integer): New.
8323 (reinterpret_float): New.
8324 (handle_arm_mve_h): Register builtins.
8325 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
8326 (vreinterpretq_s32): Likewise.
8327 (vreinterpretq_s64): Likewise.
8328 (vreinterpretq_s8): Likewise.
8329 (vreinterpretq_u16): Likewise.
8330 (vreinterpretq_u32): Likewise.
8331 (vreinterpretq_u64): Likewise.
8332 (vreinterpretq_u8): Likewise.
8333 (vreinterpretq_f16): Likewise.
8334 (vreinterpretq_f32): Likewise.
8335 (vreinterpretq_s16_s32): Likewise.
8336 (vreinterpretq_s16_s64): Likewise.
8337 (vreinterpretq_s16_s8): Likewise.
8338 (vreinterpretq_s16_u16): Likewise.
8339 (vreinterpretq_s16_u32): Likewise.
8340 (vreinterpretq_s16_u64): Likewise.
8341 (vreinterpretq_s16_u8): Likewise.
8342 (vreinterpretq_s32_s16): Likewise.
8343 (vreinterpretq_s32_s64): Likewise.
8344 (vreinterpretq_s32_s8): Likewise.
8345 (vreinterpretq_s32_u16): Likewise.
8346 (vreinterpretq_s32_u32): Likewise.
8347 (vreinterpretq_s32_u64): Likewise.
8348 (vreinterpretq_s32_u8): Likewise.
8349 (vreinterpretq_s64_s16): Likewise.
8350 (vreinterpretq_s64_s32): Likewise.
8351 (vreinterpretq_s64_s8): Likewise.
8352 (vreinterpretq_s64_u16): Likewise.
8353 (vreinterpretq_s64_u32): Likewise.
8354 (vreinterpretq_s64_u64): Likewise.
8355 (vreinterpretq_s64_u8): Likewise.
8356 (vreinterpretq_s8_s16): Likewise.
8357 (vreinterpretq_s8_s32): Likewise.
8358 (vreinterpretq_s8_s64): Likewise.
8359 (vreinterpretq_s8_u16): Likewise.
8360 (vreinterpretq_s8_u32): Likewise.
8361 (vreinterpretq_s8_u64): Likewise.
8362 (vreinterpretq_s8_u8): Likewise.
8363 (vreinterpretq_u16_s16): Likewise.
8364 (vreinterpretq_u16_s32): Likewise.
8365 (vreinterpretq_u16_s64): Likewise.
8366 (vreinterpretq_u16_s8): Likewise.
8367 (vreinterpretq_u16_u32): Likewise.
8368 (vreinterpretq_u16_u64): Likewise.
8369 (vreinterpretq_u16_u8): Likewise.
8370 (vreinterpretq_u32_s16): Likewise.
8371 (vreinterpretq_u32_s32): Likewise.
8372 (vreinterpretq_u32_s64): Likewise.
8373 (vreinterpretq_u32_s8): Likewise.
8374 (vreinterpretq_u32_u16): Likewise.
8375 (vreinterpretq_u32_u64): Likewise.
8376 (vreinterpretq_u32_u8): Likewise.
8377 (vreinterpretq_u64_s16): Likewise.
8378 (vreinterpretq_u64_s32): Likewise.
8379 (vreinterpretq_u64_s64): Likewise.
8380 (vreinterpretq_u64_s8): Likewise.
8381 (vreinterpretq_u64_u16): Likewise.
8382 (vreinterpretq_u64_u32): Likewise.
8383 (vreinterpretq_u64_u8): Likewise.
8384 (vreinterpretq_u8_s16): Likewise.
8385 (vreinterpretq_u8_s32): Likewise.
8386 (vreinterpretq_u8_s64): Likewise.
8387 (vreinterpretq_u8_s8): Likewise.
8388 (vreinterpretq_u8_u16): Likewise.
8389 (vreinterpretq_u8_u32): Likewise.
8390 (vreinterpretq_u8_u64): Likewise.
8391 (vreinterpretq_s32_f16): Likewise.
8392 (vreinterpretq_s32_f32): Likewise.
8393 (vreinterpretq_u16_f16): Likewise.
8394 (vreinterpretq_u16_f32): Likewise.
8395 (vreinterpretq_u32_f16): Likewise.
8396 (vreinterpretq_u32_f32): Likewise.
8397 (vreinterpretq_u64_f16): Likewise.
8398 (vreinterpretq_u64_f32): Likewise.
8399 (vreinterpretq_u8_f16): Likewise.
8400 (vreinterpretq_u8_f32): Likewise.
8401 (vreinterpretq_f16_f32): Likewise.
8402 (vreinterpretq_f16_s16): Likewise.
8403 (vreinterpretq_f16_s32): Likewise.
8404 (vreinterpretq_f16_s64): Likewise.
8405 (vreinterpretq_f16_s8): Likewise.
8406 (vreinterpretq_f16_u16): Likewise.
8407 (vreinterpretq_f16_u32): Likewise.
8408 (vreinterpretq_f16_u64): Likewise.
8409 (vreinterpretq_f16_u8): Likewise.
8410 (vreinterpretq_f32_f16): Likewise.
8411 (vreinterpretq_f32_s16): Likewise.
8412 (vreinterpretq_f32_s32): Likewise.
8413 (vreinterpretq_f32_s64): Likewise.
8414 (vreinterpretq_f32_s8): Likewise.
8415 (vreinterpretq_f32_u16): Likewise.
8416 (vreinterpretq_f32_u32): Likewise.
8417 (vreinterpretq_f32_u64): Likewise.
8418 (vreinterpretq_f32_u8): Likewise.
8419 (vreinterpretq_s16_f16): Likewise.
8420 (vreinterpretq_s16_f32): Likewise.
8421 (vreinterpretq_s64_f16): Likewise.
8422 (vreinterpretq_s64_f32): Likewise.
8423 (vreinterpretq_s8_f16): Likewise.
8424 (vreinterpretq_s8_f32): Likewise.
8425 (__arm_vreinterpretq_f16): Likewise.
8426 (__arm_vreinterpretq_f32): Likewise.
8427 (__arm_vreinterpretq_s16): Likewise.
8428 (__arm_vreinterpretq_s32): Likewise.
8429 (__arm_vreinterpretq_s64): Likewise.
8430 (__arm_vreinterpretq_s8): Likewise.
8431 (__arm_vreinterpretq_u16): Likewise.
8432 (__arm_vreinterpretq_u32): Likewise.
8433 (__arm_vreinterpretq_u64): Likewise.
8434 (__arm_vreinterpretq_u8): Likewise.
8435 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
8436 (__arm_vreinterpretq_s16_s64): Likewise.
8437 (__arm_vreinterpretq_s16_s8): Likewise.
8438 (__arm_vreinterpretq_s16_u16): Likewise.
8439 (__arm_vreinterpretq_s16_u32): Likewise.
8440 (__arm_vreinterpretq_s16_u64): Likewise.
8441 (__arm_vreinterpretq_s16_u8): Likewise.
8442 (__arm_vreinterpretq_s32_s16): Likewise.
8443 (__arm_vreinterpretq_s32_s64): Likewise.
8444 (__arm_vreinterpretq_s32_s8): Likewise.
8445 (__arm_vreinterpretq_s32_u16): Likewise.
8446 (__arm_vreinterpretq_s32_u32): Likewise.
8447 (__arm_vreinterpretq_s32_u64): Likewise.
8448 (__arm_vreinterpretq_s32_u8): Likewise.
8449 (__arm_vreinterpretq_s64_s16): Likewise.
8450 (__arm_vreinterpretq_s64_s32): Likewise.
8451 (__arm_vreinterpretq_s64_s8): Likewise.
8452 (__arm_vreinterpretq_s64_u16): Likewise.
8453 (__arm_vreinterpretq_s64_u32): Likewise.
8454 (__arm_vreinterpretq_s64_u64): Likewise.
8455 (__arm_vreinterpretq_s64_u8): Likewise.
8456 (__arm_vreinterpretq_s8_s16): Likewise.
8457 (__arm_vreinterpretq_s8_s32): Likewise.
8458 (__arm_vreinterpretq_s8_s64): Likewise.
8459 (__arm_vreinterpretq_s8_u16): Likewise.
8460 (__arm_vreinterpretq_s8_u32): Likewise.
8461 (__arm_vreinterpretq_s8_u64): Likewise.
8462 (__arm_vreinterpretq_s8_u8): Likewise.
8463 (__arm_vreinterpretq_u16_s16): Likewise.
8464 (__arm_vreinterpretq_u16_s32): Likewise.
8465 (__arm_vreinterpretq_u16_s64): Likewise.
8466 (__arm_vreinterpretq_u16_s8): Likewise.
8467 (__arm_vreinterpretq_u16_u32): Likewise.
8468 (__arm_vreinterpretq_u16_u64): Likewise.
8469 (__arm_vreinterpretq_u16_u8): Likewise.
8470 (__arm_vreinterpretq_u32_s16): Likewise.
8471 (__arm_vreinterpretq_u32_s32): Likewise.
8472 (__arm_vreinterpretq_u32_s64): Likewise.
8473 (__arm_vreinterpretq_u32_s8): Likewise.
8474 (__arm_vreinterpretq_u32_u16): Likewise.
8475 (__arm_vreinterpretq_u32_u64): Likewise.
8476 (__arm_vreinterpretq_u32_u8): Likewise.
8477 (__arm_vreinterpretq_u64_s16): Likewise.
8478 (__arm_vreinterpretq_u64_s32): Likewise.
8479 (__arm_vreinterpretq_u64_s64): Likewise.
8480 (__arm_vreinterpretq_u64_s8): Likewise.
8481 (__arm_vreinterpretq_u64_u16): Likewise.
8482 (__arm_vreinterpretq_u64_u32): Likewise.
8483 (__arm_vreinterpretq_u64_u8): Likewise.
8484 (__arm_vreinterpretq_u8_s16): Likewise.
8485 (__arm_vreinterpretq_u8_s32): Likewise.
8486 (__arm_vreinterpretq_u8_s64): Likewise.
8487 (__arm_vreinterpretq_u8_s8): Likewise.
8488 (__arm_vreinterpretq_u8_u16): Likewise.
8489 (__arm_vreinterpretq_u8_u32): Likewise.
8490 (__arm_vreinterpretq_u8_u64): Likewise.
8491 (__arm_vreinterpretq_s32_f16): Likewise.
8492 (__arm_vreinterpretq_s32_f32): Likewise.
8493 (__arm_vreinterpretq_s16_f16): Likewise.
8494 (__arm_vreinterpretq_s16_f32): Likewise.
8495 (__arm_vreinterpretq_s64_f16): Likewise.
8496 (__arm_vreinterpretq_s64_f32): Likewise.
8497 (__arm_vreinterpretq_s8_f16): Likewise.
8498 (__arm_vreinterpretq_s8_f32): Likewise.
8499 (__arm_vreinterpretq_u16_f16): Likewise.
8500 (__arm_vreinterpretq_u16_f32): Likewise.
8501 (__arm_vreinterpretq_u32_f16): Likewise.
8502 (__arm_vreinterpretq_u32_f32): Likewise.
8503 (__arm_vreinterpretq_u64_f16): Likewise.
8504 (__arm_vreinterpretq_u64_f32): Likewise.
8505 (__arm_vreinterpretq_u8_f16): Likewise.
8506 (__arm_vreinterpretq_u8_f32): Likewise.
8507 (__arm_vreinterpretq_f16_f32): Likewise.
8508 (__arm_vreinterpretq_f16_s16): Likewise.
8509 (__arm_vreinterpretq_f16_s32): Likewise.
8510 (__arm_vreinterpretq_f16_s64): Likewise.
8511 (__arm_vreinterpretq_f16_s8): Likewise.
8512 (__arm_vreinterpretq_f16_u16): Likewise.
8513 (__arm_vreinterpretq_f16_u32): Likewise.
8514 (__arm_vreinterpretq_f16_u64): Likewise.
8515 (__arm_vreinterpretq_f16_u8): Likewise.
8516 (__arm_vreinterpretq_f32_f16): Likewise.
8517 (__arm_vreinterpretq_f32_s16): Likewise.
8518 (__arm_vreinterpretq_f32_s32): Likewise.
8519 (__arm_vreinterpretq_f32_s64): Likewise.
8520 (__arm_vreinterpretq_f32_s8): Likewise.
8521 (__arm_vreinterpretq_f32_u16): Likewise.
8522 (__arm_vreinterpretq_f32_u32): Likewise.
8523 (__arm_vreinterpretq_f32_u64): Likewise.
8524 (__arm_vreinterpretq_f32_u8): Likewise.
8525 (__arm_vreinterpretq_s16): Likewise.
8526 (__arm_vreinterpretq_s32): Likewise.
8527 (__arm_vreinterpretq_s64): Likewise.
8528 (__arm_vreinterpretq_s8): Likewise.
8529 (__arm_vreinterpretq_u16): Likewise.
8530 (__arm_vreinterpretq_u32): Likewise.
8531 (__arm_vreinterpretq_u64): Likewise.
8532 (__arm_vreinterpretq_u8): Likewise.
8533 (__arm_vreinterpretq_f16): Likewise.
8534 (__arm_vreinterpretq_f32): Likewise.
8535 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
8536 * config/arm/unspecs.md: (REINTERPRET): New unspec.
8538 2023-05-03 Murray Steele <murray.steele@arm.com>
8539 Christophe Lyon <christophe.lyon@arm.com>
8540 Christophe Lyon <christophe.lyon@arm.com
8542 * config.gcc: Add arm-mve-builtins-base.o and
8543 arm-mve-builtins-shapes.o to extra_objs.
8544 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
8546 (arm_expand_builtin): Likewise
8547 (arm_check_builtin_call): Likewise
8548 (arm_describe_resolver): Likewise.
8549 * config/arm/arm-builtins.h (enum resolver_ident): Add
8551 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
8552 (arm_resolve_overloaded_builtin): Handle MVE builtins.
8553 (arm_register_target_pragmas): Register arm_check_builtin_call.
8554 * config/arm/arm-mve-builtins.cc (class registered_function): New
8556 (struct registered_function_hasher): New struct.
8557 (pred_suffixes): New table.
8558 (mode_suffixes): New table.
8559 (type_suffix_info): New table.
8560 (TYPES_float16): New.
8561 (TYPES_all_float): New.
8562 (TYPES_integer_8): New.
8563 (TYPES_integer_8_16): New.
8564 (TYPES_integer_16_32): New.
8565 (TYPES_integer_32): New.
8566 (TYPES_signed_16_32): New.
8567 (TYPES_signed_32): New.
8568 (TYPES_all_signed): New.
8569 (TYPES_all_unsigned): New.
8570 (TYPES_all_integer): New.
8571 (TYPES_all_integer_with_64): New.
8572 (DEF_VECTOR_TYPE): New.
8573 (DEF_DOUBLE_TYPE): New.
8574 (DEF_MVE_TYPES_ARRAY): New.
8576 (all_integer_with_64): New.
8580 (all_unsigned): New.
8582 (integer_8_16): New.
8583 (integer_16_32): New.
8585 (signed_16_32): New.
8587 (register_vector_type): Use void_type_node for mve.fp-only types when
8588 mve.fp is not enabled.
8589 (register_builtin_tuple_types): Likewise.
8590 (handle_arm_mve_h): New function..
8591 (matches_type_p): Likewise..
8592 (report_out_of_range): Likewise.
8593 (report_not_enum): Likewise.
8594 (report_missing_float): Likewise.
8595 (report_non_ice): Likewise.
8596 (check_requires_float): Likewise.
8597 (function_instance::hash): Likewise
8598 (function_instance::call_properties): Likewise.
8599 (function_instance::reads_global_state_p): Likewise.
8600 (function_instance::modifies_global_state_p): Likewise.
8601 (function_instance::could_trap_p): Likewise.
8602 (function_instance::has_inactive_argument): Likewise.
8603 (registered_function_hasher::hash): Likewise.
8604 (registered_function_hasher::equal): Likewise.
8605 (function_builder::function_builder): Likewise.
8606 (function_builder::~function_builder): Likewise.
8607 (function_builder::append_name): Likewise.
8608 (function_builder::finish_name): Likewise.
8609 (function_builder::get_name): Likewise.
8610 (add_attribute): Likewise.
8611 (function_builder::get_attributes): Likewise.
8612 (function_builder::add_function): Likewise.
8613 (function_builder::add_unique_function): Likewise.
8614 (function_builder::add_overloaded_function): Likewise.
8615 (function_builder::add_overloaded_functions): Likewise.
8616 (function_builder::register_function_group): Likewise.
8617 (function_call_info::function_call_info): Likewise.
8618 (function_resolver::function_resolver): Likewise.
8619 (function_resolver::get_vector_type): Likewise.
8620 (function_resolver::get_scalar_type_name): Likewise.
8621 (function_resolver::get_argument_type): Likewise.
8622 (function_resolver::scalar_argument_p): Likewise.
8623 (function_resolver::report_no_such_form): Likewise.
8624 (function_resolver::lookup_form): Likewise.
8625 (function_resolver::resolve_to): Likewise.
8626 (function_resolver::infer_vector_or_tuple_type): Likewise.
8627 (function_resolver::infer_vector_type): Likewise.
8628 (function_resolver::require_vector_or_scalar_type): Likewise.
8629 (function_resolver::require_vector_type): Likewise.
8630 (function_resolver::require_matching_vector_type): Likewise.
8631 (function_resolver::require_derived_vector_type): Likewise.
8632 (function_resolver::require_derived_scalar_type): Likewise.
8633 (function_resolver::require_integer_immediate): Likewise.
8634 (function_resolver::require_scalar_type): Likewise.
8635 (function_resolver::check_num_arguments): Likewise.
8636 (function_resolver::check_gp_argument): Likewise.
8637 (function_resolver::finish_opt_n_resolution): Likewise.
8638 (function_resolver::resolve_unary): Likewise.
8639 (function_resolver::resolve_unary_n): Likewise.
8640 (function_resolver::resolve_uniform): Likewise.
8641 (function_resolver::resolve_uniform_opt_n): Likewise.
8642 (function_resolver::resolve): Likewise.
8643 (function_checker::function_checker): Likewise.
8644 (function_checker::argument_exists_p): Likewise.
8645 (function_checker::require_immediate): Likewise.
8646 (function_checker::require_immediate_enum): Likewise.
8647 (function_checker::require_immediate_range): Likewise.
8648 (function_checker::check): Likewise.
8649 (gimple_folder::gimple_folder): Likewise.
8650 (gimple_folder::fold): Likewise.
8651 (function_expander::function_expander): Likewise.
8652 (function_expander::direct_optab_handler): Likewise.
8653 (function_expander::get_fallback_value): Likewise.
8654 (function_expander::get_reg_target): Likewise.
8655 (function_expander::add_output_operand): Likewise.
8656 (function_expander::add_input_operand): Likewise.
8657 (function_expander::add_integer_operand): Likewise.
8658 (function_expander::generate_insn): Likewise.
8659 (function_expander::use_exact_insn): Likewise.
8660 (function_expander::use_unpred_insn): Likewise.
8661 (function_expander::use_pred_x_insn): Likewise.
8662 (function_expander::use_cond_insn): Likewise.
8663 (function_expander::map_to_rtx_codes): Likewise.
8664 (function_expander::expand): Likewise.
8665 (resolve_overloaded_builtin): Likewise.
8666 (check_builtin_call): Likewise.
8667 (gimple_fold_builtin): Likewise.
8668 (expand_builtin): Likewise.
8669 (gt_ggc_mx): Likewise.
8670 (gt_pch_nx): Likewise.
8671 (gt_pch_nx): Likewise.
8672 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
8684 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
8685 (CP_READ_FPCR): Likewise.
8686 (CP_RAISE_FP_EXCEPTIONS): Likewise.
8687 (CP_READ_MEMORY): Likewise.
8688 (CP_WRITE_MEMORY): Likewise.
8689 (enum units_index): New enum.
8690 (enum predication_index): New.
8691 (enum type_class_index): New.
8692 (enum mode_suffix_index): New enum.
8693 (enum type_suffix_index): New.
8694 (struct mode_suffix_info): New struct.
8695 (struct type_suffix_info): New.
8696 (struct function_group_info): Likewise.
8697 (class function_instance): Likewise.
8698 (class registered_function): Likewise.
8699 (class function_builder): Likewise.
8700 (class function_call_info): Likewise.
8701 (class function_resolver): Likewise.
8702 (class function_checker): Likewise.
8703 (class gimple_folder): Likewise.
8704 (class function_expander): Likewise.
8705 (get_mve_pred16_t): Likewise.
8706 (find_mode_suffix): New function.
8707 (class function_base): Likewise.
8708 (class function_shape): Likewise.
8709 (function_instance::operator==): New function.
8710 (function_instance::operator!=): Likewise.
8711 (function_instance::vectors_per_tuple): Likewise.
8712 (function_instance::mode_suffix): Likewise.
8713 (function_instance::type_suffix): Likewise.
8714 (function_instance::scalar_type): Likewise.
8715 (function_instance::vector_type): Likewise.
8716 (function_instance::tuple_type): Likewise.
8717 (function_instance::vector_mode): Likewise.
8718 (function_call_info::function_returns_void_p): Likewise.
8719 (function_base::call_properties): Likewise.
8720 * config/arm/arm-protos.h (enum arm_builtin_class): Add
8722 (handle_arm_mve_h): New.
8723 (resolve_overloaded_builtin): New.
8724 (check_builtin_call): New.
8725 (gimple_fold_builtin): New.
8726 (expand_builtin): New.
8727 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
8728 arm_gimple_fold_builtin.
8729 (arm_gimple_fold_builtin): New function.
8730 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
8731 * config/arm/predicates.md (arm_any_register_operand): New predicate.
8732 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
8733 (arm-mve-builtins-shapes.o): New target.
8734 (arm-mve-builtins-base.o): New target.
8735 * config/arm/arm-mve-builtins-base.cc: New file.
8736 * config/arm/arm-mve-builtins-base.def: New file.
8737 * config/arm/arm-mve-builtins-base.h: New file.
8738 * config/arm/arm-mve-builtins-functions.h: New file.
8739 * config/arm/arm-mve-builtins-shapes.cc: New file.
8740 * config/arm/arm-mve-builtins-shapes.h: New file.
8742 2023-05-03 Murray Steele <murray.steele@arm.com>
8743 Christophe Lyon <christophe.lyon@arm.com>
8744 Christophe Lyon <christophe.lyon@arm.com>
8746 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
8748 (arm_init_builtin): Use arm_general_add_builtin_function instead
8749 of arm_add_builtin_function.
8750 (arm_init_acle_builtins): Likewise.
8751 (arm_init_mve_builtins): Likewise.
8752 (arm_init_crypto_builtins): Likewise.
8753 (arm_init_builtins): Likewise.
8754 (arm_general_builtin_decl): New function.
8755 (arm_builtin_decl): Defer to numberspace-specialized functions.
8756 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
8757 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
8758 (arm_general_expand_builtin_1): ... specialize for general builtins.
8759 (arm_expand_acle_builtin): Use arm_general_expand_builtin
8760 instead of arm_expand_builtin.
8761 (arm_expand_mve_builtin): Likewise.
8762 (arm_expand_neon_builtin): Likewise.
8763 (arm_expand_vfp_builtin): Likewise.
8764 (arm_general_expand_builtin): New function.
8765 (arm_expand_builtin): Specialize for general builtins.
8766 (arm_general_check_builtin_call): New function.
8767 (arm_check_builtin_call): Specialize for general builtins.
8768 (arm_describe_resolver): Validate numberspace.
8769 (arm_cde_end_args): Likewise.
8770 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
8771 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
8773 2023-05-03 Martin Liska <mliska@suse.cz>
8776 * config/riscv/sync.md: Add gcc_unreachable to a switch.
8778 2023-05-03 Richard Biener <rguenther@suse.de>
8780 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
8781 (patch_loop_exit): Likewise.
8782 (connect_loops): Likewise.
8783 (split_loop): Likewise.
8784 (control_dep_semi_invariant_p): Likewise.
8785 (do_split_loop_on_cond): Likewise.
8786 (split_loop_on_cond): Likewise.
8787 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
8789 (simplify_loop_version): Likewise.
8790 (evaluate_bbs): Likewise.
8791 (find_loop_guard): Likewise.
8792 (clean_up_after_unswitching): Likewise.
8793 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
8795 (optimize_spaceship): Take a gcond * argument, avoid
8797 (math_opts_dom_walker::after_dom_children): Adjust call to
8799 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
8800 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
8803 2023-05-03 Andreas Schwab <schwab@suse.de>
8805 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
8807 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8809 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
8811 (class vlseg): New class.
8812 (class vsseg): Ditto.
8813 (class vlsseg): Ditto.
8814 (class vssseg): Ditto.
8815 (class seg_indexed_load): Ditto.
8816 (class seg_indexed_store): Ditto.
8817 (class vlsegff): Ditto.
8819 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
8820 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
8830 * config/riscv/riscv-vector-builtins-shapes.cc (struct
8831 seg_loadstore_def): Ditto.
8832 (struct seg_indexed_loadstore_def): Ditto.
8833 (struct seg_fault_load_def): Ditto.
8835 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
8836 * config/riscv/riscv-vector-builtins.cc
8837 (function_builder::append_nf): New function.
8838 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
8839 Change ptr from double into float.
8840 (vfloat32m1x3_t): Ditto.
8841 (vfloat32m1x4_t): Ditto.
8842 (vfloat32m1x5_t): Ditto.
8843 (vfloat32m1x6_t): Ditto.
8844 (vfloat32m1x7_t): Ditto.
8845 (vfloat32m1x8_t): Ditto.
8846 (vfloat32m2x2_t): Ditto.
8847 (vfloat32m2x3_t): Ditto.
8848 (vfloat32m2x4_t): Ditto.
8849 (vfloat32m4x2_t): Ditto.
8850 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
8851 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
8853 * config/riscv/riscv.md: Add segment instructions.
8854 * config/riscv/vector-iterators.md: Support segment intrinsics.
8855 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
8857 (@pred_unit_strided_store<mode>): Ditto.
8858 (@pred_strided_load<mode>): Ditto.
8859 (@pred_strided_store<mode>): Ditto.
8860 (@pred_fault_load<mode>): Ditto.
8861 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
8862 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
8863 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
8864 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
8865 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
8866 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
8867 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
8868 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
8869 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
8870 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
8871 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
8872 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
8873 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
8874 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
8876 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8878 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
8883 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
8884 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
8886 (vget): Add tuple type vget.
8887 * config/riscv/riscv-vector-builtins-types.def
8888 (DEF_RVV_TUPLE_OPS): New macro.
8889 (vint8mf8x2_t): Ditto.
8890 (vuint8mf8x2_t): Ditto.
8891 (vint8mf8x3_t): Ditto.
8892 (vuint8mf8x3_t): Ditto.
8893 (vint8mf8x4_t): Ditto.
8894 (vuint8mf8x4_t): Ditto.
8895 (vint8mf8x5_t): Ditto.
8896 (vuint8mf8x5_t): Ditto.
8897 (vint8mf8x6_t): Ditto.
8898 (vuint8mf8x6_t): Ditto.
8899 (vint8mf8x7_t): Ditto.
8900 (vuint8mf8x7_t): Ditto.
8901 (vint8mf8x8_t): Ditto.
8902 (vuint8mf8x8_t): Ditto.
8903 (vint8mf4x2_t): Ditto.
8904 (vuint8mf4x2_t): Ditto.
8905 (vint8mf4x3_t): Ditto.
8906 (vuint8mf4x3_t): Ditto.
8907 (vint8mf4x4_t): Ditto.
8908 (vuint8mf4x4_t): Ditto.
8909 (vint8mf4x5_t): Ditto.
8910 (vuint8mf4x5_t): Ditto.
8911 (vint8mf4x6_t): Ditto.
8912 (vuint8mf4x6_t): Ditto.
8913 (vint8mf4x7_t): Ditto.
8914 (vuint8mf4x7_t): Ditto.
8915 (vint8mf4x8_t): Ditto.
8916 (vuint8mf4x8_t): Ditto.
8917 (vint8mf2x2_t): Ditto.
8918 (vuint8mf2x2_t): Ditto.
8919 (vint8mf2x3_t): Ditto.
8920 (vuint8mf2x3_t): Ditto.
8921 (vint8mf2x4_t): Ditto.
8922 (vuint8mf2x4_t): Ditto.
8923 (vint8mf2x5_t): Ditto.
8924 (vuint8mf2x5_t): Ditto.
8925 (vint8mf2x6_t): Ditto.
8926 (vuint8mf2x6_t): Ditto.
8927 (vint8mf2x7_t): Ditto.
8928 (vuint8mf2x7_t): Ditto.
8929 (vint8mf2x8_t): Ditto.
8930 (vuint8mf2x8_t): Ditto.
8931 (vint8m1x2_t): Ditto.
8932 (vuint8m1x2_t): Ditto.
8933 (vint8m1x3_t): Ditto.
8934 (vuint8m1x3_t): Ditto.
8935 (vint8m1x4_t): Ditto.
8936 (vuint8m1x4_t): Ditto.
8937 (vint8m1x5_t): Ditto.
8938 (vuint8m1x5_t): Ditto.
8939 (vint8m1x6_t): Ditto.
8940 (vuint8m1x6_t): Ditto.
8941 (vint8m1x7_t): Ditto.
8942 (vuint8m1x7_t): Ditto.
8943 (vint8m1x8_t): Ditto.
8944 (vuint8m1x8_t): Ditto.
8945 (vint8m2x2_t): Ditto.
8946 (vuint8m2x2_t): Ditto.
8947 (vint8m2x3_t): Ditto.
8948 (vuint8m2x3_t): Ditto.
8949 (vint8m2x4_t): Ditto.
8950 (vuint8m2x4_t): Ditto.
8951 (vint8m4x2_t): Ditto.
8952 (vuint8m4x2_t): Ditto.
8953 (vint16mf4x2_t): Ditto.
8954 (vuint16mf4x2_t): Ditto.
8955 (vint16mf4x3_t): Ditto.
8956 (vuint16mf4x3_t): Ditto.
8957 (vint16mf4x4_t): Ditto.
8958 (vuint16mf4x4_t): Ditto.
8959 (vint16mf4x5_t): Ditto.
8960 (vuint16mf4x5_t): Ditto.
8961 (vint16mf4x6_t): Ditto.
8962 (vuint16mf4x6_t): Ditto.
8963 (vint16mf4x7_t): Ditto.
8964 (vuint16mf4x7_t): Ditto.
8965 (vint16mf4x8_t): Ditto.
8966 (vuint16mf4x8_t): Ditto.
8967 (vint16mf2x2_t): Ditto.
8968 (vuint16mf2x2_t): Ditto.
8969 (vint16mf2x3_t): Ditto.
8970 (vuint16mf2x3_t): Ditto.
8971 (vint16mf2x4_t): Ditto.
8972 (vuint16mf2x4_t): Ditto.
8973 (vint16mf2x5_t): Ditto.
8974 (vuint16mf2x5_t): Ditto.
8975 (vint16mf2x6_t): Ditto.
8976 (vuint16mf2x6_t): Ditto.
8977 (vint16mf2x7_t): Ditto.
8978 (vuint16mf2x7_t): Ditto.
8979 (vint16mf2x8_t): Ditto.
8980 (vuint16mf2x8_t): Ditto.
8981 (vint16m1x2_t): Ditto.
8982 (vuint16m1x2_t): Ditto.
8983 (vint16m1x3_t): Ditto.
8984 (vuint16m1x3_t): Ditto.
8985 (vint16m1x4_t): Ditto.
8986 (vuint16m1x4_t): Ditto.
8987 (vint16m1x5_t): Ditto.
8988 (vuint16m1x5_t): Ditto.
8989 (vint16m1x6_t): Ditto.
8990 (vuint16m1x6_t): Ditto.
8991 (vint16m1x7_t): Ditto.
8992 (vuint16m1x7_t): Ditto.
8993 (vint16m1x8_t): Ditto.
8994 (vuint16m1x8_t): Ditto.
8995 (vint16m2x2_t): Ditto.
8996 (vuint16m2x2_t): Ditto.
8997 (vint16m2x3_t): Ditto.
8998 (vuint16m2x3_t): Ditto.
8999 (vint16m2x4_t): Ditto.
9000 (vuint16m2x4_t): Ditto.
9001 (vint16m4x2_t): Ditto.
9002 (vuint16m4x2_t): Ditto.
9003 (vint32mf2x2_t): Ditto.
9004 (vuint32mf2x2_t): Ditto.
9005 (vint32mf2x3_t): Ditto.
9006 (vuint32mf2x3_t): Ditto.
9007 (vint32mf2x4_t): Ditto.
9008 (vuint32mf2x4_t): Ditto.
9009 (vint32mf2x5_t): Ditto.
9010 (vuint32mf2x5_t): Ditto.
9011 (vint32mf2x6_t): Ditto.
9012 (vuint32mf2x6_t): Ditto.
9013 (vint32mf2x7_t): Ditto.
9014 (vuint32mf2x7_t): Ditto.
9015 (vint32mf2x8_t): Ditto.
9016 (vuint32mf2x8_t): Ditto.
9017 (vint32m1x2_t): Ditto.
9018 (vuint32m1x2_t): Ditto.
9019 (vint32m1x3_t): Ditto.
9020 (vuint32m1x3_t): Ditto.
9021 (vint32m1x4_t): Ditto.
9022 (vuint32m1x4_t): Ditto.
9023 (vint32m1x5_t): Ditto.
9024 (vuint32m1x5_t): Ditto.
9025 (vint32m1x6_t): Ditto.
9026 (vuint32m1x6_t): Ditto.
9027 (vint32m1x7_t): Ditto.
9028 (vuint32m1x7_t): Ditto.
9029 (vint32m1x8_t): Ditto.
9030 (vuint32m1x8_t): Ditto.
9031 (vint32m2x2_t): Ditto.
9032 (vuint32m2x2_t): Ditto.
9033 (vint32m2x3_t): Ditto.
9034 (vuint32m2x3_t): Ditto.
9035 (vint32m2x4_t): Ditto.
9036 (vuint32m2x4_t): Ditto.
9037 (vint32m4x2_t): Ditto.
9038 (vuint32m4x2_t): Ditto.
9039 (vint64m1x2_t): Ditto.
9040 (vuint64m1x2_t): Ditto.
9041 (vint64m1x3_t): Ditto.
9042 (vuint64m1x3_t): Ditto.
9043 (vint64m1x4_t): Ditto.
9044 (vuint64m1x4_t): Ditto.
9045 (vint64m1x5_t): Ditto.
9046 (vuint64m1x5_t): Ditto.
9047 (vint64m1x6_t): Ditto.
9048 (vuint64m1x6_t): Ditto.
9049 (vint64m1x7_t): Ditto.
9050 (vuint64m1x7_t): Ditto.
9051 (vint64m1x8_t): Ditto.
9052 (vuint64m1x8_t): Ditto.
9053 (vint64m2x2_t): Ditto.
9054 (vuint64m2x2_t): Ditto.
9055 (vint64m2x3_t): Ditto.
9056 (vuint64m2x3_t): Ditto.
9057 (vint64m2x4_t): Ditto.
9058 (vuint64m2x4_t): Ditto.
9059 (vint64m4x2_t): Ditto.
9060 (vuint64m4x2_t): Ditto.
9061 (vfloat32mf2x2_t): Ditto.
9062 (vfloat32mf2x3_t): Ditto.
9063 (vfloat32mf2x4_t): Ditto.
9064 (vfloat32mf2x5_t): Ditto.
9065 (vfloat32mf2x6_t): Ditto.
9066 (vfloat32mf2x7_t): Ditto.
9067 (vfloat32mf2x8_t): Ditto.
9068 (vfloat32m1x2_t): Ditto.
9069 (vfloat32m1x3_t): Ditto.
9070 (vfloat32m1x4_t): Ditto.
9071 (vfloat32m1x5_t): Ditto.
9072 (vfloat32m1x6_t): Ditto.
9073 (vfloat32m1x7_t): Ditto.
9074 (vfloat32m1x8_t): Ditto.
9075 (vfloat32m2x2_t): Ditto.
9076 (vfloat32m2x3_t): Ditto.
9077 (vfloat32m2x4_t): Ditto.
9078 (vfloat32m4x2_t): Ditto.
9079 (vfloat64m1x2_t): Ditto.
9080 (vfloat64m1x3_t): Ditto.
9081 (vfloat64m1x4_t): Ditto.
9082 (vfloat64m1x5_t): Ditto.
9083 (vfloat64m1x6_t): Ditto.
9084 (vfloat64m1x7_t): Ditto.
9085 (vfloat64m1x8_t): Ditto.
9086 (vfloat64m2x2_t): Ditto.
9087 (vfloat64m2x3_t): Ditto.
9088 (vfloat64m2x4_t): Ditto.
9089 (vfloat64m4x2_t): Ditto.
9090 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
9092 (DEF_RVV_TYPE_INDEX): Ditto.
9093 (rvv_arg_type_info::get_tuple_subpart_type): New function.
9094 (DEF_RVV_TUPLE_TYPE): New macro.
9095 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
9096 Adapt for tuple vget/vset support.
9097 (vint8mf4_t): Ditto.
9098 (vuint8mf4_t): Ditto.
9099 (vint8mf2_t): Ditto.
9100 (vuint8mf2_t): Ditto.
9102 (vuint8m1_t): Ditto.
9104 (vuint8m2_t): Ditto.
9106 (vuint8m4_t): Ditto.
9108 (vuint8m8_t): Ditto.
9109 (vint16mf4_t): Ditto.
9110 (vuint16mf4_t): Ditto.
9111 (vint16mf2_t): Ditto.
9112 (vuint16mf2_t): Ditto.
9113 (vint16m1_t): Ditto.
9114 (vuint16m1_t): Ditto.
9115 (vint16m2_t): Ditto.
9116 (vuint16m2_t): Ditto.
9117 (vint16m4_t): Ditto.
9118 (vuint16m4_t): Ditto.
9119 (vint16m8_t): Ditto.
9120 (vuint16m8_t): Ditto.
9121 (vint32mf2_t): Ditto.
9122 (vuint32mf2_t): Ditto.
9123 (vint32m1_t): Ditto.
9124 (vuint32m1_t): Ditto.
9125 (vint32m2_t): Ditto.
9126 (vuint32m2_t): Ditto.
9127 (vint32m4_t): Ditto.
9128 (vuint32m4_t): Ditto.
9129 (vint32m8_t): Ditto.
9130 (vuint32m8_t): Ditto.
9131 (vint64m1_t): Ditto.
9132 (vuint64m1_t): Ditto.
9133 (vint64m2_t): Ditto.
9134 (vuint64m2_t): Ditto.
9135 (vint64m4_t): Ditto.
9136 (vuint64m4_t): Ditto.
9137 (vint64m8_t): Ditto.
9138 (vuint64m8_t): Ditto.
9139 (vfloat32mf2_t): Ditto.
9140 (vfloat32m1_t): Ditto.
9141 (vfloat32m2_t): Ditto.
9142 (vfloat32m4_t): Ditto.
9143 (vfloat32m8_t): Ditto.
9144 (vfloat64m1_t): Ditto.
9145 (vfloat64m2_t): Ditto.
9146 (vfloat64m4_t): Ditto.
9147 (vfloat64m8_t): Ditto.
9148 (tuple_subpart): Add tuple subpart base type.
9149 * config/riscv/riscv-vector-builtins.h (struct
9150 rvv_arg_type_info): Ditto.
9151 (tuple_type_field): New function.
9153 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9155 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
9156 (RVV_TUPLE_PARTIAL_MODES): Ditto.
9157 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
9160 (get_subpart_mode): Ditto.
9161 (get_tuple_mode): Ditto.
9162 (expand_tuple_move): Ditto.
9163 * config/riscv/riscv-v.cc (ENTRY): New macro.
9164 (TUPLE_ENTRY): Ditto.
9165 (get_nf): New function.
9166 (get_subpart_mode): Ditto.
9167 (get_tuple_mode): Ditto.
9168 (expand_tuple_move): Ditto.
9169 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
9171 (register_tuple_type): New function
9172 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
9174 (vint8mf8x2_t): New macro.
9175 (vuint8mf8x2_t): Ditto.
9176 (vint8mf8x3_t): Ditto.
9177 (vuint8mf8x3_t): Ditto.
9178 (vint8mf8x4_t): Ditto.
9179 (vuint8mf8x4_t): Ditto.
9180 (vint8mf8x5_t): Ditto.
9181 (vuint8mf8x5_t): Ditto.
9182 (vint8mf8x6_t): Ditto.
9183 (vuint8mf8x6_t): Ditto.
9184 (vint8mf8x7_t): Ditto.
9185 (vuint8mf8x7_t): Ditto.
9186 (vint8mf8x8_t): Ditto.
9187 (vuint8mf8x8_t): Ditto.
9188 (vint8mf4x2_t): Ditto.
9189 (vuint8mf4x2_t): Ditto.
9190 (vint8mf4x3_t): Ditto.
9191 (vuint8mf4x3_t): Ditto.
9192 (vint8mf4x4_t): Ditto.
9193 (vuint8mf4x4_t): Ditto.
9194 (vint8mf4x5_t): Ditto.
9195 (vuint8mf4x5_t): Ditto.
9196 (vint8mf4x6_t): Ditto.
9197 (vuint8mf4x6_t): Ditto.
9198 (vint8mf4x7_t): Ditto.
9199 (vuint8mf4x7_t): Ditto.
9200 (vint8mf4x8_t): Ditto.
9201 (vuint8mf4x8_t): Ditto.
9202 (vint8mf2x2_t): Ditto.
9203 (vuint8mf2x2_t): Ditto.
9204 (vint8mf2x3_t): Ditto.
9205 (vuint8mf2x3_t): Ditto.
9206 (vint8mf2x4_t): Ditto.
9207 (vuint8mf2x4_t): Ditto.
9208 (vint8mf2x5_t): Ditto.
9209 (vuint8mf2x5_t): Ditto.
9210 (vint8mf2x6_t): Ditto.
9211 (vuint8mf2x6_t): Ditto.
9212 (vint8mf2x7_t): Ditto.
9213 (vuint8mf2x7_t): Ditto.
9214 (vint8mf2x8_t): Ditto.
9215 (vuint8mf2x8_t): Ditto.
9216 (vint8m1x2_t): Ditto.
9217 (vuint8m1x2_t): Ditto.
9218 (vint8m1x3_t): Ditto.
9219 (vuint8m1x3_t): Ditto.
9220 (vint8m1x4_t): Ditto.
9221 (vuint8m1x4_t): Ditto.
9222 (vint8m1x5_t): Ditto.
9223 (vuint8m1x5_t): Ditto.
9224 (vint8m1x6_t): Ditto.
9225 (vuint8m1x6_t): Ditto.
9226 (vint8m1x7_t): Ditto.
9227 (vuint8m1x7_t): Ditto.
9228 (vint8m1x8_t): Ditto.
9229 (vuint8m1x8_t): Ditto.
9230 (vint8m2x2_t): Ditto.
9231 (vuint8m2x2_t): Ditto.
9232 (vint8m2x3_t): Ditto.
9233 (vuint8m2x3_t): Ditto.
9234 (vint8m2x4_t): Ditto.
9235 (vuint8m2x4_t): Ditto.
9236 (vint8m4x2_t): Ditto.
9237 (vuint8m4x2_t): Ditto.
9238 (vint16mf4x2_t): Ditto.
9239 (vuint16mf4x2_t): Ditto.
9240 (vint16mf4x3_t): Ditto.
9241 (vuint16mf4x3_t): Ditto.
9242 (vint16mf4x4_t): Ditto.
9243 (vuint16mf4x4_t): Ditto.
9244 (vint16mf4x5_t): Ditto.
9245 (vuint16mf4x5_t): Ditto.
9246 (vint16mf4x6_t): Ditto.
9247 (vuint16mf4x6_t): Ditto.
9248 (vint16mf4x7_t): Ditto.
9249 (vuint16mf4x7_t): Ditto.
9250 (vint16mf4x8_t): Ditto.
9251 (vuint16mf4x8_t): Ditto.
9252 (vint16mf2x2_t): Ditto.
9253 (vuint16mf2x2_t): Ditto.
9254 (vint16mf2x3_t): Ditto.
9255 (vuint16mf2x3_t): Ditto.
9256 (vint16mf2x4_t): Ditto.
9257 (vuint16mf2x4_t): Ditto.
9258 (vint16mf2x5_t): Ditto.
9259 (vuint16mf2x5_t): Ditto.
9260 (vint16mf2x6_t): Ditto.
9261 (vuint16mf2x6_t): Ditto.
9262 (vint16mf2x7_t): Ditto.
9263 (vuint16mf2x7_t): Ditto.
9264 (vint16mf2x8_t): Ditto.
9265 (vuint16mf2x8_t): Ditto.
9266 (vint16m1x2_t): Ditto.
9267 (vuint16m1x2_t): Ditto.
9268 (vint16m1x3_t): Ditto.
9269 (vuint16m1x3_t): Ditto.
9270 (vint16m1x4_t): Ditto.
9271 (vuint16m1x4_t): Ditto.
9272 (vint16m1x5_t): Ditto.
9273 (vuint16m1x5_t): Ditto.
9274 (vint16m1x6_t): Ditto.
9275 (vuint16m1x6_t): Ditto.
9276 (vint16m1x7_t): Ditto.
9277 (vuint16m1x7_t): Ditto.
9278 (vint16m1x8_t): Ditto.
9279 (vuint16m1x8_t): Ditto.
9280 (vint16m2x2_t): Ditto.
9281 (vuint16m2x2_t): Ditto.
9282 (vint16m2x3_t): Ditto.
9283 (vuint16m2x3_t): Ditto.
9284 (vint16m2x4_t): Ditto.
9285 (vuint16m2x4_t): Ditto.
9286 (vint16m4x2_t): Ditto.
9287 (vuint16m4x2_t): Ditto.
9288 (vint32mf2x2_t): Ditto.
9289 (vuint32mf2x2_t): Ditto.
9290 (vint32mf2x3_t): Ditto.
9291 (vuint32mf2x3_t): Ditto.
9292 (vint32mf2x4_t): Ditto.
9293 (vuint32mf2x4_t): Ditto.
9294 (vint32mf2x5_t): Ditto.
9295 (vuint32mf2x5_t): Ditto.
9296 (vint32mf2x6_t): Ditto.
9297 (vuint32mf2x6_t): Ditto.
9298 (vint32mf2x7_t): Ditto.
9299 (vuint32mf2x7_t): Ditto.
9300 (vint32mf2x8_t): Ditto.
9301 (vuint32mf2x8_t): Ditto.
9302 (vint32m1x2_t): Ditto.
9303 (vuint32m1x2_t): Ditto.
9304 (vint32m1x3_t): Ditto.
9305 (vuint32m1x3_t): Ditto.
9306 (vint32m1x4_t): Ditto.
9307 (vuint32m1x4_t): Ditto.
9308 (vint32m1x5_t): Ditto.
9309 (vuint32m1x5_t): Ditto.
9310 (vint32m1x6_t): Ditto.
9311 (vuint32m1x6_t): Ditto.
9312 (vint32m1x7_t): Ditto.
9313 (vuint32m1x7_t): Ditto.
9314 (vint32m1x8_t): Ditto.
9315 (vuint32m1x8_t): Ditto.
9316 (vint32m2x2_t): Ditto.
9317 (vuint32m2x2_t): Ditto.
9318 (vint32m2x3_t): Ditto.
9319 (vuint32m2x3_t): Ditto.
9320 (vint32m2x4_t): Ditto.
9321 (vuint32m2x4_t): Ditto.
9322 (vint32m4x2_t): Ditto.
9323 (vuint32m4x2_t): Ditto.
9324 (vint64m1x2_t): Ditto.
9325 (vuint64m1x2_t): Ditto.
9326 (vint64m1x3_t): Ditto.
9327 (vuint64m1x3_t): Ditto.
9328 (vint64m1x4_t): Ditto.
9329 (vuint64m1x4_t): Ditto.
9330 (vint64m1x5_t): Ditto.
9331 (vuint64m1x5_t): Ditto.
9332 (vint64m1x6_t): Ditto.
9333 (vuint64m1x6_t): Ditto.
9334 (vint64m1x7_t): Ditto.
9335 (vuint64m1x7_t): Ditto.
9336 (vint64m1x8_t): Ditto.
9337 (vuint64m1x8_t): Ditto.
9338 (vint64m2x2_t): Ditto.
9339 (vuint64m2x2_t): Ditto.
9340 (vint64m2x3_t): Ditto.
9341 (vuint64m2x3_t): Ditto.
9342 (vint64m2x4_t): Ditto.
9343 (vuint64m2x4_t): Ditto.
9344 (vint64m4x2_t): Ditto.
9345 (vuint64m4x2_t): Ditto.
9346 (vfloat32mf2x2_t): Ditto.
9347 (vfloat32mf2x3_t): Ditto.
9348 (vfloat32mf2x4_t): Ditto.
9349 (vfloat32mf2x5_t): Ditto.
9350 (vfloat32mf2x6_t): Ditto.
9351 (vfloat32mf2x7_t): Ditto.
9352 (vfloat32mf2x8_t): Ditto.
9353 (vfloat32m1x2_t): Ditto.
9354 (vfloat32m1x3_t): Ditto.
9355 (vfloat32m1x4_t): Ditto.
9356 (vfloat32m1x5_t): Ditto.
9357 (vfloat32m1x6_t): Ditto.
9358 (vfloat32m1x7_t): Ditto.
9359 (vfloat32m1x8_t): Ditto.
9360 (vfloat32m2x2_t): Ditto.
9361 (vfloat32m2x3_t): Ditto.
9362 (vfloat32m2x4_t): Ditto.
9363 (vfloat32m4x2_t): Ditto.
9364 (vfloat64m1x2_t): Ditto.
9365 (vfloat64m1x3_t): Ditto.
9366 (vfloat64m1x4_t): Ditto.
9367 (vfloat64m1x5_t): Ditto.
9368 (vfloat64m1x6_t): Ditto.
9369 (vfloat64m1x7_t): Ditto.
9370 (vfloat64m1x8_t): Ditto.
9371 (vfloat64m2x2_t): Ditto.
9372 (vfloat64m2x3_t): Ditto.
9373 (vfloat64m2x4_t): Ditto.
9374 (vfloat64m4x2_t): Ditto.
9375 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
9377 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
9378 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
9380 (TUPLE_ENTRY): Ditto.
9381 (riscv_v_ext_mode_p): New function.
9382 (riscv_v_adjust_nunits): Add tuple mode adjustment.
9383 (riscv_classify_address): Ditto.
9384 (riscv_binary_cost): Ditto.
9385 (riscv_rtx_costs): Ditto.
9386 (riscv_secondary_memory_needed): Ditto.
9387 (riscv_hard_regno_nregs): Ditto.
9388 (riscv_hard_regno_mode_ok): Ditto.
9389 (riscv_vector_mode_supported_p): Ditto.
9390 (riscv_regmode_natural_size): Ditto.
9391 (riscv_array_mode): New function.
9392 (TARGET_ARRAY_MODE): New target hook.
9393 * config/riscv/riscv.md: Add tuple modes.
9394 * config/riscv/vector-iterators.md: Ditto.
9395 * config/riscv/vector.md (mov<mode>): Add tuple modes data
9397 (*mov<VT:mode>_<P:mode>): Ditto.
9399 2023-05-03 Richard Biener <rguenther@suse.de>
9401 * cse.cc (cse_insn): Track an equivalence to the destination
9402 separately and delay using src_related for it.
9404 2023-05-03 Richard Biener <rguenther@suse.de>
9406 * cse.cc (HASH): Turn into inline function and mix
9407 in another HASH_SHIFT bits.
9408 (SAFE_HASH): Likewise.
9410 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9413 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
9414 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
9416 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9419 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
9420 (add<mode>3<vczle><vczbe>): ... This.
9421 (sub<mode>3): Rename to...
9422 (sub<mode>3<vczle><vczbe>): ... This.
9423 (mul<mode>3): Rename to...
9424 (mul<mode>3<vczle><vczbe>): ... This.
9425 (*div<mode>3): Rename to...
9426 (*div<mode>3<vczle><vczbe>): ... This.
9427 (neg<mode>2): Rename to...
9428 (neg<mode>2<vczle><vczbe>): ... This.
9429 (abs<mode>2): Rename to...
9430 (abs<mode>2<vczle><vczbe>): ... This.
9431 (<frint_pattern><mode>2): Rename to...
9432 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
9433 (<fmaxmin><mode>3): Rename to...
9434 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
9435 (*sqrt<mode>2): Rename to...
9436 (*sqrt<mode>2<vczle><vczbe>): ... This.
9438 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
9440 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
9442 2023-05-03 Martin Liska <mliska@suse.cz>
9444 PR tree-optimization/109693
9445 * value-range-storage.cc (vrange_allocator::vrange_allocator):
9446 Remove unused field.
9447 * value-range-storage.h: Likewise.
9449 2023-05-02 Andrew Pinski <apinski@marvell.com>
9451 * tree-ssa-phiopt.cc (move_stmt): New function.
9452 (match_simplify_replacement): Use move_stmt instead
9453 of the inlined version.
9455 2023-05-02 Andrew Pinski <apinski@marvell.com>
9457 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
9460 2023-05-02 Andrew Pinski <apinski@marvell.com>
9462 PR tree-optimization/109702
9463 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
9464 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
9466 2023-05-02 Andrew Pinski <apinski@marvell.com>
9469 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
9470 insn_and_split pattern.
9472 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9474 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
9477 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9479 * config/riscv/sync.md (mem_thread_fence_1): Change fence
9480 depending on the given memory model.
9482 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9484 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
9485 riscv_union_memmodels function to sync.md.
9486 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
9487 get the union of two memmodels in sync.md.
9488 (riscv_print_operand): Add %I and %J flags that output the
9489 optimal LR/SC flag bits for a given memory model.
9490 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
9491 bits on SC op and replace with optimized %I, %J flags.
9493 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9495 * config/riscv/riscv.cc
9496 (riscv_memmodel_needs_amo_release): Change function name.
9497 (riscv_print_operand): Remove unneeded %F case.
9498 * config/riscv/sync.md: Remove unneeded fences.
9500 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9503 * config/riscv/sync.md (atomic_store<mode>): Use simple store
9504 instruction in combination with fence(s).
9506 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9508 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
9509 of %A to include release bits.
9511 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9513 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
9514 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
9517 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9519 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
9520 sequentially consistent LR.aqrl/SC.rl pairs.
9522 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
9524 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
9525 sanitize memmodel input with memmodel_base.
9527 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
9528 Pan Li <pan2.li@intel.com>
9531 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
9533 2023-05-02 Romain Naour <romain.naour@gmail.com>
9535 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
9538 2023-05-02 Martin Liska <mliska@suse.cz>
9540 * doc/invoke.texi: Update documentation based on param.opt file.
9542 2023-05-02 Richard Biener <rguenther@suse.de>
9544 PR tree-optimization/109672
9545 * tree-vect-stmts.cc (vectorizable_operation): For plus,
9546 minus and negate always check the vector mode is word mode.
9548 2023-05-01 Andrew Pinski <apinski@marvell.com>
9550 * tree-ssa-phiopt.cc: Update comment about
9551 how the transformation are implemented.
9553 2023-05-01 Jeff Law <jlaw@ventanamicro>
9555 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
9557 2023-05-01 Jeff Law <jlaw@ventanamicro>
9559 * config/cris/cris.cc (TARGET_LRA_P): Remove.
9560 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
9561 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
9562 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
9563 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
9564 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
9566 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
9568 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
9569 * print-tree.cc (print_decl_identifier): Implement it.
9570 * toplev.cc (output_stack_usage_1): Use it.
9572 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9574 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
9577 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9579 * value-range.h (irange::set_nonzero): Inline.
9581 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9583 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
9585 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
9586 invalid_range, as it is an inverse range.
9587 * tree-vrp.cc (find_case_label_range): Avoid trees.
9588 * value-range.cc (irange::irange_set): Delete.
9589 (irange::irange_set_1bit_anti_range): Delete.
9590 (irange::irange_set_anti_range): Delete.
9591 (irange::set): Cleanup.
9592 * value-range.h (class irange): Remove irange_set,
9593 irange_set_anti_range, irange_set_1bit_anti_range.
9594 (irange::set_undefined): Remove set to m_type.
9596 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9598 * range-op.cc (update_known_bitmask): Adjust for irange containing
9599 wide_ints internally.
9600 * tree-ssanames.cc (set_nonzero_bits): Same.
9601 * tree-ssanames.h (set_nonzero_bits): Same.
9602 * value-range-storage.cc (irange_storage::set_irange): Same.
9603 (irange_storage::get_irange): Same.
9604 * value-range.cc (irange::operator=): Same.
9605 (irange::irange_set): Same.
9606 (irange::irange_set_1bit_anti_range): Same.
9607 (irange::irange_set_anti_range): Same.
9608 (irange::set): Same.
9609 (irange::verify_range): Same.
9610 (irange::contains_p): Same.
9611 (irange::irange_single_pair_union): Same.
9612 (irange::union_): Same.
9613 (irange::irange_contains_p): Same.
9614 (irange::intersect): Same.
9615 (irange::invert): Same.
9616 (irange::set_range_from_nonzero_bits): Same.
9617 (irange::set_nonzero_bits): Same.
9619 (irange::intersect_nonzero_bits): Same.
9620 (irange::union_nonzero_bits): Same.
9624 (range_tests_strict_enum): Same.
9625 (range_tests_misc): Same.
9626 (range_tests_nonzero_bits): Same.
9627 * value-range.h (irange::type): Same.
9628 (irange::varying_compatible_p): Same.
9629 (irange::irange): Same.
9630 (int_range::int_range): Same.
9631 (irange::set_undefined): Same.
9632 (irange::set_varying): Same.
9633 (irange::lower_bound): Same.
9634 (irange::upper_bound): Same.
9636 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9638 * gimple-range-fold.cc (tree_lower_bound): Delete.
9639 (tree_upper_bound): Delete.
9640 (vrp_val_max): Delete.
9641 (vrp_val_min): Delete.
9642 (fold_using_range::range_of_ssa_name_with_loop_info): Call
9643 range_of_var_in_loop.
9644 * vr-values.cc (valid_value_p): Delete.
9645 (fix_overflow): Delete.
9646 (get_scev_info): New.
9647 (bounds_of_var_in_loop): Refactor into...
9648 (induction_variable_may_overflow_p): ...this,
9649 (range_from_loop_direction): ...and this,
9650 (range_of_var_in_loop): ...and this.
9651 * vr-values.h (bounds_of_var_in_loop): Delete.
9652 (range_of_var_in_loop): New.
9654 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9656 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
9660 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
9661 * range-op.cc (max_limit): Same.
9663 (plus_minus_ranges): Same.
9664 (operator_rshift::op1_range): Same.
9665 (operator_cast::inside_domain_p): Same.
9666 * value-range.cc (vrp_val_is_max): Delete.
9667 (vrp_val_is_min): Delete.
9668 (range_tests_misc): Use irange_val_*.
9669 * value-range.h (vrp_val_is_min): Delete.
9670 (vrp_val_is_max): Delete.
9671 (vrp_val_max): Delete.
9672 (irange_val_min): New.
9673 (vrp_val_min): Delete.
9674 (irange_val_max): New.
9675 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
9677 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9679 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
9680 * gimple-fold.cc (size_must_be_zero_p): Same.
9681 * gimple-loop-versioning.cc
9682 (loop_versioning::prune_loop_conditions): Same.
9683 * gimple-range-edge.cc (gcond_edge_range): Same.
9684 (gimple_outgoing_range::calc_switch_ranges): Same.
9685 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
9686 (adjust_realpart_expr): Same.
9687 (fold_using_range::range_of_address): Same.
9688 (fold_using_range::relation_fold_and_or): Same.
9689 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
9690 (range_is_either_true_or_false): Same.
9691 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
9692 (cfn_clz::fold_range): Same.
9693 (cfn_ctz::fold_range): Same.
9694 * gimple-range-tests.cc (class test_expr_eval): Same.
9695 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
9696 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
9697 (propagate_vr_across_jump_function): Same.
9698 (decide_whether_version_node): Same.
9699 * ipa-prop.cc (ipa_get_value_range): Same.
9700 * ipa-prop.h (ipa_range_set_and_normalize): Same.
9701 * range-op.cc (get_shift_range): Same.
9702 (value_range_from_overflowed_bounds): Same.
9703 (value_range_with_overflow): Same.
9704 (create_possibly_reversed_range): Same.
9705 (equal_op1_op2_relation): Same.
9706 (not_equal_op1_op2_relation): Same.
9707 (lt_op1_op2_relation): Same.
9708 (le_op1_op2_relation): Same.
9709 (gt_op1_op2_relation): Same.
9710 (ge_op1_op2_relation): Same.
9711 (operator_mult::op1_range): Same.
9712 (operator_exact_divide::op1_range): Same.
9713 (operator_lshift::op1_range): Same.
9714 (operator_rshift::op1_range): Same.
9715 (operator_cast::op1_range): Same.
9716 (operator_logical_and::fold_range): Same.
9717 (set_nonzero_range_from_mask): Same.
9718 (operator_bitwise_or::op1_range): Same.
9719 (operator_bitwise_xor::op1_range): Same.
9720 (operator_addr_expr::fold_range): Same.
9721 (pointer_plus_operator::wi_fold): Same.
9722 (pointer_or_operator::op1_range): Same.
9729 (range_op_cast_tests): Same.
9730 (range_op_lshift_tests): Same.
9731 (range_op_rshift_tests): Same.
9732 (range_op_bitwise_and_tests): Same.
9733 (range_relational_tests): Same.
9734 * range.cc (range_zero): Same.
9735 (range_nonzero): Same.
9736 * range.h (range_true): Same.
9737 (range_false): Same.
9738 (range_true_and_false): Same.
9739 * tree-data-ref.cc (split_constant_offset_1): Same.
9740 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
9741 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
9742 (find_unswitching_predicates_for_bb): Same.
9743 * tree-ssa-phiopt.cc (value_replacement): Same.
9744 * tree-ssa-threadbackward.cc
9745 (back_threader::find_taken_edge_cond): Same.
9746 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
9747 * tree-vrp.cc (find_case_label_range): Same.
9748 * value-query.cc (range_query::get_tree_range): Same.
9749 * value-range.cc (irange::set_nonnegative): Same.
9750 (frange::contains_p): Same.
9751 (frange::singleton_p): Same.
9752 (frange::internal_singleton_p): Same.
9753 (irange::irange_set): Same.
9754 (irange::irange_set_1bit_anti_range): Same.
9755 (irange::irange_set_anti_range): Same.
9756 (irange::set): Same.
9757 (irange::operator==): Same.
9758 (irange::singleton_p): Same.
9759 (irange::contains_p): Same.
9760 (irange::set_range_from_nonzero_bits): Same.
9761 (DEFINE_INT_RANGE_INSTANCE): Same.
9771 (range_uint128): New.
9774 (build_range3): Convert to irange wide_int API.
9775 (range_tests_irange3): Same.
9776 (range_tests_int_range_max): Same.
9777 (range_tests_strict_enum): Same.
9778 (range_tests_misc): Same.
9779 (range_tests_nonzero_bits): Same.
9780 (range_tests_nan): Same.
9781 (range_tests_signed_zeros): Same.
9782 * value-range.h (Value_Range::Value_Range): Same.
9783 (irange::set): Same.
9784 (irange::nonzero_p): Same.
9785 (irange::contains_p): Same.
9786 (range_includes_zero_p): Same.
9787 (irange::set_nonzero): Same.
9788 (irange::set_zero): Same.
9789 (contains_zero_p): Same.
9790 (frange::contains_p): Same.
9792 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
9793 (bounds_of_var_in_loop): Same.
9794 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
9796 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9798 * value-range.cc (irange::irange_union): Rename to...
9799 (irange::union_): ...this.
9800 (irange::irange_intersect): Rename to...
9801 (irange::intersect): ...this.
9802 * value-range.h (irange::union_): Delete.
9803 (irange::intersect): Delete.
9805 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9807 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
9809 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9811 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
9813 (compare_ranges): Delete.
9814 (compare_range_with_value): Delete.
9815 (bounds_of_var_in_loop): Tidy up by using ranger API.
9816 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
9817 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
9818 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
9819 strict_overflow_p and only_ranges.
9820 (simplify_using_ranges::legacy_fold_cond): Adjust call to
9821 legacy_fold_cond_overflow.
9822 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
9824 (range_fits_type_p): Rename value_range to irange.
9825 * vr-values.h (range_fits_type_p): Adjust prototype.
9827 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9829 * value-range.cc (irange::irange_set_anti_range): Remove uses of
9830 tree_lower_bound and tree_upper_bound.
9831 (irange::verify_range): Same.
9832 (irange::operator==): Same.
9833 (irange::singleton_p): Same.
9834 * value-range.h (irange::tree_lower_bound): Delete.
9835 (irange::tree_upper_bound): Delete.
9836 (irange::lower_bound): Delete.
9837 (irange::upper_bound): Delete.
9838 (irange::zero_p): Remove uses of tree_lower_bound and
9841 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9843 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
9845 (determine_value_range): Same.
9846 (record_nonwrapping_iv): Same.
9847 (infer_loop_bounds_from_signedness): Same.
9848 (scev_var_range_cant_overflow): Same.
9849 * tree-vrp.cc (operand_less_p): Delete.
9850 * tree-vrp.h (operand_less_p): Delete.
9851 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
9852 (irange::value_inside_range): Delete.
9853 * value-range.h (vrange::kind): Delete.
9854 (irange::num_pairs): Remove check of m_kind.
9855 (irange::min): Delete.
9856 (irange::max): Delete.
9858 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
9860 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
9862 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
9863 (sbr_vector::grow): Same.
9864 (sbr_vector::set_bb_range): Same.
9865 (sbr_vector::get_bb_range): Same.
9866 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
9867 (sbr_sparse_bitmap::set_bb_range): Same.
9868 (sbr_sparse_bitmap::get_bb_range): Same.
9869 (block_range_cache::block_range_cache): Same.
9870 (ssa_global_cache::ssa_global_cache): Same.
9871 (ssa_global_cache::get_global_range): Same.
9872 (ssa_global_cache::set_global_range): Same.
9873 * gimple-range-cache.h: Same.
9874 * gimple-range-edge.cc
9875 (gimple_outgoing_range::gimple_outgoing_range): Same.
9876 (gimple_outgoing_range::switch_edge_range): Same.
9877 (gimple_outgoing_range::calc_switch_ranges): Same.
9878 * gimple-range-edge.h: Same.
9879 * gimple-range-infer.cc
9880 (infer_range_manager::infer_range_manager): Same.
9881 (infer_range_manager::get_nonzero): Same.
9882 (infer_range_manager::maybe_adjust_range): Same.
9883 (infer_range_manager::add_range): Same.
9884 * gimple-range-infer.h: Rename obstack_vrange_allocator to
9886 * tree-core.h (struct irange_storage_slot): Remove.
9887 (struct tree_ssa_name): Remove irange_info and frange_info. Make
9888 range_info a pointer to vrange_storage.
9889 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
9890 (range_info_alloc): Same.
9891 (range_info_free): Same.
9892 (range_info_get_range): Same.
9893 (range_info_set_range): Same.
9894 (get_nonzero_bits): Same.
9895 * value-query.cc (get_ssa_name_range_info): Same.
9896 * value-range-storage.cc (class vrange_internal_alloc): New.
9897 (class vrange_obstack_alloc): New.
9898 (class vrange_ggc_alloc): New.
9899 (vrange_allocator::vrange_allocator): New.
9900 (vrange_allocator::~vrange_allocator): New.
9901 (vrange_storage::alloc_slot): New.
9902 (vrange_allocator::alloc): New.
9903 (vrange_allocator::free): New.
9904 (vrange_allocator::clone): New.
9905 (vrange_allocator::clone_varying): New.
9906 (vrange_allocator::clone_undefined): New.
9907 (vrange_storage::alloc): New.
9908 (vrange_storage::set_vrange): Remove slot argument.
9909 (vrange_storage::get_vrange): Same.
9910 (vrange_storage::fits_p): Same.
9911 (vrange_storage::equal_p): New.
9912 (irange_storage::write_lengths_address): New.
9913 (irange_storage::lengths_address): New.
9914 (irange_storage_slot::alloc_slot): Remove.
9915 (irange_storage::alloc): New.
9916 (irange_storage_slot::irange_storage_slot): Remove.
9917 (irange_storage::irange_storage): New.
9918 (write_wide_int): New.
9919 (irange_storage_slot::set_irange): Remove.
9920 (irange_storage::set_irange): New.
9921 (read_wide_int): New.
9922 (irange_storage_slot::get_irange): Remove.
9923 (irange_storage::get_irange): New.
9924 (irange_storage_slot::size): Remove.
9925 (irange_storage::equal_p): New.
9926 (irange_storage_slot::num_wide_ints_needed): Remove.
9927 (irange_storage::size): New.
9928 (irange_storage_slot::fits_p): Remove.
9929 (irange_storage::fits_p): New.
9930 (irange_storage_slot::dump): Remove.
9931 (irange_storage::dump): New.
9932 (frange_storage_slot::alloc_slot): Remove.
9933 (frange_storage::alloc): New.
9934 (frange_storage_slot::set_frange): Remove.
9935 (frange_storage::set_frange): New.
9936 (frange_storage_slot::get_frange): Remove.
9937 (frange_storage::get_frange): New.
9938 (frange_storage_slot::fits_p): Remove.
9939 (frange_storage::equal_p): New.
9940 (frange_storage::fits_p): New.
9941 (ggc_vrange_allocator): New.
9942 (ggc_alloc_vrange_storage): New.
9943 * value-range-storage.h (class vrange_storage): Rewrite.
9944 (class irange_storage): Rewrite.
9945 (class frange_storage): Rewrite.
9946 (class obstack_vrange_allocator): Remove.
9947 (class ggc_vrange_allocator): Remove.
9948 (vrange_allocator::alloc_vrange): Remove.
9949 (vrange_allocator::alloc_irange): Remove.
9950 (vrange_allocator::alloc_frange): Remove.
9951 (ggc_alloc_vrange_storage): New.
9952 * value-range.h (class irange): Rename vrange_allocator to
9954 (class frange): Same.
9956 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
9958 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
9959 inc to avoid clobbering the carry flag.
9961 2023-04-30 Andrew Pinski <apinski@marvell.com>
9963 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
9964 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
9966 2023-04-30 Andrew Pinski <apinski@marvell.com>
9968 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
9969 Allow some builtin/internal function calls which
9970 are known not to trap/throw.
9971 (phiopt_worker::match_simplify_replacement):
9972 Use name instead of getting the lhs again.
9974 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
9976 * configure: Regenerate.
9977 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
9979 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
9981 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
9982 emit_insn_if_valid_for_reload.
9983 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
9984 to be recognized, also try emitting a parallel that clobbers
9985 TARGET_FLAGS_REGNUM, as applicable.
9987 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
9989 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
9991 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
9992 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
9994 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
9996 * config/stormy16/stormy16.md (any_lshift): New code iterator.
9997 (any_or_plus): Likewise.
9998 (any_rotate): Likewise.
9999 (*<any_lshift>_and_internal): New define_insn_and_split to
10000 recognize a logical shift followed by an AND, and split it
10001 again after reload.
10002 (*swpn): New define_insn matching xstormy16's swpn.
10003 (*swpn_zext): New define_insn recognizing swpn followed by
10004 zero_extendqihi2, i.e. with the high byte set to zero.
10005 (*swpn_sext): Likewise, for swpn followed by cbw.
10006 (*swpn_sext_2): Likewise, for an alternate RTL form.
10007 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
10008 sequence is split in the correct place to recognize the *swpn_zext
10009 followed by any_or_plus (ior, xor or plus) instruction.
10011 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
10014 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
10015 (lm32-*-uclinux*): Likewise.
10017 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
10019 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
10020 for riscv_use_save_libcall.
10021 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
10022 (riscv_compute_frame_info): restructure to decouple stack allocation
10023 for rv32e w/o save-restore.
10025 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
10027 * doc/install.texi: Fix documentation typo
10029 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
10031 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
10032 (u): Add div/udiv cases.
10033 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
10034 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
10036 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
10037 (thead_c906_tune_info): Likewise.
10038 (optimize_size_tune_info): Likewise.
10039 (riscv_use_divmod_expander): New function.
10040 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
10042 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
10044 * config/riscv/bitmanip.md: Added clmulr instruction.
10045 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
10046 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
10048 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
10049 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
10050 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
10051 functions to riscv-cmo.def.
10052 * config/riscv/generic.md: Add clmul to list of instructions
10053 using the generic_imul reservation.
10055 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
10057 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
10059 2023-04-28 Andrew Pinski <apinski@marvell.com>
10061 PR tree-optimization/100958
10062 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
10063 (pass_phiopt::execute): Don't call two_value_replacement.
10064 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
10065 handle what two_value_replacement did.
10067 2023-04-28 Andrew Pinski <apinski@marvell.com>
10069 * match.pd: Add patterns for
10070 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
10072 2023-04-28 Andrew Pinski <apinski@marvell.com>
10074 * match.pd: Factor out the deciding the min/max from
10075 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
10077 * fold-const.cc (minmax_from_comparison): this new function.
10078 * fold-const.h (minmax_from_comparison): New prototype.
10080 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
10082 PR rtl-optimization/109476
10083 * lower-subreg.cc: Include explow.h for force_reg.
10084 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
10085 If decomposing a suitable LSHIFTRT and we're not splitting
10086 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
10087 instead of setting a high part SUBREG to zero, which helps combine.
10088 (decompose_multiword_subregs): Update call to resolve_shift_zext.
10090 2023-04-28 Richard Biener <rguenther@suse.de>
10092 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
10094 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
10095 gather-scatter info and cost emulated scatters accordingly.
10096 (get_load_store_type): Support emulated scatters.
10097 (vectorizable_store): Likewise. Emulate them by extracting
10098 scalar offsets and data, doing scalar stores.
10100 2023-04-28 Richard Biener <rguenther@suse.de>
10102 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
10103 Tame down element extracts and scalar loads for gather/scatter
10104 similar to elementwise strided accesses.
10106 2023-04-28 Pan Li <pan2.li@intel.com>
10107 kito-cheng <kito.cheng@sifive.com>
10109 * config/riscv/vector.md: Add new define split to perform
10110 the simplification.
10112 2023-04-28 Richard Biener <rguenther@suse.de>
10115 * ipa-param-manipulation.cc
10116 (ipa_param_body_adjustments::modify_expression): Allow
10117 conversion of a register to a non-register type. Elide
10118 conversions inside BIT_FIELD_REFs.
10120 2023-04-28 Richard Biener <rguenther@suse.de>
10122 PR tree-optimization/109644
10123 * tree-cfg.cc (verify_types_in_gimple_reference): Check
10124 register constraints on the outermost VIEW_CONVERT_EXPR
10125 only. Do not allow register or invariant bases on
10126 multi-level or possibly variable index handled components.
10128 2023-04-28 Richard Biener <rguenther@suse.de>
10130 * gimplify.cc (gimplify_compound_lval): When there's a
10131 non-register type produced by one of the handled component
10132 operations make sure we get a non-register base.
10134 2023-04-28 Richard Biener <rguenther@suse.de>
10136 PR tree-optimization/108752
10137 * tree-vect-generic.cc (build_replicated_const): Rename
10138 to build_replicated_int_cst and move to tree.{h,cc}.
10139 (do_plus_minus): Adjust.
10140 (do_negate): Likewise.
10141 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
10142 arithmetic vector operations in lowered form.
10143 * tree.h (build_replicated_int_cst): Declare.
10144 * tree.cc (build_replicated_int_cst): Moved from
10145 tree-vect-generic.cc build_replicated_const.
10147 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10150 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
10151 (aarch64_rbit<mode><vczle><vczbe>): ... This.
10152 (neg<mode>2): Rename to...
10153 (neg<mode>2<vczle><vczbe>): ... This.
10154 (abs<mode>2): Rename to...
10155 (abs<mode>2<vczle><vczbe>): ... This.
10156 (aarch64_abs<mode>): Rename to...
10157 (aarch64_abs<mode><vczle><vczbe>): ... This.
10158 (one_cmpl<mode>2): Rename to...
10159 (one_cmpl<mode>2<vczle><vczbe>): ... This.
10160 (clrsb<mode>2): Rename to...
10161 (clrsb<mode>2<vczle><vczbe>): ... This.
10162 (clz<mode>2): Rename to...
10163 (clz<mode>2<vczle><vczbe>): ... This.
10164 (popcount<mode>2): Rename to...
10165 (popcount<mode>2<vczle><vczbe>): ... This.
10167 2023-04-28 Jakub Jelinek <jakub@redhat.com>
10169 * gimple-range-op.cc (class cfn_sqrt): New type.
10170 (op_cfn_sqrt): New variable.
10171 (gimple_range_op_handler::maybe_builtin_call): Handle
10172 CASE_CFN_SQRT{,_FN}.
10174 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
10175 Jakub Jelinek <jakub@redhat.com>
10177 * value-range.h (frange_nextafter): Declare.
10178 * gimple-range-op.cc (class cfn_sincos): New.
10179 (op_cfn_sin, op_cfn_cos): New variables.
10180 (gimple_range_op_handler::maybe_builtin_call): Handle
10181 CASE_CFN_{SIN,COS}{,_FN}.
10183 2023-04-28 Jakub Jelinek <jakub@redhat.com>
10185 * target.def (libm_function_max_error): New target hook.
10186 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
10187 * doc/tm.texi: Regenerated.
10188 * targhooks.h (default_libm_function_max_error,
10189 glibc_linux_libm_function_max_error): Declare.
10190 * targhooks.cc: Include case-cfn-macros.h.
10191 (default_libm_function_max_error,
10192 glibc_linux_libm_function_max_error): New functions.
10193 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10194 * config/linux-protos.h (linux_libm_function_max_error): Declare.
10195 * config/linux.cc: Include target.h and targhooks.h.
10196 (linux_libm_function_max_error): New function.
10197 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
10198 (arc_libm_function_max_error): New function.
10199 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10200 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
10201 (ix86_libm_function_max_error): New function.
10202 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10203 * config/rs6000/rs6000-protos.h
10204 (rs6000_linux_libm_function_max_error): Declare.
10205 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
10206 and case-cfn-macros.h.
10207 (rs6000_linux_libm_function_max_error): New function.
10208 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10209 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10210 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
10211 (or1k_libm_function_max_error): New function.
10212 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
10214 2023-04-28 Alexandre Oliva <oliva@adacore.com>
10216 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
10217 Move detach value calls...
10218 (pass_harden_conditional_branches::execute): ... here.
10219 (pass_harden_compares::execute): Detach values before
10222 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
10224 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
10225 (cml<addsub_as><mode>4): Likewise.
10226 (vec_addsub<mode>3): Likewise.
10227 (cadd<rot><mode>3): Likewise.
10228 (vec_fmaddsub<mode>4): Likewise.
10229 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
10231 2023-04-27 Andrew Pinski <apinski@marvell.com>
10233 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
10234 up to 2 min/max expressions in the sequence/match code.
10236 2023-04-27 Andrew Pinski <apinski@marvell.com>
10238 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
10240 * tree-eh.cc (operation_could_trap_helper_p): Treate
10241 MIN_EXPR/MAX_EXPR similar as other comparisons.
10243 2023-04-27 Andrew Pinski <apinski@marvell.com>
10245 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
10247 (cond_if_else_store_replacement): Likewise.
10248 (get_non_trapping): Likewise.
10249 (store_elim_worker): Move into ...
10250 (pass_cselim::execute): This.
10252 2023-04-27 Andrew Pinski <apinski@marvell.com>
10254 * tree-ssa-phiopt.cc (two_value_replacement): Remove
10256 (match_simplify_replacement): Likewise.
10257 (factor_out_conditional_conversion): Likewise.
10258 (value_replacement): Likewise.
10259 (minmax_replacement): Likewise.
10260 (spaceship_replacement): Likewise.
10261 (cond_removal_in_builtin_zero_pattern): Likewise.
10262 (hoist_adjacent_loads): Likewise.
10263 (tree_ssa_phiopt_worker): Move into ...
10264 (pass_phiopt::execute): this.
10266 2023-04-27 Andrew Pinski <apinski@marvell.com>
10268 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
10269 do_store_elim argument and split that part out to ...
10270 (store_elim_worker): This new function.
10271 (pass_cselim::execute): Call store_elim_worker.
10272 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
10274 2023-04-27 Jan Hubicka <jh@suse.cz>
10276 * cfgloopmanip.h (unloop_loops): Export.
10277 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
10278 that no longer loop.
10279 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
10280 vectors of loops to unloop.
10281 (canonicalize_induction_variables): Free vectors here.
10282 (tree_unroll_loops_completely): Free vectors here.
10284 2023-04-27 Richard Biener <rguenther@suse.de>
10286 PR tree-optimization/109170
10287 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
10288 Handle __builtin_expect and similar via cfn_pass_through_arg1
10289 and inspecting the calls fnspec.
10290 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
10291 and BUILT_IN_EXPECT_WITH_PROBABILITY.
10293 2023-04-27 Alexandre Oliva <oliva@adacore.com>
10295 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
10297 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
10299 PR tree-optimization/109639
10300 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
10301 (propagate_vr_across_jump_function): Same.
10302 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
10303 * ipa-prop.h (ipa_range_set_and_normalize): New.
10304 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
10306 2023-04-27 Richard Biener <rguenther@suse.de>
10308 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
10309 create a CTOR operand in the result when simplifying GIMPLE.
10311 2023-04-27 Richard Biener <rguenther@suse.de>
10313 * gimplify.cc (gimplify_compound_lval): When the base
10314 gimplified to a register make sure to split up chains
10317 2023-04-27 Richard Biener <rguenther@suse.de>
10320 * ipa-param-manipulation.h
10321 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
10323 * ipa-param-manipulation.cc
10324 (ipa_param_body_adjustments::modify_expression): Likewise.
10325 When we need a conversion and the replacement is a register
10326 split the conversion out.
10327 (ipa_param_body_adjustments::modify_assignment): Pass
10328 extra_stmts to RHS modify_expression.
10330 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
10332 * doc/extend.texi (Zero Length): Describe example.
10334 2023-04-27 Richard Biener <rguenther@suse.de>
10336 PR tree-optimization/109594
10337 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
10338 what we rewrite to a register based on the above.
10340 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
10342 * config/riscv/riscv.cc: Fix whitespace.
10343 * config/riscv/sync.md: Fix whitespace.
10345 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
10347 PR tree-optimization/108697
10348 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
10349 not clear the vector on an out of range query.
10350 (ssa_cache::dump): Use dump_range_query instead of get_range.
10351 (ssa_cache::dump_range_query): New.
10352 (ssa_lazy_cache::dump_range_query): New.
10353 (ssa_lazy_cache::set_range): New.
10354 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
10355 (class ssa_lazy_cache): New.
10356 (ssa_lazy_cache::ssa_lazy_cache): New.
10357 (ssa_lazy_cache::~ssa_lazy_cache): New.
10358 (ssa_lazy_cache::get_range): New.
10359 (ssa_lazy_cache::clear_range): New.
10360 (ssa_lazy_cache::clear): New.
10361 (ssa_lazy_cache::dump): New.
10362 * gimple-range-path.cc (path_range_query::path_range_query): Do
10363 not allocate a ssa_cache object nor has_cache bitmap.
10364 (path_range_query::~path_range_query): Do not free objects.
10365 (path_range_query::clear_cache): Remove.
10366 (path_range_query::get_cache): Adjust.
10367 (path_range_query::set_cache): Remove.
10368 (path_range_query::dump): Don't call through a pointer.
10369 (path_range_query::internal_range_of_expr): Set cache directly.
10370 (path_range_query::reset_path): Clear cache directly.
10371 (path_range_query::ssa_range_in_phi): Fold with globals only.
10372 (path_range_query::compute_ranges_in_phis): Simply set range.
10373 (path_range_query::compute_ranges_in_block): Call cache directly.
10374 * gimple-range-path.h (class path_range_query): Replace bitmap
10375 and cache pointer with lazy cache object.
10376 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
10378 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
10380 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
10381 (ssa_cache::~ssa_cache): Rename.
10382 (ssa_cache::has_range): New.
10383 (ssa_cache::get_range): Rename.
10384 (ssa_cache::set_range): Rename.
10385 (ssa_cache::clear_range): Rename.
10386 (ssa_cache::clear): Rename.
10387 (ssa_cache::dump): Rename and use get_range.
10388 (ranger_cache::get_global_range): Use get_range and set_range.
10389 (ranger_cache::range_of_def): Use get_range.
10390 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
10391 (class ranger_cache): Use ssa_cache.
10392 * gimple-range-path.cc (path_range_query::path_range_query): Use
10394 (path_range_query::get_cache): Use get_range.
10395 (path_range_query::set_cache): Use set_range.
10396 * gimple-range-path.h (class path_range_query): Use ssa_cache.
10397 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
10398 (assume_query::range_of_expr): Use get_range.
10399 (assume_query::assume_query): Use set_range.
10400 (assume_query::calculate_op): Use get_range and set_range.
10401 * gimple-range.h (class assume_query): Use ssa_cache.
10403 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
10405 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
10406 and local to optionally zero memory.
10407 (br_vector::grow): Only zero memory if flag is set.
10408 (class sbr_lazy_vector): New.
10409 (sbr_lazy_vector::sbr_lazy_vector): New.
10410 (sbr_lazy_vector::set_bb_range): New.
10411 (sbr_lazy_vector::get_bb_range): New.
10412 (sbr_lazy_vector::bb_range_p): New.
10413 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
10414 * gimple-range-gori.cc (gori_map::calculate_gori): Use
10415 param_vrp_switch_limit.
10416 (gori_compute::gori_compute): Use param_vrp_switch_limit.
10417 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
10418 (vrp_switch_limit): Rename from evrp_switch_limit.
10419 (vrp_vector_threshold): New.
10421 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
10423 * value-relation.cc (dom_oracle::query_relation): Check early for lack
10425 * value-relation.h (equiv_oracle::has_equiv_p): New.
10427 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
10429 PR tree-optimization/109417
10430 * gimple-range-gori.cc (range_def_chain::register_dependency):
10431 Save the ssa version number, not the pointer.
10432 (gori_compute::may_recompute_p): No need to check if a dependency
10433 is in the free list.
10434 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
10435 fields to be unsigned int instead of trees.
10436 (ange_def_chain::depend1): Adjust.
10437 (ange_def_chain::depend2): Adjust.
10438 * gimple-range.h: Include "ssa.h" to inline ssa_name().
10440 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
10442 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
10443 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
10444 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
10446 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
10449 * config/riscv/riscv-protos.h: Add helper function stubs.
10450 * config/riscv/riscv.cc: Add helper functions for subword masking.
10451 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
10452 -mno-inline-atomics.
10453 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
10454 fetch_and_nand, CAS, and exchange ops.
10455 * doc/invoke.texi: Add blurb regarding new command-line flags
10456 -minline-atomics and -mno-inline-atomics.
10458 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10460 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
10461 Reimplement using standard RTL codes instead of unspec.
10462 (aarch64_rshrn2<mode>_insn_be): Likewise.
10463 (aarch64_rshrn2<mode>): Adjust for the above.
10464 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
10466 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10468 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
10469 with standard RTL codes instead of an UNSPEC.
10470 (aarch64_rshrn<mode>_insn_be): Likewise.
10471 (aarch64_rshrn<mode>): Adjust for the above.
10472 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
10474 2023-04-26 Pan Li <pan2.li@intel.com>
10475 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10477 * config/riscv/riscv.cc (riscv_classify_address): Allow
10478 const0_rtx for the RVV load/store.
10480 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10482 * range-op.cc (range_op_cast_tests): Remove legacy support.
10483 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
10484 * value-range.cc (irange::operator=): Same.
10485 (get_legacy_range): Same.
10486 (irange::copy_legacy_to_multi_range): Delete.
10487 (irange::copy_to_legacy): Delete.
10488 (irange::irange_set_anti_range): Delete.
10489 (irange::set): Remove legacy support.
10490 (irange::verify_range): Same.
10491 (irange::legacy_lower_bound): Delete.
10492 (irange::legacy_upper_bound): Delete.
10493 (irange::legacy_equal_p): Delete.
10494 (irange::operator==): Remove legacy support.
10495 (irange::singleton_p): Same.
10496 (irange::value_inside_range): Same.
10497 (irange::contains_p): Same.
10498 (intersect_ranges): Delete.
10499 (irange::legacy_intersect): Delete.
10500 (union_ranges): Delete.
10501 (irange::legacy_union): Delete.
10502 (irange::legacy_verbose_union_): Delete.
10503 (irange::legacy_verbose_intersect): Delete.
10504 (irange::irange_union): Remove legacy support.
10505 (irange::irange_intersect): Same.
10506 (irange::intersect): Same.
10507 (irange::invert): Same.
10508 (ranges_from_anti_range): Delete.
10509 (gt_pch_nx): Adjust for legacy removal.
10511 (range_tests_legacy): Delete.
10512 (range_tests_misc): Adjust for legacy removal.
10513 (range_tests): Same.
10514 * value-range.h (class irange): Same.
10515 (irange::legacy_mode_p): Delete.
10516 (ranges_from_anti_range): Delete.
10517 (irange::nonzero_p): Adjust for legacy removal.
10518 (irange::lower_bound): Same.
10519 (irange::upper_bound): Same.
10520 (irange::union_): Same.
10521 (irange::intersect): Same.
10522 (irange::set_nonzero): Same.
10523 (irange::set_zero): Same.
10524 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
10526 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10528 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
10529 of range_has_numeric_bounds_p with irange API.
10530 (range_has_numeric_bounds_p): Delete.
10531 * value-range.h (range_has_numeric_bounds_p): Delete.
10533 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10535 * tree-data-ref.cc (compute_distributive_range): Replace uses of
10536 range_int_cst_p with irange API.
10537 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
10538 * tree-vrp.h (range_int_cst_p): Delete.
10539 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
10540 range_int_cst_p with irange API.
10541 (vr_set_zero_nonzero_bits): Same.
10542 (range_fits_type_p): Same.
10543 (simplify_using_ranges::simplify_casted_cond): Same.
10544 * tree-vrp.cc (range_int_cst_p): Remove.
10546 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10548 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
10550 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10552 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
10553 API uses to new API.
10554 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
10555 * internal-fn.cc (get_min_precision): Same.
10557 * tree-affine.cc (expr_to_aff_combination): Same.
10558 * tree-data-ref.cc (dr_step_indicator): Same.
10559 * tree-dfa.cc (get_ref_base_and_extent): Same.
10560 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
10561 * tree-ssa-phiopt.cc (two_value_replacement): Same.
10562 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
10563 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
10564 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
10565 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
10566 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
10567 * tree.cc (get_range_pos_neg): Same.
10569 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10571 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
10572 vrange::dump instead of ad-hoc dumper.
10573 * tree-ssa-strlen.cc (dump_strlen_info): Same.
10574 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
10577 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10579 * range-op.cc (operator_cast::op1_range): Use
10580 create_possibly_reversed_range.
10581 (operator_bitwise_and::simple_op1_range_solver): Same.
10582 * value-range.cc (swap_out_of_order_endpoints): Delete.
10583 (irange::set): Remove call to swap_out_of_order_endpoints.
10585 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10587 * builtins.cc (determine_block_size): Convert use of legacy API to
10589 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
10590 (array_bounds_checker::check_array_ref): Same.
10591 * gimple-ssa-warn-restrict.cc
10592 (builtin_memref::extend_offset_range): Same.
10593 * ipa-cp.cc (ipcp_store_vr_results): Same.
10594 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
10595 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
10596 (ipa_write_jump_function): Same.
10597 * pointer-query.cc (get_size_range): Same.
10598 * tree-data-ref.cc (split_constant_offset): Same.
10599 * tree-ssa-strlen.cc (get_range): Same.
10600 (maybe_diag_stxncpy_trunc): Same.
10601 (strlen_pass::get_len_or_size): Same.
10602 (strlen_pass::count_nonzero_bytes_addr): Same.
10603 * tree-vect-patterns.cc (vect_get_range_info): Same.
10604 * value-range.cc (irange::maybe_anti_range): Remove.
10605 (get_legacy_range): New.
10606 (irange::copy_to_legacy): Use get_legacy_range.
10607 (ranges_from_anti_range): Same.
10608 * value-range.h (class irange): Remove maybe_anti_range.
10609 (get_legacy_range): New.
10610 * vr-values.cc (check_for_binary_op_overflow): Convert use of
10611 legacy API to get_legacy_range.
10612 (compare_ranges): Same.
10613 (compare_range_with_value): Same.
10614 (bounds_of_var_in_loop): Same.
10615 (find_case_label_ranges): Same.
10616 (simplify_using_ranges::simplify_switch_using_ranges): Same.
10618 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10620 * value-range-pretty-print.cc (vrange_printer::visit): Remove
10622 * value-range.cc (irange::constant_p): Remove.
10623 (irange::get_nonzero_bits_from_range): Remove constant_p use.
10624 * value-range.h (class irange): Remove constant_p.
10625 (irange::num_pairs): Remove constant_p use.
10627 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10629 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
10631 (irange::set): Same.
10632 (irange::legacy_lower_bound): Same.
10633 (irange::legacy_upper_bound): Same.
10634 (irange::contains_p): Same.
10635 (range_tests_legacy): Same.
10636 (irange::normalize_addresses): Remove.
10637 (irange::normalize_symbolics): Remove.
10638 (irange::symbolic_p): Remove.
10639 * value-range.h (class irange): Remove symbolic_p,
10640 normalize_symbolics, and normalize_addresses.
10641 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
10642 Remove symbolics support.
10644 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10646 * value-range.cc (irange::may_contain_p): Remove.
10647 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
10648 usage with contains_p.
10649 * vr-values.cc (compare_range_with_value): Same.
10651 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10653 * tree-vrp.cc (supported_types_p): Remove.
10654 (defined_ranges_p): Remove.
10655 (range_fold_binary_expr): Remove.
10656 (range_fold_unary_expr): Remove.
10657 * tree-vrp.h (range_fold_unary_expr): Remove.
10658 (range_fold_binary_expr): Remove.
10660 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10662 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
10663 (ipa_value_range_from_jfunc): Same.
10664 (propagate_vr_across_jump_function): Same.
10665 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
10666 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
10667 * vr-values.cc (bounds_of_var_in_loop): Same.
10669 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10671 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
10672 Add irange argument.
10673 (check_out_of_bounds_and_warn): Remove check for vr.
10674 (array_bounds_checker::check_array_ref): Remove pointer qualifier
10675 for vr and adjust accordingly.
10676 * gimple-array-bounds.h (get_value_range): Add irange argument.
10677 * value-query.cc (class equiv_allocator): Delete.
10678 (range_query::get_value_range): Delete.
10679 (range_query::range_query): Remove allocator access.
10680 (range_query::~range_query): Same.
10681 * value-query.h (get_value_range): Delete.
10683 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
10684 call to get_value_range.
10685 (check_for_binary_op_overflow): Same.
10686 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
10687 (simplify_using_ranges::simplify_abs_using_ranges): Same.
10688 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
10689 (simplify_using_ranges::simplify_casted_cond): Same.
10690 (simplify_using_ranges::simplify_switch_using_ranges): Same.
10691 (simplify_using_ranges::two_valued_val_range_p): Same.
10693 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10696 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
10698 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
10699 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
10700 (simplify_using_ranges::legacy_fold_cond): ...this.
10701 (simplify_using_ranges::fold_cond): Rename
10702 vrp_evaluate_conditional_warnv_with_ops to
10703 legacy_fold_cond_overflow.
10704 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
10705 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
10706 legacy_fold_cond_overflow respectively.
10708 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
10710 * vr-values.cc (get_vr_for_comparison): Remove.
10711 (compare_name_with_value): Same.
10712 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
10713 compare_name_with_value.
10714 * vr-values.h: Remove compare_name_with_value.
10715 Remove get_vr_for_comparison.
10717 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
10719 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
10720 (bswapsi2): New define_insn.
10721 (swaphi): New define_insn to exchange two registers (swpw).
10722 (define_peephole2): Recognize exchange of registers as swaphi.
10724 2023-04-26 Richard Biener <rguenther@suse.de>
10726 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
10728 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
10729 * predict.cc (apply_return_prediction): Likewise.
10730 * sese.cc (set_ifsese_condition): Likewise. Simplify.
10731 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
10732 (make_edges_bb): Likewise.
10733 (make_cond_expr_edges): Likewise.
10734 (end_recording_case_labels): Likewise.
10735 (make_gimple_asm_edges): Likewise.
10736 (cleanup_dead_labels): Likewise.
10737 (group_case_labels): Likewise.
10738 (gimple_can_merge_blocks_p): Likewise.
10739 (gimple_merge_blocks): Likewise.
10740 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
10741 (gimple_duplicate_sese_tail): Avoid last_stmt.
10742 (find_loop_dist_alias): Likewise.
10743 (gimple_block_ends_with_condjump_p): Likewise.
10744 (gimple_purge_dead_eh_edges): Likewise.
10745 (gimple_purge_dead_abnormal_call_edges): Likewise.
10746 (pass_warn_function_return::execute): Likewise.
10747 (execute_fixup_cfg): Likewise.
10748 * tree-eh.cc (redirect_eh_edge_1): Likewise.
10749 (pass_lower_resx::execute): Likewise.
10750 (pass_lower_eh_dispatch::execute): Likewise.
10751 (cleanup_empty_eh): Likewise.
10752 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
10753 (predicate_bbs): Likewise.
10754 (ifcvt_split_critical_edges): Likewise.
10755 * tree-loop-distribution.cc (create_edge_for_control_dependence):
10757 (loop_distribution::transform_reduction_loop): Likewise.
10758 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
10759 (try_transform_to_exit_first_loop_alt): Likewise.
10760 (transform_to_exit_first_loop): Likewise.
10761 (create_parallel_loop): Likewise.
10762 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
10763 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
10764 (eliminate_unnecessary_stmts): Likewise.
10766 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
10768 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
10769 (pass_tree_ifcombine::execute): Likewise.
10770 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
10771 (should_duplicate_loop_header_p): Likewise.
10772 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
10773 (tree_estimate_loop_size): Likewise.
10774 (try_unroll_loop_completely): Likewise.
10775 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
10776 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
10777 (canonicalize_loop_ivs): Likewise.
10778 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
10779 (bound_difference): Likewise.
10780 (number_of_iterations_popcount): Likewise.
10781 (number_of_iterations_cltz): Likewise.
10782 (number_of_iterations_cltz_complement): Likewise.
10783 (simplify_using_initial_conditions): Likewise.
10784 (number_of_iterations_exit_assumptions): Likewise.
10785 (loop_niter_by_eval): Likewise.
10786 (estimate_numbers_of_iterations): Likewise.
10788 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10790 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
10792 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
10795 * config/rs6000/rs6000-builtins.def
10796 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
10797 __builtin_vsx_scalar_cmp_exp_qp_lt,
10798 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
10801 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
10804 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
10805 easy_vector_constant with const_vector_each_byte_same, add
10806 handlings in preparation for !easy_vector_constant, and update
10807 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
10808 * config/rs6000/predicates.md (const_vector_each_byte_same): New
10811 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10813 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
10814 (*pred_ltge<mode>_merge_tie_mask): Ditto.
10815 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
10816 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
10817 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
10818 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
10819 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
10821 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10823 * config/riscv/vector.md: Fix redundant vmv1r.v.
10825 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10827 * config/riscv/vector.md: Fix RA constraint.
10829 2023-04-26 Pan Li <pan2.li@intel.com>
10832 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
10833 check for vn_reference equal.
10835 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10837 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
10838 auto-vectorization preference.
10839 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
10840 auto-vectorization.
10841 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
10843 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
10845 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
10846 and bclridisi_nottwobits patterns.
10847 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
10848 predicate to avoid splitting arith constants.
10849 (const_nottwobits_not_arith_operand): New predicate.
10851 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
10853 * recog.cc (peep2_attempt, peep2_update_life): Correct
10854 head-comment description of parameter match_len.
10856 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
10858 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
10859 riscv_split_symbol() drop in_splitter arg.
10860 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
10861 riscv_split_symbol() drop in_splitter arg.
10862 riscv_force_temporary() drop in_splitter arg.
10863 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
10864 riscv_split_symbol() drop in_splitter arg.
10866 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
10868 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
10869 superfluous debug temporaries for single GIMPLE assignments.
10871 2023-04-25 Richard Biener <rguenther@suse.de>
10873 PR tree-optimization/109609
10874 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
10876 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
10877 the size given by arg_max_access_size_given_by_arg_p as
10878 maximum, not exact, size.
10880 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10883 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
10884 (orn<mode>3<vczle><vczbe>): ... This.
10885 (bic<mode>3): Rename to...
10886 (bic<mode>3<vczle><vczbe>): ... This.
10887 (<su><maxmin><mode>3): Rename to...
10888 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
10890 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10892 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
10893 * config/aarch64/iterators.md (VQDIV): New mode iterator.
10894 (vnx2di): New mode attribute.
10896 2023-04-25 Richard Biener <rguenther@suse.de>
10898 PR rtl-optimization/109585
10899 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
10901 2023-04-25 Jakub Jelinek <jakub@redhat.com>
10904 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
10905 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
10906 is larger than signed int maximum.
10908 2023-04-25 Martin Liska <mliska@suse.cz>
10910 * doc/gcov.texi: Document the new "calls" field and document
10911 the API bump. Mention also "block_ids" for lines.
10912 * gcov.cc (output_intermediate_json_line): Output info about
10913 calls and extend branches as well.
10914 (generate_results): Bump version to 2.
10915 (output_line_details): Use block ID instead of a non-sensual
10918 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
10920 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
10921 length attribute for the first (memory operand) alternative.
10923 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
10925 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
10926 * config/aarch64/constraints.md: Make "Umn" relaxed memory
10928 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
10930 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
10932 * value-range.cc (frange::set): Adjust constructor.
10933 * value-range.h (nan_state::nan_state): Replace default
10934 constructor with one taking an argument.
10936 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
10938 * ipa-cp.cc (ipa_range_contains_p): New.
10939 (decide_whether_version_node): Use it.
10941 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10943 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
10944 simplify two successive VEC_PERM_EXPRs with same VLA mask,
10945 where mask chooses elements in reverse order.
10947 2023-04-24 Andrew Pinski <apinski@marvell.com>
10949 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
10950 and support diamond shaped basic block form.
10951 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
10953 2023-04-24 Andrew Pinski <apinski@marvell.com>
10955 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
10956 Instead of calling last_and_only_stmt, look for the last statement
10959 2023-04-24 Andrew Pinski <apinski@marvell.com>
10961 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
10963 (match_simplify_replacement): Call
10964 empty_bb_or_one_feeding_into_p instead of doing it inline.
10966 2023-04-24 Andrew Pinski <apinski@marvell.com>
10968 PR tree-optimization/68894
10969 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
10970 continue for the do_hoist_loads diamond case.
10972 2023-04-24 Andrew Pinski <apinski@marvell.com>
10974 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
10975 code for better code readability.
10977 2023-04-24 Andrew Pinski <apinski@marvell.com>
10979 PR tree-optimization/109604
10980 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
10981 diamond form check from ...
10982 (minmax_replacement): Here.
10984 2023-04-24 Patrick Palka <ppalka@redhat.com>
10986 * tree.cc (strip_array_types): Don't define here.
10987 (is_typedef_decl): Don't define here.
10988 (typedef_variant_p): Don't define here.
10989 * tree.h (strip_array_types): Define here.
10990 (is_typedef_decl): Define here.
10991 (typedef_variant_p): Define here.
10993 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
10995 * doc/generic.texi (OpenMP): Add != to allowed
10996 conditions and state that vars can be unsigned.
10997 * tree.def (OMP_FOR): Likewise.
10999 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11001 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
11003 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11005 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
11006 Remove explicit Solaris 11 references.
11008 (Options specification, --with-gnu-as): as and gas always differ
11010 Remove /usr/ccs/bin reference.
11011 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
11012 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
11013 (*-*-solaris2*): ... here.
11014 Update bundled GCC versions.
11015 Don't refer to pre-built binaries.
11016 Remove /bin/sh warning.
11017 Update assembler, linker recommendations.
11018 Document GNAT bootstrap compiler.
11019 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
11020 (sparc64-*-solaris2*): Move content...
11021 (sparcv9-*-solaris2*): ...here.
11022 Add GDC for 64-bit bootstrap compilers.
11024 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11027 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
11029 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
11032 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11034 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
11035 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
11036 (aarch64_<su>abal2<mode>): New define_expand.
11037 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
11038 (aarch64_rtx_costs): Handle ABD rtxes.
11039 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
11040 * config/aarch64/iterators.md (ABAL2): Delete.
11041 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
11043 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11045 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
11046 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
11047 (<sur>sadv16qi): Rename to...
11048 (<su>sadv16qi): ... This. Adjust for the above.
11049 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
11050 (<su>sad<vsi2qi>): ... This. Adjust for the above.
11051 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
11052 * config/aarch64/iterators.md (ABAL): Delete.
11053 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
11055 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11057 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
11058 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
11059 (aarch64_<su>abdl2<mode>): New define_expand.
11060 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
11061 * config/aarch64/iterators.md (ABDL2): Delete.
11062 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
11064 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11066 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
11067 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
11069 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
11070 * config/aarch64/iterators.md (ABDL): Delete.
11071 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
11073 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11075 * config/aarch64/aarch64-simd.md
11076 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
11078 2023-04-24 Richard Biener <rguenther@suse.de>
11080 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
11082 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
11084 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
11085 (set_switch_stmt_execution_predicate): Likewise.
11086 (phi_result_unknown_predicate): Likewise.
11087 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
11088 (ipa_analyze_indirect_call_uses): Likewise.
11089 * predict.cc (predict_iv_comparison): Likewise.
11090 (predict_extra_loop_exits): Likewise.
11091 (predict_loops): Likewise.
11092 (tree_predict_by_opcode): Likewise.
11093 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
11095 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
11096 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
11097 (replace_phi_edge_with_variable): Likewise.
11098 (two_value_replacement): Likewise.
11099 (value_replacement): Likewise.
11100 (minmax_replacement): Likewise.
11101 (spaceship_replacement): Likewise.
11102 (cond_removal_in_builtin_zero_pattern): Likewise.
11103 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
11104 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
11105 (vn_phi_lookup): Likewise.
11106 (vn_phi_insert): Likewise.
11107 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
11108 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
11110 (back_threader_profitability::possibly_profitable_path_p):
11112 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
11114 * tree-switch-conversion.cc (pass_convert_switch::execute):
11116 (pass_lower_switch<O0>::execute): Likewise.
11117 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
11118 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
11119 * tree-vect-slp.cc (vect_slp_function): Likewise.
11120 * tree-vect-stmts.cc (cfun_returns): Likewise.
11121 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
11122 (vect_loop_dist_alias_call): Likewise.
11124 2023-04-24 Richard Biener <rguenther@suse.de>
11126 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
11128 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11130 * config/riscv/riscv-vsetvl.cc
11131 (vector_infos_manager::all_avail_in_compatible_p): New function.
11132 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
11133 * config/riscv/riscv-vsetvl.h: New function.
11135 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11137 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
11138 comment for cleanup_insns.
11140 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11142 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
11143 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
11144 with the fault first load property.
11146 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11148 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
11149 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
11151 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11154 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
11155 (aarch64_addp<mode><vczle><vczbe>): ... This.
11157 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
11159 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
11160 provide reasonable values for common arithmetic operations and
11161 immediate operands (in several machine modes).
11163 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
11165 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
11166 format specifier to output high_part register name of SImode reg.
11167 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
11168 (zero_extendqihi2): Fix lengths, consistent formatting and add
11169 "and Rx,#255" alternative, for documentation purposes.
11170 (zero_extendhisi2): New define_insn.
11172 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
11174 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
11175 SImode shifts by two by performing a single bit SImode shift twice.
11177 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
11179 PR tree-optimization/109593
11180 * value-range.cc (frange::operator==): Handle NANs.
11182 2023-04-23 liuhongt <hongtao.liu@intel.com>
11184 PR rtl-optimization/108707
11185 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
11186 GENERAL_REGS when preferred reg_class is not known.
11188 2023-04-22 Andrew Pinski <apinski@marvell.com>
11190 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
11191 Change the code around slightly to move diamond
11192 handling for do_store_elim/do_hoist_loads out of
11195 2023-04-22 Andrew Pinski <apinski@marvell.com>
11197 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
11198 Remove check on empty_block_p.
11200 2023-04-22 Jakub Jelinek <jakub@redhat.com>
11202 PR bootstrap/109589
11203 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
11204 * realmpfr.h (class auto_mpfr): Likewise.
11206 2023-04-22 Jakub Jelinek <jakub@redhat.com>
11208 PR tree-optimization/109583
11209 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
11210 if vec_mode is not VECTOR_MODE_P.
11212 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
11213 Ondrej Kubanek <kubanek0ondrej@gmail.com>
11215 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
11216 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
11217 loop profile and bounds after header duplication.
11218 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
11219 Break out from try_peel_loop; fix handling of 0 iterations.
11220 (try_peel_loop): Use adjust_loop_info_after_peeling.
11222 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
11224 PR tree-optimization/109546
11225 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
11226 not fold conditions with ADDR_EXPR early.
11228 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11230 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
11231 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
11233 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
11234 (*aarch64_<optab><mode>3_zero): Define.
11235 (*aarch64_<optab><mode>3_cssc): Likewise.
11236 * config/aarch64/iterators.md (maxminand): New code attribute.
11238 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11241 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
11242 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
11244 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
11245 (aarch64_override_options_internal): Handle the above.
11246 (aarch64_output_load_tp): New function.
11247 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
11248 aarch64_output_load_tp.
11249 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
11250 (mtp=): New option.
11251 * doc/invoke.texi (AArch64 Options): Document -mtp=.
11253 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11256 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
11257 (add_vec_concat_subst_be): Likewise.
11260 (add<mode>3): Rename to...
11261 (add<mode>3<vczle><vczbe>): ... This.
11262 (sub<mode>3): Rename to...
11263 (sub<mode>3<vczle><vczbe>): ... This.
11264 (mul<mode>3): Rename to...
11265 (mul<mode>3<vczle><vczbe>): ... This.
11266 (and<mode>3): Rename to...
11267 (and<mode>3<vczle><vczbe>): ... This.
11268 (ior<mode>3): Rename to...
11269 (ior<mode>3<vczle><vczbe>): ... This.
11270 (xor<mode>3): Rename to...
11271 (xor<mode>3<vczle><vczbe>): ... This.
11272 * config/aarch64/iterators.md (VDZ): Define.
11274 2023-04-21 Patrick Palka <ppalka@redhat.com>
11276 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
11279 2023-04-21 Jan Hubicka <jh@suse.cz>
11281 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
11284 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
11286 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
11287 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
11289 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11291 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
11292 force_reg instead of copy_to_mode_reg.
11293 (aarch64_expand_vector_init): Likewise.
11295 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
11297 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
11298 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
11299 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
11300 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
11301 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
11302 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
11303 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
11304 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
11305 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
11306 * config/i386/predicates.md (index_register_operand):
11307 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
11308 * config/i386/i386.cc (ix86_legitimate_address_p): Use
11309 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
11310 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
11312 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
11313 Ondrej Kubanek <kubanek0ondrej@gmail.com>
11315 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
11318 2023-04-21 Richard Biener <rguenther@suse.de>
11320 * is-a.h (safe_is_a): New.
11322 2023-04-21 Richard Biener <rguenther@suse.de>
11324 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
11325 (gphi_iterator::operator*): Likewise.
11327 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
11328 Michal Jires <michal@jires.eu>
11330 * ipa-inline.cc (class inline_badness): New class.
11331 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
11333 (update_edge_key): Update.
11334 (lookup_recursive_calls): Likewise.
11335 (recursive_inlining): Likewise.
11336 (add_new_edges_to_heap): Likewise.
11337 (inline_small_functions): Likewise.
11339 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
11341 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
11343 2023-04-21 Richard Biener <rguenther@suse.de>
11345 PR tree-optimization/109573
11346 * tree-vect-loop.cc (vectorizable_live_operation): Allow
11347 unhandled SSA copy as well. Demote assert to checking only.
11349 2023-04-21 Richard Biener <rguenther@suse.de>
11351 * df-core.cc (df_analyze): Compute RPO on the reverse graph
11352 for DF_BACKWARD problems.
11353 (loop_post_order_compute): Rename to ...
11354 (loop_rev_post_order_compute): ... this, compute a RPO.
11355 (loop_inverted_post_order_compute): Rename to ...
11356 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
11357 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
11358 problems, RPO on the inverted graph for DF_BACKWARD.
11360 2023-04-21 Richard Biener <rguenther@suse.de>
11362 * cfganal.h (inverted_rev_post_order_compute): Rename
11364 (inverted_post_order_compute): ... this. Add struct function
11365 argument, change allocation to a C array.
11366 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
11367 * lcm.cc (compute_antinout_edge): Adjust.
11368 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
11369 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
11370 * tree-ssa-pre.cc (compute_antic): Likewise.
11372 2023-04-21 Richard Biener <rguenther@suse.de>
11374 * df.h (df_d::postorder_inverted): Change back to int *,
11376 * df-core.cc (rest_of_handle_df_finish): Adjust.
11377 (df_analyze_1): Likewise.
11378 (df_analyze): For DF_FORWARD problems use RPO on the forward
11380 (loop_inverted_post_order_compute): Adjust API.
11381 (df_analyze_loop): Adjust.
11382 (df_get_n_blocks): Likewise.
11383 (df_get_postorder): Likewise.
11385 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11388 * config/riscv/riscv-vsetvl.cc
11389 (vector_infos_manager::all_empty_predecessor_p): New function.
11390 (pass_vsetvl::backward_demand_fusion): Ditto.
11391 * config/riscv/riscv-vsetvl.h: Ditto.
11393 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
11396 * config/riscv/generic.md: Change standard names to insn names.
11398 2023-04-21 Richard Biener <rguenther@suse.de>
11400 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
11401 (compute_laterin): Use RPO.
11402 (compute_available): Likewise.
11404 2023-04-21 Peng Fan <fanpeng@loongson.cn>
11406 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
11408 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11411 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
11412 (vector_insn_info::skip_avl_compatible_p): Ditto.
11413 (vector_insn_info::merge): Remove default value.
11414 (pass_vsetvl::compute_local_backward_infos): Ditto.
11415 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
11416 * config/riscv/riscv-vsetvl.h: Ditto.
11418 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
11420 * doc/extend.texi (Common Function Attributes): Remove duplicate
11423 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
11425 PR tree-optimization/109564
11426 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
11427 UNDEFINED range names when deciding if all PHI arguments are the same,
11429 2023-04-20 Jakub Jelinek <jakub@redhat.com>
11431 PR tree-optimization/109011
11432 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
11433 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
11434 .CTZ (X) = PREC - .POPCOUNT (X | -X).
11436 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
11438 * lra-constraints.cc (match_reload): Exclude some hard regs for
11439 multi-reg inout reload pseudos used in asm in different mode.
11441 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
11443 * config/arm/arm.cc (thumb1_legitimate_address_p):
11444 Use VIRTUAL_REGISTER_P predicate.
11445 (arm_eliminable_register): Ditto.
11446 * config/avr/avr.md (push<mode>_1): Ditto.
11447 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
11448 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
11449 * config/i386/predicates.md (register_no_elim_operand): Ditto.
11450 * config/iq2000/predicates.md (call_insn_operand): Ditto.
11451 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
11453 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
11456 * config/i386/predicates.md (extract_operator): New predicate.
11457 * config/i386/i386.md (any_extract): Remove code iterator.
11458 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
11459 (*cmpqi_ext<mode>_1): Ditto.
11460 (*cmpqi_ext<mode>_2): Ditto.
11461 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
11462 (*cmpqi_ext<mode>_3): Ditto.
11463 (*cmpqi_ext<mode>_4): Ditto.
11464 (*extzvqi_mem_rex64): Ditto.
11466 (*insvqi_2): Ditto.
11467 (*extendqi<SWI24:mode>_ext_1): Ditto.
11468 (*addqi_ext<mode>_0): Ditto.
11469 (*addqi_ext<mode>_1): Ditto.
11470 (*addqi_ext<mode>_2): Ditto.
11471 (*subqi_ext<mode>_0): Ditto.
11472 (*subqi_ext<mode>_2): Ditto.
11473 (*testqi_ext<mode>_1): Ditto.
11474 (*testqi_ext<mode>_2): Ditto.
11475 (*andqi_ext<mode>_0): Ditto.
11476 (*andqi_ext<mode>_1): Ditto.
11477 (*andqi_ext<mode>_1_cc): Ditto.
11478 (*andqi_ext<mode>_2): Ditto.
11479 (*<any_or:code>qi_ext<mode>_0): Ditto.
11480 (*<any_or:code>qi_ext<mode>_1): Ditto.
11481 (*<any_or:code>qi_ext<mode>_2): Ditto.
11482 (*xorqi_ext<mode>_1_cc): Ditto.
11483 (*negqi_ext<mode>_2): Ditto.
11484 (*ashlqi_ext<mode>_2): Ditto.
11485 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
11487 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
11490 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
11491 <bitmanip_insn> as the type to allow for fine grained control of
11492 scheduling these insns.
11493 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
11495 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
11496 pcnt, signed and unsigned min/max.
11498 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11499 kito-cheng <kito.cheng@sifive.com>
11501 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
11503 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11504 kito-cheng <kito.cheng@sifive.com>
11507 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
11508 (pass_vsetvl::cleanup_insns): Fix bug.
11510 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
11512 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
11513 (ldexp<mode>3): Delete.
11514 (ldexp<mode>3<exec>): Change "B" to "A".
11516 2023-04-20 Jakub Jelinek <jakub@redhat.com>
11517 Jonathan Wakely <jwakely@redhat.com>
11519 * tree.h (built_in_function_equal_p): New helper function.
11520 (fndecl_built_in_p): Turn into variadic template to support
11521 1 or more built_in_function arguments.
11522 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
11523 * gimplify.cc (goa_stabilize_expr): Likewise.
11524 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
11525 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
11526 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
11527 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
11528 cgraph_update_edges_for_call_stmt_node,
11529 cgraph_edge::verify_corresponds_to_fndecl,
11530 cgraph_node::verify_node): Likewise.
11531 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
11532 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
11533 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
11535 2023-04-20 Jakub Jelinek <jakub@redhat.com>
11537 PR tree-optimization/109011
11538 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
11539 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
11540 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
11541 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
11542 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
11544 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
11546 2023-04-20 Richard Biener <rguenther@suse.de>
11548 * df-core.cc (rest_of_handle_df_initialize): Remove
11549 computation of df->postorder, df->postorder_inverted and
11552 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11554 * common/config/i386/i386-common.cc
11555 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
11556 (ix86_handle_option): Set AVX flag for VAES.
11557 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
11558 Add OPTION_MASK_ISA2_VAES_UNSET.
11559 (def_builtin): Share builtin between AES and VAES.
11560 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
11562 * config/i386/i386.md (aes): New isa attribute.
11563 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
11564 (aesenclast): Ditto.
11566 (aesdeclast): Ditto.
11567 * config/i386/vaesintrin.h: Remove redundant avx target push.
11568 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
11569 (_mm_aesdeclast_si128): Ditto.
11570 (_mm_aesenc_si128): Ditto.
11571 (_mm_aesenclast_si128): Ditto.
11573 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
11575 * config/i386/avx2intrin.h
11576 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
11577 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
11578 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
11579 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
11580 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
11581 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
11582 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
11583 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
11584 (_mm_reduce_add_epi16): New instrinsics.
11585 (_mm_reduce_mul_epi16): Ditto.
11586 (_mm_reduce_and_epi16): Ditto.
11587 (_mm_reduce_or_epi16): Ditto.
11588 (_mm_reduce_max_epi16): Ditto.
11589 (_mm_reduce_max_epu16): Ditto.
11590 (_mm_reduce_min_epi16): Ditto.
11591 (_mm_reduce_min_epu16): Ditto.
11592 (_mm256_reduce_add_epi16): Ditto.
11593 (_mm256_reduce_mul_epi16): Ditto.
11594 (_mm256_reduce_and_epi16): Ditto.
11595 (_mm256_reduce_or_epi16): Ditto.
11596 (_mm256_reduce_max_epi16): Ditto.
11597 (_mm256_reduce_max_epu16): Ditto.
11598 (_mm256_reduce_min_epi16): Ditto.
11599 (_mm256_reduce_min_epu16): Ditto.
11600 (_mm_reduce_add_epi8): Ditto.
11601 (_mm_reduce_mul_epi8): Ditto.
11602 (_mm_reduce_and_epi8): Ditto.
11603 (_mm_reduce_or_epi8): Ditto.
11604 (_mm_reduce_max_epi8): Ditto.
11605 (_mm_reduce_max_epu8): Ditto.
11606 (_mm_reduce_min_epi8): Ditto.
11607 (_mm_reduce_min_epu8): Ditto.
11608 (_mm256_reduce_add_epi8): Ditto.
11609 (_mm256_reduce_mul_epi8): Ditto.
11610 (_mm256_reduce_and_epi8): Ditto.
11611 (_mm256_reduce_or_epi8): Ditto.
11612 (_mm256_reduce_max_epi8): Ditto.
11613 (_mm256_reduce_max_epu8): Ditto.
11614 (_mm256_reduce_min_epi8): Ditto.
11615 (_mm256_reduce_min_epu8): Ditto.
11616 * config/i386/avx512vlbwintrin.h:
11617 (_mm_mask_reduce_add_epi16): Ditto.
11618 (_mm_mask_reduce_mul_epi16): Ditto.
11619 (_mm_mask_reduce_and_epi16): Ditto.
11620 (_mm_mask_reduce_or_epi16): Ditto.
11621 (_mm_mask_reduce_max_epi16): Ditto.
11622 (_mm_mask_reduce_max_epu16): Ditto.
11623 (_mm_mask_reduce_min_epi16): Ditto.
11624 (_mm_mask_reduce_min_epu16): Ditto.
11625 (_mm256_mask_reduce_add_epi16): Ditto.
11626 (_mm256_mask_reduce_mul_epi16): Ditto.
11627 (_mm256_mask_reduce_and_epi16): Ditto.
11628 (_mm256_mask_reduce_or_epi16): Ditto.
11629 (_mm256_mask_reduce_max_epi16): Ditto.
11630 (_mm256_mask_reduce_max_epu16): Ditto.
11631 (_mm256_mask_reduce_min_epi16): Ditto.
11632 (_mm256_mask_reduce_min_epu16): Ditto.
11633 (_mm_mask_reduce_add_epi8): Ditto.
11634 (_mm_mask_reduce_mul_epi8): Ditto.
11635 (_mm_mask_reduce_and_epi8): Ditto.
11636 (_mm_mask_reduce_or_epi8): Ditto.
11637 (_mm_mask_reduce_max_epi8): Ditto.
11638 (_mm_mask_reduce_max_epu8): Ditto.
11639 (_mm_mask_reduce_min_epi8): Ditto.
11640 (_mm_mask_reduce_min_epu8): Ditto.
11641 (_mm256_mask_reduce_add_epi8): Ditto.
11642 (_mm256_mask_reduce_mul_epi8): Ditto.
11643 (_mm256_mask_reduce_and_epi8): Ditto.
11644 (_mm256_mask_reduce_or_epi8): Ditto.
11645 (_mm256_mask_reduce_max_epi8): Ditto.
11646 (_mm256_mask_reduce_max_epu8): Ditto.
11647 (_mm256_mask_reduce_min_epi8): Ditto.
11648 (_mm256_mask_reduce_min_epu8): Ditto.
11650 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11652 * common/config/i386/i386-common.cc
11653 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
11654 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
11655 (OPTION_MASK_ISA_AVX_UNSET):
11656 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
11657 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
11658 * config/i386/i386.md (vpclmulqdqvl): New.
11659 * config/i386/sse.md (pclmulqdq): Add evex encoding.
11660 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
11663 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11665 * config/i386/avx512vlbwintrin.h
11666 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
11667 (_mm_mask_blend_epi8): Ditto.
11668 (_mm256_mask_blend_epi16): Ditto.
11669 (_mm256_mask_blend_epi8): Ditto.
11670 * config/i386/avx512vlintrin.h
11671 (_mm256_mask_blend_pd): Ditto.
11672 (_mm256_mask_blend_ps): Ditto.
11673 (_mm256_mask_blend_epi64): Ditto.
11674 (_mm256_mask_blend_epi32): Ditto.
11675 (_mm_mask_blend_pd): Ditto.
11676 (_mm_mask_blend_ps): Ditto.
11677 (_mm_mask_blend_epi64): Ditto.
11678 (_mm_mask_blend_epi32): Ditto.
11679 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
11680 (VF_AVX512HFBFVL): Move it before the first usage.
11681 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
11682 to VF_AVX512HFBFVL.
11684 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11686 * common/config/i386/i386-common.cc
11687 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
11688 to OPTION_MASK_ISA_AVX512BW_SET.
11689 (OPTION_MASK_ISA_AVX512F_UNSET):
11690 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
11691 (OPTION_MASK_ISA_AVX512BW_UNSET):
11692 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
11693 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
11694 * config/i386/avx512vbmi2vlintrin.h: Ditto.
11695 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
11696 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
11697 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
11698 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
11700 (compressstore<mode>_mask): Ditto.
11701 (expand<mode>_mask): Ditto.
11702 (expand<mode>_maskz): Ditto.
11703 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
11704 VI12_VI48F_AVX512VL.
11706 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11708 * common/config/i386/i386-common.cc
11709 (OPTION_MASK_ISA_AVX512BITALG_SET):
11710 Change OPTION_MASK_ISA_AVX512F_SET
11711 to OPTION_MASK_ISA_AVX512BW_SET.
11712 (OPTION_MASK_ISA_AVX512F_UNSET):
11713 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
11714 (OPTION_MASK_ISA_AVX512BW_UNSET):
11715 Add OPTION_MASK_ISA_AVX512BITALG_SET.
11716 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
11717 * config/i386/i386-builtin.def:
11718 Remove redundant OPTION_MASK_ISA_AVX512BW.
11719 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
11720 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
11721 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
11723 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
11725 * config/i386/i386-expand.cc
11726 (ix86_check_builtin_isa_match): Correct wrong comments.
11727 Add a new macro SHARE_BUILTIN and refactor the current if
11730 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
11732 * config/i386/cpuid.h: Open a new section for Extended Features
11733 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
11736 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
11738 * config/i386/sse.md: Modify insn vperm{i,f}
11741 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
11743 * config/xtensa/xtensa-opts.h: New header.
11744 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
11745 xtensa_strict_align.
11746 * config/xtensa/xtensa.cc (xtensa_option_override): When
11747 -m[no-]strict-align is not specified in the command line set
11748 xtensa_strict_align to 0 if the hardware supports both unaligned
11749 loads and stores or to 1 otherwise.
11750 * config/xtensa/xtensa.opt (mstrict-align): New option.
11751 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
11753 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
11755 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
11758 2023-04-19 Andrew Pinski <apinski@marvell.com>
11760 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
11762 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11764 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
11765 (VECTOR_BOOL_MODE): Ditto.
11766 (ADJUST_NUNITS): Ditto.
11767 (ADJUST_ALIGNMENT): Ditto.
11768 (ADJUST_BYTESIZE): Ditto.
11769 (ADJUST_PRECISION): Ditto.
11770 (RVV_MODES): Ditto.
11771 (VECTOR_MODE_WITH_PREFIX): Ditto.
11772 * config/riscv/riscv-v.cc (ENTRY): Ditto.
11773 (get_vlmul): Ditto.
11774 (get_ratio): Ditto.
11775 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
11776 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
11777 (vbool64_t): Ditto.
11778 (vbool32_t): Ditto.
11779 (vbool16_t): Ditto.
11784 (vint8mf8_t): Ditto.
11785 (vuint8mf8_t): Ditto.
11786 (vint8mf4_t): Ditto.
11787 (vuint8mf4_t): Ditto.
11788 (vint8mf2_t): Ditto.
11789 (vuint8mf2_t): Ditto.
11790 (vint8m1_t): Ditto.
11791 (vuint8m1_t): Ditto.
11792 (vint8m2_t): Ditto.
11793 (vuint8m2_t): Ditto.
11794 (vint8m4_t): Ditto.
11795 (vuint8m4_t): Ditto.
11796 (vint8m8_t): Ditto.
11797 (vuint8m8_t): Ditto.
11798 (vint16mf4_t): Ditto.
11799 (vuint16mf4_t): Ditto.
11800 (vint16mf2_t): Ditto.
11801 (vuint16mf2_t): Ditto.
11802 (vint16m1_t): Ditto.
11803 (vuint16m1_t): Ditto.
11804 (vint16m2_t): Ditto.
11805 (vuint16m2_t): Ditto.
11806 (vint16m4_t): Ditto.
11807 (vuint16m4_t): Ditto.
11808 (vint16m8_t): Ditto.
11809 (vuint16m8_t): Ditto.
11810 (vint32mf2_t): Ditto.
11811 (vuint32mf2_t): Ditto.
11812 (vint32m1_t): Ditto.
11813 (vuint32m1_t): Ditto.
11814 (vint32m2_t): Ditto.
11815 (vuint32m2_t): Ditto.
11816 (vint32m4_t): Ditto.
11817 (vuint32m4_t): Ditto.
11818 (vint32m8_t): Ditto.
11819 (vuint32m8_t): Ditto.
11820 (vint64m1_t): Ditto.
11821 (vuint64m1_t): Ditto.
11822 (vint64m2_t): Ditto.
11823 (vuint64m2_t): Ditto.
11824 (vint64m4_t): Ditto.
11825 (vuint64m4_t): Ditto.
11826 (vint64m8_t): Ditto.
11827 (vuint64m8_t): Ditto.
11828 (vfloat32mf2_t): Ditto.
11829 (vfloat32m1_t): Ditto.
11830 (vfloat32m2_t): Ditto.
11831 (vfloat32m4_t): Ditto.
11832 (vfloat32m8_t): Ditto.
11833 (vfloat64m1_t): Ditto.
11834 (vfloat64m2_t): Ditto.
11835 (vfloat64m4_t): Ditto.
11836 (vfloat64m8_t): Ditto.
11837 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
11838 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
11839 (riscv_convert_vector_bits): Ditto.
11840 * config/riscv/riscv.md:
11841 * config/riscv/vector-iterators.md:
11842 * config/riscv/vector.md
11843 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
11844 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
11845 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
11846 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
11847 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
11848 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
11849 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
11850 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
11851 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
11853 2023-04-19 Pan Li <pan2.li@intel.com>
11855 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
11856 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
11858 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
11862 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
11863 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
11864 for operand 0. Use any_extract code iterator.
11865 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
11866 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
11867 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
11868 (*cmpqi_ext<mode>_1): Use general_operand predicate
11869 for operand 1. Use any_extract code iterator.
11870 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
11871 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
11873 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11875 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
11876 (aarch64_uaddw2<mode>): Delete.
11877 (aarch64_ssubw2<mode>): Delete.
11878 (aarch64_usubw2<mode>): Delete.
11879 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
11881 2023-04-19 Richard Biener <rguenther@suse.de>
11883 * tree-ssa-structalias.cc (do_ds_constraint): Use
11884 solve_add_graph_edge.
11886 2023-04-19 Richard Biener <rguenther@suse.de>
11888 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
11890 (do_sd_constraint): ... here.
11892 2023-04-19 Richard Biener <rguenther@suse.de>
11894 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
11895 rejecting the merge when A contains only a non-local label.
11897 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
11899 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
11900 (VIRTUAL_REGISTER_NUM_P): Ditto.
11901 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
11902 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
11903 * function.cc (instantiate_decl_rtl): Ditto.
11904 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
11905 (nonzero_address_p): Ditto.
11906 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
11908 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
11910 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
11912 2023-04-19 Richard Biener <rguenther@suse.de>
11914 * system.h (auto_mpz::operator->()): New.
11915 * realmpfr.h (auto_mpfr::operator->()): New.
11916 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
11917 * real.cc (real_from_string): Likewise.
11918 (dconst_e_ptr): Likewise.
11919 (dconst_sqrt2_ptr): Likewise.
11920 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
11922 (bound_difference_of_offsetted_base): Likewise.
11923 (number_of_iterations_ne): Likewise.
11924 (number_of_iterations_lt_to_ne): Likewise.
11925 * ubsan.cc: Include realmpfr.h.
11926 (ubsan_instrument_float_cast): Use auto_mpfr.
11928 2023-04-19 Richard Biener <rguenther@suse.de>
11930 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
11931 edges, remove edges from escaped after special-casing them.
11933 2023-04-19 Richard Biener <rguenther@suse.de>
11935 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
11938 2023-04-19 Richard Biener <rguenther@suse.de>
11940 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
11941 to the LHS varinfo solution member.
11943 2023-04-19 Richard Biener <rguenther@suse.de>
11945 * tree-ssa-structalias.cc (topo_visit): Look at the real
11946 destination of edges.
11948 2023-04-19 Richard Biener <rguenther@suse.de>
11950 PR tree-optimization/44794
11951 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
11952 If an epilogue loop is required set its iteration upper bound.
11954 2023-04-19 Xi Ruoyao <xry111@xry111.site>
11957 * config/loongarch/loongarch-protos.h
11958 (loongarch_expand_block_move): Add a parameter as alignment RTX.
11959 * config/loongarch/loongarch.h:
11960 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
11961 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
11962 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
11963 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
11964 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
11965 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
11966 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
11967 Take the alignment from the parameter, but set it to
11968 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
11969 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
11970 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
11971 (loongarch_block_move_straight): When there are left-over bytes,
11972 half the mode size instead of falling back to byte mode at once.
11973 (loongarch_block_move_loop): Limit the length of loop body with
11974 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
11975 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
11976 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
11977 to loongarch_expand_block_move.
11979 2023-04-19 Xi Ruoyao <xry111@xry111.site>
11981 * config/loongarch/loongarch.cc
11982 (loongarch_setup_incoming_varargs): Don't save more GARs than
11983 cfun->va_list_gpr_size / UNITS_PER_WORD.
11985 2023-04-19 Richard Biener <rguenther@suse.de>
11987 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
11988 no epilogue condition.
11990 2023-04-19 Richard Biener <rguenther@suse.de>
11992 * gimple.h (gimple_assign_load): Outline...
11993 * gimple.cc (gimple_assign_load): ... here. Avoid
11994 get_base_address and instead just strip the outermost
11995 handled component, treating a remaining handled component
11998 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12000 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
12002 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
12004 2023-04-19 Jakub Jelinek <jakub@redhat.com>
12006 PR tree-optimization/109011
12007 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
12008 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
12009 CLZ, CTZ and FFS. Remove vargs variable, use
12010 gimple_build_call_internal rather than gimple_build_call_internal_vec.
12011 (vect_vect_recog_func_ptrs): Adjust popcount entry.
12013 2023-04-19 Jakub Jelinek <jakub@redhat.com>
12016 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
12017 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
12018 a new REG rather than the SUBREG.
12020 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12022 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
12025 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12028 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
12029 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
12031 2023-04-19 Richard Biener <rguenther@suse.de>
12033 PR rtl-optimization/109237
12034 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
12035 TREE_VISITED on INSN_VAR_LOCATION_DECL.
12036 (delete_trivially_dead_insns): Maintain TREE_VISITED on
12037 active debug bind INSN_VAR_LOCATION_DECL.
12039 2023-04-19 Richard Biener <rguenther@suse.de>
12041 PR rtl-optimization/109237
12042 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
12044 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
12046 * doc/install.texi (enable-decimal-float): Add AArch64.
12048 2023-04-19 liuhongt <hongtao.liu@intel.com>
12050 PR rtl-optimization/109351
12051 * ira.cc (setup_class_subset_and_memory_move_costs): Check
12052 hard_regno_mode_ok before setting lowest memory move cost for
12053 the mode with different reg classes.
12055 2023-04-18 Jason Merrill <jason@redhat.com>
12057 * doc/invoke.texi: Remove stray @gol.
12059 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12061 * ifcvt.cc (cond_move_process_if_block): Consider the result of
12062 targetm.noce_conversion_profitable_p() when replacing the original
12063 sequence with the converted one.
12065 2023-04-18 Mark Harmstone <mark@harmstone.com>
12067 * common.opt (gcodeview): Add new option.
12068 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
12069 * opts.cc (command_handle_option): Similarly.
12070 * doc/invoke.texi: Add documentation for -gcodeview.
12072 2023-04-18 Andrew Pinski <apinski@marvell.com>
12074 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
12075 (make_pass_phiopt): Make execute out of line.
12076 (tree_ssa_cs_elim): Move code into ...
12077 (pass_cselim::execute): here.
12079 2023-04-18 Sam James <sam@gentoo.org>
12081 * system.h: Drop unused INCLUDE_PTHREAD_H.
12083 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
12085 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
12088 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
12090 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
12091 (bswapdi2, bswapsi2): Similarly.
12093 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
12096 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
12097 Use CODE_FOR_sse4_1_insertps_v4sf.
12098 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
12099 (expand_vec_perm_1): Call expand_vec_per_insertps.
12100 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
12101 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
12102 (@sse4_1_insertps_<mode>): New insn pattern.
12103 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
12104 pattern from sse4_1_insertps using VI4F_128 mode iterator.
12106 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12108 * value-range.cc (gt_ggc_mx): New.
12110 * value-range.h (class vrange): Add GTY marker.
12111 (class frange): Same.
12112 (gt_ggc_mx): Remove.
12113 (gt_pch_nx): Remove.
12115 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
12117 * lra-constraints.cc (constraint_unique): New.
12118 (process_address_1): Apply constraint_unique test.
12119 * recog.cc (constrain_operands): Allow relaxed memory
12122 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
12124 * doc/extend.texi (Target Builtins): Add RISC-V Vector
12126 (RISC-V Vector Intrinsics): Document GCC implemented which
12127 version of RISC-V vector intrinsics and its reference.
12129 2023-04-18 Richard Biener <rguenther@suse.de>
12131 PR middle-end/108786
12132 * bitmap.h (bitmap_clear_first_set_bit): New.
12133 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
12134 bitmap_first_set_bit and add optional clearing of the bit.
12135 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
12136 (bitmap_clear_first_set_bit): Likewise.
12137 * df-core.cc (df_worklist_dataflow_doublequeue): Use
12138 bitmap_clear_first_set_bit.
12139 * graphite-scop-detection.cc (scop_detection::merge_sese):
12141 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
12142 (sanitize_asan_mark_poison): Likewise.
12143 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
12144 * tree-into-ssa.cc (rewrite_blocks): Likewise.
12145 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
12146 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
12148 2023-04-18 Richard Biener <rguenther@suse.de>
12150 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
12151 (dump_sa_points_to_info): ... this function.
12152 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
12153 and call dump_sa_stats guarded with TDF_STATS.
12154 (ipa_pta_execute): Likewise.
12155 (compute_may_aliases): Guard dump_alias_info with
12156 TDF_DETAILS|TDF_ALIAS.
12158 2023-04-18 Andrew Pinski <apinski@marvell.com>
12160 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
12161 the expression that is being tried when TDF_FOLDING
12163 (phiopt_worker::match_simplify_replacement): Dump
12164 the sequence which was created by gimple_simplify_phiopt
12165 when TDF_FOLDING is true.
12167 2023-04-18 Andrew Pinski <apinski@marvell.com>
12169 * tree-ssa-phiopt.cc (match_simplify_replacement):
12170 Simplify code that does the movement slightly.
12172 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12174 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
12176 (rev16<mode>2): Rename to...
12177 (aarch64_rev16<mode>2_alt1): ... This.
12178 (rev16<mode>2_alt): Rename to...
12179 (*aarch64_rev16<mode>2_alt2): ... This.
12181 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12183 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
12184 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
12186 * range-op-float.cc (zero_range): Use dconstm0.
12187 (zero_to_inf_range): Same.
12188 * real.h (dconstm0): New.
12189 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
12190 (frange::set_zero): Do not declare dconstm0.
12192 2023-04-18 Richard Biener <rguenther@suse.de>
12194 * system.h (class auto_mpz): New,
12195 * realmpfr.h (class auto_mpfr): Likewise.
12196 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
12197 (do_mpfr_arg2): Likewise.
12198 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
12200 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12202 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
12203 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
12205 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12207 * value-range.cc (frange::operator==): Adjust for NAN.
12208 (range_tests_nan): Remove some NAN tests.
12210 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12212 * inchash.cc (hash::add_real_value): New.
12213 * inchash.h (class hash): Add add_real_value.
12214 * value-range.cc (add_vrange): New.
12215 * value-range.h (inchash::add_vrange): New.
12217 2023-04-18 Richard Biener <rguenther@suse.de>
12219 PR tree-optimization/109539
12220 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
12221 Re-implement pointer relatedness for PHIs.
12223 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
12225 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
12226 (SV_FP): New iterator.
12227 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
12228 (recip<mode>2): Unify the two patterns using SV_FP.
12229 (div_scale<mode><exec_vcc>): New insn.
12230 (div_fmas<mode><exec>): New insn.
12231 (div_fixup<mode><exec>): New insn.
12232 (div<mode>3): Unify the two expanders and rewrite using hardfp.
12233 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
12234 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
12235 and UNSPEC_DIV_FIXUP.
12236 (vccwait): New attribute.
12238 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12240 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
12241 if the argument matches that.
12243 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12245 * config/aarch64/atomics.md
12246 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
12247 Use SD_HSDI for destination mode iterator.
12249 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
12251 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
12252 of z-extensions and s-extensions.
12253 (riscv_subset_list::parse): Likewise.
12255 2023-04-18 Jakub Jelinek <jakub@redhat.com>
12257 PR tree-optimization/109240
12258 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
12259 first vec_perm operand and minus as second using fneg/fadd and
12260 minus as first vec_perm operand and plus as second using fneg/fsub.
12262 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12264 * data-streamer.cc (bp_pack_real_value): New.
12265 (bp_unpack_real_value): New.
12266 * data-streamer.h (bp_pack_real_value): New.
12267 (bp_unpack_real_value): New.
12268 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
12269 bp_unpack_real_value.
12270 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
12271 bp_pack_real_value.
12273 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12275 * wide-int.h (WIDE_INT_MAX_HWIS): New.
12276 (class fixed_wide_int_storage): Use it.
12277 (trailing_wide_ints <N>::set_precision): Use it.
12278 (trailing_wide_ints <N>::extra_size): Use it.
12280 2023-04-18 Xi Ruoyao <xry111@xry111.site>
12282 * config/loongarch/loongarch-protos.h
12283 (loongarch_addu16i_imm12_operand_p): New function prototype.
12284 (loongarch_split_plus_constant): Likewise.
12285 * config/loongarch/loongarch.cc
12286 (loongarch_addu16i_imm12_operand_p): New function.
12287 (loongarch_split_plus_constant): Likewise.
12288 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
12289 (DUAL_IMM12_OPERAND): Likewise.
12290 (DUAL_ADDU16I_OPERAND): Likewise.
12291 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
12293 * config/loongarch/predicates.md (const_dual_imm12_operand): New
12295 (const_addu16i_operand): Likewise.
12296 (const_addu16i_imm12_di_operand): Likewise.
12297 (const_addu16i_imm12_si_operand): Likewise.
12298 (plus_di_operand): Likewise.
12299 (plus_si_operand): Likewise.
12300 (plus_si_extend_operand): Likewise.
12301 * config/loongarch/loongarch.md (add<mode>3): Convert to
12302 define_insn_and_split. Use plus_<mode>_operand predicate
12303 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
12304 and Le constraints.
12305 (*addsi3_extended): Convert to define_insn_and_split. Use
12306 plus_si_extend_operand instead of arith_operand. Add
12307 alternatives for La and Le alternatives.
12309 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12311 * value-range.h (Value_Range::Value_Range): New.
12312 (Value_Range::contains_p): New.
12314 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
12316 * value-range.h (class vrange): Make m_discriminator const.
12317 (class irange): Make m_max_ranges const. Adjust constructors
12319 (class unsupported_range): Construct vrange appropriately.
12320 (class frange): Same.
12322 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
12324 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
12327 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
12329 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
12331 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
12333 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
12335 (riscv_expand_epilogue): Likewise.
12337 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
12339 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
12341 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
12343 2023-04-17 Andrew Pinski <apinski@marvell.com>
12345 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
12348 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
12350 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
12353 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
12355 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
12356 parameter remaining_size.
12357 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
12358 (riscv_expand_prologue): Likewise.
12359 (riscv_expand_epilogue): Likewise.
12361 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
12363 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
12364 roriw for constant counts.
12365 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
12366 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
12367 (simplify_context::simplify_binary_operation_1): Use it.
12368 * expmed.cc (expand_shift_1): Likewise.
12370 2023-04-17 Martin Jambor <mjambor@suse.cz>
12374 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
12375 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
12376 (ipa_zap_jf_refdesc): New function.
12377 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
12378 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
12379 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
12380 the new parameter of find_reference.
12381 (adjust_references_in_caller): Likewise. Make sure the constant jump
12382 function is not used to decrement a refdec counter again. Only
12383 decrement refdesc counters when the pass_through jump function allows
12384 it. Added a detailed dump when decrementing refdesc counters.
12385 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
12386 (ipa_set_jf_simple_pass_through): Initialize the new flag.
12387 (ipa_set_jf_unary_pass_through): Likewise.
12388 (ipa_set_jf_arith_pass_through): Likewise.
12389 (remove_described_reference): Provide a value for the new parameter of
12391 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
12392 the previous pass_through had a flag mandating that we do so.
12393 (propagate_controlled_uses): Likewise. Only decrement refdesc
12394 counters when the pass_through jump function allows it.
12395 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
12396 parameter of find_reference.
12397 (ipa_write_jump_function): Assert the new flag does not have to be
12399 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
12402 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
12403 Di Zhao <di.zhao@amperecomputing.com>
12405 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
12406 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
12407 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
12408 Check for the above tuning option when processing loads.
12410 2023-04-17 Richard Biener <rguenther@suse.de>
12412 PR tree-optimization/109524
12413 * tree-vrp.cc (remove_unreachable::m_list): Change to a
12414 vector of pairs of block indices.
12415 (remove_unreachable::maybe_register_block): Adjust.
12416 (remove_unreachable::remove_and_update_globals): Likewise.
12417 Deal with removed blocks.
12419 2023-04-16 Jeff Law <jlaw@ventanamicro>
12422 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
12423 TARGET_SFB_ALU, force the true arm into a register.
12425 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
12428 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
12429 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
12431 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
12432 (pa_function_arg_size): Change return type to int. Return zero
12433 for arguments larger than 1 GB. Update comments.
12435 2023-04-15 Jakub Jelinek <jakub@redhat.com>
12437 PR tree-optimization/109154
12438 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
12439 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
12441 2023-04-15 Jason Merrill <jason@redhat.com>
12444 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
12445 Overhaul lhs_ref.ref analysis.
12447 2023-04-14 Richard Biener <rguenther@suse.de>
12449 PR tree-optimization/109502
12450 * tree-vect-stmts.cc (vectorizable_assignment): Fix
12451 check for conversion between mask and non-mask types.
12453 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
12454 Jakub Jelinek <jakub@redhat.com>
12458 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
12459 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
12460 smaller than word_mode.
12461 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
12462 <case AND>: Likewise.
12464 2023-04-14 Jakub Jelinek <jakub@redhat.com>
12466 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
12469 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
12471 PR tree-optimization/108139
12472 PR tree-optimization/109462
12473 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
12474 equivalency check for PHI nodes.
12475 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
12476 does not dominate single-arg equivalency edges.
12478 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
12481 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
12482 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
12484 2023-04-13 Richard Biener <rguenther@suse.de>
12486 PR tree-optimization/109491
12487 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
12488 NULL operands test.
12490 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12493 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
12494 (vint16mf4_t): Ditto.
12495 (vint32mf2_t): Ditto.
12496 (vint64m1_t): Ditto.
12497 (vint64m2_t): Ditto.
12498 (vint64m4_t): Ditto.
12499 (vint64m8_t): Ditto.
12500 (vuint8mf8_t): Ditto.
12501 (vuint16mf4_t): Ditto.
12502 (vuint32mf2_t): Ditto.
12503 (vuint64m1_t): Ditto.
12504 (vuint64m2_t): Ditto.
12505 (vuint64m4_t): Ditto.
12506 (vuint64m8_t): Ditto.
12507 (vfloat32mf2_t): Ditto.
12508 (vbool64_t): Ditto.
12509 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
12510 (register_vector_type): Ditto.
12511 (check_required_extensions): Fix condition.
12512 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
12513 (RVV_REQUIRE_ELEN_64): New define.
12514 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
12515 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
12516 (TARGET_VECTOR_FP64): Ditto.
12517 (ENTRY): Fix predicate.
12518 * config/riscv/vector-iterators.md: Fix predicate.
12520 2023-04-12 Jakub Jelinek <jakub@redhat.com>
12522 PR tree-optimization/109410
12523 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
12524 block if first statement of the function is a call to returns_twice
12527 2023-04-12 Jakub Jelinek <jakub@redhat.com>
12530 * config/i386/i386.cc: Include rtl-error.h.
12531 (ix86_print_operand): For z modifier warning, use warning_for_asm
12532 if this_is_asm_operands. For Z modifier errors, use %c and code
12533 instead of hardcoded Z.
12535 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
12537 * config/i386/x-mingw32-utf8: Remove extrataneous $@
12539 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
12541 PR tree-optimization/109462
12542 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
12543 check for equivalences if NAME is a phi node.
12545 2023-04-12 Richard Biener <rguenther@suse.de>
12547 PR tree-optimization/109473
12548 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
12549 Convert scalar result to the computation type before performing
12550 the reduction adjustment.
12552 2023-04-12 Richard Biener <rguenther@suse.de>
12554 PR tree-optimization/109469
12555 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
12556 a returns-twice call.
12558 2023-04-12 Richard Biener <rguenther@suse.de>
12560 PR tree-optimization/109434
12561 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
12562 handle possibly throwing calls when processing the LHS
12563 and may-defs are not OK.
12565 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
12567 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
12568 predicate to avoid splitting arith constants.
12570 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
12571 Pan Li <pan2.li@intel.com>
12572 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12573 Kito Cheng <kito.cheng@sifive.com>
12576 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
12577 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
12578 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
12579 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
12580 (riscv_zero_call_used_regs): New.
12581 (TARGET_ZERO_CALL_USED_REGS): New.
12583 2023-04-11 Martin Liska <mliska@suse.cz>
12586 * opts.cc (finish_options): Drop also
12587 x_flag_var_tracking_assignments.
12589 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
12591 PR tree-optimization/108888
12592 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
12594 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
12597 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
12598 (vsx_sign_extend_v16qi_<mode>): ... this.
12599 (vsx_sign_extend_hi_<mode>): Rename to...
12600 (vsx_sign_extend_v8hi_<mode>): ... this.
12601 (vsx_sign_extend_si_v2di): Rename to...
12602 (vsx_sign_extend_v4si_v2di): ... this.
12603 (vsignextend_qi_<mode>): Remove.
12604 (vsignextend_hi_<mode>): Remove.
12605 (vsignextend_si_v2di): Remove.
12606 (vsignextend_v2di_v1ti): Remove.
12607 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
12608 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
12609 with gen_vsx_sign_extend_v16qi_v4si.
12610 * config/rs6000/rs6000.md (split for DI constant generation):
12611 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
12612 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
12613 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
12614 with gen_vsx_sign_extend_v16qi_si.
12615 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
12616 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
12617 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
12618 vsx_sign_extend_v16qi_v4si.
12619 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
12620 vsx_sign_extend_v8hi_v2di.
12621 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
12622 vsx_sign_extend_v8hi_v4si.
12623 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
12624 vsx_sign_extend_si_v2di.
12625 (__builtin_altivec_vsignext): Set bif-pattern to
12626 vsx_sign_extend_v2di_v1ti.
12627 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
12628 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
12629 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
12630 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
12632 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
12635 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
12636 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
12638 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
12640 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
12642 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
12644 * common/config/i386/cpuinfo.h (get_available_features):
12645 Detect AMX-COMPLEX.
12646 * common/config/i386/i386-common.cc
12647 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
12648 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
12649 (ix86_handle_option): Handle -mamx-complex.
12650 * common/config/i386/i386-cpuinfo.h (enum processor_features):
12651 Add FEATURE_AMX_COMPLEX.
12652 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
12654 * config.gcc: Add amxcomplexintrin.h.
12655 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
12656 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
12658 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
12659 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
12660 Handle amx-complex.
12661 * config/i386/i386.opt: Add option -mamx-complex.
12662 * config/i386/immintrin.h: Include amxcomplexintrin.h.
12663 * doc/extend.texi: Document amx-complex.
12664 * doc/invoke.texi: Document -mamx-complex.
12665 * doc/sourcebuild.texi: Document target amx-complex.
12666 * config/i386/amxcomplexintrin.h: New file.
12668 2023-04-08 Jakub Jelinek <jakub@redhat.com>
12670 PR tree-optimization/109392
12671 * tree-vect-generic.cc (tree_vec_extract): Handle failure
12672 of maybe_push_res_to_seq better.
12674 2023-04-08 Jakub Jelinek <jakub@redhat.com>
12676 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
12678 (SYSTEM_H): Depend on $(HASHTAB_H).
12679 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
12680 dependency on $(RTL_BASE_H), remove redundant dependency on
12683 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
12686 * config/arm/arm.cc (arm_effective_regno): New function.
12687 (mve_vector_mem_operand): Use it.
12689 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
12691 PR tree-optimization/109417
12692 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
12693 dependency is in SSA_NAME_FREE_LIST.
12695 2023-04-06 Andrew Pinski <apinski@marvell.com>
12697 PR tree-optimization/109427
12698 * params.opt (-param=vect-induction-float=):
12699 Fix option attribute typo for IntegerRange.
12701 2023-04-05 Jeff Law <jlaw@ventanamicro>
12704 * combine.cc (combine_instructions): Force re-recognition when
12705 after restoring the body of an insn to its original form.
12707 2023-04-05 Martin Jambor <mjambor@suse.cz>
12710 * ipa-sra.cc (zap_useless_ipcp_results): New function.
12711 (process_isra_node_results): Call it.
12713 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12715 * config/riscv/vector.md: Fix incorrect operand order.
12717 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12719 * config/riscv/riscv-vsetvl.cc
12720 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
12723 2023-04-05 Li Xu <xuli1@eswincomputing.com>
12725 * config/riscv/riscv-vector-builtins.def: Fix typo.
12726 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
12727 * config/riscv/vector-iterators.md: Ditto.
12729 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
12731 * doc/md.texi (Including Patterns): Fix page break.
12733 2023-04-04 Jakub Jelinek <jakub@redhat.com>
12735 PR tree-optimization/109386
12736 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
12737 foperator_le::op1_range, foperator_le::op2_range,
12738 foperator_gt::op1_range, foperator_gt::op2_range,
12739 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
12740 BRS_FALSE case even if the other op is maybe_isnan, not just
12742 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
12743 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
12744 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
12745 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
12746 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
12747 not just known_isnan.
12749 2023-04-04 Marek Polacek <polacek@redhat.com>
12751 PR sanitizer/109107
12752 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
12754 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
12756 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
12758 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
12759 (mve_vcreateq_f<mode>): Swap operands.
12761 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
12763 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
12765 2023-04-04 Jakub Jelinek <jakub@redhat.com>
12768 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
12769 Reword diagnostics about zfinx conflict with f, formatting fixes.
12771 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12773 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
12775 2023-04-04 Richard Biener <rguenther@suse.de>
12777 PR tree-optimization/109304
12778 * tree-profile.cc (tree_profiling): Use symtab node
12779 availability to decide whether to skip adjusting calls.
12780 Do not adjust calls to internal functions.
12782 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
12785 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
12786 function for permutation control vector by considering big endianness.
12788 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
12791 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
12792 (rs6000_vprtyb<mode>2): ... this.
12793 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
12794 rs6000_vprtybv2di2.
12795 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
12796 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
12797 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
12798 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
12800 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
12801 Sandra Loosemore <sandra@codesourcery.com>
12803 * doc/md.texi (Insn Splitting): Tweak wording for readability.
12805 2023-04-03 Martin Jambor <mjambor@suse.cz>
12808 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
12809 offset + size will be representable in unsigned int.
12811 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12813 * configure.ac (ZSTD_LIB): Move before zstd.h check.
12814 Unset gcc_cv_header_zstd_h without libzstd.
12815 * configure: Regenerate.
12817 2023-04-03 Martin Liska <mliska@suse.cz>
12819 * doc/invoke.texi: Document new param.
12821 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
12823 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
12824 new check_effective_target function.
12826 2023-04-03 Li Xu <xuli1@eswincomputing.com>
12828 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
12829 (vfloat32m8_t): Likewise
12831 2023-04-03 liuhongt <hongtao.liu@intel.com>
12833 * doc/md.texi: Document signbitm2.
12835 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12836 kito-cheng <kito.cheng@sifive.com>
12838 * config/riscv/vector.md: Fix RA constraint.
12840 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12842 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
12843 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
12844 * config/riscv/vector.md: Fix scalar move bug.
12846 2023-04-01 Jakub Jelinek <jakub@redhat.com>
12848 * range-op-float.cc (foperator_equal::fold_range): If at least
12849 one of the op ranges is not singleton and neither is NaN and all
12850 4 bounds are zero, return [1, 1].
12851 (foperator_not_equal::fold_range): In the same case return [0, 0].
12853 2023-04-01 Jakub Jelinek <jakub@redhat.com>
12855 * range-op-float.cc (foperator_equal::fold_range): Perform the
12856 non-singleton handling regardless of maybe_isnan (op1, op2).
12857 (foperator_not_equal::fold_range): Likewise.
12858 (foperator_lt::fold_range, foperator_le::fold_range,
12859 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
12860 real_* comparison check which results in range_false (type)
12861 even if maybe_isnan (op1, op2). Simplify.
12862 (foperator_ltgt): New class.
12863 (fop_ltgt): New variable.
12864 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
12867 2023-04-01 Jakub Jelinek <jakub@redhat.com>
12870 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
12871 returns VOIDmode, handle it like if the register isn't used for
12872 passing arguments at all.
12873 (apply_result_size): If targetm.calls.get_raw_result_mode returns
12874 VOIDmode, handle it like if the register isn't used for returning
12876 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
12877 means to return VOIDmode.
12878 * doc/tm.texi: Regenerated.
12879 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
12880 TARGET_SVE for P0_REGNUM.
12881 (aarch64_function_arg_regno_p): Also return true for p0-p3.
12882 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
12884 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
12886 * lra-constraints.cc: (combine_reload_insn): New function.
12888 2023-03-31 Jakub Jelinek <jakub@redhat.com>
12890 PR tree-optimization/91645
12891 * range-op-float.cc (foperator_unordered_lt::fold_range,
12892 foperator_unordered_le::fold_range,
12893 foperator_unordered_gt::fold_range,
12894 foperator_unordered_ge::fold_range,
12895 foperator_unordered_equal::fold_range): Call the ordered
12896 fold_range on ranges with cleared NaNs.
12897 * value-query.cc (range_query::get_tree_range): Handle also
12898 COMPARISON_CLASS_P trees.
12900 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
12901 Andrew Pinski <pinskia@gmail.com>
12904 * config/riscv/t-riscv: Add missing dependencies.
12906 2023-03-31 liuhongt <hongtao.liu@intel.com>
12908 * config/i386/i386.cc (inline_memory_move_cost): Return 100
12909 for MASK_REGS when MODE_SIZE > 8.
12911 2023-03-31 liuhongt <hongtao.liu@intel.com>
12914 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
12915 ufloat/ufix to floatuns/fixuns.
12916 * config/i386/i386-expand.cc
12917 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
12918 * config/i386/sse.md
12919 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
12921 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
12922 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
12924 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
12926 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
12928 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
12929 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
12930 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
12931 (ufloatv2siv2df2<mask_name>): Renamed to ..
12932 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
12933 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
12935 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
12937 (ufix_notruncv2dfv2si2): Renamed to ..
12938 (fixuns_notruncv2dfv2si2):.. this.
12939 (ufix_notruncv2dfv2si2_mask): Renamed to ..
12940 (fixuns_notruncv2dfv2si2_mask): .. this.
12941 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
12942 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
12943 (ufix_truncv2dfv2si2): Renamed to ..
12944 (*fixuns_truncv2dfv2si2): .. this.
12945 (ufix_truncv2dfv2si2_mask): Renamed to ..
12946 (fixuns_truncv2dfv2si2_mask): .. this.
12947 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
12948 (*fixuns_truncv2dfv2si2_mask_1): .. this.
12949 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
12950 (fixuns_truncv4dfv4si2<mask_name>): .. this.
12951 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12953 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12955 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
12956 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
12959 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
12961 PR tree-optimization/109154
12962 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
12963 * gimple-range-gori.h (may_recompute_p): Add depth param.
12964 * params.opt (ranger-recompute-depth): New param.
12966 2023-03-30 Jason Merrill <jason@redhat.com>
12970 * cgraph.h: Move reset() from cgraph_node to symtab_node.
12971 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
12972 remove_from_same_comdat_group.
12974 2023-03-30 Richard Biener <rguenther@suse.de>
12976 PR tree-optimization/107561
12977 * gimple-ssa-warn-access.cc (get_size_range): Add flags
12978 argument and pass it on.
12979 (check_access): When querying for the size range pass
12980 SR_ALLOW_ZERO when the known destination size is zero.
12982 2023-03-30 Richard Biener <rguenther@suse.de>
12984 PR tree-optimization/109342
12985 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
12986 overload for edge. When that edge is a backedge use
12987 dominated_by_p directly.
12989 2023-03-30 liuhongt <hongtao.liu@intel.com>
12991 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
12992 vpblendd instead of vpblendw for V4SI under avx2.
12994 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
12996 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
12997 for many quick operands, for register-sized modes.
12999 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
13001 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
13004 2023-03-29 Martin Liska <mliska@suse.cz>
13006 PR bootstrap/109310
13007 * configure.ac: Emit a warning for deprecated option
13008 --enable-link-mutex.
13009 * configure: Regenerate.
13011 2023-03-29 Richard Biener <rguenther@suse.de>
13013 PR tree-optimization/109331
13014 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
13015 discover a taken edge make sure to cleanup the CFG.
13017 2023-03-29 Richard Biener <rguenther@suse.de>
13019 PR tree-optimization/109327
13020 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
13021 already removed stmts when draining to_remove.
13023 2023-03-29 Richard Biener <rguenther@suse.de>
13026 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
13027 so we can re-create the DIE for the type if required.
13029 2023-03-29 Jakub Jelinek <jakub@redhat.com>
13030 Richard Biener <rguenther@suse.de>
13032 PR tree-optimization/109301
13033 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
13034 properties_provided from PROP_gimple_opt_math to 0.
13035 (pass_data_expand_powcabs): Change properties_provided from 0 to
13036 PROP_gimple_opt_math.
13038 2023-03-29 Richard Biener <rguenther@suse.de>
13040 PR tree-optimization/109154
13041 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
13042 inverted condition specially by inverting at the caller.
13043 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
13045 2023-03-28 David Malcolm <dmalcolm@redhat.com>
13048 * diagnostic-show-locus.cc (column_range::column_range): Factor
13049 out assertion conditional into...
13050 (column_range::valid_p): ...this new function.
13051 (line_corrections::add_hint): Don't attempt to consolidate hints
13052 if it would lead to invalid column_range instances.
13054 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
13057 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
13058 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
13061 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
13063 PR rtl-optimization/109187
13064 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
13065 subtraction in three-way comparison.
13067 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
13069 PR tree-optimization/109265
13070 PR tree-optimization/109274
13071 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
13072 not create a relation record is op1 and op2 are the same symbol.
13073 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
13074 handler for this stmt, but create a new record only if this statement
13075 generates a relation based on the ranges.
13076 (gori_compute::compute_operand2_range): Ditto.
13077 * value-relation.h (value_relation::set_relation): Always create the
13078 record that is requested.
13080 2023-03-28 Richard Biener <rguenther@suse.de>
13082 PR tree-optimization/107087
13083 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
13084 executable regions to avoid useless work and to better
13085 propagate degenerate PHIs.
13087 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
13089 * config/i386/x-mingw32-utf8: update comments.
13091 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
13094 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
13095 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
13097 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
13099 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
13100 after inlining. Record which decls are loaded from. Fix handling
13101 of vops for loads and stores.
13102 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
13103 (aarch64_accesses_vector_load_decl_p): Likewise.
13104 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
13106 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
13107 that loads from a decl, treat vector stores to those decls as
13109 (aarch64_vector_costs::finish_cost): ...and in that case,
13110 if the vector code does nothing more than a store, give the
13111 prologue a zero cost as well.
13113 2023-03-28 Richard Biener <rguenther@suse.de>
13116 PR tree-optimization/108129
13117 * genmatch.cc (lower_for): For (match ...) delay
13118 substituting into the match operator if possible.
13119 (dt_operand::gen_gimple_expr): For user_id look at the
13120 first substitute for determining how to access operands.
13121 (dt_operand::gen_generic_expr): Likewise.
13122 (dt_node::gen_kids): Properly sort user_ids according
13123 to their substitutes.
13124 (dt_node::gen_kids_1): Code-generate user_id matching.
13126 2023-03-28 Jakub Jelinek <jakub@redhat.com>
13127 Jonathan Wakely <jwakely@redhat.com>
13129 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
13130 Use subcommand rather than sub-command in function comments.
13132 2023-03-28 Jakub Jelinek <jakub@redhat.com>
13134 PR tree-optimization/109154
13135 * value-range.h (frange::flush_denormals_to_zero): Make it public
13136 rather than private.
13137 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
13139 * range-op-float.cc (range_operator_float::fold_range): Call
13140 flush_denormals_to_zero.
13142 2023-03-28 Jakub Jelinek <jakub@redhat.com>
13144 PR middle-end/106190
13145 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
13146 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
13148 2023-03-28 Jakub Jelinek <jakub@redhat.com>
13150 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
13151 as 4th argument to set to avoid clear_nan and union_ calls.
13153 2023-03-28 Jakub Jelinek <jakub@redhat.com>
13156 * config/i386/i386.cc (assign_386_stack_local): For DImode
13157 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
13158 align 32 rather than 0 to assign_stack_local.
13160 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
13163 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
13164 on operand #3 to get the final condition code. Use std::swap.
13165 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
13166 (fucmp<gcond:code>8<P:mode>_vis): Move around.
13167 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
13168 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
13170 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
13172 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
13173 top-level sections.
13175 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
13177 * config.host: Pull in i386/x-mingw32-utf8 Makefile
13178 fragment and reference utf8rc-mingw32.o explicitly
13180 * config/i386/sym-mingw32.cc: prevent name mangling of
13182 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
13183 depend on manifest file explicitly.
13185 2023-03-28 Richard Biener <rguenther@suse.de>
13188 2023-03-27 Richard Biener <rguenther@suse.de>
13190 PR rtl-optimization/109237
13191 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
13193 2023-03-28 Richard Biener <rguenther@suse.de>
13195 * common.opt (gdwarf): Remove Negative(gdwarf-).
13197 2023-03-28 Richard Biener <rguenther@suse.de>
13199 * common.opt (gdwarf): Add RejectNegative.
13200 (gdwarf-): Likewise.
13204 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
13206 * config/cris/constraints.md ("T"): Correct to
13207 define_memory_constraint.
13209 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
13211 * config/cris/cris.md (BW2): New mode-iterator.
13212 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
13215 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
13217 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
13218 for possible eliminable compares.
13220 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
13222 * config/cris/constraints.md ("R"): Remove unused constraint.
13224 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
13226 PR gcov-profile/109297
13227 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
13228 (merge_stream_usage): Likewise.
13229 (overlap_usage): Likewise.
13231 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
13234 * config/riscv/thead.md: Add missing mode specifiers.
13236 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
13237 Jiangning Liu <jiangning.liu@amperecomputing.com>
13238 Manolis Tsamis <manolis.tsamis@vrull.eu>
13240 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
13242 2023-03-27 Richard Biener <rguenther@suse.de>
13244 PR rtl-optimization/109237
13245 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
13247 2023-03-27 Richard Biener <rguenther@suse.de>
13250 * lto-wrapper.cc (run_gcc): Parse alternate debug options
13251 as well, they always enable debug.
13253 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
13256 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
13258 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
13260 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
13263 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
13264 than zero when calling vec_sld.
13265 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
13266 zero when calling vec_sld.
13267 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
13268 than zero when calling vec_sld.
13270 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
13272 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
13273 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
13274 loops are represented and which fields are vectors. Add
13275 documentation for OMP_FOR_PRE_BODY field. Document internal
13276 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
13277 * tree.def (OMP_FOR): Make documentation consistent with the
13278 Texinfo manual, to fill some gaps and correct errors.
13280 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
13283 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
13284 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
13285 (handle_move_double): Call it before handle_movsi.
13286 * config/m68k/m68k-protos.h: Declare it.
13288 2023-03-26 Jakub Jelinek <jakub@redhat.com>
13290 PR tree-optimization/109230
13291 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
13293 2023-03-26 Jakub Jelinek <jakub@redhat.com>
13296 * predict.cc (compute_function_frequency): Don't call
13297 warn_function_cold if function already has cold attribute.
13299 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
13301 * doc/install.texi: Remove anachronistic note
13302 related to languages built and separate source tarballs.
13304 2023-03-25 David Malcolm <dmalcolm@redhat.com>
13307 * diagnostic-format-sarif.cc (read_until_eof): Delete.
13308 (maybe_read_file): Delete.
13309 (sarif_builder::maybe_make_artifact_content_object): Use
13310 get_source_file_content rather than maybe_read_file.
13311 Reject it if it's not valid UTF-8.
13312 * input.cc (file_cache_slot::get_full_file_content): New.
13313 (get_source_file_content): New.
13314 (selftest::check_cpp_valid_utf8_p): New.
13315 (selftest::test_cpp_valid_utf8_p): New.
13316 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
13317 * input.h (get_source_file_content): New prototype.
13319 2023-03-24 David Malcolm <dmalcolm@redhat.com>
13321 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
13323 (Special Functions for Debugging the Analyzer): Convert to a
13324 table, and rewrite in places.
13325 (Other Debugging Techniques): Add notes on how to compare two
13326 different exploded graphs.
13328 2023-03-24 David Malcolm <dmalcolm@redhat.com>
13331 * json.cc: Update comments to indicate that we now preserve
13332 insertion order of keys within objects.
13333 (object::print): Traverse keys in insertion order.
13334 (object::set): Preserve insertion order of keys.
13335 (selftest::test_writing_objects): Add an additional key to verify
13336 that we preserve insertion order.
13337 * json.h (object::m_keys): New field.
13339 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
13341 PR tree-optimization/109238
13342 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
13343 predecessors which this block dominates.
13345 2023-03-24 Richard Biener <rguenther@suse.de>
13347 PR tree-optimization/106912
13348 * tree-profile.cc (tree_profiling): Update stmts only when
13349 profiling or testing coverage. Make sure to update calls
13350 fntype, stripping 'const' there.
13352 2023-03-24 Jakub Jelinek <jakub@redhat.com>
13354 PR middle-end/109258
13355 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
13356 if target == const0_rtx.
13358 2023-03-24 Alexandre Oliva <oliva@adacore.com>
13360 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
13361 Document options and effective targets.
13363 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
13365 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
13368 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
13370 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
13371 non-earlyclobber alternative.
13373 2023-03-23 Andrew Pinski <apinski@marvell.com>
13376 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
13379 2023-03-23 Richard Biener <rguenther@suse.de>
13381 PR tree-optimization/107569
13382 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
13383 Do not push SSA names with zero uses as available leader.
13384 (process_bb): Likewise.
13386 2023-03-23 Richard Biener <rguenther@suse.de>
13388 PR tree-optimization/109262
13389 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
13390 combining a piecewise complex load avoid touching loads
13391 that throw internally. Use fun, not cfun throughout.
13393 2023-03-23 Jakub Jelinek <jakub@redhat.com>
13395 * value-range.cc (irange::irange_union, irange::intersect): Fix
13396 comment spelling bugs.
13397 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
13398 * gimple-range-trace.h: Likewise.
13399 * gimple-range-edge.cc: Likewise.
13400 (gimple_outgoing_range_stmt_p,
13401 gimple_outgoing_range::switch_edge_range,
13402 gimple_outgoing_range::edge_range_p): Likewise.
13403 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
13404 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
13405 assume_query::assume_query, assume_query::calculate_phi): Likewise.
13406 * gimple-range-edge.h: Likewise.
13407 * value-range.h (Value_Range::set, Value_Range::lower_bound,
13408 Value_Range::upper_bound, frange::set_undefined): Likewise.
13409 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
13410 gori_compute): Likewise.
13411 * gimple-range-fold.h (fold_using_range): Likewise.
13412 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
13414 * gimple-range-gori.cc (range_def_chain::in_chain_p,
13415 range_def_chain::dump, gori_map::calculate_gori,
13416 gori_compute::compute_operand_range_switch,
13417 gori_compute::logical_combine, gori_compute::refine_using_relation,
13418 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
13420 * gimple-range.h: Likewise.
13421 (enable_ranger): Likewise.
13422 * range-op.h (empty_range_varying): Likewise.
13423 * value-query.h (value_query): Likewise.
13424 * gimple-range-cache.cc (block_range_cache::set_bb_range,
13425 block_range_cache::dump, ssa_global_cache::clear_global_range,
13426 temporal_cache::temporal_value, temporal_cache::current_p,
13427 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
13428 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
13430 * gimple-range-fold.cc (fur_edge::get_phi_operand,
13431 fur_stmt::get_operand, gimple_range_adjustment,
13432 fold_using_range::range_of_phi,
13433 fold_using_range::relation_fold_and_or): Likewise.
13434 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
13435 * value-query.cc (range_query::value_of_expr,
13436 range_query::value_on_edge, range_query::query_relation): Likewise.
13437 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
13438 intersect_range_with_nonzero_bits): Likewise.
13439 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
13440 exit_range): Likewise.
13441 * value-relation.h: Likewise.
13442 (equiv_oracle, relation_trio::relation_trio, value_relation,
13443 value_relation::value_relation, pe_min): Likewise.
13444 * range-op-float.cc (range_operator_float::rv_fold,
13445 frange_arithmetic, foperator_unordered_equal::op1_range,
13446 foperator_div::rv_fold): Likewise.
13447 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
13448 * value-relation.cc (equiv_oracle::query_relation,
13449 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
13450 value_relation::apply_transitive, relation_chain_head::find_relation,
13451 dom_oracle::query_relation, dom_oracle::find_relation_block,
13452 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
13453 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
13454 create_possibly_reversed_range, adjust_op1_for_overflow,
13455 operator_mult::wi_fold, operator_exact_divide::op1_range,
13456 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
13457 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
13458 range_op_lshift_tests): Likewise.
13460 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
13462 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
13463 (move_callee_saved_registers): Detect the bug condition early.
13465 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
13467 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
13468 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
13470 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
13471 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
13472 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
13473 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
13474 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
13476 2023-03-23 Jakub Jelinek <jakub@redhat.com>
13478 PR tree-optimization/109176
13479 * tree-vect-generic.cc (expand_vector_condition): If a has
13480 vector boolean type and is a comparison, also check if both
13481 the comparison and VEC_COND_EXPR could be successfully expanded
13484 2023-03-23 Pan Li <pan2.li@intel.com>
13485 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13489 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
13490 for vector mask modes.
13491 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
13492 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
13494 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
13496 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
13498 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13501 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
13502 (emit_vlmax_op): Ditto.
13503 * config/riscv/riscv-v.cc (get_sew): New function.
13504 (emit_vlmax_vsetvl): Adapt function.
13505 (emit_pred_op): Ditto.
13506 (emit_vlmax_op): Ditto.
13507 (emit_nonvlmax_op): Ditto.
13508 (legitimize_move): Fix LRA ICE.
13509 (gen_no_side_effects_vsetvl_rtx): Adapt function.
13510 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
13511 (@mov<VB:mode><P:mode>_lra): Ditto.
13512 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
13513 (*mov<VB:mode><P:mode>_lra): Ditto.
13515 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13518 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
13519 __riscv_vlenb support.
13521 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13522 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
13523 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
13525 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
13526 * config/riscv/riscv-vector-builtins.cc: Ditto.
13528 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13529 kito-cheng <kito.cheng@sifive.com>
13531 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
13532 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
13533 (pass_vsetvl::need_vsetvl): Fix bugs.
13534 (pass_vsetvl::backward_demand_fusion): Fix bugs.
13535 (pass_vsetvl::demand_fusion): Fix bugs.
13536 (eliminate_insn): Fix bugs.
13537 (insert_vsetvl): Ditto.
13538 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
13539 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
13540 * config/riscv/vector.md: Ditto.
13542 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13543 kito-cheng <kito.cheng@sifive.com>
13545 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
13546 * config/riscv/vector-iterators.md (nmsac): Ditto.
13552 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
13553 (@pred_mul_plus<mode>): Ditto.
13554 (*pred_madd<mode>): Ditto.
13555 (*pred_macc<mode>): Ditto.
13556 (*pred_mul_plus<mode>): Ditto.
13557 (@pred_mul_plus<mode>_scalar): Ditto.
13558 (*pred_madd<mode>_scalar): Ditto.
13559 (*pred_macc<mode>_scalar): Ditto.
13560 (*pred_mul_plus<mode>_scalar): Ditto.
13561 (*pred_madd<mode>_extended_scalar): Ditto.
13562 (*pred_macc<mode>_extended_scalar): Ditto.
13563 (*pred_mul_plus<mode>_extended_scalar): Ditto.
13564 (@pred_minus_mul<mode>): Ditto.
13565 (*pred_<madd_nmsub><mode>): Ditto.
13566 (*pred_nmsub<mode>): Ditto.
13567 (*pred_<macc_nmsac><mode>): Ditto.
13568 (*pred_nmsac<mode>): Ditto.
13569 (*pred_mul_<optab><mode>): Ditto.
13570 (*pred_minus_mul<mode>): Ditto.
13571 (@pred_mul_<optab><mode>_scalar): Ditto.
13572 (@pred_minus_mul<mode>_scalar): Ditto.
13573 (*pred_<madd_nmsub><mode>_scalar): Ditto.
13574 (*pred_nmsub<mode>_scalar): Ditto.
13575 (*pred_<macc_nmsac><mode>_scalar): Ditto.
13576 (*pred_nmsac<mode>_scalar): Ditto.
13577 (*pred_mul_<optab><mode>_scalar): Ditto.
13578 (*pred_minus_mul<mode>_scalar): Ditto.
13579 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
13580 (*pred_nmsub<mode>_extended_scalar): Ditto.
13581 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
13582 (*pred_nmsac<mode>_extended_scalar): Ditto.
13583 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
13584 (*pred_minus_mul<mode>_extended_scalar): Ditto.
13585 (*pred_<madd_msub><mode>): Ditto.
13586 (*pred_<macc_msac><mode>): Ditto.
13587 (*pred_<madd_msub><mode>_scalar): Ditto.
13588 (*pred_<macc_msac><mode>_scalar): Ditto.
13589 (@pred_neg_mul_<optab><mode>): Ditto.
13590 (@pred_mul_neg_<optab><mode>): Ditto.
13591 (*pred_<nmadd_msub><mode>): Ditto.
13592 (*pred_<nmsub_nmadd><mode>): Ditto.
13593 (*pred_<nmacc_msac><mode>): Ditto.
13594 (*pred_<nmsac_nmacc><mode>): Ditto.
13595 (*pred_neg_mul_<optab><mode>): Ditto.
13596 (*pred_mul_neg_<optab><mode>): Ditto.
13597 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
13598 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
13599 (*pred_<nmadd_msub><mode>_scalar): Ditto.
13600 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
13601 (*pred_<nmacc_msac><mode>_scalar): Ditto.
13602 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
13603 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
13604 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
13605 (@pred_widen_neg_mul_<optab><mode>): Ditto.
13606 (@pred_widen_mul_neg_<optab><mode>): Ditto.
13607 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
13608 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
13610 2023-03-23 liuhongt <hongtao.liu@intel.com>
13612 * builtins.cc (builtin_memset_read_str): Replace
13613 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
13614 (builtin_memset_gen_str): Ditto.
13615 * config/i386/i386-expand.cc
13616 (ix86_convert_const_wide_int_to_broadcast): Replace
13617 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
13618 (ix86_expand_vector_move): Ditto.
13619 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
13621 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
13622 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
13623 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
13624 * doc/tm.texi.in: Ditto.
13625 * target.def: Ditto.
13627 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
13629 * lra.cc (lra): Do not repeat inheritance and live range splitting
13630 when asm error is found.
13632 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
13634 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
13635 (gcn_expand_dpp_distribute_even_insn)
13636 (gcn_expand_dpp_distribute_odd_insn): Declare.
13637 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
13638 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
13639 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
13640 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
13641 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
13642 (fms<mode>4_negop2): New patterns.
13643 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
13644 (gcn_expand_dpp_distribute_even_insn)
13645 (gcn_expand_dpp_distribute_odd_insn): New functions.
13646 * config/gcn/gcn.md: Add entries to unspec enum.
13648 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
13650 PR tree-optimization/109008
13651 * value-range.cc (frange::set): Add nan_state argument.
13652 * value-range.h (class nan_state): New.
13653 (frange::get_nan_state): New.
13655 2023-03-22 Martin Liska <mliska@suse.cz>
13657 * configure: Regenerate.
13659 2023-03-21 Joseph Myers <joseph@codesourcery.com>
13661 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
13664 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
13666 PR tree-optimization/109192
13667 * gimple-range-gori.cc (gori_compute::compute_operand_range):
13668 Terminate gori calculations if a relation is not relevant.
13669 * value-relation.h (value_relation::set_relation): Allow
13670 equality between op1 and op2 if they are the same.
13672 2023-03-21 Richard Biener <rguenther@suse.de>
13674 PR tree-optimization/109219
13675 * tree-vect-loop.cc (vectorizable_reduction): Check
13676 slp_node, not STMT_SLP_TYPE.
13677 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
13678 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
13679 Remove assertion on STMT_SLP_TYPE.
13681 2023-03-21 Jakub Jelinek <jakub@redhat.com>
13683 PR tree-optimization/109215
13684 * tree.h (enum special_array_member): Adjust comments for int_0
13686 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
13687 has zero sized element type and the array has variable number of
13688 elements or constant one or more elements.
13689 (component_ref_size): Adjust comments, formatting fix.
13691 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13693 * configure.ac: Add check for the Texinfo 6.8
13694 CONTENTS_OUTPUT_LOCATION customization variable and set it if
13696 * configure: Regenerate.
13697 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
13698 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
13699 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
13700 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
13702 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13704 * doc/extend.texi: Associate use_hazard_barrier_return index
13705 entry with its attribute.
13706 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
13709 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13711 * doc/implement-c.texi: Remove usage of @gol.
13712 * doc/invoke.texi: Ditto.
13713 * doc/sourcebuild.texi: Ditto.
13714 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
13715 texinfo.tex versions, the bug it was working around appears to
13718 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13720 * doc/include/texinfo.tex: Update to 2023-01-17.19.
13722 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13724 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
13725 @enddefbuiltin for defining built-in functions.
13726 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
13727 places where it should be used.
13729 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13731 * doc/extend.texi (Formatted Output Function Checking): New
13732 subsection for grouping together printf et al.
13733 (Exception handling) Fix missing @ sign before copyright
13734 header, which lead to the copyright line leaking into
13735 '(gcc)Exception handling'.
13736 * doc/gcc.texi: Set document language to en_US.
13737 (@copying): Wrap front cover texts in quotations, move in manual
13740 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
13742 * doc/gcc.texi: Add the Indices appendix, to make texinfo
13743 generate nice indices overview page.
13745 2023-03-21 Richard Biener <rguenther@suse.de>
13747 PR tree-optimization/109170
13748 * gimple-range-op.cc (cfn_pass_through_arg1): New.
13749 (gimple_range_op_handler::maybe_builtin_call): Handle
13750 __builtin_expect via cfn_pass_through_arg1.
13752 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
13755 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
13756 (init_float128_ieee): Delete code to switch complex multiply and divide
13758 (complex_multiply_builtin_code): New helper function.
13759 (complex_divide_builtin_code): Likewise.
13760 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
13761 of complex 128-bit multiply and divide built-in functions.
13763 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
13766 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
13768 2023-03-19 Jonny Grant <jg@jguk.org>
13770 * doc/extend.texi (Common Function Attributes) <nonnull>:
13773 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
13775 PR rtl-optimization/109179
13776 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
13777 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
13779 2023-03-17 Jakub Jelinek <jakub@redhat.com>
13782 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
13784 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
13785 to allocate_struct_function instead of false.
13786 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
13787 nor DECL_RESULT here. Pass true as ABSTRACT_P to
13788 push_struct_function. Call targetm.target_option.relayout_function
13790 (tree_function_versioning): Formatting fix.
13792 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
13794 * lra-constraints.cc: Include hooks.h.
13795 (combine_reload_insn): New function.
13796 (lra_constraints): Call it.
13798 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13799 kito-cheng <kito.cheng@sifive.com>
13801 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
13802 as legitimate value.
13803 * config/riscv/riscv-vector-builtins.cc
13804 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
13805 (function_expander::use_widen_ternop_insn): Ditto.
13806 * config/riscv/vector.md (@vundefined<mode>): New pattern.
13807 (pred_mul_<optab><mode>_undef_merge): Remove.
13808 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
13809 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
13810 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
13811 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
13813 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13816 * config/riscv/riscv.md: Fix subreg bug.
13818 2023-03-17 Jakub Jelinek <jakub@redhat.com>
13820 PR middle-end/108685
13821 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
13822 use its loop_father rather than BODY_BB's loop_father.
13823 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
13824 If broken_loop with ordered > collapse and at least one of those
13825 extra loops aren't guaranteed to have at least one iteration, change
13826 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
13827 loop_father to l0_bb's loop_father rather than l1_bb's.
13829 2023-03-17 Jakub Jelinek <jakub@redhat.com>
13832 * gdbhooks.py (TreePrinter.to_string): Wrap
13833 gdb.parse_and_eval('tree_code_type') in a try block, parse
13834 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
13835 raises exception. Update comments for the recent tree_code_type
13838 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
13840 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
13841 issues. Add more line breaks to example so it doesn't overflow
13844 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
13846 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
13847 line breaks in examples.
13848 <malloc>: Fix bad line breaks in running text, also copy-edit
13850 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
13851 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
13853 (C++ Dialect Options) <-fcontracts>: Add line break in example.
13854 <-Wctad-maybe-unsupported>: Likewise.
13855 <-Winvalid-constexpr>: Likewise.
13856 (Warning Options) <-Wdangling-pointer>: Likewise.
13857 <-Winterference-size>: Likewise.
13858 <-Wvla-parameter>: Likewise.
13859 (Static Analyzer Options): Fix bad line breaks in running text,
13860 plus add some missing markup.
13861 (Optimize Options) <openacc-privatization>: Fix more bad line
13862 breaks in running text.
13864 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
13866 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
13867 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
13868 (expand_vec_perm_2perm_pblendv): Ditto.
13870 2023-03-16 Martin Liska <mliska@suse.cz>
13872 PR middle-end/106133
13873 * gcc.cc (driver_handle_option): Use x_main_input_basename
13874 if x_dump_base_name is null.
13875 * opts.cc (common_handle_option): Likewise.
13877 2023-03-16 Richard Biener <rguenther@suse.de>
13879 PR tree-optimization/109123
13880 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
13881 Do not emit -Wuse-after-free late.
13882 (pass_waccess::check_call): Always check call pointer uses.
13884 2023-03-16 Richard Biener <rguenther@suse.de>
13886 PR tree-optimization/109141
13887 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
13888 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
13890 (renumber_gimple_stmt_uids): ... here and
13891 (renumber_gimple_stmt_uids_in_blocks): ... here.
13892 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
13893 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
13895 (pass_waccess::check_pointer_uses): Process all PHIs.
13897 2023-03-15 David Malcolm <dmalcolm@redhat.com>
13900 * diagnostic-format-sarif.cc (class sarif_invocation): New.
13901 (class sarif_ice_notification): New.
13902 (sarif_builder::m_invocation_obj): New field.
13903 (sarif_invocation::add_notification_for_ice): New.
13904 (sarif_invocation::prepare_to_flush): New.
13905 (sarif_ice_notification::sarif_ice_notification): New.
13906 (sarif_builder::sarif_builder): Add m_invocation_obj.
13907 (sarif_builder::end_diagnostic): Special-case DK_ICE and
13909 (sarif_builder::flush_to_file): Call prepare_to_flush on
13910 m_invocation_obj. Pass the latter to make_top_level_object.
13911 (sarif_builder::make_result_object): Move creation of "locations"
13913 (sarif_builder::make_locations_arr): ...this new function.
13914 (sarif_builder::make_top_level_object): Add "invocation_obj" param
13915 and pass it to make_run_object.
13916 (sarif_builder::make_run_object): Add "invocation_obj" param and
13918 (sarif_ice_handler): New callback.
13919 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
13920 * diagnostic.cc (diagnostic_initialize): Initialize new field
13922 (diagnostic_action_after_output): If it is set, make one attempt
13923 to call ice_handler_cb.
13924 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
13926 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
13928 * config/i386/i386-expand.cc (expand_vec_perm_blend):
13929 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
13930 and fix V2HImode handling.
13931 (expand_vec_perm_1): Try to emit BLEND instruction
13932 before MOVSS/MOVSD.
13933 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
13935 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
13937 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
13939 2023-03-15 Richard Biener <rguenther@suse.de>
13941 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
13942 Do not diagnose clobbers.
13944 2023-03-15 Richard Biener <rguenther@suse.de>
13946 PR tree-optimization/109139
13947 * tree-ssa-live.cc (remove_unused_locals): Look at the
13948 base address for unused decls on the LHS of .DEFERRED_INIT.
13950 2023-03-15 Xi Ruoyao <xry111@xry111.site>
13953 * builtins.cc (inline_string_cmp): Force the character
13954 difference into "result" pseudo-register, instead of reassign
13955 the pseudo-register.
13957 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
13959 * config.gcc: Add thead.o to RISC-V extra_objs.
13960 * config/riscv/peephole.md: Add mempair peephole passes.
13961 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
13963 (th_mempair_operands_p): Likewise.
13964 (th_mempair_order_operands): Likewise.
13965 (th_mempair_prepare_save_restore_operands): Likewise.
13966 (th_mempair_save_restore_regs): Likewise.
13967 (th_mempair_output_move): Likewise.
13968 * config/riscv/riscv.cc (riscv_save_reg): Move code.
13969 (riscv_restore_reg): Move code.
13970 (riscv_for_each_saved_reg): Add code to emit mempair insns.
13971 * config/riscv/t-riscv: Add thead.cc.
13972 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
13974 (*th_mempair_store_<GPR:mode>2): Likewise.
13975 (*th_mempair_load_extendsidi2): Likewise.
13976 (*th_mempair_load_zero_extendsidi2): Likewise.
13977 * config/riscv/thead.cc: New file.
13979 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
13981 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
13982 New constraint "th_f_fmv".
13983 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
13985 * config/riscv/riscv.cc (riscv_split_doubleword_move):
13986 Add split code for XTheadFmv.
13987 (riscv_secondary_memory_needed): XTheadFmv does not need
13989 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
13990 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
13991 movdf_hardfloat_rv32.
13992 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
13993 (th_fmv_x_w): New INSN.
13994 (th_fmv_x_hw): New INSN.
13996 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
13998 * config/riscv/riscv.md (maddhisi4): New expand.
13999 (msubhisi4): New expand.
14000 * config/riscv/thead.md (*th_mula<mode>): New pattern.
14001 (*th_mulawsi): New pattern.
14002 (*th_mulawsi2): New pattern.
14003 (*th_maddhisi4): New pattern.
14004 (*th_sextw_maddhisi4): New pattern.
14005 (*th_muls<mode>): New pattern.
14006 (*th_mulswsi): New pattern.
14007 (*th_mulswsi2): New pattern.
14008 (*th_msubhisi4): New pattern.
14009 (*th_sextw_msubhisi4): New pattern.
14011 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14013 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
14014 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
14016 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
14018 (riscv_expand_conditional_move): New function.
14019 (riscv_expand_conditional_move_onesided): New function.
14020 * config/riscv/riscv.md: Add support for XTheadCondMov.
14021 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
14022 support for XTheadCondMov.
14023 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
14025 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14027 * config/riscv/bitmanip.md (clzdi2): New expand.
14028 (clzsi2): New expand.
14029 (ctz<mode>2): New expand.
14030 (popcount<mode>2): New expand.
14031 (<bitmanip_optab>si2): Rename INSN.
14032 (*<bitmanip_optab>si2): Hide INSN name.
14033 (<bitmanip_optab>di2): Rename INSN.
14034 (*<bitmanip_optab>di2): Hide INSN name.
14035 (rotrsi3): Remove INSN.
14036 (rotr<mode>3): Add expand.
14037 (*rotrsi3): New INSN.
14038 (rotrdi3): Rename INSN.
14039 (*rotrdi3): Hide INSN name.
14040 (rotrsi3_sext): Rename INSN.
14041 (*rotrsi3_sext): Hide INSN name.
14042 (bswap<mode>2): Remove INSN.
14043 (bswapdi2): Add expand.
14044 (bswapsi2): Add expand.
14045 (*bswap<mode>2): Hide INSN name.
14046 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
14048 * config/riscv/riscv.md (extv<mode>): New expand.
14049 (extzv<mode>): New expand.
14050 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
14051 (*th_ext<mode>): New INSN.
14052 (*th_extu<mode>): New INSN.
14053 (*th_clz<mode>2): New INSN.
14054 (*th_rev<mode>2): New INSN.
14056 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14058 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
14059 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
14061 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14063 * config/riscv/riscv.md: Include thead.md
14064 * config/riscv/thead.md: New file.
14066 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14068 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
14070 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
14072 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
14073 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
14074 (MASK_XTHEADBB): New.
14075 (MASK_XTHEADBS): New.
14076 (MASK_XTHEADCMO): New.
14077 (MASK_XTHEADCONDMOV): New.
14078 (MASK_XTHEADFMEMIDX): New.
14079 (MASK_XTHEADFMV): New.
14080 (MASK_XTHEADINT): New.
14081 (MASK_XTHEADMAC): New.
14082 (MASK_XTHEADMEMIDX): New.
14083 (MASK_XTHEADMEMPAIR): New.
14084 (MASK_XTHEADSYNC): New.
14085 (TARGET_XTHEADBA): New.
14086 (TARGET_XTHEADBB): New.
14087 (TARGET_XTHEADBS): New.
14088 (TARGET_XTHEADCMO): New.
14089 (TARGET_XTHEADCONDMOV): New.
14090 (TARGET_XTHEADFMEMIDX): New.
14091 (TARGET_XTHEADFMV): New.
14092 (TARGET_XTHEADINT): New.
14093 (TARGET_XTHEADMAC): New.
14094 (TARGET_XTHEADMEMIDX): New.
14095 (TARGET_XTHEADMEMPAIR): new.
14096 (TARGET_XTHEADSYNC): New.
14097 * config/riscv/riscv.opt: Add riscv_xthead_subext.
14099 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
14102 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
14103 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
14104 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
14106 2023-03-14 Jakub Jelinek <jakub@redhat.com>
14109 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
14110 when lo is equal to dhi and hi is a MEM which uses dlo register.
14112 2023-03-14 Martin Jambor <mjambor@suse.cz>
14115 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
14116 global0 instead of zeroing when it does not have as many counts as
14119 2023-03-14 Martin Jambor <mjambor@suse.cz>
14122 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
14123 ipa count, remove assert, lenient_count_portion_handling, dump
14124 also orig_node_count.
14126 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
14128 * config/i386/i386-expand.cc (expand_vec_perm_movs):
14129 Handle V2SImode for TARGET_MMX_WITH_SSE.
14130 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
14131 using V2FI mode iterator to handle both V2SI and V2SF modes.
14133 2023-03-14 Sam James <sam@gentoo.org>
14135 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
14136 including <sstream> earlier.
14137 * system.h: Add INCLUDE_SSTREAM.
14139 2023-03-14 Richard Biener <rguenther@suse.de>
14141 * tree-ssa-live.cc (remove_unused_locals): Do not treat
14142 the .DEFERRED_INIT of a variable as use, instead remove
14143 that if it is the only use.
14145 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
14147 PR rtl-optimization/107762
14148 * expr.cc (emit_group_store): Revert latest change.
14150 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
14152 PR tree-optimization/109005
14153 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
14154 aggregate type check.
14156 2023-03-14 Jakub Jelinek <jakub@redhat.com>
14158 PR tree-optimization/109115
14159 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
14160 r.upper_bound () on r.undefined_p () range.
14162 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
14164 PR tree-optimization/106896
14165 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
14166 implementatoin with probability_in; avoid some asserts.
14168 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
14170 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
14172 2023-03-13 Sean Bright <sean@seanbright.com>
14174 * doc/invoke.texi (Warning Options): Remove errant 'See'
14177 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14179 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
14180 REG_OK_FOR_BASE_P): Remove.
14182 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14184 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
14185 (=vd,vd,vr,vr): Ditto.
14186 * config/riscv/vector.md: Ditto.
14188 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14190 * config/riscv/riscv-vector-builtins.cc
14191 (function_expander::use_compare_insn): Add operand predicate check.
14193 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14195 * config/riscv/vector.md: Fine tune RA constraints.
14197 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
14199 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
14200 hsaco assemble/link.
14202 2023-03-13 Richard Biener <rguenther@suse.de>
14204 PR tree-optimization/109046
14205 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
14206 piecewise complex loads.
14208 2023-03-12 Jakub Jelinek <jakub@redhat.com>
14210 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
14211 (aarch64_bf16_ptr_type_node): Adjust comment.
14212 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
14213 bfloat16_type_node rather than aarch64_bf16_type_node.
14214 (aarch64_libgcc_floating_mode_supported_p,
14215 aarch64_scalar_mode_supported_p): Also support BFmode.
14216 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
14217 (aarch64_invalid_binary_op): Remove BFmode related rejections.
14218 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
14219 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
14220 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
14221 aarch64_bf16_type_node.
14222 (aarch64_init_simd_builtin_types): Likewise.
14223 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
14224 which is created in tree.cc already.
14225 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
14227 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
14229 PR middle-end/109031
14230 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
14231 ensure that the type of x is as wide or wider than the type of a.
14233 2023-03-12 Tamar Christina <tamar.christina@arm.com>
14236 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
14237 (*bitmask_shift_plus<mode>): New.
14238 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
14239 (@aarch64_bitmask_udiv<mode>3): Remove.
14240 * config/aarch64/aarch64.cc
14241 (aarch64_vectorize_can_special_div_by_constant,
14242 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
14243 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
14244 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
14246 2023-03-12 Tamar Christina <tamar.christina@arm.com>
14249 * target.def (preferred_div_as_shifts_over_mult): New.
14250 * doc/tm.texi.in: Document it.
14251 * doc/tm.texi: Regenerate.
14252 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
14253 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
14254 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
14256 2023-03-12 Tamar Christina <tamar.christina@arm.com>
14257 Richard Sandiford <richard.sandiford@arm.com>
14260 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
14263 2023-03-12 Tamar Christina <tamar.christina@arm.com>
14264 Andrew MacLeod <amacleod@redhat.com>
14267 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
14268 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
14270 (gimple_range_op_handler::maybe_non_standard): New.
14271 * range-op.cc (class operator_widen_plus_signed,
14272 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
14273 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
14274 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
14275 operator_widen_mult_unsigned::wi_fold,
14276 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
14277 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
14278 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
14279 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
14281 2023-03-12 Tamar Christina <tamar.christina@arm.com>
14284 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
14285 * doc/tm.texi.in: Likewise.
14286 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
14287 * expmed.cc (expand_divmod): Likewise.
14288 * expmed.h (expand_divmod): Likewise.
14289 * expr.cc (force_operand, expand_expr_divmod): Likewise.
14290 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
14291 * target.def (can_special_div_by_const): Remove.
14292 * target.h: Remove tree-core.h include
14293 * targhooks.cc (default_can_special_div_by_const): Remove.
14294 * targhooks.h (default_can_special_div_by_const): Remove.
14295 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
14296 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
14297 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
14299 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
14301 * doc/install.texi2html: Fix issue number typo in comment.
14303 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
14305 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
14308 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
14310 * doc/invoke.texi (Optimize Options): Add markup to
14311 description of asan-kernel-mem-intrinsic-prefix, and clarify
14314 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
14316 * doc/extend.texi (Named Address Spaces): Drop a redundant link
14319 2023-03-11 Jeff Law <jlaw@ventanamicro>
14322 * doc/extend.texi: Clarify Attribute Syntax a bit.
14324 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
14326 * doc/install.texi (Prerequisites): Suggest using newer versions
14328 (Final install): Clean up and modernize discussion of how to
14329 build or obtain the GCC manuals.
14330 * doc/install.texi2html: Update comment to point to the PR instead
14331 of "makeinfo 4.7 brokenness" (it's not specific to that version).
14333 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14336 * optabs.cc (expand_fix): For conversions from BFmode to integral,
14337 use shifts to convert it to SFmode first and then convert SFmode
14340 2023-03-10 Andrew Pinski <apinski@marvell.com>
14342 * config/aarch64/aarch64.md: Add a new define_split
14345 2023-03-10 Richard Biener <rguenther@suse.de>
14347 * tree-ssa-structalias.cc (solve_graph): Immediately
14348 iterate self-cycles.
14350 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14352 PR tree-optimization/109008
14353 * range-op-float.cc (float_widen_lhs_range): If not
14354 -frounding-math and not IBM double double format, extend lhs
14355 range just by 0.5ulp rather than 1ulp in each direction.
14357 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14360 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
14362 * config/i386/t-cygwin-w64: Remove.
14364 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14367 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
14368 C++14, don't declare as extern const arrays.
14369 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
14370 static constexpr member arrays for C++11 or C++14.
14371 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
14372 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
14373 (TREE_CODE_LENGTH): For C++11 or C++14 use
14374 tree_code_length_tmpl <0>::tree_code_length instead of
14376 * tree.cc (tree_code_type, tree_code_length): Remove.
14378 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14381 * common.opt (fcanon-prefix-map): New option.
14382 * opts.cc: Include file-prefix-map.h.
14383 (flag_canon_prefix_map): New variable.
14384 (common_handle_option): Handle OPT_fcanon_prefix_map.
14385 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
14386 * file-prefix-map.h (flag_canon_prefix_map): Declare.
14387 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
14389 (add_prefix_map): Initialize canonicalize member from
14390 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
14391 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
14392 use lrealpath result only for map->canonicalize map entries.
14393 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
14394 * opts-global.cc (handle_common_deferred_options): Clear
14395 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
14396 * doc/invoke.texi (-fcanon-prefix-map): Document.
14397 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
14398 see also for -fcanon-prefix-map.
14399 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
14401 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14404 * cgraphunit.cc (check_global_declaration): Don't warn for unused
14405 variables which have OPT_Wunused_variable warning suppressed.
14407 2023-03-10 Jakub Jelinek <jakub@redhat.com>
14409 PR tree-optimization/109008
14410 * range-op-float.cc (float_widen_lhs_range): If lb is
14411 minimum representable finite number or ub is maximum
14412 representable finite number, instead of widening it to
14413 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
14414 Temporarily clear flag_finite_math_only when canonicalizing
14417 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14419 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
14420 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
14421 (gimple_fold_builtin): Ditto.
14422 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
14423 (class vleff): Ditto.
14425 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14426 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
14428 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
14429 (struct fault_load_def): Ditto.
14431 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14432 * config/riscv/riscv-vector-builtins.cc
14433 (rvv_arg_type_info::get_tree_type): Add size_ptr.
14434 (gimple_folder::gimple_folder): New class.
14435 (gimple_folder::fold): Ditto.
14436 (gimple_fold_builtin): New function.
14437 (get_read_vl_instance): Ditto.
14438 (get_read_vl_decl): Ditto.
14439 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
14440 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
14441 (get_read_vl_instance): New function.
14442 (get_read_vl_decl): Ditto.
14443 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
14444 (read_vl_insn_p): Ditto.
14445 (available_occurrence_p): Ditto.
14446 (backward_propagate_worthwhile_p): Ditto.
14447 (gen_vsetvl_pat): Adapt for vleff support.
14448 (get_forward_read_vl_insn): New function.
14449 (get_backward_fault_first_load_insn): Ditto.
14450 (source_equal_p): Adapt for vleff support.
14451 (first_ratio_invalid_for_second_sew_p): Remove.
14452 (first_ratio_invalid_for_second_lmul_p): Ditto.
14453 (first_lmul_less_than_second_lmul_p): Ditto.
14454 (first_ratio_less_than_second_ratio_p): Ditto.
14455 (support_relaxed_compatible_p): New function.
14456 (vector_insn_info::operator>): Remove.
14457 (vector_insn_info::operator>=): Refine.
14458 (vector_insn_info::parse_insn): Adapt for vleff support.
14459 (vector_insn_info::compatible_p): Ditto.
14460 (vector_insn_info::update_fault_first_load_avl): New function.
14461 (pass_vsetvl::transfer_after): Adapt for vleff support.
14462 (pass_vsetvl::demand_fusion): Ditto.
14463 (pass_vsetvl::cleanup_insns): Ditto.
14464 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
14465 redundant condtions.
14466 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
14467 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
14468 * config/riscv/riscv.md: Adapt for vleff support.
14469 * config/riscv/t-riscv: Ditto.
14470 * config/riscv/vector-iterators.md: New iterator.
14471 * config/riscv/vector.md (read_vlsi): New pattern.
14472 (read_vldi_zero_extend): Ditto.
14473 (@pred_fault_load<mode>): Ditto.
14475 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14477 * config/riscv/riscv-vector-builtins.cc
14478 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
14479 (function_expander::use_widen_ternop_insn): Ditto.
14480 * optabs.cc (maybe_gen_insn): Extend nops handling.
14482 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14484 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
14485 patterns according to RVV ISA.
14486 * config/riscv/vector-iterators.md: New iterators.
14487 * config/riscv/vector.md
14488 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
14489 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
14490 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
14491 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
14492 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
14493 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
14494 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
14495 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
14496 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
14497 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
14498 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
14499 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
14500 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
14501 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
14503 2023-03-10 Michael Collison <collison@rivosinc.com>
14505 * tree-vect-loop-manip.cc (vect_do_peeling): Use
14506 result of constant_lower_bound instead of vf for the lower
14507 bound of the epilog loop trip count.
14509 2023-03-09 Tamar Christina <tamar.christina@arm.com>
14511 * passes.cc (emergency_dump_function): Finish graph generation.
14513 2023-03-09 Tamar Christina <tamar.christina@arm.com>
14515 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
14516 and bottom bit only.
14518 2023-03-09 Andrew Pinski <apinski@marvell.com>
14520 PR tree-optimization/108980
14521 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
14522 Reorgnize the call to warning for not strict flexible arrays
14523 to be before the check of warned.
14525 2023-03-09 Jason Merrill <jason@redhat.com>
14527 * doc/extend.texi: Comment out __is_deducible docs.
14529 2023-03-09 Jason Merrill <jason@redhat.com>
14532 * doc/extend.texi (Type Traits):: Document __is_deducible.
14534 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
14537 * config.host: add object for x86_64-*-mingw*.
14538 * config/i386/sym-mingw32.cc: dummy file to attach
14540 * config/i386/utf8-mingw32.rc: windres resource file.
14541 * config/i386/winnt-utf8.manifest: XML manifest to
14543 * config/i386/x-mingw32: reference to x-mingw32-utf8.
14544 * config/i386/x-mingw32-utf8: Makefile fragment to
14545 embed UTF-8 manifest.
14547 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
14549 * lra-constraints.cc (process_alt_operands): Use operand modes for
14550 clobbered regs instead of the biggest access mode.
14552 2023-03-09 Richard Biener <rguenther@suse.de>
14554 PR middle-end/108995
14555 * fold-const.cc (extract_muldiv_1): Avoid folding
14556 (CST * b) / CST2 when sanitizing overflow and we rely on
14557 overflow being undefined.
14559 2023-03-09 Jakub Jelinek <jakub@redhat.com>
14560 Richard Biener <rguenther@suse.de>
14562 PR tree-optimization/109008
14563 * range-op-float.cc (float_widen_lhs_range): New function.
14564 (foperator_plus::op1_range, foperator_minus::op1_range,
14565 foperator_minus::op2_range, foperator_mult::op1_range,
14566 foperator_div::op1_range, foperator_div::op2_range): Use it.
14568 2023-03-07 Jonathan Grant <jg@jguk.org>
14571 * doc/invoke.texi (Instrumentation Options): Clarify
14572 LeakSanitizer behavior.
14574 2023-03-07 Benson Muite <benson_muite@emailplus.org>
14576 * doc/install.texi (Prerequisites): Add link to gmplib.org.
14578 2023-03-07 Pan Li <pan2.li@intel.com>
14579 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14583 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
14585 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
14586 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
14587 * genmodes.cc (adj_precision): New.
14588 (ADJUST_PRECISION): New.
14589 (emit_mode_adjustments): Handle ADJUST_PRECISION.
14591 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
14593 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
14595 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
14597 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
14598 {s|u}{max|min} in QI, HI and DI modes.
14599 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
14600 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
14601 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
14602 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
14605 2023-03-06 Richard Biener <rguenther@suse.de>
14607 PR tree-optimization/109025
14608 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
14609 the inner LC PHI use is the inner loop PHI latch definition
14610 before classifying an outer PHI as double reduction.
14612 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
14615 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
14617 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
14618 (X86_TUNE_USE_SCATTER): Likewise.
14620 2023-03-06 Xi Ruoyao <xry111@xry111.site>
14623 * config/loongarch/loongarch.h (FP_RETURN): Use
14624 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
14625 (UNITS_PER_FP_ARG): Likewise.
14627 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14629 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
14630 (pass_vsetvl::backward_demand_fusion): Ditto.
14632 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
14633 SiYu Wu <siyu@isrc.iscas.ac.cn>
14635 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
14637 (riscv_sm3p1_<mode>): New.
14638 (riscv_sm4ed_<mode>): New.
14639 (riscv_sm4ks_<mode>): New.
14640 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
14641 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
14642 ZKSH's built-in functions.
14644 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
14645 SiYu Wu <siyu@isrc.iscas.ac.cn>
14647 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
14648 (riscv_sha256sig1_<mode>): New.
14649 (riscv_sha256sum0_<mode>): New.
14650 (riscv_sha256sum1_<mode>): New.
14651 (riscv_sha512sig0h): New.
14652 (riscv_sha512sig0l): New.
14653 (riscv_sha512sig1h): New.
14654 (riscv_sha512sig1l): New.
14655 (riscv_sha512sum0r): New.
14656 (riscv_sha512sum1r): New.
14657 (riscv_sha512sig0): New.
14658 (riscv_sha512sig1): New.
14659 (riscv_sha512sum0): New.
14660 (riscv_sha512sum1): New.
14661 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
14662 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
14663 built-in functions.
14664 (DIRECT_BUILTIN): Add new.
14666 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
14667 SiYu Wu <siyu@isrc.iscas.ac.cn>
14669 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
14671 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
14672 (riscv_aes32dsmi): New.
14673 (riscv_aes64ds): New.
14674 (riscv_aes64dsm): New.
14675 (riscv_aes64im): New.
14676 (riscv_aes64ks1i): New.
14677 (riscv_aes64ks2): New.
14678 (riscv_aes32esi): New.
14679 (riscv_aes32esmi): New.
14680 (riscv_aes64es): New.
14681 (riscv_aes64esm): New.
14682 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
14683 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
14684 ZKNE's built-in functions.
14686 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
14687 SiYu Wu <siyu@isrc.iscas.ac.cn>
14689 * config/riscv/bitmanip.md: Add ZBKB's instructions.
14690 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
14691 * config/riscv/riscv.md: Add new type for crypto instructions.
14692 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
14694 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
14695 extension's built-in function file.
14697 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
14698 SiYu Wu <siyu@isrc.iscas.ac.cn>
14700 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
14701 (RISCV_FTYPE_NAME3): New.
14702 (RISCV_ATYPE_QI): New.
14703 (RISCV_ATYPE_HI): New.
14704 (RISCV_FTYPE_ATYPES2): New.
14705 (RISCV_FTYPE_ATYPES3): New.
14706 * config/riscv/riscv-ftypes.def (2): New.
14709 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
14711 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
14714 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14715 kito-cheng <kito.cheng@sifive.com>
14717 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
14718 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
14719 (riscv_register_pragmas): Add builtin function check call.
14720 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
14721 (check_builtin_call): New function.
14722 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
14723 (class vreinterpret): Ditto.
14724 (class vlmul_ext): Ditto.
14725 (class vlmul_trunc): Ditto.
14726 (class vset): Ditto.
14727 (class vget): Ditto.
14729 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14730 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
14746 (vundefined): Add new intrinsic.
14747 (vreinterpret): Ditto.
14748 (vlmul_ext): Ditto.
14749 (vlmul_trunc): Ditto.
14752 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
14753 (struct narrow_alu_def): Ditto.
14754 (struct reduc_alu_def): Ditto.
14755 (struct vundefined_def): Ditto.
14756 (struct misc_def): Ditto.
14757 (struct vset_def): Ditto.
14758 (struct vget_def): Ditto.
14760 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14761 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
14762 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
14763 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
14764 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
14765 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
14766 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
14767 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
14768 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
14769 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
14770 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
14771 (DEF_RVV_LMUL1_OPS): Ditto.
14772 (DEF_RVV_LMUL2_OPS): Ditto.
14773 (DEF_RVV_LMUL4_OPS): Ditto.
14774 (vint16mf4_t): Ditto.
14775 (vint16mf2_t): Ditto.
14776 (vint16m1_t): Ditto.
14777 (vint16m2_t): Ditto.
14778 (vint16m4_t): Ditto.
14779 (vint16m8_t): Ditto.
14780 (vint32mf2_t): Ditto.
14781 (vint32m1_t): Ditto.
14782 (vint32m2_t): Ditto.
14783 (vint32m4_t): Ditto.
14784 (vint32m8_t): Ditto.
14785 (vint64m1_t): Ditto.
14786 (vint64m2_t): Ditto.
14787 (vint64m4_t): Ditto.
14788 (vint64m8_t): Ditto.
14789 (vuint16mf4_t): Ditto.
14790 (vuint16mf2_t): Ditto.
14791 (vuint16m1_t): Ditto.
14792 (vuint16m2_t): Ditto.
14793 (vuint16m4_t): Ditto.
14794 (vuint16m8_t): Ditto.
14795 (vuint32mf2_t): Ditto.
14796 (vuint32m1_t): Ditto.
14797 (vuint32m2_t): Ditto.
14798 (vuint32m4_t): Ditto.
14799 (vuint32m8_t): Ditto.
14800 (vuint64m1_t): Ditto.
14801 (vuint64m2_t): Ditto.
14802 (vuint64m4_t): Ditto.
14803 (vuint64m8_t): Ditto.
14804 (vint8mf4_t): Ditto.
14805 (vint8mf2_t): Ditto.
14806 (vint8m1_t): Ditto.
14807 (vint8m2_t): Ditto.
14808 (vint8m4_t): Ditto.
14809 (vint8m8_t): Ditto.
14810 (vuint8mf4_t): Ditto.
14811 (vuint8mf2_t): Ditto.
14812 (vuint8m1_t): Ditto.
14813 (vuint8m2_t): Ditto.
14814 (vuint8m4_t): Ditto.
14815 (vuint8m8_t): Ditto.
14816 (vint8mf8_t): Ditto.
14817 (vuint8mf8_t): Ditto.
14818 (vfloat32mf2_t): Ditto.
14819 (vfloat32m1_t): Ditto.
14820 (vfloat32m2_t): Ditto.
14821 (vfloat32m4_t): Ditto.
14822 (vfloat64m1_t): Ditto.
14823 (vfloat64m2_t): Ditto.
14824 (vfloat64m4_t): Ditto.
14825 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
14826 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
14827 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
14828 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
14829 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
14830 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
14831 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
14832 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
14833 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
14834 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
14835 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
14836 (DEF_RVV_LMUL1_OPS): Ditto.
14837 (DEF_RVV_LMUL2_OPS): Ditto.
14838 (DEF_RVV_LMUL4_OPS): Ditto.
14839 (DEF_RVV_TYPE_INDEX): Ditto.
14840 (required_extensions_p): Adapt for new intrinsic support/
14841 (get_required_extensions): New function.
14842 (check_required_extensions): Ditto.
14843 (unsigned_base_type_p): Remove.
14844 (rvv_arg_type_info::get_scalar_ptr_type): New function.
14845 (get_mode_for_bitsize): Remove.
14846 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
14847 (rvv_arg_type_info::get_base_vector_type): Ditto.
14848 (rvv_arg_type_info::get_function_type_index): Ditto.
14849 (DEF_RVV_BASE_TYPE): New def.
14850 (function_builder::apply_predication): New class.
14851 (function_expander::mask_mode): Ditto.
14852 (function_checker::function_checker): Ditto.
14853 (function_checker::report_non_ice): Ditto.
14854 (function_checker::report_out_of_range): Ditto.
14855 (function_checker::require_immediate): Ditto.
14856 (function_checker::require_immediate_range): Ditto.
14857 (function_checker::check): Ditto.
14858 (check_builtin_call): Ditto.
14859 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
14860 (DEF_RVV_BASE_TYPE): Ditto.
14861 (DEF_RVV_TYPE_INDEX): Ditto.
14862 (vbool64_t): Ditto.
14863 (vbool32_t): Ditto.
14864 (vbool16_t): Ditto.
14869 (vuint8mf8_t): Ditto.
14870 (vuint8mf4_t): Ditto.
14871 (vuint8mf2_t): Ditto.
14872 (vuint8m1_t): Ditto.
14873 (vuint8m2_t): Ditto.
14874 (vint8m4_t): Ditto.
14875 (vuint8m4_t): Ditto.
14876 (vint8m8_t): Ditto.
14877 (vuint8m8_t): Ditto.
14878 (vint16mf4_t): Ditto.
14879 (vuint16mf2_t): Ditto.
14880 (vuint16m1_t): Ditto.
14881 (vuint16m2_t): Ditto.
14882 (vuint16m4_t): Ditto.
14883 (vuint16m8_t): Ditto.
14884 (vint32mf2_t): Ditto.
14885 (vuint32m1_t): Ditto.
14886 (vuint32m2_t): Ditto.
14887 (vuint32m4_t): Ditto.
14888 (vuint32m8_t): Ditto.
14889 (vuint64m1_t): Ditto.
14890 (vuint64m2_t): Ditto.
14891 (vuint64m4_t): Ditto.
14892 (vuint64m8_t): Ditto.
14893 (vfloat32mf2_t): Ditto.
14894 (vfloat32m1_t): Ditto.
14895 (vfloat32m2_t): Ditto.
14896 (vfloat32m4_t): Ditto.
14897 (vfloat32m8_t): Ditto.
14898 (vfloat64m1_t): Ditto.
14899 (vfloat64m4_t): Ditto.
14900 (vector): Move it def.
14903 (signed_vector): Ditto.
14904 (unsigned_vector): Ditto.
14905 (unsigned_scalar): Ditto.
14906 (vector_ptr): Ditto.
14907 (scalar_ptr): Ditto.
14908 (scalar_const_ptr): Ditto.
14912 (unsigned_long): Ditto.
14914 (eew8_index): Ditto.
14915 (eew16_index): Ditto.
14916 (eew32_index): Ditto.
14917 (eew64_index): Ditto.
14918 (shift_vector): Ditto.
14919 (double_trunc_vector): Ditto.
14920 (quad_trunc_vector): Ditto.
14921 (oct_trunc_vector): Ditto.
14922 (double_trunc_scalar): Ditto.
14923 (double_trunc_signed_vector): Ditto.
14924 (double_trunc_unsigned_vector): Ditto.
14925 (double_trunc_unsigned_scalar): Ditto.
14926 (double_trunc_float_vector): Ditto.
14927 (float_vector): Ditto.
14928 (lmul1_vector): Ditto.
14929 (widen_lmul1_vector): Ditto.
14930 (eew8_interpret): Ditto.
14931 (eew16_interpret): Ditto.
14932 (eew32_interpret): Ditto.
14933 (eew64_interpret): Ditto.
14934 (vlmul_ext_x2): Ditto.
14935 (vlmul_ext_x4): Ditto.
14936 (vlmul_ext_x8): Ditto.
14937 (vlmul_ext_x16): Ditto.
14938 (vlmul_ext_x32): Ditto.
14939 (vlmul_ext_x64): Ditto.
14940 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
14941 (struct function_type_info): New function.
14942 (struct rvv_arg_type_info): Ditto.
14943 (class function_checker): New class.
14944 (rvv_arg_type_info::get_scalar_type): New function.
14945 (rvv_arg_type_info::get_vector_type): Ditto.
14946 (function_expander::ret_mode): New function.
14947 (function_checker::arg_mode): Ditto.
14948 (function_checker::ret_mode): Ditto.
14949 * config/riscv/t-riscv: Add generator.
14950 * config/riscv/vector-iterators.md: New iterators.
14951 * config/riscv/vector.md (vundefined<mode>): New pattern.
14952 (@vundefined<mode>): Ditto.
14953 (@vreinterpret<mode>): Ditto.
14954 (@vlmul_extx2<mode>): Ditto.
14955 (@vlmul_extx4<mode>): Ditto.
14956 (@vlmul_extx8<mode>): Ditto.
14957 (@vlmul_extx16<mode>): Ditto.
14958 (@vlmul_extx32<mode>): Ditto.
14959 (@vlmul_extx64<mode>): Ditto.
14960 (*vlmul_extx2<mode>): Ditto.
14961 (*vlmul_extx4<mode>): Ditto.
14962 (*vlmul_extx8<mode>): Ditto.
14963 (*vlmul_extx16<mode>): Ditto.
14964 (*vlmul_extx32<mode>): Ditto.
14965 (*vlmul_extx64<mode>): Ditto.
14966 * config/riscv/genrvv-type-indexer.cc: New file.
14968 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14970 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
14971 (slide1_sew64_helper): New function.
14972 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
14973 (get_unknown_min_value): Ditto.
14974 (force_vector_length_operand): Ditto.
14975 (gen_no_side_effects_vsetvl_rtx): Ditto.
14976 (get_vl_x2_rtx): Ditto.
14977 (slide1_sew64_helper): Ditto.
14978 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
14979 (class vrgather): Ditto.
14980 (class vrgatherei16): Ditto.
14981 (class vcompress): Ditto.
14983 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14984 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
14985 (vslidedown): Ditto.
14986 (vslide1up): Ditto.
14987 (vslide1down): Ditto.
14988 (vfslide1up): Ditto.
14989 (vfslide1down): Ditto.
14991 (vrgatherei16): Ditto.
14992 (vcompress): Ditto.
14993 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
14994 (vint8mf8_t): Ditto.
14995 (vint8mf4_t): Ditto.
14996 (vint8mf2_t): Ditto.
14997 (vint8m1_t): Ditto.
14998 (vint8m2_t): Ditto.
14999 (vint8m4_t): Ditto.
15000 (vint16mf4_t): Ditto.
15001 (vint16mf2_t): Ditto.
15002 (vint16m1_t): Ditto.
15003 (vint16m2_t): Ditto.
15004 (vint16m4_t): Ditto.
15005 (vint16m8_t): Ditto.
15006 (vint32mf2_t): Ditto.
15007 (vint32m1_t): Ditto.
15008 (vint32m2_t): Ditto.
15009 (vint32m4_t): Ditto.
15010 (vint32m8_t): Ditto.
15011 (vint64m1_t): Ditto.
15012 (vint64m2_t): Ditto.
15013 (vint64m4_t): Ditto.
15014 (vint64m8_t): Ditto.
15015 (vuint8mf8_t): Ditto.
15016 (vuint8mf4_t): Ditto.
15017 (vuint8mf2_t): Ditto.
15018 (vuint8m1_t): Ditto.
15019 (vuint8m2_t): Ditto.
15020 (vuint8m4_t): Ditto.
15021 (vuint16mf4_t): Ditto.
15022 (vuint16mf2_t): Ditto.
15023 (vuint16m1_t): Ditto.
15024 (vuint16m2_t): Ditto.
15025 (vuint16m4_t): Ditto.
15026 (vuint16m8_t): Ditto.
15027 (vuint32mf2_t): Ditto.
15028 (vuint32m1_t): Ditto.
15029 (vuint32m2_t): Ditto.
15030 (vuint32m4_t): Ditto.
15031 (vuint32m8_t): Ditto.
15032 (vuint64m1_t): Ditto.
15033 (vuint64m2_t): Ditto.
15034 (vuint64m4_t): Ditto.
15035 (vuint64m8_t): Ditto.
15036 (vfloat32mf2_t): Ditto.
15037 (vfloat32m1_t): Ditto.
15038 (vfloat32m2_t): Ditto.
15039 (vfloat32m4_t): Ditto.
15040 (vfloat32m8_t): Ditto.
15041 (vfloat64m1_t): Ditto.
15042 (vfloat64m2_t): Ditto.
15043 (vfloat64m4_t): Ditto.
15044 (vfloat64m8_t): Ditto.
15045 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
15046 * config/riscv/riscv.md: Adjust RVV instruction types.
15047 * config/riscv/vector-iterators.md (down): New iterator.
15048 (=vd,vr): New attribute.
15049 (UNSPEC_VSLIDE1UP): New unspec.
15050 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
15051 (*pred_slide<ud><mode>): Ditto.
15052 (*pred_slide<ud><mode>_extended): Ditto.
15053 (@pred_gather<mode>): Ditto.
15054 (@pred_gather<mode>_scalar): Ditto.
15055 (@pred_gatherei16<mode>): Ditto.
15056 (@pred_compress<mode>): Ditto.
15058 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15060 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
15062 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15064 * config/riscv/constraints.md (Wb1): New constraint.
15065 * config/riscv/predicates.md
15066 (vector_least_significant_set_mask_operand): New predicate.
15067 (vector_broadcast_mask_operand): Ditto.
15068 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
15069 (gen_scalar_move_mask): New function.
15070 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
15071 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
15072 (class vmv_s): Ditto.
15074 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15075 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
15079 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
15081 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15082 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
15083 (function_expander::use_exact_insn): New function.
15084 (function_expander::use_contiguous_load_insn): New function.
15085 (function_expander::use_contiguous_store_insn): New function.
15086 (function_expander::use_ternop_insn): New function.
15087 (function_expander::use_widen_ternop_insn): New function.
15088 (function_expander::use_scalar_move_insn): New function.
15089 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
15090 * config/riscv/riscv-vector-builtins.h
15091 (function_expander::add_scalar_move_mask_operand): New class.
15092 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
15093 (scalar_move_insn_p): Ditto.
15094 (has_vsetvl_killed_avl_p): Ditto.
15095 (anticipatable_occurrence_p): Ditto.
15096 (insert_vsetvl): Ditto.
15097 (get_vl_vtype_info): Ditto.
15098 (calculate_sew): Ditto.
15099 (calculate_vlmul): Ditto.
15100 (incompatible_avl_p): Ditto.
15101 (different_sew_p): Ditto.
15102 (different_lmul_p): Ditto.
15103 (different_ratio_p): Ditto.
15104 (different_tail_policy_p): Ditto.
15105 (different_mask_policy_p): Ditto.
15106 (possible_zero_avl_p): Ditto.
15107 (first_ratio_invalid_for_second_sew_p): Ditto.
15108 (first_ratio_invalid_for_second_lmul_p): Ditto.
15109 (second_ratio_invalid_for_first_sew_p): Ditto.
15110 (second_ratio_invalid_for_first_lmul_p): Ditto.
15111 (second_sew_less_than_first_sew_p): Ditto.
15112 (first_sew_less_than_second_sew_p): Ditto.
15113 (compare_lmul): Ditto.
15114 (second_lmul_less_than_first_lmul_p): Ditto.
15115 (first_lmul_less_than_second_lmul_p): Ditto.
15116 (first_ratio_less_than_second_ratio_p): Ditto.
15117 (second_ratio_less_than_first_ratio_p): Ditto.
15118 (DEF_INCOMPATIBLE_COND): Ditto.
15119 (greatest_sew): Ditto.
15120 (first_sew): Ditto.
15121 (second_sew): Ditto.
15122 (first_vlmul): Ditto.
15123 (second_vlmul): Ditto.
15124 (first_ratio): Ditto.
15125 (second_ratio): Ditto.
15126 (vlmul_for_first_sew_second_ratio): Ditto.
15127 (ratio_for_second_sew_first_vlmul): Ditto.
15128 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
15129 (always_unavailable): Ditto.
15130 (avl_unavailable_p): Ditto.
15131 (sew_unavailable_p): Ditto.
15132 (lmul_unavailable_p): Ditto.
15133 (ge_sew_unavailable_p): Ditto.
15134 (ge_sew_lmul_unavailable_p): Ditto.
15135 (ge_sew_ratio_unavailable_p): Ditto.
15136 (DEF_UNAVAILABLE_COND): Ditto.
15137 (same_sew_lmul_demand_p): Ditto.
15138 (propagate_avl_across_demands_p): Ditto.
15139 (reg_available_p): Ditto.
15140 (avl_info::has_non_zero_avl): Ditto.
15141 (vl_vtype_info::has_non_zero_avl): Ditto.
15142 (vector_insn_info::operator>=): Refactor.
15143 (vector_insn_info::parse_insn): Adjust for scalar move.
15144 (vector_insn_info::demand_vl_vtype): Remove.
15145 (vector_insn_info::compatible_p): New function.
15146 (vector_insn_info::compatible_avl_p): Ditto.
15147 (vector_insn_info::compatible_vtype_p): Ditto.
15148 (vector_insn_info::available_p): Ditto.
15149 (vector_insn_info::merge): Ditto.
15150 (vector_insn_info::fuse_avl): Ditto.
15151 (vector_insn_info::fuse_sew_lmul): Ditto.
15152 (vector_insn_info::fuse_tail_policy): Ditto.
15153 (vector_insn_info::fuse_mask_policy): Ditto.
15154 (vector_insn_info::dump): Ditto.
15155 (vector_infos_manager::release): Ditto.
15156 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
15157 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
15158 (pass_vsetvl::hard_empty_block_p): Ditto.
15159 (pass_vsetvl::backward_demand_fusion): Ditto.
15160 (pass_vsetvl::forward_demand_fusion): Ditto.
15161 (pass_vsetvl::refine_vsetvls): Ditto.
15162 (pass_vsetvl::cleanup_vsetvls): Ditto.
15163 (pass_vsetvl::commit_vsetvls): Ditto.
15164 (pass_vsetvl::propagate_avl): Ditto.
15165 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
15166 (struct demands_pair): Ditto.
15167 (struct demands_cond): Ditto.
15168 (struct demands_fuse_rule): Ditto.
15169 * config/riscv/vector-iterators.md: New iterator.
15170 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
15171 (*pred_broadcast<mode>): Ditto.
15172 (*pred_broadcast<mode>_extended_scalar): Ditto.
15173 (@pred_extract_first<mode>): Ditto.
15174 (*pred_extract_first<mode>): Ditto.
15175 (@pred_extract_first_trunc<mode>): Ditto.
15176 * config/riscv/riscv-vsetvl.def: New file.
15178 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
15180 * config/riscv/bitmanip.md: allow 0 constant in max/min
15183 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
15185 * config/riscv/bitmanip.md: Fix wrong index in the check.
15187 2023-03-04 Jakub Jelinek <jakub@redhat.com>
15189 PR middle-end/109006
15190 * vec.cc (test_auto_alias): Adjust comment for removal of
15192 * read-rtl-function.cc (function_reader::parse_block): Likewise.
15193 * gdbhooks.py: Likewise.
15195 2023-03-04 Jakub Jelinek <jakub@redhat.com>
15197 PR testsuite/108973
15198 * selftest-diagnostic.cc
15199 (test_diagnostic_context::test_diagnostic_context): Set
15200 caret_max_width to 80.
15202 2023-03-03 Alexandre Oliva <oliva@adacore.com>
15204 * gimple-ssa-warn-access.cc
15205 (pass_waccess::check_dangling_stores): Skip non-stores.
15207 2023-03-03 Alexandre Oliva <oliva@adacore.com>
15209 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
15210 after vmsr and vmrs, and lower the case of P0.
15212 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
15214 PR middle-end/109006
15215 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
15217 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
15219 PR middle-end/109006
15220 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
15222 2023-03-03 Jakub Jelinek <jakub@redhat.com>
15225 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
15226 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
15227 suppressed on stmt. For [static %E] warning, print access_nelts
15228 rather than access_size. Fix up comment wording.
15230 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
15232 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
15233 arch14 instead of z16.
15235 2023-03-03 Anthony Green <green@moxielogic.com>
15237 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
15239 2023-03-03 Anthony Green <green@moxielogic.com>
15241 * config/moxie/constraints.md (A, B, W): Change
15242 define_constraint to define_memory_constraint.
15244 2023-03-03 Xi Ruoyao <xry111@xry111.site>
15246 * toplev.cc (process_options): Fix the spelling of
15247 "-fstack-clash-protection".
15249 2023-03-03 Richard Biener <rguenther@suse.de>
15251 PR tree-optimization/109002
15252 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
15253 PHI-translate ANTIC_IN.
15255 2023-03-03 Jakub Jelinek <jakub@redhat.com>
15257 PR tree-optimization/108988
15258 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
15259 size_type_node before passing it as argument to fwrite. Formatting
15262 2023-03-03 Richard Biener <rguenther@suse.de>
15265 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
15266 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
15267 * config/i386/i386-features.h (scalar_chain::max_visits): New.
15268 (scalar_chain::build): Add bitmap parameter, return boolean.
15269 (scalar_chain::add_insn): Likewise.
15270 (scalar_chain::analyze_register_chain): Likewise.
15271 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
15272 Initialize max_visits.
15273 (scalar_chain::analyze_register_chain): When we exhaust
15274 max_visits, abort. Also abort when running into any
15276 (scalar_chain::add_insn): Propagate abort.
15277 (scalar_chain::build): Likewise. When aborting amend
15278 the set of disallowed insn with the insns set.
15279 (convert_scalars_to_vector): Adjust. Do not convert aborted
15282 2023-03-03 Richard Biener <rguenther@suse.de>
15285 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
15286 generate a DIE for a function scope static.
15288 2023-03-03 Alexandre Oliva <oliva@adacore.com>
15290 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
15292 2023-03-02 Jakub Jelinek <jakub@redhat.com>
15295 * target.h (emit_support_tinfos_callback): New typedef.
15296 * targhooks.h (default_emit_support_tinfos): Declare.
15297 * targhooks.cc (default_emit_support_tinfos): New function.
15298 * target.def (emit_support_tinfos): New target hook.
15299 * doc/tm.texi.in (emit_support_tinfos): Document it.
15300 * doc/tm.texi: Regenerated.
15301 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
15302 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
15304 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
15306 * ira-costs.cc: Include print-rtl.h.
15307 (record_reg_classes, scan_one_insn): Add code to print debug info.
15308 (record_operand_costs): Find and use smaller cost for hard reg
15311 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
15312 Paul-Antoine Arras <pa@codesourcery.com>
15314 * builtins.cc (mathfn_built_in_explicit): New.
15315 * config/gcn/gcn.cc: Include case-cfn-macros.h.
15316 (mathfn_built_in_explicit): Add prototype.
15317 (gcn_vectorize_builtin_vectorized_function): New.
15318 (gcn_libc_has_function): New.
15319 (TARGET_LIBC_HAS_FUNCTION): Define.
15320 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
15322 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
15324 PR tree-optimization/108979
15325 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
15326 operations on invariants.
15328 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
15330 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
15331 * config/s390/s390.cc (s390_option_override_internal): Make
15332 partial vector usage the default from z13 on.
15333 * config/s390/vector.md (len_load_v16qi): Add.
15334 (len_store_v16qi): Add.
15336 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
15338 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
15339 of constant 0 offset.
15341 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
15343 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
15345 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
15347 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
15349 * config.gcc: add -with-{no-}msa build option.
15350 * config/mips/mips.h: Likewise.
15351 * doc/install.texi: Likewise.
15353 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
15355 PR tree-optimization/108603
15356 * explow.cc (convert_memory_address_addr_space_1): Only wrap
15357 the result of a recursive call in a CONST if no instructions
15360 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
15362 PR tree-optimization/108430
15363 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
15364 of inverted condition.
15366 2023-03-02 Jakub Jelinek <jakub@redhat.com>
15369 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
15370 comparison copy the bytes from ptr to a temporary buffer and clearing
15371 padding bits in there.
15373 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
15375 PR middle-end/108545
15376 * gimplify.cc (struct tree_operand_hash_no_se): New.
15377 (omp_index_mapping_groups_1, omp_index_mapping_groups,
15378 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
15379 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
15380 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
15381 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
15382 of tree_operand_hash.
15384 2023-03-01 LIU Hao <lh_mouse@126.com>
15387 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
15388 Remove the size limit `pch_VA_max_size`
15390 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
15392 PR middle-end/108546
15393 * omp-low.cc (lower_omp_target): Remove optional handling
15394 on the receiver side, i.e. inside target (data), for
15397 2023-03-01 Jakub Jelinek <jakub@redhat.com>
15400 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
15401 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
15403 2023-03-01 Richard Biener <rguenther@suse.de>
15405 PR tree-optimization/108970
15406 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
15407 Check we can copy the BBs.
15408 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
15410 (vect_do_peeling): Streamline error handling.
15412 2023-03-01 Richard Biener <rguenther@suse.de>
15414 PR tree-optimization/108950
15415 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
15416 Check oprnd0 is defined in the loop.
15417 * tree-vect-loop.cc (vectorizable_reduction): Record all
15418 operands vector types, compute that of invariants and
15419 properly update their SLP nodes.
15421 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
15424 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
15425 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
15427 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
15429 PR middle-end/107411
15430 PR middle-end/107411
15431 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
15433 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
15434 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
15436 2023-02-28 Jakub Jelinek <jakub@redhat.com>
15438 PR sanitizer/108894
15439 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
15440 comparison rather than index > bound.
15441 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
15442 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
15443 * doc/invoke.texi (-fsanitize=bounds): Document that whether
15444 flexible array member-like arrays are instrumented or not depends
15445 on -fstrict-flex-arrays* options of strict_flex_array attributes.
15446 (-fsanitize=bounds-strict): Document that flexible array members
15447 are not instrumented.
15449 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
15453 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
15454 (fmod<mode>3): Ditto.
15455 (fpremxf4_i387): Ditto.
15456 (reminderxf3): Ditto.
15457 (reminder<mode>3): Ditto.
15458 (fprem1xf4_i387): Ditto.
15460 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
15462 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
15463 generating FFS with mismatched operand and result modes, by using
15464 an explicit SIGN_EXTEND/ZERO_EXTEND.
15465 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
15466 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
15468 2023-02-27 Patrick Palka <ppalka@redhat.com>
15470 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
15471 * lra-int.h (lra_change_class): Likewise.
15472 * recog.h (which_op_alt): Likewise.
15473 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
15476 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15478 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
15480 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
15482 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
15483 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
15485 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
15487 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
15488 (xtensa_get_config_v3): New functions.
15490 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15492 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
15494 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
15496 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
15497 the macro to 0x1000000000.
15499 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
15502 * doc/gm2.texi (-fm2-pathname): New option documented.
15503 (-fm2-pathnameI): New option documented.
15504 (-fm2-prefix=): New option documented.
15505 (-fruntime-modules=): Update default module list.
15507 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
15510 * config/xtensa/xtensa-protos.h
15511 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
15512 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
15513 to xtensa_expand_call.
15514 (xtensa_expand_call): Emit the call and add a clobber expression
15515 for the static chain to it in case of windowed ABI.
15516 * config/xtensa/xtensa.md (call, call_value, sibcall)
15517 (sibcall_value): Call xtensa_expand_call and complete expansion
15518 right after that call.
15520 2023-02-24 Richard Biener <rguenther@suse.de>
15522 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
15523 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
15524 changing alignment of vec<T, A, vl_embed> and simplifying
15526 (vec<T, A, vl_embed>::address): Compute as this + 1.
15527 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
15528 vector instead of the offset of the m_vecdata member.
15529 (auto_vec<T, N>::m_data): Turn storage into
15530 uninitialized unsigned char.
15531 (auto_vec<T, N>::auto_vec): Allow allocation of one
15532 stack member. Initialize m_vec in a special way to
15533 avoid later stringop overflow diagnostics.
15534 * vec.cc (test_auto_alias): New.
15535 (vec_cc_tests): Call it.
15537 2023-02-24 Richard Biener <rguenther@suse.de>
15539 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
15540 take a const reference to the object, use address to
15542 (vec<T, A, vl_embed>::contains): Use address to access data.
15543 (vec<T, A, vl_embed>::operator[]): Use address instead of
15544 m_vecdata to access data.
15545 (vec<T, A, vl_embed>::iterate): Likewise.
15546 (vec<T, A, vl_embed>::copy): Likewise.
15547 (vec<T, A, vl_embed>::quick_push): Likewise.
15548 (vec<T, A, vl_embed>::pop): Likewise.
15549 (vec<T, A, vl_embed>::quick_insert): Likewise.
15550 (vec<T, A, vl_embed>::ordered_remove): Likewise.
15551 (vec<T, A, vl_embed>::unordered_remove): Likewise.
15552 (vec<T, A, vl_embed>::block_remove): Likewise.
15553 (vec<T, A, vl_heap>::address): Likewise.
15555 2023-02-24 Martin Liska <mliska@suse.cz>
15557 PR sanitizer/108834
15558 * asan.cc (asan_add_global): Use proper TU name for normal
15559 global variables (and aux_base_name for the artificial one).
15561 2023-02-24 Jakub Jelinek <jakub@redhat.com>
15563 * config/i386/i386-builtin.def: Update description of BDESC
15564 and BDESC_FIRST in file comment to include mask2.
15566 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15568 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
15570 2023-02-24 Jakub Jelinek <jakub@redhat.com>
15572 PR middle-end/108854
15573 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
15574 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
15575 nodes and adjust their DECL_CONTEXT.
15577 2023-02-24 Jakub Jelinek <jakub@redhat.com>
15580 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
15581 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
15582 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
15583 __builtin_ia32_cvtne2ps2bf16_v8bf,
15584 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
15585 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
15586 __builtin_ia32_cvtneps2bf16_v8sf_mask,
15587 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
15588 __builtin_ia32_cvtneps2bf16_v4sf_mask,
15589 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
15590 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
15591 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
15592 __builtin_ia32_dpbf16ps_v4sf_mask,
15593 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
15594 OPTION_MASK_ISA_AVX512VL.
15596 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
15598 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
15599 Add non-compact 32-bit multilibs.
15601 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
15603 * config/mips/mips.md (*clo<mode>2): New pattern.
15605 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
15607 * config/mips/mips.h (machine_function): New variable
15608 use_hazard_barrier_return_p.
15609 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
15610 (mips_hb_return_internal): New insn pattern.
15611 * config/mips/mips.cc (mips_attribute_table): Add attribute
15612 use_hazard_barrier_return.
15613 (mips_use_hazard_barrier_return_p): New static function.
15614 (mips_function_attr_inlinable_p): Likewise.
15615 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
15616 Emit error for unsupported architecture choice.
15617 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
15618 Return false for use_hazard_barrier_return.
15619 (mips_expand_epilogue): Emit hazard barrier return.
15620 * doc/extend.texi: Document use_hazard_barrier_return.
15622 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
15624 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
15625 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
15626 for the gcc-internal headers.
15628 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
15630 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
15631 and $(POSTCOMPILE) instead of manual dependency listing.
15632 * config/xtensa/xtensa-dynconfig.c: Rename to ...
15633 * config/xtensa/xtensa-dynconfig.cc: ... this.
15635 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
15637 * doc/cfg.texi: Reorder index entries around @items.
15638 * doc/cpp.texi: Ditto.
15639 * doc/cppenv.texi: Ditto.
15640 * doc/cppopts.texi: Ditto.
15641 * doc/generic.texi: Ditto.
15642 * doc/install.texi: Ditto.
15643 * doc/extend.texi: Ditto.
15644 * doc/invoke.texi: Ditto.
15645 * doc/md.texi: Ditto.
15646 * doc/rtl.texi: Ditto.
15647 * doc/tm.texi.in: Ditto.
15648 * doc/trouble.texi: Ditto.
15649 * doc/tm.texi: Regenerate.
15651 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15653 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
15654 the occurrence of general-purpose register used only once and for
15655 transferring intermediate value.
15657 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15659 * config/xtensa/xtensa.cc (machine_function): Add new member
15660 'eliminated_callee_saved_bmp'.
15661 (xtensa_can_eliminate_callee_saved_reg_p): New function to
15662 determine whether the register can be eliminated or not.
15663 (xtensa_expand_prologue): Add invoking the above function and
15664 elimination the use of callee-saved register by using its stack
15665 slot through the stack pointer (or the frame pointer if needed)
15667 (xtensa_expand_prologue): Modify to not emit register restoration
15668 insn from its stack slot if the register is already eliminated.
15670 2023-02-23 Jakub Jelinek <jakub@redhat.com>
15672 PR translation/108890
15673 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
15674 around fatal_error format strings.
15676 2023-02-23 Richard Biener <rguenther@suse.de>
15678 * tree-ssa-structalias.cc (handle_lhs_call): Do not
15679 re-create rhsc, only truncate it.
15681 2023-02-23 Jakub Jelinek <jakub@redhat.com>
15683 PR middle-end/106258
15684 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
15685 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
15687 2023-02-23 Richard Biener <rguenther@suse.de>
15689 * tree-if-conv.cc (tree_if_conversion): Properly manage
15690 memory of refs and the contained data references.
15692 2023-02-23 Richard Biener <rguenther@suse.de>
15694 PR tree-optimization/108888
15695 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
15696 calls to predicate.
15697 (predicate_statements): Only predicate calls with PLF_2.
15699 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15701 * config/xtensa/xtensa.md
15702 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
15703 Add missing "SI:" to PLUS RTXes.
15705 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
15708 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
15709 Emit (use (reg:SI A0_REG)) at the end in the sibling call
15710 (i.e. the same place as (return) in the normal call).
15712 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
15715 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
15718 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
15720 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
15721 (sibcall_value, sibcall_value_internal): Add 'use' expression
15724 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
15726 * doc/cppdiropts.texi: Reorder @opindex commands to precede
15727 @items they relate to.
15728 * doc/cppopts.texi: Ditto.
15729 * doc/cppwarnopts.texi: Ditto.
15730 * doc/invoke.texi: Ditto.
15731 * doc/lto.texi: Ditto.
15733 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
15735 * internal-fn.cc (expand_MASK_CALL): New.
15736 * internal-fn.def (MASK_CALL): New.
15737 * internal-fn.h (expand_MASK_CALL): New prototype.
15738 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
15739 for mask arguments also.
15740 * tree-if-conv.cc: Include cgraph.h.
15741 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
15742 (predicate_statements): Convert functions to IFN_MASK_CALL.
15743 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
15744 IFN_MASK_CALL as a SIMD function call.
15745 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
15746 IFN_MASK_CALL as an inbranch SIMD function call.
15747 Generate the mask vector arguments.
15749 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15751 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
15752 (class widen_reducop): Ditto.
15753 (class freducop): Ditto.
15754 (class widen_freducop): Ditto.
15756 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15757 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
15766 (vwredsumu): Ditto.
15767 (vfredusum): Ditto.
15768 (vfredosum): Ditto.
15771 (vfwredosum): Ditto.
15772 (vfwredusum): Ditto.
15773 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
15775 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15776 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
15777 (DEF_RVV_WU_OPS): Ditto.
15778 (DEF_RVV_WF_OPS): Ditto.
15779 (vint8mf8_t): Ditto.
15780 (vint8mf4_t): Ditto.
15781 (vint8mf2_t): Ditto.
15782 (vint8m1_t): Ditto.
15783 (vint8m2_t): Ditto.
15784 (vint8m4_t): Ditto.
15785 (vint8m8_t): Ditto.
15786 (vint16mf4_t): Ditto.
15787 (vint16mf2_t): Ditto.
15788 (vint16m1_t): Ditto.
15789 (vint16m2_t): Ditto.
15790 (vint16m4_t): Ditto.
15791 (vint16m8_t): Ditto.
15792 (vint32mf2_t): Ditto.
15793 (vint32m1_t): Ditto.
15794 (vint32m2_t): Ditto.
15795 (vint32m4_t): Ditto.
15796 (vint32m8_t): Ditto.
15797 (vuint8mf8_t): Ditto.
15798 (vuint8mf4_t): Ditto.
15799 (vuint8mf2_t): Ditto.
15800 (vuint8m1_t): Ditto.
15801 (vuint8m2_t): Ditto.
15802 (vuint8m4_t): Ditto.
15803 (vuint8m8_t): Ditto.
15804 (vuint16mf4_t): Ditto.
15805 (vuint16mf2_t): Ditto.
15806 (vuint16m1_t): Ditto.
15807 (vuint16m2_t): Ditto.
15808 (vuint16m4_t): Ditto.
15809 (vuint16m8_t): Ditto.
15810 (vuint32mf2_t): Ditto.
15811 (vuint32m1_t): Ditto.
15812 (vuint32m2_t): Ditto.
15813 (vuint32m4_t): Ditto.
15814 (vuint32m8_t): Ditto.
15815 (vfloat32mf2_t): Ditto.
15816 (vfloat32m1_t): Ditto.
15817 (vfloat32m2_t): Ditto.
15818 (vfloat32m4_t): Ditto.
15819 (vfloat32m8_t): Ditto.
15820 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
15821 (DEF_RVV_WU_OPS): Ditto.
15822 (DEF_RVV_WF_OPS): Ditto.
15823 (required_extensions_p): Add reduction support.
15824 (rvv_arg_type_info::get_base_vector_type): Ditto.
15825 (rvv_arg_type_info::get_tree_type): Ditto.
15826 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
15827 * config/riscv/riscv.md: Ditto.
15828 * config/riscv/vector-iterators.md (minu): Ditto.
15829 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
15830 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
15831 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
15832 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
15833 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
15834 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
15835 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
15837 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15839 * config/riscv/iterators.md: New iterator.
15840 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
15841 (enum ternop_type): New enum.
15842 (class vmacc): New class.
15843 (class imac): Ditto.
15844 (class vnmsac): Ditto.
15845 (enum widen_ternop_type): New enum.
15846 (class vmadd): Ditto.
15847 (class vnmsub): Ditto.
15848 (class iwmac): Ditto.
15849 (class vwmacc): Ditto.
15850 (class vwmaccu): Ditto.
15851 (class vwmaccsu): Ditto.
15852 (class vwmaccus): Ditto.
15853 (class reverse_binop): Ditto.
15854 (class vfmacc): Ditto.
15855 (class vfnmsac): Ditto.
15856 (class vfmadd): Ditto.
15857 (class vfnmsub): Ditto.
15858 (class vfnmacc): Ditto.
15859 (class vfmsac): Ditto.
15860 (class vfnmadd): Ditto.
15861 (class vfmsub): Ditto.
15862 (class vfwmacc): Ditto.
15863 (class vfwnmacc): Ditto.
15864 (class vfwmsac): Ditto.
15865 (class vfwnmsac): Ditto.
15866 (class float_misc): Ditto.
15867 (class fcmp): Ditto.
15868 (class vfclass): Ditto.
15869 (class vfcvt_x): Ditto.
15870 (class vfcvt_rtz_x): Ditto.
15871 (class vfcvt_f): Ditto.
15872 (class vfwcvt_x): Ditto.
15873 (class vfwcvt_rtz_x): Ditto.
15874 (class vfwcvt_f): Ditto.
15875 (class vfncvt_x): Ditto.
15876 (class vfncvt_rtz_x): Ditto.
15877 (class vfncvt_f): Ditto.
15878 (class vfncvt_rod_f): Ditto.
15880 * config/riscv/riscv-vector-builtins-bases.h:
15881 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
15925 (vfcvt_rtz_x): Ditto.
15926 (vfcvt_rtz_xu): Ditto.
15929 (vfwcvt_xu): Ditto.
15930 (vfwcvt_rtz_x): Ditto.
15931 (vfwcvt_rtz_xu): Ditto.
15934 (vfncvt_xu): Ditto.
15935 (vfncvt_rtz_x): Ditto.
15936 (vfncvt_rtz_xu): Ditto.
15938 (vfncvt_rod_f): Ditto.
15939 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
15940 (struct move_def): Ditto.
15941 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
15942 (DEF_RVV_CONVERT_I_OPS): Ditto.
15943 (DEF_RVV_CONVERT_U_OPS): Ditto.
15944 (DEF_RVV_WCONVERT_I_OPS): Ditto.
15945 (DEF_RVV_WCONVERT_U_OPS): Ditto.
15946 (DEF_RVV_WCONVERT_F_OPS): Ditto.
15947 (vfloat64m1_t): Ditto.
15948 (vfloat64m2_t): Ditto.
15949 (vfloat64m4_t): Ditto.
15950 (vfloat64m8_t): Ditto.
15951 (vint32mf2_t): Ditto.
15952 (vint32m1_t): Ditto.
15953 (vint32m2_t): Ditto.
15954 (vint32m4_t): Ditto.
15955 (vint32m8_t): Ditto.
15956 (vint64m1_t): Ditto.
15957 (vint64m2_t): Ditto.
15958 (vint64m4_t): Ditto.
15959 (vint64m8_t): Ditto.
15960 (vuint32mf2_t): Ditto.
15961 (vuint32m1_t): Ditto.
15962 (vuint32m2_t): Ditto.
15963 (vuint32m4_t): Ditto.
15964 (vuint32m8_t): Ditto.
15965 (vuint64m1_t): Ditto.
15966 (vuint64m2_t): Ditto.
15967 (vuint64m4_t): Ditto.
15968 (vuint64m8_t): Ditto.
15969 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
15970 (DEF_RVV_CONVERT_U_OPS): Ditto.
15971 (DEF_RVV_WCONVERT_I_OPS): Ditto.
15972 (DEF_RVV_WCONVERT_U_OPS): Ditto.
15973 (DEF_RVV_WCONVERT_F_OPS): Ditto.
15974 (DEF_RVV_F_OPS): Ditto.
15975 (DEF_RVV_WEXTF_OPS): Ditto.
15976 (required_extensions_p): Adjust for floating-point support.
15977 (check_required_extensions): Ditto.
15978 (unsigned_base_type_p): Ditto.
15979 (get_mode_for_bitsize): Ditto.
15980 (rvv_arg_type_info::get_base_vector_type): Ditto.
15981 (rvv_arg_type_info::get_tree_type): Ditto.
15982 * config/riscv/riscv-vector-builtins.def (v_f): New define.
15985 (xu_v): New define.
15987 (xu_w): New define.
15988 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
15989 (function_expander::arg_mode): New function.
15990 * config/riscv/vector-iterators.md (sof): New iterator.
15996 (fixuns_trunc): Ditto.
15998 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
15999 (@pred_<optab><mode>): Ditto.
16000 (@pred_<optab><mode>_scalar): Ditto.
16001 (@pred_<optab><mode>_reverse_scalar): Ditto.
16002 (@pred_<copysign><mode>): Ditto.
16003 (@pred_<copysign><mode>_scalar): Ditto.
16004 (@pred_mul_<optab><mode>): Ditto.
16005 (pred_mul_<optab><mode>_undef_merge): Ditto.
16006 (*pred_<madd_nmsub><mode>): Ditto.
16007 (*pred_<macc_nmsac><mode>): Ditto.
16008 (*pred_mul_<optab><mode>): Ditto.
16009 (@pred_mul_<optab><mode>_scalar): Ditto.
16010 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
16011 (*pred_<madd_nmsub><mode>_scalar): Ditto.
16012 (*pred_<macc_nmsac><mode>_scalar): Ditto.
16013 (*pred_mul_<optab><mode>_scalar): Ditto.
16014 (@pred_neg_mul_<optab><mode>): Ditto.
16015 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
16016 (*pred_<nmadd_msub><mode>): Ditto.
16017 (*pred_<nmacc_msac><mode>): Ditto.
16018 (*pred_neg_mul_<optab><mode>): Ditto.
16019 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
16020 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
16021 (*pred_<nmadd_msub><mode>_scalar): Ditto.
16022 (*pred_<nmacc_msac><mode>_scalar): Ditto.
16023 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
16024 (@pred_<misc_op><mode>): Ditto.
16025 (@pred_class<mode>): Ditto.
16026 (@pred_dual_widen_<optab><mode>): Ditto.
16027 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
16028 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
16029 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
16030 (@pred_widen_mul_<optab><mode>): Ditto.
16031 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
16032 (@pred_widen_neg_mul_<optab><mode>): Ditto.
16033 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
16034 (@pred_cmp<mode>): Ditto.
16035 (*pred_cmp<mode>): Ditto.
16036 (*pred_cmp<mode>_narrow): Ditto.
16037 (@pred_cmp<mode>_scalar): Ditto.
16038 (*pred_cmp<mode>_scalar): Ditto.
16039 (*pred_cmp<mode>_scalar_narrow): Ditto.
16040 (@pred_eqne<mode>_scalar): Ditto.
16041 (*pred_eqne<mode>_scalar): Ditto.
16042 (*pred_eqne<mode>_scalar_narrow): Ditto.
16043 (@pred_merge<mode>_scalar): Ditto.
16044 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
16045 (@pred_<fix_cvt><mode>): Ditto.
16046 (@pred_<float_cvt><mode>): Ditto.
16047 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
16048 (@pred_widen_<fix_cvt><mode>): Ditto.
16049 (@pred_widen_<float_cvt><mode>): Ditto.
16050 (@pred_extend<mode>): Ditto.
16051 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
16052 (@pred_narrow_<fix_cvt><mode>): Ditto.
16053 (@pred_narrow_<float_cvt><mode>): Ditto.
16054 (@pred_trunc<mode>): Ditto.
16055 (@pred_rod_trunc<mode>): Ditto.
16057 2023-02-22 Jakub Jelinek <jakub@redhat.com>
16059 PR middle-end/106258
16060 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
16061 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
16062 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
16063 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
16065 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
16067 * common.opt (-Wcomplain-wrong-lang): New.
16068 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
16069 * opts-common.cc (prune_options): Handle it.
16070 * opts-global.cc (complain_wrong_lang): Use it.
16072 2023-02-21 David Malcolm <dmalcolm@redhat.com>
16075 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
16077 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
16080 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
16082 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
16083 (sibcall_value, sibcall_value_internal): Add 'use' expression
16086 2023-02-21 Richard Biener <rguenther@suse.de>
16088 PR tree-optimization/108691
16089 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
16090 assert about calls_setjmp not becoming true when it was false.
16092 2023-02-21 Richard Biener <rguenther@suse.de>
16094 PR tree-optimization/108793
16095 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
16096 Use convert operands to niter_type when computing num.
16098 2023-02-21 Richard Biener <rguenther@suse.de>
16101 2023-02-13 Richard Biener <rguenther@suse.de>
16103 PR tree-optimization/108691
16104 * tree-cfg.cc (notice_special_calls): When the CFG is built
16105 honor gimple_call_ctrl_altering_p.
16106 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
16107 temporarily if the call is not control-altering.
16108 * calls.cc (emit_call_1): Do not add REG_SETJMP if
16109 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
16111 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16113 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
16114 true if register A0 (return address register) when -Og is specified.
16116 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
16118 * config/i386/predicates.md
16119 (general_x64constmem_operand): New predicate.
16120 * config/i386/i386.md (*cmpqi_ext<mode>_1):
16121 Use nonimm_x64constmem_operand.
16122 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
16123 (*addqi_ext<mode>_1): Ditto.
16124 (*testqi_ext<mode>_1): Ditto.
16125 (*andqi_ext<mode>_1): Ditto.
16126 (*andqi_ext<mode>_1_cc): Ditto.
16127 (*<any_or:code>qi_ext<mode>_1): Ditto.
16128 (*xorqi_ext<mode>_1_cc): Ditto.
16130 2023-02-20 Jakub Jelinek <jakub2redhat.com>
16133 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
16134 gen_umadddi4_highpart{,_le}.
16136 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
16138 * config/riscv/riscv.md (prefetch): Use r instead of p for the
16140 (riscv_prefetchi_<mode>): Ditto.
16142 2023-02-20 Richard Biener <rguenther@suse.de>
16144 PR tree-optimization/108816
16145 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
16146 versioning condition split prerequesite, assert required
16149 2023-02-20 Richard Biener <rguenther@suse.de>
16151 PR tree-optimization/108825
16152 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
16153 loop-local verfication only verify there's no pending SSA
16156 2023-02-20 Richard Biener <rguenther@suse.de>
16158 PR tree-optimization/108819
16159 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
16160 we have an SSA name as iv_2 as expected.
16162 2023-02-18 Jakub Jelinek <jakub@redhat.com>
16164 PR tree-optimization/108819
16165 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
16167 2023-02-18 Jakub Jelinek <jakub@redhat.com>
16170 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
16171 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
16173 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
16174 with ix86_replace_reg_with_reg.
16176 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
16178 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
16180 2023-02-18 Xi Ruoyao <xry111@xry111.site>
16182 * config.gcc (triplet_abi): Set its value based on $with_abi,
16183 instead of $target.
16184 (la_canonical_triplet): Set it after $triplet_abi is set
16186 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
16187 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
16190 2023-02-18 Andrew Pinski <apinski@marvell.com>
16192 * match.pd: Remove #if GIMPLE around the
16195 2023-02-18 Andrew Pinski <apinski@marvell.com>
16197 * value-query.h (get_range_query): Return the global ranges
16198 for a nullptr func.
16200 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
16202 * doc/invoke.texi (@item -Wall): Fix typo in
16205 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
16208 * config/i386/predicates.md
16209 (nonimm_x64constmem_operand): New predicate.
16210 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
16211 (*subqi_ext<mode>_0): Ditto.
16212 (*andqi_ext<mode>_0): Ditto.
16213 (*<any_or:code>qi_ext<mode>_0): Ditto.
16215 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
16218 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
16219 int_outermode instead of GET_MODE (tem) to prevent
16220 VOIDmode from entering simplify_gen_subreg.
16222 2023-02-17 Richard Biener <rguenther@suse.de>
16224 PR tree-optimization/108821
16225 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
16226 move volatile accesses.
16228 2023-02-17 Richard Biener <rguenther@suse.de>
16230 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
16231 called on virtual operands.
16232 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
16233 ssa_undefined_value_p calls.
16234 (vn_phi_insert): Likewise.
16235 (set_ssa_val_to): Likewise.
16236 (visit_phi): Avoid extra work with equivalences for
16237 virtual operand PHIs.
16239 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16241 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
16243 (class mask_nlogic): Ditto.
16244 (class mask_notlogic): Ditto.
16245 (class vmmv): Ditto.
16246 (class vmclr): Ditto.
16247 (class vmset): Ditto.
16248 (class vmnot): Ditto.
16249 (class vcpop): Ditto.
16250 (class vfirst): Ditto.
16251 (class mask_misc): Ditto.
16252 (class viota): Ditto.
16253 (class vid): Ditto.
16255 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16256 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
16275 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
16276 (struct mask_alu_def): Ditto.
16278 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16279 * config/riscv/riscv-vector-builtins.cc: Ditto.
16280 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
16281 for dest it scalar RVV intrinsics.
16282 * config/riscv/vector-iterators.md (sof): New iterator.
16283 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
16284 (@pred_<optab>not<mode>): New pattern.
16285 (@pred_popcount<VB:mode><P:mode>): New pattern.
16286 (@pred_ffs<VB:mode><P:mode>): New pattern.
16287 (@pred_<misc_op><mode>): New pattern.
16288 (@pred_iota<mode>): New pattern.
16289 (@pred_series<mode>): New pattern.
16291 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16293 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
16297 * config/riscv/riscv-vector-builtins.cc: Ditto.
16299 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16300 kito-cheng <kito.cheng@sifive.com>
16302 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
16303 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
16304 (sew64_scalar_helper): New function.
16305 * config/riscv/vector.md: Normalization.
16307 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16309 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
16371 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16373 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
16374 (@pred_<optab><mode>_scalar): Ditto.
16375 (*pred_<optab><mode>_scalar): Ditto.
16376 (*pred_<optab><mode>_extended_scalar): Ditto.
16378 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16380 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
16381 (init_builtins): Ditto.
16382 (mangle_builtin_type): Ditto.
16383 (verify_type_context): Ditto.
16384 (handle_pragma_vector): Ditto.
16385 (builtin_decl): Ditto.
16386 (expand_builtin): Ditto.
16387 (const_vec_all_same_in_range_p): Ditto.
16388 (legitimize_move): Ditto.
16389 (emit_vlmax_op): Ditto.
16390 (emit_nonvlmax_op): Ditto.
16391 (get_vlmul): Ditto.
16392 (get_ratio): Ditto.
16395 (get_avl_type): Ditto.
16396 (calculate_ratio): Ditto.
16397 (enum vlmul_type): Ditto.
16399 (neg_simm5_p): Ditto.
16400 (has_vi_variant_p): Ditto.
16402 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16404 * config/riscv/riscv-protos.h (simm32_p): Remove.
16405 * config/riscv/riscv-v.cc (simm32_p): Ditto.
16406 * config/riscv/vector.md: Use immediate_operand
16407 instead of riscv_vector::simm32_p.
16409 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
16411 * doc/invoke.texi (Optimize Options): Reword the explanation
16412 getting minimal, maximal and default values of a parameter.
16414 2023-02-16 Patrick Palka <ppalka@redhat.com>
16416 * addresses.h: Mechanically drop 'static' from 'static inline'
16417 functions via s/^static inline/inline/g.
16418 * asan.h: Likewise.
16419 * attribs.h: Likewise.
16420 * basic-block.h: Likewise.
16421 * bitmap.h: Likewise.
16422 * cfghooks.h: Likewise.
16423 * cfgloop.h: Likewise.
16424 * cgraph.h: Likewise.
16425 * cselib.h: Likewise.
16426 * data-streamer.h: Likewise.
16427 * debug.h: Likewise.
16429 * diagnostic.h: Likewise.
16430 * dominance.h: Likewise.
16431 * dumpfile.h: Likewise.
16432 * emit-rtl.h: Likewise.
16433 * except.h: Likewise.
16434 * expmed.h: Likewise.
16435 * expr.h: Likewise.
16436 * fixed-value.h: Likewise.
16437 * gengtype.h: Likewise.
16438 * gimple-expr.h: Likewise.
16439 * gimple-iterator.h: Likewise.
16440 * gimple-predict.h: Likewise.
16441 * gimple-range-fold.h: Likewise.
16442 * gimple-ssa.h: Likewise.
16443 * gimple.h: Likewise.
16444 * graphite.h: Likewise.
16445 * hard-reg-set.h: Likewise.
16446 * hash-map.h: Likewise.
16447 * hash-set.h: Likewise.
16448 * hash-table.h: Likewise.
16449 * hwint.h: Likewise.
16450 * input.h: Likewise.
16451 * insn-addr.h: Likewise.
16452 * internal-fn.h: Likewise.
16453 * ipa-fnsummary.h: Likewise.
16454 * ipa-icf-gimple.h: Likewise.
16455 * ipa-inline.h: Likewise.
16456 * ipa-modref.h: Likewise.
16457 * ipa-prop.h: Likewise.
16458 * ira-int.h: Likewise.
16460 * lra-int.h: Likewise.
16462 * lto-streamer.h: Likewise.
16463 * memmodel.h: Likewise.
16464 * omp-general.h: Likewise.
16465 * optabs-query.h: Likewise.
16466 * optabs.h: Likewise.
16467 * plugin.h: Likewise.
16468 * pretty-print.h: Likewise.
16469 * range.h: Likewise.
16470 * read-md.h: Likewise.
16471 * recog.h: Likewise.
16472 * regs.h: Likewise.
16473 * rtl-iter.h: Likewise.
16475 * sbitmap.h: Likewise.
16476 * sched-int.h: Likewise.
16477 * sel-sched-ir.h: Likewise.
16478 * sese.h: Likewise.
16479 * sparseset.h: Likewise.
16480 * ssa-iterators.h: Likewise.
16481 * system.h: Likewise.
16482 * target-globals.h: Likewise.
16483 * target.h: Likewise.
16484 * timevar.h: Likewise.
16485 * tree-chrec.h: Likewise.
16486 * tree-data-ref.h: Likewise.
16487 * tree-iterator.h: Likewise.
16488 * tree-outof-ssa.h: Likewise.
16489 * tree-phinodes.h: Likewise.
16490 * tree-scalar-evolution.h: Likewise.
16491 * tree-sra.h: Likewise.
16492 * tree-ssa-alias.h: Likewise.
16493 * tree-ssa-live.h: Likewise.
16494 * tree-ssa-loop-manip.h: Likewise.
16495 * tree-ssa-loop.h: Likewise.
16496 * tree-ssa-operands.h: Likewise.
16497 * tree-ssa-propagate.h: Likewise.
16498 * tree-ssa-sccvn.h: Likewise.
16499 * tree-ssa.h: Likewise.
16500 * tree-ssanames.h: Likewise.
16501 * tree-streamer.h: Likewise.
16502 * tree-switch-conversion.h: Likewise.
16503 * tree-vectorizer.h: Likewise.
16504 * tree.h: Likewise.
16505 * wide-int.h: Likewise.
16507 2023-02-16 Jakub Jelinek <jakub@redhat.com>
16509 PR tree-optimization/108657
16510 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
16511 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
16512 is a call to internal or builtin function.
16514 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
16516 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
16517 using-declaration to unhide functions.
16519 2023-02-16 Jakub Jelinek <jakub@redhat.com>
16521 PR tree-optimization/108783
16522 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
16523 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
16524 t to curr->op. Otherwise, punt if either newop1 or newop2 are
16525 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
16527 2023-02-16 Richard Biener <rguenther@suse.de>
16529 PR tree-optimization/108791
16530 * tree-ssa-forwprop.cc (optimize_vector_load): Build
16531 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
16534 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
16537 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
16538 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
16539 (ix86_expand_prologue): Likewise.
16541 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
16543 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
16545 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
16547 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
16548 int248_register_operand predicate in zero_extract sub-RTX.
16549 (*cmpqi_ext<mode>_2): Ditto.
16550 (*cmpqi_ext<mode>_3): Ditto.
16551 (*cmpqi_ext<mode>_4): Ditto.
16552 (*extzvqi_mem_rex64): Ditto.
16554 (*insvqi_1_mem_rex64): Ditto.
16555 (@insv<mode>_1): Ditto.
16556 (*insvqi_1): Ditto.
16557 (*insvqi_2): Ditto.
16558 (*insvqi_3): Ditto.
16559 (*extendqi<SWI24:mode>_ext_1): Ditto.
16560 (*addqi_ext<mode>_1): Ditto.
16561 (*addqi_ext<mode>_2): Ditto.
16562 (*subqi_ext<mode>_2): Ditto.
16563 (*testqi_ext<mode>_1): Ditto.
16564 (*testqi_ext<mode>_2): Ditto.
16565 (*andqi_ext<mode>_1): Ditto.
16566 (*andqi_ext<mode>_1_cc): Ditto.
16567 (*andqi_ext<mode>_2): Ditto.
16568 (*<any_or:code>qi_ext<mode>_1): Ditto.
16569 (*<any_or:code>qi_ext<mode>_2): Ditto.
16570 (*xorqi_ext<mode>_1_cc): Ditto.
16571 (*negqi_ext<mode>_2): Ditto.
16572 (*ashlqi_ext<mode>_2): Ditto.
16573 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
16575 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
16577 * config/i386/predicates.md (int248_register_operand):
16578 Rename from extr_register_operand.
16579 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
16580 (*extzx<mode>): Ditto.
16581 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
16582 (*ashl<mode>3_mask): Ditto.
16583 (*<any_shiftrt:insn><mode>3_mask): Ditto.
16584 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
16585 (*<any_rotate:insn><mode>3_mask): Ditto.
16586 (*<btsc><mode>_mask): Ditto.
16587 (*btr<mode>_mask): Ditto.
16588 (*jcc_bt<mode>_mask_1): Ditto.
16590 2023-02-15 Richard Biener <rguenther@suse.de>
16592 PR middle-end/26854
16593 * df-core.cc (df_worklist_propagate_forward): Put later
16594 blocks on worklist and only earlier blocks on pending.
16595 (df_worklist_propagate_backward): Likewise.
16596 (df_worklist_dataflow_doublequeue): Change the iteration
16597 to process new blocks in the same iteration if that
16598 maintains the iteration order.
16600 2023-02-15 Marek Polacek <polacek@redhat.com>
16602 PR middle-end/106080
16603 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
16606 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16608 * config/riscv/predicates.md: Refine codes.
16609 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
16610 * config/riscv/riscv-v.cc: Refine codes.
16611 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
16613 (class imac): New class.
16614 (enum widen_ternop_type): New enum.
16615 (class iwmac): New class.
16617 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16618 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
16626 * config/riscv/riscv-vector-builtins.cc
16627 (function_builder::apply_predication): Adjust for multiply-add support.
16628 (function_expander::add_vundef_operand): Refine codes.
16629 (function_expander::use_ternop_insn): New function.
16630 (function_expander::use_widen_ternop_insn): Ditto.
16631 * config/riscv/riscv-vector-builtins.h: New function.
16632 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
16633 (pred_mul_<optab><mode>_undef_merge): Ditto.
16634 (*pred_<madd_nmsub><mode>): Ditto.
16635 (*pred_<macc_nmsac><mode>): Ditto.
16636 (*pred_mul_<optab><mode>): Ditto.
16637 (@pred_mul_<optab><mode>_scalar): Ditto.
16638 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
16639 (*pred_<madd_nmsub><mode>_scalar): Ditto.
16640 (*pred_<macc_nmsac><mode>_scalar): Ditto.
16641 (*pred_mul_<optab><mode>_scalar): Ditto.
16642 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
16643 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
16644 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
16645 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
16646 (@pred_widen_mul_plus<su><mode>): Ditto.
16647 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
16648 (@pred_widen_mul_plussu<mode>): Ditto.
16649 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
16650 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
16652 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16654 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
16655 (vector_all_trues_mask_operand): New predicate.
16656 (vector_undef_operand): New predicate.
16657 (ltge_operator): New predicate.
16658 (comparison_except_ltge_operator): New predicate.
16659 (comparison_except_eqge_operator): New predicate.
16660 (ge_operator): New predicate.
16661 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
16662 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
16664 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16665 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
16675 * config/riscv/riscv-vector-builtins-shapes.cc
16676 (struct return_mask_def): Adjust for compare support.
16677 * config/riscv/riscv-vector-builtins.cc
16678 (function_expander::use_compare_insn): New function.
16679 * config/riscv/riscv-vector-builtins.h
16680 (function_expander::add_integer_operand): Ditto.
16681 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
16682 * config/riscv/riscv.md: Add vector min/max attributes.
16683 * config/riscv/vector-iterators.md (xnor): New iterator.
16684 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
16685 (*pred_cmp<mode>): Ditto.
16686 (*pred_cmp<mode>_narrow): Ditto.
16687 (@pred_ltge<mode>): Ditto.
16688 (*pred_ltge<mode>): Ditto.
16689 (*pred_ltge<mode>_narrow): Ditto.
16690 (@pred_cmp<mode>_scalar): Ditto.
16691 (*pred_cmp<mode>_scalar): Ditto.
16692 (*pred_cmp<mode>_scalar_narrow): Ditto.
16693 (@pred_eqne<mode>_scalar): Ditto.
16694 (*pred_eqne<mode>_scalar): Ditto.
16695 (*pred_eqne<mode>_scalar_narrow): Ditto.
16696 (*pred_cmp<mode>_extended_scalar): Ditto.
16697 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
16698 (*pred_eqne<mode>_extended_scalar): Ditto.
16699 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
16700 (@pred_ge<mode>_scalar): Ditto.
16701 (@pred_<optab><mode>): Ditto.
16702 (@pred_n<optab><mode>): Ditto.
16703 (@pred_<optab>n<mode>): Ditto.
16704 (@pred_not<mode>): Ditto.
16706 2023-02-15 Martin Jambor <mjambor@suse.cz>
16709 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
16710 creation of non-scalar replacements even if IPA-CP knows their
16713 2023-02-15 Jakub Jelinek <jakub@redhat.com>
16717 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
16718 expander, change operand 3 to be TImode, emit maddlddi4 and
16719 umadddi4_highpart{,_le} with its low half and finally add the high
16720 half to the result.
16722 2023-02-15 Martin Liska <mliska@suse.cz>
16724 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
16726 2023-02-15 Richard Biener <rguenther@suse.de>
16728 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
16729 for with_poison and alias worklist to it.
16730 (sanitize_asan_mark_poison): Likewise.
16732 2023-02-15 Richard Biener <rguenther@suse.de>
16735 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
16736 Combine bitmap test and set.
16737 (scalar_chain::add_insn): Likewise.
16738 (scalar_chain::analyze_register_chain): Remove redundant
16739 attempt to add to queue and instead strengthen assert.
16740 Sink common attempts to mark the def dual-mode.
16741 (scalar_chain::add_to_queue): Remove redundant insn bitmap
16744 2023-02-15 Richard Biener <rguenther@suse.de>
16747 * config/i386/i386-features.cc (convert_scalars_to_vector):
16748 Switch candidates bitmaps to tree view before building the chains.
16750 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
16752 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
16753 "failure trying to reload" call.
16755 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
16757 * gdbinit.in (phrs): New command.
16758 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
16759 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
16761 2023-02-14 David Faust <david.faust@oracle.com>
16764 * config/bpf/constraints.md (q): New memory constraint.
16765 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
16766 (zero_extendqidi2): Likewise.
16767 (zero_extendsidi2): Likewise.
16768 (*mov<MM:mode>): Likewise.
16770 2023-02-14 Andrew Pinski <apinski@marvell.com>
16772 PR tree-optimization/108355
16773 PR tree-optimization/96921
16774 * match.pd: Add pattern for "1 - bool_val".
16776 2023-02-14 Richard Biener <rguenther@suse.de>
16778 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
16779 basic block index hashing on the availability of ->cclhs.
16780 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
16781 rely on ->cclhs availability.
16782 (vn_phi_lookup): Set ->cclhs only when we are eventually
16783 going to CSE the PHI.
16784 (vn_phi_insert): Likewise.
16786 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
16788 * gimplify.cc (gimplify_save_expr): Add missing guard.
16790 2023-02-14 Richard Biener <rguenther@suse.de>
16792 PR tree-optimization/108782
16793 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
16794 Make sure we're not vectorizing an inner loop.
16796 2023-02-14 Jakub Jelinek <jakub@redhat.com>
16798 PR sanitizer/108777
16799 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
16800 * asan.h (asan_memfn_rtl): Declare.
16801 * asan.cc (asan_memfn_rtls): New variable.
16802 (asan_memfn_rtl): New function.
16803 * builtins.cc (expand_builtin): If
16804 param_asan_kernel_mem_intrinsic_prefix and function is
16805 kernel-{,hw}address sanitized, emit calls to
16806 __{,hw}asan_{memcpy,memmove,memset} rather than
16807 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
16808 instead of flag_sanitize & SANITIZE_ADDRESS to check if
16809 asan_intercepted_p functions shouldn't be expanded inline.
16811 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
16813 PR tree-optimization/96373
16814 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
16815 operations on the loop mask. Reject partial vectors if this isn't
16818 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
16820 PR rtl-optimization/108681
16821 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
16822 code to handle bare uses and clobbers.
16824 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
16826 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
16827 caller_save_p flag when clearing defined_p flag.
16828 (setup_reg_equiv): Ditto.
16829 * lra-constraints.cc (lra_constraints): Ditto.
16831 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
16834 * config/i386/predicates.md (extr_register_operand):
16835 New special predicate.
16836 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
16837 as operand 1 predicate.
16838 (*exzv<mode>): Ditto.
16839 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
16841 2023-02-13 Richard Biener <rguenther@suse.de>
16843 PR tree-optimization/28614
16844 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
16845 walking all edges in most cases.
16846 (vn_nary_op_insert_pieces_predicated): Avoid repeated
16847 calls to can_track_predicate_on_edge unless checking is
16849 (process_bb): Instead call it once here for each edge
16850 we register possibly multiple predicates on.
16852 2023-02-13 Richard Biener <rguenther@suse.de>
16854 PR tree-optimization/108691
16855 * tree-cfg.cc (notice_special_calls): When the CFG is built
16856 honor gimple_call_ctrl_altering_p.
16857 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
16858 temporarily if the call is not control-altering.
16859 * calls.cc (emit_call_1): Do not add REG_SETJMP if
16860 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
16862 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
16865 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
16866 (struct s390_sched_state): Initialise to zero.
16867 (s390_sched_variable_issue): For better debuggability also emit
16869 (s390_sched_init): Unconditionally reset scheduler state.
16871 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
16873 * ifcvt.h (noce_if_info::cond_inverted): New field.
16874 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
16875 values when cond_inverted is true.
16876 (noce_find_if_block): Allow the condition to be inverted when
16877 handling conditional moves.
16879 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
16881 * config/s390/predicates.md (execute_operation): Use
16882 constrain_operands instead of extract_constrain_insn in order to
16883 determine wheter there exists a valid alternative.
16885 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
16887 * common/config/arc/arc-common.cc (arc_option_optimization_table):
16888 Remove millicode from list.
16890 2023-02-13 Martin Liska <mliska@suse.cz>
16892 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
16894 2023-02-13 Richard Biener <rguenther@suse.de>
16896 PR tree-optimization/106722
16897 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
16898 whether we marked a stmt.
16899 (mark_control_dependent_edges_necessary): When
16900 mark_last_stmt_necessary didn't mark any stmt make sure
16901 to mark its control dependent edges.
16902 (propagate_necessity): Likewise.
16904 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
16906 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
16907 (DWARF_FRAME_REGISTERS): New.
16908 (DWARF_REG_TO_UNWIND_COLUMN): New.
16910 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
16912 * doc/sourcebuild.texi: Remove (broken) direct reference to
16913 "The GNU configure and build system".
16915 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
16917 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
16918 gen_add3_insn to gen_rtx_SET.
16919 (riscv_adjust_libcall_cfi_epilogue): Likewise.
16921 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16923 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
16924 (class vnclip): Ditto.
16926 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16927 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
16936 * config/riscv/vector-iterators.md (su): Add instruction.
16939 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
16940 (@pred_<sat_op><mode>_scalar): Ditto.
16941 (*pred_<sat_op><mode>_scalar): Ditto.
16942 (*pred_<sat_op><mode>_extended_scalar): Ditto.
16943 (@pred_narrow_clip<v_su><mode>): Ditto.
16944 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
16946 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16948 * config/riscv/constraints.md (Wbr): Remove unused constraint.
16949 * config/riscv/predicates.md: Fix move operand predicate.
16950 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
16951 (class vncvt_x): Ditto.
16952 (class vmerge): Ditto.
16953 (class vmv_v): Ditto.
16955 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16956 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
16963 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
16964 (struct move_def): Ditto.
16966 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16967 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
16968 (DEF_RVV_WEXTU_OPS): Ditto
16969 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
16974 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
16975 * config/riscv/vector-iterators.md (nmsac):New iterator.
16976 (nmsub): New iterator.
16977 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
16978 (@pred_merge<mode>_scalar): New pattern.
16979 (*pred_merge<mode>_scalar): New pattern.
16980 (*pred_merge<mode>_extended_scalar): New pattern.
16981 (@pred_narrow_<optab><mode>): New pattern.
16982 (@pred_narrow_<optab><mode>_scalar): New pattern.
16983 (@pred_trunc<mode>): New pattern.
16985 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16987 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
16988 (class vmsbc): Ditto.
16989 (BASE): Define new class.
16990 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16991 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
16993 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
16996 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16997 * config/riscv/riscv-vector-builtins.cc
16998 (function_expander::use_exact_insn): Adjust for new support
16999 * config/riscv/riscv-vector-builtins.h
17000 (function_base::has_merge_operand_p): New function.
17001 * config/riscv/vector-iterators.md: New iterator.
17002 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
17003 (@pred_msbc<mode>): Ditto.
17004 (@pred_madc<mode>_scalar): Ditto.
17005 (@pred_msbc<mode>_scalar): Ditto.
17006 (*pred_madc<mode>_scalar): Ditto.
17007 (*pred_madc<mode>_extended_scalar): Ditto.
17008 (*pred_msbc<mode>_scalar): Ditto.
17009 (*pred_msbc<mode>_extended_scalar): Ditto.
17010 (@pred_madc<mode>_overflow): Ditto.
17011 (@pred_msbc<mode>_overflow): Ditto.
17012 (@pred_madc<mode>_overflow_scalar): Ditto.
17013 (@pred_msbc<mode>_overflow_scalar): Ditto.
17014 (*pred_madc<mode>_overflow_scalar): Ditto.
17015 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
17016 (*pred_msbc<mode>_overflow_scalar): Ditto.
17017 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
17019 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17021 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
17022 * config/riscv/riscv-v.cc (simm32_p): Ditto.
17023 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
17024 (class vsbc): Ditto.
17026 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17027 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
17029 * config/riscv/riscv-vector-builtins-shapes.cc
17030 (struct no_mask_policy_def): Ditto.
17032 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17033 * config/riscv/riscv-vector-builtins.cc
17034 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
17035 (rvv_arg_type_info::get_tree_type): Ditto.
17036 (function_expander::use_exact_insn): Ditto.
17037 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
17038 (function_base::use_mask_predication_p): New function.
17039 * config/riscv/vector-iterators.md: New iterator.
17040 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
17041 (@pred_sbc<mode>): Ditto.
17042 (@pred_adc<mode>_scalar): Ditto.
17043 (@pred_sbc<mode>_scalar): Ditto.
17044 (*pred_adc<mode>_scalar): Ditto.
17045 (*pred_adc<mode>_extended_scalar): Ditto.
17046 (*pred_sbc<mode>_scalar): Ditto.
17047 (*pred_sbc<mode>_extended_scalar): Ditto.
17049 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17051 * config/riscv/vector.md: use "zero" reg.
17053 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17055 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
17057 (class vwmulsu): Ditto.
17058 (class vwcvt): Ditto.
17059 (BASE): Add integer widening support.
17060 * config/riscv/riscv-vector-builtins-bases.h: Ditto
17061 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
17062 (vwsub): New class.
17063 (vwmul): New class.
17064 (vwmulu): New class.
17065 (vwmulsu): New class.
17066 (vwaddu): New class.
17067 (vwsubu): New class.
17068 (vwcvt_x): New class.
17069 (vwcvtu_x): New class.
17070 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
17072 (struct widen_alu_def): New class.
17073 (SHAPE): New class.
17074 * config/riscv/riscv-vector-builtins-shapes.h: New class.
17075 * config/riscv/riscv-vector-builtins.cc
17076 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
17077 (rvv_arg_type_info::get_tree_type): Ditto.
17078 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
17080 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
17082 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
17083 * config/riscv/riscv.h (X0_REGNUM): New constant.
17084 * config/riscv/vector-iterators.md: New iterators.
17085 * config/riscv/vector.md
17086 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
17088 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
17090 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
17091 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
17093 (@pred_widen_mulsu<mode>): Ditto.
17094 (@pred_widen_mulsu<mode>_scalar): Ditto.
17095 (@pred_<optab><mode>): Ditto.
17097 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17098 kito-cheng <kito.cheng@sifive.com>
17100 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
17101 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
17103 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17104 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
17108 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
17110 (DEF_RVV_FULL_V_U_OPS): Ditto.
17111 (vint8mf8_t): Ditto.
17112 (vint8mf4_t): Ditto.
17113 (vint8mf2_t): Ditto.
17114 (vint8m1_t): Ditto.
17115 (vint8m2_t): Ditto.
17116 (vint8m4_t): Ditto.
17117 (vint8m8_t): Ditto.
17118 (vint16mf4_t): Ditto.
17119 (vint16mf2_t): Ditto.
17120 (vint16m1_t): Ditto.
17121 (vint16m2_t): Ditto.
17122 (vint16m4_t): Ditto.
17123 (vint16m8_t): Ditto.
17124 (vint32mf2_t): Ditto.
17125 (vint32m1_t): Ditto.
17126 (vint32m2_t): Ditto.
17127 (vint32m4_t): Ditto.
17128 (vint32m8_t): Ditto.
17129 (vint64m1_t): Ditto.
17130 (vint64m2_t): Ditto.
17131 (vint64m4_t): Ditto.
17132 (vint64m8_t): Ditto.
17133 (vuint8mf8_t): Ditto.
17134 (vuint8mf4_t): Ditto.
17135 (vuint8mf2_t): Ditto.
17136 (vuint8m1_t): Ditto.
17137 (vuint8m2_t): Ditto.
17138 (vuint8m4_t): Ditto.
17139 (vuint8m8_t): Ditto.
17140 (vuint16mf4_t): Ditto.
17141 (vuint16mf2_t): Ditto.
17142 (vuint16m1_t): Ditto.
17143 (vuint16m2_t): Ditto.
17144 (vuint16m4_t): Ditto.
17145 (vuint16m8_t): Ditto.
17146 (vuint32mf2_t): Ditto.
17147 (vuint32m1_t): Ditto.
17148 (vuint32m2_t): Ditto.
17149 (vuint32m4_t): Ditto.
17150 (vuint32m8_t): Ditto.
17151 (vuint64m1_t): Ditto.
17152 (vuint64m2_t): Ditto.
17153 (vuint64m4_t): Ditto.
17154 (vuint64m8_t): Ditto.
17155 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
17156 (DEF_RVV_FULL_V_U_OPS): Ditto.
17157 (check_required_extensions): Add vmulh support.
17158 (rvv_arg_type_info::get_tree_type): Ditto.
17159 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
17160 (enum rvv_base_type): Ditto.
17161 * config/riscv/riscv.opt: Add 'V' extension flag.
17162 * config/riscv/vector-iterators.md (su): New iterator.
17163 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
17164 (@pred_mulh<v_su><mode>_scalar): Ditto.
17165 (*pred_mulh<v_su><mode>_scalar): Ditto.
17166 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
17168 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17170 * config/riscv/iterators.md: Add sign_extend/zero_extend.
17171 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
17173 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
17174 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
17177 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
17178 for vsext/vzext support.
17179 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
17181 (DEF_RVV_QEXTI_OPS): Ditto.
17182 (DEF_RVV_OEXTI_OPS): Ditto.
17183 (DEF_RVV_WEXTU_OPS): Ditto.
17184 (DEF_RVV_QEXTU_OPS): Ditto.
17185 (DEF_RVV_OEXTU_OPS): Ditto.
17186 (vint16mf4_t): Ditto.
17187 (vint16mf2_t): Ditto.
17188 (vint16m1_t): Ditto.
17189 (vint16m2_t): Ditto.
17190 (vint16m4_t): Ditto.
17191 (vint16m8_t): Ditto.
17192 (vint32mf2_t): Ditto.
17193 (vint32m1_t): Ditto.
17194 (vint32m2_t): Ditto.
17195 (vint32m4_t): Ditto.
17196 (vint32m8_t): Ditto.
17197 (vint64m1_t): Ditto.
17198 (vint64m2_t): Ditto.
17199 (vint64m4_t): Ditto.
17200 (vint64m8_t): Ditto.
17201 (vuint16mf4_t): Ditto.
17202 (vuint16mf2_t): Ditto.
17203 (vuint16m1_t): Ditto.
17204 (vuint16m2_t): Ditto.
17205 (vuint16m4_t): Ditto.
17206 (vuint16m8_t): Ditto.
17207 (vuint32mf2_t): Ditto.
17208 (vuint32m1_t): Ditto.
17209 (vuint32m2_t): Ditto.
17210 (vuint32m4_t): Ditto.
17211 (vuint32m8_t): Ditto.
17212 (vuint64m1_t): Ditto.
17213 (vuint64m2_t): Ditto.
17214 (vuint64m4_t): Ditto.
17215 (vuint64m8_t): Ditto.
17216 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
17217 (DEF_RVV_QEXTI_OPS): Ditto.
17218 (DEF_RVV_OEXTI_OPS): Ditto.
17219 (DEF_RVV_WEXTU_OPS): Ditto.
17220 (DEF_RVV_QEXTU_OPS): Ditto.
17221 (DEF_RVV_OEXTU_OPS): Ditto.
17222 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
17224 (rvv_arg_type_info::get_tree_type): Ditto.
17225 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
17226 * config/riscv/vector-iterators.md (z): New attribute.
17227 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
17228 (@pred_<optab><mode>_vf4): Ditto.
17229 (@pred_<optab><mode>_vf8): Ditto.
17231 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17233 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
17234 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
17235 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
17236 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17237 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
17241 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
17246 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
17247 (@pred_<optab><mode>_scalar): New pattern.
17248 (*pred_<optab><mode>_scalar): New pattern.
17249 (*pred_<optab><mode>_extended_scalar): New pattern.
17251 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17253 * config/riscv/iterators.md: Add neg and not.
17254 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
17256 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17257 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
17278 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
17279 (struct alu_def): Ditto.
17281 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17282 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
17283 * config/riscv/vector-iterators.md: New iterator.
17284 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
17286 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17288 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
17290 2023-02-11 Jakub Jelinek <jakub@redhat.com>
17293 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
17294 item->offset bit position is too large to be representable as
17295 unsigned int byte position.
17297 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
17299 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
17301 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
17303 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
17304 valid_combine only when ira_use_lra_p is true.
17306 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
17308 * params.opt (ira-simple-lra-insn-threshold): Add new param.
17309 * ira.cc (ira): Use the param to switch on simple LRA.
17311 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
17313 PR tree-optimization/108687
17314 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
17315 back to RFD_NONE mode for calculations.
17316 (ranger_cache::propagate_cache): Call the internal edge range API
17317 with RFD_READ_ONLY instead of changing the external routine.
17319 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
17321 PR tree-optimization/108520
17322 * gimple-range-infer.cc (check_assume_func): Invoke
17323 gimple_range_global directly instead using global_range_query.
17324 * value-query.cc (get_range_global): Add function context and
17325 avoid calling nonnull_arg_p if not cfun.
17326 (gimple_range_global): Add function context pointer.
17327 * value-query.h (imple_range_global): Add function context.
17329 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17331 * config/riscv/constraints.md (Wdm): Adjust constraint.
17332 (Wbr): New constraint.
17333 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
17334 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
17335 (emit_vlmax_op): New function.
17336 (emit_nonvlmax_op): Ditto.
17338 (neg_simm5_p): Ditto.
17339 (has_vi_variant_p): Ditto.
17340 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
17341 (emit_vlmax_op): New function.
17342 (emit_nonvlmax_op): Ditto.
17343 (expand_const_vector): Adjust function.
17344 (legitimize_move): Ditto.
17345 (simm32_p): New function.
17347 (neg_simm5_p): Ditto.
17348 (has_vi_variant_p): Ditto.
17349 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
17351 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17352 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
17355 (vminu): Remove signed cases.
17357 (vdiv): Remove unsigned cases.
17359 (vdivu): Remove signed cases.
17363 (vrsub): New class.
17368 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
17369 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
17370 * config/riscv/vector-iterators.md: New iterators.
17371 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
17373 (@pred_<optab><mode>_scalar): New pattern.
17374 (@pred_sub<mode>_reverse_scalar): Ditto.
17375 (*pred_<optab><mode>_scalar): Ditto.
17376 (*pred_<optab><mode>_extended_scalar): Ditto.
17377 (*pred_sub<mode>_reverse_scalar): Ditto.
17378 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
17380 2023-02-10 Richard Biener <rguenther@suse.de>
17382 PR tree-optimization/108724
17383 * tree-vect-stmts.cc (vectorizable_operation): Avoid
17384 using word_mode vectors when vector lowering will
17385 decompose them to elementwise operations.
17387 2023-02-10 Jakub Jelinek <jakub@redhat.com>
17390 2023-02-09 Martin Liska <mliska@suse.cz>
17393 * doc/extend.texi: Document that the function
17394 does not work correctly for old VIA processors.
17396 2023-02-10 Andrew Pinski <apinski@marvell.com>
17397 Andrew Macleod <amacleod@redhat.com>
17399 PR tree-optimization/108684
17400 * tree-ssa-dce.cc (simple_dce_from_worklist):
17401 Check all ssa names and not just non-vdef ones
17402 before accepting the inline-asm.
17403 Call unlink_stmt_vdef on the statement before
17406 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
17408 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
17409 * ira.cc (validate_equiv_mem): Check memref address variance.
17410 (no_equiv): Clear caller_save_p flag.
17411 (update_equiv_regs): Define caller save equivalence for
17413 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
17414 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
17415 call_save_p. Use caller save equivalence depending on the arg.
17416 (split_reg): Adjust the call.
17418 2023-02-09 Jakub Jelinek <jakub@redhat.com>
17421 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
17422 (cpu_indicator_init): Call get_available_features for all CPUs with
17423 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
17426 2023-02-09 Jakub Jelinek <jakub@redhat.com>
17428 PR tree-optimization/108688
17429 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
17430 of BIT_INSERT_EXPR extracting exactly all inserted bits even
17431 when without mode precision. Formatting fixes.
17433 2023-02-09 Andrew Pinski <apinski@marvell.com>
17435 PR tree-optimization/108688
17436 * match.pd (bit_field_ref [bit_insert]): Avoid generating
17437 BIT_FIELD_REFs of non-mode-precision integral operands.
17439 2023-02-09 Martin Liska <mliska@suse.cz>
17442 * doc/extend.texi: Document that the function
17443 does not work correctly for old VIA processors.
17445 2023-02-09 Andreas Schwab <schwab@suse.de>
17447 * lto-wrapper.cc (merge_and_complain): Handle
17448 -funwind-tables and -fasynchronous-unwind-tables.
17449 (append_compiler_options): Likewise.
17451 2023-02-09 Richard Biener <rguenther@suse.de>
17453 PR tree-optimization/26854
17454 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
17455 view around insert_updated_phi_nodes_for.
17456 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
17458 (walk_aliased_vdefs_1): Likewise.
17460 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
17462 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
17464 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17467 * config.gcc (tm_mlib_file): Define new variable.
17469 2023-02-08 Jakub Jelinek <jakub@redhat.com>
17471 PR tree-optimization/108692
17472 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
17473 widened_code which is different from code, don't call
17474 vect_look_through_possible_promotion but instead just check op is
17475 SSA_NAME with integral type for which vect_is_simple_use is true
17476 and call set_op on this_unprom.
17478 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
17480 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
17482 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
17484 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
17485 to 'aarch_ra_sign_key'.
17486 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
17488 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
17489 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
17490 * config/arm/arm.opt: Define.
17492 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
17494 PR tree-optimization/108316
17495 * tree-vect-stmts.cc (get_load_store_type): When using
17496 internal functions for gather/scatter, make sure that the type
17497 of the offset argument is consistent with the offset vector type.
17499 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
17502 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
17504 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
17505 * ira.cc (validate_equiv_mem): Check memref address variance.
17506 (update_equiv_regs): Define caller save equivalence for
17508 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
17509 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
17510 call_save_p. Use caller save equivalence depending on the arg.
17511 (split_reg): Adjust the call.
17513 2023-02-08 Jakub Jelinek <jakub@redhat.com>
17515 * tree.def (SAD_EXPR): Remove outdated comment about missing
17518 2023-02-07 Marek Polacek <polacek@redhat.com>
17520 * doc/invoke.texi: Update -fchar8_t documentation.
17522 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
17524 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
17525 * ira.cc (validate_equiv_mem): Check memref address variance.
17526 (update_equiv_regs): Define caller save equivalence for
17528 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
17529 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
17530 call_save_p. Use caller save equivalence depending on the arg.
17531 (split_reg): Adjust the call.
17533 2023-02-07 Richard Biener <rguenther@suse.de>
17535 PR tree-optimization/26854
17536 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
17537 instead of immediate uses.
17539 2023-02-07 Jakub Jelinek <jakub@redhat.com>
17541 PR tree-optimization/106923
17542 * ipa-split.cc (execute_split_functions): Don't split returns_twice
17545 2023-02-07 Jakub Jelinek <jakub@redhat.com>
17547 PR tree-optimization/106433
17548 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
17549 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
17551 2023-02-07 Jan Hubicka <jh@suse.cz>
17553 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
17556 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
17558 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
17559 (process_asm): Create a constructor for GCN_STACK_SIZE.
17560 (main): Parse the -mstack-size option.
17562 2023-02-06 Alex Coplan <alex.coplan@arm.com>
17565 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
17566 Use correct constraint for operand 3.
17568 2023-02-06 Martin Jambor <mjambor@suse.cz>
17570 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
17572 2023-02-06 Xi Ruoyao <xry111@xry111.site>
17574 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
17575 New define_int_iterator.
17576 (bytepick_d_ashift_amount): Likewise.
17577 (bytepick_imm): New define_int_attr.
17578 (bytepick_w_lshiftrt_amount): Likewise.
17579 (bytepick_d_lshiftrt_amount): Likewise.
17580 (bytepick_w_<bytepick_imm>): New define_insn template.
17581 (bytepick_w_<bytepick_imm>_extend): Likewise.
17582 (bytepick_d_<bytepick_imm>): Likewise.
17583 (bytepick_w): Remove unused define_insn.
17584 (bytepick_d): Likewise.
17585 (UNSPEC_BYTEPICK_W): Remove unused unspec.
17586 (UNSPEC_BYTEPICK_D): Likewise.
17587 * config/loongarch/predicates.md (const_0_to_3_operand):
17588 Remove unused define_predicate.
17589 (const_0_to_7_operand): Likewise.
17591 2023-02-06 Jakub Jelinek <jakub@redhat.com>
17593 PR tree-optimization/108655
17594 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
17595 or -fsanitize=unreachable -fsanitize-trap=unreachable return
17596 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
17598 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
17600 * doc/install.texi (Specific): Remove PW32.
17602 2023-02-03 Jakub Jelinek <jakub@redhat.com>
17604 PR tree-optimization/108647
17605 * range-op.cc (operator_equal::op1_range,
17606 operator_not_equal::op1_range): Don't test op2 bound
17607 equality if op2.undefined_p (), instead set_varying.
17608 (operator_lt::op1_range, operator_le::op1_range,
17609 operator_gt::op1_range, operator_ge::op1_range): Return false if
17610 op2.undefined_p ().
17611 (operator_lt::op2_range, operator_le::op2_range,
17612 operator_gt::op2_range, operator_ge::op2_range): Return false if
17613 op1.undefined_p ().
17615 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
17617 PR tree-optimization/108639
17618 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
17620 (irange::operator==): Same.
17622 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
17624 PR tree-optimization/108647
17625 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
17626 (foperator_lt::op2_range): Same.
17627 (foperator_le::op1_range): Same.
17628 (foperator_le::op2_range): Same.
17629 (foperator_gt::op1_range): Same.
17630 (foperator_gt::op2_range): Same.
17631 (foperator_ge::op1_range): Same.
17632 (foperator_ge::op2_range): Same.
17633 (foperator_unordered_lt::op1_range): Same.
17634 (foperator_unordered_lt::op2_range): Same.
17635 (foperator_unordered_le::op1_range): Same.
17636 (foperator_unordered_le::op2_range): Same.
17637 (foperator_unordered_gt::op1_range): Same.
17638 (foperator_unordered_gt::op2_range): Same.
17639 (foperator_unordered_ge::op1_range): Same.
17640 (foperator_unordered_ge::op2_range): Same.
17642 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
17644 PR tree-optimization/107570
17645 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
17647 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
17649 * doc/gm2.texi (Internals): Remove from menu.
17650 (Using): Comment out ifnohtml conditional.
17651 (Documentation): Use gcc url.
17652 (License): Node simplified.
17653 (Copying): New node. Include gpl_v3_without_node.
17654 (Contributing): Node simplified.
17655 (Internals): Commented out.
17656 (Libraries): Node simplified.
17659 (Functions): Ditto.
17661 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
17663 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
17665 (mve_vqshluq_m_n_s<mode>): Likewise.
17666 (mve_vshlq_m_<supf><mode>): Likewise.
17667 (mve_vsriq_m_n_<supf><mode>): Likewise.
17668 (mve_vsubq_m_<supf><mode>): Likewise.
17670 2023-02-03 Martin Jambor <mjambor@suse.cz>
17673 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
17674 when comparing to an IPA-CP value.
17675 (dump_list_of_param_indices): New function.
17676 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
17677 Dump removed candidates using dump_list_of_param_indices.
17678 * ipa-param-manipulation.cc
17679 (ipa_param_body_adjustments::modify_expression): Add assert checking
17680 sizes of a VIEW_CONVERT_EXPR will match.
17681 (ipa_param_body_adjustments::modify_assignment): Likewise.
17683 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
17685 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
17686 * config/riscv/riscv.cc: Ditto.
17688 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17690 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
17694 * config/riscv/vector.md: Ditto.
17696 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17698 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
17699 * config/riscv/riscv-vector-builtins-bases.cc: New class.
17700 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
17703 * config/riscv/riscv-vector-builtins.cc: Ditto.
17704 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
17706 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
17708 * toplev.cc (toplev::main): Only print the version information header
17709 from toplevel main().
17711 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
17713 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
17714 cond_{ashl|ashr|lshr}
17716 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
17718 PR rtl-optimization/108086
17719 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
17720 Adjust size-related commentary accordingly.
17722 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
17724 PR rtl-optimization/108508
17725 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
17726 the splay tree search gives the first clobber in the second group,
17727 make sure that the root of the first clobber group is updated
17728 correctly. Enter the new clobber group into the definition splay
17731 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
17733 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
17734 Fix finding best match score.
17736 2023-02-02 Jakub Jelinek <jakub@redhat.com>
17739 PR rtl-optimization/108463
17741 * cselib.cc (cselib_current_insn): Move declaration earlier.
17742 (cselib_hasher::equal): For debug only locs, temporarily override
17743 cselib_current_insn to their l->setting_insn for the
17744 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
17745 promote some debug locs.
17746 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
17747 when using cselib call cselib_lookup_from_insn on the address but
17748 don't substitute it.
17750 2023-02-02 Richard Biener <rguenther@suse.de>
17752 PR middle-end/108625
17753 * genmatch.cc (expr::gen_transform): Also disallow resimplification
17754 from pushing to lseq with force_leaf.
17755 (dt_simplify::gen_1): Likewise.
17757 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
17759 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
17760 (struct kernargs): Replace the common content with kernargs_abi.
17761 (struct heap): Delete.
17762 (main): Read GCN_STACK_SIZE envvar.
17763 Allocate space for the device stacks.
17764 Write the new kernargs fields.
17765 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
17766 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
17767 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
17768 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
17769 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
17770 Set up the stacks from the values in the kernargs, not private.
17771 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
17772 (gcn_hsa_declare_function_name): Turn off the private segment.
17773 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
17774 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
17775 * config/gcn/gcn.opt (mstack-size): Change the description.
17777 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
17780 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
17781 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
17782 addressing MVE predicate modes.
17783 (mve_bool_vec_to_const): Change to represent correct MVE predicate
17785 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
17787 (arm_vector_mode_supported_p): Likewise.
17788 (arm_mode_to_pred_mode): Add V2QI.
17789 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
17791 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
17792 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
17793 (v2qi_UP): New macro.
17794 (v4bi_UP): New macro.
17795 (v8bi_UP): New macro.
17796 (v16bi_UP): New macro.
17797 (arm_expand_builtin_args): Make it able to expand the new predicate
17799 * config/arm/arm-modes.def (V2QI): New mode.
17800 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
17801 Pred4x4_t): Remove unused predicate builtin types.
17802 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
17803 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
17804 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
17805 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
17806 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
17807 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
17808 of MODE_VECTOR_BOOL.
17809 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
17810 (MVE_VPRED): Likewise.
17811 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
17812 (MVE_vctp): New mode attribute.
17816 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
17817 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
17819 (mve_vpnothi): Rename this...
17820 (mve_vpnotv16bi): ... to this.
17821 (mve_vctp<mode1>q_mhi): Rename this...
17822 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
17823 (mve_vldrdq_gather_base_z_<supf>v2di,
17824 mve_vldrdq_gather_offset_z_<supf>v2di,
17825 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
17826 mve_vstrdq_scatter_base_p_<supf>v2di,
17827 mve_vstrdq_scatter_offset_p_<supf>v2di,
17828 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
17829 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
17830 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
17831 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
17832 mve_vldrdq_gather_base_wb_z_<supf>v2di,
17833 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
17834 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
17836 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
17838 (VCTP): ... with this.
17839 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
17840 (VCTP_M): ... with this.
17841 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
17842 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
17844 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
17847 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
17848 (arm_modes_tieable_p): Make MVE predicate modes tieable.
17849 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
17850 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
17851 simplify_subreg to simplify subregs where the outermode is not scalar.
17853 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
17856 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
17857 new qualifiers parameter and use unsigned short type for MVE predicate.
17858 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
17860 (arm_init_crypto_builtins): Likewise.
17862 2023-02-02 Jakub Jelinek <jakub@redhat.com>
17865 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
17866 * internal-fn.def (TRAP): Remove.
17867 * internal-fn.cc (expand_TRAP): Remove.
17868 * tree.cc (build_common_builtin_nodes): Define
17869 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
17870 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
17871 instead of BUILT_IN_TRAP.
17872 * gimple.cc (gimple_build_builtin_unreachable): Remove
17873 emitting internal function for BUILT_IN_TRAP.
17874 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
17875 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
17876 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
17877 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
17878 BUILT_IN_UNREACHABLE_TRAP.
17879 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
17880 * tree-cfg.cc (verify_gimple_call,
17881 pass_warn_function_return::execute): Likewise.
17882 * attribs.cc (decl_attributes): Don't report exclusions on
17883 BUILT_IN_UNREACHABLE_TRAP either.
17885 2023-02-02 liuhongt <hongtao.liu@intel.com>
17887 PR tree-optimization/108601
17888 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
17889 * tree-vect-loop.cc
17890 (vectorizable_nonlinear_induction): Remove
17891 vect_can_peel_nonlinear_iv_p.
17892 (vect_can_peel_nonlinear_iv_p): Don't peel
17893 nonlinear iv(mult or shift) for epilog when vf is not
17894 constant and moved the defination to ..
17895 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
17898 2023-02-02 Jakub Jelinek <jakub@redhat.com>
17900 PR middle-end/108435
17901 * tree-nested.cc (convert_nonlocal_omp_clauses)
17902 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
17903 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
17904 before calling declare_vars.
17905 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
17906 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
17907 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
17908 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
17910 2023-02-01 Tamar Christina <tamar.christina@arm.com>
17912 * common/config/aarch64/aarch64-common.cc
17913 (struct aarch64_option_extension): Add native_detect and document struct
17915 (all_extensions): Set new field native_detect.
17916 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
17919 2023-02-01 Martin Liska <mliska@suse.cz>
17921 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
17924 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
17926 PR tree-optimization/108356
17927 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
17928 do a search of the DOM tree for a range.
17930 2023-02-01 Martin Liska <mliska@suse.cz>
17933 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
17934 ony non-null values.
17935 * ipa.cc (walk_polymorphic_call_targets): Likewise.
17937 2023-02-01 Martin Liska <mliska@suse.cz>
17940 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
17943 2023-02-01 Jakub Jelinek <jakub@redhat.com>
17946 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
17947 subregs in DEBUG_INSNs.
17949 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
17951 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
17953 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
17955 * config/s390/s390.cc (s390_restore_gpr_p): New function.
17956 (s390_preserve_gpr_arg_in_range_p): New function.
17957 (s390_preserve_gpr_arg_p): New function.
17958 (s390_preserve_fpr_arg_p): New function.
17959 (s390_register_info_stdarg_fpr): Rename to ...
17960 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
17961 (s390_register_info_stdarg_gpr): Rename to ...
17962 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
17963 (s390_register_info): Use the renamed functions above.
17964 (s390_optimize_register_info): Likewise.
17965 (save_fpr): Generate CFI for -mpreserve-args.
17966 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
17967 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
17968 (s390_optimize_prologue): Likewise.
17969 * config/s390/s390.opt: New option -mpreserve-args
17971 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
17973 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
17974 (restore_gprs): Likewise.
17975 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
17976 frame pointer if a frame-pointer is used.
17977 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
17978 * config/s390/s390.md (stack_tie): Add a register operand and
17980 (@stack_tie<mode>): ... this.
17982 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
17984 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
17985 EMIT_CFI parameter.
17986 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
17987 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
17989 2023-02-01 Richard Biener <rguenther@suse.de>
17991 PR middle-end/108500
17992 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
17993 with tree traversal algorithm.
17995 2023-02-01 Jason Merrill <jason@redhat.com>
17997 * doc/invoke.texi: Document -Wno-changes-meaning.
17999 2023-02-01 David Malcolm <dmalcolm@redhat.com>
18001 * doc/invoke.texi (Static Analyzer Options): Add notes about
18002 limitations of -fanalyzer.
18004 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18006 * config/riscv/constraints.md (vj): New.
18008 * config/riscv/iterators.md: Add more opcode.
18009 * config/riscv/predicates.md (vector_arith_operand): New.
18010 (vector_neg_arith_operand): New.
18011 (vector_shift_operand): New.
18012 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
18013 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
18030 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
18047 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
18048 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
18049 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
18050 (DEF_RVV_U_OPS): New.
18051 (rvv_arg_type_info::get_base_vector_type): Handle
18052 RVV_BASE_shift_vector.
18053 (rvv_arg_type_info::get_tree_type): Ditto.
18054 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
18055 RVV_BASE_shift_vector.
18056 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
18057 * config/riscv/vector-iterators.md: Handle more opcode.
18058 * config/riscv/vector.md (@pred_<optab><mode>): New.
18060 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
18063 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
18066 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
18068 PR tree-optimization/108608
18069 * tree-vect-loop.cc (vect_transform_reduction): Handle single
18070 def-use cycles that involve function calls rather than tree codes.
18072 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
18074 PR tree-optimization/108385
18075 * gimple-range-gori.cc (gori_compute::compute_operand_range):
18076 Allow VARYING computations to continue if there is a relation.
18077 * range-op.cc (pointer_plus_operator::op2_range): New.
18079 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
18081 PR tree-optimization/108359
18082 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
18083 (range_operator::fold_range): If op1 is equivalent to op2 then
18084 invoke new fold_in_parts_equiv to operate on sub-components.
18085 * range-op.h (wi_fold_in_parts_equiv): New prototype.
18087 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
18089 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
18090 not abort calculations if there is a valid relation available.
18091 (gori_compute::refine_using_relation): Pass correct relation trio.
18092 (gori_compute::compute_operand1_range): Create trio and use it.
18093 (gori_compute::compute_operand2_range): Ditto.
18094 * range-op.cc (operator_plus::op1_range): Use correct trio member.
18095 (operator_minus::op1_range): Use correct trio member.
18096 * value-relation.cc (value_relation::create_trio): New.
18097 * value-relation.h (value_relation::create_trio): New prototype.
18099 2023-01-31 Jakub Jelinek <jakub@redhat.com>
18102 * config/i386/i386-expand.cc
18103 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
18104 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
18105 equal to bitsize of mode.
18107 2023-01-31 Jakub Jelinek <jakub@redhat.com>
18109 PR rtl-optimization/108596
18110 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
18111 ends with asm goto and has a crossing fallthrough edge to the same bb
18112 that contains at least one of its labels by restoring EDGE_CROSSING
18113 flag even on possible edge from cur_bb to new_bb successor.
18115 2023-01-31 Jakub Jelinek <jakub@redhat.com>
18118 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
18119 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
18120 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
18121 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
18122 uninitialized automatic variable __W.
18124 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
18126 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
18128 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18130 * config/riscv/riscv-protos.h (get_vector_mode): New function.
18131 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
18132 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
18133 (class loadstore): Adjust for indexed loads/stores support.
18135 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
18136 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
18152 * config/riscv/riscv-vector-builtins-shapes.cc
18153 (struct indexed_loadstore_def): New class.
18155 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18156 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
18157 for indexed loads/stores support.
18158 (check_required_extensions): Ditto.
18159 (rvv_arg_type_info::get_base_vector_type): New function.
18160 (rvv_arg_type_info::get_tree_type): Ditto.
18161 (function_builder::add_unique_function): Adjust for indexed loads/stores
18163 (function_expander::use_exact_insn): New function.
18164 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
18165 indexed loads/stores support.
18166 (struct rvv_arg_type_info): Ditto.
18167 (function_expander::index_mode): New function.
18168 (function_base::apply_tail_policy_p): Ditto.
18169 (function_base::apply_mask_policy_p): Ditto.
18170 * config/riscv/vector-iterators.md (unspec): New unspec.
18171 * config/riscv/vector.md (unspec): Ditto.
18172 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
18174 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
18175 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
18176 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
18177 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
18178 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
18179 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
18180 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
18181 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
18182 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
18183 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
18184 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
18185 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
18186 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
18188 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
18190 * config.gcc: Recognize x86_64-*-gnu* targets and include
18192 * config/i386/gnu64.h: Define configuration for new target
18193 including ld.so location.
18195 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
18197 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
18198 ampere1a to include SM4.
18200 2023-01-30 Andrew Pinski <apinski@marvell.com>
18202 PR tree-optimization/108582
18203 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
18204 for middlebb to have no phi nodes.
18206 2023-01-30 Richard Biener <rguenther@suse.de>
18208 PR tree-optimization/108574
18209 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
18210 sameval and def, ignore the equivalence if there's the
18211 danger of oscillating between two values.
18213 2023-01-30 Andreas Schwab <schwab@suse.de>
18215 * common/config/riscv/riscv-common.cc
18216 (riscv_option_optimization_table)
18217 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
18218 -fasynchronous-unwind-tables and -funwind-tables.
18219 * config.gcc (riscv*-*-linux*): Define
18220 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
18222 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
18224 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
18225 value of includedir.
18227 2023-01-30 Richard Biener <rguenther@suse.de>
18230 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
18233 2023-01-30 liuhongt <hongtao.liu@intel.com>
18235 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
18236 * doc/invoke.texi: Ditto.
18238 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
18240 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
18241 (stmt_may_terminate_function_p): If assuming return or EH
18242 volatile asm is safe.
18243 (find_always_executed_bbs): Fix handling of terminating BBS and
18244 infinite loops; add debug output.
18245 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
18247 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
18249 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
18250 off-by-one in checking the permissible shift-amount.
18252 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
18254 * doc/extend.texi (Named Address Spaces): Update link to the
18257 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
18259 * doc/standards.texi (Standards): Fix markup.
18261 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
18263 * doc/standards.texi (Standards): Update link to Objective-C book.
18265 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
18267 * doc/invoke.texi (Instrumentation Options): Update reference to
18270 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
18272 * doc/standards.texi: Update Go1 link.
18274 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18276 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
18277 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
18280 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18281 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
18283 * config/riscv/riscv-vector-builtins.cc
18284 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
18285 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
18286 (@pred_strided_store<mode>): Ditto.
18288 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18290 * config/riscv/vector.md (tail_policy_op_idx): Remove.
18291 (mask_policy_op_idx): Remove.
18292 (avl_type_op_idx): Remove.
18294 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
18296 PR tree-optimization/96373
18297 * tree.h (sign_mask_for): Declare.
18298 * tree.cc (sign_mask_for): New function.
18299 (signed_or_unsigned_type_for): For vector types, try to use the
18300 related_int_vector_mode.
18301 * genmatch.cc (commutative_op): Handle conditional internal functions.
18302 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
18304 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
18306 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
18307 Use the likely minimum VF when bounding the denominators to
18308 the estimated number of iterations.
18310 2023-01-27 Richard Biener <rguenther@suse.de>
18313 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
18314 and -Ofast FP environment side-effects.
18316 2023-01-27 Richard Biener <rguenther@suse.de>
18319 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
18320 Don't add crtfastmath.o for -shared.
18322 2023-01-27 Richard Biener <rguenther@suse.de>
18325 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
18328 2023-01-27 Richard Biener <rguenther@suse.de>
18331 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
18332 crtfastmath.o for -shared.
18334 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
18336 PR tree-optimization/108306
18337 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
18338 varying for shifts that are always out of void range.
18339 (operator_rshift::fold_range): Return [0, 0] not
18340 varying for shifts that are always out of void range.
18342 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
18344 PR tree-optimization/108447
18345 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
18346 Do not attempt to fold HONOR_NAN types.
18348 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18350 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
18351 Remove _m suffix for "vop_m" C++ overloaded API name.
18353 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18355 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
18356 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18357 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
18359 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
18360 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
18361 (vbool64_t): Ditto.
18362 (vbool32_t): Ditto.
18363 (vbool16_t): Ditto.
18368 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
18369 (rvv_arg_type_info::get_tree_type): Ditto.
18370 (function_expander::use_contiguous_load_insn): Ditto.
18371 * config/riscv/vector.md (@pred_store<mode>): Ditto.
18373 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18375 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
18376 (vsetvl_discard_result_insn_p): New function.
18377 (reg_killed_by_bb_p): rename to find_reg_killed_by.
18378 (find_reg_killed_by): New name.
18379 (get_vl): allow it to be called by more functions.
18380 (has_vsetvl_killed_avl_p): Add condition.
18381 (get_avl): allow it to be called by more functions.
18382 (insn_should_be_added_p): New function.
18383 (get_all_nonphi_defs): Refine function.
18384 (get_all_sets): Ditto.
18385 (get_same_bb_set): New function.
18386 (any_insn_in_bb_p): Ditto.
18387 (any_set_in_bb_p): Ditto.
18388 (get_vl_vtype_info): Add VLMAX forward optimization.
18389 (source_equal_p): Fix issues.
18390 (extract_single_source): Refine.
18391 (avl_info::multiple_source_equal_p): New function.
18392 (avl_info::operator==): Adjust for final version.
18393 (vl_vtype_info::operator==): Ditto.
18394 (vl_vtype_info::same_avl_p): Ditto.
18395 (vector_insn_info::parse_insn): Ditto.
18396 (vector_insn_info::available_p): New function.
18397 (vector_insn_info::merge): Adjust for final version.
18398 (vector_insn_info::dump): Add hard_empty.
18399 (pass_vsetvl::hard_empty_block_p): New function.
18400 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
18401 (pass_vsetvl::forward_demand_fusion): Ditto.
18402 (pass_vsetvl::demand_fusion): Ditto.
18403 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
18404 (pass_vsetvl::compute_local_properties): Adjust for final version.
18405 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
18406 (pass_vsetvl::refine_vsetvls): Ditto.
18407 (pass_vsetvl::commit_vsetvls): Ditto.
18408 (pass_vsetvl::propagate_avl): New function.
18409 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
18410 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
18412 2023-01-27 Jakub Jelinek <jakub@redhat.com>
18415 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
18416 from size_t to int.
18418 2023-01-27 Jakub Jelinek <jakub@redhat.com>
18421 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
18422 redirection of calls to __builtin_trap in addition to redirection
18423 to __builtin_unreachable.
18425 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18427 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
18429 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18431 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
18432 (emit_vsetvl_insn): Ditto.
18434 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18436 * config/riscv/vector.md: Fix constraints.
18438 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18440 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
18442 2023-01-27 Patrick Palka <ppalka@redhat.com>
18443 Jakub Jelinek <jakub@redhat.com>
18445 * tree-core.h (tree_code_type, tree_code_length): For
18446 C++17 and later, add inline keyword, otherwise don't define
18447 the arrays, but declare extern arrays.
18448 * tree.cc (tree_code_type, tree_code_length): Define these
18449 arrays for C++14 and older.
18451 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18453 * config/riscv/riscv-vsetvl.h: Change it into public.
18455 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18457 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
18460 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18462 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
18464 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18466 * config/riscv/vector.md: Fix incorrect attributes.
18468 2023-01-27 Richard Biener <rguenther@suse.de>
18471 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
18472 Don't add crtfastmath.o for -shared.
18474 2023-01-27 Alexandre Oliva <oliva@gnu.org>
18476 * doc/options.texi (option, RejectNegative): Mention that
18477 -g-started options are also implicitly negatable.
18479 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
18481 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
18482 Use get_typenode_from_name to get fixed-width integer type
18484 * config/riscv/riscv-vector-builtins.def: Update define with
18485 fixed-width integer type nodes.
18487 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18489 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
18490 (real_insn_and_same_bb_p): New function.
18491 (same_bb_and_after_or_equal_p): Remove it.
18492 (before_p): New function.
18493 (reg_killed_by_bb_p): Ditto.
18494 (has_vsetvl_killed_avl_p): Ditto.
18495 (get_vl): Move location so that we can call it.
18496 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
18497 (available_occurrence_p): Ditto.
18498 (dominate_probability_p): Remove it.
18499 (can_backward_propagate_p): Remove it.
18500 (get_all_nonphi_defs): New function.
18501 (get_all_predecessors): Ditto.
18502 (any_insn_in_bb_p): Ditto.
18503 (insert_vsetvl): Adjust AVL REG.
18504 (source_equal_p): New function.
18505 (extract_single_source): Ditto.
18506 (avl_info::single_source_equal_p): Ditto.
18507 (avl_info::operator==): Adjust for AVL=REG.
18508 (vl_vtype_info::same_avl_p): Ditto.
18509 (vector_insn_info::set_demand_info): Remove it.
18510 (vector_insn_info::compatible_p): Adjust for AVL=REG.
18511 (vector_insn_info::compatible_avl_p): New function.
18512 (vector_insn_info::merge): Adjust AVL=REG.
18513 (vector_insn_info::dump): Ditto.
18514 (pass_vsetvl::merge_successors): Remove it.
18515 (enum fusion_type): New enum.
18516 (pass_vsetvl::get_backward_fusion_type): New function.
18517 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
18518 (pass_vsetvl::forward_demand_fusion): Ditto.
18519 (pass_vsetvl::demand_fusion): Ditto.
18520 (pass_vsetvl::prune_expressions): Ditto.
18521 (pass_vsetvl::compute_local_properties): Ditto.
18522 (pass_vsetvl::cleanup_vsetvls): Ditto.
18523 (pass_vsetvl::commit_vsetvls): Ditto.
18524 (pass_vsetvl::init): Ditto.
18525 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
18526 (enum merge_type): New enum.
18528 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18530 * config/riscv/riscv-vsetvl.cc
18531 (vector_infos_manager::vector_infos_manager): Add probability.
18532 (vector_infos_manager::dump): Ditto.
18533 (pass_vsetvl::compute_probabilities): Ditto.
18534 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
18536 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18538 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
18539 (vector_insn_info::merge): Ditto.
18540 (vector_insn_info::dump): Ditto.
18541 (pass_vsetvl::merge_successors): Ditto.
18542 (pass_vsetvl::backward_demand_fusion): Ditto.
18543 (pass_vsetvl::forward_demand_fusion): Ditto.
18544 (pass_vsetvl::commit_vsetvls): Ditto.
18545 * config/riscv/riscv-vsetvl.h: Ditto.
18547 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18549 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
18552 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18554 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
18556 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18558 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
18559 Add pre-check for redundant flow.
18561 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18563 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
18564 (vector_infos_manager::free_bitmap_vectors): Ditto.
18565 (pass_vsetvl::pre_vsetvl): Adjust codes.
18566 * config/riscv/riscv-vsetvl.h: New function declaration.
18568 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18570 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
18571 (vector_insn_info::set_demand_info): New function.
18572 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
18573 (pass_vsetvl::merge_successors): Ditto.
18574 (pass_vsetvl::compute_global_backward_infos): Ditto.
18575 (pass_vsetvl::backward_demand_fusion): Ditto.
18576 (pass_vsetvl::forward_demand_fusion): Ditto.
18577 (pass_vsetvl::demand_fusion): New function.
18578 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
18579 * config/riscv/riscv-vsetvl.h: New function declaration.
18581 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18583 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
18585 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18587 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
18588 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
18590 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18592 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
18593 (backward_propagate_worthwhile_p): Fix non-worthwhile.
18595 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18597 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
18599 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18601 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
18602 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
18603 (pass_vsetvl::commit_vsetvls): Ditto.
18604 * config/riscv/riscv-vsetvl.h: New function declaration.
18606 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18608 * config/riscv/vector.md:
18610 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18612 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
18613 pred_store for vse.
18614 * config/riscv/riscv-vector-builtins.cc
18615 (function_expander::add_mem_operand): Refine function.
18616 (function_expander::use_contiguous_load_insn): Adjust new
18618 (function_expander::use_contiguous_store_insn): Ditto.
18619 * config/riscv/riscv-vector-builtins.h: Refine function.
18620 * config/riscv/vector.md (@pred_store<mode>): New pattern.
18622 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18624 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
18626 2023-01-26 Marek Polacek <polacek@redhat.com>
18628 PR middle-end/108543
18629 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
18630 if it was previously set.
18632 2023-01-26 Jakub Jelinek <jakub@redhat.com>
18634 PR tree-optimization/108540
18635 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
18636 are singletons, use range_true even if op1 != op2
18637 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
18638 even if intersection of the ranges is empty and one has
18639 zero low bound and another zero high bound, use range_true_and_false
18640 rather than range_false.
18641 (foperator_not_equal::fold_range): If both op1 and op2
18642 are singletons, use range_false even if op1 != op2
18643 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
18644 even if intersection of the ranges is empty and one has
18645 zero low bound and another zero high bound, use range_true_and_false
18646 rather than range_true.
18648 2023-01-26 Jakub Jelinek <jakub@redhat.com>
18650 * value-relation.cc (kind_string): Add const.
18651 (rr_negate_table, rr_swap_table, rr_intersect_table,
18652 rr_union_table, rr_transitive_table): Add static const, change
18653 element type from relation_kind to unsigned char.
18654 (relation_negate, relation_swap, relation_intersect, relation_union,
18655 relation_transitive): Cast rr_*_table element to relation_kind.
18656 (relation_to_code): Add static const.
18657 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
18659 2023-01-26 Richard Biener <rguenther@suse.de>
18661 PR tree-optimization/108547
18662 * gimple-predicate-analysis.cc (value_sat_pred_p):
18665 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
18667 PR tree-optimization/108522
18668 * tree-object-size.cc (compute_object_offset): Make EXPR
18669 argument non-const. Call component_ref_field_offset.
18671 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18673 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
18674 FEATURE_STRING field.
18676 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
18678 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
18680 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
18684 * gcc.cc: Provide default specs for Modula-2 so that when the
18685 language is not built-in better diagnostics are emitted for
18686 attempts to use .mod or .m2i file extensions.
18688 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
18690 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
18692 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
18694 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
18696 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
18698 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
18701 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
18703 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
18705 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
18707 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
18709 2023-01-25 Richard Biener <rguenther@suse.de>
18711 PR tree-optimization/108523
18712 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
18713 backedge value for the result when using predication to
18716 2023-01-25 Richard Biener <rguenther@suse.de>
18718 * doc/lto.texi (Command line options): Reword and update reference
18719 to removed lto_read_all_file_options.
18721 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
18723 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
18726 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
18728 * doc/contrib.texi: Add Jose E. Marchesi.
18730 2023-01-25 Jakub Jelinek <jakub@redhat.com>
18732 PR tree-optimization/108498
18733 * gimple-ssa-store-merging.cc (class store_operand_info):
18734 End coment with full stop rather than comma.
18735 (split_group): Likewise.
18736 (merged_store_group::apply_stores): Clear string_concatenation if
18737 start or end aren't on a byte boundary.
18739 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
18740 Jakub Jelinek <jakub@redhat.com>
18742 PR tree-optimization/108522
18743 * tree-object-size.cc (compute_object_offset): Use
18744 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
18746 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18748 * config/xtensa/xtensa.md:
18749 Fix exit from loops detecting references before overwriting in the
18752 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
18754 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
18755 do elimination but only for hard register.
18756 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
18757 calls of get_hard_regno.
18759 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18761 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
18764 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
18767 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
18768 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
18771 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18773 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
18774 and only include 'csky/t-csky-linux' when enable multilib.
18775 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
18776 define it when disable multilib.
18778 2023-01-24 Richard Biener <rguenther@suse.de>
18780 PR tree-optimization/108500
18781 * dominance.h (calculate_dominance_info): Add parameter
18782 to indicate fast-query compute, defaulted to true.
18783 * dominance.cc (calculate_dominance_info): Honor
18784 fast-query compute parameter.
18785 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
18786 not compute the dominator fast-query DFS numbers.
18788 2023-01-24 Eric Biggers <ebiggers@google.com>
18791 * optc-save-gen.awk: Fix copy-and-paste error.
18793 2023-01-24 Jakub Jelinek <jakub@redhat.com>
18796 * cgraphbuild.cc: Include gimplify.h.
18797 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
18798 their corresponding DECL_VALUE_EXPR expressions after unsharing.
18800 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18803 * config.gcc (tm_file): Move the variable out of loop.
18805 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
18806 Yang Yujie <yangyujie@loongson.cn>
18809 * config/loongarch/loongarch.cc (loongarch_classify_address):
18810 Add precessint for CONST_INT.
18811 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
18812 (loongarch_print_operand): Increase the processing of '%c'.
18813 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
18814 And port the public operand modifiers information to this document.
18816 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18818 * doc/invoke.texi (-mbranch-protection): Update documentation.
18820 2023-01-23 Richard Biener <rguenther@suse.de>
18823 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
18825 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
18826 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
18827 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
18828 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
18830 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18832 * config/arm/aout.h (ra_auth_code): Add entry in enum.
18833 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
18834 to dwarf frame expression.
18835 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
18836 (arm_expand_prologue): Update frame related information and reg notes
18837 for pac/pacbit insn.
18838 (arm_regno_class): Check for pac pseudo reigster.
18839 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
18840 (arm_init_machine_status): Set pacspval_needed to zero.
18841 (arm_debugger_regno): Check for PAC register.
18842 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
18844 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
18845 (arm_unwind_emit): Update REG_CFA_REGISTER case._
18846 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
18847 (DWARF_PAC_REGNUM): Define.
18848 (IS_PAC_REGNUM): Likewise.
18849 (enum reg_class): Add PAC_REG entry.
18850 (machine_function): Add pacbti_needed state to structure.
18851 * config/arm/arm.md (RA_AUTH_CODE): Define.
18853 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18855 * config.gcc ($tm_file): Update variable.
18856 * config/arm/arm-mlib.h: Create new header file.
18857 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
18858 multilib arch directory.
18859 (MULTILIB_REUSE): Add multilib reuse rules.
18860 (MULTILIB_MATCHES): Add multilib match rules.
18862 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18864 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
18865 * config/arm/arm-tables.opt: Regenerate.
18866 * config/arm/arm-tune.md: Likewise.
18867 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
18868 * (-mfix-cmse-cve-2021-35465): Likewise.
18870 2023-01-23 Richard Biener <rguenther@suse.de>
18872 PR tree-optimization/108482
18873 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
18874 .LOOP_DIST_ALIAS calls.
18876 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18878 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
18879 * config/arm/arm-protos.h: Update.
18880 * config/arm/aarch-common-protos.h: Declare
18881 'aarch_bti_arch_check'.
18882 * config/arm/arm.cc (aarch_bti_enabled) Update.
18883 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
18884 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
18885 * config/arm/arm.md (bti_nop): New insn.
18886 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
18887 (aarch-bti-insert.o): New target.
18888 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
18889 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
18891 (gate): Make use of 'aarch_bti_arch_check'.
18892 * config/arm/arm-passes.def: New file.
18893 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
18895 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18897 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
18898 'aarch-bti-insert.o'.
18899 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
18901 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
18902 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
18903 (aarch64_output_mi_thunk)
18904 (aarch64_print_patchable_function_entry)
18905 (aarch64_file_end_indicate_exec_stack): Update renamed function
18906 calls to renamed functions.
18907 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
18908 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
18910 * config/aarch64/aarch64-bti-insert.cc: Delete.
18911 * config/arm/aarch-bti-insert.cc: New file including and
18912 generalizing code from aarch64-bti-insert.cc.
18913 * config/arm/aarch-common-protos.h: Update.
18915 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18917 * config/arm/arm.h (arm_arch8m_main): Declare it.
18918 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
18920 * config/arm/arm.cc (arm_arch8m_main): Define it.
18921 (arm_option_reconfigure_globals): Set arm_arch8m_main.
18922 (arm_compute_frame_layout, arm_expand_prologue)
18923 (thumb2_expand_return, arm_expand_epilogue)
18924 (arm_conditional_register_usage): Update for pac codegen.
18925 (arm_current_function_pac_enabled_p): New function.
18926 (aarch_bti_enabled) New function.
18927 (use_return_insn): Return zero when pac is enabled.
18928 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
18930 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
18931 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
18933 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18935 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
18936 mbranch-protection.
18938 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18939 Tejas Belagod <tbelagod@arm.com>
18941 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
18942 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
18944 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18945 Tejas Belagod <tbelagod@arm.com>
18946 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18948 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
18949 new pseudo register class _UVRSC_PAC.
18951 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18952 Tejas Belagod <tbelagod@arm.com>
18954 * config/arm/arm-c.cc (arm_cpu_builtins): Define
18955 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
18956 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
18958 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18959 Tejas Belagod <tbelagod@arm.com>
18961 * doc/sourcebuild.texi: Document arm_pacbti_hw.
18963 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18964 Tejas Belagod <tbelagod@arm.com>
18965 Richard Earnshaw <Richard.Earnshaw@arm.com>
18967 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
18968 -mbranch-protection option and initialize appropriate data structures.
18969 * config/arm/arm.opt (-mbranch-protection): New option.
18970 * doc/invoke.texi (Arm Options): Document it.
18972 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18973 Tejas Belagod <tbelagod@arm.com>
18975 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
18976 * config/arm/arm-cpus.in (pacbti): New feature.
18977 * doc/invoke.texi (Arm Options): Document it.
18979 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
18980 Tejas Belagod <tbelagod@arm.com>
18982 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
18983 (all_architectures): Fix comment.
18984 (aarch64_parse_extension): Rename return type, enum value names.
18985 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
18986 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
18987 Also rename corresponding enum values.
18988 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
18989 out aarch64_function_type and move it to common code as
18990 aarch_function_type in aarch-common.h.
18991 * config/aarch64/aarch64-protos.h: Include common types header,
18992 move out types aarch64_parse_opt_result and aarch64_key_type to
18994 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
18995 and functions out into aarch-common.h and aarch-common.cc. Fix up
18996 all the name changes resulting from the move.
18997 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
18999 * config/aarch64/aarch64.opt: Include aarch-common.h to import
19000 type move. Fix up name changes from factoring out common code and
19002 * config/arm/aarch-common-protos.h: Export factored out routines to both
19004 * config/arm/aarch-common.cc: Include newly factored out types.
19005 Move all mbranch-protection code and data structures from
19007 * config/arm/aarch-common.h: New header that declares types shared
19008 between aarch32 and aarch64 backends.
19009 * config/arm/arm-protos.h: Declare types and variables that are
19010 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
19011 aarch_ra_sign_scope and aarch_enable_bti.
19012 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
19013 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
19014 * config/arm/arm.cc: Add missing includes.
19016 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
19018 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
19020 2023-01-23 Richard Biener <rguenther@suse.de>
19022 PR tree-optimization/108449
19023 * cgraphunit.cc (check_global_declaration): Do not turn
19024 undefined statics into externs.
19026 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
19028 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
19029 and HI input modes.
19030 * config/pru/pru.md (clz): Fix generated code for QI and HI
19033 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
19035 * config/v850/v850.cc (v850_select_section): Put const volatile
19036 objects into read-only sections.
19038 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
19040 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
19041 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
19042 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
19044 2023-01-20 Jakub Jelinek <jakub@redhat.com>
19046 PR tree-optimization/108457
19047 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
19048 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
19049 argument instead of a temporary. Formatting fixes.
19051 2023-01-19 Jakub Jelinek <jakub@redhat.com>
19053 PR tree-optimization/108447
19054 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
19055 (relation_tests): Add self-tests for relation_{intersect,union}
19057 * selftest.h (relation_tests): Declare.
19058 * function-tests.cc (test_ranges): Call it.
19060 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
19063 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
19064 invalid third argument to __builtin_ia32_prefetch.
19066 2023-01-19 Jakub Jelinek <jakub@redhat.com>
19068 PR middle-end/108459
19069 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
19070 than fold_unary for NEGATE_EXPR.
19072 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
19075 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
19076 comment. Move assert about alignment a bit later.
19078 2023-01-19 Jakub Jelinek <jakub@redhat.com>
19080 PR tree-optimization/108440
19081 * tree-ssa-forwprop.cc: Include gimple-range.h.
19082 (simplify_rotate): For the forms with T2 wider than T and shift counts of
19083 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
19084 to B. For the forms with T2 wider than T and shift counts of
19085 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
19086 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
19087 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
19088 pass specific ranger instead of get_global_range_query.
19089 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
19092 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19094 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
19095 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
19097 (aarch64_simd_vec_copy_lane<mode>): Likewise.
19098 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
19100 2023-01-19 Alexandre Oliva <oliva@adacore.com>
19103 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
19104 within debug insns.
19106 2023-01-18 Martin Jambor <mjambor@suse.cz>
19109 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
19110 lcone_of chain also do not need the body.
19112 2023-01-18 Richard Biener <rguenther@suse.de>
19115 2022-12-16 Richard Biener <rguenther@suse.de>
19117 PR middle-end/108086
19118 * tree-inline.cc (remap_ssa_name): Do not unshare the
19119 result from the decl_map.
19121 2023-01-18 Murray Steele <murray.steele@arm.com>
19124 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
19126 (__arm_vst1q_p_s8): Likewise.
19127 (__arm_vld1q_z_u8): Likewise.
19128 (__arm_vld1q_z_s8): Likewise.
19129 (__arm_vst1q_p_u16): Likewise.
19130 (__arm_vst1q_p_s16): Likewise.
19131 (__arm_vld1q_z_u16): Likewise.
19132 (__arm_vld1q_z_s16): Likewise.
19133 (__arm_vst1q_p_u32): Likewise.
19134 (__arm_vst1q_p_s32): Likewise.
19135 (__arm_vld1q_z_u32): Likewise.
19136 (__arm_vld1q_z_s32): Likewise.
19137 (__arm_vld1q_z_f16): Likewise.
19138 (__arm_vst1q_p_f16): Likewise.
19139 (__arm_vld1q_z_f32): Likewise.
19140 (__arm_vst1q_p_f32): Likewise.
19142 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19144 * config/xtensa/xtensa.md (xorsi3_internal):
19145 Rename from the original of "xorsi3".
19146 (xorsi3): New expansion pattern that emits addition rather than
19147 bitwise-XOR when the second source is a constant of -2147483648
19150 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
19151 Andrew Pinski <apinski@marvell.com>
19154 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
19155 vec_vsubcuqP with vec_vsubcuq.
19157 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
19160 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
19161 support for invalid uses of MMA opaque type in function arguments.
19163 2023-01-18 liuhongt <hongtao.liu@intel.com>
19166 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
19167 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
19168 -share or -mno-daz-ftz is specified.
19169 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
19170 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
19172 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
19174 * config/bpf/bpf.cc (bpf_option_override): Disable
19177 2023-01-17 Jakub Jelinek <jakub@redhat.com>
19179 PR tree-optimization/106523
19180 * tree-ssa-forwprop.cc (simplify_rotate): For the
19181 patterns with (-Y) & (B - 1) in one operand's shift
19182 count and Y in another, if T2 has wider precision than T,
19183 punt if Y could have a value in [B, B2 - 1] range.
19185 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
19188 * config/i386/i386.cc (x86_output_mi_thunk): Disable
19189 -mforce-indirect-call for PIC in 32-bit mode.
19191 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
19194 * ipa-modref.cc (modref_access_analysis::analyze): Use
19195 find_always_executed_bbs.
19196 * ipa-sra.cc (process_scan_results): Likewise.
19197 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
19198 (find_always_executed_bbs): New function.
19199 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
19200 (find_always_executed_bbs): Declare.
19202 2023-01-16 Jan Hubicka <jh@suse.cz>
19204 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
19205 by TARGET_USE_SCATTER.
19206 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
19207 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
19208 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
19209 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
19210 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
19211 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
19213 2023-01-16 Richard Biener <rguenther@suse.de>
19216 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
19218 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
19222 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
19223 (__ARM_mve_coerce3): Likewise.
19225 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
19227 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
19229 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
19231 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
19232 (number_of_iterations_bitcount): Add call to the above.
19233 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
19234 c[lt]z idiom recognition.
19236 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
19238 * doc/sourcebuild.texi: Add missing target attributes.
19240 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
19242 PR tree-optimization/94793
19243 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
19245 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
19246 (number_of_iterations_cltz_complement): New.
19247 (number_of_iterations_bitcount): Add call to the above.
19249 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
19251 * doc/extend.texi (Common Function Attributes): Fix grammar.
19253 2023-01-16 Jakub Jelinek <jakub@redhat.com>
19256 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
19257 * config/riscv/riscv-vsetvl.cc: Likewise.
19259 2023-01-16 Jakub Jelinek <jakub@redhat.com>
19262 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
19263 disable -Winit-self using pragma GCC diagnostic ignored.
19264 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
19266 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
19267 _mm256_undefined_si256): Likewise.
19268 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
19269 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
19270 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
19271 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
19273 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
19276 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
19277 support for invalid uses in inline asm, factor out the checking and
19278 erroring to lambda function check_and_error_invalid_use.
19280 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
19282 PR tree-optimization/107608
19283 * range-op-float.cc (range_operator_float::fold_range): Avoid
19284 folding into INF when flag_trapping_math.
19285 * value-range.h (frange::known_isinf): Return false for possible NANs.
19287 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19289 * config.gcc (csky-*-*): Support --with-float=softfp.
19291 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19293 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
19294 Rename to xtensa_adjust_reg_alloc_order.
19295 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
19296 Ditto. And also remove code to reorder register numbers for
19297 leaf functions, rename the tables, and adjust the allocation
19298 order for the call0 ABI to use register A0 more.
19299 (xtensa_leaf_regs): Remove.
19300 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
19301 (order_regs_for_local_alloc): Rename as the above.
19302 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
19304 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19306 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
19307 Change to define_insn_and_split to fold ldr+dup to ld1rq.
19308 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
19310 2023-01-14 Alexandre Oliva <oliva@adacore.com>
19312 * hash-table.h (is_deleted): Precheck !is_empty.
19313 (mark_deleted): Postcheck !is_empty.
19314 (copy constructor): Test is_empty before is_deleted.
19316 2023-01-14 Alexandre Oliva <oliva@adacore.com>
19319 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
19322 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
19324 PR rtl-optimization/108274
19325 * function.cc (thread_prologue_and_epilogue_insns): Also update the
19326 DF information for calls in a few more cases.
19328 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
19330 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
19331 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
19333 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
19334 (MAX_SYNC_LIBFUNC_SIZE): Define.
19335 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
19337 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
19338 libcall when sync libcalls are disabled.
19339 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
19340 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
19341 are disabled on 32-bit target.
19342 * config/pa/pa.opt (matomic-libcalls): New option.
19343 * doc/invoke.texi (HPPA Options): Update.
19345 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
19347 PR rtl-optimization/108117
19348 PR rtl-optimization/108132
19349 * sched-deps.cc (deps_analyze_insn): Do not schedule across
19350 calls before reload.
19352 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
19354 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
19355 options for -mlibarch.
19356 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
19357 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
19359 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
19361 * attribs.cc (strict_flex_array_level_of): Move this function to ...
19362 * attribs.h (strict_flex_array_level_of): Remove the declaration.
19363 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
19364 replace the referece to strict_flex_array_level_of with
19365 DECL_NOT_FLEXARRAY.
19366 * tree.cc (component_ref_size): Likewise.
19368 2023-01-13 Richard Biener <rguenther@suse.de>
19371 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
19372 crtfastmath.o for -shared.
19373 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
19375 2023-01-13 Richard Biener <rguenther@suse.de>
19378 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
19379 crtfastmath.o for -shared.
19380 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
19382 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
19385 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
19387 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
19389 (TARGET_DWARF_FRAME_REG_MODE): Define.
19391 2023-01-13 Richard Biener <rguenther@suse.de>
19394 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
19395 update EH info on the fly.
19397 2023-01-13 Richard Biener <rguenther@suse.de>
19399 PR tree-optimization/108387
19400 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
19401 value before inserting expression into the tables.
19403 2023-01-12 Andrew Pinski <apinski@marvell.com>
19404 Roger Sayle <roger@nextmovesoftware.com>
19406 PR tree-optimization/92342
19407 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
19408 Use tcc_comparison and :c for the multiply.
19409 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
19411 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
19412 Richard Sandiford <richard.sandiford@arm.com>
19415 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
19416 Check DECL_PACKED for bitfield.
19417 (aarch64_layout_arg): Warn when parameter passing ABI changes.
19418 (aarch64_function_arg_boundary): Do not warn here.
19419 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
19422 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
19423 Richard Sandiford <richard.sandiford@arm.com>
19425 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
19427 (aarch64_layout_arg): Factorize warning conditions.
19428 (aarch64_function_arg_boundary): Fix typo.
19429 * function.cc (currently_expanding_function_start): New variable.
19430 (expand_function_start): Handle
19431 currently_expanding_function_start.
19432 * function.h (currently_expanding_function_start): Declare.
19434 2023-01-12 Richard Biener <rguenther@suse.de>
19436 PR tree-optimization/99412
19437 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
19438 (swap_ops_for_binary_stmt): Remove reduction handling.
19439 (rewrite_expr_tree_parallel): Adjust.
19440 (reassociate_bb): Likewise.
19441 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
19443 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19445 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
19446 Rearrange the emitting codes.
19448 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19450 * config/xtensa/xtensa.md (*btrue):
19451 Correct value of the attribute "length" that depends on
19452 TARGET_DENSITY and operands, and add '?' character to the register
19453 constraint of the compared operand.
19455 2023-01-12 Alexandre Oliva <oliva@adacore.com>
19457 * hash-table.h (expand): Check elements and deleted counts.
19458 (verify): Likewise.
19460 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
19462 PR tree-optimization/71343
19463 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
19464 the value number of the expression X << C the same as the value
19465 number for the multiplication X * (1<<C).
19467 2023-01-11 David Faust <david.faust@oracle.com>
19470 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
19471 floating point modes.
19473 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
19475 PR tree-optimization/108199
19476 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
19477 for bit-field references.
19479 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
19481 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
19482 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
19483 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
19484 OPTION_MASK_P10_FUSION.
19486 2023-01-11 Richard Biener <rguenther@suse.de>
19488 PR tree-optimization/107767
19489 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
19490 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
19491 * tree-switch-conversion.cc (switch_conversion::collect):
19492 Count unique non-default targets accounting for later
19493 merging opportunities.
19495 2023-01-11 Martin Liska <mliska@suse.cz>
19497 PR middle-end/107976
19498 * params.opt: Limit JT params.
19499 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
19501 2023-01-11 Richard Biener <rguenther@suse.de>
19503 PR tree-optimization/108352
19504 * tree-ssa-threadbackward.cc
19505 (back_threader_profitability::profitable_path_p): Adjust
19506 heuristic that allows non-multi-way branch threads creating
19508 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
19509 (--param fsm-scale-path-stmts): Adjust.
19510 * params.opt (--param=fsm-scale-path-blocks=): Remove.
19511 (-param=fsm-scale-path-stmts=): Adjust description.
19513 2023-01-11 Richard Biener <rguenther@suse.de>
19515 PR tree-optimization/108353
19516 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
19518 (add_ssa_edge): Simplify.
19519 (add_control_edge): Likewise.
19520 (ssa_prop_init): Likewise.
19521 (ssa_prop_fini): Likewise.
19522 (ssa_propagation_engine::ssa_propagate): Likewise.
19524 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
19526 * config/s390/s390.md (*not<mode>): New pattern.
19528 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19530 * config/xtensa/xtensa.cc (xtensa_insn_cost):
19531 Let insn cost for size be obtained by applying COSTS_N_INSNS()
19532 to instruction length and then dividing by 3.
19534 2023-01-10 Richard Biener <rguenther@suse.de>
19536 PR tree-optimization/106293
19537 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
19538 process degenerate PHI defs.
19540 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
19542 PR rtl-optimization/106421
19543 * cprop.cc (bypass_block): Check that DEST is local to this
19544 function (non-NULL) before calling find_edge.
19546 2023-01-10 Martin Jambor <mjambor@suse.cz>
19549 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
19550 sort_replacements, lookup_first_base_replacement and
19551 m_sorted_replacements_p.
19552 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
19553 (ipa_param_body_adjustments::register_replacement): Set
19554 m_sorted_replacements_p to false.
19555 (compare_param_body_replacement): New function.
19556 (ipa_param_body_adjustments::sort_replacements): Likewise.
19557 (ipa_param_body_adjustments::common_initialization): Call
19559 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
19560 m_sorted_replacements_p.
19561 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
19563 (ipa_param_body_adjustments::lookup_first_base_replacement): New
19565 (ipa_param_body_adjustments::modify_call_stmt): Use
19566 lookup_first_base_replacement.
19567 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
19568 adjustments->sort_replacements.
19570 2023-01-10 Richard Biener <rguenther@suse.de>
19572 PR tree-optimization/108314
19573 * tree-vect-stmts.cc (vectorizable_condition): Do not
19574 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
19576 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19578 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
19580 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19582 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
19584 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19586 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
19587 defines for soft float abi.
19589 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19591 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
19592 (smart_bclri): Likewise.
19593 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
19594 (fast_bclri): Likewise.
19595 (fast_cmpnesi_i): Likewise.
19596 (*fast_cmpltsi_i): Likewise.
19597 (*fast_cmpgeusi_i): Likewise.
19599 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
19601 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
19602 flag_fp_int_builtin_inexact || !flag_trapping_math.
19603 (<frm_pattern><mode>2): Likewise.
19605 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
19607 * config/s390/s390.cc (s390_register_info): Check call_used_regs
19608 instead of hard-coding the register numbers for call saved
19610 (s390_optimize_register_info): Likewise.
19612 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
19614 * doc/gm2.texi (Overview): Fix @node markers.
19615 (Using): Likewise. Remove subsections that were moved to Overview
19616 from the menu and move others around.
19618 2023-01-09 Richard Biener <rguenther@suse.de>
19620 PR middle-end/108209
19621 * genmatch.cc (commutative_op): Fix return value for
19622 user-id with non-commutative first replacement.
19624 2023-01-09 Jakub Jelinek <jakub@redhat.com>
19627 * calls.cc (expand_call): For calls with
19628 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
19631 2023-01-09 Richard Biener <rguenther@suse.de>
19633 PR middle-end/69482
19634 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
19635 qualified accesses also force objects to memory.
19637 2023-01-09 Martin Liska <mliska@suse.cz>
19640 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
19641 NULL (deleleted value) to a hash_set.
19643 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19645 * config/xtensa/xtensa.md (*splice_bits):
19646 New insn_and_split pattern.
19648 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19650 * config/xtensa/xtensa.cc
19651 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
19652 New helper functions.
19653 (xtensa_set_return_address, xtensa_output_mi_thunk):
19654 Change to use the helper function.
19655 (xtensa_emit_adjust_stack_ptr): Ditto.
19656 And also change to try reusing the content of scratch register
19657 A9 if the register is not modified in the function body.
19659 2023-01-07 LIU Hao <lh_mouse@126.com>
19661 PR middle-end/108300
19662 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
19663 before <windows.h>.
19664 * diagnostic-color.cc: Likewise.
19665 * plugin.cc: Likewise.
19666 * prefix.cc: Likewise.
19668 2023-01-06 Joseph Myers <joseph@codesourcery.com>
19670 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
19671 for handling real integer types.
19673 2023-01-06 Tamar Christina <tamar.christina@arm.com>
19676 2022-12-12 Tamar Christina <tamar.christina@arm.com>
19678 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
19679 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
19680 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
19681 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
19682 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
19683 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
19684 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
19685 (aarch64_simd_dupv2hf): New.
19686 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
19688 * config/aarch64/iterators.md (VHSDF_P): New.
19689 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
19690 Vel, q, vp): Add V2HF.
19691 * config/arm/types.md (neon_fp_reduc_add_h): New.
19693 2023-01-06 Martin Liska <mliska@suse.cz>
19695 PR middle-end/107966
19696 * doc/options.texi: Fix Var documentation in internal manual.
19698 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
19701 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
19703 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
19704 RTL expansion to allow condition (mask) to be shared/reused,
19705 by avoiding overwriting pseudos and adding REG_EQUAL notes.
19707 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
19709 * common.opt: Add -static-libgm2.
19710 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
19711 * doc/gm2.texi: Document static-libgm2.
19712 * gcc.cc (driver_handle_option): Allow static-libgm2.
19714 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
19716 * common/config/i386/i386-common.cc (processor_alias_table):
19717 Use CPU_ZNVER4 for znver4.
19718 * config/i386/i386.md: Add znver4.md.
19719 * config/i386/znver4.md: New.
19721 2023-01-04 Jakub Jelinek <jakub@redhat.com>
19723 PR tree-optimization/108253
19724 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
19727 2023-01-04 Jakub Jelinek <jakub@redhat.com>
19729 PR middle-end/108237
19730 * generic-match-head.cc: Include tree-pass.h.
19731 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
19732 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
19733 resp. PROP_gimple_lvec property set.
19735 2023-01-04 Jakub Jelinek <jakub@redhat.com>
19737 PR sanitizer/108256
19738 * convert.cc (do_narrow): Punt for MULT_EXPR if original
19739 type doesn't wrap around and -fsanitize=signed-integer-overflow
19741 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
19743 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
19745 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
19746 * common/config/i386/i386-common.cc: Add Emeraldrapids.
19748 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
19750 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
19753 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
19755 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
19756 default constructor to initialize it.
19757 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
19758 for last and iterate to handle recursive calls. Delete leftover
19759 candidates at the end.
19760 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
19762 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
19763 gc_candidate bit when a clone is used.
19765 2023-01-03 Florian Weimer <fweimer@redhat.com>
19768 2023-01-02 Florian Weimer <fweimer@redhat.com>
19770 * dwarf2cfi.cc (init_return_column_size): Remove.
19771 (init_one_dwarf_reg_size): Adjust.
19772 (generate_dwarf_reg_sizes): New function. Extracted
19773 from expand_builtin_init_dwarf_reg_sizes.
19774 (expand_builtin_init_dwarf_reg_sizes): Call
19775 generate_dwarf_reg_sizes.
19776 * target.def (init_dwarf_reg_sizes_extra): Adjust
19778 * config/msp430/msp430.cc
19779 (msp430_init_dwarf_reg_sizes_extra): Adjust.
19780 * config/rs6000/rs6000.cc
19781 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
19782 * doc/tm.texi: Update.
19784 2023-01-03 Florian Weimer <fweimer@redhat.com>
19787 2023-01-02 Florian Weimer <fweimer@redhat.com>
19789 * debug.h (dwarf_reg_sizes_constant): Declare.
19790 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
19792 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
19794 PR tree-optimization/105043
19795 * doc/extend.texi (Object Size Checking): Split out into two
19796 subsections and mention _FORTIFY_SOURCE.
19798 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
19800 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
19801 RTL expansion to allow condition (mask) to be shared/reused,
19802 by avoiding overwriting pseudos and adding REG_EQUAL notes.
19804 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
19807 * config/i386/i386-features.cc
19808 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
19809 the gain/cost of converting a MEM operand.
19811 2023-01-03 Jakub Jelinek <jakub@redhat.com>
19813 PR middle-end/108264
19814 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
19815 from source which doesn't have scalar integral mode first convert
19818 2023-01-03 Jakub Jelinek <jakub@redhat.com>
19820 PR rtl-optimization/108263
19821 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
19824 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
19827 * config/i386/lujiazui.md (lujiazui_div): New automaton.
19828 (lua_div): New unit.
19829 (lua_idiv_qi): Correct unit in the reservation.
19830 (lua_idiv_qi_load): Ditto.
19831 (lua_idiv_hi): Ditto.
19832 (lua_idiv_hi_load): Ditto.
19833 (lua_idiv_si): Ditto.
19834 (lua_idiv_si_load): Ditto.
19835 (lua_idiv_di): Ditto.
19836 (lua_idiv_di_load): Ditto.
19837 (lua_fdiv_SF): Ditto.
19838 (lua_fdiv_SF_load): Ditto.
19839 (lua_fdiv_DF): Ditto.
19840 (lua_fdiv_DF_load): Ditto.
19841 (lua_fdiv_XF): Ditto.
19842 (lua_fdiv_XF_load): Ditto.
19843 (lua_ssediv_SF): Ditto.
19844 (lua_ssediv_load_SF): Ditto.
19845 (lua_ssediv_V4SF): Ditto.
19846 (lua_ssediv_load_V4SF): Ditto.
19847 (lua_ssediv_V8SF): Ditto.
19848 (lua_ssediv_load_V8SF): Ditto.
19849 (lua_ssediv_SD): Ditto.
19850 (lua_ssediv_load_SD): Ditto.
19851 (lua_ssediv_V2DF): Ditto.
19852 (lua_ssediv_load_V2DF): Ditto.
19853 (lua_ssediv_V4DF): Ditto.
19854 (lua_ssediv_load_V4DF): Ditto.
19856 2023-01-02 Florian Weimer <fweimer@redhat.com>
19858 * debug.h (dwarf_reg_sizes_constant): Declare.
19859 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
19861 2023-01-02 Florian Weimer <fweimer@redhat.com>
19863 * dwarf2cfi.cc (init_return_column_size): Remove.
19864 (init_one_dwarf_reg_size): Adjust.
19865 (generate_dwarf_reg_sizes): New function. Extracted
19866 from expand_builtin_init_dwarf_reg_sizes.
19867 (expand_builtin_init_dwarf_reg_sizes): Call
19868 generate_dwarf_reg_sizes.
19869 * target.def (init_dwarf_reg_sizes_extra): Adjust
19871 * config/msp430/msp430.cc
19872 (msp430_init_dwarf_reg_sizes_extra): Adjust.
19873 * config/rs6000/rs6000.cc
19874 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
19875 * doc/tm.texi: Update.
19877 2023-01-02 Jakub Jelinek <jakub@redhat.com>
19879 * gcc.cc (process_command): Update copyright notice dates.
19880 * gcov-dump.cc (print_version): Ditto.
19881 * gcov.cc (print_version): Ditto.
19882 * gcov-tool.cc (print_version): Ditto.
19883 * gengtype.cc (create_file): Ditto.
19884 * doc/cpp.texi: Bump @copying's copyright year.
19885 * doc/cppinternals.texi: Ditto.
19886 * doc/gcc.texi: Ditto.
19887 * doc/gccint.texi: Ditto.
19888 * doc/gcov.texi: Ditto.
19889 * doc/install.texi: Ditto.
19890 * doc/invoke.texi: Ditto.
19892 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
19893 Uroš Bizjak <ubizjak@gmail.com>
19895 * config/i386/i386.md (extendditi2): New define_insn.
19896 (define_split): Use DWIH mode iterator to treat new extendditi2
19897 identically to existing extendsidi2_1.
19898 (define_peephole2): Likewise.
19899 (define_peephole2): Likewise.
19900 (define_Split): Likewise.
19903 Copyright (C) 2023 Free Software Foundation, Inc.
19905 Copying and distribution of this file, with or without modification,
19906 are permitted in any medium without royalty provided the copyright
19907 notice and this notice are preserved.