Fix artificial overflow during GENERIC folding
[official-gcc.git] / gcc / ChangeLog
blobb69a3a7145f2fb1bc729b0917591a6127958e59e
1 2023-05-27  liuhongt  <hongtao.liu@intel.com>
3         PR target/100711
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.
15         (abs<mode>2): Add.
16         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
17         Declare.
18         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
19         function.
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
25         expander.
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
34         hook.
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
42         mode_attr iterators.
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
53         but -mxnack=off.
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.
60         (TEST_XNACK): Delete.
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
84         subfunctions.
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):
91         New prototype.
92         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
93         New function.
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>
113         PR target/109610
114         PR target/109858
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
135         is not available.
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>
147         PR target/104327
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>
153         PR target/82931
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
168         function.
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
172         variable.
173         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
174         macro.
176 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
178         PR target/99195
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>
209         PR target/109800
210         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
211         instead of DFmode.
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
214         DFmode as an rvalue.
216 2023-05-25  Richard Biener  <rguenther@suse.de>
218         PR target/109955
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
226         TLS Local Dynamic.
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>
263         PR target/109173
264         PR target/109174
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
331         instructions.
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
342         if necessary.
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>
355         PR target/100106
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
375         to contructors.
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>
409         PR middle-end/109840
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>
449         PR target/99195
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>
471         PR target/109944
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
481         changed param.
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
491         a positive int.
492         (temporal_cache::current_p): Check always_current method.
493         (temporal_cache::set_always_current): Add param and set value
494         appropriately.
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_
508         prefix.
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>
518         PR modula2/109952
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
530         DF_FORWARD.
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>
536         PR target/109939
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
547         one_cmpl.
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>
662         PR target/109900
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>
672         PR c/109450
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.
680         (*subx): Remove.
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>
705         PR target/109944
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
709         with SSE4.1 pinsrb.
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
741         ANTIC_OUT.
743 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
745         PR target/109632
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>
799         PR target/109855
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
815         a byte boundary.
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
856         codes.
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>
865         PR target/90622
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
868         same position.
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
889         operands.
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>
934         PR middle-end/109919
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*-*-*
941         section.
943 2023-05-20  Pan Li  <pan2.li@intel.com>
945         * mode-switching.cc (entity_map): Initialize the array to zero.
946         (bb_info): Ditto.
948 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
950         PR target/105753
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
978         and the inner tree.
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
993         expr.cc.
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
1002         checking.
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>
1010         PR target/106888
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>
1018         PR other/99451
1019         * opts.h (handle_deferred_dump_options): Declare.
1020         * opts-global.cc (handle_common_deferred_options): Do not handle
1021         dump options here.
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>
1032         PR driver/33980
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.
1163         (do_cond): 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
1189         tree.h.
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.
1194         (wrap_refs): 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):
1312         Add prototype.
1313         * config/i386/i386.cc (ix86_multiplication_cost): Handle
1314         V4QImode and V8QImode.
1315         * config/i386/mmx.md (mulv8qi3): New expander.
1316         (mulv4qi3): Ditto.
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>
1325         PR bootstrap/105831
1326         * config.gcc: Use = operator instead of ==.
1328 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
1330         PR bootstrap/105831
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
1426         scalar constant.
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
1483         predicates.md.
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
1487         missing constraint.
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
1494         constraints.md.
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,
1557         combined from ...
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
1561         pattern.
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>
1573         PR c++/109884
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.
1631         (RNU): Ditto.
1632         (RNE): Ditto.
1633         (RDN): Ditto.
1634         (ROD): Ditto.
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
1643         unsupported ranges.
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>
1658         PR c++/109532
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
1666         special case.
1668 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
1670         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
1671         New.
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
1677         comment.
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
1687         macro.
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>
1711         PR target/106708
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
1729         function signature.
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
1733         takes 8 operands.
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.
1740         (*mvcrl): New.
1741         (mvcrl): New.
1743 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
1745         * config/s390/s390-protos.h (s390_expand_cpymem): Change
1746         function signature.
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
1750         s390_expand_cpymem.
1751         * config/s390/s390.md: Change expander into a version which
1752         takes 8 operands.
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
1758         values to `&`/`|`.
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.
1770         (FRM_REG_P): 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.
1786         (~int_range): 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
1793         range copying
1794         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
1795         when range changed.
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>
1823         PR target/99195
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>
1837         PR target/99195
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
1854         before the CTOR.
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>
1869         PR target/109807
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
1878         to __fentry__()
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.
1916         Fix comments.
1917         (ix86_expand_vecop_qihi): Initialize interleave functions
1918         for MULT code only.  Fix comments.
1920 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
1922         PR target/109797
1923         * config/i386/mmx.md (mulv2si3): Remove expander.
1924         (mulv2si3): Rename insn pattern from *mulv2si.
1926 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
1928         PR libstdc++/109816
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>
1935         PR target/109743
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
1948         CTORs.
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))):
1954         New pattern.
1955         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
1956         Likewise.
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.
1966         (vsriq_m): 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.
2015         (vsliq_m): 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
2092         gen_mve_vpselq.
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,
2107         vfmsq.
2108         * config/arm/arm_mve.h (vfmaq): Remove.
2109         (vfmasq): Remove.
2110         (vfmsq): Remove.
2111         (vfmaq_m): Remove.
2112         (vfmasq_m): Remove.
2113         (vfmsq_m): 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,
2156         VFMSQ_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
2161         into ...
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.
2179         (vmvnq): 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.
2183         (vmvnq_m): Remove.
2184         (vmvnq_x): Remove.
2185         (vmvnq_s8): Remove.
2186         (vmvnq_s16): Remove.
2187         (vmvnq_s32): Remove.
2188         (vmvnq_n_s16): Remove.
2189         (vmvnq_n_s32): Remove.
2190         (vmvnq_u8): 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.
2270         (vbrsrq_m): Remove.
2271         (vbrsrq_x): 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,
2433         vrmlsldavhax.
2434         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
2435         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
2436         VRMLALDAVHAQ_P_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):
2450         New.
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,
2500         VQDMULLTQ_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
2507         ...
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
2540         to xsiexpdp_di.
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
2554         long long.
2555         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
2556         TARGET_POWERPC64.
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
2563         to power9 catalog.
2564         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
2565         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
2566         TARGET_64BIT check.
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.
2586         (vars_copy): 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.
2616         (vqdmlahq): Remove.
2617         (vmlasq): Remove.
2618         (vmlaq): Remove.
2619         (vmlaq_m): Remove.
2620         (vmlasq_m): 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,
2738         vqrdmlash.
2739         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
2740         VQRDMLASHQ_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)
2756         (vqrdmlsdhxq): New.
2757         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
2758         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
2759         (vqrdmlsdhxq): New.
2760         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
2761         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
2762         (vqrdmlsdhxq): New.
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):
2983         New.
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
2993         ...
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):
3052         New.
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
3062         into ...
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
3142         ...
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.
3156         (vabavq_p): 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.
3292         (vmlsdavq): 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,
3376         VMLSDAVXQ_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
3383         ...
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
3390         ...
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>
3431         PR target/109807
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
3444         vector constants.
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
3453         pattern.
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
3477         renamed functions.
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):
3503         Ditto.
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.
3515         (vmovltq): 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
3591         into ...
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.
3680         (vaddvq_p): 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
3721         gen_mve_vaddvq.
3723 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
3725         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
3726         (vdupq): 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.
3730         (vdupq_m): 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):
3804         New.
3805         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
3806         (vrev64q): New.
3807         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
3808         (vrev64q): New.
3809         * config/arm/arm_mve.h (vrev16q): Remove.
3810         (vrev32q): Remove.
3811         (vrev64q): 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.
3955         (vcmphiq): Remove.
3956         (vcmpeqq): Remove.
3957         (vcmpcsq): Remove.
3958         (vcmpltq): Remove.
3959         (vcmpleq): Remove.
3960         (vcmpgtq): Remove.
3961         (vcmpgeq): 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.
4333         (isu): Add VCMP*
4334         (supf): Likewise.
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
4345         ...
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
4351         into ...
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
4363         vice versa.
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>
4395         PR target/92658
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
4405         constraint.
4406         (Zz): Similarly.
4408 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
4410         PR fortran/109788
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>
4423         PR target/99195
4424         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
4425         Rename to...
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>
4432         PR target/99195
4433         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
4434         Rename to...
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>
4449         PR target/99195
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
4468         incorrect codes.
4470 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4472         PR target/109773
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
4488         vminaq.
4489         * config/arm/arm_mve.h (vminaq): Remove.
4490         (vmaxaq): Remove.
4491         (vminaq_m): Remove.
4492         (vmaxaq_m): 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):
4525         New.
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>):
4529         Merge into ...
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
4546         vminnmaq.
4547         * config/arm/arm_mve.h (vminnmaq): Remove.
4548         (vmaxnmaq): 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>):
4578         Merge into ...
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.
4593         (vmaxnmvq): 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.
4665         (vmaxnmq): 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>):
4708         Merge into ...
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)
4724         (vminvq): New.
4725         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
4726         (vminvq): New.
4727         * config/arm/arm_mve.h (vminvq): Remove.
4728         (vmaxvq): Remove.
4729         (vminvq_p): Remove.
4730         (vmaxvq_p): 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.
4783         (vminavq): Remove.
4784         (vmaxavq): 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):
4846         Declare.
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
4850         function.
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.
4865         (vshllbq): 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.
4929         (VSHLLxQ_N): New.
4930         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
4931         (VSHLLxQ_M_N): New.
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>):
4936         Merge into ...
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.
4956         (vqmovnbq): 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.
4995         (vmovntq): Remove.
4996         (vmovnbq): 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,
5064         vqmovunt.
5065         (isu): Likewise.
5066         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
5067         VQMOVUNTQ_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.
5094         (vrndq): Remove.
5095         (vrndpq): Remove.
5096         (vrndnq): Remove.
5097         (vrndmq): Remove.
5098         (vrndaq): Remove.
5099         (vrndaq_m): Remove.
5100         (vrndmq_m): Remove.
5101         (vrndnq_m): Remove.
5102         (vrndpq_m): Remove.
5103         (vrndq_m): Remove.
5104         (vrndxq_m): Remove.
5105         (vrndq_x): Remove.
5106         (vrndnq_x): Remove.
5107         (vrndmq_x): Remove.
5108         (vrndpq_x): Remove.
5109         (vrndaq_x): Remove.
5110         (vrndxq_x): 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.
5211         (vabsq_m): Remove.
5212         (vabsq_x): Remove.
5213         (vabsq_f16): Remove.
5214         (vabsq_f32): Remove.
5215         (vabsq_s8): 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.
5246         (vnegq): Remove.
5247         (vnegq_m): Remove.
5248         (vnegq_x): Remove.
5249         (vnegq_f16): Remove.
5250         (vnegq_f32): Remove.
5251         (vnegq_s8): 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.
5282         (vclsq): Remove.
5283         (vclsq_m): Remove.
5284         (vclsq_x): Remove.
5285         (vclsq_s8): 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.
5306         (vclzq): Remove.
5307         (vclzq_m): Remove.
5308         (vclzq_x): Remove.
5309         (vclzq_s8): Remove.
5310         (vclzq_s16): Remove.
5311         (vclzq_s32): Remove.
5312         (vclzq_u8): 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.
5348         (vqabsq): Remove.
5349         (vqnegq): Remove.
5350         (vqnegq_m): Remove.
5351         (vqabsq_m): 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.
5389         (mve_mnemo): New.
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 ...
5432         (main): ... here.
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.
5448         (main): Adjust.
5450 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
5452         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
5453         earlyclobbers.
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):
5471         New.
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
5482         update_vector_info.
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
5501         operations.
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
5531         global extern.
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
5560         argument.
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
5565         num_dce.
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
5574         from the list.
5575         Don't update the stat on removal statements.
5577 2023-05-07  Andrew Pinski  <apinski@marvell.com>
5579         PR target/109762
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>
5593         PR target/43644
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
5659         information.
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
5675         separately.
5677 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
5679         PR other/109522
5680         * Makefile.in (s-macro_list): Pass -nostdinc to
5681         $(GCC_FOR_TARGET).
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>
5718         PR target/109748
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
5768         indexed load/store.
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.
5781         (vrshrq): Remove.
5782         (vrshrq_m): Remove.
5783         (vshrq_m): Remove.
5784         (vrshrq_x): Remove.
5785         (vshrq_x): 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
5873         into ...
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.
5948         (supf): Likewise.
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):
5972         New.
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,
5978         vqrshrntq.
5979         * config/arm/arm_mve.h (vshrnbq): Remove.
5980         (vshrntq): 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.
6019         (vrshrnbq): Remove.
6020         (vrshrntq): 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.
6059         (vqshrnbq): Remove.
6060         (vqshrntq): 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.
6145         (isu): New.
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>):
6156         Merge into ...
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):
6162         New.
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.
6172         (vmaxq): Remove.
6173         (vmaxq_m): Remove.
6174         (vminq_m): Remove.
6175         (vminq_x): Remove.
6176         (vmaxq_x): Remove.
6177         (vminq_u8): Remove.
6178         (vmaxq_u8): Remove.
6179         (vminq_s8): Remove.
6180         (vmaxq_s8): 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.
6272         (vshlq_r): Remove.
6273         (vshlq_n): Remove.
6274         (vshlq_m_r): Remove.
6275         (vshlq_m): Remove.
6276         (vshlq_m_n): Remove.
6277         (vshlq_x): Remove.
6278         (vshlq_x_n): Remove.
6279         (vshlq_s8): Remove.
6280         (vshlq_s16): Remove.
6281         (vshlq_s32): Remove.
6282         (vshlq_u8): 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.
6383         (vqshlq): Remove.
6384         (vqshlq_r): Remove.
6385         (vqshlq_n): Remove.
6386         (vqshlq_m_r): Remove.
6387         (vqshlq_m_n): Remove.
6388         (vqshlq_m): 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.
6492         (vabdq): 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.
6496         (vabdq_m): Remove.
6497         (vabdq_x): Remove.
6498         (vabdq_u8): Remove.
6499         (vabdq_s8): 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
6602         ...
6603         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
6604         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
6605         into ...
6606         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
6607         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
6608         into ...
6609         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6610         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
6611         into ...
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
6620         vqrshlq, vrshlq.
6621         * config/arm/arm_mve.h (vrshlq): Remove.
6622         (vrshlq_m_n): Remove.
6623         (vrshlq_m): Remove.
6624         (vrshlq_x): 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.
6689         (vqrshlq): 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
6752         into ...
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>
6762         PR target/109615
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>
6775         PR bootstrap/84402
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>
6787         PR bootstrap/84402
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>
6798         PR bootstrap/84402
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>
6815         PR bootstrap/84402
6816         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
6817         debug_dump var.
6818         (dt_simplify::gen_1): Use it.
6820 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
6822         PR bootstrap/84402
6823         * genmatch.cc (output_line_directive): Only emit commented directive
6824         when -vv.
6826 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
6828         PR bootstrap/84402
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>
6850         PR libgomp/108098
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,
6858         mpft_t -> mpfr_t.
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>
6875         PR target/109733
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
6887         codes to...
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.
6895         (ADDSUBHN): Delete.
6896         (sur): Remove handling of the above.
6897         (addsub): Likewise.
6899 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6901         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
6902         Delete.
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):
6910         New predicate.
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>
6950         PR target/99195
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>
6992         PR target/99195
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):
7044         Likewise.
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):
7049         Likewise.
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>
7070         PR debug/109676
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
7087         to ALL_REGS.
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
7105         error_mark_node.
7107 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
7109         PR sanitizer/90746
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>
7115         PR target/109661
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
7120         TYPE_MAIN_VARIANT.
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>
7127         PR target/109661
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)
7138         (vrmulhq): New.
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.
7144         (vhaddq): Remove.
7145         (vhaddq_m): Remove.
7146         (vhsubq_m): Remove.
7147         (vhaddq_x): Remove.
7148         (vhsubq_x): 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.
7299         (vmulhq): Remove.
7300         (vmulhq_m): Remove.
7301         (vmulhq_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.
7341         (vqsubq): Remove.
7342         (vqaddq): Remove.
7343         (vqaddq_m): Remove.
7344         (vqsubq_m): 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.
7445         (vqdmulhq): 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.
7473         (vrhaddq): 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.
7515         (vrmulhq): 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
7571         ...
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,
7597         vqsubq.
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.
7690         (vorrq): 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.
7697         (vorrq_m): Remove.
7698         (vorrq_x): Remove.
7699         (vorrq_u8): Remove.
7700         (vorrq_s8): 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.
7778         (vandq,veorq): 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.
7782         (vandq_m): Remove.
7783         (vandq_x): Remove.
7784         (vandq_u8): Remove.
7785         (vandq_s8): 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.
7835         (veorq_m): Remove.
7836         (veorq_x): Remove.
7837         (veorq_u8): Remove.
7838         (veorq_s8): 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
7907         into ...
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):
7918         New.
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.
7923         (vaddq_m): Remove.
7924         (vaddq_x): 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.
7949         (vaddq_s8): Remove.
7950         (vaddq_s16): Remove.
7951         (vaddq_s32): Remove.
7952         (vaddq_u8): 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.
8024         (vmulq): Remove.
8025         (vmulq_m): Remove.
8026         (vmulq_x): Remove.
8027         (vmulq_u8): Remove.
8028         (vmulq_n_u8): Remove.
8029         (vmulq_s8): 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.
8126         (vsubq): Remove.
8127         (vsubq_m): Remove.
8128         (vsubq_x): Remove.
8129         (vsubq_n_f16): Remove.
8130         (vsubq_n_f32): Remove.
8131         (vsubq_u8): Remove.
8132         (vsubq_n_u8): Remove.
8133         (vsubq_s8): 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):
8229         Remove.
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
8239         iterators.
8240         * config/arm/mve.md
8241         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
8242         Factorize into ...
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
8248         into ...
8249         (mve_<mve_addsubmul>q<mode>): ... this.
8250         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
8251         Factorize into ...
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>):
8260         Factorize into ...
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
8284         declaration.
8285         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
8286         * config/arm/arm-mve-builtins-shapes.h (inherent): New
8287         declaration.
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
8316         macro.
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
8545         numberspace.
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
8550         arm_mve_resolver.
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
8555         class.
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.
8575         (all_integer): New.
8576         (all_integer_with_64): New.
8577         (float16): New.
8578         (all_float): New.
8579         (all_signed): New.
8580         (all_unsigned): New.
8581         (integer_8): New.
8582         (integer_8_16): New.
8583         (integer_16_32): New.
8584         (integer_32): New.
8585         (signed_16_32): New.
8586         (signed_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.
8673         (s16): Likewise.
8674         (s32): Likewise.
8675         (s64): Likewise.
8676         (u8): Likewise.
8677         (u16): Likewise.
8678         (u32): Likewise.
8679         (u64): Likewise.
8680         (f16): Likewise.
8681         (f32): Likewise.
8682         (n): New mode.
8683         (offset): New mode.
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
8721         ARM_BUILTIN_MVE.
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):
8747         New 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>
8775         PR target/109713
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):
8788         Likewise.
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):
8794         Likewise.
8795         (optimize_spaceship): Take a gcond * argument, avoid
8796         last_stmt.
8797         (math_opts_dom_walker::after_dom_children): Adjust call to
8798         optimize_spaceship.
8799         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
8800         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
8801         Likewise.
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):
8810         New function.
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.
8818         (BASE): Ditto.
8819         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
8820         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
8821         Ditto.
8822         (vsseg): Ditto.
8823         (vlsseg): Ditto.
8824         (vssseg): Ditto.
8825         (vluxseg): Ditto.
8826         (vloxseg): Ditto.
8827         (vsuxseg): Ditto.
8828         (vsoxseg): Ditto.
8829         (vlsegff): Ditto.
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.
8834         (SHAPE): 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
8852         segment ff load.
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
8856         pattern.
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
8879         tuple type support.
8880         (inttype): Ditto.
8881         (floattype): Ditto.
8882         (main): Ditto.
8883         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
8884         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
8885         tuple type vset.
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):
9091         Ditto.
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.
9101         (vint8m1_t): Ditto.
9102         (vuint8m1_t): Ditto.
9103         (vint8m2_t): Ditto.
9104         (vuint8m2_t): Ditto.
9105         (vint8m4_t): Ditto.
9106         (vuint8m4_t): Ditto.
9107         (vint8m8_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
9158         function.
9159         (get_nf): Ditto.
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):
9170         New macro.
9171         (register_tuple_type): New function
9172         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
9173         New macro.
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):
9376         Ditto.
9377         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
9378         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
9379         function.
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
9396         movement.
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>
9412         PR target/99195
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>
9418         PR target/99195
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
9458         pattern.
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>
9468         PR target/109657
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
9475         load mapping.
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>
9502         PR target/89835
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
9515         pair.
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>
9530         PR target/109617
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
9536         the namespace.
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
9575         friends.
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
9584         precision.
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.
9618         (mask_to_wi): Same.
9619         (irange::intersect_nonzero_bits): Same.
9620         (irange::union_nonzero_bits): Same.
9621         (gt_ggc_mx): Same.
9622         (gt_pch_nx): Same.
9623         (tree_range): 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
9657         irange_val*.
9658         (vrp_val_max): New.
9659         (vrp_val_min): New.
9660         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
9661         * range-op.cc (max_limit): Same.
9662         (min_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.
9723         (INT): Same.
9724         (UINT): Same.
9725         (INT16): Same.
9726         (UINT16): Same.
9727         (SCHAR): Same.
9728         (UCHAR): 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.
9762         (INT): Same.
9763         (UINT): Same.
9764         (SCHAR): Same.
9765         (UINT128): Same.
9766         (UCHAR): Same.
9767         (range): New.
9768         (tree_range): New.
9769         (range_int): New.
9770         (range_uint): New.
9771         (range_uint128): New.
9772         (range_uchar): New.
9773         (range_char): 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.
9791         * vr-values.cc
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
9812         ranger API.
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
9823         rename.
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
9839         tree_upper_bound.
9841 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
9843         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
9844         kind() call.
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
9861         for vrange_storage.
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
9885         vrange_allocator.
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
9953         irange_storage.
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
9990         to a define_insn.
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>
10013         PR target/105525
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
10035         divmod expansion.
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.
10047         (type): Add clmul
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)"
10076         pattern to ...
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
10093         consider scatters.
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>
10114         PR ipa/109652
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>
10149         PR target/99195
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
10220         compares.
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
10239         COMPARISON.
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
10246         prototype.
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
10255         prototype.
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
10315         of operations.
10317 2023-04-27  Richard Biener  <rguenther@suse.de>
10319         PR ipa/109607
10320         * ipa-param-manipulation.h
10321         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
10322         argument.
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
10393         ssa_cache.
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
10424         of any relation.
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>
10448         PR target/104338
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.
10510         (gt_ggc_mx): Same.
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.
10556         * match.pd: 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
10575         dump_generic_node.
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
10588         get_legacy_range.
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
10621         constant_p use.
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
10630         symbolics support.
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.
10682         * vr-values.cc
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>
10695         * vr-values.cc
10696         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
10697         Rename to...
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):
10727         Avoid last_stmt.
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):
10756         Likewise.
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.
10765         * tree-ssa-dom.cc
10766         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
10767         Likewise.
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>
10794         PR target/108758
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
10799         to power9-vector.
10801 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
10803         PR target/109069
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
10809         predicate.
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>
10831         PR target/109272
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):
10875         Clarify semantics.
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>
10882         PR target/99195
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>
10903         PR target/109566
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
10916         index.
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
10927         constraint.
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
10957         manually.
10959 2023-04-24  Andrew Pinski  <apinski@marvell.com>
10961         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
10962         New function.
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.
11007         Markup fixes.
11008         (Options specification, --with-gnu-as): as and gas always differ
11009         on Solaris.
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>
11026         PR target/109406
11027         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
11028         case.
11029         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
11030         pattern.
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
11068         unspec.
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
11081         last_stmt.
11082         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
11083         Likewise.
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):
11094         Likewise.
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):
11109         Likewise.
11110         (back_threader_profitability::possibly_profitable_path_p):
11111         Likewise.
11112         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
11113         Likewise.
11114         * tree-switch-conversion.cc (pass_convert_switch::execute):
11115         Likewise.
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>
11153         PR target/99195
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
11193         the big if/else.
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
11232         for umax.
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>
11240         PR target/108779
11241         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
11242         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
11243         Define prototype.
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>
11255         PR target/99195
11256         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
11257         (add_vec_concat_subst_be): Likewise.
11258         (vczle): Likewise.
11259         (vczbe): 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
11277         and type_p.
11279 2023-04-21  Jan Hubicka  <jh@suse.cz>
11281         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
11282         commit.
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
11316         latch.
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
11332         of sreal.
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
11363         from ...
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 *,
11375         clarify comments.
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
11379         graph.  Adjust.
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>
11387         PR target/108270
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>
11395         PR target/109582
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>
11410         PR target/109547
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
11421         word.
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>
11455         PR target/78952
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.
11465         (*extzvqi): 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>
11489         PR target/108248
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,
11494         min, max.
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>
11506         PR target/109535
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
11543         case.
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
11550         df->n_blocks.
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):
11561         Ditto.
11562         * config/i386/i386.md (aes): New isa attribute.
11563         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
11564         (aesenclast): Ditto.
11565         (aesdec): 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
11661         push.
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
11699         VI12_AVX512VL.
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
11728         clauses to macro.
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,
11734         %ecx == 1).
11736 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
11738         * config/i386/sse.md: Modify insn vperm{i,f}
11739         and vshuf{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
11756         function.
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.
11780         (vbool8_t): Ditto.
11781         (vbool4_t): Ditto.
11782         (vbool2_t): Ditto.
11783         (vbool1_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>
11860         PR target/78904
11861         PR target/78952
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,
11889         split out from ...
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):
11921         Use auto_mpz.
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
11936         special casing.
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>
11956         PR target/109465
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
11996         as load.
11998 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12000         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
12001         definition.
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>
12015         PR target/109040
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>):
12023         New pattern.
12025 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12027         PR target/108840
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
12086         condition.
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>
12095         PR target/94908
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.
12109         (gt_pch_nx): 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
12120         constaints.
12122 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
12124         * doc/extend.texi (Target Builtins): Add RISC-V Vector
12125         Intrinsics.
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):
12140         Likewise.
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
12162         is true.
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
12175         define_expand.
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
12185         declaration.
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
12292         constraint.
12293         * config/loongarch/predicates.md (const_dual_imm12_operand): New
12294         predicate.
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
12318         accordingly.
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
12325         definition.
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
12334         readable.
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
12340         stack allocation.
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
12346         prototype.
12348 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
12350         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
12351         global ranges.
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>
12372         PR ipa/107769
12373         PR ipa/109318
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
12390         find_reference.
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
12398         streamed.
12399         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
12400         it in searching.
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>
12421         PR target/109508
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>
12427         PR target/104989
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
12430         size is zero.
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>
12443         PR c++/109514
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>
12456         PR target/108947
12457         PR target/109040
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
12467         of GEN_INT.
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>
12480         PR target/108910
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>
12492         PR target/109479
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
12525         function.
12527 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
12529         PR target/109458
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>
12575         PR target/109104
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>
12585         PR driver/108241
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>
12596         PR target/108812
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>
12634         PR target/70243
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
12653         amx-complex.
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
12657         __AMX_COMPLEX__.
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
12677         poly-int-types.h.
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
12681         insn-modes.h.
12683 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
12685         PR target/107674
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>
12703         PR target/108892
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>
12709         PR ipa/108959
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
12721         demand fusion.
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
12741         known_isnan.
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
12753         when associating.
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>
12767         PR target/109384
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>
12784         PR target/108807
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>
12790         PR target/108699
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>
12807         PR ipa/109303
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
12865         fop_ltgt.
12867 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
12869         PR target/109254
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
12875         results at all.
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>
12903         PR target/109328
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>
12913         PR target/85048
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>):
12920         Renamed to ..
12921         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
12922         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
12923         Renamed to ..
12924         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
12925         .. this.
12926         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
12927         Renamed to ..
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>):
12934         Renamed to ..
12935         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
12936         .. this.
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>):
12952         Renamed to ..
12953         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12954         .. this.
12955         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
12956         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
12957         .. this.
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>
12968         PR c++/107897
12969         PR c++/108887
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):
13002         New check.
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>
13025         PR ipa/106124
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>
13047         PR c/107002
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>
13056         PR target/109312
13057         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
13058         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
13059         minor refactor.
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>
13093         PR target/109072
13094         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
13095         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
13096         variable.
13097         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
13098         New function.
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
13105         variable.
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
13108         zero cost.
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>
13115         PR bootstrap/84402
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
13138         here.
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>
13155         PR target/109276
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>
13162         PR target/109140
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
13179         for mingw hosts.
13180         * config/i386/sym-mingw32.cc: prevent name mangling of
13181         stub symbol.
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>
13187         Revert:
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.
13201         (ggdb): Likewise.
13202         (gvms): 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
13213         peephole2s.
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>
13233         PR target/109296
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>
13249         PR lto/109263
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>
13255         PR target/109167
13256         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
13257         from ...
13258         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
13260 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
13262         PR target/109082
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>
13282         PR target/106282
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>
13295         PR ipa/105685
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>
13306         PR analyzer/109098
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
13322         debugging options.
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>
13330         PR other/109163
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
13366         optional.
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>
13375         PR c/84900
13376         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
13377         as a lvalue.
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):
13413         Likewise.
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):
13419         Likewise.
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):
13429         Likewise.
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.
13469         (V_2REG_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
13482         individually.
13484 2023-03-23  Pan Li  <pan2.li@intel.com>
13485             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13487         PR target/108654
13488         PR target/108185
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>
13500         PR target/109244
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>
13517         PR target/109228
13518         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
13519         __riscv_vlenb support.
13520         (BASE): Ditto.
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.
13524         (SHAPE): 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.
13547         (nmsub): Ditto.
13548         (msac): Ditto.
13549         (msub): Ditto.
13550         (nmadd): Ditto.
13551         (nmacc): 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):
13620         Removed.
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
13662         to variants.
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
13685         and trail_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
13695         supported.
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
13707         its attribute
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
13716         be gone.
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
13738         description text.
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>
13754         PR target/109067
13755         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
13756         (init_float128_ieee): Delete code to switch complex multiply and divide
13757         for long double.
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>
13765         PR target/109178
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>:
13771         Correct typo.
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>
13781         PR target/105554
13782         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
13783         to false.
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
13789         after it.
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>
13815         PR target/109092
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>
13831         PR plugins/108634
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
13836         changes.
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
13842         the margins.
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
13849         for consistency.
13850         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
13851         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
13852         @gol.
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
13889         out from ...
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
13894         to PHIs.
13895         (pass_waccess::check_pointer_uses): Process all PHIs.
13897 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
13899         PR analyzer/109097
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
13908         DK_ICE_NOBT.
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"
13912         array to...
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
13917         use it.
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
13921         "ice_handler_cb".
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>
13952         PR other/109086
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
13962         prototype.
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):
13973         New insn.
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
13984         "th_r_fmv".
13985         * config/riscv/riscv.cc (riscv_split_doubleword_move):
13986         Add split code for XTheadFmv.
13987         (riscv_secondary_memory_needed): XTheadFmv does not need
13988         secondary memory.
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):
14015         Add prototype.
14016         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
14017         XTheadCondMov.
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
14047         extraction.
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>
14101         PR target/109117
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>
14108         PR target/109109
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>
14114         PR ipa/107925
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
14117         it should.
14119 2023-03-14  Martin Jambor  <mjambor@suse.cz>
14121         PR ipa/107925
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'
14175         before @xref.
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>
14235         PR target/108583
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>
14248         PR target/108583
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>
14259         PR target/108583
14260         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
14261         single use.
14263 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
14264             Andrew MacLeod  <amacleod@redhat.com>
14266         PR target/108583
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):
14269         Use it.
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>
14283         PR target/108583
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
14306         bool.
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
14312         wording slightly.
14314 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
14316         * doc/extend.texi (Named Address Spaces): Drop a redundant link
14317         to AVR-LibC.
14319 2023-03-11  Jeff Law  <jlaw@ventanamicro>
14321         PR web/88860
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
14327         of Texinfo.
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>
14335         PR target/107703
14336         * optabs.cc (expand_fix): For conversions from BFmode to integral,
14337         use shifts to convert it to SFmode first and then convert SFmode
14338         to integral.
14340 2023-03-10  Andrew Pinski  <apinski@marvell.com>
14342         * config/aarch64/aarch64.md: Add a new define_split
14343         to help combine.
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>
14359         PR target/107998
14360         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
14361         $tmake_file.
14362         * config/i386/t-cygwin-w64: Remove.
14364 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
14366         PR plugins/108634
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
14375         tree_code_length.
14376         * tree.cc (tree_code_type, tree_code_length): Remove.
14378 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
14380         PR other/108464
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
14388         member.
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>
14403         PR c/108079
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
14415         the widened range.
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.
14424         (BASE): Ditto.
14425         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14426         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
14427         (vleff): Ditto.
14428         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
14429         (struct fault_load_def): Ditto.
14430         (SHAPE): 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>
14531         PR c++/105841
14532         * doc/extend.texi (Type Traits):: Document __is_deducible.
14534 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
14536         PR driver/108865
14537         * config.host: add object for x86_64-*-mingw*.
14538         * config/i386/sym-mingw32.cc: dummy file to attach
14539         symbol.
14540         * config/i386/utf8-mingw32.rc: windres resource file.
14541         * config/i386/winnt-utf8.manifest: XML manifest to
14542         enable UTF-8.
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>
14570         PR sanitizer/81649
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>
14581         PR target/108185
14582         PR target/108654
14583         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
14584         modes.
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
14603         saved in SGPRs.
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>
14614         PR target/108429
14615         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
14616         generic.
14617         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
14618         (X86_TUNE_USE_SCATTER): Likewise.
14620 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
14622         PR target/109000
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
14636         instructions.
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.
14670         (DsA): New.
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
14693         description file.
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.
14707         (3): New.
14709 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
14711         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
14712         use exact_log2().
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.
14728         (BASE): Ditto.
14729         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14730         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
14731         (vluxei16): Ditto.
14732         (vluxei32): Ditto.
14733         (vluxei64): Ditto.
14734         (vloxei8): Ditto.
14735         (vloxei16): Ditto.
14736         (vloxei32): Ditto.
14737         (vloxei64): Ditto.
14738         (vsuxei8): Ditto.
14739         (vsuxei16): Ditto.
14740         (vsuxei32): Ditto.
14741         (vsuxei64): Ditto.
14742         (vsoxei8): Ditto.
14743         (vsoxei16): Ditto.
14744         (vsoxei32): Ditto.
14745         (vsoxei64): Ditto.
14746         (vundefined): Add new intrinsic.
14747         (vreinterpret): Ditto.
14748         (vlmul_ext): Ditto.
14749         (vlmul_trunc): Ditto.
14750         (vset): Ditto.
14751         (vget): 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.
14759         (SHAPE): 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.
14865         (vbool8_t): Ditto.
14866         (vbool4_t): Ditto.
14867         (vbool2_t): Ditto.
14868         (vbool1_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.
14901         (scalar): Ditto.
14902         (mask): Ditto.
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.
14909         (void): Ditto.
14910         (size): Ditto.
14911         (ptrdiff): Ditto.
14912         (unsigned_long): Ditto.
14913         (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.
14982         (BASE): 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.
14990         (vrgather): 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.
15073         (BASE): Ditto.
15074         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15075         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
15076         (vmv_s): Ditto.
15077         (vfmv_f): Ditto.
15078         (vfmv_s): Ditto.
15079         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
15080         (SHAPE): 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
15181         pattern.
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
15191         m_vecdata.
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>
15224         PR c/108986
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
15260         fixes.
15262 2023-03-03  Richard Biener  <rguenther@suse.de>
15264         PR target/108738
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
15275         disallowed insn.
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
15280         chains.
15282 2023-03-03  Richard Biener  <rguenther@suse.de>
15284         PR debug/108772
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>
15294         PR target/108883
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
15309         move.
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
15344         instead of long.
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
15358         were emitted.
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>
15368         PR c++/108934
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>
15386         PR pch/14940
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
15395         use_device_ptr.
15397 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
15399         PR debug/108967
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
15409         check.
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>
15423         PR target/108240
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
15432         xasprintf.
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>
15451         PR target/108922
15452         Revert:
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
15474         instead of static.
15476 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
15478         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
15479         New prototype.
15480         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
15481         New function.
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>
15501         PR modula2/108261
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>
15509         PR target/108919
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
15525         address.
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
15541         access data.
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>
15579         PR target/108881
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)
15666         directly.
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>
15707         PR target/108876
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>
15714         Revert:
15715         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
15717         PR target/108876
15718         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
15719         for A0_REG.
15720         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
15721         (sibcall_value, sibcall_value_internal): Add 'use' expression
15722         for A0_REG.
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.
15755         (BASE): Ditto.
15756         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15757         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
15758         (vredmaxu): Ditto.
15759         (vredmax): Ditto.
15760         (vredminu): Ditto.
15761         (vredmin): Ditto.
15762         (vredand): Ditto.
15763         (vredor): Ditto.
15764         (vredxor): Ditto.
15765         (vwredsum): Ditto.
15766         (vwredsumu): Ditto.
15767         (vfredusum): Ditto.
15768         (vfredosum): Ditto.
15769         (vfredmax): Ditto.
15770         (vfredmin): Ditto.
15771         (vfwredosum): Ditto.
15772         (vfwredusum): Ditto.
15773         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
15774         (SHAPE): 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.
15879         (BASE): Ditto.
15880         * config/riscv/riscv-vector-builtins-bases.h:
15881         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
15882         (vsext): Ditto.
15883         (vfadd): Ditto.
15884         (vfsub): Ditto.
15885         (vfrsub): Ditto.
15886         (vfwadd): Ditto.
15887         (vfwsub): Ditto.
15888         (vfmul): Ditto.
15889         (vfdiv): Ditto.
15890         (vfrdiv): Ditto.
15891         (vfwmul): Ditto.
15892         (vfmacc): Ditto.
15893         (vfnmsac): Ditto.
15894         (vfmadd): Ditto.
15895         (vfnmsub): Ditto.
15896         (vfnmacc): Ditto.
15897         (vfmsac): Ditto.
15898         (vfnmadd): Ditto.
15899         (vfmsub): Ditto.
15900         (vfwmacc): Ditto.
15901         (vfwnmacc): Ditto.
15902         (vfwmsac): Ditto.
15903         (vfwnmsac): Ditto.
15904         (vfsqrt): Ditto.
15905         (vfrsqrt7): Ditto.
15906         (vfrec7): Ditto.
15907         (vfmin): Ditto.
15908         (vfmax): Ditto.
15909         (vfsgnj): Ditto.
15910         (vfsgnjn): Ditto.
15911         (vfsgnjx): Ditto.
15912         (vfneg): Ditto.
15913         (vfabs): Ditto.
15914         (vmfeq): Ditto.
15915         (vmfne): Ditto.
15916         (vmflt): Ditto.
15917         (vmfle): Ditto.
15918         (vmfgt): Ditto.
15919         (vmfge): Ditto.
15920         (vfclass): Ditto.
15921         (vfmerge): Ditto.
15922         (vfmv_v): Ditto.
15923         (vfcvt_x): Ditto.
15924         (vfcvt_xu): Ditto.
15925         (vfcvt_rtz_x): Ditto.
15926         (vfcvt_rtz_xu): Ditto.
15927         (vfcvt_f): Ditto.
15928         (vfwcvt_x): Ditto.
15929         (vfwcvt_xu): Ditto.
15930         (vfwcvt_rtz_x): Ditto.
15931         (vfwcvt_rtz_xu): Ditto.
15932         (vfwcvt_f): Ditto.
15933         (vfncvt_x): Ditto.
15934         (vfncvt_xu): Ditto.
15935         (vfncvt_rtz_x): Ditto.
15936         (vfncvt_rtz_xu): Ditto.
15937         (vfncvt_f): 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.
15983         (f): New define.
15984         (f_v): New define.
15985         (xu_v): New define.
15986         (f_w): 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.
15991         (vfrecp): Ditto.
15992         (copysign): Ditto.
15993         (n): Ditto.
15994         (msac): Ditto.
15995         (msub): Ditto.
15996         (fixuns_trunc): Ditto.
15997         (floatuns): 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>
16074         PR analyzer/108830
16075         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
16077 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
16079         PR target/108876
16080         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
16081         for A0_REG.
16082         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
16083         (sibcall_value, sibcall_value_internal): Add 'use' expression
16084         for A0_REG.
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>
16100         Revert:
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>
16132         PR target/108862
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
16139         address operand.
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
16147         invariant.
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
16154         update.
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>
16169         PR target/108832
16170         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
16171         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
16172         function.
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
16185         correctly.
16186         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
16187         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
16188         "f64" suffix).
16190 2023-02-18  Andrew Pinski  <apinski@marvell.com>
16192         * match.pd: Remove #if GIMPLE around the
16193         "1 - a" pattern
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
16203         -Wuse-after-free.
16205 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
16207         PR target/108831
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>
16217         PR target/108805
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
16242         class.
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.
16254         (BASE): Ditto.
16255         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16256         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
16257         (vmnand): Ditto.
16258         (vmandn): Ditto.
16259         (vmxor): Ditto.
16260         (vmor): Ditto.
16261         (vmnor): Ditto.
16262         (vmorn): Ditto.
16263         (vmxnor): Ditto.
16264         (vmmv): Ditto.
16265         (vmclr): Ditto.
16266         (vmset): Ditto.
16267         (vmnot): Ditto.
16268         (vcpop): Ditto.
16269         (vfirst): Ditto.
16270         (vmsbf): Ditto.
16271         (vmsif): Ditto.
16272         (vmsof): Ditto.
16273         (viota): Ditto.
16274         (vid): Ditto.
16275         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
16276         (struct mask_alu_def): Ditto.
16277         (SHAPE): 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.
16294         (vsbc): Ditto.
16295         (vmerge): Ditto.
16296         (vmv_v): Ditto.
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.
16310         (vsm): Ditto.
16311         (vsse): Ditto.
16312         (vsoxei64): Ditto.
16313         (vsub): Ditto.
16314         (vand): Ditto.
16315         (vor): Ditto.
16316         (vxor): Ditto.
16317         (vsll): Ditto.
16318         (vsra): Ditto.
16319         (vsrl): Ditto.
16320         (vmin): Ditto.
16321         (vmax): Ditto.
16322         (vminu): Ditto.
16323         (vmaxu): Ditto.
16324         (vmul): Ditto.
16325         (vmulh): Ditto.
16326         (vmulhu): Ditto.
16327         (vmulhsu): Ditto.
16328         (vdiv): Ditto.
16329         (vrem): Ditto.
16330         (vdivu): Ditto.
16331         (vremu): Ditto.
16332         (vnot): Ditto.
16333         (vsext): Ditto.
16334         (vzext): Ditto.
16335         (vwadd): Ditto.
16336         (vwsub): Ditto.
16337         (vwmul): Ditto.
16338         (vwmulu): Ditto.
16339         (vwmulsu): Ditto.
16340         (vwaddu): Ditto.
16341         (vwsubu): Ditto.
16342         (vsbc): Ditto.
16343         (vmsbc): Ditto.
16344         (vnsra): Ditto.
16345         (vmerge): Ditto.
16346         (vmv_v): Ditto.
16347         (vmsne): Ditto.
16348         (vmslt): Ditto.
16349         (vmsgt): Ditto.
16350         (vmsle): Ditto.
16351         (vmsge): Ditto.
16352         (vmsltu): Ditto.
16353         (vmsgtu): Ditto.
16354         (vmsleu): Ditto.
16355         (vmsgeu): Ditto.
16356         (vnmsac): Ditto.
16357         (vmadd): Ditto.
16358         (vnmsub): Ditto.
16359         (vwmacc): Ditto.
16360         (vsadd): Ditto.
16361         (vssub): Ditto.
16362         (vssubu): Ditto.
16363         (vaadd): Ditto.
16364         (vasub): Ditto.
16365         (vasubu): Ditto.
16366         (vsmul): Ditto.
16367         (vssra): Ditto.
16368         (vssrl): Ditto.
16369         (vnclip): Ditto.
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.
16393         (get_ta): Ditto.
16394         (get_ma): Ditto.
16395         (get_avl_type): Ditto.
16396         (calculate_ratio): Ditto.
16397         (enum vlmul_type): Ditto.
16398         (simm5_p): 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.
16428         * df.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.
16459         * ira.h: Likewise.
16460         * lra-int.h: Likewise.
16461         * lra.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.
16474         * rtl.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
16532         type.
16534 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
16536         PR target/90458
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.
16553         (*extzvqi): 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
16604         instead.
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
16612         enum.
16613         (class imac): New class.
16614         (enum widen_ternop_type): New enum.
16615         (class iwmac): New class.
16616         (BASE): New class.
16617         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16618         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
16619         (vnmsac): Ditto.
16620         (vmadd): Ditto.
16621         (vnmsub): Ditto.
16622         (vwmacc): Ditto.
16623         (vwmaccu): Ditto.
16624         (vwmaccsu): Ditto.
16625         (vwmaccus): 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.
16663         (BASE): Ditto.
16664         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16665         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
16666         (vmsne): Ditto.
16667         (vmslt): Ditto.
16668         (vmsgt): Ditto.
16669         (vmsle): Ditto.
16670         (vmsge): Ditto.
16671         (vmsltu): Ditto.
16672         (vmsgtu): Ditto.
16673         (vmsleu): Ditto.
16674         (vmsgeu): 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>
16708         PR ipa/108679
16709         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
16710         creation of non-scalar replacements even if IPA-CP knows their
16711         contents.
16713 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
16715         PR target/108787
16716         PR target/103109
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>
16734         PR target/108738
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
16742         check.
16744 2023-02-15  Richard Biener  <rguenther@suse.de>
16746         PR target/108738
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>
16763         PR target/108790
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
16816         possible.
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>
16833         PR target/108516
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
16848         enabled.
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>
16864         PR target/108102
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
16868         the current side.
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.
16925         (BASE): Ditto.
16926         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16927         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
16928         (vasub): Ditto.
16929         (vaaddu): Ditto.
16930         (vasubu): Ditto.
16931         (vsmul): Ditto.
16932         (vssra): Ditto.
16933         (vssrl): Ditto.
16934         (vnclipu): Ditto.
16935         (vnclip): Ditto.
16936         * config/riscv/vector-iterators.md (su): Add instruction.
16937         (aadd): Ditto.
16938         (vaalu): Ditto.
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.
16954         (BASE): Ditto.
16955         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16956         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
16957         (vsrl): Ditto.
16958         (vnsrl): Ditto.
16959         (vnsra): Ditto.
16960         (vncvt_x): Ditto.
16961         (vmerge): Ditto.
16962         (vmv_v): Ditto.
16963         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
16964         (struct move_def): Ditto.
16965         (SHAPE): 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.
16970         (v_v): Ditto.
16971         (v_x): Ditto.
16972         (x_w): Ditto.
16973         (x): Ditto.
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.
16992         (vmsbc): Ditto.
16993         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
16994         New class.
16995         (SHAPE): Ditto.
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.
17025         (BASE): Ditto.
17026         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17027         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
17028         (vsbc): Ditto.
17029         * config/riscv/riscv-vector-builtins-shapes.cc
17030         (struct no_mask_policy_def): Ditto.
17031         (SHAPE): 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
17056         class.
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
17071         class.
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"
17079         (x_v): Ditto.
17080         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
17081         widening support.
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
17087         pattern.
17088         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
17089         Ditto.
17090         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
17091         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
17092         Ditto.
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.
17102         (BASE): Ditto.
17103         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17104         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
17105         API support.
17106         (vmulhu): Ditto.
17107         (vmulhsu): Ditto.
17108         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
17109         New macro.
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.
17172         (BASE): Ditto.
17173         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
17174         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
17175         define.
17176         (vzext): Ditto.
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
17180         macro define.
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
17223         support.
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.
17238         (vssub): Ditto.
17239         (vsaddu): Ditto.
17240         (vssubu): Ditto.
17241         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
17242         support.
17243         (sll.vv): Ditto.
17244         (%3,%v4): Ditto.
17245         (%3,%4): Ditto.
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.
17255         (BASE): Ditto.
17256         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17257         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
17258         into alu.
17259         (vsub): Ditto.
17260         (vand): Ditto.
17261         (vor): Ditto.
17262         (vxor): Ditto.
17263         (vsll): Ditto.
17264         (vsra): Ditto.
17265         (vsrl): Ditto.
17266         (vmin): Ditto.
17267         (vmax): Ditto.
17268         (vminu): Ditto.
17269         (vmaxu): Ditto.
17270         (vmul): Ditto.
17271         (vdiv): Ditto.
17272         (vrem): Ditto.
17273         (vdivu): Ditto.
17274         (vremu): Ditto.
17275         (vrsub): Ditto.
17276         (vneg): Ditto.
17277         (vnot): Ditto.
17278         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
17279         (struct alu_def): Ditto.
17280         (SHAPE): 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>
17292         PR ipa/108605
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.
17337         (simm32_p): 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.
17346         (simm5_p): Ditto.
17347         (neg_simm5_p): Ditto.
17348         (has_vi_variant_p): Ditto.
17349         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
17350         (BASE): Ditto.
17351         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17352         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
17353         unsigned cases.
17354         (vmax): Ditto.
17355         (vminu): Remove signed cases.
17356         (vmaxu): Ditto.
17357         (vdiv): Remove unsigned cases.
17358         (vrem): Ditto.
17359         (vdivu): Remove signed cases.
17360         (vremu): Ditto.
17361         (vadd): Adjust.
17362         (vsub): Ditto.
17363         (vrsub): New class.
17364         (vand): Adjust.
17365         (vor): Ditto.
17366         (vxor): Ditto.
17367         (vmul): Ditto.
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
17372         support.
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>
17389         Revert:
17390         2023-02-09  Martin Liska  <mliska@suse.cz>
17392         PR target/100758
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
17404         removing it.
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
17412         valid_combine.
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>
17420         PR target/100758
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
17424         fixes.
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>
17441         PR target/100758
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
17457         in tree view.
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>
17466         PR target/108505
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
17481         declaration.
17482         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
17483         definition.
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
17487         declaration.
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>
17501         Revert:
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
17507         valid_combine.
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
17516         WIDEN_MINUS_EXPR.
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
17527         valid_combine.
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
17543         functions.
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
17554         for znver4.
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>
17564         PR target/104921
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
17619         widest_int.
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.
17657         (Indices): Ditto.
17658         (Contents): Ditto.
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
17664         attribute.
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>
17672         PR ipa/108384
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.
17691         (sll.vv): Ditto.
17692         (%3,%4): Ditto.
17693         (%3,%v4): Ditto.
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.
17701         (vsra): Ditto.
17702         (vsrl): 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
17729         tree.
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>
17738         PR debug/106746
17739         PR rtl-optimization/108463
17740         PR target/108484
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>
17779         PR target/108443
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
17784         format.
17785         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
17786         modes.
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
17790         qualifier.
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
17798         modes.
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.
17813         (mode1): Remove.
17814         (VCTPQ): Remove.
17815         (VCTPQ_M): Remove.
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
17818         attributes.
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
17835         predicates.
17836         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
17837         these...
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>
17846         PR target/107674
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>
17855         PR target/107674
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
17859         parameter.
17860         (arm_init_crypto_builtins): Likewise.
17862 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
17864         PR ipa/107300
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):
17896         .. Here.
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
17914         a bit more.
17915         (all_extensions): Set new field native_detect.
17916         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
17917         unused struct.
17919 2023-02-01  Martin Liska  <mliska@suse.cz>
17921         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
17922         value if set.
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>
17932         PR ipa/108509
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>
17939         PR driver/108572
17940         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
17941         -gz=zstd.
17943 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
17945         PR debug/108573
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
17979         rename to ...
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.
18007         (vk): Ditto
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.
18014         (vsub): Ditto.
18015         (vand): Ditto.
18016         (vor): Ditto.
18017         (vxor): Ditto.
18018         (vsll): Ditto.
18019         (vsra): Ditto.
18020         (vsrl): Ditto.
18021         (vmin): Ditto.
18022         (vmax): Ditto.
18023         (vminu): Ditto.
18024         (vmaxu): Ditto.
18025         (vmul): Ditto.
18026         (vdiv): Ditto.
18027         (vrem): Ditto.
18028         (vdivu): Ditto.
18029         (vremu): Ditto.
18030         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
18031         (vsub): Ditto.
18032         (vand): Ditto.
18033         (vor): Ditto.
18034         (vxor): Ditto.
18035         (vsll): Ditto.
18036         (vsra): Ditto.
18037         (vsrl): Ditto.
18038         (vmin): Ditto.
18039         (vmax): Ditto.
18040         (vminu): Ditto.
18041         (vmaxu): Ditto.
18042         (vmul): Ditto.
18043         (vdiv): Ditto.
18044         (vrem): Ditto.
18045         (vdivu): Ditto.
18046         (vremu): Ditto.
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>
18062         PR target/108589
18063         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
18064         REG_P on SET_DEST.
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>
18101         PR target/108599
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>
18117         PR c++/105593
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.
18134         (BASE): Ditto.
18135         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
18136         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
18137         (vluxei16): Ditto.
18138         (vluxei32): Ditto.
18139         (vluxei64): Ditto.
18140         (vloxei8): Ditto.
18141         (vloxei16): Ditto.
18142         (vloxei32): Ditto.
18143         (vloxei64): Ditto.
18144         (vsuxei8): Ditto.
18145         (vsuxei16): Ditto.
18146         (vsuxei32): Ditto.
18147         (vsuxei64): Ditto.
18148         (vsoxei8): Ditto.
18149         (vsoxei16): Ditto.
18150         (vsoxei32): Ditto.
18151         (vsoxei64): Ditto.
18152         * config/riscv/riscv-vector-builtins-shapes.cc
18153         (struct indexed_loadstore_def): New class.
18154         (SHAPE): Ditto.
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
18162         support.
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
18173         pattern.
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
18191         i386/gnu64.h.
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>
18229         PR ipa/108511
18230         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
18231         assert.
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
18255         AVR-Libc manual.
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
18268         AddressSanitizer.
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):
18278         Support vlse/vsse.
18279         (BASE): Ditto.
18280         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18281         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
18282         (vsse): 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>
18312         PR target/55522
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>
18318         PR target/55522
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>
18324         PR target/55522
18325         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
18326         for -shared.
18328 2023-01-27  Richard Biener  <rguenther@suse.de>
18330         PR target/55522
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.
18358         (vsm): Ditto.
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.
18364         (vbool8_t): Ditto.
18365         (vbool4_t): Ditto.
18366         (vbool2_t): Ditto.
18367         (vbool1_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>
18414         PR other/108560
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>
18420         PR ipa/106061
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
18458         pass.
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>
18470         PR target/55522
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
18483         nodes.
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
18550         rinsn.
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
18617         implementation.
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):
18663         Use widest_int.
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>
18682         PR modula2/102343
18683         PR modula2/108182
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>):
18699         Fix spacing.
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
18714         prove equivalence.
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
18724         tests.
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
18750         split pattern.
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
18762         of CPU version.
18764 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
18766         PR target/108177
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
18769         as input 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>
18790         PR bootstrap/90543
18791         * optc-save-gen.awk: Fix copy-and-paste error.
18793 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
18795         PR c++/108474
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>
18802         PR target/108505
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>
18808         PR target/107731
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>
18822         PR target/55522
18823         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
18824         for -shared.
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
18843         register.
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
18890         compatibility.
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'
18900         proto.
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
18909         target.
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):
18919         Declare it.
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):
18929         Add new patterns.
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
18993         aarch-common.h
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
18998         and enum value.
18999         * config/aarch64/aarch64.opt: Include aarch-common.h to import
19000         type move.  Fix up name changes from factoring out common code and
19001         data.
19002         * config/arm/aarch-common-protos.h: Export factored out routines to both
19003         backends.
19004         * config/arm/aarch-common.cc: Include newly factored out types.
19005         Move all mbranch-protection code and data structures from
19006         aarch64.cc.
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
19031         input modes.
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}
19056         commutativity.
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>
19062         PR target/108436
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>
19074         PR target/108411
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
19090         been created.
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
19096         the pattern.
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>
19102         PR debug/106746
19103         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
19104         within debug insns.
19106 2023-01-18  Martin Jambor  <mjambor@suse.cz>
19108         PR ipa/107944
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>
19114         Revert:
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>
19123         PR target/108442
19124         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
19125         function.
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
19148         if TARGET_DENSITY.
19150 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
19151             Andrew Pinski  <apinski@marvell.com>
19153         PR target/108396
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>
19159         PR target/108348
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>
19165         PR target/55522
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
19175         -fstack-protector.
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>
19187         PR target/105980
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>
19193         PR ipa/106077
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>
19215         PR target/55522
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>
19220         PR target/96795
19221         PR target/107515
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
19244         for c[lt]z optabs.
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>
19255         PR other/108413
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>
19261         PR c++/105593
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):
19265         Likewise.
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>
19275         PR target/108272
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>
19318         PR target/40457
19319         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
19320         moves.
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
19332         define.
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
19336         enabled.
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>
19370         PR target/55522
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>
19377         PR target/55522
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):
19381         Likewise.
19382         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
19383         Likewise.
19385 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
19387         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
19388         function.
19389         (TARGET_DWARF_FRAME_REG_MODE): Define.
19391 2023-01-13  Richard Biener  <rguenther@suse.de>
19393         PR target/107209
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>
19414         PR target/105549
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
19420         changes.
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
19426         comment.
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>
19469         PR target/108293
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
19507         irreducible loops.
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):
19517         Remove.
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>
19548         PR ipa/108110
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
19558         sort_replacements.
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
19562         std::lower_bound.
19563         (ipa_param_body_adjustments::lookup_first_base_replacement): New
19564         function.
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
19609         registers.
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>
19626         PR target/107453
19627         * calls.cc (expand_call): For calls with
19628         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
19629         Formatting fix.
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>
19639         PR lto/108330
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>
19675         Revert:
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):
19687         Add E_V2HFmode.
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>
19700         Revert:
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
19725         types.
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
19740         is on.
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
19751         for meteorlake.
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
19761         on local clones.
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>
19767         Revert:
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
19777         hook signature.
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>
19786         Revert:
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>
19806         PR target/108229
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
19816         it to outer_mode.
19818 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
19820         PR rtl-optimization/108263
19821         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
19822         asm goto to EXIT.
19824 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
19826         PR target/87832
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
19870         hook signature.
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.