RISC-V: Add RISC-V into vect_cmdline_needed
[official-gcc.git] / gcc / ChangeLog
blob9df8fdceb2602cb86ecfdbbc54974320f6f54988
1 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
3         * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo.
5 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
7         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 1.
9 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
11         * diagnostic-show-locus.cc (class colorizer): Take just a
12         pretty_printer rather than a diagnostic_context.
13         (layout::layout): Make context param a const reference,
14         and pretty_printer param non-optional.
15         (layout::m_context): Drop field.
16         (layout::m_options): New field.
17         (layout::m_colorize_source_p): Drop field.
18         (layout::m_show_labels_p): Drop field.
19         (layout::m_show_line_numbers_p): Drop field.
20         (layout::print_gap_in_line_numbering): Use m_options.
21         (layout::calculate_line_spans): Likewise.
22         (layout::calculate_linenum_width): Likewise.
23         (layout::calculate_x_offset_display): Likewise.
24         (layout::print_source_line): Likewise.
25         (layout::start_annotation_line): Likewise.
26         (layout::print_annotation_line): Likewise.
27         (layout::print_line): Likewise.
28         (gcc_rich_location::add_location_if_nearby): Update for changes to
29         layout ctor.
30         (diagnostic_show_locus): Likewise.
31         (selftest::test_offset_impl): Likewise.
32         (selftest::test_layout_x_offset_display_utf8): Likewise.
33         (selftest::test_layout_x_offset_display_tab): Likewise.
34         (selftest::test_tab_expansion): Likewise.
35         * diagnostic.h (diagnostic_context::m_source_printing): Move
36         declaration of struct outside diagnostic_context as...
37         (struct diagnostic_source_printing_options)... this.
39 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
41         * diagnostic.cc (diagnostic_context::push_diagnostics): Convert
42         to...
43         (diagnostic_option_classifier::push): ...this.
44         (diagnostic_context::pop_diagnostics): Convert to...
45         (diagnostic_option_classifier::pop): ...this.
46         (diagnostic_context::initialize): Move code to...
47         (diagnostic_option_classifier::init): ...this new function.
48         (diagnostic_context::finish): Move code to...
49         (diagnostic_option_classifier::fini): ...this new function.
50         (diagnostic_context::classify_diagnostic): Convert to...
51         (diagnostic_option_classifier::classify_diagnostic): ...this.
52         (diagnostic_context::update_effective_level_from_pragmas): Convert
53         to...
54         (diagnostic_option_classifier::update_effective_level_from_pragmas):
55         ...this.
56         (diagnostic_context::diagnostic_enabled): Update for refactoring.
57         * diagnostic.h (struct diagnostic_classification_change_t): Move into...
58         (class diagnostic_option_classifier): ...this new class.
59         (diagnostic_context::option_unspecified_p): Update for move of
60         fields into m_option_classifier.
61         (diagnostic_context::classify_diagnostic): Likewise.
62         (diagnostic_context::push_diagnostics): Likewise.
63         (diagnostic_context::pop_diagnostics): Likewise.
64         (diagnostic_context::update_effective_level_from_pragmas): Delete.
65         (diagnostic_context::m_classify_diagnostic): Move into class
66         diagnostic_option_classifier.
67         (diagnostic_context::m_option_classifier): Likewise.
68         (diagnostic_context::m_classification_history): Likewise.
69         (diagnostic_context::m_n_classification_history): Likewise.
70         (diagnostic_context::m_push_list): Likewise.
71         (diagnostic_context::m_n_push): Likewise.
72         (diagnostic_context::m_option_classifier): New.
74 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
76         * diagnostic.cc (diagnostic_context::set_urlifier): New.
77         * diagnostic.h (diagnostic_context::set_urlifier): New decl.
78         (diagnostic_context::m_urlifier): Make private.
79         * gcc.cc (driver::global_initializations): Use set_urlifier rather
80         than directly setting field.
81         * toplev.cc (general_init): Likewise.
83 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
85         * diagnostic.cc (diagnostic_context::check_max_errors): Replace
86         uses of diagnostic_kind_count with simple field acesss.
87         (diagnostic_context::report_diagnostic): Likewise.
88         (diagnostic_text_output_format::~diagnostic_text_output_format):
89         Replace use of diagnostic_kind_count with
90         diagnostic_context::diagnostic_count.
91         * diagnostic.h (diagnostic_kind_count): Delete.
92         (errorcount): Replace use of diagnostic_kind_count with
93         diagnostic_context::diagnostic_count.
94         (warningcount): Likewise.
95         (werrorcount): Likewise.
96         (sorrycount): Likewise.
98 2023-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
100         * doc/sourcebuild.texi (Other attributes): Document thread_fence
101         effective-target.
103 2023-11-06  Uros Bizjak  <ubizjak@gmail.com>
105         * config/i386/constraints.md (Bc): Remove constraint.
106         (Bn): Rewrite to use x86_extended_reg_mentioned_p predicate.
107         * config/i386/i386.cc (ix86_memory_address_reg_class):
108         Do not limit processing to TARGET_APX_EGPR.  Exit early for
109         NULL insn.  Do not check recog_data.insn before calling
110         extract_insn_cached.
111         (ix86_insn_base_reg_class): Handle ADDR_GPR8.
112         (ix86_regno_ok_for_insn_base_p): Ditto.
113         (ix86_insn_index_reg_class): Ditto.
114         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64):
115         Remove insn pattern and corresponding peephole2 pattern.
116         (*cmpi_ext<mode>_1): Remove (m,Q) alternative.
117         Change (QBc,Q) alternative to (QBn,Q).  Add "addr" attribute.
118         (*cmpqi_ext<mode>_3_mem_rex64): Remove insn pattern
119         and corresponding peephole2 pattern.
120         (*cmpi_ext<mode>_3): Remove (Q,m) alternative.
121         Change (Q,QnBc) alternative to (Q,QnBn).  Add "addr" attribute.
122         (*extzvqi_mem_rex64): Remove insn pattern and
123         corresponding peephole2 pattern.
124         (*extzvqi): Remove (Q,m) alternative.  Change (Q,QnBc)
125         alternative to (Q,QnBn).  Add "addr" attribute.
126         (*insvqi_1_mem_rex64): Remove insn pattern and
127         corresponding peephole2 pattern.
128         (*insvqi_1): Remove (Q,m) alternative.  Change (Q,QnBc)
129         alternative to (Q,QnBn).  Add "addr" attribute.
130         (@insv<mode>_1): Ditto.
131         (*addqi_ext<mode>_0): Remove (m,0,Q) alternative.  Change (QBc,0,Q)
132         alternative to (QBn,0,Q).  Add "addr" attribute.
133         (*subqi_ext<mode>_0): Ditto.
134         (*andqi_ext<mode>_0): Ditto.
135         (*<any_or:code>qi_ext<mode>_0): Ditto.
136         (*addqi_ext<mode>_1): Remove (Q,0,m) alternative.  Change (Q,0,QnBc)
137         alternative to (Q,0,QnBn).  Add "addr" attribute.
138         (*andqi_ext<mode>_1): Ditto.
139         (*andqi_ext<mode>_1_cc): Ditto.
140         (*<any_or:code>qi_ext<mode>_1): Ditto.
141         (*xorqi_ext<mode>_1_cc): Ditto.
142         * config/i386/predicates.md (nonimm_x64constmem_operand):
143         Remove predicate.
144         (general_x64constmem_operand): Ditto.
145         (norex_memory_operand): Ditto.
147 2023-11-06  Joseph Myers  <joseph@codesourcery.com>
149         PR c/107954
150         * doc/cpp.texi (__STDC_VERSION__): Refer to -std=c23 and
151         -std=gnu23 instead of -std=c2x and -std=gnu2x.
152         * doc/extend.texi (Attribute Syntax): Refer to C23 and -std=c23
153         instead of C2x and -std=c2x.
154         * doc/invoke.texi (-Wc11-c23-compat, -std=c23, -std=gnu23)
155         (-std=iso9899:2024): Document, with -Wc11-c2x-compat, -std=c2x and
156         -std=gnu2x as deprecated aliases.  Update descriptions of C23.
157         * doc/standards.texi (Standards): Describe C23 with C2X as an old
158         name.
160 2023-11-06  Thomas Schwinge  <thomas@codesourcery.com>
162         * config/nvptx/nvptx.h (MAKE_DECL_ONE_ONLY): Define.
164 2023-11-06  Richard Biener  <rguenther@suse.de>
166         PR tree-optimization/112405
167         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
168         Properly handle invariant and/or loop mask passing.
170 2023-11-06  Pan Li  <pan2.li@intel.com>
172         * config/riscv/autovec.md: Remove the size check of lround.
173         * config/riscv/riscv-v.cc (expand_vec_lround): Leverage
174         emit_vec_rounding_to_integer for round.
176 2023-11-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
178         * config/riscv/predicates.md: Adapt predicate.
179         * config/riscv/riscv-protos.h (can_be_broadcasted_p): New function.
180         * config/riscv/riscv-v.cc (can_be_broadcasted_p): Ditto.
181         * config/riscv/vector.md (vec_duplicate<mode>): New pattern.
182         (*vec_duplicate<mode>): Adapt vec_duplicate insn pattern.
184 2023-11-06  Richard Biener  <rguenther@suse.de>
186         PR tree-optimization/111950
187         * tree-vect-loop-manip.cc (slpeel_duplicate_current_defs_from_edges):
188         Remove.
189         (find_guard_arg): Likewise.
190         (slpeel_update_phi_nodes_for_guard2): Likewise.
191         (slpeel_tree_duplicate_loop_to_edge_cfg): Remove calls to
192         slpeel_duplicate_current_defs_from_edges, do not elide
193         LC-PHIs for invariant values.
194         (vect_do_peeling): Materialize PHI arguments for the edge
195         around the epilog from the PHI defs of the main loop exit.
197 2023-11-06  Richard Biener  <rguenther@suse.de>
199         PR tree-optimization/112404
200         * tree-vectorizer.h (get_mask_type_for_scalar_type): Declare
201         overload with SLP node argument.
202         * tree-vect-stmts.cc (get_mask_type_for_scalar_type): Implement it.
203         (vect_check_scalar_mask): Use it.
204         * tree-vect-slp.cc (vect_gather_slp_loads): Properly identify
205         loads also for nodes with children, like .MASK_LOAD.
206         * tree-vect-loop.cc (vect_analyze_loop_2): Look at the
207         representative for load nodes and check whether it is a grouped
208         access before looking for load-lanes support.
210 2023-11-06  Robin Dapp  <rdapp@ventanamicro.com>
212         PR tree-optimization/111760
213         * config/riscv/autovec.md (vcond_mask_len_<mode><vm>): Add
214         expander.
215         * config/riscv/riscv-protos.h (enum insn_type): Add.
216         * config/riscv/riscv-v.cc (needs_fp_rounding): Add !pred_mov.
217         * doc/md.texi: Add vcond_mask_len.
218         * gimple-match-exports.cc (maybe_resimplify_conditional_op):
219         Create VCOND_MASK_LEN when length masking.
220         * gimple-match.h (gimple_match_op::gimple_match_op): Always
221         initialize len and bias.
222         * internal-fn.cc (vec_cond_mask_len_direct): Add.
223         (direct_vec_cond_mask_len_optab_supported_p): Add.
224         (internal_fn_len_index): Add VCOND_MASK_LEN.
225         (internal_fn_mask_index): Ditto.
226         * internal-fn.def (VCOND_MASK_LEN): New internal function.
227         * match.pd: Combine unconditional unary, binary and ternary
228         operations into the respective COND_LEN operations.
229         * optabs.def (OPTAB_D): Add vcond_mask_len optab.
231 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
233         * explow.cc (align_dynamic_address): Do nothing if the required
234         alignment is a byte.
236 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
238         * function.h (get_stack_dynamic_offset): Declare.
239         * function.cc (get_stack_dynamic_offset): New function,
240         split out from...
241         (get_stack_dynamic_offset): ...here.
242         * explow.cc (allocate_dynamic_stack_space): Handle calls made
243         after virtual registers have been instantiated.
245 2023-11-06  liuhongt  <hongtao.liu@intel.com>
247         PR target/112393
248         * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2):
249         Avoid generating RTL code when d->testing_p.
251 2023-11-06  Richard Biener  <rguenther@suse.de>
253         PR tree-optimization/112369
254         * tree.cc (strip_float_extensions): Use element_precision.
256 2023-11-06  Richard Biener  <rguenther@suse.de>
258         PR middle-end/112296
259         * doc/extend.texi (__builtin_constant_p): Clarify that
260         side-effects are discarded.
262 2023-11-06  Kewen Lin  <linkw@linux.ibm.com>
264         PR target/111828
265         * config.in: Regenerate.
266         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Guard
267         inline asm handling under !HAVE_AS_POWER10_HTM.
268         * configure: Regenerate.
269         * configure.ac: Detect assembler support for HTM insns at power10.
271 2023-11-06  xuli  <xuli1@eswincomputing.com>
272             Pan Li  <pan2.li@intel.com>
274         * config/riscv/riscv-c.cc (riscv_resolve_overloaded_builtin): New function for the hook.
275         (riscv_register_pragmas): Register the hook.
276         * config/riscv/riscv-protos.h (resolve_overloaded_builtin): New decl.
277         * config/riscv/riscv-vector-builtins-bases.cc: New function impl.
278         * config/riscv/riscv-vector-builtins-shapes.cc (build_one): Register overloaded function.
279         * config/riscv/riscv-vector-builtins.cc (struct non_overloaded_registered_function_hasher):
280         New hash table.
281         (function_builder::add_function): Add overloaded arg.
282         (function_builder::add_unique_function): Map overloaded function to non-overloaded function.
283         (function_builder::add_overloaded_function): New API impl.
284         (registered_function::overloaded_hash): Calculate hash value.
285         (has_vxrm_or_frm_p): New function impl.
286         (non_overloaded_registered_function_hasher::hash): Ditto.
287         (non_overloaded_registered_function_hasher::equal): Ditto.
288         (handle_pragma_vector): Allocate space for hash table.
289         (resolve_overloaded_builtin): New function impl.
290         * config/riscv/riscv-vector-builtins.h (function_base::may_require_frm_p): Ditto.
291         (function_base::may_require_vxrm_p): Ditto.
293 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
295         PR target/111889
296         * config/i386/avx512bf16intrin.h: Push no-evex512 target.
297         * config/i386/avx512bf16vlintrin.h: Ditto.
298         * config/i386/avx512bitalgvlintrin.h: Ditto.
299         * config/i386/avx512bwintrin.h: Ditto.
300         * config/i386/avx512dqintrin.h: Ditto.
301         * config/i386/avx512fintrin.h: Ditto.
302         * config/i386/avx512fp16intrin.h: Ditto.
303         * config/i386/avx512fp16vlintrin.h: Ditto.
304         * config/i386/avx512ifmavlintrin.h: Ditto.
305         * config/i386/avx512vbmi2vlintrin.h: Ditto.
306         * config/i386/avx512vbmivlintrin.h: Ditto.
307         * config/i386/avx512vlbwintrin.h: Ditto.
308         * config/i386/avx512vldqintrin.h: Ditto.
309         * config/i386/avx512vlintrin.h: Ditto.
310         * config/i386/avx512vnnivlintrin.h: Ditto.
311         * config/i386/avx512vp2intersectvlintrin.h: Ditto.
312         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
314 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
316         * config/i386/avx512bf16vlintrin.h
317         (_mm_avx512_castsi128_ps): New.
318         (_mm256_avx512_castsi256_ps): Ditto.
319         (_mm_avx512_slli_epi32): Ditto.
320         (_mm256_avx512_slli_epi32): Ditto.
321         (_mm_avx512_cvtepi16_epi32): Ditto.
322         (_mm256_avx512_cvtepi16_epi32): Ditto.
323         (__attribute__): Change intrin call.
324         * config/i386/avx512bwintrin.h
325         (_mm_avx512_set_epi32): New.
326         (_mm_avx512_set_epi16): Ditto.
327         (_mm_avx512_set_epi8): Ditto.
328         (__attribute__): Change intrin call.
329         * config/i386/avx512fp16intrin.h: Ditto.
330         * config/i386/avx512fp16vlintrin.h
331         (_mm_avx512_set1_ps): New.
332         (_mm256_avx512_set1_ps): Ditto.
333         (_mm_avx512_and_si128): Ditto.
334         (_mm256_avx512_and_si256): Ditto.
335         (__attribute__): Change intrin call.
336         * config/i386/avx512vlbwintrin.h
337         (_mm_avx512_set1_epi32): New.
338         (_mm_avx512_set1_epi16): Ditto.
339         (_mm_avx512_set1_epi8): Ditto.
340         (_mm256_avx512_set_epi16): Ditto.
341         (_mm256_avx512_set_epi8): Ditto.
342         (_mm256_avx512_set1_epi16): Ditto.
343         (_mm256_avx512_set1_epi32): Ditto.
344         (_mm256_avx512_set1_epi8): Ditto.
345         (_mm_avx512_max_epi16): Ditto.
346         (_mm_avx512_min_epi16): Ditto.
347         (_mm_avx512_max_epu16): Ditto.
348         (_mm_avx512_min_epu16): Ditto.
349         (_mm_avx512_max_epi8): Ditto.
350         (_mm_avx512_min_epi8): Ditto.
351         (_mm_avx512_max_epu8): Ditto.
352         (_mm_avx512_min_epu8): Ditto.
353         (_mm256_avx512_max_epi16): Ditto.
354         (_mm256_avx512_min_epi16): Ditto.
355         (_mm256_avx512_max_epu16): Ditto.
356         (_mm256_avx512_min_epu16): Ditto.
357         (_mm256_avx512_insertf128_ps): Ditto.
358         (_mm256_avx512_extractf128_pd): Ditto.
359         (_mm256_avx512_extracti128_si256): Ditto.
360         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
361         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
362         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
363         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
364         (__attribute__): Change intrin call.
366 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
368         * config/i386/avx512bf16vlintrin.h: Change intrin call.
369         * config/i386/avx512fintrin.h
370         (_mm_avx512_undefined_ps): New.
371         (_mm_avx512_undefined_pd): Ditto.
372         (__attribute__): Change intrin call.
373         * config/i386/avx512vbmivlintrin.h: Ditto.
374         * config/i386/avx512vlbwintrin.h: Ditto.
375         * config/i386/avx512vldqintrin.h: Ditto.
376         * config/i386/avx512vlintrin.h
377         (_mm_avx512_undefined_si128): New.
378         (_mm256_avx512_undefined_ps): Ditto.
379         (_mm256_avx512_undefined_pd): Ditto.
380         (_mm256_avx512_undefined_si256): Ditto.
381         (__attribute__): Change intrin call.
383 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
385         * config/i386/avx512bitalgvlintrin.h: Change intrin call.
386         * config/i386/avx512dqintrin.h: Ditto.
387         * config/i386/avx512fintrin.h:
388         (_mm_avx512_setzero_ps): New.
389         (_mm_avx512_setzero_pd): Ditto.
390         (__attribute__): Change intrin call.
391         * config/i386/avx512fp16intrin.h: Ditto.
392         * config/i386/avx512fp16vlintrin.h: Ditto.
393         * config/i386/avx512vbmi2vlintrin.h: Ditto.
394         * config/i386/avx512vbmivlintrin.h: Ditto.
395         * config/i386/avx512vlbwintrin.h: Ditto.
396         * config/i386/avx512vldqintrin.h: Ditto.
397         * config/i386/avx512vlintrin.h
398         (_mm_avx512_setzero_si128): New.
399         (_mm256_avx512_setzero_pd): Ditto.
400         (_mm256_avx512_setzero_ps): Ditto.
401         (_mm256_avx512_setzero_si256): Ditto.
402         (__attribute__): Change intrin call.
403         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
404         * config/i386/gfniintrin.h: Ditto.
406 2023-11-05  Uros Bizjak  <ubizjak@gmail.com>
408         * config/i386/i386.h (enum reg_class): Add LEGACY_INDEX_REGS.
409         Rename LEGACY_REGS to LEGACY_GENERAL_REGS.
410         (REG_CLASS_NAMES): Ditto.
411         (REG_CLASS_CONTENTS): Ditto.
412         * config/i386/constraints.md ("R"): Update for rename.
414 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
416         * mode-switching.cc: Remove unused forward references.
417         (seginfo): Remove bbnum.
418         (new_seginfo): Remove associated argument.
419         (optimize_mode_switching): Update calls accordingly.
421 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
423         * read-rtl.cc (read_rtx_operand): Avoid spinning endlessly for
424         invalid [...] operands.
426 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
428         PR target/112105
429         * config/aarch64/aarch64.cc (aarch64_modes_compatible_p): New
430         function, with the core logic extracted from...
431         (aarch64_can_change_mode_class): ...here.  Extend the previous rules
432         to allow changes between partial SVE modes and other modes if
433         the other mode is no bigger than an element, and if no other rule
434         prevents it.  Use the aarch64_modes_tieable_p handling of
435         partial Advanced SIMD structure modes.
436         (aarch64_modes_tieable_p): Use aarch64_modes_compatible_p.
437         Allow all vector mode ties that it allows.
439 2023-11-05  Pan Li  <pan2.li@intel.com>
441         * config/riscv/autovec.md: Remove the size check of lrint.
442         * config/riscv/riscv-v.cc (emit_vec_narrow_cvt_x_f): New help
443         emit func impl.
444         (emit_vec_widden_cvt_x_f): New help emit func impl.
445         (emit_vec_rounding_to_integer): New func impl to emit the
446         rounding from FP to integer.
447         (expand_vec_lrint): Leverage emit_vec_rounding_to_integer.
448         * config/riscv/vector.md: Take V_VLSF for vfncvt.
450 2023-11-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
452         * config/riscv/vector.md: Fix bug.
454 2023-11-04  Sergei Trofimovich  <siarheit@google.com>
456         PR bootstrap/112379
457         * gcc-urlifier.cc (get_url_suffix_for_quoted_text): Mark as
458         ATTRIBUTE_UNUSED.
460 2023-11-04  Pan Li  <pan2.li@intel.com>
462         * config/riscv/vector-iterators.md: Remove HF modes.
464 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
466         * diagnostic.cc: Include "pretty-print-urlifier.h".
467         (diagnostic_context::initialize): Initialize m_urlifier.
468         (diagnostic_context::finish): Clean up m_urlifier
469         (diagnostic_report::diagnostic): m_urlifier to pp_format.
470         * diagnostic.h (diagnostic_context::m_urlifier): New field.
471         * gcc-urlifier.cc: New file.
472         * gcc-urlifier.def: New file.
473         * gcc-urlifier.h: New file.
474         * gcc.cc: Include "gcc-urlifier.h".
475         (driver::global_initializations): Initialize global_dc->m_urlifier.
476         * pretty-print-urlifier.h: New file.
477         * pretty-print.cc: Include "pretty-print-urlifier.h".
478         (obstack_append_string): New.
479         (urlify_quoted_string): New.
480         (pp_format): Add "urlifier" param and use it to implement optional
481         urlification of quoted text strings.
482         (pp_output_formatted_text): Make buffer a const pointer.
483         (selftest::pp_printf_with_urlifier): New.
484         (selftest::test_urlification): New.
485         (selftest::pretty_print_cc_tests): Call it.
486         * pretty-print.h (class urlifier): New forward declaration.
487         (pp_format): Add optional urlifier param.
488         * selftest-run-tests.cc (selftest::run_tests): Call
489         selftest::gcc_urlifier_cc_tests .
490         * selftest.h (selftest::gcc_urlifier_cc_tests): New decl.
491         * toplev.cc: Include "gcc-urlifier.h".
492         (general_init): Initialize global_dc->m_urlifier.
494 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
496         * Makefile.in (GCC_OBJS): Add gcc-urlifier.o.
497         (OBJS): Likewise.
499 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
501         * common.opt (fdiagnostics-text-art-charset=): Remove refererence
502         to diagnostic-text-art.h.
503         * coretypes.h (struct diagnostic_context): Replace forward decl
504         with...
505         (class diagnostic_context): ...this.
506         * diagnostic-format-json.cc: Update for changes to
507         diagnostic_context.
508         * diagnostic-format-sarif.cc: Likewise.
509         * diagnostic-show-locus.cc: Likewise.
510         * diagnostic-text-art.h: Deleted file, moving content...
511         (enum diagnostic_text_art_charset): ...to diagnostic.h,
512         (DIAGNOSTICS_TEXT_ART_CHARSET_DEFAULT): ...deleting,
513         (diagnostics_text_art_charset_init): ...deleting in favor of
514         diagnostic_context::set_text_art_charset.
515         * diagnostic.cc: Remove include of "diagnostic-text-art.h".
516         (pedantic_warning_kind): Update for field renaming.
517         (permissive_error_kind): Likewise.
518         (permissive_error_option): Likewise.
519         (diagnostic_initialize): Convert to...
520         (diagnostic_context::initialize): ...this, updating for field
521         renamings.
522         (diagnostic_color_init): Convert to...
523         (diagnostic_context::color_init): ...this.
524         (diagnostic_urls_init): Convert to...
525         (diagnostic_context::urls_init): ...this.
526         (diagnostic_initialize_input_context): Convert to...
527         (diagnostic_context::initialize_input_context): ...this.
528         (diagnostic_finish): Convert to...
529         (diagnostic_context::finish): ...this, updating for field
530         renamings.
531         (diagnostic_context::set_output_format): New.
532         (diagnostic_context::set_client_data_hooks): New.
533         (diagnostic_context::create_edit_context): New.
534         (diagnostic_converted_column): Convert to...
535         (diagnostic_context::converted_column): ...this.
536         (diagnostic_get_location_text): Update for field renaming.
537         (diagnostic_check_max_errors): Convert to...
538         (diagnostic_context::check_max_errors): ...this, updating for
539         field renamings.
540         (diagnostic_action_after_output): Convert to...
541         (diagnostic_context::action_after_output): ...this, updating for
542         field renamings.
543         (last_module_changed_p): Delete.
544         (set_last_module): Delete.
545         (includes_seen): Convert to...
546         (diagnostic_context::includes_seen_p): ...this, updating for field
547         renamings.
548         (diagnostic_report_current_module): Convert to...
549         (diagnostic_context::report_current_module): ...this, updating for
550         field renamings, and replacing uses of last_module_changed_p and
551         set_last_module to simple field accesses.
552         (diagnostic_show_any_path): Convert to...
553         (diagnostic_context::show_any_path): ...this.
554         (diagnostic_classify_diagnostic): Convert to...
555         (diagnostic_context::classify_diagnostic): ...this, updating for
556         field renamings.
557         (diagnostic_push_diagnostics): Convert to...
558         (diagnostic_context::push_diagnostics): ...this, updating for field
559         renamings.
560         (diagnostic_pop_diagnostics): Convert to...
561         (diagnostic_context::pop_diagnostics): ...this, updating for field
562         renamings.
563         (get_any_inlining_info): Convert to...
564         (diagnostic_context::get_any_inlining_info): ...this, updating for
565         field renamings.
566         (update_effective_level_from_pragmas): Convert to...
567         (diagnostic_context::update_effective_level_from_pragmas):
568         ...this, updating for field renamings.
569         (print_any_cwe): Convert to...
570         (diagnostic_context::print_any_cwe): ...this.
571         (print_any_rules): Convert to...
572         (diagnostic_context::print_any_rules): ...this.
573         (print_option_information): Convert to...
574         (diagnostic_context::print_option_information): ...this, updating
575         for field renamings.
576         (diagnostic_enabled): Convert to...
577         (diagnostic_context::diagnostic_enabled): ...this, updating for
578         field renamings.
579         (warning_enabled_at): Convert to...
580         (diagnostic_context::warning_enabled_at): ...this.
581         (diagnostic_report_diagnostic): Convert to...
582         (diagnostic_context::report_diagnostic): ...this, updating for
583         field renamings and conversions to member functions.
584         (diagnostic_append_note): Update for field renaming.
585         (diagnostic_impl): Use diagnostic_context::report_diagnostic
586         directly.
587         (diagnostic_n_impl): Likewise.
588         (diagnostic_emit_diagram): Convert to...
589         (diagnostic_context::emit_diagram): ...this, updating for field
590         renamings.
591         (error_recursion): Convert to...
592         (diagnostic_context::error_recursion): ...this.
593         (diagnostic_text_output_format::~diagnostic_text_output_format):
594         Use accessor.
595         (diagnostics_text_art_charset_init): Convert to...
596         (diagnostic_context::set_text_art_charset): ...this.
597         (assert_location_text): Update for field renamings.
598         * diagnostic.h (enum diagnostic_text_art_charset): Move here from
599         diagnostic-text-art.h.
600         (struct diagnostic_context): Convert to...
601         (class diagnostic_context): ...this.
602         (diagnostic_context::ice_handler_callback_t): New typedef.
603         (diagnostic_context::set_locations_callback_t): New typedef.
604         (diagnostic_context::initialize): New decl.
605         (diagnostic_context::color_init): New decl.
606         (diagnostic_context::urls_init): New decl.
607         (diagnostic_context::file_cache_init): New decl.
608         (diagnostic_context::finish): New decl.
609         (diagnostic_context::set_set_locations_callback): New.
610         (diagnostic_context::initialize_input_context): New decl.
611         (diagnostic_context::warning_enabled_at): New decl.
612         (diagnostic_context::option_unspecified_p): New.
613         (diagnostic_context::report_diagnostic): New decl.
614         (diagnostic_context::report_current_module): New decl.
615         (diagnostic_context::check_max_errors): New decl.
616         (diagnostic_context::action_after_output): New decl.
617         (diagnostic_context::classify_diagnostic): New decl.
618         (diagnostic_context::push_diagnostics): New decl.
619         (diagnostic_context::pop_diagnostics): New decl.
620         (diagnostic_context::emit_diagram): New decl.
621         (diagnostic_context::set_output_format): New decl.
622         (diagnostic_context::set_text_art_charset): New decl.
623         (diagnostic_context::set_client_data_hooks): New decl.
624         (diagnostic_context::create_edit_context): New decl.
625         (diagnostic_context::set_warning_as_error_requested): New.
626         (diagnostic_context::set_report_bug): New.
627         (diagnostic_context::set_extra_output_kind): New.
628         (diagnostic_context::set_show_cwe): New.
629         (diagnostic_context::set_show_rules): New.
630         (diagnostic_context::set_path_format): New.
631         (diagnostic_context::set_show_path_depths): New.
632         (diagnostic_context::set_show_option_requested): New.
633         (diagnostic_context::set_max_errors): New.
634         (diagnostic_context::set_escape_format): New.
635         (diagnostic_context::set_ice_handler_callback): New.
636         (diagnostic_context::warning_as_error_requested_p): New.
637         (diagnostic_context::show_path_depths_p): New.
638         (diagnostic_context::get_path_format): New.
639         (diagnostic_context::get_escape_format): New.
640         (diagnostic_context::get_file_cache): New.
641         (diagnostic_context::get_edit_context): New.
642         (diagnostic_context::get_client_data_hooks): New.
643         (diagnostic_context::get_diagram_theme): New.
644         (diagnostic_context::converted_column): New decl.
645         (diagnostic_context::diagnostic_count): New.
646         (diagnostic_context::includes_seen_p): New decl.
647         (diagnostic_context::print_any_cwe): New decl.
648         (diagnostic_context::print_any_rules): New decl.
649         (diagnostic_context::print_option_information): New decl.
650         (diagnostic_context::show_any_path): New decl.
651         (diagnostic_context::error_recursion): New decl.
652         (diagnostic_context::diagnostic_enabled): New decl.
653         (diagnostic_context::get_any_inlining_info): New decl.
654         (diagnostic_context::update_effective_level_from_pragmas): New
655         decl.
656         (diagnostic_context::m_file_cache): Make private.
657         (diagnostic_context::diagnostic_count): Rename to...
658         (diagnostic_context::m_diagnostic_count): ...this and make
659         private.
660         (diagnostic_context::warning_as_error_requested): Rename to...
661         (diagnostic_context::m_warning_as_error_requested): ...this and
662         make private.
663         (diagnostic_context::n_opts): Rename to...
664         (diagnostic_context::m_n_opts): ...this and make private.
665         (diagnostic_context::classify_diagnostic): Rename to...
666         (diagnostic_context::m_classify_diagnostic): ...this and make
667         private.
668         (diagnostic_context::classification_history): Rename to...
669         (diagnostic_context::m_classification_history): ...this and make
670         private.
671         (diagnostic_context::n_classification_history): Rename to...
672         (diagnostic_context::m_n_classification_history): ...this and make
673         private.
674         (diagnostic_context::push_list): Rename to...
675         (diagnostic_context::m_push_list): ...this and make private.
676         (diagnostic_context::n_push): Rename to...
677         (diagnostic_context::m_n_push): ...this and make private.
678         (diagnostic_context::show_cwe): Rename to...
679         (diagnostic_context::m_show_cwe): ...this and make private.
680         (diagnostic_context::show_rules): Rename to...
681         (diagnostic_context::m_show_rules): ...this and make private.
682         (diagnostic_context::path_format): Rename to...
683         (diagnostic_context::m_path_format): ...this and make private.
684         (diagnostic_context::show_path_depths): Rename to...
685         (diagnostic_context::m_show_path_depths): ...this and make
686         private.
687         (diagnostic_context::show_option_requested): Rename to...
688         (diagnostic_context::m_show_option_requested): ...this and make
689         private.
690         (diagnostic_context::abort_on_error): Rename to...
691         (diagnostic_context::m_abort_on_error): ...this.
692         (diagnostic_context::show_column): Rename to...
693         (diagnostic_context::m_show_column): ...this.
694         (diagnostic_context::pedantic_errors): Rename to...
695         (diagnostic_context::m_pedantic_errors): ...this.
696         (diagnostic_context::permissive): Rename to...
697         (diagnostic_context::m_permissive): ...this.
698         (diagnostic_context::opt_permissive): Rename to...
699         (diagnostic_context::m_opt_permissive): ...this.
700         (diagnostic_context::fatal_errors): Rename to...
701         (diagnostic_context::m_fatal_errors): ...this.
702         (diagnostic_context::dc_inhibit_warnings): Rename to...
703         (diagnostic_context::m_inhibit_warnings): ...this.
704         (diagnostic_context::dc_warn_system_headers): Rename to...
705         (diagnostic_context::m_warn_system_headers): ...this.
706         (diagnostic_context::max_errors): Rename to...
707         (diagnostic_context::m_max_errors): ...this and make private.
708         (diagnostic_context::internal_error): Rename to...
709         (diagnostic_context::m_internal_error): ...this.
710         (diagnostic_context::option_enabled): Rename to...
711         (diagnostic_context::m_option_enabled): ...this.
712         (diagnostic_context::option_state): Rename to...
713         (diagnostic_context::m_option_state): ...this.
714         (diagnostic_context::option_name): Rename to...
715         (diagnostic_context::m_option_name): ...this.
716         (diagnostic_context::get_option_url): Rename to...
717         (diagnostic_context::m_get_option_url): ...this.
718         (diagnostic_context::print_path): Rename to...
719         (diagnostic_context::m_print_path): ...this.
720         (diagnostic_context::make_json_for_path): Rename to...
721         (diagnostic_context::m_make_json_for_path): ...this.
722         (diagnostic_context::x_data): Rename to...
723         (diagnostic_context::m_client_aux_data): ...this.
724         (diagnostic_context::last_location): Rename to...
725         (diagnostic_context::m_last_location): ...this.
726         (diagnostic_context::last_module): Rename to...
727         (diagnostic_context::m_last_module): ...this and make private.
728         (diagnostic_context::lock): Rename to...
729         (diagnostic_context::m_lock): ...this and make private.
730         (diagnostic_context::lang_mask): Rename to...
731         (diagnostic_context::m_lang_mask): ...this.
732         (diagnostic_context::inhibit_notes_p): Rename to...
733         (diagnostic_context::m_inhibit_notes_p): ...this.
734         (diagnostic_context::report_bug): Rename to...
735         (diagnostic_context::m_report_bug): ...this and make private.
736         (diagnostic_context::extra_output_kind): Rename to...
737         (diagnostic_context::m_extra_output_kind): ...this and make
738         private.
739         (diagnostic_context::column_unit): Rename to...
740         (diagnostic_context::m_column_unit): ...this and make private.
741         (diagnostic_context::column_origin): Rename to...
742         (diagnostic_context::m_column_origin): ...this and make private.
743         (diagnostic_context::tabstop): Rename to...
744         (diagnostic_context::m_tabstop): ...this and make private.
745         (diagnostic_context::escape_format): Rename to...
746         (diagnostic_context::m_escape_format): ...this and make private.
747         (diagnostic_context::edit_context_ptr): Rename to...
748         (diagnostic_context::m_edit_context_ptr): ...this and make
749         private.
750         (diagnostic_context::set_locations_cb): Rename to...
751         (diagnostic_context::m_set_locations_cb): ...this and make
752         private.
753         (diagnostic_context::ice_handler_cb): Rename to...
754         (diagnostic_context::m_ice_handler_cb): ...this and make private.
755         (diagnostic_context::includes_seen): Rename to...
756         (diagnostic_context::m_includes_seen): ...this and make private.
757         (diagnostic_inhibit_notes): Update for field renaming.
758         (diagnostic_context_auxiliary_data): Likewise.
759         (diagnostic_abort_on_error): Convert from macro to inline function
760         and update for field renaming.
761         (diagnostic_kind_count): Convert from macro to inline function and
762         use diagnostic_count accessor.
763         (diagnostic_report_warnings_p): Update for field renaming.
764         (diagnostic_initialize): Convert decl to inline function calling
765         into diagnostic_context.
766         (diagnostic_color_init): Likewise.
767         (diagnostic_urls_init): Likewise.
768         (diagnostic_urls_init): Likewise.
769         (diagnostic_finish): Likewise.
770         (diagnostic_report_current_module): Likewise.
771         (diagnostic_show_any_path): Delete decl.
772         (diagnostic_initialize_input_context): Convert decl to inline
773         function calling into diagnostic_context.
774         (diagnostic_classify_diagnostic): Likewise.
775         (diagnostic_push_diagnostics): Likewise.
776         (diagnostic_pop_diagnostics): Likewise.
777         (diagnostic_report_diagnostic): Likewise.
778         (diagnostic_action_after_output): Likewise.
779         (diagnostic_check_max_errors): Likewise.
780         (diagnostic_file_cache_fini): Delete decl.
781         (diagnostic_converted_column): Delete decl.
782         (warning_enabled_at): Convert decl to inline function calling into
783         diagnostic_context.
784         (option_unspecified_p): New.
785         (diagnostic_emit_diagram): Delete decl.
786         * gcc.cc: Remove include of "diagnostic-text-art.h".
787         Update for changes to diagnostic_context.
788         * input.cc (diagnostic_file_cache_init): Move implementation
789         to...
790         (diagnostic_context::file_cache_init): ...this new member
791         function.
792         (diagnostic_file_cache_fini): Delete.
793         (diagnostics_file_cache_forcibly_evict_file): Update for
794         m_file_cache becoming private.
795         (location_get_source_line): Likewise.
796         (get_source_file_content): Likewise.
797         (location_missing_trailing_newline): Likewise.
798         * input.h (diagnostics_file_cache_fini): Delete.
799         * langhooks.cc: Update for changes to diagnostic_context.
800         * lto-wrapper.cc: Likewise.
801         * opts.cc: Remove include of "diagnostic-text-art.h".
802         Update for changes to diagnostic_context.
803         * selftest-diagnostic.cc: Update for changes to
804         diagnostic_context.
805         * toplev.cc: Likewise.
806         * tree-diagnostic-path.cc: Likewise.
807         * tree-diagnostic.cc: Likewise.
809 2023-11-03  Martin Uecker  <uecker@tugraz.at>
811         PR c/98541
812         * gimple-ssa-warn-access.cc
813         (pass_waccess::maybe_check_access_sizes): For VLA bounds
814         in parameters, only warn about null pointers with 'static'.
816 2023-11-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
818         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow unmasked
819         calls to use masked simdclones.
821 2023-11-03  David Malcolm  <dmalcolm@redhat.com>
823         * diagnostic.cc (diagnostic_initialize): Update for consolidation
824         of group-based fields.
825         (diagnostic_report_diagnostic): Likewise.
826         (diagnostic_context::begin_group): New, based on body of
827         auto_diagnostic_group's ctor.
828         (diagnostic_context::end_group): New, based on body of
829         auto_diagnostic_group's dtor.
830         (auto_diagnostic_group::auto_diagnostic_group): Convert to a call
831         to begin_group.
832         (auto_diagnostic_group::~auto_diagnostic_group): Convert to a call
833         to end_group.
834         * diagnostic.h (diagnostic_context::begin_group): New decl.
835         (diagnostic_context::end_group): New decl.
836         (diagnostic_context::diagnostic_group_nesting_depth): Rename to...
837         (diagnostic_context::m_diagnostic_groups.m_nesting_depth):
838         ...this.
839         (diagnostic_context::diagnostic_group_emission_count): Rename
840         to...
841         (diagnostic_context::m_diagnostic_groups::m_emission_count):
842         ...this.
844 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
846         PR tree-optimization/111766
847         * range-op.cc (operator_equal::fold_range): Check constants
848         against the bitmask.
849         (operator_not_equal::fold_range): Ditto.
850         * value-range.h (irange_bitmask::member_p): New.
852 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
854         * value-range.cc (irange_bitmask::adjust_range): New.
855         (irange::intersect_bitmask): Call adjust_range.
856         * value-range.h (irange_bitmask::adjust_range): New prototype.
858 2023-11-03  Uros Bizjak  <ubizjak@gmail.com>
860         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
861         Rename to ...
862         (ix86_memory_address_reg_class): ... this.  Generalize address
863         register class handling to allow multiple address register classes.
864         Return maximal class for unrecognized instructions.  Improve comments.
865         (ix86_insn_base_reg_class): Rewrite to handle
866         multiple address register classes.
867         (ix86_regno_ok_for_insn_base_p): Ditto.
868         (ix86_insn_index_reg_class): Ditto.
869         * config/i386/i386.md: Rename "gpr32" attribute to "addr"
870         and substitute its values with "0" -> "gpr16", "1" -> "*".
871         (addr): New attribute to limit allowed address register set.
872         (gpr32): Remove.
873         * config/i386/mmx.md: Rename "gpr32" attribute to "addr"
874         and substitute its values with "0" -> "gpr16", "1" -> "*".
875         * config/i386/sse.md: Ditto.
877 2023-11-03  Richard Biener  <rguenther@suse.de>
879         * tree-vect-loop.cc (vectorizable_live_operation): Simplify
880         LC PHI replacement.
882 2023-11-03  Roger Sayle  <roger@nextmovesoftware.com>
884         * config/arc/arc.md (addsi3): Fix GNU-style code formatting.
885         (adddi3): Change define_expand to generate a *adddi3.
886         (*adddi3): New define_insn_and_split to lower DImode additions
887         during the split1 pass (after combine and before reload).
888         (ashldi3): New define_expand to (only) generate *ashldi3_cnt1
889         for DImode left shifts by a single bit.
890         (*ashldi3_cnt1): New define_insn_and_split to lower DImode
891         left shifts by one bit to an *adddi3.
893 2023-11-03  Richard Sandiford  <richard.sandiford@arm.com>
895         * config/aarch64/aarch64.md (*cmov_uxtw_insn_insv): Remove
896         can_create_pseudo_p condition.
898 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
900         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Support SLP for dummy mask -1.
901         * tree-vect-stmts.cc (vectorizable_load): Ditto.
903 2023-11-03  Richard Biener  <rguenther@suse.de>
905         PR tree-optimization/112366
906         * tree-vect-loop.cc (vectorizable_live_operation): Remove
907         assert.
909 2023-11-03  Richard Biener  <rguenther@suse.de>
911         PR tree-optimization/112310
912         * tree-ssa-pre.cc (do_hoist_insertion): Keep the union
913         of expressions, validate dependences are contained within
914         the hoistable set before hoisting.
916 2023-11-03  Pan Li  <pan2.li@intel.com>
918         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
919         (lround<mode><v_i_l_ll_convert>2): Ditto.
920         (lceil<mode><v_i_l_ll_convert>2): Ditto.
921         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
922         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
923         FP to SI.
924         (lround<mode><v_f2si_convert>2): Ditto.
925         (lceil<mode><v_f2si_convert>2): Ditto.
926         (lfloor<mode><v_f2si_convert>2): Ditto.
927         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
928         FP to DI.
929         (lround<mode><v_f2di_convert>2): Ditto.
930         (lceil<mode><v_f2di_convert>2): Ditto.
931         (lfloor<mode><v_f2di_convert>2): Ditto.
932         * config/riscv/vector-iterators.md: Renew iterators for both
933         the SI and DI.
935 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
937         PR target/112326
938         * config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): New function.
939         (simplify_replace_vlmax_avl): Ditto.
940         (pass_avlprop::execute): Add immediate AVL simplification.
941         * config/riscv/riscv-protos.h (imm_avl_p): Rename.
942         * config/riscv/riscv-v.cc (const_vlmax_p): Ditto.
943         (imm_avl_p): Ditto.
944         (emit_vlmax_insn): Adapt for new interface name.
945         * config/riscv/vector.md (mode_idx): New attribute.
947 2023-11-03  Pan Li  <pan2.li@intel.com>
949         Revert:
950         2023-11-02  Pan Li  <pan2.li@intel.com>
952         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
953         (lround<mode><v_i_l_ll_convert>2): Ditto.
954         (lceil<mode><v_i_l_ll_convert>2): Ditto.
955         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
956         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
957         FP to SI.
958         (lround<mode><v_f2si_convert>2): Ditto.
959         (lceil<mode><v_f2si_convert>2): Ditto.
960         (lfloor<mode><v_f2si_convert>2): Ditto.
961         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
962         FP to DI.
963         (lround<mode><v_f2di_convert>2): Ditto.
964         (lceil<mode><v_f2di_convert>2): Ditto.
965         (lfloor<mode><v_f2di_convert>2): Ditto.
966         * config/riscv/vector-iterators.md: Renew iterators for both
967         the SI and DI.
969 2023-11-02  Edwin Lu  <ewlu@rivosinc.com>
971         * config/riscv/riscv.cc (riscv_sched_variable_issue): add disabled assert
973 2023-11-02  Jeff Law  <jlaw@ventanamicro.com>
975         * config/h8300/combiner.md: Add new patterns for single bit
976         sign extractions.
978 2023-11-02  Pan Li  <pan2.li@intel.com>
980         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
981         (lround<mode><v_i_l_ll_convert>2): Ditto.
982         (lceil<mode><v_i_l_ll_convert>2): Ditto.
983         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
984         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
985         FP to SI.
986         (lround<mode><v_f2si_convert>2): Ditto.
987         (lceil<mode><v_f2si_convert>2): Ditto.
988         (lfloor<mode><v_f2si_convert>2): Ditto.
989         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
990         FP to DI.
991         (lround<mode><v_f2di_convert>2): Ditto.
992         (lceil<mode><v_f2di_convert>2): Ditto.
993         (lfloor<mode><v_f2di_convert>2): Ditto.
994         * config/riscv/vector-iterators.md: Renew iterators for both
995         the SI and DI.
997 2023-11-02  Sam James  <sam@gentoo.org>
999         * doc/passes.texi (Dead code elimination): Explicitly say 'lifetime'
1000         as this has become the standard term for what we're doing here.
1002 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1004         * config/riscv/riscv-avlprop.cc
1005         (pass_avlprop::get_vlmax_ta_preferred_avl): Don't allow
1006         non-real insn AVL propation.
1008 2023-11-02  Robin Dapp  <rdapp@ventanamicro.com>
1010         PR middle-end/111401
1011         * internal-fn.cc (internal_fn_else_index): New function.
1012         * internal-fn.h (internal_fn_else_index): Define.
1013         * tree-if-conv.cc (convert_scalar_cond_reduction): Emit COND_OP
1014         if supported.
1015         (predicate_scalar_phi): Add whitespace.
1016         * tree-vect-loop.cc (fold_left_reduction_fn): Add IFN_COND_OP.
1017         (neutral_op_for_reduction): Return -0 for PLUS.
1018         (check_reduction_path): Don't count else operand in COND_OP.
1019         (vect_is_simple_reduction): Ditto.
1020         (vect_create_epilog_for_reduction): Fix whitespace.
1021         (vectorize_fold_left_reduction): Add COND_OP handling.
1022         (vectorizable_reduction): Don't count else operand in COND_OP.
1023         (vect_transform_reduction): Add COND_OP handling.
1024         * tree-vectorizer.h (neutral_op_for_reduction): Add default
1025         parameter.
1027 2023-11-02  Richard Biener  <rguenther@suse.de>
1029         PR tree-optimization/112320
1030         * gimple-fold.h (rewrite_to_defined_overflow): New overload
1031         for in-place operation.
1032         * gimple-fold.cc (rewrite_to_defined_overflow): Add stmt
1033         iterator argument to worker, define separate API for
1034         in-place and not in-place operation.
1035         * tree-if-conv.cc (predicate_statements): Simplify.
1036         * tree-scalar-evolution.cc (final_value_replacement_loop):
1037         Likewise.
1038         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute): Adjust.
1039         * tree-ssa-reassoc.cc (update_range_test): Likewise.
1041 2023-11-02  Uros Bizjak  <ubizjak@gmail.com>
1043         * config/i386/i386.md: Move stack protector patterns
1044         above mov $0,%reg -> xor %reg,%reg peephole2 pattern.
1046 2023-11-02  liuhongt  <hongtao.liu@intel.com>
1048         * config/i386/mmx.md (cmlav4hf4): New expander.
1049         (cmla_conjv4hf4): Ditto.
1050         (cmulv4hf3): Ditto.
1051         (cmul_conjv4hf3): Ditto.
1053 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1055         * config/riscv/vector.md: Fix redundant codes in attributes.
1057 2023-11-02  xuli  <xuli1@eswincomputing.com>
1059         * config/riscv/riscv-vector-builtins-bases.cc: Expand non-tuple intrinsics.
1060         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Define non-tuple intrinsics.
1061         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
1062         * config/riscv/riscv-vector-builtins.cc: Add arg types.
1064 2023-11-02  Pan Li  <pan2.li@intel.com>
1066         * tree-vect-stmts.cc (vectorizable_internal_function): Add type
1067         size check for vectype_out doesn't participating for optab query.
1068         (vectorizable_call): Remove the type size check.
1070 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1072         PR target/112327
1073         * config/riscv/vector.md: Add '0'.
1075 2023-11-01  Roger Sayle  <roger@nextmovesoftware.com>
1077         PR target/110551
1078         * config/i386/i386.md (*bmi2_umul<mode><dwi>3_1): Tidy condition
1079         as operands[2] with predicate register_operand must be !MEM_P.
1080         (peephole2): Optimize a mulx followed by a register-to-register
1081         move, to place result in the correct destination if possible.
1083 2023-11-01  Patrick O'Neill  <patrick@rivosinc.com>
1085         * config/riscv/sync.md:  Use riscv_subword_address function to
1086         calculate the address and shift in atomic_test_and_set.
1088 2023-11-01  Vineet Gupta  <vineetg@rivosinc.com>
1090         * config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode
1091         returned for libcall case.
1093 2023-11-01  Martin Uecker  <uecker@tugraz.at>
1095         PR c/71219
1096         * doc/invoke.texi: Document -Walloc-size option.
1098 2023-11-01  Edwin Lu  <ewlu@rivosinc.com>
1100         * genautomata.cc (write_automata): move endif
1102 2023-11-01  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1104         * omp-simd-clone.cc (simd_clone_adjust_return_type): Hoist out code to
1105         create return array and don't return new type.
1106         (simd_clone_adjust_argument_types): Hoist out code that creates
1107         ipa_param_body_adjustments and don't return them.
1108         (simd_clone_adjust): Call TARGET_SIMD_CLONE_ADJUST after return and
1109         argument types have been vectorized, create adjustments and return array
1110         after the hook.
1111         (expand_simd_clones): Call TARGET_SIMD_CLONE_ADJUST after return and
1112         argument types have been vectorized.
1114 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
1116         PR target/112332
1117         * config/i386/i386.md (stack_protexct_set_2 peephole2):
1118         Use general_gr_operand as operand 4 predicate.
1120 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
1122         * config/i386/i386.md (stack_protect_set): Explicitly
1123         generate scratch register in word mode.
1124         (@stack_protect_set_1_<mode>): Rename to ...
1125         (@stack_protect_set_1_<PTR:mode>_<SWI48:mode>): ... this.
1126         Use SWI48 mode iterator to match scratch register.
1127         (stack_protexct_set_1 peephole2): Use PTR, W and SWI48 mode
1128         iterators to match peephole sequence.  Use general_operand
1129         predicate for operand 4.  Allow different operand 2 and operand 3
1130         registers and use peep2_reg_dead_p to ensure new scratch
1131         register is dead before peephole seqeunce. Use peep2_reg_dead_p
1132         to ensure old scratch register is dead after peephole sequence.
1133         (*stack_protect_set_2_<mode>): Rename to ...
1134         (*stack_protect_set_2_<mode>_si): .. this.
1135         (*stack_protect_set_3): Rename to ...
1136         (*stack_protect_set_2_<mode>_di): ... this.
1137         Use PTR mode iterator to match stack protector memory move.
1138         Use earlyclobber for all alternatives of operand 1.
1139         (stack_protexct_set_2 peephole2): Use PTR, W and SWI48 mode
1140         iterators to match peephole sequence.  Use general_operand
1141         predicate for operand 4.  Allow different operand 2 and operand 3
1142         registers and use peep2_reg_dead_p to ensure new scratch
1143         register is dead before peephole seqeunce. Use peep2_reg_dead_p
1144         to ensure old scratch register is dead after peephole sequence.
1146 2023-11-01  xuli  <xuli1@eswincomputing.com>
1148         * config/riscv/riscv-vector-builtins-functions.def (vundefined): Add vundefine
1149         intrinsics for tuple types.
1150         * config/riscv/riscv-vector-builtins.cc: Ditto.
1151         * config/riscv/vector.md (@vundefined<mode>): Ditto.
1153 2023-11-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1155         * tree-vect-slp.cc (vect_build_slp_tree_1): Fix whitespace.
1157 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
1159         * Makefile.in (ANALYZER_OBJS): Add analyzer/record-layout.o.
1161 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
1163         * input.cc (dump_location_info): Update for removal of
1164         MACRO_MAP_EXPANSION_POINT_LOCATION.
1165         * tree-diagnostic.cc (maybe_unwind_expanded_macro_loc):
1166         Likewise.
1168 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
1170         * opts.cc (get_option_url): Update comment; the requirement to
1171         pass DOCUMENTATION_ROOT_URL's value via -D was removed in
1172         r10-8065-ge33a1eae25b8a8.
1174 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
1176         * pretty-print.cc (pretty_printer::pretty_printer): Initialize
1177         m_skipping_null_url.
1178         (pp_begin_url): Handle URL being null.
1179         (pp_end_url): Likewise.
1180         (selftest::test_null_urls): New.
1181         (selftest::pretty_print_cc_tests): Call it.
1182         * pretty-print.h (pretty_printer::m_skipping_null_url): New.
1184 2023-10-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1186         * tree-vect-slp.cc (vect_get_operand_map): Add MASK_LEN_GATHER_LOAD.
1187         (vect_build_slp_tree_1): Ditto.
1188         (vect_build_slp_tree_2): Ditto.
1190 2023-10-31  Cupertino Miranda  <cupertino.miranda@oracle.com>
1192         * config/bpf/bpf-passes.def (pass_lower_bpf_core): Added pass.
1193         * config/bpf/bpf-protos.h: Added prototype for new pass.
1194         * config/bpf/bpf.cc (bpf_delegitimize_address): New function.
1195         * config/bpf/bpf.md (mov_reloc_core<MM:mode>): Prefixed
1196         name with '*'.
1197         * config/bpf/core-builtins.cc (cr_builtins) Added access_node to
1198         struct.
1199         (is_attr_preserve_access): Improved check.
1200         (core_field_info): Make use of root_for_core_field_info
1201         function.
1202         (process_field_expr): Adapted to new functions.
1203         (pack_type): Small improvement.
1204         (bpf_handle_plugin_finish_type): Adapted to GTY(()).
1205         (bpf_init_core_builtins): Changed to new function names.
1206         (construct_builtin_core_reloc): Improved implementation.
1207         (bpf_resolve_overloaded_core_builtin): Changed how
1208         __builtin_preserve_access_index is converted.
1209         (compute_field_expr): Corrected implementation. Added
1210         access_node argument.
1211         (bpf_core_get_index): Added valid argument.
1212         (root_for_core_field_info, pack_field_expr)
1213         (core_expr_with_field_expr_plus_base, make_core_safe_access_index)
1214         (replace_core_access_index_comp_expr, maybe_get_base_for_field_expr)
1215         (core_access_clean, core_is_access_index, core_mark_as_access_index)
1216         (make_gimple_core_safe_access_index, execute_lower_bpf_core)
1217         (make_pass_lower_bpf_core): Added functions.
1218         (pass_data_lower_bpf_core): New pass struct.
1219         (pass_lower_bpf_core): New gimple_opt_pass class.
1220         (pack_field_expr_for_preserve_field)
1221         (bpf_replace_core_move_operands): Removed function.
1222         (bpf_enum_value_kind): Added GTY(()).
1223         * config/bpf/core-builtins.h (bpf_field_info_kind, bpf_type_id_kind)
1224         (bpf_type_info_kind, bpf_enum_value_kind): New enum.
1225         * config/bpf/t-bpf: Added pass bpf-passes.def to PASSES_EXTRA.
1227 2023-10-31  Neal Frager  <neal.frager@amd.com>
1229         * config/microblaze/microblaze.cc: Fix mcpu version check.
1231 2023-10-31  Patrick O'Neill  <patrick@rivosinc.com>
1233         * config/riscv/sync-rvwmo.md (atomic_load_rvwmo<mode>): Remove
1234         TARGET_ATOMIC constraint
1235         (atomic_store_rvwmo<mode>): Ditto.
1236         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Ditto.
1237         (atomic_store_ztso<mode>): Ditto.
1238         * config/riscv/sync.md (atomic_load<mode>): Ditto.
1239         (atomic_store<mode>): Ditto.
1241 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
1243         * config/riscv/riscv.cc (riscv_index_reg_class):
1244         Return GR_REGS for XTheadFMemIdx.
1245         (riscv_regno_ok_for_index_p): Add support for XTheadFMemIdx.
1246         * config/riscv/riscv.h (HARDFP_REG_P): New macro.
1247         * config/riscv/thead.cc (is_fmemidx_mode): New function.
1248         (th_memidx_classify_address_index): Add support for XTheadFMemIdx.
1249         (th_fmemidx_output_index): New function.
1250         (th_output_move): Add support for XTheadFMemIdx.
1251         * config/riscv/thead.md (TH_M_ANYF): New mode iterator.
1252         (TH_M_NOEXTF): Likewise.
1253         (*th_fmemidx_movsf_hardfloat): New INSN.
1254         (*th_fmemidx_movdf_hardfloat_rv64): Likewise.
1255         (*th_fmemidx_I_a): Likewise.
1256         (*th_fmemidx_I_c): Likewise.
1257         (*th_fmemidx_US_a): Likewise.
1258         (*th_fmemidx_US_c): Likewise.
1259         (*th_fmemidx_UZ_a): Likewise.
1260         (*th_fmemidx_UZ_c): Likewise.
1262 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
1264         * config/riscv/constraints.md (th_m_mia): New constraint.
1265         (th_m_mib): Likewise.
1266         (th_m_mir): Likewise.
1267         (th_m_miu): Likewise.
1268         * config/riscv/riscv-protos.h (enum riscv_address_type):
1269         Add new address types ADDRESS_REG_REG, ADDRESS_REG_UREG,
1270         and ADDRESS_REG_WB and their documentation.
1271         (struct riscv_address_info): Add new field 'shift' and
1272         document the field usage for the new address types.
1273         (riscv_valid_base_register_p): New prototype.
1274         (th_memidx_legitimate_modify_p): Likewise.
1275         (th_memidx_legitimate_index_p): Likewise.
1276         (th_classify_address): Likewise.
1277         (th_output_move): Likewise.
1278         (th_print_operand_address): Likewise.
1279         * config/riscv/riscv.cc (riscv_index_reg_class):
1280         Return GR_REGS for XTheadMemIdx.
1281         (riscv_regno_ok_for_index_p): Add support for XTheadMemIdx.
1282         (riscv_classify_address): Call th_classify_address() on top.
1283         (riscv_output_move): Call th_output_move() on top.
1284         (riscv_print_operand_address): Call th_print_operand_address()
1285         on top.
1286         * config/riscv/riscv.h (HAVE_POST_MODIFY_DISP): New macro.
1287         (HAVE_PRE_MODIFY_DISP): Likewise.
1288         * config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2): Disable
1289         for XTheadMemIdx.
1290         (*zero_extendqi<SUPERQI:mode>2_internal): Convert to expand,
1291         create INSN with same name and disable it for XTheadMemIdx.
1292         (extendsidi2): Likewise.
1293         (*extendsidi2_internal): Disable for XTheadMemIdx.
1294         * config/riscv/thead.cc (valid_signed_immediate): New helper
1295         function.
1296         (th_memidx_classify_address_modify): New function.
1297         (th_memidx_legitimate_modify_p): Likewise.
1298         (th_memidx_output_modify): Likewise.
1299         (is_memidx_mode): Likewise.
1300         (th_memidx_classify_address_index): Likewise.
1301         (th_memidx_legitimate_index_p): Likewise.
1302         (th_memidx_output_index): Likewise.
1303         (th_classify_address): Likewise.
1304         (th_output_move): Likewise.
1305         (th_print_operand_address): Likewise.
1306         * config/riscv/thead.md (*th_memidx_operand): New splitter.
1307         (*th_memidx_zero_extendqi<SUPERQI:mode>2): New INSN.
1308         (*th_memidx_extendsidi2): Likewise.
1309         (*th_memidx_zero_extendsidi2): Likewise.
1310         (*th_memidx_zero_extendhi<GPR:mode>2): Likewise.
1311         (*th_memidx_extend<SHORT:mode><SUPERQI:mode>2): Likewise.
1312         (*th_memidx_bb_zero_extendsidi2): Likewise.
1313         (*th_memidx_bb_zero_extendhi<GPR:mode>2): Likewise.
1314         (*th_memidx_bb_extendhi<GPR:mode>2): Likewise.
1315         (*th_memidx_bb_extendqi<SUPERQI:mode>2): Likewise.
1316         (TH_M_ANYI): New mode iterator.
1317         (TH_M_NOEXTI): Likewise.
1318         (*th_memidx_I_a): New combiner optimization.
1319         (*th_memidx_I_b): Likewise.
1320         (*th_memidx_I_c): Likewise.
1321         (*th_memidx_US_a): Likewise.
1322         (*th_memidx_US_b): Likewise.
1323         (*th_memidx_US_c): Likewise.
1324         (*th_memidx_UZ_a): Likewise.
1325         (*th_memidx_UZ_b): Likewise.
1326         (*th_memidx_UZ_c): Likewise.
1328 2023-10-31  Carl Love  <cel@us.ibm.com>
1330         * doc/extend.texi (__builtin_bcdsub_le, __builtin_bcdsub_ge): Add
1331         documentation for the builti-ins.
1333 2023-10-31  Vladimir N. Makarov  <vmakarov@redhat.com>
1335         PR rtl-optimization/111971
1336         * lra-constraints.cc: (process_alt_operands): Don't check start
1337         hard regs for regs originated from register variables.
1339 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
1341         * config/riscv/autovec.md (<ieee_fmaxmin_op><mode>3): fmax/fmin
1342         expanders.
1343         (cond_<ieee_fmaxmin_op><mode>): Ditto.
1344         (cond_len_<ieee_fmaxmin_op><mode>): Ditto.
1345         (reduc_fmax_scal_<mode>): Ditto.
1346         (reduc_fmin_scal_<mode>): Ditto.
1347         * config/riscv/riscv-v.cc (needs_fp_rounding): Add fmin/fmax.
1348         * config/riscv/vector-iterators.md (fmin): New UNSPEC.
1349         (UNSPEC_VFMIN): Ditto.
1350         * config/riscv/vector.md (@pred_<ieee_fmaxmin_op><mode>): Add
1351         UNSPEC insn patterns.
1352         (@pred_<ieee_fmaxmin_op><mode>_scalar): Ditto.
1354 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
1356         PR bootstrap/84402
1357         PR target/111600
1358         * Makefile.in: Handle split insn-emit.cc.
1359         * configure: Regenerate.
1360         * configure.ac: Add --with-insnemit-partitions.
1361         * genemit.cc (output_peephole2_scratches): Print to file instead
1362         of stdout.
1363         (print_code): Ditto.
1364         (gen_rtx_scratch): Ditto.
1365         (gen_exp): Ditto.
1366         (gen_emit_seq): Ditto.
1367         (emit_c_code): Ditto.
1368         (gen_insn): Ditto.
1369         (gen_expand): Ditto.
1370         (gen_split): Ditto.
1371         (output_add_clobbers): Ditto.
1372         (output_added_clobbers_hard_reg_p): Ditto.
1373         (print_overload_arguments): Ditto.
1374         (print_overload_test): Ditto.
1375         (handle_overloaded_code_for): Ditto.
1376         (handle_overloaded_gen): Ditto.
1377         (print_header): New function.
1378         (handle_arg): New function.
1379         (main): Split output into 10 files.
1380         * gensupport.cc (count_patterns): New function.
1381         * gensupport.h (count_patterns): Define.
1382         * read-md.cc (md_reader::print_md_ptr_loc): Add file argument.
1383         * read-md.h (class md_reader): Change definition.
1385 2023-10-31  Alexandre Oliva  <oliva@adacore.com>
1387         PR tree-optimization/111943
1388         * gimple-harden-control-flow.cc: Adjust copyright year.
1389         (rt_bb_visited): Add vfalse and vtrue data members.
1390         Zero-initialize them in the ctor.
1391         (rt_bb_visited::insert_exit_check_on_edge): Upon encountering
1392         abnormal edges, insert initializers for vfalse and vtrue on
1393         entry, and insert the check sequence guarded by a conditional
1394         in the dest block.
1396 2023-10-31  Richard Biener  <rguenther@suse.de>
1398         PR tree-optimization/112305
1399         * tree-scalar-evolution.h (expression_expensive): Adjust.
1400         * tree-scalar-evolution.cc (expression_expensive): Record
1401         when we see a COND_EXPR.
1402         (final_value_replacement_loop): When the replacement contains
1403         a COND_EXPR, rewrite it to defined overflow.
1404         * tree-ssa-loop-ivopts.cc (may_eliminate_iv): Adjust.
1406 2023-10-31  Xi Ruoyao  <xry111@xry111.site>
1408         PR target/112299
1409         * config/loongarch/loongarch-opts.h (HAVE_AS_TLS): Define to 0
1410         if not defined yet.
1412 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
1414         * gimple-match.h (gimple_match_op::gimple_match_op):
1415         Add interfaces for more arguments.
1416         (gimple_match_op::set_op): Add interfaces for more arguments.
1417         * match.pd: Add support of combining cond_len_op + vec_cond
1419 2023-10-31  Haochen Jiang  <haochen.jiang@intel.com>
1421         * config/i386/avx512cdintrin.h (target): Push evex512 for
1422         avx512cd.
1423         * config/i386/avx512vlintrin.h (target): Split avx512cdvl part
1424         out from avx512vl.
1425         * config/i386/i386-builtin.def (BDESC): Do not check evex512
1426         for builtins not needed.
1428 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
1430         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
1431         Change to define_expand.
1433 2023-10-31  liuhongt  <hongtao.liu@intel.com>
1435         PR target/112276
1436         * config/i386/mmx.md (*mmx_pblendvb_v8qi_1): Change
1437         define_split to define_insn_and_split to handle
1438         immediate_operand for comparison.
1439         (*mmx_pblendvb_v8qi_2): Ditto.
1440         (*mmx_pblendvb_<mode>_1): Ditto.
1441         (*mmx_pblendvb_v4qi_2): Ditto.
1442         (<code><mode>3): Remove define_split after it.
1443         (<code>v8qi3): Ditto.
1444         (<code><mode>3): Ditto.
1445         (<ode>v2hi3): Ditto.
1447 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
1449         * match.pd (`a == 1 ? b : a OP b`): New pattern.
1450         (`a == -1 ? b : a & b`): New pattern.
1452 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
1454         * match.pd: (`a == 0 ? b : b + a`,
1455         `a == 0 ? b : b - a`): New patterns.
1457 2023-10-31  Neal Frager  <neal.frager@amd.com>
1459         * config/microblaze/microblaze.cc: Fix mcpu version check.
1461 2023-10-30  Mayshao  <mayshao-oc@zhaoxin.com>
1463         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Recognize yongfeng.
1464         * common/config/i386/i386-common.cc: Add yongfeng.
1465         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
1466         Add ZHAOXIN_FAM7H_YONGFENG.
1467         * config.gcc: Add yongfeng.
1468         * config/i386/driver-i386.cc (host_detect_local_cpu):
1469         Let -march=native recognize yongfeng processors.
1470         * config/i386/i386-c.cc (ix86_target_macros_internal): Add yongfeng.
1471         * config/i386/i386-options.cc (m_YONGFENG): New definition.
1472         (m_ZHAOXIN): Ditto.
1473         * config/i386/i386.h (enum processor_type): Add PROCESSOR_YONGFENG.
1474         * config/i386/i386.md: Add yongfeng.
1475         * config/i386/lujiazui.md: Fix typo.
1476         * config/i386/x86-tune-costs.h (struct processor_costs):
1477         Add yongfeng costs.
1478         * config/i386/x86-tune-sched.cc (ix86_issue_rate): Add yongfeng.
1479         (ix86_adjust_cost): Ditto.
1480         * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Replace
1481         m_LUJIAZUI with m_ZHAOXIN.
1482         (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
1483         (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
1484         (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
1485         (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
1486         (X86_TUNE_MOVX): Ditto.
1487         (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
1488         (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
1489         (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
1490         (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
1491         (X86_TUNE_FUSE_ALU_AND_BRANCH): Ditto.
1492         (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto.
1493         (X86_TUNE_USE_LEAVE): Ditto.
1494         (X86_TUNE_PUSH_MEMORY): Ditto.
1495         (X86_TUNE_LCP_STALL): Ditto.
1496         (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
1497         (X86_TUNE_OPT_AGU): Ditto.
1498         (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto.
1499         (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
1500         (X86_TUNE_USE_SAHF): Ditto.
1501         (X86_TUNE_USE_BT): Ditto.
1502         (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto.
1503         (X86_TUNE_ONE_IF_CONV_INSN): Ditto.
1504         (X86_TUNE_AVOID_MFENCE): Ditto.
1505         (X86_TUNE_EXPAND_ABS): Ditto.
1506         (X86_TUNE_USE_SIMODE_FIOP): Ditto.
1507         (X86_TUNE_USE_FFREEP): Ditto.
1508         (X86_TUNE_EXT_80387_CONSTANTS): Ditto.
1509         (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto.
1510         (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
1511         (X86_TUNE_SSE_TYPELESS_STORES): Ditto.
1512         (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
1513         (X86_TUNE_USE_GATHER_2PARTS): Add m_YONGFENG.
1514         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
1515         (X86_TUNE_USE_GATHER_8PARTS): Ditto.
1516         (X86_TUNE_AVOID_128FMA_CHAINS): Ditto.
1517         * doc/extend.texi: Add details about yongfeng.
1518         * doc/invoke.texi: Ditto.
1519         * config/i386/yongfeng.md: New file to describe yongfeng processor.
1521 2023-10-30  Martin Jambor  <mjambor@suse.cz>
1523         PR ipa/111157
1524         * ipa-prop.h (struct ipa_argagg_value): Newf flag killed.
1525         * ipa-modref.cc (ipcp_argagg_and_kill_overlap_p): New function.
1526         (update_signature): Mark any any IPA-CP aggregate constants at
1527         positions known to be killed as killed.  Move check that there is
1528         clone_info after this pruning.
1529         * ipa-cp.cc (ipa_argagg_value_list::dump): Dump the killed flag.
1530         (ipa_argagg_value_list::push_adjusted_values): Clear the new flag.
1531         (push_agg_values_from_plats): Likewise.
1532         (ipa_push_agg_values_from_jfunc): Likewise.
1533         (estimate_local_effects): Likewise.
1534         (push_agg_values_for_index_from_edge): Likewise.
1535         * ipa-prop.cc (write_ipcp_transformation_info): Stream the killed
1536         flag.
1537         (read_ipcp_transformation_info): Likewise.
1538         (ipcp_get_aggregate_const): Update comment, assert that encountered
1539         record does not have killed flag set.
1540         (ipcp_transform_function): Prune all aggregate constants with killed
1541         set.
1543 2023-10-30  Martin Jambor  <mjambor@suse.cz>
1545         PR ipa/111157
1546         * ipa-prop.h (ipcp_transformation): New member function template
1547         remove_argaggs_if.
1548         * ipa-sra.cc (zap_useless_ipcp_results): Use remove_argaggs_if to
1549         filter aggreagate constants.
1551 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
1553         PR middle-end/101955
1554         * config/arc/arc.md (*extvsi_1_0): New define_insn_and_split
1555         to convert sign extract of the least significant bit into an
1556         AND $1 then a NEG when !TARGET_BARREL_SHIFTER.
1558 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
1560         * config/arc/arc.cc (arc_rtx_costs): Improve cost estimates.
1561         Provide reasonable values for SHIFTS and ROTATES by constant
1562         bit counts depending upon TARGET_BARREL_SHIFTER.
1563         (arc_insn_cost): Use insn attributes if the instruction is
1564         recognized.  Avoid calling get_attr_length for type "multi",
1565         i.e. define_insn_and_split patterns without explicit type.
1566         Fall-back to set_rtx_cost for single_set and pattern_cost
1567         otherwise.
1568         * config/arc/arc.h (COSTS_N_BYTES): Define helper macro.
1569         (BRANCH_COST): Improve/correct definition.
1570         (LOGICAL_OP_NON_SHORT_CIRCUIT): Preserve previous behavior.
1572 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
1574         * config/arc/arc.cc (arc_split_ashl): Use lsl16 on TARGET_SWAP.
1575         (arc_split_ashr): Use swap and sign-extend on TARGET_SWAP.
1576         (arc_split_lshr): Use lsr16 on TARGET_SWAP.
1577         (arc_split_rotl): Use swap on TARGET_SWAP.
1578         (arc_split_rotr): Likewise.
1579         * config/arc/arc.md (ANY_ROTATE): New code iterator.
1580         (<ANY_ROTATE>si2_cnt16): New define_insn for alternate form of
1581         swap instruction on TARGET_SWAP.
1582         (ashlsi2_cnt16): Rename from *ashlsi16_cnt16 and move earlier.
1583         (lshrsi2_cnt16): New define_insn for LSR16 instruction.
1584         (*ashlsi2_cnt16): See above.
1586 2023-10-30  Richard Ball  <richard.ball@arm.com>
1588         * config/arm/aout.h: Change to use the Lrtx label.
1589         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Remove arm targets
1590         from (!target_pure_code) condition.
1591         (ADDR_VEC_ALIGN): Add align for tables in rodata section.
1592         * config/arm/arm.cc (arm_output_casesi): Alter the function to include
1593         .Lrtx label and remove adr instructions.
1594         * config/arm/arm.md
1595         (arm_casesi_internal): Use force_reg to generate ldr instructions that
1596         would otherwise be out of range, and change rtl to accommodate force reg.
1597         Additionally remove unnecessary register temp.
1598         (casesi): Remove pure code check for Arm.
1599         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Remove arm
1600         targets from JUMP_TABLES_IN_TEXT_SECTION definition.
1602 2023-10-30  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
1604         PR target/106907
1605         * config/rs6000/rs6000.cc (altivec_expand_vec_perm_const): Change bitwise
1606         xor to an equality and fix comment indentation.
1608 2023-10-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1610         * config/riscv/riscv-protos.h (sew64_scalar_helper): Fix bug.
1611         * config/riscv/riscv-v.cc (sew64_scalar_helper): Ditto.
1612         * config/riscv/vector.md: Ditto.
1614 2023-10-30  liuhongt  <hongtao.liu@intel.com>
1616         PR target/104610
1617         * config/i386/i386-expand.cc (ix86_expand_branch): Handle
1618         512-bit vector with vpcmpeq + kortest.
1619         * config/i386/i386.md (cbranchxi4): New expander.
1620         * config/i386/sse.md: (cbranch<mode>4): Extend to V16SImode
1621         and V8DImode.
1623 2023-10-30  Haochen Gui  <guihaoc@gcc.gnu.org>
1625         PR target/111449
1626         * expr.cc (qi_vector_mode_supported_p): Rename to...
1627         (by_pieces_mode_supported_p): ...this, and extends it to do
1628         the checking for both scalar and vector mode.
1629         (widest_fixed_size_mode_for_size): Call
1630         by_pieces_mode_supported_p to examine the mode.
1631         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Likewise.
1633 2023-10-29  Martin Uecker  <uecker@tugraz.at>
1635         PR tree-optimization/109334
1636         * tree-object-size.cc (parm_object_size): Allow size
1637         computation for implicit access attributes.
1639 2023-10-29  Max Filippov  <jcmvbkbc@gmail.com>
1641         * config/xtensa/xtensa.h (TARGET_SALT): Change HW version from
1642         260000 (which corresponds to RF-2014.0) to 270000 (which
1643         corresponds to RG-2015.0, the release where salt/saltu opcodes
1644         were introduced).
1646 2023-10-29  Pan Li  <pan2.li@intel.com>
1648         * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Use
1649         reference type to prevent copying.
1651 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
1653         PR rtl-optimization/112107
1654         * ira-costs.cc: (calculate_equiv_gains): Use NONDEBUG_INSN_P
1655         instead of INSN_P.
1657 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
1659         PR target/112088
1660         * config/gcn/gcn.cc (gcn_expand_epilogue): Fix kernel epilogue register
1661         conflict.
1663 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
1665         * config/gcn/gcn-valu.md
1666         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): Mention "operands" in
1667         condition to silence the warnings.
1668         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): Likewise.
1669         * config/gcn/gcn.md (*movti_insn): Likewise.
1671 2023-10-27  Richard Sandiford  <richard.sandiford@arm.com>
1673         * recog.cc (insn_propagation::apply_to_pattern_1): Handle shared
1674         ASM_OPERANDS.
1676 2023-10-27  Yangyu Chen  <chenyangyu@isrc.iscas.ac.cn>
1678         * config/riscv/riscv.cc (rocket_tune_info): Fix int_div cost.
1679         (sifive_7_tune_info, thead_c906_tune_info): Likewise.
1681 2023-10-27  Robin Dapp  <rdapp@ventanamicro.com>
1683         * config/riscv/autovec.md (rawmemchr<ANYI:mode>): New expander.
1684         * config/riscv/riscv-protos.h (gen_no_side_effects_vsetvl_rtx):
1685         Define.
1686         (expand_rawmemchr): Define.
1687         * config/riscv/riscv-v.cc (force_vector_length_operand): Remove
1688         static.
1689         (expand_block_move): Move from here...
1690         * config/riscv/riscv-string.cc (expand_block_move): ...to here.
1691         (expand_rawmemchr): Add vectorized expander.
1692         * internal-fn.cc (expand_RAWMEMCHR): Fix typo.
1694 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
1696         * ira-costs.cc: (get_equiv_regno, calculate_equiv_gains):
1697         Process reg equivalence invariants.
1699 2023-10-27  Uros Bizjak  <ubizjak@gmail.com>
1701         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
1702         i386: Fiy typo in "partial_memory_read_stall" tune option.
1704 2023-10-27  Victor Do Nascimento  <victor.donascimento@arm.com>
1706         * config/aarch64/aarch64.cc (aarch64_print_operand): Add
1707         support for CONST_STRING.
1709 2023-10-27  Roger Sayle  <roger@nextmovesoftware.com>
1711         PR target/110551
1712         * config/i386/i386.md (<u>mul<mode><dwi>3): Make operands 1 and
1713         2 take "regiser_operand" and "nonimmediate_operand" respectively.
1714         (<u>mulqihi3): Likewise.
1715         (*bmi2_umul<mode><dwi>3_1): Operand 2 needs to be register_operand
1716         matching the %d constraint.  Use umul_highpart RTX to represent
1717         the highpart multiplication.
1718         (*umul<mode><dwi>3_1):  Operand 2 should use regiser_operand
1719         predicate, and "a" rather than "0" as operands 0 and 2 have
1720         different modes.
1721         (define_split): For mul to mulx conversion, use the new
1722         umul_highpart RTX representation.
1723         (*mul<mode><dwi>3_1):  Operand 1 should be register_operand
1724         and the constraint %a as operands 0 and 1 have different modes.
1725         (*<u>mulqihi3_1): Operand 1 should be register_operand matching
1726         the constraint %0.
1727         (define_peephole2): Providing widening multiplication variants
1728         of the peephole2s that tweak highpart multiplication register
1729         allocation.
1731 2023-10-27  Lewis Hyatt  <lhyatt@gmail.com>
1733         PR preprocessor/87299
1734         * toplev.cc (no_backend): New static global.
1735         (finalize): Remove argument no_backend, which is now a
1736         static global.
1737         (process_options): Likewise.
1738         (do_compile): Likewise.
1739         (target_reinit): Don't do anything in preprocess-only mode.
1740         (toplev::main): Adapt to no_backend change.
1741         (toplev::finalize): Likewise.
1743 2023-10-27  Andrew Pinski  <apinski@marvell.com>
1745         PR tree-optimization/101590
1746         PR tree-optimization/94884
1747         * match.pd (`(X BIT_OP Y) CMP X`): New pattern.
1749 2023-10-27  liuhongt  <hongtao.liu@intel.com>
1751         PR target/103861
1752         * config/i386/i386-expand.cc (ix86_expand_sse_movcc): Handle
1753         V2HF/V2BF/V4HF/V4BFmode.
1754         * config/i386/i386.cc (ix86_get_mask_mode): Return QImode when
1755         data_mode is V4HF/V2HFmode.
1756         * config/i386/mmx.md (vec_cmpv4hfqi): New expander.
1757         (vcond_mask_<mode>v4hi): Ditto.
1758         (vcond_mask_<mode>qi): Ditto.
1759         (vec_cmpv2hfqi): Ditto.
1760         (vcond_mask_<mode>v2hi): Ditto.
1761         (mmx_plendvb_<mode>): Add 2 combine splitters after the
1762         patterns.
1763         (mmx_pblendvb_v8qi): Ditto.
1764         (<code>v2hi3): Add a combine splitter after the pattern.
1765         (<code><mode>3): Ditto.
1766         (<code>v8qi3): Ditto.
1767         (<code><mode>3): Ditto.
1768         * config/i386/sse.md (vcond<mode><mode>): Merge this with ..
1769         (vcond<sseintvecmodelower><mode>): .. this into ..
1770         (vcond<VI2HFBF_AVX512VL:mode><VHF_AVX512VL:mode>): .. this,
1771         and extend to V8BF/V16BF/V32BFmode.
1773 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1775         * config/riscv/riscv-opts.h (TARGET_MAX_LMUL): New macro.
1776         * config/riscv/riscv-v.cc (preferred_simd_mode): Adapt macro.
1777         (autovectorize_vector_modes): Ditto.
1778         (can_find_related_mode_p): Ditto.
1780 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1782         PR target/111318
1783         PR target/111888
1784         * config.gcc: Add AVL propagation pass.
1785         * config/riscv/riscv-passes.def (INSERT_PASS_AFTER): Ditto.
1786         * config/riscv/riscv-protos.h (make_pass_avlprop): Ditto.
1787         * config/riscv/t-riscv: Ditto.
1788         * config/riscv/riscv-avlprop.cc: New file.
1790 2023-10-26  David Malcolm  <dmalcolm@redhat.com>
1792         * doc/extend.texi (Common Function Attributes): Add
1793         null_terminated_string_arg.
1795 2023-10-26  Andrew Pinski  <pinskia@gmail.com>
1797         PR tree-optimization/111957
1798         * match.pd (`a != C1 ? abs(a) : C2`): New pattern.
1800 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
1802         * range-op-float.cc (range_operator::fold_range): Delete unused
1803         variable.
1805 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
1807         * range-op-float.cc (range_operator::fold_range): Remove
1808         superfluous code.
1809         (range_operator::rv_fold): Remove unneeded arguments.
1810         (operator_plus::rv_fold): Same.
1811         (operator_minus::rv_fold): Same.
1812         (operator_mult::rv_fold): Same.
1813         (operator_div::rv_fold): Same.
1814         * range-op-mixed.h: Remove lb, ub, and maybe_nan arguments from
1815         rv_fold methods.
1816         * range-op.h: Same.
1818 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
1820         * range-op-float.cc (range_operator::fold_range): Pass frange
1821         argument to rv_fold.
1822         (range_operator::rv_fold): Add frange argument.
1823         (operator_plus::rv_fold): Same.
1824         (operator_minus::rv_fold): Same.
1825         (operator_mult::rv_fold): Same.
1826         (operator_div::rv_fold): Same.
1827         * range-op-mixed.h: Add frange argument to rv_fold methods.
1828         * range-op.h: Same.
1830 2023-10-26  Richard Ball  <richard.ball@arm.com>
1832         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add table output
1833         for different machine modes for arm.
1834         * config/arm/arm-protos.h (arm_output_casesi): New prototype.
1835         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Make arm use
1836         ASM_OUTPUT_ADDR_DIFF_ELT.
1837         (CASE_VECTOR_SHORTEN_MODE): Change table size calculation for
1838         TARGET_ARM.
1839         (LABEL_ALIGN_AFTER_BARRIER): Change to accommodate .p2align 2
1840         for TARGET_ARM.
1841         * config/arm/arm.cc (arm_output_casesi): New function.
1842         * config/arm/arm.md (arm_casesi_internal): Change casesi expand
1843         and insn.
1844         for arm to use new function arm_output_casesi.
1846 2023-10-26  Iain Sandoe  <iain@sandoe.co.uk>
1848         * config/darwin.h
1849         (darwin_label_is_anonymous_local_objc_name): Make metadata names
1850         linker-visibile for GNU objective C.
1852 2023-10-26  Vladimir N. Makarov  <vmakarov@redhat.com>
1854         * dwarf2out.cc (reg_loc_descriptor): Use lra_eliminate_regs when
1855         LRA is used.
1856         * ira-costs.cc: Include regset.h.
1857         (equiv_can_be_consumed_p, get_equiv_regno, calculate_equiv_gains):
1858         New functions.
1859         (find_costs_and_classes): Call calculate_equiv_gains and redefine
1860         mem_cost of pseudos with equivs when LRA is used.
1861         * var-tracking.cc: Include ira.h and lra.h.
1862         (vt_initialize): Use lra_eliminate_regs when LRA is used.
1864 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1866         * doc/md.texi: Adapt COND_LEN pseudo code.
1868 2023-10-26  Roger Sayle  <roger@nextmovesoftware.com>
1869             Richard Biener  <rguenther@suse.de>
1871         PR rtl-optimization/91865
1872         * combine.cc (make_compound_operation): Avoid creating a
1873         ZERO_EXTEND of a ZERO_EXTEND.
1875 2023-10-26  Jiahao Xu  <xujiahao@loongson.cn>
1877         * config/loongarch/lasx.md (vcond_mask_<ILASX:mode><ILASX:mode>): Change to
1878         (vcond_mask_<mode><mode256_i>): this.
1879         * config/loongarch/lsx.md (vcond_mask_<ILSX:mode><ILSX:mode>): Change to
1880         (vcond_mask_<mode><mode_i>): this.
1882 2023-10-26  Thomas Schwinge  <thomas@codesourcery.com>
1884         * ipa-icf.cc (sem_item::target_supports_symbol_aliases_p):
1885         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);' before
1886         'return true;'.
1887         * ipa-visibility.cc (function_and_variable_visibility): Change
1888         '#ifdef ASM_OUTPUT_DEF' to 'if (TARGET_SUPPORTS_ALIASES)'.
1889         * varasm.cc (output_constant_pool_contents)
1890         [#ifdef ASM_OUTPUT_DEF]:
1891         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
1892         (do_assemble_alias) [#ifdef ASM_OUTPUT_DEF]:
1893         'if (!TARGET_SUPPORTS_ALIASES)',
1894         'gcc_checking_assert (seen_error ());'.
1895         (assemble_alias): Change '#if !defined (ASM_OUTPUT_DEF)' to
1896         'if (!TARGET_SUPPORTS_ALIASES)'.
1897         (default_asm_output_anchor):
1898         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
1900 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
1902         PR tree-optimization/111520
1903         * gimple-harden-conditionals.cc
1904         (pass_harden_compares::execute): Set EH edge probability and
1905         EH block execution count.
1907 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
1909         * tree-eh.h (make_eh_edges): Rename to...
1910         (make_eh_edge): ... this.
1911         * tree-eh.cc: Likewise.  Adjust all callers...
1912         * gimple-harden-conditionals.cc: ... here, ...
1913         * gimple-harden-control-flow.cc: ... here, ...
1914         * tree-cfg.cc: ... here, ...
1915         * tree-inline.cc: ... and here.
1917 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
1919         * config/darwin.cc (darwin_override_options): Handle fPIE.
1921 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
1923         * config.gcc: Use -E to to sed to indicate that we are using
1924         extended REs.
1926 2023-10-25  Jason Merrill  <jason@redhat.com>
1928         * tree-core.h (struct tree_base): Update address_space comment.
1930 2023-10-25  Wilco Dijkstra  <wilco.dijkstra@arm.com>
1932         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
1933         Add support for immediates using MOV/EOR bitmask.
1935 2023-10-25  Uros Bizjak  <ubizjak@gmail.com>
1937         PR target/111698
1938         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
1939         New tune.
1940         * config/i386/i386.h (TARGET_PARTIAL_MEMORY_READ_STALL): New macro.
1941         * config/i386/i386.md: New peephole pattern to narrow test
1942         instructions with immediate operands that test memory locations
1943         for zero.
1945 2023-10-25  Andrew MacLeod  <amacleod@redhat.com>
1947         * value-range.cc (irange::union_append): New.
1948         (irange::union_): Call union_append when appropriate.
1949         * value-range.h (irange::union_append): New prototype.
1951 2023-10-25  Chenghui Pan  <panchenghui@loongson.cn>
1953         * config/loongarch/lasxintrin.h (__lasx_xvftintrnel_l_s): Fix comments.
1954         (__lasx_xvfrintrne_s): Ditto.
1955         (__lasx_xvfrintrne_d): Ditto.
1956         (__lasx_xvfrintrz_s): Ditto.
1957         (__lasx_xvfrintrz_d): Ditto.
1958         (__lasx_xvfrintrp_s): Ditto.
1959         (__lasx_xvfrintrp_d): Ditto.
1960         (__lasx_xvfrintrm_s): Ditto.
1961         (__lasx_xvfrintrm_d): Ditto.
1962         * config/loongarch/lsxintrin.h (__lsx_vftintrneh_l_s): Ditto.
1963         (__lsx_vfrintrne_s): Ditto.
1964         (__lsx_vfrintrne_d): Ditto.
1965         (__lsx_vfrintrz_s): Ditto.
1966         (__lsx_vfrintrz_d): Ditto.
1967         (__lsx_vfrintrp_s): Ditto.
1968         (__lsx_vfrintrp_d): Ditto.
1969         (__lsx_vfrintrm_s): Ditto.
1970         (__lsx_vfrintrm_d): Ditto.
1972 2023-10-25  chenxiaolong  <chenxiaolong@loongson.cn>
1974         * config/loongarch/loongarch.md (get_thread_pointer<mode>):Adds the
1975         instruction template corresponding to the __builtin_thread_pointer
1976         function.
1977         * doc/extend.texi:Add the __builtin_thread_pointer function support
1978         description to the documentation.
1980 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
1982         * Makefile.in (OBJS): Add rtl-ssa/movement.o.
1983         * rtl-ssa/access-utils.h (accesses_include_nonfixed_hard_registers)
1984         (single_set_info): New functions.
1985         (remove_uses_of_def, accesses_reference_same_resource): Declare.
1986         (insn_clobbers_resources): Likewise.
1987         * rtl-ssa/accesses.cc (rtl_ssa::remove_uses_of_def): New function.
1988         (rtl_ssa::accesses_reference_same_resource): Likewise.
1989         (rtl_ssa::insn_clobbers_resources): Likewise.
1990         * rtl-ssa/movement.h (can_move_insn_p): Declare.
1991         * rtl-ssa/movement.cc: New file.
1993 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
1995         * rtl-ssa/functions.h (function_info::remains_available_at_insn):
1996         New member function.
1997         * rtl-ssa/accesses.cc (function_info::remains_available_at_insn):
1998         Likewise.
1999         (function_info::make_use_available): Avoid false negatives for
2000         queries within an EBB.
2002 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2004         * rtl-ssa/changes.cc: Include sreal.h.
2005         (rtl_ssa::changes_are_worthwhile): When optimizing for speed,
2006         scale the cost of each instruction by its execution frequency.
2008 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2010         * rtl-ssa/access-utils.h (next_call_clobbers): New function.
2011         (is_single_dominating_def, remains_available_on_exit): Replace with...
2012         * rtl-ssa/functions.h (function_info::is_single_dominating_def)
2013         (function_info::remains_available_on_exit): ...these new member
2014         functions.
2015         (function_info::m_clobbered_by_calls): New member variable.
2016         * rtl-ssa/functions.cc (function_info::function_info): Explicitly
2017         initialize m_clobbered_by_calls.
2018         * rtl-ssa/insns.cc (function_info::record_call_clobbers): Update
2019         m_clobbered_by_calls for each call-clobber note.
2020         * rtl-ssa/member-fns.inl (function_info::is_single_dominating_def):
2021         New function.  Check for call clobbers.
2022         * rtl-ssa/accesses.cc (function_info::remains_available_on_exit):
2023         Likewise.
2025 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2027         * rtl-ssa/internals.h (build_info::exit_block_dominator): New
2028         member variable.
2029         * rtl-ssa/blocks.cc (build_info::build_info): Initialize it.
2030         (bb_walker::bb_walker): Use it, moving the computation of the
2031         dominator to...
2032         (function_info::process_all_blocks): ...here.
2033         (function_info::place_phis): Add dominance frontiers for the
2034         exit block.
2036 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2038         * rtl-ssa/functions.h (function_info::process_uses_of_deleted_def):
2039         New member function.
2040         * rtl-ssa/changes.cc (function_info::process_uses_of_deleted_def):
2041         Likewise.
2042         (function_info::change_insns): Use it.
2044 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2046         * rtl-ssa/changes.cc (function_info::finalize_new_accesses):
2047         If a change describes a set of memory, ensure that that set
2048         is kept, regardless of the insn pattern.
2050 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2052         * rtl-ssa/changes.cc (function_info::apply_changes_to_insn): Remove
2053         call to add_reg_unused_notes and instead...
2054         (function_info::change_insns): ...use a separate loop here.
2056 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
2058         * rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Force
2059         global registers to be live on exit.  Handle any block with zero
2060         successors like an exit block.
2062 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
2064         * omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
2065         Handle 'OMP_CLAUSE_SELF' like 'OMP_CLAUSE_IF'.
2066         * omp-expand.cc (expand_omp_target): Handle 'OMP_CLAUSE_SELF' for
2067         'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
2069 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
2071         * tree-core.h (omp_clause_code): Move 'OMP_CLAUSE_SELF' after
2072         'OMP_CLAUSE_IF'.
2073         * tree-pretty-print.cc (dump_omp_clause): Adjust.
2074         * tree.cc (omp_clause_num_ops, omp_clause_code_name): Likewise.
2075         * tree.h: Likewise.
2077 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2079         * config/riscv/riscv-protos.h (has_vl_op): Export from riscv-vsetvl to riscv-v
2080         (tail_agnostic_p): Ditto.
2081         (validate_change_or_fail): Ditto.
2082         (nonvlmax_avl_type_p): Ditto.
2083         (vlmax_avl_p): Ditto.
2084         (get_sew): Ditto.
2085         (enum vlmul_type): Ditto.
2086         (count_regno_occurrences): Ditto.
2087         * config/riscv/riscv-v.cc (has_vl_op): Ditto.
2088         (get_default_ta): Ditto.
2089         (tail_agnostic_p): Ditto.
2090         (validate_change_or_fail): Ditto.
2091         (nonvlmax_avl_type_p): Ditto.
2092         (vlmax_avl_p): Ditto.
2093         (get_sew): Ditto.
2094         (enum vlmul_type): Ditto.
2095         (get_vlmul): Ditto.
2096         (count_regno_occurrences): Ditto.
2097         * config/riscv/riscv-vsetvl.cc (vlmax_avl_p): Ditto.
2098         (has_vl_op): Ditto.
2099         (get_sew): Ditto.
2100         (get_vlmul): Ditto.
2101         (get_default_ta): Ditto.
2102         (tail_agnostic_p): Ditto.
2103         (count_regno_occurrences): Ditto.
2104         (validate_change_or_fail): Ditto.
2106 2023-10-25  Chung-Lin Tang  <cltang@codesourcery.com>
2108         * gimplify.cc (gimplify_scan_omp_clauses): Add OMP_CLAUSE_SELF case.
2109         (gimplify_adjust_omp_clauses): Likewise.
2110         * omp-expand.cc (expand_omp_target): Add OMP_CLAUSE_SELF expansion code,
2111         * omp-low.cc (scan_sharing_clauses): Add OMP_CLAUSE_SELF case.
2112         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_SELF enum.
2113         * tree-nested.cc (convert_nonlocal_omp_clauses): Add OMP_CLAUSE_SELF
2114         case.
2115         (convert_local_omp_clauses): Likewise.
2116         * tree-pretty-print.cc (dump_omp_clause): Add OMP_CLAUSE_SELF case.
2117         * tree.cc (omp_clause_num_ops): Add OMP_CLAUSE_SELF entry.
2118         (omp_clause_code_name): Likewise.
2119         * tree.h (OMP_CLAUSE_SELF_EXPR): New macro.
2121 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2123         * config/riscv/riscv-protos.h (vlmax_avl_type_p): New function.
2124         * config/riscv/riscv-v.cc (vlmax_avl_type_p): Ditto.
2125         * config/riscv/riscv-vsetvl.cc (get_avl): Adapt function.
2126         * config/riscv/vector.md: Change avl_type into avl_type_idx.
2128 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2130         * recog.cc (constrain_operands): Remove UNARY_P handling.
2131         * reload.cc (find_reloads): Likewise.
2133 2023-10-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
2135         * gcov-io.h: Fix record length encoding in comment.
2137 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
2139         * config/i386/i386-features.cc (compute_convert_gain): Provide
2140         more accurate values (sizes) for inter-unit moves with -Os.
2142 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
2143             Claudiu Zissulescu  <claziss@gmail.com>
2145         * config/arc/arc-protos.h (output_shift): Rename to...
2146         (output_shift_loop): Tweak API to take an explicit rtx_code.
2147         (arc_split_ashl): Prototype new function here.
2148         (arc_split_ashr): Likewise.
2149         (arc_split_lshr): Likewise.
2150         (arc_split_rotl): Likewise.
2151         (arc_split_rotr): Likewise.
2152         * config/arc/arc.cc (output_shift): Delete local prototype.  Rename.
2153         (output_shift_loop): New function replacing output_shift to output
2154         a zero overheap loop for SImode shifts and rotates on ARC targets
2155         without barrel shifter (i.e. no hardware support for these insns).
2156         (arc_split_ashl): New helper function to split *ashlsi3_nobs.
2157         (arc_split_ashr): New helper function to split *ashrsi3_nobs.
2158         (arc_split_lshr): New helper function to split *lshrsi3_nobs.
2159         (arc_split_rotl): New helper function to split *rotlsi3_nobs.
2160         (arc_split_rotr): New helper function to split *rotrsi3_nobs.
2161         (arc_print_operand): Correct whitespace.
2162         (arc_rtx_costs): Likewise.
2163         (hwloop_optimize): Likewise.
2164         * config/arc/arc.md (ANY_SHIFT_ROTATE): New define_code_iterator.
2165         (define_code_attr insn): New code attribute to map to pattern name.
2166         (<ANY_SHIFT_ROTATE>si3): New expander unifying previous ashlsi3,
2167         ashrsi3 and lshrsi3 define_expands.  Adds rotlsi3 and rotrsi3.
2168         (*<ANY_SHIFT_ROTATE>si3_nobs): New define_insn_and_split that
2169         unifies the previous *ashlsi3_nobs, *ashrsi3_nobs and *lshrsi3_nobs.
2170         We now call arc_split_<insn> in arc.cc to implement each split.
2171         (shift_si3): Delete define_insn, all shifts/rotates are now split.
2172         (shift_si3_loop): Rename to...
2173         (<insn>si3_loop): define_insn to handle loop implementations of
2174         SImode shifts and rotates, calling ouput_shift_loop for template.
2175         (rotrsi3): Rename to...
2176         (*rotrsi3_insn): define_insn for TARGET_BARREL_SHIFTER's ror.
2177         (*rotlsi3): New define_insn_and_split to transform left rotates
2178         into right rotates before reload.
2179         (rotlsi3_cnt1): New define_insn_and_split to implement a left
2180         rotate by one bit using an add.f followed by an adc.
2181         * config/arc/predicates.md (shiftr4_operator): Delete.
2183 2023-10-24  Claudiu Zissulescu  <claziss@gmail.com>
2185         * config/arc/arc.md (mulsi3_700): Update pattern.
2186         (mulsi3_v2): Likewise.
2187         * config/arc/predicates.md (mpy_dest_reg_operand): Remove it.
2189 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
2191         PR tree-optimization/104376
2192         PR tree-optimization/101541
2193         * tree-ssa-phiopt.cc (factor_out_conditional_operation):
2194         Allow nop conversions even if it is defined by a statement
2195         inside the conditional.
2197 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
2199         PR tree-optimization/111913
2200         * match.pd (`popcount(X&Y) + popcount(X|Y)`): Add the resulting
2201         type for popcount.
2203 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2205         * rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check
2206         whether the requested phi already exists.
2208 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2210         * rtl-ssa.h: Include cfgbuild.h.
2211         * rtl-ssa/movement.h (can_insert_after): Replace is_jump with the
2212         more comprehensive control_flow_insn_p.
2214 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2216         * rtl-ssa/changes.cc (function_info::perform_pending_updates): Check
2217         whether an insn has been replaced by a note.
2219 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2221         * rtl-ssa/member-fns.inl (first_any_insn_use): Handle null
2222         m_first_use.
2224 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2226         * config/i386/i386-expand.cc (ix86_split_mmx_punpck): Allow the
2227         destination to be wider than the sources.  Take the mode from the
2228         first source.
2229         (ix86_expand_sse_extend): Pass the destination directly to
2230         ix86_split_mmx_punpck, rather than using a fresh register that
2231         is half the size.
2233 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2235         * config/i386/predicates.md (aeswidekl_operation): Protect
2236         REGNO check with REG_P.
2238 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2240         * config/aarch64/aarch64.cc (aarch64_insn_cost): New function.
2241         (TARGET_INSN_COST): Define.
2243 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
2245         * config/aarch64/atomics.md (aarch64_atomic_exchange<mode>): Require
2246         !TARGET_LSE.
2248 2023-10-24  xuli  <xuli1@eswincomputing.com>
2250         PR target/111935
2251         * config/riscv/riscv-vector-builtins-bases.cc: fix bug.
2253 2023-10-24  Mark Harmstone  <mark@harmstone.com>
2255         * opts.cc (debug_type_names): Remove stabs and xcoff.
2256         (df_set_names): Adjust.
2258 2023-10-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2260         PR target/111947
2261         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Add REGNO check.
2263 2023-10-23  Lewis Hyatt  <lhyatt@gmail.com>
2265         PR preprocessor/36887
2266         * toplev.h (ident_hash_extra): Declare...
2267         * stringpool.cc (ident_hash_extra): ...this new global variable.
2268         (init_stringpool): Handle ident_hash_extra as well as ident_hash.
2269         (ggc_mark_stringpool): Likewise.
2270         (ggc_purge_stringpool): Likewise.
2271         (struct string_pool_data_extra): New struct.
2272         (spd2): New GC root variable.
2273         (gt_pch_save_stringpool): Use spd2 to handle ident_hash_extra,
2274         analogous to how spd is used to handle ident_hash.
2275         (gt_pch_restore_stringpool): Likewise.
2277 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
2279         PR tree-optimization/111794
2280         * tree-vect-stmts.cc (vectorizable_assignment): Add
2281         same-precision exception for dest and source.
2283 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
2285         * config/riscv/autovec.md (popcount<mode>2): New expander.
2286         * config/riscv/riscv-protos.h (expand_popcount): Define.
2287         * config/riscv/riscv-v.cc (expand_popcount): Vectorize popcount
2288         with the WWG algorithm.
2290 2023-10-23  Richard Biener  <rguenther@suse.de>
2292         PR tree-optimization/111916
2293         * tree-sra.cc (sra_modify_assign): Do not lower all
2294         BIT_FIELD_REF reads that are sra_handled_bf_read_p.
2296 2023-10-23  Richard Biener  <rguenther@suse.de>
2298         PR tree-optimization/111915
2299         * tree-vect-slp.cc (vect_build_slp_tree_1): Check all
2300         accesses are either grouped or not.
2302 2023-10-23  Richard Biener  <rguenther@suse.de>
2304         PR ipa/111914
2305         * tree-inline.cc (setup_one_parameter): Move code emitting
2306         a dummy load when not optimizing ...
2307         (initialize_inlined_parameters): ... here to after when
2308         we remapped the parameter type.
2310 2023-10-23  Oleg Endo  <olegendo@gcc.gnu.org>
2312         PR target/111001
2313         * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
2314         Skip over nop move insns.
2316 2023-10-23  Tamar Christina  <tamar.christina@arm.com>
2318         PR tree-optimization/111860
2319         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
2320         Drop .MEM nodes only.
2322 2023-10-23  Andrew Pinski  <apinski@marvell.com>
2324         * match.pd (`(A - B) CMP 0 ? (A - B) : (B - A)`):
2325         New patterns.
2327 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
2329         * convert.cc (convert_to_pointer_1): Return error_mark_node
2330         after an error.
2331         (convert_to_real_1): Likewise.
2332         (convert_to_integer_1): Likewise.
2333         (convert_to_complex_1): Likewise.
2335 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
2337         PR c/111903
2338         * convert.cc (convert_to_complex_1): Return
2339         error_mark_node if either convert was an error
2340         when converting from a scalar.
2342 2023-10-23  Richard Biener  <rguenther@suse.de>
2344         PR tree-optimization/111917
2345         * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert
2346         new conditional after last stmt.
2348 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2350         PR target/111927
2351         * config/riscv/riscv-vsetvl.cc: Fix bug.
2353 2023-10-23  Pan Li  <pan2.li@intel.com>
2355         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): Add insn type
2356         arg.
2357         (expand_vec_trunc): Take MA instead of MU for cvt_x_f_rtz.
2359 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
2361         * doc/invoke.texi (-mexplicit-relocs=style): Document.
2362         (-mexplicit-relocs): Document as an alias of
2363         -mexplicit-relocs=always.
2364         (-mno-explicit-relocs): Document as an alias of
2365         -mexplicit-relocs=none.
2366         (-mcmodel=extreme): Mention -mexplicit-relocs=always instead of
2367         -mexplicit-relocs.
2369 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
2371         * config/loongarch/predicates.md (symbolic_pcrel_operand): New
2372         predicate.
2373         * config/loongarch/loongarch.md (define_peephole2): Optimize
2374         la.local + ld/st to pcalau12i + ld/st if the address is only used
2375         once if -mexplicit-relocs=auto and -mcmodel=normal or medium.
2377 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
2379         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
2380         Return true for TLS symbol types if -mexplicit-relocs=auto.
2381         (loongarch_call_tls_get_addr): Replace TARGET_EXPLICIT_RELOCS
2382         with la_opt_explicit_relocs != EXPLICIT_RELOCS_NONE.
2383         (loongarch_legitimize_tls_address): Likewise.
2384         * config/loongarch/loongarch.md (@tls_low<mode>): Remove
2385         TARGET_EXPLICIT_RELOCS from insn condition.
2387 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
2389         * config/loongarch/loongarch-protos.h
2390         (loongarch_explicit_relocs_p): Declare new function.
2391         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
2392         Implement.
2393         (loongarch_symbol_insns): Call loongarch_explicit_relocs_p for
2394         SYMBOL_GOT_DISP, instead of using TARGET_EXPLICIT_RELOCS.
2395         (loongarch_split_symbol): Call loongarch_explicit_relocs_p for
2396         deciding if return early, instead of using
2397         TARGET_EXPLICIT_RELOCS.
2398         (loongarch_output_move): CAll loongarch_explicit_relocs_p
2399         instead of using TARGET_EXPLICIT_RELOCS.
2400         * config/loongarch/loongarch.md (*low<mode>): Remove
2401         TARGET_EXPLICIT_RELOCS from insn condition.
2402         (@ld_from_got<mode>): Likewise.
2403         * config/loongarch/predicates.md (move_operand): Call
2404         loongarch_explicit_relocs_p instead of using
2405         TARGET_EXPLICIT_RELOCS.
2407 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
2409         * config/loongarch/genopts/loongarch-strings: Add strings for
2410         -mexplicit-relocs={auto,none,always}.
2411         * config/loongarch/genopts/loongarch.opt.in: Add options for
2412         -mexplicit-relocs={auto,none,always}.
2413         * config/loongarch/loongarch-str.h: Regenerate.
2414         * config/loongarch/loongarch.opt: Regenerate.
2415         * config/loongarch/loongarch-def.h
2416         (EXPLICIT_RELOCS_AUTO): Define.
2417         (EXPLICIT_RELOCS_NONE): Define.
2418         (EXPLICIT_RELOCS_ALWAYS): Define.
2419         (N_EXPLICIT_RELOCS_TYPES): Define.
2420         * config/loongarch/loongarch.cc
2421         (loongarch_option_override_internal): Error out if the old-style
2422         -m[no-]explicit-relocs option is used with
2423         -mexplicit-relocs={auto,none,always} together.  Map
2424         -mno-explicit-relocs to -mexplicit-relocs=none and
2425         -mexplicit-relocs to -mexplicit-relocs=always for backward
2426         compatibility.  Set a proper default for -mexplicit-relocs=
2427         based on configure-time probed linker capability.  Update a
2428         diagnostic message to mention -mexplicit-relocs=always instead
2429         of the old-style -mexplicit-relocs.
2430         (loongarch_handle_model_attribute): Update a diagnostic message
2431         to mention -mexplicit-relocs=always instead of the old-style
2432         -mexplicit-relocs.
2433         * config/loongarch/loongarch.h (TARGET_EXPLICIT_RELOCS): Define.
2435 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2437         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Fix typo.
2438         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
2440 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2442         * config/riscv/vector.md: Fix avl_type attribute of tuple mov<mode>.
2444 2023-10-23  Kewen Lin  <linkw@linux.ibm.com>
2446         PR tree-optimization/111784
2447         * tree-vect-stmts.cc (vectorizable_store): Adjust costing way for
2448         adjacent vector stores, by costing them with the total number
2449         rather than costing them one by one.
2450         (vectorizable_load): Adjust costing way for adjacent vector
2451         loads, by costing them with the total number rather than costing
2452         them one by one.
2454 2023-10-23  Haochen Jiang  <haochen.jiang@intel.com>
2456         PR target/111753
2457         * config/i386/i386.cc (ix86_standard_x87sse_constant_load_p):
2458         Do not split to xmm16+ when !TARGET_AVX512VL.
2460 2023-10-23  Pan Li  <pan2.li@intel.com>
2462         * config/riscv/riscv-protos.h (enum insn_type): Add new type
2463         values.
2464         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): Add undef merge
2465         operand handling.
2466         (expand_vec_ceil): Take MA instead of MU for tmp register.
2467         (expand_vec_floor): Ditto.
2468         (expand_vec_nearbyint): Ditto.
2469         (expand_vec_rint): Ditto.
2470         (expand_vec_round): Ditto.
2471         (expand_vec_roundeven): Ditto.
2473 2023-10-23  Lulu Cheng  <chenglulu@loongson.cn>
2475         * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition.
2477 2023-10-23  Haochen Gui  <guihaoc@gcc.gnu.org>
2479         PR target/111449
2480         * expr.cc (can_use_qi_vectors): New function to return true if
2481         we know how to implement OP using vectors of bytes.
2482         (qi_vector_mode_supported_p): New function to check if optabs
2483         exists for the mode and certain by pieces operations.
2484         (widest_fixed_size_mode_for_size): Replace the second argument
2485         with the type of by pieces operations.  Call can_use_qi_vectors
2486         and qi_vector_mode_supported_p to do the check.  Call
2487         scalar_mode_supported_p to check if the scalar mode is supported.
2488         (by_pieces_ninsns): Pass the type of by pieces operation to
2489         widest_fixed_size_mode_for_size.
2490         (class op_by_pieces_d): Remove m_qi_vector_mode.  Add m_op to
2491         record the type of by pieces operations.
2492         (op_by_pieces_d::op_by_pieces_d): Change last argument to the
2493         type of by pieces operations, initialize m_op with it.  Pass
2494         m_op to function widest_fixed_size_mode_for_size.
2495         (op_by_pieces_d::get_usable_mode): Pass m_op to function
2496         widest_fixed_size_mode_for_size.
2497         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Call
2498         can_use_qi_vectors and qi_vector_mode_supported_p to do the
2499         check.
2500         (op_by_pieces_d::run): Pass m_op to function
2501         widest_fixed_size_mode_for_size.
2502         (move_by_pieces_d::move_by_pieces_d): Set m_op to MOVE_BY_PIECES.
2503         (store_by_pieces_d::store_by_pieces_d): Set m_op with the op.
2504         (can_store_by_pieces): Pass the type of by pieces operations to
2505         widest_fixed_size_mode_for_size.
2506         (clear_by_pieces): Initialize class store_by_pieces_d with
2507         CLEAR_BY_PIECES.
2508         (compare_by_pieces_d::compare_by_pieces_d): Set m_op to
2509         COMPARE_BY_PIECES.
2511 2023-10-23  liuhongt  <hongtao.liu@intel.com>
2513         PR tree-optimization/111820
2514         PR tree-optimization/111833
2515         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): Give
2516         up vectorization for nonlinear iv vect_step_op_mul when
2517         step_expr is not exact_log2 and niters is greater than
2518         TYPE_PRECISION (TREE_TYPE (step_expr)). Also don't vectorize
2519         for nagative niters_skip which will be used by fully masked
2520         loop.
2521         (vect_can_advance_ivs_p): Pass whole phi_info to
2522         vect_can_peel_nonlinear_iv_p.
2523         * tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Optimize
2524         init_expr * pow (step_expr, skipn) to init_expr
2525         << (log2 (step_expr) * skipn) when step_expr is exact_log2.
2527 2023-10-23  liuhongt  <hongtao.liu@intel.com>
2529         * config/i386/mmx.md (mmx_pinsrw): Remove.
2531 2023-10-22  Andrew Pinski  <pinskia@gmail.com>
2533         PR target/110986
2534         * config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern.
2535         (*cmov_uxtw_insn_insv): Likewise.
2537 2023-10-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2539         * doc/invoke.texi: Document the new -nodefaultrpaths option.
2540         * doc/install.texi: Document the new --with-darwin-extra-rpath
2541         option.
2543 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
2545         * Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp.
2547 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
2549         * configure.ac: Add --with-darwin-extra-rpath option.
2550         * config/darwin.h: Handle DARWIN_EXTRA_RPATH.
2551         * config.in: Regenerate.
2552         * configure: Regenerate.
2554 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
2556         * aclocal.m4: Regenerate.
2557         * configure: Regenerate.
2558         * configure.ac: Handle Darwin rpaths.
2559         * config/darwin.h: Handle Darwin rpaths.
2560         * config/darwin.opt: Handle Darwin rpaths.
2561         * Makefile.in:  Handle Darwin rpaths.
2563 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
2565         * gcc.cc (RUNPATH_OPTION): New.
2566         (do_spec_1): Provide '%P' as a spec to insert rpaths for
2567         each compiler startfile path.
2569 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
2570             Maxim Blinov  <maxim.blinov@embecosm.com>
2571             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2572             Iain Sandoe  <iain@sandoe.co.uk>
2574         * config.gcc: Default to heap trampolines on macOS 11 and above.
2575         * config/i386/darwin.h: Define X86_CUSTOM_FUNCTION_TEST.
2576         * config/i386/i386.h: Define X86_CUSTOM_FUNCTION_TEST.
2577         * config/i386/i386.cc: Use X86_CUSTOM_FUNCTION_TEST.
2579 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
2580             Maxim Blinov  <maxim.blinov@embecosm.com>
2581             Iain Sandoe  <iain@sandoe.co.uk>
2582             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2584         * builtins.def (BUILT_IN_NESTED_PTR_CREATED): Define.
2585         (BUILT_IN_NESTED_PTR_DELETED): Ditto.
2586         * common.opt (ftrampoline-impl): Add option to control
2587         generation of trampoline instantiation (heap or stack).
2588         * coretypes.h: Define enum trampoline_impl.
2589         * tree-nested.cc (convert_tramp_reference_op): Don't bother calling
2590         __builtin_adjust_trampoline for heap trampolines.
2591         (finalize_nesting_tree_1): Emit calls to
2592         __builtin_nested_...{created,deleted} if we're generating with
2593         -ftrampoline-impl=heap.
2594         * tree.cc (build_common_builtin_nodes): Build
2595         __builtin_nested_...{created,deleted}.
2596         * doc/invoke.texi (-ftrampoline-impl): Document.
2598 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
2600         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
2601         Prohibit 'E' and 'H' combinations.
2603 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
2605         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
2606         Change version number of the 'Zfa' extension to 1.0.
2608 2023-10-21  Pan Li  <pan2.li@intel.com>
2610         PR target/111857
2611         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Remove.
2612         * config/riscv/riscv-protos.h (vls_mode_valid_p): New func decl.
2613         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Replace
2614         macro reference to func.
2615         (vls_mode_valid_p): New func impl for vls mode valid or not.
2616         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Replace
2617         macro reference to func.
2618         * config/riscv/vector-iterators.md: Ditto.
2620 2023-10-20  Roger Sayle  <roger@nextmovesoftware.com>
2621             Uros Bizjak  <ubizjak@gmail.com>
2623         PR middle-end/101955
2624         PR tree-optimization/106245
2625         * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split.
2627 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
2629         * gimple-harden-control-flow.cc: Include memmodel.h.
2631 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
2633         * gimple-harden-control-flow.cc: Include tm_p.h.
2635 2023-10-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
2637         PR tree-optimization/111882
2638         * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
2639         with non-constant offsets.
2641 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
2643         PR tree-optimization/111866
2644         * tree-vect-loop-manip.cc (vect_do_peeling): Pass null as vinfo to
2645         vect_set_loop_condition during prolog peeling.
2647 2023-10-20  Richard Biener  <rguenther@suse.de>
2649         PR tree-optimization/111445
2650         * tree-scalar-evolution.cc (simple_iv_with_niters):
2651         Add missing check for a sign-conversion.
2653 2023-10-20  Richard Biener  <rguenther@suse.de>
2655         PR tree-optimization/110243
2656         PR tree-optimization/111336
2657         * tree-ssa-loop-ivopts.cc (strip_offset_1): Rewrite
2658         operations with undefined behavior on overflow to
2659         unsigned arithmetic.
2661 2023-10-20  Richard Biener  <rguenther@suse.de>
2663         PR tree-optimization/111891
2664         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix
2665         assert.
2667 2023-10-20  Andrew Stubbs  <ams@codesourcery.com>
2669         * config.gcc: Allow --with-arch=gfx1030.
2670         * config/gcn/gcn-hsa.h (NO_XNACK): gfx1030 does not support xnack.
2671         (ASM_SPEC): gfx1030 needs -mattr=+wavefrontsize64 set.
2672         * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX1030.
2673         (TARGET_GFX1030): New.
2674         (TARGET_RDNA2): New.
2675         * config/gcn/gcn-valu.md (@dpp_move<mode>): Disable for RDNA2.
2676         (addc<mode>3<exec_vcc>): Add RDNA2 syntax variant.
2677         (subc<mode>3<exec_vcc>): Likewise.
2678         (<convop><mode><vndi>2_exec): Add RDNA2 alternatives.
2679         (vec_cmp<mode>di): Likewise.
2680         (vec_cmp<u><mode>di): Likewise.
2681         (vec_cmp<mode>di_exec): Likewise.
2682         (vec_cmp<u><mode>di_exec): Likewise.
2683         (vec_cmp<mode>di_dup): Likewise.
2684         (vec_cmp<mode>di_dup_exec): Likewise.
2685         (reduc_<reduc_op>_scal_<mode>): Disable for RDNA2.
2686         (*<reduc_op>_dpp_shr_<mode>): Likewise.
2687         (*plus_carry_dpp_shr_<mode>): Likewise.
2688         (*plus_carry_in_dpp_shr_<mode>): Likewise.
2689         * config/gcn/gcn.cc (gcn_option_override): Recognise gfx1030.
2690         (gcn_global_address_p): RDNA2 only allows smaller offsets.
2691         (gcn_addr_space_legitimate_address_p): Likewise.
2692         (gcn_omp_device_kind_arch_isa): Recognise gfx1030.
2693         (gcn_expand_epilogue): Use VGPRs instead of SGPRs.
2694         (output_file_start): Configure gfx1030.
2695         * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __RDNA2__;
2696         (ASSEMBLER_DIALECT): New.
2697         * config/gcn/gcn.md (rdna): New define_attr.
2698         (enabled): Use "rdna" attribute.
2699         (gcn_return): Remove s_dcache_wb.
2700         (addcsi3_scalar): Add RDNA2 syntax variant.
2701         (addcsi3_scalar_zero): Likewise.
2702         (addptrdi3): Likewise.
2703         (mulsi3): v_mul_lo_i32 should be v_mul_lo_u32 on all ISA.
2704         (*memory_barrier): Add RDNA2 syntax variant.
2705         (atomic_load<mode>): Add RDNA2 cache control variants, and disable
2706         scalar atomics for RDNA2.
2707         (atomic_store<mode>): Likewise.
2708         (atomic_exchange<mode>): Likewise.
2709         * config/gcn/gcn.opt (gpu_type): Add gfx1030.
2710         * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1030): New.
2711         (main): Recognise -march=gfx1030.
2712         * config/gcn/t-omp-device: Add gfx1030 isa.
2714 2023-10-20  Richard Biener  <rguenther@suse.de>
2716         PR tree-optimization/111000
2717         * stor-layout.h (element_precision): Move ..
2718         * tree.h (element_precision): .. here.
2719         * tree-ssa-loop-im.cc (movement_possibility_1): Restrict
2720         motion of shifts and rotates.
2722 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
2724         * tree-core.h (ECF_XTHROW): New macro.
2725         * tree.cc (set_call_expr): Add expected_throw attribute when
2726         ECF_XTHROW is set.
2727         (build_common_builtin_node): Add ECF_XTHROW to
2728         __cxa_end_cleanup and _Unwind_Resume or _Unwind_SjLj_Resume.
2729         * calls.cc (flags_from_decl_or_type): Check for expected_throw
2730         attribute to set ECF_XTHROW.
2731         * gimple.cc (gimple_build_call_from_tree): Propagate
2732         ECF_XTHROW from decl flags to gimple call...
2733         (gimple_call_flags): ... and back.
2734         * gimple.h (GF_CALL_XTHROW): New gf_mask flag.
2735         (gimple_call_set_expected_throw): New.
2736         (gimple_call_expected_throw_p): New.
2737         * Makefile.in (OBJS): Add gimple-harden-control-flow.o.
2738         * builtins.def (BUILT_IN___HARDCFR_CHECK): New.
2739         * common.opt (fharden-control-flow-redundancy): New.
2740         (-fhardcfr-check-returning-calls): New.
2741         (-fhardcfr-check-exceptions): New.
2742         (-fhardcfr-check-noreturn-calls=*): New.
2743         (Enum hardcfr_check_noreturn_calls): New.
2744         (fhardcfr-skip-leaf): New.
2745         * doc/invoke.texi: Document them.
2746         (hardcfr-max-blocks, hardcfr-max-inline-blocks): New params.
2747         * flag-types.h (enum hardcfr_noret): New.
2748         * gimple-harden-control-flow.cc: New.
2749         * params.opt (-param=hardcfr-max-blocks=): New.
2750         (-param=hradcfr-max-inline-blocks=): New.
2751         * passes.def (pass_harden_control_flow_redundancy): Add.
2752         * tree-pass.h (make_pass_harden_control_flow_redundancy):
2753         Declare.
2754         * doc/extend.texi: Document expected_throw attribute.
2756 2023-10-20  Alex Coplan  <alex.coplan@arm.com>
2758         * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call
2759         ::remove_insn on deleted insns.
2761 2023-10-20  Richard Biener  <rguenther@suse.de>
2763         * doc/generic.texi ({L,R}ROTATE_EXPR): Document.
2765 2023-10-20  Oleg Endo  <olegendo@gcc.gnu.org>
2767         PR target/101177
2768         * config/sh/sh.md (unnamed split pattern): Fix comparison of
2769         find_regno_note result.
2771 2023-10-20  Richard Biener  <rguenther@suse.de>
2773         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite
2774         both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER
2775         stmt refs.
2777 2023-10-20  Richard Biener  <rguenther@suse.de>
2779         * tree-vect-slp.cc (off_map, off_op0_map, off_arg2_map,
2780         off_arg3_arg2_map): New.
2781         (vect_get_operand_map): Get flag whether the stmt was
2782         recognized as gather or scatter and use the above
2783         accordingly.
2784         (vect_get_and_check_slp_defs): Adjust.
2785         (vect_build_slp_tree_2): Likewise.
2787 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2789         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Rename variables.
2790         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
2791         (pre_vsetvl::emit_vsetvl): Ditto.
2793 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
2794              Andre Vieira  <andre.simoesdiasvieira@arm.com>
2796         * tree-if-conv.cc (if_convertible_loop_p_1): Move check from here ...
2797         (get_loop_body_if_conv_order): ... to here.
2798         (if_convertible_loop_p): Remove single_exit check.
2799         (tree_if_conversion): Move single_exit check to if-conversion part and
2800         support multiple exits.
2802 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
2803              Andre Vieira  <andre.simoesdiasvieira@arm.com>
2805         * tree-vect-patterns.cc (vect_init_pattern_stmt): Copy STMT_VINFO_TYPE
2806         from original statement.
2807         (vect_recog_bitfield_ref_pattern): Support bitfields in gcond.
2809 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2811         PR target/111848
2812         * config/riscv/riscv-selftests.cc (run_const_vector_selftests): Adapt selftest.
2813         * config/riscv/riscv-v.cc (expand_const_vector): Change it into vec_duplicate splitter.
2815 2023-10-20  Lehua Ding  <lehua.ding@rivai.ai>
2817         PR target/111037
2818         PR target/111234
2819         PR target/111725
2820         * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): New.
2821         (debug): Removed.
2822         (compute_reaching_defintion): New.
2823         (enum vsetvl_type): Moved.
2824         (vlmax_avl_p): Moved.
2825         (enum emit_type): Moved.
2826         (vlmul_to_str): Moved.
2827         (vlmax_avl_insn_p): Removed.
2828         (policy_to_str): Moved.
2829         (loop_basic_block_p): Removed.
2830         (valid_sew_p): Removed.
2831         (vsetvl_insn_p): Moved.
2832         (vsetvl_vtype_change_only_p): Removed.
2833         (after_or_same_p): Removed.
2834         (before_p): Removed.
2835         (anticipatable_occurrence_p): Removed.
2836         (available_occurrence_p): Removed.
2837         (insn_should_be_added_p): Removed.
2838         (get_all_sets): Moved.
2839         (get_same_bb_set): Moved.
2840         (gen_vsetvl_pat): Removed.
2841         (calculate_vlmul): Moved.
2842         (get_max_int_sew): New.
2843         (emit_vsetvl_insn): Removed.
2844         (get_max_float_sew): New.
2845         (eliminate_insn): Removed.
2846         (insert_vsetvl): Removed.
2847         (count_regno_occurrences): Moved.
2848         (get_vl_vtype_info): Removed.
2849         (enum def_type): Moved.
2850         (validate_change_or_fail): Moved.
2851         (change_insn): Removed.
2852         (get_all_real_uses): Moved.
2853         (get_forward_read_vl_insn): Removed.
2854         (get_backward_fault_first_load_insn): Removed.
2855         (change_vsetvl_insn): Removed.
2856         (avl_source_has_vsetvl_p): Removed.
2857         (source_equal_p): Moved.
2858         (calculate_sew): Removed.
2859         (same_equiv_note_p): Moved.
2860         (get_expr_id): New.
2861         (incompatible_avl_p): Removed.
2862         (get_regno): New.
2863         (different_sew_p): Removed.
2864         (get_bb_index): New.
2865         (different_lmul_p): Removed.
2866         (has_no_uses): Moved.
2867         (different_ratio_p): Removed.
2868         (different_tail_policy_p): Removed.
2869         (different_mask_policy_p): Removed.
2870         (possible_zero_avl_p): Removed.
2871         (enum demand_flags): New.
2872         (second_ratio_invalid_for_first_sew_p): Removed.
2873         (second_ratio_invalid_for_first_lmul_p): Removed.
2874         (enum class): New.
2875         (float_insn_valid_sew_p): Removed.
2876         (second_sew_less_than_first_sew_p): Removed.
2877         (first_sew_less_than_second_sew_p): Removed.
2878         (class vsetvl_info): New.
2879         (compare_lmul): Removed.
2880         (second_lmul_less_than_first_lmul_p): Removed.
2881         (second_ratio_less_than_first_ratio_p): Removed.
2882         (DEF_INCOMPATIBLE_COND): Removed.
2883         (greatest_sew): Removed.
2884         (first_sew): Removed.
2885         (second_sew): Removed.
2886         (first_vlmul): Removed.
2887         (second_vlmul): Removed.
2888         (first_ratio): Removed.
2889         (second_ratio): Removed.
2890         (vlmul_for_first_sew_second_ratio): Removed.
2891         (vlmul_for_greatest_sew_second_ratio): Removed.
2892         (ratio_for_second_sew_first_vlmul): Removed.
2893         (class vsetvl_block_info): New.
2894         (DEF_SEW_LMUL_FUSE_RULE): New.
2895         (always_unavailable): Removed.
2896         (avl_unavailable_p): Removed.
2897         (class demand_system): New.
2898         (sew_unavailable_p): Removed.
2899         (lmul_unavailable_p): Removed.
2900         (ge_sew_unavailable_p): Removed.
2901         (ge_sew_lmul_unavailable_p): Removed.
2902         (ge_sew_ratio_unavailable_p): Removed.
2903         (DEF_UNAVAILABLE_COND): Removed.
2904         (same_sew_lmul_demand_p): Removed.
2905         (propagate_avl_across_demands_p): Removed.
2906         (reg_available_p): Removed.
2907         (support_relaxed_compatible_p): Removed.
2908         (demands_can_be_fused_p): Removed.
2909         (earliest_pred_can_be_fused_p): Removed.
2910         (vsetvl_dominated_by_p): Removed.
2911         (avl_info::avl_info): Removed.
2912         (avl_info::single_source_equal_p): Removed.
2913         (avl_info::multiple_source_equal_p): Removed.
2914         (DEF_SEW_LMUL_RULE): New.
2915         (avl_info::operator=): Removed.
2916         (avl_info::operator==): Removed.
2917         (DEF_POLICY_RULE): New.
2918         (avl_info::operator!=): Removed.
2919         (avl_info::has_non_zero_avl): Removed.
2920         (vl_vtype_info::vl_vtype_info): Removed.
2921         (vl_vtype_info::operator==): Removed.
2922         (DEF_AVL_RULE): New.
2923         (vl_vtype_info::operator!=): Removed.
2924         (vl_vtype_info::same_avl_p): Removed.
2925         (vl_vtype_info::same_vtype_p): Removed.
2926         (vl_vtype_info::same_vlmax_p): Removed.
2927         (vector_insn_info::operator>=): Removed.
2928         (vector_insn_info::operator==): Removed.
2929         (class pre_vsetvl): New.
2930         (vector_insn_info::parse_insn): Removed.
2931         (vector_insn_info::compatible_p): Removed.
2932         (vector_insn_info::skip_avl_compatible_p): Removed.
2933         (vector_insn_info::compatible_avl_p): Removed.
2934         (vector_insn_info::compatible_vtype_p): Removed.
2935         (vector_insn_info::available_p): Removed.
2936         (vector_insn_info::fuse_avl): Removed.
2937         (vector_insn_info::fuse_sew_lmul): Removed.
2938         (vector_insn_info::fuse_tail_policy): Removed.
2939         (vector_insn_info::fuse_mask_policy): Removed.
2940         (vector_insn_info::local_merge): Removed.
2941         (vector_insn_info::global_merge): Removed.
2942         (vector_insn_info::get_avl_or_vl_reg): Removed.
2943         (vector_insn_info::update_fault_first_load_avl): Removed.
2944         (vector_insn_info::dump): Removed.
2945         (vector_infos_manager::vector_infos_manager): Removed.
2946         (vector_infos_manager::create_expr): Removed.
2947         (vector_infos_manager::get_expr_id): Removed.
2948         (vector_infos_manager::all_same_ratio_p): Removed.
2949         (vector_infos_manager::all_avail_in_compatible_p): Removed.
2950         (vector_infos_manager::all_same_avl_p): Removed.
2951         (vector_infos_manager::expr_set_num): Removed.
2952         (vector_infos_manager::release): Removed.
2953         (vector_infos_manager::create_bitmap_vectors): Removed.
2954         (vector_infos_manager::free_bitmap_vectors): Removed.
2955         (vector_infos_manager::dump): Removed.
2956         (class pass_vsetvl): Adjust.
2957         (pass_vsetvl::get_vector_info): Removed.
2958         (pass_vsetvl::get_block_info): Removed.
2959         (pass_vsetvl::update_vector_info): Removed.
2960         (pass_vsetvl::update_block_info): Removed.
2961         (pre_vsetvl::compute_avl_def_data): New.
2962         (pass_vsetvl::simple_vsetvl): Removed.
2963         (pass_vsetvl::compute_local_backward_infos): Removed.
2964         (pass_vsetvl::need_vsetvl): Removed.
2965         (pass_vsetvl::transfer_before): Removed.
2966         (pass_vsetvl::transfer_after): Removed.
2967         (pre_vsetvl::compute_vsetvl_def_data): New.
2968         (pass_vsetvl::emit_local_forward_vsetvls): Removed.
2969         (pass_vsetvl::prune_expressions): Removed.
2970         (pass_vsetvl::compute_local_properties): Removed.
2971         (pre_vsetvl::compute_lcm_local_properties): New.
2972         (pass_vsetvl::earliest_fusion): Removed.
2973         (pre_vsetvl::fuse_local_vsetvl_info): New.
2974         (pass_vsetvl::vsetvl_fusion): Removed.
2975         (pass_vsetvl::can_refine_vsetvl_p): Removed.
2976         (pre_vsetvl::earliest_fuse_vsetvl_info): New.
2977         (pass_vsetvl::refine_vsetvls): Removed.
2978         (pass_vsetvl::cleanup_vsetvls): Removed.
2979         (pass_vsetvl::commit_vsetvls): Removed.
2980         (pass_vsetvl::pre_vsetvl): Removed.
2981         (pass_vsetvl::get_vsetvl_at_end): Removed.
2982         (local_avl_compatible_p): Removed.
2983         (pass_vsetvl::local_eliminate_vsetvl_insn): Removed.
2984         (pre_vsetvl::pre_global_vsetvl_info): New.
2985         (get_first_vsetvl_before_rvv_insns): Removed.
2986         (pass_vsetvl::global_eliminate_vsetvl_insn): Removed.
2987         (pre_vsetvl::emit_vsetvl): New.
2988         (pass_vsetvl::ssa_post_optimization): Removed.
2989         (pre_vsetvl::cleaup): New.
2990         (pre_vsetvl::remove_avl_operand): New.
2991         (pass_vsetvl::df_post_optimization): Removed.
2992         (pre_vsetvl::remove_unused_dest_operand): New.
2993         (pass_vsetvl::init): Removed.
2994         (pass_vsetvl::done): Removed.
2995         (pass_vsetvl::compute_probabilities): Removed.
2996         (pass_vsetvl::lazy_vsetvl): Adjust.
2997         (pass_vsetvl::execute): Adjust.
2998         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Removed.
2999         (DEF_SEW_LMUL_RULE): New.
3000         (DEF_SEW_LMUL_FUSE_RULE): Removed.
3001         (DEF_POLICY_RULE): New.
3002         (DEF_UNAVAILABLE_COND): Removed
3003         (DEF_AVL_RULE): New demand type.
3004         (sew_lmul): New demand type.
3005         (ratio_only): New demand type.
3006         (sew_only): New demand type.
3007         (ge_sew): New demand type.
3008         (ratio_and_ge_sew): New demand type.
3009         (tail_mask_policy): New demand type.
3010         (tail_policy_only): New demand type.
3011         (mask_policy_only): New demand type.
3012         (ignore_policy): New demand type.
3013         (avl): New demand type.
3014         (non_zero_avl): New demand type.
3015         (ignore_avl): New demand type.
3016         * config/riscv/t-riscv: Removed riscv-vsetvl.h
3017         * config/riscv/riscv-vsetvl.h: Removed.
3019 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
3021         * tree-eh.cc (make_eh_edges): Return the new edge.
3022         * tree-eh.h (make_eh_edges): Likewise.
3024 2023-10-19  Marek Polacek  <polacek@redhat.com>
3026         * doc/contrib.texi: Add entry for Patrick Palka.
3028 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3030         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Make function
3031         compatible with mask parameters in clone.
3032         * tree-vect-stmts.cc (vect_build_all_ones_mask): Allow vector boolean
3033         typed masks.
3034         (vectorizable_simd_clone_call): Enable the use of masked clones in
3035         fully masked loops.
3037 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3039         PR tree-optimization/110485
3040         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Disable partial
3041         vectors usage if a notinbranch simdclone has been selected.
3043 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3045         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Special case
3046         simd clone calls and only use types that are mapped to vectors.
3047         (simd_clone_call_p): New helper function.
3049 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3051         * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept
3052         poly NIT and ALT_BOUND.
3054 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3056         * tree-parloops.cc (create_loop_fn): Copy specific target and
3057         optimization options to clone.
3059 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3061         * omp-simd-clone.cc (simd_clone_subparts): Remove.
3062         (simd_clone_init_simd_arrays): Replace simd_clone_supbarts with
3063         TYPE_VECTOR_SUBPARTS.
3064         (ipa_simd_modify_function_body): Likewise.
3065         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Likewise.
3066         (simd_clone_subparts): Remove.
3068 2023-10-19  Jason Merrill  <jason@redhat.com>
3070         * ABOUT-GCC-NLS: Add usage guidance.
3072 2023-10-19  Jason Merrill  <jason@redhat.com>
3074         * diagnostic-core.h (permerror): Rename new overloads...
3075         (permerror_opt): To this.
3076         * diagnostic.cc: Likewise.
3078 2023-10-19  Tamar Christina  <tamar.christina@arm.com>
3080         PR tree-optimization/111860
3081         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
3082         Remove PHI nodes that dominate loop.
3084 2023-10-19  Richard Biener  <rguenther@suse.de>
3086         PR tree-optimization/111131
3087         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Make
3088         sure to update all gather/scatter stmt DRs, not only those
3089         that eventually got VMAT_GATHER_SCATTER set.
3090         * tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add.
3091         (vect_get_and_check_slp_defs): Handle gathers/scatters,
3092         adding the offset as SLP operand and comparing base and scale.
3093         (vect_build_slp_tree_1): Handle gathers.
3094         (vect_build_slp_tree_2): Likewise.
3096 2023-10-19  Richard Biener  <rguenther@suse.de>
3098         * tree-vect-stmts.cc (vect_build_gather_load_calls): Rename
3099         to ...
3100         (vect_build_one_gather_load_call): ... this.  Refactor,
3101         inline widening/narrowing support ...
3102         (vectorizable_load): ... here, do gather vectorization
3103         with builtin decls along other gather vectorization.
3105 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
3107         * config/aarch64/aarch64.md (load_pair_dw_tftf): Rename to ...
3108         (load_pair_dw_<TX:mode><TX2:mode>): ... this.
3109         (store_pair_dw_tftf): Rename to ...
3110         (store_pair_dw_<TX:mode><TX2:mode>): ... this.
3111         * config/aarch64/iterators.md (TX2): New.
3113 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
3115         * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add new
3116         parameter to give final insn position, infer use of mem if it isn't
3117         specified explicitly.
3118         (function_info::change_insns): Pass down final insn position to
3119         finalize_new_accesses.
3120         * rtl-ssa/functions.h: Add parameter to finalize_new_accesses.
3122 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
3124         * rtl-ssa/accesses.cc (function_info::reparent_use): New.
3125         * rtl-ssa/functions.h (function_info): Declare new member
3126         function reparent_use.
3128 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
3130         * rtl-ssa/access-utils.h (drop_memory_access): New.
3132 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
3134         * rtl-ssa/insns.cc (function_info::add_insn_after): Ensure we
3135         update the prev pointer on the following nondebug insn in the
3136         case that !insn->is_debug_insn () && next->is_debug_insn ().
3138 2023-10-19  Haochen Jiang  <haochen.jiang@intel.com>
3140         * config/i386/i386.h: Correct the ISA enabled for Arrow Lake.
3141         Also make Clearwater Forest depends on Sierra Forest.
3142         * config/i386/i386-options.cc: Revise the order of the macro
3143         definition to avoid confusion.
3144         * doc/extend.texi: Revise documentation.
3145         * doc/invoke.texi: Correct documentation.
3147 2023-10-19  Andrew Stubbs  <ams@codesourcery.com>
3149         * config.gcc (amdgcn): Switch default to --with-arch=gfx900.
3150         Implement support for --with-multilib-list.
3151         * config/gcn/t-gcn-hsa: Likewise.
3152         * doc/install.texi: Likewise.
3153         * doc/invoke.texi: Mark Fiji deprecated.
3155 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
3157         * config/loongarch/loongarch.cc (loongarch_vector_costs): Inherit from
3158         vector_costs.  Add a constructor.
3159         (loongarch_vector_costs::add_stmt_cost): Use adjust_cost_for_freq to
3160         adjust the cost for inner loops.
3161         (loongarch_vector_costs::count_operations): New function.
3162         (loongarch_vector_costs::determine_suggested_unroll_factor): Ditto.
3163         (loongarch_vector_costs::finish_cost): Ditto.
3164         (loongarch_builtin_vectorization_cost): Adjust.
3165         * config/loongarch/loongarch.opt (loongarch-vect-unroll-limit): New parameter.
3166         (loongarcg-vect-issue-info): Ditto.
3167         (mmemvec-cost): Delete.
3168         * config/loongarch/genopts/loongarch.opt.in
3169         (loongarch-vect-unroll-limit): Ditto.
3170         (loongarcg-vect-issue-info): Ditto.
3171         (mmemvec-cost): Delete.
3172         * doc/invoke.texi (loongarcg-vect-unroll-limit): Document new option.
3174 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
3176         * config/loongarch/lasx.md
3177         (vec_widen_<su>mult_even_v8si): New patterns.
3178         (vec_widen_<su>add_hi_<mode>): Ditto.
3179         (vec_widen_<su>add_lo_<mode>): Ditto.
3180         (vec_widen_<su>sub_hi_<mode>): Ditto.
3181         (vec_widen_<su>sub_lo_<mode>): Ditto.
3182         (vec_widen_<su>mult_hi_<mode>): Ditto.
3183         (vec_widen_<su>mult_lo_<mode>): Ditto.
3184         * config/loongarch/loongarch.md (u_bool): New iterator.
3185         * config/loongarch/loongarch-protos.h
3186         (loongarch_expand_vec_widen_hilo): New prototype.
3187         * config/loongarch/loongarch.cc
3188         (loongarch_expand_vec_interleave): New function.
3189         (loongarch_expand_vec_widen_hilo): New function.
3191 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
3193         * config/loongarch/lasx.md
3194         (avg<mode>3_ceil): New patterns.
3195         (uavg<mode>3_ceil): Ditto.
3196         (avg<mode>3_floor): Ditto.
3197         (uavg<mode>3_floor): Ditto.
3198         (usadv32qi): Ditto.
3199         (ssadv32qi): Ditto.
3200         * config/loongarch/lsx.md
3201         (avg<mode>3_ceil): New patterns.
3202         (uavg<mode>3_ceil): Ditto.
3203         (avg<mode>3_floor): Ditto.
3204         (uavg<mode>3_floor): Ditto.
3205         (usadv16qi): Ditto.
3206         (ssadv16qi): Ditto.
3208 2023-10-18  Andrew Pinski  <pinskia@gmail.com>
3210         PR middle-end/111863
3211         * expr.cc (do_store_flag): Don't over write arg0
3212         when stripping off `& POW2`.
3214 2023-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3216         PR tree-optimization/111648
3217         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): If a1
3218         chooses base element from arg, ensure that it's a natural stepped
3219         sequence.
3220         (build_vec_cst_rand): New param natural_stepped and use it to
3221         construct a naturally stepped sequence.
3222         (test_nunits_min_2): Add new unit tests Case 6 and Case 7.
3224 2023-10-18  Dimitar Dimitrov  <dimitar@dinux.eu>
3226         * config/pru/pru.cc (pru_insn_cost): New function.
3227         (TARGET_INSN_COST): Define for PRU.
3229 2023-10-18  Andrew Carlotti  <andrew.carlotti@arm.com>
3231         * config/aarch64/aarch64.cc (aarch64_test_fractional_cost):
3232         Test <= instead of testing < twice.
3234 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
3236         PR bootstrap/111852
3237         * cse.cc (cse_insn): Add workaround for GCC 4.8-4.9, instead of
3238         using rtx_def type for memory_extend_buf, use unsigned char
3239         arrayy with size of rtx_def and its alignment.
3241 2023-10-18  Jason Merrill  <jason@redhat.com>
3243         * doc/invoke.texi: Move -fpermissive to Warning Options.
3244         * diagnostic.cc (update_effective_level_from_pragmas): Remove
3245         redundant system header check.
3246         (diagnostic_report_diagnostic): Move down syshdr/-w check.
3247         (diagnostic_impl): Handle DK_PERMERROR with an option number.
3248         (permerror): Add new overloads.
3249         * diagnostic-core.h (permerror): Declare them.
3251 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
3253         * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute
3254         to avoid that auxillary statement list reaches LTO.
3256 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
3258         PR tree-optimization/111845
3259         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember temporary
3260         statements for the 4 operand addition or subtraction of 3 operands
3261         from 1 operand cases and remove them when successful.  Look for
3262         nested additions even from rhs[2], not just rhs[1].
3264 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
3266         PR target/111093
3267         * config/nvptx/nvptx.cc (nvptx_option_override): Issue fatal error
3268         instead of an assert ICE when no -march= has been specified.
3270 2023-10-18  Iain Sandoe  <iain@sandoe.co.uk>
3272         * config.in: Regenerate.
3273         * config/darwin.cc (darwin_file_start): Add assembler directives
3274         for the target OS version, where these are supported by the
3275         assembler.
3276         (darwin_override_options): Check for building >= macOS 10.14.
3277         * configure: Regenerate.
3278         * configure.ac: Check for assembler support of .build_version
3279         directives.
3281 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3283         PR tree-optimization/109154
3284         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
3285         (typedef struct ifcvt_arg_entry): New.
3286         (cmp_arg_entry): New.
3287         (gen_phi_arg_condition, gen_phi_nest_statement,
3288         predicate_scalar_phi): Use them.
3290 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3292         PR tree-optimization/109154
3293         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
3294         Rewrite to new syntax.
3295         (*aarch64_simd_mov<VQMOV:mode): Rewrite to new syntax and merge in
3296         splits.
3298 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3300         PR tree-optimization/109154
3301         * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN.
3303 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3305         PR tree-optimization/109154
3306         * match.pd: Add new cond_op rule.
3308 2023-10-18  Xi Ruoyao  <xry111@xry111.site>
3310         * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for
3311         zeroing a fcc.
3313 2023-10-18  Richard Biener  <rguenther@suse.de>
3315         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
3316         Relax check to again allow passing integer mode masks
3317         as traditional vectors.
3319 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3321         * tree-loop-distribution.cc (copy_loop_before): Request no LCSSA.
3322         * tree-vect-loop-manip.cc (adjust_phi_and_debug_stmts): Add additional
3323         asserts.
3324         (slpeel_tree_duplicate_loop_to_edge_cfg): Keep LCSSA during peeling.
3325         (find_guard_arg): Look value up through explicit edge and original defs.
3326         (vect_do_peeling): Use it.
3327         (slpeel_update_phi_nodes_for_guard2): Take explicit exit edge.
3328         (slpeel_update_phi_nodes_for_lcssa, slpeel_update_phi_nodes_for_loops):
3329         Remove.
3330         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize phi.
3331         * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Add
3332         optional param to turn off LCSSA mode.
3334 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3336         * tree-if-conv.cc (tree_if_conversion): Record exits in aux.
3337         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use
3338         it.
3339         * tree-vect-loop.cc (vect_get_loop_niters): Determine main exit.
3340         (vec_init_loop_exit_info): Extend analysis when multiple exits.
3341         (vect_analyze_loop_form): Record conds and determine main cond.
3342         (vect_create_loop_vinfo): Extend bookkeeping of conds.
3343         (vect_analyze_loop): Release conds.
3344         * tree-vectorizer.h (LOOP_VINFO_LOOP_CONDS,
3345         LOOP_VINFO_LOOP_IV_COND):  New.
3346         (struct vect_loop_form_info): Add conds, alt_loop_conds;
3347         (struct loop_vec_info): Add conds, loop_iv_cond.
3349 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3351         * tree-loop-distribution.cc (copy_loop_before): Pass exit explicitly.
3352         (loop_distribution::distribute_loop): Bail out of not single exit.
3353         * tree-scalar-evolution.cc (get_loop_exit_condition): New.
3354         * tree-scalar-evolution.h (get_loop_exit_condition): New.
3355         * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): Pass exit
3356         explicitly.
3357         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors,
3358         vect_set_loop_condition_partial_vectors_avx512,
3359         vect_set_loop_condition_normal, vect_set_loop_condition): Explicitly
3360         take exit.
3361         (slpeel_tree_duplicate_loop_to_edge_cfg): Explicitly take exit and
3362         return new peeled corresponding peeled exit.
3363         (slpeel_can_duplicate_loop_p): Explicitly take exit.
3364         (find_loop_location): Handle not knowing an explicit exit.
3365         (vect_update_ivs_after_vectorizer, vect_gen_vector_loop_niters_mult_vf,
3366         find_guard_arg, slpeel_update_phi_nodes_for_loops,
3367         slpeel_update_phi_nodes_for_guard2): Use new exits.
3368         (vect_do_peeling): Update bookkeeping to keep track of exits.
3369         * tree-vect-loop.cc (vect_get_loop_niters): Explicitly take exit to
3370         analyze.
3371         (vec_init_loop_exit_info): New.
3372         (_loop_vec_info::_loop_vec_info): Initialize vec_loop_iv,
3373         vec_epilogue_loop_iv, scalar_loop_iv.
3374         (vect_analyze_loop_form): Initialize exits.
3375         (vect_create_loop_vinfo): Set main exit.
3376         (vect_create_epilog_for_reduction, vectorizable_live_operation,
3377         vect_transform_loop): Use it.
3378         (scale_profile_for_vect_loop): Explicitly take exit to scale.
3379         * tree-vectorizer.cc (set_uid_loop_bbs): Initialize loop exit.
3380         * tree-vectorizer.h (LOOP_VINFO_IV_EXIT, LOOP_VINFO_EPILOGUE_IV_EXIT,
3381         LOOP_VINFO_SCALAR_IV_EXIT): New.
3382         (struct loop_vec_info): Add vec_loop_iv, vec_epilogue_loop_iv,
3383         scalar_loop_iv.
3384         (vect_set_loop_condition, slpeel_can_duplicate_loop_p,
3385         slpeel_tree_duplicate_loop_to_edge_cfg): Take explicit exits.
3386         (vec_init_loop_exit_info): New.
3387         (struct vect_loop_form_info): Add loop_exit.
3389 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
3391         * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body
3392         to ...
3393         (vectorizable_comparison_1): ...This.
3395 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3397         * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function.
3398         (expand_vec_perm_const_1): Add consecutive pattern recognition.
3400 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
3402         * common/config/i386/cpuinfo.h (get_intel_cpu): Add Panther
3403         Lake.
3404         * common/config/i386/i386-common.cc (processor_name):
3405         Ditto.
3406         (processor_alias_table): Ditto.
3407         * common/config/i386/i386-cpuinfo.h (enum processor_types):
3408         Add INTEL_PANTHERLAKE.
3409         * config.gcc: Add -march=pantherlake.
3410         * config/i386/driver-i386.cc (host_detect_local_cpu): Refactor
3411         the if clause. Handle pantherlake.
3412         * config/i386/i386-c.cc (ix86_target_macros_internal):
3413         Handle pantherlake.
3414         * config/i386/i386-options.cc (processor_cost_table): Ditto.
3415         (m_PANTHERLAKE): New.
3416         (m_CORE_HYBRID): Add pantherlake.
3417         * config/i386/i386.h (enum processor_type): Ditto.
3418         * doc/extend.texi: Ditto.
3419         * doc/invoke.texi: Ditto.
3421 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
3423         * config/i386/i386-options.cc (m_CORE_HYBRID): New.
3424         * config/i386/x86-tune.def: Replace hybrid client tune to
3425         m_CORE_HYBRID.
3427 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
3429         * common/config/i386/cpuinfo.h
3430         (get_intel_cpu): Handle Clearwater Forest.
3431         * common/config/i386/i386-common.cc (processor_name):
3432         Add Clearwater Forest.
3433         (processor_alias_table): Ditto.
3434         * common/config/i386/i386-cpuinfo.h (enum processor_types):
3435         Add INTEL_CLEARWATERFOREST.
3436         * config.gcc: Add -march=clearwaterforest.
3437         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
3438         clearwaterforest.
3439         * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
3440         * config/i386/i386-options.cc (processor_cost_table): Ditto.
3441         (m_CLEARWATERFOREST): New.
3442         (m_CORE_ATOM): Add clearwaterforest.
3443         * config/i386/i386.h (enum processor_type): Ditto.
3444         * doc/extend.texi: Ditto.
3445         * doc/invoke.texi: Ditto.
3447 2023-10-18  liuhongt  <hongtao.liu@intel.com>
3449         * config/i386/mmx.md (fma<mode>4): New expander.
3450         (fms<mode>4): Ditto.
3451         (fnma<mode>4): Ditto.
3452         (fnms<mode>4): Ditto.
3453         (vec_fmaddsubv4hf4): Ditto.
3454         (vec_fmsubaddv4hf4): Ditto.
3456 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3458         PR target/111832
3459         * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function.
3461 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
3463         * config/aarch64/aarch64.cc (aarch64_layout_frame): Don't make
3464         the position of the LR save slot dependent on stack clash
3465         protection unless shadow call stacks are enabled.
3467 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
3469         * config/aarch64/aarch64.h (aarch64_frame): Add vectors that
3470         store the list saved GPRs, FPRs and predicate registers.
3471         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize
3472         the lists of saved registers.  Use them to choose push candidates.
3473         Invalidate pop candidates if we're not going to do a pop.
3474         (aarch64_next_callee_save): Delete.
3475         (aarch64_save_callee_saves): Take a list of registers,
3476         rather than a range.  Make !skip_wb select only write-back
3477         candidates.
3478         (aarch64_expand_prologue): Update calls accordingly.
3479         (aarch64_restore_callee_saves): Take a list of registers,
3480         rather than a range.  Always skip pop candidates.  Also skip
3481         LR if shadow call stacks are enabled.
3482         (aarch64_expand_epilogue): Update calls accordingly.
3484 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
3486         * cfgbuild.h (find_sub_basic_blocks): Declare.
3487         * cfgbuild.cc (update_profile_for_new_sub_basic_block): New function,
3488         split out from...
3489         (find_many_sub_basic_blocks): ...here.
3490         (find_sub_basic_blocks): New function.
3491         * function.cc (thread_prologue_and_epilogue_insns): Handle
3492         epilogues that contain jumps.
3494 2023-10-17  Andrew Pinski  <apinski@marvell.com>
3496         PR tree-optimization/110817
3497         * tree-ssanames.cc (ssa_name_has_boolean_range): Remove the
3498         check for boolean type as they don't have "[0,1]" range.
3500 2023-10-17  Andrew Pinski  <pinskia@gmail.com>
3502         PR tree-optimization/111432
3503         * match.pd (`a & (x | CST)`): New pattern.
3505 2023-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3507         * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for
3508         new basic block.
3510 2023-10-17  Richard Biener  <rguenther@suse.de>
3512         PR tree-optimization/111846
3513         * tree-vectorizer.h (_slp_tree::simd_clone_info): Add.
3514         (SLP_TREE_SIMD_CLONE_INFO): New.
3515         * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize
3516         SLP_TREE_SIMD_CLONE_INFO.
3517         (_slp_tree::~_slp_tree): Release it.
3518         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use
3519         SLP_TREE_SIMD_CLONE_INFO or STMT_VINFO_SIMD_CLONE_INFO
3520         dependent on if we're doing SLP.
3522 2023-10-17  Jakub Jelinek  <jakub@redhat.com>
3524         * wide-int-print.h (print_dec_buf_size): For length, divide number
3525         of bits by 3 and add 3 instead of division by 4 and adding 4.
3526         * wide-int-print.cc (print_decs): Remove superfluous ()s.  Don't call
3527         print_hex, instead call print_decu on either negated value after
3528         printing - or on wi itself.
3529         (print_decu): Don't call print_hex, instead print even large numbers
3530         decimally.
3531         (pp_wide_int_large): Assume len from print_dec_buf_size is big enough
3532         even if it returns false.
3533         * pretty-print.h (pp_wide_int): Use print_dec_buf_size to check if
3534         pp_wide_int_large should be used.
3535         * tree-pretty-print.cc (dump_generic_node): Use print_hex_buf_size
3536         to compute needed buffer size.
3538 2023-10-17  Richard Biener  <rguenther@suse.de>
3540         PR middle-end/111818
3541         * tree-ssa.cc (maybe_optimize_var): When clearing
3542         DECL_NOT_GIMPLE_REG_P always rewrite into SSA.
3544 2023-10-17  Richard Biener  <rguenther@suse.de>
3546         PR tree-optimization/111807
3547         * tree-sra.cc (build_ref_for_model): Only call
3548         build_reconstructed_reference when the offsets are the same.
3550 2023-10-17  Vineet Gupta  <vineetg@rivosinc.com>
3552         PR target/111466
3553         * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P.
3555 2023-10-17  Chenghui Pan  <panchenghui@loongson.cn>
3557         * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init):
3558         fix impl related to vec_initv32qiv16qi template to avoid ICE.
3560 2023-10-17  Lulu Cheng  <chenglulu@loongson.cn>
3561             Chenghua Xu  <xuchenghua@loongson.cn>
3563         * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP):
3564         Delete.
3566 2023-10-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3568         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue.
3569         (get_store_value): New function.
3571 2023-10-16  Jeff Law  <jlaw@ventanamicro.com>
3573         * explow.cc (probe_stack_range): Handle case when expand_binop
3574         does not construct its result in the expected location.
3576 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
3578         * diagnostic.cc (diagnostic_initialize): When LANG=C, update
3579         default for -fdiagnostics-text-art-charset from emoji to ascii.
3580         * doc/invoke.texi (fdiagnostics-text-art-charset): Document the above.
3582 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
3584         * diagnostic.cc (diagnostic_initialize): Ensure
3585         context->extra_output_kind is initialized.
3587 2023-10-16  Uros Bizjak  <ubizjak@gmail.com>
3589         * config/i386/i386.cc (ix86_can_inline_p):
3590         Handle CM_LARGE and CM_LARGE_PIC.
3591         (x86_elf_aligned_decl_common): Ditto.
3592         (x86_output_aligned_bss): Ditto.
3593         * config/i386/i386.opt: Update doc for -mlarge-data-threshold=.
3594         * doc/invoke.texi: Update doc for -mlarge-data-threshold=.
3596 2023-10-16  Christoph Müllner  <christoph.muellner@vrull.eu>
3598         * config/riscv/riscv-protos.h (emit_block_move): Remove redundant
3599         prototype.  Improve comment.
3600         * config/riscv/riscv.cc (riscv_block_move_straight): Move from riscv.cc
3601         into riscv-string.cc.
3602         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
3603         (riscv_expand_block_move): Likewise.
3604         * config/riscv/riscv-string.cc (riscv_block_move_straight): Add moved
3605         function.
3606         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
3607         (riscv_expand_block_move): Likewise.
3609 2023-10-16  Manolis Tsamis  <manolis.tsamis@vrull.eu>
3611         * Makefile.in: Add fold-mem-offsets.o.
3612         * passes.def: Schedule a new pass.
3613         * tree-pass.h (make_pass_fold_mem_offsets): Declare.
3614         * common.opt: New options.
3615         * doc/invoke.texi: Document new option.
3616         * fold-mem-offsets.cc: New file.
3618 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
3620         PR tree-optimization/101541
3621         * match.pd (A CMP 0 ? A : -A): Improve
3622         using bitwise_equal_p.
3624 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
3626         PR tree-optimization/31531
3627         * match.pd (~X op ~Y): Allow for an optional nop convert.
3628         (~X op C): Likewise.
3630 2023-10-16  Roger Sayle  <roger@nextmovesoftware.com>
3632         * config/arc/arc.md (*ashlsi3_1): New pre-reload splitter to
3633         use bset dst,0,src to implement 1<<x on !TARGET_BARREL_SHIFTER.
3635 2023-10-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3637         * config/s390/vector.md (popcountv8hi2_vx): Sign extend each
3638         unsigned vector element.
3640 2023-10-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3642         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes.
3644 2023-10-16  Jiufu Guo  <guojiufu@linux.ibm.com>
3646         * fold-const.cc (expr_not_equal_to): Replace get_global_range_query
3647         by get_range_query.
3648         * gimple-fold.cc (size_must_be_zero_p): Likewise.
3649         * gimple-range-fold.cc (fur_source::fur_source): Likewise.
3650         * gimple-ssa-warn-access.cc (check_nul_terminated_array): Likewise.
3651         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
3653 2023-10-16  liuhongt  <hongtao.liu@intel.com>
3655         * config/i386/mmx.md (V2FI_32): New mode iterator
3656         (movd_v2hf_to_sse): Rename to ..
3657         (movd_<mode>_to_sse): .. this.
3658         (movd_v2hf_to_sse_reg): Rename to ..
3659         (movd_<mode>_to_sse_reg): .. this.
3660         (fix<fixunssuffix>_trunc<mode><mmxintvecmodelower>2): New
3661         expander.
3662         (fix<fixunssuffix>_truncv2hfv2si2): Ditto.
3663         (float<floatunssuffix><mmxintvecmodelower><mode>2): Ditto.
3664         (float<floatunssuffix>v2siv2hf2): Ditto.
3665         (extendv2hfv2sf2): Ditto.
3666         (truncv2sfv2hf2): Ditto.
3667         * config/i386/sse.md (*vec_concatv8hf_movss): Rename to ..
3668         (*vec_concat<mode>_movss): .. this.
3670 2023-10-16  liuhongt  <hongtao.liu@intel.com>
3672         * config/i386/i386-expand.cc (ix86_sse_copysign_to_positive):
3673         Handle HFmode.
3674         (ix86_expand_round_sse4): Ditto.
3675         * config/i386/i386.md (roundhf2): New expander.
3676         (lroundhf<mode>2): Ditto.
3677         (lrinthf<mode>2): Ditto.
3678         (l<rounding_insn>hf<mode>2): Ditto.
3679         * config/i386/mmx.md (sqrt<mode>2): Ditto.
3680         (btrunc<mode>2): Ditto.
3681         (nearbyint<mode>2): Ditto.
3682         (rint<mode>2): Ditto.
3683         (lrint<mode><mmxintvecmodelower>2): Ditto.
3684         (floor<mode>2): Ditto.
3685         (lfloor<mode><mmxintvecmodelower>2): Ditto.
3686         (ceil<mode>2): Ditto.
3687         (lceil<mode><mmxintvecmodelower>2): Ditto.
3688         (round<mode>2): Ditto.
3689         (lround<mode><mmxintvecmodelower>2): Ditto.
3690         * config/i386/sse.md (lrint<mode><sseintvecmodelower>2): Ditto.
3691         (lfloor<mode><sseintvecmodelower>2): Ditto.
3692         (lceil<mode><sseintvecmodelower>2): Ditto.
3693         (lround<mode><sseintvecmodelower>2): Ditto.
3694         (sse4_1_round<ssescalarmodesuffix>): Extend to V8HF.
3695         (round<mode>2): Extend to V8HF/V16HF/V32HF.
3697 2023-10-15  Tobias Burnus  <tobias@codesourcery.com>
3699         * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not
3700         @code; document more completely the supported Fortran sentinels.
3702 2023-10-15  Roger Sayle  <roger@nextmovesoftware.com>
3704         * optabs.cc (expand_subword_shift): Call simplify_expand_binop
3705         instead of expand_binop.  Optimize cases (i.e. avoid generating
3706         RTL) when CARRIES or INTO_INPUT is zero.  Use one_cmpl_optab
3707         (i.e. NOT) instead of xor_optab with ~0 to calculate ~OP1.
3709 2023-10-15  Jakub Jelinek  <jakub@redhat.com>
3711         PR tree-optimization/111800
3712         * wide-int-print.h (print_dec_buf_size, print_decs_buf_size,
3713         print_decu_buf_size, print_hex_buf_size): New inline functions.
3714         * wide-int.cc (assert_deceq): Use print_dec_buf_size.
3715         (assert_hexeq): Use print_hex_buf_size.
3716         * wide-int-print.cc (print_decs): Use print_decs_buf_size.
3717         (print_decu): Use print_decu_buf_size.
3718         (print_hex): Use print_hex_buf_size.
3719         (pp_wide_int_large): Use print_dec_buf_size.
3720         * value-range.cc (irange_bitmask::dump): Use print_hex_buf_size.
3721         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
3722         Likewise.
3723         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
3724         print_dec_buf_size.  Use TYPE_SIGN macro in print_dec call argument.
3726 2023-10-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3728         * combine.cc (simplify_compare_const): Fix handling of unsigned
3729         constants.
3731 2023-10-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3733         * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI.
3735 2023-10-14  Tobias Burnus  <tobias@codesourcery.com>
3737         * gimplify.cc (gimplify_bind_expr): Handle Fortran's
3738         'omp allocate' for stack variables.
3740 2023-10-14  Jakub Jelinek  <jakub@redhat.com>
3742         PR c/102989
3743         * tree-core.h (struct tree_base): Remove int_length.offset
3744         member, change type of int_length.unextended and int_length.extended
3745         from unsigned char to unsigned short.
3746         * tree.h (TREE_INT_CST_OFFSET_NUNITS): Remove.
3747         (wi::extended_tree <N>::get_len): Don't use TREE_INT_CST_OFFSET_NUNITS,
3748         instead compute it at runtime from TREE_INT_CST_EXT_NUNITS and
3749         TREE_INT_CST_NUNITS.
3750         * tree.cc (wide_int_to_tree_1): Don't assert
3751         TREE_INT_CST_OFFSET_NUNITS value.
3752         (make_int_cst): Don't initialize TREE_INT_CST_OFFSET_NUNITS.
3753         * wide-int.h (WIDE_INT_MAX_ELTS): Change from 255 to 1024.
3754         (WIDEST_INT_MAX_ELTS): Change from 510 to 2048, adjust comment.
3755         (trailing_wide_int_storage): Change m_len type from unsigned char *
3756         to unsigned short *.
3757         (trailing_wide_int_storage::trailing_wide_int_storage): Change second
3758         argument from unsigned char * to unsigned short *.
3759         (trailing_wide_ints): Change m_max_len type from unsigned char to
3760         unsigned short.  Change m_len element type from
3761         struct{unsigned char len;} to unsigned short.
3762         (trailing_wide_ints <N>::operator []): Remove .len from m_len
3763         accesses.
3764         * value-range-storage.h (irange_storage::lengths_address): Change
3765         return type from const unsigned char * to const unsigned short *.
3766         (irange_storage::write_lengths_address): Change return type from
3767         unsigned char * to unsigned short *.
3768         * value-range-storage.cc (irange_storage::write_lengths_address):
3769         Likewise.
3770         (irange_storage::lengths_address): Change return type from
3771         const unsigned char * to const unsigned short *.
3772         (write_wide_int): Change len argument type from unsigned char *&
3773         to unsigned short *&.
3774         (irange_storage::set_irange): Change len variable type from
3775         unsigned char * to unsigned short *.
3776         (read_wide_int): Change len argument type from unsigned char to
3777         unsigned short.  Use trailing_wide_int_storage <unsigned short>
3778         instead of trailing_wide_int_storage and
3779         trailing_wide_int <unsigned short> instead of trailing_wide_int.
3780         (irange_storage::get_irange): Change len variable type from
3781         unsigned char * to unsigned short *.
3782         (irange_storage::size): Multiply n by sizeof (unsigned short)
3783         in len_size variable initialization.
3784         (irange_storage::dump): Change len variable type from
3785         unsigned char * to unsigned short *.
3787 2023-10-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3789         * config/riscv/vector-iterators.md: Remove redundant iterators.
3791 2023-10-13  Andrew MacLeod  <amacleod@redhat.com>
3793         PR tree-optimization/111622
3794         * value-relation.cc (equiv_oracle::add_partial_equiv): Do not
3795         register a partial equivalence if an operand has no uses.
3797 2023-10-13  Richard Biener  <rguenther@suse.de>
3799         PR tree-optimization/111795
3800         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
3801         integer mode mask arguments.
3803 2023-10-13  Richard Biener  <rguenther@suse.de>
3805         * tree-vect-slp.cc (mask_call_maps): New.
3806         (vect_get_operand_map): Handle IFN_MASK_CALL.
3807         (vect_build_slp_tree_1): Likewise.
3808         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
3809         SLP.
3811 2023-10-13  Richard Biener  <rguenther@suse.de>
3813         PR tree-optimization/111779
3814         * tree-sra.cc (sra_handled_bf_read_p): New function.
3815         (build_access_from_expr_1): Handle some BIT_FIELD_REFs.
3816         (sra_modify_expr): Likewise.
3817         (make_fancy_name_1): Skip over BIT_FIELD_REF.
3819 2023-10-13  Richard Biener  <rguenther@suse.de>
3821         PR tree-optimization/111773
3822         * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do
3823         not elide noreturn calls that are reflected to the IL.
3825 2023-10-13  Kito Cheng  <kito.cheng@sifive.com>
3827         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump
3828         max_power to 64.
3829         * config/riscv/riscv.h (MAX_POLY_VARIANT): New.
3831 2023-10-13  Pan Li  <pan2.li@intel.com>
3833         * config/riscv/autovec.md (lfloor<mode><v_i_l_ll_convert>2): New
3834         pattern for lfloor/lfloorf.
3835         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
3836         (expand_vec_lfloor): New func decl for expanding lfloor.
3837         * config/riscv/riscv-v.cc (expand_vec_lfloor): New func impl
3838         for expanding lfloor.
3840 2023-10-13  Pan Li  <pan2.li@intel.com>
3842         * config/riscv/autovec.md (lceil<mode><v_i_l_ll_convert>2): New
3843         pattern] for lceil/lceilf.
3844         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
3845         (expand_vec_lceil): New func decl for expanding lceil.
3846         * config/riscv/riscv-v.cc (expand_vec_lceil): New func impl
3847         for expanding lceil.
3849 2023-10-12  Michael Meissner  <meissner@linux.ibm.com>
3851         PR target/111778
3852         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): Protect
3853         code from shifts that are undefined.
3854         (can_be_built_by_li_lis_and_rldicr): Likewise.
3855         (can_be_built_by_li_and_rldic): Protect code from shifts that
3856         undefined.  Also replace uses of 1ULL with HOST_WIDE_INT_1U.
3858 2023-10-12  Alex Coplan  <alex.coplan@arm.com>
3860         * reg-notes.def (NOALIAS): Correct comment.
3862 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
3864         PR bootstrap/111787
3865         * tree.h (wi::int_traits <unextended_tree>::needs_write_val_arg): New
3866         static data member.
3867         (int_traits <extended_tree <N>>::needs_write_val_arg): Likewise.
3868         (wi::ints_for): Provide separate partial specializations for
3869         generic_wide_int <extended_tree <N>> and INL_CONST_PRECISION or that
3870         and CONST_PRECISION, rather than using
3871         int_traits <extended_tree <N> >::precision_type as the second template
3872         argument.
3873         * rtl.h (wi::int_traits <rtx_mode_t>::needs_write_val_arg): New
3874         static data member.
3875         * double-int.h (wi::int_traits <double_int>::needs_write_val_arg):
3876         Likewise.
3878 2023-10-12  Mary Bennett  <mary.bennett@embecosm.com>
3880         PR middle-end/111777
3881         * doc/extend.texi: Change subsubsection to subsection for
3882         CORE-V built-ins.
3884 2023-10-12  Tamar Christina  <tamar.christina@arm.com>
3886         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef.
3888 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
3890         * wide-int.h (widest_int_storage <N>::write_val): If l is small
3891         and there is space in u.val array, store a canary value at the
3892         end when checking.
3893         (widest_int_storage <N>::set_len): Check the canary hasn't been
3894         overwritten.
3896 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
3898         PR c/102989
3899         * wide-int.h: Adjust file comment.
3900         (WIDE_INT_MAX_INL_ELTS): Define to former value of WIDE_INT_MAX_ELTS.
3901         (WIDE_INT_MAX_INL_PRECISION): Define.
3902         (WIDE_INT_MAX_ELTS): Change to 255.  Assert that WIDE_INT_MAX_INL_ELTS
3903         is smaller than WIDE_INT_MAX_ELTS.
3904         (RWIDE_INT_MAX_ELTS, RWIDE_INT_MAX_PRECISION, WIDEST_INT_MAX_ELTS,
3905         WIDEST_INT_MAX_PRECISION): Define.
3906         (WI_BINARY_RESULT_VAR, WI_UNARY_RESULT_VAR): Change write_val callers
3907         to pass 0 as a new argument.
3908         (class widest_int_storage): Likewise.
3909         (widest_int, widest2_int): Change typedefs to use widest_int_storage
3910         rather than fixed_wide_int_storage.
3911         (enum wi::precision_type): Add INL_CONST_PRECISION enumerator.
3912         (struct binary_traits): Add partial specializations for
3913         INL_CONST_PRECISION.
3914         (generic_wide_int): Add needs_write_val_arg static data member.
3915         (int_traits): Likewise.
3916         (wide_int_storage): Replace val non-static data member with a union
3917         u of it and HOST_WIDE_INT *valp.  Declare copy constructor, copy
3918         assignment operator and destructor.  Add unsigned int argument to
3919         write_val.
3920         (wide_int_storage::wide_int_storage): Initialize precision to 0
3921         in the default ctor.  Remove unnecessary {}s around STATIC_ASSERTs.
3922         Assert in non-default ctor T's precision_type is not
3923         INL_CONST_PRECISION and allocate u.valp for large precision.  Add
3924         copy constructor.
3925         (wide_int_storage::~wide_int_storage): New.
3926         (wide_int_storage::operator=): Add copy assignment operator.  In
3927         assignment operator remove unnecessary {}s around STATIC_ASSERTs,
3928         assert ctor T's precision_type is not INL_CONST_PRECISION and
3929         if precision changes, deallocate and/or allocate u.valp.
3930         (wide_int_storage::get_val): Return u.valp rather than u.val for
3931         large precision.
3932         (wide_int_storage::write_val): Likewise.  Add an unused unsigned int
3933         argument.
3934         (wide_int_storage::set_len): Use write_val instead of writing val
3935         directly.
3936         (wide_int_storage::from, wide_int_storage::from_array): Adjust
3937         write_val callers.
3938         (wide_int_storage::create): Allocate u.valp for large precisions.
3939         (wi::int_traits <wide_int_storage>::get_binary_precision): New.
3940         (fixed_wide_int_storage::fixed_wide_int_storage): Make default
3941         ctor defaulted.
3942         (fixed_wide_int_storage::write_val): Add unused unsigned int argument.
3943         (fixed_wide_int_storage::from, fixed_wide_int_storage::from_array):
3944         Adjust write_val callers.
3945         (wi::int_traits <fixed_wide_int_storage>::get_binary_precision): New.
3946         (WIDEST_INT): Define.
3947         (widest_int_storage): New template class.
3948         (wi::int_traits <widest_int_storage>): New.
3949         (trailing_wide_int_storage::write_val): Add unused unsigned int
3950         argument.
3951         (wi::get_binary_precision): Use
3952         wi::int_traits <WI_BINARY_RESULT (T1, T2)>::get_binary_precision
3953         rather than get_precision on get_binary_result.
3954         (wi::copy): Adjust write_val callers.  Don't call set_len if
3955         needs_write_val_arg.
3956         (wi::bit_not): If result.needs_write_val_arg, call write_val
3957         again with upper bound estimate of len.
3958         (wi::sext, wi::zext, wi::set_bit): Likewise.
3959         (wi::bit_and, wi::bit_and_not, wi::bit_or, wi::bit_or_not,
3960         wi::bit_xor, wi::add, wi::sub, wi::mul, wi::mul_high, wi::div_trunc,
3961         wi::div_floor, wi::div_ceil, wi::div_round, wi::divmod_trunc,
3962         wi::mod_trunc, wi::mod_floor, wi::mod_ceil, wi::mod_round,
3963         wi::lshift, wi::lrshift, wi::arshift): Likewise.
3964         (wi::bswap, wi::bitreverse): Assert result.needs_write_val_arg
3965         is false.
3966         (gt_ggc_mx, gt_pch_nx): Remove generic template for all
3967         generic_wide_int, instead add functions and templates for each
3968         storage of generic_wide_int.  Make functions for
3969         generic_wide_int <wide_int_storage> and templates for
3970         generic_wide_int <widest_int_storage <N>> deleted.
3971         (wi::mask, wi::shifted_mask): Adjust write_val calls.
3972         * wide-int.cc (zeros): Decrease array size to 1.
3973         (BLOCKS_NEEDED): Use CEIL.
3974         (canonize): Use HOST_WIDE_INT_M1.
3975         (wi::from_buffer): Pass 0 to write_val.
3976         (wi::to_mpz): Use CEIL.
3977         (wi::from_mpz): Likewise.  Pass 0 to write_val.  Use
3978         WIDE_INT_MAX_INL_ELTS instead of WIDE_INT_MAX_ELTS.
3979         (wi::mul_internal): Use WIDE_INT_MAX_INL_PRECISION instead of
3980         MAX_BITSIZE_MODE_ANY_INT in automatic array sizes, for prec
3981         above WIDE_INT_MAX_INL_PRECISION estimate precision from
3982         lengths of operands.  Use XALLOCAVEC allocated buffers for
3983         prec above WIDE_INT_MAX_INL_PRECISION.
3984         (wi::divmod_internal): Likewise.
3985         (wi::lshift_large): For len > WIDE_INT_MAX_INL_ELTS estimate
3986         it from xlen and skip.
3987         (rshift_large_common): Remove xprecision argument, add len
3988         argument with len computed in caller.  Don't return anything.
3989         (wi::lrshift_large, wi::arshift_large): Compute len here
3990         and pass it to rshift_large_common, for lengths above
3991         WIDE_INT_MAX_INL_ELTS using estimations from xlen if possible.
3992         (assert_deceq, assert_hexeq): For lengths above
3993         WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
3994         (test_printing): Use WIDE_INT_MAX_INL_PRECISION instead of
3995         WIDE_INT_MAX_PRECISION.
3996         * wide-int-print.h (WIDE_INT_PRINT_BUFFER_SIZE): Use
3997         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION.
3998         * wide-int-print.cc (print_decs, print_decu, print_hex): For
3999         lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
4000         * tree.h (wi::int_traits<extended_tree <N>>): Change precision_type
4001         to INL_CONST_PRECISION for N == ADDR_MAX_PRECISION.
4002         (widest_extended_tree): Use WIDEST_INT_MAX_PRECISION instead of
4003         WIDE_INT_MAX_PRECISION.
4004         (wi::ints_for): Use int_traits <extended_tree <N> >::precision_type
4005         instead of hard coded CONST_PRECISION.
4006         (widest2_int_cst): Use WIDEST_INT_MAX_PRECISION instead of
4007         WIDE_INT_MAX_PRECISION.
4008         (wi::extended_tree <N>::get_len): Use WIDEST_INT_MAX_PRECISION rather
4009         than WIDE_INT_MAX_PRECISION.
4010         (wi::ints_for::zero): Use
4011         wi::int_traits <wi::extended_tree <N> >::precision_type instead of
4012         wi::CONST_PRECISION.
4013         * tree.cc (build_replicated_int_cst): Formatting fix.  Use
4014         WIDE_INT_MAX_INL_ELTS rather than WIDE_INT_MAX_ELTS.
4015         * print-tree.cc (print_node): Don't print TREE_UNAVAILABLE on
4016         INTEGER_CSTs, TREE_VECs or SSA_NAMEs.
4017         * double-int.h (wi::int_traits <double_int>::precision_type): Change
4018         to INL_CONST_PRECISION from CONST_PRECISION.
4019         * poly-int.h (struct poly_coeff_traits): Add partial specialization
4020         for wi::INL_CONST_PRECISION.
4021         * cfgloop.h (bound_wide_int): New typedef.
4022         (struct nb_iter_bound): Change bound type from widest_int to
4023         bound_wide_int.
4024         (struct loop): Change nb_iterations_upper_bound,
4025         nb_iterations_likely_upper_bound and nb_iterations_estimate type from
4026         widest_int to bound_wide_int.
4027         * cfgloop.cc (record_niter_bound): Return early if wi::min_precision
4028         of i_bound is too large for bound_wide_int.  Adjustments for the
4029         widest_int to bound_wide_int type change in non-static data members.
4030         (get_estimated_loop_iterations, get_max_loop_iterations,
4031         get_likely_max_loop_iterations): Adjustments for the widest_int to
4032         bound_wide_int type change in non-static data members.
4033         * tree-vect-loop.cc (vect_transform_loop): Likewise.
4034         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
4035         XALLOCAVEC allocated buffer for i_bound len above
4036         WIDE_INT_MAX_INL_ELTS.
4037         (record_estimate): Return early if wi::min_precision of i_bound is too
4038         large for bound_wide_int.  Adjustments for the widest_int to
4039         bound_wide_int type change in non-static data members.
4040         (wide_int_cmp): Use bound_wide_int instead of widest_int.
4041         (bound_index): Use bound_wide_int instead of widest_int.
4042         (discover_iteration_bound_by_body_walk): Likewise.  Use
4043         widest_int::from to convert it to widest_int when passed to
4044         record_niter_bound.
4045         (maybe_lower_iteration_bound): Use widest_int::from to convert it to
4046         widest_int when passed to record_niter_bound.
4047         (estimate_numbers_of_iteration): Don't record upper bound if
4048         loop->nb_iterations has too large precision for bound_wide_int.
4049         (n_of_executions_at_most): Use widest_int::from.
4050         * tree-ssa-loop-ivcanon.cc (remove_redundant_iv_tests): Adjust for
4051         the widest_int to bound_wide_int changes.
4052         * match.pd (fold_sign_changed_comparison simplification): Use
4053         wide_int::from on wi::to_wide instead of wi::to_widest.
4054         * value-range.h (irange::maybe_resize): Avoid using memcpy on
4055         non-trivially copyable elements.
4056         * value-range.cc (irange_bitmask::dump): Use XALLOCAVEC allocated
4057         buffer for mask or value len above WIDE_INT_PRINT_BUFFER_SIZE.
4058         * fold-const.cc (fold_convert_const_int_from_int, fold_unary_loc):
4059         Use wide_int::from on wi::to_wide instead of wi::to_widest.
4060         * tree-ssa-ccp.cc (bit_value_binop): Zero extend r1max from width
4061         before calling wi::udiv_trunc.
4062         * lto-streamer-out.cc (output_cfg): Adjustments for the widest_int to
4063         bound_wide_int type change in non-static data members.
4064         * lto-streamer-in.cc (input_cfg): Likewise.
4065         (lto_input_tree_1): Use WIDE_INT_MAX_INL_ELTS rather than
4066         WIDE_INT_MAX_ELTS.  For length above WIDE_INT_MAX_INL_ELTS use
4067         XALLOCAVEC allocated buffer.  Formatting fix.
4068         * data-streamer-in.cc (streamer_read_wide_int,
4069         streamer_read_widest_int): Likewise.
4070         * tree-affine.cc (aff_combination_expand): Use placement new to
4071         construct name_expansion.
4072         (free_name_expansion): Destruct name_expansion.
4073         * gimple-ssa-strength-reduction.cc (struct slsr_cand_d): Change
4074         index type from widest_int to offset_int.
4075         (class incr_info_d): Change incr type from widest_int to offset_int.
4076         (alloc_cand_and_find_basis, backtrace_base_for_ref,
4077         restructure_reference, slsr_process_ref, create_mul_ssa_cand,
4078         create_mul_imm_cand, create_add_ssa_cand, create_add_imm_cand,
4079         slsr_process_add, cand_abs_increment, replace_mult_candidate,
4080         replace_unconditional_candidate, incr_vec_index,
4081         create_add_on_incoming_edge, create_phi_basis_1,
4082         replace_conditional_candidate, record_increment,
4083         record_phi_increments_1, phi_incr_cost_1, phi_incr_cost,
4084         lowest_cost_path, total_savings, ncd_with_phi, ncd_of_cand_and_phis,
4085         nearest_common_dominator_for_cands, insert_initializers,
4086         all_phi_incrs_profitable_1, replace_one_candidate,
4087         replace_profitable_candidates): Use offset_int rather than widest_int
4088         and wi::to_offset rather than wi::to_widest.
4089         * real.cc (real_to_integer): Use WIDE_INT_MAX_INL_ELTS rather than
4090         2 * WIDE_INT_MAX_ELTS and for words above that use XALLOCAVEC
4091         allocated buffer.
4092         * tree-ssa-loop-ivopts.cc (niter_for_exit): Use placement new
4093         to construct tree_niter_desc and destruct it on failure.
4094         (free_tree_niter_desc): Destruct tree_niter_desc if value is non-NULL.
4095         * gengtype.cc (main): Remove widest_int handling.
4096         * graphite-isl-ast-to-gimple.cc (widest_int_from_isl_expr_int): Use
4097         WIDEST_INT_MAX_ELTS instead of WIDE_INT_MAX_ELTS.
4098         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Use
4099         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION and
4100         assert get_len () fits into it.
4101         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
4102         For mask or value lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC
4103         allocated buffer.
4104         * gimple-ssa-sprintf.cc (adjust_range_for_overflow): Use
4105         wide_int::from on wi::to_wide instead of wi::to_widest.
4106         * omp-general.cc (score_wide_int): New typedef.
4107         (omp_context_compute_score): Use score_wide_int instead of widest_int
4108         and adjust for those changes.
4109         (struct omp_declare_variant_entry): Change score and
4110         score_in_declare_simd_clone non-static data member type from widest_int
4111         to score_wide_int.
4112         (omp_resolve_late_declare_variant, omp_resolve_declare_variant): Use
4113         score_wide_int instead of widest_int and adjust for those changes.
4114         (omp_lto_output_declare_variant_alt): Likewise.
4115         (omp_lto_input_declare_variant_alt): Likewise.
4116         * godump.cc (go_output_typedef): Assert get_len () is smaller than
4117         WIDE_INT_MAX_INL_ELTS.
4119 2023-10-12  Pan Li  <pan2.li@intel.com>
4121         * config/riscv/autovec.md (lround<mode><v_i_l_ll_convert>2): New
4122         pattern for lround/lroundf.
4123         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
4124         (expand_vec_lround): New func decl for expanding lround.
4125         * config/riscv/riscv-v.cc (expand_vec_lround): New func impl
4126         for expanding lround.
4128 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
4130         * dwarf2out.h (wide_int_ptr): Remove.
4131         (dw_wide_int_ptr): New typedef.
4132         (struct dw_val_node): Change type of val_wide from wide_int_ptr
4133         to dw_wide_int_ptr.
4134         (struct dw_wide_int): New type.
4135         (dw_wide_int::elt): New method.
4136         (dw_wide_int::operator ==): Likewise.
4137         * dwarf2out.cc (get_full_len): Change argument type to
4138         const dw_wide_int & from const wide_int &.  Use CEIL.  Call
4139         get_precision method instead of calling wi::get_precision.
4140         (alloc_dw_wide_int): New function.
4141         (add_AT_wide): Change w argument type to const wide_int_ref &
4142         from const wide_int &.  Use alloc_dw_wide_int.
4143         (mem_loc_descriptor, loc_descriptor): Use alloc_dw_wide_int.
4144         (insert_wide_int): Change val argument type to const wide_int_ref &
4145         from const wide_int &.
4146         (add_const_value_attribute): Pass rtx_mode_t temporary directly to
4147         add_AT_wide instead of using a temporary variable.
4149 2023-10-12  Richard Biener  <rguenther@suse.de>
4151         PR tree-optimization/111764
4152         * tree-vect-loop.cc (check_reduction_path): Remove the attempt
4153         to allow x + x via special-casing of assigns.
4155 2023-10-12  Hu, Lin1  <lin1.hu@intel.com>
4157         * common/config/i386/cpuinfo.h (get_available_features):
4158         Detect USER_MSR.
4159         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_USER_MSR_SET): New.
4160         (OPTION_MASK_ISA2_USER_MSR_UNSET): Ditto.
4161         (ix86_handle_option): Handle -musermsr.
4162         * common/config/i386/i386-cpuinfo.h (enum processor_features):
4163         Add FEATURE_USER_MSR.
4164         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for usermsr.
4165         * config.gcc: Add usermsrintrin.h
4166         * config/i386/cpuid.h (bit_USER_MSR): New.
4167         * config/i386/i386-builtin-types.def:
4168         Add DEF_FUNCTION_TYPE (VOID, UINT64, UINT64).
4169         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
4170         Add __builtin_urdmsr and __builtin_uwrmsr.
4171         * config/i386/i386-builtins.h (ix86_builtins):
4172         Add IX86_BUILTIN_URDMSR and IX86_BUILTIN_UWRMSR.
4173         * config/i386/i386-c.cc (ix86_target_macros_internal):
4174         Define __USER_MSR__.
4175         * config/i386/i386-expand.cc (ix86_expand_builtin):
4176         Handle new builtins.
4177         * config/i386/i386-isa.def (USER_MSR): Add DEF_PTA(USER_MSR).
4178         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
4179         Handle usermsr.
4180         * config/i386/i386.md (urdmsr): New define_insn.
4181         (uwrmsr): Ditto.
4182         * config/i386/i386.opt: Add option -musermsr.
4183         * config/i386/x86gprintrin.h: Include usermsrintrin.h
4184         * doc/extend.texi: Document usermsr.
4185         * doc/invoke.texi: Document -musermsr.
4186         * doc/sourcebuild.texi: Document target usermsr.
4187         * config/i386/usermsrintrin.h: New file.
4189 2023-10-12  Yang Yujie  <yangyujie@loongson.cn>
4191         * config.gcc: Add loongarch-driver.h to tm_files.
4192         * config/loongarch/loongarch.h: Do not include loongarch-driver.h.
4193         * config/loongarch/t-loongarch: Append loongarch-multilib.h to $(GTM_H)
4194         instead of $(TM_H) for building generator programs.
4196 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4198         PR target/111367
4199         * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed
4200         instruction emission and incorporate to stack_protect_set<mode>.
4201         (stack_protect_setdi): Rename to ...
4202         (stack_protect_set<mode>): ... this, adjust constraint.
4203         (stack_protect_testsi): Support prefixed instruction emission and
4204         incorporate to stack_protect_test<mode>.
4205         (stack_protect_testdi): Rename to ...
4206         (stack_protect_test<mode>): ... this, adjust constraint.
4208 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4210         * tree-vect-stmts.cc (vectorizable_store): Consider generated
4211         VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as
4212         vec_perm.
4214 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4216         * tree-vect-stmts.cc (vect_model_store_cost): Remove.
4217         (vectorizable_store): Adjust the costing for the remaining memory
4218         access types VMAT_CONTIGUOUS{, _DOWN, _REVERSE}.
4220 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4222         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
4223         get VMAT_CONTIGUOUS_PERMUTE and remove VMAT_CONTIGUOUS_PERMUTE related
4224         handlings.
4225         (vectorizable_store): Adjust the cost handling on
4226         VMAT_CONTIGUOUS_PERMUTE without calling vect_model_store_cost.
4228 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4230         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
4231         get VMAT_LOAD_STORE_LANES.
4232         (vectorizable_store): Adjust the cost handling on VMAT_LOAD_STORE_LANES
4233         without calling vect_model_store_cost.  Factor out new lambda function
4234         update_prologue_cost.
4236 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4238         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
4239         VMAT_ELEMENTWISE and VMAT_STRIDED_SLP any more, and remove their
4240         related handlings.
4241         (vectorizable_store): Adjust the cost handling on VMAT_ELEMENTWISE
4242         and VMAT_STRIDED_SLP without calling vect_model_store_cost.
4244 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4246         * tree-vect-stmts.cc (vectorizable_store): Adjust costing on
4247         vectorizable_scan_store without calling vect_model_store_cost
4248         any more.
4250 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4252         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
4253         VMAT_GATHER_SCATTER any more, remove VMAT_GATHER_SCATTER related
4254         handlings and the related parameter gs_info.
4255         (vect_build_scatter_store_calls): Add the handlings on costing with
4256         one more argument cost_vec.
4257         (vectorizable_store): Adjust the cost handling on VMAT_GATHER_SCATTER
4258         without calling vect_model_store_cost any more.
4260 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4262         * tree-vect-stmts.cc (vectorizable_store): Move and duplicate the call
4263         to vect_model_store_cost down to some different transform paths
4264         according to the handlings of different vect_memory_access_types
4265         or some special handling need.
4267 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
4269         * tree-vect-stmts.cc (vectorizable_store): Ensure the generated
4270         vector store for some case of VMAT_ELEMENTWISE is supported.
4272 2023-10-12  Mo, Zewei  <zewei.mo@intel.com>
4273             Hu Lin1  <lin1.hu@intel.com>
4274             Hongyu Wang  <hongyu.wang@intel.com>
4276         * config/i386/i386.cc (gen_push2): New function to emit push2
4277         and adjust cfa offset.
4278         (ix86_pro_and_epilogue_can_use_push2_pop2): New function to
4279         determine whether push2/pop2 can be used.
4280         (ix86_compute_frame_layout): Adjust preferred stack boundary
4281         and stack alignment needed for push2/pop2.
4282         (ix86_emit_save_regs): Emit push2 when available.
4283         (ix86_emit_restore_reg_using_pop2): New function to emit pop2
4284         and adjust cfa info.
4285         (ix86_emit_restore_regs_using_pop2): New function to loop
4286         through the saved regs and call above.
4287         (ix86_expand_epilogue): Call ix86_emit_restore_regs_using_pop2
4288         when push2pop2 available.
4289         * config/i386/i386.md (push2_di): New pattern for push2.
4290         (pop2_di): Likewise for pop2.
4292 2023-10-12  Pan Li  <pan2.li@intel.com>
4294         * config/riscv/autovec.md (lrint<mode><vlconvert>2): Rename from.
4295         (lrint<mode><v_i_l_ll_convert>2): Rename to.
4296         * config/riscv/vector-iterators.md: Rename and remove TARGET_64BIT.
4298 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
4300         * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New.
4302 2023-10-11  Jeff Law  <jlaw@ventanamicro.com>
4304         * config/riscv/riscv.md (jump): Adjust sequence to use a "jump"
4305         pseudo op instead of a "call" pseudo op.
4307 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
4309         * config/riscv/riscv-subset.h (riscv_subset_list::parse_single_std_ext):
4310         New.
4311         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
4312         (riscv_subset_list::clone): Ditto.
4313         (riscv_subset_list::parse_single_ext): Ditto.
4314         (riscv_subset_list::set_loc): Ditto.
4315         (riscv_set_arch_by_subset_list): Ditto.
4316         * common/config/riscv/riscv-common.cc
4317         (riscv_subset_list::parse_single_std_ext): New.
4318         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
4319         (riscv_subset_list::clone): Ditto.
4320         (riscv_subset_list::parse_single_ext): Ditto.
4321         (riscv_subset_list::set_loc): Ditto.
4322         (riscv_set_arch_by_subset_list): Ditto.
4324 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
4326         * config/riscv/riscv.cc (riscv_convert_vector_bits): Get setting
4327         from argument rather than get setting from global setting.
4328         (riscv_override_options_internal): New, splited from
4329         riscv_override_options, also take a gcc_options argument.
4330         (riscv_option_override): Splited most part to
4331         riscv_override_options_internal.
4333 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
4335         * doc/options.texi (Mask): Document TARGET_<NAME>_P and
4336         TARGET_<NAME>_OPTS_P.
4337         (InverseMask): Ditto.
4338         * opth-gen.awk (Mask): Generate TARGET_<NAME>_P and
4339         TARGET_<NAME>_OPTS_P macro.
4340         (InverseMask): Ditto.
4342 2023-10-11  Andrew Pinski  <pinskia@gmail.com>
4344         PR tree-optimization/111282
4345         * match.pd (`a & ~(a ^ b)`, `a & (a == b)`,
4346         `a & ((~a) ^ b)`): New patterns.
4348 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
4350         * common/config/riscv/riscv-common.cc: Add the XCValu
4351         extension.
4352         * config/riscv/constraints.md: Add builtins for the XCValu
4353         extension.
4354         * config/riscv/predicates.md (immediate_register_operand):
4355         Likewise.
4356         * config/riscv/corev.def: Likewise.
4357         * config/riscv/corev.md: Likewise.
4358         * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
4359         (RISCV_ATYPE_UHI): Likewise.
4360         * config/riscv/riscv-ftypes.def: Likewise.
4361         * config/riscv/riscv.opt: Likewise.
4362         * config/riscv/riscv.cc (riscv_print_operand): Likewise.
4363         * doc/extend.texi: Add XCValu documentation.
4364         * doc/sourcebuild.texi: Likewise.
4366 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
4368         * common/config/riscv/riscv-common.cc: Add XCVmac.
4369         * config/riscv/riscv-ftypes.def: Add XCVmac builtins.
4370         * config/riscv/riscv-builtins.cc: Likewise.
4371         * config/riscv/riscv.md: Likewise.
4372         * config/riscv/riscv.opt: Likewise.
4373         * doc/extend.texi: Add XCVmac builtin documentation.
4374         * doc/sourcebuild.texi: Likewise.
4375         * config/riscv/corev.def: New file.
4376         * config/riscv/corev.md: New file.
4378 2023-10-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4380         * config/riscv/autovec.md: Fix index bug.
4381         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): New function.
4382         * config/riscv/riscv-v.cc (expand_gather_scatter): Fix index bug.
4383         (gather_scatter_valid_offset_mode_p): New function.
4385 2023-10-11  Pan Li  <pan2.li@intel.com>
4387         * config/riscv/autovec.md (lrint<mode><vlconvert>2): New pattern
4388         for lrint/lintf.
4389         * config/riscv/riscv-protos.h (expand_vec_lrint): New func decl
4390         for expanding lint.
4391         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): New helper func impl
4392         for vfcvt.x.f.v.
4393         (expand_vec_lrint): New function impl for expanding lint.
4394         * config/riscv/vector-iterators.md: New mode attr and iterator.
4396 2023-10-11  Richard Biener  <rguenther@suse.de>
4397             Jakub Jelinek  <jakub@redhat.com>
4399         PR tree-optimization/111519
4400         * tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes): Add vuse
4401         argument and pass it through to recursive calls and
4402         count_nonzero_bytes_addr calls.  Don't shadow the stmt argument, but
4403         change stmt for gimple_assign_single_p statements for which we don't
4404         immediately punt.
4405         (strlen_pass::count_nonzero_bytes_addr): Add vuse argument and pass
4406         it through to recursive calls and count_nonzero_bytes calls.  Don't
4407         use get_strinfo if gimple_vuse (stmt) is different from vuse.  Don't
4408         shadow the stmt argument.
4410 2023-10-11  Roger Sayle  <roger@nextmovesoftware.com>
4412         PR middle-end/101955
4413         PR tree-optimization/106245
4414         * simplify-rtx.cc (simplify_relational_operation_1): Simplify
4415         the RTL (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) to (and:SI x 1).
4417 2023-10-11  liuhongt  <hongtao.liu@intel.com>
4419         PR target/111745
4420         * config/i386/mmx.md (divv4hf3): Refine predicate of
4421         operands[2] with register_operand.
4423 2023-10-10  Andrew Waterman  <andrew@sifive.com>
4424             Philipp Tomsich  <philipp.tomsich@vrull.eu>
4425             Jeff Law  <jlaw@ventanamicro.com>
4427         * config/riscv/riscv.cc (struct machine_function): Track if a
4428         far-branch/jump is used within a function (and $ra needs to be
4429         saved).
4430         (riscv_print_operand): Implement 'N' (inverse integer branch).
4431         (riscv_far_jump_used_p): Implement.
4432         (riscv_save_return_addr_reg_p): New function.
4433         (riscv_save_reg_p): Use riscv_save_return_addr_reg_p.
4434         * config/riscv/riscv.h (FIXED_REGISTERS): Update $ra.
4435         (CALL_USED_REGISTERS): Update $ra.
4436         * config/riscv/riscv.md: Add new types "ret" and "jalr".
4437         (length attribute): Handle long conditional and unconditional
4438         branches.
4439         (conditional branch pattern): Handle case where jump can not
4440         reach the intended target.
4441         (indirect_jump, tablejump): Use new "jalr" type.
4442         (simple_return): Use new "ret" type.
4443         (simple_return_internal, eh_return_internal): Likewise.
4444         (gpr_restore_return, riscv_mret): Likewise.
4445         (riscv_uret, riscv_sret): Likewise.
4446         * config/riscv/generic.md (generic_branch): Also recognize jalr & ret
4447         types.
4448         * config/riscv/sifive-7.md (sifive_7_jump): Likewise.
4450 2023-10-10  Andrew Pinski  <pinskia@gmail.com>
4452         PR tree-optimization/111679
4453         * match.pd (`a | ((~a) ^ b)`): New pattern.
4455 2023-10-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4457         PR target/111751
4458         * config/riscv/autovec.md: Add VLS BOOL modes.
4460 2023-10-10  Richard Biener  <rguenther@suse.de>
4462         PR tree-optimization/111751
4463         * fold-const.cc (fold_view_convert_expr): Up the buffer size
4464         to 128 bytes.
4465         * tree-ssa-sccvn.cc (visit_reference_op_load): Special case
4466         constants, giving up when re-interpretation to the target type
4467         fails.
4469 2023-10-10  Richard Biener  <rguenther@suse.de>
4471         PR tree-optimization/111751
4472         * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt
4473         BLKmode result from the padding bits check.
4475 2023-10-10  Claudiu Zissulescu  <claziss@gmail.com>
4477         * config/arc/arc.cc (arc_select_cc_mode): Match NEG code with
4478         the first operand.
4479         * config/arc/arc.md (addsi_compare): Make pattern canonical.
4480         (addsi_compare_2): Fix identation, constraint letters.
4481         (addsi_compare_3): Likewise.
4483 2023-10-09  Eugene Rozenfeld  <erozen@microsoft.com>
4485         * auto-profile.cc (afdo_calculate_branch_prob): Fix count comparisons
4486         * tree-vect-loop-manip.cc (vect_do_peeling): Guard against zero count
4487         when scaling loop profile
4489 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
4491         PR tree-optimization/111694
4492         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust
4493         equivalence range.
4494         * value-relation.cc (adjust_equivalence_range): New.
4495         * value-relation.h (adjust_equivalence_range): New prototype.
4497 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
4499         * gimple-range-gori.cc (gori_compute::compute_operand1_range): Do
4500         not call get_identity_relation.
4501         (gori_compute::compute_operand2_range): Ditto.
4502         * value-relation.cc (get_identity_relation): Remove.
4503         * value-relation.h (get_identity_relation): Remove protyotype.
4505 2023-10-09  Robin Dapp  <rdapp@ventanamicro.com>
4507         * config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter.
4508         * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
4509         Add generic_ooo.
4510         * config/riscv/riscv.cc (riscv_sched_adjust_cost): Implement
4511         scheduler hook.
4512         (TARGET_SCHED_ADJUST_COST): Define.
4513         * config/riscv/riscv.md (no,yes"): Include generic-ooo.md
4514         * config/riscv/riscv.opt: Add -madjust-lmul-cost.
4515         * config/riscv/generic-ooo.md: New file.
4516         * config/riscv/vector.md: Add vsetvl_pre.
4518 2023-10-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4520         * config/riscv/riscv-opts.h (TARGET_VECTOR_MISALIGN_SUPPORTED): New macro.
4521         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Depend on movmisalign pattern.
4522         * config/riscv/vector.md (movmisalign<mode>): New pattern.
4524 2023-10-09  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
4526         * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI
4527         directives for store-pair instruction.
4529 2023-10-09  Richard Biener  <rguenther@suse.de>
4531         PR tree-optimization/111715
4532         * alias.cc (reference_alias_ptr_type_1): When we have
4533         a type-punning ref at the base search for the access
4534         path part that's still semantically valid.
4536 2023-10-09  Pan Li  <pan2.li@intel.com>
4538         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): New func impl
4539         for shuffle bswap.
4540         (expand_vec_perm_const_1): Add handling for shuffle bswap pattern.
4542 2023-10-09  Roger Sayle  <roger@nextmovesoftware.com>
4544         * config/i386/i386-expand.cc (ix86_split_ashr): Split shifts by
4545         one into ashr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR
4546         or -Oz.
4547         (ix86_split_lshr): Likewise, split shifts by one bit into
4548         lshr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR or -Oz.
4549         * config/i386/i386.h (TARGET_USE_RCR): New backend macro.
4550         * config/i386/i386.md (rcrsi2): New define_insn for rcrl.
4551         (rcrdi2): New define_insn for rcrq.
4552         (<anyshiftrt><mode>3_carry): New define_insn for right shifts that
4553         set the carry flag from the least significant bit, modelled using
4554         UNSPEC_CC_NE.
4555         * config/i386/x86-tune.def (X86_TUNE_USE_RCR): New tuning parameter
4556         controlling use of rcr 1 vs. shrd, which is significantly faster on
4557         AMD processors.
4559 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4561         * config/i386/i386.opt: Allow -mno-evex512.
4563 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4564             Hu, Lin1  <lin1.hu@intel.com>
4566         * config/i386/sse.md (V48H_AVX512VL): Add TARGET_EVEX512.
4567         (VFH): Ditto.
4568         (VF2H): Ditto.
4569         (VFH_AVX512VL): Ditto.
4570         (VHFBF): Ditto.
4571         (VHF_AVX512VL): Ditto.
4572         (VI2H_AVX512VL): Ditto.
4573         (VI2F_256_512): Ditto.
4574         (VF48_I1248): Remove unused iterator.
4575         (VF48H_AVX512VL): Add TARGET_EVEX512.
4576         (VF_AVX512): Remove unused iterator.
4577         (REDUC_PLUS_MODE): Add TARGET_EVEX512.
4578         (REDUC_SMINMAX_MODE): Ditto.
4579         (FMAMODEM): Ditto.
4580         (VFH_SF_AVX512VL): Ditto.
4581         (VEC_PERM_AVX2): Ditto.
4583 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4584             Hu, Lin1  <lin1.hu@intel.com>
4586         * config/i386/sse.md (VI1_AVX512VL): Add TARGET_EVEX512.
4587         (VI8_FVL): Ditto.
4588         (VI1_AVX512F): Ditto.
4589         (VI1_AVX512VNNI): Ditto.
4590         (VI1_AVX512VL_F): Ditto.
4591         (VI12_VI48F_AVX512VL): Ditto.
4592         (*avx512f_permvar_truncv32hiv32qi_1): Ditto.
4593         (sdot_prod<mode>): Ditto.
4594         (VEC_PERM_AVX2): Ditto.
4595         (VPERMI2): Ditto.
4596         (VPERMI2I): Ditto.
4597         (vpmadd52<vpmadd52type>v8di): Ditto.
4598         (usdot_prod<mode>): Ditto.
4599         (vpdpbusd_v16si): Ditto.
4600         (vpdpbusds_v16si): Ditto.
4601         (vpdpwssd_v16si): Ditto.
4602         (vpdpwssds_v16si): Ditto.
4603         (VI48_AVX512VP2VL): Ditto.
4604         (avx512vp2intersect_2intersectv16si): Ditto.
4605         (VF_AVX512BF16VL): Ditto.
4606         (VF1_AVX512_256): Ditto.
4608 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4610         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
4611         Make sure there is EVEX512 enabled.
4612         (ix86_expand_vecop_qihi2): Refuse V32QI->V32HI when no EVEX512.
4613         * config/i386/i386.cc (ix86_hard_regno_mode_ok): Disable 64 bit mask
4614         when !TARGET_EVEX512.
4615         * config/i386/i386.md (avx512bw_512): New.
4616         (SWI1248_AVX512BWDQ_64): Add TARGET_EVEX512.
4617         (*zero_extendsidi2): Change isa to avx512bw_512.
4618         (kmov_isa): Ditto.
4619         (*anddi_1): Ditto.
4620         (*andn<mode>_1): Change isa to kmov_isa.
4621         (*<code><mode>_1): Ditto.
4622         (*notxor<mode>_1): Ditto.
4623         (*one_cmpl<mode>2_1): Ditto.
4624         (*one_cmplsi2_1_zext): Change isa to avx512bw_512.
4625         (*ashl<mode>3_1): Change isa to kmov_isa.
4626         (*lshr<mode>3_1): Ditto.
4627         * config/i386/sse.md (VI12HFBF_AVX512VL): Add TARGET_EVEX512.
4628         (VI1248_AVX512VLBW): Ditto.
4629         (VHFBF_AVX512VL): Ditto.
4630         (VI): Ditto.
4631         (VIHFBF): Ditto.
4632         (VI_AVX2): Ditto.
4633         (VI1_AVX512): Ditto.
4634         (VI12_256_512_AVX512VL): Ditto.
4635         (VI2_AVX2_AVX512BW): Ditto.
4636         (VI2_AVX512VNNIBW): Ditto.
4637         (VI2_AVX512VL): Ditto.
4638         (VI2HFBF_AVX512VL): Ditto.
4639         (VI8_AVX2_AVX512BW): Ditto.
4640         (VIMAX_AVX2_AVX512BW): Ditto.
4641         (VIMAX_AVX512VL): Ditto.
4642         (VI12_AVX2_AVX512BW): Ditto.
4643         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
4644         (VI248_AVX512VL): Ditto.
4645         (VI248_AVX512VLBW): Ditto.
4646         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
4647         (VI248_AVX512BW): Ditto.
4648         (VI248_AVX512BW_AVX512VL): Ditto.
4649         (VI248_512): Ditto.
4650         (VI124_256_AVX512F_AVX512BW): Ditto.
4651         (VI_AVX512BW): Ditto.
4652         (VIHFBF_AVX512BW): Ditto.
4653         (SWI1248_AVX512BWDQ): Ditto.
4654         (SWI1248_AVX512BW): Ditto.
4655         (SWI1248_AVX512BWDQ2): Ditto.
4656         (*knotsi_1_zext): Ditto.
4657         (define_split for zero_extend + not): Ditto.
4658         (kunpckdi): Ditto.
4659         (REDUC_SMINMAX_MODE): Ditto.
4660         (VEC_EXTRACT_MODE): Ditto.
4661         (*avx512bw_permvar_truncv16siv16hi_1): Ditto.
4662         (*avx512bw_permvar_truncv16siv16hi_1_hf): Ditto.
4663         (truncv32hiv32qi2): Ditto.
4664         (avx512bw_<code>v32hiv32qi2): Ditto.
4665         (avx512bw_<code>v32hiv32qi2_mask): Ditto.
4666         (avx512bw_<code>v32hiv32qi2_mask_store): Ditto.
4667         (usadv64qi): Ditto.
4668         (VEC_PERM_AVX2): Ditto.
4669         (AVX512ZEXTMASK): Ditto.
4670         (SWI24_MASK): New.
4671         (vec_pack_trunc_<mode>): Change iterator to SWI24_MASK.
4672         (avx512bw_packsswb<mask_name>): Add TARGET_EVEX512.
4673         (avx512bw_packssdw<mask_name>): Ditto.
4674         (avx512bw_interleave_highv64qi<mask_name>): Ditto.
4675         (avx512bw_interleave_lowv64qi<mask_name>): Ditto.
4676         (<mask_codefor>avx512bw_pshuflwv32hi<mask_name>): Ditto.
4677         (<mask_codefor>avx512bw_pshufhwv32hi<mask_name>): Ditto.
4678         (vec_unpacks_lo_di): Ditto.
4679         (SWI48x_MASK): New.
4680         (vec_unpacks_hi_<mode>): Change iterator to SWI48x_MASK.
4681         (avx512bw_umulhrswv32hi3<mask_name>): Add TARGET_EVEX512.
4682         (VI1248_AVX512VL_AVX512BW): Ditto.
4683         (avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
4684         (*avx512bw_zero_extendv32qiv32hi2_1): Ditto.
4685         (*avx512bw_zero_extendv32qiv32hi2_2): Ditto.
4686         (<insn>v32qiv32hi2): Ditto.
4687         (pbroadcast_evex_isa): Change isa attribute to avx512bw_512.
4688         (VPERMI2): Add TARGET_EVEX512.
4689         (VPERMI2I): Ditto.
4691 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4693         * config/i386/i386-expand.cc (ix86_expand_sse2_mulvxdi3):
4694         Add TARGET_EVEX512 for 512 bit usage.
4695         * config/i386/i386.cc (standard_sse_constant_opcode): Ditto.
4696         * config/i386/sse.md (VF1_VF2_AVX512DQ): Ditto.
4697         (VF1_128_256VL): Ditto.
4698         (VF2_AVX512VL): Ditto.
4699         (VI8_256_512): Ditto.
4700         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
4701         Ditto.
4702         (AVX512_VEC): Ditto.
4703         (AVX512_VEC_2): Ditto.
4704         (VI4F_BRCST32x2): Ditto.
4705         (VI8F_BRCST64x2): Ditto.
4707 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4709         * config/i386/i386-builtins.cc
4710         (ix86_vectorize_builtin_gather): Disable 512 bit gather
4711         when !TARGET_EVEX512.
4712         * config/i386/i386-expand.cc (ix86_valid_mask_cmp_mode):
4713         Add TARGET_EVEX512.
4714         (ix86_expand_int_sse_cmp): Ditto.
4715         (ix86_expand_vector_init_one_nonzero): Disable subroutine
4716         when !TARGET_EVEX512.
4717         (ix86_emit_swsqrtsf): Add TARGET_EVEX512.
4718         (ix86_vectorize_vec_perm_const): Disable subroutine when
4719         !TARGET_EVEX512.
4720         * config/i386/i386.cc
4721         (standard_sse_constant_p): Add TARGET_EVEX512.
4722         (standard_sse_constant_opcode): Ditto.
4723         (ix86_get_ssemov): Ditto.
4724         (ix86_legitimate_constant_p): Ditto.
4725         (ix86_vectorize_builtin_scatter): Diable 512 bit scatter
4726         when !TARGET_EVEX512.
4727         * config/i386/i386.md (avx512f_512): New.
4728         (movxi): Add TARGET_EVEX512.
4729         (*movxi_internal_avx512f): Ditto.
4730         (*movdi_internal): Change alternative 12 to ?Yv. Adjust mode
4731         for alternative 13.
4732         (*movsi_internal): Change alternative 8 to ?Yv. Adjust mode for
4733         alternative 9.
4734         (*movhi_internal): Change alternative 11 to *Yv.
4735         (*movdf_internal): Change alternative 12 to Yv.
4736         (*movsf_internal): Change alternative 5 to Yv. Adjust mode for
4737         alternative 5 and 6.
4738         (*mov<mode>_internal): Change alternative 4 to Yv.
4739         (define_split for convert SF to DF): Add TARGET_EVEX512.
4740         (extendbfsf2_1): Ditto.
4741         * config/i386/predicates.md (bcst_mem_operand): Disable predicate
4742         for 512 bit when !TARGET_EVEX512.
4743         * config/i386/sse.md (VMOVE): Add TARGET_EVEX512.
4744         (V48_AVX512VL): Ditto.
4745         (V48_256_512_AVX512VL): Ditto.
4746         (V48H_AVX512VL): Ditto.
4747         (VI12_AVX512VL): Ditto.
4748         (V): Ditto.
4749         (V_512): Ditto.
4750         (V_256_512): Ditto.
4751         (VF): Ditto.
4752         (VF1_VF2_AVX512DQ): Ditto.
4753         (VFH): Ditto.
4754         (VFB): Ditto.
4755         (VF1): Ditto.
4756         (VF1_AVX2): Ditto.
4757         (VF2): Ditto.
4758         (VF2H): Ditto.
4759         (VF2_512_256): Ditto.
4760         (VF2_512_256VL): Ditto.
4761         (VF_512): Ditto.
4762         (VFB_512): Ditto.
4763         (VI48_AVX512VL): Ditto.
4764         (VI1248_AVX512VLBW): Ditto.
4765         (VF_AVX512VL): Ditto.
4766         (VFH_AVX512VL): Ditto.
4767         (VF1_AVX512VL): Ditto.
4768         (VI): Ditto.
4769         (VIHFBF): Ditto.
4770         (VI_AVX2): Ditto.
4771         (VI8): Ditto.
4772         (VI8_AVX512VL): Ditto.
4773         (VI2_AVX512F): Ditto.
4774         (VI4_AVX512F): Ditto.
4775         (VI4_AVX512VL): Ditto.
4776         (VI48_AVX512F_AVX512VL): Ditto.
4777         (VI8_AVX2_AVX512F): Ditto.
4778         (VI8_AVX_AVX512F): Ditto.
4779         (V8FI): Ditto.
4780         (V16FI): Ditto.
4781         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
4782         (VI248_AVX512VLBW): Ditto.
4783         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
4784         (VI248_AVX512BW): Ditto.
4785         (VI248_AVX512BW_AVX512VL): Ditto.
4786         (VI48_AVX512F): Ditto.
4787         (VI48_AVX_AVX512F): Ditto.
4788         (VI12_AVX_AVX512F): Ditto.
4789         (VI148_512): Ditto.
4790         (VI124_256_AVX512F_AVX512BW): Ditto.
4791         (VI48_512): Ditto.
4792         (VI_AVX512BW): Ditto.
4793         (VIHFBF_AVX512BW): Ditto.
4794         (VI4F_256_512): Ditto.
4795         (VI48F_256_512): Ditto.
4796         (VI48F): Ditto.
4797         (VI12_VI48F_AVX512VL): Ditto.
4798         (V32_512): Ditto.
4799         (AVX512MODE2P): Ditto.
4800         (STORENT_MODE): Ditto.
4801         (REDUC_PLUS_MODE): Ditto.
4802         (REDUC_SMINMAX_MODE): Ditto.
4803         (*andnot<mode>3): Change isa attribute to avx512f_512.
4804         (*andnot<mode>3): Ditto.
4805         (<code><mode>3): Ditto.
4806         (<code>tf3): Ditto.
4807         (FMAMODEM): Add TARGET_EVEX512.
4808         (FMAMODE_AVX512): Ditto.
4809         (VFH_SF_AVX512VL): Ditto.
4810         (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Ditto.
4811         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):
4812         Ditto.
4813         (avx512f_cvtdq2pd512_2): Ditto.
4814         (avx512f_cvtpd2dq512<mask_name><round_name>): Ditto.
4815         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
4816         Ditto.
4817         (<mask_codefor>avx512f_cvtpd2ps512<mask_name><round_name>): Ditto.
4818         (vec_unpacks_lo_v16sf): Ditto.
4819         (vec_unpacks_hi_v16sf): Ditto.
4820         (vec_unpacks_float_hi_v16si): Ditto.
4821         (vec_unpacks_float_lo_v16si): Ditto.
4822         (vec_unpacku_float_hi_v16si): Ditto.
4823         (vec_unpacku_float_lo_v16si): Ditto.
4824         (vec_pack_sfix_trunc_v8df): Ditto.
4825         (avx512f_vec_pack_sfix_v8df): Ditto.
4826         (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto.
4827         (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto.
4828         (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto.
4829         (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto.
4830         (AVX512_VEC): Ditto.
4831         (AVX512_VEC_2): Ditto.
4832         (vec_extract_lo_v64qi): Ditto.
4833         (vec_extract_hi_v64qi): Ditto.
4834         (VEC_EXTRACT_MODE): Ditto.
4835         (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto.
4836         (avx512f_movddup512<mask_name>): Ditto.
4837         (avx512f_unpcklpd512<mask_name>): Ditto.
4838         (*<avx512>_vternlog<mode>_all): Ditto.
4839         (*<avx512>_vpternlog<mode>_1): Ditto.
4840         (*<avx512>_vpternlog<mode>_2): Ditto.
4841         (*<avx512>_vpternlog<mode>_3): Ditto.
4842         (avx512f_shufps512_mask): Ditto.
4843         (avx512f_shufps512_1<mask_name>): Ditto.
4844         (avx512f_shufpd512_mask): Ditto.
4845         (avx512f_shufpd512_1<mask_name>): Ditto.
4846         (<mask_codefor>avx512f_interleave_highv8di<mask_name>): Ditto.
4847         (<mask_codefor>avx512f_interleave_lowv8di<mask_name>): Ditto.
4848         (vec_dupv2df<mask_name>): Ditto.
4849         (trunc<pmov_src_lower><mode>2): Ditto.
4850         (*avx512f_<code><pmov_src_lower><mode>2): Ditto.
4851         (*avx512f_vpermvar_truncv8div8si_1): Ditto.
4852         (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto.
4853         (avx512f_<code><pmov_src_lower><mode>2_mask_store): Ditto.
4854         (truncv8div8qi2): Ditto.
4855         (avx512f_<code>v8div16qi2): Ditto.
4856         (*avx512f_<code>v8div16qi2_store_1): Ditto.
4857         (*avx512f_<code>v8div16qi2_store_2): Ditto.
4858         (avx512f_<code>v8div16qi2_mask): Ditto.
4859         (*avx512f_<code>v8div16qi2_mask_1): Ditto.
4860         (*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
4861         (avx512f_<code>v8div16qi2_mask_store_2): Ditto.
4862         (vec_widen_umult_even_v16si<mask_name>): Ditto.
4863         (*vec_widen_umult_even_v16si<mask_name>): Ditto.
4864         (vec_widen_smult_even_v16si<mask_name>): Ditto.
4865         (*vec_widen_smult_even_v16si<mask_name>): Ditto.
4866         (VEC_PERM_AVX2): Ditto.
4867         (one_cmpl<mode>2): Ditto.
4868         (<mask_codefor>one_cmpl<mode>2<mask_name>): Ditto.
4869         (*one_cmpl<mode>2_pternlog_false_dep): Ditto.
4870         (define_split to xor): Ditto.
4871         (*andnot<mode>3): Ditto.
4872         (define_split for ior): Ditto.
4873         (*iornot<mode>3): Ditto.
4874         (*xnor<mode>3): Ditto.
4875         (*<nlogic><mode>3): Ditto.
4876         (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto.
4877         (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto.
4878         (avx512f_pshufdv3_mask): Ditto.
4879         (avx512f_pshufd_1<mask_name>): Ditto.
4880         (*vec_extractv4ti): Ditto.
4881         (VEXTRACTI128_MODE): Ditto.
4882         (define_split to vec_extract): Ditto.
4883         (VI1248_AVX512VL_AVX512BW): Ditto.
4884         (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
4885         (<insn>v16qiv16si2): Ditto.
4886         (avx512f_<code>v16hiv16si2<mask_name>): Ditto.
4887         (<insn>v16hiv16si2): Ditto.
4888         (avx512f_zero_extendv16hiv16si2_1): Ditto.
4889         (avx512f_<code>v8qiv8di2<mask_name>): Ditto.
4890         (*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
4891         (*avx512f_<code>v8qiv8di2<mask_name>_2): Ditto.
4892         (<insn>v8qiv8di2): Ditto.
4893         (avx512f_<code>v8hiv8di2<mask_name>): Ditto.
4894         (<insn>v8hiv8di2): Ditto.
4895         (avx512f_<code>v8siv8di2<mask_name>): Ditto.
4896         (*avx512f_zero_extendv8siv8di2_1): Ditto.
4897         (*avx512f_zero_extendv8siv8di2_2): Ditto.
4898         (<insn>v8siv8di2): Ditto.
4899         (avx512f_roundps512_sfix): Ditto.
4900         (vashrv8di3): Ditto.
4901         (vashrv16si3): Ditto.
4902         (pbroadcast_evex_isa): Change isa attribute to avx512f_512.
4903         (vec_dupv4sf): Add TARGET_EVEX512.
4904         (*vec_dupv4si): Ditto.
4905         (*vec_dupv2di): Ditto.
4906         (vec_dup<mode>): Change isa attribute to avx512f_512.
4907         (VPERMI2): Add TARGET_EVEX512.
4908         (VPERMI2I): Ditto.
4909         (VEC_INIT_MODE): Ditto.
4910         (VEC_INIT_HALF_MODE): Ditto.
4911         (<mask_codefor>avx512f_vcvtph2ps512<mask_name><round_saeonly_name>):
4912         Ditto.
4913         (avx512f_vcvtps2ph512_mask_sae): Ditto.
4914         (<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>):
4915         Ditto.
4916         (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
4917         (INT_BROADCAST_MODE): Ditto.
4919 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4921         * config/i386/i386-expand.cc (ix86_broadcast_from_constant):
4922         Disable zmm broadcast for !TARGET_EVEX512.
4923         * config/i386/i386-options.cc (ix86_option_override_internal):
4924         Do not use PVW_512 when no-evex512.
4925         (ix86_simd_clone_adjust): Add evex512 target into string.
4926         * config/i386/i386.cc (type_natural_mode): Report ABI warning
4927         when using zmm register w/o evex512.
4928         (ix86_return_in_memory): Do not allow zmm when !TARGET_EVEX512.
4929         (ix86_hard_regno_mode_ok): Ditto.
4930         (ix86_set_reg_reg_cost): Ditto.
4931         (ix86_rtx_costs): Ditto.
4932         (ix86_vector_mode_supported_p): Ditto.
4933         (ix86_preferred_simd_mode): Ditto.
4934         (ix86_get_mask_mode): Ditto.
4935         (ix86_simd_clone_compute_vecsize_and_simdlen): Disable 512 bit
4936         libmvec call when !TARGET_EVEX512.
4937         (ix86_simd_clone_usable): Ditto.
4938         * config/i386/i386.h (BIGGEST_ALIGNMENT): Disable 512 alignment
4939         when !TARGET_EVEX512
4940         (MOVE_MAX): Do not use PVW_512 when !TARGET_EVEX512.
4941         (STORE_MAX_PIECES): Ditto.
4943 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4945         * config/i386/i386-builtin.def (BDESC): Add
4946         OPTION_MASK_ISA2_EVEX512.
4948 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4950         * config/i386/i386-builtin.def (BDESC): Add
4951         OPTION_MASK_ISA2_EVEX512.
4953 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4955         * config/i386/i386-builtin.def (BDESC): Add
4956         OPTION_MASK_ISA2_EVEX512.
4958 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4960         * config/i386/i386-builtin.def (BDESC): Add
4961         OPTION_MASK_ISA2_EVEX512.
4963 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4965         * config/i386/i386-builtin.def (BDESC): Add
4966         OPTION_MASK_ISA2_EVEX512.
4967         * config/i386/i386-builtins.cc
4968         (ix86_init_mmx_sse_builtins): Ditto.
4970 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4971             Hu, Lin1  <lin1.hu@intel.com>
4973         * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit
4974         intrins.
4976 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
4978         * config.gcc: Add avx512bitalgvlintrin.h.
4979         * config/i386/avx5124fmapsintrin.h: Add evex512 target for 512 bit
4980         intrins.
4981         * config/i386/avx5124vnniwintrin.h: Ditto.
4982         * config/i386/avx512bf16intrin.h: Ditto.
4983         * config/i386/avx512bitalgintrin.h: Add evex512 target for 512 bit
4984         intrins. Split 128/256 bit intrins to avx512bitalgvlintrin.h.
4985         * config/i386/avx512erintrin.h: Add evex512 target for 512 bit
4986         intrins
4987         * config/i386/avx512ifmaintrin.h: Ditto
4988         * config/i386/avx512pfintrin.h: Ditto
4989         * config/i386/avx512vbmi2intrin.h: Ditto.
4990         * config/i386/avx512vbmiintrin.h: Ditto.
4991         * config/i386/avx512vnniintrin.h: Ditto.
4992         * config/i386/avx512vp2intersectintrin.h: Ditto.
4993         * config/i386/avx512vpopcntdqintrin.h: Ditto.
4994         * config/i386/gfniintrin.h: Ditto.
4995         * config/i386/immintrin.h: Add avx512bitalgvlintrin.h.
4996         * config/i386/vaesintrin.h: Add evex512 target for 512 bit intrins.
4997         * config/i386/vpclmulqdqintrin.h: Ditto.
4998         * config/i386/avx512bitalgvlintrin.h: New.
5000 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
5002         * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit
5003         intrins.
5005 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
5007         * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit
5008         intrins.
5010 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
5012         * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins.
5014 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
5016         * common/config/i386/i386-common.cc
5017         (OPTION_MASK_ISA2_EVEX512_SET): New.
5018         (OPTION_MASK_ISA2_EVEX512_UNSET): Ditto.
5019         (ix86_handle_option): Handle EVEX512.
5020         * config/i386/i386-c.cc
5021         (ix86_target_macros_internal): Handle EVEX512. Add __EVEX256__
5022         when AVX512VL is set.
5023         * config/i386/i386-options.cc: (isa2_opts): Handle EVEX512.
5024         (ix86_valid_target_attribute_inner_p): Ditto.
5025         (ix86_option_override_internal): Set EVEX512 target if it is not
5026         explicitly set when AVX512 is enabled. Disable
5027         AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512.
5028         * config/i386/i386.opt: Add mevex512. Temporaily RejectNegative.
5030 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
5032         PR target/88558
5033         * config/rs6000/rs6000.md (lrint<mode>di2): Remove TARGET_FPRND
5034         from insn condition.
5035         (lrint<mode>si2): New insn pattern for 32bit lrint.
5037 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
5039         PR target/88558
5040         * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached):
5041         Enable SImode on FP registers for P7.
5042         * config/rs6000/rs6000.md (*movsi_internal1): Add fmr for SImode
5043         move between FP registers.  Set attribute isa of stfiwx to "*"
5044         and attribute of stxsiwx to "p7".
5046 2023-10-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
5048         * config/s390/s390.md: Make use of new copysign RTL.
5050 2023-10-09  Hongyu Wang  <hongyu.wang@intel.com>
5052         * config/i386/sse.md (vec_concatv2di): Replace constraint "m"
5053         with "jm" for alternative 0 and 1 of operand 2.
5054         (sse4_1_<code><mode>3<mask_name>): Replace constraint "Bm" with
5055         "ja" for alternative 0 and 1 of operand2.
5057 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
5059         PR analyzer/111155
5060         * text-art/table.cc (table::maybe_set_cell_span): New.
5061         (table::add_other_table): New.
5062         * text-art/table.h (class table::cell_placement): Add class table
5063         as a friend.
5064         (table::add_rows): New.
5065         (table::add_row): Reimplement in terms of add_rows.
5066         (table::maybe_set_cell_span): New decl.
5067         (table::add_other_table): New decl.
5068         * text-art/types.h (operator+): New operator for rect + coord.
5070 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
5072         * genmatch.cc (main): Update for "m_" prefix of some fields of
5073         line_maps.
5074         * input.cc (make_location): Update for removal of
5075         COMBINE_LOCATION_DATA.
5076         (dump_line_table_statistics): Update for "m_" prefix of some
5077         fields of line_maps.
5078         (location_with_discriminator): Update for removal of
5079         COMBINE_LOCATION_DATA.
5080         (line_table_test::line_table_test): Update for "m_" prefix of some
5081         fields of line_maps.
5082         * toplev.cc (general_init): Likewise.
5083         * tree.cc (set_block): Update for removal of
5084         COMBINE_LOCATION_DATA.
5085         (set_source_range): Likewise.
5087 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
5089         * input.cc (make_location): Move implementation to
5090         line_maps::make_location.
5092 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
5094         PR driver/111700
5095         * input.cc (file_cache::add_file): Update leading comment to
5096         clarify that it can fail.
5097         (file_cache::lookup_or_add_file): Likewise.
5098         (file_cache::get_source_file_content): Gracefully handle
5099         lookup_or_add_file failing.
5101 2023-10-08  liuhongt  <hongtao.liu@intel.com>
5103         * config/i386/i386.cc (ix86_build_const_vector): Handle V2HF
5104         and V4HFmode.
5105         (ix86_build_signbit_mask): Ditto.
5106         * config/i386/mmx.md (mmxintvecmode): Ditto.
5107         (<code><mode>2): New define_expand.
5108         (*mmx_<code><mode>): New define_insn_and_split.
5109         (*mmx_nabs<mode>2): Ditto.
5110         (*mmx_andnot<mode>3): New define_insn.
5111         (<code><mode>3): Ditto.
5112         (copysign<mode>3): New define_expand.
5113         (xorsign<mode>3): Ditto.
5114         (signbit<mode>2): Ditto.
5116 2023-10-08  liuhongt  <hongtao.liu@intel.com>
5118         * config/i386/mmx.md (VHF_32_64): New mode iterator.
5119         (<insn><mode>3): New define_expand, merged from ..
5120         (<insn>v4hf3): .. this and
5121         (<insn>v2hf3): .. this.
5122         (movd_v2hf_to_sse_reg): New define_expand, splitted from ..
5123         (movd_v2hf_to_sse): .. this.
5124         (<code><mode>3): New define_expand.
5126 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
5128         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rldic): New function.
5129         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rldic.
5131 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
5133         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New
5134         function.
5135         (can_be_built_by_li_lis_and_rldicr): New function.
5136         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and
5137         can_be_built_by_li_lis_and_rldicl.
5139 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
5141         * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): New
5142         function.
5143         (can_be_built_by_li_and_rotldi): Rename to ...
5144         (can_be_built_by_li_lis_and_rotldi): ... this function.
5145         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rotldi.
5147 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
5149         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rotldi): New function.
5150         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rotldi.
5152 2023-10-08  Yanzhang Wang  <yanzhang.wang@intel.com>
5154         * config/riscv/linux.h: Pass the static-pie specific options to
5155         the linker.
5157 2023-10-07  Saurabh Jha  <saurabh.jha@arm.com>
5159         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add support for
5160         cortex-x4 core.
5161         * config/aarch64/aarch64-tune.md: Regenerated.
5162         * doc/invoke.texi: Add command-line option for cortex-x4 core.
5164 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5165             Hongyu Wang  <hongyu.wang@intel.com>
5166             Hongtao Liu  <hongtao.liu@intel.com>
5168         * config/i386/constraints.md (jb): New constraint for vsib memory
5169         that does not allow gpr32.
5170         * config/i386/i386.md: (setcc_<mode>_sse): Replace m to jm for avx
5171         alternative and set attr_gpr32 to 0.
5172         (movmsk_df): Split avx/noavx alternatives and  replace "r" to "jr" for
5173         avx alternative.
5174         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
5175         "m/Bm" to "jm/ja" for avx alternative, set its gpr32 attr to 0.
5176         (*rsqrtsf2_sse): Likewise.
5177         * config/i386/mmx.md (mmx_pmovmskb): Split alternative 1 to
5178         avx/noavx and assign jr/r constraint to dest.
5179         * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxsizesuffix>):
5180         Split avx/noavx alternatives and replace "r" to "jr" for avx alternative.
5181         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Likewise.
5182         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt): Likewise.
5183         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): Likewise.
5184         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift): Likewise.
5185         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): Likewise.
5186         (<sse2_avx2>_pmovmskb): Likewise.
5187         (*<sse2_avx2>_pmovmskb_zext): Likewise.
5188         (*sse2_pmovmskb_ext): Likewise.
5189         (*<sse2_avx2>_pmovmskb_lt): Likewise.
5190         (*<sse2_avx2>_pmovmskb_zext_lt): Likewise.
5191         (*sse2_pmovmskb_ext_lt): Likewise.
5192         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
5193         "m/Bm" to "jm/ja" for avx alternative, set its attr_gpr32 to 0.
5194         (sse_vmrcpv4sf2): Likewise.
5195         (*sse_vmrcpv4sf2): Likewise.
5196         (rsqrt<mode>2): Likewise.
5197         (sse_vmrsqrtv4sf2): Likewise.
5198         (*sse_vmrsqrtv4sf2): Likewise.
5199         (avx_h<insn>v4df3): Likewise.
5200         (sse3_hsubv2df3): Likewise.
5201         (avx_h<insn>v8sf3): Likewise.
5202         (sse3_h<insn>v4sf3): Likewise.
5203         (<sse3>_lddqu<avxsizesuffix>): Likewise.
5204         (avx_cmp<mode>3): Likewise.
5205         (avx_vmcmp<mode>3): Likewise.
5206         (*sse2_gt<mode>3): Likewise.
5207         (sse_ldmxcsr): Likewise.
5208         (sse_stmxcsr): Likewise.
5209         (avx_vtest<ssemodesuffix><avxsizesuffix>): Replace m to jm for
5210         avx alternative and set attr_gpr32 to 0.
5211         (avx2_permv2ti): Likewise.
5212         (*avx_vperm2f128<mode>_full): Likewise.
5213         (*avx_vperm2f128<mode>_nozero): Likewise.
5214         (vec_set_lo_v32qi): Likewise.
5215         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Likewise.
5216         (<avx_avx2>_maskstore<ssemodesuffix><avxsi)zesuffix>: Likewise.
5217         (avx_cmp<mode>3): Likewise.
5218         (avx_vmcmp<mode>3): Likewise.
5219         (*<sse>_maskcmp<mode>3_comm): Likewise.
5220         (*avx2_gathersi<VEC_GATHER_MODE:mode>): Replace Tv to jb and set
5221         attr_gpr32 to 0.
5222         (*avx2_gathersi<VEC_GATHER_MODE:mode>_2): Likewise.
5223         (*avx2_gatherdi<VEC_GATHER_MODE:mode>): Likewise.
5224         (*avx2_gatherdi<VEC_GATHER_MODE:mode>_2): Likewise.
5225         (*avx2_gatherdi<VI4F_256:mode>_3): Likewise.
5226         (*avx2_gatherdi<VI4F_256:mode>_4): Likewise.
5227         (avx_vbroadcastf128_<mode>): Restrict non-egpr alternative to
5228         noavx512vl, set its constraint to jm and set attr_gpr32 to 0.
5229         (vec_set_lo_<mode><mask_name>): Likewise.
5230         (vec_set_lo_<mode><mask_name>): Likewise for SF/SI modes.
5231         (vec_set_hi_<mode><mask_name>): Likewise.
5232         (vec_set_hi_<mode><mask_name>): Likewise for SF/SI modes.
5233         (vec_set_hi_<mode>): Likewise.
5234         (vec_set_lo_<mode>): Likewise.
5235         (avx2_set_hi_v32qi): Likewise.
5237 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5238             Hongyu Wang  <hongyu.wang@intel.com>
5239             Hongtao Liu  <hongtao.liu@intel.com>
5241         * config/i386/i386.md (*movhi_internal): Split out non-gpr
5242         supported pextrw with mem constraint to avx/noavx alternatives,
5243         set jm and attr gpr32 0 to the noavx alternative.
5244         (*mov<mode>_internal): Likewise.
5245         * config/i386/mmx.md (mmx_pshufbv8qi3): Change "r/m/Bm" to
5246         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative.
5247         (mmx_pshufbv4qi3): Likewise.
5248         (*mmx_pinsrd): Likewise.
5249         (*mmx_pinsrb): Likewise.
5250         (*pinsrb): Likewise.
5251         (mmx_pshufbv8qi3): Likewise.
5252         (mmx_pshufbv4qi3): Likewise.
5253         (@sse4_1_insertps_<mode>): Likewise.
5254         (*mmx_pextrw): Split altrenatives and map non-EGPR
5255         constraints, attr_gpr32 and attr_isa to noavx mnemonics.
5256         (*movv2qi_internal): Likewise.
5257         (*pextrw): Likewise.
5258         (*mmx_pextrb): Likewise.
5259         (*mmx_pextrb_zext): Likewise.
5260         (*pextrb): Likewise.
5261         (*pextrb_zext): Likewise.
5262         (vec_extractv2si_1): Likewise.
5263         (vec_extractv2si_1_zext): Likewise.
5264         * config/i386/sse.md: (vi128_h_r): New mode attr for
5265         pinsr{bw}/pextr{bw} with reg operand.
5266         (*abs<mode>2): Split altrenatives and %v in mnemonics, map
5267         non-EGPR constraints, gpr32 and isa attrs to noavx mnemonics.
5268         (*vec_extract<mode>): Likewise.
5269         (*vec_extract<mode>): Likewise for HFBF pattern.
5270         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
5271         (*vec_extractv4si_1): Likewise.
5272         (*vec_extractv4si_zext): Likewise.
5273         (*vec_extractv2di_1): Likewise.
5274         (*vec_concatv2si_sse4_1): Likewise.
5275         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
5276         (vec_concatv2di): Likewise.
5277         (*sse4_1_<code>v2qiv2di2<mask_name>_1): Likewise.
5278         (ssse3_avx2>_pshufb<mode>3<mask_name>): Change "r/m/Bm" to
5279         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative, split
5280         %v for avx/noavx alternatives if necessary.
5281         (*vec_concatv2sf_sse4_1): Likewise.
5282         (*sse4_1_extractps): Likewise.
5283         (vec_set<mode>_0): Likewise for VI4F_128.
5284         (*vec_setv4sf_sse4_1): Likewise.
5285         (@sse4_1_insertps<mode>): Likewise.
5286         (ssse3_pmaddubsw128): Likewise.
5287         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
5288         (<sse4_1_avx2>_packusdw<mask_name>): Likewise.
5289         (<ssse3_avx2>_palignr<mode>): Likewise.
5290         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
5291         (<sse4_1_avx2>_mpsadbw): Likewise.
5292         (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
5293         (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise.
5294         (*sse4_1_<code><mode>3<mask_name>): Likewise.
5295         (*<code>v8hi3): Likewise.
5296         (*<code>v16qi3): Likewise.
5297         (*sse4_1_<code>v8qiv8hi2<mask_name>_1): Likewise.
5298         (*sse4_1_zero_extendv8qiv8hi2_3): Likewise.
5299         (*sse4_1_zero_extendv8qiv8hi2_4): Likewise.
5300         (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
5301         (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
5302         (*sse4_1_zero_extendv4hiv4si2_3): Likewise.
5303         (*sse4_1_zero_extendv4hiv4si2_4): Likewise.
5304         (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
5305         (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
5306         (*sse4_1_zero_extendv2siv2di2_3): Likewise.
5307         (*sse4_1_zero_extendv2siv2di2_4): Likewise.
5308         (aesdec): Likewise.
5309         (aesdeclast): Likewise.
5310         (aesenc): Likewise.
5311         (aesenclast): Likewise.
5312         (pclmulqdq): Likewise.
5313         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
5314         (vgf2p8affineqb_<mode><mask_name>): Likewise.
5315         (vgf2p8mulb_<mode><mask_name>): Likewise.
5317 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5318             Hongyu Wang  <hongyu.wang@intel.com>
5319             Hongtao Liu  <hongtao.liu@intel.com>
5321         * config/i386/i386-protos.h (x86_evex_reg_mentioned_p): New
5322         prototype.
5323         * config/i386/i386.cc (x86_evex_reg_mentioned_p): New
5324         function.
5325         * config/i386/i386.md (sse4_1_round<mode>2): Set attr gpr32 0
5326         and constraint jm to all non-evex alternatives, adjust
5327         alternative outputs if evex reg is mentioned.
5328         * config/i386/sse.md (<sse4_1>_ptest<mode>): Set attr gpr32 0
5329         and constraint jm/ja to all non-evex alternatives.
5330         (ptesttf2): Likewise.
5331         (<sse4_1>_round<ssemodesuffix><avxsizesuffix): Likewise.
5332         (sse4_1_round<ssescalarmodesuffix>): Likewise.
5333         (sse4_2_pcmpestri): Likewise.
5334         (sse4_2_pcmpestrm): Likewise.
5335         (sse4_2_pcmpestr_cconly): Likewise.
5336         (sse4_2_pcmpistr): Likewise.
5337         (sse4_2_pcmpistri): Likewise.
5338         (sse4_2_pcmpistrm): Likewise.
5339         (sse4_2_pcmpistr_cconly): Likewise.
5340         (aesimc): Likewise.
5341         (aeskeygenassist): Likewise.
5343 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5344             Hongyu Wang  <hongyu.wang@intel.com>
5345             Hongtao Liu  <hongtao.liu@intel.com>
5347         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3): Set
5348         attr gpr32 0 and constraint jm/ja to all mem alternatives.
5349         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
5350         (ssse3_ph<plusminus_mnemonic>wv4hi3): Likewise.
5351         (avx2_ph<plusminus_mnemonic>dv8si3): Likewise.
5352         (ssse3_ph<plusminus_mnemonic>dv4si3): Likewise.
5353         (ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
5354         (<ssse3_avx2>_psign<mode>3): Likewise.
5355         (ssse3_psign<mode>3): Likewise.
5356         (<sse4_1>_blend<ssemodesuffix><avxsizesuffix): Likewise.
5357         (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix): Likewise.
5358         (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt): Likewise.
5359         (*<sse4_1>_blendv<ssefltmodesuff)ix><avxsizesuffix>_not_ltint: Likewise.
5360         (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise.
5361         (<sse4_1_avx2>_mpsadbw): Likewise.
5362         (<sse4_1_avx2>_pblendvb): Likewise.
5363         (*<sse4_1_avx2>_pblendvb_lt): Likewise.
5364         (sse4_1_pblend<ssemodesuffix>): Likewise.
5365         (*avx2_pblend<ssemodesuffix>): Likewise.
5366         (avx2_permv2ti): Likewise.
5367         (*avx_vperm2f128<mode>_nozero): Likewise.
5368         (*avx2_eq<mode>3): Likewise.
5369         (*sse4_1_eqv2di3): Likewise.
5370         (sse4_2_gtv2di3): Likewise.
5371         (avx2_gt<mode>3): Likewise.
5373 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5374             Hongyu Wang  <hongyu.wang@intel.com>
5375             Hongtao Liu  <hongtao.liu@intel.com>
5377         * config/i386/i386.md (<xsave>): Set attr gpr32 0 and constraint
5378         jm.
5379         (<xsave>_rex64): Likewise.
5380         (<xrstor>_rex64): Likewise.
5381         (<xrstor>64): Likewise.
5382         (fxsave64): Likewise.
5383         (fxstore64): Likewise.
5385 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
5386             Kong Lingling  <lingling.kong@intel.com>
5387             Hongtao Liu  <hongtao.liu@intel.com>
5389         * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used,
5390         adjust mnemonic for vmovduq/vmovdqa.
5391         * config/i386/sse.md (*<extract_type>_vinsert<shuffletype><extract_suf>_0):
5392         Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa.
5393         (avx_vec_concat<mode>): Likewise, and separate alternative 0 to
5394         avx_noavx512f.
5396 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5397             Hongyu Wang  <hongyu.wang@intel.com>
5398             Hongtao Liu  <hongtao.liu@intel.com>
5400         * config/i386/i386.cc (map_egpr_constraints): New funciton to
5401         map common constraints to EGPR prohibited constraints.
5402         (ix86_md_asm_adjust): Calls map_egpr_constraints.
5403         * config/i386/i386.opt: Add option mapx-inline-asm-use-gpr32.
5405 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5406             Hongyu Wang  <hongyu.wang@intel.com>
5407             Hongtao Liu  <hongtao.liu@intel.com>
5409         * config/i386/i386-protos.h (ix86_insn_base_reg_class): New
5410         prototype.
5411         (ix86_regno_ok_for_insn_base_p): Likewise.
5412         (ix86_insn_index_reg_class): Likewise.
5413         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
5414         New helper function to scan the insn.
5415         (ix86_insn_base_reg_class): New function to choose BASE_REG_CLASS.
5416         (ix86_regno_ok_for_insn_base_p): Likewise for base regno.
5417         (ix86_insn_index_reg_class): Likewise for INDEX_REG_CLASS.
5418         * config/i386/i386.h (INSN_BASE_REG_CLASS): Define.
5419         (REGNO_OK_FOR_INSN_BASE_P): Likewise.
5420         (INSN_INDEX_REG_CLASS): Likewise.
5421         (enum reg_class): Add INDEX_GPR16.
5422         (GENERAL_GPR16_REGNO_P): Define.
5423         * config/i386/i386.md (gpr32): New attribute.
5425 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5426             Hongyu Wang  <hongyu.wang@intel.com>
5427             Hongtao Liu  <hongtao.liu@intel.com>
5429         * config/i386/constraints.md (jr): New register constraint
5430         that prohibits EGPR.
5431         (jR): Constraint that force usage of EGPR.
5432         (jm): New memory constraint that prohibits EGPR.
5433         (ja): Likewise for Bm constraint.
5434         (jb): Likewise for Tv constraint.
5435         (j<): New auto-dec memory constraint that prohibits EGPR.
5436         (j>): Likewise for ">" constraint.
5437         (jo): Likewise for "o" constraint.
5438         (jv): Likewise for "V" constraint.
5439         (jp): Likewise for "p" constraint.
5440         * config/i386/i386.h (enum reg_class): Add new reg class
5441         GENERAL_GPR16.
5443 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5444             Hongyu Wang  <hongyu.wang@intel.com>
5445             Hongtao Liu  <hongtao.liu@intel.com>
5447         * config/i386/i386-protos.h (x86_extended_rex2reg_mentioned_p):
5448         New function prototype.
5449         * config/i386/i386.cc (regclass_map): Add mapping for 16 new
5450         general registers.
5451         (debugger64_register_map): Likewise.
5452         (ix86_conditional_register_usage): Clear REX2 register when APX
5453         disabled.
5454         (ix86_code_end): Add handling for REX2 reg.
5455         (print_reg): Likewise.
5456         (ix86_output_jmp_thunk_or_indirect): Likewise.
5457         (ix86_output_indirect_branch_via_reg): Likewise.
5458         (ix86_attr_length_vex_default): Likewise.
5459         (ix86_emit_save_regs): Adjust to allow saving r31.
5460         (ix86_register_priority): Set REX2 reg priority same as REX.
5461         (x86_extended_reg_mentioned_p): Add check for REX2 regs.
5462         (x86_extended_rex2reg_mentioned_p): New function.
5463         * config/i386/i386.h (CALL_USED_REGISTERS): Add new extended
5464         registers.
5465         (REG_ALLOC_ORDER): Likewise.
5466         (FIRST_REX2_INT_REG): Define.
5467         (LAST_REX2_INT_REG): Ditto.
5468         (GENERAL_REGS): Add 16 new registers.
5469         (INT_SSE_REGS): Likewise.
5470         (FLOAT_INT_REGS): Likewise.
5471         (FLOAT_INT_SSE_REGS): Likewise.
5472         (INT_MASK_REGS): Likewise.
5473         (ALL_REGS):Likewise.
5474         (REX2_INT_REG_P): Define.
5475         (REX2_INT_REGNO_P): Ditto.
5476         (GENERAL_REGNO_P): Add REX2_INT_REGNO_P.
5477         (REGNO_OK_FOR_INDEX_P): Ditto.
5478         (REG_OK_FOR_INDEX_NONSTRICT_P): Add new extended registers.
5479         * config/i386/i386.md: Add 16 new integer general
5480         registers.
5482 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5483             Hongyu Wang  <hongyu.wang@intel.com>
5484             Hongtao Liu  <hongtao.liu@intel.com>
5486         * common/config/i386/cpuinfo.h (XSTATE_APX_F): New macro.
5487         (XCR_APX_F_ENABLED_MASK): Likewise.
5488         (get_available_features): Detect APX_F under
5489         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_APX_F_SET): New.
5490         (OPTION_MASK_ISA2_APX_F_UNSET): Likewise.
5491         (ix86_handle_option): Handle -mapxf.
5492         * common/config/i386/i386-cpuinfo.h (FEATURE_APX_F): New.
5493         * common/config/i386/i386-isas.h: Add entry for APX_F.
5494         * config/i386/cpuid.h (bit_APX_F): New.
5495         * config/i386/i386.h (bit_APX_F): (TARGET_APX_EGPR,
5496         TARGET_APX_PUSH2POP2, TARGET_APX_NDD): New define.
5497         * config/i386/i386-opts.h (enum apx_features): New enum.
5498         * config/i386/i386-isa.def (APX_F): New DEF_PTA.
5499         * config/i386/i386-options.cc (ix86_function_specific_save):
5500         Save ix86_apx_features.
5501         (ix86_function_specific_restore): Restore it.
5502         (ix86_valid_target_attribute_inner_p): Add mapxf.
5503         (ix86_option_override_internal): Set ix86_apx_features for PTA
5504         and TARGET_APX_F. Also reports error when APX_F is set but not
5505         having TARGET_64BIT.
5506         * config/i386/i386.opt: (-mapxf): New ISA flag option.
5507         (-mapx=): New enumeration option.
5508         (apx_features): New enum type.
5509         (apx_none): New enum value.
5510         (apx_egpr): Likewise.
5511         (apx_push2pop2): Likewise.
5512         (apx_ndd): Likewise.
5513         (apx_all): Likewise.
5514         * doc/invoke.texi: Document mapxf.
5516 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
5517             Kong Lingling  <lingling.kong@intel.com>
5518             Hongtao Liu  <hongtao.liu@intel.com>
5520         * addresses.h (index_reg_class): New wrapper function like
5521         base_reg_class.
5522         * doc/tm.texi: Document INSN_INDEX_REG_CLASS.
5523         * doc/tm.texi.in: Ditto.
5524         * lra-constraints.cc (index_part_to_reg): Pass index_class.
5525         (process_address_1): Calls index_reg_class with curr_insn and
5526         replace INDEX_REG_CLASS with its return value index_cl.
5527         * reload.cc (find_reloads_address): Likewise.
5528         (find_reloads_address_1): Likewise.
5530 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
5531             Hongyu Wang  <hongyu.wang@intel.com>
5532             Hongtao Liu  <hongtao.liu@intel.com>
5534         * addresses.h (base_reg_class): Add insn argument and new macro
5535         INSN_BASE_REG_CLASS.
5536         (regno_ok_for_base_p_1): Add insn argument and new macro
5537         REGNO_OK_FOR_INSN_BASE_P.
5538         (regno_ok_for_base_p): Add insn argument and parse to ok_for_base_p_1.
5539         * doc/tm.texi: Document INSN_BASE_REG_CLASS and
5540         REGNO_OK_FOR_INSN_BASE_P.
5541         * doc/tm.texi.in: Ditto.
5542         * lra-constraints.cc (process_address_1): Pass insn to
5543         base_reg_class.
5544         (curr_insn_transform): Ditto.
5545         * reload.cc (find_reloads): Ditto.
5546         (find_reloads_address): Ditto.
5547         (find_reloads_address_1): Ditto.
5548         (find_reloads_subreg_address): Ditto.
5549         * reload1.cc (maybe_fix_stack_asms): Ditto.
5551 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
5553         PR target/108338
5554         * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
5555         for P9.
5557 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
5559         PR target/108338
5560         * config/rs6000/predicates.md (lowpart_subreg_operator): New
5561         define_predicate.
5562         * config/rs6000/rs6000.md (any_rshift): New code_iterator.
5563         (movsf_from_si2): Rename to ...
5564         (movsf_from_si2_<code>): ... this.
5566 2023-10-07  Pan Li  <pan2.li@intel.com>
5568         PR target/111634
5569         * config/riscv/riscv.cc (riscv_legitimize_address): Ensure
5570         object is a REG before extracting its' REGNO.
5572 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
5574         * config/i386/i386-expand.cc (ix86_split_ashl): Split shifts by
5575         one into add3_cc_overflow_1 followed by add3_carry.
5576         * config/i386/i386.md (@add<mode>3_cc_overflow_1): Renamed from
5577         "*add<mode>3_cc_overflow_1" to provide generator function.
5579 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
5580             Uros Bizjak  <ubizjak@gmail.com>
5582         * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used
5583         to perform left shifts into shorter instructions with -Oz.
5585 2023-10-06  Vineet Gupta  <vineetg@rivosinc.com>
5587         * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress.
5589 2023-10-06  Sandra Loosemore  <sandra@codesourcery.com>
5591         * doc/extend.texi (Function Attributes): Mention standard attribute
5592         syntax.
5593         (Variable Attributes): Likewise.
5594         (Type Attributes): Likewise.
5595         (Attribute Syntax): Likewise.
5597 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
5599         * config/gcn/gcn-valu.md (*mov<mode>): Convert to compact syntax.
5600         (mov<mode>_exec): Likewise.
5601         (mov<mode>_sgprbase): Likewise.
5602         * config/gcn/gcn.md (*mov<mode>_insn): Likewise.
5603         (*movti_insn): Likewise.
5605 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
5607         * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning.
5609 2023-10-06  Andrew Pinski  <pinskia@gmail.com>
5611         PR middle-end/111699
5612         * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
5613         (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE.
5615 2023-10-06  Jakub Jelinek  <jakub@redhat.com>
5617         * ipa-prop.h (ipa_bits): Remove.
5618         (struct ipa_jump_func): Remove bits member.
5619         (struct ipcp_transformation): Remove bits member, adjust
5620         ctor and dtor.
5621         (ipa_get_ipa_bits_for_value): Remove.
5622         * ipa-prop.cc (struct ipa_bit_ggc_hash_traits): Remove.
5623         (ipa_bits_hash_table): Remove.
5624         (ipa_print_node_jump_functions_for_edge): Don't print bits.
5625         (ipa_get_ipa_bits_for_value): Remove.
5626         (ipa_set_jfunc_bits): Remove.
5627         (ipa_compute_jump_functions_for_edge): For pointers query
5628         pointer alignment before ipa_set_jfunc_vr and update_bitmask
5629         in there.  For integral types, just rely on bitmask already
5630         being handled in value ranges.
5631         (ipa_check_create_edge_args): Don't create ipa_bits_hash_table.
5632         (ipcp_transformation_initialize): Neither here.
5633         (ipcp_transformation_t::duplicate): Don't copy bits vector.
5634         (ipa_write_jump_function): Don't stream bits here.
5635         (ipa_read_jump_function): Neither here.
5636         (useful_ipcp_transformation_info_p): Don't test bits vec.
5637         (write_ipcp_transformation_info): Don't stream bits here.
5638         (read_ipcp_transformation_info): Neither here.
5639         (ipcp_get_parm_bits): Get mask and value from m_vr rather
5640         than bits.
5641         (ipcp_update_bits): Remove.
5642         (ipcp_update_vr): For pointers, set_ptr_info_alignment from
5643         bitmask stored in value range.
5644         (ipcp_transform_function): Don't test bits vector, don't call
5645         ipcp_update_bits.
5646         * ipa-cp.cc (propagate_bits_across_jump_function): Don't use
5647         jfunc->bits, instead get mask and value from jfunc->m_vr.
5648         (ipcp_store_bits_results): Remove.
5649         (ipcp_store_vr_results): Incorporate parts of
5650         ipcp_store_bits_results here, merge the bitmasks with value
5651         range if both are supplied.
5652         (ipcp_driver): Don't call ipcp_store_bits_results.
5653         * ipa-sra.cc (zap_useless_ipcp_results): Remove *ts->bits
5654         clearing.
5656 2023-10-06  Pan Li  <pan2.li@intel.com>
5658         * config/riscv/autovec.md: Update comments.
5660 2023-10-05  John David Anglin  <danglin@gcc.gnu.org>
5662         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete.
5664 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
5666         * timevar.def (TV_TREE_FAST_VRP): New.
5667         * tree-pass.h (make_pass_fast_vrp): New prototype.
5668         * tree-vrp.cc (class fvrp_folder): New.
5669         (fvrp_folder::fvrp_folder): New.
5670         (fvrp_folder::~fvrp_folder): New.
5671         (fvrp_folder::value_of_expr): New.
5672         (fvrp_folder::value_on_edge): New.
5673         (fvrp_folder::value_of_stmt): New.
5674         (fvrp_folder::pre_fold_bb): New.
5675         (fvrp_folder::post_fold_bb): New.
5676         (fvrp_folder::pre_fold_stmt): New.
5677         (fvrp_folder::fold_stmt): New.
5678         (execute_fast_vrp): New.
5679         (pass_data_fast_vrp): New.
5680         (pass_vrp:execute): Check for fast VRP pass.
5681         (make_pass_fast_vrp): New.
5683 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
5685         * gimple-range.cc (dom_ranger::dom_ranger): New.
5686         (dom_ranger::~dom_ranger): New.
5687         (dom_ranger::range_of_expr): New.
5688         (dom_ranger::edge_range): New.
5689         (dom_ranger::range_on_edge): New.
5690         (dom_ranger::range_in_bb): New.
5691         (dom_ranger::range_of_stmt): New.
5692         (dom_ranger::maybe_push_edge): New.
5693         (dom_ranger::pre_bb): New.
5694         (dom_ranger::post_bb): New.
5695         * gimple-range.h (class dom_ranger): New.
5697 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
5699         * gimple-range-gori.cc (gori_stmt_info::gori_stmt_info): New.
5700         (gori_calc_operands): New.
5701         (gori_on_edge): New.
5702         (gori_name_helper): New.
5703         (gori_name_on_edge): New.
5704         * gimple-range-gori.h (gori_on_edge): New prototype.
5705         (gori_name_on_edge): New prototype.
5707 2023-10-05  Sergei Trofimovich  <siarheit@google.com>
5709         PR ipa/111283
5710         PR gcov-profile/111559
5711         * ipa-utils.cc (ipa_merge_profiles): Avoid producing
5712         uninitialized probabilities when merging counters with zero
5713         denominators.
5715 2023-10-05  Uros Bizjak  <ubizjak@gmail.com>
5717         PR target/111657
5718         * config/i386/i386-expand.cc (alg_usable_p): Reject libcall
5719         strategy for non-default address spaces.
5720         (decide_alg): Use loop strategy as a fallback strategy for
5721         non-default address spaces.
5723 2023-10-05  Jakub Jelinek  <jakub@redhat.com>
5725         * sreal.cc (verify_aritmetics): Rename to ...
5726         (verify_arithmetics): ... this.
5727         (sreal_verify_arithmetics): Adjust caller.
5729 2023-10-05  Martin Jambor  <mjambor@suse.cz>
5731         Revert:
5732         2023-10-03  Martin Jambor  <mjambor@suse.cz>
5734         PR ipa/108007
5735         * cgraph.h (cgraph_edge): Add a parameter to
5736         redirect_call_stmt_to_callee.
5737         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
5738         parameter to modify_call.
5739         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
5740         parameter killed_ssas, pass it to padjs->modify_call.
5741         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
5742         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
5743         Instead of substituting uses, invoke purge_transitive_uses.  If
5744         hash of killed SSAs has not been provided, create a temporary one
5745         and release SSAs that have been added to it.
5746         * tree-inline.cc (redirect_all_calls): Create
5747         id->killed_new_ssa_names earlier, pass it to edge redirection,
5748         adjust a comment.
5749         (copy_body): Release SSAs in id->killed_new_ssa_names.
5751 2023-10-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5753         * config/riscv/autovec.md (@vec_series<mode>): Remove @.
5754         (vec_series<mode>): Ditto.
5755         * config/riscv/riscv-v.cc (expand_const_vector): Ditto.
5756         (shuffle_decompress_patterns): Ditto.
5758 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
5760         * config/arc/arc-passes.def: Remove arc_ifcvt pass.
5761         * config/arc/arc-protos.h (arc_ccfsm_branch_deleted_p): Remove.
5762         (arc_ccfsm_record_branch_deleted): Likewise.
5763         (arc_ccfsm_cond_exec_p): Likewise.
5764         (arc_ccfsm): Likewise.
5765         (arc_ccfsm_record_condition): Likewise.
5766         (make_pass_arc_ifcvt): Likewise.
5767         * config/arc/arc.cc (arc_ccfsm): Remove.
5768         (arc_ccfsm_current): Likewise.
5769         (ARC_CCFSM_BRANCH_DELETED_P): Likewise.
5770         (ARC_CCFSM_RECORD_BRANCH_DELETED): Likewise.
5771         (ARC_CCFSM_COND_EXEC_P): Likewise.
5772         (CCFSM_ISCOMPACT): Likewise.
5773         (CCFSM_DBR_ISCOMPACT): Likewise.
5774         (machine_function): Remove ccfsm related fields.
5775         (arc_ifcvt): Remove pass.
5776         (arc_print_operand): Remove `#` punct operand and other ccfsm
5777         related code.
5778         (arc_ccfsm_advance): Remove.
5779         (arc_ccfsm_at_label): Likewise.
5780         (arc_ccfsm_record_condition): Likewise.
5781         (arc_ccfsm_post_advance): Likewise.
5782         (arc_ccfsm_branch_deleted_p): Likewise.
5783         (arc_ccfsm_record_branch_deleted): Likewise.
5784         (arc_ccfsm_cond_exec_p): Likewise.
5785         (arc_get_ccfsm_cond): Likewise.
5786         (arc_final_prescan_insn): Remove ccfsm references.
5787         (arc_internal_label): Likewise.
5788         (arc_reorg): Likewise.
5789         (arc_output_libcall): Likewise.
5790         * config/arc/arc.md: Remove ccfsm references and update related
5791         instruction patterns.
5793 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
5795         * config/arc/arc.cc (arc_init): Remove '^' punct char.
5796         (arc_print_operand): Remove related code.
5797         * config/arc/arc.md: Update patterns which uses '%&'.
5799 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
5801         * config/arc/arc-protos.h (arc_clear_unalign): Remove.
5802         (arc_toggle_unalign): Likewise.
5803         * config/arc/arc.cc (machine_function) Remove unalign.
5804         (arc_init): Remove `&` punct character.
5805         (arc_print_operand): Remove `&` related functions.
5806         (arc_verify_short): Update function's number of parameters.
5807         (output_short_suffix): Update function.
5808         (arc_short_long): Likewise.
5809         (arc_clear_unalign): Remove.
5810         (arc_toggle_unalign): Likewise.
5811         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Remove.
5812         (ASM_OUTPUT_ALIGN): Update.
5813         * config/arc/arc.md: Remove all `%&` references.
5814         * config/arc/arc.opt (mannotate-align): Ignore option.
5815         * doc/invoke.texi (mannotate-align): Update description.
5817 2023-10-05  Richard Biener  <rguenther@suse.de>
5819         * tree-vect-slp.cc (vect_build_slp_tree_1): Do not
5820         ask for internal_fn_p (CFN_LAST).
5822 2023-10-05  Richard Biener  <rguenther@suse.de>
5824         * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not
5825         visited value numbers are available itself.
5827 2023-10-05  Richard Biener  <rguenther@suse.de>
5829         PR ipa/111643
5830         * doc/extend.texi (attribute flatten): Clarify.
5832 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
5834         * config/arc/arc-protos.h (emit_shift): Delete prototype.
5835         (arc_pre_reload_split): New function prototype.
5836         * config/arc/arc.cc (emit_shift): Delete function.
5837         (arc_pre_reload_split): New predicate function, copied from i386,
5838         to schedule define_insn_and_split splitters to the split1 pass.
5839         * config/arc/arc.md (ashlsi3): Expand RTL template unconditionally.
5840         (ashrsi3): Likewise.
5841         (lshrsi3): Likewise.
5842         (shift_si3): Move after other shift patterns, and disable when
5843         operands[2] is one (which is handled by its own define_insn).
5844         Use shiftr4_operator, instead of shift4_operator, as this is no
5845         longer used for left shifts.
5846         (shift_si3_loop): Likewise.  Additionally remove match_scratch.
5847         (*ashlsi3_nobs): New pre-reload define_insn_and_split.
5848         (*ashrsi3_nobs): Likewise.
5849         (*lshrsi3_nobs): Likewise.
5850         (rotrsi3_cnt1): Rename define_insn from *rotrsi3_cnt1.
5851         (add_shift): Rename define_insn from *add_shift.
5852         * config/arc/predicates.md (shiftl4_operator): Delete.
5853         (shift4_operator): Delete.
5855 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
5857         * config/arc/arc.md (ashlsi3_cnt1): Rename define_insn *ashlsi2_cnt1.
5858         Change type attribute to "unary", as this doesn't have operands[2].
5859         Change length attribute to "*,4" to allow compact representation.
5860         (lshrsi3_cnt1): Rename define_insn from *lshrsi3_cnt1.  Change
5861         insn type attribute to "unary", as this doesn't have operands[2].
5862         (ashrsi3_cnt1): Rename define_insn from *ashrsi3_cnt1.  Change
5863         insn type attribute to "unary", as this doesn't have operands[2].
5865 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
5867         PR rtl-optimization/110701
5868         * combine.cc (record_dead_and_set_regs_1): Split comment into
5869         pieces placed before the relevant clauses.  When the SET_DEST
5870         is a partial_subreg_p, mark the bits outside of the updated
5871         portion of the destination as undefined.
5873 2023-10-04  Kito Cheng  <kito.cheng@sifive.com>
5875         PR bootstrap/111664
5876         * opt-read.awk: Drop multidimensional arrays.
5877         * opth-gen.awk: Ditto.
5879 2023-10-04  Xi Ruoyao  <xry111@xry111.site>
5881         * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
5882         (copysign<mode>3): Use copysign RTL instead of UNSPEC.
5884 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
5886         PR middle-end/111369
5887         * match.pd (x == cstN ? cst4 : cst3): Use
5888         build_nonstandard_integer_type only if type1 is BOOLEAN_TYPE.
5889         Fix comment typo.  Formatting fix.
5890         (a?~t:t -> (-(a))^t): Always convert to type rather
5891         than using build_nonstandard_integer_type.  Perform negation
5892         only if type has precision > 1 and is not signed BOOLEAN_TYPE.
5894 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
5896         PR tree-optimization/111668
5897         * match.pd (a ? CST1 : CST2): Handle the a ? -1 : 0 and
5898         a ? 0 : -1 cases before the powerof2cst cases and differentiate
5899         between 1-bit precision types, larger precision boolean types
5900         and other integral types.  Fix comment pastos and formatting.
5902 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
5904         * tree-ssanames.cc (set_range_info): Use get_ptr_info for
5905         pointers rather than range_info_get_range.
5907 2023-10-03  Martin Jambor  <mjambor@suse.cz>
5909         * ipa-modref.h (modref_summary::dump): Make const.
5910         * ipa-modref.cc (modref_summary::dump): Likewise.
5911         (dump_lto_records): Dump to out instead of dump_file.
5913 2023-10-03  Martin Jambor  <mjambor@suse.cz>
5915         PR ipa/110378
5916         * ipa-param-manipulation.cc
5917         (ipa_param_body_adjustments::mark_dead_statements): Verify that any
5918         return uses of PARAM will be removed.
5919         (ipa_param_body_adjustments::mark_clobbers_dead): Likewise.
5920         * ipa-sra.cc (isra_param_desc): New fields
5921         remove_only_when_retval_removed and split_only_when_retval_removed.
5922         (struct gensum_param_desc): Likewise.  Fix comment long line.
5923         (ipa_sra_function_summaries::duplicate): Copy the new flags.
5924         (dump_gensum_param_descriptor): Dump the new flags.
5925         (dump_isra_param_descriptor): Likewise.
5926         (isra_track_scalar_value_uses): New parameter desc.  Set its flag
5927         remove_only_when_retval_removed when encountering a simple return.
5928         (isra_track_scalar_param_local_uses): Replace parameter call_uses_p
5929         with desc.  Pass it to isra_track_scalar_value_uses and set its
5930         call_uses.
5931         (ptr_parm_has_nonarg_uses): Accept parameter descriptor as a
5932         parameter.  If there is a direct return use, mark any..
5933         (create_parameter_descriptors): Pass the whole parameter descriptor to
5934         isra_track_scalar_param_local_uses and ptr_parm_has_nonarg_uses.
5935         (process_scan_results): Copy the new flags.
5936         (isra_write_node_summary): Stream the new flags.
5937         (isra_read_node_info): Likewise.
5938         (adjust_parameter_descriptions): Check that transformations
5939         requring return removal only happen when return value is removed.
5940         Restructure main loop.  Adjust dump message.
5942 2023-10-03  Martin Jambor  <mjambor@suse.cz>
5944         PR ipa/108007
5945         * cgraph.h (cgraph_edge): Add a parameter to
5946         redirect_call_stmt_to_callee.
5947         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
5948         parameter to modify_call.
5949         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
5950         parameter killed_ssas, pass it to padjs->modify_call.
5951         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
5952         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
5953         Instead of substituting uses, invoke purge_transitive_uses.  If
5954         hash of killed SSAs has not been provided, create a temporary one
5955         and release SSAs that have been added to it.
5956         * tree-inline.cc (redirect_all_calls): Create
5957         id->killed_new_ssa_names earlier, pass it to edge redirection,
5958         adjust a comment.
5959         (copy_body): Release SSAs in id->killed_new_ssa_names.
5961 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
5963         * passes.def (pass_vrp): Pass "final pass" flag as parameter.
5964         * tree-vrp.cc (vrp_pass_num): Remove.
5965         (pass_vrp::my_pass): Remove.
5966         (pass_vrp::pass_vrp): Add warn_p as a parameter.
5967         (pass_vrp::final_p): New.
5968         (pass_vrp::set_pass_param): Set final_p param.
5969         (pass_vrp::execute): Call execute_range_vrp with no conditions.
5970         (make_pass_vrp): Pass additional parameter.
5971         (make_pass_early_vrp): Ditto.
5973 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
5975         * tree-ssanames.cc (set_range_info): Return true only if the
5976         current value changes.
5978 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
5980         * diagnostic.cc (diagnostic_set_info_translated): Update for "m_"
5981         prefixes to text_info fields.
5982         (diagnostic_report_diagnostic): Likewise.
5983         (verbatim): Use text_info ctor.
5984         (simple_diagnostic_path::add_event): Likewise.
5985         (simple_diagnostic_path::add_thread_event): Likewise.
5986         * dumpfile.cc (dump_pretty_printer::decode_format): Update for
5987         "m_" prefixes to text_info fields.
5988         (dump_context::dump_printf_va): Use text_info ctor.
5989         * graphviz.cc (graphviz_out::graphviz_out): Use text_info ctor.
5990         (graphviz_out::print): Likewise.
5991         * opt-problem.cc (opt_problem::opt_problem): Likewise.
5992         * pretty-print.cc (pp_format): Update for "m_" prefixes to
5993         text_info fields.
5994         (pp_printf): Use text_info ctor.
5995         (pp_verbatim): Likewise.
5996         (assert_pp_format_va): Likewise.
5997         * pretty-print.h (struct text_info): Add ctors.  Add "m_" prefix
5998         to all fields.
5999         * text-art/styled-string.cc (styled_string::from_fmt_va): Use
6000         text_info ctor.
6001         * tree-diagnostic.cc (default_tree_printer): Update for "m_"
6002         prefixes to text_info fields.
6003         * tree-pretty-print.h (pp_ti_abstract_origin): Likewise.
6005 2023-10-03  Roger Sayle  <roger@nextmovesoftware.com>
6007         * config/arc/arc.md (CC_ltu): New mode iterator for CC and CC_C.
6008         (scc_ltu_<mode>): New define_insn to handle LTU form of scc_insn.
6009         (*scc_insn): Don't split to a conditional move sequence for LTU.
6011 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
6013         * config/aarch64/aarch64.md (@ccmp<CC_ONLY:mode><GPI:mode>)
6014         (@ccmp<CC_ONLY:mode><GPI:mode>_rev, *call_insn, *call_value_insn)
6015         (*mov<mode>_aarch64, load_pair_sw_<SX:mode><SX2:mode>)
6016         (load_pair_dw_<DX:mode><DX2:mode>)
6017         (store_pair_sw_<SX:mode><SX2:mode>)
6018         (store_pair_dw_<DX:mode><DX2:mode>, *extendsidi2_aarch64)
6019         (*zero_extendsidi2_aarch64, *load_pair_zero_extendsidi2_aarch64)
6020         (*extend<SHORT:mode><GPI:mode>2_aarch64)
6021         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64)
6022         (*extendqihi2_aarch64, *zero_extendqihi2_aarch64)
6023         (*add<mode>3_aarch64, *addsi3_aarch64_uxtw, *add<mode>3_poly_1)
6024         (add<mode>3_compare0, *addsi3_compare0_uxtw)
6025         (*add<mode>3_compareC_cconly, add<mode>3_compareC)
6026         (*add<mode>3_compareV_cconly_imm, add<mode>3_compareV_imm)
6027         (*add<mode>3nr_compare0, subdi3, subv<GPI:mode>_imm)
6028         (*cmpv<GPI:mode>_insn, sub<mode>3_compare1_imm, neg<mode>2)
6029         (cmp<mode>, fcmp<mode>, fcmpe<mode>, *cmov<mode>_insn)
6030         (*cmovsi_insn_uxtw, <optab><mode>3, *<optab>si3_uxtw)
6031         (*and<mode>3_compare0, *andsi3_compare0_uxtw, one_cmpl<mode>2)
6032         (*<NLOGICAL:optab>_one_cmpl<mode>3, *and<mode>3nr_compare0)
6033         (*aarch64_ashl_sisd_or_int_<mode>3)
6034         (*aarch64_lshr_sisd_or_int_<mode>3)
6035         (*aarch64_ashr_sisd_or_int_<mode>3, *ror<mode>3_insn)
6036         (*<optab>si3_insn_uxtw, <optab>_trunc<fcvt_target><GPI:mode>2)
6037         (<optab><fcvt_target><GPF:mode>2)
6038         (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3)
6039         (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3)
6040         (*aarch64_<optab><mode>3_cssc, copysign<GPF:mode>3_insn): Update
6041         to new syntax.
6042         * config/aarch64/aarch64-sve2.md (@aarch64_scatter_stnt<mode>)
6043         (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
6044         (*aarch64_mul_unpredicated_<mode>)
6045         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>_2)
6046         (*cond_<sve_int_op><mode>_3, *cond_<sve_int_op><mode>_any)
6047         (*cond_<sve_int_op><mode>_z, @aarch64_pred_<sve_int_op><mode>)
6048         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_3)
6049         (*cond_<sve_int_op><mode>_any, @aarch64_sve_<sve_int_op><mode>)
6050         (@aarch64_sve_<sve_int_op>_lane_<mode>)
6051         (@aarch64_sve_add_mul_lane_<mode>)
6052         (@aarch64_sve_sub_mul_lane_<mode>, @aarch64_sve2_xar<mode>)
6053         (*aarch64_sve2_bcax<mode>, @aarch64_sve2_eor3<mode>)
6054         (*aarch64_sve2_nor<mode>, *aarch64_sve2_nand<mode>)
6055         (*aarch64_sve2_bsl<mode>, *aarch64_sve2_nbsl<mode>)
6056         (*aarch64_sve2_bsl1n<mode>, *aarch64_sve2_bsl2n<mode>)
6057         (*aarch64_sve2_sra<mode>, @aarch64_sve_add_<sve_int_op><mode>)
6058         (*aarch64_sve2_<su>aba<mode>, @aarch64_sve_add_<sve_int_op><mode>)
6059         (@aarch64_sve_add_<sve_int_op>_lane_<mode>)
6060         (@aarch64_sve_qadd_<sve_int_op><mode>)
6061         (@aarch64_sve_qadd_<sve_int_op>_lane_<mode>)
6062         (@aarch64_sve_sub_<sve_int_op><mode>)
6063         (@aarch64_sve_sub_<sve_int_op>_lane_<mode>)
6064         (@aarch64_sve_qsub_<sve_int_op><mode>)
6065         (@aarch64_sve_qsub_<sve_int_op>_lane_<mode>)
6066         (@aarch64_sve_<sve_fp_op><mode>, @aarch64_<sve_fp_op>_lane_<mode>)
6067         (@aarch64_pred_<sve_int_op><mode>)
6068         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_int_op><mode>_2)
6069         (*cond_<sve_int_op><mode>_z, @aarch64_sve_<optab><mode>)
6070         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_<optab><mode>)
6071         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<sve_fp_op><mode>)
6072         (*cond_<sve_fp_op><mode>_any_relaxed)
6073         (*cond_<sve_fp_op><mode>_any_strict)
6074         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>)
6075         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_fp_op><mode>)
6076         (*cond_<sve_fp_op><mode>_strict): Update to new syntax.
6077         * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_ldr_str)
6078         (*aarch64_sve_mov<mode>_no_ldr_str, @aarch64_pred_mov<mode>)
6079         (*aarch64_sve_mov<mode>, aarch64_wrffr)
6080         (mask_scatter_store<mode><v_int_container>)
6081         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
6082         (*mask_scatter_store<mode><v_int_container>_sxtw)
6083         (*mask_scatter_store<mode><v_int_container>_uxtw)
6084         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
6085         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
6086         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
6087         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
6088         (*vec_duplicate<mode>_reg, vec_shl_insert_<mode>)
6089         (vec_series<mode>, @extract_<last_op>_<mode>)
6090         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
6091         (*cond_<optab><mode>_any, @aarch64_pred_<optab><mode>)
6092         (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>)
6093         (@cond_<optab><mode>)
6094         (*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2)
6095         (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
6096         (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
6097         (*cond_uxt<mode>_2, *cond_uxt<mode>_any, *cnot<mode>)
6098         (*cond_cnot<mode>_2, *cond_cnot<mode>_any)
6099         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
6100         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
6101         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
6102         (*cond_<optab><mode>_2, *cond_<optab><mode>_3)
6103         (*cond_<optab><mode>_any, add<mode>3, sub<mode>3)
6104         (@aarch64_pred_<su>abd<mode>, *aarch64_cond_<su>abd<mode>_2)
6105         (*aarch64_cond_<su>abd<mode>_3, *aarch64_cond_<su>abd<mode>_any)
6106         (@aarch64_sve_<optab><mode>, @aarch64_pred_<optab><mode>)
6107         (*cond_<optab><mode>_2, *cond_<optab><mode>_z)
6108         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
6109         (*cond_<optab><mode>_3, *cond_<optab><mode>_any, <optab><mode>3)
6110         (*cond_bic<mode>_2, *cond_bic<mode>_any)
6111         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_const)
6112         (*cond_<optab><mode>_any_const, *cond_<sve_int_op><mode>_m)
6113         (*cond_<sve_int_op><mode>_z, *sdiv_pow2<mode>3)
6114         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_any)
6115         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
6116         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
6117         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
6118         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
6119         (*cond_<optab><mode>_2_const_relaxed)
6120         (*cond_<optab><mode>_2_const_strict)
6121         (*cond_<optab><mode>_3_relaxed, *cond_<optab><mode>_3_strict)
6122         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
6123         (*cond_<optab><mode>_any_const_relaxed)
6124         (*cond_<optab><mode>_any_const_strict)
6125         (@aarch64_pred_<optab><mode>, *cond_add<mode>_2_const_relaxed)
6126         (*cond_add<mode>_2_const_strict)
6127         (*cond_add<mode>_any_const_relaxed)
6128         (*cond_add<mode>_any_const_strict, @aarch64_pred_<optab><mode>)
6129         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
6130         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
6131         (@aarch64_pred_<optab><mode>, *cond_sub<mode>_3_const_relaxed)
6132         (*cond_sub<mode>_3_const_strict, *cond_sub<mode>_const_relaxed)
6133         (*cond_sub<mode>_const_strict, *aarch64_pred_abd<mode>_relaxed)
6134         (*aarch64_pred_abd<mode>_strict)
6135         (*aarch64_cond_abd<mode>_2_relaxed)
6136         (*aarch64_cond_abd<mode>_2_strict)
6137         (*aarch64_cond_abd<mode>_3_relaxed)
6138         (*aarch64_cond_abd<mode>_3_strict)
6139         (*aarch64_cond_abd<mode>_any_relaxed)
6140         (*aarch64_cond_abd<mode>_any_strict, @aarch64_pred_<optab><mode>)
6141         (@aarch64_pred_fma<mode>, *cond_fma<mode>_2, *cond_fma<mode>_4)
6142         (*cond_fma<mode>_any, @aarch64_pred_fnma<mode>)
6143         (*cond_fnma<mode>_2, *cond_fnma<mode>_4, *cond_fnma<mode>_any)
6144         (<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
6145         (@<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
6146         (@aarch64_sve_add_<optab><vsi2qi>, @aarch64_pred_<optab><mode>)
6147         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
6148         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
6149         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
6150         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<optab><mode>)
6151         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
6152         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
6153         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_tmad<mode>)
6154         (@aarch64_sve_<sve_fp_op>vnx4sf)
6155         (@aarch64_sve_<sve_fp_op>_lanevnx4sf)
6156         (@aarch64_sve_<sve_fp_op><mode>, *vcond_mask_<mode><vpred>)
6157         (@aarch64_sel_dup<mode>, @aarch64_pred_cmp<cmp_op><mode>)
6158         (*cmp<cmp_op><mode>_cc, *cmp<cmp_op><mode>_ptest)
6159         (@aarch64_pred_fcm<cmp_op><mode>, @fold_extract_<last_op>_<mode>)
6160         (@aarch64_fold_extract_vector_<last_op>_<mode>)
6161         (@aarch64_sve_splice<mode>)
6162         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>)
6163         (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
6164         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed)
6165         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict)
6166         (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
6167         (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>)
6168         (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
6169         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed)
6170         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict)
6171         (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
6172         (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
6173         (*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
6174         (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
6175         (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
6176         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
6177         (*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
6178         (@aarch64_brk<brk_op>, *aarch64_sve_<inc_dec><mode>_cntp): Update
6179         to new syntax.
6180         * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>)
6181         (load_pair<DREG:mode><DREG2:mode>)
6182         (vec_store_pair<DREG:mode><DREG2:mode>, aarch64_simd_stp<mode>)
6183         (aarch64_simd_mov_from_<mode>low)
6184         (aarch64_simd_mov_from_<mode>high, and<mode>3<vczle><vczbe>)
6185         (ior<mode>3<vczle><vczbe>, aarch64_simd_ashr<mode><vczle><vczbe>)
6186         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>)
6187         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>)
6188         (aarch64_simd_bsldi_internal, aarch64_simd_bsldi_alt)
6189         (store_pair_lanes<mode>, *aarch64_combine_internal<mode>)
6190         (*aarch64_combine_internal_be<mode>, *aarch64_combinez<mode>)
6191         (*aarch64_combinez_be<mode>)
6192         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_cm<optab>di)
6193         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_mov<mode>)
6194         (*aarch64_be_mov<mode>, *aarch64_be_movoi): Update to new syntax.
6196 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
6198         * gensupport.cc (convert_syntax): Skip spaces before "cons:"
6199         in new compact pattern syntax.
6201 2023-10-03  Richard Sandiford  <richard.sandiford@arm.com>
6203         * gensupport.cc (convert_syntax): Updated to support unordered
6204         constraints in compact syntax.
6206 2023-10-02  Michael Meissner  <meissner@linux.ibm.com>
6208         * config/rs6000/rs6000.md (UNSPEC_COPYSIGN): Delete.
6209         (copysign<mode>3_fcpsg): Use copysign RTL instead of UNSPEC.
6210         (copysign<mode>3_hard): Likewise.
6211         (copysign<mode>3_soft): Likewise.
6212         * config/rs6000/vector.md (vector_copysign<mode>3): Use copysign RTL
6213         instead of UNSPEC.
6214         * config/rs6000/vsx.md (vsx_copysign<mode>3): Use copysign RTL instead
6215         of UNSPEC.
6217 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
6219         * diagnostic-format-json.cc (toplevel_array): Remove global in
6220         favor of json_output_format::m_top_level_array.
6221         (cur_group): Likewise, for json_output_format::m_cur_group.
6222         (cur_children_array): Likewise, for
6223         json_output_format::m_cur_children_array.
6224         (class json_output_format): New.
6225         (json_begin_diagnostic): Remove, in favor of
6226         json_output_format::on_begin_diagnostic.
6227         (json_end_diagnostic): Convert to...
6228         (json_output_format::on_end_diagnostic): ...this.
6229         (json_begin_group): Remove, in favor of
6230         json_output_format::on_begin_group.
6231         (json_end_group): Remove, in favor of
6232         json_output_format::on_end_group.
6233         (json_flush_to_file): Remove, in favor of
6234         json_output_format::flush_to_file.
6235         (json_stderr_final_cb): Remove, in favor of json_output_format
6236         dtor.
6237         (json_output_base_file_name): Remove global.
6238         (class json_stderr_output_format): New.
6239         (json_file_final_cb): Remove.
6240         (class json_file_output_format): New.
6241         (json_emit_diagram): Remove.
6242         (diagnostic_output_format_init_json): Update.
6243         (diagnostic_output_format_init_json_file): Update.
6244         * diagnostic-format-sarif.cc (the_builder): Remove this global,
6245         moving to a field of the sarif_output_format.
6246         (sarif_builder::maybe_make_artifact_content_object): Use the
6247         context's m_file_cache.
6248         (get_source_lines): Convert to...
6249         (sarif_builder::get_source_lines): ...this, using context's
6250         m_file_cache.
6251         (sarif_begin_diagnostic): Remove, in favor of
6252         sarif_output_format::on_begin_diagnostic.
6253         (sarif_end_diagnostic): Remove, in favor of
6254         sarif_output_format::on_end_diagnostic.
6255         (sarif_begin_group): Remove, in favor of
6256         sarif_output_format::on_begin_group.
6257         (sarif_end_group): Remove, in favor of
6258         sarif_output_format::on_end_group.
6259         (sarif_flush_to_file): Delete.
6260         (sarif_stderr_final_cb): Delete.
6261         (sarif_output_base_file_name): Delete.
6262         (sarif_file_final_cb): Delete.
6263         (class sarif_output_format): New.
6264         (sarif_emit_diagram): Delete.
6265         (class sarif_stream_output_format): New.
6266         (class sarif_file_output_format): New.
6267         (diagnostic_output_format_init_sarif): Update.
6268         (diagnostic_output_format_init_sarif_stderr): Update.
6269         (diagnostic_output_format_init_sarif_file): Update.
6270         (diagnostic_output_format_init_sarif_stream): Update.
6271         * diagnostic-show-locus.cc (diagnostic_show_locus): Update.
6272         * diagnostic.cc (default_diagnostic_final_cb): Delete, moving to
6273         diagnostic_text_output_format's dtor.
6274         (diagnostic_initialize): Update, making a new instance of
6275         diagnostic_text_output_format.
6276         (diagnostic_finish): Delete m_output_format, rather than calling
6277         final_cb.
6278         (diagnostic_report_diagnostic): Assert that m_output_format is
6279         non-NULL.  Replace call to begin_group_cb with call to
6280         m_output_format->on_begin_group.  Replace call to
6281         diagnostic_starter with call to
6282         m_output_format->on_begin_diagnostic.  Replace call to
6283         diagnostic_finalizer with call to
6284         m_output_format->on_end_diagnostic.
6285         (diagnostic_emit_diagram): Replace both optional call to
6286         m_diagrams.m_emission_cb and default implementation with call to
6287         m_output_format->on_diagram.  Move default implementation to
6288         diagnostic_text_output_format::on_diagram.
6289         (auto_diagnostic_group::~auto_diagnostic_group): Replace call to
6290         end_group_cb with call to m_output_format->on_end_group.
6291         (diagnostic_text_output_format::~diagnostic_text_output_format):
6292         New, based on default_diagnostic_final_cb.
6293         (diagnostic_text_output_format::on_begin_diagnostic): New, based
6294         on code from diagnostic_report_diagnostic.
6295         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
6296         (diagnostic_text_output_format::on_diagram): New, based on code
6297         from diagnostic_emit_diagram.
6298         * diagnostic.h (class diagnostic_output_format): New.
6299         (class diagnostic_text_output_format): New.
6300         (diagnostic_context::begin_diagnostic): Move to...
6301         (diagnostic_context::m_text_callbacks::begin_diagnostic): ...here.
6302         (diagnostic_context::start_span): Move to...
6303         (diagnostic_context::m_text_callbacks::start_span): ...here.
6304         (diagnostic_context::end_diagnostic): Move to...
6305         (diagnostic_context::m_text_callbacks::end_diagnostic): ...here.
6306         (diagnostic_context::begin_group_cb): Remove, in favor of
6307         m_output_format->on_begin_group.
6308         (diagnostic_context::end_group_cb): Remove, in favor of
6309         m_output_format->on_end_group.
6310         (diagnostic_context::final_cb): Remove, in favor of
6311         m_output_format's dtor.
6312         (diagnostic_context::m_output_format): New field.
6313         (diagnostic_context::m_diagrams.m_emission_cb): Remove, in favor
6314         of m_output_format->on_diagram.
6315         (diagnostic_starter): Update.
6316         (diagnostic_finalizer): Update.
6317         (diagnostic_output_format_init_sarif_stream): New.
6318         * input.cc (location_get_source_line): Move implementation apart from
6319         call to diagnostic_file_cache_init to...
6320         (file_cache::get_source_line): ...this new function...
6321         (location_get_source_line): ...and reintroduce, rewritten in terms of
6322         file_cache::get_source_line.
6323         (get_source_file_content): Likewise, refactor into...
6324         (file_cache::get_source_file_content): ...this new function.
6325         * input.h (file_cache::get_source_line): New decl.
6326         (file_cache::get_source_file_content): New decl.
6327         * selftest-diagnostic.cc
6328         (test_diagnostic_context::test_diagnostic_context): Update.
6329         * tree-diagnostic-path.cc (event_range::print): Update for
6330         change to diagnostic_context's start_span callback.
6332 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
6334         * diagnostic-show-locus.cc: Update for reorganization of
6335         source-printing fields of diagnostic_context.
6336         * diagnostic.cc (diagnostic_set_caret_max_width): Likewise.
6337         (diagnostic_initialize): Likewise.
6338         * diagnostic.h (diagnostic_context::show_caret): Move to...
6339         (diagnostic_context::m_source_printing::enabled): ...here.
6340         (diagnostic_context::caret_max_width): Move to...
6341         (diagnostic_context::m_source_printing::max_width): ...here.
6342         (diagnostic_context::caret_chars): Move to...
6343         (diagnostic_context::m_source_printing::caret_chars): ...here.
6344         (diagnostic_context::colorize_source_p): Move to...
6345         (diagnostic_context::m_source_printing::colorize_source_p): ...here.
6346         (diagnostic_context::show_labels_p): Move to...
6347         (diagnostic_context::m_source_printing::show_labels_p): ...here.
6348         (diagnostic_context::show_line_numbers_p): Move to...
6349         (diagnostic_context::m_source_printing::show_line_numbers_p): ...here.
6350         (diagnostic_context::min_margin_width): Move to...
6351         (diagnostic_context::m_source_printing::min_margin_width): ...here.
6352         (diagnostic_context::show_ruler_p): Move to...
6353         (diagnostic_context::m_source_printing::show_ruler_p): ...here.
6354         (diagnostic_same_line): Update for above changes.
6355         * opts.cc (common_handle_option): Update for reorganization of
6356         source-printing fields of diagnostic_context.
6357         * selftest-diagnostic.cc
6358         (test_diagnostic_context::test_diagnostic_context): Likewise.
6359         * toplev.cc (general_init): Likewise.
6360         * tree-diagnostic-path.cc (struct event_range): Likewise.
6362 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
6364         * diagnostic.cc (diagnostic_initialize): Initialize
6365         set_locations_cb to nullptr.
6367 2023-10-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
6369         PR target/111235
6370         * config/arm/constraints.md: Remove Pf constraint.
6371         * config/arm/sync.md (arm_atomic_load<mode>): Add new pattern.
6372         (arm_atomic_load_acquire<mode>): Likewise.
6373         (arm_atomic_store<mode>): Likewise.
6374         (arm_atomic_store_release<mode>): Likewise.
6375         (atomic_load<mode>): Switch patterns to define_expand.
6376         (atomic_store<mode>): Likewise.
6377         (arm_atomic_loaddi2_ldrd): Remove predication.
6378         (arm_load_exclusive<mode>): Likewise.
6379         (arm_load_acquire_exclusive<mode>): Likewise.
6380         (arm_load_exclusivesi): Likewise.
6381         (arm_load_acquire_exclusivesi): Likewise.
6382         (arm_load_exclusivedi): Likewise.
6383         (arm_load_acquire_exclusivedi): Likewise.
6384         (arm_store_exclusive<mode>): Likewise.
6385         (arm_store_release_exclusivedi): Likewise.
6386         (arm_store_release_exclusive<mode>): Likewise.
6387         * config/arm/unspecs.md: Add VUNSPEC_LDR and VUNSPEC_STR.
6389 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
6391         Revert:
6392         2023-10-02  Tamar Christina  <tamar.christina@arm.com>
6394         PR tree-optimization/109154
6395         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
6396         (cmp_arg_entry): New.
6397         (predicate_scalar_phi): Use it.
6399 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
6401         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to..
6402         (@xorsign<mode>3): ...This.
6403         * config/aarch64/aarch64.md (xorsign<mode>3): Renamed to...
6404         (@xorsign<mode>3): ..This and emit vectors directly
6405         * config/aarch64/iterators.md (VCONQ): Add SF and DF.
6407 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
6409         * emit-rtl.cc (validate_subreg): Relax subreg rule.
6411 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
6413         PR tree-optimization/109154
6414         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
6415         (cmp_arg_entry): New.
6416         (predicate_scalar_phi): Use it.
6418 2023-10-02  Richard Sandiford  <richard.sandiford@arm.com>
6420         PR bootstrap/111642
6421         * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local
6422         poly_int64 typedef.
6423         * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise.
6425 2023-10-02  Joern Rennecke  <joern.rennecke@embecosm.com>
6426             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6428         * config/riscv/riscv-protos.h (riscv_vector::expand_block_move):
6429         Declare.
6430         * config/riscv/riscv-v.cc (riscv_vector::expand_block_move):
6431         New function.
6432         * config/riscv/riscv.md (cpymemsi): Use riscv_vector::expand_block_move.
6433         Change to ..
6434         (cpymem<P:mode>) .. this.
6436 2023-10-01  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6438         * combine.cc (simplify_compare_const): Properly handle unsigned
6439         constants while narrowing comparison of memory and constants.
6441 2023-10-01  Feng Wang  <wangfeng@eswincomputing.com>
6443         * config/riscv/riscv-opts.h (MASK_ZICSR): Delete.
6444         (MASK_ZIFENCEI): Delete;
6445         (MASK_ZIHINTNTL): Ditto.
6446         (MASK_ZIHINTPAUSE): Ditto.
6447         (TARGET_ZICSR): Ditto.
6448         (TARGET_ZIFENCEI): Ditto.
6449         (TARGET_ZIHINTNTL): Ditto.
6450         (TARGET_ZIHINTPAUSE): Ditto.
6451         (MASK_ZAWRS): Ditto.
6452         (TARGET_ZAWRS): Ditto.
6453         (MASK_ZBA): Ditto.
6454         (MASK_ZBB): Ditto.
6455         (MASK_ZBC): Ditto.
6456         (MASK_ZBS): Ditto.
6457         (TARGET_ZBA): Ditto.
6458         (TARGET_ZBB): Ditto.
6459         (TARGET_ZBC): Ditto.
6460         (TARGET_ZBS): Ditto.
6461         (MASK_ZFINX): Ditto.
6462         (MASK_ZDINX): Ditto.
6463         (MASK_ZHINX): Ditto.
6464         (MASK_ZHINXMIN): Ditto.
6465         (TARGET_ZFINX): Ditto.
6466         (TARGET_ZDINX): Ditto.
6467         (TARGET_ZHINX): Ditto.
6468         (TARGET_ZHINXMIN): Ditto.
6469         (MASK_ZBKB): Ditto.
6470         (MASK_ZBKC): Ditto.
6471         (MASK_ZBKX): Ditto.
6472         (MASK_ZKNE): Ditto.
6473         (MASK_ZKND): Ditto.
6474         (MASK_ZKNH): Ditto.
6475         (MASK_ZKR): Ditto.
6476         (MASK_ZKSED): Ditto.
6477         (MASK_ZKSH): Ditto.
6478         (MASK_ZKT): Ditto.
6479         (TARGET_ZBKB): Ditto.
6480         (TARGET_ZBKC): Ditto.
6481         (TARGET_ZBKX): Ditto.
6482         (TARGET_ZKNE): Ditto.
6483         (TARGET_ZKND): Ditto.
6484         (TARGET_ZKNH): Ditto.
6485         (TARGET_ZKR): Ditto.
6486         (TARGET_ZKSED): Ditto.
6487         (TARGET_ZKSH): Ditto.
6488         (TARGET_ZKT): Ditto.
6489         (MASK_ZTSO): Ditto.
6490         (TARGET_ZTSO): Ditto.
6491         (MASK_VECTOR_ELEN_32): Ditto.
6492         (MASK_VECTOR_ELEN_64): Ditto.
6493         (MASK_VECTOR_ELEN_FP_32): Ditto.
6494         (MASK_VECTOR_ELEN_FP_64): Ditto.
6495         (MASK_VECTOR_ELEN_FP_16): Ditto.
6496         (TARGET_VECTOR_ELEN_32): Ditto.
6497         (TARGET_VECTOR_ELEN_64): Ditto.
6498         (TARGET_VECTOR_ELEN_FP_32): Ditto.
6499         (TARGET_VECTOR_ELEN_FP_64): Ditto.
6500         (TARGET_VECTOR_ELEN_FP_16): Ditto.
6501         (MASK_ZVBB): Ditto.
6502         (MASK_ZVBC): Ditto.
6503         (TARGET_ZVBB): Ditto.
6504         (TARGET_ZVBC): Ditto.
6505         (MASK_ZVKG): Ditto.
6506         (MASK_ZVKNED): Ditto.
6507         (MASK_ZVKNHA): Ditto.
6508         (MASK_ZVKNHB): Ditto.
6509         (MASK_ZVKSED): Ditto.
6510         (MASK_ZVKSH): Ditto.
6511         (MASK_ZVKN): Ditto.
6512         (MASK_ZVKNC): Ditto.
6513         (MASK_ZVKNG): Ditto.
6514         (MASK_ZVKS): Ditto.
6515         (MASK_ZVKSC): Ditto.
6516         (MASK_ZVKSG): Ditto.
6517         (MASK_ZVKT): Ditto.
6518         (TARGET_ZVKG): Ditto.
6519         (TARGET_ZVKNED): Ditto.
6520         (TARGET_ZVKNHA): Ditto.
6521         (TARGET_ZVKNHB): Ditto.
6522         (TARGET_ZVKSED): Ditto.
6523         (TARGET_ZVKSH): Ditto.
6524         (TARGET_ZVKN): Ditto.
6525         (TARGET_ZVKNC): Ditto.
6526         (TARGET_ZVKNG): Ditto.
6527         (TARGET_ZVKS): Ditto.
6528         (TARGET_ZVKSC): Ditto.
6529         (TARGET_ZVKSG): Ditto.
6530         (TARGET_ZVKT): Ditto.
6531         (MASK_ZVL32B): Ditto.
6532         (MASK_ZVL64B): Ditto.
6533         (MASK_ZVL128B): Ditto.
6534         (MASK_ZVL256B): Ditto.
6535         (MASK_ZVL512B): Ditto.
6536         (MASK_ZVL1024B): Ditto.
6537         (MASK_ZVL2048B): Ditto.
6538         (MASK_ZVL4096B): Ditto.
6539         (MASK_ZVL8192B): Ditto.
6540         (MASK_ZVL16384B): Ditto.
6541         (MASK_ZVL32768B): Ditto.
6542         (MASK_ZVL65536B): Ditto.
6543         (TARGET_ZVL32B): Ditto.
6544         (TARGET_ZVL64B): Ditto.
6545         (TARGET_ZVL128B): Ditto.
6546         (TARGET_ZVL256B): Ditto.
6547         (TARGET_ZVL512B): Ditto.
6548         (TARGET_ZVL1024B): Ditto.
6549         (TARGET_ZVL2048B): Ditto.
6550         (TARGET_ZVL4096B): Ditto.
6551         (TARGET_ZVL8192B): Ditto.
6552         (TARGET_ZVL16384B): Ditto.
6553         (TARGET_ZVL32768B): Ditto.
6554         (TARGET_ZVL65536B): Ditto.
6555         (MASK_ZICBOZ): Ditto.
6556         (MASK_ZICBOM): Ditto.
6557         (MASK_ZICBOP): Ditto.
6558         (TARGET_ZICBOZ): Ditto.
6559         (TARGET_ZICBOM): Ditto.
6560         (TARGET_ZICBOP): Ditto.
6561         (MASK_ZICOND): Ditto.
6562         (TARGET_ZICOND): Ditto.
6563         (MASK_ZFA): Ditto.
6564         (TARGET_ZFA): Ditto.
6565         (MASK_ZFHMIN): Ditto.
6566         (MASK_ZFH): Ditto.
6567         (MASK_ZVFHMIN): Ditto.
6568         (MASK_ZVFH): Ditto.
6569         (TARGET_ZFHMIN): Ditto.
6570         (TARGET_ZFH): Ditto.
6571         (TARGET_ZVFHMIN): Ditto.
6572         (TARGET_ZVFH): Ditto.
6573         (MASK_ZMMUL): Ditto.
6574         (TARGET_ZMMUL): Ditto.
6575         (MASK_ZCA): Ditto.
6576         (MASK_ZCB): Ditto.
6577         (MASK_ZCE): Ditto.
6578         (MASK_ZCF): Ditto.
6579         (MASK_ZCD): Ditto.
6580         (MASK_ZCMP): Ditto.
6581         (MASK_ZCMT): Ditto.
6582         (TARGET_ZCA): Ditto.
6583         (TARGET_ZCB): Ditto.
6584         (TARGET_ZCE): Ditto.
6585         (TARGET_ZCF): Ditto.
6586         (TARGET_ZCD): Ditto.
6587         (TARGET_ZCMP): Ditto.
6588         (TARGET_ZCMT): Ditto.
6589         (MASK_SVINVAL): Ditto.
6590         (MASK_SVNAPOT): Ditto.
6591         (TARGET_SVINVAL): Ditto.
6592         (TARGET_SVNAPOT): Ditto.
6593         (MASK_XTHEADBA): Ditto.
6594         (MASK_XTHEADBB): Ditto.
6595         (MASK_XTHEADBS): Ditto.
6596         (MASK_XTHEADCMO): Ditto.
6597         (MASK_XTHEADCONDMOV): Ditto.
6598         (MASK_XTHEADFMEMIDX): Ditto.
6599         (MASK_XTHEADFMV): Ditto.
6600         (MASK_XTHEADINT): Ditto.
6601         (MASK_XTHEADMAC): Ditto.
6602         (MASK_XTHEADMEMIDX): Ditto.
6603         (MASK_XTHEADMEMPAIR): Ditto.
6604         (MASK_XTHEADSYNC): Ditto.
6605         (TARGET_XTHEADBA): Ditto.
6606         (TARGET_XTHEADBB): Ditto.
6607         (TARGET_XTHEADBS): Ditto.
6608         (TARGET_XTHEADCMO): Ditto.
6609         (TARGET_XTHEADCONDMOV): Ditto.
6610         (TARGET_XTHEADFMEMIDX): Ditto.
6611         (TARGET_XTHEADFMV): Ditto.
6612         (TARGET_XTHEADINT): Ditto.
6613         (TARGET_XTHEADMAC): Ditto.
6614         (TARGET_XTHEADMEMIDX): Ditto.
6615         (TARGET_XTHEADMEMPAIR): Ditto.
6616         (TARGET_XTHEADSYNC): Ditto.
6617         (MASK_XVENTANACONDOPS): Ditto.
6618         (TARGET_XVENTANACONDOPS): Ditto.
6619         * config/riscv/riscv.opt: Add new Mask defination.
6620         * doc/options.texi: Add explanation for this new usage.
6621         * opt-functions.awk: Add new function to find the index
6622         of target variable from extra_target_vars.
6623         * opt-read.awk: Add new function to store the Mask flags.
6624         * opth-gen.awk: Add new function to output the defination of
6625         Mask Macro and Target Macro.
6627 2023-10-01  Joern Rennecke  <joern.rennecke@embecosm.com>
6628             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6629             Juzhe-Zhong   <juzhe.zhong@rivai.ai>
6631         PR target/111566
6632         * config/riscv/riscv-protos.h (riscv_vector::legitimize_move):
6633         Change second parameter to rtx *.
6634         * config/riscv/riscv-v.cc (risv_vector::legitimize_move): Likewise.
6635         * config/riscv/vector.md: Changed callers of
6636         riscv_vector::legitimize_move.
6637         (*mov<mode>_mem_to_mem): Remove.
6639 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
6641         PR target/111649
6642         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager):
6643         Replace safe_grow with safe_grow_cleared.
6645 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
6647         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto
6648         in function comment.
6650 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
6652         PR middle-end/111625
6653         PR middle-end/111637
6654         * gimple-lower-bitint.cc (range_to_prec): Use prec or -prec if
6655         r.undefined_p ().
6656         (bitint_large_huge::handle_operand_addr): For uninitialized operands
6657         use limb_prec or -limb_prec precision.
6659 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
6661         * vec.h (quick_grow): Uncomment static_assert.
6663 2023-09-30  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
6665         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute
6667 2023-09-29  Xiao Zeng  <zengxiao@eswincomputing.com>
6669         * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing
6670         SETs when the outer code is INSN.
6672 2023-09-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
6674         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split
6675         pattern.
6677 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
6679         * poly-int.h (poly_int_pod): Delete.
6680         (poly_coeff_traits::init_cast): New type.
6681         (poly_int_full, poly_int_hungry, poly_int_fullness): New structures.
6682         (poly_int): Replace constructors that take 1 and 2 coefficients with
6683         a general one that takes an arbitrary number of coefficients.
6684         Delegate initialization to two new private constructors, one of
6685         which uses the coefficients as-is and one of which adds an extra
6686         zero of the appropriate type (and precision, where applicable).
6687         (gt_ggc_mx, gt_pch_nx): Operate on poly_ints rather than poly_int_pods.
6688         * poly-int-types.h (poly_uint16_pod, poly_int64_pod, poly_uint64_pod)
6689         (poly_offset_int_pod, poly_wide_int_pod, poly_widest_int_pod): Delete.
6690         * gengtype.cc (main): Don't register poly_int64_pod.
6691         * calls.cc (initialize_argument_information): Use poly_int rather
6692         than poly_int_pod.
6693         (combine_pending_stack_adjustment_and_call): Likewise.
6694         * config/aarch64/aarch64.cc (pure_scalable_type_info): Likewise.
6695         * data-streamer.h (bp_unpack_poly_value): Likewise.
6696         * dwarf2cfi.cc (struct dw_trace_info): Likewise.
6697         (struct queued_reg_save): Likewise.
6698         * dwarf2out.h (struct dw_cfa_location): Likewise.
6699         * emit-rtl.h (struct incoming_args): Likewise.
6700         (struct rtl_data): Likewise.
6701         * expr.cc (get_bit_range): Likewise.
6702         (get_inner_reference): Likewise.
6703         * expr.h (get_bit_range): Likewise.
6704         * fold-const.cc (split_address_to_core_and_offset): Likewise.
6705         (ptr_difference_const): Likewise.
6706         * fold-const.h (ptr_difference_const): Likewise.
6707         * function.cc (try_fit_stack_local): Likewise.
6708         (instantiate_new_reg): Likewise.
6709         * function.h (struct expr_status): Likewise.
6710         (struct args_size): Likewise.
6711         * genmodes.cc (ZERO_COEFFS): Likewise.
6712         (mode_size_inline): Likewise.
6713         (mode_nunits_inline): Likewise.
6714         (emit_mode_precision): Likewise.
6715         (emit_mode_size): Likewise.
6716         (emit_mode_nunits): Likewise.
6717         * gimple-fold.cc (get_base_constructor): Likewise.
6718         * gimple-ssa-store-merging.cc (struct symbolic_number): Likewise.
6719         * inchash.h (class hash): Likewise.
6720         * ipa-modref-tree.cc (modref_access_node::dump): Likewise.
6721         * ipa-modref.cc (modref_access_analysis::merge_call_side_effects):
6722         Likewise.
6723         * ira-int.h (ira_spilled_reg_stack_slot): Likewise.
6724         * lra-eliminations.cc (self_elim_offsets): Likewise.
6725         * machmode.h (mode_size, mode_precision, mode_nunits): Likewise.
6726         * omp-low.cc (omplow_simd_context): Likewise.
6727         * pretty-print.cc (pp_wide_integer): Likewise.
6728         * pretty-print.h (pp_wide_integer): Likewise.
6729         * reload.cc (struct decomposition): Likewise.
6730         * reload.h (struct reload): Likewise.
6731         * reload1.cc (spill_stack_slot_width): Likewise.
6732         (struct elim_table): Likewise.
6733         (offsets_at): Likewise.
6734         (init_eliminable_invariants): Likewise.
6735         * rtl.h (union rtunion): Likewise.
6736         (poly_int_rtx_p): Likewise.
6737         (strip_offset): Likewise.
6738         (strip_offset_and_add): Likewise.
6739         * rtlanal.cc (strip_offset): Likewise.
6740         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
6741         (get_addr_base_and_unit_offset_1): Likewise.
6742         (get_addr_base_and_unit_offset): Likewise.
6743         * tree-dfa.h (get_ref_base_and_extent): Likewise.
6744         (get_addr_base_and_unit_offset_1): Likewise.
6745         (get_addr_base_and_unit_offset): Likewise.
6746         * tree-ssa-loop-ivopts.cc (struct iv_use): Likewise.
6747         (strip_offset): Likewise.
6748         * tree-ssa-sccvn.h (struct vn_reference_op_struct): Likewise.
6749         * tree.cc (ptrdiff_tree_p): Likewise.
6750         * tree.h (poly_int_tree_p): Likewise.
6751         (ptrdiff_tree_p): Likewise.
6752         (get_inner_reference): Likewise.
6754 2023-09-29  John David Anglin  <danglin@gcc.gnu.org>
6756         * config/pa/pa.md (memory_barrier): Revise comment.
6757         (memory_barrier_64, memory_barrier_32): Use ldcw,co on PA 2.0.
6758         * config/pa/pa.opt (coherent-ldcw): Change default to disabled.
6760 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
6762         * vec.h (quick_insert, ordered_remove, unordered_remove,
6763         block_remove, qsort, sort, stablesort, quick_grow): Guard
6764         std::is_trivially_{copyable,default_constructible} and
6765         vec_detail::is_trivially_copyable_or_pair static assertions
6766         with GCC_VERSION >= 5000.
6767         (vec_detail::is_trivially_copyable_or_pair): Guard definition
6768         with GCC_VERSION >= 5000.
6770 2023-09-29  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
6772         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): Removed.
6773         (enum aarch64_ldp_stp_policy): Merged enums aarch64_ldp_policy
6774         and aarch64_stp_policy to aarch64_ldp_stp_policy.
6775         (enum aarch64_stp_policy): Removed.
6776         * config/aarch64/aarch64-protos.h (struct tune_params): Removed
6777         aarch64_ldp_policy_model and aarch64_stp_policy_model enum types
6778         and left only the definitions to the aarch64-opts one.
6779         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): Removed.
6780         (aarch64_parse_stp_policy): Removed.
6781         (aarch64_override_options_internal): Removed calls to parsing
6782         functions and added obvious direct assignments.
6783         (aarch64_mem_ok_with_ldpstp_policy_model): Improved
6784         code quality based on the new changes.
6785         * config/aarch64/aarch64.opt: Use single enum type
6786         aarch64_ldp_stp_policy for both ldp and stp options.
6788 2023-09-29  Richard Biener  <rguenther@suse.de>
6790         PR tree-optimization/111583
6791         * tree-loop-distribution.cc (find_single_drs): Ensure the
6792         load/store are always executed.
6794 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
6796         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use
6797         quick_grow_cleared method on unprom rather than quick_grow.
6799 2023-09-29  Sergei Trofimovich  <siarheit@google.com>
6801         PR middle-end/111505
6802         * ggc-common.cc (ggc_zero_out_root_pointers, ggc_common_finalize):
6803         Add new helper. Use helper instead of memset() to wipe out pointers.
6805 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
6807         * builtins.h (c_readstr): Take a fixed_size_mode rather than a
6808         scalar_int_mode.
6809         * builtins.cc (c_readstr): Likewise.  Build a local array of
6810         bytes and use native_decode_rtx to get the rtx image.
6811         (builtin_memcpy_read_str): Simplify accordingly.
6812         (builtin_strncpy_read_str): Likewise.
6813         (builtin_memset_read_str): Likewise.
6814         (builtin_memset_gen_str): Likewise.
6815         * expr.cc (string_cst_read_str): Likewise.
6817 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
6819         * tree-ssa-loop-im.cc (tree_ssa_lim_initialize): Use quick_grow_cleared
6820         instead of quick_grow on vec<bitmap_head> members.
6821         * cfganal.cc (control_dependences::control_dependences): Likewise.
6822         * rtl-ssa/blocks.cc (function_info::build_info::build_info): Likewise.
6823         (function_info::place_phis): Use safe_grow_cleared instead of safe_grow
6824         on auto_vec<bitmap_head> vars.
6825         * tree-ssa-live.cc (compute_live_vars): Use quick_grow_cleared instead
6826         of quick_grow on vec<bitmap_head> var.
6828 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
6830         Revert:
6831         2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
6833         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
6834         by equiv savings.
6836 2023-09-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
6838         PR target/111121
6839         * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander.
6840         (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion.
6841         * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support
6842         for memmove.
6843         * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new
6844         function.
6846 2023-09-28  Pan Li  <pan2.li@intel.com>
6848         PR target/111506
6849         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
6850         New pattern.
6851         * config/riscv/vector-iterators.md: New iterator.
6853 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
6855         * rtl.h (lra_in_progress): Change type to bool.
6856         (ira_in_progress): Add new extern.
6857         * ira.cc (ira_in_progress): New global.
6858         (pass_ira::execute): Set up ira_in_progress.
6859         * lra.cc: (lra_in_progress): Change type to bool and initialize.
6860         (lra): Use bool values for lra_in_progress.
6861         * lra-eliminations.cc (init_elim_table): Ditto.
6863 2023-09-28  Richard Biener  <rguenther@suse.de>
6865         PR target/111600
6866         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
6867         Use a heap allocated worklist for CFG traversal instead of
6868         recursion.
6870 2023-09-28  Jakub Jelinek  <jakub@redhat.com>
6871             Jonathan Wakely  <jwakely@redhat.com>
6873         * vec.h: Mention in file comment limited support for non-POD types
6874         in some operations.
6875         (vec_destruct): New function template.
6876         (release): Use it for non-trivially destructible T.
6877         (truncate): Likewise.
6878         (quick_push): Perform a placement new into slot
6879         instead of assignment.
6880         (pop): For non-trivially destructible T return void
6881         rather than T & and destruct the popped element.
6882         (quick_insert, ordered_remove): Note that they aren't suitable
6883         for non-trivially copyable types.  Add static_asserts for that.
6884         (block_remove): Assert T is trivially copyable.
6885         (vec_detail::is_trivially_copyable_or_pair): New trait.
6886         (qsort, sort, stablesort): Assert T is trivially copyable or
6887         std::pair with both trivally copyable types.
6888         (quick_grow): Add assert T is trivially default constructible,
6889         for now commented out.
6890         (quick_grow_cleared): Don't call quick_grow, instead inline it
6891         by hand except for the new static_assert.
6892         (gt_ggc_mx): Assert T is trivially destructable.
6893         (auto_vec::operator=): Formatting fixes.
6894         (auto_vec::auto_vec): Likewise.
6895         (vec_safe_grow_cleared): Don't call vec_safe_grow, instead inline
6896         it manually and call quick_grow_cleared method rather than quick_grow.
6897         (safe_grow_cleared): Likewise.
6898         * edit-context.cc (class line_event): Move definition earlier.
6899         * tree-ssa-loop-im.cc (seq_entry::seq_entry): Make default ctor
6900         defaulted.
6901         * ipa-fnsummary.cc (evaluate_properties_for_edge): Use
6902         safe_grow_cleared instead of safe_grow followed by placement new
6903         constructing the elements.
6905 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
6907         * dwarf2out.cc (mem_loc_descriptor): Remove unused variables.
6908         * tree-affine.cc (expr_to_aff_combination): Likewise.
6910 2023-09-28  Richard Biener  <rguenther@suse.de>
6912         PR tree-optimization/111614
6913         * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly
6914         convert the first vector when required.
6916 2023-09-28  xuli  <xuli1@eswincomputing.com>
6918         PR target/111533
6919         * config/riscv/riscv-v.cc (expand_const_vector): Fix bug.
6920         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix bug.
6922 2023-09-27  Sandra Loosemore  <sandra@codesourcery.com>
6924         * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK.
6926 2023-09-27  Iain Sandoe  <iain@sandoe.co.uk>
6928         PR target/111610
6929         * configure: Regenerate.
6930         * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN".
6932 2023-09-27  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
6933             Philipp Tomsich  <philipp.tomsich@vrull.eu>
6934             Manolis Tsamis  <manolis.tsamis@vrull.eu>
6936         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): New
6937         enum type.
6938         (enum aarch64_stp_policy): New enum type.
6939         * config/aarch64/aarch64-protos.h (struct tune_params): Add
6940         appropriate enums for the policies.
6941         (aarch64_mem_ok_with_ldpstp_policy_model): New declaration.
6942         * config/aarch64/aarch64-tuning-flags.def
6943         (AARCH64_EXTRA_TUNING_OPTION): Remove superseded tuning
6944         options.
6945         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): New
6946         function to parse ldp-policy parameter.
6947         (aarch64_parse_stp_policy): New function to parse stp-policy parameter.
6948         (aarch64_override_options_internal): Call parsing functions.
6949         (aarch64_mem_ok_with_ldpstp_policy_model): New function.
6950         (aarch64_operands_ok_for_ldpstp): Add call to
6951         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
6952         check and alignment check and remove superseded ones.
6953         (aarch64_operands_adjust_ok_for_ldpstp): Add call to
6954         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
6955         check and alignment check and remove superseded ones.
6956         * config/aarch64/aarch64.opt (aarch64-ldp-policy): New param.
6957         (aarch64-stp-policy): New param.
6958         * doc/invoke.texi: Document the parameters accordingly.
6960 2023-09-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
6962         * tree-data-ref.cc (include calls.h): Add new include.
6963         (get_references_in_stmt): Correctly handle IFN_MASK_CALL.
6965 2023-09-27  Richard Biener  <rguenther@suse.de>
6967         * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern.
6969 2023-09-27  Jakub Jelinek  <jakub@redhat.com>
6971         PR c++/105606
6972         * system.h (BROKEN_VALUE_INITIALIZATION): Don't define.
6973         * vec.h (vec_default_construct): Remove BROKEN_VALUE_INITIALIZATION
6974         workaround.
6975         * function.cc (assign_parm_find_data_types): Likewise.
6977 2023-09-27  Pan Li  <pan2.li@intel.com>
6979         * config/riscv/autovec.md (roundeven<mode>2): New pattern.
6980         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
6981         (enum insn_type): Ditto.
6982         (expand_vec_roundeven): New func decl.
6983         * config/riscv/riscv-v.cc (expand_vec_roundeven): New func impl.
6985 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6987         PR target/111590
6988         * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.
6990 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6992         * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments.
6994 2023-09-27  Pan Li  <pan2.li@intel.com>
6996         * config/riscv/autovec.md (btrunc<mode>2): New pattern.
6997         * config/riscv/riscv-protos.h (expand_vec_trunc): New func decl.
6998         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): New func impl.
6999         (expand_vec_trunc): Ditto.
7001 2023-09-26  Hans-Peter Nilsson  <hp@axis.com>
7003         PR target/107567
7004         PR target/109166
7005         * builtins.cc (expand_builtin) <case BUILT_IN_ATOMIC_TEST_AND_SET>:
7006         Handle failure from expand_builtin_atomic_test_and_set.
7007         * optabs.cc (expand_atomic_test_and_set): When all attempts fail to
7008         generate atomic code through target support, return NULL
7009         instead of emitting non-atomic code.  Also, for code handling
7010         targetm.atomic_test_and_set_trueval != 1, gcc_assert result
7011         from calling emit_store_flag_force instead of returning NULL.
7013 2023-09-26  Andrew MacLeod  <amacleod@redhat.com>
7015         PR tree-optimization/111599
7016         * value-relation.cc (relation_oracle::valid_equivs): Ensure
7017         ssa_name is valid.
7019 2023-09-26  Andrew Pinski  <apinski@marvell.com>
7021         PR tree-optimization/106164
7022         PR tree-optimization/111456
7023         * match.pd (`(A ==/!= B) & (A CMP C)`):
7024         Support an optional cast on the second A.
7025         (`(A ==/!= B) | (A CMP C)`): Likewise.
7027 2023-09-26  Andrew Pinski  <apinski@marvell.com>
7029         PR tree-optimization/111469
7030         * tree-ssa-phiopt.cc (minmax_replacement): Fix
7031         the assumption for the `non-diamond` handling cases
7032         of diamond code.
7034 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7036         * match.pd: Optimize COND_ADD reduction pattern.
7038 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7040         PR tree-optimization/111594
7041         PR tree-optimization/110660
7042         * match.pd: Optimize COND_LEN_ADD reduction.
7044 2023-09-26  Pan Li  <pan2.li@intel.com>
7046         * config/riscv/autovec.md (round<mode>2): New pattern.
7047         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
7048         (enum insn_type): Ditto.
7049         (expand_vec_round): New function decl.
7050         * config/riscv/riscv-v.cc (expand_vec_round): New function impl.
7052 2023-09-26  Iain Sandoe  <iain@sandoe.co.uk>
7054         * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib.
7056 2023-09-26  Tobias Burnus  <tobias@codesourcery.com>
7058         PR middle-end/111547
7059         * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax.
7060         (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic.
7062 2023-09-26  Pan Li  <pan2.li@intel.com>
7064         * config/riscv/autovec.md (rint<mode>2): New pattern.
7065         * config/riscv/riscv-protos.h (expand_vec_rint): New function decl.
7066         * config/riscv/riscv-v.cc (expand_vec_rint): New function impl.
7068 2023-09-26  Pan Li  <pan2.li@intel.com>
7070         * config/riscv/autovec.md (nearbyint<mode>2): New pattern.
7071         * config/riscv/riscv-protos.h (enum insn_type): New enum.
7072         (expand_vec_nearbyint): New function decl.
7073         * config/riscv/riscv-v.cc (expand_vec_nearbyint): New func impl.
7075 2023-09-26  Pan Li  <pan2.li@intel.com>
7077         * config/riscv/riscv-v.cc (gen_ceil_const_fp): Remove.
7078         (get_fp_rounding_coefficient): Rename.
7079         (gen_floor_const_fp): Remove.
7080         (expand_vec_ceil): Take renamed func.
7081         (expand_vec_floor): Ditto.
7083 2023-09-25  Vladimir N. Makarov  <vmakarov@redhat.com>
7085         PR middle-end/111497
7086         * lra-constraints.cc (lra_constraints): Copy substituted
7087         equivalence.
7088         * lra.cc (lra): Change comment for calling unshare_all_rtl_again.
7090 2023-09-25  Eric Botcazou  <ebotcazou@adacore.com>
7092         * gimple-range-gori.cc (gori_compute::logical_combine): Add missing
7093         return statement in the varying case.
7095 2023-09-25  Xi Ruoyao  <xry111@xry111.site>
7097         * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160.
7099 2023-09-25  Andrew Pinski  <apinski@marvell.com>
7101         PR tree-optimization/110386
7102         * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR.
7104 2023-09-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7106         PR target/111548
7107         * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix
7109 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
7111         PR target/111366
7112         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip
7113         empty inline asm.
7115 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
7117         PR target/111380
7118         * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt
7119         target_option_default_node when the callee has no option
7120         attributes, also simplify the existing code accordingly.
7122 2023-09-25  Guo Jie  <guojie@loongson.cn>
7124         * config/loongarch/lasx.md (lasx_vecinit_merge_<LASX:mode>): New
7125         pattern for vector construction.
7126         (vec_set<mode>_internal): Ditto.
7127         (lasx_xvinsgr2vr_<mode256_i_half>_internal): Ditto.
7128         (lasx_xvilvl_<lasxfmt_f>_internal): Ditto.
7129         * config/loongarch/loongarch.cc (loongarch_expand_vector_init):
7130         Optimized the implementation of vector construction.
7131         (loongarch_expand_vector_init_same): New function.
7132         * config/loongarch/lsx.md (lsx_vilvl_<lsxfmt_f>_internal): New
7133         pattern for vector construction.
7134         (lsx_vreplvei_mirror_<lsxfmt_f>): New pattern for vector
7135         construction.
7136         (vec_concatv2df): Ditto.
7137         (vec_concatv4sf): Ditto.
7139 2023-09-24  Pan Li  <pan2.li@intel.com>
7141         PR target/111546
7142         * config/riscv/riscv-v.cc
7143         (expand_vector_init_merge_repeating_sequence): Bugfix
7145 2023-09-24  Andrew Pinski  <apinski@marvell.com>
7147         PR tree-optimization/111543
7148         * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns.
7150 2023-09-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7152         * config/riscv/autovec-opt.md: Extend VLS modes
7153         * config/riscv/vector-iterators.md: Ditto.
7155 2023-09-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7157         * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT.
7159 2023-09-23  Pan Li  <pan2.li@intel.com>
7161         * config/riscv/autovec.md (floor<mode>2): New pattern.
7162         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
7163         (enum insn_type): Ditto.
7164         (expand_vec_floor): New function decl.
7165         * config/riscv/riscv-v.cc (gen_floor_const_fp): New function impl.
7166         (expand_vec_floor): Ditto.
7168 2023-09-22  Pan Li  <pan2.li@intel.com>
7170         * config/riscv/riscv-v.cc (expand_vec_float_cmp_mask): Refactor.
7171         (emit_vec_float_cmp_mask): Rename.
7172         (expand_vec_copysign): Ditto.
7173         (emit_vec_copysign): Ditto.
7174         (emit_vec_abs): New function impl.
7175         (emit_vec_cvt_x_f): Ditto.
7176         (emit_vec_cvt_f_x): Ditto.
7177         (expand_vec_ceil): Ditto.
7179 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7181         * config/riscv/vector-iterators.md: Extend VLS modes.
7183 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7185         * config/riscv/riscv-v.cc (gen_const_vector_dup): Use global expand function.
7186         * config/riscv/vector.md (@vec_duplicate<mode>): Remove @.
7187         (vec_duplicate<mode>): Ditto.
7189 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7191         * config/riscv/autovec.md: Add VLS conditional patterns.
7192         * config/riscv/riscv-protos.h (expand_cond_unop): Ditto.
7193         (expand_cond_binop): Ditto.
7194         (expand_cond_ternop): Ditto.
7195         * config/riscv/riscv-v.cc (expand_cond_unop): Ditto.
7196         (expand_cond_binop): Ditto.
7197         (expand_cond_ternop): Ditto.
7199 2023-09-22  xuli  <xuli1@eswincomputing.com>
7201         PR target/111451
7202         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv
7203                                                         into vrgatherei16.vv.
7205 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
7207         * config/riscv/autovec-opt.md (*cond_widen_reduc_plus_scal_<mode>):
7208         New combine patterns.
7209         * config/riscv/riscv-protos.h (enum insn_type): New insn_type.
7211 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
7213         * config/riscv/riscv-protos.h (enum avl_type): New VLS avl_type.
7214         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Move comments.
7216 2023-09-22  Pan Li  <pan2.li@intel.com>
7218         * config/riscv/autovec.md (ceil<mode>2): New pattern.
7219         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
7220         (enum insn_type): Ditto.
7221         (expand_vec_ceil): New function decl.
7222         * config/riscv/riscv-v.cc (gen_ceil_const_fp): New function impl.
7223         (expand_vec_float_cmp_mask): Ditto.
7224         (expand_vec_copysign): Ditto.
7225         (expand_vec_ceil): Ditto.
7226         * config/riscv/vector.md: Add VLS mode support.
7228 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7230         * config/riscv/autovec.md: Extend VLS modes.
7232 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7234         * config/riscv/vector-iterators.md: Extend VLS modes.
7236 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
7237             Robin Dapp  <rdapp.gcc@gmail.com>
7239         * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments.
7240         (emit_nonvlmax_insn): Adjust comments.
7241         (emit_vlmax_insn_lra): Adjust comments.
7243 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7245         * config.gcc (*linux*): Set rust target_objs, and
7246         target_has_targetrustm,
7247         * config/t-linux (linux-rust.o): New rule.
7248         * config/linux-rust.cc: New file.
7250 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7252         * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
7253         rust_target_objs and target_has_targetrustm.
7254         * config/t-winnt (winnt-rust.o): New rule.
7255         * config/winnt-rust.cc: New file.
7257 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7259         * config.gcc (*-*-fuchsia): Set tmake_rule, rust_target_objs,
7260         and target_has_targetrustm.
7261         * config/fuchsia-rust.cc: New file.
7262         * config/t-fuchsia: New file.
7264 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7266         * config.gcc (*-*-vxworks*): Set rust_target_objs and
7267         target_has_targetrustm.
7268         * config/t-vxworks (vxworks-rust.o): New rule.
7269         * config/vxworks-rust.cc: New file.
7271 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7273         * config.gcc (*-*-dragonfly*): Set rust_target_objs and
7274         target_has_targetrustm.
7275         * config/t-dragonfly (dragonfly-rust.o): New rule.
7276         * config/dragonfly-rust.cc: New file.
7278 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7280         * config.gcc (*-*-solaris2*): Set rust_target_objs and
7281         target_has_targetrustm.
7282         * config/t-sol2 (sol2-rust.o): New rule.
7283         * config/sol2-rust.cc: New file.
7285 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7287         * config.gcc (*-*-openbsd*): Set rust_target_objs and
7288         target_has_targetrustm.
7289         * config/t-openbsd (openbsd-rust.o): New rule.
7290         * config/openbsd-rust.cc: New file.
7292 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7294         * config.gcc (*-*-netbsd*): Set rust_target_objs and
7295         target_has_targetrustm.
7296         * config/t-netbsd (netbsd-rust.o): New rule.
7297         * config/netbsd-rust.cc: New file.
7299 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7301         * config.gcc (*-*-freebsd*): Set rust_target_objs and
7302         target_has_targetrustm.
7303         * config/t-freebsd (freebsd-rust.o): New rule.
7304         * config/freebsd-rust.cc: New file.
7306 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7308         * config.gcc (*-*-darwin*): Set rust_target_objs and
7309         target_has_targetrustm.
7310         * config/t-darwin (darwin-rust.o): New rule.
7311         * config/darwin-rust.cc: New file.
7313 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7315         * config/i386/t-i386 (i386-rust.o): New rule.
7316         * config/i386/i386-rust.cc: New file.
7317         * config/i386/i386-rust.h: New file.
7319 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7321         * doc/tm.texi: Regenerate.
7322         * doc/tm.texi.in: Document TARGET_RUST_OS_INFO.
7324 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7326         * doc/tm.texi: Regenerate.
7327         * doc/tm.texi.in: Add @node for Rust language and ABI, and document
7328         TARGET_RUST_CPU_INFO.
7330 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
7332         * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H,
7333         RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables.
7334         (tm_rust.h, cs-tm_rust.h, default-rust.o,
7335         rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules.
7336         (s-tm-texi): Also check timestamp on rust-target.def.
7337         (generated_files): Add TM_RUST_H and rust-target-hooks-def.h.
7338         (build/genhooks.o): Also depend on RUST_TARGET_DEF.
7339         * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm):
7340         New variables.
7341         * configure: Regenerate.
7342         * configure.ac (tm_rust_file_list, tm_rust_include_list,
7343         rust_target_objs): Add substitutes.
7344         * doc/tm.texi: Regenerate.
7345         * doc/tm.texi.in (targetrustm): Document.
7346         (target_has_targetrustm): Document.
7347         * genhooks.cc: Include rust/rust-target.def.
7348         * config/default-rust.cc: New file.
7350 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7352         PR target/110751
7353         * config/riscv/autovec.md: Enable scratch rtx in ELSE operand.
7354         * config/riscv/predicates.md (autovec_else_operand): New predicate.
7355         * config/riscv/riscv-v.cc (get_else_operand): New function.
7356         (expand_cond_len_unop): Adapt ELSE value.
7357         (expand_cond_len_binop): Ditto.
7358         (expand_cond_len_ternop): Ditto.
7359         * config/riscv/riscv.cc (riscv_preferred_else_value): New function.
7360         (TARGET_PREFERRED_ELSE_VALUE): New targethook.
7362 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7364         PR target/111486
7365         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug.
7367 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
7369         PR tree-optimization/111355
7370         * match.pd ((X + C) / N): Update pattern.
7372 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
7374         * match.pd ((t * 2) / 2): Update to use overflow_free_p.
7376 2023-09-21  xuli  <xuli1@eswincomputing.com>
7378         PR target/111450
7379         * config/riscv/constraints.md (c01): const_int 1.
7380         (c02): const_int 2.
7381         (c04): const_int 4.
7382         (c08): const_int 8.
7383         * config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand.
7384         (vector_eew16_stride_operand): Ditto.
7385         (vector_eew32_stride_operand): Ditto.
7386         (vector_eew64_stride_operand): Ditto.
7387         * config/riscv/vector-iterators.md: New iterator for stride operand.
7388         * config/riscv/vector.md: Add stride = element width constraint.
7390 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
7392         * config/riscv/predicates.md (const_1_or_2_operand): Rename.
7393         (const_1_or_4_operand): Ditto.
7394         (vector_gs_scale_operand_16): Ditto.
7395         (vector_gs_scale_operand_32): Ditto.
7396         * config/riscv/vector-iterators.md: Adjust.
7398 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7400         * config/riscv/autovec.md: Extend VLS modes.
7401         * config/riscv/vector-iterators.md: Ditto.
7402         * config/riscv/vector.md: Ditto.
7404 2023-09-20  Andrew MacLeod  <amacleod@redhat.com>
7406         * gimple-range-cache.cc (ssa_cache::merge_range): Change meaning
7407         of the return value.
7408         (ssa_cache::dump): Don't print GLOBAL RANGE header.
7409         (ssa_lazy_cache::merge_range): Adjust return value meaning.
7410         (ranger_cache::dump): Print GLOBAL RANGE header.
7412 2023-09-20  Aldy Hernandez  <aldyh@redhat.com>
7414         * range-op-float.cc (foperator_unordered_ge::fold_range): Remove
7415         special casing.
7416         (foperator_unordered_gt::fold_range): Same.
7417         (foperator_unordered_lt::fold_range): Same.
7418         (foperator_unordered_le::fold_range): Same.
7420 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
7422         * builtins.h (type_to_class): Declare.
7423         * builtins.cc (type_to_class): No longer static.  Return
7424         int rather than enum.
7425         * doc/extend.texi (__builtin_classify_type): Document.
7427 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7429         PR target/110751
7430         * internal-fn.cc (expand_fn_using_insn): Support undefined rtx value.
7431         * optabs.cc (maybe_legitimize_operand): Ditto.
7432         (can_reuse_operands_p): Ditto.
7433         * optabs.h (enum expand_operand_type): Ditto.
7434         (create_undefined_input_operand): Ditto.
7436 2023-09-20  Tobias Burnus  <tobias@codesourcery.com>
7438         * gimplify.cc (gimplify_bind_expr): Call GOMP_alloc/free for
7439         'omp allocate' variables; move stack cleanup after other
7440         cleanup.
7441         (omp_notice_variable): Process original decl when decl
7442         of the value-expression for a 'omp allocate' variable is passed.
7443         * omp-low.cc (scan_omp_1_op): Handle 'omp allocate' variables
7445 2023-09-20  Yanzhang Wang  <yanzhang.wang@intel.com>
7447         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
7448         support simplifying vector int not only scalar int.
7450 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7452         * config/riscv/vector-iterators.md: Extend VLS floating-point.
7454 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7456         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug.
7458 2023-09-20  Iain Sandoe  <iain@sandoe.co.uk>
7460         * config/darwin.h:
7461         (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same
7462         specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'.
7464 2023-09-20  Richard Biener  <rguenther@suse.de>
7466         PR tree-optimization/111489
7467         * params.opt (-param uninit-max-chain-len=): Raise default to 8.
7469 2023-09-20  Richard Biener  <rguenther@suse.de>
7471         PR tree-optimization/111489
7472         * doc/invoke.texi (--param uninit-max-chain-len): Document.
7473         (--param uninit-max-num-chains): Likewise.
7474         * params.opt (-param=uninit-max-chain-len=): New.
7475         (-param=uninit-max-num-chains=): Likewise.
7476         * gimple-predicate-analysis.cc (MAX_NUM_CHAINS): Define to
7477         param_uninit_max_num_chains.
7478         (MAX_CHAIN_LEN): Define to param_uninit_max_chain_len.
7479         (uninit_analysis::init_use_preds): Avoid VLA.
7480         (uninit_analysis::init_from_phi_def): Likewise.
7481         (compute_control_dep_chain): Avoid using MAX_CHAIN_LEN in
7482         template parameter.
7484 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
7486         * match.pd ((x << c) >> c): Use MAX_FIXED_MODE_SIZE instead of
7487         GET_MODE_PRECISION of TImode or DImode depending on whether
7488         TImode is supported scalar mode.
7489         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
7490         * expr.cc (expand_expr_real_1): Likewise.
7491         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
7492         * ubsan.cc (ubsan_encode_value, ubsan_type_descriptor): Likewise.
7494 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
7496         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move and rename.
7497         (*n<optab><mode>): Ditto.
7498         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): Ditto.
7499         (*<any_shiftrt:optab>trunc<mode>): Ditto.
7500         (*narrow_<any_shiftrt:optab><any_extend:optab><mode>): Ditto.
7501         (*narrow_<any_shiftrt:optab><mode>_scalar): Ditto.
7502         (*single_widen_mult<any_extend:su><mode>): Ditto.
7503         (*single_widen_mul<any_extend:su><mode>): Ditto.
7504         (*single_widen_mult<mode>): Ditto.
7505         (*single_widen_mul<mode>): Ditto.
7506         (*dual_widen_fma<mode>): Ditto.
7507         (*dual_widen_fma<su><mode>): Ditto.
7508         (*single_widen_fma<mode>): Ditto.
7509         (*single_widen_fma<su><mode>): Ditto.
7510         (*dual_fma<mode>): Ditto.
7511         (*single_fma<mode>): Ditto.
7512         (*dual_fnma<mode>): Ditto.
7513         (*dual_widen_fnma<mode>): Ditto.
7514         (*single_fnma<mode>): Ditto.
7515         (*single_widen_fnma<mode>): Ditto.
7516         (*dual_fms<mode>): Ditto.
7517         (*dual_widen_fms<mode>): Ditto.
7518         (*single_fms<mode>): Ditto.
7519         (*single_widen_fms<mode>): Ditto.
7520         (*dual_fnms<mode>): Ditto.
7521         (*dual_widen_fnms<mode>): Ditto.
7522         (*single_fnms<mode>): Ditto.
7523         (*single_widen_fnms<mode>): Ditto.
7525 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
7527         PR c++/111392
7528         * attribs.cc (decl_attributes): Don't warn on omp::directive attribute
7529         on vars or function decls if -fopenmp or -fopenmp-simd.
7531 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
7533         PR target/111488
7534         * config/riscv/autovec-opt.md: Add missed operand.
7536 2023-09-20  Omar Sandoval  <osandov@osandov.com>
7538         PR debug/111409
7539         * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
7540         dwarf_split_debug_info.
7542 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7544         * config/riscv/riscv-v.cc (can_find_related_mode_p): New function.
7545         (vectorize_related_mode): Add VLS related modes.
7546         * config/riscv/vector-iterators.md: Extend VLS modes.
7548 2023-09-20  Surya Kumari Jangala  <jskumari@linux.ibm.com>
7550         PR rtl-optimization/110071
7551         * ira-color.cc (improve_allocation): Consider cost of callee
7552         save registers.
7554 2023-09-20  mengqinggang  <mengqinggang@loongson.cn>
7555             Xi Ruoyao  <xry111@xry111.site>
7557         * configure: Regenerate.
7558         * configure.ac: Checking assembler for -mno-relax support.
7559         Disable relaxation when probing leb128 support.
7561 2023-09-20  Lulu Cheng  <chenglulu@loongson.cn>
7563         * config.in: Regenerate.
7564         * config/loongarch/genopts/loongarch.opt.in: Add compilation option
7565         mrelax. And set the initial value of explicit-relocs according to the
7566         detection status.
7567         * config/loongarch/gnu-user.h: When compiling with -mno-relax, pass the
7568         --no-relax option to the linker.
7569         * config/loongarch/loongarch-driver.h (ASM_SPEC): When compiling with
7570         -mno-relax, pass the -mno-relax option to the assembler.
7571         * config/loongarch/loongarch-opts.h (HAVE_AS_MRELAX_OPTION): Define macro.
7572         * config/loongarch/loongarch.opt: Regenerate.
7573         * configure: Regenerate.
7574         * configure.ac: Add detection of support for binutils relax function.
7576 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
7578         * doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and
7579         -fdeps-target= flags.
7580         * gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when
7581         only -fdeps-format= is specified.
7582         * json.h: Add a TODO item to refactor out to share with
7583         `libcpp/mkdeps.cc`.
7585 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
7586             Jason Merrill  <jason@redhat.com>
7588         * gcc.cc (join_spec_func): Add a spec function to join all
7589         arguments.
7591 2023-09-19  Patrick O'Neill  <patrick@rivosinc.com>
7593         * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate
7594         src_op_0 var to avoid rtl check error.
7596 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
7598         * range-op-float.cc (frelop_early_resolve): Clean-up and remove
7599         special casing.
7600         (operator_not_equal::fold_range): Handle VREL_EQ.
7601         (operator_lt::fold_range): Remove special casing for VREL_EQ.
7602         (operator_gt::fold_range): Same.
7603         (foperator_unordered_equal::fold_range): Same.
7605 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
7607         * doc/extend.texi: Document attributes hot, cold on C++ types.
7609 2023-09-19  Pat Haugen  <pthaugen@linux.ibm.com>
7611         * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the
7612         modulo instruction is disabled.
7613         * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New.
7614         * config/rs6000/rs6000.md (mod<mode>3, *mod<mode>3): Check it.
7615         (define_expand umod<mode>3): New.
7616         (define_insn umod<mode>3): Rename to *umod<mode>3 and check if the modulo
7617         instruction is disabled.
7618         (umodti3, modti3): Check if the modulo instruction is disabled.
7620 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
7622         * doc/gm2.texi (fdebug-builtins): Correct description.
7624 2023-09-19  Jeff Law  <jlaw@ventanamicro.com>
7626         * config/iq2000/predicates.md (uns_arith_constant): New predicate.
7627         * config/iq2000/iq2000.md (rotrsi3): Use it.
7629 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
7631         * range-op-float.cc (operator_lt::op1_range): Remove known_isnan check.
7632         (operator_lt::op2_range): Same.
7633         (operator_le::op1_range): Same.
7634         (operator_le::op2_range): Same.
7635         (operator_gt::op1_range): Same.
7636         (operator_gt::op2_range): Same.
7637         (operator_ge::op1_range): Same.
7638         (operator_ge::op2_range): Same.
7639         (foperator_unordered_lt::op1_range): Same.
7640         (foperator_unordered_lt::op2_range): Same.
7641         (foperator_unordered_le::op1_range): Same.
7642         (foperator_unordered_le::op2_range): Same.
7643         (foperator_unordered_gt::op1_range): Same.
7644         (foperator_unordered_gt::op2_range): Same.
7645         (foperator_unordered_ge::op1_range): Same.
7646         (foperator_unordered_ge::op2_range): Same.
7648 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
7650         * value-range.h (frange::update_nan): New.
7652 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
7654         * range-op-float.cc (operator_not_equal::op2_range): New.
7655         * range-op-mixed.h: Add operator_not_equal::op2_range.
7657 2023-09-19  Andrew MacLeod  <amacleod@redhat.com>
7659         PR tree-optimization/110080
7660         PR tree-optimization/110249
7661         * tree-vrp.cc (remove_unreachable::final_p): New.
7662         (remove_unreachable::maybe_register): Rename from
7663         maybe_register_block and call early or final routine.
7664         (fully_replaceable): New.
7665         (remove_unreachable::handle_early): New.
7666         (remove_unreachable::remove_and_update_globals): Remove
7667         non-final processing.
7668         (rvrp_folder::rvrp_folder): Add final flag to constructor.
7669         (rvrp_folder::post_fold_bb): Remove unreachable registration.
7670         (rvrp_folder::pre_fold_stmt): Move unreachable processing to here.
7671         (execute_ranger_vrp): Adjust some call parameters.
7673 2023-09-19  Richard Biener  <rguenther@suse.de>
7675         PR c/111468
7676         * tree-pretty-print.h (op_symbol_code): Add defaulted flags
7677         argument.
7678         * tree-pretty-print.cc (op_symbol): Likewise.
7679         (op_symbol_code): Print TDF_GIMPLE variant if requested.
7680         * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to
7681         op_symbol_code.
7682         (dump_gimple_cond): Likewise.
7684 2023-09-19  Thomas Schwinge  <thomas@codesourcery.com>
7685             Pan Li  <pan2.li@intel.com>
7687         * tree-streamer.h (bp_unpack_machine_mode): If
7688         'ib->file_data->mode_table' not available, apply 1-to-1 mapping.
7690 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7692         * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes.
7694 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7696         * config/riscv/autovec.md: Extend VLS modes.
7697         * config/riscv/vector.md: Ditto.
7699 2023-09-19  Richard Biener  <rguenther@suse.de>
7701         PR tree-optimization/111465
7702         * tree-ssa-threadupdate.cc (fwd_jt_path_registry::thread_block_1):
7703         Cancel the path when a EDGE_NO_COPY_SRC_BLOCK became non-empty.
7705 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7707         * config/riscv/autovec.md: Extend VLS floating-point modes.
7708         * config/riscv/vector.md: Ditto.
7710 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
7712         * match.pd ((x << c) >> c): Don't call build_nonstandard_integer_type
7713         nor check type_has_mode_precision_p for width larger than [TD]Imode
7714         precision.
7715         (a ? CST1 : CST2): Don't use build_nonstandard_type, just convert
7716         to type.  Use boolean_true_node instead of
7717         constant_boolean_node (true, boolean_type_node).  Formatting fixes.
7719 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7721         * config/riscv/autovec.md: Add VLS modes.
7722         * config/riscv/vector.md: Ditto.
7724 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
7726         * tree.cc (build_bitint_type): Assert precision is not 0, or
7727         for signed types 1.
7728         (signed_or_unsigned_type_for): Return INTEGER_TYPE for signed variant
7729         of unsigned _BitInt(1).
7731 2023-09-19  Lehua Ding  <lehua.ding@rivai.ai>
7733         * config/riscv/autovec-opt.md (*<optab>_fma<mode>):
7734         Removed old combine patterns.
7735         (*single_<optab>mult_plus<mode>): Ditto.
7736         (*double_<optab>mult_plus<mode>): Ditto.
7737         (*sign_zero_extend_fma): Ditto.
7738         (*zero_sign_extend_fma): Ditto.
7739         (*double_widen_fma<mode>): Ditto.
7740         (*single_widen_fma<mode>): Ditto.
7741         (*double_widen_fnma<mode>): Ditto.
7742         (*single_widen_fnma<mode>): Ditto.
7743         (*double_widen_fms<mode>): Ditto.
7744         (*single_widen_fms<mode>): Ditto.
7745         (*double_widen_fnms<mode>): Ditto.
7746         (*single_widen_fnms<mode>): Ditto.
7747         (*reduc_plus_scal_<mode>): Adjust name.
7748         (*widen_reduc_plus_scal_<mode>): Adjust name.
7749         (*dual_widen_fma<mode>): New combine pattern.
7750         (*dual_widen_fmasu<mode>): Ditto.
7751         (*dual_widen_fmaus<mode>): Ditto.
7752         (*dual_fma<mode>): Ditto.
7753         (*single_fma<mode>): Ditto.
7754         (*dual_fnma<mode>): Ditto.
7755         (*single_fnma<mode>): Ditto.
7756         (*dual_fms<mode>): Ditto.
7757         (*single_fms<mode>): Ditto.
7758         (*dual_fnms<mode>): Ditto.
7759         (*single_fnms<mode>): Ditto.
7760         * config/riscv/autovec.md (fma<mode>4):
7761         Reafctor fma pattern.
7762         (*fma<VI:mode><P:mode>): Removed.
7763         (fnma<mode>4): Reafctor.
7764         (*fnma<VI:mode><P:mode>): Removed.
7765         (*fma<VF:mode><P:mode>):  Removed.
7766         (*fnma<VF:mode><P:mode>):  Removed.
7767         (fms<mode>4):  Reafctor.
7768         (*fms<VF:mode><P:mode>):  Removed.
7769         (fnms<mode>4): Reafctor.
7770         (*fnms<VF:mode><P:mode>): Removed.
7771         * config/riscv/riscv-protos.h (prepare_ternary_operands):
7772         Adjust prototype.
7773         * config/riscv/riscv-v.cc (prepare_ternary_operands): Refactor.
7774         * config/riscv/vector.md (*pred_mul_plus<mode>_undef): New pattern.
7775         (*pred_mul_plus<mode>): Removed.
7776         (*pred_mul_plus<mode>_scalar): Removed.
7777         (*pred_mul_plus<mode>_extended_scalar): Removed.
7778         (*pred_minus_mul<mode>_undef):  New pattern.
7779         (*pred_minus_mul<mode>): Removed.
7780         (*pred_minus_mul<mode>_scalar): Removed.
7781         (*pred_minus_mul<mode>_extended_scalar): Removed.
7782         (*pred_mul_<optab><mode>_undef):  New pattern.
7783         (*pred_mul_<optab><mode>): Removed.
7784         (*pred_mul_<optab><mode>_scalar): Removed.
7785         (*pred_mul_neg_<optab><mode>_undef):  New pattern.
7786         (*pred_mul_neg_<optab><mode>): Removed.
7787         (*pred_mul_neg_<optab><mode>_scalar): Removed.
7789 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
7791         * config/riscv/riscv-vector-builtins.cc
7792         (builtin_decl, expand_builtin): Replace SVE with RVV.
7794 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
7796         * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc,
7797         riscv-cmo.def and riscv-scalar-crypto.def.
7799 2023-09-18  Pan Li  <pan2.li@intel.com>
7801         * config/riscv/autovec.md: Extend to vls mode.
7803 2023-09-18  Pan Li  <pan2.li@intel.com>
7805         * config/riscv/autovec.md: Bugfix.
7806         * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum.
7808 2023-09-18  Andrew Pinski  <apinski@marvell.com>
7810         PR tree-optimization/111442
7811         * match.pd (zero_one_valued_p): Have the bit_and match not be
7812         recursive.
7814 2023-09-18  Andrew Pinski  <apinski@marvell.com>
7816         PR tree-optimization/111435
7817         * match.pd (zero_one_valued_p): Don't do recursion
7818         on converts.
7820 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
7822         * config/darwin-protos.h (enum darwin_external_toolchain): New.
7823         * config/darwin.cc (DSYMUTIL_VERSION): New.
7824         (darwin_override_options): Choose the default debug DWARF version
7825         depending on the configured dsymutil version.
7827 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
7829         * configure: Regenerate.
7830         * configure.ac: Handle explict disable of stdlib option, set
7831         defaults for Darwin.
7833 2023-09-18  Andrew Pinski  <apinski@marvell.com>
7835         PR tree-optimization/111431
7836         * match.pd (`(a == CST) & a`): New pattern.
7838 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7840         * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests.
7841         * config/riscv/vector.md (@vec_duplicate<mode>): Remove.
7843 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
7845         PR target/105928
7846         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
7847         Add support for immediates using shifted ORR/BIC.
7848         (aarch64_split_dimode_const_store): Apply if we save one instruction.
7849         * config/aarch64/aarch64.md (<LOGICAL:optab>_<SHIFT:optab><mode>3):
7850         Make pattern global.
7852 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
7854         * config/aarch64/aarch64-cores.def (neoverse-n1): Place before ares.
7855         (neoverse-v1): Place before zeus.
7856         (neoverse-v2): Place before demeter.
7857         * config/aarch64/aarch64-tune.md: Regenerate.
7859 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7861         * config/riscv/autovec.md: Add VLS modes.
7862         * config/riscv/vector-iterators.md: Ditto.
7863         * config/riscv/vector.md: Ditto.
7865 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7867         * config/riscv/riscv-vsetvl.cc (vlmul_for_greatest_sew_second_ratio): New function.
7868         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Fix bug.
7870 2023-09-18  Richard Biener  <rguenther@suse.de>
7872         PR tree-optimization/111294
7873         * tree-ssa-threadbackward.cc (back_threader_profitability::m_name):
7874         Remove
7875         (back_threader::find_paths_to_names): Adjust.
7876         (back_threader::maybe_thread_block): Likewise.
7877         (back_threader_profitability::possibly_profitable_path_p): Remove
7878         code applying extra costs to copies PHIs.
7880 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7882         * config/riscv/autovec.md: Extend VLS modes.
7883         * config/riscv/vector.md: Ditto.
7885 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7887         * config/riscv/vector.md (mov<mode>): New pattern.
7888         (*mov<mode>_mem_to_mem): Ditto.
7889         (*mov<mode>): Ditto.
7890         (@mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
7891         (*mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
7892         (*mov<mode>_vls): Ditto.
7893         (movmisalign<mode>): Ditto.
7894         (@vec_duplicate<mode>): Ditto.
7895         * config/riscv/autovec-vls.md: Removed.
7897 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7899         PR target/111153
7900         * config/riscv/autovec.md: Add VLS modes.
7902 2023-09-18  Jason Merrill  <jason@redhat.com>
7904         * doc/gty.texi: Add discussion of cache vs. deletable.
7906 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7908         * config/riscv/autovec-vls.md (<optab><mode>3): Deleted.
7909         (copysign<mode>3): Ditto.
7910         (xorsign<mode>3): Ditto.
7911         (<optab><mode>2): Ditto.
7912         * config/riscv/autovec.md: Extend VLS modes.
7914 2023-09-18  Jiufu Guo  <guojiufu@linux.ibm.com>
7916         PR middle-end/111303
7917         * match.pd ((t * 2) / 2): Update pattern.
7919 2023-09-17  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
7921         * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn.
7923 2023-09-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7925         PR target/111391
7926         * config/riscv/autovec.md (@vec_extract<mode><vel>): Remove @.
7927         (vec_extract<mode><vel>): Ditto.
7928         * config/riscv/riscv-vsetvl.cc (emit_vsetvl_insn): Fix bug.
7929         (pass_vsetvl::local_eliminate_vsetvl_insn): Fix bug.
7930         * config/riscv/riscv.cc (riscv_legitimize_move): Expand VLS mode to scalar mode move.
7932 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
7934         * config/riscv/crypto.md (riscv_sha256sig0_<mode>,
7935         riscv_sha256sig1_<mode>, riscv_sha256sum0_<mode>,
7936         riscv_sha256sum1_<mode>, riscv_sm3p0_<mode>, riscv_sm3p1_<mode>,
7937         riscv_sm4ed_<mode>, riscv_sm4ks_<mode>): Remove and replace with
7938         new insn/expansions.
7939         (SHA256_OP, SM3_OP, SM4_OP): New iterators.
7940         (sha256_op, sm3_op, sm4_op): New attributes for iteration.
7941         (*riscv_<sha256_op>_si): New raw instruction for RV32.
7942         (*riscv_<sm3_op>_si): Ditto.
7943         (*riscv_<sm4_op>_si): Ditto.
7944         (riscv_<sha256_op>_di_extended): New base instruction for RV64.
7945         (riscv_<sm3_op>_di_extended): Ditto.
7946         (riscv_<sm4_op>_di_extended): Ditto.
7947         (riscv_<sha256_op>_si): New common instruction expansion.
7948         (riscv_<sm3_op>_si): Ditto.
7949         (riscv_<sm4_op>_si): Ditto.
7950         * config/riscv/riscv-builtins.cc: Add availability "crypto_zknh",
7951         "crypto_zksh" and "crypto_zksed".  Remove availability
7952         "crypto_zksh{32,64}" and "crypto_zksed{32,64}".
7953         * config/riscv/riscv-ftypes.def: Remove unused function type.
7954         * config/riscv/riscv-scalar-crypto.def: Make SHA-256, SM3 and SM4
7955         intrinsics to operate on uint32_t.
7957 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
7959         * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for
7960         uint8_t.  (RISCV_ATYPE_UHI): New for uint16_t.
7961         (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI):
7962         Removed as no longer used.
7963         (RISCV_ATYPE_UDI): New for uint64_t.
7964         * config/riscv/riscv-cmo.def: Make types unsigned for not working
7965         "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin
7966         argument/return types.
7967         * config/riscv/riscv-ftypes.def: Make bit manipulation, round
7968         number and shift amount types unsigned.
7969         * config/riscv/riscv-scalar-crypto.def: Ditto.
7971 2023-09-16  Pan Li  <pan2.li@intel.com>
7973         * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern.
7975 2023-09-15  Fei Gao  <gaofei@eswincomputing.com>
7977         * config/riscv/predicates.md: Restrict predicate
7978         to allow 'reg' only.
7980 2023-09-15  Andrew Pinski  <apinski@marvell.com>
7982         * match.pd (zero_one_valued_p): Match a cast from a zero_one_valued_p.
7983         Also match `a & zero_one_valued_p` too.
7985 2023-09-15  Andrew Pinski  <apinski@marvell.com>
7987         PR tree-optimization/111414
7988         * match.pd (`(1 >> X) != 0`): Check to see if
7989         the integer_onep was an integral type (not a vector type).
7991 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
7993         * gimple-range-fold.cc (fold_using_range::range_of_phi): Always
7994         run phi analysis, and do it before loop analysis.
7996 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
7998         * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix
7999         indentation.
8001 2023-09-15  Qing Zhao  <qing.zhao@oracle.com>
8003         PR tree-optimization/111407
8004         * tree-ssa-math-opts.cc (convert_mult_to_widen): Avoid the transform
8005         when one of the operands is subject to abnormal coalescing.
8007 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
8009         * config/riscv/riscv-protos.h (enum insn_flags): Change name.
8010         (enum insn_type): Ditto.
8011         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): Removed.
8012         (emit_vlmax_insn): Adjust.
8013         (emit_nonvlmax_insn): Adjust.
8014         (emit_vlmax_insn_lra): Adjust.
8016 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
8018         * config/riscv/autovec-opt.md: Adjust.
8019         * config/riscv/autovec.md: Ditto.
8020         * config/riscv/riscv-protos.h (enum class): Delete enum reduction_type.
8021         (expand_reduction): Adjust expand_reduction prototype.
8022         * config/riscv/riscv-v.cc (need_mask_operand_p): New helper function.
8023         (expand_reduction): Refactor expand_reduction.
8025 2023-09-15  Richard Sandiford  <richard.sandiford@arm.com>
8027         PR target/111411
8028         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require
8029         the lower memory access to a mem-pair operand.
8031 2023-09-15  Yang Yujie  <yangyujie@loongson.cn>
8033         * config.gcc: Pass the default ABI via TM_MULTILIB_CONFIG.
8034         * config/loongarch/loongarch-driver.h: Invoke MLIB_SELF_SPECS
8035         before the driver canonicalization routines.
8036         * config/loongarch/loongarch.h: Move definitions of CC1_SPEC etc.
8037         to loongarch-driver.h
8038         * config/loongarch/t-linux: Move multilib-related definitions to
8039         t-multilib.
8040         * config/loongarch/t-multilib: New file.  Inject library build
8041         options obtained from --with-multilib-list.
8042         * config/loongarch/t-loongarch: Same.
8044 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
8046         PR target/111381
8047         * config/riscv/autovec-opt.md (*reduc_plus_scal_<mode>):
8048         New combine pattern.
8049         (*fold_left_widen_plus_<mode>): Ditto.
8050         (*mask_len_fold_left_widen_plus_<mode>): Ditto.
8051         * config/riscv/autovec.md (reduc_plus_scal_<mode>):
8052         Change from define_expand to define_insn_and_split.
8053         (fold_left_plus_<mode>): Ditto.
8054         (mask_len_fold_left_plus_<mode>): Ditto.
8055         * config/riscv/riscv-v.cc (expand_reduction):
8056         Support widen reduction.
8057         * config/riscv/vector-iterators.md (UNSPEC_WREDUC_SUM):
8058         Add new iterators and attrs.
8060 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
8062         * diagnostic-event-id.h (diagnostic_thread_id_t): New typedef.
8063         * diagnostic-format-sarif.cc (class sarif_thread_flow): New.
8064         (sarif_thread_flow::sarif_thread_flow): New.
8065         (sarif_builder::make_code_flow_object): Reimplement, creating
8066         per-thread threadFlow objects, populating them with the relevant
8067         events.
8068         (sarif_builder::make_thread_flow_object): Delete, moving the
8069         code into sarif_builder::make_code_flow_object.
8070         (sarif_builder::make_thread_flow_location_object): Add
8071         "path_event_idx" param.  Use it to set "executionOrder"
8072         property.
8073         * diagnostic-path.h (diagnostic_event::get_thread_id): New
8074         pure-virtual vfunc.
8075         (class diagnostic_thread): New.
8076         (diagnostic_path::num_threads): New pure-virtual vfunc.
8077         (diagnostic_path::get_thread):  New pure-virtual vfunc.
8078         (diagnostic_path::multithreaded_p): New decl.
8079         (simple_diagnostic_event::simple_diagnostic_event): Add optional
8080         thread_id param.
8081         (simple_diagnostic_event::get_thread_id): New accessor.
8082         (simple_diagnostic_event::m_thread_id): New.
8083         (class simple_diagnostic_thread): New.
8084         (simple_diagnostic_path::simple_diagnostic_path): Move definition
8085         to diagnostic.cc.
8086         (simple_diagnostic_path::num_threads): New.
8087         (simple_diagnostic_path::get_thread): New.
8088         (simple_diagnostic_path::add_thread): New.
8089         (simple_diagnostic_path::add_thread_event): New.
8090         (simple_diagnostic_path::m_threads): New.
8091         * diagnostic-show-locus.cc (layout::layout): Add pretty_printer
8092         param for overriding the context's printer.
8093         (diagnostic_show_locus): Likwise.
8094         * diagnostic.cc (simple_diagnostic_path::simple_diagnostic_path):
8095         Move here from diagnostic-path.h.  Add main thread.
8096         (simple_diagnostic_path::num_threads): New.
8097         (simple_diagnostic_path::get_thread): New.
8098         (simple_diagnostic_path::add_thread): New.
8099         (simple_diagnostic_path::add_thread_event): New.
8100         (simple_diagnostic_event::simple_diagnostic_event): Add thread_id
8101         param and use it to initialize m_thread_id.  Reformat.
8102         * diagnostic.h: Add pretty_printer param for overriding the
8103         context's printer.
8104         * tree-diagnostic-path.cc: Add #define INCLUDE_VECTOR.
8105         (can_consolidate_events): Compare thread ids.
8106         (class per_thread_summary): New.
8107         (event_range::event_range): Add per_thread_summary arg.
8108         (event_range::print): Add "pp" param and use it rather than dc's
8109         printer.
8110         (event_range::m_thread_id): New field.
8111         (event_range::m_per_thread_summary): New field.
8112         (path_summary::multithreaded_p): New.
8113         (path_summary::get_events_for_thread_id): New.
8114         (path_summary::m_per_thread_summary): New field.
8115         (path_summary::m_thread_id_to_events): New field.
8116         (path_summary::get_or_create_events_for_thread_id): New.
8117         (path_summary::path_summary): Create per_thread_summary instances
8118         as needed and associate the event_range instances with them.
8119         (base_indent): Move here from print_path_summary_as_text.
8120         (per_frame_indent): Likewise.
8121         (class thread_event_printer): New, adapted from parts of
8122         print_path_summary_as_text.
8123         (print_path_summary_as_text): Make static.  Reimplement to
8124         moving most of existing code to class thread_event_printer,
8125         capturing state as per-thread as appropriate.
8126         (default_tree_diagnostic_path_printer): Add missing 'break' on
8127         final case.
8129 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
8131         * dwarf2cfi.cc (dwarf2cfi_cc_finalize): New.
8132         * dwarf2out.h (dwarf2cfi_cc_finalize): New decl.
8133         * ggc-common.cc (ggc_mark_roots): Multiply by rti->nelt when
8134         clearing the deletable gcc_root_tab_t.
8135         (ggc_common_finalize): New.
8136         * ggc.h (ggc_common_finalize): New decl.
8137         * toplev.cc (toplev::finalize): Call dwarf2cfi_cc_finalize and
8138         ggc_common_finalize.
8140 2023-09-14  Max Filippov  <jcmvbkbc@gmail.com>
8142         * config/xtensa/predicates.md (xtensa_cstoresi_operator): Add
8143         unsigned comparisons.
8144         * config/xtensa/xtensa.cc (xtensa_expand_scc): Add code
8145         generation of salt/saltu instructions.
8146         * config/xtensa/xtensa.h (TARGET_SALT): New macro.
8147         * config/xtensa/xtensa.md (salt, saltu): New instruction
8148         patterns.
8150 2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
8152         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
8153         by equiv savings.
8155 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
8157         * config/riscv/autovec.md: Change rtx code to unspec.
8158         * config/riscv/riscv-protos.h (expand_reduction): Change prototype.
8159         * config/riscv/riscv-v.cc (expand_reduction): Change prototype.
8160         * config/riscv/riscv-vector-builtins-bases.cc (class widen_reducop):
8161         Removed.
8162         (class widen_freducop): Removed.
8163         * config/riscv/vector-iterators.md (minu): Add reduc unspec, iterators, attrs.
8164         * config/riscv/vector.md (@pred_reduc_<reduc><mode>): Change name.
8165         (@pred_<reduc_op><mode>): New name.
8166         (@pred_widen_reduc_plus<v_su><mode>): Change name.
8167         (@pred_reduc_plus<order><mode>): Change name.
8168         (@pred_widen_reduc_plus<order><mode>): Change name.
8170 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
8172         * config/riscv/riscv-v.cc (expand_reduction): Adjust call.
8173         * config/riscv/riscv-vector-builtins-bases.cc: Adjust call.
8174         * config/riscv/vector-iterators.md: New iterators and attrs.
8175         * config/riscv/vector.md (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>):
8176         Removed.
8177         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Removed.
8178         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Removed.
8179         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Removed.
8180         (@pred_reduc_<reduc><mode>): Added.
8181         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): Removed.
8182         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Removed.
8183         (@pred_widen_reduc_plus<v_su><mode>): Added.
8184         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Removed.
8185         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): Removed.
8186         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Removed.
8187         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Removed.
8188         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Removed.
8189         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Removed.
8190         (@pred_reduc_plus<order><mode>): Added.
8191         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Removed.
8192         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Removed.
8193         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Removed.
8194         (@pred_widen_reduc_plus<order><mode>): Added.
8196 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
8198         * config/aarch64/aarch64.cc (aarch64_vector_costs::analyze_loop_info):
8199         Move WHILELO handling to...
8200         (aarch64_vector_costs::finish_cost): ...here.  Check whether the
8201         vectorizer has decided to use a predicated loop.
8203 2023-09-14  Andrew Pinski  <apinski@marvell.com>
8205         PR tree-optimization/106164
8206         * match.pd (`(X CMP1 CST1) AND/IOR (X CMP2 CST2)`):
8207         Expand to support constants that are off by one.
8209 2023-09-14  Andrew Pinski  <apinski@marvell.com>
8211         * genmatch.cc (parser::parse_result): For an else clause
8212         of an if statement inside a switch, error out explictly.
8214 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8216         * config/riscv/autovec-opt.md: Add VLS mask modes.
8217         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Remove @.
8218         (vcond_mask_<mode><vm>): Add VLS mask modes.
8219         * config/riscv/vector.md: Ditto.
8221 2023-09-14  Richard Biener  <rguenther@suse.de>
8223         PR tree-optimization/111294
8224         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
8225         operands that eventually become dead and use simple_dce_from_worklist
8226         to remove their definitions if they did so.
8228 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
8230         * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le):
8231         Accept all nonimmediate_operands, but keep the existing constraints.
8232         If the instruction is split before RA, load invalid addresses into
8233         a temporary register.
8234         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): Delete.
8236 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8238         PR target/111395
8239         * config/riscv/riscv-vsetvl.cc (avl_info::operator==): Fix ICE.
8240         (vector_insn_info::global_merge): Ditto.
8241         (vector_insn_info::get_avl_or_vl_reg): Ditto.
8243 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8245         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it.
8247 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
8249         * config/loongarch/loongarch-def.c: Modify the default value of
8250         branch_cost.
8252 2023-09-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8254         * config/xtensa/xtensa.cc (xtensa_expand_scc):
8255         Revert the changes from the last patch, as the work in the RTL
8256         expansion pass is too far to determine the physical registers.
8257         * config/xtensa/xtensa.md (*eqne_INT_MIN): Ditto.
8258         (eq_zero_NSA, eqne_zero, *eqne_zero_masked_bits): New patterns.
8260 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
8262         PR target/111334
8263         * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'.
8265 2023-09-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8267         * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes.
8268         (@vec_extract<mode><vel>): Ditto.
8269         * config/riscv/vector.md: Ditto
8271 2023-09-13  Andrew Pinski  <apinski@marvell.com>
8273         * match.pd (`X <= MAX(X, Y)`):
8274         Move before `MIN (X, C1) < C2` pattern.
8276 2023-09-13  Andrew Pinski  <apinski@marvell.com>
8278         PR tree-optimization/111364
8279         * match.pd (`MIN (X, Y) == X`): Extend
8280         to min/lt, min/ge, max/gt, max/le.
8282 2023-09-13  Andrew Pinski  <apinski@marvell.com>
8284         PR tree-optimization/111345
8285         * match.pd (`Y > (X % Y)`): Merge
8286         into ...
8287         (`(X % Y) < Y`): Pattern by adding `:c`
8288         on the comparison.
8290 2023-09-13  Richard Biener  <rguenther@suse.de>
8292         PR tree-optimization/111387
8293         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Check
8294         EDGE_DFS_BACK when doing BB vectorization.
8295         (vect_slp_function): Use rev_post_order_and_mark_dfs_back_seme
8296         to compute RPO and mark backedges.
8298 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
8300         * config/riscv/autovec-opt.md (*cond_<mulh_table><mode>3_highpart):
8301         New combine pattern.
8302         * config/riscv/autovec.md (smul<mode>3_highpart): Mrege smul and umul.
8303         (<mulh_table><mode>3_highpart): Merged pattern.
8304         (umul<mode>3_highpart): Mrege smul and umul.
8305         * config/riscv/vector-iterators.md (umul): New iterators.
8306         (UNSPEC_VMULHU): New iterators.
8308 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
8310         * config/riscv/autovec-opt.md (*cond_v<any_shiftrt:optab><any_extend:optab>trunc<mode>):
8311         New combine pattern.
8312         (*cond_<any_shiftrt:optab>trunc<mode>): Ditto.
8314 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
8316         * config/riscv/autovec-opt.md (*copysign<mode>_neg): Move.
8317         (*cond_copysign<mode>): New combine pattern.
8318         * config/riscv/riscv-v.cc (needs_fp_rounding): Extend.
8320 2023-09-13  Richard Biener  <rguenther@suse.de>
8322         PR tree-optimization/111397
8323         * tree-ssa-propagate.cc (may_propagate_copy): Change optional
8324         argument to specify whether the PHI destination doesn't flow in
8325         from an abnormal PHI.
8326         (propagate_value): Adjust.
8327         * tree-ssa-forwprop.cc (pass_forwprop::execute): Indicate abnormal
8328         PHI dest.
8329         * tree-ssa-sccvn.cc (eliminate_dom_walker::before_dom_children):
8330         Likewise.
8331         (process_bb): Likewise.
8333 2023-09-13  Pan Li  <pan2.li@intel.com>
8335         PR target/111362
8336         * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix.
8338 2023-09-13  Jiufu Guo  <guojiufu@linux.ibm.com>
8340         PR tree-optimization/111303
8341         * match.pd ((X - N * M) / N): Add undefined_p checking.
8342         ((X + N * M) / N): Likewise.
8343         ((X + C) div_rshift N): Likewise.
8345 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8347         PR target/111337
8348         * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern.
8350 2023-09-12  Martin Jambor  <mjambor@suse.cz>
8352         * dbgcnt.def (form_fma): New.
8353         * tree-ssa-math-opts.cc: Include dbgcnt.h.
8354         (convert_mult_to_fma): Bail out if the debug counter say so.
8356 2023-09-12  Edwin Lu  <ewlu@rivosinc.com>
8358         * config/riscv/autovec-opt.md: Update type
8359         * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert
8361 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8363         * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p):
8364         New function.
8365         (aarch64_layout_frame): Use it to decide whether locals should
8366         go above or below the saved registers.
8367         (aarch64_expand_prologue): Update stack layout comment.
8368         Emit a stack tie after the final adjustment.
8370 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8372         * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size)
8373         (aarch64_frame::below_hard_fp_saved_regs_size): Delete.
8374         * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly.
8376 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8378         * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe)
8379         (aarch64_frame::hard_fp_save_and_probe): New fields.
8380         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them.
8381         Rather than asserting that a leaf function saves LR, instead assert
8382         that a leaf function saves something.
8383         (aarch64_get_separate_components): Prevent the chosen probe
8384         registers from being individually shrink-wrapped.
8385         (aarch64_allocate_and_probe_stack_space): Remove workaround for
8386         probe registers that aren't at the bottom of the previous allocation.
8388 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8390         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
8391         Always probe the residual allocation at offset 1024, asserting
8392         that that is in range.
8394 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8396         * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that
8397         the LR save slot is in the first 16 bytes of the register save area.
8398         Only form STP/LDP push/pop candidates if both registers are valid.
8399         (aarch64_allocate_and_probe_stack_space): Remove workaround for
8400         when LR was not in the first 16 bytes.
8402 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8404         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
8405         Don't probe final allocations that are exactly 1KiB in size (after
8406         unprobed space above the final allocation has been deducted).
8408 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8410         * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak
8411         calculation of initial_adjust for frames in which all saves
8412         are SVE saves.
8414 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8416         * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify
8417         the allocation of the top of the frame.
8419 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8421         * config/aarch64/aarch64.h (aarch64_frame): Add comment above
8422         reg_offset.
8423         * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets
8424         from the bottom of the frame, rather than the bottom of the saved
8425         register area.  Measure reg_offset from the bottom of the frame
8426         rather than the bottom of the saved register area.
8427         (aarch64_save_callee_saves): Update accordingly.
8428         (aarch64_restore_callee_saves): Likewise.
8429         (aarch64_get_separate_components): Likewise.
8430         (aarch64_process_components): Likewise.
8432 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8434         * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment.
8436 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8438         * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename
8439         to...
8440         (aarch64_frame::bytes_above_hard_fp): ...this.
8441         * config/aarch64/aarch64.cc (aarch64_layout_frame)
8442         (aarch64_expand_prologue): Update accordingly.
8443         (aarch64_initial_elimination_offset): Likewise.
8445 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8447         * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to...
8448         (aarch64_frame::bytes_above_locals): ...this.
8449         * config/aarch64/aarch64.cc (aarch64_layout_frame)
8450         (aarch64_initial_elimination_offset): Update accordingly.
8452 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8454         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the
8455         calculation of chain_offset into the emit_frame_chain block.
8457 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8459         * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete.
8460         * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove
8461         callee_offset handling.
8462         (aarch64_save_callee_saves): Replace the start_offset parameter
8463         with a bytes_below_sp parameter.
8464         (aarch64_restore_callee_saves): Likewise.
8465         (aarch64_expand_prologue): Update accordingly.
8466         (aarch64_expand_epilogue): Likewise.
8468 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8470         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New
8471         field.
8472         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it.
8473         (aarch64_expand_epilogue): Use it instead of
8474         below_hard_fp_saved_regs_size.
8476 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8478         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New
8479         field.
8480         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it,
8481         and use it instead of crtl->outgoing_args_size.
8482         (aarch64_get_separate_components): Use bytes_below_saved_regs instead
8483         of outgoing_args_size.
8484         (aarch64_process_components): Likewise.
8486 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8488         * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly
8489         allocate the frame in one go if there are no saved registers.
8491 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8493         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use
8494         chain_offset rather than callee_offset.
8496 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
8498         * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use
8499         a local shorthand for cfun->machine->frame.
8500         (aarch64_restore_callee_saves, aarch64_get_separate_components):
8501         (aarch64_process_components): Likewise.
8502         (aarch64_allocate_and_probe_stack_space): Likewise.
8503         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
8504         (aarch64_layout_frame): Use existing shorthand for one more case.
8506 2023-09-12  Andrew Pinski  <apinski@marvell.com>
8508         PR tree-optimization/107881
8509         * match.pd (`(a CMP1 b) ^ (a CMP2 b)`): New pattern.
8510         (`(a CMP1 b) == (a CMP2 b)`): New pattern.
8512 2023-09-12  Pan Li  <pan2.li@intel.com>
8514         * config/riscv/riscv-vector-costs.h (struct range): Removed.
8516 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8518         * config/riscv/riscv-vector-costs.cc (get_last_live_range): New function.
8519         (compute_nregs_for_mode): Ditto.
8520         (live_range_conflict_p): Ditto.
8521         (max_number_of_live_regs): Ditto.
8522         (compute_lmul): Ditto.
8523         (costs::prefer_new_lmul_p): Ditto.
8524         (costs::better_main_loop_than_p): Ditto.
8525         * config/riscv/riscv-vector-costs.h (struct stmt_point): New struct.
8526         (struct var_live_range): Ditto.
8527         (struct autovec_info): Ditto.
8528         * config/riscv/t-riscv: Update makefile for COST model.
8530 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
8532         * fold-const.cc (range_check_type): Handle BITINT_TYPE like
8533         OFFSET_TYPE.
8535 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
8537         PR middle-end/111338
8538         * tree-ssa-sccvn.cc (struct vn_walk_cb_data): Add bufsize non-static
8539         data member.
8540         (vn_walk_cb_data::push_partial_def): Remove bufsize variable.
8541         (visit_nary_op): Avoid the BIT_AND_EXPR with constant rhs2
8542         optimization if type's precision is too large for
8543         vn_walk_cb_data::bufsize.
8545 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
8547         * doc/gm2.texi (Compiler options): Document new option
8548         -Wcase-enum.
8550 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
8552         * doc/sourcebuild.texi (stack_size): Update.
8554 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
8556         * config/riscv/bitmanip.md (*<optab>_not<mode>): Export INSN name.
8557         (<optab>_not<mode>3): Likewise.
8558         * config/riscv/riscv-protos.h (riscv_expand_strcmp): New
8559         prototype.
8560         * config/riscv/riscv-string.cc (GEN_EMIT_HELPER3): New helper
8561         macros.
8562         (GEN_EMIT_HELPER2): Likewise.
8563         (emit_strcmp_scalar_compare_byte): New function.
8564         (emit_strcmp_scalar_compare_subword): Likewise.
8565         (emit_strcmp_scalar_compare_word): Likewise.
8566         (emit_strcmp_scalar_load_and_compare): Likewise.
8567         (emit_strcmp_scalar_call_to_libc): Likewise.
8568         (emit_strcmp_scalar_result_calculation_nonul): Likewise.
8569         (emit_strcmp_scalar_result_calculation): Likewise.
8570         (riscv_expand_strcmp_scalar): Likewise.
8571         (riscv_expand_strcmp): Likewise.
8572         * config/riscv/riscv.md (*slt<u>_<X:mode><GPR:mode>): Export
8573         INSN name.
8574         (@slt<u>_<X:mode><GPR:mode>3): Likewise.
8575         (cmpstrnsi): Invoke expansion function for str(n)cmp.
8576         (cmpstrsi): Likewise.
8577         * config/riscv/riscv.opt: Add new parameter
8578         '-mstring-compare-inline-limit'.
8579         * doc/invoke.texi: Document new parameter
8580         '-mstring-compare-inline-limit'.
8582 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
8584         * config.gcc: Add new object riscv-string.o.
8585         riscv-string.cc.
8586         * config/riscv/riscv-protos.h (riscv_expand_strlen):
8587         New function.
8588         * config/riscv/riscv.md (strlen<mode>): New expand INSN.
8589         * config/riscv/riscv.opt: New flag 'minline-strlen'.
8590         * config/riscv/t-riscv: Add new object riscv-string.o.
8591         * config/riscv/thead.md (th_rev<mode>2): Export INSN name.
8592         (th_rev<mode>2): Likewise.
8593         (th_tstnbz<mode>2): New INSN.
8594         * doc/invoke.texi: Document '-minline-strlen'.
8595         * emit-rtl.cc (emit_likely_jump_insn): New helper function.
8596         (emit_unlikely_jump_insn): Likewise.
8597         * rtl.h (emit_likely_jump_insn): New prototype.
8598         (emit_unlikely_jump_insn): Likewise.
8599         * config/riscv/riscv-string.cc: New file.
8601 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
8603         * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P)
8604         (TARGET_SUPPORTS_ALIASES): Define.
8606 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
8608         * doc/sourcebuild.texi (check-function-bodies): Update.
8610 2023-09-12  Tobias Burnus  <tobias@codesourcery.com>
8612         * gimplify.cc (gimplify_bind_expr): Check for
8613         insertion after variable cleanup.  Convert 'omp allocate'
8614         var-decl attribute to GOMP_alloc/GOMP_free calls.
8616 2023-09-12  xuli  <xuli1@eswincomputing.com>
8618         * config/riscv/riscv-vector-builtins-bases.cc: remove unused
8619                 parameter e and replace NULL_RTX with gcc_unreachable.
8621 2023-09-12  xuli  <xuli1@eswincomputing.com>
8623         * config/riscv/riscv-vector-builtins-bases.cc (class vcreate): New class.
8624         (BASE): Ditto.
8625         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
8626         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Add vcreate support.
8627         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
8628         (SHAPE): Ditto.
8629         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
8630         * config/riscv/riscv-vector-builtins.cc: Add args type.
8632 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
8634         * config/riscv/riscv.cc
8635         (riscv_avoid_shrink_wrapping_separate): wrap the condition check in
8636         riscv_avoid_shrink_wrapping_separate.
8637         (riscv_avoid_multi_push):avoid multi push if shrink_wrapping_separate
8638         is active.
8639         (riscv_get_separate_components):call riscv_avoid_shrink_wrapping_separate
8641 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
8643         * shrink-wrap.cc (try_shrink_wrapping_separate):call
8644         use_shrink_wrapping_separate.
8645         (use_shrink_wrapping_separate): wrap the condition
8646         check in use_shrink_wrapping_separate.
8647         * shrink-wrap.h (use_shrink_wrapping_separate): add to extern
8649 2023-09-11  Andrew Pinski  <apinski@marvell.com>
8651         PR tree-optimization/111348
8652         * match.pd (`(a CMP b) ? minmax<a, c> : minmax<b, c>`): Add :c on
8653         the cmp part of the pattern.
8655 2023-09-11  Uros Bizjak  <ubizjak@gmail.com>
8657         PR target/111340
8658         * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT.
8659         Call output_addr_const for CASE_CONST_SCALAR_INT.
8661 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
8663         * config/riscv/thead.md: Update types
8665 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
8667         * config/riscv/riscv.md: Update types
8669 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
8671         * config/riscv/riscv.md: Add "zicond" type
8672         * config/riscv/zicond.md: Update types
8674 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
8676         * config/riscv/riscv.md: Add "pushpop" and "mvpair" types
8677         * config/riscv/zc.md: Update types
8679 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
8681         * config/riscv/autovec-opt.md: Update types
8682         * config/riscv/autovec.md: likewise
8684 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8686         * config/s390/s390-builtins.def (s390_vec_signed_flt): Fix
8687         builtin flag.
8688         (s390_vec_unsigned_flt): Ditto.
8689         (s390_vec_revb_flt): Ditto.
8690         (s390_vec_reve_flt): Ditto.
8691         (s390_vclfnhs): Fix operand flags.
8692         (s390_vclfnls): Ditto.
8693         (s390_vcrnfs): Ditto.
8694         (s390_vcfn): Ditto.
8695         (s390_vcnf): Ditto.
8697 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8699         * config/s390/s390-builtins.def (O_U64): New.
8700         (O1_U64): Ditto.
8701         (O2_U64): Ditto.
8702         (O3_U64): Ditto.
8703         (O4_U64): Ditto.
8704         (O_M12): Change bit position.
8705         (O_S2): Ditto.
8706         (O_S3): Ditto.
8707         (O_S4): Ditto.
8708         (O_S5): Ditto.
8709         (O_S8): Ditto.
8710         (O_S12): Ditto.
8711         (O_S16): Ditto.
8712         (O_S32): Ditto.
8713         (O_ELEM): Ditto.
8714         (O_LIT): Ditto.
8715         (OB_DEF_VAR): Add operand constraints.
8716         (B_DEF): Ditto.
8717         * config/s390/s390.cc (s390_const_operand_ok): Honour 64 bit
8718         operands.
8720 2023-09-11  Andrew Pinski  <apinski@marvell.com>
8722         PR tree-optimization/111349
8723         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): Add :c on
8724         the cmp part of the pattern.
8726 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8728         PR target/111311
8729         * config/riscv/riscv.opt: Set default as scalable vectorization.
8731 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8733         * config/riscv/riscv-protos.h (get_all_predecessors): Remove.
8734         (get_all_successors): Ditto.
8735         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
8736         (get_all_successors): Ditto.
8738 2023-09-11  Jakub Jelinek  <jakub@redhat.com>
8740         PR middle-end/111329
8741         * pretty-print.h (pp_wide_int): Rewrite from macro into inline
8742         function.  For printing values which don't fit into digit_buffer
8743         use out-of-line function.
8744         * wide-int-print.h (pp_wide_int_large): Declare.
8745         * wide-int-print.cc: Include pretty-print.h.
8746         (pp_wide_int_large): Define.
8748 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8750         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn):
8751         Use dominance analysis.
8752         (pass_vsetvl::init): Ditto.
8753         (pass_vsetvl::done): Ditto.
8755 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8757         PR target/111311
8758         * config/riscv/autovec.md: Add VLS modes.
8759         * config/riscv/riscv-protos.h (cmp_lmul_le_one): New function.
8760         (cmp_lmul_gt_one): Ditto.
8761         * config/riscv/riscv-v.cc (cmp_lmul_le_one): Ditto.
8762         (cmp_lmul_gt_one): Ditto.
8763         * config/riscv/riscv.cc (riscv_print_operand): Add VLS modes.
8764         (riscv_vectorize_vec_perm_const): Ditto.
8765         * config/riscv/vector-iterators.md: Ditto.
8766         * config/riscv/vector.md: Ditto.
8768 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8770         * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern.
8771         * config/riscv/vector-iterators.md: New iterator
8773 2023-09-11  Andrew Pinski  <apinski@marvell.com>
8775         PR tree-optimization/111346
8776         * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part
8777         of the pattern
8779 2023-09-11  liuhongt  <hongtao.liu@intel.com>
8781         PR target/111306
8782         PR target/111335
8783         * config/i386/sse.md (int_comm): New int_attr.
8784         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>):
8785         Remove % for Complex conjugate operations since they're not
8786         commutative.
8787         (fma_<complexpairopname>_<mode>_pair): Ditto.
8788         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
8789         (cmul<conj_op><mode>3): Ditto.
8791 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8793         * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand
8794         fixed-vlmax/vls vector permutation.
8796 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8798         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
8800 2023-09-10  Andrew Pinski  <apinski@marvell.com>
8802         PR tree-optimization/111331
8803         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`):
8804         Fix the LE/GE comparison to the correct value.
8805         * tree-ssa-phiopt.cc (minmax_replacement):
8806         Fix the LE/GE comparison for the
8807         `(a CMP CST1) ? max<a,CST2> : a` optimization.
8809 2023-09-10  Iain Sandoe  <iain@sandoe.co.uk>
8811         * config/darwin.cc (darwin_function_section): Place unlikely
8812         executed global init code into the standard cold section.
8814 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8816         PR target/111311
8817         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::vsetvl_fusion): Add TDF_DETAILS.
8818         (pass_vsetvl::pre_vsetvl): Ditto.
8819         (pass_vsetvl::init): Ditto.
8820         (pass_vsetvl::lazy_vsetvl): Ditto.
8822 2023-09-09  Lulu Cheng  <chenglulu@loongson.cn>
8824         * config/loongarch/loongarch.md (mulsidi3_64bit):
8825         Field unsigned extension support.
8826         (<u>muldi3_highpart): Modify template name.
8827         (<u>mulsi3_highpart): Likewise.
8828         (<u>mulsidi3_64bit): Field unsigned extension support.
8829         (<su>muldi3_highpart): Modify muldi3_highpart to
8830         smuldi3_highpart.
8831         (<su>mulsi3_highpart): Modify mulsi3_highpart to
8832         smulsi3_highpart.
8834 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
8836         * config/loongarch/loongarch.cc (loongarch_block_move_straight):
8837         Check precondition (delta must be a power of 2) and use
8838         popcount_hwi instead of a homebrew loop.
8840 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
8842         * config/loongarch/loongarch.h (LARCH_MAX_MOVE_PER_INSN):
8843         Define to the maximum amount of bytes able to be loaded or
8844         stored with one machine instruction.
8845         * config/loongarch/loongarch.cc (loongarch_mode_for_move_size):
8846         New static function.
8847         (loongarch_block_move_straight): Call
8848         loongarch_mode_for_move_size for machine_mode to be moved.
8849         (loongarch_expand_block_move): Use LARCH_MAX_MOVE_PER_INSN
8850         instead of UNITS_PER_WORD.
8852 2023-09-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8854         * config/riscv/vector-iterators.md: Fix floating-point operations predicate.
8856 2023-09-09  Lehua Ding  <lehua.ding@rivai.ai>
8858         * fold-const.cc (can_min_p): New function.
8859         (poly_int_binop): Try fold MIN_EXPR.
8861 2023-09-08  Aldy Hernandez  <aldyh@redhat.com>
8863         * range-op-float.cc (foperator_ltgt::fold_range): Do not special
8864         case VREL_EQ nor call frelop_early_resolve.
8866 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
8868         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
8869         Remove broken INSN.
8870         (*extendhi<SUPERQI:mode>2_th_ext): New INSN.
8871         (*extendqi<SUPERQI:mode>2_th_ext): New INSN.
8873 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
8875         * config/riscv/thead.md: Use more appropriate mode attributes
8876         for extensions.
8878 2023-09-08  Guo Jie  <guojie@loongson.cn>
8880         * common/config/loongarch/loongarch-common.cc:
8881         (default_options loongarch_option_optimization_table):
8882         Default to -fsched-pressure.
8884 2023-09-08  Yang Yujie  <yangyujie@loongson.cn>
8886         * config.gcc: remove non-POSIX syntax "<<<".
8888 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
8890         * config/riscv/bitmanip.md (*extend<SHORT:mode><SUPERQI:mode>2_zbb):
8891         Rename postfix to _bitmanip.
8892         (*extend<SHORT:mode><SUPERQI:mode>2_bitmanip): Renamed pattern.
8893         (*zero_extendhi<GPR:mode>2_zbb): Remove duplicated pattern.
8895 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8897         * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type.
8899 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8901         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug.
8903 2023-09-07  liuhongt  <hongtao.liu@intel.com>
8905         * config/i386/sse.md
8906         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): New define_insn.
8907         (VHFBF_AVX512VL): New mode iterator.
8908         (VI2HFBF_AVX512VL): New mode iterator.
8910 2023-09-07  Aldy Hernandez  <aldyh@redhat.com>
8912         * value-range.h (contains_zero_p): Return false for undefined ranges.
8913         * range-op-float.cc (operator_gt::op1_op2_relation): Adjust for
8914         contains_zero_p change above.
8915         (operator_ge::op1_op2_relation): Same.
8916         (operator_equal::op1_op2_relation): Same.
8917         (operator_not_equal::op1_op2_relation): Same.
8918         (operator_lt::op1_op2_relation): Same.
8919         (operator_le::op1_op2_relation): Same.
8920         (operator_ge::op1_op2_relation): Same.
8921         * range-op.cc (operator_equal::op1_op2_relation): Same.
8922         (operator_not_equal::op1_op2_relation): Same.
8923         (operator_lt::op1_op2_relation): Same.
8924         (operator_le::op1_op2_relation): Same.
8925         (operator_cast::op1_range): Same.
8926         (set_nonzero_range_from_mask): Same.
8927         (operator_bitwise_xor::op1_range): Same.
8928         (operator_addr_expr::fold_range): Same.
8929         (operator_addr_expr::op1_range): Same.
8931 2023-09-07  Andrew MacLeod  <amacleod@redhat.com>
8933         PR tree-optimization/110875
8934         * gimple-range.cc (gimple_ranger::prefill_name): Only invoke
8935         cache-prefilling routine when the ssa-name has no global value.
8937 2023-09-07  Vladimir N. Makarov  <vmakarov@redhat.com>
8939         PR target/111225
8940         * lra-constraints.cc (goal_reuse_alt_p): New global flag.
8941         (process_alt_operands): Set up the flag.  Clear flag for chosen
8942         alternative with special memory constraints.
8943         (process_alt_operands): Set up used insn alternative depending on the flag.
8945 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8947         * config/riscv/autovec-vls.md: Add VLS mask modes mov patterns.
8948         * config/riscv/riscv.md: Ditto.
8949         * config/riscv/vector-iterators.md: Ditto.
8950         * config/riscv/vector.md: Ditto.
8952 2023-09-07  David Malcolm  <dmalcolm@redhat.com>
8954         * diagnostic-core.h (error_meta): New decl.
8955         * diagnostic.cc (error_meta): New.
8957 2023-09-07  Jakub Jelinek  <jakub@redhat.com>
8959         PR c/102989
8960         * expr.cc (expand_expr_real_1): Don't call targetm.c.bitint_type_info
8961         inside gcc_assert, as later code relies on it filling info variable.
8962         * gimple-fold.cc (clear_padding_bitint_needs_padding_p,
8963         clear_padding_type): Likewise.
8964         * varasm.cc (output_constant): Likewise.
8965         * fold-const.cc (native_encode_int, native_interpret_int): Likewise.
8966         * stor-layout.cc (finish_bitfield_representative, layout_type):
8967         Likewise.
8968         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
8970 2023-09-07  Xi Ruoyao  <xry111@xry111.site>
8972         PR target/111252
8973         * config/loongarch/loongarch-protos.h
8974         (loongarch_pre_reload_split): Declare new function.
8975         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
8976         * config/loongarch/loongarch.cc
8977         (loongarch_pre_reload_split): Implement.
8978         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
8979         * config/loongarch/predicates.md (ins_zero_bitmask_operand):
8980         New predicate.
8981         * config/loongarch/loongarch.md (bstrins_<mode>_for_mask):
8982         New define_insn_and_split.
8983         (bstrins_<mode>_for_ior_mask): Likewise.
8984         (define_peephole2): Further optimize code sequence produced by
8985         bstrins_<mode>_for_ior_mask if possible.
8987 2023-09-07  Richard Sandiford  <richard.sandiford@arm.com>
8989         * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary
8990         rather than gen_rtx_PLUS.
8992 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8994         PR target/111313
8995         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_earliest_vsetvls): Remove.
8996         (pass_vsetvl::df_post_optimization): Remove incorrect function.
8998 2023-09-07  Tsukasa OI  <research_trasio@irq.a4lg.com>
9000         * common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
9001         Parse 'XVentanaCondOps' extension.
9002         * config/riscv/riscv-opts.h (MASK_XVENTANACONDOPS): New.
9003         (TARGET_XVENTANACONDOPS): Ditto.
9004         (TARGET_ZICOND_LIKE): New to represent targets with conditional
9005         moves like 'Zicond'.  It includes RV64 + 'XVentanaCondOps'.
9006         * config/riscv/riscv.cc (riscv_rtx_costs): Replace TARGET_ZICOND
9007         with TARGET_ZICOND_LIKE.
9008         (riscv_expand_conditional_move): Ditto.
9009         * config/riscv/riscv.md (mov<mode>cc): Replace TARGET_ZICOND with
9010         TARGET_ZICOND_LIKE.
9011         * config/riscv/riscv.opt: Add new riscv_xventana_subext.
9012         * config/riscv/zicond.md: Modify description.
9013         (eqz_ventana): New to match corresponding czero instructions.
9014         (nez_ventana): Ditto.
9015         (*czero.<eqz>.<GPR><X>): Emit a 'XVentanaCondOps' instruction if
9016         'Zicond' is not available but 'XVentanaCondOps' + RV64 is.
9017         (*czero.<eqz>.<GPR><X>): Ditto.
9018         (*czero.eqz.<GPR><X>.opt1): Ditto.
9019         (*czero.nez.<GPR><X>.opt2): Ditto.
9021 2023-09-06  Ian Lance Taylor  <iant@golang.org>
9023         PR go/111310
9024         * godump.cc (go_format_type): Handle BITINT_TYPE.
9026 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9028         PR c/102989
9029         * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE
9030         like INTEGER_TYPE.
9032 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9034         PR c/102989
9035         * gimple-lower-bitint.cc (bitint_large_huge::if_then_else,
9036         bitint_large_huge::if_then_if_then_else): Use make_single_succ_edge
9037         rather than make_edge, initialize bb->count.
9039 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9041         PR c/102989
9042         * doc/libgcc.texi (Bit-precise integer arithmetic functions):
9043         Document general rules for _BitInt support library functions
9044         and document __mulbitint3 and __divmodbitint4.
9045         (Conversion functions): Document __fix{s,d,x,t}fbitint,
9046         __floatbitint{s,d,x,t,h,b}f, __bid_fix{s,d,t}dbitint and
9047         __bid_floatbitint{s,d,t}d.
9049 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9051         PR c/102989
9052         * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is
9053         predefined.
9055 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9057         PR c/102989
9058         * internal-fn.cc (expand_ubsan_result_store): Add LHS, MODE and
9059         DO_ERROR arguments.  For non-mode precision BITINT_TYPE results
9060         check if all padding bits up to mode precision are zeros or sign
9061         bit copies and if not, jump to DO_ERROR.
9062         (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
9063         Adjust expand_ubsan_result_store callers.
9064         * ubsan.cc: Include target.h and langhooks.h.
9065         (ubsan_encode_value): Pass BITINT_TYPE values which fit into pointer
9066         size converted to pointer sized integer, pass BITINT_TYPE values
9067         which fit into TImode (if supported) or DImode as those integer types
9068         or otherwise for now punt (pass 0).
9069         (ubsan_type_descriptor): Handle BITINT_TYPE.  For pstyle of
9070         UBSAN_PRINT_FORCE_INT use TK_Integer (0x0000) mode with a
9071         TImode/DImode precision rather than TK_Unknown used otherwise for
9072         large/huge BITINT_TYPEs.
9073         (instrument_si_overflow): Instrument BITINT_TYPE operations even when
9074         they don't have mode precision.
9075         * ubsan.h (enum ubsan_print_style): New enumerator.
9077 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9079         PR c/102989
9080         * config/i386/i386.cc (classify_argument): Handle BITINT_TYPE.
9081         (ix86_bitint_type_info): New function.
9082         (TARGET_C_BITINT_TYPE_INFO): Redefine.
9084 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9086         PR c/102989
9087         * Makefile.in (OBJS): Add gimple-lower-bitint.o.
9088         * passes.def: Add pass_lower_bitint after pass_lower_complex and
9089         pass_lower_bitint_O0 after pass_lower_complex_O0.
9090         * tree-pass.h (PROP_gimple_lbitint): Define.
9091         (make_pass_lower_bitint_O0, make_pass_lower_bitint): Declare.
9092         * gimple-lower-bitint.h: New file.
9093         * tree-ssa-live.h (struct _var_map): Add bitint member.
9094         (init_var_map): Adjust declaration.
9095         (region_contains_p): Handle map->bitint like map->outofssa_p.
9096         * tree-ssa-live.cc (init_var_map): Add BITINT argument, initialize
9097         map->bitint and set map->outofssa_p to false if it is non-NULL.
9098         * tree-ssa-coalesce.cc: Include gimple-lower-bitint.h.
9099         (build_ssa_conflict_graph): Call build_bitint_stmt_ssa_conflicts if
9100         map->bitint.
9101         (create_coalesce_list_for_region): For map->bitint ignore SSA_NAMEs
9102         not in that bitmap, and allow res without default def.
9103         (compute_optimized_partition_bases): In map->bitint mode try hard to
9104         coalesce any SSA_NAMEs with the same size.
9105         (coalesce_bitint): New function.
9106         (coalesce_ssa_name): In map->bitint mode, or map->bitmap into
9107         used_in_copies and call coalesce_bitint.
9108         * gimple-lower-bitint.cc: New file.
9110 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
9112         PR c/102989
9113         * tree.def (BITINT_TYPE): New type.
9114         * tree.h (TREE_CHECK6, TREE_NOT_CHECK6): Define.
9115         (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Include
9116         BITINT_TYPE.
9117         (BITINT_TYPE_P): Define.
9118         (CONSTRUCTOR_BITFIELD_P): Return true even for BLKmode bit-fields if
9119         they have BITINT_TYPE type.
9120         (tree_check6, tree_not_check6): New inline functions.
9121         (any_integral_type_check): Include BITINT_TYPE.
9122         (build_bitint_type): Declare.
9123         * tree.cc (tree_code_size, wide_int_to_tree_1, cache_integer_cst,
9124         build_zero_cst, type_hash_canon_hash, type_cache_hasher::equal,
9125         type_hash_canon): Handle BITINT_TYPE.
9126         (bitint_type_cache): New variable.
9127         (build_bitint_type): New function.
9128         (signed_or_unsigned_type_for, verify_type_variant, verify_type):
9129         Handle BITINT_TYPE.
9130         (tree_cc_finalize): Free bitint_type_cache.
9131         * builtins.cc (type_to_class): Handle BITINT_TYPE.
9132         (fold_builtin_unordered_cmp): Handle BITINT_TYPE like INTEGER_TYPE.
9133         * cfgexpand.cc (expand_debug_expr): Punt on BLKmode BITINT_TYPE
9134         INTEGER_CSTs.
9135         * convert.cc (convert_to_pointer_1, convert_to_real_1,
9136         convert_to_complex_1): Handle BITINT_TYPE like INTEGER_TYPE.
9137         (convert_to_integer_1): Likewise.  For BITINT_TYPE don't check
9138         GET_MODE_PRECISION (TYPE_MODE (type)).
9139         * doc/generic.texi (BITINT_TYPE): Document.
9140         * doc/tm.texi.in (TARGET_C_BITINT_TYPE_INFO): New.
9141         * doc/tm.texi: Regenerated.
9142         * dwarf2out.cc (base_type_die, is_base_type, modified_type_die,
9143         gen_type_die_with_usage): Handle BITINT_TYPE.
9144         (rtl_for_decl_init): Punt on BLKmode BITINT_TYPE INTEGER_CSTs or
9145         handle those which fit into shwi.
9146         * expr.cc (expand_expr_real_1): Define EXTEND_BITINT macro, reduce
9147         to bitfield precision reads from BITINT_TYPE vars, parameters or
9148         memory locations.  Expand large/huge BITINT_TYPE INTEGER_CSTs into
9149         memory.
9150         * fold-const.cc (fold_convert_loc, make_range_step): Handle
9151         BITINT_TYPE.
9152         (extract_muldiv_1): For BITINT_TYPE use TYPE_PRECISION rather than
9153         GET_MODE_SIZE (SCALAR_INT_TYPE_MODE).
9154         (native_encode_int, native_interpret_int, native_interpret_expr):
9155         Handle BITINT_TYPE.
9156         * gimple-expr.cc (useless_type_conversion_p): Make BITINT_TYPE
9157         to some other integral type or vice versa conversions non-useless.
9158         * gimple-fold.cc (gimple_fold_builtin_memset): Punt for BITINT_TYPE.
9159         (clear_padding_unit): Mention in comment that _BitInt types don't need
9160         to fit either.
9161         (clear_padding_bitint_needs_padding_p): New function.
9162         (clear_padding_type_may_have_padding_p): Handle BITINT_TYPE.
9163         (clear_padding_type): Likewise.
9164         * internal-fn.cc (expand_mul_overflow): For unsigned non-mode
9165         precision operands force pos_neg? to 1.
9166         (expand_MULBITINT, expand_DIVMODBITINT, expand_FLOATTOBITINT,
9167         expand_BITINTTOFLOAT): New functions.
9168         * internal-fn.def (MULBITINT, DIVMODBITINT, FLOATTOBITINT,
9169         BITINTTOFLOAT): New internal functions.
9170         * internal-fn.h (expand_MULBITINT, expand_DIVMODBITINT,
9171         expand_FLOATTOBITINT, expand_BITINTTOFLOAT): Declare.
9172         * match.pd (non-equality compare simplifications from fold_binary):
9173         Punt if TYPE_MODE (arg1_type) is BLKmode.
9174         * pretty-print.h (pp_wide_int): Handle printing of large precision
9175         wide_ints which would buffer overflow digit_buffer.
9176         * stor-layout.cc (finish_bitfield_representative): For bit-fields
9177         with BITINT_TYPE, prefer representatives with precisions in
9178         multiple of limb precision.
9179         (layout_type): Handle BITINT_TYPE.  Handle COMPLEX_TYPE with BLKmode
9180         element type and assert it is BITINT_TYPE.
9181         * target.def (bitint_type_info): New C target hook.
9182         * target.h (struct bitint_info): New type.
9183         * targhooks.cc (default_bitint_type_info): New function.
9184         * targhooks.h (default_bitint_type_info): Declare.
9185         * tree-pretty-print.cc (dump_generic_node): Handle BITINT_TYPE.
9186         Handle printing large wide_ints which would buffer overflow
9187         digit_buffer.
9188         * tree-ssa-sccvn.cc: Include target.h.
9189         (eliminate_dom_walker::eliminate_stmt): Punt for large/huge
9190         BITINT_TYPE.
9191         * tree-switch-conversion.cc (jump_table_cluster::emit): For more than
9192         64-bit BITINT_TYPE subtract low bound from expression and cast to
9193         64-bit integer type both the controlling expression and case labels.
9194         * typeclass.h (enum type_class): Add bitint_type_class enumerator.
9195         * varasm.cc (output_constant): Handle BITINT_TYPE INTEGER_CSTs.
9196         * vr-values.cc (check_for_binary_op_overflow): Use widest2_int rather
9197         than widest_int.
9198         (simplify_using_ranges::simplify_internal_call_using_ranges): Use
9199         unsigned_type_for rather than build_nonstandard_integer_type.
9201 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9203         PR target/111296
9204         * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode
9205         tieable for RVV modes.
9207 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9209         PR target/111295
9210         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix.
9212 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9214         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT
9216 2023-09-06  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
9218         * config/xtensa/xtensa.cc (xtensa_expand_scc):
9219         Add code for particular constants (only 0 and INT_MIN for now)
9220         for EQ/NE boolean evaluation in SImode.
9221         * config/xtensa/xtensa.md (*eqne_INT_MIN): Remove because its
9222         implementation has been integrated into the above.
9224 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
9226         PR target/111232
9227         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>):
9228         Delete.
9229         (*pred_widen_mulsu<mode>): Delete.
9230         (*pred_single_widen_mul<mode>): Delete.
9231         (*dual_widen_<any_widen_binop:optab><any_extend:su><mode>):
9232         Add new combine patterns.
9233         (*single_widen_sub<any_extend:su><mode>): Ditto.
9234         (*single_widen_add<any_extend:su><mode>): Ditto.
9235         (*single_widen_mult<any_extend:su><mode>): Ditto.
9236         (*dual_widen_mulsu<mode>): Ditto.
9237         (*dual_widen_mulus<mode>): Ditto.
9238         (*dual_widen_<optab><mode>): Ditto.
9239         (*single_widen_add<mode>): Ditto.
9240         (*single_widen_sub<mode>): Ditto.
9241         (*single_widen_mult<mode>): Ditto.
9242         * config/riscv/autovec.md (<optab><mode>3):
9243         Change define_expand to define_insn_and_split.
9244         (<optab><mode>2): Ditto.
9245         (abs<mode>2): Ditto.
9246         (smul<mode>3_highpart): Ditto.
9247         (umul<mode>3_highpart): Ditto.
9249 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
9251         * config/riscv/riscv-protos.h (riscv_declare_function_name): Add protos.
9252         (riscv_asm_output_alias): Ditto.
9253         (riscv_asm_output_external): Ditto.
9254         * config/riscv/riscv.cc (riscv_asm_output_variant_cc):
9255         Output .variant_cc directive for vector function.
9256         (riscv_declare_function_name): Ditto.
9257         (riscv_asm_output_alias): Ditto.
9258         (riscv_asm_output_external): Ditto.
9259         * config/riscv/riscv.h (ASM_DECLARE_FUNCTION_NAME):
9260         Implement ASM_DECLARE_FUNCTION_NAME.
9261         (ASM_OUTPUT_DEF_FROM_DECLS): Implement ASM_OUTPUT_DEF_FROM_DECLS.
9262         (ASM_OUTPUT_EXTERNAL): Implement ASM_OUTPUT_EXTERNAL.
9264 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
9266         * config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls): Pass riscv_cc.
9267         * config/riscv/riscv.cc (struct riscv_frame_info): Add new fileds.
9268         (riscv_frame_info::reset): Reset new fileds.
9269         (riscv_call_tls_get_addr): Pass riscv_cc.
9270         (riscv_function_arg): Return riscv_cc for call patterm.
9271         (get_riscv_cc): New function return riscv_cc from rtl call_insn.
9272         (riscv_insn_callee_abi): Implement TARGET_INSN_CALLEE_ABI.
9273         (riscv_save_reg_p): Add vector callee-saved check.
9274         (riscv_stack_align): Add vector save area comment.
9275         (riscv_compute_frame_info): Ditto.
9276         (riscv_restore_reg): Update for type change.
9277         (riscv_for_each_saved_v_reg): New function save vector registers.
9278         (riscv_first_stack_step): Handle funciton with vector callee-saved registers.
9279         (riscv_expand_prologue): Ditto.
9280         (riscv_expand_epilogue): Ditto.
9281         (riscv_output_mi_thunk): Pass riscv_cc.
9282         (TARGET_INSN_CALLEE_ABI): Implement TARGET_INSN_CALLEE_ABI.
9283         * config/riscv/riscv.h (get_riscv_cc): Export get_riscv_cc function.
9284         * config/riscv/riscv.md: Add CALLEE_CC operand for call pattern.
9286 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
9288         * config/riscv/riscv-protos.h (builtin_type_p): New function for checking vector type.
9289         * config/riscv/riscv-vector-builtins.cc (builtin_type_p): Ditto.
9290         * config/riscv/riscv.cc (struct riscv_arg_info): New fields.
9291         (riscv_init_cumulative_args): Setup variant_cc field.
9292         (riscv_vector_type_p): New function for checking vector type.
9293         (riscv_hard_regno_nregs): Hoist declare.
9294         (riscv_get_vector_arg): Subroutine of riscv_get_arg_info.
9295         (riscv_get_arg_info): Support vector cc.
9296         (riscv_function_arg_advance): Update cum.
9297         (riscv_pass_by_reference): Handle vector args.
9298         (riscv_v_abi): New function return vector abi.
9299         (riscv_return_value_is_vector_type_p): New function for check vector arguments.
9300         (riscv_arguments_is_vector_type_p): New function for check vector returns.
9301         (riscv_fntype_abi): Implement TARGET_FNTYPE_ABI.
9302         (TARGET_FNTYPE_ABI): Implement TARGET_FNTYPE_ABI.
9303         * config/riscv/riscv.h (GCC_RISCV_H): Define macros for vector abi.
9304         (MAX_ARGS_IN_VECTOR_REGISTERS): Ditto.
9305         (MAX_ARGS_IN_MASK_REGISTERS): Ditto.
9306         (V_ARG_FIRST): Ditto.
9307         (V_ARG_LAST): Ditto.
9308         (enum riscv_cc): Define all RISCV_CC variants.
9309         * config/riscv/riscv.opt: Add --param=riscv-vector-abi.
9311 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
9313         * config/riscv/autovec-opt.md (*cond_<optab><mode>):
9314         Add sqrt + vcond_mask combine pattern.
9315         * config/riscv/autovec.md (<optab><mode>2):
9316         Change define_expand to define_insn_and_split.
9318 2023-09-06  Jason Merrill  <jason@redhat.com>
9320         * common.opt: Update -fabi-version=19.
9322 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
9324         * config/riscv/zicond.md: Add closing parent to a comment.
9326 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
9328         * config/riscv/riscv.cc (riscv_expand_conditional_move): Force
9329         large constant cons/alt into a register.
9331 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
9333         * config/riscv/riscv.cc (riscv_build_integer_1): Don't
9334         require one zero bit in the upper 32 bits for LI+RORI synthesis.
9336 2023-09-05  Jeff Law  <jlaw@ventanamicro.com>
9338         * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT.
9340 2023-09-05  Andrew Pinski  <apinski@marvell.com>
9342         PR tree-optimization/98710
9343         * match.pd (`(x | c) & ~(y | c)`, `(x & c) | ~(y & c)`): New pattern.
9344         (`x & ~(y | x)`, `x | ~(y & x)`): New patterns.
9346 2023-09-05  Andrew Pinski  <apinski@marvell.com>
9348         PR tree-optimization/103536
9349         * match.pd (`(x | y) & (x & z)`,
9350         `(x & y) | (x | z)`): New patterns.
9352 2023-09-05  Andrew Pinski  <apinski@marvell.com>
9354         PR tree-optimization/107137
9355         * match.pd (`(nop_convert)-(convert)a`): New pattern.
9357 2023-09-05  Andrew Pinski  <apinski@marvell.com>
9359         PR tree-optimization/96694
9360         * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns.
9362 2023-09-05  Andrew Pinski  <apinski@marvell.com>
9364         PR tree-optimization/105832
9365         * match.pd (`(1 >> X) != 0`): New pattern
9367 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
9369         * config/riscv/riscv.md: Update/Add types
9371 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
9373         * config/riscv/pic.md: Update types
9375 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
9377         * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant
9378         synthesis with rotate-right for XTheadBb.
9380 2023-09-05  Vineet Gupta  <vineetg@rivosinc.com>
9382         * config/riscv/zicond.md: Fix op2 pattern.
9384 2023-09-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
9386         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup.
9388 2023-09-05  Xi Ruoyao  <xry111@xry111.site>
9390         * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
9391         Define to 0 if not defined yet.
9393 2023-09-05  Kito Cheng  <kito.cheng@sifive.com>
9395         * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ...
9396         * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here.
9398 2023-09-05  Pan Li  <pan2.li@intel.com>
9400         * config/riscv/autovec-vls.md (copysign<mode>3): New pattern.
9401         * config/riscv/vector.md: Extend iterator for VLS.
9403 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
9405         * config.gcc: Export the header file lasxintrin.h.
9406         * config/loongarch/loongarch-builtins.cc (enum loongarch_builtin_type):
9407         Add Loongson ASX builtin functions support.
9408         (AVAIL_ALL): Ditto.
9409         (LASX_BUILTIN): Ditto.
9410         (LASX_NO_TARGET_BUILTIN): Ditto.
9411         (LASX_BUILTIN_TEST_BRANCH): Ditto.
9412         (CODE_FOR_lasx_xvsadd_b): Ditto.
9413         (CODE_FOR_lasx_xvsadd_h): Ditto.
9414         (CODE_FOR_lasx_xvsadd_w): Ditto.
9415         (CODE_FOR_lasx_xvsadd_d): Ditto.
9416         (CODE_FOR_lasx_xvsadd_bu): Ditto.
9417         (CODE_FOR_lasx_xvsadd_hu): Ditto.
9418         (CODE_FOR_lasx_xvsadd_wu): Ditto.
9419         (CODE_FOR_lasx_xvsadd_du): Ditto.
9420         (CODE_FOR_lasx_xvadd_b): Ditto.
9421         (CODE_FOR_lasx_xvadd_h): Ditto.
9422         (CODE_FOR_lasx_xvadd_w): Ditto.
9423         (CODE_FOR_lasx_xvadd_d): Ditto.
9424         (CODE_FOR_lasx_xvaddi_bu): Ditto.
9425         (CODE_FOR_lasx_xvaddi_hu): Ditto.
9426         (CODE_FOR_lasx_xvaddi_wu): Ditto.
9427         (CODE_FOR_lasx_xvaddi_du): Ditto.
9428         (CODE_FOR_lasx_xvand_v): Ditto.
9429         (CODE_FOR_lasx_xvandi_b): Ditto.
9430         (CODE_FOR_lasx_xvbitsel_v): Ditto.
9431         (CODE_FOR_lasx_xvseqi_b): Ditto.
9432         (CODE_FOR_lasx_xvseqi_h): Ditto.
9433         (CODE_FOR_lasx_xvseqi_w): Ditto.
9434         (CODE_FOR_lasx_xvseqi_d): Ditto.
9435         (CODE_FOR_lasx_xvslti_b): Ditto.
9436         (CODE_FOR_lasx_xvslti_h): Ditto.
9437         (CODE_FOR_lasx_xvslti_w): Ditto.
9438         (CODE_FOR_lasx_xvslti_d): Ditto.
9439         (CODE_FOR_lasx_xvslti_bu): Ditto.
9440         (CODE_FOR_lasx_xvslti_hu): Ditto.
9441         (CODE_FOR_lasx_xvslti_wu): Ditto.
9442         (CODE_FOR_lasx_xvslti_du): Ditto.
9443         (CODE_FOR_lasx_xvslei_b): Ditto.
9444         (CODE_FOR_lasx_xvslei_h): Ditto.
9445         (CODE_FOR_lasx_xvslei_w): Ditto.
9446         (CODE_FOR_lasx_xvslei_d): Ditto.
9447         (CODE_FOR_lasx_xvslei_bu): Ditto.
9448         (CODE_FOR_lasx_xvslei_hu): Ditto.
9449         (CODE_FOR_lasx_xvslei_wu): Ditto.
9450         (CODE_FOR_lasx_xvslei_du): Ditto.
9451         (CODE_FOR_lasx_xvdiv_b): Ditto.
9452         (CODE_FOR_lasx_xvdiv_h): Ditto.
9453         (CODE_FOR_lasx_xvdiv_w): Ditto.
9454         (CODE_FOR_lasx_xvdiv_d): Ditto.
9455         (CODE_FOR_lasx_xvdiv_bu): Ditto.
9456         (CODE_FOR_lasx_xvdiv_hu): Ditto.
9457         (CODE_FOR_lasx_xvdiv_wu): Ditto.
9458         (CODE_FOR_lasx_xvdiv_du): Ditto.
9459         (CODE_FOR_lasx_xvfadd_s): Ditto.
9460         (CODE_FOR_lasx_xvfadd_d): Ditto.
9461         (CODE_FOR_lasx_xvftintrz_w_s): Ditto.
9462         (CODE_FOR_lasx_xvftintrz_l_d): Ditto.
9463         (CODE_FOR_lasx_xvftintrz_wu_s): Ditto.
9464         (CODE_FOR_lasx_xvftintrz_lu_d): Ditto.
9465         (CODE_FOR_lasx_xvffint_s_w): Ditto.
9466         (CODE_FOR_lasx_xvffint_d_l): Ditto.
9467         (CODE_FOR_lasx_xvffint_s_wu): Ditto.
9468         (CODE_FOR_lasx_xvffint_d_lu): Ditto.
9469         (CODE_FOR_lasx_xvfsub_s): Ditto.
9470         (CODE_FOR_lasx_xvfsub_d): Ditto.
9471         (CODE_FOR_lasx_xvfmul_s): Ditto.
9472         (CODE_FOR_lasx_xvfmul_d): Ditto.
9473         (CODE_FOR_lasx_xvfdiv_s): Ditto.
9474         (CODE_FOR_lasx_xvfdiv_d): Ditto.
9475         (CODE_FOR_lasx_xvfmax_s): Ditto.
9476         (CODE_FOR_lasx_xvfmax_d): Ditto.
9477         (CODE_FOR_lasx_xvfmin_s): Ditto.
9478         (CODE_FOR_lasx_xvfmin_d): Ditto.
9479         (CODE_FOR_lasx_xvfsqrt_s): Ditto.
9480         (CODE_FOR_lasx_xvfsqrt_d): Ditto.
9481         (CODE_FOR_lasx_xvflogb_s): Ditto.
9482         (CODE_FOR_lasx_xvflogb_d): Ditto.
9483         (CODE_FOR_lasx_xvmax_b): Ditto.
9484         (CODE_FOR_lasx_xvmax_h): Ditto.
9485         (CODE_FOR_lasx_xvmax_w): Ditto.
9486         (CODE_FOR_lasx_xvmax_d): Ditto.
9487         (CODE_FOR_lasx_xvmaxi_b): Ditto.
9488         (CODE_FOR_lasx_xvmaxi_h): Ditto.
9489         (CODE_FOR_lasx_xvmaxi_w): Ditto.
9490         (CODE_FOR_lasx_xvmaxi_d): Ditto.
9491         (CODE_FOR_lasx_xvmax_bu): Ditto.
9492         (CODE_FOR_lasx_xvmax_hu): Ditto.
9493         (CODE_FOR_lasx_xvmax_wu): Ditto.
9494         (CODE_FOR_lasx_xvmax_du): Ditto.
9495         (CODE_FOR_lasx_xvmaxi_bu): Ditto.
9496         (CODE_FOR_lasx_xvmaxi_hu): Ditto.
9497         (CODE_FOR_lasx_xvmaxi_wu): Ditto.
9498         (CODE_FOR_lasx_xvmaxi_du): Ditto.
9499         (CODE_FOR_lasx_xvmin_b): Ditto.
9500         (CODE_FOR_lasx_xvmin_h): Ditto.
9501         (CODE_FOR_lasx_xvmin_w): Ditto.
9502         (CODE_FOR_lasx_xvmin_d): Ditto.
9503         (CODE_FOR_lasx_xvmini_b): Ditto.
9504         (CODE_FOR_lasx_xvmini_h): Ditto.
9505         (CODE_FOR_lasx_xvmini_w): Ditto.
9506         (CODE_FOR_lasx_xvmini_d): Ditto.
9507         (CODE_FOR_lasx_xvmin_bu): Ditto.
9508         (CODE_FOR_lasx_xvmin_hu): Ditto.
9509         (CODE_FOR_lasx_xvmin_wu): Ditto.
9510         (CODE_FOR_lasx_xvmin_du): Ditto.
9511         (CODE_FOR_lasx_xvmini_bu): Ditto.
9512         (CODE_FOR_lasx_xvmini_hu): Ditto.
9513         (CODE_FOR_lasx_xvmini_wu): Ditto.
9514         (CODE_FOR_lasx_xvmini_du): Ditto.
9515         (CODE_FOR_lasx_xvmod_b): Ditto.
9516         (CODE_FOR_lasx_xvmod_h): Ditto.
9517         (CODE_FOR_lasx_xvmod_w): Ditto.
9518         (CODE_FOR_lasx_xvmod_d): Ditto.
9519         (CODE_FOR_lasx_xvmod_bu): Ditto.
9520         (CODE_FOR_lasx_xvmod_hu): Ditto.
9521         (CODE_FOR_lasx_xvmod_wu): Ditto.
9522         (CODE_FOR_lasx_xvmod_du): Ditto.
9523         (CODE_FOR_lasx_xvmul_b): Ditto.
9524         (CODE_FOR_lasx_xvmul_h): Ditto.
9525         (CODE_FOR_lasx_xvmul_w): Ditto.
9526         (CODE_FOR_lasx_xvmul_d): Ditto.
9527         (CODE_FOR_lasx_xvclz_b): Ditto.
9528         (CODE_FOR_lasx_xvclz_h): Ditto.
9529         (CODE_FOR_lasx_xvclz_w): Ditto.
9530         (CODE_FOR_lasx_xvclz_d): Ditto.
9531         (CODE_FOR_lasx_xvnor_v): Ditto.
9532         (CODE_FOR_lasx_xvor_v): Ditto.
9533         (CODE_FOR_lasx_xvori_b): Ditto.
9534         (CODE_FOR_lasx_xvnori_b): Ditto.
9535         (CODE_FOR_lasx_xvpcnt_b): Ditto.
9536         (CODE_FOR_lasx_xvpcnt_h): Ditto.
9537         (CODE_FOR_lasx_xvpcnt_w): Ditto.
9538         (CODE_FOR_lasx_xvpcnt_d): Ditto.
9539         (CODE_FOR_lasx_xvxor_v): Ditto.
9540         (CODE_FOR_lasx_xvxori_b): Ditto.
9541         (CODE_FOR_lasx_xvsll_b): Ditto.
9542         (CODE_FOR_lasx_xvsll_h): Ditto.
9543         (CODE_FOR_lasx_xvsll_w): Ditto.
9544         (CODE_FOR_lasx_xvsll_d): Ditto.
9545         (CODE_FOR_lasx_xvslli_b): Ditto.
9546         (CODE_FOR_lasx_xvslli_h): Ditto.
9547         (CODE_FOR_lasx_xvslli_w): Ditto.
9548         (CODE_FOR_lasx_xvslli_d): Ditto.
9549         (CODE_FOR_lasx_xvsra_b): Ditto.
9550         (CODE_FOR_lasx_xvsra_h): Ditto.
9551         (CODE_FOR_lasx_xvsra_w): Ditto.
9552         (CODE_FOR_lasx_xvsra_d): Ditto.
9553         (CODE_FOR_lasx_xvsrai_b): Ditto.
9554         (CODE_FOR_lasx_xvsrai_h): Ditto.
9555         (CODE_FOR_lasx_xvsrai_w): Ditto.
9556         (CODE_FOR_lasx_xvsrai_d): Ditto.
9557         (CODE_FOR_lasx_xvsrl_b): Ditto.
9558         (CODE_FOR_lasx_xvsrl_h): Ditto.
9559         (CODE_FOR_lasx_xvsrl_w): Ditto.
9560         (CODE_FOR_lasx_xvsrl_d): Ditto.
9561         (CODE_FOR_lasx_xvsrli_b): Ditto.
9562         (CODE_FOR_lasx_xvsrli_h): Ditto.
9563         (CODE_FOR_lasx_xvsrli_w): Ditto.
9564         (CODE_FOR_lasx_xvsrli_d): Ditto.
9565         (CODE_FOR_lasx_xvsub_b): Ditto.
9566         (CODE_FOR_lasx_xvsub_h): Ditto.
9567         (CODE_FOR_lasx_xvsub_w): Ditto.
9568         (CODE_FOR_lasx_xvsub_d): Ditto.
9569         (CODE_FOR_lasx_xvsubi_bu): Ditto.
9570         (CODE_FOR_lasx_xvsubi_hu): Ditto.
9571         (CODE_FOR_lasx_xvsubi_wu): Ditto.
9572         (CODE_FOR_lasx_xvsubi_du): Ditto.
9573         (CODE_FOR_lasx_xvpackod_d): Ditto.
9574         (CODE_FOR_lasx_xvpackev_d): Ditto.
9575         (CODE_FOR_lasx_xvpickod_d): Ditto.
9576         (CODE_FOR_lasx_xvpickev_d): Ditto.
9577         (CODE_FOR_lasx_xvrepli_b): Ditto.
9578         (CODE_FOR_lasx_xvrepli_h): Ditto.
9579         (CODE_FOR_lasx_xvrepli_w): Ditto.
9580         (CODE_FOR_lasx_xvrepli_d): Ditto.
9581         (CODE_FOR_lasx_xvandn_v): Ditto.
9582         (CODE_FOR_lasx_xvorn_v): Ditto.
9583         (CODE_FOR_lasx_xvneg_b): Ditto.
9584         (CODE_FOR_lasx_xvneg_h): Ditto.
9585         (CODE_FOR_lasx_xvneg_w): Ditto.
9586         (CODE_FOR_lasx_xvneg_d): Ditto.
9587         (CODE_FOR_lasx_xvbsrl_v): Ditto.
9588         (CODE_FOR_lasx_xvbsll_v): Ditto.
9589         (CODE_FOR_lasx_xvfmadd_s): Ditto.
9590         (CODE_FOR_lasx_xvfmadd_d): Ditto.
9591         (CODE_FOR_lasx_xvfmsub_s): Ditto.
9592         (CODE_FOR_lasx_xvfmsub_d): Ditto.
9593         (CODE_FOR_lasx_xvfnmadd_s): Ditto.
9594         (CODE_FOR_lasx_xvfnmadd_d): Ditto.
9595         (CODE_FOR_lasx_xvfnmsub_s): Ditto.
9596         (CODE_FOR_lasx_xvfnmsub_d): Ditto.
9597         (CODE_FOR_lasx_xvpermi_q): Ditto.
9598         (CODE_FOR_lasx_xvpermi_d): Ditto.
9599         (CODE_FOR_lasx_xbnz_v): Ditto.
9600         (CODE_FOR_lasx_xbz_v): Ditto.
9601         (CODE_FOR_lasx_xvssub_b): Ditto.
9602         (CODE_FOR_lasx_xvssub_h): Ditto.
9603         (CODE_FOR_lasx_xvssub_w): Ditto.
9604         (CODE_FOR_lasx_xvssub_d): Ditto.
9605         (CODE_FOR_lasx_xvssub_bu): Ditto.
9606         (CODE_FOR_lasx_xvssub_hu): Ditto.
9607         (CODE_FOR_lasx_xvssub_wu): Ditto.
9608         (CODE_FOR_lasx_xvssub_du): Ditto.
9609         (CODE_FOR_lasx_xvabsd_b): Ditto.
9610         (CODE_FOR_lasx_xvabsd_h): Ditto.
9611         (CODE_FOR_lasx_xvabsd_w): Ditto.
9612         (CODE_FOR_lasx_xvabsd_d): Ditto.
9613         (CODE_FOR_lasx_xvabsd_bu): Ditto.
9614         (CODE_FOR_lasx_xvabsd_hu): Ditto.
9615         (CODE_FOR_lasx_xvabsd_wu): Ditto.
9616         (CODE_FOR_lasx_xvabsd_du): Ditto.
9617         (CODE_FOR_lasx_xvavg_b): Ditto.
9618         (CODE_FOR_lasx_xvavg_h): Ditto.
9619         (CODE_FOR_lasx_xvavg_w): Ditto.
9620         (CODE_FOR_lasx_xvavg_d): Ditto.
9621         (CODE_FOR_lasx_xvavg_bu): Ditto.
9622         (CODE_FOR_lasx_xvavg_hu): Ditto.
9623         (CODE_FOR_lasx_xvavg_wu): Ditto.
9624         (CODE_FOR_lasx_xvavg_du): Ditto.
9625         (CODE_FOR_lasx_xvavgr_b): Ditto.
9626         (CODE_FOR_lasx_xvavgr_h): Ditto.
9627         (CODE_FOR_lasx_xvavgr_w): Ditto.
9628         (CODE_FOR_lasx_xvavgr_d): Ditto.
9629         (CODE_FOR_lasx_xvavgr_bu): Ditto.
9630         (CODE_FOR_lasx_xvavgr_hu): Ditto.
9631         (CODE_FOR_lasx_xvavgr_wu): Ditto.
9632         (CODE_FOR_lasx_xvavgr_du): Ditto.
9633         (CODE_FOR_lasx_xvmuh_b): Ditto.
9634         (CODE_FOR_lasx_xvmuh_h): Ditto.
9635         (CODE_FOR_lasx_xvmuh_w): Ditto.
9636         (CODE_FOR_lasx_xvmuh_d): Ditto.
9637         (CODE_FOR_lasx_xvmuh_bu): Ditto.
9638         (CODE_FOR_lasx_xvmuh_hu): Ditto.
9639         (CODE_FOR_lasx_xvmuh_wu): Ditto.
9640         (CODE_FOR_lasx_xvmuh_du): Ditto.
9641         (CODE_FOR_lasx_xvssran_b_h): Ditto.
9642         (CODE_FOR_lasx_xvssran_h_w): Ditto.
9643         (CODE_FOR_lasx_xvssran_w_d): Ditto.
9644         (CODE_FOR_lasx_xvssran_bu_h): Ditto.
9645         (CODE_FOR_lasx_xvssran_hu_w): Ditto.
9646         (CODE_FOR_lasx_xvssran_wu_d): Ditto.
9647         (CODE_FOR_lasx_xvssrarn_b_h): Ditto.
9648         (CODE_FOR_lasx_xvssrarn_h_w): Ditto.
9649         (CODE_FOR_lasx_xvssrarn_w_d): Ditto.
9650         (CODE_FOR_lasx_xvssrarn_bu_h): Ditto.
9651         (CODE_FOR_lasx_xvssrarn_hu_w): Ditto.
9652         (CODE_FOR_lasx_xvssrarn_wu_d): Ditto.
9653         (CODE_FOR_lasx_xvssrln_bu_h): Ditto.
9654         (CODE_FOR_lasx_xvssrln_hu_w): Ditto.
9655         (CODE_FOR_lasx_xvssrln_wu_d): Ditto.
9656         (CODE_FOR_lasx_xvssrlrn_bu_h): Ditto.
9657         (CODE_FOR_lasx_xvssrlrn_hu_w): Ditto.
9658         (CODE_FOR_lasx_xvssrlrn_wu_d): Ditto.
9659         (CODE_FOR_lasx_xvftint_w_s): Ditto.
9660         (CODE_FOR_lasx_xvftint_l_d): Ditto.
9661         (CODE_FOR_lasx_xvftint_wu_s): Ditto.
9662         (CODE_FOR_lasx_xvftint_lu_d): Ditto.
9663         (CODE_FOR_lasx_xvsllwil_h_b): Ditto.
9664         (CODE_FOR_lasx_xvsllwil_w_h): Ditto.
9665         (CODE_FOR_lasx_xvsllwil_d_w): Ditto.
9666         (CODE_FOR_lasx_xvsllwil_hu_bu): Ditto.
9667         (CODE_FOR_lasx_xvsllwil_wu_hu): Ditto.
9668         (CODE_FOR_lasx_xvsllwil_du_wu): Ditto.
9669         (CODE_FOR_lasx_xvsat_b): Ditto.
9670         (CODE_FOR_lasx_xvsat_h): Ditto.
9671         (CODE_FOR_lasx_xvsat_w): Ditto.
9672         (CODE_FOR_lasx_xvsat_d): Ditto.
9673         (CODE_FOR_lasx_xvsat_bu): Ditto.
9674         (CODE_FOR_lasx_xvsat_hu): Ditto.
9675         (CODE_FOR_lasx_xvsat_wu): Ditto.
9676         (CODE_FOR_lasx_xvsat_du): Ditto.
9677         (loongarch_builtin_vectorized_function): Ditto.
9678         (loongarch_expand_builtin_insn): Ditto.
9679         (loongarch_expand_builtin): Ditto.
9680         * config/loongarch/loongarch-ftypes.def (1): Ditto.
9681         (2): Ditto.
9682         (3): Ditto.
9683         (4): Ditto.
9684         * config/loongarch/lasxintrin.h: New file.
9686 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
9688         * config/loongarch/loongarch-modes.def
9689         (VECTOR_MODES): Add Loongson ASX instruction support.
9690         * config/loongarch/loongarch-protos.h (loongarch_split_256bit_move): Ditto.
9691         (loongarch_split_256bit_move_p): Ditto.
9692         (loongarch_expand_vector_group_init): Ditto.
9693         (loongarch_expand_vec_perm_1): Ditto.
9694         * config/loongarch/loongarch.cc (loongarch_symbol_insns): Ditto.
9695         (loongarch_valid_offset_p): Ditto.
9696         (loongarch_address_insns): Ditto.
9697         (loongarch_const_insns): Ditto.
9698         (loongarch_legitimize_move): Ditto.
9699         (loongarch_builtin_vectorization_cost): Ditto.
9700         (loongarch_split_move_p): Ditto.
9701         (loongarch_split_move): Ditto.
9702         (loongarch_output_move_index_float): Ditto.
9703         (loongarch_split_256bit_move_p): Ditto.
9704         (loongarch_split_256bit_move): Ditto.
9705         (loongarch_output_move): Ditto.
9706         (loongarch_print_operand_reloc): Ditto.
9707         (loongarch_print_operand): Ditto.
9708         (loongarch_hard_regno_mode_ok_uncached): Ditto.
9709         (loongarch_hard_regno_nregs): Ditto.
9710         (loongarch_class_max_nregs): Ditto.
9711         (loongarch_can_change_mode_class): Ditto.
9712         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
9713         (loongarch_vector_mode_supported_p): Ditto.
9714         (loongarch_preferred_simd_mode): Ditto.
9715         (loongarch_autovectorize_vector_modes): Ditto.
9716         (loongarch_lsx_output_division): Ditto.
9717         (loongarch_expand_lsx_shuffle): Ditto.
9718         (loongarch_expand_vec_perm): Ditto.
9719         (loongarch_expand_vec_perm_interleave): Ditto.
9720         (loongarch_try_expand_lsx_vshuf_const): Ditto.
9721         (loongarch_expand_vec_perm_even_odd_1): Ditto.
9722         (loongarch_expand_vec_perm_even_odd): Ditto.
9723         (loongarch_expand_vec_perm_1): Ditto.
9724         (loongarch_expand_vec_perm_const_2): Ditto.
9725         (loongarch_is_quad_duplicate): Ditto.
9726         (loongarch_is_double_duplicate): Ditto.
9727         (loongarch_is_odd_extraction): Ditto.
9728         (loongarch_is_even_extraction): Ditto.
9729         (loongarch_is_extraction_permutation): Ditto.
9730         (loongarch_is_center_extraction): Ditto.
9731         (loongarch_is_reversing_permutation): Ditto.
9732         (loongarch_is_di_misalign_extract): Ditto.
9733         (loongarch_is_si_misalign_extract): Ditto.
9734         (loongarch_is_lasx_lowpart_interleave): Ditto.
9735         (loongarch_is_lasx_lowpart_interleave_2): Ditto.
9736         (COMPARE_SELECTOR): Ditto.
9737         (loongarch_is_lasx_lowpart_extract): Ditto.
9738         (loongarch_is_lasx_highpart_interleave): Ditto.
9739         (loongarch_is_lasx_highpart_interleave_2): Ditto.
9740         (loongarch_is_elem_duplicate): Ditto.
9741         (loongarch_is_op_reverse_perm): Ditto.
9742         (loongarch_is_single_op_perm): Ditto.
9743         (loongarch_is_divisible_perm): Ditto.
9744         (loongarch_is_triple_stride_extract): Ditto.
9745         (loongarch_vectorize_vec_perm_const): Ditto.
9746         (loongarch_cpu_sched_reassociation_width): Ditto.
9747         (loongarch_expand_vector_extract): Ditto.
9748         (emit_reduc_half): Ditto.
9749         (loongarch_expand_vec_unpack): Ditto.
9750         (loongarch_expand_vector_group_init): Ditto.
9751         (loongarch_expand_vector_init): Ditto.
9752         (loongarch_expand_lsx_cmp): Ditto.
9753         (loongarch_builtin_support_vector_misalignment): Ditto.
9754         * config/loongarch/loongarch.h (UNITS_PER_LASX_REG): Ditto.
9755         (BITS_PER_LASX_REG): Ditto.
9756         (STRUCTURE_SIZE_BOUNDARY): Ditto.
9757         (LASX_REG_FIRST): Ditto.
9758         (LASX_REG_LAST): Ditto.
9759         (LASX_REG_NUM): Ditto.
9760         (LASX_REG_P): Ditto.
9761         (LASX_REG_RTX_P): Ditto.
9762         (LASX_SUPPORTED_MODE_P): Ditto.
9763         * config/loongarch/loongarch.md: Ditto.
9764         * config/loongarch/lasx.md: New file.
9766 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
9768         * config.gcc: Export the header file lsxintrin.h.
9769         * config/loongarch/loongarch-builtins.cc (LARCH_FTYPE_NAME4): Add builtin function support.
9770         (enum loongarch_builtin_type): Ditto.
9771         (AVAIL_ALL): Ditto.
9772         (LARCH_BUILTIN): Ditto.
9773         (LSX_BUILTIN): Ditto.
9774         (LSX_BUILTIN_TEST_BRANCH): Ditto.
9775         (LSX_NO_TARGET_BUILTIN): Ditto.
9776         (CODE_FOR_lsx_vsadd_b): Ditto.
9777         (CODE_FOR_lsx_vsadd_h): Ditto.
9778         (CODE_FOR_lsx_vsadd_w): Ditto.
9779         (CODE_FOR_lsx_vsadd_d): Ditto.
9780         (CODE_FOR_lsx_vsadd_bu): Ditto.
9781         (CODE_FOR_lsx_vsadd_hu): Ditto.
9782         (CODE_FOR_lsx_vsadd_wu): Ditto.
9783         (CODE_FOR_lsx_vsadd_du): Ditto.
9784         (CODE_FOR_lsx_vadd_b): Ditto.
9785         (CODE_FOR_lsx_vadd_h): Ditto.
9786         (CODE_FOR_lsx_vadd_w): Ditto.
9787         (CODE_FOR_lsx_vadd_d): Ditto.
9788         (CODE_FOR_lsx_vaddi_bu): Ditto.
9789         (CODE_FOR_lsx_vaddi_hu): Ditto.
9790         (CODE_FOR_lsx_vaddi_wu): Ditto.
9791         (CODE_FOR_lsx_vaddi_du): Ditto.
9792         (CODE_FOR_lsx_vand_v): Ditto.
9793         (CODE_FOR_lsx_vandi_b): Ditto.
9794         (CODE_FOR_lsx_bnz_v): Ditto.
9795         (CODE_FOR_lsx_bz_v): Ditto.
9796         (CODE_FOR_lsx_vbitsel_v): Ditto.
9797         (CODE_FOR_lsx_vseqi_b): Ditto.
9798         (CODE_FOR_lsx_vseqi_h): Ditto.
9799         (CODE_FOR_lsx_vseqi_w): Ditto.
9800         (CODE_FOR_lsx_vseqi_d): Ditto.
9801         (CODE_FOR_lsx_vslti_b): Ditto.
9802         (CODE_FOR_lsx_vslti_h): Ditto.
9803         (CODE_FOR_lsx_vslti_w): Ditto.
9804         (CODE_FOR_lsx_vslti_d): Ditto.
9805         (CODE_FOR_lsx_vslti_bu): Ditto.
9806         (CODE_FOR_lsx_vslti_hu): Ditto.
9807         (CODE_FOR_lsx_vslti_wu): Ditto.
9808         (CODE_FOR_lsx_vslti_du): Ditto.
9809         (CODE_FOR_lsx_vslei_b): Ditto.
9810         (CODE_FOR_lsx_vslei_h): Ditto.
9811         (CODE_FOR_lsx_vslei_w): Ditto.
9812         (CODE_FOR_lsx_vslei_d): Ditto.
9813         (CODE_FOR_lsx_vslei_bu): Ditto.
9814         (CODE_FOR_lsx_vslei_hu): Ditto.
9815         (CODE_FOR_lsx_vslei_wu): Ditto.
9816         (CODE_FOR_lsx_vslei_du): Ditto.
9817         (CODE_FOR_lsx_vdiv_b): Ditto.
9818         (CODE_FOR_lsx_vdiv_h): Ditto.
9819         (CODE_FOR_lsx_vdiv_w): Ditto.
9820         (CODE_FOR_lsx_vdiv_d): Ditto.
9821         (CODE_FOR_lsx_vdiv_bu): Ditto.
9822         (CODE_FOR_lsx_vdiv_hu): Ditto.
9823         (CODE_FOR_lsx_vdiv_wu): Ditto.
9824         (CODE_FOR_lsx_vdiv_du): Ditto.
9825         (CODE_FOR_lsx_vfadd_s): Ditto.
9826         (CODE_FOR_lsx_vfadd_d): Ditto.
9827         (CODE_FOR_lsx_vftintrz_w_s): Ditto.
9828         (CODE_FOR_lsx_vftintrz_l_d): Ditto.
9829         (CODE_FOR_lsx_vftintrz_wu_s): Ditto.
9830         (CODE_FOR_lsx_vftintrz_lu_d): Ditto.
9831         (CODE_FOR_lsx_vffint_s_w): Ditto.
9832         (CODE_FOR_lsx_vffint_d_l): Ditto.
9833         (CODE_FOR_lsx_vffint_s_wu): Ditto.
9834         (CODE_FOR_lsx_vffint_d_lu): Ditto.
9835         (CODE_FOR_lsx_vfsub_s): Ditto.
9836         (CODE_FOR_lsx_vfsub_d): Ditto.
9837         (CODE_FOR_lsx_vfmul_s): Ditto.
9838         (CODE_FOR_lsx_vfmul_d): Ditto.
9839         (CODE_FOR_lsx_vfdiv_s): Ditto.
9840         (CODE_FOR_lsx_vfdiv_d): Ditto.
9841         (CODE_FOR_lsx_vfmax_s): Ditto.
9842         (CODE_FOR_lsx_vfmax_d): Ditto.
9843         (CODE_FOR_lsx_vfmin_s): Ditto.
9844         (CODE_FOR_lsx_vfmin_d): Ditto.
9845         (CODE_FOR_lsx_vfsqrt_s): Ditto.
9846         (CODE_FOR_lsx_vfsqrt_d): Ditto.
9847         (CODE_FOR_lsx_vflogb_s): Ditto.
9848         (CODE_FOR_lsx_vflogb_d): Ditto.
9849         (CODE_FOR_lsx_vmax_b): Ditto.
9850         (CODE_FOR_lsx_vmax_h): Ditto.
9851         (CODE_FOR_lsx_vmax_w): Ditto.
9852         (CODE_FOR_lsx_vmax_d): Ditto.
9853         (CODE_FOR_lsx_vmaxi_b): Ditto.
9854         (CODE_FOR_lsx_vmaxi_h): Ditto.
9855         (CODE_FOR_lsx_vmaxi_w): Ditto.
9856         (CODE_FOR_lsx_vmaxi_d): Ditto.
9857         (CODE_FOR_lsx_vmax_bu): Ditto.
9858         (CODE_FOR_lsx_vmax_hu): Ditto.
9859         (CODE_FOR_lsx_vmax_wu): Ditto.
9860         (CODE_FOR_lsx_vmax_du): Ditto.
9861         (CODE_FOR_lsx_vmaxi_bu): Ditto.
9862         (CODE_FOR_lsx_vmaxi_hu): Ditto.
9863         (CODE_FOR_lsx_vmaxi_wu): Ditto.
9864         (CODE_FOR_lsx_vmaxi_du): Ditto.
9865         (CODE_FOR_lsx_vmin_b): Ditto.
9866         (CODE_FOR_lsx_vmin_h): Ditto.
9867         (CODE_FOR_lsx_vmin_w): Ditto.
9868         (CODE_FOR_lsx_vmin_d): Ditto.
9869         (CODE_FOR_lsx_vmini_b): Ditto.
9870         (CODE_FOR_lsx_vmini_h): Ditto.
9871         (CODE_FOR_lsx_vmini_w): Ditto.
9872         (CODE_FOR_lsx_vmini_d): Ditto.
9873         (CODE_FOR_lsx_vmin_bu): Ditto.
9874         (CODE_FOR_lsx_vmin_hu): Ditto.
9875         (CODE_FOR_lsx_vmin_wu): Ditto.
9876         (CODE_FOR_lsx_vmin_du): Ditto.
9877         (CODE_FOR_lsx_vmini_bu): Ditto.
9878         (CODE_FOR_lsx_vmini_hu): Ditto.
9879         (CODE_FOR_lsx_vmini_wu): Ditto.
9880         (CODE_FOR_lsx_vmini_du): Ditto.
9881         (CODE_FOR_lsx_vmod_b): Ditto.
9882         (CODE_FOR_lsx_vmod_h): Ditto.
9883         (CODE_FOR_lsx_vmod_w): Ditto.
9884         (CODE_FOR_lsx_vmod_d): Ditto.
9885         (CODE_FOR_lsx_vmod_bu): Ditto.
9886         (CODE_FOR_lsx_vmod_hu): Ditto.
9887         (CODE_FOR_lsx_vmod_wu): Ditto.
9888         (CODE_FOR_lsx_vmod_du): Ditto.
9889         (CODE_FOR_lsx_vmul_b): Ditto.
9890         (CODE_FOR_lsx_vmul_h): Ditto.
9891         (CODE_FOR_lsx_vmul_w): Ditto.
9892         (CODE_FOR_lsx_vmul_d): Ditto.
9893         (CODE_FOR_lsx_vclz_b): Ditto.
9894         (CODE_FOR_lsx_vclz_h): Ditto.
9895         (CODE_FOR_lsx_vclz_w): Ditto.
9896         (CODE_FOR_lsx_vclz_d): Ditto.
9897         (CODE_FOR_lsx_vnor_v): Ditto.
9898         (CODE_FOR_lsx_vor_v): Ditto.
9899         (CODE_FOR_lsx_vori_b): Ditto.
9900         (CODE_FOR_lsx_vnori_b): Ditto.
9901         (CODE_FOR_lsx_vpcnt_b): Ditto.
9902         (CODE_FOR_lsx_vpcnt_h): Ditto.
9903         (CODE_FOR_lsx_vpcnt_w): Ditto.
9904         (CODE_FOR_lsx_vpcnt_d): Ditto.
9905         (CODE_FOR_lsx_vxor_v): Ditto.
9906         (CODE_FOR_lsx_vxori_b): Ditto.
9907         (CODE_FOR_lsx_vsll_b): Ditto.
9908         (CODE_FOR_lsx_vsll_h): Ditto.
9909         (CODE_FOR_lsx_vsll_w): Ditto.
9910         (CODE_FOR_lsx_vsll_d): Ditto.
9911         (CODE_FOR_lsx_vslli_b): Ditto.
9912         (CODE_FOR_lsx_vslli_h): Ditto.
9913         (CODE_FOR_lsx_vslli_w): Ditto.
9914         (CODE_FOR_lsx_vslli_d): Ditto.
9915         (CODE_FOR_lsx_vsra_b): Ditto.
9916         (CODE_FOR_lsx_vsra_h): Ditto.
9917         (CODE_FOR_lsx_vsra_w): Ditto.
9918         (CODE_FOR_lsx_vsra_d): Ditto.
9919         (CODE_FOR_lsx_vsrai_b): Ditto.
9920         (CODE_FOR_lsx_vsrai_h): Ditto.
9921         (CODE_FOR_lsx_vsrai_w): Ditto.
9922         (CODE_FOR_lsx_vsrai_d): Ditto.
9923         (CODE_FOR_lsx_vsrl_b): Ditto.
9924         (CODE_FOR_lsx_vsrl_h): Ditto.
9925         (CODE_FOR_lsx_vsrl_w): Ditto.
9926         (CODE_FOR_lsx_vsrl_d): Ditto.
9927         (CODE_FOR_lsx_vsrli_b): Ditto.
9928         (CODE_FOR_lsx_vsrli_h): Ditto.
9929         (CODE_FOR_lsx_vsrli_w): Ditto.
9930         (CODE_FOR_lsx_vsrli_d): Ditto.
9931         (CODE_FOR_lsx_vsub_b): Ditto.
9932         (CODE_FOR_lsx_vsub_h): Ditto.
9933         (CODE_FOR_lsx_vsub_w): Ditto.
9934         (CODE_FOR_lsx_vsub_d): Ditto.
9935         (CODE_FOR_lsx_vsubi_bu): Ditto.
9936         (CODE_FOR_lsx_vsubi_hu): Ditto.
9937         (CODE_FOR_lsx_vsubi_wu): Ditto.
9938         (CODE_FOR_lsx_vsubi_du): Ditto.
9939         (CODE_FOR_lsx_vpackod_d): Ditto.
9940         (CODE_FOR_lsx_vpackev_d): Ditto.
9941         (CODE_FOR_lsx_vpickod_d): Ditto.
9942         (CODE_FOR_lsx_vpickev_d): Ditto.
9943         (CODE_FOR_lsx_vrepli_b): Ditto.
9944         (CODE_FOR_lsx_vrepli_h): Ditto.
9945         (CODE_FOR_lsx_vrepli_w): Ditto.
9946         (CODE_FOR_lsx_vrepli_d): Ditto.
9947         (CODE_FOR_lsx_vsat_b): Ditto.
9948         (CODE_FOR_lsx_vsat_h): Ditto.
9949         (CODE_FOR_lsx_vsat_w): Ditto.
9950         (CODE_FOR_lsx_vsat_d): Ditto.
9951         (CODE_FOR_lsx_vsat_bu): Ditto.
9952         (CODE_FOR_lsx_vsat_hu): Ditto.
9953         (CODE_FOR_lsx_vsat_wu): Ditto.
9954         (CODE_FOR_lsx_vsat_du): Ditto.
9955         (CODE_FOR_lsx_vavg_b): Ditto.
9956         (CODE_FOR_lsx_vavg_h): Ditto.
9957         (CODE_FOR_lsx_vavg_w): Ditto.
9958         (CODE_FOR_lsx_vavg_d): Ditto.
9959         (CODE_FOR_lsx_vavg_bu): Ditto.
9960         (CODE_FOR_lsx_vavg_hu): Ditto.
9961         (CODE_FOR_lsx_vavg_wu): Ditto.
9962         (CODE_FOR_lsx_vavg_du): Ditto.
9963         (CODE_FOR_lsx_vavgr_b): Ditto.
9964         (CODE_FOR_lsx_vavgr_h): Ditto.
9965         (CODE_FOR_lsx_vavgr_w): Ditto.
9966         (CODE_FOR_lsx_vavgr_d): Ditto.
9967         (CODE_FOR_lsx_vavgr_bu): Ditto.
9968         (CODE_FOR_lsx_vavgr_hu): Ditto.
9969         (CODE_FOR_lsx_vavgr_wu): Ditto.
9970         (CODE_FOR_lsx_vavgr_du): Ditto.
9971         (CODE_FOR_lsx_vssub_b): Ditto.
9972         (CODE_FOR_lsx_vssub_h): Ditto.
9973         (CODE_FOR_lsx_vssub_w): Ditto.
9974         (CODE_FOR_lsx_vssub_d): Ditto.
9975         (CODE_FOR_lsx_vssub_bu): Ditto.
9976         (CODE_FOR_lsx_vssub_hu): Ditto.
9977         (CODE_FOR_lsx_vssub_wu): Ditto.
9978         (CODE_FOR_lsx_vssub_du): Ditto.
9979         (CODE_FOR_lsx_vabsd_b): Ditto.
9980         (CODE_FOR_lsx_vabsd_h): Ditto.
9981         (CODE_FOR_lsx_vabsd_w): Ditto.
9982         (CODE_FOR_lsx_vabsd_d): Ditto.
9983         (CODE_FOR_lsx_vabsd_bu): Ditto.
9984         (CODE_FOR_lsx_vabsd_hu): Ditto.
9985         (CODE_FOR_lsx_vabsd_wu): Ditto.
9986         (CODE_FOR_lsx_vabsd_du): Ditto.
9987         (CODE_FOR_lsx_vftint_w_s): Ditto.
9988         (CODE_FOR_lsx_vftint_l_d): Ditto.
9989         (CODE_FOR_lsx_vftint_wu_s): Ditto.
9990         (CODE_FOR_lsx_vftint_lu_d): Ditto.
9991         (CODE_FOR_lsx_vandn_v): Ditto.
9992         (CODE_FOR_lsx_vorn_v): Ditto.
9993         (CODE_FOR_lsx_vneg_b): Ditto.
9994         (CODE_FOR_lsx_vneg_h): Ditto.
9995         (CODE_FOR_lsx_vneg_w): Ditto.
9996         (CODE_FOR_lsx_vneg_d): Ditto.
9997         (CODE_FOR_lsx_vshuf4i_d): Ditto.
9998         (CODE_FOR_lsx_vbsrl_v): Ditto.
9999         (CODE_FOR_lsx_vbsll_v): Ditto.
10000         (CODE_FOR_lsx_vfmadd_s): Ditto.
10001         (CODE_FOR_lsx_vfmadd_d): Ditto.
10002         (CODE_FOR_lsx_vfmsub_s): Ditto.
10003         (CODE_FOR_lsx_vfmsub_d): Ditto.
10004         (CODE_FOR_lsx_vfnmadd_s): Ditto.
10005         (CODE_FOR_lsx_vfnmadd_d): Ditto.
10006         (CODE_FOR_lsx_vfnmsub_s): Ditto.
10007         (CODE_FOR_lsx_vfnmsub_d): Ditto.
10008         (CODE_FOR_lsx_vmuh_b): Ditto.
10009         (CODE_FOR_lsx_vmuh_h): Ditto.
10010         (CODE_FOR_lsx_vmuh_w): Ditto.
10011         (CODE_FOR_lsx_vmuh_d): Ditto.
10012         (CODE_FOR_lsx_vmuh_bu): Ditto.
10013         (CODE_FOR_lsx_vmuh_hu): Ditto.
10014         (CODE_FOR_lsx_vmuh_wu): Ditto.
10015         (CODE_FOR_lsx_vmuh_du): Ditto.
10016         (CODE_FOR_lsx_vsllwil_h_b): Ditto.
10017         (CODE_FOR_lsx_vsllwil_w_h): Ditto.
10018         (CODE_FOR_lsx_vsllwil_d_w): Ditto.
10019         (CODE_FOR_lsx_vsllwil_hu_bu): Ditto.
10020         (CODE_FOR_lsx_vsllwil_wu_hu): Ditto.
10021         (CODE_FOR_lsx_vsllwil_du_wu): Ditto.
10022         (CODE_FOR_lsx_vssran_b_h): Ditto.
10023         (CODE_FOR_lsx_vssran_h_w): Ditto.
10024         (CODE_FOR_lsx_vssran_w_d): Ditto.
10025         (CODE_FOR_lsx_vssran_bu_h): Ditto.
10026         (CODE_FOR_lsx_vssran_hu_w): Ditto.
10027         (CODE_FOR_lsx_vssran_wu_d): Ditto.
10028         (CODE_FOR_lsx_vssrarn_b_h): Ditto.
10029         (CODE_FOR_lsx_vssrarn_h_w): Ditto.
10030         (CODE_FOR_lsx_vssrarn_w_d): Ditto.
10031         (CODE_FOR_lsx_vssrarn_bu_h): Ditto.
10032         (CODE_FOR_lsx_vssrarn_hu_w): Ditto.
10033         (CODE_FOR_lsx_vssrarn_wu_d): Ditto.
10034         (CODE_FOR_lsx_vssrln_bu_h): Ditto.
10035         (CODE_FOR_lsx_vssrln_hu_w): Ditto.
10036         (CODE_FOR_lsx_vssrln_wu_d): Ditto.
10037         (CODE_FOR_lsx_vssrlrn_bu_h): Ditto.
10038         (CODE_FOR_lsx_vssrlrn_hu_w): Ditto.
10039         (CODE_FOR_lsx_vssrlrn_wu_d): Ditto.
10040         (loongarch_builtin_vector_type): Ditto.
10041         (loongarch_build_cvpointer_type): Ditto.
10042         (LARCH_ATYPE_CVPOINTER): Ditto.
10043         (LARCH_ATYPE_BOOLEAN): Ditto.
10044         (LARCH_ATYPE_V2SF): Ditto.
10045         (LARCH_ATYPE_V2HI): Ditto.
10046         (LARCH_ATYPE_V2SI): Ditto.
10047         (LARCH_ATYPE_V4QI): Ditto.
10048         (LARCH_ATYPE_V4HI): Ditto.
10049         (LARCH_ATYPE_V8QI): Ditto.
10050         (LARCH_ATYPE_V2DI): Ditto.
10051         (LARCH_ATYPE_V4SI): Ditto.
10052         (LARCH_ATYPE_V8HI): Ditto.
10053         (LARCH_ATYPE_V16QI): Ditto.
10054         (LARCH_ATYPE_V2DF): Ditto.
10055         (LARCH_ATYPE_V4SF): Ditto.
10056         (LARCH_ATYPE_V4DI): Ditto.
10057         (LARCH_ATYPE_V8SI): Ditto.
10058         (LARCH_ATYPE_V16HI): Ditto.
10059         (LARCH_ATYPE_V32QI): Ditto.
10060         (LARCH_ATYPE_V4DF): Ditto.
10061         (LARCH_ATYPE_V8SF): Ditto.
10062         (LARCH_ATYPE_UV2DI): Ditto.
10063         (LARCH_ATYPE_UV4SI): Ditto.
10064         (LARCH_ATYPE_UV8HI): Ditto.
10065         (LARCH_ATYPE_UV16QI): Ditto.
10066         (LARCH_ATYPE_UV4DI): Ditto.
10067         (LARCH_ATYPE_UV8SI): Ditto.
10068         (LARCH_ATYPE_UV16HI): Ditto.
10069         (LARCH_ATYPE_UV32QI): Ditto.
10070         (LARCH_ATYPE_UV2SI): Ditto.
10071         (LARCH_ATYPE_UV4HI): Ditto.
10072         (LARCH_ATYPE_UV8QI): Ditto.
10073         (loongarch_builtin_vectorized_function): Ditto.
10074         (LARCH_GET_BUILTIN): Ditto.
10075         (loongarch_expand_builtin_insn): Ditto.
10076         (loongarch_expand_builtin_lsx_test_branch): Ditto.
10077         (loongarch_expand_builtin): Ditto.
10078         * config/loongarch/loongarch-ftypes.def (1): Ditto.
10079         (2): Ditto.
10080         (3): Ditto.
10081         (4): Ditto.
10082         * config/loongarch/lsxintrin.h: New file.
10084 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
10086         * config/loongarch/constraints.md (M): Add Loongson LSX base instruction support.
10087         (N): Ditto.
10088         (O): Ditto.
10089         (P): Ditto.
10090         (R): Ditto.
10091         (S): Ditto.
10092         (YG): Ditto.
10093         (YA): Ditto.
10094         (YB): Ditto.
10095         (Yb): Ditto.
10096         (Yh): Ditto.
10097         (Yw): Ditto.
10098         (YI): Ditto.
10099         (YC): Ditto.
10100         (YZ): Ditto.
10101         (Unv5): Ditto.
10102         (Uuv5): Ditto.
10103         (Usv5): Ditto.
10104         (Uuv6): Ditto.
10105         (Urv8): Ditto.
10106         * config/loongarch/genopts/loongarch.opt.in: Ditto.
10107         * config/loongarch/loongarch-builtins.cc (loongarch_gen_const_int_vector): Ditto.
10108         * config/loongarch/loongarch-modes.def (VECTOR_MODES): Ditto.
10109         (VECTOR_MODE): Ditto.
10110         (INT_MODE): Ditto.
10111         * config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p): Ditto.
10112         (loongarch_split_move_insn): Ditto.
10113         (loongarch_split_128bit_move): Ditto.
10114         (loongarch_split_128bit_move_p): Ditto.
10115         (loongarch_split_lsx_copy_d): Ditto.
10116         (loongarch_split_lsx_insert_d): Ditto.
10117         (loongarch_split_lsx_fill_d): Ditto.
10118         (loongarch_expand_vec_cmp): Ditto.
10119         (loongarch_const_vector_same_val_p): Ditto.
10120         (loongarch_const_vector_same_bytes_p): Ditto.
10121         (loongarch_const_vector_same_int_p): Ditto.
10122         (loongarch_const_vector_shuffle_set_p): Ditto.
10123         (loongarch_const_vector_bitimm_set_p): Ditto.
10124         (loongarch_const_vector_bitimm_clr_p): Ditto.
10125         (loongarch_lsx_vec_parallel_const_half): Ditto.
10126         (loongarch_gen_const_int_vector): Ditto.
10127         (loongarch_lsx_output_division): Ditto.
10128         (loongarch_expand_vector_init): Ditto.
10129         (loongarch_expand_vec_unpack): Ditto.
10130         (loongarch_expand_vec_perm): Ditto.
10131         (loongarch_expand_vector_extract): Ditto.
10132         (loongarch_expand_vector_reduc): Ditto.
10133         (loongarch_ldst_scaled_shift): Ditto.
10134         (loongarch_expand_vec_cond_expr): Ditto.
10135         (loongarch_expand_vec_cond_mask_expr): Ditto.
10136         (loongarch_builtin_vectorized_function): Ditto.
10137         (loongarch_gen_const_int_vector_shuffle): Ditto.
10138         (loongarch_build_signbit_mask): Ditto.
10139         * config/loongarch/loongarch.cc (loongarch_pass_aggregate_num_fpr): Ditto.
10140         (loongarch_setup_incoming_varargs): Ditto.
10141         (loongarch_emit_move): Ditto.
10142         (loongarch_const_vector_bitimm_set_p): Ditto.
10143         (loongarch_const_vector_bitimm_clr_p): Ditto.
10144         (loongarch_const_vector_same_val_p): Ditto.
10145         (loongarch_const_vector_same_bytes_p): Ditto.
10146         (loongarch_const_vector_same_int_p): Ditto.
10147         (loongarch_const_vector_shuffle_set_p): Ditto.
10148         (loongarch_symbol_insns): Ditto.
10149         (loongarch_cannot_force_const_mem): Ditto.
10150         (loongarch_valid_offset_p): Ditto.
10151         (loongarch_valid_index_p): Ditto.
10152         (loongarch_classify_address): Ditto.
10153         (loongarch_address_insns): Ditto.
10154         (loongarch_ldst_scaled_shift): Ditto.
10155         (loongarch_const_insns): Ditto.
10156         (loongarch_split_move_insn_p): Ditto.
10157         (loongarch_subword_at_byte): Ditto.
10158         (loongarch_legitimize_move): Ditto.
10159         (loongarch_builtin_vectorization_cost): Ditto.
10160         (loongarch_split_move_p): Ditto.
10161         (loongarch_split_move): Ditto.
10162         (loongarch_split_move_insn): Ditto.
10163         (loongarch_output_move_index_float): Ditto.
10164         (loongarch_split_128bit_move_p): Ditto.
10165         (loongarch_split_128bit_move): Ditto.
10166         (loongarch_split_lsx_copy_d): Ditto.
10167         (loongarch_split_lsx_insert_d): Ditto.
10168         (loongarch_split_lsx_fill_d): Ditto.
10169         (loongarch_output_move): Ditto.
10170         (loongarch_extend_comparands): Ditto.
10171         (loongarch_print_operand_reloc): Ditto.
10172         (loongarch_print_operand): Ditto.
10173         (loongarch_hard_regno_mode_ok_uncached): Ditto.
10174         (loongarch_hard_regno_call_part_clobbered): Ditto.
10175         (loongarch_hard_regno_nregs): Ditto.
10176         (loongarch_class_max_nregs): Ditto.
10177         (loongarch_can_change_mode_class): Ditto.
10178         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
10179         (loongarch_secondary_reload): Ditto.
10180         (loongarch_vector_mode_supported_p): Ditto.
10181         (loongarch_preferred_simd_mode): Ditto.
10182         (loongarch_autovectorize_vector_modes): Ditto.
10183         (loongarch_lsx_output_division): Ditto.
10184         (loongarch_option_override_internal): Ditto.
10185         (loongarch_hard_regno_caller_save_mode): Ditto.
10186         (MAX_VECT_LEN): Ditto.
10187         (loongarch_spill_class): Ditto.
10188         (struct expand_vec_perm_d): Ditto.
10189         (loongarch_promote_function_mode): Ditto.
10190         (loongarch_expand_vselect): Ditto.
10191         (loongarch_starting_frame_offset): Ditto.
10192         (loongarch_expand_vselect_vconcat): Ditto.
10193         (TARGET_ASM_ALIGNED_DI_OP): Ditto.
10194         (TARGET_OPTION_OVERRIDE): Ditto.
10195         (TARGET_LEGITIMIZE_ADDRESS): Ditto.
10196         (TARGET_ASM_SELECT_RTX_SECTION): Ditto.
10197         (TARGET_ASM_FUNCTION_RODATA_SECTION): Ditto.
10198         (loongarch_expand_lsx_shuffle): Ditto.
10199         (TARGET_SCHED_INIT): Ditto.
10200         (TARGET_SCHED_REORDER): Ditto.
10201         (TARGET_SCHED_REORDER2): Ditto.
10202         (TARGET_SCHED_VARIABLE_ISSUE): Ditto.
10203         (TARGET_SCHED_ADJUST_COST): Ditto.
10204         (TARGET_SCHED_ISSUE_RATE): Ditto.
10205         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Ditto.
10206         (TARGET_FUNCTION_OK_FOR_SIBCALL): Ditto.
10207         (TARGET_VALID_POINTER_MODE): Ditto.
10208         (TARGET_REGISTER_MOVE_COST): Ditto.
10209         (TARGET_MEMORY_MOVE_COST): Ditto.
10210         (TARGET_RTX_COSTS): Ditto.
10211         (TARGET_ADDRESS_COST): Ditto.
10212         (TARGET_IN_SMALL_DATA_P): Ditto.
10213         (TARGET_PREFERRED_RELOAD_CLASS): Ditto.
10214         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Ditto.
10215         (TARGET_EXPAND_BUILTIN_VA_START): Ditto.
10216         (loongarch_expand_vec_perm): Ditto.
10217         (TARGET_PROMOTE_FUNCTION_MODE): Ditto.
10218         (TARGET_RETURN_IN_MEMORY): Ditto.
10219         (TARGET_FUNCTION_VALUE): Ditto.
10220         (TARGET_LIBCALL_VALUE): Ditto.
10221         (loongarch_try_expand_lsx_vshuf_const): Ditto.
10222         (TARGET_ASM_OUTPUT_MI_THUNK): Ditto.
10223         (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Ditto.
10224         (TARGET_PRINT_OPERAND): Ditto.
10225         (TARGET_PRINT_OPERAND_ADDRESS): Ditto.
10226         (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Ditto.
10227         (TARGET_SETUP_INCOMING_VARARGS): Ditto.
10228         (TARGET_STRICT_ARGUMENT_NAMING): Ditto.
10229         (TARGET_MUST_PASS_IN_STACK): Ditto.
10230         (TARGET_PASS_BY_REFERENCE): Ditto.
10231         (TARGET_ARG_PARTIAL_BYTES): Ditto.
10232         (TARGET_FUNCTION_ARG): Ditto.
10233         (TARGET_FUNCTION_ARG_ADVANCE): Ditto.
10234         (TARGET_FUNCTION_ARG_BOUNDARY): Ditto.
10235         (TARGET_SCALAR_MODE_SUPPORTED_P): Ditto.
10236         (TARGET_INIT_BUILTINS): Ditto.
10237         (loongarch_expand_vec_perm_const_1): Ditto.
10238         (loongarch_expand_vec_perm_const_2): Ditto.
10239         (loongarch_vectorize_vec_perm_const): Ditto.
10240         (loongarch_cpu_sched_reassociation_width): Ditto.
10241         (loongarch_sched_reassociation_width): Ditto.
10242         (loongarch_expand_vector_extract): Ditto.
10243         (emit_reduc_half): Ditto.
10244         (loongarch_expand_vector_reduc): Ditto.
10245         (loongarch_expand_vec_unpack): Ditto.
10246         (loongarch_lsx_vec_parallel_const_half): Ditto.
10247         (loongarch_constant_elt_p): Ditto.
10248         (loongarch_gen_const_int_vector_shuffle): Ditto.
10249         (loongarch_expand_vector_init): Ditto.
10250         (loongarch_expand_lsx_cmp): Ditto.
10251         (loongarch_expand_vec_cond_expr): Ditto.
10252         (loongarch_expand_vec_cond_mask_expr): Ditto.
10253         (loongarch_expand_vec_cmp): Ditto.
10254         (loongarch_case_values_threshold): Ditto.
10255         (loongarch_build_const_vector): Ditto.
10256         (loongarch_build_signbit_mask): Ditto.
10257         (loongarch_builtin_support_vector_misalignment): Ditto.
10258         (TARGET_ASM_ALIGNED_HI_OP): Ditto.
10259         (TARGET_ASM_ALIGNED_SI_OP): Ditto.
10260         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Ditto.
10261         (TARGET_VECTOR_MODE_SUPPORTED_P): Ditto.
10262         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Ditto.
10263         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Ditto.
10264         (TARGET_VECTORIZE_VEC_PERM_CONST): Ditto.
10265         (TARGET_SCHED_REASSOCIATION_WIDTH): Ditto.
10266         (TARGET_CASE_VALUES_THRESHOLD): Ditto.
10267         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Ditto.
10268         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
10269         * config/loongarch/loongarch.h (TARGET_SUPPORTS_WIDE_INT): Ditto.
10270         (UNITS_PER_LSX_REG): Ditto.
10271         (BITS_PER_LSX_REG): Ditto.
10272         (BIGGEST_ALIGNMENT): Ditto.
10273         (LSX_REG_FIRST): Ditto.
10274         (LSX_REG_LAST): Ditto.
10275         (LSX_REG_NUM): Ditto.
10276         (LSX_REG_P): Ditto.
10277         (LSX_REG_RTX_P): Ditto.
10278         (IMM13_OPERAND): Ditto.
10279         (LSX_SUPPORTED_MODE_P): Ditto.
10280         * config/loongarch/loongarch.md (unknown,add,sub,not,nor,and,or,xor): Ditto.
10281         (unknown,add,sub,not,nor,and,or,xor,simd_add): Ditto.
10282         (unknown,none,QI,HI,SI,DI,TI,SF,DF,TF,FCC): Ditto.
10283         (mode" ): Ditto.
10284         (DF): Ditto.
10285         (SF): Ditto.
10286         (sf): Ditto.
10287         (DI): Ditto.
10288         (SI): Ditto.
10289         * config/loongarch/loongarch.opt: Ditto.
10290         * config/loongarch/predicates.md (const_lsx_branch_operand): Ditto.
10291         (const_uimm3_operand): Ditto.
10292         (const_8_to_11_operand): Ditto.
10293         (const_12_to_15_operand): Ditto.
10294         (const_uimm4_operand): Ditto.
10295         (const_uimm6_operand): Ditto.
10296         (const_uimm7_operand): Ditto.
10297         (const_uimm8_operand): Ditto.
10298         (const_imm5_operand): Ditto.
10299         (const_imm10_operand): Ditto.
10300         (const_imm13_operand): Ditto.
10301         (reg_imm10_operand): Ditto.
10302         (aq8b_operand): Ditto.
10303         (aq8h_operand): Ditto.
10304         (aq8w_operand): Ditto.
10305         (aq8d_operand): Ditto.
10306         (aq10b_operand): Ditto.
10307         (aq10h_operand): Ditto.
10308         (aq10w_operand): Ditto.
10309         (aq10d_operand): Ditto.
10310         (aq12b_operand): Ditto.
10311         (aq12h_operand): Ditto.
10312         (aq12w_operand): Ditto.
10313         (aq12d_operand): Ditto.
10314         (const_m1_operand): Ditto.
10315         (reg_or_m1_operand): Ditto.
10316         (const_exp_2_operand): Ditto.
10317         (const_exp_4_operand): Ditto.
10318         (const_exp_8_operand): Ditto.
10319         (const_exp_16_operand): Ditto.
10320         (const_exp_32_operand): Ditto.
10321         (const_0_or_1_operand): Ditto.
10322         (const_0_to_3_operand): Ditto.
10323         (const_0_to_7_operand): Ditto.
10324         (const_2_or_3_operand): Ditto.
10325         (const_4_to_7_operand): Ditto.
10326         (const_8_to_15_operand): Ditto.
10327         (const_16_to_31_operand): Ditto.
10328         (qi_mask_operand): Ditto.
10329         (hi_mask_operand): Ditto.
10330         (si_mask_operand): Ditto.
10331         (d_operand): Ditto.
10332         (db4_operand): Ditto.
10333         (db7_operand): Ditto.
10334         (db8_operand): Ditto.
10335         (ib3_operand): Ditto.
10336         (sb4_operand): Ditto.
10337         (sb5_operand): Ditto.
10338         (sb8_operand): Ditto.
10339         (sd8_operand): Ditto.
10340         (ub4_operand): Ditto.
10341         (ub8_operand): Ditto.
10342         (uh4_operand): Ditto.
10343         (uw4_operand): Ditto.
10344         (uw5_operand): Ditto.
10345         (uw6_operand): Ditto.
10346         (uw8_operand): Ditto.
10347         (addiur2_operand): Ditto.
10348         (addiusp_operand): Ditto.
10349         (andi16_operand): Ditto.
10350         (movep_src_register): Ditto.
10351         (movep_src_operand): Ditto.
10352         (fcc_reload_operand): Ditto.
10353         (muldiv_target_operand): Ditto.
10354         (const_vector_same_val_operand): Ditto.
10355         (const_vector_same_simm5_operand): Ditto.
10356         (const_vector_same_uimm5_operand): Ditto.
10357         (const_vector_same_ximm5_operand): Ditto.
10358         (const_vector_same_uimm6_operand): Ditto.
10359         (par_const_vector_shf_set_operand): Ditto.
10360         (reg_or_vector_same_val_operand): Ditto.
10361         (reg_or_vector_same_simm5_operand): Ditto.
10362         (reg_or_vector_same_uimm5_operand): Ditto.
10363         (reg_or_vector_same_ximm5_operand): Ditto.
10364         (reg_or_vector_same_uimm6_operand): Ditto.
10365         * doc/md.texi: Ditto.
10366         * config/loongarch/lsx.md: New file.
10368 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10370         * config/riscv/riscv-protos.h (lookup_vector_type_attribute): Export global.
10371         (get_all_predecessors): New function.
10372         (get_all_successors): Ditto.
10373         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
10374         (get_all_successors): Ditto.
10375         * config/riscv/riscv-vector-builtins.cc (sizeless_type_p): Export global.
10376         * config/riscv/riscv-vsetvl.cc (get_all_predecessors): Remove it.
10378 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
10380         * config/arc/arc-protos.h (arc_output_addsi): Remove declaration.
10381         (split_addsi): Likewise.
10382         * config/arc/arc.cc (arc_print_operand): Add/repurpose 's', 'S',
10383         'N', 'x', and 'J' code letters.
10384         (arc_output_addsi): Make it static.
10385         (split_addsi): Remove it.
10386         * config/arc/arc.h (UNSIGNED_INT*): New defines.
10387         (SINNED_INT*): Likewise.
10388         * config/arc/arc.md (type): Add add, sub, bxor types.
10389         (tst_movb): Change code letter from 's' to 'x'.
10390         (andsi3_i): Likewise.
10391         (addsi3_mixed): Refurbish the pattern.
10392         (call_i): Change code letter from 'S' to 'J'.
10393         * config/arc/arc700.md: Add newly introduced types.
10394         * config/arc/arcHS.md: Likewsie.
10395         * config/arc/arcHS4x.md: Likewise.
10396         * config/arc/constraints.md (Cca, CL2, Csp, C2a): Remove it.
10397         (CM4): Update description.
10398         (CP4, C6u, C6n, CIs, C4p): New constraint.
10400 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
10402         * common/config/arc/arc-common.cc (arc_option_optimization_table):
10403         Remove mbbit_peephole.
10404         * config/arc/arc.md (UNSPEC_ARC_DIRECT): Remove.
10405         (store_direct): Likewise.
10406         (BBIT peephole2): Likewise.
10407         * config/arc/arc.opt (mbbit-peephole): Ignore option.
10408         * doc/invoke.texi (mbbit-peephole): Update document.
10410 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
10412         * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo:
10413         avreage -> average.
10415 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
10417         * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized
10418         options passed from driver to gnat1 as explicit for multilib.
10420 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
10422         * config.gcc: add loongarch*-elf target.
10423         * config/loongarch/elf.h: New file.
10424         Link against newlib by default.
10426 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
10428         * config.gcc: use -mstrict-align for building libraries
10429         if --with-strict-align-lib is given.
10430         * doc/install.texi: likewise.
10432 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
10434         * config/loongarch/loongarch-c.cc: Export macros
10435         "__loongarch_{arch,tune}" in the preprocessor.
10437 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
10439         * config.gcc: Make --with-abi= obsolete, decide the default ABI
10440         with target triplet.  Allow specifying multilib library build
10441         options with --with-multilib-list and --with-multilib-default.
10442         * config/loongarch/t-linux: Likewise.
10443         * config/loongarch/genopts/loongarch-strings: Likewise.
10444         * config/loongarch/loongarch-str.h: Likewise.
10445         * doc/install.texi: Likewise.
10446         * config/loongarch/genopts/loongarch.opt.in: Introduce
10447         -m[no-]l[a]sx options.  Only process -m*-float and
10448         -m[no-]l[a]sx in the GCC driver.
10449         * config/loongarch/loongarch.opt: Likewise.
10450         * config/loongarch/la464.md: Likewise.
10451         * config/loongarch/loongarch-c.cc: Likewise.
10452         * config/loongarch/loongarch-cpu.cc: Likewise.
10453         * config/loongarch/loongarch-cpu.h: Likewise.
10454         * config/loongarch/loongarch-def.c: Likewise.
10455         * config/loongarch/loongarch-def.h: Likewise.
10456         * config/loongarch/loongarch-driver.cc: Likewise.
10457         * config/loongarch/loongarch-driver.h: Likewise.
10458         * config/loongarch/loongarch-opts.cc: Likewise.
10459         * config/loongarch/loongarch-opts.h: Likewise.
10460         * config/loongarch/loongarch.cc: Likewise.
10461         * doc/invoke.texi: Likewise.
10463 2023-09-05  liuhongt  <hongtao.liu@intel.com>
10465         * config/i386/sse.md: (V8BFH_128): Renamed to ..
10466         (VHFBF_128): .. this.
10467         (V16BFH_256): Renamed to ..
10468         (VHFBF_256): .. this.
10469         (avx512f_mov<mode>): Extend to V_128.
10470         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_128.
10471         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
10472         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_256.
10473         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
10474         * config/i386/i386-expand.cc (expand_vec_perm_blend):
10475         Canonicalize vec_merge.
10477 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10479         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Fix Dynamic status.
10480         * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto.
10481         (autovectorize_vector_modes): Ditto.
10482         (vectorize_related_mode): Ditto.
10484 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
10486         * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for
10487         all 32b Darwin PowerPC cases.
10489 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
10491         * config/darwin-sections.def (static_init_section): Add the
10492         __TEXT,__StaticInit section.
10493         * config/darwin.cc (darwin_function_section): Use the static init
10494         section for global initializers, to match other platform toolchains.
10496 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
10498         * config/darwin-sections.def (darwin_exception_section): Move to
10499         the __TEXT segment.
10500         * config/darwin.cc (darwin_emit_except_table_label): Align before
10501         the exception table label.
10502         * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use indirect PC-
10503         relative 4byte relocs.
10505 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
10507         * config/darwin.cc (dump_machopic_symref_flags): New.
10508         (debug_machopic_symref_flags): New.
10510 2023-09-04  Pan Li  <pan2.li@intel.com>
10512         * config/riscv/riscv-vector-builtins-types.def
10513         (vfloat16mf4_t): Add FP16 intrinsic def.
10514         (vfloat16mf2_t): Ditto.
10515         (vfloat16m1_t): Ditto.
10516         (vfloat16m2_t): Ditto.
10517         (vfloat16m4_t): Ditto.
10518         (vfloat16m8_t): Ditto.
10520 2023-09-04  Jiufu Guo  <guojiufu@linux.ibm.com>
10522         PR tree-optimization/108757
10523         * match.pd ((X - N * M) / N): New pattern.
10524         ((X + N * M) / N): New pattern.
10525         ((X + C) div_rshift N): New pattern.
10527 2023-09-04  Guo Jie  <guojie@loongson.cn>
10529         * config/loongarch/loongarch.md: Support 'G' -> 'k' in
10530         movsf_hardfloat and movdf_hardfloat.
10532 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
10534         * config/loongarch/loongarch.cc (loongarch_extend_comparands):
10535         In unsigned QImode test, check for sign extended subreg and/or
10536         constant operands, and do a sign extension in that case.
10537         * config/loongarch/loongarch.md (TARGET_64BIT): Define
10538         template cbranchqi4.
10540 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
10542         * config/loongarch/loongarch.md: Allows fixed-point values to be loaded
10543         from memory into floating-point registers.
10545 2023-09-03  Pan Li  <pan2.li@intel.com>
10547         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
10548         fmax/fmin
10549         * config/riscv/vector.md: Add VLS modes to vfmax/vfmin.
10551 2023-09-02  Mikael Morin  <mikael@gcc.gnu.org>
10553         * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated
10554         pointer before overwriting it.
10556 2023-09-02  chenxiaolong  <chenxiaolong@loongson.cn>
10558         * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins):
10559         Associate the __float128 type to float128_type_node so that it can
10560         be recognized by the compiler.
10561         * config/loongarch/loongarch-c.cc (loongarch_cpu_cpp_builtins):
10562         Add the flag "FLOAT128_TYPE" to gcc and associate a function
10563         with the suffix "q" to "f128".
10564         * doc/extend.texi:Added support for 128-bit floating-point functions on
10565         the LoongArch architecture.
10567 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
10569         PR c++/111069
10570         * common.opt (fabi-version=): Document version 19.
10571         * doc/invoke.texi (-fabi-version=): Likewise.
10573 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
10575         * config/riscv/autovec-opt.md (*cond_<optab><mode><vconvert>):
10576         New combine pattern.
10577         (*cond_<float_cvt><vconvert><mode>): Ditto.
10578         (*cond_<optab><vnconvert><mode>): Ditto.
10579         (*cond_<float_cvt><vnconvert><mode>): Ditto.
10580         (*cond_<optab><mode><vnconvert>): Ditto.
10581         (*cond_<float_cvt><mode><vnconvert>2): Ditto.
10582         * config/riscv/autovec.md (<optab><mode><vconvert>2): Adjust.
10583         (<float_cvt><vconvert><mode>2): Adjust.
10584         (<optab><vnconvert><mode>2): Adjust.
10585         (<float_cvt><vnconvert><mode>2): Adjust.
10586         (<optab><mode><vnconvert>2): Adjust.
10587         (<float_cvt><mode><vnconvert>2): Adjust.
10588         * config/riscv/riscv-v.cc (needs_fp_rounding): Add INT->FP extend.
10590 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
10592         * config/riscv/autovec-opt.md (*cond_extend<v_double_trunc><mode>):
10593         New combine pattern.
10594         (*cond_trunc<mode><v_double_trunc>): Ditto.
10595         * config/riscv/autovec.md: Adjust.
10596         * config/riscv/riscv-v.cc (needs_fp_rounding): Add FP extend.
10598 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
10600         * config/riscv/autovec-opt.md (*cond_<optab><v_double_trunc><mode>):
10601         New combine pattern.
10602         (*cond_<optab><v_quad_trunc><mode>): Ditto.
10603         (*cond_<optab><v_oct_trunc><mode>): Ditto.
10604         (*cond_trunc<mode><v_double_trunc>): Ditto.
10605         * config/riscv/autovec.md (<optab><v_quad_trunc><mode>2): Adjust.
10606         (<optab><v_oct_trunc><mode>2): Ditto.
10608 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
10610         * config/riscv/autovec.md: Adjust.
10611         * config/riscv/riscv-protos.h (expand_cond_len_unop): Ditto.
10612         (expand_cond_len_binop): Ditto.
10613         * config/riscv/riscv-v.cc (needs_fp_rounding): Ditto.
10614         (expand_cond_len_op): Ditto.
10615         (expand_cond_len_unop): Ditto.
10616         (expand_cond_len_binop): Ditto.
10617         (expand_cond_len_ternop): Ditto.
10619 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10621         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable
10622         VECT_COMPARE_COSTS by default.
10624 2023-09-01  Robin Dapp  <rdapp@ventanamicro.com>
10626         * config/riscv/autovec.md (vec_extract<mode>qi): New expander.
10628 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10630         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add
10631         dynamic enum.
10632         * config/riscv/riscv.opt: Add dynamic compile option.
10634 2023-09-01  Pan Li  <pan2.li@intel.com>
10636         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
10637         vls floating-point autovec.
10638         * config/riscv/vector-iterators.md: New iterator for
10639         floating-point V and VLS.
10640         * config/riscv/vector.md: Add VLS to floating-point binop.
10642 2023-09-01  Andrew Pinski  <apinski@marvell.com>
10644         PR tree-optimization/19832
10645         * match.pd: Add pattern to optimize
10646         `(a != b) ? a OP b : c`.
10648 2023-09-01  Lulu Cheng  <chenglulu@loongson.cn>
10649             Guo Jie  <guojie@loongson.cn>
10651         PR target/110484
10652         * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the
10653         frame_pointer_needed to determine whether to use the $fp register.
10655 2023-08-31  Andrew Pinski  <apinski@marvell.com>
10657         PR tree-optimization/110915
10658         * match.pd (min_value, max_value): Extend to vector constants.
10660 2023-08-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10662         * config.in: Regenerate.
10663         * config/darwin-c.cc: Change spelling to macOS.
10664         * config/darwin-driver.cc: Likewise.
10665         * config/darwin.h: Likewise.
10666         * configure.ac: Likewise.
10667         * doc/contrib.texi: Likewise.
10668         * doc/extend.texi: Likewise.
10669         * doc/invoke.texi: Likewise.
10670         * doc/plugins.texi: Likewise.
10671         * doc/tm.texi: Regenerate.
10672         * doc/tm.texi.in: Change spelling to macOS.
10673         * plugin.cc: Likewise.
10675 2023-08-31  Pan Li  <pan2.li@intel.com>
10677         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc.
10678         * config/riscv/autovec.md: Ditto.
10680 2023-08-31  Pan Li  <pan2.li@intel.com>
10682         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
10683         * config/riscv/autovec.md: Ditto.
10685 2023-08-31  Richard Sandiford  <richard.sandiford@arm.com>
10687         * config/aarch64/aarch64.md (untyped_call): Emit a call_value
10688         rather than a call.  List each possible destination register
10689         in the call pattern.
10691 2023-08-31  Pan Li  <pan2.li@intel.com>
10693         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub
10694         * config/riscv/autovec.md: Ditto.
10696 2023-08-31  Pan Li  <pan2.li@intel.com>
10697             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
10699         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmadd/vfmacc.
10700         * config/riscv/autovec.md: Ditto.
10701         * config/riscv/vector-iterators.md: Add UNSPEC_VFFMA.
10703 2023-08-31  Palmer Dabbelt  <palmer@rivosinc.com>
10705         * config/riscv/autovec.md (shifts): Use
10706         vector_scalar_shift_operand.
10707         * config/riscv/predicates.md (vector_scalar_shift_operand): New
10708         predicate.
10710 2023-08-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10712         * config.gcc: Add vector cost model framework for RVV.
10713         * config/riscv/riscv.cc (riscv_vectorize_create_costs): Ditto.
10714         (TARGET_VECTORIZE_CREATE_COSTS): Ditto.
10715         * config/riscv/t-riscv: Ditto.
10716         * config/riscv/riscv-vector-costs.cc: New file.
10717         * config/riscv/riscv-vector-costs.h: New file.
10719 2023-08-31  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
10721         PR target/110411
10722         * config/rs6000/mma.md (define_insn_and_split movoo): Disallow
10723         AltiVec address operands.
10724         (define_insn_and_split movxo): Likewise.
10725         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): Remove
10726         redundant mode size check.
10728 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
10730         * config/riscv/riscv-protos.h (IS_AGNOSTIC): Move to here.
10731         * config/riscv/riscv-v.cc (gen_no_side_effects_vsetvl_rtx):
10732         Change to default policy.
10733         * config/riscv/riscv-vector-builtins-bases.cc: Change to default policy.
10734         * config/riscv/riscv-vsetvl.h (IS_AGNOSTIC): Delete.
10735         * config/riscv/riscv.cc (riscv_print_operand): Use IS_AGNOSTIC to test.
10737 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
10739         * config/riscv/autovec-opt.md: Adjust.
10740         * config/riscv/autovec-vls.md: Ditto.
10741         * config/riscv/autovec.md: Ditto.
10742         * config/riscv/riscv-protos.h (enum insn_type): Add insn_type.
10743         (enum insn_flags): Add insn flags.
10744         (emit_vlmax_insn): Adjust.
10745         (emit_vlmax_fp_insn): Delete.
10746         (emit_vlmax_ternary_insn): Delete.
10747         (emit_vlmax_fp_ternary_insn): Delete.
10748         (emit_nonvlmax_insn): Adjust.
10749         (emit_vlmax_slide_insn): Delete.
10750         (emit_nonvlmax_slide_tu_insn): Delete.
10751         (emit_vlmax_merge_insn): Delete.
10752         (emit_vlmax_cmp_insn): Delete.
10753         (emit_vlmax_cmp_mu_insn): Delete.
10754         (emit_vlmax_masked_mu_insn): Delete.
10755         (emit_scalar_move_insn): Delete.
10756         (emit_nonvlmax_integer_move_insn): Delete.
10757         (emit_vlmax_insn_lra): Add.
10758         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): New.
10759         (emit_vlmax_insn): Adjust.
10760         (emit_nonvlmax_insn): Adjust.
10761         (emit_vlmax_insn_lra): Add.
10762         (emit_vlmax_fp_insn): Delete.
10763         (emit_vlmax_ternary_insn): Delete.
10764         (emit_vlmax_fp_ternary_insn): Delete.
10765         (emit_vlmax_slide_insn): Delete.
10766         (emit_nonvlmax_slide_tu_insn): Delete.
10767         (emit_nonvlmax_slide_insn): Delete.
10768         (emit_vlmax_merge_insn): Delete.
10769         (emit_vlmax_cmp_insn): Delete.
10770         (emit_vlmax_cmp_mu_insn): Delete.
10771         (emit_vlmax_masked_insn): Delete.
10772         (emit_nonvlmax_masked_insn): Delete.
10773         (emit_vlmax_masked_store_insn): Delete.
10774         (emit_nonvlmax_masked_store_insn): Delete.
10775         (emit_vlmax_masked_mu_insn): Delete.
10776         (emit_vlmax_masked_fp_mu_insn): Delete.
10777         (emit_nonvlmax_tu_insn): Delete.
10778         (emit_nonvlmax_fp_tu_insn): Delete.
10779         (emit_nonvlmax_tumu_insn): Delete.
10780         (emit_nonvlmax_fp_tumu_insn): Delete.
10781         (emit_scalar_move_insn): Delete.
10782         (emit_cpop_insn): Delete.
10783         (emit_vlmax_integer_move_insn): Delete.
10784         (emit_nonvlmax_integer_move_insn): Delete.
10785         (emit_vlmax_gather_insn): Delete.
10786         (emit_vlmax_masked_gather_mu_insn): Delete.
10787         (emit_vlmax_compress_insn): Delete.
10788         (emit_nonvlmax_compress_insn): Delete.
10789         (emit_vlmax_reduction_insn): Delete.
10790         (emit_vlmax_fp_reduction_insn): Delete.
10791         (emit_nonvlmax_fp_reduction_insn): Delete.
10792         (expand_vec_series): Adjust.
10793         (expand_const_vector): Adjust.
10794         (legitimize_move): Adjust.
10795         (sew64_scalar_helper): Adjust.
10796         (expand_tuple_move): Adjust.
10797         (expand_vector_init_insert_elems): Adjust.
10798         (expand_vector_init_merge_repeating_sequence): Adjust.
10799         (expand_vec_cmp): Adjust.
10800         (expand_vec_cmp_float): Adjust.
10801         (expand_vec_perm): Adjust.
10802         (shuffle_merge_patterns): Adjust.
10803         (shuffle_compress_patterns): Adjust.
10804         (shuffle_decompress_patterns): Adjust.
10805         (expand_load_store): Adjust.
10806         (expand_cond_len_op): Adjust.
10807         (expand_cond_len_unop): Adjust.
10808         (expand_cond_len_binop): Adjust.
10809         (expand_gather_scatter): Adjust.
10810         (expand_cond_len_ternop): Adjust.
10811         (expand_reduction): Adjust.
10812         (expand_lanes_load_store): Adjust.
10813         (expand_fold_extract_last): Adjust.
10814         * config/riscv/riscv.cc (vector_zero_call_used_regs): Adjust.
10815         * config/riscv/vector.md: Adjust.
10817 2023-08-31  Haochen Gui  <guihaoc@gcc.gnu.org>
10819         PR target/96762
10820         * config/rs6000/rs6000-string.cc (expand_block_move): Call vector
10821         load/store with length only on 64-bit Power10.
10823 2023-08-31  Claudiu Zissulescu  <claziss@gmail.com>
10825         * config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when
10826         SWAP option is enabled.
10827         * config/arc/arc.md (ashlsi2_cnt16): Likewise.
10829 2023-08-31  Stamatis Markianos-Wright  <stam.markianos-wright@arm.com>
10831         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90, vcaddq_rot270):
10832         Use common insn for signed and unsigned front-end definitions.
10833         * config/arm/arm_mve_builtins.def
10834         (vcaddq_rot90_m_u, vcaddq_rot270_m_u): Make common.
10835         (vcaddq_rot90_m_s, vcaddq_rot270_m_s): Remove.
10836         * config/arm/iterators.md (mve_insn): Merge signed and unsigned defs.
10837         (isu): Likewise.
10838         (rot): Likewise.
10839         (mve_rot): Likewise.
10840         (supf): Likewise.
10841         (VxCADDQ_M): Likewise.
10842         * config/arm/unspecs.md (unspec): Likewise.
10843         * config/arm/mve.md: Fix minor typo.
10845 2023-08-31  liuhongt  <hongtao.liu@intel.com>
10847         * config/i386/sse.md (<avx512>_blendm<mode>): Merge
10848         VF_AVX512HFBFVL into VI12HFBF_AVX512VL.
10849         (VF_AVX512HFBF16): Renamed to VHFBF.
10850         (VF_AVX512FP16VL): Renamed to VHF_AVX512VL.
10851         (VF_AVX512FP16): Removed.
10852         (div<mode>3): Adjust VF_AVX512FP16VL to VHF_AVX512VL.
10853         (avx512fp16_rcp<mode>2<mask_name>): Ditto.
10854         (rsqrt<mode>2): Ditto.
10855         (<sse>_rsqrt<mode>2<mask_name>): Ditto.
10856         (vcond<mode><code>): Ditto.
10857         (vcond<sseintvecmodelower><mode>): Ditto.
10858         (<avx512>_fmaddc_<mode>_mask1<round_expand_name>): Ditto.
10859         (<avx512>_fmaddc_<mode>_maskz<round_expand_name>): Ditto.
10860         (<avx512>_fcmaddc_<mode>_mask1<round_expand_name>): Ditto.
10861         (<avx512>_fcmaddc_<mode>_maskz<round_expand_name>): Ditto.
10862         (cmla<conj_op><mode>4): Ditto.
10863         (fma_<mode>_fadd_fmul): Ditto.
10864         (fma_<mode>_fadd_fcmul): Ditto.
10865         (fma_<complexopname>_<mode>_fma_zero): Ditto.
10866         (fma_<mode>_fmaddc_bcst): Ditto.
10867         (fma_<mode>_fcmaddc_bcst): Ditto.
10868         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
10869         (cmul<conj_op><mode>3): Ditto.
10870         (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
10871         Ditto.
10872         (vec_unpacks_lo_<mode>): Ditto.
10873         (vec_unpacks_hi_<mode>): Ditto.
10874         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
10875         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
10876         (*vec_extract<mode>_0): Ditto.
10877         (*<avx512>_cmp<mode>3): Extend to V48H_AVX512VL.
10879 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
10881         PR target/111234
10882         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition.
10884 2023-08-31  Jiufu Guo  <guojiufu@linux.ibm.com>
10886         * range-op-mixed.h (operator_plus::overflow_free_p): New declare.
10887         (operator_minus::overflow_free_p): New declare.
10888         (operator_mult::overflow_free_p): New declare.
10889         * range-op.cc (range_op_handler::overflow_free_p): New function.
10890         (range_operator::overflow_free_p): New default function.
10891         (operator_plus::overflow_free_p): New function.
10892         (operator_minus::overflow_free_p): New function.
10893         (operator_mult::overflow_free_p): New function.
10894         * range-op.h (range_op_handler::overflow_free_p): New declare.
10895         (range_operator::overflow_free_p): New declare.
10896         * value-range.cc (irange::nonnegative_p): New function.
10897         (irange::nonpositive_p): New function.
10898         * value-range.h (irange::nonnegative_p): New declare.
10899         (irange::nonpositive_p): New declare.
10901 2023-08-30  Dimitar Dimitrov  <dimitar@dinux.eu>
10903         PR target/106562
10904         * config/pru/predicates.md (const_0_operand): New predicate.
10905         (pru_cstore_comparison_operator): Ditto.
10906         * config/pru/pru.md (cstore<mode>4): New pattern.
10907         (cstoredi4): Ditto.
10909 2023-08-30  Richard Biener  <rguenther@suse.de>
10911         PR tree-optimization/111228
10912         * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)):
10913         New simplifications.
10915 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10917         * config/riscv/autovec.md (movmisalign<mode>): Delete.
10919 2023-08-30  Die Li  <lidie@eswincomputing.com>
10920             Fei Gao  <gaofei@eswincomputing.com>
10922         * config/riscv/peephole.md: New pattern.
10923         * config/riscv/predicates.md (a0a1_reg_operand): New predicate.
10924         (zcmp_mv_sreg_operand): New predicate.
10925         * config/riscv/riscv.md: New predicate.
10926         * config/riscv/zc.md (*mva01s<X:mode>): New pattern.
10927         (*mvsa01<X:mode>): New pattern.
10929 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
10931         * config/riscv/riscv.cc
10932         (riscv_zcmp_can_use_popretz): true if popretz can be used
10933         (riscv_gen_multi_pop_insn): interface to generate cm.pop[ret][z]
10934         (riscv_expand_epilogue): expand cm.pop[ret][z] in epilogue
10935         * config/riscv/riscv.md: define A0_REGNUM
10936         * config/riscv/zc.md
10937         (@gpr_multi_popretz_up_to_ra_<mode>): md for popretz ra
10938         (@gpr_multi_popretz_up_to_s0_<mode>): md for popretz ra, s0
10939         (@gpr_multi_popretz_up_to_s1_<mode>): likewise
10940         (@gpr_multi_popretz_up_to_s2_<mode>): likewise
10941         (@gpr_multi_popretz_up_to_s3_<mode>): likewise
10942         (@gpr_multi_popretz_up_to_s4_<mode>): likewise
10943         (@gpr_multi_popretz_up_to_s5_<mode>): likewise
10944         (@gpr_multi_popretz_up_to_s6_<mode>): likewise
10945         (@gpr_multi_popretz_up_to_s7_<mode>): likewise
10946         (@gpr_multi_popretz_up_to_s8_<mode>): likewise
10947         (@gpr_multi_popretz_up_to_s9_<mode>): likewise
10948         (@gpr_multi_popretz_up_to_s11_<mode>): likewise
10950 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
10952         * config/riscv/iterators.md
10953         (slot0_offset): slot 0 offset in stack GPRs area in bytes
10954         (slot1_offset): slot 1 offset in stack GPRs area in bytes
10955         (slot2_offset): likewise
10956         (slot3_offset): likewise
10957         (slot4_offset): likewise
10958         (slot5_offset): likewise
10959         (slot6_offset): likewise
10960         (slot7_offset): likewise
10961         (slot8_offset): likewise
10962         (slot9_offset): likewise
10963         (slot10_offset): likewise
10964         (slot11_offset): likewise
10965         (slot12_offset): likewise
10966         * config/riscv/predicates.md
10967         (stack_push_up_to_ra_operand): predicates of stack adjust pushing ra
10968         (stack_push_up_to_s0_operand): predicates of stack adjust pushing ra, s0
10969         (stack_push_up_to_s1_operand): likewise
10970         (stack_push_up_to_s2_operand): likewise
10971         (stack_push_up_to_s3_operand): likewise
10972         (stack_push_up_to_s4_operand): likewise
10973         (stack_push_up_to_s5_operand): likewise
10974         (stack_push_up_to_s6_operand): likewise
10975         (stack_push_up_to_s7_operand): likewise
10976         (stack_push_up_to_s8_operand): likewise
10977         (stack_push_up_to_s9_operand): likewise
10978         (stack_push_up_to_s11_operand): likewise
10979         (stack_pop_up_to_ra_operand): predicates of stack adjust poping ra
10980         (stack_pop_up_to_s0_operand): predicates of stack adjust poping ra, s0
10981         (stack_pop_up_to_s1_operand): likewise
10982         (stack_pop_up_to_s2_operand): likewise
10983         (stack_pop_up_to_s3_operand): likewise
10984         (stack_pop_up_to_s4_operand): likewise
10985         (stack_pop_up_to_s5_operand): likewise
10986         (stack_pop_up_to_s6_operand): likewise
10987         (stack_pop_up_to_s7_operand): likewise
10988         (stack_pop_up_to_s8_operand): likewise
10989         (stack_pop_up_to_s9_operand): likewise
10990         (stack_pop_up_to_s11_operand): likewise
10991         * config/riscv/riscv-protos.h
10992         (riscv_zcmp_valid_stack_adj_bytes_p):declaration
10993         * config/riscv/riscv.cc (struct riscv_frame_info): comment change
10994         (riscv_avoid_multi_push): helper function of riscv_use_multi_push
10995         (riscv_use_multi_push): true if multi push is used
10996         (riscv_multi_push_sregs_count): num of sregs in multi-push
10997         (riscv_multi_push_regs_count): num of regs in multi-push
10998         (riscv_16bytes_align): align to 16 bytes
10999         (riscv_stack_align): moved to a better place
11000         (riscv_save_libcall_count): no functional change
11001         (riscv_compute_frame_info): add zcmp frame info
11002         (riscv_for_each_saved_reg): save or restore fprs in specified slot for zcmp
11003         (riscv_adjust_multi_push_cfi_prologue): adjust cfi for cm.push
11004         (riscv_gen_multi_push_pop_insn): gen function for multi push and pop
11005         (get_multi_push_fpr_mask): get mask for the fprs pushed by cm.push
11006         (riscv_expand_prologue): allocate stack by cm.push
11007         (riscv_adjust_multi_pop_cfi_epilogue): adjust cfi for cm.pop[ret]
11008         (riscv_expand_epilogue): allocate stack by cm.pop[ret]
11009         (zcmp_base_adj): calculate stack adjustment base size
11010         (zcmp_additional_adj): calculate stack adjustment additional size
11011         (riscv_zcmp_valid_stack_adj_bytes_p): check if stack adjustment valid
11012         * config/riscv/riscv.h (RETURN_ADDR_MASK): mask of ra
11013         (S0_MASK): likewise
11014         (S1_MASK): likewise
11015         (S2_MASK): likewise
11016         (S3_MASK): likewise
11017         (S4_MASK): likewise
11018         (S5_MASK): likewise
11019         (S6_MASK): likewise
11020         (S7_MASK): likewise
11021         (S8_MASK): likewise
11022         (S9_MASK): likewise
11023         (S10_MASK): likewise
11024         (S11_MASK): likewise
11025         (MULTI_PUSH_GPR_MASK): GPR_MASK that cm.push can cover at most
11026         (ZCMP_MAX_SPIMM): max spimm value
11027         (ZCMP_SP_INC_STEP): zcmp sp increment step
11028         (ZCMP_INVALID_S0S10_SREGS_COUNTS): num of s0-s10
11029         (ZCMP_S0S11_SREGS_COUNTS): num of s0-s11
11030         (ZCMP_MAX_GRP_SLOTS): max slots of pushing and poping in zcmp
11031         (CALLEE_SAVED_FREG_NUMBER): get x of fsx(fs0 ~ fs11)
11032         * config/riscv/riscv.md: include zc.md
11033         * config/riscv/zc.md: New file. machine description for zcmp
11035 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
11037         PR tree-optimization/110914
11038         * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call
11039         adjust_last_stmt unless len is known constant.
11041 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
11043         PR tree-optimization/111015
11044         * gimple-ssa-store-merging.cc
11045         (imm_store_chain_info::output_merged_store): Use wi::mask and
11046         wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and
11047         build_int_cst to build BIT_AND_EXPR mask.
11049 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11051         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Add MASK_LEN_ variant.
11052         (call_may_clobber_ref_p_1): Ditto.
11053         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
11054         (get_alias_ptr_type_for_ptr_address): Ditto.
11056 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11058         * config/riscv/riscv-vsetvl.cc
11059         (vector_insn_info::get_avl_or_vl_reg): Fix bug.
11061 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11063         * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern.
11064         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support
11065         VLS misalign.
11067 2023-08-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
11069         * config/riscv/zicond.md: New splitters to rewrite single bit
11070         sign extension as the condition to a czero in the desired form.
11072 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
11074         PR analyzer/99860
11075         * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.
11077 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
11079         PR analyzer/99860
11080         * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.
11082 2023-08-29  Jin Ma  <jinma@linux.alibaba.com>
11084         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli):
11085         zvfh can generate zfa extended instruction fli.h, just like zfh.
11087 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
11088             Vineet Gupta  <vineetg@rivosinc.com>
11090         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Generate
11091         __riscv_unaligned_avoid with value 1 or
11092         __riscv_unaligned_slow with value 1 or
11093         __riscv_unaligned_fast with value 1
11094         * config/riscv/riscv.cc (riscv_option_override): Define
11095         riscv_user_wants_strict_align. Set
11096         riscv_user_wants_strict_align to TARGET_STRICT_ALIGN
11097         * config/riscv/riscv.h: Declare riscv_user_wants_strict_align
11099 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
11101         * config/riscv/autovec-vls.md: Update types
11102         * config/riscv/riscv.md: Add vector placeholder type
11103         * config/riscv/vector.md: Update types
11105 2023-08-29  Carl Love  <cel@us.ibm.com>
11107         * config/rs6000/dfp.md (UNSPEC_DQUAN): New unspec.
11108         (dfp_dqua_<mode>, dfp_dquai_<mode>): New define_insn.
11109         * config/rs6000/rs6000-builtins.def (__builtin_dfp_dqua,
11110         __builtin_dfp_dquai, __builtin_dfp_dquaq, __builtin_dfp_dquaqi):
11111         New buit-in definitions.
11112         * config/rs6000/rs6000-overload.def (__builtin_dfp_quantize): New
11113         overloaded definition.
11114         * doc/extend.texi: Add documentation for __builtin_dfp_quantize.
11116 2023-08-29  Pan Li  <pan2.li@intel.com>
11117             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11119         * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration.
11120         (riscv_legitimize_const_move): Handle ref plus const poly.
11122 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
11124         * common/config/riscv/riscv-common.cc
11125         (riscv_implied_info): Add implications from unprivileged extensions.
11126         (riscv_ext_version_table): Add stub support for all unprivileged
11127         extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'.
11129 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
11131         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
11132         Add stub support for all vendor extensions supported by Binutils.
11134 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
11136         * common/config/riscv/riscv-common.cc
11137         (riscv_implied_info): Add implications from privileged extensions.
11138         (riscv_ext_version_table): Add stub support for all privileged
11139         extensions supported by Binutils.
11141 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
11143         * config/riscv/autovec.md: Adjust
11144         * config/riscv/riscv-protos.h (RVV_VUNDEF): Clean.
11145         (get_vlmax_rtx): Exported.
11146         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Deleted.
11147         (emit_vlmax_masked_gather_mu_insn): Adjust.
11148         (get_vlmax_rtx): New func.
11149         (expand_load_store): Adjust.
11150         (expand_cond_len_unop): Call expand_cond_len_op.
11151         (expand_cond_len_op): New subroutine.
11152         (expand_cond_len_binop): Call expand_cond_len_op.
11153         (expand_cond_len_ternop): Call expand_cond_len_op.
11154         (expand_lanes_load_store): Adjust.
11156 2023-08-29  Jakub Jelinek  <jakub@redhat.com>
11158         PR middle-end/79173
11159         PR middle-end/111209
11160         * tree-ssa-math-opts.cc (match_uaddc_usubc): Match also
11161         just 2 limb uaddc/usubc with 0 carry-in on lower limb and ignored
11162         carry-out on higher limb.  Don't match it though if it could be
11163         matched later on 4 argument addition/subtraction.
11165 2023-08-29  Andrew Pinski  <apinski@marvell.com>
11167         PR tree-optimization/111147
11168         * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p
11169         instead of matching bit_not.
11171 2023-08-29  Christophe Lyon  <christophe.lyon@linaro.org>
11173         * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing
11174         initializer.
11176 2023-08-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11178         * config/riscv/riscv-vsetvl.cc (vector_insn_info::get_avl_or_vl_reg): New function.
11179         (pass_vsetvl::compute_local_properties): Fix bug.
11180         (pass_vsetvl::commit_vsetvls): Ditto.
11181         * config/riscv/riscv-vsetvl.h: New function.
11183 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
11185         PR target/110943
11186         * config/riscv/predicates.md (vector_const_int_or_double_0_operand):
11187         New predicate.
11188         * config/riscv/riscv-vector-builtins.cc (function_expander::function_expander):
11189         force_reg mem target operand.
11190         * config/riscv/vector.md (@pred_mov<mode>): Wrapper.
11191         (*pred_mov<mode>): Remove imm -> reg pattern.
11192         (*pred_broadcast<mode>_imm): Add imm -> reg pattern.
11194 2023-08-29  Lulu Cheng  <chenglulu@loongson.cn>
11196         * common/config/loongarch/loongarch-common.cc:
11197         Enable '-free' on O2 and above.
11198         * doc/invoke.texi: Modify the description information
11199         of the '-free' compilation option and add the LoongArch
11200         description.
11202 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
11204         * doc/extend.texi: Fix the description of __builtin_riscv_pause.
11206 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
11208         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
11209         Implement the 'Zihintpause' extension, version 2.0.
11210         (riscv_ext_flag_table) Add 'Zihintpause' handling.
11211         * config/riscv/riscv-builtins.cc: Remove availability predicate
11212         "always" and add "hint_pause".
11213         (riscv_builtins) : Add "pause" extension.
11214         * config/riscv/riscv-opts.h (MASK_ZIHINTPAUSE, TARGET_ZIHINTPAUSE): New.
11215         * config/riscv/riscv.md (riscv_pause): Adjust output based on
11216         TARGET_ZIHINTPAUSE.
11218 2023-08-28  Andrew Pinski  <apinski@marvell.com>
11220         * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p
11221         instead of specifically checking for ~X.
11223 2023-08-28  Andrew Pinski  <apinski@marvell.com>
11225         PR tree-optimization/111146
11226         * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove
11227         redundant pattern.
11229 2023-08-28  Andrew Pinski  <apinski@marvell.com>
11231         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Add dump information
11232         when resimplify returns true.
11233         (match_simplify_replacement): Print only if accepted the match-and-simplify
11234         result rather than the full sequence.
11236 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11238         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip
11239         never probability.
11240         (pass_vsetvl::compute_probabilities): Fix unitialized probability.
11242 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11244         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug.
11246 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11248         * config/arm/arm-mve-builtins-base.cc (vmullbq_poly)
11249         (vmulltq_poly): New.
11250         * config/arm/arm-mve-builtins-base.def (vmullbq_poly)
11251         (vmulltq_poly): New.
11252         * config/arm/arm-mve-builtins-base.h (vmullbq_poly)
11253         (vmulltq_poly): New.
11254         * config/arm/arm_mve.h (vmulltq_poly): Remove.
11255         (vmullbq_poly): Remove.
11256         (vmullbq_poly_m): Remove.
11257         (vmulltq_poly_m): Remove.
11258         (vmullbq_poly_x): Remove.
11259         (vmulltq_poly_x): Remove.
11260         (vmulltq_poly_p8): Remove.
11261         (vmullbq_poly_p8): Remove.
11262         (vmulltq_poly_p16): Remove.
11263         (vmullbq_poly_p16): Remove.
11264         (vmullbq_poly_m_p8): Remove.
11265         (vmullbq_poly_m_p16): Remove.
11266         (vmulltq_poly_m_p8): Remove.
11267         (vmulltq_poly_m_p16): Remove.
11268         (vmullbq_poly_x_p8): Remove.
11269         (vmullbq_poly_x_p16): Remove.
11270         (vmulltq_poly_x_p8): Remove.
11271         (vmulltq_poly_x_p16): Remove.
11272         (__arm_vmulltq_poly_p8): Remove.
11273         (__arm_vmullbq_poly_p8): Remove.
11274         (__arm_vmulltq_poly_p16): Remove.
11275         (__arm_vmullbq_poly_p16): Remove.
11276         (__arm_vmullbq_poly_m_p8): Remove.
11277         (__arm_vmullbq_poly_m_p16): Remove.
11278         (__arm_vmulltq_poly_m_p8): Remove.
11279         (__arm_vmulltq_poly_m_p16): Remove.
11280         (__arm_vmullbq_poly_x_p8): Remove.
11281         (__arm_vmullbq_poly_x_p16): Remove.
11282         (__arm_vmulltq_poly_x_p8): Remove.
11283         (__arm_vmulltq_poly_x_p16): Remove.
11284         (__arm_vmulltq_poly): Remove.
11285         (__arm_vmullbq_poly): Remove.
11286         (__arm_vmullbq_poly_m): Remove.
11287         (__arm_vmulltq_poly_m): Remove.
11288         (__arm_vmullbq_poly_x): Remove.
11289         (__arm_vmulltq_poly_x): Remove.
11291 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11293         * config/arm/arm-mve-builtins-functions.h (class
11294         unspec_mve_function_exact_insn_vmull_poly): New.
11296 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11298         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New.
11299         * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New.
11301 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11303         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add
11304         support for 'U' and 'p' format specifiers.
11306 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11308         * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p
11309         field..
11310         (TYPES_poly_8_16): New.
11311         (poly_8_16): New.
11312         * config/arm/arm-mve-builtins.def (p8): New type suffix.
11313         (p16): Likewise.
11314         * config/arm/arm-mve-builtins.h (enum type_class_index): Add
11315         TYPE_poly.
11316         (struct type_suffix_info): Add poly_p field.
11318 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11320         * config/arm/arm-mve-builtins-base.cc (vmullbq_int, vmulltq_int):
11321         New.
11322         * config/arm/arm-mve-builtins-base.def (vmullbq_int, vmulltq_int):
11323         New.
11324         * config/arm/arm-mve-builtins-base.h (vmullbq_int, vmulltq_int):
11325         New.
11326         * config/arm/arm_mve.h (vmulltq_int): Remove.
11327         (vmullbq_int): Remove.
11328         (vmullbq_int_m): Remove.
11329         (vmulltq_int_m): Remove.
11330         (vmullbq_int_x): Remove.
11331         (vmulltq_int_x): Remove.
11332         (vmulltq_int_u8): Remove.
11333         (vmullbq_int_u8): Remove.
11334         (vmulltq_int_s8): Remove.
11335         (vmullbq_int_s8): Remove.
11336         (vmulltq_int_u16): Remove.
11337         (vmullbq_int_u16): Remove.
11338         (vmulltq_int_s16): Remove.
11339         (vmullbq_int_s16): Remove.
11340         (vmulltq_int_u32): Remove.
11341         (vmullbq_int_u32): Remove.
11342         (vmulltq_int_s32): Remove.
11343         (vmullbq_int_s32): Remove.
11344         (vmullbq_int_m_s8): Remove.
11345         (vmullbq_int_m_s32): Remove.
11346         (vmullbq_int_m_s16): Remove.
11347         (vmullbq_int_m_u8): Remove.
11348         (vmullbq_int_m_u32): Remove.
11349         (vmullbq_int_m_u16): Remove.
11350         (vmulltq_int_m_s8): Remove.
11351         (vmulltq_int_m_s32): Remove.
11352         (vmulltq_int_m_s16): Remove.
11353         (vmulltq_int_m_u8): Remove.
11354         (vmulltq_int_m_u32): Remove.
11355         (vmulltq_int_m_u16): Remove.
11356         (vmullbq_int_x_s8): Remove.
11357         (vmullbq_int_x_s16): Remove.
11358         (vmullbq_int_x_s32): Remove.
11359         (vmullbq_int_x_u8): Remove.
11360         (vmullbq_int_x_u16): Remove.
11361         (vmullbq_int_x_u32): Remove.
11362         (vmulltq_int_x_s8): Remove.
11363         (vmulltq_int_x_s16): Remove.
11364         (vmulltq_int_x_s32): Remove.
11365         (vmulltq_int_x_u8): Remove.
11366         (vmulltq_int_x_u16): Remove.
11367         (vmulltq_int_x_u32): Remove.
11368         (__arm_vmulltq_int_u8): Remove.
11369         (__arm_vmullbq_int_u8): Remove.
11370         (__arm_vmulltq_int_s8): Remove.
11371         (__arm_vmullbq_int_s8): Remove.
11372         (__arm_vmulltq_int_u16): Remove.
11373         (__arm_vmullbq_int_u16): Remove.
11374         (__arm_vmulltq_int_s16): Remove.
11375         (__arm_vmullbq_int_s16): Remove.
11376         (__arm_vmulltq_int_u32): Remove.
11377         (__arm_vmullbq_int_u32): Remove.
11378         (__arm_vmulltq_int_s32): Remove.
11379         (__arm_vmullbq_int_s32): Remove.
11380         (__arm_vmullbq_int_m_s8): Remove.
11381         (__arm_vmullbq_int_m_s32): Remove.
11382         (__arm_vmullbq_int_m_s16): Remove.
11383         (__arm_vmullbq_int_m_u8): Remove.
11384         (__arm_vmullbq_int_m_u32): Remove.
11385         (__arm_vmullbq_int_m_u16): Remove.
11386         (__arm_vmulltq_int_m_s8): Remove.
11387         (__arm_vmulltq_int_m_s32): Remove.
11388         (__arm_vmulltq_int_m_s16): Remove.
11389         (__arm_vmulltq_int_m_u8): Remove.
11390         (__arm_vmulltq_int_m_u32): Remove.
11391         (__arm_vmulltq_int_m_u16): Remove.
11392         (__arm_vmullbq_int_x_s8): Remove.
11393         (__arm_vmullbq_int_x_s16): Remove.
11394         (__arm_vmullbq_int_x_s32): Remove.
11395         (__arm_vmullbq_int_x_u8): Remove.
11396         (__arm_vmullbq_int_x_u16): Remove.
11397         (__arm_vmullbq_int_x_u32): Remove.
11398         (__arm_vmulltq_int_x_s8): Remove.
11399         (__arm_vmulltq_int_x_s16): Remove.
11400         (__arm_vmulltq_int_x_s32): Remove.
11401         (__arm_vmulltq_int_x_u8): Remove.
11402         (__arm_vmulltq_int_x_u16): Remove.
11403         (__arm_vmulltq_int_x_u32): Remove.
11404         (__arm_vmulltq_int): Remove.
11405         (__arm_vmullbq_int): Remove.
11406         (__arm_vmullbq_int_m): Remove.
11407         (__arm_vmulltq_int_m): Remove.
11408         (__arm_vmullbq_int_x): Remove.
11409         (__arm_vmulltq_int_x): Remove.
11411 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11413         * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New.
11414         * config/arm/arm-mve-builtins-shapes.h (binary_widen): New.
11416 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11418         * config/arm/arm-mve-builtins-functions.h (class
11419         unspec_mve_function_exact_insn_vmull): New.
11421 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11423         * config/arm/iterators.md (mve_insn): Add vmullb, vmullt.
11424         (isu): Add VMULLBQ_INT_S, VMULLBQ_INT_U, VMULLTQ_INT_S,
11425         VMULLTQ_INT_U.
11426         (supf): Add VMULLBQ_POLY_P, VMULLTQ_POLY_P, VMULLBQ_POLY_M_P,
11427         VMULLTQ_POLY_M_P.
11428         (VMULLBQ_INT, VMULLTQ_INT, VMULLBQ_INT_M, VMULLTQ_INT_M): Delete.
11429         (VMULLxQ_INT, VMULLxQ_POLY, VMULLxQ_INT_M, VMULLxQ_POLY_M): New.
11430         * config/arm/mve.md (mve_vmullbq_int_<supf><mode>)
11431         (mve_vmulltq_int_<supf><mode>): Merge into ...
11432         (@mve_<mve_insn>q_int_<supf><mode>) ... this.
11433         (mve_vmulltq_poly_p<mode>, mve_vmullbq_poly_p<mode>): Merge into ...
11434         (@mve_<mve_insn>q_poly_<supf><mode>): ... this.
11435         (mve_vmullbq_int_m_<supf><mode>, mve_vmulltq_int_m_<supf><mode>): Merge into ...
11436         (@mve_<mve_insn>q_int_m_<supf><mode>): ... this.
11437         (mve_vmullbq_poly_m_p<mode>, mve_vmulltq_poly_m_p<mode>): Merge into ...
11438         (@mve_<mve_insn>q_poly_m_<supf><mode>): ... this.
11440 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11442         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type):
11443         Remove dead check.
11445 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
11447         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound.
11448         (binary_acca_int64): Likewise.
11450 2023-08-28  Aldy Hernandez  <aldyh@redhat.com>
11452         * range-op-float.cc (fold_range): Handle relations.
11454 2023-08-28  Lulu Cheng  <chenglulu@loongson.cn>
11456         * config/loongarch/loongarch.cc (loongarch_expand_conditional_move):
11457         Optimize the function implementation.
11459 2023-08-28  liuhongt  <hongtao.liu@intel.com>
11461         PR target/111119
11462         * config/i386/sse.md (V48_AVX2): Rename to ..
11463         (V48_128_256): .. this.
11464         (ssefltmodesuffix): Extend to V4SF/V8SF/V2DF/V4DF.
11465         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Change
11466         V48_AVX2 to V48_128_256, also generate vmaskmov{ps,pd} for
11467         integral modes when TARGET_AVX2 is not available.
11468         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
11469         (maskload<mode><sseintvecmodelower>): Change V48_AVX2 to
11470         V48_128_256.
11471         (maskstore<mode><sseintvecmodelower>): Ditto.
11473 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11475         * config/riscv/riscv-vsetvl.cc (vsetvl_vtype_change_only_p):
11476         New function.
11477         (after_or_same_p): Ditto.
11478         (find_reg_killed_by): Delete.
11479         (has_vsetvl_killed_avl_p): Ditto.
11480         (anticipatable_occurrence_p): Refactor.
11481         (any_set_in_bb_p): Delete.
11482         (count_regno_occurrences): Ditto.
11483         (backward_propagate_worthwhile_p): Ditto.
11484         (demands_can_be_fused_p): Ditto.
11485         (earliest_pred_can_be_fused_p): New function.
11486         (vsetvl_dominated_by_p): Ditto.
11487         (vector_insn_info::parse_insn): Refactor.
11488         (vector_insn_info::merge): Refactor.
11489         (vector_insn_info::dump): Refactor.
11490         (vector_infos_manager::vector_infos_manager): Refactor.
11491         (vector_infos_manager::all_empty_predecessor_p): Delete.
11492         (vector_infos_manager::all_same_avl_p): Ditto.
11493         (vector_infos_manager::create_bitmap_vectors): Refactor.
11494         (vector_infos_manager::free_bitmap_vectors): Refactor.
11495         (vector_infos_manager::dump): Refactor.
11496         (pass_vsetvl::update_block_info): New function.
11497         (enum fusion_type): Ditto.
11498         (pass_vsetvl::get_backward_fusion_type): Delete.
11499         (pass_vsetvl::hard_empty_block_p): Ditto.
11500         (pass_vsetvl::backward_demand_fusion): Ditto.
11501         (pass_vsetvl::forward_demand_fusion): Ditto.
11502         (pass_vsetvl::demand_fusion): Ditto.
11503         (pass_vsetvl::cleanup_illegal_dirty_blocks): Ditto.
11504         (pass_vsetvl::compute_local_properties): Ditto.
11505         (pass_vsetvl::earliest_fusion): New function.
11506         (pass_vsetvl::vsetvl_fusion): Ditto.
11507         (pass_vsetvl::commit_vsetvls): Refactor.
11508         (get_first_vsetvl_before_rvv_insns): Ditto.
11509         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
11510         (pass_vsetvl::cleanup_earliest_vsetvls): New function.
11511         (pass_vsetvl::df_post_optimization): Refactor.
11512         (pass_vsetvl::lazy_vsetvl): Ditto.
11513         * config/riscv/riscv-vsetvl.h: Ditto.
11515 2023-08-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11517         * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern.
11518         * config/riscv/riscv-protos.h (enum insn_type): New enum.
11519         (expand_fold_extract_last): New function.
11520         * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto.
11521         (emit_cpop_insn): Ditto.
11522         (emit_nonvlmax_compress_insn): Ditto.
11523         (expand_fold_extract_last): Ditto.
11524         * config/riscv/vector.md: Fix vcpop.m ratio demand.
11526 2023-08-25  Edwin Lu  <ewlu@rivosinc.com>
11528         * config/riscv/sync-rvwmo.md: updated types to "multi" or
11529                 "atomic" based on number of assembly lines generated
11530         * config/riscv/sync-ztso.md: likewise
11531         * config/riscv/sync.md: likewise
11533 2023-08-25  Jin Ma  <jinma@linux.alibaba.com>
11535         * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on
11536         the F extension.
11537         * config/riscv/constraints.md (zfli): Constrain the floating point number that the
11538         instructions FLI.H/S/D can load.
11539         * config/riscv/iterators.md (ceil): New.
11540         * config/riscv/riscv-opts.h (MASK_ZFA): New.
11541         (TARGET_ZFA): New.
11542         * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New.
11543         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New.
11544         (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is
11545         not applicable.
11546         (riscv_const_insns): Likewise.
11547         (riscv_legitimize_const_move): Likewise.
11548         (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is
11549         required.
11550         (riscv_split_doubleword_move): Likewise.
11551         (riscv_output_move): Output the mov instructions in zfa extension.
11552         (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate
11553         in assembly.
11554         (riscv_secondary_memory_needed): Likewise.
11555         * config/riscv/riscv.md (fminm<mode>3): New.
11556         (fmaxm<mode>3): New.
11557         (movsidf2_low_rv32): New.
11558         (movsidf2_high_rv32): New.
11559         (movdfsisi3_rv32): New.
11560         (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New.
11561         * config/riscv/riscv.opt: New.
11563 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
11565         * omp-api.h: New.
11566         * omp-general.cc (omp_runtime_api_procname): New.
11567         (omp_runtime_api_call): Moved here from omp-low.cc, and make
11568         non-static.
11569         * omp-general.h: Include omp-api.h.
11570         * omp-low.cc (omp_runtime_api_call): Delete this copy.
11572 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
11574         * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK.
11575         * doc/gimple.texi (GIMPLE instruction set): Add
11576         GIMPLE_OMP_STRUCTURED_BLOCK.
11577         (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection.
11578         * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK.
11579         * gimple-pretty-print.cc (dump_gimple_omp_block): Handle
11580         GIMPLE_OMP_STRUCTURED_BLOCK.
11581         (pp_gimple_stmt_1): Likewise.
11582         * gimple-walk.cc (walk_gimple_stmt): Likewise.
11583         * gimple.cc (gimple_build_omp_structured_block): New.
11584         * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New.
11585         * gimple.h (gimple_build_omp_structured_block): Declare.
11586         (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
11587         (CASE_GIMPLE_OMP): Likewise.
11588         * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK.
11589         (gimplify_expr): Likewise.
11590         * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on
11591         GIMPLE_OMP_STRUCTURED_BLOCK.
11592         * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
11593         (lower_omp_1): Likewise.
11594         (diagnose_sb_1): Likewise.
11595         (diagnose_sb_2): Likewise.
11596         * tree-inline.cc (remap_gimple_stmt): Handle
11597         GIMPLE_OMP_STRUCTURED_BLOCK.
11598         (estimate_num_insns): Likewise.
11599         * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise.
11600         (convert_local_reference_stmt): Likewise.
11601         (convert_gimple_call): Likewise.
11602         * tree-pretty-print.cc (dump_generic_node): Handle
11603         OMP_STRUCTURED_BLOCK.
11604         * tree.def (OMP_STRUCTURED_BLOCK): New.
11605         * tree.h (OMP_STRUCTURED_BLOCK_BODY): New.
11607 2023-08-25  Vineet Gupta  <vineetg@rivosinc.com>
11609         * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
11610         cost. Add some comments about different constants handling.
11612 2023-08-25  Andrew Pinski  <apinski@marvell.com>
11614         * match.pd (`a ? one_zero : one_zero`): Move
11615         below detection of minmax.
11617 2023-08-25  Andrew Pinski  <apinski@marvell.com>
11619         * match.pd (`a | C -> C`): New pattern.
11621 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
11623         * caller-save.cc (new_saved_hard_reg):
11624         Rename TRUE/FALSE to true/false.
11625         (setup_save_areas): Ditto.
11626         * gcc.cc (set_collect_gcc_options): Ditto.
11627         (driver::build_multilib_strings): Ditto.
11628         (print_multilib_info): Ditto.
11629         * genautomata.cc (gen_cpu_unit): Ditto.
11630         (gen_query_cpu_unit): Ditto.
11631         (gen_bypass): Ditto.
11632         (gen_excl_set): Ditto.
11633         (gen_presence_absence_set): Ditto.
11634         (gen_presence_set): Ditto.
11635         (gen_final_presence_set): Ditto.
11636         (gen_absence_set): Ditto.
11637         (gen_final_absence_set): Ditto.
11638         (gen_automaton): Ditto.
11639         (gen_regexp_repeat): Ditto.
11640         (gen_regexp_allof): Ditto.
11641         (gen_regexp_oneof): Ditto.
11642         (gen_regexp_sequence): Ditto.
11643         (process_decls): Ditto.
11644         (reserv_sets_are_intersected): Ditto.
11645         (initiate_excl_sets): Ditto.
11646         (form_reserv_sets_list): Ditto.
11647         (check_presence_pattern_sets): Ditto.
11648         (check_absence_pattern_sets): Ditto.
11649         (check_regexp_units_distribution): Ditto.
11650         (check_unit_distributions_to_automata): Ditto.
11651         (create_ainsns): Ditto.
11652         (output_insn_code_cases): Ditto.
11653         (output_internal_dead_lock_func): Ditto.
11654         (form_important_insn_automata_lists): Ditto.
11655         * gengtype-state.cc (read_state_files_list): Ditto.
11656         * gengtype.cc (main): Ditto.
11657         * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds):
11658         Ditto.
11659         * gimple.cc (gimple_build_call_from_tree): Ditto.
11660         (preprocess_case_label_vec_for_gimple): Ditto.
11661         * gimplify.cc (gimplify_call_expr): Ditto.
11662         * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto.
11664 2023-08-25  Richard Biener  <rguenther@suse.de>
11666         PR tree-optimization/111137
11667         * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences):
11668         Properly handle grouped stores from other SLP instances.
11670 2023-08-25  Richard Biener  <rguenther@suse.de>
11672         * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences):
11673         Split out from vect_slp_analyze_node_dependences, remove
11674         dead code.
11675         (vect_slp_analyze_load_dependences): Split out from
11676         vect_slp_analyze_node_dependences, adjust comments.  Process
11677         queued stores before any disambiguation.
11678         (vect_slp_analyze_node_dependences): Remove.
11679         (vect_slp_analyze_instance_dependence): Adjust.
11681 2023-08-25  Aldy Hernandez  <aldyh@redhat.com>
11683         * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN
11684         handling.
11685         (operator_not_equal::fold_range): Adjust for relations.
11686         (operator_lt::fold_range): Same.
11687         (operator_gt::fold_range): Same.
11688         (foperator_unordered_equal::fold_range): Same.
11689         (foperator_unordered_lt::fold_range): Same.
11690         (foperator_unordered_le::fold_range): Same.
11691         (foperator_unordered_gt::fold_range): Same.
11692         (foperator_unordered_ge::fold_range): Same.
11694 2023-08-25  Richard Biener  <rguenther@suse.de>
11696         PR tree-optimization/111136
11697         * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
11698         stores force STMT_VINFO_STRIDED_P and also duplicate that
11699         to all elements.
11701 2023-08-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11703         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
11704         Add early continue.
11706 2023-08-25  liuhongt  <hongtao.liu@intel.com>
11708         * config/i386/sse.md (vec_set<mode>): Removed.
11709         (V_128H): Merge into ..
11710         (V_128): .. this.
11711         (V_256H): Merge into ..
11712         (V_256): .. this.
11713         (V_512): Add V32HF, V32BF.
11714         (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H
11715         to V_128.
11716         (vcond<mode><sseintvecmodelower>): Removed
11717         (vcondu<mode><sseintvecmodelower>): Removed.
11718         (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256.
11720 2023-08-25  Hongyu Wang  <hongyu.wang@intel.com>
11722         PR target/111127
11723         * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
11724         Adjust paramter order.
11726 2023-08-24  Uros Bizjak  <ubizjak@gmail.com>
11728         PR target/94866
11729         * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
11731 2023-08-24  David Malcolm  <dmalcolm@redhat.com>
11733         PR analyzer/105899
11734         * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
11735         list of functions known to the analyzer.
11737 2023-08-24  Richard Biener  <rguenther@suse.de>
11739         PR tree-optimization/111123
11740         * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not
11741         remove indirect clobbers here ...
11742         * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here.
11743         (remove_indirect_clobbers): New function.
11745 2023-08-24  Jan Hubicka  <jh@suse.cz>
11747         * cfg.h (struct control_flow_graph): New field full_profile.
11748         * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true.
11749         * cfg.cc (init_flow): Set full_profile to false.
11750         * graphite.cc (graphite_transform_loops): Set full_profile to false.
11751         * lto-streamer-in.cc (input_cfg): Initialize full_profile flag.
11752         * predict.cc (pass_profile::execute): Set full_profile to true.
11753         * symtab-thunks.cc (expand_thunk): Set full_profile to true.
11754         * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full
11755         if full_profile is set.
11756         * tree-inline.cc (initialize_cfun): Initialize full_profile.
11757         (expand_call_inline): Combine full_profile.
11759 2023-08-24  Richard Biener  <rguenther@suse.de>
11761         * tree-vect-slp.cc (vect_build_slp_tree_1): Rename
11762         load_p to ldst_p, fix mistakes and rely on
11763         STMT_VINFO_DATA_REF.
11765 2023-08-24  Jan Hubicka  <jh@suse.cz>
11767         * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
11768         of newly build trap bb.
11770 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11772         * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since
11773         it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold.
11774         (TARGET_PREFERRED_ELSE_VALUE): Ditto.
11776 2023-08-24  Robin Dapp  <rdapp.gcc@gmail.com>
11778         * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
11779         * config/riscv/riscv.cc (riscv_option_override): Set sched
11780         pressure algorithm.
11782 2023-08-24  Robin Dapp  <rdapp@ventanamicro.com>
11784         * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
11786 2023-08-24  Richard Biener  <rguenther@suse.de>
11788         PR tree-optimization/111125
11789         * tree-vect-slp.cc (vect_slp_function): Split at novector
11790         loop entry, do not push blocks in novector loops.
11792 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
11794         * doc/extend.texi: Document the C [[__extension__ ...]] construct.
11796 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11798         * genmatch.cc (decision_tree::gen): Support
11799         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
11800         * gimple-match-exports.cc (gimple_simplify): Ditto.
11801         (gimple_resimplify6): New function.
11802         (gimple_resimplify7): New function.
11803         (gimple_match_op::resimplify): Support
11804         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
11805         (convert_conditional_op): Ditto.
11806         (build_call_internal): Ditto.
11807         (try_conditional_simplification): Ditto.
11808         (gimple_extract): Ditto.
11809         * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto.
11810         * internal-fn.cc (CASE): Ditto.
11812 2023-08-24  Richard Biener  <rguenther@suse.de>
11814         PR tree-optimization/111115
11815         * tree-vectorizer.h (vect_slp_child_index_for_operand): New.
11816         * tree-vect-data-refs.cc (can_group_stmts_p): Also group
11817         .MASK_STORE.
11818         * tree-vect-slp.cc (arg3_arg2_map): New.
11819         (vect_get_operand_map): Handle IFN_MASK_STORE.
11820         (vect_slp_child_index_for_operand): New function.
11821         (vect_build_slp_tree_1): Handle statements with no LHS,
11822         masked store ifns.
11823         (vect_remove_slp_scalar_calls): Likewise.
11824         * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the
11825         SLP child corresponding to the ifn value index.
11826         (vectorizable_store): Likewise for the mask index.  Support
11827         masked stores.
11828         (vectorizable_load): Lookup the SLP child corresponding to the
11829         ifn mask index.
11831 2023-08-24  Richard Biener  <rguenther@suse.de>
11833         PR tree-optimization/111125
11834         * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
11835         for the remain_defs processing.
11837 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
11839         * config/aarch64/aarch64.cc: Include ssa.h.
11840         (aarch64_multiply_add_p): Require the second operand of an
11841         Advanced SIMD subtraction to be a multiplication.  Assume that
11842         such an operation won't be fused if the second operand is used
11843         multiple times and if the first operand is also a multiplication.
11845 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11847         * tree-vect-loop.cc (vectorizable_reduction): Apply
11848         LEN_FOLD_EXTRACT_LAST.
11849         * tree-vect-stmts.cc (vectorizable_condition): Ditto.
11851 2023-08-24  Richard Biener  <rguenther@suse.de>
11853         PR tree-optimization/111128
11854         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
11855         Emit external shift operand inline if we promoted it with
11856         another pattern stmt.
11858 2023-08-24  Pan Li  <pan2.li@intel.com>
11860         * config/riscv/autovec.md: Fix typo.
11862 2023-08-24  Pan Li  <pan2.li@intel.com>
11864         * config/riscv/riscv-vector-builtins-bases.cc
11865         (class binop_frm): Removed.
11866         (class reverse_binop_frm): Ditto.
11867         (class widen_binop_frm): Ditto.
11868         (class vfmacc_frm): Ditto.
11869         (class vfnmacc_frm): Ditto.
11870         (class vfmsac_frm): Ditto.
11871         (class vfnmsac_frm): Ditto.
11872         (class vfmadd_frm): Ditto.
11873         (class vfnmadd_frm): Ditto.
11874         (class vfmsub_frm): Ditto.
11875         (class vfnmsub_frm): Ditto.
11876         (class vfwmacc_frm): Ditto.
11877         (class vfwnmacc_frm): Ditto.
11878         (class vfwmsac_frm): Ditto.
11879         (class vfwnmsac_frm): Ditto.
11880         (class unop_frm): Ditto.
11881         (class vfrec7_frm): Ditto.
11882         (class binop): Add frm_op_type template arg.
11883         (class unop): Ditto.
11884         (class widen_binop): Ditto.
11885         (class widen_binop_fp): Ditto.
11886         (class reverse_binop): Ditto.
11887         (class vfmacc): Ditto.
11888         (class vfnmsac): Ditto.
11889         (class vfmadd): Ditto.
11890         (class vfnmsub): Ditto.
11891         (class vfnmacc): Ditto.
11892         (class vfmsac): Ditto.
11893         (class vfnmadd): Ditto.
11894         (class vfmsub): Ditto.
11895         (class vfwmacc): Ditto.
11896         (class vfwnmacc): Ditto.
11897         (class vfwmsac): Ditto.
11898         (class vfwnmsac): Ditto.
11899         (class float_misc): Ditto.
11901 2023-08-24  Andrew Pinski  <apinski@marvell.com>
11903         PR tree-optimization/111109
11904         * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)):
11905         Add check to make sure cmp and icmp are inverse.
11907 2023-08-24  Andrew Pinski  <apinski@marvell.com>
11909         PR tree-optimization/95929
11910         * match.pd (convert?(-a)): New pattern
11911         for 1bit integer types.
11913 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
11915         Revert:
11916         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
11918         * common/config/i386/cpuinfo.h (get_available_features):
11919         Add avx10_set and version and detect avx10.1.
11920         (cpu_indicator_init): Handle avx10.1-512.
11921         * common/config/i386/i386-common.cc
11922         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
11923         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
11924         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
11925         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
11926         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
11927         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
11928         -mavx10.1-512.
11929         * common/config/i386/i386-cpuinfo.h (enum processor_features):
11930         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
11931         FEATURE_AVX10_512BIT.
11932         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
11933         AVX10_512BIT, AVX10_1 and AVX10_1_512.
11934         * config/i386/constraints.md (Yk): Add AVX10_1.
11935         (Yv): Ditto.
11936         (k): Ditto.
11937         * config/i386/cpuid.h (bit_AVX10): New.
11938         (bit_AVX10_256): Ditto.
11939         (bit_AVX10_512): Ditto.
11940         * config/i386/i386-c.cc (ix86_target_macros_internal):
11941         Define AVX10_512BIT and AVX10_1.
11942         * config/i386/i386-isa.def
11943         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
11944         (AVX10_1): Add DEF_PTA(AVX10_1).
11945         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
11946         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
11947         and avx10.1-512.
11948         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
11949         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
11950         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
11951         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
11952         (ix86_conditional_register_usage): Ditto.
11953         (ix86_hard_regno_mode_ok): Ditto.
11954         (ix86_rtx_costs): Ditto.
11955         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
11956         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
11957         -mavx10.1-512.
11958         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
11959         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
11960         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
11961         and avx10.1-512.
11963 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
11965         Revert:
11966         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
11968         * common/config/i386/i386-common.cc
11969         (ix86_check_avx10): New function to check isa_flags and
11970         isa_flags_explicit to emit warning when AVX10 is enabled
11971         by "-m" option.
11972         (ix86_check_avx512):  New function to check isa_flags and
11973         isa_flags_explicit to emit warning when AVX512 is enabled
11974         by "-m" option.
11975         (ix86_handle_option): Do not change the flags when warning
11976         is emitted.
11977         * config/i386/driver-i386.cc (host_detect_local_cpu):
11978         Do not append -mno-avx10.1 for -march=native.
11980 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
11982         Revert:
11983         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
11985         * common/config/i386/i386-common.cc
11986         (ix86_check_avx10_vector_width): New function to check isa_flags
11987         to emit a warning when there is a conflict in AVX10 options for
11988         vector width.
11989         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
11990         * config/i386/driver-i386.cc (host_detect_local_cpu):
11991         Do not append -mno-avx10-max-512bit for -march=native.
11993 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
11995         Revert:
11996         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
11998         * config/i386/avx512vldqintrin.h: Remove target attribute.
11999         * config/i386/i386-builtin.def (BDESC):
12000         Add OPTION_MASK_ISA2_AVX10_1.
12001         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
12002         * config/i386/i386-expand.cc
12003         (ix86_check_builtin_isa_match): Ditto.
12004         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
12005         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
12006         and avx10_1_or_avx512vl.
12007         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
12008         (VF1_128_256VLDQ_AVX10_1): Ditto.
12009         (VI8_AVX512VLDQ_AVX10_1): Ditto.
12010         (<sse>_andnot<mode>3<mask_name>):
12011         Add TARGET_AVX10_1 and change isa attr from avx512dq to
12012         avx10_1_or_avx512dq.
12013         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
12014         avx512vl to avx10_1_or_avx512vl.
12015         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
12016         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
12017         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12018         Ditto.
12019         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12020         Ditto.
12021         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
12022         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
12023         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
12024         Add TARGET_AVX10_1.
12025         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
12026         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
12027         Remove target check.
12028         (avx512dq_mul<mode>3<mask_name>): Ditto.
12029         (*avx512dq_mul<mode>3<mask_name>): Ditto.
12030         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
12031         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
12032         Remove target check.
12033         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
12034         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
12035         Remove target check.
12036         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
12037         (mask_avx512vl_condition): Ditto.
12038         (mask): Ditto.
12040 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
12042         Revert:
12043         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12045         * config/i386/avx512vldqintrin.h: Remove target attribute.
12046         * config/i386/i386-builtin.def (BDESC):
12047         Add OPTION_MASK_ISA2_AVX10_1.
12048         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
12049         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
12050         (VI48_AVX512VLDQ_AVX10_1): Ditto.
12051         (VF2_AVX512VL): Remove.
12052         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
12053         Add TARGET_AVX10_1.
12054         (*<code><mode>3<mask_name>): Change isa attribute to
12055         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
12056         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
12057         to avx10_1_or_avx512vl.
12058         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
12059         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
12060         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
12061         Add TARGET_AVX10_1.
12062         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
12063         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
12064         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
12065         Add TARGET_AVX10_1.
12066         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
12067         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
12068         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
12069         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
12070         (float<floatunssuffix>v4div4sf2<mask_name>):
12071         Add TARGET_AVX10_1.
12072         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
12073         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
12074         (float<floatunssuffix>v2div2sf2): Ditto.
12075         (float<floatunssuffix>v2div2sf2_mask): Ditto.
12076         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
12077         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
12078         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
12079         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
12080         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
12081         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
12082         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
12083         Change when constraint is enabled.
12085 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
12087         Revert:
12088         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12090         * config/i386/avx512vldqintrin.h: Remove target attribute.
12091         * config/i386/i386-builtin.def (BDESC):
12092         Add OPTION_MASK_ISA2_AVX10_1.
12093         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
12094         (VFH_AVX512VLDQ_AVX10_1): Ditto.
12095         (VF1_AVX512VLDQ_AVX10_1): Ditto.
12096         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
12097         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
12098         (vec_pack<floatprefix>_float_<mode>): Change iterator to
12099         VI8_AVX512VLDQ_AVX10_1. Remove target check.
12100         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
12101         VF1_AVX512VLDQ_AVX10_1. Remove target check.
12102         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
12103         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
12104         (avx512vl_vextractf128<mode>): Change iterator to
12105         VI48F_256_DQVL_AVX10_1. Remove target check.
12106         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
12107         (vec_extract_hi_<mode>): Ditto.
12108         (avx512vl_vinsert<mode>): Ditto.
12109         (vec_set_lo_<mode><mask_name>): Ditto.
12110         (vec_set_hi_<mode><mask_name>): Ditto.
12111         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
12112         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
12113         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
12114         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
12115         * config/i386/subst.md (mask_avx512dq_condition): Add
12116         TARGET_AVX10_1.
12117         (mask_scalar_merge): Ditto.
12119 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
12121         Revert:
12122         2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
12124         PR target/111051
12125         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
12126         disabled.
12128 2023-08-24  Richard Biener  <rguenther@suse.de>
12130         PR debug/111080
12131         * dwarf2out.cc (prune_unused_types_walk): Handle
12132         DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type,
12133         DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type
12134         and DW_TAG_dynamic_type as to only output them when referenced.
12136 2023-08-24  liuhongt  <hongtao.liu@intel.com>
12138         * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
12139         V13 to GCC 13.1.
12141 2023-08-24  liuhongt  <hongtao.liu@intel.com>
12143         * common/config/i386/i386-common.cc (processor_names): Add new
12144         member graniterapids-s and arrowlake-s.
12145         * config/i386/i386-options.cc (processor_alias_table): Update
12146         table with PROCESSOR_ARROWLAKE_S and
12147         PROCESSOR_GRANITERAPIDS_D.
12148         (m_GRANITERAPID_D): New macro.
12149         (m_ARROWLAKE_S): Ditto.
12150         (m_CORE_AVX512): Add m_GRANITERAPIDS_D.
12151         (processor_cost_table): Add icelake_cost for
12152         PROCESSOR_GRANITERAPIDS_D and alderlake_cost for
12153         PROCESSOR_ARROWLAKE_S.
12154         * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as
12155         m_ARROWLAKE.
12156         * config/i386/i386.h (enum processor_type): Add new member
12157         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S.
12158         * config/i386/i386-c.cc (ix86_target_macros_internal): Handle
12159         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S
12161 2023-08-23  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
12163         * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
12164         to help simplify code further.
12166 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
12168         * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output.
12169         * gimple-range-phi.cc (phi_group::phi_group): Remove unused members.
12170         Initialize using a range instead of value and edge.
12171         (phi_group::calculate_using_modifier): Use initializer value and
12172         process for relations after trying for iteration convergence.
12173         (phi_group::refine_using_relation): Use initializer range.
12174         (phi_group::dump): Rework the dump output.
12175         (phi_analyzer::process_phi): Allow multiple constant initilizers.
12176         Dump groups immediately as created.
12177         (phi_analyzer::dump): Tweak output.
12178         * gimple-range-phi.h (phi_group::phi_group): Adjust prototype.
12179         (phi_group::initial_value): Delete.
12180         (phi_group::refine_using_relation): Adjust prototype.
12181         (phi_group::m_initial_value): Delete.
12182         (phi_group::m_initial_edge): Delete.
12183         (phi_group::m_vr): Use int_range_max.
12184         * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups.
12186 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
12188         * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if
12189         no group was created.
12190         (phi_analyzer::process_phi): Do not create groups of one phi node.
12192 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
12194         * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for
12195         CODE, CMP_CODE and BIT_CODE arguments.
12196         * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise.
12197         (aarch64_gen_ccmp_next): Likewise.
12198         * doc/tm.texi: Regenerated.
12200 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
12202         * coretypes.h (rtx_code): Add forward declaration.
12203         * rtl.h (rtx_code): Make compatible with forward declaration.
12205 2023-08-23  Uros Bizjak  <ubizjak@gmail.com>
12207         PR target/111010
12208         * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3):
12209         Merge pattern from *concatditi3_3 and *concatsidi3_3 using
12210         DWIH mode iterator.  Disable (=&r,m,m) alternative for
12211         32-bit targets.
12212         (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m)
12213         alternative for 32-bit targets.
12215 2023-08-23  Zhangjin Liao  <liaozhangjin@eswincomputing.com>
12217         * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
12218         appropriate type attribute.
12220 2023-08-23  Lehua Ding  <lehua.ding@rivai.ai>
12222         * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern.
12223         (*copysign<mode>_neg): Ditto.
12224         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust.
12225         (<optab><mode>2): Ditto.
12226         (cond_<optab><mode>): New.
12227         (cond_len_<optab><mode>): Ditto.
12228         * config/riscv/riscv-protos.h (enum insn_type): New.
12229         (expand_cond_len_unop): New helper func.
12230         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust.
12231         (expand_cond_len_unop): New helper func.
12233 2023-08-23  Jan Hubicka  <jh@suse.cz>
12235         * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment.
12236         (should_duplicate_loop_header_p): Fix return value for static exits.
12237         (ch_base::copy_headers): Improve handling of ch_possible_zero_cost.
12239 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
12241         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
12242         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
12243         and update the final nest accordingly.
12245 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
12247         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
12248         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
12249         and update the final nest accordingly.
12251 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
12253         * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds,
12254         adjust vec result_chain, vec_oprnd with auto_vec, and adjust
12255         gvec_oprnds with auto_delete_vec.
12257 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12259         * config/riscv/riscv-vsetvl.cc
12260         (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
12262 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12264         * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p):
12265         Fix fuse rule bug.
12266         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto.
12268 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12270         * config/riscv/vector.md: Add attribute.
12272 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12274         * config/riscv/riscv-vsetvl.cc (change_insn): Clang format.
12275         (vector_infos_manager::all_same_ratio_p): Ditto.
12276         (vector_infos_manager::all_same_avl_p): Ditto.
12277         (pass_vsetvl::refine_vsetvls): Ditto.
12278         (pass_vsetvl::cleanup_vsetvls): Ditto.
12279         (pass_vsetvl::commit_vsetvls): Ditto.
12280         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
12281         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
12282         (pass_vsetvl::compute_probabilities): Ditto.
12284 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12286         * config/riscv/t-riscv: Add riscv-vsetvl.def
12288 2023-08-22  Vineet Gupta  <vineetg@rivosinc.com>
12290         * config/riscv/riscv.opt: Add --param names
12291         riscv-autovec-preference and riscv-autovec-lmul
12293 2023-08-22  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
12295         * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
12297 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
12299         * tree-core.h (enum omp_clause_defaultmap_kind): Add
12300         OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL.
12301         * gimplify.cc (gimplify_scan_omp_clauses): Handle it.
12302         * tree-pretty-print.cc (dump_omp_clause): Likewise.
12304 2023-08-22  Jakub Jelinek  <jakub@redhat.com>
12306         PR c++/106652
12307         * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
12308         types aren't supported in C++.
12310 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12312         * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern.
12313         * internal-fn.cc (fold_len_extract_direct): Ditto.
12314         (expand_fold_len_extract_optab_fn): Ditto.
12315         (direct_fold_len_extract_optab_supported_p): Ditto.
12316         * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto.
12317         * optabs.def (OPTAB_D): Ditto.
12319 2023-08-22  Richard Biener  <rguenther@suse.de>
12321         * tree-vect-stmts.cc (vectorizable_store): Do not bump
12322         DR_GROUP_STORE_COUNT here.  Remove early out.
12323         (vect_transform_stmt): Only call vectorizable_store on
12324         the last element of an interleaving chain.
12326 2023-08-22  Richard Biener  <rguenther@suse.de>
12328         PR tree-optimization/94864
12329         PR tree-optimization/94865
12330         PR tree-optimization/93080
12331         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern
12332         for vector insertion from vector extraction.
12334 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12335             Kewen.Lin  <linkw@linux.ibm.com>
12337         * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
12338         (vectorizable_live_operation): Add live vectorization for length loop
12339         control.
12341 2023-08-22  David Malcolm  <dmalcolm@redhat.com>
12343         PR analyzer/105899
12344         * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
12346 2023-08-22  Pan Li  <pan2.li@intel.com>
12348         * config/riscv/riscv-vector-builtins-bases.cc
12349         (vfwredusum_frm_obj): New declaration.
12350         (BASE): Ditto.
12351         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12352         * config/riscv/riscv-vector-builtins-functions.def
12353         (vfwredusum_frm): New intrinsic function def.
12355 2023-08-21  David Faust  <david.faust@oracle.com>
12357         * config/bpf/bpf.md (neg): Second operand must be a register.
12359 2023-08-21  Edwin Lu  <ewlu@rivosinc.com>
12361         * config/riscv/bitmanip.md: Added bitmanip type to insns
12362         that are missing types.
12364 2023-08-21  Jeff Law  <jlaw@ventanamicro.com>
12366         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
12367         newline.
12369 2023-08-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12371         * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
12372         Fix format specifier.
12374 2023-08-21  Aldy Hernandez  <aldyh@redhat.com>
12376         * value-range.cc (frange::union_nans): Return false if nothing
12377         changed.
12378         (range_tests_floats): New test.
12380 2023-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12382         PR tree-optimization/111048
12383         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns
12384         correctly.
12385         (fold_vec_perm_cst): Remove workaround and again call
12386         valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors.
12387         (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case.
12389 2023-08-21  Richard Biener  <rguenther@suse.de>
12391         PR tree-optimization/111082
12392         * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
12393         pun operations that can overflow.
12395 2023-08-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12397         * lcm.cc (compute_antinout_edge): Export as global use.
12398         (compute_earliest): Ditto.
12399         (compute_rev_insert_delete): Ditto.
12400         * lcm.h (compute_antinout_edge): Ditto.
12401         (compute_earliest): Ditto.
12403 2023-08-21  Richard Biener  <rguenther@suse.de>
12405         PR tree-optimization/111070
12406         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have
12407         an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
12409 2023-08-21  Andrew Pinski  <apinski@marvell.com>
12411         PR tree-optimization/111002
12412         * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
12414 2023-08-21  liuhongt  <hongtao.liu@intel.com>
12416         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect
12417         Alderlake-N.
12418         * common/config/i386/i386-common.cc (alias_table): Support
12419         -march=gracemont as an alias of -march=alderlake.
12421 2023-08-20  Uros Bizjak  <ubizjak@gmail.com>
12423         * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1]
12424         instead of src in the call to ix86_expand_sse_cmp.
12425         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not
12426         force operands[1] to a register.
12427         (<any_extend:insn>v4hiv4si2): Ditto.
12428         (<any_extend:insn>v2siv2di2): Ditto.
12430 2023-08-20  Andrew Pinski  <apinski@marvell.com>
12432         PR tree-optimization/111006
12433         PR tree-optimization/110986
12434         * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
12436 2023-08-20  Eric Gallager  <egallager@gcc.gnu.org>
12438         PR target/90835
12439         * Makefile.in: improve error message when /usr/include is
12440         missing
12442 2023-08-19  Tobias Burnus  <tobias@codesourcery.com>
12444         PR middle-end/111017
12445         * omp-expand.cc (expand_omp_for_init_vars): Pass after=true
12446         to expand_omp_build_cond for 'factor != 0' condition, resulting
12447         in pre-r12-5295-g47de0b56ee455e code for the gimple insert.
12449 2023-08-19  Guo Jie  <guojie@loongson.cn>
12450             Lulu Cheng  <chenglulu@loongson.cn>
12452         * config/loongarch/t-loongarch: Add loongarch-driver.h into
12453         TM_H. Add loongarch-def.h and loongarch-tune.h into
12454         OPTIONS_H_EXTRA.
12456 2023-08-18  Uros Bizjak  <ubizjak@gmail.com>
12458         PR target/111023
12459         * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
12460         Also handle V2QImode.
12461         (ix86_expand_sse_extend): New function.
12462         * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
12463         * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
12464         TARGET_SSE2.  Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
12465         (<any_extend:insn>v2hiv2si2): Ditto.
12466         (<any_extend:insn>v2qiv2hi2): Ditto.
12467         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
12468         (<any_extend:insn>v4hiv4si2): Ditto.
12469         (<any_extend:insn>v2siv2di2): Ditto.
12471 2023-08-18  Aldy Hernandez  <aldyh@redhat.com>
12473         PR ipa/110753
12474         * value-range.cc (irange::union_bitmask): Return FALSE if updated
12475         bitmask is semantically equivalent to the original mask.
12476         (irange::intersect_bitmask): Same.
12477         (irange::get_bitmask): Add comment.
12479 2023-08-18  Richard Biener  <rguenther@suse.de>
12481         PR tree-optimization/111019
12482         * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
12483         also scrap base and offset in case the ref is indirect.
12485 2023-08-18  Jose E. Marchesi  <jose.marchesi@oracle.com>
12487         * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
12489 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
12491         PR bootstrap/111021
12492         * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
12494 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
12496         * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
12497         out from ...
12498         (vectorizable_store): ... here.
12500 2023-08-18  Richard Biener  <rguenther@suse.de>
12502         PR tree-optimization/111048
12503         * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
12504         vectors first.
12506 2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
12508         PR target/111051
12509         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
12510         disabled.
12512 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
12514         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
12515         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
12516         and update the final nest accordingly.
12518 2023-08-18  Andrew Pinski  <apinski@marvell.com>
12520         * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
12521         cond_len_neg and cond_len_one_cmpl.
12523 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
12525         * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
12526         * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
12527         (*local_pic_load<ANYLSF:mode>): To ANYLSF.
12528         (*local_pic_load_32d<ANYF:mode>): Ditto.
12529         (*local_pic_load_32d<ANYLSF:mode>): Ditto.
12530         (*local_pic_store<ANYF:mode>): Ditto.
12531         (*local_pic_store<ANYLSF:mode>): Ditto.
12532         (*local_pic_store_32d<ANYF:mode>): Ditto.
12533         (*local_pic_store_32d<ANYLSF:mode>): Ditto.
12535 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
12536             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
12538         * config/riscv/predicates.md (vector_const_0_operand): New.
12539         * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
12541 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
12543         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
12544         Forbidden.
12546 2023-08-17  Andrew MacLeod  <amacleod@redhat.com>
12548         PR tree-optimization/111009
12549         * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
12551 2023-08-17  Vladimir N. Makarov  <vmakarov@redhat.com>
12553         * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
12554         slots_num initialization from here ...
12555         (lra_spill): ... to here before the 1st call of
12556         assign_stack_slot_num_and_sort_pseudos.  Add the 2nd call after
12557         fp->sp elimination.
12559 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
12561         PR c/106537
12562         * doc/invoke.texi (Option Summary): Mention
12563         -Wcompare-distinct-pointer-types under `Warning Options'.
12564         (Warning Options): Document -Wcompare-distinct-pointer-types.
12566 2023-08-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12568         * recog.cc (memory_address_addr_space_p): Mark possibly unused
12569         argument as unused.
12571 2023-08-17  Richard Biener  <rguenther@suse.de>
12573         PR tree-optimization/111039
12574         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
12575         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
12577 2023-08-17  Alex Coplan  <alex.coplan@arm.com>
12579         * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
12581 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
12583         PR target/111046
12584         * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
12585         `naked' function attribute.
12586         (bpf_warn_func_return): New function.
12587         (TARGET_WARN_FUNC_RETURN): Define.
12588         (bpf_expand_prologue): Add preventive comment.
12589         (bpf_expand_epilogue): Likewise.
12590         * doc/extend.texi (BPF Function Attributes): Document the `naked'
12591         function attribute.
12593 2023-08-17  Richard Biener  <rguenther@suse.de>
12595         * tree-vect-slp.cc (vect_slp_check_for_roots): Use
12596         !needs_fold_left_reduction_p to decide whether we can
12597         handle the reduction with association.
12598         (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
12599         reductions perform all arithmetic in an unsigned type.
12601 2023-08-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12603         * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
12604         output.
12605         * configure: Regenerate.
12607 2023-08-17  Pan Li  <pan2.li@intel.com>
12609         * config/riscv/riscv-vector-builtins-bases.cc
12610         (widen_freducop): Add frm_opt_type template arg.
12611         (vfwredosum_frm_obj): New declaration.
12612         (BASE): Ditto.
12613         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12614         * config/riscv/riscv-vector-builtins-functions.def
12615         (vfwredosum_frm): New intrinsic function def.
12617 2023-08-17  Pan Li  <pan2.li@intel.com>
12619         * config/riscv/riscv-vector-builtins-bases.cc
12620         (vfredosum_frm_obj): New declaration.
12621         (BASE): Ditto.
12622         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12623         * config/riscv/riscv-vector-builtins-functions.def
12624         (vfredosum_frm): New intrinsic function def.
12626 2023-08-17  Pan Li  <pan2.li@intel.com>
12628         * config/riscv/riscv-vector-builtins-bases.cc
12629         (class freducop): Add frm_op_type template arg.
12630         (vfredusum_frm_obj): New declaration.
12631         (BASE): Ditto.
12632         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12633         * config/riscv/riscv-vector-builtins-functions.def
12634         (vfredusum_frm): New intrinsic function def.
12635         * config/riscv/riscv-vector-builtins-shapes.cc
12636         (struct reduc_alu_frm_def): New class for frm shape.
12637         (SHAPE): New declaration.
12638         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
12640 2023-08-17  Pan Li  <pan2.li@intel.com>
12642         * config/riscv/riscv-vector-builtins-bases.cc
12643         (class vfncvt_f): Add frm_op_type template arg.
12644         (vfncvt_f_frm_obj): New declaration.
12645         (BASE): Ditto.
12646         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12647         * config/riscv/riscv-vector-builtins-functions.def
12648         (vfncvt_f_frm): New intrinsic function def.
12650 2023-08-17  Pan Li  <pan2.li@intel.com>
12652         * config/riscv/riscv-vector-builtins-bases.cc
12653         (vfncvt_xu_frm_obj): New declaration.
12654         (BASE): Ditto.
12655         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12656         * config/riscv/riscv-vector-builtins-functions.def
12657         (vfncvt_xu_frm): New intrinsic function def.
12659 2023-08-17  Pan Li  <pan2.li@intel.com>
12661         * config/riscv/riscv-vector-builtins-bases.cc
12662         (class vfncvt_x): Add frm_op_type template arg.
12663         (BASE): New declaration.
12664         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12665         * config/riscv/riscv-vector-builtins-functions.def
12666         (vfncvt_x_frm): New intrinsic function def.
12667         * config/riscv/riscv-vector-builtins-shapes.cc
12668         (struct narrow_alu_frm_def): New shape function for frm.
12669         (SHAPE): New declaration.
12670         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
12672 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12674         * config/i386/avx512vldqintrin.h: Remove target attribute.
12675         * config/i386/i386-builtin.def (BDESC):
12676         Add OPTION_MASK_ISA2_AVX10_1.
12677         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
12678         (VFH_AVX512VLDQ_AVX10_1): Ditto.
12679         (VF1_AVX512VLDQ_AVX10_1): Ditto.
12680         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
12681         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
12682         (vec_pack<floatprefix>_float_<mode>): Change iterator to
12683         VI8_AVX512VLDQ_AVX10_1. Remove target check.
12684         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
12685         VF1_AVX512VLDQ_AVX10_1. Remove target check.
12686         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
12687         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
12688         (avx512vl_vextractf128<mode>): Change iterator to
12689         VI48F_256_DQVL_AVX10_1. Remove target check.
12690         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
12691         (vec_extract_hi_<mode>): Ditto.
12692         (avx512vl_vinsert<mode>): Ditto.
12693         (vec_set_lo_<mode><mask_name>): Ditto.
12694         (vec_set_hi_<mode><mask_name>): Ditto.
12695         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
12696         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
12697         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
12698         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
12699         * config/i386/subst.md (mask_avx512dq_condition): Add
12700         TARGET_AVX10_1.
12701         (mask_scalar_merge): Ditto.
12703 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12705         * config/i386/avx512vldqintrin.h: Remove target attribute.
12706         * config/i386/i386-builtin.def (BDESC):
12707         Add OPTION_MASK_ISA2_AVX10_1.
12708         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
12709         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
12710         (VI48_AVX512VLDQ_AVX10_1): Ditto.
12711         (VF2_AVX512VL): Remove.
12712         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
12713         Add TARGET_AVX10_1.
12714         (*<code><mode>3<mask_name>): Change isa attribute to
12715         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
12716         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
12717         to avx10_1_or_avx512vl.
12718         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
12719         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
12720         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
12721         Add TARGET_AVX10_1.
12722         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
12723         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
12724         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
12725         Add TARGET_AVX10_1.
12726         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
12727         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
12728         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
12729         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
12730         (float<floatunssuffix>v4div4sf2<mask_name>):
12731         Add TARGET_AVX10_1.
12732         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
12733         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
12734         (float<floatunssuffix>v2div2sf2): Ditto.
12735         (float<floatunssuffix>v2div2sf2_mask): Ditto.
12736         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
12737         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
12738         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
12739         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
12740         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
12741         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
12742         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
12743         Change when constraint is enabled.
12745 2023-08-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12747         PR target/111037
12748         * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
12749         (second_sew_less_than_first_sew_p): Fix bug.
12750         (first_sew_less_than_second_sew_p): Ditto.
12752 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12754         * config/i386/avx512vldqintrin.h: Remove target attribute.
12755         * config/i386/i386-builtin.def (BDESC):
12756         Add OPTION_MASK_ISA2_AVX10_1.
12757         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
12758         * config/i386/i386-expand.cc
12759         (ix86_check_builtin_isa_match): Ditto.
12760         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
12761         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
12762         and avx10_1_or_avx512vl.
12763         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
12764         (VF1_128_256VLDQ_AVX10_1): Ditto.
12765         (VI8_AVX512VLDQ_AVX10_1): Ditto.
12766         (<sse>_andnot<mode>3<mask_name>):
12767         Add TARGET_AVX10_1 and change isa attr from avx512dq to
12768         avx10_1_or_avx512dq.
12769         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
12770         avx512vl to avx10_1_or_avx512vl.
12771         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
12772         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
12773         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12774         Ditto.
12775         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
12776         Ditto.
12777         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
12778         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
12779         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
12780         Add TARGET_AVX10_1.
12781         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
12782         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
12783         Remove target check.
12784         (avx512dq_mul<mode>3<mask_name>): Ditto.
12785         (*avx512dq_mul<mode>3<mask_name>): Ditto.
12786         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
12787         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
12788         Remove target check.
12789         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
12790         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
12791         Remove target check.
12792         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
12793         (mask_avx512vl_condition): Ditto.
12794         (mask): Ditto.
12796 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12798         * common/config/i386/i386-common.cc
12799         (ix86_check_avx10_vector_width): New function to check isa_flags
12800         to emit a warning when there is a conflict in AVX10 options for
12801         vector width.
12802         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
12803         * config/i386/driver-i386.cc (host_detect_local_cpu):
12804         Do not append -mno-avx10-max-512bit for -march=native.
12806 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12808         * common/config/i386/i386-common.cc
12809         (ix86_check_avx10): New function to check isa_flags and
12810         isa_flags_explicit to emit warning when AVX10 is enabled
12811         by "-m" option.
12812         (ix86_check_avx512):  New function to check isa_flags and
12813         isa_flags_explicit to emit warning when AVX512 is enabled
12814         by "-m" option.
12815         (ix86_handle_option): Do not change the flags when warning
12816         is emitted.
12817         * config/i386/driver-i386.cc (host_detect_local_cpu):
12818         Do not append -mno-avx10.1 for -march=native.
12820 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
12822         * common/config/i386/cpuinfo.h (get_available_features):
12823         Add avx10_set and version and detect avx10.1.
12824         (cpu_indicator_init): Handle avx10.1-512.
12825         * common/config/i386/i386-common.cc
12826         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
12827         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
12828         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
12829         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
12830         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
12831         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
12832         -mavx10.1-512.
12833         * common/config/i386/i386-cpuinfo.h (enum processor_features):
12834         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
12835         FEATURE_AVX10_512BIT.
12836         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
12837         AVX10_512BIT, AVX10_1 and AVX10_1_512.
12838         * config/i386/constraints.md (Yk): Add AVX10_1.
12839         (Yv): Ditto.
12840         (k): Ditto.
12841         * config/i386/cpuid.h (bit_AVX10): New.
12842         (bit_AVX10_256): Ditto.
12843         (bit_AVX10_512): Ditto.
12844         * config/i386/i386-c.cc (ix86_target_macros_internal):
12845         Define AVX10_512BIT and AVX10_1.
12846         * config/i386/i386-isa.def
12847         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
12848         (AVX10_1): Add DEF_PTA(AVX10_1).
12849         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
12850         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
12851         and avx10.1-512.
12852         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
12853         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
12854         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
12855         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
12856         (ix86_conditional_register_usage): Ditto.
12857         (ix86_hard_regno_mode_ok): Ditto.
12858         (ix86_rtx_costs): Ditto.
12859         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
12860         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
12861         -mavx10.1-512.
12862         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
12863         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
12864         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
12865         and avx10.1-512.
12867 2023-08-17  Sergei Trofimovich  <siarheit@google.com>
12869         * flag-types.h (vrp_mode): Remove unused.
12871 2023-08-17  Yanzhang Wang  <yanzhang.wang@intel.com>
12873         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
12874         CONSTM1_RTX.
12876 2023-08-17  Andrew Pinski  <apinski@marvell.com>
12878         * internal-fn.def (COND_NOT): New internal function.
12879         * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
12880         to the lists.
12881         (`vec (a ? -1 : 0) ^ b`): New pattern to convert
12882         into conditional not.
12883         * optabs.def (cond_one_cmpl): New optab.
12884         (cond_len_one_cmpl): Likewise.
12886 2023-08-16  Surya Kumari Jangala  <jskumari@linux.ibm.com>
12888         PR rtl-optimization/110254
12889         * ira-color.cc (improve_allocation): Update array
12890         allocated_hard_reg_p.
12892 2023-08-16  Vladimir N. Makarov  <vmakarov@redhat.com>
12894         * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
12895         * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
12896         (lra_update_fp2sp_elimination): Ditto.
12897         (update_reg_eliminate): Adjust spill_pseudos call.
12898         * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
12899         in lra_update_fp2sp_elimination.
12901 2023-08-16  Richard Ball  <richard.ball@arm.com>
12903         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
12904         * config/aarch64/aarch64-tune.md: Regenerate.
12905         * doc/invoke.texi: Document Cortex-A720 CPU.
12907 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
12909         * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
12910         Implement expander.
12911         (<u>avg<v_double_trunc>3_ceil): Ditto.
12912         * config/riscv/vector-iterators.md (ashiftrt): New iterator.
12913         (ASHIFTRT): Ditto.
12915 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
12917         * internal-fn.cc (vec_extract_direct): Change type argument
12918         numbers.
12919         (expand_vec_extract_optab_fn): Call convert_optab_fn.
12920         (direct_vec_extract_optab_supported_p): Use
12921         convert_optab_supported_p.
12923 2023-08-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12924             Richard Sandiford  <richard.sandiford@arm.com>
12926         * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
12927         (valid_mask_for_fold_vec_perm_cst_p): New function.
12928         (fold_vec_perm_cst): Likewise.
12929         (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
12930         (test_fold_vec_perm_cst): New namespace.
12931         (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
12932         (test_fold_vec_perm_cst::validate_res): Likewise.
12933         (test_fold_vec_perm_cst::validate_res_vls): Likewise.
12934         (test_fold_vec_perm_cst::builder_push_elems): Likewise.
12935         (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
12936         (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
12937         (test_fold_vec_perm_cst::test_all_nunits): Likewise.
12938         (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
12939         (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
12940         (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
12941         (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
12942         (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
12943         (test_fold_vec_perm_cst::test): Likewise.
12944         (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
12946 2023-08-16  Pan Li  <pan2.li@intel.com>
12948         * config/riscv/riscv-vector-builtins-bases.cc
12949         (BASE): New declaration.
12950         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12951         * config/riscv/riscv-vector-builtins-functions.def
12952         (vfwcvt_xu_frm): New intrinsic function def.
12954 2023-08-16  Pan Li  <pan2.li@intel.com>
12956         * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
12958 2023-08-16  Pan Li  <pan2.li@intel.com>
12960         * config/riscv/riscv-vector-builtins-bases.cc
12961         (BASE): New declaration.
12962         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12963         * config/riscv/riscv-vector-builtins-functions.def
12964         (vfwcvt_x_frm): New intrinsic function def.
12966 2023-08-16  Pan Li  <pan2.li@intel.com>
12968         * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
12969         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12970         * config/riscv/riscv-vector-builtins-functions.def
12971         (vfcvt_f_frm): New intrinsic function def.
12973 2023-08-16  Pan Li  <pan2.li@intel.com>
12975         * config/riscv/riscv-vector-builtins-bases.cc
12976         (BASE): New declaration.
12977         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12978         * config/riscv/riscv-vector-builtins-functions.def
12979         (vfcvt_xu_frm): New intrinsic function def..
12981 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
12983         PR target/110429
12984         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
12985         extract when the element is 7 on BE while 8 on LE for byte or 3 on
12986         BE while 4 on LE for halfword.
12988 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
12990         PR target/106769
12991         * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
12992         for V8HI and V16QI.
12993         (vsx_extract_v4si): New expand for V4SI extraction.
12994         (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
12995         word 1 from BE order.
12996         (*mfvsrwz): New insn pattern for mfvsrwz.
12997         (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
12998         word 1 from BE order.
12999         (*vsx_extract_si): Remove.
13000         (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
13001         3 from BE order.
13003 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13005         * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
13006         New pattern.
13007         (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
13008         * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
13009         * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
13010         (expand_lanes_load_store): New function.
13011         * config/riscv/vector-iterators.md: New iterator.
13013 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13015         * internal-fn.cc (internal_load_fn_p): Apply
13016         MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
13017         (internal_store_fn_p): Ditto.
13018         (internal_fn_len_index): Ditto.
13019         (internal_fn_mask_index): Ditto.
13020         (internal_fn_stored_value_index): Ditto.
13021         * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
13022         (vect_load_lanes_supported): Ditto.
13023         * tree-vect-loop.cc: Ditto.
13024         * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
13025         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
13026         (get_group_load_store_type): Ditto.
13027         (vectorizable_store): Ditto.
13028         (vectorizable_load): Ditto.
13029         * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
13030         (vect_load_lanes_supported): Ditto.
13032 2023-08-16  Pan Li  <pan2.li@intel.com>
13034         * config/riscv/riscv-vector-builtins-bases.cc
13035         (enum frm_op_type): New type for frm.
13036         (BASE): New declaration.
13037         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13038         * config/riscv/riscv-vector-builtins-functions.def
13039         (vfcvt_x_frm): New intrinsic function def.
13041 2023-08-16  liuhongt  <hongtao.liu@intel.com>
13043         * config/i386/i386-builtins.cc
13044         (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
13045         * config/i386/i386-options.cc (parse_mtune_ctrl_str):
13046         Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
13047         8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
13048         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
13049         for use_scatter_8parts
13050         * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
13051         (TARGET_USE_GATHER_8PARTS): .. this.
13052         (TARGET_USE_SCATTER): Rename to ..
13053         (TARGET_USE_SCATTER_8PARTS): .. this.
13054         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
13055         (X86_TUNE_USE_GATHER_8PARTS): .. this.
13056         (X86_TUNE_USE_SCATTER): Rename to
13057         (X86_TUNE_USE_SCATTER_8PARTS): .. this.
13058         * config/i386/i386.opt: Add new options mgather, mscatter.
13060 2023-08-16  liuhongt  <hongtao.liu@intel.com>
13062         * config/i386/i386-options.cc (m_GDS): New macro.
13063         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
13064         enable for m_GDS.
13065         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
13066         (X86_TUNE_USE_GATHER): Ditto.
13068 2023-08-16  liuhongt  <hongtao.liu@intel.com>
13070         * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
13071         vmovsd when moving DFmode between SSE_REGS.
13072         (movhi_internal): Generate vmovdqa instead of vmovsh when
13073         moving HImode between SSE_REGS.
13074         (mov<mode>_internal): Use vmovaps instead of vmovsh when
13075         moving HF/BFmode between SSE_REGS.
13077 2023-08-15  David Faust  <david.faust@oracle.com>
13079         * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
13081 2023-08-15  David Faust  <david.faust@oracle.com>
13083         PR target/111029
13084         * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
13085         for any mode 32-bits or smaller, not just SImode.
13087 2023-08-15  Martin Jambor  <mjambor@suse.cz>
13089         PR ipa/68930
13090         PR ipa/92497
13091         * ipa-prop.h (ipcp_get_aggregate_const): Declare.
13092         * ipa-prop.cc (ipcp_get_aggregate_const): New function.
13093         (ipcp_transform_function): Do not deallocate transformation info.
13094         * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
13095         ipa-prop.h.
13096         (vn_reference_lookup_2): When hitting default-def vuse, query
13097         IPA-CP transformation info for any known constants.
13099 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
13100             Thomas Schwinge  <thomas@codesourcery.com>
13102         * gimplify.cc (oacc_region_type_name): New function.
13103         (oacc_default_clause): If no 'default' clause appears on this
13104         compute construct, see if one appears on a lexically containing
13105         'data' construct.
13106         (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
13107         ctx->oacc_default_clause_ctx to current context.
13109 2023-08-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13111         PR target/110989
13112         * config/riscv/predicates.md: Fix predicate.
13114 2023-08-15  Richard Biener  <rguenther@suse.de>
13116         * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
13117         slp_inst_kind_ctor handling.
13118         (vect_analyze_slp): Simplify.
13119         (vect_build_slp_instance): Dump when we analyze a CTOR.
13120         (vect_slp_check_for_constructors): Rename to ...
13121         (vect_slp_check_for_roots): ... this.  Register a
13122         slp_root for CONSTRUCTORs instead of shoving them to
13123         the set of grouped stores.
13124         (vect_slp_analyze_bb_1): Adjust.
13126 2023-08-15  Richard Biener  <rguenther@suse.de>
13128         * tree-vectorizer.h (_slp_instance::remain_stmts): Change
13129         to ...
13130         (_slp_instance::remain_defs): ... this.
13131         (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
13132         (SLP_INSTANCE_REMAIN_DEFS): ... this.
13133         (slp_root::remain): New.
13134         (slp_root::slp_root): Adjust.
13135         * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
13136         (vect_build_slp_instance): Get extra remain parameter,
13137         adjust former handling of a cut off stmt.
13138         (vect_analyze_slp_instance): Adjust.
13139         (vect_analyze_slp): Likewise.
13140         (_bb_vec_info::~_bb_vec_info): Likewise.
13141         (vectorizable_bb_reduc_epilogue): Dump something if we fail.
13142         (vect_slp_check_for_constructors): Handle non-internal
13143         defs as remain defs of a reduction.
13144         (vectorize_slp_instance_root_stmt): Adjust.
13146 2023-08-15  Richard Biener  <rguenther@suse.de>
13148         * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
13149         (canonicalize_loop_induction_variables): Use find_loop_location.
13151 2023-08-15  Hans-Peter Nilsson  <hp@axis.com>
13153         PR bootstrap/111021
13154         * config/cris/cris-protos.h: Revert recent change.
13155         * config/cris/cris.cc (cris_legitimate_address_p): Remove
13156         code_helper unused parameter.
13157         (cris_legitimate_address_p_hook): New wrapper function.
13158         (TARGET_LEGITIMATE_ADDRESS_P): Change to
13159         cris_legitimate_address_p_hook.
13161 2023-08-15  Richard Biener  <rguenther@suse.de>
13163         PR tree-optimization/110963
13164         * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
13165         a PHI node when the expression is available on all edges
13166         and we insert at most one copy from a constant.
13168 2023-08-15  Richard Biener  <rguenther@suse.de>
13170         PR tree-optimization/110991
13171         * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
13172         VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
13173         that will end up constant.
13175 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
13177         PR bootstrap/111021
13178         * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
13180 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
13182         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
13183         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
13184         and update the final nest accordingly.
13186 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
13188         * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
13189         on VMAT_INVARIANT.
13191 2023-08-15  Pan Li  <pan2.li@intel.com>
13193         * mode-switching.cc (create_pre_exit): Add SET insn check.
13195 2023-08-15  Pan Li  <pan2.li@intel.com>
13197         * config/riscv/riscv-vector-builtins-bases.cc
13198         (class vfrec7_frm): New class for frm.
13199         (vfrec7_frm_obj): New declaration.
13200         (BASE): Ditto.
13201         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13202         * config/riscv/riscv-vector-builtins-functions.def
13203         (vfrec7_frm): New intrinsic function definition.
13204         * config/riscv/vector-iterators.md
13205         (VFMISC): Remove VFREC7.
13206         (misc_op): Ditto.
13207         (float_insn_type): Ditto.
13208         (VFMISC_FRM): New int iterator.
13209         (misc_frm_op): New op for frm.
13210         (float_frm_insn_type): New type for frm.
13211         * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
13212         New pattern for misc frm.
13214 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
13216         * lra-constraints.cc (curr_insn_transform): Process output stack
13217         pointer reloads before emitting reload insns.
13219 2023-08-14  benjamin priour  <vultkayn@gcc.gnu.org>
13221         PR analyzer/110543
13222         * doc/invoke.texi: Add documentation of
13223         fanalyzer-show-events-in-system-headers
13225 2023-08-14  Jan Hubicka  <jh@suse.cz>
13227         PR gcov-profile/110988
13228         * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
13230 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
13232         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
13233         Enable compressed builtins when ZC* extensions enabled.
13234         * config/riscv/riscv-shorten-memrefs.cc:
13235         Enable shorten_memrefs pass when ZC* extensions enabled.
13236         * config/riscv/riscv.cc (riscv_compressed_reg_p):
13237         Enable compressible registers when ZC* extensions enabled.
13238         (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
13239         (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
13240         (riscv_first_stack_step): Allow compression of the register saves
13241         without adding extra instructions.
13242         * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
13243         to 16 bits when ZC* extensions enabled.
13245 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
13247         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
13248         * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
13249         (MASK_ZCB): Ditto.
13250         (MASK_ZCE): Ditto.
13251         (MASK_ZCF): Ditto.
13252         (MASK_ZCD): Ditto.
13253         (MASK_ZCMP): Ditto.
13254         (MASK_ZCMT): Ditto.
13255         (TARGET_ZCA): New target.
13256         (TARGET_ZCB): Ditto.
13257         (TARGET_ZCE): Ditto.
13258         (TARGET_ZCF): Ditto.
13259         (TARGET_ZCD): Ditto.
13260         (TARGET_ZCMP): Ditto.
13261         (TARGET_ZCMT): Ditto.
13262         * config/riscv/riscv.opt: New target variable.
13264 2023-08-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13266         Revert:
13267         2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
13269         * genrecog.cc (print_nonbool_test): Fix type error of
13270         switch (SUBREG_BYTE (op))'.
13272 2023-08-14  Richard Biener  <rguenther@suse.de>
13274         * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
13276 2023-08-14  Pan Li  <pan2.li@intel.com>
13278         * config/riscv/riscv-vector-builtins-bases.cc
13279         (class unop_frm): New class for frm.
13280         (vfsqrt_frm_obj): New declaration.
13281         (BASE): Ditto.
13282         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13283         * config/riscv/riscv-vector-builtins-functions.def
13284         (vfsqrt_frm): New intrinsic function definition.
13286 2023-08-14  Pan Li  <pan2.li@intel.com>
13288         * config/riscv/riscv-vector-builtins-bases.cc
13289         (class vfwnmsac_frm): New class for frm.
13290         (vfwnmsac_frm_obj): New declaration.
13291         (BASE): Ditto.
13292         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13293         * config/riscv/riscv-vector-builtins-functions.def
13294         (vfwnmsac_frm): New intrinsic function definition.
13296 2023-08-14  Pan Li  <pan2.li@intel.com>
13298         * config/riscv/riscv-vector-builtins-bases.cc
13299         (class vfwmsac_frm): New class for frm.
13300         (vfwmsac_frm_obj): New declaration.
13301         (BASE): Ditto.
13302         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13303         * config/riscv/riscv-vector-builtins-functions.def
13304         (vfwmsac_frm): New intrinsic function definition.
13306 2023-08-14  Pan Li  <pan2.li@intel.com>
13308         * config/riscv/riscv-vector-builtins-bases.cc
13309         (class vfwnmacc_frm): New class for frm.
13310         (vfwnmacc_frm_obj): New declaration.
13311         (BASE): Ditto.
13312         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13313         * config/riscv/riscv-vector-builtins-functions.def
13314         (vfwnmacc_frm): New intrinsic function definition.
13316 2023-08-14  Cui, Lili  <lili.cui@intel.com>
13318         * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
13319         to Raptorlake.
13321 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
13323         * config/mmix/predicates.md (mmix_address_operand): Use
13324         lra_in_progress, not reload_in_progress.
13326 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
13328         * config/mmix/mmix.cc: Re-enable LRA.
13330 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
13332         * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
13333         when lra_in_progress.
13335 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
13337         * config/mmix/mmix.cc: Disable LRA for MMIX.
13339 2023-08-14  Pan Li  <pan2.li@intel.com>
13341         * config/riscv/riscv-vector-builtins-bases.cc
13342         (class vfwmacc_frm): New class for vfwmacc frm.
13343         (vfwmacc_frm_obj): New declaration.
13344         (BASE): Ditto.
13345         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13346         * config/riscv/riscv-vector-builtins-functions.def
13347         (vfwmacc_frm): Function definition for vfwmacc.
13348         * config/riscv/riscv-vector-builtins.cc
13349         (function_expander::use_widen_ternop_insn): Add frm support.
13351 2023-08-14  Pan Li  <pan2.li@intel.com>
13353         * config/riscv/riscv-vector-builtins-bases.cc
13354         (class vfnmsub_frm): New class for vfnmsub frm.
13355         (vfnmsub_frm): New declaration.
13356         (BASE): Ditto.
13357         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13358         * config/riscv/riscv-vector-builtins-functions.def
13359         (vfnmsub_frm): New function declaration.
13361 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
13363         * lra-constraints.cc (curr_insn_transform): Set done_p up and
13364         check it on true after processing output stack pointer reload.
13366 2023-08-12  Jakub Jelinek  <jakub@redhat.com>
13368         * Makefile.in (USER_H): Add stdckdint.h.
13369         * ginclude/stdckdint.h: New file.
13371 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13373         PR target/110994
13374         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
13376 2023-08-12  Patrick Palka  <ppalka@redhat.com>
13378         * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
13379         Delimit output with braces.
13381 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13383         PR target/110985
13384         * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
13386 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13388         * config/riscv/autovec.md: Add VLS CONST_VECTOR.
13389         * config/riscv/riscv.cc (riscv_const_insns): Ditto.
13390         * config/riscv/vector.md: Ditto.
13392 2023-08-11  David Malcolm  <dmalcolm@redhat.com>
13394         PR analyzer/105899
13395         * doc/analyzer.texi (__analyzer_get_strlen): New.
13396         * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
13398 2023-08-11  Jeff Law  <jlaw@ventanamicro.com>
13400         * config/rx/rx.md (subdi3): Fix test for borrow.
13402 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13404         PR middle-end/110989
13405         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
13406         (vectorizable_load): Ditto.
13408 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
13410         * config/bpf/bpf.md (allocate_stack): Define.
13411         * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
13412         stack pointer register.
13413         (FIXED_REGISTERS): Adjust accordingly.
13414         (CALL_USED_REGISTERS): Likewise.
13415         (REG_CLASS_CONTENTS): Likewise.
13416         (REGISTER_NAMES): Likewise.
13417         * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
13418         space for callee-saved registers.
13419         (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
13420         (bpf_expand_epilogue): Do not restore callee-saved registers in
13421         xbpf.
13423 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
13425         * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
13426         about too many arguments if function is always inlined.
13428 2023-08-11  Patrick Palka  <ppalka@redhat.com>
13430         * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
13431         Don't call component_ref_field_offset if the RHS isn't a decl.
13433 2023-08-11  John David Anglin  <danglin@gcc.gnu.org>
13435         PR bootstrap/110646
13436         * gensupport.cc(class conlist): Use strtol instead of std::stoi.
13438 2023-08-11  Vladimir N. Makarov  <vmakarov@redhat.com>
13440         * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
13441         (process_alt_operands): Set the flag.
13442         (curr_insn_transform): Modify stack pointer offsets if output
13443         stack pointer reload is generated.
13445 2023-08-11  Joseph Myers  <joseph@codesourcery.com>
13447         * configure: Regenerate.
13449 2023-08-11  Richard Biener  <rguenther@suse.de>
13451         PR tree-optimization/110979
13452         * tree-vect-loop.cc (vectorizable_reduction): For
13453         FOLD_LEFT_REDUCTION without target support make sure
13454         we don't need to honor signed zeros and sign dependent rounding.
13456 2023-08-11  Richard Biener  <rguenther@suse.de>
13458         * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
13459         subgraph entries.  Dump the used vector size based on the
13460         SLP subgraph entry root vector type.
13462 2023-08-11  Pan Li  <pan2.li@intel.com>
13464         * config/riscv/riscv-vector-builtins-bases.cc
13465         (class vfmsub_frm): New class for vfmsub frm.
13466         (vfmsub_frm): New declaration.
13467         (BASE): Ditto.
13468         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13469         * config/riscv/riscv-vector-builtins-functions.def
13470         (vfmsub_frm): New function declaration.
13472 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13474         * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
13475         * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
13476         (expand_partial_store_optab_fn): Ditto.
13477         * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
13478         (MASK_LEN_STORE_LANES): Ditto.
13479         * optabs.def (OPTAB_CD): Ditto.
13481 2023-08-11  Pan Li  <pan2.li@intel.com>
13483         * config/riscv/riscv-vector-builtins-bases.cc
13484         (class vfnmadd_frm): New class for vfnmadd frm.
13485         (vfnmadd_frm): New declaration.
13486         (BASE): Ditto.
13487         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13488         * config/riscv/riscv-vector-builtins-functions.def
13489         (vfnmadd_frm): New function declaration.
13491 2023-08-11  Drew Ross  <drross@redhat.com>
13492             Jakub Jelinek  <jakub@redhat.com>
13494         PR tree-optimization/109938
13495         * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
13497 2023-08-11  Pan Li  <pan2.li@intel.com>
13499         * config/riscv/riscv-vector-builtins-bases.cc
13500         (class vfmadd_frm): New class for vfmadd frm.
13501         (vfmadd_frm_obj): New declaration.
13502         (BASE): Ditto.
13503         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13504         * config/riscv/riscv-vector-builtins-functions.def
13505         (vfmadd_frm): New function definition.
13507 2023-08-11  Pan Li  <pan2.li@intel.com>
13509         * config/riscv/riscv-vector-builtins-bases.cc
13510         (class vfnmsac_frm): New class for vfnmsac frm.
13511         (vfnmsac_frm_obj): New declaration.
13512         (BASE): Ditto.
13513         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13514         * config/riscv/riscv-vector-builtins-functions.def
13515         (vfnmsac_frm): New function definition.
13517 2023-08-11  Jakub Jelinek  <jakub@redhat.com>
13519         * doc/extend.texi (Typeof): Document typeof_unqual
13520         and __typeof_unqual__.
13522 2023-08-11  Andrew Pinski  <apinski@marvell.com>
13524         PR tree-optimization/110954
13525         * generic-match-head.cc (bitwise_inverted_equal_p): Add
13526         wascmp argument and set it accordingly.
13527         * gimple-match-head.cc (bitwise_inverted_equal_p): Add
13528         wascmp argument to the macro.
13529         (gimple_bitwise_inverted_equal_p): Add
13530         wascmp argument and set it accordingly.
13531         * match.pd (`a & ~a`, `a ^| ~a`): Update call
13532         to bitwise_inverted_equal_p and handle wascmp case.
13533         (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
13534         call to bitwise_inverted_equal_p and check to see
13535         if was !wascmp or if precision was 1.
13537 2023-08-11  Martin Uecker  <uecker@tugraz.at>
13539         PR c/84510
13540         * doc/invoke.texi: Update.
13542 2023-08-11  Pan Li  <pan2.li@intel.com>
13544         * config/riscv/riscv-vector-builtins-bases.cc
13545         (class vfmsac_frm): New class for vfmsac frm.
13546         (vfmsac_frm_obj): New declaration.
13547         (BASE): Ditto.
13548         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13549         * config/riscv/riscv-vector-builtins-functions.def
13550         (vfmsac_frm): New function definition
13552 2023-08-10  Jan Hubicka  <jh@suse.cz>
13554         PR middle-end/110923
13555         * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
13557 2023-08-10  Patrick O'Neill  <patrick@rivosinc.com>
13559         * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
13560         dependent on 'a' extension.
13561         * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
13562         (TARGET_ZTSO): New target.
13563         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
13564         Ztso case.
13565         (riscv_memmodel_needs_amo_release): Add Ztso case.
13566         (riscv_print_operand): Add Ztso case for LR/SC annotations.
13567         * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
13568         * config/riscv/riscv.opt: Add Ztso target variable.
13569         * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
13570         Ztso specific insn.
13571         (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
13572         (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
13573         * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
13574         specific load/store/fence mappings.
13575         * config/riscv/sync-ztso.md: New file. Seperate out Ztso
13576         specific load/store/fence mappings.
13578 2023-08-10  Jan Hubicka  <jh@suse.cz>
13580         * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
13581         0 iteration count.
13583 2023-08-10  Jan Hubicka  <jh@suse.cz>
13585         * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
13587 2023-08-10  Jan Hubicka  <jh@suse.cz>
13589         * profile-count.cc (profile_count::differs_from_p): Fix overflow and
13590         handling of undefined values.
13592 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
13594         PR c/102989
13595         * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
13596         return virtual phis and return NULL if there is a virtual phi
13597         where the arguments from E0 and E1 edges aren't equal.
13599 2023-08-10  Richard Biener  <rguenther@suse.de>
13601         * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
13602         VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
13604 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13606         PR target/110962
13607         * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
13609 2023-08-10  Pan Li  <pan2.li@intel.com>
13611         * config/riscv/riscv-vector-builtins-bases.cc
13612         (class vfnmacc_frm): New class for vfnmacc.
13613         (vfnmacc_frm_obj): New declaration.
13614         (BASE): Ditto.
13615         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13616         * config/riscv/riscv-vector-builtins-functions.def
13617         (vfnmacc_frm): New function definition.
13619 2023-08-10  Pan Li  <pan2.li@intel.com>
13621         * config/riscv/riscv-vector-builtins-bases.cc
13622         (class vfmacc_frm): New class for vfmacc frm.
13623         (vfmacc_frm_obj): New declaration.
13624         (BASE): Ditto.
13625         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13626         * config/riscv/riscv-vector-builtins-functions.def
13627         (vfmacc_frm): New function definition.
13629 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13631         PR target/110964
13632         * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
13634 2023-08-10  Richard Biener  <rguenther@suse.de>
13636         * tree-vectorizer.h (vectorizable_live_operation): Remove
13637         gimple_stmt_iterator * argument.
13638         * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
13639         Adjust plumbing around vect_get_loop_mask.
13640         (vect_analyze_loop_operations): Adjust.
13641         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
13642         (vect_bb_slp_mark_live_stmts): Likewise.
13643         (vect_schedule_slp_node): Likewise.
13644         * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
13645         Remove gimple_stmt_iterator * argument.
13646         (vect_transform_stmt): Adjust.
13648 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13650         * config/riscv/vector-iterators.md: Add missing modes.
13652 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
13654         PR c/102989
13655         * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
13656         is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
13658 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
13660         PR c/102989
13661         * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
13662         EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
13663         times.
13665 2023-08-10  liuhongt  <hongtao.liu@intel.com>
13667         PR target/110832
13668         * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
13669         sanitize upper part of V4HFmode register with
13670         -fno-trapping-math.
13671         (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
13672         (<divv4hf3): Ditto.
13673         (<insn>v2hf3): Ditto.
13674         (divv2hf3): Ditto.
13675         (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
13676         register with -fno-trapping-math.
13678 2023-08-10  Pan Li  <pan2.li@intel.com>
13679             Kito Cheng  <kito.cheng@sifive.com>
13681         * config/riscv/riscv-protos.h
13682         (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
13683         (get_frm_mode): New declaration.
13684         * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
13685         * config/riscv/riscv-vector-builtins.cc
13686         (function_expander::use_ternop_insn): Take care of frm reg.
13687         * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
13688         (riscv_emit_frm_mode_set): Ditto.
13689         (riscv_emit_mode_set): Ditto.
13690         (riscv_frm_adjust_mode_after_call): Ditto.
13691         (riscv_frm_mode_needed): Ditto.
13692         (riscv_frm_mode_after): Ditto.
13693         (riscv_mode_entry): Ditto.
13694         (riscv_mode_exit): Ditto.
13695         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
13696         * config/riscv/vector.md
13697         (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
13698         (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
13700 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13702         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
13703         incorrect anticipate info.
13705 2023-08-09  Tsukasa OI  <research_trasio@irq.a4lg.com>
13707         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
13708         Remove 'Zve32d' from the version list.
13710 2023-08-09  Jin Ma  <jinma@linux.alibaba.com>
13712         * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
13713         (TARGET_SCHED_VARIABLE_ISSUE): New macro.
13714         Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
13715         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
13717 2023-08-09  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
13719         * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
13720         (mem_shadd_or_shadd_rtx_p): New function.
13722 2023-08-09  Andrew Pinski  <apinski@marvell.com>
13724         PR tree-optimization/110937
13725         PR tree-optimization/100798
13726         * match.pd (`a ? ~b : b`): Handle this
13727         case.
13729 2023-08-09  Uros Bizjak  <ubizjak@gmail.com>
13731         * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
13733 2023-08-09  Richard Ball  <richard.ball@arm.com>
13735         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
13736         * config/aarch64/aarch64-tune.md: Regenerate.
13737         * doc/invoke.texi: Document Cortex-A520 CPU.
13739 2023-08-09  Carl Love  <cel@us.ibm.com>
13741         * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
13742         Move definitions to Altivec stanza.
13743         * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
13744         define_expand.
13746 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13748         PR target/110950
13749         * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
13750         stepped vector support.
13752 2023-08-09  liuhongt  <hongtao.liu@intel.com>
13754         * common/config/i386/cpuinfo.h (get_available_features):
13755         Rename local variable subleaf_level to max_subleaf_level.
13757 2023-08-09  Richard Biener  <rguenther@suse.de>
13759         PR rtl-optimization/110587
13760         * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
13762 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
13764         PR tree-optimization/110248
13765         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
13766         the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
13767         legitimate when outer code is PLUS.
13769 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
13771         PR tree-optimization/110248
13772         * recog.cc (memory_address_addr_space_p): Add one more argument ch of
13773         type code_helper and pass it to targetm.addr_space.legitimate_address_p
13774         instead of ERROR_MARK.
13775         (offsettable_address_addr_space_p): Update one function pointer with
13776         one more argument of type code_helper as its assignees
13777         memory_address_addr_space_p and strict_memory_address_addr_space_p
13778         have been adjusted, and adjust some call sites with ERROR_MARK.
13779         * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
13780         (memory_address_addr_space_p): Adjust with one more unnamed argument
13781         of type code_helper with default ERROR_MARK.
13782         (strict_memory_address_addr_space_p): Likewise.
13783         * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
13784         argument of type code_helper.
13785         * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
13786         type code_helper and pass it to memory_address_addr_space_p.
13787         * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
13788         one more unnamed argument of type code_helper with default value
13789         ERROR_MARK.
13790         * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
13791         by default, change it with ifn code for USE_PTR_ADDRESS type use, and
13792         pass it to all valid_mem_ref_p calls.
13794 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
13796         PR tree-optimization/110248
13797         * coretypes.h (class code_helper): Add forward declaration.
13798         * doc/tm.texi: Regenerate.
13799         * lra-constraints.cc (valid_address_p): Call target hook
13800         targetm.addr_space.legitimate_address_p with an extra parameter
13801         ERROR_MARK as its prototype changes.
13802         * recog.cc (memory_address_addr_space_p): Likewise.
13803         * reload.cc (strict_memory_address_addr_space_p): Likewise.
13804         * target.def (legitimate_address_p, addr_space.legitimate_address_p):
13805         Extend with one more argument of type code_helper, update the
13806         documentation accordingly.
13807         * targhooks.cc (default_legitimate_address_p): Adjust for the
13808         new code_helper argument.
13809         (default_addr_space_legitimate_address_p): Likewise.
13810         * targhooks.h (default_legitimate_address_p): Likewise.
13811         (default_addr_space_legitimate_address_p): Likewise.
13812         * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
13813         with extra unnamed code_helper argument with default ERROR_MARK.
13814         * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
13815         * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
13816         * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
13817         (tree.h): New include for tree_code ERROR_MARK.
13818         * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
13819         unnamed code_helper argument with default ERROR_MARK.
13820         * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
13821         * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
13822         * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
13823         * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
13824         * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
13825         (tree.h): New include for tree_code ERROR_MARK.
13826         * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
13827         unnamed code_helper argument with default ERROR_MARK.
13828         * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
13829         * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
13830         Likewise.
13831         * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
13832         * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
13833         * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
13834         * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
13835         * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
13836         * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
13837         * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
13838         * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
13839         * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
13840         Likewise.
13841         * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
13842         (m32c_addr_space_legitimate_address_p): Likewise.
13843         * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
13844         * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
13845         * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
13846         * config/microblaze/microblaze-protos.h (tree.h): New include for
13847         tree_code ERROR_MARK.
13848         (microblaze_legitimate_address_p): Adjust with extra unnamed
13849         code_helper argument with default ERROR_MARK.
13850         * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
13851         Likewise.
13852         * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
13853         * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
13854         * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
13855         * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
13856         * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
13857         (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
13858         argument with default ERROR_MARK and adjust the call to function
13859         msp430_legitimate_address_p.
13860         * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
13861         unnamed code_helper argument with default ERROR_MARK.
13862         * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
13863         * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
13864         * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
13865         * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
13866         * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
13867         * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
13868         * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
13869         * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
13870         (tree.h): New include for tree_code ERROR_MARK.
13871         * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
13872         extra unnamed code_helper argument with default ERROR_MARK.
13873         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
13874         (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
13875         argument and adjust the call to function rs6000_legitimate_address_p.
13876         * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
13877         unnamed code_helper argument with default ERROR_MARK.
13878         * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
13879         * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
13880         * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
13881         * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
13882         * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
13883         * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
13884         * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
13885         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
13886         Likewise.
13887         (tree.h): New include for tree_code ERROR_MARK.
13888         * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
13889         Adjust with extra unnamed code_helper argument with default
13890         ERROR_MARK.
13892 2023-08-09  liuhongt  <hongtao.liu@intel.com>
13894         * common/config/i386/cpuinfo.h (get_available_features): Check
13895         EAX for valid subleaf before use CPUID.
13897 2023-08-08  Jeff Law  <jlaw@ventanamicro.com>
13899         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
13900         for the temporary when canonicalizing the condition.
13902 2023-08-08  Cupertino Miranda  <cupertino.miranda@oracle.com>
13904         * config/bpf/core-builtins.cc: Cleaned include headers.
13905         (struct cr_builtins): Added GTY.
13906         (cr_builtins_ref): Created.
13907         (builtins_data) Changed to GC root.
13908         (allocate_builtin_data): Changed.
13909         Included gt-core-builtins.h.
13910         * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
13911         (bpf_core_extra_ref): Created.
13912         (bpf_comment_info): Changed to GC root.
13913         (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
13915 2023-08-08  Uros Bizjak  <ubizjak@gmail.com>
13917         PR target/110832
13918         * config/i386/i386.opt (mpartial-vector-fp-math): New option.
13919         * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
13920         upper part of V2SFmode register with -fno-trapping-math.
13921         (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
13922         (divv2sf3): Ditto.
13923         (<smaxmin:code>v2sf3): Ditto.
13924         (sqrtv2sf2): Ditto.
13925         (*mmx_haddv2sf3_low): Ditto.
13926         (*mmx_hsubv2sf3_low): Ditto.
13927         (vec_addsubv2sf3): Ditto.
13928         (vec_cmpv2sfv2si): Ditto.
13929         (vcond<V2FI:mode>v2sf): Ditto.
13930         (fmav2sf4): Ditto.
13931         (fmsv2sf4): Ditto.
13932         (fnmav2sf4): Ditto.
13933         (fnmsv2sf4): Ditto.
13934         (fix_truncv2sfv2si2): Ditto.
13935         (fixuns_truncv2sfv2si2): Ditto.
13936         (floatv2siv2sf2): Ditto.
13937         (floatunsv2siv2sf2): Ditto.
13938         (nearbyintv2sf2): Ditto.
13939         (rintv2sf2): Ditto.
13940         (lrintv2sfv2si2): Ditto.
13941         (ceilv2sf2): Ditto.
13942         (lceilv2sfv2si2): Ditto.
13943         (floorv2sf2): Ditto.
13944         (lfloorv2sfv2si2): Ditto.
13945         (btruncv2sf2): Ditto.
13946         (roundv2sf2): Ditto.
13947         (lroundv2sfv2si2): Ditto.
13948         * doc/invoke.texi (x86 Options): Document
13949         -mpartial-vector-fp-math option.
13951 2023-08-08  Andrew Pinski  <apinski@marvell.com>
13953         PR tree-optimization/103281
13954         PR tree-optimization/28794
13955         * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
13956         majority to ...
13957         (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
13958         (simplify_using_ranges::simplify_casted_cond): Rename to ...
13959         (simplify_using_ranges::simplify_casted_compare): This
13960         and change arguments to take op0 and op1.
13961         (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
13962         (simplify_using_ranges::simplify): For tcc_comparison assignments call
13963         simplify_compare_assign_using_ranges_1.
13964         * vr-values.h (simplify_using_ranges): Add
13965         new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
13966         Rename simplify_casted_cond and simplify_casted_compare and
13967         update argument types.
13969 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
13971         * genmatch.cc: Log line numbers indirectly.
13973 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
13975         * genmatch.cc: Make sinfo map ordered.
13976         * Makefile.in: Require the ordered map header for genmatch.o.
13978 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
13980         * ordered-hash-map.h: Add get_or_insert.
13981         * ordered-hash-map-tests.cc: Use get_or_insert in tests.
13983 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13985         * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
13986         (cond_len_<optab><mode>): Ditto.
13987         (cond_fma<mode>): Ditto.
13988         (cond_len_fma<mode>): Ditto.
13989         (cond_fnma<mode>): Ditto.
13990         (cond_len_fnma<mode>): Ditto.
13991         (cond_fms<mode>): Ditto.
13992         (cond_len_fms<mode>): Ditto.
13993         (cond_fnms<mode>): Ditto.
13994         (cond_len_fnms<mode>): Ditto.
13995         * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
13996         global.
13997         (enum insn_type): Add new enum type.
13998         (prepare_ternary_operands): New function.
13999         * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
14000         (emit_nonvlmax_tumu_insn): Ditto.
14001         (emit_nonvlmax_fp_tumu_insn): Ditto.
14002         (expand_cond_len_binop): Add condtional operations.
14003         (expand_cond_len_ternop): Ditto.
14004         (prepare_ternary_operands): New function.
14005         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
14006         riscv_get_v_regno_alignment as global scope.
14007         * config/riscv/vector.md: Fix ternary bugs.
14009 2023-08-08  Richard Biener  <rguenther@suse.de>
14011         PR tree-optimization/49955
14012         * tree-vectorizer.h (_slp_instance::remain_stmts): New.
14013         (SLP_INSTANCE_REMAIN_STMTS): Likewise.
14014         * tree-vect-slp.cc (vect_free_slp_instance): Release
14015         SLP_INSTANCE_REMAIN_STMTS.
14016         (vect_build_slp_instance): Make the number of lanes of
14017         a BB reduction even.
14018         (vectorize_slp_instance_root_stmt): Handle unvectorized
14019         defs of a BB reduction.
14021 2023-08-08  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
14023         * internal-fn.cc (get_len_internal_fn): New function.
14024         (DEF_INTERNAL_COND_FN): Ditto.
14025         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
14026         * internal-fn.h (get_len_internal_fn): Ditto.
14027         * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
14029 2023-08-08  Richard Biener  <rguenther@suse.de>
14031         PR tree-optimization/110924
14032         * tree-ssa-live.h (virtual_operand_live): Update comment.
14033         * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
14034         optimization, look at each predecessor.
14035         * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
14037 2023-08-08  yulong  <shiyulong@iscas.ac.cn>
14039         * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
14041 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14043         * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
14044         * config/riscv/vector.md: Ditto.
14046 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14048         * config/riscv/autovec.md: Add VLS shift.
14050 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14052         * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
14053         * config/riscv/vector-iterators.md: Ditto.
14054         * config/riscv/vector.md: Ditto.
14056 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
14058         * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
14060 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
14062         * configure: Regenerate.
14064 2023-08-07  John Ericson  <git@JohnEricson.me>
14066         * configure: Regenerate.
14068 2023-08-07  Alan Modra  <amodra@gmail.com>
14070         * configure: Regenerate.
14072 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
14074         * configure: Regenerate.
14076 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
14078         * configure: Regenerate.
14080 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
14082         * configure: Regenerate.
14084 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
14086         * configure: Regenerate.
14088 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
14090         * configure: Regenerate.
14092 2023-08-07  Jeff Law  <jlaw@ventanamicro.com>
14094         * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
14095         VOIDmode operands to conditional before canonicalization.
14097 2023-08-07  Manolis Tsamis  <manolis.tsamis@vrull.eu>
14099         * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
14100         (find_oldest_value_reg): Inline stack_pointer_rtx check.
14101         (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
14103 2023-08-07  Martin Jambor  <mjambor@suse.cz>
14105         PR ipa/110378
14106         * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
14107         members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
14108         * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
14109         (ptr_parm_has_nonarg_uses): Likewise.
14110         * ipa-param-manipulation.cc
14111         (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
14112         (ipa_param_body_adjustments::mark_dead_statements): Move initial
14113         checks to get_ddef_if_exists_and_is_used.
14114         (ipa_param_body_adjustments::mark_clobbers_dead): New.
14115         (ipa_param_body_adjustments::common_initialization): Call
14116         mark_clobbers_dead when splitting.
14118 2023-08-07  Raphael Zinsly  <rzinsly@ventanamicro.com>
14120         * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
14121         as an argument and pass it to riscv_emit_int_order_test.
14122         (riscv_expand_conditional_move): Handle cases where the condition
14123         is not EQ/NE or the second argument to the conditional is not
14124         (const_int 0).
14125         * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
14126         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
14128 2023-08-07  Andrew Pinski  <apinski@marvell.com>
14130         PR tree-optimization/109959
14131         * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
14132         New patterns.
14134 2023-08-07  Richard Biener  <rguenther@suse.de>
14136         * tree-ssa-sink.cc (pass_sink_code::execute): Do not
14137         calculate post-dominators.  Calculate RPO on the inverted
14138         graph and process blocks in that order.
14140 2023-08-07  liuhongt  <hongtao.liu@intel.com>
14142         PR target/110926
14143         * config/i386/i386-protos.h
14144         (vpternlog_redundant_operand_mask): Adjust parameter type.
14145         * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
14146         INTVAL instead of XINT, also adjust parameter type from rtx*
14147         to rtx since the function only needs operands[4] in vpternlog
14148         pattern.
14149         (substitute_vpternlog_operands): Pass operands[4] instead of
14150         operands to vpternlog_redundant_operand_mask.
14151         * config/i386/sse.md: Ditto.
14153 2023-08-07  Richard Biener  <rguenther@suse.de>
14155         * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
14156         around dumping code.
14158 2023-08-07  liuhongt  <hongtao.liu@intel.com>
14160         PR target/110762
14161         * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
14162         to define_expand and break into ..
14163         (<insn>v4hf3): .. this.
14164         (divv4hf3): .. this.
14165         (<insn>v2hf3): .. this.
14166         (divv2hf3): .. this.
14167         (movd_v2hf_to_sse): New define_expand.
14168         (movq_<mode>_to_sse): Extend to V4HFmode.
14169         (mmxdoublevecmode): Ditto.
14170         (V2FI_V4HF): New mode iterator.
14171         * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
14172         by using mode iterator V4SF_V8HF, renamed to ..
14173         (*vec_concat<mode>): .. this.
14174         (*vec_concatv4sf_0): Extend to handle V8HF by using mode
14175         iterator V4SF_V8HF, renamed to ..
14176         (*vec_concat<mode>_0): .. this.
14177         (*vec_concatv8hf_movss): New define_insn.
14178         (V4SF_V8HF): New mode iterator.
14180 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14182         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
14184 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14186         * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
14187         (*mmx_pinsrb): Likewise.
14188         (*mmx_pextrb): Likewise.
14189         (*mmx_pextrb_zext): Likewise.
14190         (mmx_pshufbv8qi3): Likewise.
14191         (mmx_pshufbv4qi3): Likewise.
14192         (mmx_pswapdv2si2): Likewise.
14193         (*pinsrb): Likewise.
14194         (*pextrb): Likewise.
14195         (*pextrb_zext): Likewise.
14196         * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
14197         (*sse2_eq<mode>3): Likewise.
14198         (*sse2_gt<mode>3): Likewise.
14199         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
14200         (*vec_extract<mode>): Likewise.
14201         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
14202         (*vec_extractv16qi_zext): Likewise.
14203         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
14204         (ssse3_pmaddubsw128): Likewise.
14205         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
14206         (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
14207         (<ssse3_avx2>_psign<mode>3): Likewise.
14208         (<ssse3_avx2>_palignr<mode>): Likewise.
14209         (*abs<mode>2): Likewise.
14210         (sse4_2_pcmpestr): Likewise.
14211         (sse4_2_pcmpestri): Likewise.
14212         (sse4_2_pcmpestrm): Likewise.
14213         (sse4_2_pcmpestr_cconly): Likewise.
14214         (sse4_2_pcmpistr): Likewise.
14215         (sse4_2_pcmpistri): Likewise.
14216         (sse4_2_pcmpistrm): Likewise.
14217         (sse4_2_pcmpistr_cconly): Likewise.
14218         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
14219         (vgf2p8affineqb_<mode><mask_name>): Likewise.
14220         (vgf2p8mulb_<mode><mask_name>): Likewise.
14221         (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
14222         "prefix_extra".
14223         (*<code>v16qi3 [umaxmin]): Likewise.
14225 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14227         * config/i386/i386.md (sse4_1_round<mode>2): Make
14228         "length_immediate" uniformly 1.
14229         * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
14230         (mmx_pblendvb_<mode>): Likewise.
14232 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14234         * config/i386/sse.md
14235         (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
14236         "prefix" attribute.
14237         (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
14238         Likewise.
14240 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14242         * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
14243         "prefix_extra", and "mode" attributes.
14244         (xop_phadd<u>bd): Likewise.
14245         (xop_phadd<u>bq): Likewise.
14246         (xop_phadd<u>wd): Likewise.
14247         (xop_phadd<u>wq): Likewise.
14248         (xop_phadd<u>dq): Likewise.
14249         (xop_phsubbw): Likewise.
14250         (xop_phsubwd): Likewise.
14251         (xop_phsubdq): Likewise.
14252         (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
14253         (xop_rotr<mode>3): Likewise.
14254         (xop_frcz<mode>2): Likewise.
14255         (*xop_vmfrcz<mode>2): Likewise.
14256         (xop_vrotl<mode>3): Add "prefix" attribute. Change
14257         "prefix_extra" to 1.
14258         (xop_sha<mode>3): Likewise.
14259         (xop_shl<mode>3): Likewise.
14261 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14263         * config/i386/sse.md
14264         (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
14265         "prefix_extra".
14266         (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
14267         (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
14268         (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
14269         (*avx512f_vextract<shuffletype>32x4_1): Likewise.
14270         (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
14271         (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
14272         (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
14273         (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
14274         (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
14275         (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
14276         (vec_extract_lo_v64qi): Likewise.
14277         (vec_extract_hi_v64qi): Likewise.
14278         (*vec_widen_umult_even_v16si<mask_name>): Likewise.
14279         (*vec_widen_smult_even_v16si<mask_name>): Likewise.
14280         (*avx512f_<code><mode>3<mask_name>): Likewise.
14281         (*vec_extractv4ti): Likewise.
14282         (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
14283         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
14284         Add "length_immediate".
14286 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14288         * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
14289         "prefix_extra".
14290         (@rdseed<mode>): Likewise.
14291         * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
14292         Adjust "prefix_extra".
14293         * config/i386/sse.md (@vec_set<mode>_0): Likewise.
14294         (*sse4_1_<code><mode>3<mask_name>): Likewise.
14295         (*avx2_eq<mode>3): Likewise.
14296         (avx2_gt<mode>3): Likewise.
14297         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
14298         (*vec_extract<mode>): Likewise.
14299         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
14301 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14303         * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
14304         "prefix_rep". Drop "prefix_extra".
14305         (wr<fsgs>base<mode>): Likewise.
14306         (ptwrite<mode>): Likewise.
14308 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14310         * config/i386/i386.md (isa): Move up.
14311         (length_immediate): Handle "fma4".
14312         (prefix): Handle "ssemuladd".
14313         * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
14314         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
14315         Likewise.
14316         (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
14317         (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
14318         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
14319         Likewise.
14320         (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
14321         (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
14322         (*fma_fnmadd_<mode>): Likewise.
14323         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
14324         Likewise.
14325         (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
14326         (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
14327         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
14328         Likewise.
14329         (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
14330         (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
14331         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
14332         Likewise.
14333         (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
14334         (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
14335         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
14336         Likewise.
14337         (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
14338         (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
14339         (*fmai_fmadd_<mode>): Likewise.
14340         (*fmai_fmsub_<mode>): Likewise.
14341         (*fmai_fnmadd_<mode><round_name>): Likewise.
14342         (*fmai_fnmsub_<mode><round_name>): Likewise.
14343         (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
14344         (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
14345         (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
14346         (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
14347         (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
14348         (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
14349         (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
14350         (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
14351         (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
14352         (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
14353         (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
14354         (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
14355         (*fma4i_vmfmadd_<mode>): Likewise.
14356         (*fma4i_vmfmsub_<mode>): Likewise.
14357         (*fma4i_vmfnmadd_<mode>): Likewise.
14358         (*fma4i_vmfnmsub_<mode>): Likewise.
14359         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
14360         (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
14361         (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
14362         Likewise.
14363         (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
14364         (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
14365         (xop_p<macs>dql): Likewise.
14366         (xop_p<macs>dqh): Likewise.
14367         (xop_p<macs>wd): Likewise.
14368         (xop_p<madcs>wd): Likewise.
14369         (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
14371 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14373         * config/i386/i386.md (length_immediate): Handle "sse4arg".
14374         (prefix): Likewise.
14375         (*xop_pcmov_<mode>): Add "mode" attribute.
14376         * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
14377         "prefix_rep", "prefix_extra", and "length_immediate" attributes.
14378         (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
14379         (*xop_pcmov_<mode>): Add "mode" attribute.
14380         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
14381         attribute.
14382         (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
14383         "prefix_extra", and "length_immediate" attributes.
14384         (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
14385         (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
14386         and "length_immediate" attributes. Switch "type" to "sse4arg".
14387         (xop_pcom_tf<mode>3): Likewise.
14388         (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
14390 2023-08-07  Jan Beulich  <jbeulich@suse.com>
14392         * config/i386/i386.md (prefix_extra): Correct comment. Fold
14393         cases yielding 2 into ones yielding 1.
14395 2023-08-07  Jan Hubicka  <jh@suse.cz>
14397         PR tree-optimization/106293
14398         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
14399         * tree-vect-loop.cc (vect_transform_loop): Likewise.
14401 2023-08-07  Andrew Pinski  <apinski@marvell.com>
14403         PR tree-optimization/96695
14404         * match.pd (min_value, max_value): Extend to
14405         pointer types too.
14407 2023-08-06  Jan Hubicka  <jh@suse.cz>
14409         * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
14410         __builtin_expect that CPU likely supports cpuid.
14412 2023-08-06  Jan Hubicka  <jh@suse.cz>
14414         * tree-loop-distribution.cc (loop_distribution::execute): Disable
14415         distribution for loops with estimated iterations 0.
14417 2023-08-06  Jan Hubicka  <jh@suse.cz>
14419         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
14421 2023-08-04  Xiao Zeng  <zengxiao@eswincomputing.com>
14423         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
14424         more Zicond patterns.  Fix whitespace typo.
14425         (riscv_rtx_costs): Remove accidental code duplication.
14426         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
14428 2023-08-04  Yan Simonaytes  <simonaytes.yan@ispras.ru>
14430         PR target/110202
14431         * config/i386/i386-protos.h
14432         (vpternlog_redundant_operand_mask): Declare.
14433         (substitute_vpternlog_operands): Declare.
14434         * config/i386/i386.cc
14435         (vpternlog_redundant_operand_mask): New helper.
14436         (substitute_vpternlog_operands): New function.  Use them...
14437         * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
14439 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
14441         * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
14442         value of -1 is equivalent to don't care.
14443         (extract_integral_bit_field): Indicate that we don't require
14444         the most significant word to be zero extended, if we're about
14445         to sign extend it.
14446         (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
14447         of -1 is equivalent to don't care.  Don't clear the most
14448         significant bits with AND mask when UNSIGNEDP is -1.
14450 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
14452         * config/i386/sse.md (define_split): Convert highpart:DF extract
14453         from V2DFmode register into a sse2_storehpd instruction.
14454         (define_split): Likewise, convert lowpart:DF extract from V2DF
14455         register into a sse2_storelpd instruction.
14457 2023-08-04  Qing Zhao  <qing.zhao@oracle.com>
14459         * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
14460         new option.
14462 2023-08-04  Vladimir N. Makarov  <vmakarov@redhat.com>
14464         * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
14465         against early clobber hard regs.
14467 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
14469         * doc/extend.texi: Document it.
14471 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
14473         PR target/106346
14474         * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
14475         vec_widen_<sur>shiftl_hi_<mode>): Remove.
14476         (aarch64_<sur>shll<mode>_internal): Renamed to...
14477         (aarch64_<su>shll<mode>): .. This.
14478         (aarch64_<sur>shll2<mode>_internal): Renamed to...
14479         (aarch64_<su>shll2<mode>): .. This.
14480         (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
14481         optabs.
14482         * config/aarch64/constraints.md (D2, DL): New.
14483         * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
14485 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
14487         * gensupport.cc (conlist): Support length 0 attribute.
14489 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
14491         * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
14492         (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
14494 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
14496         * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
14497         of constants.
14498         (aarch64_adjust_stmt_cost): Use it.
14499         (aarch64_vector_costs::count_ops): Likewise.
14500         (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
14501         aarch64_adjust_stmt_cost.
14503 2023-08-04  Richard Biener  <rguenther@suse.de>
14505         PR tree-optimization/110838
14506         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
14507         Fix right-shift value sanitizing.  Properly emit external
14508         def mangling in the preheader rather than in the pattern
14509         def sequence where it will fail vectorizing.
14511 2023-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
14513         PR middle-end/110316
14514         PR middle-end/9903
14515         * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
14516         CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
14517         (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
14518         (timer::validate_phases): Use integral arithmetic to check
14519         validity.
14520         (timer::print_row, timer::print): Convert from integral
14521         nanoseconds to floating point seconds before printing.
14522         (timer::all_zero): Change limit to nanosec count instead of
14523         fractional count of seconds.
14524         (make_json_for_timevar_time_def): Convert from integral
14525         nanoseconds to floating point seconds before recording.
14526         * timevar.h (struct timevar_time_def): Update all measurements
14527         to use uint64_t nanoseconds rather than seconds stored in a
14528         double.
14530 2023-08-04  Richard Biener  <rguenther@suse.de>
14532         PR tree-optimization/110838
14533         * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
14534         the arithmetic right-shift case to non-negative operands.
14536 2023-08-04  Pan Li  <pan2.li@intel.com>
14538         Revert:
14539         2023-08-04  Pan Li  <pan2.li@intel.com>
14541         * config/riscv/riscv-vector-builtins-bases.cc
14542         (class vfmacc_frm): New class for vfmacc frm.
14543         (vfmacc_frm_obj): New declaration.
14544         (BASE): Ditto.
14545         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14546         * config/riscv/riscv-vector-builtins-functions.def
14547         (vfmacc_frm): New function definition.
14548         * config/riscv/riscv-vector-builtins.cc
14549         (function_expander::use_ternop_insn): Add frm operand support.
14550         * config/riscv/vector.md: Add vfmuladd to frm_mode.
14552 2023-08-04  Pan Li  <pan2.li@intel.com>
14554         Revert:
14555         2023-08-04  Pan Li  <pan2.li@intel.com>
14557         * config/riscv/riscv-vector-builtins-bases.cc
14558         (class vfnmacc_frm): New class for vfnmacc.
14559         (vfnmacc_frm_obj): New declaration.
14560         (BASE): Ditto.
14561         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14562         * config/riscv/riscv-vector-builtins-functions.def
14563         (vfnmacc_frm): New function definition.
14565 2023-08-04  Pan Li  <pan2.li@intel.com>
14567         Revert:
14568         2023-08-04  Pan Li  <pan2.li@intel.com>
14570         * config/riscv/riscv-vector-builtins-bases.cc
14571         (class vfmsac_frm): New class for vfmsac frm.
14572         (vfmsac_frm_obj): New declaration.
14573         (BASE): Ditto.
14574         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14575         * config/riscv/riscv-vector-builtins-functions.def
14576         (vfmsac_frm): New function definition.
14578 2023-08-04  Pan Li  <pan2.li@intel.com>
14580         Revert:
14581         2023-08-04  Pan Li  <pan2.li@intel.com>
14583         * config/riscv/riscv-vector-builtins-bases.cc
14584         (class vfnmsac_frm): New class for vfnmsac frm.
14585         (vfnmsac_frm_obj): New declaration.
14586         (BASE): Ditto.
14587         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14588         * config/riscv/riscv-vector-builtins-functions.def
14589         (vfnmsac_frm): New function definition.
14591 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
14593         * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
14594         (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
14595         (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
14596         (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
14597         (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
14598         (attiny102, attiny104): New devices.
14599         * doc/avr-mmcu.texi: Regenerate.
14601 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
14603         * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
14604         and PM_OFFSET entries.
14606 2023-08-04  Andrew Pinski  <apinski@marvell.com>
14608         PR tree-optimization/110874
14609         * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
14610         (gimple_maybe_cmp): Likewise.
14611         (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
14612         and gimple_maybe_cmp instead of being recursive.
14613         * match.pd (bit_not_with_nop): New match pattern.
14614         (maybe_cmp): Likewise.
14616 2023-08-04  Drew Ross  <drross@redhat.com>
14618         PR middle-end/101955
14619         * match.pd ((signed x << c) >> c): New canonicalization.
14621 2023-08-04  Pan Li  <pan2.li@intel.com>
14623         * config/riscv/riscv-vector-builtins-bases.cc
14624         (class vfnmsac_frm): New class for vfnmsac frm.
14625         (vfnmsac_frm_obj): New declaration.
14626         (BASE): Ditto.
14627         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14628         * config/riscv/riscv-vector-builtins-functions.def
14629         (vfnmsac_frm): New function definition.
14631 2023-08-04  Pan Li  <pan2.li@intel.com>
14633         * config/riscv/riscv-vector-builtins-bases.cc
14634         (class vfmsac_frm): New class for vfmsac frm.
14635         (vfmsac_frm_obj): New declaration.
14636         (BASE): Ditto.
14637         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14638         * config/riscv/riscv-vector-builtins-functions.def
14639         (vfmsac_frm): New function definition.
14641 2023-08-04  Pan Li  <pan2.li@intel.com>
14643         * config/riscv/riscv-vector-builtins-bases.cc
14644         (class vfnmacc_frm): New class for vfnmacc.
14645         (vfnmacc_frm_obj): New declaration.
14646         (BASE): Ditto.
14647         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14648         * config/riscv/riscv-vector-builtins-functions.def
14649         (vfnmacc_frm): New function definition.
14651 2023-08-04  Hao Liu  <hliu@os.amperecomputing.com>
14653         PR target/110625
14654         * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
14655         STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
14657 2023-08-04  Pan Li  <pan2.li@intel.com>
14659         * config/riscv/riscv-vector-builtins-bases.cc
14660         (class vfmacc_frm): New class for vfmacc frm.
14661         (vfmacc_frm_obj): New declaration.
14662         (BASE): Ditto.
14663         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14664         * config/riscv/riscv-vector-builtins-functions.def
14665         (vfmacc_frm): New function definition.
14666         * config/riscv/riscv-vector-builtins.cc
14667         (function_expander::use_ternop_insn): Add frm operand support.
14668         * config/riscv/vector.md: Add vfmuladd to frm_mode.
14670 2023-08-04  Pan Li  <pan2.li@intel.com>
14672         * config/riscv/riscv-vector-builtins-bases.cc
14673         (vfwmul_frm_obj): New declaration.
14674         (vfwmul_frm): Ditto.
14675         * config/riscv/riscv-vector-builtins-bases.h:
14676         (vfwmul_frm): Ditto.
14677         * config/riscv/riscv-vector-builtins-functions.def
14678         (vfwmul_frm): New function definition.
14679         * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
14681 2023-08-04  Pan Li  <pan2.li@intel.com>
14683         * config/riscv/riscv-vector-builtins-bases.cc
14684         (binop_frm): New declaration.
14685         (reverse_binop_frm): Likewise.
14686         (BASE): Likewise.
14687         * config/riscv/riscv-vector-builtins-bases.h:
14688         (vfdiv_frm): New extern declaration.
14689         (vfrdiv_frm): Likewise.
14690         * config/riscv/riscv-vector-builtins-functions.def
14691         (vfdiv_frm): New function definition.
14692         (vfrdiv_frm): Likewise.
14693         * config/riscv/vector.md: Add vfdiv to frm_mode.
14695 2023-08-03  Jan Hubicka  <jh@suse.cz>
14697         * tree-cfg.cc (print_loop_info): Print entry count.
14699 2023-08-03  Jan Hubicka  <jh@suse.cz>
14701         * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
14703 2023-08-03  Jan Hubicka  <jh@suse.cz>
14705         PR bootstrap/110857
14706         * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
14707         unadjusted_exit_count.
14709 2023-08-03  Aldy Hernandez  <aldyh@redhat.com>
14711         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
14712         value/mask.
14714 2023-08-03  Xiao Zeng  <zengxiao@eswincomputing.com>
14716         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
14717         various Zicond patterns.
14718         * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND.  Use
14719         sfb_alu_operand for both arms of the conditional move.
14720         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
14722 2023-08-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
14724         PR target/107844
14725         PR target/107479
14726         PR target/107480
14727         PR target/107481
14728         * config.gcc: Added core-builtins.cc and .o files.
14729         * config/bpf/bpf-passes.def: Removed file.
14730         * config/bpf/bpf-protos.h (bpf_add_core_reloc,
14731         bpf_replace_core_move_operands): New prototypes.
14732         * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
14733         maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
14734         bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
14735         bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
14736         handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
14737         Removed.
14738         (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
14739         * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
14740         (mov_reloc_core<mode>): Added.
14741         * config/bpf/core-builtins.cc (struct cr_builtin, enum
14742         cr_decision struct cr_local, struct cr_final, struct
14743         core_builtin_helpers, enum bpf_plugin_states): Added types.
14744         (builtins_data, core_builtin_helpers, core_builtin_type_defs):
14745         Added variables.
14746         (allocate_builtin_data, get_builtin-data, search_builtin_data,
14747         remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
14748         compare_same_ptr_type, is_attr_preserve_access, core_field_info,
14749         bpf_core_get_index, compute_field_expr,
14750         pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
14751         process_field_expr, pack_enum_value, process_enum_value, pack_type,
14752         process_type, bpf_require_core_support, make_core_relo, read_kind,
14753         kind_access_index, kind_preserve_field_info, kind_enum_value,
14754         kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
14755         bpf_handle_plugin_finish_type, bpf_init_core_builtins,
14756         construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
14757         bpf_expand_core_builtin, bpf_add_core_reloc,
14758         bpf_replace_core_move_operands): Added functions.
14759         * config/bpf/core-builtins.h (enum bpf_builtins): Added.
14760         (bpf_init_core_builtins, bpf_expand_core_builtin,
14761         bpf_resolve_overloaded_core_builtin): Added functions.
14762         * config/bpf/coreout.cc (struct bpf_core_extra): Added.
14763         (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
14764         * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
14765         * config/bpf/t-bpf: Added core-builtins.o.
14766         * doc/extend.texi: Added documentation for new BPF builtins.
14768 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
14770         * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
14771         ranges to the call to relation_fold_and_or.
14772         (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
14773         (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
14774         * gimple-range-fold.h (relation_fold_and_or): Adjust params.
14775         * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
14776         a varying op1 and op2 to call.
14777         * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
14778         (operator_equal::op1_op2_relation): New float version.
14779         (operator_not_equal::op1_op2_relation): Ditto.
14780         (operator_lt::op1_op2_relation): Ditto.
14781         (operator_le::op1_op2_relation): Ditto.
14782         (operator_gt::op1_op2_relation): Ditto.
14783         (operator_ge::op1_op2_relation) Ditto.
14784         * range-op-mixed.h (operator_equal::op1_op2_relation): New float
14785         prototype.
14786         (operator_not_equal::op1_op2_relation): Ditto.
14787         (operator_lt::op1_op2_relation): Ditto.
14788         (operator_le::op1_op2_relation): Ditto.
14789         (operator_gt::op1_op2_relation): Ditto.
14790         (operator_ge::op1_op2_relation): Ditto.
14791         * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
14792         variations.
14793         (range_operator::op1_op2_relation): Add extra params.
14794         (operator_equal::op1_op2_relation): Ditto.
14795         (operator_not_equal::op1_op2_relation): Ditto.
14796         (operator_lt::op1_op2_relation): Ditto.
14797         (operator_le::op1_op2_relation): Ditto.
14798         (operator_gt::op1_op2_relation): Ditto.
14799         (operator_ge::op1_op2_relation): Ditto.
14800         * range-op.h (range_operator): New prototypes.
14801         (range_op_handler): Ditto.
14803 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
14805         * gimple-range-gori.cc (gori_compute::compute_operand1_range):
14806         Use identity relation.
14807         (gori_compute::compute_operand2_range): Ditto.
14808         * value-relation.cc (get_identity_relation): New.
14809         * value-relation.h (get_identity_relation): New prototype.
14811 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
14813         * value-range.h (Value_Range::set_varying): Set the type.
14814         (Value_Range::set_zero): Ditto.
14815         (Value_Range::set_nonzero): Ditto.
14817 2023-08-03  Jeff Law  <jeffreyalaw@gmail.com>
14819         * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
14820         recent commit.
14822 2023-08-03  Pan Li  <pan2.li@intel.com>
14824         * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
14826 2023-08-03  Richard Sandiford  <richard.sandiford@arm.com>
14828         * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
14830 2023-08-03  Richard Biener  <rguenther@suse.de>
14832         PR tree-optimization/110838
14833         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
14834         Adjust the shift operand of RSHIFT_EXPRs.
14836 2023-08-03  Richard Biener  <rguenther@suse.de>
14838         PR tree-optimization/110702
14839         * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
14840         we created a NULL pointer based access rewrite that to
14841         a LEA.
14843 2023-08-03  Richard Biener  <rguenther@suse.de>
14845         * tree-ssa-sink.cc: Include tree-ssa-live.h.
14846         (pass_sink_code::execute): Instantiate virtual_operand_live
14847         and pass it down.
14848         (sink_code_in_bb): Pass down virtual_operand_live.
14849         (statement_sink_location): Get virtual_operand_live and
14850         verify we are not sinking loads across stores by looking up
14851         the live virtual operand at the sink location.
14853 2023-08-03  Richard Biener  <rguenther@suse.de>
14855         * tree-ssa-live.h (class virtual_operand_live): New.
14856         * tree-ssa-live.cc (virtual_operand_live::init): New.
14857         (virtual_operand_live::get_live_in): Likewise.
14858         (virtual_operand_live::get_live_out): Likewise.
14860 2023-08-03  Richard Biener  <rguenther@suse.de>
14862         * passes.def: Exchange loop splitting and final value
14863         replacement passes.
14865 2023-08-03  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14867         * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
14868         New function which handles bswap patterns for vec_perm_const.
14869         (vectorize_vec_perm_const_1): Call new function.
14870         * config/s390/vector.md (*bswap<mode>): Fix operands in output
14871         template.
14872         (*vstbr<mode>): New insn.
14874 2023-08-03  Alexandre Oliva  <oliva@adacore.com>
14876         * config/vxworks-smp.opt: New.  Introduce -msmp.
14877         * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
14878         * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
14879         lib_smp when -msmp is present in the command line.
14880         * doc/invoke.texi: Document it.
14882 2023-08-03  Yanzhang Wang  <yanzhang.wang@intel.com>
14884         * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
14885         when enabling -mno-omit-leaf-frame-pointer
14886         (riscv_option_override): Override omit-frame-pointer.
14887         (riscv_frame_pointer_required): Save s0 for non-leaf function
14888         (TARGET_FRAME_POINTER_REQUIRED): Override defination
14889         * config/riscv/riscv.opt: Add option support.
14891 2023-08-03  Roger Sayle  <roger@nextmovesoftware.com>
14893         PR target/110792
14894         * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
14895         place operand in a register before gen_<insn>64ti2_doubleword.
14896         (<any_rotate>di3): Likewise, for rotations by 32 bits, place
14897         operand in a register before gen_<insn>32di2_doubleword.
14898         (<any_rotate>32di2_doubleword): Constrain operand to be in register.
14899         (<any_rotate>64ti2_doubleword): Likewise.
14901 2023-08-03  Pan Li  <pan2.li@intel.com>
14903         * config/riscv/riscv-vector-builtins-bases.cc
14904         (vfmul_frm_obj): New declaration.
14905         (Base): Likewise.
14906         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
14907         * config/riscv/riscv-vector-builtins-functions.def
14908         (vfmul_frm): New function definition.
14909         * config/riscv/vector.md: Add vfmul to frm_mode.
14911 2023-08-03  Andrew Pinski  <apinski@marvell.com>
14913         * match.pd (`~X & X`): Check that the types match.
14914         (`~x | x`, `~x ^ x`): Likewise.
14916 2023-08-03  Pan Li  <pan2.li@intel.com>
14918         * config/riscv/riscv-vector-builtins-bases.h: Remove
14919         redudant declaration.
14921 2023-08-03  Pan Li  <pan2.li@intel.com>
14923         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
14924         vfwsub frm.
14925         * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
14926         * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
14927         Add vfwsub function definitions.
14929 2023-08-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14931         PR rtl-optimization/110867
14932         * combine.cc (simplify_compare_const): Try the optimization only
14933         in case the constant fits into the comparison mode.
14935 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
14937         * config/riscv/zicond.md: Remove incorrect zicond patterns and
14938         renumber/rename them.
14939         (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
14941 2023-08-02  Richard Biener  <rguenther@suse.de>
14943         * tree-phinodes.h (add_phi_node_to_bb): Remove.
14944         * tree-phinodes.cc  (add_phi_node_to_bb): Make static.
14946 2023-08-02  Jan Beulich  <jbeulich@suse.com>
14948         * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
14949         two of the alternatives.
14951 2023-08-02  Richard Biener  <rguenther@suse.de>
14953         PR tree-optimization/92335
14954         * tree-ssa-sink.cc (select_best_block): Before loop
14955         optimizations avoid sinking unconditional loads/stores
14956         in innermost loops to conditional executed places.
14958 2023-08-02  Andrew Pinski  <apinski@marvell.com>
14960         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
14961         the comparison operands before comparing them.
14963 2023-08-02  Andrew Pinski  <apinski@marvell.com>
14965         * match.pd (`~X & X`, `~X | X`): Move over to
14966         use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
14967         handles that already.
14968         Remove range test simplifications to true/false as they
14969         are now handled by these patterns.
14971 2023-08-02  Andrew Pinski  <apinski@marvell.com>
14973         * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
14974         statement's lhs and rhs to check if trivial dead.
14975         Rename inserted_exprs to exprs_maybe_dce; also move it so
14976         bitmap is not allocated if not needed.
14978 2023-08-02  Pan Li  <pan2.li@intel.com>
14980         * config/riscv/riscv-vector-builtins-bases.cc
14981         (class widen_binop_frm): New class for binop frm.
14982         (BASE): Add vfwadd_frm.
14983         * config/riscv/riscv-vector-builtins-bases.h: New declaration.
14984         * config/riscv/riscv-vector-builtins-functions.def
14985         (vfwadd_frm): New function definition.
14986         * config/riscv/riscv-vector-builtins-shapes.cc
14987         (BASE_NAME_MAX_LEN): New macro.
14988         (struct alu_frm_def): Leverage new base class.
14989         (struct build_frm_base): New build base for frm.
14990         (struct widen_alu_frm_def): New struct for widen alu frm.
14991         (SHAPE): Add widen_alu_frm shape.
14992         * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
14993         * config/riscv/vector.md (frm_mode): Add vfwalu type.
14995 2023-08-02  Jan Hubicka  <jh@suse.cz>
14997         * cfgloop.h (loop_count_in): Declare.
14998         * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
14999         (loop_count_in): Move here from ...
15000         * cfgloopmanip.cc (loop_count_in): ... here.
15001         (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
15003 2023-08-02  Jan Hubicka  <jh@suse.cz>
15005         * cfg.cc (scale_strictly_dominated_blocks): New function.
15006         * cfg.h (scale_strictly_dominated_blocks): Declare.
15007         * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
15009 2023-08-02  Richard Biener  <rguenther@suse.de>
15011         PR rtl-optimization/110587
15012         * lra-spills.cc (return_regno_p): Remove.
15013         (regno_in_use_p): Likewise.
15014         (lra_final_code_change): Do not remove noop moves
15015         between hard registers.
15017 2023-08-02  liuhongt  <hongtao.liu@intel.com>
15019         PR target/81904
15020         * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
15021         HFmode, use mode iterator VFH instead.
15022         (vec_fmsubadd<mode>4): Ditto.
15023         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
15024         Remove scalar mode from iterator, use VFH_AVX512VL instead.
15025         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
15026         Ditto.
15028 2023-08-02  liuhongt  <hongtao.liu@intel.com>
15030         * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
15031         pre_reload define_insn_and_split.
15033 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
15035         * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
15036         using Zicond to implement some conditional moves.
15038 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
15040         * config/riscv/zicond.md: Use the X iterator instead of ANYI
15041         on the comparison input operands.
15043 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
15045         * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
15046         Zicond costing.
15047         (case SET): For INSNs that just set a REG, take the cost from the
15048         SET_SRC.
15049         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
15051 2023-08-02  Hu, Lin1  <lin1.hu@intel.com>
15053         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
15054         Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
15055         (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
15056         (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
15057         (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
15058         (OPTION_MASK_ISA_ABM_SET):
15059         Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
15061 2023-08-01  Andreas Krebbel  <krebbel@linux.ibm.com>
15063         * config/s390/s390.cc (s390_encode_section_info): Assume external
15064         symbols without explicit alignment to be unaligned if
15065         -munaligned-symbols has been specified.
15066         * config/s390/s390.opt (-munaligned-symbols): New option.
15068 2023-08-01  Richard Ball  <richard.ball@arm.com>
15070         * gimple-fold.cc (fold_ctor_reference):
15071         Add support for poly_int.
15073 2023-08-01  Georg-Johann Lay  <avr@gjlay.de>
15075         PR target/110220
15076         * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
15077         LABEL_NUSES of new conditional branch instruction.
15079 2023-08-01  Jan Hubicka  <jh@suse.cz>
15081         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
15082         constant prologue peeling.
15084 2023-08-01  Christophe Lyon  <christophe.lyon@linaro.org>
15086         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
15088 2023-08-01  Pan Li  <pan2.li@intel.com>
15089             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15091         * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
15092         (STATIC_FRM_P): Ditto.
15093         (struct mode_switching_info): New struct for mode switching.
15094         (struct machine_function): Add new field mode switching.
15095         (riscv_emit_frm_mode_set): Add DYN_CALL emit.
15096         (riscv_frm_adjust_mode_after_call): New function for call mode.
15097         (riscv_frm_emit_after_call_in_bb_end): New function for emit
15098         insn when call as the end of bb.
15099         (riscv_frm_mode_needed): New function for frm mode needed.
15100         (frm_unknown_dynamic_p): Remove call check.
15101         (riscv_mode_needed): Extrac function for frm.
15102         (riscv_frm_mode_after): Add DYN_CALL after.
15103         (riscv_mode_entry): Remove backup rtl initialization.
15104         * config/riscv/vector.md (frm_mode): Add dyn_call.
15105         (fsrmsi_restore_exit): Rename to _volatile.
15106         (fsrmsi_restore_volatile): Likewise.
15108 2023-08-01  Pan Li  <pan2.li@intel.com>
15110         * config/riscv/riscv-vector-builtins-bases.cc
15111         (class reverse_binop_frm): Add new template for reversed frm.
15112         (vfsub_frm_obj): New obj.
15113         (vfrsub_frm_obj): Likewise.
15114         * config/riscv/riscv-vector-builtins-bases.h:
15115         (vfsub_frm): New declaration.
15116         (vfrsub_frm): Likewise.
15117         * config/riscv/riscv-vector-builtins-functions.def
15118         (vfsub_frm): New function define.
15119         (vfrsub_frm): Likewise.
15121 2023-08-01  Andrew Pinski  <apinski@marvell.com>
15123         PR tree-optimization/93044
15124         * match.pd (nested int casts): A truncation (to the same size or smaller)
15125         can always remove the inner cast.
15127 2023-07-31  Hamza Mahfooz  <someguy@effective-light.com>
15129         PR c/65213
15130         * doc/invoke.texi (-Wmissing-variable-declarations): Document
15131         new option.
15133 2023-07-31  Andrew Pinski  <apinski@marvell.com>
15135         PR tree-optimization/106164
15136         * match.pd (`a != b & a <= b`, `a != b & a >= b`,
15137         `a == b | a < b`, `a == b | a > b`): Handle these cases
15138         too.
15140 2023-07-31  Andrew Pinski  <apinski@marvell.com>
15142         PR tree-optimization/106164
15143         * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
15144         patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
15146 2023-07-31  Andrew Pinski  <apinski@marvell.com>
15148         PR tree-optimization/100864
15149         * generic-match-head.cc (bitwise_inverted_equal_p): New function.
15150         * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
15151         (gimple_bitwise_inverted_equal_p): New function.
15152         * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
15153         instead of direct matching bit_not.
15155 2023-07-31  Costas Argyris  <costas.argyris@gmail.com>
15157         PR driver/77576
15158         * gcc-ar.cc (main): Expand argv and use
15159         temporary response file to call ar if any
15160         expansions were made.
15162 2023-07-31  Andrew MacLeod  <amacleod@redhat.com>
15164         PR tree-optimization/110582
15165         * gimple-range-fold.cc (fur_list::get_operand): Do not use the
15166         range vector for non-ssa names.
15168 2023-07-31  David Malcolm  <dmalcolm@redhat.com>
15170         PR analyzer/109361
15171         * diagnostic-client-data-hooks.h (class sarif_object): New forward
15172         decl.
15173         (diagnostic_client_data_hooks::add_sarif_invocation_properties):
15174         New vfunc.
15175         * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
15176         (class sarif_invocation): Inherit from sarif_object rather than
15177         json::object.
15178         (class sarif_result): Likewise.
15179         (class sarif_ice_notification): Likewise.
15180         (sarif_object::get_or_create_properties): New.
15181         (sarif_invocation::prepare_to_flush): Add "context" param.  Use it
15182         to call the context's add_sarif_invocation_properties hook.
15183         (sarif_builder::flush_to_file): Pass m_context to
15184         sarif_invocation::prepare_to_flush.
15185         * diagnostic-format-sarif.h: New header.
15186         * doc/invoke.texi (Developer Options): Clarify that -ftime-report
15187         writes to stderr.  Document that if SARIF diagnostic output is
15188         requested then any timing information is written in JSON form as
15189         part of the SARIF output, rather than to stderr.
15190         * timevar.cc: Include "json.h".
15191         (timer::named_items::m_hash_map): Split out type into...
15192         (timer::named_items::hash_map_t): ...this new typedef.
15193         (timer::named_items::make_json): New function.
15194         (timevar_diff): New function.
15195         (make_json_for_timevar_time_def): New function.
15196         (timer::timevar_def::make_json): New function.
15197         (timer::make_json): New function.
15198         * timevar.h (class json::value): New forward decl.
15199         (timer::make_json): New decl.
15200         (timer::timevar_def::make_json): New decl.
15201         * tree-diagnostic-client-data-hooks.cc: Include
15202         "diagnostic-format-sarif.h" and "timevar.h".
15203         (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
15204         implementation.
15206 2023-07-31  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
15208         * combine.cc (simplify_compare_const): Narrow comparison of
15209         memory and constant.
15210         (try_combine): Adapt new function signature.
15211         (simplify_comparison): Adapt new function signature.
15213 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
15215         * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
15216         variable.
15217         (expand_vector_init_insert_elems): Ditto.
15219 2023-07-31  Hao Liu  <hliu@os.amperecomputing.com>
15221         PR target/110625
15222         * config/aarch64/aarch64.cc (count_ops): Only '* count' for
15223         single_defuse_cycle while counting reduction_latency.
15225 2023-07-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15227         * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
15228         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
15229         (COND_ADD): Remove.
15230         (COND_SUB): Ditto.
15231         (COND_MUL): Ditto.
15232         (COND_DIV): Ditto.
15233         (COND_MOD): Ditto.
15234         (COND_RDIV): Ditto.
15235         (COND_MIN): Ditto.
15236         (COND_MAX): Ditto.
15237         (COND_FMIN): Ditto.
15238         (COND_FMAX): Ditto.
15239         (COND_AND): Ditto.
15240         (COND_IOR): Ditto.
15241         (COND_XOR): Ditto.
15242         (COND_SHL): Ditto.
15243         (COND_SHR): Ditto.
15244         (COND_FMA): Ditto.
15245         (COND_FMS): Ditto.
15246         (COND_FNMA): Ditto.
15247         (COND_FNMS): Ditto.
15248         (COND_NEG): Ditto.
15249         (COND_LEN_ADD): Ditto.
15250         (COND_LEN_SUB): Ditto.
15251         (COND_LEN_MUL): Ditto.
15252         (COND_LEN_DIV): Ditto.
15253         (COND_LEN_MOD): Ditto.
15254         (COND_LEN_RDIV): Ditto.
15255         (COND_LEN_MIN): Ditto.
15256         (COND_LEN_MAX): Ditto.
15257         (COND_LEN_FMIN): Ditto.
15258         (COND_LEN_FMAX): Ditto.
15259         (COND_LEN_AND): Ditto.
15260         (COND_LEN_IOR): Ditto.
15261         (COND_LEN_XOR): Ditto.
15262         (COND_LEN_SHL): Ditto.
15263         (COND_LEN_SHR): Ditto.
15264         (COND_LEN_FMA): Ditto.
15265         (COND_LEN_FMS): Ditto.
15266         (COND_LEN_FNMA): Ditto.
15267         (COND_LEN_FNMS): Ditto.
15268         (COND_LEN_NEG): Ditto.
15269         (ADD): New macro define.
15270         (SUB): Ditto.
15271         (MUL): Ditto.
15272         (DIV): Ditto.
15273         (MOD): Ditto.
15274         (RDIV): Ditto.
15275         (MIN): Ditto.
15276         (MAX): Ditto.
15277         (FMIN): Ditto.
15278         (FMAX): Ditto.
15279         (AND): Ditto.
15280         (IOR): Ditto.
15281         (XOR): Ditto.
15282         (SHL): Ditto.
15283         (SHR): Ditto.
15284         (FMA): Ditto.
15285         (FMS): Ditto.
15286         (FNMA): Ditto.
15287         (FNMS): Ditto.
15288         (NEG): Ditto.
15290 2023-07-31  Roger Sayle  <roger@nextmovesoftware.com>
15292         PR target/110843
15293         * config/i386/i386-features.cc (compute_convert_gain): Check
15294         TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
15295         and V4SImode rotates in STV.
15296         (general_scalar_chain::convert_rotate): Likewise.
15298 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
15300         * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
15301         * config/riscv/riscv-protos.h (get_mask_mode): Update return
15302         type.
15303         * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
15304         `.require ()`.
15305         (emit_vlmax_insn): Ditto.
15306         (emit_vlmax_fp_insn): Ditto.
15307         (emit_vlmax_ternary_insn): Ditto.
15308         (emit_vlmax_fp_ternary_insn): Ditto.
15309         (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
15310         (emit_nonvlmax_insn): Ditto.
15311         (emit_vlmax_slide_insn): Ditto.
15312         (emit_nonvlmax_slide_tu_insn): Ditto.
15313         (emit_vlmax_merge_insn): Ditto.
15314         (emit_vlmax_masked_insn): Ditto.
15315         (emit_nonvlmax_masked_insn): Ditto.
15316         (emit_vlmax_masked_store_insn): Ditto.
15317         (emit_nonvlmax_masked_store_insn): Ditto.
15318         (emit_vlmax_masked_mu_insn): Ditto.
15319         (emit_nonvlmax_tu_insn): Ditto.
15320         (emit_nonvlmax_fp_tu_insn): Ditto.
15321         (emit_scalar_move_insn): Ditto.
15322         (emit_vlmax_compress_insn): Ditto.
15323         (emit_vlmax_reduction_insn): Ditto.
15324         (emit_vlmax_fp_reduction_insn): Ditto.
15325         (emit_nonvlmax_fp_reduction_insn): Ditto.
15326         (expand_vec_series): Ditto.
15327         (expand_vector_init_merge_repeating_sequence): Ditto.
15328         (expand_vec_perm): Ditto.
15329         (shuffle_merge_patterns): Ditto.
15330         (shuffle_compress_patterns): Ditto.
15331         (shuffle_decompress_patterns): Ditto.
15332         (expand_reduction): Ditto.
15333         (get_mask_mode): Update return type.
15334         * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
15335         is valid, and use new get_mask_mode interface.
15337 2023-07-31  Pan Li  <pan2.li@intel.com>
15339         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
15340         Move rm suffix before mask.
15342 2023-07-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15344         * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
15345         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
15346         support.
15348 2023-07-29  Roger Sayle  <roger@nextmovesoftware.com>
15350         PR target/110790
15351         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
15352         (extzv<mode>): Likewise.
15353         (insv<mode>): Likewise.
15354         (*testqi_ext_3): Likewise.
15355         (*btr<mode>_2): Likewise.
15356         (define_split): Likewise.
15357         (*btsq_imm): Likewise.
15358         (*btrq_imm): Likewise.
15359         (*btcq_imm): Likewise.
15360         (define_peephole2 x3): Likewise.
15361         (*bt<mode>): Likewise
15362         (*bt<mode>_mask): New define_insn_and_split.
15363         (*jcc_bt<mode>): Use QImode for offsets.
15364         (*jcc_bt<mode>_1): Delete obsolete pattern.
15365         (*jcc_bt<mode>_mask): Use QImode offsets.
15366         (*jcc_bt<mode>_mask_1): Likewise.
15367         (define_split): Likewise.
15368         (*bt<mode>_setcqi): Likewise.
15369         (*bt<mode>_setncqi): Likewise.
15370         (*bt<mode>_setnc<mode>): Likewise.
15371         (*bt<mode>_setncqi_2): Likewise.
15372         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
15373         (bmi2_bzhi_<mode>3): Use QImode offsets.
15374         (*bmi2_bzhi_<mode>3): Likewise.
15375         (*bmi2_bzhi_<mode>3_1): Likewise.
15376         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
15377         (@tbm_bextri_<mode>): Likewise.
15379 2023-07-29  Jan Hubicka  <jh@suse.cz>
15381         * profile-count.cc (profile_probability::sqrt): New member function.
15382         (profile_probability::pow): Likewise.
15383         * profile-count.h: (profile_probability::sqrt): Declare
15384         (profile_probability::pow): Likewise.
15385         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
15387 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
15389         * gimple-range-cache.cc (ssa_cache::merge_range): New.
15390         (ssa_lazy_cache::merge_range): New.
15391         * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
15392         (class ssa_lazy_cache): Ditto.
15393         * gimple-range.cc (assume_query::calculate_op): Use merge_range.
15395 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
15397         * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
15398         Move from value-query.cc.
15399         (substitute_and_fold_engine::value_of_stmt): Ditto.
15400         (substitute_and_fold_engine::range_of_expr): New.
15401         * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
15402         range_query.  New prototypes.
15403         * value-query.cc (value_query::value_on_edge): Relocate.
15404         (value_query::value_of_stmt): Ditto.
15405         * value-query.h (class value_query): Remove.
15406         (class range_query): Remove base class.  Adjust prototypes.
15408 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
15410         PR tree-optimization/110205
15411         * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
15412         * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
15413         Add final override.
15414         * range-op.cc (operator_lshift): Add missing final overrides.
15415         (operator_rshift): Ditto.
15417 2023-07-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
15419         * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
15420         optimizations in BPF target.
15422 2023-07-28  Honza  <jh@ryzen4.suse.cz>
15424         * cfgloopmanip.cc (loop_count_in): Break out from ...
15425         (loop_exit_for_scaling): Break out from ...
15426         (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
15427         add more sanity check and debug info.
15428         (scale_loop_profile): ... here.
15429         (create_empty_loop_on_edge): Fix whitespac.
15430         * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
15431         * loop-unroll.cc (unroll_loop_constant_iterations): Use
15432         update_loop_exit_probability_scale_dom_bbs.
15433         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
15434         (tree_transform_and_unroll_loop): Use
15435         update_loop_exit_probability_scale_dom_bbs.
15436         * tree-ssa-loop-split.cc (split_loop): Use
15437         update_loop_exit_probability_scale_dom_bbs.
15439 2023-07-28  Jan Hubicka  <jh@suse.cz>
15441         PR middle-end/77689
15442         * tree-ssa-loop-split.cc: Include value-query.h.
15443         (split_at_bb_p): Analyze cases where EQ/NE can be turned
15444         into LT/LE/GT/GE; return updated guard code.
15445         (split_loop): Use guard code.
15447 2023-07-28  Roger Sayle  <roger@nextmovesoftware.com>
15448             Richard Biener  <rguenther@suse.de>
15450         PR middle-end/28071
15451         PR rtl-optimization/110587
15452         * expr.cc (emit_group_load_1): Simplify logic for calling
15453         force_reg on ORIG_SRC, to avoid making a copy if the source
15454         is already in a pseudo register.
15456 2023-07-28  Jan Hubicka  <jh@suse.cz>
15458         PR middle-end/106923
15459         * tree-ssa-loop-split.cc (connect_loops): Change probability
15460         of the test preconditioning second loop to very_likely.
15461         (fix_loop_bb_probability): Handle correctly case where
15462         on of the arms of the conditional is empty.
15463         (split_loop): Fold the test guarding first condition to
15464         see if it is constant true; Set correct entry block
15465         probabilities of the split loops; determine correct loop
15466         eixt probabilities.
15468 2023-07-28  xuli  <xuli1@eswincomputing.com>
15470         * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
15471         vsadd[u] and vssub[u].
15472         * config/riscv/vector.md: Ditto.
15474 2023-07-28  Jan Hubicka  <jh@suse.cz>
15476         * tree-ssa-loop-split.cc (split_loop): Also support NE driven
15477         loops when IV test is not overflowing.
15479 2023-07-28  liuhongt  <hongtao.liu@intel.com>
15481         PR target/110788
15482         * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
15483         UNSPEC_MASKOP.
15484         (avx512cd_maskw_vec_dup<mode>): Ditto.
15486 2023-07-27  David Faust  <david.faust@oracle.com>
15488         PR target/110782
15489         PR target/110784
15490         * config/bpf/bpf.opt (msmov): New option.
15491         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
15492         * config/bpf/bpf.md (*extendsidi2): New.
15493         (extendhidi2): New.
15494         (extendqidi2): New.
15495         (extendsisi2): New.
15496         (extendhisi2): New.
15497         (extendqisi2): New.
15498         * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
15499         (eBPF Options): Add -m[no-]smov.  Document that -mcpu=v4
15500         also enables -msmov.
15502 2023-07-27  David Faust  <david.faust@oracle.com>
15504         * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
15505         Add -mbswap and -msdiv eBPF options.
15506         (eBPF Options): Remove -mkernel.  Add -mno-{jmpext, jmp32,
15507         alu32, v3-atomics, bswap, sdiv}.  Document that -mcpu=v4 also
15508         enables -msdiv.
15510 2023-07-27  David Faust  <david.faust@oracle.com>
15512         * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
15513         in pseudo-C dialect output template.
15514         (sub<AM:mode>3): Likewise.
15516 2023-07-27  Jan Hubicka  <jh@suse.cz>
15518         * tree-vect-loop.cc (optimize_mask_stores): Make store
15519         likely.
15521 2023-07-27  Jan Hubicka  <jh@suse.cz>
15523         * cfgloop.h (single_dom_exit): Declare.
15524         * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
15525         * cfgrtl.cc (struct cfg_hooks): Fix comment.
15526         * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
15527         * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
15528         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
15529         Break out from ...
15530         (tree_transform_and_unroll_loop): ... here;
15532 2023-07-27  Jan Hubicka  <jh@suse.cz>
15534         * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
15535         tree-ssa-loop-manip.cc and avoid recursion.
15536         (scale_loop_profile): Use scale_dominated_blocks_in_loop.
15537         (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
15538         flag.
15539         * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
15540         (scale_dominated_blocks_in_loop): Declare.
15541         * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
15542         (change_edge_frequency): Remove.
15543         * predict.h (change_edge_frequency): Remove.
15544         * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
15545         cfgloopmanip.cc.
15546         (niter_for_unrolled_loop): Remove.
15547         (tree_transform_and_unroll_loop): Fix profile update.
15549 2023-07-27  Jan Hubicka  <jh@suse.cz>
15551         * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
15552         to guessed; fix count of new_bb.
15554 2023-07-27  Jan Hubicka  <jh@suse.cz>
15556         * profile-count.h (profile_count::apply_probability): Fix
15557         handling of uninitialized probabilities, optimize scaling
15558         by probability 1.
15560 2023-07-27  Richard Biener  <rguenther@suse.de>
15562         PR tree-optimization/91838
15563         * gimple-match-head.cc: Include attribs.h and asan.h.
15564         * generic-match-head.cc: Likewise.
15565         * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
15567 2023-07-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15569         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
15570         (ADJUST_ALIGNMENT): Ditto.
15571         (ADJUST_PRECISION): Ditto.
15572         (VLS_MODES): Ditto.
15573         (VECTOR_MODE_WITH_PREFIX): Ditto.
15574         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
15575         * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
15576         * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
15577         (legitimize_move): Enable basic VLS modes support.
15578         (get_vlmul): Ditto.
15579         (get_ratio): Ditto.
15580         (get_vector_mode): Ditto.
15581         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
15582         * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
15583         (VLS_ENTRY): New macro.
15584         (riscv_v_ext_mode_p): Add vls modes.
15585         (riscv_get_v_regno_alignment): New function.
15586         (riscv_print_operand): Add vls modes.
15587         (riscv_hard_regno_nregs): Ditto.
15588         (riscv_hard_regno_mode_ok): Ditto.
15589         (riscv_regmode_natural_size): Ditto.
15590         (riscv_vectorize_preferred_vector_alignment): Ditto.
15591         * config/riscv/riscv.md: Ditto.
15592         * config/riscv/vector-iterators.md: Ditto.
15593         * config/riscv/vector.md: Ditto.
15594         * config/riscv/autovec-vls.md: New file.
15596 2023-07-27  Pan Li  <pan2.li@intel.com>
15598         * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
15599         (vread_csr): Ditto.
15600         (vwrite_csr): Ditto.
15602 2023-07-27  demin.han  <demin.han@starfivetech.com>
15604         * config/riscv/autovec.md: Delete which_alternative use in split
15606 2023-07-27  Richard Biener  <rguenther@suse.de>
15608         * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
15609         use a worklist ...
15610         (pass_sink_code::execute): ... in the caller.
15612 2023-07-27  Kewen Lin  <linkw@linux.ibm.com>
15613             Richard Biener  <rguenther@suse.de>
15615         PR tree-optimization/110776
15616         * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
15617         as scalar load.
15619 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
15621         * config/riscv/riscv.md: Include zicond.md
15622         * config/riscv/zicond.md: New file.
15624 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
15626         * common/config/riscv/riscv-common.cc: New extension.
15627         * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
15628         (TARGET_ZICOND): New target.
15630 2023-07-26  Carl Love  <cel@us.ibm.com>
15632         * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
15633         specifies the number of built-in arguments to check.
15634         (altivec_resolve_overloaded_builtin): Update calls to find_instance
15635         to pass the number of built-in arguments to be checked.
15637 2023-07-26  David Faust  <david.faust@oracle.com>
15639         * config/bpf/bpf.opt (mv3-atomics): New option.
15640         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
15641         * config/bpf/bpf.h (enum_reg_class): Add R0 class.
15642         (REG_CLASS_NAMES): Likewise.
15643         (REG_CLASS_CONTENTS): Likewise.
15644         (REGNO_REG_CLASS): Handle R0.
15645         * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
15646         (UNSPEC_AAND): New unspec.
15647         (UNSPEC_AOR): Likewise.
15648         (UNSPEC_AXOR): Likewise.
15649         (UNSPEC_AFADD): Likewise.
15650         (UNSPEC_AFAND): Likewise.
15651         (UNSPEC_AFOR): Likewise.
15652         (UNSPEC_AFXOR): Likewise.
15653         (UNSPEC_AXCHG): Likewise.
15654         (UNSPEC_ACMPX): Likewise.
15655         (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
15656         Move to...
15657         * config/bpf/atomic.md: ...Here. New file.
15658         * config/bpf/constraints.md (t): New constraint for R0.
15659         * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
15661 2023-07-26  Matthew Malcomson  <matthew.malcomson@arm.com>
15663         * tree-vect-stmts.cc (get_group_load_store_type): Reformat
15664         comment.
15666 2023-07-26  Carl Love  <cel@us.ibm.com>
15668         * config/rs6000/rs6000-builtins.def: Rename
15669         __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
15670         __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
15671         __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
15672         __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
15673         __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
15674         __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
15675         Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
15676         VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
15677         VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
15678         VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
15679         Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
15680         vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
15681         vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
15682         vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
15683         * config/rs6000/rs6000-c.cc (find_instance): Add case
15684         RS6000_OVLD_VEC_REPLACE_UN.
15685         * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
15686         Fix first argument type.  Rename VREPLACE_UN_UV4SI as
15687         VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
15688         VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
15689         VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
15690         VREPLACE_UN_V2DF as VREPLACE_UN_DF.
15691         * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
15692         REPLACE_ELT_V for vector modes.
15693         (REPLACE_ELT): New scalar mode iterator.
15694         (REPLACE_ELT_char): Add scalar attributes.
15695         (vreplace_un_<mode>): Change iterator and mode attribute.
15697 2023-07-26  David Malcolm  <dmalcolm@redhat.com>
15699         PR analyzer/104940
15700         * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
15702 2023-07-26  Richard Biener  <rguenther@suse.de>
15704         PR tree-optimization/106081
15705         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
15706         Assign layout -1 to splats.
15708 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15710         * range-op-mixed.h (class operator_cast): Add update_bitmask.
15711         * range-op.cc (operator_cast::update_bitmask): New.
15712         (operator_cast::fold_range): Call update_bitmask.
15714 2023-07-26  Li Xu  <xuli1@eswincomputing.com>
15716         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
15717         scalar type to float16, eliminate warning.
15718         (vfloat16mf4x3_t): Ditto.
15719         (vfloat16mf4x4_t): Ditto.
15720         (vfloat16mf4x5_t): Ditto.
15721         (vfloat16mf4x6_t): Ditto.
15722         (vfloat16mf4x7_t): Ditto.
15723         (vfloat16mf4x8_t): Ditto.
15724         (vfloat16mf2x2_t): Ditto.
15725         (vfloat16mf2x3_t): Ditto.
15726         (vfloat16mf2x4_t): Ditto.
15727         (vfloat16mf2x5_t): Ditto.
15728         (vfloat16mf2x6_t): Ditto.
15729         (vfloat16mf2x7_t): Ditto.
15730         (vfloat16mf2x8_t): Ditto.
15731         (vfloat16m1x2_t): Ditto.
15732         (vfloat16m1x3_t): Ditto.
15733         (vfloat16m1x4_t): Ditto.
15734         (vfloat16m1x5_t): Ditto.
15735         (vfloat16m1x6_t): Ditto.
15736         (vfloat16m1x7_t): Ditto.
15737         (vfloat16m1x8_t): Ditto.
15738         (vfloat16m2x2_t): Ditto.
15739         (vfloat16m2x3_t): Ditto.
15740         (vfloat16m2x4_t): Ditto.
15741         (vfloat16m4x2_t): Ditto.
15742         * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
15743         * config/riscv/vector.md: add tuple mode in attr sew.
15745 2023-07-26  Uros Bizjak  <ubizjak@gmail.com>
15747         PR target/110762
15748         * config/i386/i386.md (plusminusmult): New code iterator.
15749         * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
15750         (movq_<mode>_to_sse): New expander.
15751         (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
15752         subv2sf3 and mulv2sf3 using plusminusmult code iterator.  Rewrite
15753         as a wrapper around V4SFmode operation.
15754         (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
15755         nonimmediate_operand.
15756         (*mmx_addv2sf3): Remove SSE alternatives.  Change operand 1 and
15757         operand 2 predicates to nonimmediate_operand.
15758         (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
15759         (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
15760         (*mmx_subv2sf3): Remove SSE alternatives.  Change operand 1 and
15761         operand 2 predicates to nonimmediate_operand.
15762         (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
15763         nonimmediate_operand.
15764         (*mmx_mulv2sf3): Remove SSE alternatives.  Change operand 1 and
15765         operand 2 predicates to nonimmediate_operand.
15766         (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
15767         (<smaxmin:code>v2sf3): Ditto.
15768         (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
15769         predicates to nonimmediate_operand.
15770         (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives.  Change
15771         operand 1 and operand 2 predicates to nonimmediate_operand.
15772         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
15773         (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
15774         (*mmx_haddv2sf3_low): Ditto.
15775         (*mmx_hsubv2sf3_low): Ditto.
15776         (vec_addsubv2sf3): Ditto.
15777         (*mmx_maskcmpv2sf3_comm): Remove.
15778         (*mmx_maskcmpv2sf3): Remove.
15779         (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
15780         (vcond<V2FI:mode>v2sf): Ditto.
15781         (fmav2sf4): Ditto.
15782         (fmsv2sf4): Ditto.
15783         (fnmav2sf4): Ditto.
15784         (fnmsv2sf4): Ditto.
15785         (fix_truncv2sfv2si2): Ditto.
15786         (fixuns_truncv2sfv2si2): Ditto.
15787         (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
15788         Change operand 1 predicate to nonimmediate_operand.
15789         (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
15790         (floatunsv2siv2sf2): Ditto.
15791         (mmx_floatv2siv2sf2): Remove SSE alternatives.
15792         Change operand 1 predicate to nonimmediate_operand.
15793         (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
15794         (rintv2sf2): Ditto.
15795         (lrintv2sfv2si2): Ditto.
15796         (ceilv2sf2): Ditto.
15797         (lceilv2sfv2si2): Ditto.
15798         (floorv2sf2): Ditto.
15799         (lfloorv2sfv2si2): Ditto.
15800         (btruncv2sf2): Ditto.
15801         (roundv2sf2): Ditto.
15802         (lroundv2sfv2si2): Ditto.
15803         (*mmx_roundv2sf2): Remove.
15805 2023-07-26  Jose E. Marchesi  <jose.marchesi@oracle.com>
15807         * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
15809 2023-07-26  Richard Biener  <rguenther@suse.de>
15811         PR tree-optimization/110799
15812         * tree-ssa-pre.cc (compute_avail): More thoroughly match
15813         up TBAA behavior of redundant loads.
15815 2023-07-26  Jakub Jelinek  <jakub@redhat.com>
15817         PR tree-optimization/110755
15818         * range-op-float.cc (frange_arithmetic): Change +0 result to -0
15819         for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
15820         it is exact op1 + (-op1) or op1 - op1.
15822 2023-07-26  Kewen Lin  <linkw@linux.ibm.com>
15824         PR target/110741
15825         * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
15826         operands output with "x".
15828 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15830         * range-op.cc (class operator_absu): Add update_bitmask.
15831         (operator_absu::update_bitmask): New.
15833 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15835         * range-op-mixed.h (class operator_abs): Add update_bitmask.
15836         * range-op.cc (operator_abs::update_bitmask): New.
15838 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15840         * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
15841         * range-op.cc (operator_bitwise_not::update_bitmask): New.
15843 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15845         * range-op.cc (update_known_bitmask): Handle unary operators.
15847 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
15849         * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
15851 2023-07-26  Jin Ma  <jinma@linux.alibaba.com>
15853         * config/riscv/riscv.md: Likewise.
15855 2023-07-26  Jan Hubicka  <jh@suse.cz>
15857         * profile-count.cc (profile_count::to_sreal_scale): Value is not know
15858         if we divide by zero.
15860 2023-07-25  David Faust  <david.faust@oracle.com>
15862         * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
15863         enclosing parentheses for pseudo-C dialect.
15864         * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
15865         operands of pseudo-C dialect output templates where needed.
15866         (zero_extendqidi2): Likewise.
15867         (zero_extendsidi2): Likewise.
15868         (*mov<MM:mode>): Likewise.
15870 2023-07-25  Aldy Hernandez  <aldyh@redhat.com>
15872         * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
15873         (bit_value_mult_const): Same.
15874         (get_individual_bits): Same.
15876 2023-07-25  Haochen Gui  <guihaoc@gcc.gnu.org>
15878         PR target/103605
15879         * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
15880         fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
15881         * config/rs6000/rs6000.md (FMINMAX): New int iterator.
15882         (minmax_op): New int attribute.
15883         (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
15884         (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
15885         * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
15886         pattern to fmaxdf3.
15887         (__builtin_vsx_xsmindp): Set pattern to fmindf3.
15889 2023-07-24  David Faust  <david.faust@oracle.com>
15891         * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
15893 2023-07-24  Drew Ross  <drross@redhat.com>
15894             Jakub Jelinek  <jakub@redhat.com>
15896         PR middle-end/109986
15897         * generic-match-head.cc (bitwise_equal_p): New macro.
15898         * gimple-match-head.cc (bitwise_equal_p): New macro.
15899         (gimple_nop_convert): Declare.
15900         (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
15901         * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
15903 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
15905         * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
15906         single quote rather than backquote in diagnostic.
15908 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
15910         PR target/110783
15911         * config/bpf/bpf.opt: New command-line option -msdiv.
15912         * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
15913         * config/bpf/bpf.cc (bpf_option_override): Initialize
15914         bpf_has_sdiv.
15915         * doc/invoke.texi (eBPF Options): Document -msdiv.
15917 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
15919         * config/riscv/riscv.cc (riscv_option_override): Spell out
15920         greater than and use cannot in diagnostic string.
15922 2023-07-24  Richard Biener  <rguenther@suse.de>
15924         * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
15925         (_slp_tree::vec_stmts): Remove.
15926         (SLP_TREE_VEC_STMTS): Remove.
15927         * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
15928         (_slp_tree::_slp_tree): Adjust.
15929         (_slp_tree::~_slp_tree): Likewise.
15930         (vect_get_slp_vect_def): Simplify.
15931         (vect_get_slp_defs): Likewise.
15932         (vect_transform_slp_perm_load_1): Adjust.
15933         (vect_add_slp_permutation): Likewise.
15934         (vect_schedule_slp_node): Likewise.
15935         (vectorize_slp_instance_root_stmt): Likewise.
15936         (vect_schedule_scc): Likewise.
15937         * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
15938         (vectorizable_call): Likewise.
15939         (vectorizable_call): Likewise.
15940         (vect_create_vectorized_demotion_stmts): Likewise.
15941         (vectorizable_conversion): Likewise.
15942         (vectorizable_assignment): Likewise.
15943         (vectorizable_shift): Likewise.
15944         (vectorizable_operation): Likewise.
15945         (vectorizable_load): Likewise.
15946         (vectorizable_condition): Likewise.
15947         (vectorizable_comparison): Likewise.
15948         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
15949         (vectorize_fold_left_reduction): Use push_vec_def.
15950         (vect_transform_reduction): Likewise.
15951         (vect_transform_cycle_phi): Likewise.
15952         (vectorizable_lc_phi): Likewise.
15953         (vectorizable_phi): Likewise.
15954         (vectorizable_recurr): Likewise.
15955         (vectorizable_induction): Likewise.
15956         (vectorizable_live_operation): Likewise.
15958 2023-07-24  Richard Biener  <rguenther@suse.de>
15960         * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
15962 2023-07-24  Richard Biener  <rguenther@suse.de>
15964         * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
15965         * config/i386/i386-expand.cc: Likewise.
15966         * config/i386/i386-features.cc: Likewise.
15967         * config/i386/i386-options.cc: Likewise.
15969 2023-07-24  Robin Dapp  <rdapp@ventanamicro.com>
15971         * tree-vect-stmts.cc (vectorizable_conversion): Handle
15972         more demotion/promotion for modifier == NONE.
15974 2023-07-24  Roger Sayle  <roger@nextmovesoftware.com>
15976         PR target/110787
15977         PR target/110790
15978         Revert patch.
15979         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
15980         (extzv<mode>): Likewise.
15981         (insv<mode>): Likewise.
15982         (*testqi_ext_3): Likewise.
15983         (*btr<mode>_2): Likewise.
15984         (define_split): Likewise.
15985         (*btsq_imm): Likewise.
15986         (*btrq_imm): Likewise.
15987         (*btcq_imm): Likewise.
15988         (define_peephole2 x3): Likewise.
15989         (*bt<mode>): Likewise
15990         (*bt<mode>_mask): New define_insn_and_split.
15991         (*jcc_bt<mode>): Use QImode for offsets.
15992         (*jcc_bt<mode>_1): Delete obsolete pattern.
15993         (*jcc_bt<mode>_mask): Use QImode offsets.
15994         (*jcc_bt<mode>_mask_1): Likewise.
15995         (define_split): Likewise.
15996         (*bt<mode>_setcqi): Likewise.
15997         (*bt<mode>_setncqi): Likewise.
15998         (*bt<mode>_setnc<mode>): Likewise.
15999         (*bt<mode>_setncqi_2): Likewise.
16000         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
16001         (bmi2_bzhi_<mode>3): Use QImode offsets.
16002         (*bmi2_bzhi_<mode>3): Likewise.
16003         (*bmi2_bzhi_<mode>3_1): Likewise.
16004         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
16005         (@tbm_bextri_<mode>): Likewise.
16007 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
16009         * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
16010         * config/bpf/bpf.opt (mkernel): Remove option.
16011         * config/bpf/bpf.cc (bpf_target_macros): Do not define
16012         BPF_KERNEL_VERSION_CODE.
16014 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
16016         PR target/110786
16017         * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
16018         (mbswap): New option.
16019         * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
16020         * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
16021         * config/bpf/bpf.md: Use bswap instructions if available for
16022         bswap* insn, and fix constraint.
16023         * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
16025 2023-07-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16027         * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
16028         (mask_len_fold_left_plus_<mode>): Ditto.
16029         * config/riscv/riscv-protos.h (enum insn_type): New enum.
16030         (enum reduction_type): Ditto.
16031         (expand_reduction): Add in-order reduction.
16032         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
16033         (expand_reduction): Add in-order reduction.
16035 2023-07-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16037         * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
16038         (vectorize_fold_left_reduction): Ditto.
16039         (vectorizable_reduction): Ditto.
16040         (vect_transform_reduction): Ditto.
16042 2023-07-24  Richard Biener  <rguenther@suse.de>
16044         PR tree-optimization/110777
16045         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
16046         Avoid propagating abnormals.
16048 2023-07-24  Richard Biener  <rguenther@suse.de>
16050         PR tree-optimization/110766
16051         * tree-scalar-evolution.cc
16052         (analyze_and_compute_bitwise_induction_effect): Check the PHI
16053         is defined in the loop header.
16055 2023-07-24  Kewen Lin  <linkw@linux.ibm.com>
16057         PR tree-optimization/110740
16058         * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
16059         loop with a single scalar iteration.
16061 2023-07-24  Pan Li  <pan2.li@intel.com>
16063         * config/riscv/riscv-vector-builtins-shapes.cc
16064         (struct alu_frm_def): Take range check.
16066 2023-07-22  Vineet Gupta  <vineetg@rivosinc.com>
16068         PR target/110748
16069         * config/riscv/predicates.md (const_0_operand): Add back
16070         const_double.
16072 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
16074         * config/i386/i386-expand.cc (ix86_expand_move): Disable the
16075         64-bit insertions into TImode optimizations with -O0, unless
16076         the function has the "naked" attribute (for PR target/110533).
16078 2023-07-22  Andrew Pinski  <apinski@marvell.com>
16080         PR target/110778
16081         * rtl.h (extended_count): Change last argument type
16082         to bool.
16084 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
16086         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
16087         (extzv<mode>): Likewise.
16088         (insv<mode>): Likewise.
16089         (*testqi_ext_3): Likewise.
16090         (*btr<mode>_2): Likewise.
16091         (define_split): Likewise.
16092         (*btsq_imm): Likewise.
16093         (*btrq_imm): Likewise.
16094         (*btcq_imm): Likewise.
16095         (define_peephole2 x3): Likewise.
16096         (*bt<mode>): Likewise
16097         (*bt<mode>_mask): New define_insn_and_split.
16098         (*jcc_bt<mode>): Use QImode for offsets.
16099         (*jcc_bt<mode>_1): Delete obsolete pattern.
16100         (*jcc_bt<mode>_mask): Use QImode offsets.
16101         (*jcc_bt<mode>_mask_1): Likewise.
16102         (define_split): Likewise.
16103         (*bt<mode>_setcqi): Likewise.
16104         (*bt<mode>_setncqi): Likewise.
16105         (*bt<mode>_setnc<mode>): Likewise.
16106         (*bt<mode>_setncqi_2): Likewise.
16107         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
16108         (bmi2_bzhi_<mode>3): Use QImode offsets.
16109         (*bmi2_bzhi_<mode>3): Likewise.
16110         (*bmi2_bzhi_<mode>3_1): Likewise.
16111         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
16112         (@tbm_bextri_<mode>): Likewise.
16114 2023-07-22  Jeff Law  <jlaw@ventanamicro.com>
16116         * config/bfin/bfin.md (ones): Fix length computation.
16118 2023-07-22  Vladimir N. Makarov  <vmakarov@redhat.com>
16120         * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
16121         (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
16122         instead of FRAME_POINTER_REGNUM to spill pseudos.
16124 2023-07-21  Roger Sayle  <roger@nextmovesoftware.com>
16125             Richard Biener  <rguenther@suse.de>
16127         PR c/110699
16128         * gimplify.cc (gimplify_compound_lval):  If the array's type
16129         is error_mark_node then return GS_ERROR.
16131 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
16133         PR target/110770
16134         * config/bpf/bpf.opt: Added option -masm=<dialect>.
16135         * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
16136         * config/bpf/bpf.cc (bpf_print_register): New function.
16137         (bpf_print_register): Support pseudo-c syntax for registers.
16138         (bpf_print_operand_address): Likewise.
16139         * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
16140         (ASSEMBLER_DIALECT): Define.
16141         * config/bpf/bpf.md: Added pseudo-c templates.
16142         * doc/invoke.texi (-masm=): New eBPF option item.
16144 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
16146         * config/bpf/bpf.md: fixed template for neg instruction.
16148 2023-07-21  Jan Hubicka  <jh@suse.cz>
16150         PR target/110727
16151         * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
16152         profiles by vectorization factor.
16153         (vect_transform_loop): Check for flat profiles.
16155 2023-07-21  Jan Hubicka  <jh@suse.cz>
16157         * cfgloop.h (maybe_flat_loop_profile): Declare
16158         * cfgloopanal.cc (maybe_flat_loop_profile): New function.
16159         * tree-cfg.cc (print_loop_info): Print info about flat profiles.
16161 2023-07-21  Jan Hubicka  <jh@suse.cz>
16163         * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
16164         * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
16165         * predict.cc (estimate_bb_frequencies): Likewise.
16166         * profile.cc (branch_prob): Likewise.
16167         * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
16169 2023-07-21  Iain Sandoe  <iain@sandoe.co.uk>
16171         * config.in: Regenerate.
16172         * config/darwin.h (DARWIN_LD_DEMANGLE): New.
16173         (LINK_COMMAND_SPEC_A): Add demangle handling.
16174         * configure: Regenerate.
16175         * configure.ac: Detect linker support for '-demangle'.
16177 2023-07-21  Jan Hubicka  <jh@suse.cz>
16179         * sreal.cc (sreal::to_nearest_int): New.
16180         (sreal_verify_basics): Verify also to_nearest_int.
16181         (verify_aritmetics): Likewise.
16182         (sreal_verify_conversions): New.
16183         (sreal_cc_tests): Call sreal_verify_conversions.
16184         * sreal.h: (sreal::to_nearest_int): Declare
16186 2023-07-21  Jan Hubicka  <jh@suse.cz>
16188         * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
16189         (should_duplicate_loop_header_p): Return info on profitability.
16190         (do_while_loop_p): Watch for constant conditionals.
16191         (update_profile_after_ch): Do not sanity check that all
16192         static exits are taken.
16193         (ch_base::copy_headers): Run on all loops.
16194         (pass_ch::process_loop_p): Improve heuristics by handling also
16195         do_while loop and duplicating shortest sequence containing all
16196         winning blocks.
16198 2023-07-21  Jan Hubicka  <jh@suse.cz>
16200         * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
16201         tests first; update finite_p flag.
16203 2023-07-21  Jan Hubicka  <jh@suse.cz>
16205         * cfgloop.cc (flow_loop_dump): Use print_loop_info.
16206         * cfgloop.h (print_loop_info): Declare.
16207         * tree-cfg.cc (print_loop_info): Break out from ...; add
16208         printing of missing fields and profile
16209         (print_loop): ... here.
16211 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16213         * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
16215 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16217         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
16218         (vectorizable_operation): Ditto.
16220 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16222         * config/riscv/autovec.md: Align order of mask and len.
16223         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
16224         (expand_gather_scatter): Ditto.
16225         * doc/md.texi: Ditto.
16226         * internal-fn.cc (add_len_and_mask_args): Ditto.
16227         (add_mask_and_len_args): Ditto.
16228         (expand_partial_load_optab_fn): Ditto.
16229         (expand_partial_store_optab_fn): Ditto.
16230         (expand_scatter_store_optab_fn): Ditto.
16231         (expand_gather_load_optab_fn): Ditto.
16232         (internal_fn_len_index): Ditto.
16233         (internal_fn_mask_index): Ditto.
16234         (internal_len_load_store_bias): Ditto.
16235         * tree-vect-stmts.cc (vectorizable_store): Ditto.
16236         (vectorizable_load): Ditto.
16238 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16240         * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
16241         (mask_len_load<mode><vm>): Ditto.
16242         (len_maskstore<mode><vm>): Ditto.
16243         (mask_len_store<mode><vm>): Ditto.
16244         (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
16245         (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
16246         (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
16247         (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
16248         (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
16249         (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
16250         (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
16251         (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
16252         (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
16253         (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
16254         (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
16255         (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
16256         (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
16257         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
16258         (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
16259         (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
16260         (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
16261         (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
16262         (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
16263         (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
16264         (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
16265         (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
16266         (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
16267         (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
16268         (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
16269         (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
16270         (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
16271         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
16272         * doc/md.texi: Ditto.
16273         * genopinit.cc (main): Ditto.
16274         (CMP_NAME): Ditto. Ditto.
16275         * gimple-fold.cc (arith_overflowed_p): Ditto.
16276         (gimple_fold_partial_load_store_mem_ref): Ditto.
16277         (gimple_fold_call): Ditto.
16278         * internal-fn.cc (len_maskload_direct): Ditto.
16279         (mask_len_load_direct): Ditto.
16280         (len_maskstore_direct): Ditto.
16281         (mask_len_store_direct): Ditto.
16282         (expand_call_mem_ref): Ditto.
16283         (expand_len_maskload_optab_fn): Ditto.
16284         (expand_mask_len_load_optab_fn): Ditto.
16285         (expand_len_maskstore_optab_fn): Ditto.
16286         (expand_mask_len_store_optab_fn): Ditto.
16287         (direct_len_maskload_optab_supported_p): Ditto.
16288         (direct_mask_len_load_optab_supported_p): Ditto.
16289         (direct_len_maskstore_optab_supported_p): Ditto.
16290         (direct_mask_len_store_optab_supported_p): Ditto.
16291         (internal_load_fn_p): Ditto.
16292         (internal_store_fn_p): Ditto.
16293         (internal_gather_scatter_fn_p): Ditto.
16294         (internal_fn_len_index): Ditto.
16295         (internal_fn_mask_index): Ditto.
16296         (internal_fn_stored_value_index): Ditto.
16297         (internal_len_load_store_bias): Ditto.
16298         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
16299         (MASK_LEN_GATHER_LOAD): Ditto.
16300         (LEN_MASK_LOAD): Ditto.
16301         (MASK_LEN_LOAD): Ditto.
16302         (LEN_MASK_SCATTER_STORE): Ditto.
16303         (MASK_LEN_SCATTER_STORE): Ditto.
16304         (LEN_MASK_STORE): Ditto.
16305         (MASK_LEN_STORE): Ditto.
16306         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
16307         (supports_vec_scatter_store_p): Ditto.
16308         * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
16309         (target_supports_len_load_store_p): Ditto.
16310         * optabs.def (OPTAB_CD): Ditto.
16311         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
16312         (call_may_clobber_ref_p_1): Ditto.
16313         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
16314         (dse_optimize_stmt): Ditto.
16315         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
16316         (get_alias_ptr_type_for_ptr_address): Ditto.
16317         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
16318         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
16319         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
16320         (vect_get_strided_load_store_ops): Ditto.
16321         (vectorizable_store): Ditto.
16322         (vectorizable_load): Ditto.
16324 2023-07-21  Haochen Jiang  <haochen.jiang@intel.com>
16326         * config/i386/i386.opt: Fix a typo.
16328 2023-07-21  Richard Biener  <rguenther@suse.de>
16330         PR tree-optimization/88540
16331         * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
16332         with NaNs but handle the simple case by if-converting to a
16333         COND_EXPR.
16335 2023-07-21  Andrew Pinski  <apinski@marvell.com>
16337         * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
16338         transformation.
16340 2023-07-21  Richard Biener  <rguenther@suse.de>
16342         PR tree-optimization/110742
16343         * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
16344         Do not materialize an edge permutation in an external node with
16345         vector defs.
16346         (vect_slp_analyze_node_operations_1): Guard purely internal
16347         nodes better.
16349 2023-07-21  Jan Hubicka  <jh@suse.cz>
16351         * cfgloop.cc: Include sreal.h.
16352         (flow_loop_dump): Dump sreal iteration exsitmate.
16353         (get_estimated_loop_iterations): Update.
16354         * cfgloop.h (expected_loop_iterations_by_profile): Declare.
16355         * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
16356         (expected_loop_iterations_unbounded): Use new API.
16357         * cfgloopmanip.cc (scale_loop_profile): Use
16358         expected_loop_iterations_by_profile
16359         * predict.cc (pass_profile::execute): Likewise.
16360         * profile.cc (branch_prob): Likewise.
16361         * tree-ssa-loop-niter.cc: Include sreal.h.
16362         (estimate_numbers_of_iterations): Likewise
16364 2023-07-21  Kewen Lin  <linkw@linux.ibm.com>
16366         PR tree-optimization/110744
16367         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
16368         operand for ifn IFN_LEN_STORE.
16370 2023-07-21  liuhongt  <hongtao.liu@intel.com>
16372         PR target/89701
16373         * common.opt: (fcf-protection=): Add EnumSet attribute to
16374         support combination of params.
16376 2023-07-21  David Malcolm  <dmalcolm@redhat.com>
16378         PR middle-end/110612
16379         * text-art/table.cc (table_geometry::table_geometry): Drop m_table
16380         field.
16381         (table_geometry::table_x_to_canvas_x): Add cast to comparison.
16382         (table_geometry::table_y_to_canvas_y): Likewise.
16383         * text-art/table.h (table_geometry::m_table): Drop unused field.
16384         * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
16385         Add "override".
16387 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
16389         PR target/110717
16390         * config/i386/i386-features.cc
16391         (general_scalar_chain::compute_convert_gain): Calculate gain
16392         for extend higpart case.
16393         (general_scalar_chain::convert_op): Handle
16394         ASHIFTRT/ASHIFT combined RTX.
16395         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
16396         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
16397         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
16398         New define_insn_and_split pattern.
16399         (*extendv2di2_highpart_stv): Ditto.
16401 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
16403         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
16404         simplification.
16406 2023-07-20  Andrew Pinski  <apinski@marvell.com>
16408         * combine.cc (dump_combine_stats): Remove.
16409         (dump_combine_total_stats): Remove.
16410         (total_attempts, total_merges, total_extras,
16411         total_successes): Remove.
16412         (combine_instructions): Don't increment total stats
16413         instead use statistics_counter_event.
16414         * dumpfile.cc (print_combine_total_stats): Remove.
16415         * dumpfile.h (print_combine_total_stats): Remove.
16416         (dump_combine_total_stats): Remove.
16417         * passes.cc (finish_optimization_passes):
16418         Don't call print_combine_total_stats.
16419         * rtl.h (dump_combine_total_stats): Remove.
16420         (dump_combine_stats): Remove.
16422 2023-07-20  Jan Hubicka  <jh@suse.cz>
16424         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
16425         logical ops.
16427 2023-07-20  Martin Jambor  <mjambor@suse.cz>
16429         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
16430         (analyzer-text-art-ideal-canvas-width): Likewise.
16431         (analyzer-text-art-string-ellipsis-head-len): Likewise.
16432         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
16434 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16436         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
16437         Refine code structure.
16439 2023-07-20  Jan Hubicka  <jh@suse.cz>
16441         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
16442         (get_range_query): ... this one; do
16443         (static_loop_exit): Add query parametr, turn ranger to reference.
16444         (loop_static_stmt_p): New function.
16445         (loop_static_op_p): New function.
16446         (loop_iv_derived_p): Remove.
16447         (loop_combined_static_and_iv_p): New function.
16448         (should_duplicate_loop_header_p): Discover combined onditionals;
16449         do not track iv derived; improve dumps.
16450         (pass_ch::execute): Fix whitespace.
16452 2023-07-20  Richard Biener  <rguenther@suse.de>
16454         PR tree-optimization/110204
16455         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
16456         Look through copies generated by PRE.
16458 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
16460         * tree-vect-stmts.cc (get_group_load_store_type): Account for
16461         `gap` when checking if need to peel twice.
16463 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16465         PR middle-end/77928
16466         * doc/extend.texi: Document iseqsig builtin.
16467         * builtins.cc (fold_builtin_iseqsig): New function.
16468         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
16469         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
16470         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
16472 2023-07-20  Pan Li  <pan2.li@intel.com>
16474         * config/riscv/vector.md: Fix incorrect match_operand.
16476 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
16478         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
16479         force_reg, to use SUBREG rather than create a new pseudo when
16480         inserting DFmode fields into TImode with insvti_{high,low}part.
16481         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
16482         define_insn_and_split...
16483         (*concatditi3_3): 64-bit implementation.  Provide alternative
16484         that allows register allocation to use SSE registers that is
16485         split into vec_concatv2di after reload.
16486         (*concatsidi3_3): 32-bit implementation.
16488 2023-07-20  Richard Biener  <rguenther@suse.de>
16490         PR middle-end/61747
16491         * internal-fn.cc (expand_vec_cond_optab_fn): When the
16492         value operands are equal to the original comparison operands
16493         preserve that equality by re-using the comparison expansion.
16494         * optabs.cc (emit_conditional_move): When the value operands
16495         are equal to the comparison operands and would be forced to
16496         a register by prepare_cmp_insn do so earlier, preserving the
16497         equality.
16499 2023-07-20  Pan Li  <pan2.li@intel.com>
16501         * config/riscv/vector.md: Align pattern format.
16503 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
16505         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
16506         Granite Rapids{, D} from documentation.
16508 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16510         * config/riscv/autovec.md
16511         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
16512         Refactor RVV machine modes.
16513         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
16514         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
16515         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
16516         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
16517         (len_mask_gather_load<mode><mode>): Ditto.
16518         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
16519         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
16520         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
16521         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
16522         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
16523         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
16524         (len_mask_scatter_store<mode><mode>): Ditto.
16525         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
16526         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
16527         (ADJUST_NUNITS): Ditto.
16528         (ADJUST_ALIGNMENT): Ditto.
16529         (ADJUST_BYTESIZE): Ditto.
16530         (ADJUST_PRECISION): Ditto.
16531         (RVV_MODES): Ditto.
16532         (RVV_WHOLE_MODES): Ditto.
16533         (RVV_FRACT_MODE): Ditto.
16534         (RVV_NF8_MODES): Ditto.
16535         (RVV_NF4_MODES): Ditto.
16536         (VECTOR_MODES_WITH_PREFIX): Ditto.
16537         (VECTOR_MODE_WITH_PREFIX): Ditto.
16538         (RVV_TUPLE_MODES): Ditto.
16539         (RVV_NF2_MODES): Ditto.
16540         (RVV_TUPLE_PARTIAL_MODES): Ditto.
16541         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
16542         (ENTRY): Ditto.
16543         (TUPLE_ENTRY): Ditto.
16544         (get_vlmul): Ditto.
16545         (get_nf): Ditto.
16546         (get_ratio): Ditto.
16547         (preferred_simd_mode): Ditto.
16548         (autovectorize_vector_modes): Ditto.
16549         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
16550         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
16551         (vbool64_t): Ditto.
16552         (vbool32_t): Ditto.
16553         (vbool16_t): Ditto.
16554         (vbool8_t): Ditto.
16555         (vbool4_t): Ditto.
16556         (vbool2_t): Ditto.
16557         (vbool1_t): Ditto.
16558         (vint8mf8_t): Ditto.
16559         (vuint8mf8_t): Ditto.
16560         (vint8mf4_t): Ditto.
16561         (vuint8mf4_t): Ditto.
16562         (vint8mf2_t): Ditto.
16563         (vuint8mf2_t): Ditto.
16564         (vint8m1_t): Ditto.
16565         (vuint8m1_t): Ditto.
16566         (vint8m2_t): Ditto.
16567         (vuint8m2_t): Ditto.
16568         (vint8m4_t): Ditto.
16569         (vuint8m4_t): Ditto.
16570         (vint8m8_t): Ditto.
16571         (vuint8m8_t): Ditto.
16572         (vint16mf4_t): Ditto.
16573         (vuint16mf4_t): Ditto.
16574         (vint16mf2_t): Ditto.
16575         (vuint16mf2_t): Ditto.
16576         (vint16m1_t): Ditto.
16577         (vuint16m1_t): Ditto.
16578         (vint16m2_t): Ditto.
16579         (vuint16m2_t): Ditto.
16580         (vint16m4_t): Ditto.
16581         (vuint16m4_t): Ditto.
16582         (vint16m8_t): Ditto.
16583         (vuint16m8_t): Ditto.
16584         (vint32mf2_t): Ditto.
16585         (vuint32mf2_t): Ditto.
16586         (vint32m1_t): Ditto.
16587         (vuint32m1_t): Ditto.
16588         (vint32m2_t): Ditto.
16589         (vuint32m2_t): Ditto.
16590         (vint32m4_t): Ditto.
16591         (vuint32m4_t): Ditto.
16592         (vint32m8_t): Ditto.
16593         (vuint32m8_t): Ditto.
16594         (vint64m1_t): Ditto.
16595         (vuint64m1_t): Ditto.
16596         (vint64m2_t): Ditto.
16597         (vuint64m2_t): Ditto.
16598         (vint64m4_t): Ditto.
16599         (vuint64m4_t): Ditto.
16600         (vint64m8_t): Ditto.
16601         (vuint64m8_t): Ditto.
16602         (vfloat16mf4_t): Ditto.
16603         (vfloat16mf2_t): Ditto.
16604         (vfloat16m1_t): Ditto.
16605         (vfloat16m2_t): Ditto.
16606         (vfloat16m4_t): Ditto.
16607         (vfloat16m8_t): Ditto.
16608         (vfloat32mf2_t): Ditto.
16609         (vfloat32m1_t): Ditto.
16610         (vfloat32m2_t): Ditto.
16611         (vfloat32m4_t): Ditto.
16612         (vfloat32m8_t): Ditto.
16613         (vfloat64m1_t): Ditto.
16614         (vfloat64m2_t): Ditto.
16615         (vfloat64m4_t): Ditto.
16616         (vfloat64m8_t): Ditto.
16617         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
16618         (TUPLE_ENTRY): Ditto.
16619         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
16620         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
16621         (riscv_v_adjust_nunits): Ditto.
16622         (riscv_v_adjust_bytesize): Ditto.
16623         (riscv_v_adjust_precision): Ditto.
16624         (riscv_convert_vector_bits): Ditto.
16625         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
16626         * config/riscv/riscv.md: Ditto.
16627         * config/riscv/vector-iterators.md: Ditto.
16628         * config/riscv/vector.md
16629         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
16630         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
16631         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
16632         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
16633         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
16634         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
16635         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
16636         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
16637         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
16638         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
16639         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
16640         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
16641         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
16642         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
16643         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
16644         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
16645         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
16646         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
16647         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
16648         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
16649         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
16650         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
16651         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
16652         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
16653         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
16654         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
16655         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
16656         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
16657         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
16658         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
16659         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
16660         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
16661         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
16663 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
16665         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
16666         (lra_asm_insn_error): New prototype.
16667         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
16668         existence.
16669         (lra_spill): Call lra_update_fp2sp_elimination.
16670         * lra-eliminations.cc: Remove trailing spaces.
16671         (elimination_fp2sp_occured_p): New static flag.
16672         (lra_eliminate_regs_1): Set the flag up.
16673         (update_reg_eliminate): Modify the assert for stack to frame
16674         pointer elimination.
16675         (lra_update_fp2sp_elimination): New function.
16676         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
16678 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
16680         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
16681         dependency.
16682         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
16683         dependencies from target pragmas.
16684         * config/aarch64/arm_fp16.h (target): Likewise.
16685         * config/aarch64/arm_neon.h (target): Likewise.
16687 2023-07-19  Andrew Pinski  <apinski@marvell.com>
16689         PR tree-optimization/110252
16690         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
16691         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
16692         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
16693         (match_simplify_replacement): Temporarily
16694         remove the flow sensitive info on the two statements that might
16695         be moved.
16697 2023-07-19  Andrew Pinski  <apinski@marvell.com>
16699         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
16700         with flow_sensitive_info_storage.
16701         (follow_outer_ssa_edges): Update how to save off the flow
16702         sensitive info.
16703         (maybe_fold_comparisons_from_match_pd): Update restoring
16704         of flow sensitive info.
16705         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
16706         (flow_sensitive_info_storage::restore): New method.
16707         (flow_sensitive_info_storage::save_and_clear): New method.
16708         (flow_sensitive_info_storage::clear_storage): New method.
16709         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
16711 2023-07-19  Andrew Pinski  <apinski@marvell.com>
16713         PR tree-optimization/110726
16714         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
16715         Add checks to make sure the type was one bit precision
16716         intergal type.
16718 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16720         * doc/md.texi: Add mask_len_fold_left_plus.
16721         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
16722         (expand_mask_len_fold_left_optab_fn): Ditto.
16723         (direct_mask_len_fold_left_optab_supported_p): Ditto.
16724         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
16725         * optabs.def (OPTAB_D): Ditto.
16727 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
16729         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
16731 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
16733         PR tree-optimization/110731
16734         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
16735         divisor as UNSIGNED regardless of sgn.
16737 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
16739         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
16740         (standard_extensions_p): Add check.
16741         (riscv_subset_list::add): Just return NULL if it failed before.
16742         (riscv_subset_list::parse_std_ext): Continue parse when find a error
16743         (riscv_subset_list::parse): Just return NULL if it failed before.
16744         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
16746 2023-07-19  Jan Beulich  <jbeulich@suse.com>
16748         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
16749         Use gen_vec_set_0.
16750         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
16751         gen_vec_extract_hi.
16752         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
16753         gen_vec_interleave_low. Rename local variable.
16755 2023-07-19  Jan Beulich  <jbeulich@suse.com>
16757         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
16758         alternative. Move AVX512VL part of condition to new "enabled"
16759         attribute.
16761 2023-07-19  liuhongt  <hongtao.liu@intel.com>
16763         PR target/109504
16764         * config/i386/i386-builtins.cc
16765         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
16766         (ix86_register_bf16_builtin_type): Ditto.
16767         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
16768         isn't available, undef the macros which are used to check the
16769         backend support of the _Float16/__bf16 types when building
16770         libstdc++ and libgcc.
16771         * config/i386/i386.cc (construct_container): Issue errors for
16772         HFmode/BFmode when TARGET_SSE2 is not available.
16773         (function_value_32): Ditto.
16774         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
16775         (ix86_libgcc_floating_mode_supported_p): Ditto.
16776         (ix86_emit_support_tinfos): Adjust codes.
16777         (ix86_invalid_conversion): Return diagnostic message string
16778         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
16779         (ix86_invalid_unary_op): New function.
16780         (ix86_invalid_binary_op): Ditto.
16781         (TARGET_INVALID_UNARY_OP): Define.
16782         (TARGET_INVALID_BINARY_OP): Define.
16783         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
16784         related instrinsics header files.
16785         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
16787 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
16789         * dwarf2asm.cc: Change FALSE to false.
16790         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
16791         * dwarf2out.cc (matches_main_base): Change return type from
16792         int to bool.  Change "last_match" variable to bool.
16793         (dump_struct_debug): Change return type from int to bool.
16794         Change "matches" and "result" function arguments to bool.
16795         (is_pseudo_reg): Change return type from int to bool.
16796         (is_tagged_type): Ditto.
16797         (same_loc_p): Ditto.
16798         (same_dw_val_p): Change return type from int to bool and adjust
16799         function body accordingly.
16800         (same_attr_p): Ditto.
16801         (same_die_p): Ditto.
16802         (is_type_die): Ditto.
16803         (is_declaration_die): Ditto.
16804         (should_move_die_to_comdat): Ditto.
16805         (is_base_type): Ditto.
16806         (is_based_loc): Ditto.
16807         (local_scope_p): Ditto.
16808         (class_scope_p): Ditto.
16809         (class_or_namespace_scope_p): Ditto.
16810         (is_tagged_type): Ditto.
16811         (is_rust): Use void argument.
16812         (is_nested_in_subprogram): Change return type from int to bool.
16813         (contains_subprogram_definition): Ditto.
16814         (gen_struct_or_union_type_die): Change "nested", "complete"
16815         and "ns_decl" variables to bool.
16816         (is_naming_typedef_decl): Change FALSE to false.
16818 2023-07-18  Jan Hubicka  <jh@suse.cz>
16820         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
16821         for queries not in headers.
16822         (static_loop_exit): Add basic blck parameter; update use of
16823         edge_range_query
16824         (should_duplicate_loop_header_p): Add ranger and static_exits
16825         parameter.  Do not account statements that will be optimized
16826         out after duplicaiton in overall size. Add ranger query to
16827         find static exits.
16828         (update_profile_after_ch):  Take static_exits has set instead of
16829         single eliminated_edge.
16830         (ch_base::copy_headers): Do all analysis in the first pass;
16831         remember invariant_exits and static_exits.
16833 2023-07-18  Jason Merrill  <jason@redhat.com>
16835         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
16837 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
16839         * doc/gm2.texi (Semantic checking): Change example testwithptr
16840         to testnew6.
16842 2023-07-18  Richard Biener  <rguenther@suse.de>
16844         PR middle-end/105715
16845         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
16846         (pass_gimple_isel::execute): ... this.  Duplicate
16847         comparison defs of COND_EXPRs.
16849 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16851         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
16852         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
16853         (riscv_convert_vector_bits): Ditto.
16855 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16857         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
16858         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
16860 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
16862         * config/s390/vx-builtins.md: New vsel pattern.
16864 2023-07-18  liuhongt  <hongtao.liu@intel.com>
16866         PR target/110438
16867         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
16868         Remove # from assemble output.
16870 2023-07-18  liuhongt  <hongtao.liu@intel.com>
16872         PR target/110591
16873         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
16874         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
16875         3 define_peephole2 after the pattern.
16877 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16879         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
16881 2023-07-18  Pan Li  <pan2.li@intel.com>
16882             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16884         * config/riscv/riscv.cc (struct machine_function): Add new field.
16885         (riscv_static_frm_mode_p): New function.
16886         (riscv_emit_frm_mode_set): New function for emit FRM.
16887         (riscv_emit_mode_set): Extract function for FRM.
16888         (riscv_mode_needed): Fix the TODO.
16889         (riscv_mode_entry): Initial dynamic frm RTL.
16890         (riscv_mode_exit): Return DYN_EXIT.
16891         * config/riscv/riscv.md: Add rdfrm.
16892         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
16893         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
16894         (fsrm): Removed.
16895         (fsrmsi_backup): New pattern for swap.
16896         (fsrmsi_restore): New pattern for restore.
16897         (fsrmsi_restore_exit): New pattern for restore exit.
16898         (frrmsi): New pattern for backup.
16900 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
16902         * doc/extend.texi: Add @cindex on __auto_type.
16904 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
16906         * combine-stack-adj.cc (stack_memref_p): Change return type from
16907         int to bool and adjust function body accordingly.
16908         (rest_of_handle_stack_adjustments): Change return type to void.
16910 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
16912         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
16913         (cant_combine_insn_p): Change return type from int to bool and adjust
16914         function body accordingly.
16915         (can_combine_p): Ditto.
16916         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
16917         function arguments from int to bool.
16918         (contains_muldiv): Change return type from int to bool and adjust
16919         function body accordingly.
16920         (try_combine): Ditto. Change "new_direct_jump" pointer function
16921         argument from int to bool.  Change "substed_i2", "substed_i1",
16922         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
16923         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
16924         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
16925         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
16926         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
16927         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
16928         from int to bool.
16929         (subst): Change "in_dest", "in_cond" and "unique_copy" function
16930         arguments from int to bool.
16931         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
16932         arguments from int to bool.
16933         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
16934         function argument from int to bool.
16935         (force_int_to_mode): Change "just_select" function argument
16936         from int to bool.  Change "next_select" variable to bool.
16937         (rtx_equal_for_field_assignment_p): Change return type from
16938         int to bool and adjust function body accordingly.
16939         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
16940         argument from int to bool.
16941         (get_last_value_validate): Change return type from int to bool
16942         and adjust function body accordingly.
16943         (reg_dead_at_p): Ditto.
16944         (reg_bitfield_target_p): Ditto.
16945         (combine_instructions): Ditto.  Change "new_direct_jump"
16946         variable to bool.
16947         (can_combine_p): Change return type from int to bool
16948         and adjust function body accordingly.
16949         (likely_spilled_retval_p): Ditto.
16950         (can_change_dest_mode): Change "added_sets" function argument
16951         from int to bool.
16952         (find_split_point): Change "unsignedp" variable to bool.
16953         (simplify_if_then_else): Change "comparison_p" and "swapped"
16954         variables to bool.
16955         (simplify_set): Change "other_changed" variable to bool.
16956         (expand_compound_operation): Change "unsignedp" variable to bool.
16957         (force_to_mode): Change "just_select" function argument
16958         from int to bool.  Change "next_select" variable to bool.
16959         (extended_count): Change "unsignedp" function argument to bool.
16960         (simplify_shift_const_1): Change "complement_p" variable to bool.
16961         (simplify_comparison): Change "changed" variable to bool.
16962         (rest_of_handle_combine): Change return type to void.
16964 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
16966         PR plugins/110610
16967         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
16969 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
16971         * ira.cc (setup_reg_class_relations): Continue
16972         if regclass cl3 is hard_reg_set_empty_p.
16974 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16976         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
16978 2023-07-17  Martin Jambor  <mjambor@suse.cz>
16980         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
16981         entry_count.
16983 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
16985         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
16987 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
16989         PR target/110696
16990         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
16991         recur add all implied extensions.
16992         (riscv_subset_list::check_implied_ext): Add new method.
16993         (riscv_subset_list::parse): Call checker check_implied_ext.
16994         * config/riscv/riscv-subset.h: Add new method.
16996 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16998         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
16999         (reduc_smax_scal_<mode>): Ditto.
17000         (reduc_umax_scal_<mode>): Ditto.
17001         (reduc_smin_scal_<mode>): Ditto.
17002         (reduc_umin_scal_<mode>): Ditto.
17003         (reduc_and_scal_<mode>): Ditto.
17004         (reduc_ior_scal_<mode>): Ditto.
17005         (reduc_xor_scal_<mode>): Ditto.
17006         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
17007         (expand_reduction): New function.
17008         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
17009         (emit_vlmax_fp_reduction_insn): Ditto.
17010         (get_m1_mode): Ditto.
17011         (expand_cond_len_binop): Fix name.
17012         (expand_reduction): New function
17013         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
17014         (validate_change_or_fail): New function.
17015         (change_insn): Fix VSETVL BUG.
17016         (change_vsetvl_insn): Ditto.
17017         (pass_vsetvl::backward_demand_fusion): Ditto.
17018         (pass_vsetvl::df_post_optimization): Ditto.
17020 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
17022         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
17024 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
17026         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
17027         Remove parameter name from declaration of unused parameter.
17029 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
17031         PR tree-optimization/110652
17032         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
17033         NULL_TREE.
17035 2023-07-17  Richard Biener  <rguenther@suse.de>
17037         PR tree-optimization/110669
17038         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
17039         Check we matched a header PHI.
17041 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
17043         * tree-ssanames.cc (set_bitmask): New.
17044         * tree-ssanames.h (set_bitmask): New.
17046 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
17048         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
17049         normalized.
17050         * value-range.h (irange_bitmask::union_): Normalize beforehand.
17051         (irange_bitmask::intersect): Same.
17053 2023-07-17  Andrew Pinski  <apinski@marvell.com>
17055         PR tree-optimization/95923
17056         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
17058 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
17060         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
17061         to the std::sort comparison lambda function const.
17063 2023-07-17  Andrew Pinski  <apinski@marvell.com>
17065         PR tree-optimization/110666
17066         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
17068 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
17070         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
17071         Arrow Lake and Arrow Lake S.
17072         * common/config/i386/i386-common.cc:
17073         (processor_name): Add arrowlake.
17074         (processor_alias_table): Add arrow lake, arrow lake s and lunar
17075         lake.
17076         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
17077         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
17078         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
17079         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
17080         arrowlake-s.
17081         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
17082         arrowlake.
17083         * config/i386/i386-options.cc (m_ARROWLAKE): New.
17084         (processor_cost_table): Add arrowlake.
17085         * config/i386/i386.h (enum processor_type):
17086         Add PROCESSOR_ARROWLAKE.
17087         * config/i386/x86-tune.def: Add m_ARROWLAKE.
17088         * doc/extend.texi: Add arrowlake and arrowlake-s.
17089         * doc/invoke.texi: Ditto.
17091 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
17093         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
17094         have the same iterator. Also renaming all the occurence to
17095         VI2_AVX2_AVX512BW.
17096         (usdot_prod<mode>): New define_expand.
17097         (udot_prod<mode>): Ditto.
17099 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
17101         * common/config/i386/cpuinfo.h (get_available_features):
17102         Detech SM4.
17103         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
17104         OPTION_MASK_ISA2_SM4_UNSET): New.
17105         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
17106         (ix86_handle_option): Handle -msm4.
17107         * common/config/i386/i386-cpuinfo.h (enum processor_features):
17108         Add FEATURE_SM4.
17109         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
17110         sm4.
17111         * config.gcc: Add sm4intrin.h.
17112         * config/i386/cpuid.h (bit_SM4): New.
17113         * config/i386/i386-builtin.def (BDESC): Add new builtins.
17114         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
17115         __SM4__.
17116         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
17117         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
17118         (ix86_valid_target_attribute_inner_p): Handle sm4.
17119         * config/i386/i386.opt: Add option -msm4.
17120         * config/i386/immintrin.h: Include sm4intrin.h
17121         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
17122         (vsm4rnds4_<mode>): Ditto.
17123         * doc/extend.texi: Document sm4.
17124         * doc/invoke.texi: Document -msm4.
17125         * doc/sourcebuild.texi: Document target sm4.
17126         * config/i386/sm4intrin.h: New file.
17128 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
17130         * common/config/i386/cpuinfo.h (get_available_features):
17131         Detect SHA512.
17132         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
17133         OPTION_MASK_ISA2_SHA512_UNSET): New.
17134         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
17135         (ix86_handle_option): Handle -msha512.
17136         * common/config/i386/i386-cpuinfo.h (enum processor_features):
17137         Add FEATURE_SHA512.
17138         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
17139         sha512.
17140         * config.gcc: Add sha512intrin.h.
17141         * config/i386/cpuid.h (bit_SHA512): New.
17142         * config/i386/i386-builtin-types.def:
17143         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
17144         * config/i386/i386-builtin.def (BDESC): Add new builtins.
17145         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
17146         __SHA512__.
17147         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
17148         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
17149         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
17150         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
17151         (ix86_valid_target_attribute_inner_p): Handle sha512.
17152         * config/i386/i386.opt: Add option -msha512.
17153         * config/i386/immintrin.h: Include sha512intrin.h.
17154         * config/i386/sse.md (vsha512msg1): New define insn.
17155         (vsha512msg2): Ditto.
17156         (vsha512rnds2): Ditto.
17157         * doc/extend.texi: Document sha512.
17158         * doc/invoke.texi: Document -msha512.
17159         * doc/sourcebuild.texi: Document target sha512.
17160         * config/i386/sha512intrin.h: New file.
17162 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
17164         * common/config/i386/cpuinfo.h (get_available_features):
17165         Detect SM3.
17166         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
17167         OPTION_MASK_ISA2_SM3_UNSET): New.
17168         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
17169         (ix86_handle_option): Handle -msm3.
17170         * common/config/i386/i386-cpuinfo.h (enum processor_features):
17171         Add FEATURE_SM3.
17172         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
17173         SM3.
17174         * config.gcc: Add sm3intrin.h
17175         * config/i386/cpuid.h (bit_SM3): New.
17176         * config/i386/i386-builtin-types.def:
17177         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
17178         * config/i386/i386-builtin.def (BDESC): Add new builtins.
17179         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
17180         __SM3__.
17181         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
17182         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
17183         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
17184         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
17185         (ix86_valid_target_attribute_inner_p): Handle sm3.
17186         * config/i386/i386.opt: Add option -msm3.
17187         * config/i386/immintrin.h: Include sm3intrin.h.
17188         * config/i386/sse.md (vsm3msg1): New define insn.
17189         (vsm3msg2): Ditto.
17190         (vsm3rnds2): Ditto.
17191         * doc/extend.texi: Document sm3.
17192         * doc/invoke.texi: Document -msm3.
17193         * doc/sourcebuild.texi: Document target sm3.
17194         * config/i386/sm3intrin.h: New file.
17196 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
17197             Haochen Jiang  <haochen.jiang@intel.com>
17199         * common/config/i386/cpuinfo.h (get_available_features): Detect
17200         avxvnniint16.
17201         * common/config/i386/i386-common.cc
17202         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
17203         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
17204         (ix86_handle_option): Handle -mavxvnniint16.
17205         * common/config/i386/i386-cpuinfo.h (enum processor_features):
17206         Add FEATURE_AVXVNNIINT16.
17207         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
17208         avxvnniint16.
17209         * config.gcc: Add avxvnniint16.h.
17210         * config/i386/avxvnniint16intrin.h: New file.
17211         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
17212         * config/i386/i386-builtin.def: Add new builtins.
17213         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
17214         __AVXVNNIINT16__.
17215         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
17216         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
17217         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
17218         * config/i386/i386.opt: Add option -mavxvnniint16.
17219         * config/i386/immintrin.h: Include avxvnniint16.h.
17220         * config/i386/sse.md
17221         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
17222         * doc/extend.texi: Document avxvnniint16.
17223         * doc/invoke.texi: Document -mavxvnniint16.
17224         * doc/sourcebuild.texi: Document target avxvnniint16.
17226 2023-07-16  Jan Hubicka  <jh@suse.cz>
17228         PR middle-end/110649
17229         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
17230         (vect_transform_loop): Move scale_profile_for_vect_loop after
17231         upper bound updates.
17233 2023-07-16  Jan Hubicka  <jh@suse.cz>
17235         PR tree-optimization/110649
17236         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
17237         probability of the if-then-else construct.
17239 2023-07-16  Jan Hubicka  <jh@suse.cz>
17241         PR middle-end/110649
17242         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
17244 2023-07-15  Andrew Pinski  <apinski@marvell.com>
17246         * doc/contrib.texi: Update my entry.
17248 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
17250         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
17251         R27_REGNUM.
17252         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
17253         (tld_load): Likewise.
17254         (tgd_load_pic): Change to expander.
17255         (tld_load_pic, tld_offset_load, tp_load): Likewise.
17256         (tie_load_pic, tle_load): Likewise.
17257         (tgd_load_picsi, tgd_load_picdi): New.
17258         (tld_load_picsi, tld_load_picdi): New.
17259         (tld_offset_load<P:mode>): New.
17260         (tp_load<P:mode>): New.
17261         (tie_load_picsi, tie_load_picdi): New.
17262         (tle_load<P:mode>): New.
17264 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17266         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
17267         (vcmlaq_rot180, vcmlaq_rot270): New.
17268         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
17269         (vcmlaq_rot180, vcmlaq_rot270): New.
17270         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
17271         (vcmlaq_rot180, vcmlaq_rot270): New.
17272         * config/arm/arm-mve-builtins.cc
17273         (function_instance::has_inactive_argument): Handle vcmlaq,
17274         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
17275         * config/arm/arm_mve.h (vcmlaq): Delete.
17276         (vcmlaq_rot180): Delete.
17277         (vcmlaq_rot270): Delete.
17278         (vcmlaq_rot90): Delete.
17279         (vcmlaq_m): Delete.
17280         (vcmlaq_rot180_m): Delete.
17281         (vcmlaq_rot270_m): Delete.
17282         (vcmlaq_rot90_m): Delete.
17283         (vcmlaq_f16): Delete.
17284         (vcmlaq_rot180_f16): Delete.
17285         (vcmlaq_rot270_f16): Delete.
17286         (vcmlaq_rot90_f16): Delete.
17287         (vcmlaq_f32): Delete.
17288         (vcmlaq_rot180_f32): Delete.
17289         (vcmlaq_rot270_f32): Delete.
17290         (vcmlaq_rot90_f32): Delete.
17291         (vcmlaq_m_f32): Delete.
17292         (vcmlaq_m_f16): Delete.
17293         (vcmlaq_rot180_m_f32): Delete.
17294         (vcmlaq_rot180_m_f16): Delete.
17295         (vcmlaq_rot270_m_f32): Delete.
17296         (vcmlaq_rot270_m_f16): Delete.
17297         (vcmlaq_rot90_m_f32): Delete.
17298         (vcmlaq_rot90_m_f16): Delete.
17299         (__arm_vcmlaq_f16): Delete.
17300         (__arm_vcmlaq_rot180_f16): Delete.
17301         (__arm_vcmlaq_rot270_f16): Delete.
17302         (__arm_vcmlaq_rot90_f16): Delete.
17303         (__arm_vcmlaq_f32): Delete.
17304         (__arm_vcmlaq_rot180_f32): Delete.
17305         (__arm_vcmlaq_rot270_f32): Delete.
17306         (__arm_vcmlaq_rot90_f32): Delete.
17307         (__arm_vcmlaq_m_f32): Delete.
17308         (__arm_vcmlaq_m_f16): Delete.
17309         (__arm_vcmlaq_rot180_m_f32): Delete.
17310         (__arm_vcmlaq_rot180_m_f16): Delete.
17311         (__arm_vcmlaq_rot270_m_f32): Delete.
17312         (__arm_vcmlaq_rot270_m_f16): Delete.
17313         (__arm_vcmlaq_rot90_m_f32): Delete.
17314         (__arm_vcmlaq_rot90_m_f16): Delete.
17315         (__arm_vcmlaq): Delete.
17316         (__arm_vcmlaq_rot180): Delete.
17317         (__arm_vcmlaq_rot270): Delete.
17318         (__arm_vcmlaq_rot90): Delete.
17319         (__arm_vcmlaq_m): Delete.
17320         (__arm_vcmlaq_rot180_m): Delete.
17321         (__arm_vcmlaq_rot270_m): Delete.
17322         (__arm_vcmlaq_rot90_m): Delete.
17324 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17326         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
17327         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
17328         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
17329         (mve_insn): Add vcmla.
17330         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
17331         VCMLAQ_ROT270_M_F.
17332         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
17333         VCMLAQ_ROT270_M_F.
17334         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
17335         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
17336         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
17337         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
17338         into ...
17339         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
17341 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17343         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
17344         (vcmulq_rot180, vcmulq_rot270): New.
17345         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
17346         (vcmulq_rot180, vcmulq_rot270): New.
17347         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
17348         (vcmulq_rot180, vcmulq_rot270): New.
17349         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
17350         (vcmulq_rot270): Delete.
17351         (vcmulq_rot180): Delete.
17352         (vcmulq): Delete.
17353         (vcmulq_m): Delete.
17354         (vcmulq_rot180_m): Delete.
17355         (vcmulq_rot270_m): Delete.
17356         (vcmulq_rot90_m): Delete.
17357         (vcmulq_x): Delete.
17358         (vcmulq_rot90_x): Delete.
17359         (vcmulq_rot180_x): Delete.
17360         (vcmulq_rot270_x): Delete.
17361         (vcmulq_rot90_f16): Delete.
17362         (vcmulq_rot270_f16): Delete.
17363         (vcmulq_rot180_f16): Delete.
17364         (vcmulq_f16): Delete.
17365         (vcmulq_rot90_f32): Delete.
17366         (vcmulq_rot270_f32): Delete.
17367         (vcmulq_rot180_f32): Delete.
17368         (vcmulq_f32): Delete.
17369         (vcmulq_m_f32): Delete.
17370         (vcmulq_m_f16): Delete.
17371         (vcmulq_rot180_m_f32): Delete.
17372         (vcmulq_rot180_m_f16): Delete.
17373         (vcmulq_rot270_m_f32): Delete.
17374         (vcmulq_rot270_m_f16): Delete.
17375         (vcmulq_rot90_m_f32): Delete.
17376         (vcmulq_rot90_m_f16): Delete.
17377         (vcmulq_x_f16): Delete.
17378         (vcmulq_x_f32): Delete.
17379         (vcmulq_rot90_x_f16): Delete.
17380         (vcmulq_rot90_x_f32): Delete.
17381         (vcmulq_rot180_x_f16): Delete.
17382         (vcmulq_rot180_x_f32): Delete.
17383         (vcmulq_rot270_x_f16): Delete.
17384         (vcmulq_rot270_x_f32): Delete.
17385         (__arm_vcmulq_rot90_f16): Delete.
17386         (__arm_vcmulq_rot270_f16): Delete.
17387         (__arm_vcmulq_rot180_f16): Delete.
17388         (__arm_vcmulq_f16): Delete.
17389         (__arm_vcmulq_rot90_f32): Delete.
17390         (__arm_vcmulq_rot270_f32): Delete.
17391         (__arm_vcmulq_rot180_f32): Delete.
17392         (__arm_vcmulq_f32): Delete.
17393         (__arm_vcmulq_m_f32): Delete.
17394         (__arm_vcmulq_m_f16): Delete.
17395         (__arm_vcmulq_rot180_m_f32): Delete.
17396         (__arm_vcmulq_rot180_m_f16): Delete.
17397         (__arm_vcmulq_rot270_m_f32): Delete.
17398         (__arm_vcmulq_rot270_m_f16): Delete.
17399         (__arm_vcmulq_rot90_m_f32): Delete.
17400         (__arm_vcmulq_rot90_m_f16): Delete.
17401         (__arm_vcmulq_x_f16): Delete.
17402         (__arm_vcmulq_x_f32): Delete.
17403         (__arm_vcmulq_rot90_x_f16): Delete.
17404         (__arm_vcmulq_rot90_x_f32): Delete.
17405         (__arm_vcmulq_rot180_x_f16): Delete.
17406         (__arm_vcmulq_rot180_x_f32): Delete.
17407         (__arm_vcmulq_rot270_x_f16): Delete.
17408         (__arm_vcmulq_rot270_x_f32): Delete.
17409         (__arm_vcmulq_rot90): Delete.
17410         (__arm_vcmulq_rot270): Delete.
17411         (__arm_vcmulq_rot180): Delete.
17412         (__arm_vcmulq): Delete.
17413         (__arm_vcmulq_m): Delete.
17414         (__arm_vcmulq_rot180_m): Delete.
17415         (__arm_vcmulq_rot270_m): Delete.
17416         (__arm_vcmulq_rot90_m): Delete.
17417         (__arm_vcmulq_x): Delete.
17418         (__arm_vcmulq_rot90_x): Delete.
17419         (__arm_vcmulq_rot180_x): Delete.
17420         (__arm_vcmulq_rot270_x): Delete.
17422 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17424         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
17425         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
17426         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
17427         (MVE_VCADDQ_VCMULQ_M): New.
17428         (mve_insn): Add vcmul.
17429         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
17430         VCMULQ_ROT270_M_F.
17431         (VCMUL): Delete.
17432         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
17433         VCMULQ_ROT270_M_F.
17434         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
17435         @mve_<mve_insn>q<mve_rot>_f<mode>.
17436         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
17437         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
17438         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
17440 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17442         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
17443         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
17444         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
17445         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
17446         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
17447         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
17448         * config/arm/arm-mve-builtins-functions.h (class
17449         unspec_mve_function_exact_insn_rot): New.
17450         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
17451         (vcaddq_rot270): Delete.
17452         (vhcaddq_rot90): Delete.
17453         (vhcaddq_rot270): Delete.
17454         (vcaddq_rot270_m): Delete.
17455         (vcaddq_rot90_m): Delete.
17456         (vhcaddq_rot270_m): Delete.
17457         (vhcaddq_rot90_m): Delete.
17458         (vcaddq_rot90_x): Delete.
17459         (vcaddq_rot270_x): Delete.
17460         (vhcaddq_rot90_x): Delete.
17461         (vhcaddq_rot270_x): Delete.
17462         (vcaddq_rot90_u8): Delete.
17463         (vcaddq_rot270_u8): Delete.
17464         (vhcaddq_rot90_s8): Delete.
17465         (vhcaddq_rot270_s8): Delete.
17466         (vcaddq_rot90_s8): Delete.
17467         (vcaddq_rot270_s8): Delete.
17468         (vcaddq_rot90_u16): Delete.
17469         (vcaddq_rot270_u16): Delete.
17470         (vhcaddq_rot90_s16): Delete.
17471         (vhcaddq_rot270_s16): Delete.
17472         (vcaddq_rot90_s16): Delete.
17473         (vcaddq_rot270_s16): Delete.
17474         (vcaddq_rot90_u32): Delete.
17475         (vcaddq_rot270_u32): Delete.
17476         (vhcaddq_rot90_s32): Delete.
17477         (vhcaddq_rot270_s32): Delete.
17478         (vcaddq_rot90_s32): Delete.
17479         (vcaddq_rot270_s32): Delete.
17480         (vcaddq_rot90_f16): Delete.
17481         (vcaddq_rot270_f16): Delete.
17482         (vcaddq_rot90_f32): Delete.
17483         (vcaddq_rot270_f32): Delete.
17484         (vcaddq_rot270_m_s8): Delete.
17485         (vcaddq_rot270_m_s32): Delete.
17486         (vcaddq_rot270_m_s16): Delete.
17487         (vcaddq_rot270_m_u8): Delete.
17488         (vcaddq_rot270_m_u32): Delete.
17489         (vcaddq_rot270_m_u16): Delete.
17490         (vcaddq_rot90_m_s8): Delete.
17491         (vcaddq_rot90_m_s32): Delete.
17492         (vcaddq_rot90_m_s16): Delete.
17493         (vcaddq_rot90_m_u8): Delete.
17494         (vcaddq_rot90_m_u32): Delete.
17495         (vcaddq_rot90_m_u16): Delete.
17496         (vhcaddq_rot270_m_s8): Delete.
17497         (vhcaddq_rot270_m_s32): Delete.
17498         (vhcaddq_rot270_m_s16): Delete.
17499         (vhcaddq_rot90_m_s8): Delete.
17500         (vhcaddq_rot90_m_s32): Delete.
17501         (vhcaddq_rot90_m_s16): Delete.
17502         (vcaddq_rot270_m_f32): Delete.
17503         (vcaddq_rot270_m_f16): Delete.
17504         (vcaddq_rot90_m_f32): Delete.
17505         (vcaddq_rot90_m_f16): Delete.
17506         (vcaddq_rot90_x_s8): Delete.
17507         (vcaddq_rot90_x_s16): Delete.
17508         (vcaddq_rot90_x_s32): Delete.
17509         (vcaddq_rot90_x_u8): Delete.
17510         (vcaddq_rot90_x_u16): Delete.
17511         (vcaddq_rot90_x_u32): Delete.
17512         (vcaddq_rot270_x_s8): Delete.
17513         (vcaddq_rot270_x_s16): Delete.
17514         (vcaddq_rot270_x_s32): Delete.
17515         (vcaddq_rot270_x_u8): Delete.
17516         (vcaddq_rot270_x_u16): Delete.
17517         (vcaddq_rot270_x_u32): Delete.
17518         (vhcaddq_rot90_x_s8): Delete.
17519         (vhcaddq_rot90_x_s16): Delete.
17520         (vhcaddq_rot90_x_s32): Delete.
17521         (vhcaddq_rot270_x_s8): Delete.
17522         (vhcaddq_rot270_x_s16): Delete.
17523         (vhcaddq_rot270_x_s32): Delete.
17524         (vcaddq_rot90_x_f16): Delete.
17525         (vcaddq_rot90_x_f32): Delete.
17526         (vcaddq_rot270_x_f16): Delete.
17527         (vcaddq_rot270_x_f32): Delete.
17528         (__arm_vcaddq_rot90_u8): Delete.
17529         (__arm_vcaddq_rot270_u8): Delete.
17530         (__arm_vhcaddq_rot90_s8): Delete.
17531         (__arm_vhcaddq_rot270_s8): Delete.
17532         (__arm_vcaddq_rot90_s8): Delete.
17533         (__arm_vcaddq_rot270_s8): Delete.
17534         (__arm_vcaddq_rot90_u16): Delete.
17535         (__arm_vcaddq_rot270_u16): Delete.
17536         (__arm_vhcaddq_rot90_s16): Delete.
17537         (__arm_vhcaddq_rot270_s16): Delete.
17538         (__arm_vcaddq_rot90_s16): Delete.
17539         (__arm_vcaddq_rot270_s16): Delete.
17540         (__arm_vcaddq_rot90_u32): Delete.
17541         (__arm_vcaddq_rot270_u32): Delete.
17542         (__arm_vhcaddq_rot90_s32): Delete.
17543         (__arm_vhcaddq_rot270_s32): Delete.
17544         (__arm_vcaddq_rot90_s32): Delete.
17545         (__arm_vcaddq_rot270_s32): Delete.
17546         (__arm_vcaddq_rot270_m_s8): Delete.
17547         (__arm_vcaddq_rot270_m_s32): Delete.
17548         (__arm_vcaddq_rot270_m_s16): Delete.
17549         (__arm_vcaddq_rot270_m_u8): Delete.
17550         (__arm_vcaddq_rot270_m_u32): Delete.
17551         (__arm_vcaddq_rot270_m_u16): Delete.
17552         (__arm_vcaddq_rot90_m_s8): Delete.
17553         (__arm_vcaddq_rot90_m_s32): Delete.
17554         (__arm_vcaddq_rot90_m_s16): Delete.
17555         (__arm_vcaddq_rot90_m_u8): Delete.
17556         (__arm_vcaddq_rot90_m_u32): Delete.
17557         (__arm_vcaddq_rot90_m_u16): Delete.
17558         (__arm_vhcaddq_rot270_m_s8): Delete.
17559         (__arm_vhcaddq_rot270_m_s32): Delete.
17560         (__arm_vhcaddq_rot270_m_s16): Delete.
17561         (__arm_vhcaddq_rot90_m_s8): Delete.
17562         (__arm_vhcaddq_rot90_m_s32): Delete.
17563         (__arm_vhcaddq_rot90_m_s16): Delete.
17564         (__arm_vcaddq_rot90_x_s8): Delete.
17565         (__arm_vcaddq_rot90_x_s16): Delete.
17566         (__arm_vcaddq_rot90_x_s32): Delete.
17567         (__arm_vcaddq_rot90_x_u8): Delete.
17568         (__arm_vcaddq_rot90_x_u16): Delete.
17569         (__arm_vcaddq_rot90_x_u32): Delete.
17570         (__arm_vcaddq_rot270_x_s8): Delete.
17571         (__arm_vcaddq_rot270_x_s16): Delete.
17572         (__arm_vcaddq_rot270_x_s32): Delete.
17573         (__arm_vcaddq_rot270_x_u8): Delete.
17574         (__arm_vcaddq_rot270_x_u16): Delete.
17575         (__arm_vcaddq_rot270_x_u32): Delete.
17576         (__arm_vhcaddq_rot90_x_s8): Delete.
17577         (__arm_vhcaddq_rot90_x_s16): Delete.
17578         (__arm_vhcaddq_rot90_x_s32): Delete.
17579         (__arm_vhcaddq_rot270_x_s8): Delete.
17580         (__arm_vhcaddq_rot270_x_s16): Delete.
17581         (__arm_vhcaddq_rot270_x_s32): Delete.
17582         (__arm_vcaddq_rot90_f16): Delete.
17583         (__arm_vcaddq_rot270_f16): Delete.
17584         (__arm_vcaddq_rot90_f32): Delete.
17585         (__arm_vcaddq_rot270_f32): Delete.
17586         (__arm_vcaddq_rot270_m_f32): Delete.
17587         (__arm_vcaddq_rot270_m_f16): Delete.
17588         (__arm_vcaddq_rot90_m_f32): Delete.
17589         (__arm_vcaddq_rot90_m_f16): Delete.
17590         (__arm_vcaddq_rot90_x_f16): Delete.
17591         (__arm_vcaddq_rot90_x_f32): Delete.
17592         (__arm_vcaddq_rot270_x_f16): Delete.
17593         (__arm_vcaddq_rot270_x_f32): Delete.
17594         (__arm_vcaddq_rot90): Delete.
17595         (__arm_vcaddq_rot270): Delete.
17596         (__arm_vhcaddq_rot90): Delete.
17597         (__arm_vhcaddq_rot270): Delete.
17598         (__arm_vcaddq_rot270_m): Delete.
17599         (__arm_vcaddq_rot90_m): Delete.
17600         (__arm_vhcaddq_rot270_m): Delete.
17601         (__arm_vhcaddq_rot90_m): Delete.
17602         (__arm_vcaddq_rot90_x): Delete.
17603         (__arm_vcaddq_rot270_x): Delete.
17604         (__arm_vhcaddq_rot90_x): Delete.
17605         (__arm_vhcaddq_rot270_x): Delete.
17607 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
17609         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
17610         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
17611         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
17612         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
17613         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
17614         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
17615         VHCADDQ_ROT270_S.
17616         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
17617         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
17618         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
17619         VHCADDQ_ROT270_M_S.
17620         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
17621         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
17622         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
17623         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
17624         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
17625         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
17626         UNSPEC_VCADD270.
17627         (VCADDQ_ROT270_M): Delete.
17628         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
17629         (VCADDQ_ROT90_M): Delete.
17630         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
17631         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
17632         into ...
17633         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
17634         (mve_vcaddq<mve_rot><mode>): Rename into ...
17635         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
17636         (mve_vcaddq_rot270_m_<supf><mode>)
17637         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
17638         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
17639         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
17640         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
17641         into ...
17642         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
17644 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
17646         PR target/110588
17647         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
17648         preparation statement over braces for a single statement.
17649         (*bt<mode>_setncqi): Likewise.
17650         (*bt<mode>_setncqi_2): New define_insn_and_split.
17652 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
17654         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
17655         case inserting of 64-bit values into a TImode register, to handle
17656         both DImode and DFmode using either *insvti_lowpart_1
17657         or *isnvti_highpart_1.
17659 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
17661         PR target/110206
17662         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
17663         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
17664         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
17665         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
17666         when the original source contains a paradoxical subreg.
17668 2023-07-14  Jan Hubicka  <jh@suse.cz>
17670         * passes.cc (execute_function_todo): Remove
17671         TODO_rebuild_frequencies
17672         * passes.def: Add rebuild_frequencies pass.
17673         * predict.cc (estimate_bb_frequencies): Drop
17674         force parameter.
17675         (tree_estimate_probability): Update call of
17676         estimate_bb_frequencies.
17677         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
17678         first and do not rebuild if not necessary.
17679         (class pass_rebuild_frequencies): New.
17680         (make_pass_rebuild_frequencies): New.
17681         * profile-count.h: Add profile_count::very_large_p.
17682         * tree-inline.cc (optimize_inline_calls): Do not return
17683         TODO_rebuild_frequencies
17684         * tree-pass.h (TODO_rebuild_frequencies): Remove.
17685         (make_pass_rebuild_frequencies): Declare.
17687 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17689         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
17690         * config/riscv/riscv-protos.h (enum insn_type): New enum.
17691         (expand_cond_len_ternop): New function.
17692         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
17693         (expand_cond_len_ternop): Ditto.
17695 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
17697         PR target/110657
17698         * config/bpf/bpf.md: Enable instruction scheduling.
17700 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
17702         PR tree-optimization/109154
17703         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
17704         (struct bb_predicate): Add no_predicate_stmts.
17705         (set_bb_predicate): Increase predicate count.
17706         (set_bb_predicate_gimplified_stmts): Conditionally initialize
17707         no_predicate_stmts.
17708         (get_bb_num_predicate_stmts): New.
17709         (init_bb_predicate): Initialzie no_predicate_stmts.
17710         (release_bb_predicate): Cleanup no_predicate_stmts.
17711         (insert_gimplified_predicates): Preserve no_predicate_stmts.
17713 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
17715         PR tree-optimization/109154
17716         * tree-if-conv.cc (gen_simplified_condition,
17717         gen_phi_nest_statement): New.
17718         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
17720 2023-07-14  Richard Biener  <rguenther@suse.de>
17722         * gimple.h (gimple_phi_arg): New const overload.
17723         (gimple_phi_arg_def): Make gimple arg const.
17724         (gimple_phi_arg_def_from_edge): New inline function.
17725         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
17726         Likewise.
17727         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
17728         new inline function.
17729         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
17731 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
17733         * common/config/riscv/riscv-common.cc:
17734         (riscv_implied_info): Add zihintntl item.
17735         (riscv_ext_version_table): Ditto.
17736         (riscv_ext_flag_table): Ditto.
17737         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
17738         (TARGET_ZIHINTNTL): Ditto.
17740 2023-07-14  Die Li  <lidie@eswincomputing.com>
17742         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
17744 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
17746         PR target/101469
17747         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
17748         used by the address of the following memory operand.
17750 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
17752         PR target/107841
17753         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
17754         deallocate alloca-only frame.
17756 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
17758         PR target/110624
17759         * config/darwin.h (DARWIN_PLATFORM_ID): New.
17760         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
17761         and SDK data to the static linker.
17763 2023-07-13  Carl Love  <cel@us.ibm.com>
17765         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
17766         built-in definition return type.
17767         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
17768         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
17769         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
17770         argument to return FPSCR fields.
17771         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
17772         the return value.  Add description for
17773         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
17775 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
17777         PR target/106966
17778         * config/alpha/alpha.cc (alpha_emit_set_long_const):
17779         Always use DImode when constructing long const.
17781 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
17783         * haifa-sched.cc: Change TRUE/FALSE to true/false.
17784         * ira.cc: Ditto.
17785         * lra-assigns.cc: Ditto.
17786         * lra-constraints.cc: Ditto.
17787         * sel-sched.cc: Ditto.
17789 2023-07-13  Andrew Pinski  <apinski@marvell.com>
17791         PR tree-optimization/110293
17792         PR tree-optimization/110539
17793         * match.pd: Expand the `x != (typeof x)(x == 0)`
17794         pattern to handle where the inner and outer comparsions
17795         are either `!=` or `==` and handle other constants
17796         than 0.
17798 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
17800         PR middle-end/109520
17801         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
17802         (lra_asm_insn_error): New prototype.
17803         * lra.cc: Include rtl_error.h.
17804         (lra_set_insn_recog_data): Initialize asm_reloads_num.
17805         (lra_asm_insn_error): New func whose code is taken from ...
17806         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
17807         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
17809 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17811         * genmatch.cc (commutative_op): Add COND_LEN_*
17812         * internal-fn.cc (first_commutative_argument): Ditto.
17813         (CASE): Ditto.
17814         (get_unconditional_internal_fn): Ditto.
17815         (can_interpret_as_conditional_op_p): Ditto.
17816         (internal_fn_len_index): Ditto.
17817         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
17818         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
17819         (convert_mult_to_fma): Ditto.
17820         (math_opts_dom_walker::after_dom_children): Ditto.
17822 2023-07-13  Pan Li  <pan2.li@intel.com>
17824         * config/riscv/riscv.cc (vxrm_rtx): New static var.
17825         (frm_rtx): Ditto.
17826         (global_state_unknown_p): Removed.
17827         (riscv_entity_mode_after): Removed.
17828         (asm_insn_p): New function.
17829         (vxrm_unknown_p): New function for fixed-point.
17830         (riscv_vxrm_mode_after): Ditto.
17831         (frm_unknown_dynamic_p): New function for floating-point.
17832         (riscv_frm_mode_after): Ditto.
17833         (riscv_mode_after): Leverage new functions.
17835 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17837         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
17838         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
17839         calling vect_model_load_cost.
17841 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17843         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
17844         handle memory_access_type VMAT_CONTIGUOUS, remove some
17845         VMAT_CONTIGUOUS_PERMUTE related handlings.
17846         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
17847         without calling vect_model_load_cost.
17849 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17851         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
17852         VMAT_CONTIGUOUS_REVERSE any more.
17853         (vectorizable_load): Adjust the costing handling on
17854         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
17856 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17858         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
17859         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
17860         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
17861         assert it will never get VMAT_LOAD_STORE_LANES.
17863 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17865         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
17866         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
17867         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
17868         remove VMAT_GATHER_SCATTER related handlings and the related parameter
17869         gs_info.
17871 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17873         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
17874         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
17875         vect_model_load_cost.
17876         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
17877         VMAT_STRIDED_SLP any more, and remove their related handlings.
17879 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17881         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
17882         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
17883         hoisting decision and without calling vect_model_load_cost.
17884         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
17885         and remove VMAT_INVARIANT related handlings.
17887 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17889         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
17890         on costing with one extra argument cost_vec.
17891         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
17892         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
17893         gs_info.decl set any more.
17895 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17897         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
17898         to vect_model_load_cost down to some different transform paths
17899         according to the handlings of different vect_memory_access_types.
17901 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
17903         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
17905 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17907         * config/riscv/autovec.md
17908         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
17909         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
17910         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
17911         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
17912         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
17913         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
17914         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
17915         (len_mask_gather_load<mode><mode>): Ditto.
17916         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
17917         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
17918         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
17919         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
17920         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
17921         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
17922         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
17923         (len_mask_scatter_store<mode><mode>): Ditto.
17924         * config/riscv/predicates.md (const_1_operand): New predicate.
17925         (vector_gs_scale_operand_16): Ditto.
17926         (vector_gs_scale_operand_32): Ditto.
17927         (vector_gs_scale_operand_64): Ditto.
17928         (vector_gs_extension_operand): Ditto.
17929         (vector_gs_scale_operand_16_rv32): Ditto.
17930         (vector_gs_scale_operand_32_rv32): Ditto.
17931         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
17932         (expand_gather_scatter): New function.
17933         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
17934         (emit_vlmax_masked_store_insn): New function.
17935         (emit_nonvlmax_masked_store_insn): Ditto.
17936         (modulo_sel_indices): Ditto.
17937         (expand_vec_perm): Fix SLP for gather/scatter.
17938         (prepare_gather_scatter): New function.
17939         (expand_gather_scatter): Ditto.
17940         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
17941         (subreg:SI (DI CONST_POLY_INT)).
17942         * config/riscv/vector-iterators.md: Add gather/scatter.
17943         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
17944         (@vec_duplicate<mode>): Ditto.
17945         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
17946         Fix name.
17947         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
17949 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17951         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
17952         * config/riscv/riscv-protos.h (enum insn_type): New enum.
17953         (expand_cond_len_binop): New function.
17954         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
17955         (emit_nonvlmax_fp_tu_insn): Ditto.
17956         (need_fp_rounding_p): Ditto.
17957         (expand_cond_len_binop): Ditto.
17958         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
17959         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
17961 2023-07-12  Jan Hubicka  <jh@suse.cz>
17963         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
17964         (gimple_duplicate_seme_region): ... this; break out profile updating
17965         code to ...
17966         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
17967         (ch_base::copy_headers): Update.
17968         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
17969         (gimple_duplicate_seme_region): ... this.
17971 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
17973         PR tree-optimization/107043
17974         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
17976 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
17978         PR tree-optimization/107053
17979         * gimple-range-op.cc (cfn_popcount): Use known set bits.
17981 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
17983         * ira.cc (equiv_init_varies_p): Change return type from int to bool
17984         and adjust function body accordingly.
17985         (equiv_init_movable_p): Ditto.
17986         (memref_used_between_p): Ditto.
17987         * lra-constraints.cc (valid_address_p): Ditto.
17989 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
17991         * range-op.cc (irange_to_masked_value): Remove.
17992         (update_known_bitmask): Update irange value/mask pair instead of
17993         only updating nonzero bits.
17995 2023-07-12  Jan Hubicka  <jh@suse.cz>
17997         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
17998         parameter and rewrite profile updating code to handle edges elimination.
17999         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
18000         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
18001         (loop_iv_derived_p): New function.
18002         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
18003         of PHIs and propagation of IV derived variables.
18004         (ch_base::copy_headers): Pass around the invariant edges hash set.
18006 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
18008         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
18009         (last_active_insn): Change "skip_use_p" function argument to bool.
18010         (noce_operand_ok): Change return type from int to bool.
18011         (find_cond_trap): Ditto.
18012         (block_jumps_and_fallthru_p): Change "fallthru_p" and
18013         "jump_p" variables to bool.
18014         (noce_find_if_block): Change return type from int to bool.
18015         (cond_exec_find_if_block): Ditto.
18016         (find_if_case_1): Ditto.
18017         (find_if_case_2): Ditto.
18018         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
18019         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
18020         (cond_exec_process_insns): Change return type from int to bool.
18021         Change "mod_ok" function arg to bool.
18022         (cond_exec_process_if_block): Change return type from int to bool.
18023         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
18024         variable to bool.
18025         (noce_emit_store_flag): Change return type from int to bool.
18026         Change "reversep" function arg to bool.  Change "cond_complex"
18027         variable to bool.
18028         (noce_try_move): Change return type from int to bool.
18029         (noce_try_ifelse_collapse): Ditto.
18030         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
18031         (noce_try_addcc): Change return type from int to bool.  Change
18032         "subtract" variable to bool.
18033         (noce_try_store_flag_constants): Change return type from int to bool.
18034         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
18035         (noce_try_cmove): Change return type from int to bool.
18036         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
18037         (noce_try_minmax): Change return type from int to bool.  Change
18038         "unsignedp" variable to bool.
18039         (noce_try_abs): Change return type from int to bool.  Change
18040         "negate" variable to bool.
18041         (noce_try_sign_mask): Change return type from int to bool.
18042         (noce_try_move): Ditto.
18043         (noce_try_store_flag_constants): Ditto.
18044         (noce_try_cmove): Ditto.
18045         (noce_try_cmove_arith): Ditto.
18046         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
18047         (noce_try_bitop): Change return type from int to bool.
18048         (noce_operand_ok): Ditto.
18049         (noce_convert_multiple_sets): Ditto.
18050         (noce_convert_multiple_sets_1): Ditto.
18051         (noce_process_if_block): Ditto.
18052         (check_cond_move_block): Ditto.
18053         (cond_move_process_if_block): Ditto. Change "success_p"
18054         variable to bool.
18055         (rest_of_handle_if_conversion): Change return type to void.
18057 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18059         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
18060         (CASE): Ditto.
18061         (get_conditional_len_internal_fn): New function.
18062         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
18063         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
18064         support.
18066 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
18068         PR target/91681
18069         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
18071 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
18073         PR target/91681
18074         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
18075         define_insn_and_split derived from *add<dwi>3_doubleword_concat
18076         and *add<dwi>3_doubleword_zext.
18078 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
18080         PR target/110598
18081         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
18082         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
18083         (peephole2): Simplify rega = 0; rega op= rega cases.
18085 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
18087         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
18088         testing a TImode SUBREG of a 128-bit vector register against
18089         zero, use a PTEST instruction instead of first moving it to
18090         a pair of scalar registers.
18092 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
18094         * genopinit.cc (main): Adjust maximal number of optabs and
18095         machine modes.
18096         * gensupport.cc (find_optab): Shift optab by 20 and mode by
18097         10 bits.
18098         * optabs-query.h (optab_handler): Ditto.
18099         (convert_optab_handler): Ditto.
18101 2023-07-12  Richard Biener  <rguenther@suse.de>
18103         PR tree-optimization/110630
18104         * tree-vect-slp.cc (vect_add_slp_permutation): New
18105         offset parameter, honor that for the extract code generation.
18106         (vectorizable_slp_permutation_1): Handle offsetted identities.
18108 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18110         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
18111         (umul<mode>3_highpart): Ditto.
18113 2023-07-12  Jan Beulich  <jbeulich@suse.com>
18115         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
18116         alternative. Adjust original last alternative's "prefix"
18117         attribute to maybe_evex.
18119 2023-07-12  Jan Beulich  <jbeulich@suse.com>
18121         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
18122         vbroadcastss for AVX2. New AVX512F alternative.
18123         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
18124         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
18126 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18128         * config/riscv/peephole.md: Remove XThead* peephole passes.
18129         * config/riscv/thead.md: Include thead-peephole.md.
18130         * config/riscv/thead-peephole.md: New file.
18132 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18134         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
18135         New prototype.
18136         (riscv_index_reg_class): Likewise.
18137         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
18138         (riscv_index_reg_class): New function.
18139         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
18140         riscv_index_reg_class().
18141         (REGNO_OK_FOR_INDEX_P): Call new function
18142         riscv_regno_ok_for_index_p().
18144 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18146         * config/riscv/riscv-protos.h (enum riscv_address_type):
18147         New location of type definition.
18148         (struct riscv_address_info): Likewise.
18149         * config/riscv/riscv.cc (enum riscv_address_type):
18150         Old location of type definition.
18151         (struct riscv_address_info): Likewise.
18153 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18155         * config/riscv/riscv.h (Xmode): New macro.
18157 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18159         * config/riscv/riscv.cc (riscv_print_operand_address): Use
18160         output_addr_const rather than riscv_print_operand.
18162 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18164         * config/riscv/thead.md: Adjust constraints of th_addsl.
18166 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18168         * config/riscv/thead.cc (th_mempair_operands_p):
18169         Fix documentation of th_mempair_order_operands().
18171 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18173         * config/riscv/thead.cc (th_mempair_save_regs):
18174         Emit REG_FRAME_RELATED_EXPR notes in prologue.
18176 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18178         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
18179         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
18180         New XThead extension INSN.
18181         (*zero_extendsidi2_th_extu): New XThead extension INSN.
18182         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
18184 2023-07-12  liuhongt  <hongtao.liu@intel.com>
18186         PR target/110438
18187         PR target/110202
18188         * config/i386/predicates.md
18189         (int_float_vector_all_ones_operand): New predicate.
18190         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
18191         define_insn.
18192         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
18193         Ditto.
18194         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
18195         Ditto.
18196         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
18197         define_insn_and_split to avoid false dependence.
18198         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
18199         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
18200         of operands 1 to '0' to avoid false dependence.
18201         (*andnot<mode>3): Ditto.
18202         (iornot<mode>3): Ditto.
18203         (*<nlogic><mode>3): Ditto.
18205 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
18207         * common/config/i386/cpuinfo.h
18208         (get_intel_cpu): Handle Granite Rapids D.
18209         * common/config/i386/i386-common.cc:
18210         (processor_alias_table): Add graniterapids-d.
18211         * common/config/i386/i386-cpuinfo.h
18212         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
18213         * config.gcc: Add -march=graniterapids-d.
18214         * config/i386/driver-i386.cc (host_detect_local_cpu):
18215         Handle graniterapids-d.
18216         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
18217         * doc/extend.texi: Add graniterapids-d.
18218         * doc/invoke.texi: Ditto.
18220 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
18222         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
18223         Add OPTION_MASK_ISA_AVX512VL.
18224         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
18225         Ditto.
18227 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18229         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
18230         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
18231         (shuffle_compress_patterns): Ditto.
18232         (expand_vec_perm_const_1): Ditto.
18234 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
18236         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
18237         * cfghooks.h (struct cfg_hooks): Change return type of
18238         verify_flow_info from integer to bool.
18239         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
18240         (can_delete_label_p): Ditto.
18241         (rtl_verify_flow_info): Change return type from int to bool
18242         and adjust function body accordingly.  Change "err" variable to bool.
18243         (rtl_verify_flow_info_1): Ditto.
18244         (free_bb_for_insn): Change return type to void.
18245         (rtl_merge_blocks): Change "b_empty" variable to bool.
18246         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
18247         (verify_hot_cold_block_grouping): Change return type from int to bool.
18248         Change "err" variable to bool.
18249         (rtl_verify_edges): Ditto.
18250         (rtl_verify_bb_insns): Ditto.
18251         (rtl_verify_bb_pointers): Ditto.
18252         (rtl_verify_bb_insn_chain): Ditto.
18253         (rtl_verify_fallthru): Ditto.
18254         (rtl_verify_bb_layout): Ditto.
18255         (purge_all_dead_edges): Change "purged" variable to bool.
18256         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
18257         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
18258         (load_killed_in_block_p): Change return type from int to bool
18259         and adjust function body accordingly.
18260         (oprs_unchanged_p): Return true/false.
18261         (rest_of_handle_gcse2): Change return type to void.
18262         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
18263         int to bool.  Change "err" variable to bool.
18265 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
18267         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
18269 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18271         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
18272         * internal-fn.cc (cond_len_unary_direct): Ditto.
18273         (cond_len_binary_direct): Ditto.
18274         (cond_len_ternary_direct): Ditto.
18275         (expand_cond_len_unary_optab_fn): Ditto.
18276         (expand_cond_len_binary_optab_fn): Ditto.
18277         (expand_cond_len_ternary_optab_fn): Ditto.
18278         (direct_cond_len_unary_optab_supported_p): Ditto.
18279         (direct_cond_len_binary_optab_supported_p): Ditto.
18280         (direct_cond_len_ternary_optab_supported_p): Ditto.
18281         * internal-fn.def (COND_LEN_ADD): Ditto.
18282         (COND_LEN_SUB): Ditto.
18283         (COND_LEN_MUL): Ditto.
18284         (COND_LEN_DIV): Ditto.
18285         (COND_LEN_MOD): Ditto.
18286         (COND_LEN_RDIV): Ditto.
18287         (COND_LEN_MIN): Ditto.
18288         (COND_LEN_MAX): Ditto.
18289         (COND_LEN_FMIN): Ditto.
18290         (COND_LEN_FMAX): Ditto.
18291         (COND_LEN_AND): Ditto.
18292         (COND_LEN_IOR): Ditto.
18293         (COND_LEN_XOR): Ditto.
18294         (COND_LEN_SHL): Ditto.
18295         (COND_LEN_SHR): Ditto.
18296         (COND_LEN_FMA): Ditto.
18297         (COND_LEN_FMS): Ditto.
18298         (COND_LEN_FNMA): Ditto.
18299         (COND_LEN_FNMS): Ditto.
18300         (COND_LEN_NEG): Ditto.
18301         * optabs.def (OPTAB_D): Ditto.
18303 2023-07-11  Richard Biener  <rguenther@suse.de>
18305         PR tree-optimization/110614
18306         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
18307         SLP splats are not suitable for re-align ops.
18309 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
18311         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
18312         MEM_P usage.
18313         (vsx_quad_dform_memory_operand): Likewise.
18315 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
18317         * reorg.cc (stop_search_p): Change return type from int to bool
18318         and adjust function body accordingly.
18319         (resource_conflicts_p): Ditto.
18320         (insn_references_resource_p): Change return type from int to bool.
18321         (insn_sets_resource_p): Ditto.
18322         (redirect_with_delay_slots_safe_p): Ditto.
18323         (condition_dominates_p): Change return type from int to bool
18324         and adjust function body accordingly.
18325         (redirect_with_delay_list_safe_p): Ditto.
18326         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
18327         function argument to bool.
18328         (steal_delay_list_from_target): Change "pannul_p" function
18329         argument to bool pointer.  Change "must_annul" and "used_annul"
18330         variables from int to bool.
18331         (steal_delay_list_from_fallthrough): Ditto.
18332         (own_thread_p): Change return type from int to bool and adjust
18333         function body accordingly.  Change "allow_fallthrough" function
18334         argument to bool.
18335         (reorg_redirect_jump): Change return type from int to bool.
18336         (fill_simple_delay_slots): Change "non_jumps_p" function
18337         argument from int to bool.  Change "maybe_never" varible to bool.
18338         (fill_slots_from_thread): Change "likely", "thread_if_true" and
18339         "own_thread" function arguments to bool.  Change "lose" and
18340         "must_annul" variables to bool.
18341         (delete_from_delay_slot): Change "had_barrier" variable to bool.
18342         (try_merge_delay_insns): Change "annul_p" variable to bool.
18343         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
18344         variables to bool.
18345         (rest_of_handle_delay_slots): Change return type from int to void
18346         and adjust function body accordingly.
18348 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
18350         * doc/extend.texi (RISC-V Operand Modifiers): New.
18352 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18354         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
18355         (insert_insn_end_basic_block): Ditto.
18356         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
18357         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
18358         * gcse.h (insert_insn_end_basic_block): Ditto.
18360 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
18362         PR target/110268
18363         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
18364         (arm_builtin_decl): Hahndle MVE builtins.
18365         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
18366         (add_unique_function): Fix handling of
18367         __ARM_MVE_PRESERVE_USER_NAMESPACE.
18368         (add_overloaded_function): Likewise.
18369         * config/arm/arm-protos.h (builtin_decl): New declaration.
18371 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
18373         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
18375 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
18377         PR tree-optimization/110557
18378         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
18379         Ensure the output sign-extended if necessary.
18381 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
18383         * config/i386/i386.md (peephole2): Transform xchg insn with a
18384         REG_UNUSED note to a (simple) move.
18385         (*insvti_lowpart_1): New define_insn_and_split.
18386         (*insvdi_lowpart_1): Likewise.
18388 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
18390         * config/i386/i386-features.cc (compute_convert_gain): Tweak
18391         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
18392         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
18393         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
18395 2023-07-10  liuhongt  <hongtao.liu@intel.com>
18397         PR target/110170
18398         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
18399         splitter to detect fp max pattern.
18400         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
18402 2023-07-09  Jan Hubicka  <jh@suse.cz>
18404         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
18405         (dump_edge_info): Likewise.
18406         (dump_bb_info): Likewise.
18407         * profile-count.cc (profile_count::dump): Add comma between quality and
18408         freq.
18410 2023-07-08  Jan Hubicka  <jh@suse.cz>
18412         PR tree-optimization/110600
18413         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
18415 2023-07-08  Jan Hubicka  <jh@suse.cz>
18417         PR middle-end/110590
18418         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
18419         inner loops and be more careful about inconsistent profiles.
18420         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
18421         exit is followed by other exit.
18423 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
18425         * cprop.cc (reg_available_p): Change return type from int to bool.
18426         (reg_not_set_p): Ditto.
18427         (try_replace_reg): Ditto.  Change "success" variable to bool.
18428         (cprop_jump): Change return type from int to void
18429         and adjust function body accordingly.
18430         (constprop_register): Ditto.
18431         (cprop_insn): Ditto.  Change "changed" variable to bool.
18432         (local_cprop_pass): Change return type from int to void
18433         and adjust function body accordingly.
18434         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
18435         and "removed_p" variables to bool.
18436         (bypass_conditional_jumps): Change return type from int to void
18437         and adjust function body accordingly.  Change "changed"
18438         variable to bool.
18439         (one_cprop_pass): Ditto.
18441 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
18443         * gcse.cc (expr_equiv_p): Change return type from int to bool.
18444         (oprs_unchanged_p): Change return type from int to void
18445         and adjust function body accordingly.
18446         (oprs_anticipatable_p): Ditto.
18447         (oprs_available_p): Ditto.
18448         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
18449         arguments to bool. Change "found" variable to bool.
18450         (load_killed_in_block_p): Change return type from int to void and
18451         adjust function body accordingly.  Change "avail_p" argument to bool.
18452         (pre_expr_reaches_here_p): Change return type from int to void
18453         and adjust function body accordingly.
18454         (pre_delete): Ditto.  Change "changed" variable to bool.
18455         (pre_gcse): Change return type from int to void
18456         and adjust function body accordingly. Change "did_insert" and
18457         "changed" variables to bool.
18458         (one_pre_gcse_pass): Change return type from int to void
18459         and adjust function body accordingly.  Change "changed" variable
18460         to bool.
18461         (should_hoist_expr_to_dom): Change return type from int to void
18462         and adjust function body accordingly.  Change
18463         "visited_allocated_locally" variable to bool.
18464         (hoist_code): Change return type from int to void and adjust
18465         function body accordingly.  Change "changed" variable to bool.
18466         (one_code_hoisting_pass): Ditto.
18467         (pre_edge_insert): Change return type from int to void and adjust
18468         function body accordingly.  Change "did_insert" variable to bool.
18469         (pre_expr_reaches_here_p_work): Change return type from int to void
18470         and adjust function body accordingly.
18471         (simple_mem): Ditto.
18472         (want_to_gcse_p): Change return type from int to void
18473         and adjust function body accordingly.
18474         (can_assign_to_reg_without_clobbers_p): Update function body
18475         for bool return type.
18476         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
18477         (pre_insert_copies): Change "added_copy" variable to bool.
18479 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
18481         PR c++/110595
18482         PR c++/110596
18483         * doc/invoke.texi (Warning Options): Fix typos.
18485 2023-07-07  Jan Hubicka  <jh@suse.cz>
18487         * profile-count.cc (profile_count::dump): Add FUN
18488         parameter; print relative frequency.
18489         (profile_count::debug): Update.
18490         * profile-count.h (profile_count::dump): Update
18491         prototype.
18493 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
18495         PR target/43644
18496         PR target/110533
18497         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
18498         TImode destinations from paradoxical SUBREGs (setting the lowpart)
18499         into explicit zero extensions.  Use *insvti_highpart_1 instruction
18500         to set the highpart of a TImode destination.
18502 2023-07-07  Jan Hubicka  <jh@suse.cz>
18504         * predict.cc (force_edge_cold): Use
18505         set_edge_probability_and_rescale_others; improve dumps.
18507 2023-07-07  Jan Hubicka  <jh@suse.cz>
18509         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
18510         after exit.
18511         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
18512         is known.
18514 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
18516         * config/s390/s390.cc (vec_init): Fix default case
18518 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
18520         * lra-assigns.cc (assign_by_spills): Add reload insns involving
18521         reload pseudos with non-refined class to be processed on the next
18522         sub-pass.
18523         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
18524         (in_class_p): Use it.
18525         (print_curr_insn_alt): New func.
18526         (process_alt_operands): Use it.  Improve debug info.
18527         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
18528         pseudo class if it is not refined yet.
18530 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
18532         * value-range.cc (irange::get_bitmask_from_range): Return all the
18533         known bits for a singleton.
18534         (irange::set_range_from_bitmask): Set a range of a singleton when
18535         all bits are known.
18537 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
18539         * value-range.cc (irange::intersect): Leave normalization to
18540         caller.
18542 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
18544         * data-streamer-in.cc (streamer_read_value_range): Adjust for
18545         value/mask.
18546         * data-streamer-out.cc (streamer_write_vrange): Same.
18547         * range-op.cc (operator_cast::fold_range): Same.
18548         * value-range-pretty-print.cc
18549         (vrange_printer::print_irange_bitmasks): Same.
18550         * value-range-storage.cc (irange_storage::write_lengths_address):
18551         Same.
18552         (irange_storage::set_irange): Same.
18553         (irange_storage::get_irange): Same.
18554         (irange_storage::size): Same.
18555         (irange_storage::dump): Same.
18556         * value-range-storage.h: Same.
18557         * value-range.cc (debug): New.
18558         (irange_bitmask::dump): New.
18559         (add_vrange): Adjust for value/mask.
18560         (irange::operator=): Same.
18561         (irange::set): Same.
18562         (irange::verify_range): Same.
18563         (irange::operator==): Same.
18564         (irange::contains_p): Same.
18565         (irange::irange_single_pair_union): Same.
18566         (irange::union_): Same.
18567         (irange::intersect): Same.
18568         (irange::invert): Same.
18569         (irange::get_nonzero_bits_from_range): Rename to...
18570         (irange::get_bitmask_from_range): ...this.
18571         (irange::set_range_from_nonzero_bits): Rename to...
18572         (irange::set_range_from_bitmask): ...this.
18573         (irange::set_nonzero_bits): Rename to...
18574         (irange::update_bitmask): ...this.
18575         (irange::get_nonzero_bits): Rename to...
18576         (irange::get_bitmask): ...this.
18577         (irange::intersect_nonzero_bits): Rename to...
18578         (irange::intersect_bitmask): ...this.
18579         (irange::union_nonzero_bits): Rename to...
18580         (irange::union_bitmask): ...this.
18581         (irange_bitmask::verify_mask): New.
18582         * value-range.h (class irange_bitmask): New.
18583         (irange_bitmask::set_unknown): New.
18584         (irange_bitmask::unknown_p): New.
18585         (irange_bitmask::irange_bitmask): New.
18586         (irange_bitmask::get_precision): New.
18587         (irange_bitmask::get_nonzero_bits): New.
18588         (irange_bitmask::set_nonzero_bits): New.
18589         (irange_bitmask::operator==): New.
18590         (irange_bitmask::union_): New.
18591         (irange_bitmask::intersect): New.
18592         (class irange): Friend vrange_printer.
18593         (irange::varying_compatible_p): Adjust for bitmask.
18594         (irange::set_varying): Same.
18595         (irange::set_nonzero): Same.
18597 2023-07-07  Jan Beulich  <jbeulich@suse.com>
18599         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
18601 2023-07-07  Jan Beulich  <jbeulich@suse.com>
18603         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
18604         alternative. Switch new last alternative's "isa" attribute to
18605         "avx512vl".
18606         (vec_extract_hi_v32qi): Likewise.
18608 2023-07-07  Pan Li  <pan2.li@intel.com>
18609             Robin Dapp  <rdapp@ventanamicro.com>
18611         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
18612         when FRM_MODE_DYN.
18613         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
18614         (riscv_mode_exit): Likewise for exit mode.
18615         (riscv_mode_needed): Likewise for needed mode.
18616         (riscv_mode_after): Likewise for after mode.
18618 2023-07-07  Pan Li  <pan2.li@intel.com>
18620         * config/riscv/vector.md: Fix typo.
18622 2023-07-06  Jan Hubicka  <jh@suse.cz>
18624         PR middle-end/25623
18625         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
18626         of iterations determined.
18627         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
18629 2023-07-06  Jan Hubicka  <jh@suse.cz>
18631         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
18632         probability update to be safe on loops with subloops.
18633         Make bound parameter to be iteration bound.
18634         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
18635         of scale_loop_profile.
18636         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
18638 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
18640         PR tree-optimization/110449
18641         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
18642         vec_loop for the unrolled loop.
18644 2023-07-06  Jan Hubicka  <jh@suse.cz>
18646         * cfg.cc (set_edge_probability_and_rescale_others): New function.
18647         (update_bb_profile_for_threading): Use it; simplify the rest.
18648         * cfg.h (set_edge_probability_and_rescale_others): Declare.
18649         * profile-count.h (profile_probability::apply_scale): New.
18651 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
18653         * doc/extend.texi (ARC Built-in Functions): Update documentation
18654         with missing builtins.
18656 2023-07-06  Richard Biener  <rguenther@suse.de>
18658         PR tree-optimization/110556
18659         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
18660         assign code and all operands of non-stores.
18662 2023-07-06  Richard Biener  <rguenther@suse.de>
18664         PR tree-optimization/110563
18665         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
18666         Remove second argument.
18667         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
18668         Remove for_epilogue_p argument.  Merge assert ...
18669         (vect_analyze_loop_2): ... with check done before determining
18670         partial vectors by moving it after.
18671         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
18673 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18675         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
18676         few things re 'reorder' option and strings.
18677         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
18679 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18681         * gengtype-parse.cc: Clean up obsolete parametrized structs
18682         remnants.
18683         * gengtype.cc: Likewise.
18684         * gengtype.h: Likewise.
18686 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18688         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
18689         Adjust all users.
18691 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18693         * gengtype-parse.cc (token_names): Add '"user"'.
18694         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
18695         'FIRST_TOKEN_WITH_VALUE'.
18697 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18699         * doc/gty.texi (GTY Options) <string_length>: Enhance.
18701 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18703         * gengtype.cc (write_root, write_roots): Explicitly reject
18704         'string_length' option.
18705         * doc/gty.texi (GTY Options) <string_length>: Document.
18707 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
18709         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
18710         (ggc_pch_write_object): Remove 'bool is_string' argument.
18711         * ggc-common.cc: Adjust.
18712         * ggc-page.cc: Likewise.
18714 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
18716         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
18718 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
18720         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
18721         and add description for inling of function with arch and tune
18722         attributes.
18724 2023-07-06  Richard Biener  <rguenther@suse.de>
18726         PR tree-optimization/110515
18727         * tree-ssa-pre.cc (compute_avail): Make code dealing
18728         with hoisting loads with different alias-sets more
18729         robust.
18731 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18733         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
18735 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
18737         * config/i386/i386.cc (ix86_can_inline_p): If callee has
18738         default arch=x86-64 and tune=generic, do not block the
18739         inlining to its caller. Also allow callee with different
18740         arch= to be inlined if it has always_inline attribute and
18741         it's ISA is subset of caller's.
18743 2023-07-06  liuhongt  <hongtao.liu@intel.com>
18745         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
18746         DF/SFmode AND/IOR/XOR/ANDN operations.
18748 2023-07-06  Andrew Pinski  <apinski@marvell.com>
18750         PR middle-end/110554
18751         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
18752         just build using boolean_type_node instead of the cond_type.
18753         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
18754         that will feed into the COND_EXPR.
18756 2023-07-06  liuhongt  <hongtao.liu@intel.com>
18758         PR target/110170
18759         * config/i386/i386.md (movdf_internal): Disparage slightly for
18760         2 alternatives (r,v) and (v,r) by adding constraint modifier
18761         '?'.
18763 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
18765         PR target/106907
18766         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
18767         initialization of new_addr.
18769 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
18771         PR tree-optimization/110474
18772         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
18773         unroll factor while selecting the epilog vect loop VF.
18775 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
18777         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
18778         call.
18780 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
18782         * gimple-range-gori.cc (compute_operand_range): After calling
18783         compute_operand2_range, recursively call self if needed.
18784         (compute_operand2_range): Turn into a leaf function.
18785         (gori_compute::compute_operand1_and_operand2_range): Finish
18786         operand2 calculation.
18787         * gimple-range-gori.h (compute_operand2_range): Remove name param.
18789 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
18791         * gimple-range-gori.cc (compute_operand_range): After calling
18792         compute_operand1_range, recursively call self if needed.
18793         (compute_operand1_range): Turn into a leaf function.
18794         (gori_compute::compute_operand1_and_operand2_range): Finish
18795         operand1 calculation.
18796         * gimple-range-gori.h (compute_operand1_range): Remove name param.
18798 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
18800         * gimple-range-gori.cc (compute_operand_range): Check for
18801         operand interdependence when both op1 and op2 are computed.
18802         (compute_operand1_and_operand2_range): No checks required now.
18804 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
18806         * gimple-range-gori.cc (compute_operand_range): Check for
18807         a relation between op1 and op2 and use that instead.
18808         (compute_operand1_range): Don't look for a relation override.
18809         (compute_operand2_range): Ditto.
18811 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
18813         * doc/contrib.texi (Contributors): Update my entry.
18815 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
18817         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
18818         prob calculation.
18820 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
18822         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
18823         scehdule_more_p and contributes_to_priority indirect frunction
18824         type from int to bool.
18825         (no_real_insns_p): Change return type from int to bool.
18826         (contributes_to_priority): Ditto.
18827         * haifa-sched.cc (no_real_insns_p): Change return type from
18828         int to bool and adjust function body accordingly.
18829         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
18830         variable type from int to bool.
18831         (ps_insn_advance_column): Change return type from int to bool.
18832         (ps_has_conflicts): Ditto. Change "has_conflicts"
18833         variable type from int to bool.
18834         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
18835         (conditions_mutex_p): Ditto.
18836         * sched-ebb.cc (schedule_more_p): Ditto.
18837         (ebb_contributes_to_priority): Change return type from
18838         int to bool and adjust function body accordingly.
18839         * sched-rgn.cc (is_cfg_nonregular): Ditto.
18840         (check_live_1): Ditto.
18841         (is_pfree): Ditto.
18842         (find_conditional_protection): Ditto.
18843         (is_conditionally_protected): Ditto.
18844         (is_prisky): Ditto.
18845         (is_exception_free): Ditto.
18846         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
18847         variables from int to bool.
18848         (extend_rgns): Change "rescan" variable from int to bool.
18849         (check_live): Change return type from
18850         int to bool and adjust function body accordingly.
18851         (can_schedule_ready_p): Ditto.
18852         (schedule_more_p): Ditto.
18853         (contributes_to_priority): Ditto.
18855 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
18857         * doc/md.texi: Document that vec_set and vec_extract must not
18858         fail.
18859         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
18860         (gimple_expand_vec_set_extract_expr): ...to this.
18861         (gimple_expand_vec_exprs): Call renamed function.
18862         * internal-fn.cc (vec_extract_direct): Add.
18863         (expand_vec_extract_optab_fn): New function to expand
18864         vec_extract optab.
18865         (direct_vec_extract_optab_supported_p): Add.
18866         * internal-fn.def (VEC_EXTRACT): Add.
18867         * optabs.cc (can_vec_extract_var_idx_p): New function.
18868         * optabs.h (can_vec_extract_var_idx_p): Declare.
18870 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
18872         * config/riscv/autovec.md: Add gen_lowpart.
18874 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
18876         * config/riscv/autovec.md: Allow register index operand.
18878 2023-07-05  Pan Li  <pan2.li@intel.com>
18880         * config/riscv/riscv-vector-builtins.cc
18881         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
18883 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
18885         * config/riscv/autovec.md: Use float_truncate.
18887 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18889         * internal-fn.cc (internal_fn_len_index): Apply
18890         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
18891         (internal_fn_mask_index): Ditto.
18892         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
18893         (supports_vec_scatter_store_p): Ditto.
18894         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
18895         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
18896         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
18897         (vect_get_strided_load_store_ops): Ditto.
18898         (vectorizable_store): Ditto.
18899         (vectorizable_load): Ditto.
18901 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
18902             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18904         * simplify-rtx.cc (native_encode_rtx): Ditto.
18905         (native_decode_vector_rtx): Ditto.
18906         (simplify_const_vector_byte_offset): Ditto.
18907         (simplify_const_vector_subreg): Ditto.
18908         * tree.cc (build_truth_vector_type_for_mode): Ditto.
18909         * varasm.cc (output_constant_pool_2): Ditto.
18911 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
18913         * config/mips/mips.cc (mips_expand_block_move): don't expand for
18914         r6 with -mno-unaligned-access option if one or both of src and
18915         dest are unaligned. restruct: return directly if length is not const.
18916         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
18918 2023-07-05  Jan Beulich  <jbeulich@suse.com>
18920         PR target/100711
18921         * config/i386/sse.md: New splitters to simplify
18922         not;vec_duplicate as a singular vpternlog.
18923         (one_cmpl<mode>2): Allow broadcast for operand 1.
18924         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
18926 2023-07-05  Jan Beulich  <jbeulich@suse.com>
18928         PR target/100711
18929         * config/i386/sse.md: New splitters to simplify
18930         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
18932 2023-07-05  Jan Beulich  <jbeulich@suse.com>
18934         PR target/100711
18935         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
18936         form of splitter for PR target/100711.
18938 2023-07-05  Richard Biener  <rguenther@suse.de>
18940         PR middle-end/110541
18941         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
18942         reality.
18944 2023-07-05  Jan Beulich  <jbeulich@suse.com>
18946         PR target/93768
18947         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
18948         for memory form operand 1.
18950 2023-07-05  Jan Beulich  <jbeulich@suse.com>
18952         PR target/93768
18953         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
18954         bitwise vector operations.
18955         * config/i386/sse.md (*iornot<mode>3): New insn.
18956         (*xnor<mode>3): Likewise.
18957         (*<nlogic><mode>3): Likewise.
18958         (andor): New code iterator.
18959         (nlogic): New code attribute.
18960         (ternlog_nlogic): Likewise.
18962 2023-07-05  Richard Biener  <rguenther@suse.de>
18964         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
18966 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
18968         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
18970 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
18972         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
18973         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
18974         (ADJUST_ALIGNMENT): Ditto.
18975         (RVV_TUPLE_PARTIAL_MODES): Ditto.
18976         (ADJUST_NUNITS): Ditto.
18977         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
18978         New types.
18979         (vfloat16mf4x3_t): Ditto.
18980         (vfloat16mf4x4_t): Ditto.
18981         (vfloat16mf4x5_t): Ditto.
18982         (vfloat16mf4x6_t): Ditto.
18983         (vfloat16mf4x7_t): Ditto.
18984         (vfloat16mf4x8_t): Ditto.
18985         (vfloat16mf2x2_t): Ditto.
18986         (vfloat16mf2x3_t): Ditto.
18987         (vfloat16mf2x4_t): Ditto.
18988         (vfloat16mf2x5_t): Ditto.
18989         (vfloat16mf2x6_t): Ditto.
18990         (vfloat16mf2x7_t): Ditto.
18991         (vfloat16mf2x8_t): Ditto.
18992         (vfloat16m1x2_t): Ditto.
18993         (vfloat16m1x3_t): Ditto.
18994         (vfloat16m1x4_t): Ditto.
18995         (vfloat16m1x5_t): Ditto.
18996         (vfloat16m1x6_t): Ditto.
18997         (vfloat16m1x7_t): Ditto.
18998         (vfloat16m1x8_t): Ditto.
18999         (vfloat16m2x2_t): Ditto.
19000         (vfloat16m2x3_t): Ditto.
19001         (vfloat16m2x4_t): Ditto.
19002         (vfloat16m4x2_t): Ditto.
19003         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
19004         (vfloat16mf4x3_t): Ditto.
19005         (vfloat16mf4x4_t): Ditto.
19006         (vfloat16mf4x5_t): Ditto.
19007         (vfloat16mf4x6_t): Ditto.
19008         (vfloat16mf4x7_t): Ditto.
19009         (vfloat16mf4x8_t): Ditto.
19010         (vfloat16mf2x2_t): Ditto.
19011         (vfloat16mf2x3_t): Ditto.
19012         (vfloat16mf2x4_t): Ditto.
19013         (vfloat16mf2x5_t): Ditto.
19014         (vfloat16mf2x6_t): Ditto.
19015         (vfloat16mf2x7_t): Ditto.
19016         (vfloat16mf2x8_t): Ditto.
19017         (vfloat16m1x2_t): Ditto.
19018         (vfloat16m1x3_t): Ditto.
19019         (vfloat16m1x4_t): Ditto.
19020         (vfloat16m1x5_t): Ditto.
19021         (vfloat16m1x6_t): Ditto.
19022         (vfloat16m1x7_t): Ditto.
19023         (vfloat16m1x8_t): Ditto.
19024         (vfloat16m2x2_t): Ditto.
19025         (vfloat16m2x3_t): Ditto.
19026         (vfloat16m2x4_t): Ditto.
19027         (vfloat16m4x2_t): Ditto.
19028         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
19029         * config/riscv/riscv.md: New.
19030         * config/riscv/vector-iterators.md: New.
19032 2023-07-04  Andrew Pinski  <apinski@marvell.com>
19034         PR tree-optimization/110487
19035         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
19036         build a nonstandard integer and use that.
19038 2023-07-04  Andrew Pinski  <apinski@marvell.com>
19040         * match.pd (a?-1:0): Cast type an integer type
19041         rather the type before the negative.
19042         (a?0:-1): Likewise.
19044 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
19046         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
19047         Change to use HARD_REG_BIT and its macros.
19048         * config/xtensa/xtensa.md
19049         (peephole2: regmove elimination during DFmode input reload):
19050         Likewise.
19052 2023-07-04  Richard Biener  <rguenther@suse.de>
19054         PR tree-optimization/110491
19055         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
19056         whether the PHI args are possibly undefined before folding
19057         the COND_EXPR.
19059 2023-07-04  Pan Li  <pan2.li@intel.com>
19060             Thomas Schwinge  <thomas@codesourcery.com>
19062         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
19063         bits for machine mode table.
19064         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
19065         HOST machine mode bits.
19066         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
19067         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
19068         as the table size.
19069         * tree-streamer.h (streamer_mode_table): Ditto.
19070         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
19071         as the packing limit.
19072         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
19074 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
19076         * lto-streamer.h (class lto_input_block): Capture
19077         'lto_file_decl_data *file_data' instead of just
19078         'unsigned char *mode_table'.
19079         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
19080         * ipa-fnsummary.cc (inline_read_section): Likewise.
19081         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
19082         * ipa-modref.cc (read_section): Likewise.
19083         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
19084         Likewise.
19085         * ipa-sra.cc (isra_read_summary_section): Likewise.
19086         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
19087         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
19088         * lto-streamer-in.cc (lto_read_body_or_constructor)
19089         (lto_input_toplevel_asms): Likewise.
19090         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
19092 2023-07-04  Richard Biener  <rguenther@suse.de>
19094         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
19095         (empty_bb_or_one_feeding_into_p): Check for them.
19096         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
19097         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
19099 2023-07-04  Richard Biener  <rguenther@suse.de>
19101         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
19102         check guarding scalar_niter underflow.
19104 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
19106         PR tree-optimization/110531
19107         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
19108         slp_done_for_suggested_uf to false.
19110 2023-07-04  Richard Biener  <rguenther@suse.de>
19112         PR tree-optimization/110228
19113         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
19114         Mark SSA may-undefs.
19115         (bb_no_side_effects_p): Check stmt uses for undefs.
19117 2023-07-04  Richard Biener  <rguenther@suse.de>
19119         PR tree-optimization/110436
19120         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
19121         force live but not relevant pattern stmts relevant.
19123 2023-07-04  Lili Cui  <lili.cui@intel.com>
19125         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
19126         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
19128 2023-07-04  Richard Biener  <rguenther@suse.de>
19130         PR middle-end/110495
19131         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
19132         since we do not set TREE_OVERFLOW on those since the
19133         introduction of VL vectors.
19134         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
19135         at TREE_OVERFLOW to determine validity of association.
19137 2023-07-04  Richard Biener  <rguenther@suse.de>
19139         PR tree-optimization/110310
19140         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
19141         Move costing part ...
19142         (vect_analyze_loop_costing): ... here.  Integrate better
19143         estimate for epilogues from ...
19144         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
19145         with actual epilogue status.
19146         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
19147         avoid cancelling epilogue vectorization.
19148         (vect_update_epilogue_niters): Remove.  No longer update
19149         epilogue LOOP_VINFO_NITERS.
19151 2023-07-04  Pan Li  <pan2.li@intel.com>
19153         Revert:
19154         2023-07-03  Pan Li  <pan2.li@intel.com>
19156         * config/riscv/vector.md: Fix typo.
19158 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19160         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
19161         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
19162         (expand_gather_load_optab_fn): Ditto.
19163         (internal_load_fn_p): Ditto.
19164         (internal_store_fn_p): Ditto.
19165         (internal_gather_scatter_fn_p): Ditto.
19166         (internal_fn_len_index): Ditto.
19167         (internal_fn_mask_index): Ditto.
19168         (internal_fn_stored_value_index): Ditto.
19169         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
19170         (LEN_MASK_SCATTER_STORE): Ditto.
19171         * optabs.def (OPTAB_CD): Ditto.
19173 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19175         * config/riscv/riscv-vsetvl.cc
19176         (vector_insn_info::parse_insn): Add early break.
19178 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
19180         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
19181         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
19183 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
19185         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
19187 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
19189         * common/config/riscv/riscv-common.cc: Add support for zvbb,
19190         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
19191         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
19192         * config/riscv/arch-canonicalize: Add canonicalization info for
19193         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
19194         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
19195         (MASK_ZVBC): Likewise.
19196         (TARGET_ZVBB): Likewise.
19197         (TARGET_ZVBC): Likewise.
19198         (MASK_ZVKG): Likewise.
19199         (MASK_ZVKNED): Likewise.
19200         (MASK_ZVKNHA): Likewise.
19201         (MASK_ZVKNHB): Likewise.
19202         (MASK_ZVKSED): Likewise.
19203         (MASK_ZVKSH): Likewise.
19204         (MASK_ZVKN): Likewise.
19205         (MASK_ZVKNC): Likewise.
19206         (MASK_ZVKNG): Likewise.
19207         (MASK_ZVKS): Likewise.
19208         (MASK_ZVKSC): Likewise.
19209         (MASK_ZVKSG): Likewise.
19210         (MASK_ZVKT): Likewise.
19211         (TARGET_ZVKG): Likewise.
19212         (TARGET_ZVKNED): Likewise.
19213         (TARGET_ZVKNHA): Likewise.
19214         (TARGET_ZVKNHB): Likewise.
19215         (TARGET_ZVKSED): Likewise.
19216         (TARGET_ZVKSH): Likewise.
19217         (TARGET_ZVKN): Likewise.
19218         (TARGET_ZVKNC): Likewise.
19219         (TARGET_ZVKNG): Likewise.
19220         (TARGET_ZVKS): Likewise.
19221         (TARGET_ZVKSC): Likewise.
19222         (TARGET_ZVKSG): Likewise.
19223         (TARGET_ZVKT): Likewise.
19224         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
19226 2023-07-03  Andrew Pinski  <apinski@marvell.com>
19228         PR middle-end/110510
19229         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
19231 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
19233         * config/darwin.h: Avoid duplicate multiply_defined specs on
19234         earlier Darwin versions with shared libgcc.
19236 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
19238         * tree.h (tree_int_cst_equal): Change return type from int to bool.
19239         (operand_equal_for_phi_arg_p): Ditto.
19240         (tree_map_base_marked_p): Ditto.
19241         * tree.cc (contains_placeholder_p): Update function body
19242         for bool return type.
19243         (type_cache_hasher::equal): Ditto.
19244         (tree_map_base_hash): Change return type
19245         from int to void and adjust function body accordingly.
19246         (tree_int_cst_equal): Ditto.
19247         (operand_equal_for_phi_arg_p): Ditto.
19248         (get_narrower): Change "first" variable to bool.
19249         (cl_option_hasher::equal): Update function body for bool return type.
19250         * ggc.h (ggc_set_mark): Change return type from int to bool.
19251         (ggc_marked_p): Ditto.
19252         * ggc-page.cc (gt_ggc_mx): Change return type
19253         from int to void and adjust function body accordingly.
19254         (ggc_set_mark): Ditto.
19256 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19258         * config/riscv/autovec.md: Change order of
19259         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
19260         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
19261         * doc/md.texi: Ditto.
19262         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
19263         * internal-fn.cc (len_maskload_direct): Ditto.
19264         (len_maskstore_direct): Ditto.
19265         (add_len_and_mask_args): New function.
19266         (expand_partial_load_optab_fn): Change order of
19267         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
19268         (expand_partial_store_optab_fn): Ditto.
19269         (internal_fn_len_index): New function.
19270         (internal_fn_mask_index): Change order of
19271         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
19272         (internal_fn_stored_value_index): Ditto.
19273         (internal_len_load_store_bias): Ditto.
19274         * internal-fn.h (internal_fn_len_index): New function.
19275         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
19276         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
19277         * tree-vect-stmts.cc (vectorizable_store): Ditto.
19278         (vectorizable_load): Ditto.
19280 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
19282         PR modula2/110125
19283         * doc/gm2.texi (Semantic checking): Include examples using
19284         -Wuninit-variable-checking.
19286 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19288         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
19289         (*single_widen_fnma<mode>): Ditto.
19290         (*double_widen_fms<mode>): Ditto.
19291         (*single_widen_fms<mode>): Ditto.
19292         (*double_widen_fnms<mode>): Ditto.
19293         (*single_widen_fnms<mode>): Ditto.
19295 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19297         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
19298         into "*" in pattern name which simplifies build files.
19299         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
19300         (*pred_single_widen_mul<mode>): New pattern.
19302 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
19304         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
19305         the index to be 0 or 1.
19307 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
19309         Revert:
19310         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19312         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
19313         (*single_widen_fnma<mode>): Ditto.
19314         (*double_widen_fms<mode>): Ditto.
19315         (*single_widen_fms<mode>): Ditto.
19316         (*double_widen_fnms<mode>): Ditto.
19317         (*single_widen_fnms<mode>): Ditto.
19319 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19321         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
19322         (*single_widen_fnma<mode>): Ditto.
19323         (*double_widen_fms<mode>): Ditto.
19324         (*single_widen_fms<mode>): Ditto.
19325         (*double_widen_fnms<mode>): Ditto.
19326         (*single_widen_fnms<mode>): Ditto.
19328 2023-07-03  Pan Li  <pan2.li@intel.com>
19330         * config/riscv/vector.md: Fix typo.
19332 2023-07-03  Richard Biener  <rguenther@suse.de>
19334         PR tree-optimization/110506
19335         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
19336         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
19338 2023-07-03  Richard Biener  <rguenther@suse.de>
19340         PR tree-optimization/110506
19341         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
19342         type before relying on TYPE_PRECISION to produce a nonzero mask.
19344 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19346         * config/mips/mips.md(*and<mode>3_mips16): Generates
19347         ZEB/ZEH instructions.
19349 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19351         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
19352         address register to M16_REGS for MIPS16.
19353         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
19354         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
19355         (AVAIL_NON_MIPS16 (cache..)): Update to
19356         AVAIL_MIPS16E2_OR_NON_MIPS16.
19357         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
19358         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
19360 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19362         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
19363         for ISA_HAS_MIPS16E2.
19364         (ISA_HAS_SYNC): Same as above.
19365         (ISA_HAS_LL_SC): Same as above.
19367 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19369         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
19370         Add logics for generating instruction.
19371         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
19372         * config/mips/mips.md(mov_<load>l): Generates instructions.
19373         (mov_<load>r): Same as above.
19374         (mov_<store>l): Adjusted for the conditions above.
19375         (mov_<store>r): Same as above.
19376         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
19377         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
19379 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19381         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
19382         (mips_const_insns): Same as above.
19383         (mips_output_move): Same as above.
19384         (mips_output_function_prologue): Same as above.
19385         * config/mips/mips.md: Same as above
19387 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19389         * config/mips/constraints.md(Yz): New constraints for mips16e2.
19390         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
19391         (mips_bit_clear_info): Same as above.
19392         * config/mips/mips.cc(mips_bit_clear_info): New function for
19393         generating instructions.
19394         (mips_bit_clear_p): Same as above.
19395         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
19396         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
19397         (*and<mode>3): Generates INS instruction.
19398         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
19399         (ior<mode>3): Add logics for ORI instruction.
19400         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
19401         (*ior<mode>3_mips16): Add logics for XORI instruction.
19402         (*xor<mode>3_mips16): Generates XORI instrucion.
19403         (*extzv<mode>): Add logics for EXT instruction.
19404         (*insv<mode>): Add logics for INS instruction.
19405         * config/mips/predicates.md(bit_clear_operand): New predicate for
19406         generating bitwise instructions.
19407         (and_reg_operand): Add logics for generating bitwise instructions.
19409 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19411         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
19412         that uses global pointer register.
19413         (mips16_unextended_reference_p): Same as above.
19414         (mips_pic_base_register): Same as above.
19415         (mips_init_relocs): Same as above.
19416         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
19417         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
19418         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
19419         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
19421 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19423         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
19424         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
19425         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
19426         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
19427         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
19428         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
19430 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
19432         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
19433         for output file.
19434         * config/mips/mips.h(__mips_mips16e2): Defined a new
19435         predefine macro.
19436         (ISA_HAS_MIPS16E2): Defined a new macro.
19437         (ASM_SPEC): Pass mmips16e2 to the assembler.
19438         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
19439         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
19440         * doc/invoke.texi: Add -m(no-)mips16e2 option..
19442 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
19444         PR tree-optimization/110508
19445         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
19446         REALPART_EXPR opf nlhs if re2 is non-NULL.
19448 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
19450         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
19451         Simplify.
19452         * config/xtensa/xtensa.md (*xtensa_clamps):
19453         Add TARGET_MINMAX to the condition.
19455 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
19457         * config/xtensa/xtensa.md (*eqne_INT_MIN):
19458         Add missing ":SI" to the match_operator.
19460 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
19462         PR target/108743
19463         * config/darwin.opt: Add fconstant-cfstrings alias to
19464         mconstant-cfstrings.
19465         * doc/invoke.texi: Amend invocation descriptions to reflect
19466         that the fconstant-cfstrings is a target-option alias and to
19467         add the missing mconstant-cfstrings option description to the
19468         Darwin section.
19470 2023-07-01  Jan Hubicka  <jh@suse.cz>
19472         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
19473         parmaeter; update profile.
19474         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
19475         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
19476         (static_loop_exit): ... this; return the edge to be elliminated.
19477         (ch_base::copy_headers): Handle profile updating for eliminated exits.
19479 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
19481         * config/i386/i386-features.cc (compute_convert_gain): Provide
19482         gains/costs for ROTATE and ROTATERT (by an integer constant).
19483         (general_scalar_chain::convert_rotate): New helper function to
19484         convert a DImode or SImode rotation by an integer constant into
19485         SSE vector form.
19486         (general_scalar_chain::convert_insn): Call the new convert_rotate
19487         for ROTATE and ROTATERT.
19488         (general_scalar_to_vector_candidate_p): Consider ROTATE and
19489         ROTATERT to be candidates if the second operand is an integer
19490         constant, valid for a rotation (or shift) in the given mode.
19491         * config/i386/i386-features.h (general_scalar_chain): Add new
19492         helper method convert_rotate.
19494 2023-07-01  Jan Hubicka  <jh@suse.cz>
19496         PR tree-optimization/103680
19497         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
19498         make message clearer.
19500 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
19502         PR tree-optimization/101832
19503         * tree-object-size.cc (addr_object_size): Handle structure/union type
19504         when it has flexible size.
19506 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
19508         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
19509         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
19510         with integral bit-fields.
19511         (fold_ctor_reference): Make sure that the constructor uses the
19512         native storage order.
19514 2023-06-30  Jan Hubicka  <jh@suse.cz>
19516         PR middle-end/109849
19517         * predict.cc (estimate_bb_frequencies): Turn to static function.
19518         (expr_expected_value_1): Fix handling of binary expressions with
19519         predicted values.
19520         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
19521         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
19522         queue.
19523         * predict.h (estimate_bb_frequencies): No longer declare it.
19525 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
19527         * fold-const.h (multiple_of_p): Change return type from int to bool.
19528         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
19529         neg_conp_p and neg_var_p variables to bool.
19530         (const_binop): Change sat_p variable to bool.
19531         (merge_ranges): Change no_overlap variable to bool.
19532         (extract_muldiv_1): Change same_p variable to bool.
19533         (tree_swap_operands_p): Update function body for bool return type.
19534         (fold_truth_andor): Change commutative variable to bool.
19535         (multiple_of_p): Change return type
19536         from int to void and adjust function body accordingly.
19537         * optabs.h (expand_twoval_unop): Change return type from int to bool.
19538         (expand_twoval_binop): Ditto.
19539         (can_compare_p): Ditto.
19540         (have_add2_insn): Ditto.
19541         (have_addptr3_insn): Ditto.
19542         (have_sub2_insn): Ditto.
19543         (have_insn_for): Ditto.
19544         * optabs.cc (add_equal_note): Ditto.
19545         (widen_operand): Change no_extend argument from int to bool.
19546         (expand_binop): Ditto.
19547         (expand_twoval_unop): Change return type
19548         from int to void and adjust function body accordingly.
19549         (expand_twoval_binop): Ditto.
19550         (can_compare_p): Ditto.
19551         (have_add2_insn): Ditto.
19552         (have_addptr3_insn): Ditto.
19553         (have_sub2_insn): Ditto.
19554         (have_insn_for): Ditto.
19556 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
19558         * config/aarch64/aarch64-simd.md
19559         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
19560         Expansions for abd vec widen optabs.
19561         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
19562         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
19563         that give the appropriate extend RTL for the max RTL.
19565 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
19567         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
19568         * optabs.def (vec_widen_sabd_optab,
19569         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
19570         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
19571         vec_widen_uabd_optab,
19572         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
19573         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
19574         New optabs.
19575         * doc/md.texi: Document them.
19576         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
19577         to build a VEC_WIDEN_ABD call if the input precision is smaller
19578         than the precision of the output.
19579         (vect_recog_widen_abd_pattern): Should an ABD expression be
19580         found preceeding an extension, replace the two with a
19581         VEC_WIDEN_ABD.
19583 2023-06-30  Pan Li  <pan2.li@intel.com>
19585         * config/riscv/vector.md: Refactor the common condition.
19587 2023-06-30  Richard Biener  <rguenther@suse.de>
19589         PR tree-optimization/110496
19590         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
19591         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
19593 2023-06-30  Richard Biener  <rguenther@suse.de>
19595         PR middle-end/110489
19596         * statistics.cc (curr_statistics_hash): Add argument
19597         indicating whether we should allocate the hash.
19598         (statistics_fini_pass): If the hash isn't allocated
19599         only print the summary header.
19601 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
19602             Thomas Schwinge  <thomas@codesourcery.com>
19604         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
19606 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
19608         PR target/109435
19609         * config/mips/mips.cc (mips_function_arg_alignment): Returns
19610         the alignment of function argument. In case of typedef type,
19611         it returns the aligment of the aliased type.
19612         (mips_function_arg_boundary): Relocated calculation of the
19613         aligment of function arguments.
19615 2023-06-29  Jan Hubicka  <jh@suse.cz>
19617         PR tree-optimization/109849
19618         * ipa-fnsummary.cc (decompose_param_expr): Skip
19619         functions returning its parameter.
19620         (set_cond_stmt_execution_predicate): Return early
19621         if predicate was constructed.
19623 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
19625         PR c/77650
19626         * doc/extend.texi: Document GCC extension on a structure containing
19627         a flexible array member to be a member of another structure.
19629 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
19631         * print-tree.cc (print_node): Print new bit type_include_flexarray.
19632         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
19633         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
19634         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
19635         in bit no_named_args_stdarg_p properly for its corresponding type.
19636         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
19637         out bit no_named_args_stdarg_p properly for its corresponding type.
19638         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
19640 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
19642         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
19643         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
19644         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
19646 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
19648         * value-range.cc (frange::set): Do not call verify_range.
19649         (frange::normalize_kind): Verify range.
19650         (frange::union_nans): Do not call verify_range.
19651         (frange::union_): Same.
19652         (frange::intersect): Same.
19653         (irange::irange_single_pair_union): Call normalize_kind if
19654         necessary.
19655         (irange::union_): Same.
19656         (irange::intersect): Same.
19657         (irange::set_range_from_nonzero_bits): Verify range.
19658         (irange::set_nonzero_bits): Call normalize_kind if necessary.
19659         (irange::get_nonzero_bits): Tweak comment.
19660         (irange::intersect_nonzero_bits): Call normalize_kind if
19661         necessary.
19662         (irange::union_nonzero_bits): Same.
19663         * value-range.h (irange::normalize_kind): Verify range.
19665 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
19667         * cselib.h (rtx_equal_for_cselib_1):
19668         Change return type from int to bool.
19669         (references_value_p): Ditto.
19670         (rtx_equal_for_cselib_p): Ditto.
19671         * expr.h (can_store_by_pieces): Ditto.
19672         (try_casesi): Ditto.
19673         (try_tablejump): Ditto.
19674         (safe_from_p): Ditto.
19675         * sbitmap.h (bitmap_equal_p): Ditto.
19676         * cselib.cc (references_value_p): Change return type
19677         from int to void and adjust function body accordingly.
19678         (rtx_equal_for_cselib_1): Ditto.
19679         * expr.cc (is_aligning_offset): Ditto.
19680         (can_store_by_pieces): Ditto.
19681         (mostly_zeros_p): Ditto.
19682         (all_zeros_p): Ditto.
19683         (safe_from_p): Ditto.
19684         (is_aligning_offset): Ditto.
19685         (try_casesi): Ditto.
19686         (try_tablejump): Ditto.
19687         (store_constructor): Change "need_to_clear" and
19688         "const_bounds_p" variables to bool.
19689         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
19691 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
19693         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
19694         element_precision.
19696 2023-06-29  Richard Biener  <rguenther@suse.de>
19698         PR tree-optimization/110460
19699         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
19700         Only allow integral, pointer and scalar float type scalar_type.
19702 2023-06-29  Lili Cui  <lili.cui@intel.com>
19704         PR tree-optimization/110148
19705         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
19706         ops in this function.
19708 2023-06-29  Richard Biener  <rguenther@suse.de>
19710         PR middle-end/110452
19711         * expr.cc (store_constructor): Handle uniform boolean
19712         vectors with integer mode specially.
19714 2023-06-29  Richard Biener  <rguenther@suse.de>
19716         PR middle-end/110461
19717         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
19718         for VECTOR_TYPE_P.
19720 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
19722         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
19723         (array_slice): Relax va_gc constructor to handle all vectors
19724         with a vl_embed layout.
19726 2023-06-29  Pan Li  <pan2.li@intel.com>
19728         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
19729         (riscv_mode_needed): Likewise.
19730         (riscv_entity_mode_after): Likewise.
19731         (riscv_mode_after): Likewise.
19732         (riscv_mode_entry): Likewise.
19733         (riscv_mode_exit): Likewise.
19734         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
19735         for FRM.
19736         * config/riscv/riscv.md: Add FRM register.
19737         * config/riscv/vector-iterators.md: Add FRM type.
19738         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
19739         (fsrm): Define new insn for fsrm instruction.
19741 2023-06-29  Pan Li  <pan2.li@intel.com>
19743         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
19744         Add macro for static frm min and max.
19745         * config/riscv/riscv-vector-builtins-bases.cc
19746         (class binop_frm): New class for floating-point with frm.
19747         (BASE): Add vfadd for frm.
19748         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
19749         * config/riscv/riscv-vector-builtins-functions.def
19750         (vfadd_frm): Likewise.
19751         * config/riscv/riscv-vector-builtins-shapes.cc
19752         (struct alu_frm_def): New struct for alu with frm.
19753         (SHAPE): Add alu with frm.
19754         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
19755         * config/riscv/riscv-vector-builtins.cc
19756         (function_checker::report_out_of_range_and_not): New function
19757         for report out of range and not val.
19758         (function_checker::require_immediate_range_or): New function
19759         for checking in range or one val.
19760         * config/riscv/riscv-vector-builtins.h: Add function decl.
19762 2023-06-29  Cui, Lili  <lili.cui@intel.com>
19764         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
19765         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
19767 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
19769         PR target/110144
19770         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
19771         to insn before validating it.
19773 2023-06-28  Jan Hubicka  <jh@suse.cz>
19775         PR middle-end/110334
19776         * ipa-fnsummary.h (ipa_fn_summary): Add
19777         safe_to_inline_to_always_inline.
19778         * ipa-inline.cc (can_early_inline_edge_p): ICE
19779         if SSA is not built; do cycle checking for
19780         always_inline functions.
19781         (inline_always_inline_functions): Be recrusive;
19782         watch for cycles; do not updat overall summary.
19783         (early_inliner): Do not give up on always_inlines.
19784         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
19785         always inlines.
19787 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
19789         * output.h (leaf_function_p): Change return type from int to bool.
19790         (final_forward_branch_p): Ditto.
19791         (only_leaf_regs_used): Ditto.
19792         (maybe_assemble_visibility): Ditto.
19793         * varasm.h (supports_one_only): Ditto.
19794         * rtl.h (compute_alignments): Change return type from int to void.
19795         * final.cc (app_on): Change return type from int to bool.
19796         (compute_alignments): Change return type from int to void
19797         and adjust function body accordingly.
19798         (shorten_branches):  Change "something_changed" variable
19799         type from int to bool.
19800         (leaf_function_p):  Change return type from int to bool
19801         and adjust function body accordingly.
19802         (final_forward_branch_p): Ditto.
19803         (only_leaf_regs_used): Ditto.
19804         * varasm.cc (contains_pointers_p): Change return type from
19805         int to bool and adjust function body accordingly.
19806         (compare_constant): Ditto.
19807         (maybe_assemble_visibility): Ditto.
19808         (supports_one_only): Ditto.
19810 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
19812         PR debug/110308
19813         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
19814         (maybe_copy_reg_attrs): New function.
19815         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
19816         (copyprop_hardreg_forward_1): Ditto.
19818 2023-06-28  Richard Biener  <rguenther@suse.de>
19820         PR tree-optimization/110434
19821         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
19822         VAR we replace with <retval>.
19824 2023-06-28  Richard Biener  <rguenther@suse.de>
19826         PR tree-optimization/110451
19827         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
19828         tcc_comparison are expensive.
19830 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
19832         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
19833         for TImode comparisons on 32-bit architectures.
19834         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
19835         SWIM1248x to exclude/avoid TImode being conditional on -m64.
19836         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
19837         and/or with TARGET_SSE4_1.
19838         * config/i386/predicates.md (ix86_timode_comparison_operator):
19839         New predicate that depends upon TARGET_64BIT.
19840         (ix86_timode_comparison_operand): Likewise.
19842 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
19844         PR target/78794
19845         * config/i386/i386-features.cc (compute_convert_gain): Provide
19846         more accurate gains for conversion of scalar comparisons to
19847         PTEST.
19849 2023-06-28  Richard Biener  <rguenther@suse.de>
19851         PR tree-optimization/110443
19852         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
19853         gather loads.
19855 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
19857         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
19858         (peephole2 for move_and_compare): New.
19859         (mode_iterator WORD): New.  Set the mode to SI/DImode by
19860         TARGET_POWERPC64.
19861         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
19862         (split pattern for compare_and_move): Likewise.
19864 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19866         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
19867         (*single_widen_fma<mode>): Ditto.
19869 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
19871         PR target/104124
19872         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
19873         to...
19874         (altivec_vupkhs<VU_char>_direct): ...this.
19875         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
19876         predicate to test if a constant can be loaded with vspltisw and
19877         vupkhsw.
19878         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
19879         a vector constant can be synthesized with a vspltisw and a vupkhsw.
19880         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
19881         Declare.
19882         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
19883         function to return true if OP mode is V2DI and can be synthesized
19884         with vupkhsw and vspltisw.
19885         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
19886         constants with vspltisw and vupkhsw.
19888 2023-06-28  Jan Hubicka  <jh@suse.cz>
19890         PR tree-optimization/110377
19891         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
19892         the ranger query.
19893         (ipa_analyze_node): Enable ranger.
19895 2023-06-28  Richard Biener  <rguenther@suse.de>
19897         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
19898         (TYPE_PRECISION_RAW): Provide raw access to the precision
19899         field.
19900         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
19901         (gimple_canonical_types_compatible_p): Likewise.
19902         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
19903         Stream TYPE_PRECISION_RAW.
19904         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
19905         Likewise.
19906         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
19908 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
19910         * doc/extend.texi (zero-call-used-regs): Document leafy and
19911         variants thereof.
19912         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
19913         LEAFY and variants.
19914         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
19915         functions in leafy mode.
19916         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
19918 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19920         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
19921         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
19922         Remove.
19923         (@pred_single_widen_add<mode>): New pattern.
19924         (@pred_single_widen_sub<mode>): New pattern.
19926 2023-06-28  liuhongt  <hongtao.liu@intel.com>
19928         * config/i386/i386.cc (ix86_invalid_conversion): New function.
19929         (TARGET_INVALID_CONVERSION): Define as
19930         ix86_invalid_conversion.
19932 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19934         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
19935         expander.
19936         (<float_cvt><vnconvert><mode>2): Ditto.
19937         (<optab><mode><vnconvert>2): Ditto.
19938         (<float_cvt><mode><vnconvert>2): Ditto.
19939         * config/riscv/vector-iterators.md: Add vnconvert.
19941 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19943         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
19944         expander.
19945         (extend<v_quad_trunc><mode>2): Ditto.
19946         (trunc<mode><v_double_trunc>2): Ditto.
19947         (trunc<mode><v_quad_trunc>2): Ditto.
19948         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
19949         V_QUAD_TRUNC and v_quad_trunc.
19951 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19953         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
19954         expander.
19956 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19958         * config/riscv/autovec.md (copysign<mode>3): Add expander.
19959         (xorsign<mode>3): Ditto.
19960         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
19961         New class.
19962         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
19963         (xorsign): Ditto.
19964         (n): Ditto.
19965         (x): Ditto.
19966         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
19967         (@pred_ncopysign<mode>_scalar): Ditto.
19969 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19971         * config/riscv/autovec.md: VF_AUTO -> VF.
19972         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
19973         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
19974         VHF_LMUL1.
19975         * config/riscv/vector.md: Use new iterators.
19977 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
19979         * match.pd: Use element_mode and check if target supports
19980         operation with new type.
19982 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19984         * config/aarch64/aarch64-sve-builtins-base.cc
19985         (svdupq_impl::fold_nonconst_dupq): New method.
19986         (svdupq_impl::fold): Call fold_nonconst_dupq.
19988 2023-06-27  Andrew Pinski  <apinski@marvell.com>
19990         PR middle-end/110420
19991         PR middle-end/103979
19992         PR middle-end/98619
19993         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
19995 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
19997         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
19998         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
19999         for Value_Range.
20000         (set_switch_stmt_execution_predicate): Same.
20001         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
20003 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
20005         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
20006         ipa_vr instead of value_range.
20007         (gt_pch_nx): Same.
20008         (gt_ggc_mx): Same.
20009         (ipa_get_value_range): Same.
20010         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
20011         ipa_vr.
20012         (gt_ggc_mx): Same.
20014 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
20016         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
20017         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
20018         (ipa_set_jfunc_vr): Take a range.
20019         (ipa_compute_jump_functions_for_edge): Pass range to
20020         ipa_set_jfunc_vr.
20021         (ipa_write_jump_function): Call streamer write helper.
20022         (ipa_read_jump_function): Call streamer read helper.
20023         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
20025 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
20027         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
20028         as a probable initializer rather than a probable complete statement.
20030 2023-06-27  Richard Biener  <rguenther@suse.de>
20032         PR tree-optimization/96208
20033         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
20034         a non-grouped load if it is the same for all lanes.
20035         (vect_build_slp_tree_2): Handle not grouped loads.
20036         (vect_optimize_slp_pass::remove_redundant_permutations):
20037         Likewise.
20038         (vect_transform_slp_perm_load_1): Likewise.
20039         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
20040         (get_group_load_store_type): Likewise.  Handle
20041         invariant accesses.
20042         (vectorizable_load): Likewise.
20044 2023-06-27  liuhongt  <hongtao.liu@intel.com>
20046         PR rtl-optimization/110237
20047         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
20048         UNSPEC_MASKMOV.
20049         (maskstore<mode><avx512fmaskmodelower): Ditto.
20050         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
20051         from original <avx512>_store<mode>_mask.
20053 2023-06-27  liuhongt  <hongtao.liu@intel.com>
20055         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
20056         Move flag_expensive_optimizations && !optimize_size to ..
20057         * config/i386/i386-options.cc (ix86_option_override_internal):
20058         .. this, it makes -mvzeroupper independent of optimization
20059         level, but still keeps the behavior of architecture
20060         tuning(emit_vzeroupper) unchanged.
20062 2023-06-27  liuhongt  <hongtao.liu@intel.com>
20064         PR target/82735
20065         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
20066         vzeroupper for vzeroupper call_insn.
20068 2023-06-27  Andrew Pinski  <apinski@marvell.com>
20070         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
20071         defbuiltin usage.
20073 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20075         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
20076         with base != 0.
20078 2023-06-26  Andrew Pinski  <apinski@marvell.com>
20080         * doc/extend.texi (access attribute): Add
20081         cindex for it.
20082         (interrupt/interrupt_handler attribute):
20083         Likewise.
20085 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20087         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
20088         Use <DWI> instead of <V2XWIDE>.
20089         (aarch64_sqrshrun_n<mode>): Likewise.
20091 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20093         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
20094         Rename to...
20095         (aarch64_rnd_imm_p): ... This.
20096         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
20097         Rename to...
20098         (aarch64_int_rnd_operand): ... This.
20099         (aarch64_simd_rshrn_imm_vec): Delete.
20100         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
20101         Adjust for the above.
20102         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
20103         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
20104         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
20105         (aarch64_sqrshrun_n<mode>_insn): Likewise.
20106         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
20107         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
20108         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
20109         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
20110         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
20111         Rename to...
20112         (aarch64_rnd_imm_p): ... This.
20114 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
20116         * config/s390/s390.cc (s390_encode_section_info): Set
20117         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
20118         misaligned.
20120 2023-06-26  Jan Hubicka  <jh@suse.cz>
20122         PR tree-optimization/109849
20123         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
20124         count of newly constructed forwarder block.
20126 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
20128         * doc/optinfo.texi: Fix "steam" -> "stream".
20130 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20132         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
20133         fix LEN_STORE.
20134         (dse_optimize_stmt): Add LEN_MASK_STORE.
20136 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20138         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
20139         fold of LOAD/STORE with length.
20141 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
20143         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
20144         Check for interdependence between operands 1 and 2.
20146 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
20148         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
20149         into account when costing non-widening/truncating conversions.
20151 2023-06-26  Richard Biener  <rguenther@suse.de>
20153         PR tree-optimization/110381
20154         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
20155         Materialize permutes before fold-left reductions.
20157 2023-06-26  Pan Li  <pan2.li@intel.com>
20159         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
20161 2023-06-26  Richard Biener  <rguenther@suse.de>
20163         * varasm.cc (initializer_constant_valid_p_1): Also
20164         constrain the type of value to be scalar integral
20165         before dispatching to narrowing_initializer_constant_valid_p.
20167 2023-06-26  Richard Biener  <rguenther@suse.de>
20169         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
20170         Use element_precision.
20172 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20174         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
20175         vcond patterns.
20176         (vcondu<V:mode><VI:mode>): Ditto.
20177         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
20178         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
20180 2023-06-26  Richard Biener  <rguenther@suse.de>
20182         PR tree-optimization/110392
20183         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
20184         Do early exits on true/false predicate only after normalization.
20186 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20188         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
20189         "length".
20191 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
20193         * config/i386/i386.md (peephole2): Simplify zeroing a register
20194         followed by an IOR, XOR or PLUS operation on it, into a move.
20195         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
20196         eliminate (and hide from reload) unnecessary word to doubleword
20197         extensions that are followed by left shifts by sufficiently large,
20198         but valid, bit counts.
20200 2023-06-26  liuhongt  <hongtao.liu@intel.com>
20202         PR tree-optimization/110371
20203         PR tree-optimization/110018
20204         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
20205         save intermediate type operand instead of "subtle" vec_dest
20206         for case NONE.
20208 2023-06-26  liuhongt  <hongtao.liu@intel.com>
20210         PR tree-optimization/110371
20211         PR tree-optimization/110018
20212         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
20213         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
20215 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
20217         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
20218         Override tune_string with arch_string if tune_string is not
20219         explicitly specified.
20221 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20223         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
20224         AVL propagation.
20225         * config/riscv/riscv-vsetvl.h: New function.
20227 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
20229         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
20230         emit_move_insn
20232 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20234         * config/riscv/autovec.md (len_load_<mode>): Remove.
20235         (len_maskload<mode><vm>): Remove.
20236         (len_store_<mode>): New pattern.
20237         (len_maskstore<mode><vm>): New pattern.
20238         * config/riscv/predicates.md (autovec_length_operand): New predicate.
20239         * config/riscv/riscv-protos.h (enum insn_type): New enum.
20240         (expand_load_store): New function.
20241         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
20242         (emit_nonvlmax_masked_insn): Ditto.
20243         (expand_load_store): Ditto.
20244         * config/riscv/riscv-vector-builtins.cc
20245         (function_expander::use_contiguous_store_insn): Add avl_type operand
20246         into pred_store.
20247         * config/riscv/vector.md: Ditto.
20249 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20251         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
20252         argument index.
20254 2023-06-25  Pan Li  <pan2.li@intel.com>
20256         * config/riscv/vector.md: Revert.
20258 2023-06-25  Pan Li  <pan2.li@intel.com>
20260         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
20261         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
20262         (ADJUST_ALIGNMENT): Ditto.
20263         (RVV_TUPLE_PARTIAL_MODES): Ditto.
20264         (ADJUST_NUNITS): Ditto.
20265         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
20266         (vfloat16mf4x3_t): Ditto.
20267         (vfloat16mf4x4_t): Ditto.
20268         (vfloat16mf4x5_t): Ditto.
20269         (vfloat16mf4x6_t): Ditto.
20270         (vfloat16mf4x7_t): Ditto.
20271         (vfloat16mf4x8_t): Ditto.
20272         (vfloat16mf2x2_t): Ditto.
20273         (vfloat16mf2x3_t): Ditto.
20274         (vfloat16mf2x4_t): Ditto.
20275         (vfloat16mf2x5_t): Ditto.
20276         (vfloat16mf2x6_t): Ditto.
20277         (vfloat16mf2x7_t): Ditto.
20278         (vfloat16mf2x8_t): Ditto.
20279         (vfloat16m1x2_t): Ditto.
20280         (vfloat16m1x3_t): Ditto.
20281         (vfloat16m1x4_t): Ditto.
20282         (vfloat16m1x5_t): Ditto.
20283         (vfloat16m1x6_t): Ditto.
20284         (vfloat16m1x7_t): Ditto.
20285         (vfloat16m1x8_t): Ditto.
20286         (vfloat16m2x2_t): Ditto.
20287         (vfloat16m2x3_t): Diito.
20288         (vfloat16m2x4_t): Diito.
20289         (vfloat16m4x2_t): Diito.
20290         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
20291         (vfloat16mf4x3_t): Ditto.
20292         (vfloat16mf4x4_t): Ditto.
20293         (vfloat16mf4x5_t): Ditto.
20294         (vfloat16mf4x6_t): Ditto.
20295         (vfloat16mf4x7_t): Ditto.
20296         (vfloat16mf4x8_t): Ditto.
20297         (vfloat16mf2x2_t): Ditto.
20298         (vfloat16mf2x3_t): Ditto.
20299         (vfloat16mf2x4_t): Ditto.
20300         (vfloat16mf2x5_t): Ditto.
20301         (vfloat16mf2x6_t): Ditto.
20302         (vfloat16mf2x7_t): Ditto.
20303         (vfloat16mf2x8_t): Ditto.
20304         (vfloat16m1x2_t): Ditto.
20305         (vfloat16m1x3_t): Ditto.
20306         (vfloat16m1x4_t): Ditto.
20307         (vfloat16m1x5_t): Ditto.
20308         (vfloat16m1x6_t): Ditto.
20309         (vfloat16m1x7_t): Ditto.
20310         (vfloat16m1x8_t): Ditto.
20311         (vfloat16m2x2_t): Ditto.
20312         (vfloat16m2x3_t): Ditto.
20313         (vfloat16m2x4_t): Ditto.
20314         (vfloat16m4x2_t): Ditto.
20315         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
20316         * config/riscv/riscv.md: Ditto.
20317         * config/riscv/vector-iterators.md: Ditto.
20319 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20321         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
20322         (gimple_fold_partial_load_store_mem_ref): Ditto.
20323         (gimple_fold_partial_store): Ditto.
20324         (gimple_fold_call): Ditto.
20326 2023-06-25  liuhongt  <hongtao.liu@intel.com>
20328         PR target/110309
20329         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
20330         Refine pattern with UNSPEC_MASKLOAD.
20331         (maskload<mode><avx512fmaskmodelower>): Ditto.
20332         (*<avx512>_load<mode>_mask): Extend mode iterator to
20333         VI12HFBF_AVX512VL.
20334         (*<avx512>_load<mode>): Ditto.
20336 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20338         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
20340 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20342         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
20343         LEN_MASK_{LOAD,STORE}
20345 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
20347         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
20349 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
20351         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
20353 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20355         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
20356         (*fma<VI:mode><P:mode>): Ditto.
20357         (*fnma<mode>): Ditto.
20358         (*fnma<VI:mode><P:mode>): Ditto.
20360 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20362         * config/riscv/autovec.md (fma<mode>4): New pattern.
20363         (*fma<mode>): Ditto.
20364         (fnma<mode>4): Ditto.
20365         (*fnma<mode>): Ditto.
20366         (fms<mode>4): Ditto.
20367         (*fms<mode>): Ditto.
20368         (fnms<mode>4): Ditto.
20369         (*fnms<mode>): Ditto.
20370         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
20371         New function.
20372         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
20373         * config/riscv/vector.md: Fix attribute bug.
20375 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20377         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
20378         Apply LEN_MASK_{LOAD,STORE}.
20380 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20382         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
20383         Add LEN_MASK_{LOAD,STORE}.
20385 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
20387         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
20388         * diagnostic.cc: Likewise.
20389         * text-art/box-drawing.cc: Likewise.
20390         * text-art/canvas.cc: Likewise.
20391         * text-art/ruler.cc: Likewise.
20392         * text-art/selftests.cc: Likewise.
20393         * text-art/selftests.h (text_art::canvas): New forward decl.
20394         * text-art/style.cc: Add #define INCLUDE_VECTOR.
20395         * text-art/styled-string.cc: Likewise.
20396         * text-art/table.cc: Likewise.
20397         * text-art/table.h: Remove #include <vector>.
20398         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
20399         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
20400         Remove #include of <vector> and <string>.
20401         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
20402         * text-art/widget.h: Remove #include <vector>.
20404 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20406         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
20407         (internal_load_fn_p): Add LEN_MASK_LOAD.
20408         (internal_store_fn_p): Add LEN_MASK_STORE.
20409         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
20410         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
20411         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
20412         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
20413         (get_len_load_store_mode): Ditto.
20414         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
20415         (get_len_load_store_mode): Ditto.
20416         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
20417         (get_all_ones_mask): New function.
20418         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
20419         (vectorizable_load): Ditto.
20421 2023-06-23  Marek Polacek  <polacek@redhat.com>
20423         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
20424         -std=gnu++26.  Document that for C++23, its value is 202302L.
20425         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
20426         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
20427         (gen_compile_unit_die): Likewise.
20429 2023-06-23  Jan Hubicka  <jh@suse.cz>
20431         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
20432         demand.
20433         (pass_phiprop::execute): Do not compute it here; return
20434         update_ssa_only_virtuals if something changed.
20435         (pass_data_phiprop): Remove TODO_update_ssa from todos.
20437 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
20438             Aaron Sawdey   <acsawdey@linux.ibm.com>
20440         PR target/105325
20441         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
20442         allowed prefixed lwa to be generated.
20443         * config/rs6000/fusion.md: Regenerate.
20444         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
20445         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
20446         plus compare immediate fused insns.
20447         (maybe_prefixed): Likewise.
20449 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
20451         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
20452         of ASHIFT to const0_rtx with sufficiently large shift count.
20453         Optimize highpart SUBREGs of ASHIFT as the shift operand when
20454         the shift count is the correct offset.  Optimize SUBREGs of
20455         multi-word logic operations if the SUBREGs of both operands
20456         can be simplified.
20458 2023-06-23  Richard Biener  <rguenther@suse.de>
20460         * varasm.cc (initializer_constant_valid_p_1): Only
20461         allow conversions between scalar floating point types.
20463 2023-06-23  Richard Biener  <rguenther@suse.de>
20465         * tree-vect-stmts.cc (vectorizable_assignment):
20466         Properly handle non-integral operands when analyzing
20467         conversions.
20469 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
20471         PR tree-optimization/110280
20472         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
20473         using build_vector_from_val with the element of input operand, and
20474         mask's type if operand and mask's types don't match.
20476 2023-06-23  Richard Biener  <rguenther@suse.de>
20478         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
20479         the truth_value_p case with !VECTOR_TYPE_P.
20481 2023-06-23  Richard Biener  <rguenther@suse.de>
20483         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
20484         Exit early when the type isn't scalar integral.
20486 2023-06-23  Richard Biener  <rguenther@suse.de>
20488         * match.pd ((outertype)((innertype0)a+(innertype1)b)
20489         -> ((newtype)a+(newtype)b)): Use element_precision
20490         where appropriate.
20492 2023-06-23  Richard Biener  <rguenther@suse.de>
20494         * fold-const.cc (fold_binary_loc): Use element_precision
20495         when trying (double)float1 CMP (double)float2 to
20496         float1 CMP float2 simplification.
20497         * match.pd: Likewise.
20499 2023-06-23  Richard Biener  <rguenther@suse.de>
20501         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
20502         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
20504 2023-06-23  Richard Biener  <rguenther@suse.de>
20506         * tree-vect-stmts.cc (vector_vector_composition_type):
20507         Handle composition of a vector from a number of elements that
20508         happens to match its number of lanes.
20510 2023-06-22  Marek Polacek  <polacek@redhat.com>
20512         * configure.ac (--enable-host-bind-now): New check.  Add
20513         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
20514         * configure: Regenerate.
20515         * doc/install.texi: Document --enable-host-bind-now.
20517 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
20519         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
20521 2023-06-22  Richard Biener  <rguenther@suse.de>
20523         PR tree-optimization/110332
20524         * tree-ssa-phiprop.cc (propagate_with_phi): Always
20525         check aliasing with edge inserted loads.
20527 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
20528             Uros Bizjak  <ubizjak@gmail.com>
20530         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
20531         expansion of ptestc with equal operands as producing const1_rtx.
20532         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
20533         estimates of UNSPEC_PTEST, where the ptest performs the PAND
20534         or PAND of its operands.
20535         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
20536         of reg_equal_p operands into an x86_stc instruction.
20537         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
20538         (define_split): Similar to above for strict_low_part destinations.
20539         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
20541 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
20543         PR analyzer/106626
20544         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
20545         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
20546         text art.
20547         (fanalyzer-debug-text-art): New.
20549 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
20551         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
20552         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
20553         text-art/style.o, text-art/styled-string.o, text-art/table.o,
20554         text-art/theme.o, and text-art/widget.o.
20555         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
20556         (COLOR_FG_BRIGHT_RED): New.
20557         (COLOR_FG_BRIGHT_GREEN): New.
20558         (COLOR_FG_BRIGHT_YELLOW): New.
20559         (COLOR_FG_BRIGHT_BLUE): New.
20560         (COLOR_FG_BRIGHT_MAGENTA): New.
20561         (COLOR_FG_BRIGHT_CYAN): New.
20562         (COLOR_FG_BRIGHT_WHITE): New.
20563         (COLOR_BG_BRIGHT_BLACK): New.
20564         (COLOR_BG_BRIGHT_RED): New.
20565         (COLOR_BG_BRIGHT_GREEN): New.
20566         (COLOR_BG_BRIGHT_YELLOW): New.
20567         (COLOR_BG_BRIGHT_BLUE): New.
20568         (COLOR_BG_BRIGHT_MAGENTA): New.
20569         (COLOR_BG_BRIGHT_CYAN): New.
20570         (COLOR_BG_BRIGHT_WHITE): New.
20571         * common.opt (fdiagnostics-text-art-charset=): New option.
20572         (diagnostic-text-art.h): New SourceInclude.
20573         (diagnostic_text_art_charset) New Enum and EnumValues.
20574         * configure: Regenerate.
20575         * configure.ac (gccdepdir): Add text-art to loop.
20576         * diagnostic-diagram.h: New file.
20577         * diagnostic-format-json.cc (json_emit_diagram): New.
20578         (diagnostic_output_format_init_json): Wire it up to
20579         context->m_diagrams.m_emission_cb.
20580         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
20581         "text-art/canvas.h".
20582         (sarif_result::on_nested_diagnostic): Move code to...
20583         (sarif_result::add_related_location): ...this new function.
20584         (sarif_result::on_diagram): New.
20585         (sarif_builder::emit_diagram): New.
20586         (sarif_builder::make_message_object_for_diagram): New.
20587         (sarif_emit_diagram): New.
20588         (diagnostic_output_format_init_sarif): Set
20589         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
20590         * diagnostic-text-art.h: New file.
20591         * diagnostic.cc: Include "diagnostic-text-art.h",
20592         "diagnostic-diagram.h", and "text-art/theme.h".
20593         (diagnostic_initialize): Initialize context->m_diagrams and
20594         call diagnostics_text_art_charset_init.
20595         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
20596         (diagnostic_emit_diagram): New.
20597         (diagnostics_text_art_charset_init): New.
20598         * diagnostic.h (text_art::theme): New forward decl.
20599         (class diagnostic_diagram): Likewise.
20600         (diagnostic_context::m_diagrams): New field.
20601         (diagnostic_emit_diagram): New decl.
20602         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
20603         -fdiagnostics-text-art-charset=.
20604         (-fdiagnostics-plain-output): Add
20605         -fdiagnostics-text-art-charset=none.
20606         * gcc.cc: Include "diagnostic-text-art.h".
20607         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
20608         * opts-common.cc (decode_cmdline_options_to_array): Add
20609         "-fdiagnostics-text-art-charset=none" to expanded_args for
20610         -fdiagnostics-plain-output.
20611         * opts.cc: Include "diagnostic-text-art.h".
20612         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
20613         * pretty-print.cc (pp_unicode_character): New.
20614         * pretty-print.h (pp_unicode_character): New decl.
20615         * selftest-run-tests.cc: Include "text-art/selftests.h".
20616         (selftest::run_tests): Call text_art_tests.
20617         * text-art/box-drawing-chars.inc: New file, generated by
20618         contrib/unicode/gen-box-drawing-chars.py.
20619         * text-art/box-drawing.cc: New file.
20620         * text-art/box-drawing.h: New file.
20621         * text-art/canvas.cc: New file.
20622         * text-art/canvas.h: New file.
20623         * text-art/ruler.cc: New file.
20624         * text-art/ruler.h: New file.
20625         * text-art/selftests.cc: New file.
20626         * text-art/selftests.h: New file.
20627         * text-art/style.cc: New file.
20628         * text-art/styled-string.cc: New file.
20629         * text-art/table.cc: New file.
20630         * text-art/table.h: New file.
20631         * text-art/theme.cc: New file.
20632         * text-art/theme.h: New file.
20633         * text-art/types.h: New file.
20634         * text-art/widget.cc: New file.
20635         * text-art/widget.h: New file.
20637 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
20639         * function.h (emit_initial_value_sets):
20640         Change return type from int to void.
20641         (aggregate_value_p): Change return type from int to bool.
20642         (prologue_contains): Ditto.
20643         (epilogue_contains): Ditto.
20644         (prologue_epilogue_contains): Ditto.
20645         * function.cc (temp_slot): Make "in_use" variable bool.
20646         (make_slot_available): Update for changed "in_use" variable.
20647         (assign_stack_temp_for_type): Ditto.
20648         (emit_initial_value_sets): Change return type from int to void
20649         and update function body accordingly.
20650         (instantiate_virtual_regs): Ditto.
20651         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
20652         (safe_insn_predicate): Change return type from int to bool.
20653         (aggregate_value_p): Change return type from int to bool
20654         and update function body accordingly.
20655         (prologue_contains): Change return type from int to bool.
20656         (prologue_epilogue_contains): Ditto.
20658 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
20660         * common.opt (fp_contract_mode) [on]: Remove fallback.
20661         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
20662         * doc/invoke.texi (-ffp-contract): Update.
20663         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
20665 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20667         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
20668         Add alternatives to prefer to avoid same input and output Z register.
20669         (mask_gather_load<mode><v_int_container>): Likewise.
20670         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
20671         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
20672         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
20673         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
20674         Likewise.
20675         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
20676         Likewise.
20677         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20678         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
20679         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20680         <SVE_2BHSI:mode>_sxtw): Likewise.
20681         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20682         <SVE_2BHSI:mode>_uxtw): Likewise.
20683         (@aarch64_ldff1_gather<mode>): Likewise.
20684         (@aarch64_ldff1_gather<mode>): Likewise.
20685         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
20686         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
20687         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
20688         <VNx4_NARROW:mode>): Likewise.
20689         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20690         <VNx2_NARROW:mode>): Likewise.
20691         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20692         <VNx2_NARROW:mode>_sxtw): Likewise.
20693         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20694         <VNx2_NARROW:mode>_uxtw): Likewise.
20695         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
20696         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
20697         <SVE_PARTIAL_I:mode>): Likewise.
20699 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20701         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
20702         Convert to compact alternatives syntax.
20703         (mask_gather_load<mode><v_int_container>): Likewise.
20704         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
20705         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
20706         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
20707         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
20708         Likewise.
20709         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
20710         Likewise.
20711         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20712         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
20713         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20714         <SVE_2BHSI:mode>_sxtw): Likewise.
20715         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20716         <SVE_2BHSI:mode>_uxtw): Likewise.
20717         (@aarch64_ldff1_gather<mode>): Likewise.
20718         (@aarch64_ldff1_gather<mode>): Likewise.
20719         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
20720         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
20721         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
20722         <VNx4_NARROW:mode>): Likewise.
20723         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20724         <VNx2_NARROW:mode>): Likewise.
20725         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20726         <VNx2_NARROW:mode>_sxtw): Likewise.
20727         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20728         <VNx2_NARROW:mode>_uxtw): Likewise.
20729         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
20730         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
20731         <SVE_PARTIAL_I:mode>): Likewise.
20733 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20735         Revert:
20736         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20738         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
20739         Convert to compact alternatives syntax.
20740         (mask_gather_load<mode><v_int_container>): Likewise.
20741         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
20742         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
20743         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
20744         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
20745         Likewise.
20746         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
20747         Likewise.
20748         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20749         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
20750         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20751         <SVE_2BHSI:mode>_sxtw): Likewise.
20752         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20753         <SVE_2BHSI:mode>_uxtw): Likewise.
20754         (@aarch64_ldff1_gather<mode>): Likewise.
20755         (@aarch64_ldff1_gather<mode>): Likewise.
20756         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
20757         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
20758         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
20759         <VNx4_NARROW:mode>): Likewise.
20760         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20761         <VNx2_NARROW:mode>): Likewise.
20762         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20763         <VNx2_NARROW:mode>_sxtw): Likewise.
20764         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20765         <VNx2_NARROW:mode>_uxtw): Likewise.
20766         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
20767         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
20768         <SVE_PARTIAL_I:mode>): Likewise.
20770 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20772         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
20773         (get_len_load_store_mode): Ditto.
20774         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
20775         (get_len_load_store_mode): Ditto.
20776         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
20777         (get_len_load_store_mode): Ditto.
20778         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
20779         (get_len_load_store_mode): Ditto.
20780         * tree-if-conv.cc: include optabs-tree instead of optabs-query
20782 2023-06-21  Richard Biener  <rguenther@suse.de>
20784         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
20785         split_constant_offset for the POINTER_PLUS_EXPR case.
20787 2023-06-21  Richard Biener  <rguenther@suse.de>
20789         * tree-ssa-loop-ivopts.cc (record_group_use): Use
20790         split_constant_offset.
20792 2023-06-21  Richard Biener  <rguenther@suse.de>
20794         * tree-loop-distribution.cc (classify_builtin_st): Use
20795         split_constant_offset.
20796         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
20797         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
20799 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20801         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
20802         Convert to compact alternatives syntax.
20803         (mask_gather_load<mode><v_int_container>): Likewise.
20804         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
20805         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
20806         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
20807         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
20808         Likewise.
20809         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
20810         Likewise.
20811         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20812         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
20813         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20814         <SVE_2BHSI:mode>_sxtw): Likewise.
20815         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
20816         <SVE_2BHSI:mode>_uxtw): Likewise.
20817         (@aarch64_ldff1_gather<mode>): Likewise.
20818         (@aarch64_ldff1_gather<mode>): Likewise.
20819         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
20820         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
20821         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
20822         <VNx4_NARROW:mode>): Likewise.
20823         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20824         <VNx2_NARROW:mode>): Likewise.
20825         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20826         <VNx2_NARROW:mode>_sxtw): Likewise.
20827         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
20828         <VNx2_NARROW:mode>_uxtw): Likewise.
20829         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
20830         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
20831         <SVE_PARTIAL_I:mode>): Likewise.
20833 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
20835         PR other/110329
20836         * doc/md.texi: Replace backslashchar.
20838 2023-06-21  Richard Biener  <rguenther@suse.de>
20840         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
20841         Overload.  For masked main loops make sure the vectorization
20842         factor isn't more than double the number of iterations.
20844 2023-06-21  Jan Beulich  <jbeulich@suse.com>
20846         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
20847         value duplication by ix86_build_signbit_mask() when AVX512F and
20848         not HFmode.
20849         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
20850         2-alternative form. Adjust "mode" attribute. Add "enabled"
20851         attribute.
20852         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
20853         && !TARGET_PREFER_AVX256.
20854         (*<avx512>_vpternlog<mode>_2): Likewise.
20855         (*<avx512>_vpternlog<mode>_3): Likewise.
20857 2023-06-21  liuhongt  <hongtao.liu@intel.com>
20859         PR target/110018
20860         * tree-vect-stmts.cc (vectorizable_conversion): Use
20861         intermiediate integer type for float_expr/fix_trunc_expr when
20862         direct optab is not existed.
20864 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
20866         PR bootstrap/110324
20867         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
20869 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
20871         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
20872         register operand to the stack pointer.  Require the second register
20873         operand to have the number specified in a separate const_int operand.
20874         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
20875         (aarch64_allocate_and_probe_stack_space): Use it.
20876         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
20877         (aarch64_expand_epilogue): Likewise.
20879 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
20881         PR middle-end/79173
20882         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
20883         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
20884         type.
20886 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
20888         * calls.h (setjmp_call_p): Change return type from int to bool.
20889         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
20890         (store_one_arg): Change return type from int to bool
20891         and adjust function body accordingly.  Change "sibcall_failure"
20892         variable to bool.
20893         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
20894         argument  to bool.  Change "partial_seen" variable to bool.
20895         (load_register_parameters):  Change *sibcall_failure
20896         pointer argument to bool.
20897         (check_sibcall_argument_overlap_1): Change return type from int to bool
20898         and adjust function body accordingly.
20899         (check_sibcall_argument_overlap):  Ditto.  Change
20900         "mark_stored_args_map" argument to bool.
20901         (emit_call_1): Change "already_popped" variable to bool.
20902         (setjmp_call_p): Change return type from int to bool
20903         and adjust function body accordingly.
20904         (initialize_argument_information): Change *must_preallocate
20905         pointer argument to bool.
20906         (expand_call): Change "pcc_struct_value", "must_preallocate"
20907         and "sibcall_failure" variables to bool.
20908         (emit_library_call_value_1): Change "pcc_struct_value"
20909         variable to bool.
20911 2023-06-20  Martin Jambor  <mjambor@suse.cz>
20913         PR ipa/110276
20914         * ipa-sra.cc (struct caller_issues): New field there_is_one.
20915         (check_for_caller_issues): Set it.
20916         (check_all_callers_for_issues): Check it.
20918 2023-06-20  Martin Jambor  <mjambor@suse.cz>
20920         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
20921         (struct ipcp_transformation): Rearrange members according to
20922         C++ class coding convention, add m_uid_to_idx,
20923         get_param_index and maybe_create_parm_idx_map.
20924         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
20925         (compare_uids): Likewise.
20926         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
20927         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
20928         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
20929         (ipcp_update_vr): Likewise.
20930         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
20931         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
20933 2023-06-20  Carl Love  <cel@us.ibm.com>
20935         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
20936         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
20937         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
20938         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
20939         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
20940         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
20941         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
20942         * config/rs6000/rs6000-builtins.def
20943         (__builtin_vsx_scalar_extract_exp_to_vec,
20944         __builtin_vsx_scalar_extract_sig_to_vec,
20945         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
20946         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
20947         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
20948         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
20949         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
20950         overloaded instance. Update comments.
20951         * config/rs6000/rs6000-overload.def
20952         (__builtin_vec_scalar_insert_exp): Add new overload definition with
20953         vector arguments.
20954         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
20955         overloaded definitions.
20956         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
20957         (DI_to_TI): New mode attribute.
20958         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
20959         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
20960         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
20961         * doc/extend.texi (scalar_extract_exp_to_vec,
20962         scalar_extract_sig_to_vec): Add documentation for new builtins.
20963         (scalar_insert_exp): Add new overloaded builtin definition.
20965 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
20967         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
20968         size of vector mask mode to one rvv register.
20970 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20972         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
20974 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
20976         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
20977         switch handler.
20979 2023-06-20  Richard Biener  <rguenther@suse.de>
20981         * tree-ssa-dse.cc (dse_classify_store): When we found
20982         no defs and the basic-block with the original definition
20983         ends in __builtin_unreachable[_trap] the store is dead.
20985 2023-06-20  Richard Biener  <rguenther@suse.de>
20987         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
20988         keep the virtual SSA form up-to-date.
20990 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20992         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
20993         New define_insn_and_split.
20995 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
20997         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
20999 2023-06-20  Jan Beulich  <jbeulich@suse.com>
21001         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
21002         constraint. Add new AVX512F alternative.
21004 2023-06-20  Richard Biener  <rguenther@suse.de>
21006         PR debug/110295
21007         * dwarf2out.cc (process_scope_var): Continue processing
21008         the decl after setting a parent in case the existing DIE
21009         was in limbo.
21011 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
21013         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
21014         (riscv_arg_has_vector): Simplify.
21015         (riscv_pass_in_vector_p): Adjust warning message.
21017 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
21019         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
21020         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
21021         * config/riscv/riscv.md (riscv_frcsr): New patterns.
21022         (riscv_fscsr): Likewise.
21024 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
21026         PR rtl-optimization/110305
21027         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
21028         Handle HONOR_SNANS for x + 0.0.
21030 2023-06-19  Jan Hubicka  <jh@suse.cz>
21032         PR tree-optimization/109811
21033         PR tree-optimization/109849
21034         * passes.def: Add phiprop to early optimization passes.
21035         * tree-ssa-phiprop.cc: Allow clonning.
21037 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
21039         * config/aarch64/aarch64.md (arches): Add nosimd.
21040         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
21041         compact syntax.
21043 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
21044             Omar Tahir  <Omar.Tahir2@arm.com>
21046         * gensupport.cc (class conlist, add_constraints, add_attributes,
21047         skip_spaces, expect_char, preprocess_compact_syntax,
21048         parse_section_layout, parse_section, convert_syntax): New.
21049         (process_rtx): Check for conversion.
21050         * genoutput.cc (process_template): Check for unresolved iterators.
21051         (class data): Add compact_syntax_p.
21052         (gen_insn): Use it.
21053         * gensupport.h (compact_syntax): New.
21054         (hash-set.h): Include.
21055         * doc/md.texi: Document it.
21057 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
21059         * recog.h (check_asm_operands): Change return type from int to bool.
21060         (insn_invalid_p): Ditto.
21061         (verify_changes): Ditto.
21062         (apply_change_group): Ditto.
21063         (constrain_operands): Ditto.
21064         (constrain_operands_cached): Ditto.
21065         (validate_replace_rtx_subexp): Ditto.
21066         (validate_replace_rtx): Ditto.
21067         (validate_replace_rtx_part): Ditto.
21068         (validate_replace_rtx_part_nosimplify): Ditto.
21069         (added_clobbers_hard_reg_p): Ditto.
21070         (peep2_regno_dead_p): Ditto.
21071         (peep2_reg_dead_p): Ditto.
21072         (store_data_bypass_p): Ditto.
21073         (if_test_bypass_p): Ditto.
21074         * rtl.h (split_all_insns_noflow): Change
21075         return type from unsigned int to void.
21076         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
21077         of generated added_clobbers_hard_reg_p from int to bool and adjust
21078         function body accordingly.  Change "used" variable type from
21079         int to bool.
21080         * recog.cc (check_asm_operands): Change return type
21081         from int to bool and adjust function body accordingly.
21082         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
21083         (verify_changes): Change return type from int to bool.
21084         (apply_change_group): Change return type from int to bool
21085         and adjust function body accordingly.
21086         (validate_replace_rtx_subexp): Change return type from int to bool.
21087         (validate_replace_rtx): Ditto.
21088         (validate_replace_rtx_part): Ditto.
21089         (validate_replace_rtx_part_nosimplify): Ditto.
21090         (constrain_operands_cached): Ditto.
21091         (constrain_operands): Ditto.  Change "lose" and "win"
21092         variables type from int to bool.
21093         (split_all_insns_noflow): Change return type from unsigned int
21094         to void and adjust function body accordingly.
21095         (peep2_regno_dead_p): Change return type from int to bool.
21096         (peep2_reg_dead_p): Ditto.
21097         (peep2_find_free_register): Change "success"
21098         variable type from int to bool
21099         (store_data_bypass_p_1): Change return type from int to bool.
21100         (store_data_bypass_p): Ditto.
21102 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
21104         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
21105         Zve32f extension.
21107 2023-06-19  Pan Li  <pan2.li@intel.com>
21109         PR target/110299
21110         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
21111         modes.
21112         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
21113         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
21114         VF_ZVE63 and VF_ZVE32.
21115         * config/riscv/vector.md
21116         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
21117         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
21118         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
21119         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
21120         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
21121         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
21122         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
21123         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
21124         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
21125         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
21127 2023-06-19  Pan Li  <pan2.li@intel.com>
21129         PR target/110277
21130         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
21131         ret_mode.
21132         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
21133         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
21134         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
21135         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
21136         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
21137         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
21138         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
21139         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
21140         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
21141         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
21142         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
21143         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
21144         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
21145         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
21147 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
21149         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
21150         (gcn_init_libfuncs): Add div and mod functions for all modes.
21151         Add placeholders for divmod functions.
21152         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
21154 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
21156         * tree-vect-generic.cc: Include optabs-libfuncs.h.
21157         (get_compute_type): Check optab_libfunc.
21158         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
21159         (vectorizable_operation): Check optab_libfunc.
21161 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
21163         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
21164         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
21165         (V_MOV, V_MOV_ALT): Likewise.
21166         (scalar_mode, SCALAR_MODE): Add TImode.
21167         (vnsi, VnSI, vndi, VnDI): Likewise.
21168         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
21169         (mov<mode>, mov<mode>_unspec): Use V_MOV.
21170         (*mov<mode>_4reg): New insn.
21171         (mov<mode>_exec): New 4reg variant.
21172         (mov<mode>_sgprbase): Likewise.
21173         (reload_in<mode>, reload_out<mode>): Use V_MOV.
21174         (vec_set<mode>): Likewise.
21175         (vec_duplicate<mode><exec>): New 4reg variant.
21176         (vec_extract<mode><scalar_mode>): Likewise.
21177         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
21178         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
21179         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
21180         (fold_extract_last_<mode>): Use V_MOV.
21181         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
21182         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
21183         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
21184         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
21185         gather<mode>_insn_2offsets<exec>): Use V_MOV.
21186         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
21187         scatter<mode>_insn_1offset<exec_scatter>,
21188         scatter<mode>_insn_1offset_ds<exec_scatter>,
21189         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
21190         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
21191         mask_scatter_store<mode><vnsi>): Likewise.
21192         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
21193         (gcn_hard_regno_mode_ok): Likewise.
21194         (GEN_VNM): Add TImode support.
21195         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
21196         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
21197         V8TImode, and V2TImode.
21198         (print_operand):  Add 'J' and 'K' print codes.
21200 2023-06-19  Richard Biener  <rguenther@suse.de>
21202         PR tree-optimization/110298
21203         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
21204         Clear number of iterations info before cleaning up the CFG.
21206 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21208         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
21209         Simplify vec_concat of lowpart subreg and high part vec_select.
21211 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
21213         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
21215 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
21217         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
21218         Handle null niters_skip.
21220 2023-06-19  Richard Biener  <rguenther@suse.de>
21222         * config/aarch64/aarch64.cc
21223         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
21224         to LOOP_VINFO_MASKS.
21226 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
21228         PR target/105523
21229         * common/config/avr/avr-common.cc: Remove setting
21230         of OPT_fdelete_null_pointer_checks.
21231         * config/avr/avr.cc (avr_option_override): Clear
21232         flag_delete_null_pointer_checks if zero_address_valid.
21233         (avr_addr_space_zero_address_valid): New function.
21234         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
21235         hook.
21237 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21238             Robin Dapp  <rdapp.gcc@gmail.com>
21240         * doc/md.texi: Add len_mask{load,store}.
21241         * genopinit.cc (main): Ditto.
21242         (CMP_NAME): Ditto.
21243         * internal-fn.cc (len_maskload_direct): Ditto.
21244         (len_maskstore_direct): Ditto.
21245         (expand_call_mem_ref): Ditto.
21246         (expand_partial_load_optab_fn): Ditto.
21247         (expand_len_maskload_optab_fn): Ditto.
21248         (expand_partial_store_optab_fn): Ditto.
21249         (expand_len_maskstore_optab_fn): Ditto.
21250         (direct_len_maskload_optab_supported_p): Ditto.
21251         (direct_len_maskstore_optab_supported_p): Ditto.
21252         * internal-fn.def (LEN_MASK_LOAD): Ditto.
21253         (LEN_MASK_STORE): Ditto.
21254         * optabs.def (OPTAB_CD): Ditto.
21256 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
21258         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
21260 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
21262         * config/riscv/autovec.md (<optab><mode>3): Implement binop
21263         expander.
21264         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
21265         (enum vxrm_field_enum): Rename this...
21266         (enum fixed_point_rounding_mode): ...to this.
21267         (enum frm_field_enum): Rename this...
21268         (enum floating_point_rounding_mode): ...to this.
21269         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
21270         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
21271         vector handling.
21272         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
21273         (riscv_excess_precision): Do not convert to float for ZVFH.
21274         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
21276 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
21278         * config/riscv/vector-iterators.md: Add VI_QH iterator.
21279         * config/riscv/autovec-opt.md
21280         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
21281         that includes sign extension.
21282         (@pred_extract_first_sextsi<mode>): Dito for SImode.
21284 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
21286         * config/riscv/autovec.md (vec_set<mode>): Implement.
21287         (vec_extract<mode><vel>): Implement.
21288         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
21289         (emit_vlmax_slide_insn): Declare.
21290         (emit_nonvlmax_slide_tu_insn): Declare.
21291         (emit_scalar_move_insn): Export.
21292         (emit_nonvlmax_integer_move_insn): Export.
21293         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
21294         (emit_nonvlmax_slide_tu_insn): New function.
21295         (emit_vlmax_masked_mu_insn): No change.
21296         (emit_vlmax_integer_move_insn): Export.
21298 2023-06-19  Richard Biener  <rguenther@suse.de>
21300         * tree-vectorizer.h (enum vect_partial_vector_style): New.
21301         (_loop_vec_info::partial_vector_style): Likewise.
21302         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
21303         (rgroup_controls::compare_type): Add.
21304         (vec_loop_masks): Change from a typedef to auto_vec<>
21305         to a structure.
21306         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
21307         Adjust.  Convert niters_skip to compare_type.
21308         (vect_set_loop_condition_partial_vectors_avx512): New function
21309         implementing the AVX512 partial vector codegen.
21310         (vect_set_loop_condition): Dispatch to the correct
21311         vect_set_loop_condition_partial_vectors_* function based on
21312         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
21313         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
21314         in the original niter type.
21315         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
21316         partial_vector_style.
21317         (can_produce_all_loop_masks_p): Adjust.
21318         (vect_verify_full_masking): Produce the rgroup_controls vector
21319         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
21320         (vect_verify_full_masking_avx512): New function implementing
21321         verification of AVX512 style masking.
21322         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
21323         (vect_analyze_loop_2): Also try AVX512 style masking.
21324         Adjust condition.
21325         (vect_estimate_min_profitable_iters): Implement AVX512 style
21326         mask producing cost.
21327         (vect_record_loop_mask): Do not build the rgroup_controls
21328         vector here but record masks in a hash-set.
21329         (vect_get_loop_mask): Implement AVX512 style mask query,
21330         complementing the existing while_ult style.
21332 2023-06-19  Richard Biener  <rguenther@suse.de>
21334         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
21335         argument.
21336         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
21337         (vectorize_fold_left_reduction): Adjust.
21338         (vect_transform_reduction): Likewise.
21339         (vectorizable_live_operation): Likewise.
21340         * tree-vect-stmts.cc (vectorizable_call): Likewise.
21341         (vectorizable_operation): Likewise.
21342         (vectorizable_store): Likewise.
21343         (vectorizable_load): Likewise.
21344         (vectorizable_condition): Likewise.
21346 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
21348         PR target/110086
21349         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
21350         Add Optimization option property.
21352 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21354         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
21355         Add new pattern for the abovementioned case.
21357 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21359         * config/xtensa/xtensa.cc
21360         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
21362 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
21364         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
21366 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
21368         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
21370 2023-06-19  liuhongt  <hongtao.liu@intel.com>
21372         PR target/110235
21373         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
21374         Substitute with ..
21375         (sse2_packsswb<mask_name>): .. this, ..
21376         (avx2_packsswb<mask_name>): .. this and ..
21377         (avx512bw_packsswb<mask_name>): .. this.
21378         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
21379         (sse2_packssdw<mask_name>): .. this, ..
21380         (avx2_packssdw<mask_name>): .. this and ..
21381         (avx512bw_packssdw<mask_name>): .. this.
21383 2023-06-19  liuhongt  <hongtao.liu@intel.com>
21385         PR target/110235
21386         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
21387         UNSPEC_US_TRUNCATE instead of original us_truncate for
21388         packusdw/packuswb.
21389         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
21390         with ..
21391         (mmx_packsswb): .. this and ..
21392         (mmx_packuswb): .. this.
21393         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
21394         us_truncate.
21395         (s_trunsuffix): Removed code iterator.
21396         (any_s_truncate): Ditto.
21397         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
21398         UNSPEC_US_TRUNCATE instead of original us_truncate.
21399         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
21400         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
21402 2023-06-18  Pan Li  <pan2.li@intel.com>
21404         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
21406 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
21408         * rtl.h (*rtx_equal_p_callback_function):
21409         Change return type from int to bool.
21410         (rtx_equal_p): Ditto.
21411         (*hash_rtx_callback_function): Ditto.
21412         * rtl.cc (rtx_equal_p): Change return type from int to bool
21413         and adjust function body accordingly.
21414         * early-remat.cc (scratch_equal): Ditto.
21415         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
21416         (hash_with_unspec_callback): Ditto.
21418 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
21420         * config/arc/arc.md (movqi_insn): Allow certain constants to
21421         be stored into memory in the pattern's condition.
21422         (movsf_insn): Similarly.
21424 2023-06-18  Honza  <jh@ryzen3.suse.cz>
21426         PR tree-optimization/109849
21427         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
21428         ES; handle ipa_predicate::not_sra_candidate.
21429         (evaluate_properties_for_edge): Pass es to
21430         evaluate_conditions_for_known_args.
21431         (ipa_fn_summary_t::duplicate): Handle sra candidates.
21432         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
21433         (load_or_store_of_ptr_parameter): New function.
21434         (points_to_possible_sra_candidate_p): New function.
21435         (analyze_function_body): Initialize points_to_possible_sra_candidate;
21436         determine sra predicates.
21437         (estimate_ipcp_clone_size_and_time): Update call of
21438         evaluate_conditions_for_known_args.
21439         (remap_edge_params): Update points_to_possible_sra_candidate.
21440         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
21441         (write_ipa_call_summary): Likewise.
21442         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
21443         (dump_condition): Dump it.
21444         * ipa-predicate.h (struct inline_param_summary): Add
21445         points_to_possible_sra_candidate.
21447 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
21449         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
21450         function for setting the carry flag.
21451         (ix86_expand_builtin) <handlecarry>: Use it here.
21452         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
21453         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
21454         (usubc<mode>5): Likewise.
21456 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
21458         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
21459         for the immediate constant shift count.
21460         (*concat<mode><dwi>3_2): Likewise.
21461         (*concat<mode><dwi>3_3): Likewise.
21462         (*concat<mode><dwi>3_4): Likewise.
21463         (*concat<mode><dwi>3_5): Likewise.
21464         (*concat<mode><dwi>3_6): Likewise.
21466 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
21468         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
21469         (hash_rtx): Remove.
21470         * early-remat.cc (remat_candidate_hasher::equal): Update
21471         to call rtx_equal_p with rtx_equal_p_callback_function argument.
21472         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
21473         (rtx_equal_p): Remove.
21474         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
21475         argument with NULL default value.
21476         (rtx_equal_p_cb): Remove function declaration.
21477         (hash_rtx_cb): Ditto.
21478         (hash_rtx): Add hash_rtx_callback_function argument
21479         with NULL default value.
21480         * sel-sched-ir.cc (free_nop_pool): Update function comment.
21481         (skip_unspecs_callback): Ditto.
21482         (vinsn_init): Update to call hash_rtx with
21483         hash_rtx_callback_function argument.
21484         (vinsn_equal_p): Ditto.
21486 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
21488         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
21489         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
21490         (ADJUST_ALIGNMENT): Ditto.
21491         (RVV_TUPLE_PARTIAL_MODES): Ditto.
21492         (ADJUST_NUNITS): Ditto.
21493         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
21494         New types.
21495         (vfloat16mf4x3_t): Ditto.
21496         (vfloat16mf4x4_t): Ditto.
21497         (vfloat16mf4x5_t): Ditto.
21498         (vfloat16mf4x6_t): Ditto.
21499         (vfloat16mf4x7_t): Ditto.
21500         (vfloat16mf4x8_t): Ditto.
21501         (vfloat16mf2x2_t): Ditto.
21502         (vfloat16mf2x3_t): Ditto.
21503         (vfloat16mf2x4_t): Ditto.
21504         (vfloat16mf2x5_t): Ditto.
21505         (vfloat16mf2x6_t): Ditto.
21506         (vfloat16mf2x7_t): Ditto.
21507         (vfloat16mf2x8_t): Ditto.
21508         (vfloat16m1x2_t): Ditto.
21509         (vfloat16m1x3_t): Ditto.
21510         (vfloat16m1x4_t): Ditto.
21511         (vfloat16m1x5_t): Ditto.
21512         (vfloat16m1x6_t): Ditto.
21513         (vfloat16m1x7_t): Ditto.
21514         (vfloat16m1x8_t): Ditto.
21515         (vfloat16m2x2_t): Ditto.
21516         (vfloat16m2x3_t): Ditto.
21517         (vfloat16m2x4_t): Ditto.
21518         (vfloat16m4x2_t): Ditto.
21519         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
21520         (vfloat16mf4x3_t): Ditto.
21521         (vfloat16mf4x4_t): Ditto.
21522         (vfloat16mf4x5_t): Ditto.
21523         (vfloat16mf4x6_t): Ditto.
21524         (vfloat16mf4x7_t): Ditto.
21525         (vfloat16mf4x8_t): Ditto.
21526         (vfloat16mf2x2_t): Ditto.
21527         (vfloat16mf2x3_t): Ditto.
21528         (vfloat16mf2x4_t): Ditto.
21529         (vfloat16mf2x5_t): Ditto.
21530         (vfloat16mf2x6_t): Ditto.
21531         (vfloat16mf2x7_t): Ditto.
21532         (vfloat16mf2x8_t): Ditto.
21533         (vfloat16m1x2_t): Ditto.
21534         (vfloat16m1x3_t): Ditto.
21535         (vfloat16m1x4_t): Ditto.
21536         (vfloat16m1x5_t): Ditto.
21537         (vfloat16m1x6_t): Ditto.
21538         (vfloat16m1x7_t): Ditto.
21539         (vfloat16m1x8_t): Ditto.
21540         (vfloat16m2x2_t): Ditto.
21541         (vfloat16m2x3_t): Ditto.
21542         (vfloat16m2x4_t): Ditto.
21543         (vfloat16m4x2_t): Ditto.
21544         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
21545         * config/riscv/riscv.md: New.
21546         * config/riscv/vector-iterators.md: New.
21548 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
21550         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
21551         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
21552         Generalize special case for converting TImode to V1TImode to handle
21553         all 128-bit vector conversions.
21555 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
21557         * gcc-ar.cc (main): Refactor to slightly reduce code
21558         duplication.  Avoid unnecessary elements in nargv.
21560 2023-06-16  Pan Li  <pan2.li@intel.com>
21562         PR target/110265
21563         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
21564         integer reduction expand.
21565         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
21566         and the LMUL1 attr respectively.
21567         * config/riscv/vector.md
21568         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
21569         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
21570         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
21571         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
21572         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
21573         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
21574         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
21576 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21578         PR target/110264
21579         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
21581 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
21583         PR middle-end/79173
21584         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
21585         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
21586         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
21587         types.
21588         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
21589         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
21590         * builtins.cc (fold_builtin_addc_subc): New function.
21591         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
21592         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
21594 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
21596         PR tree-optimization/110271
21597         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
21598         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
21599         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
21601 2023-06-16  Martin Jambor  <mjambor@suse.cz>
21603         * configure: Regenerate.
21605 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
21606             Uros Bizjak  <ubizjak@gmail.com>
21608         PR target/31985
21609         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
21610         define_insn_and_split combine *add<dwi>3_doubleword with
21611         a *concat<mode><dwi>3 for more efficient lowering after reload.
21613 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
21615         * ira-lives.cc: Include except.h.
21616         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
21617         when the pseudo does not live at the exception landing pad.
21619 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
21621         * doc/invoke.texi: Document -Welaborated-enum-base.
21623 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21625         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
21626         (ushrn2_n): ... This.
21627         (sqshrn2_n): Rename builtins to...
21628         (ssqshrn2_n): ... This.
21629         (uqshrn2_n): Rename builtins to...
21630         (uqushrn2_n): ... This.
21631         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
21632         (vqshrn_high_n_s32): Likewise.
21633         (vqshrn_high_n_s64): Likewise.
21634         (vqshrn_high_n_u16): Likewise.
21635         (vqshrn_high_n_u32): Likewise.
21636         (vqshrn_high_n_u64): Likewise.
21637         (vshrn_high_n_s16): Likewise.
21638         (vshrn_high_n_s32): Likewise.
21639         (vshrn_high_n_s64): Likewise.
21640         (vshrn_high_n_u16): Likewise.
21641         (vshrn_high_n_u32): Likewise.
21642         (vshrn_high_n_u64): Likewise.
21643         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
21644         Rename to...
21645         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
21646         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
21647         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
21648         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
21649         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
21650         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
21651         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
21652         Update expander for the above.
21654 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21656         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
21657         (shrn2_n): ... This.
21658         (rshrn2): Rename builtins to...
21659         (rshrn2_n): ... This.
21660         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
21661         (vrshrn_high_n_s32): Likewise.
21662         (vrshrn_high_n_s64): Likewise.
21663         (vrshrn_high_n_u16): Likewise.
21664         (vrshrn_high_n_u32): Likewise.
21665         (vrshrn_high_n_u64): Likewise.
21666         (vshrn_high_n_s16): Likewise.
21667         (vshrn_high_n_s32): Likewise.
21668         (vshrn_high_n_s64): Likewise.
21669         (vshrn_high_n_u16): Likewise.
21670         (vshrn_high_n_u32): Likewise.
21671         (vshrn_high_n_u64): Likewise.
21672         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
21673         Delete.
21674         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
21675         (aarch64_shrn2<mode>_insn_le): Likewise.
21676         (aarch64_shrn2<mode>_insn_be): Likewise.
21677         (aarch64_shrn2<mode>): Likewise.
21678         (aarch64_rshrn2<mode>_insn_le): Likewise.
21679         (aarch64_rshrn2<mode>_insn_be): Likewise.
21680         (aarch64_rshrn2<mode>): Likewise.
21681         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
21682         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
21683         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
21684         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
21685         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
21686         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
21687         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
21688         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
21689         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
21690         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
21691         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
21692         (aarch64_sqshrun2_n<mode>): New define_expand.
21693         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
21694         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
21695         (aarch64_sqrshrun2_n<mode>): New define_expand.
21696         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
21697         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
21698         Delete unspec values.
21699         (VQSHRN_N): Delete int iterator.
21701 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21703         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
21704         * config/aarch64/aarch64-simd.md
21705         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
21706         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
21707         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
21708         * config/aarch64/iterators.md (shrn_s): New code attribute.
21710 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21712         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
21713         Rename to...
21714         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
21715         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
21716         (aarch64_sqrshrun_n<mode>_insn): Likewise.
21717         (aarch64_sqshrun_n<mode>_insn): Likewise.
21718         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
21719         (aarch64_sqshrun_n<mode>): Likewise.
21720         (aarch64_sqrshrun_n<mode>): Likewise.
21721         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
21723 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21725         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
21726         (shrn_n): ... This.
21727         (rshrn): Rename builtins to...
21728         (rshrn_n): ... This.
21729         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
21730         (vshrn_n_s32): Likewise.
21731         (vshrn_n_s64): Likewise.
21732         (vshrn_n_u16): Likewise.
21733         (vshrn_n_u32): Likewise.
21734         (vshrn_n_u64): Likewise.
21735         (vrshrn_n_s16): Likewise.
21736         (vrshrn_n_s32): Likewise.
21737         (vrshrn_n_s64): Likewise.
21738         (vrshrn_n_u16): Likewise.
21739         (vrshrn_n_u32): Likewise.
21740         (vrshrn_n_u64): Likewise.
21741         * config/aarch64/aarch64-simd.md
21742         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
21743         (aarch64_shrn<mode>): Likewise.
21744         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
21745         (aarch64_rshrn<mode>): Likewise.
21746         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
21747         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
21748         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
21749         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
21750         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
21751         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
21752         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
21753         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
21754         (aarch64_sqshrun_n<mode>): Likewise.
21755         (aarch64_sqrshrun_n<mode>): Likewise.
21756         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
21757         (TRUNCEXTEND): New code attribute.
21758         (TRUNC_SHIFT): Likewise.
21759         (shrn_op): Likewise.
21760         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
21761         New predicate.
21763 2023-06-16  Pan Li  <pan2.li@intel.com>
21765         * config/riscv/riscv-vsetvl.cc
21766         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
21768 2023-06-16  Richard Biener  <rguenther@suse.de>
21770         PR tree-optimization/110278
21771         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
21772         (x != (typeof x)(x == 0) -> true): Likewise.
21774 2023-06-16  Pali Rohár  <pali@kernel.org>
21776         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
21777         (REAL_LIBGCC_SPEC): New define.
21778         * config/i386/mingw.opt: Add mcrtdll=
21779         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
21780         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
21781         (STARTFILE_SPEC): Adjust for -mcrtdll=.
21782         * doc/invoke.texi: Add mcrtdll= documentation.
21784 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
21786         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
21787         (mips_handle_code_readable_attr):New static function.
21788         (mips_get_code_readable_attr):New static enum function.
21789         (mips_set_current_function):Set the code_readable mode.
21790         (mips_option_override):Same as above.
21791         * doc/extend.texi:Document code_readable.
21793 2023-06-16  Richard Biener  <rguenther@suse.de>
21795         PR tree-optimization/110269
21796         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
21797         with tree_expr_nonzero_p ...
21798         * match.pd (cmp (convert? addr@0) integer_zerop): With this
21799         pattern.
21801 2023-06-15  Marek Polacek  <polacek@redhat.com>
21803         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
21804         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
21805         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
21806         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
21807         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
21808         check.
21809         * configure: Regenerate.
21810         * doc/install.texi: Document --enable-host-pie.
21812 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
21814         * regcprop.cc (maybe_mode_change): Enable stack pointer
21815         propagation.
21817 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
21819         PR tree-optimization/110266
21820         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
21821         complex type.
21822         (adjust_realpart_expr): Ditto.
21824 2023-06-15  Jan Beulich  <jbeulich@suse.com>
21826         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
21827         vmovddup.
21829 2023-06-15  Jan Beulich  <jbeulich@suse.com>
21831         * config/i386/constraints.md: Mention k and r for B.
21833 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
21834             Andrew Pinski  <apinski@marvell.com>
21836         PR target/110136
21837         * config/loongarch/loongarch.md: Modify the register constraints for template
21838         "jumptable" and "indirect_jump" from "r" to "e".
21840 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
21842         * config/loongarch/loongarch-tune.h (loongarch_align): New
21843         struct.
21844         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
21845         array.
21846         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
21847         the array.
21848         * config/loongarch/loongarch.cc
21849         (loongarch_option_override_internal): Set the value of
21850         -falign-functions= if -falign-functions is enabled but no value
21851         is given.  Likewise for -falign-labels=.
21853 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
21855         PR middle-end/79173
21856         * internal-fn.def (UADDC, USUBC): New internal functions.
21857         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
21858         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
21859         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
21860         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
21861         match_uaddc_usubc): New functions.
21862         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
21863         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
21864         other optimizations have been successful for those.
21865         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
21866         * fold-const-call.cc (fold_const_call): Likewise.
21867         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
21868         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
21869         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
21870         patterns.
21871         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
21872         define_expand patterns.
21873         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
21874         into NOTE_INSN_DELETED note rather than nop instruction.
21875         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
21876         Likewise.
21878 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
21880         PR middle-end/79173
21881         * config/i386/i386.md (subborrow<mode>): Add alternative with
21882         memory destination and add for it define_peephole2
21883         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
21884         destination in these patterns.
21886 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
21888         PR middle-end/79173
21889         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
21890         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
21891         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
21892         using memory destination in these patterns.
21894 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
21896         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
21897         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
21898         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
21899         * fold-const-call.cc (fold_const_call): ... here.
21901 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
21903         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
21904         Rename to <su>abd<mode>3.
21905         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
21906         to <su>abd<mode>3.
21908 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
21910         * doc/md.texi (sabd, uabd): Document them.
21911         * internal-fn.def (ABD): Use new optab.
21912         * optabs.def (sabd_optab, uabd_optab): New optabs,
21913         * tree-vect-patterns.cc (vect_recog_absolute_difference):
21914         Recognize the following idiom abs (a - b).
21915         (vect_recog_sad_pattern): Refactor to use
21916         vect_recog_absolute_difference.
21917         (vect_recog_abd_pattern): Use patterns found by
21918         vect_recog_absolute_difference to build a new ABD
21919         internal call.
21921 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
21923         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
21924         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
21926 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21928         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
21929         (expand_vec_perm_const_1): Add merge optmization.
21931 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
21933         PR target/110119
21934         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
21935         (riscv_pass_by_reference): Return true for vector mode
21937 2023-06-15  Pan Li  <pan2.li@intel.com>
21939         * config/riscv/autovec-opt.md: Align the predictor sytle.
21940         * config/riscv/autovec.md: Ditto.
21942 2023-06-15  Pan Li  <pan2.li@intel.com>
21944         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
21945         Take elen instead of scalar BITS_PER_WORD.
21946         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
21947         instead of scaler BITS_PER_WORD.
21949 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
21951         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
21953 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21955         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
21956         Fix signed comparison warning in loop from npats to enelts.
21958 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
21960         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
21961         to offloading compilation.
21962         * config/gcn/mkoffload.cc (main): Adjust.
21963         * config/nvptx/mkoffload.cc (main): Likewise.
21964         * doc/invoke.texi (foffload-options): Update example.
21966 2023-06-14  liuhongt  <hongtao.liu@intel.com>
21968         PR target/110227
21969         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
21970         for alternative 2 since there's no evex version for vpcmpeqd
21971         ymm, ymm, ymm.
21973 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
21975         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
21977 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
21979         * config/sh/divtab.cc: Remove.
21981 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
21983         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
21984         superfluous spaces around \t for vpcmpeqd.
21986 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
21988         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
21989         clearing vectors with only a single element.  Set CLEARED if the
21990         vector was initialized to zero.
21992 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
21994         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
21995         #include.
21996         (ENTRY): Undef.
21997         (TUPLE_ENTRY): Undef.
21999 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22001         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
22002         (shuffle_generic_patterns): Ditto.
22003         (expand_vec_perm_const_1): Ditto.
22005 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22007         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
22008         (shuffle_decompress_patterns): Ditto.
22010 2023-06-13  Richard Biener  <rguenther@suse.de>
22012         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
22014 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
22015             Kito Cheng  <kito.cheng@sifive.com>
22017         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
22018         warning flag if func is not builtin
22019         * config/riscv/riscv.cc
22020         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
22021         (riscv_arg_has_vector): Determine whether the arg is vector type.
22022         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
22023         (riscv_init_cumulative_args): The same as header.
22024         (riscv_get_arg_info): Add the checking.
22025         (riscv_function_value): Check the func return and set warning flag
22026         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
22027         determine whether warning psabi or not.
22029 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22031         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
22032         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
22033         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
22034         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
22035         with TP_TPIDRURO.
22036         (arm_output_load_tpidr): Define.
22037         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
22038         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
22039         assembly.
22040         (reload_tp_hard): Likewise.
22041         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
22042         arm_tp_type.
22043         * doc/invoke.texi (Arm Options, mtp): Document new values.
22045 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22047         PR target/108779
22048         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
22049         AARCH64_TPIDRRO_EL0 value.
22050         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
22051         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
22052         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
22053         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
22055 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
22057         * range-op-float.cc (frange_nextafter): Drop inline.
22058         (frelop_early_resolve): Add static.
22059         (frange_float): Likewise.
22061 2023-06-13  Richard Biener  <rguenther@suse.de>
22063         PR middle-end/110232
22064         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
22065         to check whether the buffer covers the whole vector.
22067 2023-06-13  Richard Biener  <rguenther@suse.de>
22069         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
22070         .MASK_LOAD and friends set the size of the access to unknown.
22072 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
22074         PR target/96339
22075         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
22076         calls that have a constant input predicate vector.
22077         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
22078         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
22079         (svlast_impl::vect_all_same): Check if all vector elements are equal.
22081 2023-06-13  Andi Kleen  <ak@linux.intel.com>
22083         * config/i386/gcc-auto-profile: Regenerate.
22085 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22087         * config/riscv/vector-iterators.md: Fix requirement.
22089 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22091         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
22092         (shuffle_decompress_patterns): New function.
22093         (expand_vec_perm_const_1): Add decompress optimization.
22095 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
22097         PR rtl-optimization/101188
22098         * postreload.cc (reload_cse_move2add_invalidate): New function,
22099         extracted from...
22100         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
22102 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
22104         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
22105         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
22106         and if maxv == 1, use constant element for duplicating into register.
22108 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
22110         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
22111         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
22112         (gimplify_adjust_omp_clauses): Change
22113         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
22114         GOMP_MAP_FORCE_PRESENT.
22115         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
22116         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
22117         to/from clauses with present modifier.
22119 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22121         PR tree-optimization/110205
22122         * range-op-float.cc (range_operator::fold_range): Add default FII
22123         fold routine.
22124         * range-op-mixed.h (class operator_gt): Add missing final overrides.
22125         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
22126         (operator_lshift ::update_bitmask): Add final override.
22127         (operator_rshift ::update_bitmask): Add final override.
22128         * range-op.h (range_operator::fold_range): Add FII prototype.
22130 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22132         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
22133         Use range_op_handler directly.
22134         * range-op.cc (range_op_handler::range_op_handler): Unsigned
22135         param instead of tree-code.
22136         (ptr_op_widen_plus_signed): Delete.
22137         (ptr_op_widen_plus_unsigned): Delete.
22138         (ptr_op_widen_mult_signed): Delete.
22139         (ptr_op_widen_mult_unsigned): Delete.
22140         (range_op_table::initialize_integral_ops): Add new opcodes.
22141         * range-op.h (range_op_handler): Use unsigned.
22142         (OP_WIDEN_MULT_SIGNED): New.
22143         (OP_WIDEN_MULT_UNSIGNED): New.
22144         (OP_WIDEN_PLUS_SIGNED): New.
22145         (OP_WIDEN_PLUS_UNSIGNED): New.
22146         (RANGE_OP_TABLE_SIZE): New.
22147         (range_op_table::operator []): Use unsigned.
22148         (range_op_table::set): Use unsigned.
22149         (m_range_tree): Make unsigned.
22150         (ptr_op_widen_mult_signed): Remove.
22151         (ptr_op_widen_mult_unsigned): Remove.
22152         (ptr_op_widen_plus_signed): Remove.
22153         (ptr_op_widen_plus_unsigned): Remove.
22155 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22157         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
22158         manually as there is no access to the default operator.
22159         (cfn_copysign::fold_range): Don't check for validity.
22160         (cfn_ubsan::fold_range): Ditto.
22161         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
22162         * range-op.cc (default_operator): New.
22163         (range_op_handler::range_op_handler): Use default_operator
22164         instead of NULL.
22165         (range_op_handler::operator bool): Move from header, compare
22166         against default operator.
22167         (range_op_handler::range_op): New.
22168         * range-op.h (range_op_handler::operator bool): Move.
22170 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22172         * range-op.cc (unified_table): Delete.
22173         (range_op_table operator_table): Instantiate.
22174         (range_op_table::range_op_table): Rename from unified_table.
22175         (range_op_handler::range_op_handler): Use range_op_table.
22176         * range-op.h (range_op_table::operator []): Inline.
22177         (range_op_table::set): Inline.
22179 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22181         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
22182         pass type.
22183         * gimple-range-op.cc (get_code): Rename from get_code_and_type
22184         and simplify.
22185         (gimple_range_op_handler::supported_p): No need for type.
22186         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
22187         (cfn_copysign::fold_range): Ditto.
22188         (cfn_ubsan::fold_range): Ditto.
22189         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
22190         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
22191         * range-op-float.cc (operator_plus::op1_range): Ditto.
22192         (operator_mult::op1_range): Ditto.
22193         (range_op_float_tests): Ditto.
22194         * range-op.cc (get_op_handler): Remove.
22195         (range_op_handler::set_op_handler): Remove.
22196         (operator_plus::op1_range): No need for type.
22197         (operator_minus::op1_range): Ditto.
22198         (operator_mult::op1_range): Ditto.
22199         (operator_exact_divide::op1_range): Ditto.
22200         (operator_cast::op1_range): Ditto.
22201         (perator_bitwise_not::fold_range): Ditto.
22202         (operator_negate::fold_range): Ditto.
22203         * range-op.h (range_op_handler::range_op_handler): Remove type param.
22204         (range_cast): No need for type.
22205         (range_op_table::operator[]): Check for enum_code >= 0.
22206         * tree-data-ref.cc (compute_distributive_range): No need for type.
22207         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
22208         * value-query.cc (range_query::get_tree_range): Ditto.
22209         * value-relation.cc (relation_oracle::validate_relation): Ditto.
22210         * vr-values.cc (range_of_var_in_loop): Ditto.
22211         (simplify_using_ranges::fold_cond_with_ops): Ditto.
22213 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22215         * range-op-mixed.h (operator_max): Remove final.
22216         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
22217         (pointer_table::pointer_table): Remove.
22218         (class hybrid_max_operator): New.
22219         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
22220         * range-op.cc (pointer_tree_table): Remove.
22221         (unified_table::unified_table): Comment out MAX_EXPR.
22222         (get_op_handler): Remove check of pointer table.
22223         * range-op.h (class pointer_table): Remove.
22225 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22227         * range-op-mixed.h (operator_min): Remove final.
22228         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
22229         (class hybrid_min_operator): New.
22230         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
22231         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
22233 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22235         * range-op-mixed.h (operator_bitwise_or): Remove final.
22236         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
22237         (class hybrid_or_operator): New.
22238         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
22239         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
22241 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22243         * range-op-mixed.h (operator_bitwise_and): Remove final.
22244         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
22245         (class hybrid_and_operator): New.
22246         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
22247         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
22249 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22251         * Makefile.in (OBJS): Add range-op-ptr.o.
22252         * range-op-mixed.h (update_known_bitmask): Move prototype here.
22253         (minus_op1_op2_relation_effect): Move prototype here.
22254         (wi_includes_zero_p): Move function to here.
22255         (wi_zero_p): Ditto.
22256         * range-op.cc (update_known_bitmask): Remove static.
22257         (wi_includes_zero_p): Move to header.
22258         (wi_zero_p): Move to header.
22259         (minus_op1_op2_relation_effect): Remove static.
22260         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
22261         (pointer_plus_operator): Ditto.
22262         (pointer_min_max_operator): Ditto.
22263         (pointer_and_operator): Ditto.
22264         (pointer_or_operator): Ditto.
22265         (pointer_table): Ditto.
22266         (range_op_table::initialize_pointer_ops): Ditto.
22267         * range-op-ptr.cc: New.
22269 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22271         * range-op-mixed.h (class operator_max): Move from...
22272         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
22273         (get_op_handler): Remove the integral table.
22274         (class operator_max): Move from here.
22275         (integral_table::integral_table): Delete.
22276         * range-op.h (class integral_table): Delete.
22278 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22280         * range-op-mixed.h (class operator_min): Move from...
22281         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
22282         (class operator_min): Move from here.
22283         (integral_table::integral_table): Remove MIN_EXPR.
22285 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22287         * range-op-mixed.h (class operator_bitwise_or): Move from...
22288         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
22289         (class operator_bitwise_or): Move from here.
22290         (integral_table::integral_table): Remove BIT_IOR_EXPR.
22292 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22294         * range-op-mixed.h (class operator_bitwise_and): Move from...
22295         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
22296         (get_op_handler): Check for a pointer table entry first.
22297         (class operator_bitwise_and): Move from here.
22298         (integral_table::integral_table): Remove BIT_AND_EXPR.
22300 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22302         * range-op-mixed.h (class operator_bitwise_xor): Move from...
22303         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
22304         (class operator_bitwise_xor): Move from here.
22305         (integral_table::integral_table): Remove BIT_XOR_EXPR.
22306         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
22308 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22310         * range-op-mixed.h (class operator_bitwise_not): Move from...
22311         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
22312         (class operator_bitwise_not): Move from here.
22313         (integral_table::integral_table): Remove BIT_NOT_EXPR.
22314         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
22316 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
22318         * range-op-mixed.h (class operator_addr_expr): Move from...
22319         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
22320         (class operator_addr_expr): Move from here.
22321         (integral_table::integral_table): Remove ADDR_EXPR.
22322         (pointer_table::pointer_table): Remove ADDR_EXPR.
22324 2023-06-12  Pan Li  <pan2.li@intel.com>
22326         * config/riscv/riscv-vector-builtins-types.def
22327         (vfloat16m1_t): Add type to lmul1 ops.
22328         (vfloat16m2_t): Likewise.
22329         (vfloat16m4_t): Likewise.
22331 2023-06-12  Richard Biener  <rguenther@suse.de>
22333         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
22334         .MASK_STORE and friend set the size of the access to
22335         unknown.
22337 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
22339         * config.in: Regenerate.
22340         * configure: Regenerate.
22341         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
22343 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22345         * config/riscv/autovec-opt.md
22346         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
22347         (*<any_shiftrt:optab>trunc<mode>): Ditto.
22348         * config/riscv/autovec.md (<optab><mode>3): Change to
22349         define_insn_and_split.
22350         (v<optab><mode>3): Ditto.
22351         (trunc<mode><v_double_trunc>2): Ditto.
22353 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22355         * simplify-rtx.cc (simplify_const_unary_operation):
22356         Handle US_TRUNCATE, SS_TRUNCATE.
22358 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
22360         PR modula2/109952
22361         * doc/gm2.texi (Standard procedures): Fix Next link.
22363 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
22365         * config.in: Regenerate.
22367 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
22369         PR middle-end/110142
22370         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
22371         subtype to vect_widened_op_tree and remove subtype parameter, also
22372         remove superfluous overloaded function definition.
22373         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
22374         to call to vect_recog_widen_op_pattern.
22375         (vect_recog_widen_minus_pattern): Likewise.
22377 2023-06-12  liuhongt  <hongtao.liu@intel.com>
22379         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
22380         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
22381         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
22382         (vec_unpacks_lo_<mode>): Ditto.
22383         (vec_unpacks_hi_<mode>): Ditto.
22384         (sse_movlhps_<mode>): New define_insn.
22385         (ssse3_palignr<mode>_perm): Extend to V_128H.
22386         (V_128H): New mode iterator.
22387         (ssepackPHmode): New mode attribute.
22388         (vunpck_extract_mode): Ditto.
22389         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
22390         (vpckfloat_temp_mode): Ditto.
22391         (vpckfloat_op_mode): Ditto.
22392         (vunpckfixt_mode): Extend to VxHF.
22393         (vunpckfixt_model): Ditto.
22394         (vunpckfixt_extract_mode): Ditto.
22396 2023-06-12  Richard Biener  <rguenther@suse.de>
22398         PR middle-end/110200
22399         * genmatch.cc (expr::gen_transform): Put braces around
22400         the if arm for the (convert ...) short-cut.
22402 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
22404         PR target/109932
22405         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
22406         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
22408 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
22410         PR target/110011
22411         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
22412         floating constant itself for real_to_target call.
22414 2023-06-12  Pan Li  <pan2.li@intel.com>
22416         * config/riscv/riscv-vector-builtins-types.def
22417         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
22418         (vfloat16mf2_t): Ditto.
22419         (vfloat16m1_t): Ditto.
22420         (vfloat16m2_t): Ditto.
22421         (vfloat16m4_t): Ditto.
22423 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
22425         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
22426         Do not require a stack frame when debugging is enabled for AIX.
22428 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
22430         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
22431         Remove attribute values.
22432         (insv_notbit): New post-reload insn.
22433         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
22434         (*insv.not-bit.0_split, *insv.not-bit.7_split)
22435         (*insv.xor-extract_split): Split to insv_notbit.
22436         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
22437         (*insv.xor-extract): Remove post-reload insns.
22438         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
22439         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
22440         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
22441         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
22443 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
22445         PR target/109907
22446         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
22447         (MSB, SIZE): New mode attributes.
22448         (any_shift): New code iterator.
22449         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
22450         (*lshr<mode>3_const_split): Add constraint alternative for
22451         the case of shift-offset = MSB.  Ditch "length" attribute.
22452         (extzv<mode): New. replaces extzv.  Adjust following patterns.
22453         Use avr_out_extr, avr_out_extr_not to print asm.
22454         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
22455         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
22456         * config/avr/constraints.md (C15, C23, C31, Yil): New
22457         * config/avr/predicates.md (reg_or_low_io_operand)
22458         (const7_operand, reg_or_low_io_operand)
22459         (const15_operand, const_0_to_15_operand)
22460         (const23_operand, const_0_to_23_operand)
22461         (const31_operand, const_0_to_31_operand): New.
22462         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
22463         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
22464         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
22465         MSB case to new insn constraint "r" for operands[1].
22466         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
22467         Handle these cases.
22468         (avr_rtx_costs_1): Adjust cost for a new pattern.
22470 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22472         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
22473         (vector_insn_info::parse_insn): Add rtx_insn parse.
22474         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
22475         (get_first_vsetvl): New function.
22476         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
22477         (pass_vsetvl::cleanup_insns): Remove it.
22478         (pass_vsetvl::ssa_post_optimization): New function.
22479         (has_no_uses): Ditto.
22480         (pass_vsetvl::propagate_avl): Remove it.
22481         (pass_vsetvl::df_post_optimization): New function.
22482         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
22483         * config/riscv/riscv-vsetvl.h: Adapt declaration.
22485 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
22487         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
22488         (ipcp_vr_lattice::print): Call dump method.
22489         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
22490         Value_Range.
22491         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
22492         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
22493         range.
22494         (initialize_node_lattices): Pass type when appropriate.
22495         (ipa_vr_operation_and_type_effects): Make type agnostic.
22496         (ipa_value_range_from_jfunc): Same.
22497         (propagate_vr_across_jump_function): Same.
22498         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
22499         (evaluate_properties_for_edge): Same.
22500         * ipa-prop.cc (ipa_vr::get_vrange): Same.
22501         (ipcp_update_vr): Same.
22502         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
22503         (ipa_range_set_and_normalize): Same.
22505 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
22507         PR target/109650
22508         PR target/92729
22509         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
22510         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
22511         (avr_pass_data_ifelse): New pass_data for it.
22512         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
22513         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
22514         (avr_out_cmp_ext): New functions.
22515         (compare_condtition): Make sure REG_CC dies in the branch insn.
22516         (avr_rtx_costs_1): Add computation of cbranch costs.
22517         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
22518         [ADJUST_LEN_CMP_SEXT]Handle them.
22519         (TARGET_CANONICALIZE_COMPARISON): New define.
22520         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
22521         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
22522         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
22523         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
22524         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
22525         (avr_out_cmp_zext): New Protos
22526         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
22527         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
22528         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
22529         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
22530         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
22531         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
22532         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
22533         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
22534         (adjust_len) [add_set_ZN, cmp_zext]: New.
22535         (QIPSI): New mode iterator.
22536         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
22537         (gelt): New code iterator.
22538         (gelt_eqne): New code attribute.
22539         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
22540         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
22541         (*cmpqi_sign_extend): Remove insns.
22542         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
22543         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
22544         * config/avr/predicates.md (scratch_or_d_register_operand): New.
22545         * config/avr/constraints.md (Yxx): New constraint.
22547 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22549         * config/riscv/autovec.md (select_vl<mode>): New pattern.
22550         * config/riscv/riscv-protos.h (expand_select_vl): New function.
22551         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
22553 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22555         * range-op-float.cc (foperator_mult_div_base): Delete.
22556         (foperator_mult_div_base::find_range): Make static local function.
22557         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
22558         (operator_mult::op1_range): Rename from foperator_mult.
22559         (operator_mult::op2_range): Ditto.
22560         (operator_mult::rv_fold): Ditto.
22561         (float_table::float_table): Remove MULT_EXPR.
22562         (class foperator_div): Inherit from range_operator.
22563         (float_table::float_table): Delete.
22564         * range-op-mixed.h (class operator_mult): Combined from integer
22565         and float files.
22566         * range-op.cc (float_tree_table): Delete.
22567         (op_mult): New object.
22568         (unified_table::unified_table): Add MULT_EXPR.
22569         (get_op_handler): Do not check float table any longer.
22570         (class cross_product_operator): Move to range-op-mixed.h.
22571         (class operator_mult): Move to range-op-mixed.h.
22572         (integral_table::integral_table): Remove MULT_EXPR.
22573         (pointer_table::pointer_table): Remove MULT_EXPR.
22574         * range-op.h (float_table): Remove.
22576 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22578         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
22579         to range-op-mixed.h
22580         (operator_negate::fold_range): Rename from foperator_negate.
22581         (operator_negate::op1_range): Ditto.
22582         (float_table::float_table): Remove NEGATE_EXPR.
22583         * range-op-mixed.h (class operator_negate): Combined from integer
22584         and float files.
22585         * range-op.cc (op_negate): New object.
22586         (unified_table::unified_table): Add NEGATE_EXPR.
22587         (class operator_negate): Move to range-op-mixed.h.
22588         (integral_table::integral_table): Remove NEGATE_EXPR.
22589         (pointer_table::pointer_table): Remove NEGATE_EXPR.
22591 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22593         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
22594         to range-op-mixed.h
22595         (operator_minus::fold_range): Rename from foperator_minus.
22596         (operator_minus::op1_range): Ditto.
22597         (operator_minus::op2_range): Ditto.
22598         (operator_minus::rv_fold): Ditto.
22599         (float_table::float_table): Remove MINUS_EXPR.
22600         * range-op-mixed.h (class operator_minus): Combined from integer
22601         and float files.
22602         * range-op.cc (op_minus): New object.
22603         (unified_table::unified_table): Add MINUS_EXPR.
22604         (class operator_minus): Move to range-op-mixed.h.
22605         (integral_table::integral_table): Remove MINUS_EXPR.
22606         (pointer_table::pointer_table): Remove MINUS_EXPR.
22608 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22610         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
22611         to range-op-mixed.h
22612         (operator_abs::fold_range): Rename from foperator_abs.
22613         (operator_abs::op1_range): Ditto.
22614         (float_table::float_table): Remove ABS_EXPR.
22615         * range-op-mixed.h (class operator_abs): Combined from integer
22616         and float files.
22617         * range-op.cc (op_abs): New object.
22618         (unified_table::unified_table): Add ABS_EXPR.
22619         (class operator_abs): Move to range-op-mixed.h.
22620         (integral_table::integral_table): Remove ABS_EXPR.
22621         (pointer_table::pointer_table): Remove ABS_EXPR.
22623 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22625         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
22626         to range-op-mixed.h
22627         (operator_plus::fold_range): Rename from foperator_plus.
22628         (operator_plus::op1_range): Ditto.
22629         (operator_plus::op2_range): Ditto.
22630         (operator_plus::rv_fold): Ditto.
22631         (float_table::float_table): Remove PLUS_EXPR.
22632         * range-op-mixed.h (class operator_plus): Combined from integer
22633         and float files.
22634         * range-op.cc (op_plus): New object.
22635         (unified_table::unified_table): Add PLUS_EXPR.
22636         (class operator_plus): Move to range-op-mixed.h.
22637         (integral_table::integral_table): Remove PLUS_EXPR.
22638         (pointer_table::pointer_table): Remove PLUS_EXPR.
22640 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22642         * range-op-mixed.h (class operator_cast): Combined from integer
22643         and float files.
22644         * range-op.cc (op_cast): New object.
22645         (unified_table::unified_table): Add op_cast
22646         (class operator_cast): Move to range-op-mixed.h.
22647         (integral_table::integral_table): Remove op_cast
22648         (pointer_table::pointer_table): Remove op_cast.
22650 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22652         * range-op-float.cc (operator_cst::fold_range): New.
22653         * range-op-mixed.h (class operator_cst): Move from integer file.
22654         * range-op.cc (op_cst): New object.
22655         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
22656         (class operator_cst): Move to range-op-mixed.h.
22657         (integral_table::integral_table): Remove op_cst.
22658         (pointer_table::pointer_table): Remove op_cst.
22660 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22662         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
22663         to range-op-mixed.h
22664         (operator_identity::fold_range): Rename from foperator_identity.
22665         (operator_identity::op1_range): Ditto.
22666         (float_table::float_table): Remove fop_identity.
22667         * range-op-mixed.h (class operator_identity): Combined from integer
22668         and float files.
22669         * range-op.cc (op_identity): New object.
22670         (unified_table::unified_table): Add op_identity.
22671         (class operator_identity): Move to range-op-mixed.h.
22672         (integral_table::integral_table): Remove identity.
22673         (pointer_table::pointer_table): Remove identity.
22675 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22677         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
22678         to range-op-mixed.h
22679         (operator_ge::fold_range): Rename from foperator_ge.
22680         (operator_ge::op1_range): Ditto.
22681         (float_table::float_table): Remove GE_EXPR.
22682         * range-op-mixed.h (class operator_ge): Combined from integer
22683         and float files.
22684         * range-op.cc (op_ge): New object.
22685         (unified_table::unified_table): Add GE_EXPR.
22686         (class operator_ge): Move to range-op-mixed.h.
22687         (ge_op1_op2_relation): Fold into
22688         operator_ge::op1_op2_relation.
22689         (integral_table::integral_table): Remove GE_EXPR.
22690         (pointer_table::pointer_table): Remove GE_EXPR.
22691         * range-op.h (ge_op1_op2_relation): Delete.
22693 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22695         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
22696         to range-op-mixed.h
22697         (operator_gt::fold_range): Rename from foperator_gt.
22698         (operator_gt::op1_range): Ditto.
22699         (float_table::float_table): Remove GT_EXPR.
22700         * range-op-mixed.h (class operator_gt): Combined from integer
22701         and float files.
22702         * range-op.cc (op_gt): New object.
22703         (unified_table::unified_table): Add GT_EXPR.
22704         (class operator_gt): Move to range-op-mixed.h.
22705         (gt_op1_op2_relation): Fold into
22706         operator_gt::op1_op2_relation.
22707         (integral_table::integral_table): Remove GT_EXPR.
22708         (pointer_table::pointer_table): Remove GT_EXPR.
22709         * range-op.h (gt_op1_op2_relation): Delete.
22711 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22713         * range-op-float.cc (foperator_le): Remove.  Move prototypes
22714         to range-op-mixed.h
22715         (operator_le::fold_range): Rename from foperator_le.
22716         (operator_le::op1_range): Ditto.
22717         (float_table::float_table): Remove LE_EXPR.
22718         * range-op-mixed.h (class operator_le): Combined from integer
22719         and float files.
22720         * range-op.cc (op_le): New object.
22721         (unified_table::unified_table): Add LE_EXPR.
22722         (class operator_le): Move to range-op-mixed.h.
22723         (le_op1_op2_relation): Fold into
22724         operator_le::op1_op2_relation.
22725         (integral_table::integral_table): Remove LE_EXPR.
22726         (pointer_table::pointer_table): Remove LE_EXPR.
22727         * range-op.h (le_op1_op2_relation): Delete.
22729 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22731         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
22732         to range-op-mixed.h
22733         (operator_lt::fold_range): Rename from foperator_lt.
22734         (operator_lt::op1_range): Ditto.
22735         (float_table::float_table): Remove LT_EXPR.
22736         * range-op-mixed.h (class operator_lt): Combined from integer
22737         and float files.
22738         * range-op.cc (op_lt): New object.
22739         (unified_table::unified_table): Add LT_EXPR.
22740         (class operator_lt): Move to range-op-mixed.h.
22741         (lt_op1_op2_relation): Fold into
22742         operator_lt::op1_op2_relation.
22743         (integral_table::integral_table): Remove LT_EXPR.
22744         (pointer_table::pointer_table): Remove LT_EXPR.
22745         * range-op.h (lt_op1_op2_relation): Delete.
22747 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22749         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
22750         to range-op-mixed.h
22751         (operator_equal::fold_range): Rename from foperator_not_equal.
22752         (operator_equal::op1_range): Ditto.
22753         (float_table::float_table): Remove NE_EXPR.
22754         * range-op-mixed.h (class operator_not_equal): Combined from integer
22755         and float files.
22756         * range-op.cc (op_equal): New object.
22757         (unified_table::unified_table): Add NE_EXPR.
22758         (class operator_not_equal): Move to range-op-mixed.h.
22759         (not_equal_op1_op2_relation): Fold into
22760         operator_not_equal::op1_op2_relation.
22761         (integral_table::integral_table): Remove NE_EXPR.
22762         (pointer_table::pointer_table): Remove NE_EXPR.
22763         * range-op.h (not_equal_op1_op2_relation): Delete.
22765 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22767         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
22768         to range-op-mixed.h
22769         (operator_equal::fold_range): Rename from foperator_equal.
22770         (operator_equal::op1_range): Ditto.
22771         (float_table::float_table): Remove EQ_EXPR.
22772         * range-op-mixed.h (class operator_equal): Combined from integer
22773         and float files.
22774         * range-op.cc (op_equal): New object.
22775         (unified_table::unified_table): Add EQ_EXPR.
22776         (class operator_equal): Move to range-op-mixed.h.
22777         (equal_op1_op2_relation): Fold into
22778         operator_equal::op1_op2_relation.
22779         (integral_table::integral_table): Remove EQ_EXPR.
22780         (pointer_table::pointer_table): Remove EQ_EXPR.
22781         * range-op.h (equal_op1_op2_relation): Delete.
22783 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
22785         * range-op-float.cc (class float_table): Move to header.
22786         (float_table::float_table): Move float only operators to...
22787         (range_op_table::initialize_float_ops): Here.
22788         * range-op-mixed.h: New.
22789         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
22790         to top of file.
22791         (float_tree_table): Moved from range-op-float.cc.
22792         (unified_tree_table): New.
22793         (unified_table::unified_table): New.  Call initialize routines.
22794         (get_op_handler): Check unified table first.
22795         (range_op_handler::range_op_handler): Handle no type constructor.
22796         (integral_table::integral_table): Move integral only operators to...
22797         (range_op_table::initialize_integral_ops): Here.
22798         (pointer_table::pointer_table): Move pointer only operators to...
22799         (range_op_table::initialize_pointer_ops): Here.
22800         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
22801         (get_bool_state): Ditto.
22802         (empty_range_varying): Ditto.
22803         (relop_early_resolve): Ditto.
22804         (class range_op_table): Add new init methods for range types.
22805         (class integral_table): Move declaration to here.
22806         (class pointer_table): Move declaration to here.
22807         (class float_table): Move declaration to here.
22809 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22810             Richard Sandiford <richard.sandiford@arm.com>
22811             Richard Biener  <rguenther@suse.de>
22813         * doc/md.texi: Add SELECT_VL support.
22814         * internal-fn.def (SELECT_VL): Ditto.
22815         * optabs.def (OPTAB_D): Ditto.
22816         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
22817         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
22818         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
22819         (vectorizable_store): Ditto.
22820         (vectorizable_load): Ditto.
22821         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
22823 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
22825         PR ipa/109886
22826         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
22827         type as well.
22829 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
22831         * range-op.cc (range_cast): Move to...
22832         * range-op.h (range_cast): Here and add generic a version.
22834 2023-06-09  Marek Polacek  <polacek@redhat.com>
22836         PR c/39589
22837         PR c++/96868
22838         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
22839         warn about designated initializers in C only.
22841 2023-06-09  Andrew Pinski  <apinski@marvell.com>
22843         PR tree-optimization/97711
22844         PR tree-optimization/110155
22845         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
22846         ((zero_one != 0) ? z <op> y : y): Likewise.
22848 2023-06-09  Andrew Pinski  <apinski@marvell.com>
22850         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
22851         multiply rather than negation/bit_and.
22853 2023-06-09  Andrew Pinski  <apinski@marvell.com>
22855         * match.pd (`X & -Y -> X * Y`): Allow for truncation
22856         and the same type for unsigned types.
22858 2023-06-09  Andrew Pinski  <apinski@marvell.com>
22860         PR tree-optimization/110165
22861         PR tree-optimization/110166
22862         * match.pd (zero_one_valued_p): Don't accept
22863         signed 1-bit integers.
22865 2023-06-09  Richard Biener  <rguenther@suse.de>
22867         * match.pd (two conversions in a row): Use element_precision
22868         to DTRT for VECTOR_TYPE.
22870 2023-06-09  Pan Li  <pan2.li@intel.com>
22872         * config/riscv/riscv.md (enabled): Move to another place, and
22873         add fp_vector_disabled to the cond.
22874         (fp_vector_disabled): New attr defined for disabling fp.
22875         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
22877 2023-06-09  Pan Li  <pan2.li@intel.com>
22879         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
22880         literal to int.
22882 2023-06-09  liuhongt  <hongtao.liu@intel.com>
22884         PR target/110108
22885         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
22886         view_convert_expr mask to signed type when folding pblendvb
22887         builtins.
22889 2023-06-09  liuhongt  <hongtao.liu@intel.com>
22891         PR target/110108
22892         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
22893         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
22894         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
22895         TARGET_64BIT.
22896         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
22897         real codename for __builtin_ia32_pabs{b,w,d}.
22899 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
22901         * gimple-range-op.cc
22902         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
22903         (gimple_range_op_handler::maybe_builtin_call): Adjust.
22904         * gimple-range-op.h (operand1, operand2): Use m_operator.
22905         * range-op.cc (integral_table, pointer_table): Relocate.
22906         (get_op_handler): Rename from get_handler and handle all types.
22907         (range_op_handler::range_op_handler): Relocate.
22908         (range_op_handler::set_op_handler): Relocate and adjust.
22909         (range_op_handler::range_op_handler): Relocate.
22910         (dispatch_trio): New.
22911         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
22912         (range_op_handler::dispatch_kind): New.
22913         (range_op_handler::fold_range): Relocate and Use new dispatch value.
22914         (range_op_handler::op1_range): Ditto.
22915         (range_op_handler::op2_range): Ditto.
22916         (range_op_handler::lhs_op1_relation): Ditto.
22917         (range_op_handler::lhs_op2_relation): Ditto.
22918         (range_op_handler::op1_op2_relation): Ditto.
22919         (range_op_handler::set_op_handler): Use m_operator member.
22920         * range-op.h (range_op_handler::operator bool): Use m_operator.
22921         (range_op_handler::dispatch_kind): New.
22922         (range_op_handler::m_valid): Delete.
22923         (range_op_handler::m_int): Delete
22924         (range_op_handler::m_float): Delete
22925         (range_op_handler::m_operator): New.
22926         (range_op_table::operator[]): Relocate from .cc file.
22927         (range_op_table::set): Ditto.
22928         * value-range.h (class vrange): Make range_op_handler a friend.
22930 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
22932         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
22933         (cfn_pass_through_arg1): Adjust using statemenmt.
22934         (cfn_signbit): Change base class, adjust using statement.
22935         (cfn_copysign): Ditto.
22936         (cfn_sqrt): Ditto.
22937         (cfn_sincos): Ditto.
22938         * range-op-float.cc (fold_range): Change class to range_operator.
22939         (rv_fold): Ditto.
22940         (op1_range): Ditto
22941         (op2_range): Ditto
22942         (lhs_op1_relation): Ditto.
22943         (lhs_op2_relation): Ditto.
22944         (op1_op2_relation): Ditto.
22945         (foperator_*): Ditto.
22946         (class float_table): New.  Inherit from range_op_table.
22947         (floating_tree_table) Change to range_op_table pointer.
22948         (class floating_op_table): Delete.
22949         * range-op.cc (operator_equal): Adjust using statement.
22950         (operator_not_equal): Ditto.
22951         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
22952         (operator_minus, operator_cast): Ditto.
22953         (operator_bitwise_and, pointer_plus_operator): Ditto.
22954         (get_float_handle): Change return type.
22955         * range-op.h (range_operator_float): Delete.  Relocate all methods
22956         into class range_operator.
22957         (range_op_handler::m_float): Change type to range_operator.
22958         (floating_op_table): Delete.
22959         (floating_tree_table): Change type.
22961 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
22963         * range-op.cc (range_operator::fold_range): Call virtual routine.
22964         (range_operator::update_bitmask): New.
22965         (operator_equal::update_bitmask): New.
22966         (operator_not_equal::update_bitmask): New.
22967         (operator_lt::update_bitmask): New.
22968         (operator_le::update_bitmask): New.
22969         (operator_gt::update_bitmask): New.
22970         (operator_ge::update_bitmask): New.
22971         (operator_ge::update_bitmask): New.
22972         (operator_plus::update_bitmask): New.
22973         (operator_minus::update_bitmask): New.
22974         (operator_pointer_diff::update_bitmask): New.
22975         (operator_min::update_bitmask): New.
22976         (operator_max::update_bitmask): New.
22977         (operator_mult::update_bitmask): New.
22978         (operator_div:operator_div):New.
22979         (operator_div::update_bitmask): New.
22980         (operator_div::m_code): New member.
22981         (operator_exact_divide::operator_exact_divide): New constructor.
22982         (operator_lshift::update_bitmask): New.
22983         (operator_rshift::update_bitmask): New.
22984         (operator_bitwise_and::update_bitmask): New.
22985         (operator_bitwise_or::update_bitmask): New.
22986         (operator_bitwise_xor::update_bitmask): New.
22987         (operator_trunc_mod::update_bitmask): New.
22988         (op_ident, op_unknown, op_ptr_min_max): New.
22989         (op_nop, op_convert): Delete.
22990         (op_ssa, op_paren, op_obj_type): Delete.
22991         (op_realpart, op_imagpart): Delete.
22992         (op_ptr_min, op_ptr_max): Delete.
22993         (pointer_plus_operator:update_bitmask): New.
22994         (range_op_table::set): Do not use m_code.
22995         (integral_table::integral_table): Adjust to single instances.
22996         * range-op.h (range_operator::range_operator): Delete.
22997         (range_operator::m_code): Delete.
22998         (range_operator::update_bitmask): New.
23000 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
23002         * range-op-float.cc (range_operator_float::fold_range): Return
23003         NAN of the result type.
23005 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
23007         * optabs.cc (expand_ffs): Add forward declaration.
23008         (expand_doubleword_clz): Rename to ...
23009         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
23010         handle also doubleword CTZ and FFS in addition to CLZ.
23011         (expand_unop): Adjust caller.  Also call it for doubleword
23012         ctz_optab and ffs_optab.
23014 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
23016         PR target/110152
23017         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
23018         n_words == 2 recurse with mmx_ok as first argument rather than false.
23020 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
23022         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
23023         avoid sign extension/undefined behaviour when setting each bit.
23025 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
23026             Uros Bizjak  <ubizjak@gmail.com>
23028         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
23029         Use new x86_stc instruction when the carry flag must be set.
23030         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
23031         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
23032         * config/i386/i386.h (TARGET_SLOW_STC): New define.
23033         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
23034         (x86_stc): New define_insn.
23035         (define_peephole2): Convert x86_stc into alternate implementation
23036         on pentium4 without -Os when a QImode register is available.
23037         (*x86_cmc): New define_insn.
23038         (define_peephole2): Convert *x86_cmc into alternate implementation
23039         on pentium4 without -Os when a QImode register is available.
23040         (*setccc): New define_insn_and_split for a no-op CCCmode move.
23041         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
23042         recognize (and eliminate) the carry flag being copied to itself.
23043         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
23044         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
23046 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23048         * match.pd: Fix comment for the
23049         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
23051 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
23052             Jeff Law   <jlaw@ventanamicro.com>
23054         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
23055         (rotrsi3_sext): Expose generator.
23056         (rotlsi3 pattern): Hide generator.
23057         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
23058         declaration.
23059         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
23060         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
23061         (mulsi3, <optab>si3): Likewise.
23062         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
23063         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
23064         (<u>mulsidi3): Likewise.
23065         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
23066         (mulsi3_extended, <optab>si3_extended): Likewise.
23067         (splitter for shadd feeding divison): Update RTL pattern to account
23068         for changes in how 32 bit ops are expanded for TARGET_64BIT.
23069         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
23071 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
23073         PR target/109725
23074         * config/riscv/riscv.cc (riscv_print_operand): Calculate
23075         memmodel only when it is valid.
23077 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
23079         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
23080         for constant element of a vector.
23082 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
23084         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
23085         instead compare tree_nonzero_bits <= 1U rather than just == 1.
23087 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
23089         PR target/110132
23090         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
23091         New. Use it ...
23092         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
23093         names for builtins.
23094         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
23095         setup if in_lto_p, just like we do for SVE.
23096         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
23097         (__arm_st64b): Delete.
23098         (__arm_st64bv): Delete.
23099         (__arm_st64bv0): Delete.
23101 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
23103         PR target/110100
23104         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
23105         Use input operand for the destination address.
23106         * config/aarch64/aarch64.md (st64b): Fix constraint on address
23107         operand.
23109 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
23111         PR target/110100
23112         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
23113         Replace eight consecutive spaces with tabs.
23114         (aarch64_init_ls64_builtins): Likewise.
23115         (aarch64_expand_builtin_ls64): Likewise.
23116         * config/aarch64/aarch64.md (ld64b): Likewise.
23117         (st64b): Likewise.
23118         (st64bv): Likewise
23119         (st64bv0): Likewise.
23121 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
23123         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
23124         offset table pseudo to a general reg subset.
23126 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23128         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
23129         Rename to...
23130         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
23131         with RTL codes.
23132         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
23133         (aarch64_sqxtun2<mode>_le): Likewise.
23134         (aarch64_sqxtun2<mode>_be): Likewise.
23135         (aarch64_sqxtun2<mode>): Adjust for the above.
23136         (aarch64_sqmovun<mode>): New define_expand.
23137         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
23138         (half_mask): New mode attribute.
23139         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
23140         New predicate.
23142 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23144         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
23145         Reimplement as...
23146         (aarch64_addp<mode>_insn): ... This...
23147         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
23148         (aarch64_addp<mode>): New define_expand.
23150 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23152         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
23153         * config/riscv/riscv-v.cc
23154         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
23155         handling.
23156         (rvv_builder::single_step_npatterns_p): New function.
23157         (rvv_builder::npatterns_all_equal_p): Ditto.
23158         (const_vec_all_in_range_p): Support POLY handling.
23159         (gen_const_vector_dup): Ditto.
23160         (emit_vlmax_gather_insn): Add vrgatherei16.
23161         (emit_vlmax_masked_gather_mu_insn): Ditto.
23162         (expand_const_vector): Add VLA SLP const vector support.
23163         (expand_vec_perm): Support POLY.
23164         (struct expand_vec_perm_d): New struct.
23165         (shuffle_generic_patterns): New function.
23166         (expand_vec_perm_const_1): Ditto.
23167         (expand_vec_perm_const): Ditto.
23168         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
23169         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
23171 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23173         PR middle-end/110117
23174         * expr.cc (expand_single_bit_test): Handle
23175         const_int from expand_expr.
23177 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23179         * expr.cc (do_store_flag): Rearrange the
23180         TER code so that it overrides the nonzero bits
23181         info if we had `a & POW2`.
23183 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23185         PR tree-optimization/110134
23186         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
23187         types.
23188         (-A CMP CST -> B CMP (-CST)): Likewise.
23190 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23192         PR tree-optimization/89263
23193         PR tree-optimization/99069
23194         PR tree-optimization/20083
23195         PR tree-optimization/94898
23196         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
23197         one of the operands are constant.
23199 2023-06-07  Andrew Pinski  <apinski@marvell.com>
23201         * match.pd (zero_one_valued_p): Match 0 integer constant
23202         too.
23204 2023-06-07  Pan Li  <pan2.li@intel.com>
23206         * config/riscv/riscv-vector-builtins-types.def
23207         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
23208         (vfloat32m1_t): Ditto.
23209         (vfloat32m2_t): Ditto.
23210         (vfloat32m4_t): Ditto.
23211         (vfloat32m8_t): Ditto.
23212         (vint16mf4_t): Ditto.
23213         (vint16mf2_t): Ditto.
23214         (vint16m1_t): Ditto.
23215         (vint16m2_t): Ditto.
23216         (vint16m4_t): Ditto.
23217         (vint16m8_t): Ditto.
23218         (vuint16mf4_t): Ditto.
23219         (vuint16mf2_t): Ditto.
23220         (vuint16m1_t): Ditto.
23221         (vuint16m2_t): Ditto.
23222         (vuint16m4_t): Ditto.
23223         (vuint16m8_t): Ditto.
23224         (vint32mf2_t): Ditto.
23225         (vint32m1_t): Ditto.
23226         (vint32m2_t): Ditto.
23227         (vint32m4_t): Ditto.
23228         (vint32m8_t): Ditto.
23229         (vuint32mf2_t): Ditto.
23230         (vuint32m1_t): Ditto.
23231         (vuint32m2_t): Ditto.
23232         (vuint32m4_t): Ditto.
23233         (vuint32m8_t): Ditto.
23235 2023-06-07  Jason Merrill  <jason@redhat.com>
23237         PR c++/58487
23238         * doc/invoke.texi: Document it.
23240 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
23242         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
23243         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
23244         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
23245         NOT (BITREVERSE x) as BITREVERSE (NOT x).
23246         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
23247         Optimize PARITY (BITREVERSE x) as PARITY x.
23248         Optimize BITREVERSE (BITREVERSE x) as x.
23249         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
23250         BITREVERSE of a constant integer at compile-time.
23251         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
23252         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
23253         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
23254         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
23255         Optimize COPYSIGN (x, ABS y) as ABS x.
23256         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
23257         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
23258         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
23259         arguments at compile-time.
23261 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
23263         * rtl.h (function_invariant_p): Change return type from int to bool.
23264         * reload1.cc (function_invariant_p): Change return type from
23265         int to bool and adjust function body accordingly.
23267 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23269         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
23270         (*single_<optab>mult_plus<mode>): Ditto.
23271         (*double_<optab>mult_plus<mode>): Ditto.
23272         (*sign_zero_extend_fma): Ditto.
23273         (*zero_sign_extend_fma): Ditto.
23274         * config/riscv/riscv-protos.h (enum insn_type): New enum.
23276 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
23277             Tobias Burnus  <tobias@codesourcery.com>
23279         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
23280         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
23281         set.
23282         (omp_get_attachment): Handle map clauses with 'present' modifier.
23283         (omp_group_base): Likewise.
23284         (gimplify_scan_omp_clauses): Reorder present maps to come first.
23285         Set GOVD flags for present defaultmaps.
23286         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
23287         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
23288         clauses.
23289         (lower_omp_target): Handle map clauses with 'present' modifier.
23290         Handle 'to' and 'from' clauses with 'present'.
23291         * tree-core.h (enum omp_clause_defaultmap_kind): Add
23292         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
23293         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
23294         'from' clauses with 'present' modifier.  Handle present defaultmap.
23295         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
23297 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
23299         * config/rs6000/genfusion.pl: Delete some dead code.
23301 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
23303         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
23304         split out from...
23305         (gen_ld_cmpi_p10): ... this.
23307 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
23309         PR target/106907
23310         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
23311         duplicate expression.
23313 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23315         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
23316         Handle unsigned reduc_plus_scal_ builtins.
23317         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
23318         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
23319         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
23320         __builtin_aarch64_reduc_plus_scal_v2di.
23321         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
23323 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23325         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
23326         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
23327         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
23329 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23331         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
23332         (aarch64_shrn<mode>_insn_be): Delete.
23333         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
23334         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
23335         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
23336         (aarch64_rshrn<mode>_insn_le): Delete.
23337         (aarch64_rshrn<mode>_insn_be): Delete.
23338         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
23339         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
23341 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23343         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
23344         Define prototype.
23345         (aarch64_pars_overlap_p): Likewise.
23346         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
23347         Express in terms of UNSPEC_ADDV.
23348         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
23349         (*aarch64_<su>addlv<mode>_reduction): Define.
23350         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
23351         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
23352         (aarch64_pars_overlap_p): Likewise.
23353         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
23354         (VQUADW): New mode attribute.
23355         (VWIDE2X_S): Likewise.
23356         (USADDLV): Delete.
23357         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
23358         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
23360 2023-06-06  Richard Biener  <rguenther@suse.de>
23362         PR middle-end/110055
23363         * gimplify.cc (gimplify_target_expr): Do not emit
23364         CLOBBERs for variables which have static storage duration
23365         after gimplifying their initializers.
23367 2023-06-06  Richard Biener  <rguenther@suse.de>
23369         PR tree-optimization/109143
23370         * tree-ssa-structalias.cc (solution_set_expand): Avoid
23371         one bitmap iteration and optimize bit range setting.
23373 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
23375         PR bootstrap/110120
23376         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
23377         XVECEXP, not XEXP, to access first item of a PARALLEL.
23379 2023-06-06  Pan Li  <pan2.li@intel.com>
23381         * config/riscv/riscv-vector-builtins-types.def
23382         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
23383         (vfloat16mf2_t): Likewise.
23384         (vfloat16m1_t): Likewise.
23385         (vfloat16m2_t): Likewise.
23386         (vfloat16m4_t): Likewise.
23387         (vfloat16m8_t): Likewise.
23388         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
23389         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
23391 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
23393         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
23394         for cfi reg/mem machmode
23395         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
23397 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
23399         * config/riscv/vector-iterators.md:
23400         Fix 'REQUIREMENT' for machine_mode 'MODE'.
23401         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
23402         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
23403         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
23405 2023-06-06  Pan Li  <pan2.li@intel.com>
23407         * config/riscv/vector-iterators.md: Fix typo in mode attr.
23409 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
23410             Joel Hutton  <joel.hutton@arm.com>
23412         * doc/generic.texi: Remove old tree codes.
23413         * expr.cc (expand_expr_real_2): Remove old tree code cases.
23414         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
23415         * optabs-tree.cc (optab_for_tree_code): Likewise.
23416         (supportable_half_widening_operation): Likewise.
23417         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
23418         * tree-inline.cc (estimate_operator_cost): Likewise.
23419         (op_symbol_code): Likewise.
23420         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
23421         (vect_analyze_data_ref_accesses): Likewise.
23422         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
23423         * cfgexpand.cc (expand_debug_expr): Likewise.
23424         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
23425         (supportable_widening_operation): Likewise.
23426         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
23427         Likewise.
23428         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
23429         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
23430         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
23431         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
23432         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
23433         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
23434         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
23435         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
23437 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
23438             Joel Hutton  <joel.hutton@arm.com>
23439             Tamar Christina  <tamar.christina@arm.com>
23441         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
23442         this ...
23443         (vec_widen_<su>add_lo_<mode>): ... to this.
23444         (vec_widen_<su>addl_hi_<mode>): Rename this ...
23445         (vec_widen_<su>add_hi_<mode>): ... to this.
23446         (vec_widen_<su>subl_lo_<mode>): Rename this ...
23447         (vec_widen_<su>sub_lo_<mode>): ... to this.
23448         (vec_widen_<su>subl_hi_<mode>): Rename this ...
23449         (vec_widen_<su>sub_hi_<mode>): ...to this.
23450         * doc/generic.texi: Document new IFN codes.
23451         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
23452         (commutative_binary_fn_p): Add widen_plus fn's.
23453         (widening_fn_p): New function.
23454         (narrowing_fn_p): New function.
23455         (direct_internal_fn_optab): Change visibility.
23456         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
23457         internal_fn that expands into multiple internal_fns for widening.
23458         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
23459         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
23460         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
23461         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
23462         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
23463         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
23464         (lookup_hilo_internal_fn): Likewise.
23465         (widening_fn_p): Likewise.
23466         (Narrowing_fn_p): Likewise.
23467         * optabs.cc (commutative_optab_p): Add widening plus optabs.
23468         * optabs.def (OPTAB_D): Define widen add, sub optabs.
23469         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
23470         patterns with a hi/lo or even/odd split.
23471         (vect_recog_sad_pattern): Refactor to use new IFN codes.
23472         (vect_recog_widen_plus_pattern): Likewise.
23473         (vect_recog_widen_minus_pattern): Likewise.
23474         (vect_recog_average_pattern): Likewise.
23475         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
23476         _HILO IFNs.
23477         (supportable_widening_operation): Likewise.
23478         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
23480 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
23481             Joel Hutton  <joel.hutton@arm.com>
23483         * tree-vect-patterns.cc: Add include for gimple-iterator.
23484         (vect_recog_widen_op_pattern): Refactor to use code_helper.
23485         (vect_gimple_build): New function.
23486         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
23487         code_helper.
23488         (vectorizable_call): Likewise.
23489         (vect_gen_widened_results_half): Likewise.
23490         (vect_create_vectorized_demotion_stmts): Likewise.
23491         (vect_create_vectorized_promotion_stmts): Likewise.
23492         (vect_create_half_widening_stmts): Likewise.
23493         (vectorizable_conversion): Likewise.
23494         (supportable_widening_operation): Likewise.
23495         (supportable_narrowing_operation): Likewise.
23496         * tree-vectorizer.h (supportable_widening_operation): Change
23497         prototype to use code_helper.
23498         (supportable_narrowing_operation): Likewise.
23499         (vect_gimple_build): New function prototype.
23500         * tree.h (code_helper::safe_as_tree_code): New function.
23501         (code_helper::safe_as_fn_code): New function.
23503 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
23505         * wide-int.cc (wi::bitreverse_large): New function implementing
23506         bit reversal of an integer.
23507         * wide-int.h (wi::bitreverse): New (template) function prototype.
23508         (bitreverse_large): Prototype helper function/implementation.
23509         (wi::bitreverse): New template wrapper around bitreverse_large.
23511 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
23513         * rtl.h (print_rtl_single): Change return type from int to void.
23514         (print_rtl_single_with_indent): Ditto.
23515         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
23516         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
23517         (rtx_writer::print_rtx_operand_code_0): Ditto.
23518         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
23519         (rtx_writer::print_rtx_operand_code_i): Ditto.
23520         (rtx_writer::print_rtx_operand_code_u): Ditto.
23521         (rtx_writer::print_rtx_operand): Ditto.
23522         (rtx_writer::print_rtx): Ditto.
23523         (rtx_writer::finish_directive): Ditto.
23524         (print_rtl_single): Change return type from int to void
23525         and adjust function body accordingly.
23526         (rtx_writer::print_rtl_single_with_indent): Ditto.
23528 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
23530         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
23531         (reg_class_subset_p): Ditto.
23532         * reginfo.cc (reg_classes_intersect_p): Ditto.
23533         (reg_class_subset_p): Ditto.
23535 2023-06-05  Pan Li  <pan2.li@intel.com>
23537         * config/riscv/riscv-vector-builtins-types.def
23538         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
23539         (vfloat32m1_t): Ditto.
23540         (vfloat32m2_t): Ditto.
23541         (vfloat32m4_t): Ditto.
23542         (vfloat32m8_t): Ditto.
23543         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
23544         (vint16mf2_t): Ditto.
23545         (vint16m1_t): Ditto.
23546         (vint16m2_t): Ditto.
23547         (vint16m4_t): Ditto.
23548         (vint16m8_t): Ditto.
23549         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
23550         (vuint16mf2_t): Ditto.
23551         (vuint16m1_t): Ditto.
23552         (vuint16m2_t): Ditto.
23553         (vuint16m4_t): Ditto.
23554         (vuint16m8_t): Ditto.
23555         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
23556         (vint32m1_t): Ditto.
23557         (vint32m2_t): Ditto.
23558         (vint32m4_t): Ditto.
23559         (vint32m8_t): Ditto.
23560         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
23561         (vuint32m1_t): Ditto.
23562         (vuint32m2_t): Ditto.
23563         (vuint32m4_t): Ditto.
23564         (vuint32m8_t): Ditto.
23565         * config/riscv/vector-iterators.md: Add FP=16 support for V,
23566         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
23568 2023-06-05  Andrew Pinski  <apinski@marvell.com>
23570         PR bootstrap/110085
23571         * Makefile.in (clean): Remove the removing of
23572         MULTILIB_DIR/MULTILIB_OPTIONS directories.
23574 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
23576         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
23577         prototype.
23578         * config/mips/mips.cc (speculation_barrier_libfunc): New static
23579         variable.
23580         (mips_init_libfuncs): Initialize it.
23581         (mips_emit_speculation_barrier): New function.
23582         * config/mips/mips.md (speculation_barrier): Call
23583         mips_emit_speculation_barrier.
23585 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23587         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
23588         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
23589         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
23590         (rvv_builder::get_merged_repeating_sequence): Ditto.
23591         (rvv_builder::get_merge_scalar_mask): Ditto.
23592         (emit_scalar_move_insn): Ditto.
23593         (emit_vlmax_integer_move_insn): Ditto.
23594         (emit_nonvlmax_integer_move_insn): Ditto.
23595         (emit_vlmax_gather_insn): Ditto.
23596         (emit_vlmax_masked_gather_mu_insn): Ditto.
23597         (get_repeating_sequence_dup_machine_mode): Ditto.
23599 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23601         * config/riscv/autovec.md: Split arguments.
23602         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
23603         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
23605 2023-06-04  Andrew Pinski  <apinski@marvell.com>
23607         * expr.cc (do_store_flag): Improve for single bit testing
23608         not against zero but against that single bit.
23610 2023-06-04  Andrew Pinski  <apinski@marvell.com>
23612         * expr.cc (do_store_flag): Extend the one bit checking case
23613         to handle the case where we don't have an and but rather still
23614         one bit is known to be non-zero.
23616 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
23618         * config/h8300/constraints.md (Zz): Make this a normal
23619         constraint.
23620         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
23621         * config/h8300/logical.md (H8/SX bit patterns): Remove.
23623 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23625         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
23626         New insn_and_split patterns.
23628 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23630         PR target/110109
23631         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
23632         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
23633         (@vlmul_extx4<mode>): Ditto.
23634         (@vlmul_extx8<mode>): Ditto.
23635         (@vlmul_extx16<mode>): Ditto.
23636         (@vlmul_extx32<mode>): Ditto.
23637         (@vlmul_extx64<mode>): Ditto.
23638         (*vlmul_extx2<mode>): Ditto.
23639         (*vlmul_extx4<mode>): Ditto.
23640         (*vlmul_extx8<mode>): Ditto.
23641         (*vlmul_extx16<mode>): Ditto.
23642         (*vlmul_extx32<mode>): Ditto.
23643         (*vlmul_extx64<mode>): Ditto.
23645 2023-06-04  Pan Li  <pan2.li@intel.com>
23647         * config/riscv/riscv-vector-builtins-types.def
23648         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
23649         (vfloat32m1_t): Likewise.
23650         (vfloat32m2_t): Likewise.
23651         (vfloat32m4_t): Likewise.
23652         (vfloat32m8_t): Likewise.
23653         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
23654         * config/riscv/vector-iterators.md: Add single to half machine
23655         mode conversion.
23657 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23659         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
23660         (*n<optab><mode>): Ditto.
23661         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
23662         (*n<optab><mode>): Ditto.
23663         * config/riscv/vector.md: Ditto.
23665 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
23667         PR target/110083
23668         * config/i386/i386-features.cc (scalar_chain::convert_compare):
23669         Update or delete REG_EQUAL notes, converting CONST_INT and
23670         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
23672 2023-06-04  Jason Merrill  <jason@redhat.com>
23674         PR c++/97720
23675         * tree-eh.cc (lower_resx): Pass the exception pointer to the
23676         failure_decl.
23677         * except.h: Tweak comment.
23679 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
23681         * postreload.cc (move2add_use_add2_insn): Handle
23682         trivial single_sets.  Rename variable PAT to SET.
23683         (move2add_use_add3_insn, reload_cse_move2add): Similar.
23685 2023-06-04  Pan Li  <pan2.li@intel.com>
23687         * config/riscv/riscv-vector-builtins-types.def
23688         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
23689         (vfloat16mf2_t): Likewise.
23690         (vfloat16m1_t): Likewise.
23691         (vfloat16m2_t): Likewise.
23692         (vfloat16m4_t): Likewise.
23693         (vfloat16m8_t): Likewise.
23694         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
23695         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
23696         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
23697         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
23698         vlmul and ratio.
23700 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
23702         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
23703         correct offset.
23705 2023-06-03  Die Li  <lidie@eswincomputing.com>
23707         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
23709 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23711         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
23713 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23715         * config/riscv/vector.md: Add vector-opt.md.
23716         * config/riscv/autovec-opt.md: New file.
23718 2023-06-03  liuhongt  <hongtao.liu@intel.com>
23720         PR tree-optimization/110067
23721         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
23722         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
23724 2023-06-03  liuhongt  <hongtao.liu@intel.com>
23726         PR target/92658
23727         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
23728         (truncv2si<mode>2): Ditto.
23730 2023-06-02  Andrew Pinski  <apinski@marvell.com>
23732         PR rtl-optimization/102733
23733         * dse.cc (store_info): Add addrspace field.
23734         (record_store): Record the address space
23735         and check to make sure they are the same.
23737 2023-06-02  Andrew Pinski  <apinski@marvell.com>
23739         PR rtl-optimization/110042
23740         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
23741         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
23743 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
23745         PR target/110044
23746         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
23747         Make sure that we do not have a cap on field alignment before altering
23748         the struct layout based on the type alignment of the first entry.
23750 2023-06-02  David Faust  <david.faust@oracle.com>
23752         PR debug/110073
23753         * btfout.cc (btf_absolute_func_id): New function.
23754         (btf_asm_func_type): Call it here.  Change index parameter from
23755         size_t to ctf_id_t.  Use PRIu64 formatter.
23757 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
23759         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
23760         (btf_asm_datasec_type): Likewise.
23762 2023-06-02  Carl Love  <cel@us.ibm.com>
23764         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
23765         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
23767 2023-06-02  Jason Merrill  <jason@redhat.com>
23769         PR c++/110070
23770         PR c++/105838
23771         * tree.h (DECL_MERGEABLE): New.
23772         * tree-core.h (struct tree_decl_common): Mention it.
23773         * gimplify.cc (gimplify_init_constructor): Check it.
23774         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
23775         * varasm.cc (categorize_decl_for_section): Likewise.
23777 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
23779         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
23780         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
23781         (stack_regs_mentioned_p): Change return type from int to bool
23782         and adjust function body accordingly.
23783         (stack_regs_mentioned): Ditto.
23784         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
23785         variable to bool.
23786         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
23787         (swap_rtx_condition_1): Change return type from int to bool
23788         and adjust function body accordingly.  Change "r" variable to bool.
23789         (swap_rtx_condition): Change return type from int to bool
23790         and adjust function body accordingly.
23791         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
23792         (subst_stack_regs): Ditto.
23793         (convert_regs_entry): Change return type from int to bool and adjust
23794         function body accordingly.  Change "inserted" variable to bool.
23795         (convert_regs_1): Recode handling of control_flow_insn_deleted.
23796         (convert_regs_2): Recode handling of cfg_altered.
23797         (convert_regs): Ditto.  Change "inserted" variable to bool.
23799 2023-06-02  Jason Merrill  <jason@redhat.com>
23801         PR c++/95226
23802         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
23803         (initializer_constant_valid_p_1): Compare float precision.
23805 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
23807         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
23808         semantics.
23810 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23812         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
23813         (vect_set_loop_condition_partial_vectors): Ditto.
23815 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
23817         PR target/110088
23818         * config/avr/avr.md: Add an RTL peephole to optimize operations on
23819         non-LD_REGS after a move from LD_REGS.
23820         (piaop): New code iterator.
23822 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
23824         PR testsuite/66005
23825         * doc/install.texi: Document (optional) Perl usage for parallel
23826         testing of libgomp.
23828 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
23830         PR bootstrap/82856
23831         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
23832         later)".
23834 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23835             KuanLin Chen  <best124612@gmail.com>
23837         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
23838         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
23840 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23842         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
23844 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23846         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
23848 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23850         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
23851         __RISCV_ prefix.
23852         (DEF_RVV_FRM_ENUM): Ditto.
23854 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23856         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
23857         intrinsic API expander
23858         * config/riscv/vector.md
23859         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
23860         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
23861         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
23863 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23865         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
23866         * config/riscv/predicates.md (vector_perm_operand): New predicate.
23867         * config/riscv/riscv-protos.h (enum insn_type): New enum.
23868         (expand_vec_perm): New function.
23869         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
23870         (gen_const_vector_dup): Ditto.
23871         (emit_vlmax_gather_insn): Ditto.
23872         (emit_vlmax_masked_gather_mu_insn): Ditto.
23873         (expand_vec_perm): Ditto.
23875 2023-06-01  Jason Merrill  <jason@redhat.com>
23877         * doc/invoke.texi (-Wpedantic): Improve clarity.
23879 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
23881         * rtl.h (exp_equiv_p): Change return type from int to bool.
23882         * cse.cc (mention_regs): Change return type from int to bool
23883         and adjust function body accordingly.
23884         (exp_equiv_p): Ditto.
23885         (insert_regs): Ditto. Change "modified" function argument to bool
23886         and update usage accordingly.
23887         (record_jump_cond): Remove always zero "reversed_nonequality"
23888         function argument and update usage accordingly.
23889         (fold_rtx): Change "changed" variable to bool.
23890         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
23891         (is_dead_reg): Change return type from int to bool.
23893 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23895         * config/xtensa/xtensa.md (adddi3, subdi3):
23896         New RTL generation patterns implemented according to the instruc-
23897         tion idioms described in the Xtensa ISA reference manual (p. 600).
23899 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
23900             Uros Bizjak  <ubizjak@gmail.com>
23902         PR target/109973
23903         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
23904         CODE_for_sse4_1_ptestzv2di.
23905         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
23906         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
23907         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
23908         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
23909         when expanding UNSPEC_PTEST to compare against zero.
23910         * config/i386/i386-features.cc (scalar_chain::convert_compare):
23911         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
23912         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
23913         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
23914         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
23915         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
23916         check for suitable matching modes for the UNSPEC_PTEST pattern.
23917         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
23918         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
23919         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
23920         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
23921         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
23922         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
23923         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
23924         current behavior.
23925         (*ptest<mode>_and): Specify CCZ to only perform this optimization
23926         when only the Z flag is required.
23928 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
23930         PR target/109954
23931         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
23933 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23935         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
23936         Add =r,m and =r,m alternatives.
23937         (load_pair<DREG:mode><DREG2:mode>): Likewise.
23938         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
23940 2023-06-01  Pan Li  <pan2.li@intel.com>
23942         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
23943         and zvfh.
23944         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
23945         (main): Disable FP16 tuple.
23946         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
23947         (TARGET_VECTOR_ELEN_FP_16): Ditto.
23948         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
23949         Add FP16.
23950         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
23951         (vfloat16mf2_t): Ditto.
23952         (vfloat16m1_t): Ditto.
23953         (vfloat16m2_t): Ditto.
23954         (vfloat16m4_t): Ditto.
23955         (vfloat16m8_t): Ditto.
23956         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
23957         New macro.
23958         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
23959         machine mode based on TARGET_VECTOR_ELEN_FP_16.
23961 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23963         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
23964         (DEF_RVV_FRM_ENUM): New macro.
23965         (handle_pragma_vector): Add FRM enum
23966         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
23967         (RNE): Ditto.
23968         (RTZ): Ditto.
23969         (RDN): Ditto.
23970         (RUP): Ditto.
23971         (RMM): Ditto.
23973 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
23974             Richard Sandiford  <richard.sandiford@arm.com>
23976         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
23977         Update call to wi::bswap.
23978         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
23979         Update call to wi::bswap.
23980         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
23981         Update calls to wi::bswap.
23982         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
23983         (wi::bswap_large): New function, with revised API.
23984         * wide-int.h (wi::bswap): New (template) function prototype.
23985         (wide_int_storage::bswap): Remove method.
23986         (sext_large, zext_large): Consistent indentation/line wrapping.
23987         (bswap_large): Prototype helper function containing implementation.
23988         (wi::bswap): New template wrapper around bswap_large.
23990 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23992         PR target/99195
23993         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
23994         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
23995         (usdot_prod<vsi2qi>): Rename to...
23996         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
23997         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
23998         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
23999         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
24000         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
24001         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
24002         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
24003         ... This.
24005 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24007         PR target/99195
24008         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
24009         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
24010         (aarch64_sq<r>dmulh_n<mode>): Rename to...
24011         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
24012         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
24013         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
24014         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
24015         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
24016         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
24017         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
24018         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
24019         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
24020         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
24021         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
24023 2023-05-31  David Faust  <david.faust@oracle.com>
24025         * btfout.cc (btf_kind_names): New.
24026         (btf_kind_name): New.
24027         (btf_absolute_var_id): New utility function.
24028         (btf_relative_var_id): Likewise.
24029         (btf_relative_func_id): Likewise.
24030         (btf_absolute_datasec_id): Likewise.
24031         (btf_asm_type_ref): New.
24032         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
24033         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
24034         (btf_asm_varent): Likewise.
24035         (btf_asm_func_arg): Likewise.
24036         (btf_asm_datasec_entry): Likewise.
24037         (btf_asm_datasec_type): Likewise.
24038         (btf_asm_func_type): Likewise. Add index parameter.
24039         (btf_asm_enum_const): Likewise.
24040         (btf_asm_sou_member): Likewise.
24041         (output_btf_vars): Update btf_asm_* call accordingly.
24042         (output_asm_btf_sou_fields): Likewise.
24043         (output_asm_btf_enum_list): Likewise.
24044         (output_asm_btf_func_args_list): Likewise.
24045         (output_asm_btf_vlen_bytes): Likewise.
24046         (output_btf_func_types): Add ctf_container_ref parameter.
24047         Pass it to btf_asm_func_type.
24048         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
24049         (btf_output): Update output_btf_func_types call similarly.
24051 2023-05-31  David Faust  <david.faust@oracle.com>
24053         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
24054         and BTF_KIND_FWD which do not use the size/type field at all.
24056 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
24058         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
24059         (active_insn_p): Ditto.
24060         (in_sequence_p): Ditto.
24061         (unshare_all_rtl): Change return type from int to void.
24062         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
24063         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
24064         and adjust function body accordingly.
24065         (mem_expr_equal_p): Ditto.
24066         (unshare_all_rtl): Change return type from int to void
24067         and adjust function body accordingly.
24068         (verify_rtx_sharing): Remove unneeded return.
24069         (active_insn_p): Change return type from int to bool
24070         and adjust function body accordingly.
24071         (in_sequence_p): Ditto.
24073 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
24075         * rtl.h (true_dependence): Change return type from int to bool.
24076         (canon_true_dependence): Ditto.
24077         (read_dependence): Ditto.
24078         (anti_dependence): Ditto.
24079         (canon_anti_dependence): Ditto.
24080         (output_dependence): Ditto.
24081         (canon_output_dependence): Ditto.
24082         (may_alias_p): Ditto.
24083         * alias.h (alias_sets_conflict_p): Ditto.
24084         (alias_sets_must_conflict_p): Ditto.
24085         (objects_must_conflict_p): Ditto.
24086         (nonoverlapping_memrefs_p): Ditto.
24087         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
24088         (record_set): Ditto.
24089         (base_alias_check): Ditto.
24090         (find_base_value): Ditto.
24091         (mems_in_disjoint_alias_sets_p): Ditto.
24092         (get_alias_set_entry): Ditto.
24093         (decl_for_component_ref): Ditto.
24094         (write_dependence_p): Ditto.
24095         (memory_modified_1): Ditto.
24096         (mems_in_disjoint_alias_set_p): Change return type from int to bool
24097         and adjust function body accordingly.
24098         (alias_sets_conflict_p): Ditto.
24099         (alias_sets_must_conflict_p): Ditto.
24100         (objects_must_conflict_p): Ditto.
24101         (rtx_equal_for_memref_p): Ditto.
24102         (base_alias_check): Ditto.
24103         (read_dependence): Ditto.
24104         (nonoverlapping_memrefs_p): Ditto.
24105         (true_dependence_1): Ditto.
24106         (true_dependence): Ditto.
24107         (canon_true_dependence): Ditto.
24108         (write_dependence_p): Ditto.
24109         (anti_dependence): Ditto.
24110         (canon_anti_dependence): Ditto.
24111         (output_dependence): Ditto.
24112         (canon_output_dependence): Ditto.
24113         (may_alias_p): Ditto.
24114         (init_alias_analysis): Change "changed" variable to bool.
24116 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24118         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
24119         expand into define_insn_and_split.
24121 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24123         * config/riscv/vector.md: Remove FRM.
24125 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24127         * config/riscv/vector.md: Remove FRM.
24129 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24131         * config/riscv/vector.md: Remove FRM.
24133 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
24135         PR target/110039
24136         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
24137         pattern.
24139 2023-05-31  Richard Biener  <rguenther@suse.de>
24141         PR ipa/109983
24142         PR tree-optimization/109143
24143         * tree-ssa-structalias.cc (struct topo_info): Remove.
24144         (init_topo_info): Likewise.
24145         (free_topo_info): Likewise.
24146         (compute_topo_order): Simplify API, put the component
24147         with ESCAPED last so it's processed first.
24148         (topo_visit): Adjust.
24149         (solve_graph): Likewise.
24151 2023-05-31  Richard Biener  <rguenther@suse.de>
24153         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
24154         New.
24155         (add_graph_edge): Count redundant edges we avoid to create.
24156         (dump_sa_stats): Dump them.
24157         (ipa_pta_execute): Do not dump generating constraints when
24158         we are not dumping them.
24160 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24162         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
24163         output template to avoid explicit switch on which_alternative.
24164         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
24165         (and<mode>3): Likewise.
24166         (ior<mode>3): Likewise.
24167         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
24169 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
24171         * config/xtensa/predicates.md (xtensa_bit_join_operator):
24172         New predicate.
24173         * config/xtensa/xtensa.md (ior_op): Remove.
24174         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
24175         insn_and_split pattern of the same name to express and capture
24176         the bit-combining operation with both sides swapped.
24177         In addition, replace use of code iterator with new operator
24178         predicate.
24179         (*shlrd_const, *shlrd_per_byte):
24180         Likewise regarding the code iterator.
24182 2023-05-31  Cui, Lili  <lili.cui@intel.com>
24184         PR tree-optimization/110038
24185         * params.opt: Add a limit on tree-reassoc-width.
24186         * tree-ssa-reassoc.cc
24187         (rewrite_expr_tree_parallel): Add width limit.
24189 2023-05-31  Pan Li  <pan2.li@intel.com>
24191         * common/config/riscv/riscv-common.cc:
24192         (riscv_implied_info): Add zvfh item.
24193         (riscv_ext_version_table): Ditto.
24194         (riscv_ext_flag_table): Ditto.
24195         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
24196         (TARGET_ZVFH): Ditto.
24198 2023-05-30  liuhongt  <hongtao.liu@intel.com>
24200         PR tree-optimization/108804
24201         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
24202         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
24203         Add new parameter narrow_src_p.
24204         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
24205         vectorization by truncating to lower precision.
24206         * tree-vectorizer.h (vect_get_range_info): New declare.
24208 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
24210         * lra-int.h (lra_update_sp_offset): Add the prototype.
24211         * lra.cc (setup_sp_offset): Change the return type.  Use
24212         lra_update_sp_offset.
24213         * lra-eliminations.cc (lra_update_sp_offset): New function.
24214         (lra_process_new_insns): Push the current insn to reprocess if the
24215         input reload changes sp offset.
24217 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
24219         PR target/110041
24220         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
24221         Fix misleading identation.
24223 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
24225         * rtl.h (comparison_dominates_p): Change return type from int to bool.
24226         (condjump_p): Ditto.
24227         (any_condjump_p): Ditto.
24228         (any_uncondjump_p): Ditto.
24229         (simplejump_p): Ditto.
24230         (returnjump_p): Ditto.
24231         (eh_returnjump_p): Ditto.
24232         (onlyjump_p): Ditto.
24233         (invert_jump_1): Ditto.
24234         (invert_jump): Ditto.
24235         (rtx_renumbered_equal_p): Ditto.
24236         (redirect_jump_1): Ditto.
24237         (redirect_jump): Ditto.
24238         (condjump_in_parallel_p): Ditto.
24239         * jump.cc (invert_exp_1): Adjust forward declaration.
24240         (comparison_dominates_p): Change return type from int to bool
24241         and adjust function body accordingly.
24242         (simplejump_p): Ditto.
24243         (condjump_p): Ditto.
24244         (condjump_in_parallel_p): Ditto.
24245         (any_uncondjump_p): Ditto.
24246         (any_condjump_p): Ditto.
24247         (returnjump_p): Ditto.
24248         (eh_returnjump_p): Ditto.
24249         (onlyjump_p): Ditto.
24250         (redirect_jump_1): Ditto.
24251         (redirect_jump): Ditto.
24252         (invert_exp_1): Ditto.
24253         (invert_jump_1): Ditto.
24254         (invert_jump): Ditto.
24255         (rtx_renumbered_equal_p): Ditto.
24257 2023-05-30  Andrew Pinski  <apinski@marvell.com>
24259         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
24260         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
24261         Add ne as a possible cmp.
24262         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
24264 2023-05-30  Andrew Pinski  <apinski@marvell.com>
24266         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
24267         pattern.
24269 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
24271         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
24272         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
24273         (and (extend X) C) as (zero_extend (and X C)), to also optimize
24274         modes wider than HOST_WIDE_INT.
24276 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
24278         PR target/107172
24279         * simplify-rtx.cc (simplify_const_relational_operation): Return
24280         early if we have a MODE_CC comparison that isn't a COMPARE against
24281         const0_rtx.
24283 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
24285         * config/riscv/riscv.cc (riscv_const_insns): Allow
24286         const_vec_duplicates.
24288 2023-05-30  liuhongt  <hongtao.liu@intel.com>
24290         PR middle-end/108938
24291         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
24292         function, cut from original find_bswap_or_nop function.
24293         (find_bswap_or_nop): Add a new parameter, detect bswap +
24294         rotate and save rotate result in the new parameter.
24295         (bswap_replace): Add a new parameter to indicate rotate and
24296         generate rotate stmt if needed.
24297         (maybe_optimize_vector_constructor): Adjust for new rotate
24298         parameter in the upper 2 functions.
24299         (pass_optimize_bswap::execute): Ditto.
24300         (imm_store_chain_info::output_merged_store): Ditto.
24302 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24304         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
24305         (aarch64_<su>adalp<mode>): New define_expand.
24306         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
24307         (aarch64_<su>addlp<mode>): Convert to define_expand.
24308         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
24309         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
24310         (ADALP): Likewise.
24311         (USADDLP): Likewise.
24312         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
24314 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24316         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
24317         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
24318         srhadd, urhadd builtin codes for standard optab ones.
24319         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
24320         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
24321         unspec.
24322         (<u>avg<mode>3_ceil): Rename to...
24323         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
24324         unspec.
24325         (aarch64_<su>hsub<mode>): New define_expand.
24326         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
24327         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
24328         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
24330 2023-05-30  Andreas Schwab  <schwab@suse.de>
24332         PR target/110036
24333         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
24334         match libsanitizer.
24336 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24338         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
24339         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
24340         Declare prototype.
24341         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
24342         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
24343         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
24344         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
24345         (aarch64_<sra_op>sra_n<mode>): New define_expand.
24346         (aarch64_<sra_op>rsra_n<mode>): Likewise.
24347         (aarch64_<sur>sra_n<mode>): Rename to...
24348         (aarch64_<sur>sra_ndi): ... This.
24349         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
24350         any_target_p argument.
24351         (aarch64_extract_vec_duplicate_wide_int): Define.
24352         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
24353         (aarch64_const_vec_rnd_cst_p): Likewise.
24354         (aarch64_vector_mode_supported_any_target_p): Likewise.
24355         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
24356         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
24357         (VSRA): Adjust for the above.
24358         (sur): Likewise.
24359         (V2XWIDE): New mode_attr.
24360         (vec_or_offset): Likewise.
24361         (SHIFTEXTEND): Likewise.
24362         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
24363         predicate.
24364         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
24365         clarify that it applies to current target options.
24366         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
24367         * doc/tm.texi.in: Regenerate.
24368         * stor-layout.cc (mode_for_vector): Check
24369         vector_mode_supported_any_target_p when iterating through vector modes.
24370         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
24371         clarify that it applies to current target options.
24372         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
24374 2023-05-30  Lili Cui  <lili.cui@intel.com>
24376         PR tree-optimization/98350
24377         * tree-ssa-reassoc.cc
24378         (rewrite_expr_tree_parallel): Rewrite this function.
24379         (rank_ops_for_fma): New.
24380         (reassociate_bb): Handle new function.
24382 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
24384         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
24385         (rtx_unstable_p): Ditto.
24386         (reg_mentioned_p): Ditto.
24387         (reg_referenced_p): Ditto.
24388         (reg_used_between_p): Ditto.
24389         (reg_set_between_p): Ditto.
24390         (modified_between_p): Ditto.
24391         (no_labels_between_p): Ditto.
24392         (modified_in_p): Ditto.
24393         (reg_set_p): Ditto.
24394         (multiple_sets): Ditto.
24395         (set_noop_p): Ditto.
24396         (noop_move_p): Ditto.
24397         (reg_overlap_mentioned_p): Ditto.
24398         (dead_or_set_p): Ditto.
24399         (dead_or_set_regno_p): Ditto.
24400         (find_reg_fusage): Ditto.
24401         (find_regno_fusage): Ditto.
24402         (side_effects_p): Ditto.
24403         (volatile_refs_p): Ditto.
24404         (volatile_insn_p): Ditto.
24405         (may_trap_p_1): Ditto.
24406         (may_trap_p): Ditto.
24407         (may_trap_or_fault_p): Ditto.
24408         (computed_jump_p): Ditto.
24409         (auto_inc_p): Ditto.
24410         (loc_mentioned_in_p): Ditto.
24411         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
24412         (rtx_unstable_p): Change return type from int to bool
24413         and adjust function body accordingly.
24414         (rtx_addr_can_trap_p): Ditto.
24415         (reg_mentioned_p): Ditto.
24416         (no_labels_between_p): Ditto.
24417         (reg_used_between_p): Ditto.
24418         (reg_referenced_p): Ditto.
24419         (reg_set_between_p): Ditto.
24420         (reg_set_p): Ditto.
24421         (modified_between_p): Ditto.
24422         (modified_in_p): Ditto.
24423         (multiple_sets): Ditto.
24424         (set_noop_p): Ditto.
24425         (noop_move_p): Ditto.
24426         (reg_overlap_mentioned_p): Ditto.
24427         (dead_or_set_p): Ditto.
24428         (dead_or_set_regno_p): Ditto.
24429         (find_reg_fusage): Ditto.
24430         (find_regno_fusage): Ditto.
24431         (remove_node_from_insn_list): Ditto.
24432         (volatile_insn_p): Ditto.
24433         (volatile_refs_p): Ditto.
24434         (side_effects_p): Ditto.
24435         (may_trap_p_1): Ditto.
24436         (may_trap_p): Ditto.
24437         (may_trap_or_fault_p): Ditto.
24438         (computed_jump_p): Ditto.
24439         (auto_inc_p): Ditto.
24440         (loc_mentioned_in_p): Ditto.
24441         * combine.cc (can_combine_p): Update indirect function.
24443 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24445         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
24446         * config/riscv/iterators.md: New attribute.
24447         * config/riscv/vector-iterators.md: New attribute.
24449 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24451         * config/riscv/riscv.md: Fix signed and unsigned comparison
24452         warning.
24454 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24456         * config/riscv/autovec.md (fnma<mode>4): New pattern.
24457         (*fnma<mode>): Ditto.
24459 2023-05-29  Die Li  <lidie@eswincomputing.com>
24461         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
24462         Delete.
24463         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
24464         process for TARGET_XTHEADCONDMOV
24466 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
24468         PR target/110021
24469         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
24470         TARGET_AVX512BW to generate truncv16hiv16qi2.
24472 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
24474         * config/riscv/riscv.md (and<mode>3): New expander.
24475         (*and<mode>3) New pattern.
24476         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
24477         predicate.
24479 2023-05-29  Pan Li  <pan2.li@intel.com>
24481         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
24482         comments and rename local variables.
24483         (emit_nonvlmax_insn): Diito.
24484         (emit_vlmax_merge_insn): Ditto.
24485         (emit_vlmax_cmp_insn): Ditto.
24486         (emit_vlmax_cmp_mu_insn): Ditto.
24487         (emit_scalar_move_insn): Ditto.
24489 2023-05-29  Pan Li  <pan2.li@intel.com>
24491         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
24492         magic number.
24493         (emit_nonvlmax_insn): Ditto.
24494         (emit_vlmax_merge_insn): Ditto.
24495         (emit_vlmax_cmp_insn): Ditto.
24496         (emit_vlmax_cmp_mu_insn): Ditto.
24497         (expand_vec_series): Ditto.
24499 2023-05-29  Pan Li  <pan2.li@intel.com>
24501         * config/riscv/riscv-protos.h (enum insn_type): New type.
24502         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
24503         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
24504         class member.
24505         (rvv_builder::get_merged_repeating_sequence): Ditto.
24506         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
24507         to evaluate the optimization cost.
24508         (rvv_builder::get_merge_scalar_mask): New function to get the merge
24509         mask.
24510         (emit_scalar_move_insn): New function to emit vmv.s.x.
24511         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
24512         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
24513         vmv.v.x.
24514         (get_repeating_sequence_dup_machine_mode): New function to get the dup
24515         machine mode.
24516         (expand_vector_init_merge_repeating_sequence): New function to perform
24517         the optimization.
24518         (expand_vec_init): Add this vector init optimization.
24519         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
24521 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
24523         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
24524         put onto the increment when it is inserted after the position.
24526 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
24528         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
24529         on constants.
24531 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24533         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
24535 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24537         * config/riscv/autovec.md (fma<mode>4): New pattern.
24538         (*fma<mode>): Ditto.
24539         * config/riscv/riscv-protos.h (enum insn_type): New enum.
24540         (emit_vlmax_ternary_insn): New function.
24541         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
24543 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24545         * config/riscv/vector.md: Fix vimuladd instruction bug.
24547 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24549         * config/riscv/riscv.cc (global_state_unknown_p): New function.
24550         (riscv_mode_after): Fix incorrect VXM.
24552 2023-05-29  Pan Li  <pan2.li@intel.com>
24554         * common/config/riscv/riscv-common.cc:
24555         (riscv_implied_info): Add zvfhmin item.
24556         (riscv_ext_version_table): Ditto.
24557         (riscv_ext_flag_table): Ditto.
24558         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
24559         (TARGET_ZFHMIN): Align indent.
24560         (TARGET_ZFH): Ditto.
24561         (TARGET_ZVFHMIN): New macro.
24563 2023-05-27  liuhongt  <hongtao.liu@intel.com>
24565         PR target/100711
24566         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
24567         to VI_AVX2 to cover more modes.
24569 2023-05-27  liuhongt  <hongtao.liu@intel.com>
24571         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
24572         Remove ATOM and ICELAKE(and later) core processors.
24574 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
24576         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
24577         (abs<mode>2): Add.
24578         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
24579         Declare.
24580         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
24581         function.
24583 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
24584             Juzhe Zhong  <juzhe.zhong@rivai.ai>
24586         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
24587         expander.
24588         (<optab><v_quad_trunc><mode>2): Dito.
24589         (<optab><v_oct_trunc><mode>2): Dito.
24590         (trunc<mode><v_double_trunc>2): Dito.
24591         (trunc<mode><v_quad_trunc>2): Dito.
24592         (trunc<mode><v_oct_trunc>2): Dito.
24593         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
24594         (autovectorize_vector_modes): Define.
24595         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
24596         hook.
24597         (autovectorize_vector_modes): Implement hook.
24598         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
24599         Implement target hook.
24600         (riscv_vectorize_related_mode): Implement target hook.
24601         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
24602         (TARGET_VECTORIZE_RELATED_MODE): Define.
24603         * config/riscv/vector-iterators.md: Add lowercase versions of
24604         mode_attr iterators.
24606 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
24607             Tobias Burnus  <tobias@codesourcery.com>
24609         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
24610         (ASM_SPEC): Use XNACKOPT.
24611         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
24612         (enum hsaco_attr_type): ... this, and generalize the names.
24613         (TARGET_XNACK): New macro.
24614         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
24615         but -mxnack=off.
24616         (output_file_start): Update xnack handling.
24617         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
24618         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
24619         (sram_ecc_type): Rename to ...
24620         (hsaco_attr_type: ... this.)
24621         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
24622         (TEST_XNACK): Delete.
24623         (TEST_XNACK_ANY): New macro.
24624         (TEST_XNACK_ON): New macro.
24625         (main): Support the new -mxnack=on/off/any syntax.
24626         * doc/invoke.texi (-mxnack): Update for new syntax.
24628 2023-05-26  Andrew Pinski  <apinski@marvell.com>
24630         * genmatch.cc (emit_debug_printf): New function.
24631         (dt_simplify::gen_1): Emit printf into the code
24632         before the `return true` or returning the folded result
24633         instead of emitting it always.
24635 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
24637         * config/xtensa/xtensa-protos.h
24638         (xtensa_expand_block_set_unrolled_loop,
24639         xtensa_expand_block_set_small_loop): Remove.
24640         (xtensa_expand_block_set): New prototype.
24641         * config/xtensa/xtensa.cc
24642         (xtensa_expand_block_set_libcall): New subfunction.
24643         (xtensa_expand_block_set_unrolled_loop,
24644         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
24645         (xtensa_expand_block_set): New function that calls the above
24646         subfunctions.
24647         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
24648         xtensa_expand_block_set().
24650 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
24652         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
24653         New prototype.
24654         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
24655         New function.
24656         * config/xtensa/constraints.md (O):
24657         Change to use the above function.
24658         * config/xtensa/xtensa.md (*subsi3_from_const):
24659         New insn_and_split pattern.
24661 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
24663         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
24664         Retract excessive line folding, and correct the value of
24665         the "length" insn attribute related to TARGET_DENSITY.
24666         (*extzvsi-1bit_addsubx): Ditto.
24668 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
24670         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
24671         Do not disable call to ix86_expand_vecop_qihi2.
24673 2023-05-26  liuhongt  <hongtao.liu@intel.com>
24675         PR target/109610
24676         PR target/109858
24677         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
24678         calculation when !hard_regno_mode_ok for GENERAL_REGS and
24679         mode, otherwise still use GENERAL_REGS.
24681 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24683         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
24684         explict VL and drop VL in ops.
24686 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
24688         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
24689         in different BB blocks.
24691 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
24693         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
24694         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
24695         instructions when available.  Emulate truncation via
24696         ix86_expand_vec_perm_const_1 when native truncate insn
24697         is not available.
24698         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
24699         when available.  Trivially rename some variables.
24700         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
24701         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
24702         calculation of V*QImode emulations to account for generation of
24703         2x-wider mode instructions.
24704         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
24705         emulations to account for generation of 2x-wider mode instructions.
24707 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
24709         PR target/104327
24710         * config/avr/avr.cc (avr_can_inline_p): New static function.
24711         (TARGET_CAN_INLINE_P): Define to that function.
24713 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
24715         PR target/82931
24716         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
24717         Handle any bit position and use mode QISI.
24718         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
24719         of 2 insns for bit-transfer of respective style.
24721 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
24723         * config/arm/iterators.md (MVE_6): Remove.
24724         * config/arm/mve.md: Replace MVE_6 with MVE_5.
24726 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24727             Richard Sandiford  <richard.sandiford@arm.com>
24729         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
24730         function.
24731         (vect_set_loop_controls_directly): Add decrement IV support.
24732         (vect_set_loop_condition_partial_vectors): Ditto.
24733         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
24734         variable.
24735         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
24736         macro.
24738 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24740         PR target/99195
24741         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
24742         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
24743         Fix canonicalization of PLUS operands.
24744         (aarch64_fcmla<rot><mode>): Rename to...
24745         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
24746         Fix canonicalization of PLUS operands.
24747         (aarch64_fcmla_lane<rot><mode>): Rename to...
24748         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
24749         Fix canonicalization of PLUS operands.
24750         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
24751         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
24752         Fix canonicalization of PLUS operands.
24753         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
24755 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
24757         * config/arm/arm.md (rbitsi2): Rename to...
24758         (arm_rbit): ... This.
24759         (ctzsi2): Adjust for the above.
24760         (arm_rev16si2): Convert to define_expand.
24761         (arm_rev16si2_alt1): New pattern.
24762         (arm_rev16si2_alt): Rename to...
24763         (*arm_rev16si2_alt2): ... This.
24764         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
24765         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
24766         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
24767         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
24769 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
24771         PR target/109800
24772         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
24773         instead of DFmode.
24774         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
24775         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
24776         DFmode as an rvalue.
24778 2023-05-25  Richard Biener  <rguenther@suse.de>
24780         PR target/109955
24781         * tree-vect-stmts.cc (vectorizable_condition): For
24782         embedded comparisons also handle the case when the target
24783         only provides vec_cmp and vcond_mask.
24785 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
24787         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
24788         TLS Local Dynamic.
24790 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
24792         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
24793         (seq_cost_ignoring_scalar_moves): Likewise.
24794         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
24796 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24798         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
24799         (vcage_f32): Likewise.
24800         (vcages_f32): Likewise.
24801         (vcageq_f32): Likewise.
24802         (vcaged_f64): Likewise.
24803         (vcageq_f64): Likewise.
24804         (vcagts_f32): Likewise.
24805         (vcagt_f32): Likewise.
24806         (vcagt_f64): Likewise.
24807         (vcagtq_f32): Likewise.
24808         (vcagtd_f64): Likewise.
24809         (vcagtq_f64): Likewise.
24810         (vcale_f32): Likewise.
24811         (vcale_f64): Likewise.
24812         (vcaled_f64): Likewise.
24813         (vcales_f32): Likewise.
24814         (vcaleq_f32): Likewise.
24815         (vcaleq_f64): Likewise.
24816         (vcalt_f32): Likewise.
24817         (vcalt_f64): Likewise.
24818         (vcaltd_f64): Likewise.
24819         (vcaltq_f32): Likewise.
24820         (vcaltq_f64): Likewise.
24821         (vcalts_f32): Likewise.
24823 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
24825         PR target/109173
24826         PR target/109174
24827         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
24828         int to const int or const int to const unsigned int.
24829         (_mm512_mask_srli_epi16): Ditto.
24830         (_mm512_slli_epi16): Ditto.
24831         (_mm512_mask_slli_epi16): Ditto.
24832         (_mm512_maskz_slli_epi16): Ditto.
24833         (_mm512_srai_epi16): Ditto.
24834         (_mm512_mask_srai_epi16): Ditto.
24835         (_mm512_maskz_srai_epi16): Ditto.
24836         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
24837         (_mm512_mask_slli_epi64): Ditto.
24838         (_mm512_maskz_slli_epi64): Ditto.
24839         (_mm512_srli_epi64): Ditto.
24840         (_mm512_mask_srli_epi64): Ditto.
24841         (_mm512_maskz_srli_epi64): Ditto.
24842         (_mm512_srai_epi64): Ditto.
24843         (_mm512_mask_srai_epi64): Ditto.
24844         (_mm512_maskz_srai_epi64): Ditto.
24845         (_mm512_slli_epi32): Ditto.
24846         (_mm512_mask_slli_epi32): Ditto.
24847         (_mm512_maskz_slli_epi32): Ditto.
24848         (_mm512_srli_epi32): Ditto.
24849         (_mm512_mask_srli_epi32): Ditto.
24850         (_mm512_maskz_srli_epi32): Ditto.
24851         (_mm512_srai_epi32): Ditto.
24852         (_mm512_mask_srai_epi32): Ditto.
24853         (_mm512_maskz_srai_epi32): Ditto.
24854         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
24855         (_mm256_maskz_srai_epi16): Ditto.
24856         (_mm_mask_srai_epi16): Ditto.
24857         (_mm_maskz_srai_epi16): Ditto.
24858         (_mm256_mask_slli_epi16): Ditto.
24859         (_mm256_maskz_slli_epi16): Ditto.
24860         (_mm_mask_slli_epi16): Ditto.
24861         (_mm_maskz_slli_epi16): Ditto.
24862         (_mm_maskz_srli_epi16): Ditto.
24863         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
24864         (_mm256_maskz_srli_epi32): Ditto.
24865         (_mm_mask_srli_epi32): Ditto.
24866         (_mm_maskz_srli_epi32): Ditto.
24867         (_mm256_mask_srli_epi64): Ditto.
24868         (_mm256_maskz_srli_epi64): Ditto.
24869         (_mm_mask_srli_epi64): Ditto.
24870         (_mm_maskz_srli_epi64): Ditto.
24871         (_mm256_mask_srai_epi32): Ditto.
24872         (_mm256_maskz_srai_epi32): Ditto.
24873         (_mm_mask_srai_epi32): Ditto.
24874         (_mm_maskz_srai_epi32): Ditto.
24875         (_mm256_srai_epi64): Ditto.
24876         (_mm256_mask_srai_epi64): Ditto.
24877         (_mm256_maskz_srai_epi64): Ditto.
24878         (_mm_srai_epi64): Ditto.
24879         (_mm_mask_srai_epi64): Ditto.
24880         (_mm_maskz_srai_epi64): Ditto.
24881         (_mm_mask_slli_epi32): Ditto.
24882         (_mm_maskz_slli_epi32): Ditto.
24883         (_mm_mask_slli_epi64): Ditto.
24884         (_mm_maskz_slli_epi64): Ditto.
24885         (_mm256_mask_slli_epi32): Ditto.
24886         (_mm256_maskz_slli_epi32): Ditto.
24887         (_mm256_mask_slli_epi64): Ditto.
24888         (_mm256_maskz_slli_epi64): Ditto.
24890 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24892         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
24893         instructions.
24895 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
24897         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
24898         * data-streamer-out.cc (streamer_write_vrange): Same.
24899         * value-range.h (class vrange): Make streamer_write_vrange a friend.
24901 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
24903         * value-query.cc (range_query::get_tree_range): Set NAN directly
24904         if necessary.
24905         * value-range.cc (frange::set): Assert that bounds are not NAN.
24907 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
24909         * value-range.cc (add_vrange): Handle known NANs.
24911 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
24913         * value-range.h (frange::set_nan): New.
24915 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
24917         PR target/100106
24918         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
24919         requires stricter alignment than MEM's.
24921 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
24923         PR tree-optimization/107822
24924         PR tree-optimization/107986
24925         * Makefile.in (OBJS): Add gimple-range-phi.o.
24926         * gimple-range-cache.h (ranger_cache::m_estimate): New
24927         phi_analyzer pointer member.
24928         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
24929         phi_analyzer if no loop info is available.
24930         * gimple-range-phi.cc: New file.
24931         * gimple-range-phi.h: New file.
24932         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
24934 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
24936         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
24937         to contructors.
24938         (fold_range): Add range_query parameter.
24939         (fur_relation::fur_relation): New.
24940         (fur_relation::trio): New.
24941         (fur_relation::register_relation): New.
24942         (fold_relations): New.
24943         * gimple-range-fold.h (fold_range): Adjust prototypes.
24944         (fold_relations): New.
24946 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
24948         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
24949         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
24950         (ranger_cache::const_query): New.
24951         * gimple-range.cc (gimple_ranger::const_query): New.
24952         * gimple-range.h (gimple_ranger::const_query): New prototype.
24954 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
24956         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
24957         (ssa_cache::dump_range_query): Delete.
24958         (ssa_lazy_cache::dump_range_query): Delete.
24959         (ssa_lazy_cache::get_range): Move from header file.
24960         (ssa_lazy_cache::clear_range): ditto.
24961         (ssa_lazy_cache::clear): Ditto.
24962         * gimple-range-cache.h (class ssa_cache): Virtualize.
24963         (class ssa_lazy_cache): Inherit and virtualize.
24965 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
24967         * value-range.h (vrange::kind): Remove.
24969 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
24971         PR middle-end/109840
24972         * match.pd <popcount optimizations>: Preserve zero-extension when
24973         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
24974         popcount((T)x), so the popcount's argument keeps the same type.
24975         <parity optimizations>:  Likewise preserve extensions when
24976         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
24977         parity((T)x), so that the parity's argument type is the same.
24979 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
24981         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
24982         (ipcp_store_vr_results): Same.
24983         * ipa-prop.cc (ipa_vr::ipa_vr): New.
24984         (ipa_vr::get_vrange): New.
24985         (ipa_vr::set_unknown): New.
24986         (ipa_vr::streamer_read): New.
24987         (ipa_vr::streamer_write): New.
24988         (write_ipcp_transformation_info): Use new ipa_vr API.
24989         (read_ipcp_transformation_info): Same.
24990         (ipa_vr::nonzero_p): Delete.
24991         (ipcp_update_vr): Use new ipa_vr API.
24992         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
24993         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
24995 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24997         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
24998         silence overflow warnings later on.
25000 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
25002         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
25003         Remove handling of V8QImode.
25004         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
25005         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
25006         (v<insn>v4qi3): Ditto.
25007         * config/i386/sse.md (v<insn>v8qi3): Remove.
25009 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25011         PR target/99195
25012         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
25013         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
25014         (aarch64_simd_ashr<mode>): Rename to...
25015         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
25016         (aarch64_simd_imm_shl<mode>): Rename to...
25017         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
25018         (aarch64_simd_reg_sshl<mode>): Rename to...
25019         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
25020         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
25021         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
25022         (aarch64_simd_reg_shl<mode>_signed): Rename to...
25023         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
25024         (vec_shr_<mode>): Rename to...
25025         (vec_shr_<mode><vczle><vczbe>): ... This.
25026         (aarch64_<sur>shl<mode>): Rename to...
25027         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
25028         (aarch64_<sur>q<r>shl<mode>): Rename to...
25029         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
25031 2023-05-24  Richard Biener  <rguenther@suse.de>
25033         PR target/109944
25034         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
25035         Perform final vector composition using
25036         ix86_expand_vector_init_general instead of setting
25037         the highpart and lowpart which causes spilling.
25039 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
25041         PR tree-optimization/109695
25042         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
25043         changed param.
25044         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
25045         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
25046         flag to set_global_range.
25047         (gimple_ranger::prefill_stmt_dependencies): Ditto.
25049 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
25051         PR tree-optimization/109695
25052         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
25053         a positive int.
25054         (temporal_cache::current_p): Check always_current method.
25055         (temporal_cache::set_always_current): Add param and set value
25056         appropriately.
25057         (temporal_cache::always_current_p): New.
25058         (ranger_cache::get_global_range): Adjust.
25059         (ranger_cache::set_global_range): set always current first.
25061 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
25063         PR tree-optimization/109695
25064         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
25065         fold_range with global query to choose an initial value.
25067 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25069         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
25070         prefix.
25072 2023-05-24  Richard Biener  <rguenther@suse.de>
25074         PR tree-optimization/109849
25075         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
25076         expressions but take the first sets.
25078 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
25080         PR modula2/109952
25081         * doc/gm2.texi (High procedure function): New node.
25082         (Using): New menu entry for High procedure function.
25084 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
25086         PR rtl-optimization/109940
25087         * early-remat.cc (postorder_index): Rename to...
25088         (rpo_index): ...this.
25089         (compare_candidates): Sort by decreasing rpo_index rather than
25090         increasing postorder_index.
25091         (early_remat::sort_candidates): Calculate the forward RPO from
25092         DF_FORWARD.
25093         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
25094         rather than DF_BACKWARD in reverse.
25096 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25098         PR target/109939
25099         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
25100         qualifier_none for the return operand.
25102 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25104         * config/riscv/autovec.md (<optab><mode>3): New pattern.
25105         (one_cmpl<mode>2): Ditto.
25106         (*<optab>not<mode>): Ditto.
25107         (*n<optab><mode>): Ditto.
25108         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
25109         one_cmpl.
25111 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
25113         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
25114         calculation on n_perms by considering nvectors_per_build.
25116 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25117             Richard Sandiford  <richard.sandiford@arm.com>
25119         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
25120         (vec_cmp<mode><vm>): New pattern.
25121         (vec_cmpu<mode><vm>): New pattern.
25122         (vcond<V:mode><VI:mode>): New pattern.
25123         (vcondu<V:mode><VI:mode>): New pattern.
25124         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
25125         (emit_vlmax_merge_insn): New function.
25126         (emit_vlmax_cmp_insn): Ditto.
25127         (emit_vlmax_cmp_mu_insn): Ditto.
25128         (expand_vec_cmp): Ditto.
25129         (expand_vec_cmp_float): Ditto.
25130         (expand_vcond): Ditto.
25131         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
25132         (emit_vlmax_cmp_insn): Ditto.
25133         (emit_vlmax_cmp_mu_insn): Ditto.
25134         (get_cmp_insn_code): Ditto.
25135         (expand_vec_cmp): Ditto.
25136         (expand_vec_cmp_float): Ditto.
25137         (expand_vcond): Ditto.
25139 2023-05-24  Pan Li  <pan2.li@intel.com>
25141         * config/riscv/genrvv-type-indexer.cc (main): Add
25142         unsigned_eew*_lmul1_interpret for indexer.
25143         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
25144         Register vuint*m1_t interpret function.
25145         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
25146         New macro for vuint8m1_t.
25147         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
25148         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
25149         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
25150         (vbool1_t): Add to unsigned_eew*_interpret_ops.
25151         (vbool2_t): Likewise.
25152         (vbool4_t): Likewise.
25153         (vbool8_t): Likewise.
25154         (vbool16_t): Likewise.
25155         (vbool32_t): Likewise.
25156         (vbool64_t): Likewise.
25157         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
25158         New macro for vuint*m1_t.
25159         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
25160         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
25161         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
25162         (required_extensions_p): Add vuint*m1_t interpret case.
25163         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
25164         Add vuint*m1_t interpret to base type.
25165         (unsigned_eew16_lmul1_interpret): Likewise.
25166         (unsigned_eew32_lmul1_interpret): Likewise.
25167         (unsigned_eew64_lmul1_interpret): Likewise.
25169 2023-05-24  Pan Li  <pan2.li@intel.com>
25171         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
25172         for the eew size list.
25173         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
25174         (main): Add signed_eew*_lmul1_interpret for indexer.
25175         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
25176         Register vint*m1_t interpret function.
25177         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
25178         New macro for vint8m1_t.
25179         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
25180         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
25181         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
25182         (vbool1_t): Add to signed_eew*_interpret_ops.
25183         (vbool2_t): Likewise.
25184         (vbool4_t): Likewise.
25185         (vbool8_t): Likewise.
25186         (vbool16_t): Likewise.
25187         (vbool32_t): Likewise.
25188         (vbool64_t): Likewise.
25189         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
25190         New macro for vint*m1_t.
25191         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
25192         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
25193         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
25194         (required_extensions_p): Add vint8m1_t interpret case.
25195         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
25196         Add vint*m1_t interpret to base type.
25197         (signed_eew16_lmul1_interpret): Likewise.
25198         (signed_eew32_lmul1_interpret): Likewise.
25199         (signed_eew64_lmul1_interpret): Likewise.
25201 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25203         * config/riscv/autovec.md: Adjust for new interface.
25204         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
25205         (emit_nonvlmax_insn): Add AVL operand.
25206         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
25207         (emit_nonvlmax_insn): Add AVL operand.
25208         (sew64_scalar_helper): Adjust for new interface.
25209         (expand_tuple_move): Ditto.
25210         * config/riscv/vector.md: Ditto.
25212 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25214         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
25215         (expand_const_vector): Ditto.
25216         (legitimize_move): Ditto.
25217         (sew64_scalar_helper): Ditto.
25218         (expand_tuple_move): Ditto.
25219         (expand_vector_init_insert_elems): Ditto.
25220         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
25222 2023-05-24  liuhongt  <hongtao.liu@intel.com>
25224         PR target/109900
25225         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
25226         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
25227         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
25228         (ix86_masked_all_ones): Handle 64-bit mask.
25229         * config/i386/i386-builtin.def: Replace icode of related
25230         non-mask simd abs builtins with CODE_FOR_nothing.
25232 2023-05-23  Martin Uecker  <uecker@tugraz.at>
25234         PR c/109450
25235         * function.cc (gimplify_parm_type): Remove function.
25236         (gimplify_parameters): Call gimplify_type_sizes.
25238 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25240         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
25241         and change to also accept '*subx' pattern.
25242         (*subx): Remove.
25244 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25246         * config/xtensa/predicates.md (addsub_operator): New.
25247         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
25248         *extzvsi-1bit_addsubx): New insn_and_split patterns.
25249         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
25250         Add a special case about ifcvt 'noce_try_cmove()' to handle
25251         constant loads that do not fit into signed 12 bits in the
25252         patterns added above.
25254 2023-05-23  Richard Biener  <rguenther@suse.de>
25256         PR tree-optimization/109747
25257         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
25258         the SLP node only once to the cost hook.
25260 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
25262         * config/avr/avr.cc (avr_insn_cost): New static function.
25263         (TARGET_INSN_COST): Define to that function.
25265 2023-05-23  Richard Biener  <rguenther@suse.de>
25267         PR target/109944
25268         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
25269         For vector construction or splats apply GPR->XMM move
25270         costing.  QImode memory can be handled directly only
25271         with SSE4.1 pinsrb.
25273 2023-05-23  Richard Biener  <rguenther@suse.de>
25275         PR tree-optimization/108752
25276         * tree-vect-stmts.cc (vectorizable_operation): For bit
25277         operations with generic word_mode vectors do not cost
25278         an extra stmt.  For plus, minus and negate also cost the
25279         constant materialization.
25281 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
25283         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
25284         Call ix86_expand_vec_shift_qihi_constant for shifts
25285         with constant count operand.
25286         * config/i386/i386.cc (ix86_shift_rotate_cost):
25287         Handle V4QImode and V8QImode.
25288         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
25289         (<insn>v4qi3): Ditto.
25291 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25293         * config/riscv/vector.md: Add mode.
25295 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
25297         PR tree-optimization/109934
25298         * value-range.cc (irange::invert): Remove buggy special case.
25300 2023-05-23  Richard Biener  <rguenther@suse.de>
25302         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
25303         ANTIC_OUT.
25305 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
25307         PR target/109632
25308         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
25309         subregs between any scalars that are 64 bits or smaller.
25310         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
25311         (bits_etype): New int attribute.
25312         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
25313         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
25314         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
25316 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
25318         * doc/md.texi: Document that <FOO> can be used to refer to the
25319         numerical value of an int iterator FOO.  Tweak other parts of
25320         the int iterator documentation.
25321         * read-rtl.cc (iterator_group::has_self_attr): New field.
25322         (map_attr_string): When has_self_attr is true, make <FOO>
25323         expand to the current value of iterator FOO.
25324         (initialize_iterators): Set has_self_attr for int iterators.
25326 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25328         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
25329         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
25330         (RVV_UNOP_NUM): New macro.
25331         (RVV_BINOP_NUM): Ditto.
25332         (legitimize_move): Refactor the framework of RVV auto-vectorization.
25333         (emit_vlmax_op): Ditto.
25334         (emit_vlmax_reg_op): Ditto.
25335         (emit_len_op): Ditto.
25336         (emit_len_binop): Ditto.
25337         (emit_vlmax_tany_many): Ditto.
25338         (emit_nonvlmax_tany_many): Ditto.
25339         (sew64_scalar_helper): Ditto.
25340         (expand_tuple_move): Ditto.
25341         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
25342         (emit_pred_binop): Ditto.
25343         (emit_vlmax_op): Ditto.
25344         (emit_vlmax_tany_many): New function.
25345         (emit_len_op): Remove.
25346         (emit_nonvlmax_tany_many): New function.
25347         (emit_vlmax_reg_op): Remove.
25348         (emit_len_binop): Ditto.
25349         (emit_index_op): Ditto.
25350         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
25351         (expand_const_vector): Ditto.
25352         (legitimize_move): Ditto.
25353         (sew64_scalar_helper): Ditto.
25354         (expand_tuple_move): Ditto.
25355         (expand_vector_init_insert_elems): Ditto.
25356         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
25357         * config/riscv/vector.md: Ditto.
25359 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25361         PR target/109855
25362         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
25363         and constraint for operand 0.
25364         (add_vec_concat_subst_be): Likewise.
25366 2023-05-23  Richard Biener  <rguenther@suse.de>
25368         PR tree-optimization/109849
25369         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
25370         and use that to determine what to hoist.
25372 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
25374         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
25375         specific treatment for bit-fields only if they have an integral type
25376         and filter out non-integral bit-fields that do not start and end on
25377         a byte boundary.
25379 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
25381         PR tree-optimization/109920
25382         * value-range.h (RESIZABLE>::~int_range): Use delete[].
25384 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
25386         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
25387         calcuation of integer vector mode costs to reflect generated
25388         instruction sequences of different integer vector modes and
25389         different target ABIs.  Remove "speed" function argument.
25390         (ix86_rtx_costs): Update call for removed function argument.
25391         (ix86_vector_costs::add_stmt_cost): Ditto.
25393 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
25395         * value-range.h (class Value_Range): Implement set_zero,
25396         set_nonzero, and nonzero_p.
25398 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
25400         * config/i386/i386.cc (ix86_multiplication_cost): Add
25401         the cost of a memory read to the cost of V?QImode sequences.
25403 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25405         * config/riscv/riscv-v.cc: Add "m_" prefix.
25407 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25409         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
25410         multiple-rgroup of length.
25411         * tree-vect-stmts.cc (vectorizable_store): Ditto.
25412         (vectorizable_load): Ditto.
25413         * tree-vectorizer.h (vect_get_loop_len): Ditto.
25415 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25417         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
25418         codes.
25420 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
25422         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
25423         handling for the case index == count.
25425 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
25427         PR target/90622
25428         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
25429         Don't fold to XOR / AND / XOR if just one bit is copied to the
25430         same position.
25432 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
25434         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
25435         builtin for bit reversal using brev instruction.
25436         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
25437         NVPTX_BUILTIN_BREVLL.
25438         (nvptx_init_builtins): Define "brev" and "brevll".
25439         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
25440         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
25441         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
25442         section, document __builtin_nvptx_brev{,ll}.
25444 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
25446         PR tree-optimization/109505
25447         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
25448         Combine successive equal operations with constants,
25449         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
25450         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
25451         operands.
25453 2023-05-21  Andrew Pinski  <apinski@marvell.com>
25455         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
25457 2023-05-21  Pan Li  <pan2.li@intel.com>
25459         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
25460         rest bool size, aka 2, 4, 8, 16, 32, 64.
25461         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
25462         Register vbool[2|4|8|16|32|64] interpret function.
25463         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
25464         New macro for vbool2_t.
25465         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
25466         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
25467         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
25468         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
25469         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
25470         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
25471         (vint16m1_t): Likewise.
25472         (vint32m1_t): Likewise.
25473         (vint64m1_t): Likewise.
25474         (vuint8m1_t): Likewise.
25475         (vuint16m1_t): Likewise.
25476         (vuint32m1_t): Likewise.
25477         (vuint64m1_t): Likewise.
25478         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
25479         New macro for vbool2_t.
25480         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
25481         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
25482         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
25483         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
25484         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
25485         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
25486         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
25487         vbool2_t interprect to base type.
25488         (bool4_interpret): Likewise.
25489         (bool8_interpret): Likewise.
25490         (bool16_interpret): Likewise.
25491         (bool32_interpret): Likewise.
25492         (bool64_interpret): Likewise.
25494 2023-05-21  Andrew Pinski  <apinski@marvell.com>
25496         PR middle-end/109919
25497         * expr.cc (expand_single_bit_test): Don't use the
25498         target for expand_expr.
25500 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
25502         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
25503         section.
25505 2023-05-20  Pan Li  <pan2.li@intel.com>
25507         * mode-switching.cc (entity_map): Initialize the array to zero.
25508         (bb_info): Ditto.
25510 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
25512         PR target/105753
25513         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
25514         Remove superfluous "parallel" in insn pattern.
25515         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
25516         printing error text to assembly.
25518 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25520         * expr.cc (fold_single_bit_test): Rename to ...
25521         (expand_single_bit_test): This and expand directly.
25522         (do_store_flag): Update for the rename function.
25524 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25526         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
25527         instead of shift/and.
25529 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25531         * expr.cc (fold_single_bit_test): Add an assert
25532         and simplify based on code being NE_EXPR or EQ_EXPR.
25534 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25536         * expr.cc (fold_single_bit_test): Take inner and bitnum
25537         instead of arg0 and arg1. Update the code.
25538         (do_store_flag): Don't create a tree when calling
25539         fold_single_bit_test instead just call it with the bitnum
25540         and the inner tree.
25542 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25544         * expr.cc (fold_single_bit_test): Use get_def_for_expr
25545         instead of checking the inner's code.
25547 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25549         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
25550         (fold_single_bit_test): This and simplify.
25552 2023-05-20  Andrew Pinski  <apinski@marvell.com>
25554         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
25555         expr.cc.
25556         (fold_single_bit_test): Likewise.
25557         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
25558         (fold_single_bit_test): Likewise and make static.
25559         * fold-const.h (fold_single_bit_test): Remove declaration.
25561 2023-05-20  Die Li  <lidie@eswincomputing.com>
25563         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
25564         checking.
25566 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
25568         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
25570 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
25572         PR target/106888
25573         * config/riscv/bitmanip.md
25574         (<bitmanip_optab>disi2): Match with any_extend.
25575         (<bitmanip_optab>disi2_sext): New pattern to match
25576         with sign extend using an ANDI instruction.
25578 2023-05-19  Nathan Sidwell  <nathan@acm.org>
25580         PR other/99451
25581         * opts.h (handle_deferred_dump_options): Declare.
25582         * opts-global.cc (handle_common_deferred_options): Do not handle
25583         dump options here.
25584         (handle_deferred_dump_options): New.
25585         * toplev.cc (toplev::main): Call it after plugin init.
25587 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
25589         * config/riscv/constraints.md (DsS, DsD): Restore agreement
25590         with shiftm1 mode attribute.
25592 2023-05-19  Andrew Pinski  <apinski@marvell.com>
25594         PR driver/33980
25595         * gcc.cc (default_compilers["@c-header"]): Add %w
25596         after the --output-pch.
25598 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
25600         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
25601         to hival, ASHIFT the corresponding regs.
25603 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
25605         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
25607 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
25609         PR tree-optimization/105776
25610         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
25611         non-NULL, allow division statement to have a cast as single imm use
25612         rather than comparison/condition.
25613         (match_arith_overflow): In that case remove the cast stmt in addition
25614         to the division statement.
25616 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
25618         PR tree-optimization/101856
25619         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
25620         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
25621         support it but umul_highpart_optab does.
25623 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
25625         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
25626         of tree_to_shwi on array indices.  Minor tweaks.
25628 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
25630         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
25631         * attribs.cc (diag_attr_exclusions): Ditto.
25632         (decl_attributes): Ditto.
25633         (build_type_attribute_qual_variant): Ditto.
25634         * builtins.cc (fold_builtin_carg): Ditto.
25635         (fold_builtin_next_arg): Ditto.
25636         (do_mpc_arg2): Ditto.
25637         * cfgexpand.cc (expand_return): Ditto.
25638         * cgraph.h (decl_in_symtab_p): Ditto.
25639         (symtab_node::get_create): Ditto.
25640         * dwarf2out.cc (base_type_die): Ditto.
25641         (implicit_ptr_descriptor): Ditto.
25642         (gen_array_type_die): Ditto.
25643         (gen_type_die_with_usage): Ditto.
25644         (optimize_location_into_implicit_ptr): Ditto.
25645         * expr.cc (do_store_flag): Ditto.
25646         * fold-const.cc (negate_expr_p): Ditto.
25647         (fold_negate_expr_1): Ditto.
25648         (fold_convert_const): Ditto.
25649         (fold_convert_loc): Ditto.
25650         (constant_boolean_node): Ditto.
25651         (fold_binary_op_with_conditional_arg): Ditto.
25652         (build_fold_addr_expr_with_type_loc): Ditto.
25653         (fold_comparison): Ditto.
25654         (fold_checksum_tree): Ditto.
25655         (tree_unary_nonnegative_warnv_p): Ditto.
25656         (integer_valued_real_unary_p): Ditto.
25657         (fold_read_from_constant_string): Ditto.
25658         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
25659         * gimple-expr.cc (useless_type_conversion_p): Ditto.
25660         (is_gimple_reg): Ditto.
25661         (is_gimple_asm_val): Ditto.
25662         (mark_addressable): Ditto.
25663         * gimple-expr.h (is_gimple_variable): Ditto.
25664         (virtual_operand_p): Ditto.
25665         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
25666         * gimplify.cc (gimplify_bind_expr): Ditto.
25667         (gimplify_return_expr): Ditto.
25668         (gimple_add_padding_init_for_auto_var): Ditto.
25669         (gimplify_addr_expr): Ditto.
25670         (omp_add_variable): Ditto.
25671         (omp_notice_variable): Ditto.
25672         (omp_get_base_pointer): Ditto.
25673         (omp_strip_components_and_deref): Ditto.
25674         (omp_strip_indirections): Ditto.
25675         (omp_accumulate_sibling_list): Ditto.
25676         (omp_build_struct_sibling_lists): Ditto.
25677         (gimplify_adjust_omp_clauses_1): Ditto.
25678         (gimplify_adjust_omp_clauses): Ditto.
25679         (gimplify_omp_for): Ditto.
25680         (goa_lhs_expr_p): Ditto.
25681         (gimplify_one_sizepos): Ditto.
25682         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
25683         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
25684         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
25685         (propagate_controlled_uses): Ditto.
25686         * ipa-sra.cc (type_prevails_p): Ditto.
25687         (scan_expr_access): Ditto.
25688         * optabs-tree.cc (optab_for_tree_code): Ditto.
25689         * toplev.cc (wrapup_global_declaration_1): Ditto.
25690         * trans-mem.cc (transaction_invariant_address_p): Ditto.
25691         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
25692         (verify_gimple_comparison): Ditto.
25693         (verify_gimple_assign_binary): Ditto.
25694         (verify_gimple_assign_single): Ditto.
25695         * tree-complex.cc (get_component_ssa_name): Ditto.
25696         * tree-emutls.cc (lower_emutls_2): Ditto.
25697         * tree-inline.cc (copy_tree_body_r): Ditto.
25698         (estimate_move_cost): Ditto.
25699         (copy_decl_for_dup_finish): Ditto.
25700         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
25701         (note_nonlocal_vla_type): Ditto.
25702         (convert_local_omp_clauses): Ditto.
25703         (remap_vla_decls): Ditto.
25704         (fixup_vla_decls): Ditto.
25705         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
25706         * tree-pretty-print.cc (print_declaration): Ditto.
25707         (print_call_name): Ditto.
25708         * tree-sra.cc (compare_access_positions): Ditto.
25709         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
25710         * tree-ssa-ccp.cc (get_default_value): Ditto.
25711         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
25712         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
25713         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
25714         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
25715         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
25716         * tree-ssa-sink.cc (statement_sink_location): Ditto.
25717         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
25718         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
25719         * tree-ssa-uninit.cc (warn_uninit): Ditto.
25720         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
25721         (non_rewritable_mem_ref_base): Ditto.
25722         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
25723         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
25724         * tree-vect-generic.cc (do_binop): Ditto.
25725         (do_cond): Ditto.
25726         * tree-vect-stmts.cc (vect_init_vector): Ditto.
25727         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
25728         * tree.cc (sign_mask_for): Ditto.
25729         (verify_type_variant): Ditto.
25730         (gimple_canonical_types_compatible_p): Ditto.
25731         (verify_type): Ditto.
25732         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
25733         * var-tracking.cc (prepare_call_arguments): Ditto.
25734         (vt_add_function_parameters): Ditto.
25735         * varasm.cc (decode_addr_const): Ditto.
25737 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
25739         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
25740         (lower_reduction_clauses): Ditto.
25741         (lower_send_clauses): Ditto.
25742         (lower_omp_task_reductions): Ditto.
25743         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
25744         (worker_single_copy): Ditto.
25745         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
25746         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
25748 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
25750         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
25751         tree.h.
25752         (lto_read_body_or_constructor): Ditto.
25753         * lto-streamer-out.cc (tree_is_indexable): Ditto.
25754         (lto_output_var_decl_ref): Ditto.
25755         (DFS::DFS_write_tree_body): Ditto.
25756         (wrap_refs): Ditto.
25757         (write_symbol_extension_info): Ditto.
25759 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
25761         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
25762         defines from tree.h.
25763         (aarch64_mangle_type): Ditto.
25764         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
25765         (alpha_gimplify_va_arg_1): Ditto.
25766         * config/arc/arc.cc (arc_encode_section_info): Ditto.
25767         (arc_is_aux_reg_p): Ditto.
25768         (arc_is_uncached_mem_p): Ditto.
25769         (arc_handle_aux_attribute): Ditto.
25770         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
25771         (arm_handle_cmse_nonsecure_call): Ditto.
25772         (arm_set_default_type_attributes): Ditto.
25773         (arm_is_segment_info_known): Ditto.
25774         (arm_mangle_type): Ditto.
25775         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
25776         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
25777         (avr_decl_absdata_p): Ditto.
25778         (avr_insert_attributes): Ditto.
25779         (avr_section_type_flags): Ditto.
25780         (avr_encode_section_info): Ditto.
25781         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
25782         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
25783         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
25784         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
25785         (csky_mangle_type): Ditto.
25786         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
25787         * config/darwin.cc (is_objc_metadata): Ditto.
25788         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
25789         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
25790         * config/frv/frv.cc (frv_emit_movsi): Ditto.
25791         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
25792         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
25793         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
25794         * config/i386/i386-expand.cc: Ditto.
25795         * config/i386/i386.cc (type_natural_mode): Ditto.
25796         (ix86_function_arg): Ditto.
25797         (ix86_data_alignment): Ditto.
25798         (ix86_local_alignment): Ditto.
25799         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
25800         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
25801         (i386_pe_type_dllexport_p): Ditto.
25802         (i386_pe_adjust_class_at_definition): Ditto.
25803         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
25804         (i386_pe_binds_local_p): Ditto.
25805         (i386_pe_section_type_flags): Ditto.
25806         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
25807         (ia64_gimplify_va_arg): Ditto.
25808         (ia64_in_small_data_p): Ditto.
25809         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
25810         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
25811         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
25812         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
25813         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
25814         (mcore_encode_section_info): Ditto.
25815         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
25816         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
25817         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
25818         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
25819         (pass_in_memory): Ditto.
25820         (nvptx_generate_vector_shuffle): Ditto.
25821         (nvptx_lockless_update): Ditto.
25822         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
25823         (pa_function_value): Ditto.
25824         (pa_function_arg): Ditto.
25825         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
25826         (TEXT_SPACE_P): Ditto.
25827         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
25828         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
25829         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
25830         (riscv_mangle_type): Ditto.
25831         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
25832         (rl78_addsi3_internal): Ditto.
25833         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
25834         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
25835         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
25836         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
25837         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
25838         (rs6000_function_arg_advance_1): Ditto.
25839         (rs6000_function_arg): Ditto.
25840         (rs6000_pass_by_reference): Ditto.
25841         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
25842         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
25843         (rs6000_set_default_type_attributes): Ditto.
25844         (rs6000_elf_in_small_data_p): Ditto.
25845         (IN_NAMED_SECTION): Ditto.
25846         (rs6000_xcoff_encode_section_info): Ditto.
25847         (rs6000_function_value): Ditto.
25848         (invalid_arg_for_unprototyped_fn): Ditto.
25849         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
25850         (s390_vec_n_elem): Ditto.
25851         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
25852         (s390_function_arg_integer): Ditto.
25853         (s390_return_in_memory): Ditto.
25854         (s390_encode_section_info): Ditto.
25855         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
25856         (sh_function_value): Ditto.
25857         * config/sol2.cc (solaris_insert_attributes): Ditto.
25858         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
25859         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
25860         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
25861         (xstormy16_handle_below100_attribute): Ditto.
25862         * config/v850/v850.cc (v850_encode_section_info): Ditto.
25863         (v850_insert_attributes): Ditto.
25864         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
25865         (visium_return_in_memory): Ditto.
25866         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
25868 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
25870         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
25871         (ix86_expand_vecop_qihi): Add op2vec bool variable.
25872         Do not set REG_EQUAL note.
25873         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
25874         Add prototype.
25875         * config/i386/i386.cc (ix86_multiplication_cost): Handle
25876         V4QImode and V8QImode.
25877         * config/i386/mmx.md (mulv8qi3): New expander.
25878         (mulv4qi3): Ditto.
25879         * config/i386/sse.md (mulv8qi3): Remove.
25881 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
25883         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
25885 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
25887         PR bootstrap/105831
25888         * config.gcc: Use = operator instead of ==.
25890 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
25892         PR bootstrap/105831
25893         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
25894         * configure.ac: Likewise.
25895         * configure: Regenerate.
25897 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
25899         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
25900         (__ARM_mve_coerce1): Remove.
25901         (__ARM_mve_coerce2): Remove.
25902         (__ARM_mve_coerce3): Remove.
25903         (__ARM_mve_coerce_i_scalar): New.
25904         (__ARM_mve_coerce_s8_ptr): New.
25905         (__ARM_mve_coerce_u8_ptr): New.
25906         (__ARM_mve_coerce_s16_ptr): New.
25907         (__ARM_mve_coerce_u16_ptr): New.
25908         (__ARM_mve_coerce_s32_ptr): New.
25909         (__ARM_mve_coerce_u32_ptr): New.
25910         (__ARM_mve_coerce_s64_ptr): New.
25911         (__ARM_mve_coerce_u64_ptr): New.
25912         (__ARM_mve_coerce_f_scalar): New.
25913         (__ARM_mve_coerce_f16_ptr): New.
25914         (__ARM_mve_coerce_f32_ptr): New.
25915         (__arm_vst4q): Change _coerce_ overloads.
25916         (__arm_vbicq): Change _coerce_ overloads.
25917         (__arm_vld1q): Change _coerce_ overloads.
25918         (__arm_vld1q_z): Change _coerce_ overloads.
25919         (__arm_vld2q): Change _coerce_ overloads.
25920         (__arm_vld4q): Change _coerce_ overloads.
25921         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
25922         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
25923         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
25924         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
25925         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
25926         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
25927         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
25928         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
25929         (__arm_vst1q_p): Change _coerce_ overloads.
25930         (__arm_vst2q): Change _coerce_ overloads.
25931         (__arm_vst1q): Change _coerce_ overloads.
25932         (__arm_vstrhq): Change _coerce_ overloads.
25933         (__arm_vstrhq_p): Change _coerce_ overloads.
25934         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
25935         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
25936         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
25937         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
25938         (__arm_vstrwq_p): Change _coerce_ overloads.
25939         (__arm_vstrwq): Change _coerce_ overloads.
25940         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
25941         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
25942         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
25943         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
25944         (__arm_vsetq_lane): Change _coerce_ overloads.
25945         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
25946         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
25947         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
25948         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
25949         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
25950         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
25951         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
25952         (__arm_vidupq_x_u8): Change _coerce_ overloads.
25953         (__arm_vddupq_x_u8): Change _coerce_ overloads.
25954         (__arm_vidupq_x_u16): Change _coerce_ overloads.
25955         (__arm_vddupq_x_u16): Change _coerce_ overloads.
25956         (__arm_vidupq_x_u32): Change _coerce_ overloads.
25957         (__arm_vddupq_x_u32): Change _coerce_ overloads.
25958         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
25959         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
25960         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
25961         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
25962         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
25963         (__arm_vidupq_u16): Change _coerce_ overloads.
25964         (__arm_vidupq_u32): Change _coerce_ overloads.
25965         (__arm_vidupq_u8): Change _coerce_ overloads.
25966         (__arm_vddupq_u16): Change _coerce_ overloads.
25967         (__arm_vddupq_u32): Change _coerce_ overloads.
25968         (__arm_vddupq_u8): Change _coerce_ overloads.
25969         (__arm_viwdupq_m): Change _coerce_ overloads.
25970         (__arm_viwdupq_u16): Change _coerce_ overloads.
25971         (__arm_viwdupq_u32): Change _coerce_ overloads.
25972         (__arm_viwdupq_u8): Change _coerce_ overloads.
25973         (__arm_vdwdupq_m): Change _coerce_ overloads.
25974         (__arm_vdwdupq_u16): Change _coerce_ overloads.
25975         (__arm_vdwdupq_u32): Change _coerce_ overloads.
25976         (__arm_vdwdupq_u8): Change _coerce_ overloads.
25977         (__arm_vstrbq): Change _coerce_ overloads.
25978         (__arm_vstrbq_p): Change _coerce_ overloads.
25979         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
25980         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
25981         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
25982         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
25983         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
25985 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
25987         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
25988         scalar constant.
25990 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
25992         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
25993         (__arm_vadcq_u32): Likewise.
25994         (__arm_vadcq_m_s32): Likewise.
25995         (__arm_vadcq_m_u32): Likewise.
25996         (__arm_vsbcq_s32): Likewise.
25997         (__arm_vsbcq_u32): Likewise.
25998         (__arm_vsbcq_m_s32): Likewise.
25999         (__arm_vsbcq_m_u32): Likewise.
26000         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
26002 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
26004         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
26005         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
26006         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
26007         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
26008         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
26009         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
26010         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
26011         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
26012         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
26013         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
26014         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
26015         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
26016         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
26017         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
26018         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
26019         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
26020         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
26021         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
26022         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
26023         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
26024         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
26025         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
26026         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
26027         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
26028         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
26029         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
26030         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
26031         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
26032         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
26033         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
26034         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
26035         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
26036         (mve_vorrq_m_f<mode>)
26037         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
26038         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
26039         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
26040         capitalization in the emitted asm.
26042 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
26044         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
26045         predicates.md.
26046         (Ri): Move constraint definition from predicates.md.
26047         (Rl): Define new constraint.
26048         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
26049         missing constraint.
26050         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
26051         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
26052         op 2. Fix asm output spacing.
26053         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
26054         * config/arm/predicates.md (Ri) Move constraint to constraints.md
26055         (mve_vldrd_immediate): Move it from
26056         constraints.md.
26057         (mve_vstrw_immediate): New predicate.
26059 2023-05-18  Pan Li  <pan2.li@intel.com>
26060             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26061             Kito Cheng  <kito.cheng@sifive.com>
26062             Richard Biener  <rguenther@suse.de>
26063             Richard Sandiford  <richard.sandiford@arm.com>
26065         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
26066         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
26067         (struct table_elt): Extend machine_mode to 16 bits.
26068         (struct set): Ditto.
26069         * genmodes.cc (emit_mode_wider): Extend type from char to short.
26070         (emit_mode_complex): Ditto.
26071         (emit_mode_inner): Ditto.
26072         (emit_class_narrowest_mode): Ditto.
26073         * genopinit.cc (main): Extend the machine_mode limit.
26074         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
26075         re-ordered the struct fields for padding.
26076         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
26077         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
26078         (get_mode_alignment): Extend type from char to short.
26079         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
26080         removed the ATTRIBUTE_PACKED.
26081         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
26082         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
26083         m_kind to 2 bits and remove m_spare.
26084         * rtl.h (RTX_CODE_BITSIZE): New macro.
26085         (struct rtx_def): Swap both the bit size and location between the
26086         rtx_code and the machine_mode.
26087         (subreg_shape::unique_id): Extend the machine_mode limit.
26088         * rtlanal.h: Extend machine_mode to 16 bits.
26089         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
26090         bits and re-ordered the struct fields for padding.
26091         (struct tree_decl_common): Extend machine_mode to 16 bits.
26093 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
26095         * genrecog.cc (print_nonbool_test): Fix type error of
26096         switch (SUBREG_BYTE (op))'.
26098 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
26100         * common/config/riscv/riscv-common.cc: Remove
26101         trailing spaces on lines.
26102         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
26103         * config/riscv/riscv.h (enum reg_class): Likewise.
26104         * config/riscv/riscv.md: Likewise.
26106 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
26108         * config/pa/pa.md (clear_cache): New.
26110 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
26112         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
26113         parenthesis.  Fix misnamed index entry.
26114         <concept>: Fix misnamed index entry.
26116 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
26118         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
26119         combined from ...
26120         (*<optab>si3_mask, *<optab>di3_mask): Here.
26121         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
26122         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
26123         pattern.
26124         (*<bitmanip_optab>si3_sext_mask): Likewise.
26125         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
26126         and const_di_mask_operand.
26127         (bitmanip_rotate): New iterator.
26128         (bitmanip_optab): Add rotates.
26129         * config/riscv/predicates.md (const_si_mask_operand): Renamed
26130         from const31_operand.  Generalize to handle more mask constants.
26131         (const_di_mask_operand): Similarly.
26133 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
26135         PR c++/109884
26136         * config/i386/i386-builtin-types.def (FLOAT128): Use
26137         float128t_type_node rather than float128_type_node.
26139 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
26141         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
26142         FP_CONTRACT_FAST (no functional change).
26144 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
26146         * config/i386/i386.cc (ix86_multiplication_cost): Correct
26147         calcuation of integer vector mode costs to reflect generated
26148         instruction sequences of different integer vector modes and
26149         different target ABIs.
26151 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26153         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
26154         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
26155         (riscv_mode_needed): Ditto.
26156         (riscv_mode_after): Ditto.
26157         (riscv_mode_entry): Ditto.
26158         (riscv_mode_exit): Ditto.
26159         (riscv_mode_priority): Ditto.
26160         (TARGET_MODE_EMIT): New target hook.
26161         (TARGET_MODE_NEEDED): Ditto.
26162         (TARGET_MODE_AFTER): Ditto.
26163         (TARGET_MODE_ENTRY): Ditto.
26164         (TARGET_MODE_EXIT): Ditto.
26165         (TARGET_MODE_PRIORITY): Ditto.
26166         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
26167         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
26168         * config/riscv/riscv.md: Add csrwvxrm.
26169         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
26170         (vxrmsi): New pattern.
26172 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26174         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
26175         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
26176         (struct narrow_alu_def): Ditto.
26177         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
26178         (function_expander::use_exact_insn): Ditto.
26179         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
26180         (function_base::has_rounding_mode_operand_p): New function.
26182 2023-05-17  Andrew Pinski  <apinski@marvell.com>
26184         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
26185         against 0 instead of calling integer_zerop.
26187 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26189         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
26190         (DEF_RVV_VXRM_ENUM): New macro.
26191         (handle_pragma_vector): Add vxrm enum register.
26192         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
26193         (RNU): Ditto.
26194         (RNE): Ditto.
26195         (RDN): Ditto.
26196         (ROD): Ditto.
26198 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
26200         * value-range.h (Value_Range::operator=): New.
26202 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
26204         * value-range.cc (vrange::operator=): Add a stub to copy
26205         unsupported ranges.
26206         * value-range.h (is_a <unsupported_range>): New.
26207         (Value_Range::operator=): Support copying unsupported ranges.
26209 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
26211         * data-streamer-in.cc (streamer_read_real_value): New.
26212         (streamer_read_value_range): New.
26213         * data-streamer-out.cc (streamer_write_real_value): New.
26214         (streamer_write_vrange): New.
26215         * data-streamer.h (streamer_write_vrange): New.
26216         (streamer_read_value_range): New.
26218 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
26220         PR c++/109532
26221         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
26222         is ignored for a fixed underlying type.
26223         (C++ Dialect Options): Likewise for -fstrict-enums.
26225 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
26227         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
26228         special case.
26230 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26232         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
26233         New.
26234         (s390_atomic_align_for_mode): New.
26236 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
26238         * wide-int.cc (wi::from_array): Add missing closing paren in function
26239         comment.
26241 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
26243         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
26244         suggested unroll factor once the previous analysis fails.
26246 2023-05-17  Pan Li  <pan2.li@intel.com>
26248         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
26249         macro.
26250         (main): Add bool1 to the type indexer.
26251         * config/riscv/riscv-vector-builtins-functions.def
26252         (vreinterpret): Register vbool1 interpret function.
26253         * config/riscv/riscv-vector-builtins-types.def
26254         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
26255         (vint8m1_t): Add the type to bool1_interpret_ops.
26256         (vint16m1_t): Ditto.
26257         (vint32m1_t): Ditto.
26258         (vint64m1_t): Ditto.
26259         (vuint8m1_t): Ditto.
26260         (vuint16m1_t): Ditto.
26261         (vuint32m1_t): Ditto.
26262         (vuint64m1_t): Ditto.
26263         * config/riscv/riscv-vector-builtins.cc
26264         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
26265         (required_extensions_p): Add bool1 interpret case.
26266         * config/riscv/riscv-vector-builtins.def
26267         (bool1_interpret): Add bool1 interpret to base type.
26268         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
26269         with VB dest for vreinterpret.
26271 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
26273         PR target/106708
26274         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
26275         constants through "lis; xoris".
26277 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
26279         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
26280         default rs6000 target pass for O2 and above.
26281         * doc/invoke.texi: Document -free
26283 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
26285         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
26286         Fix wrong select_kind...
26288 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26290         * config/s390/s390-protos.h (s390_expand_setmem): Change
26291         function signature.
26292         * config/s390/s390.cc (s390_expand_setmem): For memset's less
26293         than or equal to 256 byte do not perform a libc call.
26294         * config/s390/s390.md: Change expander into a version which
26295         takes 8 operands.
26297 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26299         * config/s390/s390-protos.h (s390_expand_movmem): New.
26300         * config/s390/s390.cc (s390_expand_movmem): New.
26301         * config/s390/s390.md (movmem<mode>): New.
26302         (*mvcrl): New.
26303         (mvcrl): New.
26305 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26307         * config/s390/s390-protos.h (s390_expand_cpymem): Change
26308         function signature.
26309         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
26310         than or equal to 256 byte do not perform a libc call.
26311         (s390_expand_insv): Adapt new function signature of
26312         s390_expand_cpymem.
26313         * config/s390/s390.md: Change expander into a version which
26314         takes 8 operands.
26316 2023-05-16  Andrew Pinski  <apinski@marvell.com>
26318         PR tree-optimization/109424
26319         * match.pd: Add patterns for min/max of zero_one_valued
26320         values to `&`/`|`.
26322 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26324         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
26325         * config/riscv/riscv-vector-builtins.cc
26326         (function_expander::use_ternop_insn): Add default rounding mode.
26327         (function_expander::use_widen_ternop_insn): Ditto.
26328         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
26329         (riscv_hard_regno_mode_ok): Ditto.
26330         (riscv_conditional_register_usage): Ditto.
26331         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
26332         (FRM_REG_P): Ditto.
26333         (RISCV_DWARF_FRM): Ditto.
26334         * config/riscv/riscv.md: Ditto.
26335         * config/riscv/vector-iterators.md: split no frm and has frm operations.
26336         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
26337         (@pred_<optab><mode>): Ditto.
26339 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
26341         PR tree-optimization/109695
26342         * value-range.cc (irange::operator=): Resize range.
26343         (irange::union_): Same.
26344         (irange::intersect): Same.
26345         (irange::invert): Same.
26346         (int_range_max): Default to 3 sub-ranges and resize as needed.
26347         * value-range.h (irange::maybe_resize): New.
26348         (~int_range): New.
26349         (int_range::int_range): Adjust for resizing.
26350         (int_range::operator=): Same.
26352 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
26354         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
26355         range copying
26356         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
26357         when range changed.
26359 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26361         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
26362         * config/riscv/riscv-vector-builtins.cc
26363         (function_expander::use_exact_insn): Add default rounding mode operand.
26364         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
26365         (riscv_hard_regno_mode_ok): Ditto.
26366         (riscv_conditional_register_usage): Ditto.
26367         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
26368         (VXRM_REG_P): Ditto.
26369         (RISCV_DWARF_VXRM): Ditto.
26370         * config/riscv/riscv.md: Ditto.
26371         * config/riscv/vector.md: Ditto
26373 2023-05-15  Pan Li  <pan2.li@intel.com>
26375         * optabs.cc (maybe_gen_insn): Add case to generate instruction
26376         that has 11 operands.
26378 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26380         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
26381         logic for vector modes.
26383 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26385         PR target/99195
26386         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
26387         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
26388         (aarch64_cmtst<mode>): Rename to...
26389         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
26390         (*aarch64_cmtst_same_<mode>): Rename to...
26391         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
26392         (*aarch64_cmtstdi): Rename to...
26393         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
26394         (aarch64_fac<optab><mode>): Rename to...
26395         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
26397 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26399         PR target/99195
26400         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
26401         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
26403 2023-05-15  Pan Li  <pan2.li@intel.com>
26404             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26405             kito-cheng  <kito.cheng@sifive.com>
26407         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
26408         deciding the mode is constant or not.
26409         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
26411 2023-05-15  Richard Biener  <rguenther@suse.de>
26413         PR tree-optimization/109848
26414         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
26415         TARGET_MEM_REF address preparation before the store, not
26416         before the CTOR.
26418 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26420         * config/riscv/riscv.cc
26421         (riscv_vectorize_preferred_vector_alignment): New function.
26422         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
26424 2023-05-14  Andrew Pinski  <apinski@marvell.com>
26426         PR tree-optimization/109829
26427         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
26429 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
26431         PR target/109807
26432         * config/i386/i386.cc: Revert the 2023-05-11 change.
26433         (ix86_widen_mult_cost): Return high value instead of
26434         ICEing for unsupported modes.
26436 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
26438         * config/i386/i386.cc (x86_function_profiler): Take
26439         ix86_direct_extern_access into account when generating calls
26440         to __fentry__()
26442 2023-05-14  Pan Li  <pan2.li@intel.com>
26444         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
26445         Refactor the or pattern to switch cases.
26447 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26449         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
26450         aarch64_expand_vector_init to this, and remove  interleaving case.
26451         Recursively call aarch64_expand_vector_init_fallback, instead of
26452         aarch64_expand_vector_init.
26453         (aarch64_unzip_vector_init): New function.
26454         (aarch64_expand_vector_init): Likewise.
26456 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
26458         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
26459         Pull out function call from the gcc_assert.
26461 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
26463         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
26464         (policy_to_str): New.
26465         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
26467 2023-05-13  Andrew Pinski  <apinski@marvell.com>
26469         PR tree-optimization/109834
26470         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
26471         (popcount(rotate(x,y))->popcount(x)): Likewise.
26473 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
26475         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
26476         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
26477         gen_extend_insn to generate zero/sign extension instructions.
26478         Fix comments.
26479         (ix86_expand_vecop_qihi): Initialize interleave functions
26480         for MULT code only.  Fix comments.
26482 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
26484         PR target/109797
26485         * config/i386/mmx.md (mulv2si3): Remove expander.
26486         (mulv2si3): Rename insn pattern from *mulv2si.
26488 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
26490         PR libstdc++/109816
26491         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
26492         '!lto_stream_offload_p'.
26494 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
26495             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26497         PR target/109743
26498         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
26499         (local_avl_compatible_p): New.
26500         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
26501         for LCM, rewrite as a backward algorithm.
26502         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
26503         interface, handle a BB at once.
26505 2023-05-12  Richard Biener  <rguenther@suse.de>
26507         PR tree-optimization/64731
26508         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
26509         handle TARGET_MEM_REF destinations of stores from vector
26510         CTORs.
26512 2023-05-12  Richard Biener  <rguenther@suse.de>
26514         PR tree-optimization/109791
26515         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
26516         New pattern.
26517         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
26518         Likewise.
26520 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26522         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
26523         * config/arm/arm-mve-builtins-base.def (vsriq): New.
26524         * config/arm/arm-mve-builtins-base.h (vsriq): New.
26525         * config/arm/arm-mve-builtins.cc
26526         (function_instance::has_inactive_argument): Handle vsriq.
26527         * config/arm/arm_mve.h (vsriq): Remove.
26528         (vsriq_m): Remove.
26529         (vsriq_n_u8): Remove.
26530         (vsriq_n_s8): Remove.
26531         (vsriq_n_u16): Remove.
26532         (vsriq_n_s16): Remove.
26533         (vsriq_n_u32): Remove.
26534         (vsriq_n_s32): Remove.
26535         (vsriq_m_n_s8): Remove.
26536         (vsriq_m_n_u8): Remove.
26537         (vsriq_m_n_s16): Remove.
26538         (vsriq_m_n_u16): Remove.
26539         (vsriq_m_n_s32): Remove.
26540         (vsriq_m_n_u32): Remove.
26541         (__arm_vsriq_n_u8): Remove.
26542         (__arm_vsriq_n_s8): Remove.
26543         (__arm_vsriq_n_u16): Remove.
26544         (__arm_vsriq_n_s16): Remove.
26545         (__arm_vsriq_n_u32): Remove.
26546         (__arm_vsriq_n_s32): Remove.
26547         (__arm_vsriq_m_n_s8): Remove.
26548         (__arm_vsriq_m_n_u8): Remove.
26549         (__arm_vsriq_m_n_s16): Remove.
26550         (__arm_vsriq_m_n_u16): Remove.
26551         (__arm_vsriq_m_n_s32): Remove.
26552         (__arm_vsriq_m_n_u32): Remove.
26553         (__arm_vsriq): Remove.
26554         (__arm_vsriq_m): Remove.
26556 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26558         * config/arm/iterators.md (mve_insn): Add vsri.
26559         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
26560         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
26561         (mve_vsriq_m_n_<supf><mode>): Rename into ...
26562         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26564 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26566         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
26567         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
26569 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26571         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
26572         * config/arm/arm-mve-builtins-base.def (vsliq): New.
26573         * config/arm/arm-mve-builtins-base.h (vsliq): New.
26574         * config/arm/arm-mve-builtins.cc
26575         (function_instance::has_inactive_argument): Handle vsliq.
26576         * config/arm/arm_mve.h (vsliq): Remove.
26577         (vsliq_m): Remove.
26578         (vsliq_n_u8): Remove.
26579         (vsliq_n_s8): Remove.
26580         (vsliq_n_u16): Remove.
26581         (vsliq_n_s16): Remove.
26582         (vsliq_n_u32): Remove.
26583         (vsliq_n_s32): Remove.
26584         (vsliq_m_n_s8): Remove.
26585         (vsliq_m_n_s32): Remove.
26586         (vsliq_m_n_s16): Remove.
26587         (vsliq_m_n_u8): Remove.
26588         (vsliq_m_n_u32): Remove.
26589         (vsliq_m_n_u16): Remove.
26590         (__arm_vsliq_n_u8): Remove.
26591         (__arm_vsliq_n_s8): Remove.
26592         (__arm_vsliq_n_u16): Remove.
26593         (__arm_vsliq_n_s16): Remove.
26594         (__arm_vsliq_n_u32): Remove.
26595         (__arm_vsliq_n_s32): Remove.
26596         (__arm_vsliq_m_n_s8): Remove.
26597         (__arm_vsliq_m_n_s32): Remove.
26598         (__arm_vsliq_m_n_s16): Remove.
26599         (__arm_vsliq_m_n_u8): Remove.
26600         (__arm_vsliq_m_n_u32): Remove.
26601         (__arm_vsliq_m_n_u16): Remove.
26602         (__arm_vsliq): Remove.
26603         (__arm_vsliq_m): Remove.
26605 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26607         * config/arm/iterators.md (mve_insn>): Add vsli.
26608         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
26609         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
26610         (mve_vsliq_m_n_<supf><mode>): Rename into ...
26611         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26613 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26615         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
26616         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
26618 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26620         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
26621         * config/arm/arm-mve-builtins-base.def (vpselq): New.
26622         * config/arm/arm-mve-builtins-base.h (vpselq): New.
26623         * config/arm/arm_mve.h (vpselq): Remove.
26624         (vpselq_u8): Remove.
26625         (vpselq_s8): Remove.
26626         (vpselq_u16): Remove.
26627         (vpselq_s16): Remove.
26628         (vpselq_u32): Remove.
26629         (vpselq_s32): Remove.
26630         (vpselq_u64): Remove.
26631         (vpselq_s64): Remove.
26632         (vpselq_f16): Remove.
26633         (vpselq_f32): Remove.
26634         (__arm_vpselq_u8): Remove.
26635         (__arm_vpselq_s8): Remove.
26636         (__arm_vpselq_u16): Remove.
26637         (__arm_vpselq_s16): Remove.
26638         (__arm_vpselq_u32): Remove.
26639         (__arm_vpselq_s32): Remove.
26640         (__arm_vpselq_u64): Remove.
26641         (__arm_vpselq_s64): Remove.
26642         (__arm_vpselq_f16): Remove.
26643         (__arm_vpselq_f32): Remove.
26644         (__arm_vpselq): Remove.
26646 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26648         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
26649         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
26651 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26653         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
26654         gen_mve_vpselq.
26655         * config/arm/iterators.md (MVE_VPSELQ_F): New.
26656         (mve_insn): Add vpsel.
26657         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
26658         (@mve_<mve_insn>q_<supf><mode>): ... this.
26659         (@mve_vpselq_f<mode>): Rename into ...
26660         (@mve_<mve_insn>q_f<mode>): ... this.
26662 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26664         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
26665         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
26666         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
26667         * config/arm/arm-mve-builtins.cc
26668         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
26669         vfmsq.
26670         * config/arm/arm_mve.h (vfmaq): Remove.
26671         (vfmasq): Remove.
26672         (vfmsq): Remove.
26673         (vfmaq_m): Remove.
26674         (vfmasq_m): Remove.
26675         (vfmsq_m): Remove.
26676         (vfmaq_f16): Remove.
26677         (vfmaq_n_f16): Remove.
26678         (vfmasq_n_f16): Remove.
26679         (vfmsq_f16): Remove.
26680         (vfmaq_f32): Remove.
26681         (vfmaq_n_f32): Remove.
26682         (vfmasq_n_f32): Remove.
26683         (vfmsq_f32): Remove.
26684         (vfmaq_m_f32): Remove.
26685         (vfmaq_m_f16): Remove.
26686         (vfmaq_m_n_f32): Remove.
26687         (vfmaq_m_n_f16): Remove.
26688         (vfmasq_m_n_f32): Remove.
26689         (vfmasq_m_n_f16): Remove.
26690         (vfmsq_m_f32): Remove.
26691         (vfmsq_m_f16): Remove.
26692         (__arm_vfmaq_f16): Remove.
26693         (__arm_vfmaq_n_f16): Remove.
26694         (__arm_vfmasq_n_f16): Remove.
26695         (__arm_vfmsq_f16): Remove.
26696         (__arm_vfmaq_f32): Remove.
26697         (__arm_vfmaq_n_f32): Remove.
26698         (__arm_vfmasq_n_f32): Remove.
26699         (__arm_vfmsq_f32): Remove.
26700         (__arm_vfmaq_m_f32): Remove.
26701         (__arm_vfmaq_m_f16): Remove.
26702         (__arm_vfmaq_m_n_f32): Remove.
26703         (__arm_vfmaq_m_n_f16): Remove.
26704         (__arm_vfmasq_m_n_f32): Remove.
26705         (__arm_vfmasq_m_n_f16): Remove.
26706         (__arm_vfmsq_m_f32): Remove.
26707         (__arm_vfmsq_m_f16): Remove.
26708         (__arm_vfmaq): Remove.
26709         (__arm_vfmasq): Remove.
26710         (__arm_vfmsq): Remove.
26711         (__arm_vfmaq_m): Remove.
26712         (__arm_vfmasq_m): Remove.
26713         (__arm_vfmsq_m): Remove.
26715 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26717         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
26718         VFMSQ_M_F.
26719         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
26720         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
26721         (mve_insn): Add vfma, vfmas, vfms.
26722         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
26723         into ...
26724         (@mve_<mve_insn>q_f<mode>): ... this.
26725         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
26726         (@mve_<mve_insn>q_n_f<mode>): ... this.
26727         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
26728         @mve_<mve_insn>q_m_f<mode>.
26729         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
26730         @mve_<mve_insn>q_m_n_f<mode>.
26732 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26734         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
26735         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
26737 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26739         * config/arm/arm-mve-builtins-base.cc
26740         (FUNCTION_WITH_RTX_M_N_NO_F): New.
26741         (vmvnq): New.
26742         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
26743         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
26744         * config/arm/arm_mve.h (vmvnq): Remove.
26745         (vmvnq_m): Remove.
26746         (vmvnq_x): Remove.
26747         (vmvnq_s8): Remove.
26748         (vmvnq_s16): Remove.
26749         (vmvnq_s32): Remove.
26750         (vmvnq_n_s16): Remove.
26751         (vmvnq_n_s32): Remove.
26752         (vmvnq_u8): Remove.
26753         (vmvnq_u16): Remove.
26754         (vmvnq_u32): Remove.
26755         (vmvnq_n_u16): Remove.
26756         (vmvnq_n_u32): Remove.
26757         (vmvnq_m_u8): Remove.
26758         (vmvnq_m_s8): Remove.
26759         (vmvnq_m_u16): Remove.
26760         (vmvnq_m_s16): Remove.
26761         (vmvnq_m_u32): Remove.
26762         (vmvnq_m_s32): Remove.
26763         (vmvnq_m_n_s16): Remove.
26764         (vmvnq_m_n_u16): Remove.
26765         (vmvnq_m_n_s32): Remove.
26766         (vmvnq_m_n_u32): Remove.
26767         (vmvnq_x_s8): Remove.
26768         (vmvnq_x_s16): Remove.
26769         (vmvnq_x_s32): Remove.
26770         (vmvnq_x_u8): Remove.
26771         (vmvnq_x_u16): Remove.
26772         (vmvnq_x_u32): Remove.
26773         (vmvnq_x_n_s16): Remove.
26774         (vmvnq_x_n_s32): Remove.
26775         (vmvnq_x_n_u16): Remove.
26776         (vmvnq_x_n_u32): Remove.
26777         (__arm_vmvnq_s8): Remove.
26778         (__arm_vmvnq_s16): Remove.
26779         (__arm_vmvnq_s32): Remove.
26780         (__arm_vmvnq_n_s16): Remove.
26781         (__arm_vmvnq_n_s32): Remove.
26782         (__arm_vmvnq_u8): Remove.
26783         (__arm_vmvnq_u16): Remove.
26784         (__arm_vmvnq_u32): Remove.
26785         (__arm_vmvnq_n_u16): Remove.
26786         (__arm_vmvnq_n_u32): Remove.
26787         (__arm_vmvnq_m_u8): Remove.
26788         (__arm_vmvnq_m_s8): Remove.
26789         (__arm_vmvnq_m_u16): Remove.
26790         (__arm_vmvnq_m_s16): Remove.
26791         (__arm_vmvnq_m_u32): Remove.
26792         (__arm_vmvnq_m_s32): Remove.
26793         (__arm_vmvnq_m_n_s16): Remove.
26794         (__arm_vmvnq_m_n_u16): Remove.
26795         (__arm_vmvnq_m_n_s32): Remove.
26796         (__arm_vmvnq_m_n_u32): Remove.
26797         (__arm_vmvnq_x_s8): Remove.
26798         (__arm_vmvnq_x_s16): Remove.
26799         (__arm_vmvnq_x_s32): Remove.
26800         (__arm_vmvnq_x_u8): Remove.
26801         (__arm_vmvnq_x_u16): Remove.
26802         (__arm_vmvnq_x_u32): Remove.
26803         (__arm_vmvnq_x_n_s16): Remove.
26804         (__arm_vmvnq_x_n_s32): Remove.
26805         (__arm_vmvnq_x_n_u16): Remove.
26806         (__arm_vmvnq_x_n_u32): Remove.
26807         (__arm_vmvnq): Remove.
26808         (__arm_vmvnq_m): Remove.
26809         (__arm_vmvnq_x): Remove.
26811 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26813         * config/arm/iterators.md (mve_insn): Add vmvn.
26814         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
26815         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
26816         (mve_vmvnq_m_<supf><mode>): Rename into ...
26817         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
26818         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
26819         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26821 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26823         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
26824         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
26826 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26828         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
26829         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
26830         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
26831         * config/arm/arm_mve.h (vbrsrq): Remove.
26832         (vbrsrq_m): Remove.
26833         (vbrsrq_x): Remove.
26834         (vbrsrq_n_f16): Remove.
26835         (vbrsrq_n_f32): Remove.
26836         (vbrsrq_n_u8): Remove.
26837         (vbrsrq_n_s8): Remove.
26838         (vbrsrq_n_u16): Remove.
26839         (vbrsrq_n_s16): Remove.
26840         (vbrsrq_n_u32): Remove.
26841         (vbrsrq_n_s32): Remove.
26842         (vbrsrq_m_n_s8): Remove.
26843         (vbrsrq_m_n_s32): Remove.
26844         (vbrsrq_m_n_s16): Remove.
26845         (vbrsrq_m_n_u8): Remove.
26846         (vbrsrq_m_n_u32): Remove.
26847         (vbrsrq_m_n_u16): Remove.
26848         (vbrsrq_m_n_f32): Remove.
26849         (vbrsrq_m_n_f16): Remove.
26850         (vbrsrq_x_n_s8): Remove.
26851         (vbrsrq_x_n_s16): Remove.
26852         (vbrsrq_x_n_s32): Remove.
26853         (vbrsrq_x_n_u8): Remove.
26854         (vbrsrq_x_n_u16): Remove.
26855         (vbrsrq_x_n_u32): Remove.
26856         (vbrsrq_x_n_f16): Remove.
26857         (vbrsrq_x_n_f32): Remove.
26858         (__arm_vbrsrq_n_u8): Remove.
26859         (__arm_vbrsrq_n_s8): Remove.
26860         (__arm_vbrsrq_n_u16): Remove.
26861         (__arm_vbrsrq_n_s16): Remove.
26862         (__arm_vbrsrq_n_u32): Remove.
26863         (__arm_vbrsrq_n_s32): Remove.
26864         (__arm_vbrsrq_m_n_s8): Remove.
26865         (__arm_vbrsrq_m_n_s32): Remove.
26866         (__arm_vbrsrq_m_n_s16): Remove.
26867         (__arm_vbrsrq_m_n_u8): Remove.
26868         (__arm_vbrsrq_m_n_u32): Remove.
26869         (__arm_vbrsrq_m_n_u16): Remove.
26870         (__arm_vbrsrq_x_n_s8): Remove.
26871         (__arm_vbrsrq_x_n_s16): Remove.
26872         (__arm_vbrsrq_x_n_s32): Remove.
26873         (__arm_vbrsrq_x_n_u8): Remove.
26874         (__arm_vbrsrq_x_n_u16): Remove.
26875         (__arm_vbrsrq_x_n_u32): Remove.
26876         (__arm_vbrsrq_n_f16): Remove.
26877         (__arm_vbrsrq_n_f32): Remove.
26878         (__arm_vbrsrq_m_n_f32): Remove.
26879         (__arm_vbrsrq_m_n_f16): Remove.
26880         (__arm_vbrsrq_x_n_f16): Remove.
26881         (__arm_vbrsrq_x_n_f32): Remove.
26882         (__arm_vbrsrq): Remove.
26883         (__arm_vbrsrq_m): Remove.
26884         (__arm_vbrsrq_x): Remove.
26886 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26888         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
26889         (mve_insn): Add vbrsr.
26890         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
26891         (@mve_<mve_insn>q_n_f<mode>): ... this.
26892         (mve_vbrsrq_n_<supf><mode>): Rename into ...
26893         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
26894         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
26895         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26896         (mve_vbrsrq_m_n_f<mode>): Rename into ...
26897         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
26899 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26901         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
26902         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
26904 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26906         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
26907         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
26908         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
26909         * config/arm/arm_mve.h (vqshluq): Remove.
26910         (vqshluq_m): Remove.
26911         (vqshluq_n_s8): Remove.
26912         (vqshluq_n_s16): Remove.
26913         (vqshluq_n_s32): Remove.
26914         (vqshluq_m_n_s8): Remove.
26915         (vqshluq_m_n_s16): Remove.
26916         (vqshluq_m_n_s32): Remove.
26917         (__arm_vqshluq_n_s8): Remove.
26918         (__arm_vqshluq_n_s16): Remove.
26919         (__arm_vqshluq_n_s32): Remove.
26920         (__arm_vqshluq_m_n_s8): Remove.
26921         (__arm_vqshluq_m_n_s16): Remove.
26922         (__arm_vqshluq_m_n_s32): Remove.
26923         (__arm_vqshluq): Remove.
26924         (__arm_vqshluq_m): Remove.
26926 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26928         * config/arm/iterators.md (mve_insn): Add vqshlu.
26929         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
26930         (VQSHLUQ_M_N, VQSHLUQ_N): New.
26931         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
26932         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
26933         (mve_vqshluq_m_n_s<mode>): Change name into ...
26934         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26936 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26938         * config/arm/arm-mve-builtins-shapes.cc
26939         (binary_lshift_unsigned): New.
26940         * config/arm/arm-mve-builtins-shapes.h
26941         (binary_lshift_unsigned): New.
26943 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26945         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
26946         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
26947         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
26948         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
26949         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
26950         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
26951         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
26952         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
26953         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
26954         (vrmlaldavhaxq): Remove.
26955         (vrmlsldavhaq): Remove.
26956         (vrmlsldavhaxq): Remove.
26957         (vrmlaldavhaq_p): Remove.
26958         (vrmlaldavhaxq_p): Remove.
26959         (vrmlsldavhaq_p): Remove.
26960         (vrmlsldavhaxq_p): Remove.
26961         (vrmlaldavhaq_s32): Remove.
26962         (vrmlaldavhaq_u32): Remove.
26963         (vrmlaldavhaxq_s32): Remove.
26964         (vrmlsldavhaq_s32): Remove.
26965         (vrmlsldavhaxq_s32): Remove.
26966         (vrmlaldavhaq_p_s32): Remove.
26967         (vrmlaldavhaq_p_u32): Remove.
26968         (vrmlaldavhaxq_p_s32): Remove.
26969         (vrmlsldavhaq_p_s32): Remove.
26970         (vrmlsldavhaxq_p_s32): Remove.
26971         (__arm_vrmlaldavhaq_s32): Remove.
26972         (__arm_vrmlaldavhaq_u32): Remove.
26973         (__arm_vrmlaldavhaxq_s32): Remove.
26974         (__arm_vrmlsldavhaq_s32): Remove.
26975         (__arm_vrmlsldavhaxq_s32): Remove.
26976         (__arm_vrmlaldavhaq_p_s32): Remove.
26977         (__arm_vrmlaldavhaq_p_u32): Remove.
26978         (__arm_vrmlaldavhaxq_p_s32): Remove.
26979         (__arm_vrmlsldavhaq_p_s32): Remove.
26980         (__arm_vrmlsldavhaxq_p_s32): Remove.
26981         (__arm_vrmlaldavhaq): Remove.
26982         (__arm_vrmlaldavhaxq): Remove.
26983         (__arm_vrmlsldavhaq): Remove.
26984         (__arm_vrmlsldavhaxq): Remove.
26985         (__arm_vrmlaldavhaq_p): Remove.
26986         (__arm_vrmlaldavhaxq_p): Remove.
26987         (__arm_vrmlsldavhaq_p): Remove.
26988         (__arm_vrmlsldavhaxq_p): Remove.
26990 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
26992         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
26993         (MVE_VRMLxLDAVHAxQ_P): New.
26994         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
26995         vrmlsldavhax.
26996         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
26997         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
26998         VRMLALDAVHAQ_P_S.
26999         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
27000         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
27001         (mve_vrmlsldavhaq_sv4si): Merge into ...
27002         (@mve_<mve_insn>q_<supf>v4si): ... this.
27003         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
27004         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
27005         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
27006         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
27008 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
27010         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
27011         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
27012         New.
27013         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
27014         * config/arm/arm_mve.h (vqdmulltq): Remove.
27015         (vqdmullbq): Remove.
27016         (vqdmullbq_m): Remove.
27017         (vqdmulltq_m): Remove.
27018         (vqdmulltq_s16): Remove.
27019         (vqdmulltq_n_s16): Remove.
27020         (vqdmullbq_s16): Remove.
27021         (vqdmullbq_n_s16): Remove.
27022         (vqdmulltq_s32): Remove.
27023         (vqdmulltq_n_s32): Remove.
27024         (vqdmullbq_s32): Remove.
27025         (vqdmullbq_n_s32): Remove.
27026         (vqdmullbq_m_n_s32): Remove.
27027         (vqdmullbq_m_n_s16): Remove.
27028         (vqdmullbq_m_s32): Remove.
27029         (vqdmullbq_m_s16): Remove.
27030         (vqdmulltq_m_n_s32): Remove.
27031         (vqdmulltq_m_n_s16): Remove.
27032         (vqdmulltq_m_s32): Remove.
27033         (vqdmulltq_m_s16): Remove.
27034         (__arm_vqdmulltq_s16): Remove.
27035         (__arm_vqdmulltq_n_s16): Remove.
27036         (__arm_vqdmullbq_s16): Remove.
27037         (__arm_vqdmullbq_n_s16): Remove.
27038         (__arm_vqdmulltq_s32): Remove.
27039         (__arm_vqdmulltq_n_s32): Remove.
27040         (__arm_vqdmullbq_s32): Remove.
27041         (__arm_vqdmullbq_n_s32): Remove.
27042         (__arm_vqdmullbq_m_n_s32): Remove.
27043         (__arm_vqdmullbq_m_n_s16): Remove.
27044         (__arm_vqdmullbq_m_s32): Remove.
27045         (__arm_vqdmullbq_m_s16): Remove.
27046         (__arm_vqdmulltq_m_n_s32): Remove.
27047         (__arm_vqdmulltq_m_n_s16): Remove.
27048         (__arm_vqdmulltq_m_s32): Remove.
27049         (__arm_vqdmulltq_m_s16): Remove.
27050         (__arm_vqdmulltq): Remove.
27051         (__arm_vqdmullbq): Remove.
27052         (__arm_vqdmullbq_m): Remove.
27053         (__arm_vqdmulltq_m): Remove.
27055 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
27057         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
27058         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
27059         (mve_insn): Add vqdmullb, vqdmullt.
27060         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
27061         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
27062         VQDMULLTQ_N_S.
27063         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
27064         (mve_vqdmulltq_n_s<mode>): Merge into ...
27065         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
27066         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
27067         (@mve_<mve_insn>q_<supf><mode>): ... this.
27068         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
27069         ...
27070         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
27071         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
27072         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
27074 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
27076         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
27077         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
27079 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
27081         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
27082         Drop unused parameter.
27083         (riscv_select_multilib): Ditto.
27084         (riscv_compute_multilib): Update call site of
27085         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
27087 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
27089         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
27090         * config/riscv/riscv-protos.h (expand_vec_init): New function.
27091         * config/riscv/riscv-v.cc (class rvv_builder): New class.
27092         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
27093         (rvv_builder::get_merged_repeating_sequence): Ditto.
27094         (expand_vector_init_insert_elems): Ditto.
27095         (expand_vec_init): Ditto.
27096         * config/riscv/vector-iterators.md: New attribute.
27098 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
27100         * config/rs6000/rs6000-builtins.def
27101         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
27102         to xsiexpdp_di.
27103         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
27104         xsiexpdpf to xsiexpdpf_di.
27105         * config/rs6000/vsx.md (xsiexpdp): Rename to...
27106         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
27107         replace TARGET_64BIT with TARGET_POWERPC64.
27108         (xsiexpdpf): Rename to...
27109         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
27110         replace TARGET_64BIT with TARGET_POWERPC64.
27112 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
27114         * config/rs6000/rs6000-builtins.def
27115         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
27116         long long.
27117         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
27118         TARGET_POWERPC64.
27120 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
27122         * config/rs6000/rs6000-builtins.def
27123         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
27124         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
27125         to power9 catalog.
27126         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
27127         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
27128         TARGET_64BIT check.
27129         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
27130         requirement when it has a 64-bit argument.
27132 2023-05-12  Pan Li  <pan2.li@intel.com>
27133             Richard Sandiford  <richard.sandiford@arm.com>
27134             Richard Biener  <rguenther@suse.de>
27135             Jakub Jelinek  <jakub@redhat.com>
27137         * mux-utils.h: Add overload operator == and != for pointer_mux.
27138         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
27139         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
27140         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
27141         (dv_as_decl): Ditto.
27142         (dv_as_opaque): Removed due to unnecessary.
27143         (struct variable_hasher): Take decl_or_value as compare_type.
27144         (variable_hasher::equal): Diito.
27145         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
27146         (dv_from_value): Ditto.
27147         (attrs_list_member):  Ditto.
27148         (vars_copy): Ditto.
27149         (var_reg_decl_set): Ditto.
27150         (var_reg_delete_and_set): Ditto.
27151         (find_loc_in_1pdv): Ditto.
27152         (canonicalize_values_star): Ditto.
27153         (variable_post_merge_new_vals): Ditto.
27154         (dump_onepart_variable_differences): Ditto.
27155         (variable_different_p): Ditto.
27156         (set_slot_part): Ditto.
27157         (clobber_slot_part): Ditto.
27158         (clobber_variable_part): Ditto.
27160 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
27162         * match.pd: simplify vector shift + bit_and + multiply.
27164 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27166         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
27167         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
27168         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
27169         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
27170         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
27171         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
27172         * config/arm/arm-mve-builtins.cc
27173         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
27174         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
27175         * config/arm/arm_mve.h (vqrdmlashq): Remove.
27176         (vqrdmlahq): Remove.
27177         (vqdmlashq): Remove.
27178         (vqdmlahq): Remove.
27179         (vmlasq): Remove.
27180         (vmlaq): Remove.
27181         (vmlaq_m): Remove.
27182         (vmlasq_m): Remove.
27183         (vqdmlashq_m): Remove.
27184         (vqdmlahq_m): Remove.
27185         (vqrdmlahq_m): Remove.
27186         (vqrdmlashq_m): Remove.
27187         (vmlasq_n_u8): Remove.
27188         (vmlaq_n_u8): Remove.
27189         (vqrdmlashq_n_s8): Remove.
27190         (vqrdmlahq_n_s8): Remove.
27191         (vqdmlahq_n_s8): Remove.
27192         (vqdmlashq_n_s8): Remove.
27193         (vmlasq_n_s8): Remove.
27194         (vmlaq_n_s8): Remove.
27195         (vmlasq_n_u16): Remove.
27196         (vmlaq_n_u16): Remove.
27197         (vqrdmlashq_n_s16): Remove.
27198         (vqrdmlahq_n_s16): Remove.
27199         (vqdmlashq_n_s16): Remove.
27200         (vqdmlahq_n_s16): Remove.
27201         (vmlasq_n_s16): Remove.
27202         (vmlaq_n_s16): Remove.
27203         (vmlasq_n_u32): Remove.
27204         (vmlaq_n_u32): Remove.
27205         (vqrdmlashq_n_s32): Remove.
27206         (vqrdmlahq_n_s32): Remove.
27207         (vqdmlashq_n_s32): Remove.
27208         (vqdmlahq_n_s32): Remove.
27209         (vmlasq_n_s32): Remove.
27210         (vmlaq_n_s32): Remove.
27211         (vmlaq_m_n_s8): Remove.
27212         (vmlaq_m_n_s32): Remove.
27213         (vmlaq_m_n_s16): Remove.
27214         (vmlaq_m_n_u8): Remove.
27215         (vmlaq_m_n_u32): Remove.
27216         (vmlaq_m_n_u16): Remove.
27217         (vmlasq_m_n_s8): Remove.
27218         (vmlasq_m_n_s32): Remove.
27219         (vmlasq_m_n_s16): Remove.
27220         (vmlasq_m_n_u8): Remove.
27221         (vmlasq_m_n_u32): Remove.
27222         (vmlasq_m_n_u16): Remove.
27223         (vqdmlashq_m_n_s8): Remove.
27224         (vqdmlashq_m_n_s32): Remove.
27225         (vqdmlashq_m_n_s16): Remove.
27226         (vqdmlahq_m_n_s8): Remove.
27227         (vqdmlahq_m_n_s32): Remove.
27228         (vqdmlahq_m_n_s16): Remove.
27229         (vqrdmlahq_m_n_s8): Remove.
27230         (vqrdmlahq_m_n_s32): Remove.
27231         (vqrdmlahq_m_n_s16): Remove.
27232         (vqrdmlashq_m_n_s8): Remove.
27233         (vqrdmlashq_m_n_s32): Remove.
27234         (vqrdmlashq_m_n_s16): Remove.
27235         (__arm_vmlasq_n_u8): Remove.
27236         (__arm_vmlaq_n_u8): Remove.
27237         (__arm_vqrdmlashq_n_s8): Remove.
27238         (__arm_vqdmlashq_n_s8): Remove.
27239         (__arm_vqrdmlahq_n_s8): Remove.
27240         (__arm_vqdmlahq_n_s8): Remove.
27241         (__arm_vmlasq_n_s8): Remove.
27242         (__arm_vmlaq_n_s8): Remove.
27243         (__arm_vmlasq_n_u16): Remove.
27244         (__arm_vmlaq_n_u16): Remove.
27245         (__arm_vqrdmlashq_n_s16): Remove.
27246         (__arm_vqdmlashq_n_s16): Remove.
27247         (__arm_vqrdmlahq_n_s16): Remove.
27248         (__arm_vqdmlahq_n_s16): Remove.
27249         (__arm_vmlasq_n_s16): Remove.
27250         (__arm_vmlaq_n_s16): Remove.
27251         (__arm_vmlasq_n_u32): Remove.
27252         (__arm_vmlaq_n_u32): Remove.
27253         (__arm_vqrdmlashq_n_s32): Remove.
27254         (__arm_vqdmlashq_n_s32): Remove.
27255         (__arm_vqrdmlahq_n_s32): Remove.
27256         (__arm_vqdmlahq_n_s32): Remove.
27257         (__arm_vmlasq_n_s32): Remove.
27258         (__arm_vmlaq_n_s32): Remove.
27259         (__arm_vmlaq_m_n_s8): Remove.
27260         (__arm_vmlaq_m_n_s32): Remove.
27261         (__arm_vmlaq_m_n_s16): Remove.
27262         (__arm_vmlaq_m_n_u8): Remove.
27263         (__arm_vmlaq_m_n_u32): Remove.
27264         (__arm_vmlaq_m_n_u16): Remove.
27265         (__arm_vmlasq_m_n_s8): Remove.
27266         (__arm_vmlasq_m_n_s32): Remove.
27267         (__arm_vmlasq_m_n_s16): Remove.
27268         (__arm_vmlasq_m_n_u8): Remove.
27269         (__arm_vmlasq_m_n_u32): Remove.
27270         (__arm_vmlasq_m_n_u16): Remove.
27271         (__arm_vqdmlahq_m_n_s8): Remove.
27272         (__arm_vqdmlahq_m_n_s32): Remove.
27273         (__arm_vqdmlahq_m_n_s16): Remove.
27274         (__arm_vqrdmlahq_m_n_s8): Remove.
27275         (__arm_vqrdmlahq_m_n_s32): Remove.
27276         (__arm_vqrdmlahq_m_n_s16): Remove.
27277         (__arm_vqrdmlashq_m_n_s8): Remove.
27278         (__arm_vqrdmlashq_m_n_s32): Remove.
27279         (__arm_vqrdmlashq_m_n_s16): Remove.
27280         (__arm_vqdmlashq_m_n_s8): Remove.
27281         (__arm_vqdmlashq_m_n_s16): Remove.
27282         (__arm_vqdmlashq_m_n_s32): Remove.
27283         (__arm_vmlasq): Remove.
27284         (__arm_vmlaq): Remove.
27285         (__arm_vqrdmlashq): Remove.
27286         (__arm_vqdmlashq): Remove.
27287         (__arm_vqrdmlahq): Remove.
27288         (__arm_vqdmlahq): Remove.
27289         (__arm_vmlaq_m): Remove.
27290         (__arm_vmlasq_m): Remove.
27291         (__arm_vqdmlahq_m): Remove.
27292         (__arm_vqrdmlahq_m): Remove.
27293         (__arm_vqrdmlashq_m): Remove.
27294         (__arm_vqdmlashq_m): Remove.
27296 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27298         * config/arm/iterators.md (MVE_VMLxQ_N): New.
27299         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
27300         vqrdmlash.
27301         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
27302         VQRDMLASHQ_N_S.
27303         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
27304         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
27305         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
27306         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
27307         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
27309 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27311         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
27312         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
27314 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27316         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
27317         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
27318         (vqrdmlsdhxq): New.
27319         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
27320         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
27321         (vqrdmlsdhxq): New.
27322         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
27323         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
27324         (vqrdmlsdhxq): New.
27325         * config/arm/arm-mve-builtins.cc
27326         (function_instance::has_inactive_argument): Handle vqrdmladhq,
27327         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
27328         vqdmlsdhq, vqdmlsdhxq.
27329         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
27330         (vqrdmlsdhq): Remove.
27331         (vqrdmladhxq): Remove.
27332         (vqrdmladhq): Remove.
27333         (vqdmlsdhxq): Remove.
27334         (vqdmlsdhq): Remove.
27335         (vqdmladhxq): Remove.
27336         (vqdmladhq): Remove.
27337         (vqdmladhq_m): Remove.
27338         (vqdmladhxq_m): Remove.
27339         (vqdmlsdhq_m): Remove.
27340         (vqdmlsdhxq_m): Remove.
27341         (vqrdmladhq_m): Remove.
27342         (vqrdmladhxq_m): Remove.
27343         (vqrdmlsdhq_m): Remove.
27344         (vqrdmlsdhxq_m): Remove.
27345         (vqrdmlsdhxq_s8): Remove.
27346         (vqrdmlsdhq_s8): Remove.
27347         (vqrdmladhxq_s8): Remove.
27348         (vqrdmladhq_s8): Remove.
27349         (vqdmlsdhxq_s8): Remove.
27350         (vqdmlsdhq_s8): Remove.
27351         (vqdmladhxq_s8): Remove.
27352         (vqdmladhq_s8): Remove.
27353         (vqrdmlsdhxq_s16): Remove.
27354         (vqrdmlsdhq_s16): Remove.
27355         (vqrdmladhxq_s16): Remove.
27356         (vqrdmladhq_s16): Remove.
27357         (vqdmlsdhxq_s16): Remove.
27358         (vqdmlsdhq_s16): Remove.
27359         (vqdmladhxq_s16): Remove.
27360         (vqdmladhq_s16): Remove.
27361         (vqrdmlsdhxq_s32): Remove.
27362         (vqrdmlsdhq_s32): Remove.
27363         (vqrdmladhxq_s32): Remove.
27364         (vqrdmladhq_s32): Remove.
27365         (vqdmlsdhxq_s32): Remove.
27366         (vqdmlsdhq_s32): Remove.
27367         (vqdmladhxq_s32): Remove.
27368         (vqdmladhq_s32): Remove.
27369         (vqdmladhq_m_s8): Remove.
27370         (vqdmladhq_m_s32): Remove.
27371         (vqdmladhq_m_s16): Remove.
27372         (vqdmladhxq_m_s8): Remove.
27373         (vqdmladhxq_m_s32): Remove.
27374         (vqdmladhxq_m_s16): Remove.
27375         (vqdmlsdhq_m_s8): Remove.
27376         (vqdmlsdhq_m_s32): Remove.
27377         (vqdmlsdhq_m_s16): Remove.
27378         (vqdmlsdhxq_m_s8): Remove.
27379         (vqdmlsdhxq_m_s32): Remove.
27380         (vqdmlsdhxq_m_s16): Remove.
27381         (vqrdmladhq_m_s8): Remove.
27382         (vqrdmladhq_m_s32): Remove.
27383         (vqrdmladhq_m_s16): Remove.
27384         (vqrdmladhxq_m_s8): Remove.
27385         (vqrdmladhxq_m_s32): Remove.
27386         (vqrdmladhxq_m_s16): Remove.
27387         (vqrdmlsdhq_m_s8): Remove.
27388         (vqrdmlsdhq_m_s32): Remove.
27389         (vqrdmlsdhq_m_s16): Remove.
27390         (vqrdmlsdhxq_m_s8): Remove.
27391         (vqrdmlsdhxq_m_s32): Remove.
27392         (vqrdmlsdhxq_m_s16): Remove.
27393         (__arm_vqrdmlsdhxq_s8): Remove.
27394         (__arm_vqrdmlsdhq_s8): Remove.
27395         (__arm_vqrdmladhxq_s8): Remove.
27396         (__arm_vqrdmladhq_s8): Remove.
27397         (__arm_vqdmlsdhxq_s8): Remove.
27398         (__arm_vqdmlsdhq_s8): Remove.
27399         (__arm_vqdmladhxq_s8): Remove.
27400         (__arm_vqdmladhq_s8): Remove.
27401         (__arm_vqrdmlsdhxq_s16): Remove.
27402         (__arm_vqrdmlsdhq_s16): Remove.
27403         (__arm_vqrdmladhxq_s16): Remove.
27404         (__arm_vqrdmladhq_s16): Remove.
27405         (__arm_vqdmlsdhxq_s16): Remove.
27406         (__arm_vqdmlsdhq_s16): Remove.
27407         (__arm_vqdmladhxq_s16): Remove.
27408         (__arm_vqdmladhq_s16): Remove.
27409         (__arm_vqrdmlsdhxq_s32): Remove.
27410         (__arm_vqrdmlsdhq_s32): Remove.
27411         (__arm_vqrdmladhxq_s32): Remove.
27412         (__arm_vqrdmladhq_s32): Remove.
27413         (__arm_vqdmlsdhxq_s32): Remove.
27414         (__arm_vqdmlsdhq_s32): Remove.
27415         (__arm_vqdmladhxq_s32): Remove.
27416         (__arm_vqdmladhq_s32): Remove.
27417         (__arm_vqdmladhq_m_s8): Remove.
27418         (__arm_vqdmladhq_m_s32): Remove.
27419         (__arm_vqdmladhq_m_s16): Remove.
27420         (__arm_vqdmladhxq_m_s8): Remove.
27421         (__arm_vqdmladhxq_m_s32): Remove.
27422         (__arm_vqdmladhxq_m_s16): Remove.
27423         (__arm_vqdmlsdhq_m_s8): Remove.
27424         (__arm_vqdmlsdhq_m_s32): Remove.
27425         (__arm_vqdmlsdhq_m_s16): Remove.
27426         (__arm_vqdmlsdhxq_m_s8): Remove.
27427         (__arm_vqdmlsdhxq_m_s32): Remove.
27428         (__arm_vqdmlsdhxq_m_s16): Remove.
27429         (__arm_vqrdmladhq_m_s8): Remove.
27430         (__arm_vqrdmladhq_m_s32): Remove.
27431         (__arm_vqrdmladhq_m_s16): Remove.
27432         (__arm_vqrdmladhxq_m_s8): Remove.
27433         (__arm_vqrdmladhxq_m_s32): Remove.
27434         (__arm_vqrdmladhxq_m_s16): Remove.
27435         (__arm_vqrdmlsdhq_m_s8): Remove.
27436         (__arm_vqrdmlsdhq_m_s32): Remove.
27437         (__arm_vqrdmlsdhq_m_s16): Remove.
27438         (__arm_vqrdmlsdhxq_m_s8): Remove.
27439         (__arm_vqrdmlsdhxq_m_s32): Remove.
27440         (__arm_vqrdmlsdhxq_m_s16): Remove.
27441         (__arm_vqrdmlsdhxq): Remove.
27442         (__arm_vqrdmlsdhq): Remove.
27443         (__arm_vqrdmladhxq): Remove.
27444         (__arm_vqrdmladhq): Remove.
27445         (__arm_vqdmlsdhxq): Remove.
27446         (__arm_vqdmlsdhq): Remove.
27447         (__arm_vqdmladhxq): Remove.
27448         (__arm_vqdmladhq): Remove.
27449         (__arm_vqdmladhq_m): Remove.
27450         (__arm_vqdmladhxq_m): Remove.
27451         (__arm_vqdmlsdhq_m): Remove.
27452         (__arm_vqdmlsdhxq_m): Remove.
27453         (__arm_vqrdmladhq_m): Remove.
27454         (__arm_vqrdmladhxq_m): Remove.
27455         (__arm_vqrdmlsdhq_m): Remove.
27456         (__arm_vqrdmlsdhxq_m): Remove.
27458 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27460         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
27461         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
27462         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
27463         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
27464         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
27465         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
27466         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
27467         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
27468         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
27469         (mve_vqdmladhq_s<mode>): Merge into ...
27470         (@mve_<mve_insn>q_<supf><mode>): ... this.
27472 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27474         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
27475         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
27477 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27479         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
27480         (vmlsldavaq, vmlsldavaxq): New.
27481         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
27482         (vmlsldavaq, vmlsldavaxq): New.
27483         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
27484         (vmlsldavaq, vmlsldavaxq): New.
27485         * config/arm/arm_mve.h (vmlaldavaq): Remove.
27486         (vmlaldavaxq): Remove.
27487         (vmlsldavaq): Remove.
27488         (vmlsldavaxq): Remove.
27489         (vmlaldavaq_p): Remove.
27490         (vmlaldavaxq_p): Remove.
27491         (vmlsldavaq_p): Remove.
27492         (vmlsldavaxq_p): Remove.
27493         (vmlaldavaq_s16): Remove.
27494         (vmlaldavaxq_s16): Remove.
27495         (vmlsldavaq_s16): Remove.
27496         (vmlsldavaxq_s16): Remove.
27497         (vmlaldavaq_u16): Remove.
27498         (vmlaldavaq_s32): Remove.
27499         (vmlaldavaxq_s32): Remove.
27500         (vmlsldavaq_s32): Remove.
27501         (vmlsldavaxq_s32): Remove.
27502         (vmlaldavaq_u32): Remove.
27503         (vmlaldavaq_p_s32): Remove.
27504         (vmlaldavaq_p_s16): Remove.
27505         (vmlaldavaq_p_u32): Remove.
27506         (vmlaldavaq_p_u16): Remove.
27507         (vmlaldavaxq_p_s32): Remove.
27508         (vmlaldavaxq_p_s16): Remove.
27509         (vmlsldavaq_p_s32): Remove.
27510         (vmlsldavaq_p_s16): Remove.
27511         (vmlsldavaxq_p_s32): Remove.
27512         (vmlsldavaxq_p_s16): Remove.
27513         (__arm_vmlaldavaq_s16): Remove.
27514         (__arm_vmlaldavaxq_s16): Remove.
27515         (__arm_vmlsldavaq_s16): Remove.
27516         (__arm_vmlsldavaxq_s16): Remove.
27517         (__arm_vmlaldavaq_u16): Remove.
27518         (__arm_vmlaldavaq_s32): Remove.
27519         (__arm_vmlaldavaxq_s32): Remove.
27520         (__arm_vmlsldavaq_s32): Remove.
27521         (__arm_vmlsldavaxq_s32): Remove.
27522         (__arm_vmlaldavaq_u32): Remove.
27523         (__arm_vmlaldavaq_p_s32): Remove.
27524         (__arm_vmlaldavaq_p_s16): Remove.
27525         (__arm_vmlaldavaq_p_u32): Remove.
27526         (__arm_vmlaldavaq_p_u16): Remove.
27527         (__arm_vmlaldavaxq_p_s32): Remove.
27528         (__arm_vmlaldavaxq_p_s16): Remove.
27529         (__arm_vmlsldavaq_p_s32): Remove.
27530         (__arm_vmlsldavaq_p_s16): Remove.
27531         (__arm_vmlsldavaxq_p_s32): Remove.
27532         (__arm_vmlsldavaxq_p_s16): Remove.
27533         (__arm_vmlaldavaq): Remove.
27534         (__arm_vmlaldavaxq): Remove.
27535         (__arm_vmlsldavaq): Remove.
27536         (__arm_vmlsldavaxq): Remove.
27537         (__arm_vmlaldavaq_p): Remove.
27538         (__arm_vmlaldavaxq_p): Remove.
27539         (__arm_vmlsldavaq_p): Remove.
27540         (__arm_vmlsldavaxq_p): Remove.
27542 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27544         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
27545         New.
27546         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
27547         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
27548         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
27549         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
27550         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
27551         (mve_vmlaldavaxq_s<mode>): Merge into ...
27552         (@mve_<mve_insn>q_<supf><mode>): ... this.
27553         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
27554         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
27555         ...
27556         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
27558 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27560         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
27561         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
27563 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27565         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
27566         (vrmlsldavhq, vrmlsldavhxq): New.
27567         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
27568         (vrmlsldavhq, vrmlsldavhxq): New.
27569         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
27570         (vrmlsldavhq, vrmlsldavhxq): New.
27571         * config/arm/arm-mve-builtins-functions.h
27572         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
27573         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
27574         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
27575         (vrmlsldavhxq): Remove.
27576         (vrmlsldavhq): Remove.
27577         (vrmlaldavhxq): Remove.
27578         (vrmlaldavhq_p): Remove.
27579         (vrmlaldavhxq_p): Remove.
27580         (vrmlsldavhq_p): Remove.
27581         (vrmlsldavhxq_p): Remove.
27582         (vrmlaldavhq_u32): Remove.
27583         (vrmlsldavhxq_s32): Remove.
27584         (vrmlsldavhq_s32): Remove.
27585         (vrmlaldavhxq_s32): Remove.
27586         (vrmlaldavhq_s32): Remove.
27587         (vrmlaldavhq_p_s32): Remove.
27588         (vrmlaldavhxq_p_s32): Remove.
27589         (vrmlsldavhq_p_s32): Remove.
27590         (vrmlsldavhxq_p_s32): Remove.
27591         (vrmlaldavhq_p_u32): Remove.
27592         (__arm_vrmlaldavhq_u32): Remove.
27593         (__arm_vrmlsldavhxq_s32): Remove.
27594         (__arm_vrmlsldavhq_s32): Remove.
27595         (__arm_vrmlaldavhxq_s32): Remove.
27596         (__arm_vrmlaldavhq_s32): Remove.
27597         (__arm_vrmlaldavhq_p_s32): Remove.
27598         (__arm_vrmlaldavhxq_p_s32): Remove.
27599         (__arm_vrmlsldavhq_p_s32): Remove.
27600         (__arm_vrmlsldavhxq_p_s32): Remove.
27601         (__arm_vrmlaldavhq_p_u32): Remove.
27602         (__arm_vrmlaldavhq): Remove.
27603         (__arm_vrmlsldavhxq): Remove.
27604         (__arm_vrmlsldavhq): Remove.
27605         (__arm_vrmlaldavhxq): Remove.
27606         (__arm_vrmlaldavhq_p): Remove.
27607         (__arm_vrmlaldavhxq_p): Remove.
27608         (__arm_vrmlsldavhq_p): Remove.
27609         (__arm_vrmlsldavhxq_p): Remove.
27611 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27613         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
27614         New.
27615         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
27616         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
27617         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
27618         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
27619         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
27620         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
27621         (@mve_<mve_insn>q_<supf>v4si): ... this.
27622         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
27623         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
27624         into ...
27625         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
27627 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27629         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
27630         (vmlsldavq, vmlsldavxq): New.
27631         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
27632         (vmlsldavq, vmlsldavxq): New.
27633         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
27634         (vmlsldavq, vmlsldavxq): New.
27635         * config/arm/arm_mve.h (vmlaldavq): Remove.
27636         (vmlsldavxq): Remove.
27637         (vmlsldavq): Remove.
27638         (vmlaldavxq): Remove.
27639         (vmlaldavq_p): Remove.
27640         (vmlaldavxq_p): Remove.
27641         (vmlsldavq_p): Remove.
27642         (vmlsldavxq_p): Remove.
27643         (vmlaldavq_u16): Remove.
27644         (vmlsldavxq_s16): Remove.
27645         (vmlsldavq_s16): Remove.
27646         (vmlaldavxq_s16): Remove.
27647         (vmlaldavq_s16): Remove.
27648         (vmlaldavq_u32): Remove.
27649         (vmlsldavxq_s32): Remove.
27650         (vmlsldavq_s32): Remove.
27651         (vmlaldavxq_s32): Remove.
27652         (vmlaldavq_s32): Remove.
27653         (vmlaldavq_p_s16): Remove.
27654         (vmlaldavxq_p_s16): Remove.
27655         (vmlsldavq_p_s16): Remove.
27656         (vmlsldavxq_p_s16): Remove.
27657         (vmlaldavq_p_u16): Remove.
27658         (vmlaldavq_p_s32): Remove.
27659         (vmlaldavxq_p_s32): Remove.
27660         (vmlsldavq_p_s32): Remove.
27661         (vmlsldavxq_p_s32): Remove.
27662         (vmlaldavq_p_u32): Remove.
27663         (__arm_vmlaldavq_u16): Remove.
27664         (__arm_vmlsldavxq_s16): Remove.
27665         (__arm_vmlsldavq_s16): Remove.
27666         (__arm_vmlaldavxq_s16): Remove.
27667         (__arm_vmlaldavq_s16): Remove.
27668         (__arm_vmlaldavq_u32): Remove.
27669         (__arm_vmlsldavxq_s32): Remove.
27670         (__arm_vmlsldavq_s32): Remove.
27671         (__arm_vmlaldavxq_s32): Remove.
27672         (__arm_vmlaldavq_s32): Remove.
27673         (__arm_vmlaldavq_p_s16): Remove.
27674         (__arm_vmlaldavxq_p_s16): Remove.
27675         (__arm_vmlsldavq_p_s16): Remove.
27676         (__arm_vmlsldavxq_p_s16): Remove.
27677         (__arm_vmlaldavq_p_u16): Remove.
27678         (__arm_vmlaldavq_p_s32): Remove.
27679         (__arm_vmlaldavxq_p_s32): Remove.
27680         (__arm_vmlsldavq_p_s32): Remove.
27681         (__arm_vmlsldavxq_p_s32): Remove.
27682         (__arm_vmlaldavq_p_u32): Remove.
27683         (__arm_vmlaldavq): Remove.
27684         (__arm_vmlsldavxq): Remove.
27685         (__arm_vmlsldavq): Remove.
27686         (__arm_vmlaldavxq): Remove.
27687         (__arm_vmlaldavq_p): Remove.
27688         (__arm_vmlaldavxq_p): Remove.
27689         (__arm_vmlsldavq_p): Remove.
27690         (__arm_vmlsldavxq_p): Remove.
27692 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27694         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
27695         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
27696         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
27697         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
27698         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
27699         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
27700         (mve_vmlsldavxq_s<mode>): Merge into ...
27701         (@mve_<mve_insn>q_<supf><mode>): ... this.
27702         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
27703         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
27704         ...
27705         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
27707 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27709         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
27710         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
27712 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27714         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
27715         * config/arm/arm-mve-builtins-base.def (vabavq): New.
27716         * config/arm/arm-mve-builtins-base.h (vabavq): New.
27717         * config/arm/arm_mve.h (vabavq): Remove.
27718         (vabavq_p): Remove.
27719         (vabavq_s8): Remove.
27720         (vabavq_s16): Remove.
27721         (vabavq_s32): Remove.
27722         (vabavq_u8): Remove.
27723         (vabavq_u16): Remove.
27724         (vabavq_u32): Remove.
27725         (vabavq_p_s8): Remove.
27726         (vabavq_p_u8): Remove.
27727         (vabavq_p_s16): Remove.
27728         (vabavq_p_u16): Remove.
27729         (vabavq_p_s32): Remove.
27730         (vabavq_p_u32): Remove.
27731         (__arm_vabavq_s8): Remove.
27732         (__arm_vabavq_s16): Remove.
27733         (__arm_vabavq_s32): Remove.
27734         (__arm_vabavq_u8): Remove.
27735         (__arm_vabavq_u16): Remove.
27736         (__arm_vabavq_u32): Remove.
27737         (__arm_vabavq_p_s8): Remove.
27738         (__arm_vabavq_p_u8): Remove.
27739         (__arm_vabavq_p_s16): Remove.
27740         (__arm_vabavq_p_u16): Remove.
27741         (__arm_vabavq_p_s32): Remove.
27742         (__arm_vabavq_p_u32): Remove.
27743         (__arm_vabavq): Remove.
27744         (__arm_vabavq_p): Remove.
27746 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27748         * config/arm/iterators.md (mve_insn): Add vabav.
27749         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
27750         (@mve_<mve_insn>q_<supf><mode>): ... this,.
27751         (mve_vabavq_p_<supf><mode>): Rename into ...
27752         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
27754 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27756         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
27757         (vmlsdavaq, vmlsdavaxq): New.
27758         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
27759         (vmlsdavaq, vmlsdavaxq): New.
27760         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
27761         (vmlsdavaq, vmlsdavaxq): New.
27762         * config/arm/arm_mve.h (vmladavaq): Remove.
27763         (vmlsdavaxq): Remove.
27764         (vmlsdavaq): Remove.
27765         (vmladavaxq): Remove.
27766         (vmladavaq_p): Remove.
27767         (vmladavaxq_p): Remove.
27768         (vmlsdavaq_p): Remove.
27769         (vmlsdavaxq_p): Remove.
27770         (vmladavaq_u8): Remove.
27771         (vmlsdavaxq_s8): Remove.
27772         (vmlsdavaq_s8): Remove.
27773         (vmladavaxq_s8): Remove.
27774         (vmladavaq_s8): Remove.
27775         (vmladavaq_u16): Remove.
27776         (vmlsdavaxq_s16): Remove.
27777         (vmlsdavaq_s16): Remove.
27778         (vmladavaxq_s16): Remove.
27779         (vmladavaq_s16): Remove.
27780         (vmladavaq_u32): Remove.
27781         (vmlsdavaxq_s32): Remove.
27782         (vmlsdavaq_s32): Remove.
27783         (vmladavaxq_s32): Remove.
27784         (vmladavaq_s32): Remove.
27785         (vmladavaq_p_s8): Remove.
27786         (vmladavaq_p_s32): Remove.
27787         (vmladavaq_p_s16): Remove.
27788         (vmladavaq_p_u8): Remove.
27789         (vmladavaq_p_u32): Remove.
27790         (vmladavaq_p_u16): Remove.
27791         (vmladavaxq_p_s8): Remove.
27792         (vmladavaxq_p_s32): Remove.
27793         (vmladavaxq_p_s16): Remove.
27794         (vmlsdavaq_p_s8): Remove.
27795         (vmlsdavaq_p_s32): Remove.
27796         (vmlsdavaq_p_s16): Remove.
27797         (vmlsdavaxq_p_s8): Remove.
27798         (vmlsdavaxq_p_s32): Remove.
27799         (vmlsdavaxq_p_s16): Remove.
27800         (__arm_vmladavaq_u8): Remove.
27801         (__arm_vmlsdavaxq_s8): Remove.
27802         (__arm_vmlsdavaq_s8): Remove.
27803         (__arm_vmladavaxq_s8): Remove.
27804         (__arm_vmladavaq_s8): Remove.
27805         (__arm_vmladavaq_u16): Remove.
27806         (__arm_vmlsdavaxq_s16): Remove.
27807         (__arm_vmlsdavaq_s16): Remove.
27808         (__arm_vmladavaxq_s16): Remove.
27809         (__arm_vmladavaq_s16): Remove.
27810         (__arm_vmladavaq_u32): Remove.
27811         (__arm_vmlsdavaxq_s32): Remove.
27812         (__arm_vmlsdavaq_s32): Remove.
27813         (__arm_vmladavaxq_s32): Remove.
27814         (__arm_vmladavaq_s32): Remove.
27815         (__arm_vmladavaq_p_s8): Remove.
27816         (__arm_vmladavaq_p_s32): Remove.
27817         (__arm_vmladavaq_p_s16): Remove.
27818         (__arm_vmladavaq_p_u8): Remove.
27819         (__arm_vmladavaq_p_u32): Remove.
27820         (__arm_vmladavaq_p_u16): Remove.
27821         (__arm_vmladavaxq_p_s8): Remove.
27822         (__arm_vmladavaxq_p_s32): Remove.
27823         (__arm_vmladavaxq_p_s16): Remove.
27824         (__arm_vmlsdavaq_p_s8): Remove.
27825         (__arm_vmlsdavaq_p_s32): Remove.
27826         (__arm_vmlsdavaq_p_s16): Remove.
27827         (__arm_vmlsdavaxq_p_s8): Remove.
27828         (__arm_vmlsdavaxq_p_s32): Remove.
27829         (__arm_vmlsdavaxq_p_s16): Remove.
27830         (__arm_vmladavaq): Remove.
27831         (__arm_vmlsdavaxq): Remove.
27832         (__arm_vmlsdavaq): Remove.
27833         (__arm_vmladavaxq): Remove.
27834         (__arm_vmladavaq_p): Remove.
27835         (__arm_vmladavaxq_p): Remove.
27836         (__arm_vmlsdavaq_p): Remove.
27837         (__arm_vmlsdavaxq_p): Remove.
27839 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27841         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
27842         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
27844 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27846         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
27847         (vmlsdavq, vmlsdavxq): New.
27848         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
27849         (vmlsdavq, vmlsdavxq): New.
27850         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
27851         (vmlsdavq, vmlsdavxq): New.
27852         * config/arm/arm_mve.h (vmladavq): Remove.
27853         (vmlsdavxq): Remove.
27854         (vmlsdavq): Remove.
27855         (vmladavxq): Remove.
27856         (vmladavq_p): Remove.
27857         (vmlsdavxq_p): Remove.
27858         (vmlsdavq_p): Remove.
27859         (vmladavxq_p): Remove.
27860         (vmladavq_u8): Remove.
27861         (vmlsdavxq_s8): Remove.
27862         (vmlsdavq_s8): Remove.
27863         (vmladavxq_s8): Remove.
27864         (vmladavq_s8): Remove.
27865         (vmladavq_u16): Remove.
27866         (vmlsdavxq_s16): Remove.
27867         (vmlsdavq_s16): Remove.
27868         (vmladavxq_s16): Remove.
27869         (vmladavq_s16): Remove.
27870         (vmladavq_u32): Remove.
27871         (vmlsdavxq_s32): Remove.
27872         (vmlsdavq_s32): Remove.
27873         (vmladavxq_s32): Remove.
27874         (vmladavq_s32): Remove.
27875         (vmladavq_p_u8): Remove.
27876         (vmlsdavxq_p_s8): Remove.
27877         (vmlsdavq_p_s8): Remove.
27878         (vmladavxq_p_s8): Remove.
27879         (vmladavq_p_s8): Remove.
27880         (vmladavq_p_u16): Remove.
27881         (vmlsdavxq_p_s16): Remove.
27882         (vmlsdavq_p_s16): Remove.
27883         (vmladavxq_p_s16): Remove.
27884         (vmladavq_p_s16): Remove.
27885         (vmladavq_p_u32): Remove.
27886         (vmlsdavxq_p_s32): Remove.
27887         (vmlsdavq_p_s32): Remove.
27888         (vmladavxq_p_s32): Remove.
27889         (vmladavq_p_s32): Remove.
27890         (__arm_vmladavq_u8): Remove.
27891         (__arm_vmlsdavxq_s8): Remove.
27892         (__arm_vmlsdavq_s8): Remove.
27893         (__arm_vmladavxq_s8): Remove.
27894         (__arm_vmladavq_s8): Remove.
27895         (__arm_vmladavq_u16): Remove.
27896         (__arm_vmlsdavxq_s16): Remove.
27897         (__arm_vmlsdavq_s16): Remove.
27898         (__arm_vmladavxq_s16): Remove.
27899         (__arm_vmladavq_s16): Remove.
27900         (__arm_vmladavq_u32): Remove.
27901         (__arm_vmlsdavxq_s32): Remove.
27902         (__arm_vmlsdavq_s32): Remove.
27903         (__arm_vmladavxq_s32): Remove.
27904         (__arm_vmladavq_s32): Remove.
27905         (__arm_vmladavq_p_u8): Remove.
27906         (__arm_vmlsdavxq_p_s8): Remove.
27907         (__arm_vmlsdavq_p_s8): Remove.
27908         (__arm_vmladavxq_p_s8): Remove.
27909         (__arm_vmladavq_p_s8): Remove.
27910         (__arm_vmladavq_p_u16): Remove.
27911         (__arm_vmlsdavxq_p_s16): Remove.
27912         (__arm_vmlsdavq_p_s16): Remove.
27913         (__arm_vmladavxq_p_s16): Remove.
27914         (__arm_vmladavq_p_s16): Remove.
27915         (__arm_vmladavq_p_u32): Remove.
27916         (__arm_vmlsdavxq_p_s32): Remove.
27917         (__arm_vmlsdavq_p_s32): Remove.
27918         (__arm_vmladavxq_p_s32): Remove.
27919         (__arm_vmladavq_p_s32): Remove.
27920         (__arm_vmladavq): Remove.
27921         (__arm_vmlsdavxq): Remove.
27922         (__arm_vmlsdavq): Remove.
27923         (__arm_vmladavxq): Remove.
27924         (__arm_vmladavq_p): Remove.
27925         (__arm_vmlsdavxq_p): Remove.
27926         (__arm_vmlsdavq_p): Remove.
27927         (__arm_vmladavxq_p): Remove.
27929 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27931         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
27932         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
27933         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
27934         vmlsdavax, vmlsdav, vmlsdavx.
27935         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
27936         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
27937         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
27938         VMLSDAVXQ_S.
27939         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
27940         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
27941         (mve_vmlsdavxq_s<mode>): Merge into ...
27942         (@mve_<mve_insn>q_<supf><mode>): ... this.
27943         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
27944         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
27945         ...
27946         (@mve_<mve_insn>q_<supf><mode>): ... this.
27947         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
27948         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
27949         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
27950         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
27951         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
27952         ...
27953         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
27955 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27957         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
27958         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
27960 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27962         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
27963         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
27964         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
27965         * config/arm/arm_mve.h (vaddlvaq): Remove.
27966         (vaddlvaq_p): Remove.
27967         (vaddlvaq_u32): Remove.
27968         (vaddlvaq_s32): Remove.
27969         (vaddlvaq_p_s32): Remove.
27970         (vaddlvaq_p_u32): Remove.
27971         (__arm_vaddlvaq_u32): Remove.
27972         (__arm_vaddlvaq_s32): Remove.
27973         (__arm_vaddlvaq_p_s32): Remove.
27974         (__arm_vaddlvaq_p_u32): Remove.
27975         (__arm_vaddlvaq): Remove.
27976         (__arm_vaddlvaq_p): Remove.
27978 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27980         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
27981         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
27983 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
27985         * config/arm/iterators.md (mve_insn): Add vaddlva.
27986         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
27987         (@mve_<mve_insn>q_<supf>v4si): ... this.
27988         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
27989         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
27991 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
27993         PR target/109807
27994         * config/i386/i386.cc (ix86_widen_mult_cost):
27995         Handle V4HImode and V2SImode.
27997 2023-05-11  Andrew Pinski  <apinski@marvell.com>
27999         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
28000         defined by a phi node with more than one uses, allow for the
28001         only uses are in that same defining statement.
28003 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
28005         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
28006         vector constants.
28008 2023-05-11  Pan Li  <pan2.li@intel.com>
28010         * config/riscv/vector.md: Add comments for simplifying to vmset.
28012 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
28014         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
28015         pattern.
28016         (v<optab><mode>3): Add vector shift pattern.
28017         * config/riscv/vector-iterators.md: New iterator.
28019 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
28021         * config/riscv/autovec.md: Use renamed functions.
28022         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
28023         (emit_vlmax_reg_op): To this.
28024         (emit_nonvlmax_op): Rename.
28025         (emit_len_op): To this.
28026         (emit_nonvlmax_binop): Rename.
28027         (emit_len_binop): To this.
28028         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
28029         (emit_pred_binop): Remove vlmax_p.
28030         (emit_vlmax_op): Rename.
28031         (emit_vlmax_reg_op): To this.
28032         (emit_nonvlmax_op): Rename.
28033         (emit_len_op): To this.
28034         (emit_nonvlmax_binop): Rename.
28035         (emit_len_binop): To this.
28036         (sew64_scalar_helper): Use renamed functions.
28037         (expand_tuple_move): Use renamed functions.
28038         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
28039         renamed functions.
28040         * config/riscv/vector.md: Use renamed functions.
28042 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
28043             Michael Collison  <collison@rivosinc.com>
28045         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
28046         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
28047         * config/riscv/riscv-v.cc (emit_pred_op): New function.
28048         (set_expander_dest_and_mask): New function.
28049         (emit_pred_binop): New function.
28050         (emit_nonvlmax_binop): New function.
28052 2023-05-11  Pan Li  <pan2.li@intel.com>
28054         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
28055         * gimple-loop-interchange.cc
28056         (tree_loop_interchange::map_inductions_to_loop): Ditto.
28057         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
28058         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
28059         * tree-ssa-loop-manip.cc (create_iv): Ditto.
28060         (tree_transform_and_unroll_loop): Ditto.
28061         (canonicalize_loop_ivs): Ditto.
28062         * tree-ssa-loop-manip.h (create_iv): Ditto.
28063         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
28064         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
28065         Ditto.
28066         (vect_set_loop_condition_normal): Ditto.
28067         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
28068         * tree-vect-stmts.cc (vectorizable_store): Ditto.
28069         (vectorizable_load): Ditto.
28071 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28073         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
28074         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
28075         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
28076         * config/arm/arm_mve.h (vmovlbq): Remove.
28077         (vmovltq): Remove.
28078         (vmovlbq_m): Remove.
28079         (vmovltq_m): Remove.
28080         (vmovlbq_x): Remove.
28081         (vmovltq_x): Remove.
28082         (vmovlbq_s8): Remove.
28083         (vmovlbq_s16): Remove.
28084         (vmovltq_s8): Remove.
28085         (vmovltq_s16): Remove.
28086         (vmovltq_u8): Remove.
28087         (vmovltq_u16): Remove.
28088         (vmovlbq_u8): Remove.
28089         (vmovlbq_u16): Remove.
28090         (vmovlbq_m_s8): Remove.
28091         (vmovltq_m_s8): Remove.
28092         (vmovlbq_m_u8): Remove.
28093         (vmovltq_m_u8): Remove.
28094         (vmovlbq_m_s16): Remove.
28095         (vmovltq_m_s16): Remove.
28096         (vmovlbq_m_u16): Remove.
28097         (vmovltq_m_u16): Remove.
28098         (vmovlbq_x_s8): Remove.
28099         (vmovlbq_x_s16): Remove.
28100         (vmovlbq_x_u8): Remove.
28101         (vmovlbq_x_u16): Remove.
28102         (vmovltq_x_s8): Remove.
28103         (vmovltq_x_s16): Remove.
28104         (vmovltq_x_u8): Remove.
28105         (vmovltq_x_u16): Remove.
28106         (__arm_vmovlbq_s8): Remove.
28107         (__arm_vmovlbq_s16): Remove.
28108         (__arm_vmovltq_s8): Remove.
28109         (__arm_vmovltq_s16): Remove.
28110         (__arm_vmovltq_u8): Remove.
28111         (__arm_vmovltq_u16): Remove.
28112         (__arm_vmovlbq_u8): Remove.
28113         (__arm_vmovlbq_u16): Remove.
28114         (__arm_vmovlbq_m_s8): Remove.
28115         (__arm_vmovltq_m_s8): Remove.
28116         (__arm_vmovlbq_m_u8): Remove.
28117         (__arm_vmovltq_m_u8): Remove.
28118         (__arm_vmovlbq_m_s16): Remove.
28119         (__arm_vmovltq_m_s16): Remove.
28120         (__arm_vmovlbq_m_u16): Remove.
28121         (__arm_vmovltq_m_u16): Remove.
28122         (__arm_vmovlbq_x_s8): Remove.
28123         (__arm_vmovlbq_x_s16): Remove.
28124         (__arm_vmovlbq_x_u8): Remove.
28125         (__arm_vmovlbq_x_u16): Remove.
28126         (__arm_vmovltq_x_s8): Remove.
28127         (__arm_vmovltq_x_s16): Remove.
28128         (__arm_vmovltq_x_u8): Remove.
28129         (__arm_vmovltq_x_u16): Remove.
28130         (__arm_vmovlbq): Remove.
28131         (__arm_vmovltq): Remove.
28132         (__arm_vmovlbq_m): Remove.
28133         (__arm_vmovltq_m): Remove.
28134         (__arm_vmovlbq_x): Remove.
28135         (__arm_vmovltq_x): Remove.
28137 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28139         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
28140         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
28142 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28144         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
28145         (VMOVLBQ, VMOVLTQ): Merge into ...
28146         (VMOVLxQ): ... this.
28147         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
28148         (VMOVLxQ_M): ... this.
28149         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
28150         (mve_vmovlbq_<supf><mode>): Merge into ...
28151         (@mve_<mve_insn>q_<supf><mode>): ... this.
28152         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
28153         into ...
28154         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
28156 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28158         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
28159         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
28160         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
28161         * config/arm/arm-mve-builtins-functions.h
28162         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
28163         * config/arm/arm_mve.h (vaddlvq): Remove.
28164         (vaddlvq_p): Remove.
28165         (vaddlvq_s32): Remove.
28166         (vaddlvq_u32): Remove.
28167         (vaddlvq_p_s32): Remove.
28168         (vaddlvq_p_u32): Remove.
28169         (__arm_vaddlvq_s32): Remove.
28170         (__arm_vaddlvq_u32): Remove.
28171         (__arm_vaddlvq_p_s32): Remove.
28172         (__arm_vaddlvq_p_u32): Remove.
28173         (__arm_vaddlvq): Remove.
28174         (__arm_vaddlvq_p): Remove.
28176 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28178         * config/arm/iterators.md (mve_insn): Add vaddlv.
28179         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
28180         (@mve_<mve_insn>q_<supf>v4si): ... this.
28181         (mve_vaddlvq_p_<supf>v4si): Rename into ...
28182         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
28184 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28186         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
28187         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
28189 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28191         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
28192         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
28193         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
28194         * config/arm/arm_mve.h (vaddvaq): Remove.
28195         (vaddvaq_p): Remove.
28196         (vaddvaq_u8): Remove.
28197         (vaddvaq_s8): Remove.
28198         (vaddvaq_u16): Remove.
28199         (vaddvaq_s16): Remove.
28200         (vaddvaq_u32): Remove.
28201         (vaddvaq_s32): Remove.
28202         (vaddvaq_p_u8): Remove.
28203         (vaddvaq_p_s8): Remove.
28204         (vaddvaq_p_u16): Remove.
28205         (vaddvaq_p_s16): Remove.
28206         (vaddvaq_p_u32): Remove.
28207         (vaddvaq_p_s32): Remove.
28208         (__arm_vaddvaq_u8): Remove.
28209         (__arm_vaddvaq_s8): Remove.
28210         (__arm_vaddvaq_u16): Remove.
28211         (__arm_vaddvaq_s16): Remove.
28212         (__arm_vaddvaq_u32): Remove.
28213         (__arm_vaddvaq_s32): Remove.
28214         (__arm_vaddvaq_p_u8): Remove.
28215         (__arm_vaddvaq_p_s8): Remove.
28216         (__arm_vaddvaq_p_u16): Remove.
28217         (__arm_vaddvaq_p_s16): Remove.
28218         (__arm_vaddvaq_p_u32): Remove.
28219         (__arm_vaddvaq_p_s32): Remove.
28220         (__arm_vaddvaq): Remove.
28221         (__arm_vaddvaq_p): Remove.
28223 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28225         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
28226         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
28228 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28230         * config/arm/iterators.md (mve_insn): Add vaddva.
28231         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
28232         (@mve_<mve_insn>q_<supf><mode>): ... this.
28233         (mve_vaddvaq_p_<supf><mode>): Rename into ...
28234         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
28236 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28238         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
28239         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
28240         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
28241         * config/arm/arm_mve.h (vaddvq): Remove.
28242         (vaddvq_p): Remove.
28243         (vaddvq_s8): Remove.
28244         (vaddvq_s16): Remove.
28245         (vaddvq_s32): Remove.
28246         (vaddvq_u8): Remove.
28247         (vaddvq_u16): Remove.
28248         (vaddvq_u32): Remove.
28249         (vaddvq_p_u8): Remove.
28250         (vaddvq_p_s8): Remove.
28251         (vaddvq_p_u16): Remove.
28252         (vaddvq_p_s16): Remove.
28253         (vaddvq_p_u32): Remove.
28254         (vaddvq_p_s32): Remove.
28255         (__arm_vaddvq_s8): Remove.
28256         (__arm_vaddvq_s16): Remove.
28257         (__arm_vaddvq_s32): Remove.
28258         (__arm_vaddvq_u8): Remove.
28259         (__arm_vaddvq_u16): Remove.
28260         (__arm_vaddvq_u32): Remove.
28261         (__arm_vaddvq_p_u8): Remove.
28262         (__arm_vaddvq_p_s8): Remove.
28263         (__arm_vaddvq_p_u16): Remove.
28264         (__arm_vaddvq_p_s16): Remove.
28265         (__arm_vaddvq_p_u32): Remove.
28266         (__arm_vaddvq_p_s32): Remove.
28267         (__arm_vaddvq): Remove.
28268         (__arm_vaddvq_p): Remove.
28270 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28272         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
28273         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
28275 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28277         * config/arm/iterators.md (mve_insn): Add vaddv.
28278         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
28279         (@mve_<mve_insn>q_<supf><mode>): ... this.
28280         (mve_vaddvq_p_<supf><mode>): Rename into ...
28281         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
28282         * config/arm/vec-common.md: Use gen_mve_q instead of
28283         gen_mve_vaddvq.
28285 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28287         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
28288         (vdupq): New.
28289         * config/arm/arm-mve-builtins-base.def (vdupq): New.
28290         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
28291         * config/arm/arm_mve.h (vdupq_n): Remove.
28292         (vdupq_m): Remove.
28293         (vdupq_n_f16): Remove.
28294         (vdupq_n_f32): Remove.
28295         (vdupq_n_s8): Remove.
28296         (vdupq_n_s16): Remove.
28297         (vdupq_n_s32): Remove.
28298         (vdupq_n_u8): Remove.
28299         (vdupq_n_u16): Remove.
28300         (vdupq_n_u32): Remove.
28301         (vdupq_m_n_u8): Remove.
28302         (vdupq_m_n_s8): Remove.
28303         (vdupq_m_n_u16): Remove.
28304         (vdupq_m_n_s16): Remove.
28305         (vdupq_m_n_u32): Remove.
28306         (vdupq_m_n_s32): Remove.
28307         (vdupq_m_n_f16): Remove.
28308         (vdupq_m_n_f32): Remove.
28309         (vdupq_x_n_s8): Remove.
28310         (vdupq_x_n_s16): Remove.
28311         (vdupq_x_n_s32): Remove.
28312         (vdupq_x_n_u8): Remove.
28313         (vdupq_x_n_u16): Remove.
28314         (vdupq_x_n_u32): Remove.
28315         (vdupq_x_n_f16): Remove.
28316         (vdupq_x_n_f32): Remove.
28317         (__arm_vdupq_n_s8): Remove.
28318         (__arm_vdupq_n_s16): Remove.
28319         (__arm_vdupq_n_s32): Remove.
28320         (__arm_vdupq_n_u8): Remove.
28321         (__arm_vdupq_n_u16): Remove.
28322         (__arm_vdupq_n_u32): Remove.
28323         (__arm_vdupq_m_n_u8): Remove.
28324         (__arm_vdupq_m_n_s8): Remove.
28325         (__arm_vdupq_m_n_u16): Remove.
28326         (__arm_vdupq_m_n_s16): Remove.
28327         (__arm_vdupq_m_n_u32): Remove.
28328         (__arm_vdupq_m_n_s32): Remove.
28329         (__arm_vdupq_x_n_s8): Remove.
28330         (__arm_vdupq_x_n_s16): Remove.
28331         (__arm_vdupq_x_n_s32): Remove.
28332         (__arm_vdupq_x_n_u8): Remove.
28333         (__arm_vdupq_x_n_u16): Remove.
28334         (__arm_vdupq_x_n_u32): Remove.
28335         (__arm_vdupq_n_f16): Remove.
28336         (__arm_vdupq_n_f32): Remove.
28337         (__arm_vdupq_m_n_f16): Remove.
28338         (__arm_vdupq_m_n_f32): Remove.
28339         (__arm_vdupq_x_n_f16): Remove.
28340         (__arm_vdupq_x_n_f32): Remove.
28341         (__arm_vdupq_n): Remove.
28342         (__arm_vdupq_m): Remove.
28344 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28346         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
28347         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
28349 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28351         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
28352         (MVE_FP_N_VDUPQ_ONLY): New.
28353         (mve_insn): Add vdupq.
28354         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
28355         (@mve_<mve_insn>q_n_f<mode>): ... this.
28356         (mve_vdupq_n_<supf><mode>): Rename into ...
28357         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
28358         (mve_vdupq_m_n_<supf><mode>): Rename into ...
28359         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
28360         (mve_vdupq_m_n_f<mode>): Rename into ...
28361         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
28363 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28365         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
28366         New.
28367         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
28368         (vrev64q): New.
28369         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
28370         (vrev64q): New.
28371         * config/arm/arm_mve.h (vrev16q): Remove.
28372         (vrev32q): Remove.
28373         (vrev64q): Remove.
28374         (vrev64q_m): Remove.
28375         (vrev16q_m): Remove.
28376         (vrev32q_m): Remove.
28377         (vrev16q_x): Remove.
28378         (vrev32q_x): Remove.
28379         (vrev64q_x): Remove.
28380         (vrev64q_f16): Remove.
28381         (vrev64q_f32): Remove.
28382         (vrev32q_f16): Remove.
28383         (vrev16q_s8): Remove.
28384         (vrev32q_s8): Remove.
28385         (vrev32q_s16): Remove.
28386         (vrev64q_s8): Remove.
28387         (vrev64q_s16): Remove.
28388         (vrev64q_s32): Remove.
28389         (vrev64q_u8): Remove.
28390         (vrev64q_u16): Remove.
28391         (vrev64q_u32): Remove.
28392         (vrev32q_u8): Remove.
28393         (vrev32q_u16): Remove.
28394         (vrev16q_u8): Remove.
28395         (vrev64q_m_u8): Remove.
28396         (vrev64q_m_s8): Remove.
28397         (vrev64q_m_u16): Remove.
28398         (vrev64q_m_s16): Remove.
28399         (vrev64q_m_u32): Remove.
28400         (vrev64q_m_s32): Remove.
28401         (vrev16q_m_s8): Remove.
28402         (vrev32q_m_f16): Remove.
28403         (vrev16q_m_u8): Remove.
28404         (vrev32q_m_s8): Remove.
28405         (vrev64q_m_f16): Remove.
28406         (vrev32q_m_u8): Remove.
28407         (vrev32q_m_s16): Remove.
28408         (vrev64q_m_f32): Remove.
28409         (vrev32q_m_u16): Remove.
28410         (vrev16q_x_s8): Remove.
28411         (vrev16q_x_u8): Remove.
28412         (vrev32q_x_s8): Remove.
28413         (vrev32q_x_s16): Remove.
28414         (vrev32q_x_u8): Remove.
28415         (vrev32q_x_u16): Remove.
28416         (vrev64q_x_s8): Remove.
28417         (vrev64q_x_s16): Remove.
28418         (vrev64q_x_s32): Remove.
28419         (vrev64q_x_u8): Remove.
28420         (vrev64q_x_u16): Remove.
28421         (vrev64q_x_u32): Remove.
28422         (vrev32q_x_f16): Remove.
28423         (vrev64q_x_f16): Remove.
28424         (vrev64q_x_f32): Remove.
28425         (__arm_vrev16q_s8): Remove.
28426         (__arm_vrev32q_s8): Remove.
28427         (__arm_vrev32q_s16): Remove.
28428         (__arm_vrev64q_s8): Remove.
28429         (__arm_vrev64q_s16): Remove.
28430         (__arm_vrev64q_s32): Remove.
28431         (__arm_vrev64q_u8): Remove.
28432         (__arm_vrev64q_u16): Remove.
28433         (__arm_vrev64q_u32): Remove.
28434         (__arm_vrev32q_u8): Remove.
28435         (__arm_vrev32q_u16): Remove.
28436         (__arm_vrev16q_u8): Remove.
28437         (__arm_vrev64q_m_u8): Remove.
28438         (__arm_vrev64q_m_s8): Remove.
28439         (__arm_vrev64q_m_u16): Remove.
28440         (__arm_vrev64q_m_s16): Remove.
28441         (__arm_vrev64q_m_u32): Remove.
28442         (__arm_vrev64q_m_s32): Remove.
28443         (__arm_vrev16q_m_s8): Remove.
28444         (__arm_vrev16q_m_u8): Remove.
28445         (__arm_vrev32q_m_s8): Remove.
28446         (__arm_vrev32q_m_u8): Remove.
28447         (__arm_vrev32q_m_s16): Remove.
28448         (__arm_vrev32q_m_u16): Remove.
28449         (__arm_vrev16q_x_s8): Remove.
28450         (__arm_vrev16q_x_u8): Remove.
28451         (__arm_vrev32q_x_s8): Remove.
28452         (__arm_vrev32q_x_s16): Remove.
28453         (__arm_vrev32q_x_u8): Remove.
28454         (__arm_vrev32q_x_u16): Remove.
28455         (__arm_vrev64q_x_s8): Remove.
28456         (__arm_vrev64q_x_s16): Remove.
28457         (__arm_vrev64q_x_s32): Remove.
28458         (__arm_vrev64q_x_u8): Remove.
28459         (__arm_vrev64q_x_u16): Remove.
28460         (__arm_vrev64q_x_u32): Remove.
28461         (__arm_vrev64q_f16): Remove.
28462         (__arm_vrev64q_f32): Remove.
28463         (__arm_vrev32q_f16): Remove.
28464         (__arm_vrev32q_m_f16): Remove.
28465         (__arm_vrev64q_m_f16): Remove.
28466         (__arm_vrev64q_m_f32): Remove.
28467         (__arm_vrev32q_x_f16): Remove.
28468         (__arm_vrev64q_x_f16): Remove.
28469         (__arm_vrev64q_x_f32): Remove.
28470         (__arm_vrev16q): Remove.
28471         (__arm_vrev32q): Remove.
28472         (__arm_vrev64q): Remove.
28473         (__arm_vrev64q_m): Remove.
28474         (__arm_vrev16q_m): Remove.
28475         (__arm_vrev32q_m): Remove.
28476         (__arm_vrev16q_x): Remove.
28477         (__arm_vrev32q_x): Remove.
28478         (__arm_vrev64q_x): Remove.
28480 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28482         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
28483         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
28484         (MVE_FP_M_VREV32Q_ONLY): New iterators.
28485         (mve_insn): Add vrev16q, vrev32q, vrev64q.
28486         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
28487         (@mve_<mve_insn>q_f<mode>): ... this
28488         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
28489         (mve_vrev64q_<supf><mode>): Rename into ...
28490         (@mve_<mve_insn>q_<supf><mode>): ... this.
28491         (mve_vrev32q_<supf><mode>): Rename into
28492         @mve_<mve_insn>q_<supf><mode>.
28493         (mve_vrev16q_<supf>v16qi): Rename into
28494         @mve_<mve_insn>q_<supf><mode>.
28495         (mve_vrev64q_m_<supf><mode>): Rename into
28496         @mve_<mve_insn>q_m_<supf><mode>.
28497         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
28498         (mve_vrev32q_m_<supf><mode>): Rename into
28499         @mve_<mve_insn>q_m_<supf><mode>.
28500         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
28501         (mve_vrev16q_m_<supf>v16qi): Rename into
28502         @mve_<mve_insn>q_m_<supf><mode>.
28504 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28506         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
28507         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
28508         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
28509         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
28510         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
28511         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
28512         * config/arm/arm-mve-builtins-functions.h (class
28513         unspec_based_mve_function_exact_insn_vcmp): New.
28514         * config/arm/arm-mve-builtins.cc
28515         (function_instance::has_inactive_argument): Handle vcmp.
28516         * config/arm/arm_mve.h (vcmpneq): Remove.
28517         (vcmphiq): Remove.
28518         (vcmpeqq): Remove.
28519         (vcmpcsq): Remove.
28520         (vcmpltq): Remove.
28521         (vcmpleq): Remove.
28522         (vcmpgtq): Remove.
28523         (vcmpgeq): Remove.
28524         (vcmpneq_m): Remove.
28525         (vcmphiq_m): Remove.
28526         (vcmpeqq_m): Remove.
28527         (vcmpcsq_m): Remove.
28528         (vcmpcsq_m_n): Remove.
28529         (vcmpltq_m): Remove.
28530         (vcmpleq_m): Remove.
28531         (vcmpgtq_m): Remove.
28532         (vcmpgeq_m): Remove.
28533         (vcmpneq_s8): Remove.
28534         (vcmpneq_s16): Remove.
28535         (vcmpneq_s32): Remove.
28536         (vcmpneq_u8): Remove.
28537         (vcmpneq_u16): Remove.
28538         (vcmpneq_u32): Remove.
28539         (vcmpneq_n_u8): Remove.
28540         (vcmphiq_u8): Remove.
28541         (vcmphiq_n_u8): Remove.
28542         (vcmpeqq_u8): Remove.
28543         (vcmpeqq_n_u8): Remove.
28544         (vcmpcsq_u8): Remove.
28545         (vcmpcsq_n_u8): Remove.
28546         (vcmpneq_n_s8): Remove.
28547         (vcmpltq_s8): Remove.
28548         (vcmpltq_n_s8): Remove.
28549         (vcmpleq_s8): Remove.
28550         (vcmpleq_n_s8): Remove.
28551         (vcmpgtq_s8): Remove.
28552         (vcmpgtq_n_s8): Remove.
28553         (vcmpgeq_s8): Remove.
28554         (vcmpgeq_n_s8): Remove.
28555         (vcmpeqq_s8): Remove.
28556         (vcmpeqq_n_s8): Remove.
28557         (vcmpneq_n_u16): Remove.
28558         (vcmphiq_u16): Remove.
28559         (vcmphiq_n_u16): Remove.
28560         (vcmpeqq_u16): Remove.
28561         (vcmpeqq_n_u16): Remove.
28562         (vcmpcsq_u16): Remove.
28563         (vcmpcsq_n_u16): Remove.
28564         (vcmpneq_n_s16): Remove.
28565         (vcmpltq_s16): Remove.
28566         (vcmpltq_n_s16): Remove.
28567         (vcmpleq_s16): Remove.
28568         (vcmpleq_n_s16): Remove.
28569         (vcmpgtq_s16): Remove.
28570         (vcmpgtq_n_s16): Remove.
28571         (vcmpgeq_s16): Remove.
28572         (vcmpgeq_n_s16): Remove.
28573         (vcmpeqq_s16): Remove.
28574         (vcmpeqq_n_s16): Remove.
28575         (vcmpneq_n_u32): Remove.
28576         (vcmphiq_u32): Remove.
28577         (vcmphiq_n_u32): Remove.
28578         (vcmpeqq_u32): Remove.
28579         (vcmpeqq_n_u32): Remove.
28580         (vcmpcsq_u32): Remove.
28581         (vcmpcsq_n_u32): Remove.
28582         (vcmpneq_n_s32): Remove.
28583         (vcmpltq_s32): Remove.
28584         (vcmpltq_n_s32): Remove.
28585         (vcmpleq_s32): Remove.
28586         (vcmpleq_n_s32): Remove.
28587         (vcmpgtq_s32): Remove.
28588         (vcmpgtq_n_s32): Remove.
28589         (vcmpgeq_s32): Remove.
28590         (vcmpgeq_n_s32): Remove.
28591         (vcmpeqq_s32): Remove.
28592         (vcmpeqq_n_s32): Remove.
28593         (vcmpneq_n_f16): Remove.
28594         (vcmpneq_f16): Remove.
28595         (vcmpltq_n_f16): Remove.
28596         (vcmpltq_f16): Remove.
28597         (vcmpleq_n_f16): Remove.
28598         (vcmpleq_f16): Remove.
28599         (vcmpgtq_n_f16): Remove.
28600         (vcmpgtq_f16): Remove.
28601         (vcmpgeq_n_f16): Remove.
28602         (vcmpgeq_f16): Remove.
28603         (vcmpeqq_n_f16): Remove.
28604         (vcmpeqq_f16): Remove.
28605         (vcmpneq_n_f32): Remove.
28606         (vcmpneq_f32): Remove.
28607         (vcmpltq_n_f32): Remove.
28608         (vcmpltq_f32): Remove.
28609         (vcmpleq_n_f32): Remove.
28610         (vcmpleq_f32): Remove.
28611         (vcmpgtq_n_f32): Remove.
28612         (vcmpgtq_f32): Remove.
28613         (vcmpgeq_n_f32): Remove.
28614         (vcmpgeq_f32): Remove.
28615         (vcmpeqq_n_f32): Remove.
28616         (vcmpeqq_f32): Remove.
28617         (vcmpeqq_m_f16): Remove.
28618         (vcmpeqq_m_f32): Remove.
28619         (vcmpneq_m_u8): Remove.
28620         (vcmpneq_m_n_u8): Remove.
28621         (vcmphiq_m_u8): Remove.
28622         (vcmphiq_m_n_u8): Remove.
28623         (vcmpeqq_m_u8): Remove.
28624         (vcmpeqq_m_n_u8): Remove.
28625         (vcmpcsq_m_u8): Remove.
28626         (vcmpcsq_m_n_u8): Remove.
28627         (vcmpneq_m_s8): Remove.
28628         (vcmpneq_m_n_s8): Remove.
28629         (vcmpltq_m_s8): Remove.
28630         (vcmpltq_m_n_s8): Remove.
28631         (vcmpleq_m_s8): Remove.
28632         (vcmpleq_m_n_s8): Remove.
28633         (vcmpgtq_m_s8): Remove.
28634         (vcmpgtq_m_n_s8): Remove.
28635         (vcmpgeq_m_s8): Remove.
28636         (vcmpgeq_m_n_s8): Remove.
28637         (vcmpeqq_m_s8): Remove.
28638         (vcmpeqq_m_n_s8): Remove.
28639         (vcmpneq_m_u16): Remove.
28640         (vcmpneq_m_n_u16): Remove.
28641         (vcmphiq_m_u16): Remove.
28642         (vcmphiq_m_n_u16): Remove.
28643         (vcmpeqq_m_u16): Remove.
28644         (vcmpeqq_m_n_u16): Remove.
28645         (vcmpcsq_m_u16): Remove.
28646         (vcmpcsq_m_n_u16): Remove.
28647         (vcmpneq_m_s16): Remove.
28648         (vcmpneq_m_n_s16): Remove.
28649         (vcmpltq_m_s16): Remove.
28650         (vcmpltq_m_n_s16): Remove.
28651         (vcmpleq_m_s16): Remove.
28652         (vcmpleq_m_n_s16): Remove.
28653         (vcmpgtq_m_s16): Remove.
28654         (vcmpgtq_m_n_s16): Remove.
28655         (vcmpgeq_m_s16): Remove.
28656         (vcmpgeq_m_n_s16): Remove.
28657         (vcmpeqq_m_s16): Remove.
28658         (vcmpeqq_m_n_s16): Remove.
28659         (vcmpneq_m_u32): Remove.
28660         (vcmpneq_m_n_u32): Remove.
28661         (vcmphiq_m_u32): Remove.
28662         (vcmphiq_m_n_u32): Remove.
28663         (vcmpeqq_m_u32): Remove.
28664         (vcmpeqq_m_n_u32): Remove.
28665         (vcmpcsq_m_u32): Remove.
28666         (vcmpcsq_m_n_u32): Remove.
28667         (vcmpneq_m_s32): Remove.
28668         (vcmpneq_m_n_s32): Remove.
28669         (vcmpltq_m_s32): Remove.
28670         (vcmpltq_m_n_s32): Remove.
28671         (vcmpleq_m_s32): Remove.
28672         (vcmpleq_m_n_s32): Remove.
28673         (vcmpgtq_m_s32): Remove.
28674         (vcmpgtq_m_n_s32): Remove.
28675         (vcmpgeq_m_s32): Remove.
28676         (vcmpgeq_m_n_s32): Remove.
28677         (vcmpeqq_m_s32): Remove.
28678         (vcmpeqq_m_n_s32): Remove.
28679         (vcmpeqq_m_n_f16): Remove.
28680         (vcmpgeq_m_f16): Remove.
28681         (vcmpgeq_m_n_f16): Remove.
28682         (vcmpgtq_m_f16): Remove.
28683         (vcmpgtq_m_n_f16): Remove.
28684         (vcmpleq_m_f16): Remove.
28685         (vcmpleq_m_n_f16): Remove.
28686         (vcmpltq_m_f16): Remove.
28687         (vcmpltq_m_n_f16): Remove.
28688         (vcmpneq_m_f16): Remove.
28689         (vcmpneq_m_n_f16): Remove.
28690         (vcmpeqq_m_n_f32): Remove.
28691         (vcmpgeq_m_f32): Remove.
28692         (vcmpgeq_m_n_f32): Remove.
28693         (vcmpgtq_m_f32): Remove.
28694         (vcmpgtq_m_n_f32): Remove.
28695         (vcmpleq_m_f32): Remove.
28696         (vcmpleq_m_n_f32): Remove.
28697         (vcmpltq_m_f32): Remove.
28698         (vcmpltq_m_n_f32): Remove.
28699         (vcmpneq_m_f32): Remove.
28700         (vcmpneq_m_n_f32): Remove.
28701         (__arm_vcmpneq_s8): Remove.
28702         (__arm_vcmpneq_s16): Remove.
28703         (__arm_vcmpneq_s32): Remove.
28704         (__arm_vcmpneq_u8): Remove.
28705         (__arm_vcmpneq_u16): Remove.
28706         (__arm_vcmpneq_u32): Remove.
28707         (__arm_vcmpneq_n_u8): Remove.
28708         (__arm_vcmphiq_u8): Remove.
28709         (__arm_vcmphiq_n_u8): Remove.
28710         (__arm_vcmpeqq_u8): Remove.
28711         (__arm_vcmpeqq_n_u8): Remove.
28712         (__arm_vcmpcsq_u8): Remove.
28713         (__arm_vcmpcsq_n_u8): Remove.
28714         (__arm_vcmpneq_n_s8): Remove.
28715         (__arm_vcmpltq_s8): Remove.
28716         (__arm_vcmpltq_n_s8): Remove.
28717         (__arm_vcmpleq_s8): Remove.
28718         (__arm_vcmpleq_n_s8): Remove.
28719         (__arm_vcmpgtq_s8): Remove.
28720         (__arm_vcmpgtq_n_s8): Remove.
28721         (__arm_vcmpgeq_s8): Remove.
28722         (__arm_vcmpgeq_n_s8): Remove.
28723         (__arm_vcmpeqq_s8): Remove.
28724         (__arm_vcmpeqq_n_s8): Remove.
28725         (__arm_vcmpneq_n_u16): Remove.
28726         (__arm_vcmphiq_u16): Remove.
28727         (__arm_vcmphiq_n_u16): Remove.
28728         (__arm_vcmpeqq_u16): Remove.
28729         (__arm_vcmpeqq_n_u16): Remove.
28730         (__arm_vcmpcsq_u16): Remove.
28731         (__arm_vcmpcsq_n_u16): Remove.
28732         (__arm_vcmpneq_n_s16): Remove.
28733         (__arm_vcmpltq_s16): Remove.
28734         (__arm_vcmpltq_n_s16): Remove.
28735         (__arm_vcmpleq_s16): Remove.
28736         (__arm_vcmpleq_n_s16): Remove.
28737         (__arm_vcmpgtq_s16): Remove.
28738         (__arm_vcmpgtq_n_s16): Remove.
28739         (__arm_vcmpgeq_s16): Remove.
28740         (__arm_vcmpgeq_n_s16): Remove.
28741         (__arm_vcmpeqq_s16): Remove.
28742         (__arm_vcmpeqq_n_s16): Remove.
28743         (__arm_vcmpneq_n_u32): Remove.
28744         (__arm_vcmphiq_u32): Remove.
28745         (__arm_vcmphiq_n_u32): Remove.
28746         (__arm_vcmpeqq_u32): Remove.
28747         (__arm_vcmpeqq_n_u32): Remove.
28748         (__arm_vcmpcsq_u32): Remove.
28749         (__arm_vcmpcsq_n_u32): Remove.
28750         (__arm_vcmpneq_n_s32): Remove.
28751         (__arm_vcmpltq_s32): Remove.
28752         (__arm_vcmpltq_n_s32): Remove.
28753         (__arm_vcmpleq_s32): Remove.
28754         (__arm_vcmpleq_n_s32): Remove.
28755         (__arm_vcmpgtq_s32): Remove.
28756         (__arm_vcmpgtq_n_s32): Remove.
28757         (__arm_vcmpgeq_s32): Remove.
28758         (__arm_vcmpgeq_n_s32): Remove.
28759         (__arm_vcmpeqq_s32): Remove.
28760         (__arm_vcmpeqq_n_s32): Remove.
28761         (__arm_vcmpneq_m_u8): Remove.
28762         (__arm_vcmpneq_m_n_u8): Remove.
28763         (__arm_vcmphiq_m_u8): Remove.
28764         (__arm_vcmphiq_m_n_u8): Remove.
28765         (__arm_vcmpeqq_m_u8): Remove.
28766         (__arm_vcmpeqq_m_n_u8): Remove.
28767         (__arm_vcmpcsq_m_u8): Remove.
28768         (__arm_vcmpcsq_m_n_u8): Remove.
28769         (__arm_vcmpneq_m_s8): Remove.
28770         (__arm_vcmpneq_m_n_s8): Remove.
28771         (__arm_vcmpltq_m_s8): Remove.
28772         (__arm_vcmpltq_m_n_s8): Remove.
28773         (__arm_vcmpleq_m_s8): Remove.
28774         (__arm_vcmpleq_m_n_s8): Remove.
28775         (__arm_vcmpgtq_m_s8): Remove.
28776         (__arm_vcmpgtq_m_n_s8): Remove.
28777         (__arm_vcmpgeq_m_s8): Remove.
28778         (__arm_vcmpgeq_m_n_s8): Remove.
28779         (__arm_vcmpeqq_m_s8): Remove.
28780         (__arm_vcmpeqq_m_n_s8): Remove.
28781         (__arm_vcmpneq_m_u16): Remove.
28782         (__arm_vcmpneq_m_n_u16): Remove.
28783         (__arm_vcmphiq_m_u16): Remove.
28784         (__arm_vcmphiq_m_n_u16): Remove.
28785         (__arm_vcmpeqq_m_u16): Remove.
28786         (__arm_vcmpeqq_m_n_u16): Remove.
28787         (__arm_vcmpcsq_m_u16): Remove.
28788         (__arm_vcmpcsq_m_n_u16): Remove.
28789         (__arm_vcmpneq_m_s16): Remove.
28790         (__arm_vcmpneq_m_n_s16): Remove.
28791         (__arm_vcmpltq_m_s16): Remove.
28792         (__arm_vcmpltq_m_n_s16): Remove.
28793         (__arm_vcmpleq_m_s16): Remove.
28794         (__arm_vcmpleq_m_n_s16): Remove.
28795         (__arm_vcmpgtq_m_s16): Remove.
28796         (__arm_vcmpgtq_m_n_s16): Remove.
28797         (__arm_vcmpgeq_m_s16): Remove.
28798         (__arm_vcmpgeq_m_n_s16): Remove.
28799         (__arm_vcmpeqq_m_s16): Remove.
28800         (__arm_vcmpeqq_m_n_s16): Remove.
28801         (__arm_vcmpneq_m_u32): Remove.
28802         (__arm_vcmpneq_m_n_u32): Remove.
28803         (__arm_vcmphiq_m_u32): Remove.
28804         (__arm_vcmphiq_m_n_u32): Remove.
28805         (__arm_vcmpeqq_m_u32): Remove.
28806         (__arm_vcmpeqq_m_n_u32): Remove.
28807         (__arm_vcmpcsq_m_u32): Remove.
28808         (__arm_vcmpcsq_m_n_u32): Remove.
28809         (__arm_vcmpneq_m_s32): Remove.
28810         (__arm_vcmpneq_m_n_s32): Remove.
28811         (__arm_vcmpltq_m_s32): Remove.
28812         (__arm_vcmpltq_m_n_s32): Remove.
28813         (__arm_vcmpleq_m_s32): Remove.
28814         (__arm_vcmpleq_m_n_s32): Remove.
28815         (__arm_vcmpgtq_m_s32): Remove.
28816         (__arm_vcmpgtq_m_n_s32): Remove.
28817         (__arm_vcmpgeq_m_s32): Remove.
28818         (__arm_vcmpgeq_m_n_s32): Remove.
28819         (__arm_vcmpeqq_m_s32): Remove.
28820         (__arm_vcmpeqq_m_n_s32): Remove.
28821         (__arm_vcmpneq_n_f16): Remove.
28822         (__arm_vcmpneq_f16): Remove.
28823         (__arm_vcmpltq_n_f16): Remove.
28824         (__arm_vcmpltq_f16): Remove.
28825         (__arm_vcmpleq_n_f16): Remove.
28826         (__arm_vcmpleq_f16): Remove.
28827         (__arm_vcmpgtq_n_f16): Remove.
28828         (__arm_vcmpgtq_f16): Remove.
28829         (__arm_vcmpgeq_n_f16): Remove.
28830         (__arm_vcmpgeq_f16): Remove.
28831         (__arm_vcmpeqq_n_f16): Remove.
28832         (__arm_vcmpeqq_f16): Remove.
28833         (__arm_vcmpneq_n_f32): Remove.
28834         (__arm_vcmpneq_f32): Remove.
28835         (__arm_vcmpltq_n_f32): Remove.
28836         (__arm_vcmpltq_f32): Remove.
28837         (__arm_vcmpleq_n_f32): Remove.
28838         (__arm_vcmpleq_f32): Remove.
28839         (__arm_vcmpgtq_n_f32): Remove.
28840         (__arm_vcmpgtq_f32): Remove.
28841         (__arm_vcmpgeq_n_f32): Remove.
28842         (__arm_vcmpgeq_f32): Remove.
28843         (__arm_vcmpeqq_n_f32): Remove.
28844         (__arm_vcmpeqq_f32): Remove.
28845         (__arm_vcmpeqq_m_f16): Remove.
28846         (__arm_vcmpeqq_m_f32): Remove.
28847         (__arm_vcmpeqq_m_n_f16): Remove.
28848         (__arm_vcmpgeq_m_f16): Remove.
28849         (__arm_vcmpgeq_m_n_f16): Remove.
28850         (__arm_vcmpgtq_m_f16): Remove.
28851         (__arm_vcmpgtq_m_n_f16): Remove.
28852         (__arm_vcmpleq_m_f16): Remove.
28853         (__arm_vcmpleq_m_n_f16): Remove.
28854         (__arm_vcmpltq_m_f16): Remove.
28855         (__arm_vcmpltq_m_n_f16): Remove.
28856         (__arm_vcmpneq_m_f16): Remove.
28857         (__arm_vcmpneq_m_n_f16): Remove.
28858         (__arm_vcmpeqq_m_n_f32): Remove.
28859         (__arm_vcmpgeq_m_f32): Remove.
28860         (__arm_vcmpgeq_m_n_f32): Remove.
28861         (__arm_vcmpgtq_m_f32): Remove.
28862         (__arm_vcmpgtq_m_n_f32): Remove.
28863         (__arm_vcmpleq_m_f32): Remove.
28864         (__arm_vcmpleq_m_n_f32): Remove.
28865         (__arm_vcmpltq_m_f32): Remove.
28866         (__arm_vcmpltq_m_n_f32): Remove.
28867         (__arm_vcmpneq_m_f32): Remove.
28868         (__arm_vcmpneq_m_n_f32): Remove.
28869         (__arm_vcmpneq): Remove.
28870         (__arm_vcmphiq): Remove.
28871         (__arm_vcmpeqq): Remove.
28872         (__arm_vcmpcsq): Remove.
28873         (__arm_vcmpltq): Remove.
28874         (__arm_vcmpleq): Remove.
28875         (__arm_vcmpgtq): Remove.
28876         (__arm_vcmpgeq): Remove.
28877         (__arm_vcmpneq_m): Remove.
28878         (__arm_vcmphiq_m): Remove.
28879         (__arm_vcmpeqq_m): Remove.
28880         (__arm_vcmpcsq_m): Remove.
28881         (__arm_vcmpltq_m): Remove.
28882         (__arm_vcmpleq_m): Remove.
28883         (__arm_vcmpgtq_m): Remove.
28884         (__arm_vcmpgeq_m): Remove.
28886 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28888         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
28889         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
28891 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
28893         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
28894         (MVE_CMP_M_N_F, mve_cmp_op1): New.
28895         (isu): Add VCMP*
28896         (supf): Likewise.
28897         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
28898         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
28899         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
28900         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
28901         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
28902         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
28903         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
28904         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
28905         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
28906         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
28907         ...
28908         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
28909         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
28910         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
28911         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
28912         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
28913         into ...
28914         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
28915         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
28916         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
28917         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
28918         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
28920 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
28922         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
28923         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
28924         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
28925         vice versa.
28927 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
28929         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
28930         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
28931         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
28932         Simplify parity(rotate(x,y)) as parity(x).
28934 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
28936         * config/riscv/autovec.md (@vec_series<mode>): New pattern
28937         * config/riscv/riscv-protos.h (expand_vec_series): New function.
28938         * config/riscv/riscv-v.cc (emit_binop): Ditto.
28939         (emit_index_op): Ditto.
28940         (expand_vec_series): Ditto.
28941         (expand_const_vector): Add series vector handling.
28942         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
28944 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
28946         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
28947         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
28948         (*concat<mode><dwi>3_2): Likewise.
28949         (*concat<mode><dwi>3_3): Likewise.
28950         (*concat<mode><dwi>3_4): Likewise.
28951         (*concat<mode><dwi>3_5): Likewise.
28952         (*concat<mode><dwi>3_6): Likewise.
28953         (*concat<mode><dwi>3_7): Likewise.
28955 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
28957         PR target/92658
28958         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
28959         (<insn>v4qiv4hi2): New expander.
28960         (<insn>v2hiv2si2): Ditto.
28961         (<insn>v2qiv2si2): Ditto.
28962         (<insn>v2qiv2hi2): Ditto.
28964 2023-05-10  Jeff Law  <jlaw@ventanamicro>
28966         * config/h8300/constraints.md (Q): Make this a special memory
28967         constraint.
28968         (Zz): Similarly.
28970 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
28972         PR fortran/109788
28973         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
28974         if t is void_list_node.
28976 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28978         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
28979         (aarch64_sqmovun<mode>_insn_be): Delete.
28980         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
28981         (aarch64_sqmovun<mode>): Delete expander.
28983 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28985         PR target/99195
28986         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
28987         Rename to...
28988         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
28989         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
28990         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
28992 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28994         PR target/99195
28995         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
28996         Rename to...
28997         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
28998         (aarch64_<sur>qadd<mode>): Rename to...
28999         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
29001 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29003         * config/aarch64/aarch64-simd.md
29004         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
29005         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
29006         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
29007         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
29009 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29011         PR target/99195
29012         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
29013         (aarch64_xtn<mode>_insn_be): Likewise.
29014         (trunc<mode><Vnarrowq>2): Rename to...
29015         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
29016         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
29017         (aarch64_<su>qmovn<mode>): Likewise.
29018         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
29019         (aarch64_<su>qmovn<mode>_insn_le): Delete.
29020         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
29022 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
29024         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
29025         intruction replace null avl with (const_int 0).
29027 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29029         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
29030         incorrect codes.
29032 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29034         PR target/109773
29035         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
29036         (source_equal_p): Fix dead loop in vsetvl avl checking.
29038 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
29040         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
29041         of modeadjusted_dccr.
29043 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29045         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
29046         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
29047         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
29048         * config/arm/arm-mve-builtins.cc
29049         (function_instance::has_inactive_argument): Handle vmaxaq and
29050         vminaq.
29051         * config/arm/arm_mve.h (vminaq): Remove.
29052         (vmaxaq): Remove.
29053         (vminaq_m): Remove.
29054         (vmaxaq_m): Remove.
29055         (vminaq_s8): Remove.
29056         (vmaxaq_s8): Remove.
29057         (vminaq_s16): Remove.
29058         (vmaxaq_s16): Remove.
29059         (vminaq_s32): Remove.
29060         (vmaxaq_s32): Remove.
29061         (vminaq_m_s8): Remove.
29062         (vmaxaq_m_s8): Remove.
29063         (vminaq_m_s16): Remove.
29064         (vmaxaq_m_s16): Remove.
29065         (vminaq_m_s32): Remove.
29066         (vmaxaq_m_s32): Remove.
29067         (__arm_vminaq_s8): Remove.
29068         (__arm_vmaxaq_s8): Remove.
29069         (__arm_vminaq_s16): Remove.
29070         (__arm_vmaxaq_s16): Remove.
29071         (__arm_vminaq_s32): Remove.
29072         (__arm_vmaxaq_s32): Remove.
29073         (__arm_vminaq_m_s8): Remove.
29074         (__arm_vmaxaq_m_s8): Remove.
29075         (__arm_vminaq_m_s16): Remove.
29076         (__arm_vmaxaq_m_s16): Remove.
29077         (__arm_vminaq_m_s32): Remove.
29078         (__arm_vmaxaq_m_s32): Remove.
29079         (__arm_vminaq): Remove.
29080         (__arm_vmaxaq): Remove.
29081         (__arm_vminaq_m): Remove.
29082         (__arm_vmaxaq_m): Remove.
29084 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29086         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
29087         New.
29088         (mve_insn): Add vmaxa, vmina.
29089         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
29090         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
29091         Merge into ...
29092         (@mve_<mve_insn>q_<supf><mode>): ... this.
29093         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
29094         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
29096 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29098         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
29099         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
29101 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29103         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
29104         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
29105         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
29106         * config/arm/arm-mve-builtins.cc
29107         (function_instance::has_inactive_argument): Handle vmaxnmaq and
29108         vminnmaq.
29109         * config/arm/arm_mve.h (vminnmaq): Remove.
29110         (vmaxnmaq): Remove.
29111         (vmaxnmaq_m): Remove.
29112         (vminnmaq_m): Remove.
29113         (vminnmaq_f16): Remove.
29114         (vmaxnmaq_f16): Remove.
29115         (vminnmaq_f32): Remove.
29116         (vmaxnmaq_f32): Remove.
29117         (vmaxnmaq_m_f16): Remove.
29118         (vminnmaq_m_f16): Remove.
29119         (vmaxnmaq_m_f32): Remove.
29120         (vminnmaq_m_f32): Remove.
29121         (__arm_vminnmaq_f16): Remove.
29122         (__arm_vmaxnmaq_f16): Remove.
29123         (__arm_vminnmaq_f32): Remove.
29124         (__arm_vmaxnmaq_f32): Remove.
29125         (__arm_vmaxnmaq_m_f16): Remove.
29126         (__arm_vminnmaq_m_f16): Remove.
29127         (__arm_vmaxnmaq_m_f32): Remove.
29128         (__arm_vminnmaq_m_f32): Remove.
29129         (__arm_vminnmaq): Remove.
29130         (__arm_vmaxnmaq): Remove.
29131         (__arm_vmaxnmaq_m): Remove.
29132         (__arm_vminnmaq_m): Remove.
29134 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29136         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
29137         (MVE_VMAXNMA_VMINNMAQ_M): New.
29138         (mve_insn): Add vmaxnma, vminnma.
29139         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
29140         Merge into ...
29141         (@mve_<mve_insn>q_f<mode>): ... this.
29142         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
29143         (@mve_<mve_insn>q_m_f<mode>): ... this.
29145 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29147         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
29148         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
29149         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
29150         (vminnmavq, vminnmvq): New.
29151         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
29152         (vminnmavq, vminnmvq): New.
29153         * config/arm/arm_mve.h (vminnmvq): Remove.
29154         (vminnmavq): Remove.
29155         (vmaxnmvq): Remove.
29156         (vmaxnmavq): Remove.
29157         (vmaxnmavq_p): Remove.
29158         (vmaxnmvq_p): Remove.
29159         (vminnmavq_p): Remove.
29160         (vminnmvq_p): Remove.
29161         (vminnmvq_f16): Remove.
29162         (vminnmavq_f16): Remove.
29163         (vmaxnmvq_f16): Remove.
29164         (vmaxnmavq_f16): Remove.
29165         (vminnmvq_f32): Remove.
29166         (vminnmavq_f32): Remove.
29167         (vmaxnmvq_f32): Remove.
29168         (vmaxnmavq_f32): Remove.
29169         (vmaxnmavq_p_f16): Remove.
29170         (vmaxnmvq_p_f16): Remove.
29171         (vminnmavq_p_f16): Remove.
29172         (vminnmvq_p_f16): Remove.
29173         (vmaxnmavq_p_f32): Remove.
29174         (vmaxnmvq_p_f32): Remove.
29175         (vminnmavq_p_f32): Remove.
29176         (vminnmvq_p_f32): Remove.
29177         (__arm_vminnmvq_f16): Remove.
29178         (__arm_vminnmavq_f16): Remove.
29179         (__arm_vmaxnmvq_f16): Remove.
29180         (__arm_vmaxnmavq_f16): Remove.
29181         (__arm_vminnmvq_f32): Remove.
29182         (__arm_vminnmavq_f32): Remove.
29183         (__arm_vmaxnmvq_f32): Remove.
29184         (__arm_vmaxnmavq_f32): Remove.
29185         (__arm_vmaxnmavq_p_f16): Remove.
29186         (__arm_vmaxnmvq_p_f16): Remove.
29187         (__arm_vminnmavq_p_f16): Remove.
29188         (__arm_vminnmvq_p_f16): Remove.
29189         (__arm_vmaxnmavq_p_f32): Remove.
29190         (__arm_vmaxnmvq_p_f32): Remove.
29191         (__arm_vminnmavq_p_f32): Remove.
29192         (__arm_vminnmvq_p_f32): Remove.
29193         (__arm_vminnmvq): Remove.
29194         (__arm_vminnmavq): Remove.
29195         (__arm_vmaxnmvq): Remove.
29196         (__arm_vmaxnmavq): Remove.
29197         (__arm_vmaxnmavq_p): Remove.
29198         (__arm_vmaxnmvq_p): Remove.
29199         (__arm_vminnmavq_p): Remove.
29200         (__arm_vminnmvq_p): Remove.
29201         (__arm_vmaxnmavq_m): Remove.
29202         (__arm_vmaxnmvq_m): Remove.
29204 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29206         * config/arm/arm-mve-builtins-functions.h
29207         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
29209 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29211         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
29212         (MVE_VMAXNMxV_MINNMxVQ_P): New.
29213         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
29214         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
29215         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
29216         (@mve_<mve_insn>q_f<mode>): ... this.
29217         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
29218         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
29219         (@mve_<mve_insn>q_p_f<mode>): ... this.
29221 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29223         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
29224         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
29225         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
29226         * config/arm/arm_mve.h (vminnmq): Remove.
29227         (vmaxnmq): Remove.
29228         (vmaxnmq_m): Remove.
29229         (vminnmq_m): Remove.
29230         (vminnmq_x): Remove.
29231         (vmaxnmq_x): Remove.
29232         (vminnmq_f16): Remove.
29233         (vmaxnmq_f16): Remove.
29234         (vminnmq_f32): Remove.
29235         (vmaxnmq_f32): Remove.
29236         (vmaxnmq_m_f32): Remove.
29237         (vmaxnmq_m_f16): Remove.
29238         (vminnmq_m_f32): Remove.
29239         (vminnmq_m_f16): Remove.
29240         (vminnmq_x_f16): Remove.
29241         (vminnmq_x_f32): Remove.
29242         (vmaxnmq_x_f16): Remove.
29243         (vmaxnmq_x_f32): Remove.
29244         (__arm_vminnmq_f16): Remove.
29245         (__arm_vmaxnmq_f16): Remove.
29246         (__arm_vminnmq_f32): Remove.
29247         (__arm_vmaxnmq_f32): Remove.
29248         (__arm_vmaxnmq_m_f32): Remove.
29249         (__arm_vmaxnmq_m_f16): Remove.
29250         (__arm_vminnmq_m_f32): Remove.
29251         (__arm_vminnmq_m_f16): Remove.
29252         (__arm_vminnmq_x_f16): Remove.
29253         (__arm_vminnmq_x_f32): Remove.
29254         (__arm_vmaxnmq_x_f16): Remove.
29255         (__arm_vmaxnmq_x_f32): Remove.
29256         (__arm_vminnmq): Remove.
29257         (__arm_vmaxnmq): Remove.
29258         (__arm_vmaxnmq_m): Remove.
29259         (__arm_vminnmq_m): Remove.
29260         (__arm_vminnmq_x): Remove.
29261         (__arm_vmaxnmq_x): Remove.
29263 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29265         * config/arm/iterators.md (MAX_MIN_F): New.
29266         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
29267         (mve_insn): Add vmaxnm, vminnm.
29268         (max_min_f_str): New.
29269         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
29270         Merge into ...
29271         (@mve_<max_min_f_str>q_f<mode>): ... this.
29272         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
29273         (@mve_<mve_insn>q_m_f<mode>): ... this.
29275 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29277         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
29278         (smax<mode>3): Likewise.
29280 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29282         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
29283         (FUNCTION_PRED_P_S): New.
29284         (vmaxavq, vminavq, vmaxvq, vminvq): New.
29285         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
29286         (vminvq): New.
29287         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
29288         (vminvq): New.
29289         * config/arm/arm_mve.h (vminvq): Remove.
29290         (vmaxvq): Remove.
29291         (vminvq_p): Remove.
29292         (vmaxvq_p): Remove.
29293         (vminvq_u8): Remove.
29294         (vmaxvq_u8): Remove.
29295         (vminvq_s8): Remove.
29296         (vmaxvq_s8): Remove.
29297         (vminvq_u16): Remove.
29298         (vmaxvq_u16): Remove.
29299         (vminvq_s16): Remove.
29300         (vmaxvq_s16): Remove.
29301         (vminvq_u32): Remove.
29302         (vmaxvq_u32): Remove.
29303         (vminvq_s32): Remove.
29304         (vmaxvq_s32): Remove.
29305         (vminvq_p_u8): Remove.
29306         (vmaxvq_p_u8): Remove.
29307         (vminvq_p_s8): Remove.
29308         (vmaxvq_p_s8): Remove.
29309         (vminvq_p_u16): Remove.
29310         (vmaxvq_p_u16): Remove.
29311         (vminvq_p_s16): Remove.
29312         (vmaxvq_p_s16): Remove.
29313         (vminvq_p_u32): Remove.
29314         (vmaxvq_p_u32): Remove.
29315         (vminvq_p_s32): Remove.
29316         (vmaxvq_p_s32): Remove.
29317         (__arm_vminvq_u8): Remove.
29318         (__arm_vmaxvq_u8): Remove.
29319         (__arm_vminvq_s8): Remove.
29320         (__arm_vmaxvq_s8): Remove.
29321         (__arm_vminvq_u16): Remove.
29322         (__arm_vmaxvq_u16): Remove.
29323         (__arm_vminvq_s16): Remove.
29324         (__arm_vmaxvq_s16): Remove.
29325         (__arm_vminvq_u32): Remove.
29326         (__arm_vmaxvq_u32): Remove.
29327         (__arm_vminvq_s32): Remove.
29328         (__arm_vmaxvq_s32): Remove.
29329         (__arm_vminvq_p_u8): Remove.
29330         (__arm_vmaxvq_p_u8): Remove.
29331         (__arm_vminvq_p_s8): Remove.
29332         (__arm_vmaxvq_p_s8): Remove.
29333         (__arm_vminvq_p_u16): Remove.
29334         (__arm_vmaxvq_p_u16): Remove.
29335         (__arm_vminvq_p_s16): Remove.
29336         (__arm_vmaxvq_p_s16): Remove.
29337         (__arm_vminvq_p_u32): Remove.
29338         (__arm_vmaxvq_p_u32): Remove.
29339         (__arm_vminvq_p_s32): Remove.
29340         (__arm_vmaxvq_p_s32): Remove.
29341         (__arm_vminvq): Remove.
29342         (__arm_vmaxvq): Remove.
29343         (__arm_vminvq_p): Remove.
29344         (__arm_vmaxvq_p): Remove.
29345         (vminavq): Remove.
29346         (vmaxavq): Remove.
29347         (vminavq_p): Remove.
29348         (vmaxavq_p): Remove.
29349         (vminavq_s8): Remove.
29350         (vmaxavq_s8): Remove.
29351         (vminavq_s16): Remove.
29352         (vmaxavq_s16): Remove.
29353         (vminavq_s32): Remove.
29354         (vmaxavq_s32): Remove.
29355         (vminavq_p_s8): Remove.
29356         (vmaxavq_p_s8): Remove.
29357         (vminavq_p_s16): Remove.
29358         (vmaxavq_p_s16): Remove.
29359         (vminavq_p_s32): Remove.
29360         (vmaxavq_p_s32): Remove.
29361         (__arm_vminavq_s8): Remove.
29362         (__arm_vmaxavq_s8): Remove.
29363         (__arm_vminavq_s16): Remove.
29364         (__arm_vmaxavq_s16): Remove.
29365         (__arm_vminavq_s32): Remove.
29366         (__arm_vmaxavq_s32): Remove.
29367         (__arm_vminavq_p_s8): Remove.
29368         (__arm_vmaxavq_p_s8): Remove.
29369         (__arm_vminavq_p_s16): Remove.
29370         (__arm_vmaxavq_p_s16): Remove.
29371         (__arm_vminavq_p_s32): Remove.
29372         (__arm_vmaxavq_p_s32): Remove.
29373         (__arm_vminavq): Remove.
29374         (__arm_vmaxavq): Remove.
29375         (__arm_vminavq_p): Remove.
29376         (__arm_vmaxavq_p): Remove.
29378 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29380         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
29381         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
29382         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
29383         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
29384         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
29385         (@mve_<mve_insn>q_<supf><mode>): ... this.
29386         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
29387         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
29388         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
29390 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29392         * config/arm/arm-mve-builtins-functions.h (class
29393         unspec_mve_function_exact_insn_pred_p): New.
29395 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29397         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
29398         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
29400 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29402         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
29403         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
29405 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
29407         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
29408         Declare.
29409         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
29410         (ADJUST_REG_ALLOC_ORDER): Likewise.
29411         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
29412         function.
29413         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
29414         Upa rather than Upl for unpredicated movprfx alternatives.
29416 2023-05-09  Jeff Law  <jlaw@ventanamicro>
29418         * config/h8300/testcompare.md: Add peephole2 which uses a memory
29419         load to set flags, thus eliminating a compare against zero.
29421 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29423         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
29424         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
29425         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
29426         * config/arm/arm_mve.h (vshlltq): Remove.
29427         (vshllbq): Remove.
29428         (vshllbq_m): Remove.
29429         (vshlltq_m): Remove.
29430         (vshllbq_x): Remove.
29431         (vshlltq_x): Remove.
29432         (vshlltq_n_u8): Remove.
29433         (vshllbq_n_u8): Remove.
29434         (vshlltq_n_s8): Remove.
29435         (vshllbq_n_s8): Remove.
29436         (vshlltq_n_u16): Remove.
29437         (vshllbq_n_u16): Remove.
29438         (vshlltq_n_s16): Remove.
29439         (vshllbq_n_s16): Remove.
29440         (vshllbq_m_n_s8): Remove.
29441         (vshllbq_m_n_s16): Remove.
29442         (vshllbq_m_n_u8): Remove.
29443         (vshllbq_m_n_u16): Remove.
29444         (vshlltq_m_n_s8): Remove.
29445         (vshlltq_m_n_s16): Remove.
29446         (vshlltq_m_n_u8): Remove.
29447         (vshlltq_m_n_u16): Remove.
29448         (vshllbq_x_n_s8): Remove.
29449         (vshllbq_x_n_s16): Remove.
29450         (vshllbq_x_n_u8): Remove.
29451         (vshllbq_x_n_u16): Remove.
29452         (vshlltq_x_n_s8): Remove.
29453         (vshlltq_x_n_s16): Remove.
29454         (vshlltq_x_n_u8): Remove.
29455         (vshlltq_x_n_u16): Remove.
29456         (__arm_vshlltq_n_u8): Remove.
29457         (__arm_vshllbq_n_u8): Remove.
29458         (__arm_vshlltq_n_s8): Remove.
29459         (__arm_vshllbq_n_s8): Remove.
29460         (__arm_vshlltq_n_u16): Remove.
29461         (__arm_vshllbq_n_u16): Remove.
29462         (__arm_vshlltq_n_s16): Remove.
29463         (__arm_vshllbq_n_s16): Remove.
29464         (__arm_vshllbq_m_n_s8): Remove.
29465         (__arm_vshllbq_m_n_s16): Remove.
29466         (__arm_vshllbq_m_n_u8): Remove.
29467         (__arm_vshllbq_m_n_u16): Remove.
29468         (__arm_vshlltq_m_n_s8): Remove.
29469         (__arm_vshlltq_m_n_s16): Remove.
29470         (__arm_vshlltq_m_n_u8): Remove.
29471         (__arm_vshlltq_m_n_u16): Remove.
29472         (__arm_vshllbq_x_n_s8): Remove.
29473         (__arm_vshllbq_x_n_s16): Remove.
29474         (__arm_vshllbq_x_n_u8): Remove.
29475         (__arm_vshllbq_x_n_u16): Remove.
29476         (__arm_vshlltq_x_n_s8): Remove.
29477         (__arm_vshlltq_x_n_s16): Remove.
29478         (__arm_vshlltq_x_n_u8): Remove.
29479         (__arm_vshlltq_x_n_u16): Remove.
29480         (__arm_vshlltq): Remove.
29481         (__arm_vshllbq): Remove.
29482         (__arm_vshllbq_m): Remove.
29483         (__arm_vshlltq_m): Remove.
29484         (__arm_vshllbq_x): Remove.
29485         (__arm_vshlltq_x): Remove.
29487 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29489         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
29490         (VSHLLBQ_N, VSHLLTQ_N): Remove.
29491         (VSHLLxQ_N): New.
29492         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
29493         (VSHLLxQ_M_N): New.
29494         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
29495         (mve_vshlltq_n_<supf><mode>): Merge into ...
29496         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
29497         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
29498         Merge into ...
29499         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
29501 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29503         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
29504         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
29506 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29508         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
29509         (vqmovntq, vqmovunbq, vqmovuntq): New.
29510         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
29511         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
29512         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
29513         (vqmovntq, vqmovunbq, vqmovuntq): New.
29514         * config/arm/arm-mve-builtins.cc
29515         (function_instance::has_inactive_argument): Handle vmovnbq,
29516         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
29517         * config/arm/arm_mve.h (vqmovntq): Remove.
29518         (vqmovnbq): Remove.
29519         (vqmovnbq_m): Remove.
29520         (vqmovntq_m): Remove.
29521         (vqmovntq_u16): Remove.
29522         (vqmovnbq_u16): Remove.
29523         (vqmovntq_s16): Remove.
29524         (vqmovnbq_s16): Remove.
29525         (vqmovntq_u32): Remove.
29526         (vqmovnbq_u32): Remove.
29527         (vqmovntq_s32): Remove.
29528         (vqmovnbq_s32): Remove.
29529         (vqmovnbq_m_s16): Remove.
29530         (vqmovntq_m_s16): Remove.
29531         (vqmovnbq_m_u16): Remove.
29532         (vqmovntq_m_u16): Remove.
29533         (vqmovnbq_m_s32): Remove.
29534         (vqmovntq_m_s32): Remove.
29535         (vqmovnbq_m_u32): Remove.
29536         (vqmovntq_m_u32): Remove.
29537         (__arm_vqmovntq_u16): Remove.
29538         (__arm_vqmovnbq_u16): Remove.
29539         (__arm_vqmovntq_s16): Remove.
29540         (__arm_vqmovnbq_s16): Remove.
29541         (__arm_vqmovntq_u32): Remove.
29542         (__arm_vqmovnbq_u32): Remove.
29543         (__arm_vqmovntq_s32): Remove.
29544         (__arm_vqmovnbq_s32): Remove.
29545         (__arm_vqmovnbq_m_s16): Remove.
29546         (__arm_vqmovntq_m_s16): Remove.
29547         (__arm_vqmovnbq_m_u16): Remove.
29548         (__arm_vqmovntq_m_u16): Remove.
29549         (__arm_vqmovnbq_m_s32): Remove.
29550         (__arm_vqmovntq_m_s32): Remove.
29551         (__arm_vqmovnbq_m_u32): Remove.
29552         (__arm_vqmovntq_m_u32): Remove.
29553         (__arm_vqmovntq): Remove.
29554         (__arm_vqmovnbq): Remove.
29555         (__arm_vqmovnbq_m): Remove.
29556         (__arm_vqmovntq_m): Remove.
29557         (vmovntq): Remove.
29558         (vmovnbq): Remove.
29559         (vmovnbq_m): Remove.
29560         (vmovntq_m): Remove.
29561         (vmovntq_u16): Remove.
29562         (vmovnbq_u16): Remove.
29563         (vmovntq_s16): Remove.
29564         (vmovnbq_s16): Remove.
29565         (vmovntq_u32): Remove.
29566         (vmovnbq_u32): Remove.
29567         (vmovntq_s32): Remove.
29568         (vmovnbq_s32): Remove.
29569         (vmovnbq_m_s16): Remove.
29570         (vmovntq_m_s16): Remove.
29571         (vmovnbq_m_u16): Remove.
29572         (vmovntq_m_u16): Remove.
29573         (vmovnbq_m_s32): Remove.
29574         (vmovntq_m_s32): Remove.
29575         (vmovnbq_m_u32): Remove.
29576         (vmovntq_m_u32): Remove.
29577         (__arm_vmovntq_u16): Remove.
29578         (__arm_vmovnbq_u16): Remove.
29579         (__arm_vmovntq_s16): Remove.
29580         (__arm_vmovnbq_s16): Remove.
29581         (__arm_vmovntq_u32): Remove.
29582         (__arm_vmovnbq_u32): Remove.
29583         (__arm_vmovntq_s32): Remove.
29584         (__arm_vmovnbq_s32): Remove.
29585         (__arm_vmovnbq_m_s16): Remove.
29586         (__arm_vmovntq_m_s16): Remove.
29587         (__arm_vmovnbq_m_u16): Remove.
29588         (__arm_vmovntq_m_u16): Remove.
29589         (__arm_vmovnbq_m_s32): Remove.
29590         (__arm_vmovntq_m_s32): Remove.
29591         (__arm_vmovnbq_m_u32): Remove.
29592         (__arm_vmovntq_m_u32): Remove.
29593         (__arm_vmovntq): Remove.
29594         (__arm_vmovnbq): Remove.
29595         (__arm_vmovnbq_m): Remove.
29596         (__arm_vmovntq_m): Remove.
29597         (vqmovuntq): Remove.
29598         (vqmovunbq): Remove.
29599         (vqmovunbq_m): Remove.
29600         (vqmovuntq_m): Remove.
29601         (vqmovuntq_s16): Remove.
29602         (vqmovunbq_s16): Remove.
29603         (vqmovuntq_s32): Remove.
29604         (vqmovunbq_s32): Remove.
29605         (vqmovunbq_m_s16): Remove.
29606         (vqmovuntq_m_s16): Remove.
29607         (vqmovunbq_m_s32): Remove.
29608         (vqmovuntq_m_s32): Remove.
29609         (__arm_vqmovuntq_s16): Remove.
29610         (__arm_vqmovunbq_s16): Remove.
29611         (__arm_vqmovuntq_s32): Remove.
29612         (__arm_vqmovunbq_s32): Remove.
29613         (__arm_vqmovunbq_m_s16): Remove.
29614         (__arm_vqmovuntq_m_s16): Remove.
29615         (__arm_vqmovunbq_m_s32): Remove.
29616         (__arm_vqmovuntq_m_s32): Remove.
29617         (__arm_vqmovuntq): Remove.
29618         (__arm_vqmovunbq): Remove.
29619         (__arm_vqmovunbq_m): Remove.
29620         (__arm_vqmovuntq_m): Remove.
29622 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29624         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
29625         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
29626         vqmovunt.
29627         (isu): Likewise.
29628         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
29629         VQMOVUNTQ_S.
29630         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
29631         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
29632         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
29633         (mve_vqmovuntq_s<mode>): Merge into ...
29634         (@mve_<mve_insn>q_<supf><mode>): ... this.
29635         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
29636         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
29637         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
29638         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
29640 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29642         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
29643         (binary_move_narrow_unsigned): New.
29644         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
29645         (binary_move_narrow_unsigned): New.
29647 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29649         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
29650         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
29651         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
29652         (vrndpq, vrndq, vrndxq): New.
29653         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
29654         (vrndpq, vrndq, vrndxq): New.
29655         * config/arm/arm_mve.h (vrndxq): Remove.
29656         (vrndq): Remove.
29657         (vrndpq): Remove.
29658         (vrndnq): Remove.
29659         (vrndmq): Remove.
29660         (vrndaq): Remove.
29661         (vrndaq_m): Remove.
29662         (vrndmq_m): Remove.
29663         (vrndnq_m): Remove.
29664         (vrndpq_m): Remove.
29665         (vrndq_m): Remove.
29666         (vrndxq_m): Remove.
29667         (vrndq_x): Remove.
29668         (vrndnq_x): Remove.
29669         (vrndmq_x): Remove.
29670         (vrndpq_x): Remove.
29671         (vrndaq_x): Remove.
29672         (vrndxq_x): Remove.
29673         (vrndxq_f16): Remove.
29674         (vrndxq_f32): Remove.
29675         (vrndq_f16): Remove.
29676         (vrndq_f32): Remove.
29677         (vrndpq_f16): Remove.
29678         (vrndpq_f32): Remove.
29679         (vrndnq_f16): Remove.
29680         (vrndnq_f32): Remove.
29681         (vrndmq_f16): Remove.
29682         (vrndmq_f32): Remove.
29683         (vrndaq_f16): Remove.
29684         (vrndaq_f32): Remove.
29685         (vrndaq_m_f16): Remove.
29686         (vrndmq_m_f16): Remove.
29687         (vrndnq_m_f16): Remove.
29688         (vrndpq_m_f16): Remove.
29689         (vrndq_m_f16): Remove.
29690         (vrndxq_m_f16): Remove.
29691         (vrndaq_m_f32): Remove.
29692         (vrndmq_m_f32): Remove.
29693         (vrndnq_m_f32): Remove.
29694         (vrndpq_m_f32): Remove.
29695         (vrndq_m_f32): Remove.
29696         (vrndxq_m_f32): Remove.
29697         (vrndq_x_f16): Remove.
29698         (vrndq_x_f32): Remove.
29699         (vrndnq_x_f16): Remove.
29700         (vrndnq_x_f32): Remove.
29701         (vrndmq_x_f16): Remove.
29702         (vrndmq_x_f32): Remove.
29703         (vrndpq_x_f16): Remove.
29704         (vrndpq_x_f32): Remove.
29705         (vrndaq_x_f16): Remove.
29706         (vrndaq_x_f32): Remove.
29707         (vrndxq_x_f16): Remove.
29708         (vrndxq_x_f32): Remove.
29709         (__arm_vrndxq_f16): Remove.
29710         (__arm_vrndxq_f32): Remove.
29711         (__arm_vrndq_f16): Remove.
29712         (__arm_vrndq_f32): Remove.
29713         (__arm_vrndpq_f16): Remove.
29714         (__arm_vrndpq_f32): Remove.
29715         (__arm_vrndnq_f16): Remove.
29716         (__arm_vrndnq_f32): Remove.
29717         (__arm_vrndmq_f16): Remove.
29718         (__arm_vrndmq_f32): Remove.
29719         (__arm_vrndaq_f16): Remove.
29720         (__arm_vrndaq_f32): Remove.
29721         (__arm_vrndaq_m_f16): Remove.
29722         (__arm_vrndmq_m_f16): Remove.
29723         (__arm_vrndnq_m_f16): Remove.
29724         (__arm_vrndpq_m_f16): Remove.
29725         (__arm_vrndq_m_f16): Remove.
29726         (__arm_vrndxq_m_f16): Remove.
29727         (__arm_vrndaq_m_f32): Remove.
29728         (__arm_vrndmq_m_f32): Remove.
29729         (__arm_vrndnq_m_f32): Remove.
29730         (__arm_vrndpq_m_f32): Remove.
29731         (__arm_vrndq_m_f32): Remove.
29732         (__arm_vrndxq_m_f32): Remove.
29733         (__arm_vrndq_x_f16): Remove.
29734         (__arm_vrndq_x_f32): Remove.
29735         (__arm_vrndnq_x_f16): Remove.
29736         (__arm_vrndnq_x_f32): Remove.
29737         (__arm_vrndmq_x_f16): Remove.
29738         (__arm_vrndmq_x_f32): Remove.
29739         (__arm_vrndpq_x_f16): Remove.
29740         (__arm_vrndpq_x_f32): Remove.
29741         (__arm_vrndaq_x_f16): Remove.
29742         (__arm_vrndaq_x_f32): Remove.
29743         (__arm_vrndxq_x_f16): Remove.
29744         (__arm_vrndxq_x_f32): Remove.
29745         (__arm_vrndxq): Remove.
29746         (__arm_vrndq): Remove.
29747         (__arm_vrndpq): Remove.
29748         (__arm_vrndnq): Remove.
29749         (__arm_vrndmq): Remove.
29750         (__arm_vrndaq): Remove.
29751         (__arm_vrndaq_m): Remove.
29752         (__arm_vrndmq_m): Remove.
29753         (__arm_vrndnq_m): Remove.
29754         (__arm_vrndpq_m): Remove.
29755         (__arm_vrndq_m): Remove.
29756         (__arm_vrndxq_m): Remove.
29757         (__arm_vrndq_x): Remove.
29758         (__arm_vrndnq_x): Remove.
29759         (__arm_vrndmq_x): Remove.
29760         (__arm_vrndpq_x): Remove.
29761         (__arm_vrndaq_x): Remove.
29762         (__arm_vrndxq_x): Remove.
29764 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29766         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
29767         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
29768         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
29769         (vclzq, vqabsq, vqnegq): New.
29770         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
29771         (vqabsq, vqnegq): New.
29772         * config/arm/arm_mve.h (vabsq): Remove.
29773         (vabsq_m): Remove.
29774         (vabsq_x): Remove.
29775         (vabsq_f16): Remove.
29776         (vabsq_f32): Remove.
29777         (vabsq_s8): Remove.
29778         (vabsq_s16): Remove.
29779         (vabsq_s32): Remove.
29780         (vabsq_m_s8): Remove.
29781         (vabsq_m_s16): Remove.
29782         (vabsq_m_s32): Remove.
29783         (vabsq_m_f16): Remove.
29784         (vabsq_m_f32): Remove.
29785         (vabsq_x_s8): Remove.
29786         (vabsq_x_s16): Remove.
29787         (vabsq_x_s32): Remove.
29788         (vabsq_x_f16): Remove.
29789         (vabsq_x_f32): Remove.
29790         (__arm_vabsq_s8): Remove.
29791         (__arm_vabsq_s16): Remove.
29792         (__arm_vabsq_s32): Remove.
29793         (__arm_vabsq_m_s8): Remove.
29794         (__arm_vabsq_m_s16): Remove.
29795         (__arm_vabsq_m_s32): Remove.
29796         (__arm_vabsq_x_s8): Remove.
29797         (__arm_vabsq_x_s16): Remove.
29798         (__arm_vabsq_x_s32): Remove.
29799         (__arm_vabsq_f16): Remove.
29800         (__arm_vabsq_f32): Remove.
29801         (__arm_vabsq_m_f16): Remove.
29802         (__arm_vabsq_m_f32): Remove.
29803         (__arm_vabsq_x_f16): Remove.
29804         (__arm_vabsq_x_f32): Remove.
29805         (__arm_vabsq): Remove.
29806         (__arm_vabsq_m): Remove.
29807         (__arm_vabsq_x): Remove.
29808         (vnegq): Remove.
29809         (vnegq_m): Remove.
29810         (vnegq_x): Remove.
29811         (vnegq_f16): Remove.
29812         (vnegq_f32): Remove.
29813         (vnegq_s8): Remove.
29814         (vnegq_s16): Remove.
29815         (vnegq_s32): Remove.
29816         (vnegq_m_s8): Remove.
29817         (vnegq_m_s16): Remove.
29818         (vnegq_m_s32): Remove.
29819         (vnegq_m_f16): Remove.
29820         (vnegq_m_f32): Remove.
29821         (vnegq_x_s8): Remove.
29822         (vnegq_x_s16): Remove.
29823         (vnegq_x_s32): Remove.
29824         (vnegq_x_f16): Remove.
29825         (vnegq_x_f32): Remove.
29826         (__arm_vnegq_s8): Remove.
29827         (__arm_vnegq_s16): Remove.
29828         (__arm_vnegq_s32): Remove.
29829         (__arm_vnegq_m_s8): Remove.
29830         (__arm_vnegq_m_s16): Remove.
29831         (__arm_vnegq_m_s32): Remove.
29832         (__arm_vnegq_x_s8): Remove.
29833         (__arm_vnegq_x_s16): Remove.
29834         (__arm_vnegq_x_s32): Remove.
29835         (__arm_vnegq_f16): Remove.
29836         (__arm_vnegq_f32): Remove.
29837         (__arm_vnegq_m_f16): Remove.
29838         (__arm_vnegq_m_f32): Remove.
29839         (__arm_vnegq_x_f16): Remove.
29840         (__arm_vnegq_x_f32): Remove.
29841         (__arm_vnegq): Remove.
29842         (__arm_vnegq_m): Remove.
29843         (__arm_vnegq_x): Remove.
29844         (vclsq): Remove.
29845         (vclsq_m): Remove.
29846         (vclsq_x): Remove.
29847         (vclsq_s8): Remove.
29848         (vclsq_s16): Remove.
29849         (vclsq_s32): Remove.
29850         (vclsq_m_s8): Remove.
29851         (vclsq_m_s16): Remove.
29852         (vclsq_m_s32): Remove.
29853         (vclsq_x_s8): Remove.
29854         (vclsq_x_s16): Remove.
29855         (vclsq_x_s32): Remove.
29856         (__arm_vclsq_s8): Remove.
29857         (__arm_vclsq_s16): Remove.
29858         (__arm_vclsq_s32): Remove.
29859         (__arm_vclsq_m_s8): Remove.
29860         (__arm_vclsq_m_s16): Remove.
29861         (__arm_vclsq_m_s32): Remove.
29862         (__arm_vclsq_x_s8): Remove.
29863         (__arm_vclsq_x_s16): Remove.
29864         (__arm_vclsq_x_s32): Remove.
29865         (__arm_vclsq): Remove.
29866         (__arm_vclsq_m): Remove.
29867         (__arm_vclsq_x): Remove.
29868         (vclzq): Remove.
29869         (vclzq_m): Remove.
29870         (vclzq_x): Remove.
29871         (vclzq_s8): Remove.
29872         (vclzq_s16): Remove.
29873         (vclzq_s32): Remove.
29874         (vclzq_u8): Remove.
29875         (vclzq_u16): Remove.
29876         (vclzq_u32): Remove.
29877         (vclzq_m_u8): Remove.
29878         (vclzq_m_s8): Remove.
29879         (vclzq_m_u16): Remove.
29880         (vclzq_m_s16): Remove.
29881         (vclzq_m_u32): Remove.
29882         (vclzq_m_s32): Remove.
29883         (vclzq_x_s8): Remove.
29884         (vclzq_x_s16): Remove.
29885         (vclzq_x_s32): Remove.
29886         (vclzq_x_u8): Remove.
29887         (vclzq_x_u16): Remove.
29888         (vclzq_x_u32): Remove.
29889         (__arm_vclzq_s8): Remove.
29890         (__arm_vclzq_s16): Remove.
29891         (__arm_vclzq_s32): Remove.
29892         (__arm_vclzq_u8): Remove.
29893         (__arm_vclzq_u16): Remove.
29894         (__arm_vclzq_u32): Remove.
29895         (__arm_vclzq_m_u8): Remove.
29896         (__arm_vclzq_m_s8): Remove.
29897         (__arm_vclzq_m_u16): Remove.
29898         (__arm_vclzq_m_s16): Remove.
29899         (__arm_vclzq_m_u32): Remove.
29900         (__arm_vclzq_m_s32): Remove.
29901         (__arm_vclzq_x_s8): Remove.
29902         (__arm_vclzq_x_s16): Remove.
29903         (__arm_vclzq_x_s32): Remove.
29904         (__arm_vclzq_x_u8): Remove.
29905         (__arm_vclzq_x_u16): Remove.
29906         (__arm_vclzq_x_u32): Remove.
29907         (__arm_vclzq): Remove.
29908         (__arm_vclzq_m): Remove.
29909         (__arm_vclzq_x): Remove.
29910         (vqabsq): Remove.
29911         (vqnegq): Remove.
29912         (vqnegq_m): Remove.
29913         (vqabsq_m): Remove.
29914         (vqabsq_s8): Remove.
29915         (vqabsq_s16): Remove.
29916         (vqabsq_s32): Remove.
29917         (vqnegq_s8): Remove.
29918         (vqnegq_s16): Remove.
29919         (vqnegq_s32): Remove.
29920         (vqnegq_m_s8): Remove.
29921         (vqabsq_m_s8): Remove.
29922         (vqnegq_m_s16): Remove.
29923         (vqabsq_m_s16): Remove.
29924         (vqnegq_m_s32): Remove.
29925         (vqabsq_m_s32): Remove.
29926         (__arm_vqabsq_s8): Remove.
29927         (__arm_vqabsq_s16): Remove.
29928         (__arm_vqabsq_s32): Remove.
29929         (__arm_vqnegq_s8): Remove.
29930         (__arm_vqnegq_s16): Remove.
29931         (__arm_vqnegq_s32): Remove.
29932         (__arm_vqnegq_m_s8): Remove.
29933         (__arm_vqabsq_m_s8): Remove.
29934         (__arm_vqnegq_m_s16): Remove.
29935         (__arm_vqabsq_m_s16): Remove.
29936         (__arm_vqnegq_m_s32): Remove.
29937         (__arm_vqabsq_m_s32): Remove.
29938         (__arm_vqabsq): Remove.
29939         (__arm_vqnegq): Remove.
29940         (__arm_vqnegq_m): Remove.
29941         (__arm_vqabsq_m): Remove.
29943 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29945         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
29946         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
29947         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
29948         vrndm, vrndn, vrndp, vrnd, vrndx.
29949         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
29950         VQABSQ_M_S, VQNEGQ_M_S.
29951         (mve_mnemo): New.
29952         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
29953         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
29954         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
29955         (@mve_<mve_insn>q_f<mode>): ... this.
29956         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
29957         (mve_v<absneg_str>q_f<mode>): ... this.
29958         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
29959         (mve_v<absneg_str>q_s<mode>): ... this.
29960         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
29961         (@mve_<mve_insn>q_<supf><mode>): ... this.
29962         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
29963         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
29964         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
29965         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
29966         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
29967         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
29968         (mve_vrndxq_m_f<mode>): Merge into ...
29969         (@mve_<mve_insn>q_m_f<mode>): ... this.
29971 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
29973         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
29974         * config/arm/arm-mve-builtins-shapes.h (unary): New.
29976 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
29978         * mux-utils.h: Fix comment typo, avoides -> avoids.
29980 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
29982         PR tree-optimization/109778
29983         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
29984         wi::zext (x, width) rather than x if width != precision, rather
29985         than using wi::zext (right, width) after the shift.
29986         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
29987         of wi::lrotate or wi::rrotate.
29989 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
29991         * genmatch.cc (get_out_file): Make static and rename to ...
29992         (choose_output): ... this. Reimplement. Update all uses ...
29993         (decision_tree::gen): ... here and ...
29994         (main): ... here.
29996 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
29998         * genmatch.cc (showUsage): Reimplement as ...
29999         (usage): ...this.  Adjust all uses.
30000         (main): Print usage when no arguments.  Add missing 'return 1'.
30002 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
30004         * genmatch.cc (header_file): Make static.
30005         (emit_func): Rename to...
30006         (fp_decl): ... this.  Adjust all uses.
30007         (fp_decl_done): New function.  Use it...
30008         (decision_tree::gen): ... here and...
30009         (write_predicate): ... here.
30010         (main): Adjust.
30012 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
30014         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
30015         earlyclobbers.
30017 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
30018             Uros Bizjak  <ubizjak@gmail.com>
30020         * config/i386/i386.md (any_or_plus): Move definition earlier.
30021         (*insvti_highpart_1): New define_insn_and_split to overwrite
30022         (insv) the highpart of a TImode register/memory.
30024 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
30026         * auto-profile.cc (auto_profile): Check todo from early_inline
30027         to see if cleanup_tree_vfg needs to be called.
30028         (early_inline): Return todo from early_inliner.
30030 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
30032         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
30033         New.
30034         (pass_vsetvl::get_block_info): New.
30035         (pass_vsetvl::update_vector_info): New.
30036         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
30037         (pass_vsetvl::compute_local_backward_infos): Ditto.
30038         (pass_vsetvl::transfer_before): Ditto.
30039         (pass_vsetvl::transfer_after): Ditto.
30040         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
30041         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
30042         (pass_vsetvl::cleanup_insns): Ditto.
30043         (pass_vsetvl::compute_local_backward_infos): Use
30044         update_vector_info.
30046 2023-05-08  Jeff Law  <jlaw@ventanamicro>
30048         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
30050 2023-05-08  Richard Biener  <rguenther@suse.de>
30051             Michael Meissner  <meissner@linux.ibm.com>
30053         PR middle-end/108623
30054         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
30055         Align bit fields > 1 bit to at least an 8-bit boundary.
30057 2023-05-08  Andrew Pinski  <apinski@marvell.com>
30059         PR tree-optimization/109424
30060         PR tree-optimization/59424
30061         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
30062         (factor_out_conditional_operation): This and add support for all unary
30063         operations.
30064         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
30065         to call factor_out_conditional_operation instead.
30067 2023-05-08  Andrew Pinski  <apinski@marvell.com>
30069         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
30070         over factor_out_conditional_conversion.
30072 2023-05-08  Andrew Pinski  <apinski@marvell.com>
30074         PR tree-optimization/49959
30075         PR tree-optimization/103771
30076         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
30077         Diamond shapped bb form for factor_out_conditional_conversion.
30079 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30081         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
30082         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
30083         (riscv_vector_get_mask_mode): Ditto.
30084         (get_mask_policy_no_pred): Ditto.
30085         (get_tail_policy_no_pred): Ditto.
30086         (get_mask_mode): New function.
30087         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
30088         (get_tail_policy_no_pred): Ditto.
30089         (riscv_vector_mask_mode_p): Ditto.
30090         (riscv_vector_get_mask_mode): Ditto.
30091         (get_mask_mode): New function.
30092         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
30093         global extern.
30094         (get_tail_policy_for_pred): Ditto.
30095         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
30096         (get_mask_policy_for_pred): Ditto
30097         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
30099 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
30101         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
30102         (riscv_select_multilib): New.
30103         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
30104         also handle select_by_abi.
30105         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
30106         to select_by_abi_arch_cmodel from 1.
30107         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
30108         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
30110 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
30112         * Makefile.in: (gimple-match-head.o-warn): Remove.
30113         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
30114         gimple-match-exports.cc.
30115         (gimple-match-auto.h): Only depend on s-gimple-match.
30116         (generic-match-auto.h): Likewise.
30118 2023-05-08  Andrew Pinski  <apinski@marvell.com>
30120         PR tree-optimization/109691
30121         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
30122         argument.
30123         If the removed statement can throw, have need_eh_cleanup
30124         include the bb of that statement.
30125         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
30126         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
30127         num_dce.
30128         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
30129         Initialize dceworklist instead of stmts_to_remove.
30130         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
30131         Destore dceworklist instead of stmts_to_remove.
30132         (substitute_and_fold_dom_walker::before_dom_children):
30133         Set dceworklist instead of adding to stmts_to_remove.
30134         (substitute_and_fold_engine::substitute_and_fold):
30135         Call simple_dce_from_worklist instead of poping
30136         from the list.
30137         Don't update the stat on removal statements.
30139 2023-05-07  Andrew Pinski  <apinski@marvell.com>
30141         PR target/109762
30142         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
30143         Change argument type to aarch64_feature_flags.
30144         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
30145         constructor argument type to aarch64_feature_flags.
30146         Change m_old_asm_isa_flags to be aarch64_feature_flags.
30148 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
30150         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
30151         more parallel code if can_create_pseudo_p.
30153 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
30155         PR target/43644
30156         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
30157         immediately before moving a multi-word register by parts.
30159 2023-05-06  Jeff Law  <jlaw@ventanamicro>
30161         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
30163 2023-05-06  Michael Collison  <collison@rivosinc.com>
30165         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
30166         Check that GET_MODE_NUNITS is a multiple of 2.
30168 2023-05-06  Michael Collison  <collison@rivosinc.com>
30170         * config/riscv/riscv.cc
30171         (riscv_estimated_poly_value): Implement
30172         TARGET_ESTIMATED_POLY_VALUE.
30173         (riscv_preferred_simd_mode): Implement
30174         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
30175         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
30176         (riscv_empty_mask_is_expensive): Implement
30177         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
30178         (riscv_vectorize_create_costs): Implement
30179         TARGET_VECTORIZE_CREATE_COSTS.
30180         (riscv_support_vector_misalignment): Implement
30181         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
30182         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
30183         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
30184         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
30185         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
30187 2023-05-06  Jeff Law  <jlaw@ventanamicro>
30189         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
30190         duplicate definition.
30192 2023-05-06  Michael Collison  <collison@rivosinc.com>
30194         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
30195         (riscv_vector_preferred_simd_mode): Ditto.
30196         (get_mask_policy_no_pred): Ditto.
30197         (get_tail_policy_no_pred): Ditto.
30198         (riscv_vector_mask_mode_p): Ditto.
30199         (riscv_vector_get_mask_mode): Ditto.
30201 2023-05-06  Michael Collison  <collison@rivosinc.com>
30203         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
30204         Remove static declaration to to make externally visible.
30205         (get_mask_policy_for_pred): Ditto.
30206         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
30207         New external declaration.
30208         (get_mask_policy_for_pred): Ditto.
30210 2023-05-06  Michael Collison  <collison@rivosinc.com>
30212         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
30213         (riscv_vector_get_mask_mode): Ditto.
30214         (get_mask_policy_no_pred): Ditto.
30215         (get_tail_policy_no_pred): Ditto.
30217 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
30219         * config/loongarch/loongarch.h (struct machine_function): Add
30220         reg_is_wrapped_separately array for register wrapping
30221         information.
30222         * config/loongarch/loongarch.cc
30223         (loongarch_get_separate_components): New function.
30224         (loongarch_components_for_bb): Likewise.
30225         (loongarch_disqualify_components): Likewise.
30226         (loongarch_process_components): Likewise.
30227         (loongarch_emit_prologue_components): Likewise.
30228         (loongarch_emit_epilogue_components): Likewise.
30229         (loongarch_set_handled_components): Likewise.
30230         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
30231         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
30232         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
30233         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
30234         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
30235         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
30236         (loongarch_for_each_saved_reg): Skip registers that are wrapped
30237         separately.
30239 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
30241         PR other/109522
30242         * Makefile.in (s-macro_list): Pass -nostdinc to
30243         $(GCC_FOR_TARGET).
30245 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30247         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
30248         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
30249         (preferred_simd_mode): Ditto.
30250         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
30251         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
30252         (riscv_preferred_simd_mode): New function.
30253         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
30254         * config/riscv/vector.md: Add autovec.md.
30255         * config/riscv/autovec.md: New file.
30257 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
30259         * real.h (dconst_pi): Define.
30260         (dconst_e_ptr): Formatting fix.
30261         (dconst_pi_ptr): Declare.
30262         * real.cc (dconst_pi_ptr): New function.
30263         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
30264         boundaries range with range computed from sin/cos of the particular
30265         bounds if the argument range is shorter than 2*pi.
30266         (cfn_sincos::op1_range): Take bulps into account when determining
30267         which result ranges are always invalid or behave like known NAN.
30269 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
30271         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
30272         pass type to vrange_storage::equal_p.
30273         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
30274         (irange_storage::equal_p): Same.
30275         (frange_storage::equal_p): Same.
30276         * value-range-storage.h (class frange_storage): Same.
30278 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30280         PR target/109748
30281         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
30282         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
30284 2023-05-06  liuhongt  <hongtao.liu@intel.com>
30286         * combine.cc (maybe_swap_commutative_operands): Canonicalize
30287         vec_merge when mask is constant.
30288         * doc/md.texi: Document vec_merge canonicalization.
30290 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
30292         * value-range.h (frange_arithmetic): Declare.
30293         * range-op-float.cc (frange_arithmetic): No longer static.
30294         * gimple-range-op.cc (frange_mpfr_arg1): New function.
30295         (cfn_sqrt::fold_range): Intersect the generic boundaries range
30296         with range computed from sqrt of the particular bounds.
30297         (cfn_sqrt::op1_range): Intersect the generic boundaries range
30298         with range computed from squared particular bounds.
30300 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
30302         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
30303         earlier with helper variables also renamed.
30304         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
30305         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
30306         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
30308 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
30310         * config/cris/cris.md (splitop): Add PLUS.
30311         * config/cris/cris.cc (cris_split_constant): Also handle
30312         PLUS when a split into two insns may be useful.
30314 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
30316         * config/cris/cris.md (movandsplit1): New define_peephole2.
30318 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
30320         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
30322 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
30324         * doc/md.texi (define_peephole2): Document order of scanning.
30326 2023-05-05  Pan Li  <pan2.li@intel.com>
30327             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30329         * config/riscv/vector.md: Allow const as the operand of RVV
30330         indexed load/store.
30332 2023-05-05  Pan Li  <pan2.li@intel.com>
30334         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
30335         consumed by simplify_rtx.
30337 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30339         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
30340         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
30341         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
30342         * config/arm/arm_mve.h (vshrq): Remove.
30343         (vrshrq): Remove.
30344         (vrshrq_m): Remove.
30345         (vshrq_m): Remove.
30346         (vrshrq_x): Remove.
30347         (vshrq_x): Remove.
30348         (vshrq_n_s8): Remove.
30349         (vshrq_n_s16): Remove.
30350         (vshrq_n_s32): Remove.
30351         (vshrq_n_u8): Remove.
30352         (vshrq_n_u16): Remove.
30353         (vshrq_n_u32): Remove.
30354         (vrshrq_n_u8): Remove.
30355         (vrshrq_n_s8): Remove.
30356         (vrshrq_n_u16): Remove.
30357         (vrshrq_n_s16): Remove.
30358         (vrshrq_n_u32): Remove.
30359         (vrshrq_n_s32): Remove.
30360         (vrshrq_m_n_s8): Remove.
30361         (vrshrq_m_n_s32): Remove.
30362         (vrshrq_m_n_s16): Remove.
30363         (vrshrq_m_n_u8): Remove.
30364         (vrshrq_m_n_u32): Remove.
30365         (vrshrq_m_n_u16): Remove.
30366         (vshrq_m_n_s8): Remove.
30367         (vshrq_m_n_s32): Remove.
30368         (vshrq_m_n_s16): Remove.
30369         (vshrq_m_n_u8): Remove.
30370         (vshrq_m_n_u32): Remove.
30371         (vshrq_m_n_u16): Remove.
30372         (vrshrq_x_n_s8): Remove.
30373         (vrshrq_x_n_s16): Remove.
30374         (vrshrq_x_n_s32): Remove.
30375         (vrshrq_x_n_u8): Remove.
30376         (vrshrq_x_n_u16): Remove.
30377         (vrshrq_x_n_u32): Remove.
30378         (vshrq_x_n_s8): Remove.
30379         (vshrq_x_n_s16): Remove.
30380         (vshrq_x_n_s32): Remove.
30381         (vshrq_x_n_u8): Remove.
30382         (vshrq_x_n_u16): Remove.
30383         (vshrq_x_n_u32): Remove.
30384         (__arm_vshrq_n_s8): Remove.
30385         (__arm_vshrq_n_s16): Remove.
30386         (__arm_vshrq_n_s32): Remove.
30387         (__arm_vshrq_n_u8): Remove.
30388         (__arm_vshrq_n_u16): Remove.
30389         (__arm_vshrq_n_u32): Remove.
30390         (__arm_vrshrq_n_u8): Remove.
30391         (__arm_vrshrq_n_s8): Remove.
30392         (__arm_vrshrq_n_u16): Remove.
30393         (__arm_vrshrq_n_s16): Remove.
30394         (__arm_vrshrq_n_u32): Remove.
30395         (__arm_vrshrq_n_s32): Remove.
30396         (__arm_vrshrq_m_n_s8): Remove.
30397         (__arm_vrshrq_m_n_s32): Remove.
30398         (__arm_vrshrq_m_n_s16): Remove.
30399         (__arm_vrshrq_m_n_u8): Remove.
30400         (__arm_vrshrq_m_n_u32): Remove.
30401         (__arm_vrshrq_m_n_u16): Remove.
30402         (__arm_vshrq_m_n_s8): Remove.
30403         (__arm_vshrq_m_n_s32): Remove.
30404         (__arm_vshrq_m_n_s16): Remove.
30405         (__arm_vshrq_m_n_u8): Remove.
30406         (__arm_vshrq_m_n_u32): Remove.
30407         (__arm_vshrq_m_n_u16): Remove.
30408         (__arm_vrshrq_x_n_s8): Remove.
30409         (__arm_vrshrq_x_n_s16): Remove.
30410         (__arm_vrshrq_x_n_s32): Remove.
30411         (__arm_vrshrq_x_n_u8): Remove.
30412         (__arm_vrshrq_x_n_u16): Remove.
30413         (__arm_vrshrq_x_n_u32): Remove.
30414         (__arm_vshrq_x_n_s8): Remove.
30415         (__arm_vshrq_x_n_s16): Remove.
30416         (__arm_vshrq_x_n_s32): Remove.
30417         (__arm_vshrq_x_n_u8): Remove.
30418         (__arm_vshrq_x_n_u16): Remove.
30419         (__arm_vshrq_x_n_u32): Remove.
30420         (__arm_vshrq): Remove.
30421         (__arm_vrshrq): Remove.
30422         (__arm_vrshrq_m): Remove.
30423         (__arm_vshrq_m): Remove.
30424         (__arm_vrshrq_x): Remove.
30425         (__arm_vshrq_x): Remove.
30427 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30429         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
30430         (mve_insn): Add vrshr, vshr.
30431         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
30432         (mve_vrshrq_n_<supf><mode>): Merge into ...
30433         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
30434         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
30435         into ...
30436         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
30438 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30440         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
30441         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
30443 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30445         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
30446         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
30447         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
30448         (vqrshrunbq, vqrshruntq): New.
30449         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
30450         (vqrshrunbq, vqrshruntq): New.
30451         * config/arm/arm-mve-builtins.cc
30452         (function_instance::has_inactive_argument): Handle vqshrunbq,
30453         vqshruntq, vqrshrunbq, vqrshruntq.
30454         * config/arm/arm_mve.h (vqrshrunbq): Remove.
30455         (vqrshruntq): Remove.
30456         (vqrshrunbq_m): Remove.
30457         (vqrshruntq_m): Remove.
30458         (vqrshrunbq_n_s16): Remove.
30459         (vqrshrunbq_n_s32): Remove.
30460         (vqrshruntq_n_s16): Remove.
30461         (vqrshruntq_n_s32): Remove.
30462         (vqrshrunbq_m_n_s32): Remove.
30463         (vqrshrunbq_m_n_s16): Remove.
30464         (vqrshruntq_m_n_s32): Remove.
30465         (vqrshruntq_m_n_s16): Remove.
30466         (__arm_vqrshrunbq_n_s16): Remove.
30467         (__arm_vqrshrunbq_n_s32): Remove.
30468         (__arm_vqrshruntq_n_s16): Remove.
30469         (__arm_vqrshruntq_n_s32): Remove.
30470         (__arm_vqrshrunbq_m_n_s32): Remove.
30471         (__arm_vqrshrunbq_m_n_s16): Remove.
30472         (__arm_vqrshruntq_m_n_s32): Remove.
30473         (__arm_vqrshruntq_m_n_s16): Remove.
30474         (__arm_vqrshrunbq): Remove.
30475         (__arm_vqrshruntq): Remove.
30476         (__arm_vqrshrunbq_m): Remove.
30477         (__arm_vqrshruntq_m): Remove.
30478         (vqshrunbq): Remove.
30479         (vqshruntq): Remove.
30480         (vqshrunbq_m): Remove.
30481         (vqshruntq_m): Remove.
30482         (vqshrunbq_n_s16): Remove.
30483         (vqshruntq_n_s16): Remove.
30484         (vqshrunbq_n_s32): Remove.
30485         (vqshruntq_n_s32): Remove.
30486         (vqshrunbq_m_n_s32): Remove.
30487         (vqshrunbq_m_n_s16): Remove.
30488         (vqshruntq_m_n_s32): Remove.
30489         (vqshruntq_m_n_s16): Remove.
30490         (__arm_vqshrunbq_n_s16): Remove.
30491         (__arm_vqshruntq_n_s16): Remove.
30492         (__arm_vqshrunbq_n_s32): Remove.
30493         (__arm_vqshruntq_n_s32): Remove.
30494         (__arm_vqshrunbq_m_n_s32): Remove.
30495         (__arm_vqshrunbq_m_n_s16): Remove.
30496         (__arm_vqshruntq_m_n_s32): Remove.
30497         (__arm_vqshruntq_m_n_s16): Remove.
30498         (__arm_vqshrunbq): Remove.
30499         (__arm_vqshruntq): Remove.
30500         (__arm_vqshrunbq_m): Remove.
30501         (__arm_vqshruntq_m): Remove.
30503 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30505         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
30506         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
30507         (MVE_SHRN_M_N): Likewise.
30508         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
30509         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
30510         (supf): Likewise.
30511         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
30512         (mve_vqrshruntq_n_s<mode>): Remove.
30513         (mve_vqshrunbq_n_s<mode>): Remove.
30514         (mve_vqshruntq_n_s<mode>): Remove.
30515         (mve_vqrshrunbq_m_n_s<mode>): Remove.
30516         (mve_vqrshruntq_m_n_s<mode>): Remove.
30517         (mve_vqshrunbq_m_n_s<mode>): Remove.
30518         (mve_vqshruntq_m_n_s<mode>): Remove.
30520 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30522         * config/arm/arm-mve-builtins-shapes.cc
30523         (binary_rshift_narrow_unsigned): New.
30524         * config/arm/arm-mve-builtins-shapes.h
30525         (binary_rshift_narrow_unsigned): New.
30527 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30529         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
30530         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
30531         (vqrshrnbq, vqrshrntq): New.
30532         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
30533         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
30534         New.
30535         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
30536         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
30537         * config/arm/arm-mve-builtins.cc
30538         (function_instance::has_inactive_argument): Handle vshrnbq,
30539         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
30540         vqrshrntq.
30541         * config/arm/arm_mve.h (vshrnbq): Remove.
30542         (vshrntq): Remove.
30543         (vshrnbq_m): Remove.
30544         (vshrntq_m): Remove.
30545         (vshrnbq_n_s16): Remove.
30546         (vshrntq_n_s16): Remove.
30547         (vshrnbq_n_u16): Remove.
30548         (vshrntq_n_u16): Remove.
30549         (vshrnbq_n_s32): Remove.
30550         (vshrntq_n_s32): Remove.
30551         (vshrnbq_n_u32): Remove.
30552         (vshrntq_n_u32): Remove.
30553         (vshrnbq_m_n_s32): Remove.
30554         (vshrnbq_m_n_s16): Remove.
30555         (vshrnbq_m_n_u32): Remove.
30556         (vshrnbq_m_n_u16): Remove.
30557         (vshrntq_m_n_s32): Remove.
30558         (vshrntq_m_n_s16): Remove.
30559         (vshrntq_m_n_u32): Remove.
30560         (vshrntq_m_n_u16): Remove.
30561         (__arm_vshrnbq_n_s16): Remove.
30562         (__arm_vshrntq_n_s16): Remove.
30563         (__arm_vshrnbq_n_u16): Remove.
30564         (__arm_vshrntq_n_u16): Remove.
30565         (__arm_vshrnbq_n_s32): Remove.
30566         (__arm_vshrntq_n_s32): Remove.
30567         (__arm_vshrnbq_n_u32): Remove.
30568         (__arm_vshrntq_n_u32): Remove.
30569         (__arm_vshrnbq_m_n_s32): Remove.
30570         (__arm_vshrnbq_m_n_s16): Remove.
30571         (__arm_vshrnbq_m_n_u32): Remove.
30572         (__arm_vshrnbq_m_n_u16): Remove.
30573         (__arm_vshrntq_m_n_s32): Remove.
30574         (__arm_vshrntq_m_n_s16): Remove.
30575         (__arm_vshrntq_m_n_u32): Remove.
30576         (__arm_vshrntq_m_n_u16): Remove.
30577         (__arm_vshrnbq): Remove.
30578         (__arm_vshrntq): Remove.
30579         (__arm_vshrnbq_m): Remove.
30580         (__arm_vshrntq_m): Remove.
30581         (vrshrnbq): Remove.
30582         (vrshrntq): Remove.
30583         (vrshrnbq_m): Remove.
30584         (vrshrntq_m): Remove.
30585         (vrshrnbq_n_s16): Remove.
30586         (vrshrntq_n_s16): Remove.
30587         (vrshrnbq_n_u16): Remove.
30588         (vrshrntq_n_u16): Remove.
30589         (vrshrnbq_n_s32): Remove.
30590         (vrshrntq_n_s32): Remove.
30591         (vrshrnbq_n_u32): Remove.
30592         (vrshrntq_n_u32): Remove.
30593         (vrshrnbq_m_n_s32): Remove.
30594         (vrshrnbq_m_n_s16): Remove.
30595         (vrshrnbq_m_n_u32): Remove.
30596         (vrshrnbq_m_n_u16): Remove.
30597         (vrshrntq_m_n_s32): Remove.
30598         (vrshrntq_m_n_s16): Remove.
30599         (vrshrntq_m_n_u32): Remove.
30600         (vrshrntq_m_n_u16): Remove.
30601         (__arm_vrshrnbq_n_s16): Remove.
30602         (__arm_vrshrntq_n_s16): Remove.
30603         (__arm_vrshrnbq_n_u16): Remove.
30604         (__arm_vrshrntq_n_u16): Remove.
30605         (__arm_vrshrnbq_n_s32): Remove.
30606         (__arm_vrshrntq_n_s32): Remove.
30607         (__arm_vrshrnbq_n_u32): Remove.
30608         (__arm_vrshrntq_n_u32): Remove.
30609         (__arm_vrshrnbq_m_n_s32): Remove.
30610         (__arm_vrshrnbq_m_n_s16): Remove.
30611         (__arm_vrshrnbq_m_n_u32): Remove.
30612         (__arm_vrshrnbq_m_n_u16): Remove.
30613         (__arm_vrshrntq_m_n_s32): Remove.
30614         (__arm_vrshrntq_m_n_s16): Remove.
30615         (__arm_vrshrntq_m_n_u32): Remove.
30616         (__arm_vrshrntq_m_n_u16): Remove.
30617         (__arm_vrshrnbq): Remove.
30618         (__arm_vrshrntq): Remove.
30619         (__arm_vrshrnbq_m): Remove.
30620         (__arm_vrshrntq_m): Remove.
30621         (vqshrnbq): Remove.
30622         (vqshrntq): Remove.
30623         (vqshrnbq_m): Remove.
30624         (vqshrntq_m): Remove.
30625         (vqshrnbq_n_s16): Remove.
30626         (vqshrntq_n_s16): Remove.
30627         (vqshrnbq_n_u16): Remove.
30628         (vqshrntq_n_u16): Remove.
30629         (vqshrnbq_n_s32): Remove.
30630         (vqshrntq_n_s32): Remove.
30631         (vqshrnbq_n_u32): Remove.
30632         (vqshrntq_n_u32): Remove.
30633         (vqshrnbq_m_n_s32): Remove.
30634         (vqshrnbq_m_n_s16): Remove.
30635         (vqshrnbq_m_n_u32): Remove.
30636         (vqshrnbq_m_n_u16): Remove.
30637         (vqshrntq_m_n_s32): Remove.
30638         (vqshrntq_m_n_s16): Remove.
30639         (vqshrntq_m_n_u32): Remove.
30640         (vqshrntq_m_n_u16): Remove.
30641         (__arm_vqshrnbq_n_s16): Remove.
30642         (__arm_vqshrntq_n_s16): Remove.
30643         (__arm_vqshrnbq_n_u16): Remove.
30644         (__arm_vqshrntq_n_u16): Remove.
30645         (__arm_vqshrnbq_n_s32): Remove.
30646         (__arm_vqshrntq_n_s32): Remove.
30647         (__arm_vqshrnbq_n_u32): Remove.
30648         (__arm_vqshrntq_n_u32): Remove.
30649         (__arm_vqshrnbq_m_n_s32): Remove.
30650         (__arm_vqshrnbq_m_n_s16): Remove.
30651         (__arm_vqshrnbq_m_n_u32): Remove.
30652         (__arm_vqshrnbq_m_n_u16): Remove.
30653         (__arm_vqshrntq_m_n_s32): Remove.
30654         (__arm_vqshrntq_m_n_s16): Remove.
30655         (__arm_vqshrntq_m_n_u32): Remove.
30656         (__arm_vqshrntq_m_n_u16): Remove.
30657         (__arm_vqshrnbq): Remove.
30658         (__arm_vqshrntq): Remove.
30659         (__arm_vqshrnbq_m): Remove.
30660         (__arm_vqshrntq_m): Remove.
30661         (vqrshrnbq): Remove.
30662         (vqrshrntq): Remove.
30663         (vqrshrnbq_m): Remove.
30664         (vqrshrntq_m): Remove.
30665         (vqrshrnbq_n_s16): Remove.
30666         (vqrshrnbq_n_u16): Remove.
30667         (vqrshrnbq_n_s32): Remove.
30668         (vqrshrnbq_n_u32): Remove.
30669         (vqrshrntq_n_s16): Remove.
30670         (vqrshrntq_n_u16): Remove.
30671         (vqrshrntq_n_s32): Remove.
30672         (vqrshrntq_n_u32): Remove.
30673         (vqrshrnbq_m_n_s32): Remove.
30674         (vqrshrnbq_m_n_s16): Remove.
30675         (vqrshrnbq_m_n_u32): Remove.
30676         (vqrshrnbq_m_n_u16): Remove.
30677         (vqrshrntq_m_n_s32): Remove.
30678         (vqrshrntq_m_n_s16): Remove.
30679         (vqrshrntq_m_n_u32): Remove.
30680         (vqrshrntq_m_n_u16): Remove.
30681         (__arm_vqrshrnbq_n_s16): Remove.
30682         (__arm_vqrshrnbq_n_u16): Remove.
30683         (__arm_vqrshrnbq_n_s32): Remove.
30684         (__arm_vqrshrnbq_n_u32): Remove.
30685         (__arm_vqrshrntq_n_s16): Remove.
30686         (__arm_vqrshrntq_n_u16): Remove.
30687         (__arm_vqrshrntq_n_s32): Remove.
30688         (__arm_vqrshrntq_n_u32): Remove.
30689         (__arm_vqrshrnbq_m_n_s32): Remove.
30690         (__arm_vqrshrnbq_m_n_s16): Remove.
30691         (__arm_vqrshrnbq_m_n_u32): Remove.
30692         (__arm_vqrshrnbq_m_n_u16): Remove.
30693         (__arm_vqrshrntq_m_n_s32): Remove.
30694         (__arm_vqrshrntq_m_n_s16): Remove.
30695         (__arm_vqrshrntq_m_n_u32): Remove.
30696         (__arm_vqrshrntq_m_n_u16): Remove.
30697         (__arm_vqrshrnbq): Remove.
30698         (__arm_vqrshrntq): Remove.
30699         (__arm_vqrshrnbq_m): Remove.
30700         (__arm_vqrshrntq_m): Remove.
30702 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30704         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
30705         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
30706         vrshrnt, vshrnb, vshrnt.
30707         (isu): New.
30708         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
30709         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
30710         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
30711         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
30712         (mve_vshrntq_n_<supf><mode>): Merge into ...
30713         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
30714         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
30715         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
30716         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
30717         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
30718         Merge into ...
30719         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
30721 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30723         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
30724         New.
30725         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
30727 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30729         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
30730         (vmaxq, vminq): New.
30731         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
30732         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
30733         * config/arm/arm_mve.h (vminq): Remove.
30734         (vmaxq): Remove.
30735         (vmaxq_m): Remove.
30736         (vminq_m): Remove.
30737         (vminq_x): Remove.
30738         (vmaxq_x): Remove.
30739         (vminq_u8): Remove.
30740         (vmaxq_u8): Remove.
30741         (vminq_s8): Remove.
30742         (vmaxq_s8): Remove.
30743         (vminq_u16): Remove.
30744         (vmaxq_u16): Remove.
30745         (vminq_s16): Remove.
30746         (vmaxq_s16): Remove.
30747         (vminq_u32): Remove.
30748         (vmaxq_u32): Remove.
30749         (vminq_s32): Remove.
30750         (vmaxq_s32): Remove.
30751         (vmaxq_m_s8): Remove.
30752         (vmaxq_m_s32): Remove.
30753         (vmaxq_m_s16): Remove.
30754         (vmaxq_m_u8): Remove.
30755         (vmaxq_m_u32): Remove.
30756         (vmaxq_m_u16): Remove.
30757         (vminq_m_s8): Remove.
30758         (vminq_m_s32): Remove.
30759         (vminq_m_s16): Remove.
30760         (vminq_m_u8): Remove.
30761         (vminq_m_u32): Remove.
30762         (vminq_m_u16): Remove.
30763         (vminq_x_s8): Remove.
30764         (vminq_x_s16): Remove.
30765         (vminq_x_s32): Remove.
30766         (vminq_x_u8): Remove.
30767         (vminq_x_u16): Remove.
30768         (vminq_x_u32): Remove.
30769         (vmaxq_x_s8): Remove.
30770         (vmaxq_x_s16): Remove.
30771         (vmaxq_x_s32): Remove.
30772         (vmaxq_x_u8): Remove.
30773         (vmaxq_x_u16): Remove.
30774         (vmaxq_x_u32): Remove.
30775         (__arm_vminq_u8): Remove.
30776         (__arm_vmaxq_u8): Remove.
30777         (__arm_vminq_s8): Remove.
30778         (__arm_vmaxq_s8): Remove.
30779         (__arm_vminq_u16): Remove.
30780         (__arm_vmaxq_u16): Remove.
30781         (__arm_vminq_s16): Remove.
30782         (__arm_vmaxq_s16): Remove.
30783         (__arm_vminq_u32): Remove.
30784         (__arm_vmaxq_u32): Remove.
30785         (__arm_vminq_s32): Remove.
30786         (__arm_vmaxq_s32): Remove.
30787         (__arm_vmaxq_m_s8): Remove.
30788         (__arm_vmaxq_m_s32): Remove.
30789         (__arm_vmaxq_m_s16): Remove.
30790         (__arm_vmaxq_m_u8): Remove.
30791         (__arm_vmaxq_m_u32): Remove.
30792         (__arm_vmaxq_m_u16): Remove.
30793         (__arm_vminq_m_s8): Remove.
30794         (__arm_vminq_m_s32): Remove.
30795         (__arm_vminq_m_s16): Remove.
30796         (__arm_vminq_m_u8): Remove.
30797         (__arm_vminq_m_u32): Remove.
30798         (__arm_vminq_m_u16): Remove.
30799         (__arm_vminq_x_s8): Remove.
30800         (__arm_vminq_x_s16): Remove.
30801         (__arm_vminq_x_s32): Remove.
30802         (__arm_vminq_x_u8): Remove.
30803         (__arm_vminq_x_u16): Remove.
30804         (__arm_vminq_x_u32): Remove.
30805         (__arm_vmaxq_x_s8): Remove.
30806         (__arm_vmaxq_x_s16): Remove.
30807         (__arm_vmaxq_x_s32): Remove.
30808         (__arm_vmaxq_x_u8): Remove.
30809         (__arm_vmaxq_x_u16): Remove.
30810         (__arm_vmaxq_x_u32): Remove.
30811         (__arm_vminq): Remove.
30812         (__arm_vmaxq): Remove.
30813         (__arm_vmaxq_m): Remove.
30814         (__arm_vminq_m): Remove.
30815         (__arm_vminq_x): Remove.
30816         (__arm_vmaxq_x): Remove.
30818 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30820         * config/arm/iterators.md (MAX_MIN_SU): New.
30821         (max_min_su_str): New.
30822         (max_min_supf): New.
30823         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
30824         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
30825         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
30827 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
30829         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
30830         (vqshlq, vshlq): New.
30831         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
30832         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
30833         * config/arm/arm_mve.h (vshlq): Remove.
30834         (vshlq_r): Remove.
30835         (vshlq_n): Remove.
30836         (vshlq_m_r): Remove.
30837         (vshlq_m): Remove.
30838         (vshlq_m_n): Remove.
30839         (vshlq_x): Remove.
30840         (vshlq_x_n): Remove.
30841         (vshlq_s8): Remove.
30842         (vshlq_s16): Remove.
30843         (vshlq_s32): Remove.
30844         (vshlq_u8): Remove.
30845         (vshlq_u16): Remove.
30846         (vshlq_u32): Remove.
30847         (vshlq_r_u8): Remove.
30848         (vshlq_n_u8): Remove.
30849         (vshlq_r_s8): Remove.
30850         (vshlq_n_s8): Remove.
30851         (vshlq_r_u16): Remove.
30852         (vshlq_n_u16): Remove.
30853         (vshlq_r_s16): Remove.
30854         (vshlq_n_s16): Remove.
30855         (vshlq_r_u32): Remove.
30856         (vshlq_n_u32): Remove.
30857         (vshlq_r_s32): Remove.
30858         (vshlq_n_s32): Remove.
30859         (vshlq_m_r_u8): Remove.
30860         (vshlq_m_r_s8): Remove.
30861         (vshlq_m_r_u16): Remove.
30862         (vshlq_m_r_s16): Remove.
30863         (vshlq_m_r_u32): Remove.
30864         (vshlq_m_r_s32): Remove.
30865         (vshlq_m_u8): Remove.
30866         (vshlq_m_s8): Remove.
30867         (vshlq_m_u16): Remove.
30868         (vshlq_m_s16): Remove.
30869         (vshlq_m_u32): Remove.
30870         (vshlq_m_s32): Remove.
30871         (vshlq_m_n_s8): Remove.
30872         (vshlq_m_n_s32): Remove.
30873         (vshlq_m_n_s16): Remove.
30874         (vshlq_m_n_u8): Remove.
30875         (vshlq_m_n_u32): Remove.
30876         (vshlq_m_n_u16): Remove.
30877         (vshlq_x_s8): Remove.
30878         (vshlq_x_s16): Remove.
30879         (vshlq_x_s32): Remove.
30880         (vshlq_x_u8): Remove.
30881         (vshlq_x_u16): Remove.
30882         (vshlq_x_u32): Remove.
30883         (vshlq_x_n_s8): Remove.
30884         (vshlq_x_n_s16): Remove.
30885         (vshlq_x_n_s32): Remove.
30886         (vshlq_x_n_u8): Remove.
30887         (vshlq_x_n_u16): Remove.
30888         (vshlq_x_n_u32): Remove.
30889         (__arm_vshlq_s8): Remove.
30890         (__arm_vshlq_s16): Remove.
30891         (__arm_vshlq_s32): Remove.
30892         (__arm_vshlq_u8): Remove.
30893         (__arm_vshlq_u16): Remove.
30894         (__arm_vshlq_u32): Remove.
30895         (__arm_vshlq_r_u8): Remove.
30896         (__arm_vshlq_n_u8): Remove.
30897         (__arm_vshlq_r_s8): Remove.
30898         (__arm_vshlq_n_s8): Remove.
30899         (__arm_vshlq_r_u16): Remove.
30900         (__arm_vshlq_n_u16): Remove.
30901         (__arm_vshlq_r_s16): Remove.
30902         (__arm_vshlq_n_s16): Remove.
30903         (__arm_vshlq_r_u32): Remove.
30904         (__arm_vshlq_n_u32): Remove.
30905         (__arm_vshlq_r_s32): Remove.
30906         (__arm_vshlq_n_s32): Remove.
30907         (__arm_vshlq_m_r_u8): Remove.
30908         (__arm_vshlq_m_r_s8): Remove.
30909         (__arm_vshlq_m_r_u16): Remove.
30910         (__arm_vshlq_m_r_s16): Remove.
30911         (__arm_vshlq_m_r_u32): Remove.
30912         (__arm_vshlq_m_r_s32): Remove.
30913         (__arm_vshlq_m_u8): Remove.
30914         (__arm_vshlq_m_s8): Remove.
30915         (__arm_vshlq_m_u16): Remove.
30916         (__arm_vshlq_m_s16): Remove.
30917         (__arm_vshlq_m_u32): Remove.
30918         (__arm_vshlq_m_s32): Remove.
30919         (__arm_vshlq_m_n_s8): Remove.
30920         (__arm_vshlq_m_n_s32): Remove.
30921         (__arm_vshlq_m_n_s16): Remove.
30922         (__arm_vshlq_m_n_u8): Remove.
30923         (__arm_vshlq_m_n_u32): Remove.
30924         (__arm_vshlq_m_n_u16): Remove.
30925         (__arm_vshlq_x_s8): Remove.
30926         (__arm_vshlq_x_s16): Remove.
30927         (__arm_vshlq_x_s32): Remove.
30928         (__arm_vshlq_x_u8): Remove.
30929         (__arm_vshlq_x_u16): Remove.
30930         (__arm_vshlq_x_u32): Remove.
30931         (__arm_vshlq_x_n_s8): Remove.
30932         (__arm_vshlq_x_n_s16): Remove.
30933         (__arm_vshlq_x_n_s32): Remove.
30934         (__arm_vshlq_x_n_u8): Remove.
30935         (__arm_vshlq_x_n_u16): Remove.
30936         (__arm_vshlq_x_n_u32): Remove.
30937         (__arm_vshlq): Remove.
30938         (__arm_vshlq_r): Remove.
30939         (__arm_vshlq_n): Remove.
30940         (__arm_vshlq_m_r): Remove.
30941         (__arm_vshlq_m): Remove.
30942         (__arm_vshlq_m_n): Remove.
30943         (__arm_vshlq_x): Remove.
30944         (__arm_vshlq_x_n): Remove.
30945         (vqshlq): Remove.
30946         (vqshlq_r): Remove.
30947         (vqshlq_n): Remove.
30948         (vqshlq_m_r): Remove.
30949         (vqshlq_m_n): Remove.
30950         (vqshlq_m): Remove.
30951         (vqshlq_u8): Remove.
30952         (vqshlq_r_u8): Remove.
30953         (vqshlq_n_u8): Remove.
30954         (vqshlq_s8): Remove.
30955         (vqshlq_r_s8): Remove.
30956         (vqshlq_n_s8): Remove.
30957         (vqshlq_u16): Remove.
30958         (vqshlq_r_u16): Remove.
30959         (vqshlq_n_u16): Remove.
30960         (vqshlq_s16): Remove.
30961         (vqshlq_r_s16): Remove.
30962         (vqshlq_n_s16): Remove.
30963         (vqshlq_u32): Remove.
30964         (vqshlq_r_u32): Remove.
30965         (vqshlq_n_u32): Remove.
30966         (vqshlq_s32): Remove.
30967         (vqshlq_r_s32): Remove.
30968         (vqshlq_n_s32): Remove.
30969         (vqshlq_m_r_u8): Remove.
30970         (vqshlq_m_r_s8): Remove.
30971         (vqshlq_m_r_u16): Remove.
30972         (vqshlq_m_r_s16): Remove.
30973         (vqshlq_m_r_u32): Remove.
30974         (vqshlq_m_r_s32): Remove.
30975         (vqshlq_m_n_s8): Remove.
30976         (vqshlq_m_n_s32): Remove.
30977         (vqshlq_m_n_s16): Remove.
30978         (vqshlq_m_n_u8): Remove.
30979         (vqshlq_m_n_u32): Remove.
30980         (vqshlq_m_n_u16): Remove.
30981         (vqshlq_m_s8): Remove.
30982         (vqshlq_m_s32): Remove.
30983         (vqshlq_m_s16): Remove.
30984         (vqshlq_m_u8): Remove.
30985         (vqshlq_m_u32): Remove.
30986         (vqshlq_m_u16): Remove.
30987         (__arm_vqshlq_u8): Remove.
30988         (__arm_vqshlq_r_u8): Remove.
30989         (__arm_vqshlq_n_u8): Remove.
30990         (__arm_vqshlq_s8): Remove.
30991         (__arm_vqshlq_r_s8): Remove.
30992         (__arm_vqshlq_n_s8): Remove.
30993         (__arm_vqshlq_u16): Remove.
30994         (__arm_vqshlq_r_u16): Remove.
30995         (__arm_vqshlq_n_u16): Remove.
30996         (__arm_vqshlq_s16): Remove.
30997         (__arm_vqshlq_r_s16): Remove.
30998         (__arm_vqshlq_n_s16): Remove.
30999         (__arm_vqshlq_u32): Remove.
31000         (__arm_vqshlq_r_u32): Remove.
31001         (__arm_vqshlq_n_u32): Remove.
31002         (__arm_vqshlq_s32): Remove.
31003         (__arm_vqshlq_r_s32): Remove.
31004         (__arm_vqshlq_n_s32): Remove.
31005         (__arm_vqshlq_m_r_u8): Remove.
31006         (__arm_vqshlq_m_r_s8): Remove.
31007         (__arm_vqshlq_m_r_u16): Remove.
31008         (__arm_vqshlq_m_r_s16): Remove.
31009         (__arm_vqshlq_m_r_u32): Remove.
31010         (__arm_vqshlq_m_r_s32): Remove.
31011         (__arm_vqshlq_m_n_s8): Remove.
31012         (__arm_vqshlq_m_n_s32): Remove.
31013         (__arm_vqshlq_m_n_s16): Remove.
31014         (__arm_vqshlq_m_n_u8): Remove.
31015         (__arm_vqshlq_m_n_u32): Remove.
31016         (__arm_vqshlq_m_n_u16): Remove.
31017         (__arm_vqshlq_m_s8): Remove.
31018         (__arm_vqshlq_m_s32): Remove.
31019         (__arm_vqshlq_m_s16): Remove.
31020         (__arm_vqshlq_m_u8): Remove.
31021         (__arm_vqshlq_m_u32): Remove.
31022         (__arm_vqshlq_m_u16): Remove.
31023         (__arm_vqshlq): Remove.
31024         (__arm_vqshlq_r): Remove.
31025         (__arm_vqshlq_n): Remove.
31026         (__arm_vqshlq_m_r): Remove.
31027         (__arm_vqshlq_m_n): Remove.
31028         (__arm_vqshlq_m): Remove.
31030 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31032         * config/arm/arm-mve-builtins-functions.h (class
31033         unspec_mve_function_exact_insn_vshl): New.
31035 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31037         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
31038         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
31040 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31042         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
31043         (finish_opt_n_resolution): Handle MODE_r.
31044         * config/arm/arm-mve-builtins.def (r): New mode.
31046 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31048         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
31049         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
31051 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31053         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
31054         (vabdq): New.
31055         * config/arm/arm-mve-builtins-base.def (vabdq): New.
31056         * config/arm/arm-mve-builtins-base.h (vabdq): New.
31057         * config/arm/arm_mve.h (vabdq): Remove.
31058         (vabdq_m): Remove.
31059         (vabdq_x): Remove.
31060         (vabdq_u8): Remove.
31061         (vabdq_s8): Remove.
31062         (vabdq_u16): Remove.
31063         (vabdq_s16): Remove.
31064         (vabdq_u32): Remove.
31065         (vabdq_s32): Remove.
31066         (vabdq_f16): Remove.
31067         (vabdq_f32): Remove.
31068         (vabdq_m_s8): Remove.
31069         (vabdq_m_s32): Remove.
31070         (vabdq_m_s16): Remove.
31071         (vabdq_m_u8): Remove.
31072         (vabdq_m_u32): Remove.
31073         (vabdq_m_u16): Remove.
31074         (vabdq_m_f32): Remove.
31075         (vabdq_m_f16): Remove.
31076         (vabdq_x_s8): Remove.
31077         (vabdq_x_s16): Remove.
31078         (vabdq_x_s32): Remove.
31079         (vabdq_x_u8): Remove.
31080         (vabdq_x_u16): Remove.
31081         (vabdq_x_u32): Remove.
31082         (vabdq_x_f16): Remove.
31083         (vabdq_x_f32): Remove.
31084         (__arm_vabdq_u8): Remove.
31085         (__arm_vabdq_s8): Remove.
31086         (__arm_vabdq_u16): Remove.
31087         (__arm_vabdq_s16): Remove.
31088         (__arm_vabdq_u32): Remove.
31089         (__arm_vabdq_s32): Remove.
31090         (__arm_vabdq_m_s8): Remove.
31091         (__arm_vabdq_m_s32): Remove.
31092         (__arm_vabdq_m_s16): Remove.
31093         (__arm_vabdq_m_u8): Remove.
31094         (__arm_vabdq_m_u32): Remove.
31095         (__arm_vabdq_m_u16): Remove.
31096         (__arm_vabdq_x_s8): Remove.
31097         (__arm_vabdq_x_s16): Remove.
31098         (__arm_vabdq_x_s32): Remove.
31099         (__arm_vabdq_x_u8): Remove.
31100         (__arm_vabdq_x_u16): Remove.
31101         (__arm_vabdq_x_u32): Remove.
31102         (__arm_vabdq_f16): Remove.
31103         (__arm_vabdq_f32): Remove.
31104         (__arm_vabdq_m_f32): Remove.
31105         (__arm_vabdq_m_f16): Remove.
31106         (__arm_vabdq_x_f16): Remove.
31107         (__arm_vabdq_x_f32): Remove.
31108         (__arm_vabdq): Remove.
31109         (__arm_vabdq_m): Remove.
31110         (__arm_vabdq_x): Remove.
31112 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31114         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
31115         (MVE_FP_VABDQ_ONLY): New.
31116         (mve_insn): Add vabd.
31117         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
31118         (@mve_<mve_insn>q_f<mode>): ... this.
31119         (mve_vabdq_m_f<mode>): Remove.
31121 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31123         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
31124         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
31125         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
31126         * config/arm/arm_mve.h (vqrdmulhq): Remove.
31127         (vqrdmulhq_m): Remove.
31128         (vqrdmulhq_s8): Remove.
31129         (vqrdmulhq_n_s8): Remove.
31130         (vqrdmulhq_s16): Remove.
31131         (vqrdmulhq_n_s16): Remove.
31132         (vqrdmulhq_s32): Remove.
31133         (vqrdmulhq_n_s32): Remove.
31134         (vqrdmulhq_m_n_s8): Remove.
31135         (vqrdmulhq_m_n_s32): Remove.
31136         (vqrdmulhq_m_n_s16): Remove.
31137         (vqrdmulhq_m_s8): Remove.
31138         (vqrdmulhq_m_s32): Remove.
31139         (vqrdmulhq_m_s16): Remove.
31140         (__arm_vqrdmulhq_s8): Remove.
31141         (__arm_vqrdmulhq_n_s8): Remove.
31142         (__arm_vqrdmulhq_s16): Remove.
31143         (__arm_vqrdmulhq_n_s16): Remove.
31144         (__arm_vqrdmulhq_s32): Remove.
31145         (__arm_vqrdmulhq_n_s32): Remove.
31146         (__arm_vqrdmulhq_m_n_s8): Remove.
31147         (__arm_vqrdmulhq_m_n_s32): Remove.
31148         (__arm_vqrdmulhq_m_n_s16): Remove.
31149         (__arm_vqrdmulhq_m_s8): Remove.
31150         (__arm_vqrdmulhq_m_s32): Remove.
31151         (__arm_vqrdmulhq_m_s16): Remove.
31152         (__arm_vqrdmulhq): Remove.
31153         (__arm_vqrdmulhq_m): Remove.
31155 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31157         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
31158         (MVE_SHIFT_N, MVE_SHIFT_R): New.
31159         (mve_insn): Add vqshl, vshl.
31160         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
31161         (mve_vshlq_n_<supf><mode>): Merge into ...
31162         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
31163         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
31164         ...
31165         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
31166         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
31167         into ...
31168         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
31169         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
31170         into ...
31171         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
31172         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
31173         into ...
31174         (@mve_<mve_insn>q_<supf><mode>): ... this.
31176 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31178         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
31179         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
31180         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
31181         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
31182         vqrshlq, vrshlq.
31183         * config/arm/arm_mve.h (vrshlq): Remove.
31184         (vrshlq_m_n): Remove.
31185         (vrshlq_m): Remove.
31186         (vrshlq_x): Remove.
31187         (vrshlq_u8): Remove.
31188         (vrshlq_n_u8): Remove.
31189         (vrshlq_s8): Remove.
31190         (vrshlq_n_s8): Remove.
31191         (vrshlq_u16): Remove.
31192         (vrshlq_n_u16): Remove.
31193         (vrshlq_s16): Remove.
31194         (vrshlq_n_s16): Remove.
31195         (vrshlq_u32): Remove.
31196         (vrshlq_n_u32): Remove.
31197         (vrshlq_s32): Remove.
31198         (vrshlq_n_s32): Remove.
31199         (vrshlq_m_n_u8): Remove.
31200         (vrshlq_m_n_s8): Remove.
31201         (vrshlq_m_n_u16): Remove.
31202         (vrshlq_m_n_s16): Remove.
31203         (vrshlq_m_n_u32): Remove.
31204         (vrshlq_m_n_s32): Remove.
31205         (vrshlq_m_s8): Remove.
31206         (vrshlq_m_s32): Remove.
31207         (vrshlq_m_s16): Remove.
31208         (vrshlq_m_u8): Remove.
31209         (vrshlq_m_u32): Remove.
31210         (vrshlq_m_u16): Remove.
31211         (vrshlq_x_s8): Remove.
31212         (vrshlq_x_s16): Remove.
31213         (vrshlq_x_s32): Remove.
31214         (vrshlq_x_u8): Remove.
31215         (vrshlq_x_u16): Remove.
31216         (vrshlq_x_u32): Remove.
31217         (__arm_vrshlq_u8): Remove.
31218         (__arm_vrshlq_n_u8): Remove.
31219         (__arm_vrshlq_s8): Remove.
31220         (__arm_vrshlq_n_s8): Remove.
31221         (__arm_vrshlq_u16): Remove.
31222         (__arm_vrshlq_n_u16): Remove.
31223         (__arm_vrshlq_s16): Remove.
31224         (__arm_vrshlq_n_s16): Remove.
31225         (__arm_vrshlq_u32): Remove.
31226         (__arm_vrshlq_n_u32): Remove.
31227         (__arm_vrshlq_s32): Remove.
31228         (__arm_vrshlq_n_s32): Remove.
31229         (__arm_vrshlq_m_n_u8): Remove.
31230         (__arm_vrshlq_m_n_s8): Remove.
31231         (__arm_vrshlq_m_n_u16): Remove.
31232         (__arm_vrshlq_m_n_s16): Remove.
31233         (__arm_vrshlq_m_n_u32): Remove.
31234         (__arm_vrshlq_m_n_s32): Remove.
31235         (__arm_vrshlq_m_s8): Remove.
31236         (__arm_vrshlq_m_s32): Remove.
31237         (__arm_vrshlq_m_s16): Remove.
31238         (__arm_vrshlq_m_u8): Remove.
31239         (__arm_vrshlq_m_u32): Remove.
31240         (__arm_vrshlq_m_u16): Remove.
31241         (__arm_vrshlq_x_s8): Remove.
31242         (__arm_vrshlq_x_s16): Remove.
31243         (__arm_vrshlq_x_s32): Remove.
31244         (__arm_vrshlq_x_u8): Remove.
31245         (__arm_vrshlq_x_u16): Remove.
31246         (__arm_vrshlq_x_u32): Remove.
31247         (__arm_vrshlq): Remove.
31248         (__arm_vrshlq_m_n): Remove.
31249         (__arm_vrshlq_m): Remove.
31250         (__arm_vrshlq_x): Remove.
31251         (vqrshlq): Remove.
31252         (vqrshlq_m_n): Remove.
31253         (vqrshlq_m): Remove.
31254         (vqrshlq_u8): Remove.
31255         (vqrshlq_n_u8): Remove.
31256         (vqrshlq_s8): Remove.
31257         (vqrshlq_n_s8): Remove.
31258         (vqrshlq_u16): Remove.
31259         (vqrshlq_n_u16): Remove.
31260         (vqrshlq_s16): Remove.
31261         (vqrshlq_n_s16): Remove.
31262         (vqrshlq_u32): Remove.
31263         (vqrshlq_n_u32): Remove.
31264         (vqrshlq_s32): Remove.
31265         (vqrshlq_n_s32): Remove.
31266         (vqrshlq_m_n_u8): Remove.
31267         (vqrshlq_m_n_s8): Remove.
31268         (vqrshlq_m_n_u16): Remove.
31269         (vqrshlq_m_n_s16): Remove.
31270         (vqrshlq_m_n_u32): Remove.
31271         (vqrshlq_m_n_s32): Remove.
31272         (vqrshlq_m_s8): Remove.
31273         (vqrshlq_m_s32): Remove.
31274         (vqrshlq_m_s16): Remove.
31275         (vqrshlq_m_u8): Remove.
31276         (vqrshlq_m_u32): Remove.
31277         (vqrshlq_m_u16): Remove.
31278         (__arm_vqrshlq_u8): Remove.
31279         (__arm_vqrshlq_n_u8): Remove.
31280         (__arm_vqrshlq_s8): Remove.
31281         (__arm_vqrshlq_n_s8): Remove.
31282         (__arm_vqrshlq_u16): Remove.
31283         (__arm_vqrshlq_n_u16): Remove.
31284         (__arm_vqrshlq_s16): Remove.
31285         (__arm_vqrshlq_n_s16): Remove.
31286         (__arm_vqrshlq_u32): Remove.
31287         (__arm_vqrshlq_n_u32): Remove.
31288         (__arm_vqrshlq_s32): Remove.
31289         (__arm_vqrshlq_n_s32): Remove.
31290         (__arm_vqrshlq_m_n_u8): Remove.
31291         (__arm_vqrshlq_m_n_s8): Remove.
31292         (__arm_vqrshlq_m_n_u16): Remove.
31293         (__arm_vqrshlq_m_n_s16): Remove.
31294         (__arm_vqrshlq_m_n_u32): Remove.
31295         (__arm_vqrshlq_m_n_s32): Remove.
31296         (__arm_vqrshlq_m_s8): Remove.
31297         (__arm_vqrshlq_m_s32): Remove.
31298         (__arm_vqrshlq_m_s16): Remove.
31299         (__arm_vqrshlq_m_u8): Remove.
31300         (__arm_vqrshlq_m_u32): Remove.
31301         (__arm_vqrshlq_m_u16): Remove.
31302         (__arm_vqrshlq): Remove.
31303         (__arm_vqrshlq_m_n): Remove.
31304         (__arm_vqrshlq_m): Remove.
31306 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31308         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
31309         (mve_insn): Add vqrshl, vrshl.
31310         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
31311         (mve_vrshlq_n_<supf><mode>): Merge into ...
31312         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
31313         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
31314         into ...
31315         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
31317 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
31319         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
31320         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
31322 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31324         PR target/109615
31325         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
31326         denegrate PHI optmization.
31328 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
31330         * config/i386/predicates.md (register_no_SP_operand):
31331         Rename from index_register_operand.
31332         (call_register_operand): Update for rename.
31333         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
31335 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31337         PR bootstrap/84402
31338         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
31339         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
31340         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
31341         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
31342         (s-match): Split into s-generic-match and s-gimple-match.
31343         * configure.ac (with-matchpd-partitions,
31344         DEFAULT_MATCHPD_PARTITIONS): New.
31345         * configure: Regenerate.
31347 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31349         PR bootstrap/84402
31350         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
31351         (decision_tree::gen): Accept list of files instead of single and update
31352         to write function definition to header and main file.
31353         (write_predicate): Likewise.
31354         (write_header): Emit pragmas and new includes.
31355         (main): Create file buffers and cleanup.
31356         (showUsage, write_header_includes): New.
31358 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31360         PR bootstrap/84402
31361         * Makefile.in (OBJS): Add gimple-match-exports.o.
31362         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
31363         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
31364         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
31365         gimple_resimplify5, constant_for_folding, convert_conditional_op,
31366         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
31367         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
31368         do_valueize, try_conditional_simplification, gimple_extract,
31369         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
31370         commutative_ternary_op_p, first_commutative_argument,
31371         associative_binary_op_p, directly_supported_p,
31372         get_conditional_internal_fn): Moved to gimple-match-exports.cc
31373         * gimple-match-exports.cc: New file.
31375 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31377         PR bootstrap/84402
31378         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
31379         debug_dump var.
31380         (dt_simplify::gen_1): Use it.
31382 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31384         PR bootstrap/84402
31385         * genmatch.cc (output_line_directive): Only emit commented directive
31386         when -vv.
31388 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
31390         PR bootstrap/84402
31391         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
31393 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
31395         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
31396         unused in_mode/in_n variables.
31398 2023-05-05  Richard Biener  <rguenther@suse.de>
31400         PR tree-optimization/109735
31401         * tree-vect-stmts.cc (vectorizable_operation): Perform
31402         conversion for POINTER_DIFF_EXPR unconditionally.
31404 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
31406         * config/i386/mmx.md (mulv2si3): New expander.
31407         (*mulv2si3): New insn pattern.
31409 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
31410             Thomas Schwinge  <thomas@codesourcery.com>
31412         PR libgomp/108098
31413         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
31414         alongside reverse-offload function table to prevent NULL values
31415         of the function addresses.
31417 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
31419         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
31420         mpft_t -> mpfr_t.
31421         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
31423 2023-05-05  Andrew Pinski  <apinski@marvell.com>
31425         PR tree-optimization/109732
31426         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
31427         of the argtrue/argfalse.
31429 2023-05-05  Andrew Pinski  <apinski@marvell.com>
31431         PR tree-optimization/109722
31432         * match.pd: Extend the `ABS<a> == 0` pattern
31433         to cover `ABSU<a> == 0` too.
31435 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
31437         PR target/109733
31438         * config/i386/predicates.md (index_reg_operand): New predicate.
31439         * config/i386/i386.md (ashift to lea spliter): Use
31440         general_reg_operand and index_reg_operand predicates.
31442 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31444         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
31445         Rename and reimplement with RTL codes to...
31446         (aarch64_<optab>hn2<mode>_insn_le): .. This.
31447         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
31448         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
31449         codes to...
31450         (aarch64_<optab>hn2<mode>_insn_be): ... This.
31451         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
31452         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
31453         (aarch64_<optab>hn2<mode>): ... This.
31454         (aarch64_r<optab>hn2<mode>): New expander.
31455         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
31456         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
31457         (ADDSUBHN): Delete.
31458         (sur): Remove handling of the above.
31459         (addsub): Likewise.
31461 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31463         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
31464         Delete.
31465         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
31466         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
31467         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
31468         (aarch64_<sur><addsub>hn<mode>): Delete.
31469         (aarch64_<optab>hn<mode>): New define_expand.
31470         (aarch64_r<optab>hn<mode>): Likewise.
31471         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
31472         New predicate.
31474 2023-05-04  Andrew Pinski  <apinski@marvell.com>
31476         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
31477         diamond form bb with forwarder only empty blocks better.
31479 2023-05-04  Andrew Pinski  <apinski@marvell.com>
31481         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
31482         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
31483         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
31484         of an inline version of it.
31485         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
31486         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
31488 2023-05-04  Andrew Pinski  <apinski@marvell.com>
31490         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
31491         the default argument value for dce_ssa_names to nullptr.
31492         Check to make sure dce_ssa_names is a non-nullptr before
31493         calling simple_dce_from_worklist.
31495 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
31497         * config/i386/predicates.md (index_register_operand): Reject
31498         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
31499         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
31500         (call_register_no_elim_operand): Rewrite as ...
31501         (call_register_operand): ... this.
31502         (call_insn_operand): Use call_register_operand predicate.
31504 2023-05-04  Richard Biener  <rguenther@suse.de>
31506         PR tree-optimization/109721
31507         * tree-vect-stmts.cc (vectorizable_operation): Make sure
31508         to test word_mode for all !target_support_p operations.
31510 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31512         PR target/99195
31513         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
31514         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
31515         (aarch64_mla<mode>): Rename to...
31516         (aarch64_mla<mode><vczle><vczbe>): ... This.
31517         (*aarch64_mla_elt<mode>): Rename to...
31518         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
31519         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
31520         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
31521         (aarch64_mla_n<mode>): Rename to...
31522         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
31523         (aarch64_mls<mode>): Rename to...
31524         (aarch64_mls<mode><vczle><vczbe>): ... This.
31525         (*aarch64_mls_elt<mode>): Rename to...
31526         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
31527         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
31528         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
31529         (aarch64_mls_n<mode>): Rename to...
31530         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
31531         (fma<mode>4): Rename to...
31532         (fma<mode>4<vczle><vczbe>): ... This.
31533         (*aarch64_fma4_elt<mode>): Rename to...
31534         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
31535         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
31536         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
31537         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
31538         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
31539         (fnma<mode>4): Rename to...
31540         (fnma<mode>4<vczle><vczbe>): ... This.
31541         (*aarch64_fnma4_elt<mode>): Rename to...
31542         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
31543         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
31544         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
31545         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
31546         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
31547         (aarch64_simd_bsl<mode>_internal): Rename to...
31548         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
31549         (*aarch64_simd_bsl<mode>_alt): Rename to...
31550         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
31552 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31554         PR target/99195
31555         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
31556         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
31557         (fabd<mode>3): Rename to...
31558         (fabd<mode>3<vczle><vczbe>): ... This.
31559         (aarch64_<optab>p<mode>): Rename to...
31560         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
31561         (aarch64_faddp<mode>): Rename to...
31562         (aarch64_faddp<mode><vczle><vczbe>): ... This.
31564 2023-05-04  Martin Liska  <mliska@suse.cz>
31566         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
31567         (print_version): Use it.
31568         (generate_results): Likewise.
31570 2023-05-04  Richard Biener  <rguenther@suse.de>
31572         * tree-cfg.h (last_stmt): Rename to ...
31573         (last_nondebug_stmt): ... this.
31574         * tree-cfg.cc (last_stmt): Rename to ...
31575         (last_nondebug_stmt): ... this.
31576         (assign_discriminators): Adjust.
31577         (group_case_labels_stmt): Likewise.
31578         (gimple_can_duplicate_bb_p): Likewise.
31579         (execute_fixup_cfg): Likewise.
31580         * auto-profile.cc (afdo_propagate_circuit): Likewise.
31581         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
31582         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
31583         (determine_parallel_type): Likewise.
31584         (adjust_context_and_scope): Likewise.
31585         (expand_task_call): Likewise.
31586         (remove_exit_barrier): Likewise.
31587         (expand_omp_taskreg): Likewise.
31588         (expand_omp_for_init_counts): Likewise.
31589         (expand_omp_for_init_vars): Likewise.
31590         (expand_omp_for_static_chunk): Likewise.
31591         (expand_omp_simd): Likewise.
31592         (expand_oacc_for): Likewise.
31593         (expand_omp_for): Likewise.
31594         (expand_omp_sections): Likewise.
31595         (expand_omp_atomic_fetch_op): Likewise.
31596         (expand_omp_atomic_cas): Likewise.
31597         (expand_omp_atomic): Likewise.
31598         (expand_omp_target): Likewise.
31599         (expand_omp): Likewise.
31600         (omp_make_gimple_edges): Likewise.
31601         * trans-mem.cc (tm_region_init): Likewise.
31602         * tree-inline.cc (redirect_all_calls): Likewise.
31603         * tree-parloops.cc (gen_parallel_loop): Likewise.
31604         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
31605         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
31606         Likewise.
31607         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
31608         (may_eliminate_iv): Likewise.
31609         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
31610         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
31611         Likewise.
31612         (estimate_numbers_of_iterations): Likewise.
31613         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
31614         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
31615         (set_predicates_for_bb): Likewise.
31616         (init_loop_unswitch_info): Likewise.
31617         (hoist_guard): Likewise.
31618         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
31619         (minmax_replacement): Likewise.
31620         * tree-ssa-reassoc.cc (update_range_test): Likewise.
31621         (optimize_range_tests_to_bit_test): Likewise.
31622         (optimize_range_tests_var_bound): Likewise.
31623         (optimize_range_tests): Likewise.
31624         (no_side_effect_bb): Likewise.
31625         (suitable_cond_bb): Likewise.
31626         (maybe_optimize_range_tests): Likewise.
31627         (reassociate_bb): Likewise.
31628         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
31630 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
31632         PR debug/109676
31633         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
31634         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
31635         for it only if it still has TImode.  Don't decide whether to call
31636         fix_debug_reg_uses based on whether SRC is ever set or not.
31638 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
31640         * config/cris/cris.cc (cris_split_constant): New function.
31641         * config/cris/cris.md (splitop): New iterator.
31642         (opsplit1): New define_peephole2.
31643         * config/cris/cris-protos.h (cris_split_constant): Declare.
31644         (cris_splittable_constant_p): New macro.
31646 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
31648         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
31649         to ALL_REGS.
31651 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
31653         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
31654         lra_in_progress, not reload_in_progress.
31655         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
31656         * config/cris/constraints.md ("Q"): Ditto.
31658 2023-05-03  Andrew Pinski  <apinski@marvell.com>
31660         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
31661         stats on removed number of statements and phis.
31663 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
31665         PR tree-optimization/109711
31666         * value-range.cc (irange::verify_range): Allow types of
31667         error_mark_node.
31669 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
31671         PR sanitizer/90746
31672         * calls.cc (can_implement_as_sibling_call_p): Reject calls
31673         to __sanitizer_cov_trace_pc.
31675 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
31677         PR target/109661
31678         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
31679         a new ABI break parameter for GCC 14.  Set it to the alignment
31680         of enums that have an underlying type.  Take the true alignment
31681         of such enums from the TYPE_ALIGN of the underlying type's
31682         TYPE_MAIN_VARIANT.
31683         (aarch64_function_arg_boundary): Update accordingly.
31684         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
31685         Warn about ABI differences.
31687 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
31689         PR target/109661
31690         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
31691         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
31692         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
31693         (aarch64_gimplify_va_arg_expr): Likewise.
31695 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
31697         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
31698         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
31699         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
31700         (vrmulhq): New.
31701         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
31702         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
31703         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
31704         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
31705         * config/arm/arm_mve.h (vhsubq): Remove.
31706         (vhaddq): Remove.
31707         (vhaddq_m): Remove.
31708         (vhsubq_m): Remove.
31709         (vhaddq_x): Remove.
31710         (vhsubq_x): Remove.
31711         (vhsubq_u8): Remove.
31712         (vhsubq_n_u8): Remove.
31713         (vhaddq_u8): Remove.
31714         (vhaddq_n_u8): Remove.
31715         (vhsubq_s8): Remove.
31716         (vhsubq_n_s8): Remove.
31717         (vhaddq_s8): Remove.
31718         (vhaddq_n_s8): Remove.
31719         (vhsubq_u16): Remove.
31720         (vhsubq_n_u16): Remove.
31721         (vhaddq_u16): Remove.
31722         (vhaddq_n_u16): Remove.
31723         (vhsubq_s16): Remove.
31724         (vhsubq_n_s16): Remove.
31725         (vhaddq_s16): Remove.
31726         (vhaddq_n_s16): Remove.
31727         (vhsubq_u32): Remove.
31728         (vhsubq_n_u32): Remove.
31729         (vhaddq_u32): Remove.
31730         (vhaddq_n_u32): Remove.
31731         (vhsubq_s32): Remove.
31732         (vhsubq_n_s32): Remove.
31733         (vhaddq_s32): Remove.
31734         (vhaddq_n_s32): Remove.
31735         (vhaddq_m_n_s8): Remove.
31736         (vhaddq_m_n_s32): Remove.
31737         (vhaddq_m_n_s16): Remove.
31738         (vhaddq_m_n_u8): Remove.
31739         (vhaddq_m_n_u32): Remove.
31740         (vhaddq_m_n_u16): Remove.
31741         (vhaddq_m_s8): Remove.
31742         (vhaddq_m_s32): Remove.
31743         (vhaddq_m_s16): Remove.
31744         (vhaddq_m_u8): Remove.
31745         (vhaddq_m_u32): Remove.
31746         (vhaddq_m_u16): Remove.
31747         (vhsubq_m_n_s8): Remove.
31748         (vhsubq_m_n_s32): Remove.
31749         (vhsubq_m_n_s16): Remove.
31750         (vhsubq_m_n_u8): Remove.
31751         (vhsubq_m_n_u32): Remove.
31752         (vhsubq_m_n_u16): Remove.
31753         (vhsubq_m_s8): Remove.
31754         (vhsubq_m_s32): Remove.
31755         (vhsubq_m_s16): Remove.
31756         (vhsubq_m_u8): Remove.
31757         (vhsubq_m_u32): Remove.
31758         (vhsubq_m_u16): Remove.
31759         (vhaddq_x_n_s8): Remove.
31760         (vhaddq_x_n_s16): Remove.
31761         (vhaddq_x_n_s32): Remove.
31762         (vhaddq_x_n_u8): Remove.
31763         (vhaddq_x_n_u16): Remove.
31764         (vhaddq_x_n_u32): Remove.
31765         (vhaddq_x_s8): Remove.
31766         (vhaddq_x_s16): Remove.
31767         (vhaddq_x_s32): Remove.
31768         (vhaddq_x_u8): Remove.
31769         (vhaddq_x_u16): Remove.
31770         (vhaddq_x_u32): Remove.
31771         (vhsubq_x_n_s8): Remove.
31772         (vhsubq_x_n_s16): Remove.
31773         (vhsubq_x_n_s32): Remove.
31774         (vhsubq_x_n_u8): Remove.
31775         (vhsubq_x_n_u16): Remove.
31776         (vhsubq_x_n_u32): Remove.
31777         (vhsubq_x_s8): Remove.
31778         (vhsubq_x_s16): Remove.
31779         (vhsubq_x_s32): Remove.
31780         (vhsubq_x_u8): Remove.
31781         (vhsubq_x_u16): Remove.
31782         (vhsubq_x_u32): Remove.
31783         (__arm_vhsubq_u8): Remove.
31784         (__arm_vhsubq_n_u8): Remove.
31785         (__arm_vhaddq_u8): Remove.
31786         (__arm_vhaddq_n_u8): Remove.
31787         (__arm_vhsubq_s8): Remove.
31788         (__arm_vhsubq_n_s8): Remove.
31789         (__arm_vhaddq_s8): Remove.
31790         (__arm_vhaddq_n_s8): Remove.
31791         (__arm_vhsubq_u16): Remove.
31792         (__arm_vhsubq_n_u16): Remove.
31793         (__arm_vhaddq_u16): Remove.
31794         (__arm_vhaddq_n_u16): Remove.
31795         (__arm_vhsubq_s16): Remove.
31796         (__arm_vhsubq_n_s16): Remove.
31797         (__arm_vhaddq_s16): Remove.
31798         (__arm_vhaddq_n_s16): Remove.
31799         (__arm_vhsubq_u32): Remove.
31800         (__arm_vhsubq_n_u32): Remove.
31801         (__arm_vhaddq_u32): Remove.
31802         (__arm_vhaddq_n_u32): Remove.
31803         (__arm_vhsubq_s32): Remove.
31804         (__arm_vhsubq_n_s32): Remove.
31805         (__arm_vhaddq_s32): Remove.
31806         (__arm_vhaddq_n_s32): Remove.
31807         (__arm_vhaddq_m_n_s8): Remove.
31808         (__arm_vhaddq_m_n_s32): Remove.
31809         (__arm_vhaddq_m_n_s16): Remove.
31810         (__arm_vhaddq_m_n_u8): Remove.
31811         (__arm_vhaddq_m_n_u32): Remove.
31812         (__arm_vhaddq_m_n_u16): Remove.
31813         (__arm_vhaddq_m_s8): Remove.
31814         (__arm_vhaddq_m_s32): Remove.
31815         (__arm_vhaddq_m_s16): Remove.
31816         (__arm_vhaddq_m_u8): Remove.
31817         (__arm_vhaddq_m_u32): Remove.
31818         (__arm_vhaddq_m_u16): Remove.
31819         (__arm_vhsubq_m_n_s8): Remove.
31820         (__arm_vhsubq_m_n_s32): Remove.
31821         (__arm_vhsubq_m_n_s16): Remove.
31822         (__arm_vhsubq_m_n_u8): Remove.
31823         (__arm_vhsubq_m_n_u32): Remove.
31824         (__arm_vhsubq_m_n_u16): Remove.
31825         (__arm_vhsubq_m_s8): Remove.
31826         (__arm_vhsubq_m_s32): Remove.
31827         (__arm_vhsubq_m_s16): Remove.
31828         (__arm_vhsubq_m_u8): Remove.
31829         (__arm_vhsubq_m_u32): Remove.
31830         (__arm_vhsubq_m_u16): Remove.
31831         (__arm_vhaddq_x_n_s8): Remove.
31832         (__arm_vhaddq_x_n_s16): Remove.
31833         (__arm_vhaddq_x_n_s32): Remove.
31834         (__arm_vhaddq_x_n_u8): Remove.
31835         (__arm_vhaddq_x_n_u16): Remove.
31836         (__arm_vhaddq_x_n_u32): Remove.
31837         (__arm_vhaddq_x_s8): Remove.
31838         (__arm_vhaddq_x_s16): Remove.
31839         (__arm_vhaddq_x_s32): Remove.
31840         (__arm_vhaddq_x_u8): Remove.
31841         (__arm_vhaddq_x_u16): Remove.
31842         (__arm_vhaddq_x_u32): Remove.
31843         (__arm_vhsubq_x_n_s8): Remove.
31844         (__arm_vhsubq_x_n_s16): Remove.
31845         (__arm_vhsubq_x_n_s32): Remove.
31846         (__arm_vhsubq_x_n_u8): Remove.
31847         (__arm_vhsubq_x_n_u16): Remove.
31848         (__arm_vhsubq_x_n_u32): Remove.
31849         (__arm_vhsubq_x_s8): Remove.
31850         (__arm_vhsubq_x_s16): Remove.
31851         (__arm_vhsubq_x_s32): Remove.
31852         (__arm_vhsubq_x_u8): Remove.
31853         (__arm_vhsubq_x_u16): Remove.
31854         (__arm_vhsubq_x_u32): Remove.
31855         (__arm_vhsubq): Remove.
31856         (__arm_vhaddq): Remove.
31857         (__arm_vhaddq_m): Remove.
31858         (__arm_vhsubq_m): Remove.
31859         (__arm_vhaddq_x): Remove.
31860         (__arm_vhsubq_x): Remove.
31861         (vmulhq): Remove.
31862         (vmulhq_m): Remove.
31863         (vmulhq_x): Remove.
31864         (vmulhq_u8): Remove.
31865         (vmulhq_s8): Remove.
31866         (vmulhq_u16): Remove.
31867         (vmulhq_s16): Remove.
31868         (vmulhq_u32): Remove.
31869         (vmulhq_s32): Remove.
31870         (vmulhq_m_s8): Remove.
31871         (vmulhq_m_s32): Remove.
31872         (vmulhq_m_s16): Remove.
31873         (vmulhq_m_u8): Remove.
31874         (vmulhq_m_u32): Remove.
31875         (vmulhq_m_u16): Remove.
31876         (vmulhq_x_s8): Remove.
31877         (vmulhq_x_s16): Remove.
31878         (vmulhq_x_s32): Remove.
31879         (vmulhq_x_u8): Remove.
31880         (vmulhq_x_u16): Remove.
31881         (vmulhq_x_u32): Remove.
31882         (__arm_vmulhq_u8): Remove.
31883         (__arm_vmulhq_s8): Remove.
31884         (__arm_vmulhq_u16): Remove.
31885         (__arm_vmulhq_s16): Remove.
31886         (__arm_vmulhq_u32): Remove.
31887         (__arm_vmulhq_s32): Remove.
31888         (__arm_vmulhq_m_s8): Remove.
31889         (__arm_vmulhq_m_s32): Remove.
31890         (__arm_vmulhq_m_s16): Remove.
31891         (__arm_vmulhq_m_u8): Remove.
31892         (__arm_vmulhq_m_u32): Remove.
31893         (__arm_vmulhq_m_u16): Remove.
31894         (__arm_vmulhq_x_s8): Remove.
31895         (__arm_vmulhq_x_s16): Remove.
31896         (__arm_vmulhq_x_s32): Remove.
31897         (__arm_vmulhq_x_u8): Remove.
31898         (__arm_vmulhq_x_u16): Remove.
31899         (__arm_vmulhq_x_u32): Remove.
31900         (__arm_vmulhq): Remove.
31901         (__arm_vmulhq_m): Remove.
31902         (__arm_vmulhq_x): Remove.
31903         (vqsubq): Remove.
31904         (vqaddq): Remove.
31905         (vqaddq_m): Remove.
31906         (vqsubq_m): Remove.
31907         (vqsubq_u8): Remove.
31908         (vqsubq_n_u8): Remove.
31909         (vqaddq_u8): Remove.
31910         (vqaddq_n_u8): Remove.
31911         (vqsubq_s8): Remove.
31912         (vqsubq_n_s8): Remove.
31913         (vqaddq_s8): Remove.
31914         (vqaddq_n_s8): Remove.
31915         (vqsubq_u16): Remove.
31916         (vqsubq_n_u16): Remove.
31917         (vqaddq_u16): Remove.
31918         (vqaddq_n_u16): Remove.
31919         (vqsubq_s16): Remove.
31920         (vqsubq_n_s16): Remove.
31921         (vqaddq_s16): Remove.
31922         (vqaddq_n_s16): Remove.
31923         (vqsubq_u32): Remove.
31924         (vqsubq_n_u32): Remove.
31925         (vqaddq_u32): Remove.
31926         (vqaddq_n_u32): Remove.
31927         (vqsubq_s32): Remove.
31928         (vqsubq_n_s32): Remove.
31929         (vqaddq_s32): Remove.
31930         (vqaddq_n_s32): Remove.
31931         (vqaddq_m_n_s8): Remove.
31932         (vqaddq_m_n_s32): Remove.
31933         (vqaddq_m_n_s16): Remove.
31934         (vqaddq_m_n_u8): Remove.
31935         (vqaddq_m_n_u32): Remove.
31936         (vqaddq_m_n_u16): Remove.
31937         (vqaddq_m_s8): Remove.
31938         (vqaddq_m_s32): Remove.
31939         (vqaddq_m_s16): Remove.
31940         (vqaddq_m_u8): Remove.
31941         (vqaddq_m_u32): Remove.
31942         (vqaddq_m_u16): Remove.
31943         (vqsubq_m_n_s8): Remove.
31944         (vqsubq_m_n_s32): Remove.
31945         (vqsubq_m_n_s16): Remove.
31946         (vqsubq_m_n_u8): Remove.
31947         (vqsubq_m_n_u32): Remove.
31948         (vqsubq_m_n_u16): Remove.
31949         (vqsubq_m_s8): Remove.
31950         (vqsubq_m_s32): Remove.
31951         (vqsubq_m_s16): Remove.
31952         (vqsubq_m_u8): Remove.
31953         (vqsubq_m_u32): Remove.
31954         (vqsubq_m_u16): Remove.
31955         (__arm_vqsubq_u8): Remove.
31956         (__arm_vqsubq_n_u8): Remove.
31957         (__arm_vqaddq_u8): Remove.
31958         (__arm_vqaddq_n_u8): Remove.
31959         (__arm_vqsubq_s8): Remove.
31960         (__arm_vqsubq_n_s8): Remove.
31961         (__arm_vqaddq_s8): Remove.
31962         (__arm_vqaddq_n_s8): Remove.
31963         (__arm_vqsubq_u16): Remove.
31964         (__arm_vqsubq_n_u16): Remove.
31965         (__arm_vqaddq_u16): Remove.
31966         (__arm_vqaddq_n_u16): Remove.
31967         (__arm_vqsubq_s16): Remove.
31968         (__arm_vqsubq_n_s16): Remove.
31969         (__arm_vqaddq_s16): Remove.
31970         (__arm_vqaddq_n_s16): Remove.
31971         (__arm_vqsubq_u32): Remove.
31972         (__arm_vqsubq_n_u32): Remove.
31973         (__arm_vqaddq_u32): Remove.
31974         (__arm_vqaddq_n_u32): Remove.
31975         (__arm_vqsubq_s32): Remove.
31976         (__arm_vqsubq_n_s32): Remove.
31977         (__arm_vqaddq_s32): Remove.
31978         (__arm_vqaddq_n_s32): Remove.
31979         (__arm_vqaddq_m_n_s8): Remove.
31980         (__arm_vqaddq_m_n_s32): Remove.
31981         (__arm_vqaddq_m_n_s16): Remove.
31982         (__arm_vqaddq_m_n_u8): Remove.
31983         (__arm_vqaddq_m_n_u32): Remove.
31984         (__arm_vqaddq_m_n_u16): Remove.
31985         (__arm_vqaddq_m_s8): Remove.
31986         (__arm_vqaddq_m_s32): Remove.
31987         (__arm_vqaddq_m_s16): Remove.
31988         (__arm_vqaddq_m_u8): Remove.
31989         (__arm_vqaddq_m_u32): Remove.
31990         (__arm_vqaddq_m_u16): Remove.
31991         (__arm_vqsubq_m_n_s8): Remove.
31992         (__arm_vqsubq_m_n_s32): Remove.
31993         (__arm_vqsubq_m_n_s16): Remove.
31994         (__arm_vqsubq_m_n_u8): Remove.
31995         (__arm_vqsubq_m_n_u32): Remove.
31996         (__arm_vqsubq_m_n_u16): Remove.
31997         (__arm_vqsubq_m_s8): Remove.
31998         (__arm_vqsubq_m_s32): Remove.
31999         (__arm_vqsubq_m_s16): Remove.
32000         (__arm_vqsubq_m_u8): Remove.
32001         (__arm_vqsubq_m_u32): Remove.
32002         (__arm_vqsubq_m_u16): Remove.
32003         (__arm_vqsubq): Remove.
32004         (__arm_vqaddq): Remove.
32005         (__arm_vqaddq_m): Remove.
32006         (__arm_vqsubq_m): Remove.
32007         (vqdmulhq): Remove.
32008         (vqdmulhq_m): Remove.
32009         (vqdmulhq_s8): Remove.
32010         (vqdmulhq_n_s8): Remove.
32011         (vqdmulhq_s16): Remove.
32012         (vqdmulhq_n_s16): Remove.
32013         (vqdmulhq_s32): Remove.
32014         (vqdmulhq_n_s32): Remove.
32015         (vqdmulhq_m_n_s8): Remove.
32016         (vqdmulhq_m_n_s32): Remove.
32017         (vqdmulhq_m_n_s16): Remove.
32018         (vqdmulhq_m_s8): Remove.
32019         (vqdmulhq_m_s32): Remove.
32020         (vqdmulhq_m_s16): Remove.
32021         (__arm_vqdmulhq_s8): Remove.
32022         (__arm_vqdmulhq_n_s8): Remove.
32023         (__arm_vqdmulhq_s16): Remove.
32024         (__arm_vqdmulhq_n_s16): Remove.
32025         (__arm_vqdmulhq_s32): Remove.
32026         (__arm_vqdmulhq_n_s32): Remove.
32027         (__arm_vqdmulhq_m_n_s8): Remove.
32028         (__arm_vqdmulhq_m_n_s32): Remove.
32029         (__arm_vqdmulhq_m_n_s16): Remove.
32030         (__arm_vqdmulhq_m_s8): Remove.
32031         (__arm_vqdmulhq_m_s32): Remove.
32032         (__arm_vqdmulhq_m_s16): Remove.
32033         (__arm_vqdmulhq): Remove.
32034         (__arm_vqdmulhq_m): Remove.
32035         (vrhaddq): Remove.
32036         (vrhaddq_m): Remove.
32037         (vrhaddq_x): Remove.
32038         (vrhaddq_u8): Remove.
32039         (vrhaddq_s8): Remove.
32040         (vrhaddq_u16): Remove.
32041         (vrhaddq_s16): Remove.
32042         (vrhaddq_u32): Remove.
32043         (vrhaddq_s32): Remove.
32044         (vrhaddq_m_s8): Remove.
32045         (vrhaddq_m_s32): Remove.
32046         (vrhaddq_m_s16): Remove.
32047         (vrhaddq_m_u8): Remove.
32048         (vrhaddq_m_u32): Remove.
32049         (vrhaddq_m_u16): Remove.
32050         (vrhaddq_x_s8): Remove.
32051         (vrhaddq_x_s16): Remove.
32052         (vrhaddq_x_s32): Remove.
32053         (vrhaddq_x_u8): Remove.
32054         (vrhaddq_x_u16): Remove.
32055         (vrhaddq_x_u32): Remove.
32056         (__arm_vrhaddq_u8): Remove.
32057         (__arm_vrhaddq_s8): Remove.
32058         (__arm_vrhaddq_u16): Remove.
32059         (__arm_vrhaddq_s16): Remove.
32060         (__arm_vrhaddq_u32): Remove.
32061         (__arm_vrhaddq_s32): Remove.
32062         (__arm_vrhaddq_m_s8): Remove.
32063         (__arm_vrhaddq_m_s32): Remove.
32064         (__arm_vrhaddq_m_s16): Remove.
32065         (__arm_vrhaddq_m_u8): Remove.
32066         (__arm_vrhaddq_m_u32): Remove.
32067         (__arm_vrhaddq_m_u16): Remove.
32068         (__arm_vrhaddq_x_s8): Remove.
32069         (__arm_vrhaddq_x_s16): Remove.
32070         (__arm_vrhaddq_x_s32): Remove.
32071         (__arm_vrhaddq_x_u8): Remove.
32072         (__arm_vrhaddq_x_u16): Remove.
32073         (__arm_vrhaddq_x_u32): Remove.
32074         (__arm_vrhaddq): Remove.
32075         (__arm_vrhaddq_m): Remove.
32076         (__arm_vrhaddq_x): Remove.
32077         (vrmulhq): Remove.
32078         (vrmulhq_m): Remove.
32079         (vrmulhq_x): Remove.
32080         (vrmulhq_u8): Remove.
32081         (vrmulhq_s8): Remove.
32082         (vrmulhq_u16): Remove.
32083         (vrmulhq_s16): Remove.
32084         (vrmulhq_u32): Remove.
32085         (vrmulhq_s32): Remove.
32086         (vrmulhq_m_s8): Remove.
32087         (vrmulhq_m_s32): Remove.
32088         (vrmulhq_m_s16): Remove.
32089         (vrmulhq_m_u8): Remove.
32090         (vrmulhq_m_u32): Remove.
32091         (vrmulhq_m_u16): Remove.
32092         (vrmulhq_x_s8): Remove.
32093         (vrmulhq_x_s16): Remove.
32094         (vrmulhq_x_s32): Remove.
32095         (vrmulhq_x_u8): Remove.
32096         (vrmulhq_x_u16): Remove.
32097         (vrmulhq_x_u32): Remove.
32098         (__arm_vrmulhq_u8): Remove.
32099         (__arm_vrmulhq_s8): Remove.
32100         (__arm_vrmulhq_u16): Remove.
32101         (__arm_vrmulhq_s16): Remove.
32102         (__arm_vrmulhq_u32): Remove.
32103         (__arm_vrmulhq_s32): Remove.
32104         (__arm_vrmulhq_m_s8): Remove.
32105         (__arm_vrmulhq_m_s32): Remove.
32106         (__arm_vrmulhq_m_s16): Remove.
32107         (__arm_vrmulhq_m_u8): Remove.
32108         (__arm_vrmulhq_m_u32): Remove.
32109         (__arm_vrmulhq_m_u16): Remove.
32110         (__arm_vrmulhq_x_s8): Remove.
32111         (__arm_vrmulhq_x_s16): Remove.
32112         (__arm_vrmulhq_x_s32): Remove.
32113         (__arm_vrmulhq_x_u8): Remove.
32114         (__arm_vrmulhq_x_u16): Remove.
32115         (__arm_vrmulhq_x_u32): Remove.
32116         (__arm_vrmulhq): Remove.
32117         (__arm_vrmulhq_m): Remove.
32118         (__arm_vrmulhq_x): Remove.
32120 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32122         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
32123         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
32124         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
32125         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
32126         * config/arm/mve.md (mve_vabdq_<supf><mode>)
32127         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
32128         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
32129         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
32130         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
32131         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
32132         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
32133         ...
32134         (@mve_<mve_insn>q_<supf><mode>): ... this.
32135         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
32136         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
32137         gen_mve_vhaddq / gen_mve_vrhaddq.
32139 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32141         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
32142         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
32143         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
32144         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
32145         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
32146         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
32147         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
32148         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
32149         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
32150         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
32151         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
32152         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
32153         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
32155 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32157         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
32158         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
32159         vqsubq.
32160         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
32161         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
32162         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
32163         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
32164         (mve_vqsubq_n_<supf><mode>): Merge into ...
32165         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
32167 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32169         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
32170         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
32171         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
32172         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
32173         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
32174         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
32175         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
32176         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
32177         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
32178         (mve_vshlq_m_<supf><mode>): Merged into
32179         @mve_<mve_insn>q_m_<supf><mode>.
32180         (mve_vabdq_m_<supf><mode>): Likewise.
32181         (mve_vhaddq_m_<supf><mode>): Likewise.
32182         (mve_vhsubq_m_<supf><mode>): Likewise.
32183         (mve_vmaxq_m_<supf><mode>): Likewise.
32184         (mve_vminq_m_<supf><mode>): Likewise.
32185         (mve_vmulhq_m_<supf><mode>): Likewise.
32186         (mve_vqaddq_m_<supf><mode>): Likewise.
32187         (mve_vqrshlq_m_<supf><mode>): Likewise.
32188         (mve_vqshlq_m_<supf><mode>): Likewise.
32189         (mve_vqsubq_m_<supf><mode>): Likewise.
32190         (mve_vrhaddq_m_<supf><mode>): Likewise.
32191         (mve_vrmulhq_m_<supf><mode>): Likewise.
32192         (mve_vrshlq_m_<supf><mode>): Likewise.
32193         (mve_vqdmladhq_m_s<mode>): Likewise.
32194         (mve_vqdmladhxq_m_s<mode>): Likewise.
32195         (mve_vqdmlsdhq_m_s<mode>): Likewise.
32196         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
32197         (mve_vqdmulhq_m_s<mode>): Likewise.
32198         (mve_vqrdmladhq_m_s<mode>): Likewise.
32199         (mve_vqrdmladhxq_m_s<mode>): Likewise.
32200         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
32201         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
32202         (mve_vqrdmulhq_m_s<mode>): Likewise.
32204 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32206         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
32207         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
32208         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
32209         * config/arm/arm_mve.h (vcreateq_f16): Remove.
32210         (vcreateq_f32): Remove.
32211         (vcreateq_u8): Remove.
32212         (vcreateq_u16): Remove.
32213         (vcreateq_u32): Remove.
32214         (vcreateq_u64): Remove.
32215         (vcreateq_s8): Remove.
32216         (vcreateq_s16): Remove.
32217         (vcreateq_s32): Remove.
32218         (vcreateq_s64): Remove.
32219         (__arm_vcreateq_u8): Remove.
32220         (__arm_vcreateq_u16): Remove.
32221         (__arm_vcreateq_u32): Remove.
32222         (__arm_vcreateq_u64): Remove.
32223         (__arm_vcreateq_s8): Remove.
32224         (__arm_vcreateq_s16): Remove.
32225         (__arm_vcreateq_s32): Remove.
32226         (__arm_vcreateq_s64): Remove.
32227         (__arm_vcreateq_f16): Remove.
32228         (__arm_vcreateq_f32): Remove.
32230 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32232         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
32233         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
32234         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
32235         (@mve_<mve_insn>q_f<mode>): ... this.
32236         (mve_vcreateq_<supf><mode>): Rename into ...
32237         (@mve_<mve_insn>q_<supf><mode>): ... this.
32239 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32241         * config/arm/arm-mve-builtins-shapes.cc (create): New.
32242         * config/arm/arm-mve-builtins-shapes.h: (create): New.
32244 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32246         * config/arm/arm-mve-builtins-functions.h (class
32247         unspec_mve_function_exact_insn): New.
32249 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32251         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
32252         (vorrq): New.
32253         * config/arm/arm-mve-builtins-base.def (vorrq): New.
32254         * config/arm/arm-mve-builtins-base.h (vorrq): New.
32255         * config/arm/arm-mve-builtins.cc
32256         (function_instance::has_inactive_argument): Handle vorrq.
32257         * config/arm/arm_mve.h (vorrq): Remove.
32258         (vorrq_m_n): Remove.
32259         (vorrq_m): Remove.
32260         (vorrq_x): Remove.
32261         (vorrq_u8): Remove.
32262         (vorrq_s8): Remove.
32263         (vorrq_u16): Remove.
32264         (vorrq_s16): Remove.
32265         (vorrq_u32): Remove.
32266         (vorrq_s32): Remove.
32267         (vorrq_n_u16): Remove.
32268         (vorrq_f16): Remove.
32269         (vorrq_n_s16): Remove.
32270         (vorrq_n_u32): Remove.
32271         (vorrq_f32): Remove.
32272         (vorrq_n_s32): Remove.
32273         (vorrq_m_n_s16): Remove.
32274         (vorrq_m_n_u16): Remove.
32275         (vorrq_m_n_s32): Remove.
32276         (vorrq_m_n_u32): Remove.
32277         (vorrq_m_s8): Remove.
32278         (vorrq_m_s32): Remove.
32279         (vorrq_m_s16): Remove.
32280         (vorrq_m_u8): Remove.
32281         (vorrq_m_u32): Remove.
32282         (vorrq_m_u16): Remove.
32283         (vorrq_m_f32): Remove.
32284         (vorrq_m_f16): Remove.
32285         (vorrq_x_s8): Remove.
32286         (vorrq_x_s16): Remove.
32287         (vorrq_x_s32): Remove.
32288         (vorrq_x_u8): Remove.
32289         (vorrq_x_u16): Remove.
32290         (vorrq_x_u32): Remove.
32291         (vorrq_x_f16): Remove.
32292         (vorrq_x_f32): Remove.
32293         (__arm_vorrq_u8): Remove.
32294         (__arm_vorrq_s8): Remove.
32295         (__arm_vorrq_u16): Remove.
32296         (__arm_vorrq_s16): Remove.
32297         (__arm_vorrq_u32): Remove.
32298         (__arm_vorrq_s32): Remove.
32299         (__arm_vorrq_n_u16): Remove.
32300         (__arm_vorrq_n_s16): Remove.
32301         (__arm_vorrq_n_u32): Remove.
32302         (__arm_vorrq_n_s32): Remove.
32303         (__arm_vorrq_m_n_s16): Remove.
32304         (__arm_vorrq_m_n_u16): Remove.
32305         (__arm_vorrq_m_n_s32): Remove.
32306         (__arm_vorrq_m_n_u32): Remove.
32307         (__arm_vorrq_m_s8): Remove.
32308         (__arm_vorrq_m_s32): Remove.
32309         (__arm_vorrq_m_s16): Remove.
32310         (__arm_vorrq_m_u8): Remove.
32311         (__arm_vorrq_m_u32): Remove.
32312         (__arm_vorrq_m_u16): Remove.
32313         (__arm_vorrq_x_s8): Remove.
32314         (__arm_vorrq_x_s16): Remove.
32315         (__arm_vorrq_x_s32): Remove.
32316         (__arm_vorrq_x_u8): Remove.
32317         (__arm_vorrq_x_u16): Remove.
32318         (__arm_vorrq_x_u32): Remove.
32319         (__arm_vorrq_f16): Remove.
32320         (__arm_vorrq_f32): Remove.
32321         (__arm_vorrq_m_f32): Remove.
32322         (__arm_vorrq_m_f16): Remove.
32323         (__arm_vorrq_x_f16): Remove.
32324         (__arm_vorrq_x_f32): Remove.
32325         (__arm_vorrq): Remove.
32326         (__arm_vorrq_m_n): Remove.
32327         (__arm_vorrq_m): Remove.
32328         (__arm_vorrq_x): Remove.
32330 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32332         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
32333         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
32334         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
32335         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
32337 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32339         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
32340         (vandq,veorq): New.
32341         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
32342         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
32343         * config/arm/arm_mve.h (vandq): Remove.
32344         (vandq_m): Remove.
32345         (vandq_x): Remove.
32346         (vandq_u8): Remove.
32347         (vandq_s8): Remove.
32348         (vandq_u16): Remove.
32349         (vandq_s16): Remove.
32350         (vandq_u32): Remove.
32351         (vandq_s32): Remove.
32352         (vandq_f16): Remove.
32353         (vandq_f32): Remove.
32354         (vandq_m_s8): Remove.
32355         (vandq_m_s32): Remove.
32356         (vandq_m_s16): Remove.
32357         (vandq_m_u8): Remove.
32358         (vandq_m_u32): Remove.
32359         (vandq_m_u16): Remove.
32360         (vandq_m_f32): Remove.
32361         (vandq_m_f16): Remove.
32362         (vandq_x_s8): Remove.
32363         (vandq_x_s16): Remove.
32364         (vandq_x_s32): Remove.
32365         (vandq_x_u8): Remove.
32366         (vandq_x_u16): Remove.
32367         (vandq_x_u32): Remove.
32368         (vandq_x_f16): Remove.
32369         (vandq_x_f32): Remove.
32370         (__arm_vandq_u8): Remove.
32371         (__arm_vandq_s8): Remove.
32372         (__arm_vandq_u16): Remove.
32373         (__arm_vandq_s16): Remove.
32374         (__arm_vandq_u32): Remove.
32375         (__arm_vandq_s32): Remove.
32376         (__arm_vandq_m_s8): Remove.
32377         (__arm_vandq_m_s32): Remove.
32378         (__arm_vandq_m_s16): Remove.
32379         (__arm_vandq_m_u8): Remove.
32380         (__arm_vandq_m_u32): Remove.
32381         (__arm_vandq_m_u16): Remove.
32382         (__arm_vandq_x_s8): Remove.
32383         (__arm_vandq_x_s16): Remove.
32384         (__arm_vandq_x_s32): Remove.
32385         (__arm_vandq_x_u8): Remove.
32386         (__arm_vandq_x_u16): Remove.
32387         (__arm_vandq_x_u32): Remove.
32388         (__arm_vandq_f16): Remove.
32389         (__arm_vandq_f32): Remove.
32390         (__arm_vandq_m_f32): Remove.
32391         (__arm_vandq_m_f16): Remove.
32392         (__arm_vandq_x_f16): Remove.
32393         (__arm_vandq_x_f32): Remove.
32394         (__arm_vandq): Remove.
32395         (__arm_vandq_m): Remove.
32396         (__arm_vandq_x): Remove.
32397         (veorq_m): Remove.
32398         (veorq_x): Remove.
32399         (veorq_u8): Remove.
32400         (veorq_s8): Remove.
32401         (veorq_u16): Remove.
32402         (veorq_s16): Remove.
32403         (veorq_u32): Remove.
32404         (veorq_s32): Remove.
32405         (veorq_f16): Remove.
32406         (veorq_f32): Remove.
32407         (veorq_m_s8): Remove.
32408         (veorq_m_s32): Remove.
32409         (veorq_m_s16): Remove.
32410         (veorq_m_u8): Remove.
32411         (veorq_m_u32): Remove.
32412         (veorq_m_u16): Remove.
32413         (veorq_m_f32): Remove.
32414         (veorq_m_f16): Remove.
32415         (veorq_x_s8): Remove.
32416         (veorq_x_s16): Remove.
32417         (veorq_x_s32): Remove.
32418         (veorq_x_u8): Remove.
32419         (veorq_x_u16): Remove.
32420         (veorq_x_u32): Remove.
32421         (veorq_x_f16): Remove.
32422         (veorq_x_f32): Remove.
32423         (__arm_veorq_u8): Remove.
32424         (__arm_veorq_s8): Remove.
32425         (__arm_veorq_u16): Remove.
32426         (__arm_veorq_s16): Remove.
32427         (__arm_veorq_u32): Remove.
32428         (__arm_veorq_s32): Remove.
32429         (__arm_veorq_m_s8): Remove.
32430         (__arm_veorq_m_s32): Remove.
32431         (__arm_veorq_m_s16): Remove.
32432         (__arm_veorq_m_u8): Remove.
32433         (__arm_veorq_m_u32): Remove.
32434         (__arm_veorq_m_u16): Remove.
32435         (__arm_veorq_x_s8): Remove.
32436         (__arm_veorq_x_s16): Remove.
32437         (__arm_veorq_x_s32): Remove.
32438         (__arm_veorq_x_u8): Remove.
32439         (__arm_veorq_x_u16): Remove.
32440         (__arm_veorq_x_u32): Remove.
32441         (__arm_veorq_f16): Remove.
32442         (__arm_veorq_f32): Remove.
32443         (__arm_veorq_m_f32): Remove.
32444         (__arm_veorq_m_f16): Remove.
32445         (__arm_veorq_x_f16): Remove.
32446         (__arm_veorq_x_f32): Remove.
32447         (__arm_veorq): Remove.
32448         (__arm_veorq_m): Remove.
32449         (__arm_veorq_x): Remove.
32451 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32453         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
32454         (MVE_FP_M_BINARY_LOGIC): New.
32455         (MVE_INT_M_N_BINARY_LOGIC): New.
32456         (MVE_INT_N_BINARY_LOGIC): New.
32457         (mve_insn): Add vand, veor, vorr, vbic.
32458         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
32459         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
32460         (mve_vbicq_m_<supf><mode>): Merge into ...
32461         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
32462         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
32463         (mve_vbicq_m_f<mode>): Merge into ...
32464         (@mve_<mve_insn>q_m_f<mode>): ... this.
32465         (mve_vorrq_n_<supf><mode>)
32466         (mve_vbicq_n_<supf><mode>): Merge into ...
32467         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
32468         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
32469         into ...
32470         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
32472 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32474         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
32475         * config/arm/arm-mve-builtins-shapes.h (binary): New.
32477 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32479         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
32480         New.
32481         (vaddq, vmulq, vsubq): New.
32482         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
32483         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
32484         * config/arm/arm_mve.h (vaddq): Remove.
32485         (vaddq_m): Remove.
32486         (vaddq_x): Remove.
32487         (vaddq_n_u8): Remove.
32488         (vaddq_n_s8): Remove.
32489         (vaddq_n_u16): Remove.
32490         (vaddq_n_s16): Remove.
32491         (vaddq_n_u32): Remove.
32492         (vaddq_n_s32): Remove.
32493         (vaddq_n_f16): Remove.
32494         (vaddq_n_f32): Remove.
32495         (vaddq_m_n_s8): Remove.
32496         (vaddq_m_n_s32): Remove.
32497         (vaddq_m_n_s16): Remove.
32498         (vaddq_m_n_u8): Remove.
32499         (vaddq_m_n_u32): Remove.
32500         (vaddq_m_n_u16): Remove.
32501         (vaddq_m_s8): Remove.
32502         (vaddq_m_s32): Remove.
32503         (vaddq_m_s16): Remove.
32504         (vaddq_m_u8): Remove.
32505         (vaddq_m_u32): Remove.
32506         (vaddq_m_u16): Remove.
32507         (vaddq_m_f32): Remove.
32508         (vaddq_m_f16): Remove.
32509         (vaddq_m_n_f32): Remove.
32510         (vaddq_m_n_f16): Remove.
32511         (vaddq_s8): Remove.
32512         (vaddq_s16): Remove.
32513         (vaddq_s32): Remove.
32514         (vaddq_u8): Remove.
32515         (vaddq_u16): Remove.
32516         (vaddq_u32): Remove.
32517         (vaddq_f16): Remove.
32518         (vaddq_f32): Remove.
32519         (vaddq_x_s8): Remove.
32520         (vaddq_x_s16): Remove.
32521         (vaddq_x_s32): Remove.
32522         (vaddq_x_n_s8): Remove.
32523         (vaddq_x_n_s16): Remove.
32524         (vaddq_x_n_s32): Remove.
32525         (vaddq_x_u8): Remove.
32526         (vaddq_x_u16): Remove.
32527         (vaddq_x_u32): Remove.
32528         (vaddq_x_n_u8): Remove.
32529         (vaddq_x_n_u16): Remove.
32530         (vaddq_x_n_u32): Remove.
32531         (vaddq_x_f16): Remove.
32532         (vaddq_x_f32): Remove.
32533         (vaddq_x_n_f16): Remove.
32534         (vaddq_x_n_f32): Remove.
32535         (__arm_vaddq_n_u8): Remove.
32536         (__arm_vaddq_n_s8): Remove.
32537         (__arm_vaddq_n_u16): Remove.
32538         (__arm_vaddq_n_s16): Remove.
32539         (__arm_vaddq_n_u32): Remove.
32540         (__arm_vaddq_n_s32): Remove.
32541         (__arm_vaddq_m_n_s8): Remove.
32542         (__arm_vaddq_m_n_s32): Remove.
32543         (__arm_vaddq_m_n_s16): Remove.
32544         (__arm_vaddq_m_n_u8): Remove.
32545         (__arm_vaddq_m_n_u32): Remove.
32546         (__arm_vaddq_m_n_u16): Remove.
32547         (__arm_vaddq_m_s8): Remove.
32548         (__arm_vaddq_m_s32): Remove.
32549         (__arm_vaddq_m_s16): Remove.
32550         (__arm_vaddq_m_u8): Remove.
32551         (__arm_vaddq_m_u32): Remove.
32552         (__arm_vaddq_m_u16): Remove.
32553         (__arm_vaddq_s8): Remove.
32554         (__arm_vaddq_s16): Remove.
32555         (__arm_vaddq_s32): Remove.
32556         (__arm_vaddq_u8): Remove.
32557         (__arm_vaddq_u16): Remove.
32558         (__arm_vaddq_u32): Remove.
32559         (__arm_vaddq_x_s8): Remove.
32560         (__arm_vaddq_x_s16): Remove.
32561         (__arm_vaddq_x_s32): Remove.
32562         (__arm_vaddq_x_n_s8): Remove.
32563         (__arm_vaddq_x_n_s16): Remove.
32564         (__arm_vaddq_x_n_s32): Remove.
32565         (__arm_vaddq_x_u8): Remove.
32566         (__arm_vaddq_x_u16): Remove.
32567         (__arm_vaddq_x_u32): Remove.
32568         (__arm_vaddq_x_n_u8): Remove.
32569         (__arm_vaddq_x_n_u16): Remove.
32570         (__arm_vaddq_x_n_u32): Remove.
32571         (__arm_vaddq_n_f16): Remove.
32572         (__arm_vaddq_n_f32): Remove.
32573         (__arm_vaddq_m_f32): Remove.
32574         (__arm_vaddq_m_f16): Remove.
32575         (__arm_vaddq_m_n_f32): Remove.
32576         (__arm_vaddq_m_n_f16): Remove.
32577         (__arm_vaddq_f16): Remove.
32578         (__arm_vaddq_f32): Remove.
32579         (__arm_vaddq_x_f16): Remove.
32580         (__arm_vaddq_x_f32): Remove.
32581         (__arm_vaddq_x_n_f16): Remove.
32582         (__arm_vaddq_x_n_f32): Remove.
32583         (__arm_vaddq): Remove.
32584         (__arm_vaddq_m): Remove.
32585         (__arm_vaddq_x): Remove.
32586         (vmulq): Remove.
32587         (vmulq_m): Remove.
32588         (vmulq_x): Remove.
32589         (vmulq_u8): Remove.
32590         (vmulq_n_u8): Remove.
32591         (vmulq_s8): Remove.
32592         (vmulq_n_s8): Remove.
32593         (vmulq_u16): Remove.
32594         (vmulq_n_u16): Remove.
32595         (vmulq_s16): Remove.
32596         (vmulq_n_s16): Remove.
32597         (vmulq_u32): Remove.
32598         (vmulq_n_u32): Remove.
32599         (vmulq_s32): Remove.
32600         (vmulq_n_s32): Remove.
32601         (vmulq_n_f16): Remove.
32602         (vmulq_f16): Remove.
32603         (vmulq_n_f32): Remove.
32604         (vmulq_f32): Remove.
32605         (vmulq_m_n_s8): Remove.
32606         (vmulq_m_n_s32): Remove.
32607         (vmulq_m_n_s16): Remove.
32608         (vmulq_m_n_u8): Remove.
32609         (vmulq_m_n_u32): Remove.
32610         (vmulq_m_n_u16): Remove.
32611         (vmulq_m_s8): Remove.
32612         (vmulq_m_s32): Remove.
32613         (vmulq_m_s16): Remove.
32614         (vmulq_m_u8): Remove.
32615         (vmulq_m_u32): Remove.
32616         (vmulq_m_u16): Remove.
32617         (vmulq_m_f32): Remove.
32618         (vmulq_m_f16): Remove.
32619         (vmulq_m_n_f32): Remove.
32620         (vmulq_m_n_f16): Remove.
32621         (vmulq_x_s8): Remove.
32622         (vmulq_x_s16): Remove.
32623         (vmulq_x_s32): Remove.
32624         (vmulq_x_n_s8): Remove.
32625         (vmulq_x_n_s16): Remove.
32626         (vmulq_x_n_s32): Remove.
32627         (vmulq_x_u8): Remove.
32628         (vmulq_x_u16): Remove.
32629         (vmulq_x_u32): Remove.
32630         (vmulq_x_n_u8): Remove.
32631         (vmulq_x_n_u16): Remove.
32632         (vmulq_x_n_u32): Remove.
32633         (vmulq_x_f16): Remove.
32634         (vmulq_x_f32): Remove.
32635         (vmulq_x_n_f16): Remove.
32636         (vmulq_x_n_f32): Remove.
32637         (__arm_vmulq_u8): Remove.
32638         (__arm_vmulq_n_u8): Remove.
32639         (__arm_vmulq_s8): Remove.
32640         (__arm_vmulq_n_s8): Remove.
32641         (__arm_vmulq_u16): Remove.
32642         (__arm_vmulq_n_u16): Remove.
32643         (__arm_vmulq_s16): Remove.
32644         (__arm_vmulq_n_s16): Remove.
32645         (__arm_vmulq_u32): Remove.
32646         (__arm_vmulq_n_u32): Remove.
32647         (__arm_vmulq_s32): Remove.
32648         (__arm_vmulq_n_s32): Remove.
32649         (__arm_vmulq_m_n_s8): Remove.
32650         (__arm_vmulq_m_n_s32): Remove.
32651         (__arm_vmulq_m_n_s16): Remove.
32652         (__arm_vmulq_m_n_u8): Remove.
32653         (__arm_vmulq_m_n_u32): Remove.
32654         (__arm_vmulq_m_n_u16): Remove.
32655         (__arm_vmulq_m_s8): Remove.
32656         (__arm_vmulq_m_s32): Remove.
32657         (__arm_vmulq_m_s16): Remove.
32658         (__arm_vmulq_m_u8): Remove.
32659         (__arm_vmulq_m_u32): Remove.
32660         (__arm_vmulq_m_u16): Remove.
32661         (__arm_vmulq_x_s8): Remove.
32662         (__arm_vmulq_x_s16): Remove.
32663         (__arm_vmulq_x_s32): Remove.
32664         (__arm_vmulq_x_n_s8): Remove.
32665         (__arm_vmulq_x_n_s16): Remove.
32666         (__arm_vmulq_x_n_s32): Remove.
32667         (__arm_vmulq_x_u8): Remove.
32668         (__arm_vmulq_x_u16): Remove.
32669         (__arm_vmulq_x_u32): Remove.
32670         (__arm_vmulq_x_n_u8): Remove.
32671         (__arm_vmulq_x_n_u16): Remove.
32672         (__arm_vmulq_x_n_u32): Remove.
32673         (__arm_vmulq_n_f16): Remove.
32674         (__arm_vmulq_f16): Remove.
32675         (__arm_vmulq_n_f32): Remove.
32676         (__arm_vmulq_f32): Remove.
32677         (__arm_vmulq_m_f32): Remove.
32678         (__arm_vmulq_m_f16): Remove.
32679         (__arm_vmulq_m_n_f32): Remove.
32680         (__arm_vmulq_m_n_f16): Remove.
32681         (__arm_vmulq_x_f16): Remove.
32682         (__arm_vmulq_x_f32): Remove.
32683         (__arm_vmulq_x_n_f16): Remove.
32684         (__arm_vmulq_x_n_f32): Remove.
32685         (__arm_vmulq): Remove.
32686         (__arm_vmulq_m): Remove.
32687         (__arm_vmulq_x): Remove.
32688         (vsubq): Remove.
32689         (vsubq_m): Remove.
32690         (vsubq_x): Remove.
32691         (vsubq_n_f16): Remove.
32692         (vsubq_n_f32): Remove.
32693         (vsubq_u8): Remove.
32694         (vsubq_n_u8): Remove.
32695         (vsubq_s8): Remove.
32696         (vsubq_n_s8): Remove.
32697         (vsubq_u16): Remove.
32698         (vsubq_n_u16): Remove.
32699         (vsubq_s16): Remove.
32700         (vsubq_n_s16): Remove.
32701         (vsubq_u32): Remove.
32702         (vsubq_n_u32): Remove.
32703         (vsubq_s32): Remove.
32704         (vsubq_n_s32): Remove.
32705         (vsubq_f16): Remove.
32706         (vsubq_f32): Remove.
32707         (vsubq_m_s8): Remove.
32708         (vsubq_m_u8): Remove.
32709         (vsubq_m_s16): Remove.
32710         (vsubq_m_u16): Remove.
32711         (vsubq_m_s32): Remove.
32712         (vsubq_m_u32): Remove.
32713         (vsubq_m_n_s8): Remove.
32714         (vsubq_m_n_s32): Remove.
32715         (vsubq_m_n_s16): Remove.
32716         (vsubq_m_n_u8): Remove.
32717         (vsubq_m_n_u32): Remove.
32718         (vsubq_m_n_u16): Remove.
32719         (vsubq_m_f32): Remove.
32720         (vsubq_m_f16): Remove.
32721         (vsubq_m_n_f32): Remove.
32722         (vsubq_m_n_f16): Remove.
32723         (vsubq_x_s8): Remove.
32724         (vsubq_x_s16): Remove.
32725         (vsubq_x_s32): Remove.
32726         (vsubq_x_n_s8): Remove.
32727         (vsubq_x_n_s16): Remove.
32728         (vsubq_x_n_s32): Remove.
32729         (vsubq_x_u8): Remove.
32730         (vsubq_x_u16): Remove.
32731         (vsubq_x_u32): Remove.
32732         (vsubq_x_n_u8): Remove.
32733         (vsubq_x_n_u16): Remove.
32734         (vsubq_x_n_u32): Remove.
32735         (vsubq_x_f16): Remove.
32736         (vsubq_x_f32): Remove.
32737         (vsubq_x_n_f16): Remove.
32738         (vsubq_x_n_f32): Remove.
32739         (__arm_vsubq_u8): Remove.
32740         (__arm_vsubq_n_u8): Remove.
32741         (__arm_vsubq_s8): Remove.
32742         (__arm_vsubq_n_s8): Remove.
32743         (__arm_vsubq_u16): Remove.
32744         (__arm_vsubq_n_u16): Remove.
32745         (__arm_vsubq_s16): Remove.
32746         (__arm_vsubq_n_s16): Remove.
32747         (__arm_vsubq_u32): Remove.
32748         (__arm_vsubq_n_u32): Remove.
32749         (__arm_vsubq_s32): Remove.
32750         (__arm_vsubq_n_s32): Remove.
32751         (__arm_vsubq_m_s8): Remove.
32752         (__arm_vsubq_m_u8): Remove.
32753         (__arm_vsubq_m_s16): Remove.
32754         (__arm_vsubq_m_u16): Remove.
32755         (__arm_vsubq_m_s32): Remove.
32756         (__arm_vsubq_m_u32): Remove.
32757         (__arm_vsubq_m_n_s8): Remove.
32758         (__arm_vsubq_m_n_s32): Remove.
32759         (__arm_vsubq_m_n_s16): Remove.
32760         (__arm_vsubq_m_n_u8): Remove.
32761         (__arm_vsubq_m_n_u32): Remove.
32762         (__arm_vsubq_m_n_u16): Remove.
32763         (__arm_vsubq_x_s8): Remove.
32764         (__arm_vsubq_x_s16): Remove.
32765         (__arm_vsubq_x_s32): Remove.
32766         (__arm_vsubq_x_n_s8): Remove.
32767         (__arm_vsubq_x_n_s16): Remove.
32768         (__arm_vsubq_x_n_s32): Remove.
32769         (__arm_vsubq_x_u8): Remove.
32770         (__arm_vsubq_x_u16): Remove.
32771         (__arm_vsubq_x_u32): Remove.
32772         (__arm_vsubq_x_n_u8): Remove.
32773         (__arm_vsubq_x_n_u16): Remove.
32774         (__arm_vsubq_x_n_u32): Remove.
32775         (__arm_vsubq_n_f16): Remove.
32776         (__arm_vsubq_n_f32): Remove.
32777         (__arm_vsubq_f16): Remove.
32778         (__arm_vsubq_f32): Remove.
32779         (__arm_vsubq_m_f32): Remove.
32780         (__arm_vsubq_m_f16): Remove.
32781         (__arm_vsubq_m_n_f32): Remove.
32782         (__arm_vsubq_m_n_f16): Remove.
32783         (__arm_vsubq_x_f16): Remove.
32784         (__arm_vsubq_x_f32): Remove.
32785         (__arm_vsubq_x_n_f16): Remove.
32786         (__arm_vsubq_x_n_f32): Remove.
32787         (__arm_vsubq): Remove.
32788         (__arm_vsubq_m): Remove.
32789         (__arm_vsubq_x): Remove.
32790         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
32791         Remove.
32792         (vmulq_u, vmulq_s, vmulq_f): Remove.
32793         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
32794         (mve_vmulq_<supf><mode>): Remove.
32796 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32798         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
32799         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
32800         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
32801         iterators.
32802         * config/arm/mve.md
32803         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
32804         Factorize into ...
32805         (@mve_<mve_insn>q_n_f<mode>): ... this.
32806         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
32807         (mve_vsubq_n_<supf><mode>): Factorize into ...
32808         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
32809         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
32810         into ...
32811         (mve_<mve_addsubmul>q<mode>): ... this.
32812         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
32813         Factorize into ...
32814         (mve_<mve_addsubmul>q_f<mode>): ... this.
32815         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
32816         (mve_vsubq_m_<supf><mode>): Factorize into ...
32817         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
32818         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
32819         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
32820         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
32821         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
32822         Factorize into ...
32823         (@mve_<mve_insn>q_m_f<mode>): ... this.
32824         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
32825         (mve_vsubq_m_n_f<mode>): Factorize into ...
32826         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
32828 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32830         * config/arm/arm-mve-builtins-functions.h (class
32831         unspec_based_mve_function_base): New.
32832         (class unspec_based_mve_function_exact_insn): New.
32834 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
32836         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
32837         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
32839 2023-05-03  Murray Steele  <murray.steele@arm.com>
32840             Christophe Lyon  <christophe.lyon@arm.com>
32842         * config/arm/arm-mve-builtins-base.cc (class
32843         vuninitializedq_impl): New.
32844         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
32845         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
32846         declaration.
32847         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
32848         * config/arm/arm-mve-builtins-shapes.h (inherent): New
32849         declaration.
32850         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
32851         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
32852         (__arm_vuninitializedq_u8): Remove.
32853         (__arm_vuninitializedq_u16): Remove.
32854         (__arm_vuninitializedq_u32): Remove.
32855         (__arm_vuninitializedq_u64): Remove.
32856         (__arm_vuninitializedq_s8): Remove.
32857         (__arm_vuninitializedq_s16): Remove.
32858         (__arm_vuninitializedq_s32): Remove.
32859         (__arm_vuninitializedq_s64): Remove.
32860         (__arm_vuninitializedq_f16): Remove.
32861         (__arm_vuninitializedq_f32): Remove.
32863 2023-05-03  Murray Steele  <murray.steele@arm.com>
32864             Christophe Lyon  <christophe.lyon@arm.com>
32866         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
32867         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
32868         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
32869         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
32870         (parse_type): Likewise.
32871         (parse_signature): Likewise.
32872         (build_one): Likewise.
32873         (build_all): Likewise.
32874         (overloaded_base): New struct.
32875         (unary_convert_def): Likewise.
32876         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
32877         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
32878         macro.
32879         (TYPES_reinterpret_unsigned1): Likewise.
32880         (TYPES_reinterpret_integer): Likewise.
32881         (TYPES_reinterpret_integer1): Likewise.
32882         (TYPES_reinterpret_float1): Likewise.
32883         (TYPES_reinterpret_float): Likewise.
32884         (reinterpret_integer): New.
32885         (reinterpret_float): New.
32886         (handle_arm_mve_h): Register builtins.
32887         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
32888         (vreinterpretq_s32): Likewise.
32889         (vreinterpretq_s64): Likewise.
32890         (vreinterpretq_s8): Likewise.
32891         (vreinterpretq_u16): Likewise.
32892         (vreinterpretq_u32): Likewise.
32893         (vreinterpretq_u64): Likewise.
32894         (vreinterpretq_u8): Likewise.
32895         (vreinterpretq_f16): Likewise.
32896         (vreinterpretq_f32): Likewise.
32897         (vreinterpretq_s16_s32): Likewise.
32898         (vreinterpretq_s16_s64): Likewise.
32899         (vreinterpretq_s16_s8): Likewise.
32900         (vreinterpretq_s16_u16): Likewise.
32901         (vreinterpretq_s16_u32): Likewise.
32902         (vreinterpretq_s16_u64): Likewise.
32903         (vreinterpretq_s16_u8): Likewise.
32904         (vreinterpretq_s32_s16): Likewise.
32905         (vreinterpretq_s32_s64): Likewise.
32906         (vreinterpretq_s32_s8): Likewise.
32907         (vreinterpretq_s32_u16): Likewise.
32908         (vreinterpretq_s32_u32): Likewise.
32909         (vreinterpretq_s32_u64): Likewise.
32910         (vreinterpretq_s32_u8): Likewise.
32911         (vreinterpretq_s64_s16): Likewise.
32912         (vreinterpretq_s64_s32): Likewise.
32913         (vreinterpretq_s64_s8): Likewise.
32914         (vreinterpretq_s64_u16): Likewise.
32915         (vreinterpretq_s64_u32): Likewise.
32916         (vreinterpretq_s64_u64): Likewise.
32917         (vreinterpretq_s64_u8): Likewise.
32918         (vreinterpretq_s8_s16): Likewise.
32919         (vreinterpretq_s8_s32): Likewise.
32920         (vreinterpretq_s8_s64): Likewise.
32921         (vreinterpretq_s8_u16): Likewise.
32922         (vreinterpretq_s8_u32): Likewise.
32923         (vreinterpretq_s8_u64): Likewise.
32924         (vreinterpretq_s8_u8): Likewise.
32925         (vreinterpretq_u16_s16): Likewise.
32926         (vreinterpretq_u16_s32): Likewise.
32927         (vreinterpretq_u16_s64): Likewise.
32928         (vreinterpretq_u16_s8): Likewise.
32929         (vreinterpretq_u16_u32): Likewise.
32930         (vreinterpretq_u16_u64): Likewise.
32931         (vreinterpretq_u16_u8): Likewise.
32932         (vreinterpretq_u32_s16): Likewise.
32933         (vreinterpretq_u32_s32): Likewise.
32934         (vreinterpretq_u32_s64): Likewise.
32935         (vreinterpretq_u32_s8): Likewise.
32936         (vreinterpretq_u32_u16): Likewise.
32937         (vreinterpretq_u32_u64): Likewise.
32938         (vreinterpretq_u32_u8): Likewise.
32939         (vreinterpretq_u64_s16): Likewise.
32940         (vreinterpretq_u64_s32): Likewise.
32941         (vreinterpretq_u64_s64): Likewise.
32942         (vreinterpretq_u64_s8): Likewise.
32943         (vreinterpretq_u64_u16): Likewise.
32944         (vreinterpretq_u64_u32): Likewise.
32945         (vreinterpretq_u64_u8): Likewise.
32946         (vreinterpretq_u8_s16): Likewise.
32947         (vreinterpretq_u8_s32): Likewise.
32948         (vreinterpretq_u8_s64): Likewise.
32949         (vreinterpretq_u8_s8): Likewise.
32950         (vreinterpretq_u8_u16): Likewise.
32951         (vreinterpretq_u8_u32): Likewise.
32952         (vreinterpretq_u8_u64): Likewise.
32953         (vreinterpretq_s32_f16): Likewise.
32954         (vreinterpretq_s32_f32): Likewise.
32955         (vreinterpretq_u16_f16): Likewise.
32956         (vreinterpretq_u16_f32): Likewise.
32957         (vreinterpretq_u32_f16): Likewise.
32958         (vreinterpretq_u32_f32): Likewise.
32959         (vreinterpretq_u64_f16): Likewise.
32960         (vreinterpretq_u64_f32): Likewise.
32961         (vreinterpretq_u8_f16): Likewise.
32962         (vreinterpretq_u8_f32): Likewise.
32963         (vreinterpretq_f16_f32): Likewise.
32964         (vreinterpretq_f16_s16): Likewise.
32965         (vreinterpretq_f16_s32): Likewise.
32966         (vreinterpretq_f16_s64): Likewise.
32967         (vreinterpretq_f16_s8): Likewise.
32968         (vreinterpretq_f16_u16): Likewise.
32969         (vreinterpretq_f16_u32): Likewise.
32970         (vreinterpretq_f16_u64): Likewise.
32971         (vreinterpretq_f16_u8): Likewise.
32972         (vreinterpretq_f32_f16): Likewise.
32973         (vreinterpretq_f32_s16): Likewise.
32974         (vreinterpretq_f32_s32): Likewise.
32975         (vreinterpretq_f32_s64): Likewise.
32976         (vreinterpretq_f32_s8): Likewise.
32977         (vreinterpretq_f32_u16): Likewise.
32978         (vreinterpretq_f32_u32): Likewise.
32979         (vreinterpretq_f32_u64): Likewise.
32980         (vreinterpretq_f32_u8): Likewise.
32981         (vreinterpretq_s16_f16): Likewise.
32982         (vreinterpretq_s16_f32): Likewise.
32983         (vreinterpretq_s64_f16): Likewise.
32984         (vreinterpretq_s64_f32): Likewise.
32985         (vreinterpretq_s8_f16): Likewise.
32986         (vreinterpretq_s8_f32): Likewise.
32987         (__arm_vreinterpretq_f16): Likewise.
32988         (__arm_vreinterpretq_f32): Likewise.
32989         (__arm_vreinterpretq_s16): Likewise.
32990         (__arm_vreinterpretq_s32): Likewise.
32991         (__arm_vreinterpretq_s64): Likewise.
32992         (__arm_vreinterpretq_s8): Likewise.
32993         (__arm_vreinterpretq_u16): Likewise.
32994         (__arm_vreinterpretq_u32): Likewise.
32995         (__arm_vreinterpretq_u64): Likewise.
32996         (__arm_vreinterpretq_u8): Likewise.
32997         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
32998         (__arm_vreinterpretq_s16_s64): Likewise.
32999         (__arm_vreinterpretq_s16_s8): Likewise.
33000         (__arm_vreinterpretq_s16_u16): Likewise.
33001         (__arm_vreinterpretq_s16_u32): Likewise.
33002         (__arm_vreinterpretq_s16_u64): Likewise.
33003         (__arm_vreinterpretq_s16_u8): Likewise.
33004         (__arm_vreinterpretq_s32_s16): Likewise.
33005         (__arm_vreinterpretq_s32_s64): Likewise.
33006         (__arm_vreinterpretq_s32_s8): Likewise.
33007         (__arm_vreinterpretq_s32_u16): Likewise.
33008         (__arm_vreinterpretq_s32_u32): Likewise.
33009         (__arm_vreinterpretq_s32_u64): Likewise.
33010         (__arm_vreinterpretq_s32_u8): Likewise.
33011         (__arm_vreinterpretq_s64_s16): Likewise.
33012         (__arm_vreinterpretq_s64_s32): Likewise.
33013         (__arm_vreinterpretq_s64_s8): Likewise.
33014         (__arm_vreinterpretq_s64_u16): Likewise.
33015         (__arm_vreinterpretq_s64_u32): Likewise.
33016         (__arm_vreinterpretq_s64_u64): Likewise.
33017         (__arm_vreinterpretq_s64_u8): Likewise.
33018         (__arm_vreinterpretq_s8_s16): Likewise.
33019         (__arm_vreinterpretq_s8_s32): Likewise.
33020         (__arm_vreinterpretq_s8_s64): Likewise.
33021         (__arm_vreinterpretq_s8_u16): Likewise.
33022         (__arm_vreinterpretq_s8_u32): Likewise.
33023         (__arm_vreinterpretq_s8_u64): Likewise.
33024         (__arm_vreinterpretq_s8_u8): Likewise.
33025         (__arm_vreinterpretq_u16_s16): Likewise.
33026         (__arm_vreinterpretq_u16_s32): Likewise.
33027         (__arm_vreinterpretq_u16_s64): Likewise.
33028         (__arm_vreinterpretq_u16_s8): Likewise.
33029         (__arm_vreinterpretq_u16_u32): Likewise.
33030         (__arm_vreinterpretq_u16_u64): Likewise.
33031         (__arm_vreinterpretq_u16_u8): Likewise.
33032         (__arm_vreinterpretq_u32_s16): Likewise.
33033         (__arm_vreinterpretq_u32_s32): Likewise.
33034         (__arm_vreinterpretq_u32_s64): Likewise.
33035         (__arm_vreinterpretq_u32_s8): Likewise.
33036         (__arm_vreinterpretq_u32_u16): Likewise.
33037         (__arm_vreinterpretq_u32_u64): Likewise.
33038         (__arm_vreinterpretq_u32_u8): Likewise.
33039         (__arm_vreinterpretq_u64_s16): Likewise.
33040         (__arm_vreinterpretq_u64_s32): Likewise.
33041         (__arm_vreinterpretq_u64_s64): Likewise.
33042         (__arm_vreinterpretq_u64_s8): Likewise.
33043         (__arm_vreinterpretq_u64_u16): Likewise.
33044         (__arm_vreinterpretq_u64_u32): Likewise.
33045         (__arm_vreinterpretq_u64_u8): Likewise.
33046         (__arm_vreinterpretq_u8_s16): Likewise.
33047         (__arm_vreinterpretq_u8_s32): Likewise.
33048         (__arm_vreinterpretq_u8_s64): Likewise.
33049         (__arm_vreinterpretq_u8_s8): Likewise.
33050         (__arm_vreinterpretq_u8_u16): Likewise.
33051         (__arm_vreinterpretq_u8_u32): Likewise.
33052         (__arm_vreinterpretq_u8_u64): Likewise.
33053         (__arm_vreinterpretq_s32_f16): Likewise.
33054         (__arm_vreinterpretq_s32_f32): Likewise.
33055         (__arm_vreinterpretq_s16_f16): Likewise.
33056         (__arm_vreinterpretq_s16_f32): Likewise.
33057         (__arm_vreinterpretq_s64_f16): Likewise.
33058         (__arm_vreinterpretq_s64_f32): Likewise.
33059         (__arm_vreinterpretq_s8_f16): Likewise.
33060         (__arm_vreinterpretq_s8_f32): Likewise.
33061         (__arm_vreinterpretq_u16_f16): Likewise.
33062         (__arm_vreinterpretq_u16_f32): Likewise.
33063         (__arm_vreinterpretq_u32_f16): Likewise.
33064         (__arm_vreinterpretq_u32_f32): Likewise.
33065         (__arm_vreinterpretq_u64_f16): Likewise.
33066         (__arm_vreinterpretq_u64_f32): Likewise.
33067         (__arm_vreinterpretq_u8_f16): Likewise.
33068         (__arm_vreinterpretq_u8_f32): Likewise.
33069         (__arm_vreinterpretq_f16_f32): Likewise.
33070         (__arm_vreinterpretq_f16_s16): Likewise.
33071         (__arm_vreinterpretq_f16_s32): Likewise.
33072         (__arm_vreinterpretq_f16_s64): Likewise.
33073         (__arm_vreinterpretq_f16_s8): Likewise.
33074         (__arm_vreinterpretq_f16_u16): Likewise.
33075         (__arm_vreinterpretq_f16_u32): Likewise.
33076         (__arm_vreinterpretq_f16_u64): Likewise.
33077         (__arm_vreinterpretq_f16_u8): Likewise.
33078         (__arm_vreinterpretq_f32_f16): Likewise.
33079         (__arm_vreinterpretq_f32_s16): Likewise.
33080         (__arm_vreinterpretq_f32_s32): Likewise.
33081         (__arm_vreinterpretq_f32_s64): Likewise.
33082         (__arm_vreinterpretq_f32_s8): Likewise.
33083         (__arm_vreinterpretq_f32_u16): Likewise.
33084         (__arm_vreinterpretq_f32_u32): Likewise.
33085         (__arm_vreinterpretq_f32_u64): Likewise.
33086         (__arm_vreinterpretq_f32_u8): Likewise.
33087         (__arm_vreinterpretq_s16): Likewise.
33088         (__arm_vreinterpretq_s32): Likewise.
33089         (__arm_vreinterpretq_s64): Likewise.
33090         (__arm_vreinterpretq_s8): Likewise.
33091         (__arm_vreinterpretq_u16): Likewise.
33092         (__arm_vreinterpretq_u32): Likewise.
33093         (__arm_vreinterpretq_u64): Likewise.
33094         (__arm_vreinterpretq_u8): Likewise.
33095         (__arm_vreinterpretq_f16): Likewise.
33096         (__arm_vreinterpretq_f32): Likewise.
33097         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
33098         * config/arm/unspecs.md: (REINTERPRET): New unspec.
33100 2023-05-03  Murray Steele  <murray.steele@arm.com>
33101             Christophe Lyon  <christophe.lyon@arm.com>
33102             Christophe Lyon   <christophe.lyon@arm.com
33104         * config.gcc: Add arm-mve-builtins-base.o and
33105         arm-mve-builtins-shapes.o to extra_objs.
33106         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
33107         numberspace.
33108         (arm_expand_builtin): Likewise
33109         (arm_check_builtin_call): Likewise
33110         (arm_describe_resolver): Likewise.
33111         * config/arm/arm-builtins.h (enum resolver_ident): Add
33112         arm_mve_resolver.
33113         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
33114         (arm_resolve_overloaded_builtin): Handle MVE builtins.
33115         (arm_register_target_pragmas): Register arm_check_builtin_call.
33116         * config/arm/arm-mve-builtins.cc (class registered_function): New
33117         class.
33118         (struct registered_function_hasher): New struct.
33119         (pred_suffixes): New table.
33120         (mode_suffixes): New table.
33121         (type_suffix_info): New table.
33122         (TYPES_float16): New.
33123         (TYPES_all_float): New.
33124         (TYPES_integer_8): New.
33125         (TYPES_integer_8_16): New.
33126         (TYPES_integer_16_32): New.
33127         (TYPES_integer_32): New.
33128         (TYPES_signed_16_32): New.
33129         (TYPES_signed_32): New.
33130         (TYPES_all_signed): New.
33131         (TYPES_all_unsigned): New.
33132         (TYPES_all_integer): New.
33133         (TYPES_all_integer_with_64): New.
33134         (DEF_VECTOR_TYPE): New.
33135         (DEF_DOUBLE_TYPE): New.
33136         (DEF_MVE_TYPES_ARRAY): New.
33137         (all_integer): New.
33138         (all_integer_with_64): New.
33139         (float16): New.
33140         (all_float): New.
33141         (all_signed): New.
33142         (all_unsigned): New.
33143         (integer_8): New.
33144         (integer_8_16): New.
33145         (integer_16_32): New.
33146         (integer_32): New.
33147         (signed_16_32): New.
33148         (signed_32): New.
33149         (register_vector_type): Use void_type_node for mve.fp-only types when
33150         mve.fp is not enabled.
33151         (register_builtin_tuple_types): Likewise.
33152         (handle_arm_mve_h): New function..
33153         (matches_type_p): Likewise..
33154         (report_out_of_range): Likewise.
33155         (report_not_enum): Likewise.
33156         (report_missing_float): Likewise.
33157         (report_non_ice): Likewise.
33158         (check_requires_float): Likewise.
33159         (function_instance::hash): Likewise
33160         (function_instance::call_properties): Likewise.
33161         (function_instance::reads_global_state_p): Likewise.
33162         (function_instance::modifies_global_state_p): Likewise.
33163         (function_instance::could_trap_p): Likewise.
33164         (function_instance::has_inactive_argument): Likewise.
33165         (registered_function_hasher::hash): Likewise.
33166         (registered_function_hasher::equal): Likewise.
33167         (function_builder::function_builder): Likewise.
33168         (function_builder::~function_builder): Likewise.
33169         (function_builder::append_name): Likewise.
33170         (function_builder::finish_name): Likewise.
33171         (function_builder::get_name): Likewise.
33172         (add_attribute): Likewise.
33173         (function_builder::get_attributes): Likewise.
33174         (function_builder::add_function): Likewise.
33175         (function_builder::add_unique_function): Likewise.
33176         (function_builder::add_overloaded_function): Likewise.
33177         (function_builder::add_overloaded_functions): Likewise.
33178         (function_builder::register_function_group): Likewise.
33179         (function_call_info::function_call_info): Likewise.
33180         (function_resolver::function_resolver): Likewise.
33181         (function_resolver::get_vector_type): Likewise.
33182         (function_resolver::get_scalar_type_name): Likewise.
33183         (function_resolver::get_argument_type): Likewise.
33184         (function_resolver::scalar_argument_p): Likewise.
33185         (function_resolver::report_no_such_form): Likewise.
33186         (function_resolver::lookup_form): Likewise.
33187         (function_resolver::resolve_to): Likewise.
33188         (function_resolver::infer_vector_or_tuple_type): Likewise.
33189         (function_resolver::infer_vector_type): Likewise.
33190         (function_resolver::require_vector_or_scalar_type): Likewise.
33191         (function_resolver::require_vector_type): Likewise.
33192         (function_resolver::require_matching_vector_type): Likewise.
33193         (function_resolver::require_derived_vector_type): Likewise.
33194         (function_resolver::require_derived_scalar_type): Likewise.
33195         (function_resolver::require_integer_immediate): Likewise.
33196         (function_resolver::require_scalar_type): Likewise.
33197         (function_resolver::check_num_arguments): Likewise.
33198         (function_resolver::check_gp_argument): Likewise.
33199         (function_resolver::finish_opt_n_resolution): Likewise.
33200         (function_resolver::resolve_unary): Likewise.
33201         (function_resolver::resolve_unary_n): Likewise.
33202         (function_resolver::resolve_uniform): Likewise.
33203         (function_resolver::resolve_uniform_opt_n): Likewise.
33204         (function_resolver::resolve): Likewise.
33205         (function_checker::function_checker): Likewise.
33206         (function_checker::argument_exists_p): Likewise.
33207         (function_checker::require_immediate): Likewise.
33208         (function_checker::require_immediate_enum): Likewise.
33209         (function_checker::require_immediate_range): Likewise.
33210         (function_checker::check): Likewise.
33211         (gimple_folder::gimple_folder): Likewise.
33212         (gimple_folder::fold): Likewise.
33213         (function_expander::function_expander): Likewise.
33214         (function_expander::direct_optab_handler): Likewise.
33215         (function_expander::get_fallback_value): Likewise.
33216         (function_expander::get_reg_target): Likewise.
33217         (function_expander::add_output_operand): Likewise.
33218         (function_expander::add_input_operand): Likewise.
33219         (function_expander::add_integer_operand): Likewise.
33220         (function_expander::generate_insn): Likewise.
33221         (function_expander::use_exact_insn): Likewise.
33222         (function_expander::use_unpred_insn): Likewise.
33223         (function_expander::use_pred_x_insn): Likewise.
33224         (function_expander::use_cond_insn): Likewise.
33225         (function_expander::map_to_rtx_codes): Likewise.
33226         (function_expander::expand): Likewise.
33227         (resolve_overloaded_builtin): Likewise.
33228         (check_builtin_call): Likewise.
33229         (gimple_fold_builtin): Likewise.
33230         (expand_builtin): Likewise.
33231         (gt_ggc_mx): Likewise.
33232         (gt_pch_nx): Likewise.
33233         (gt_pch_nx): Likewise.
33234         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
33235         (s16): Likewise.
33236         (s32): Likewise.
33237         (s64): Likewise.
33238         (u8): Likewise.
33239         (u16): Likewise.
33240         (u32): Likewise.
33241         (u64): Likewise.
33242         (f16): Likewise.
33243         (f32): Likewise.
33244         (n): New mode.
33245         (offset): New mode.
33246         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
33247         (CP_READ_FPCR): Likewise.
33248         (CP_RAISE_FP_EXCEPTIONS): Likewise.
33249         (CP_READ_MEMORY): Likewise.
33250         (CP_WRITE_MEMORY): Likewise.
33251         (enum units_index): New enum.
33252         (enum predication_index): New.
33253         (enum type_class_index): New.
33254         (enum mode_suffix_index): New enum.
33255         (enum type_suffix_index): New.
33256         (struct mode_suffix_info): New struct.
33257         (struct type_suffix_info): New.
33258         (struct function_group_info): Likewise.
33259         (class function_instance): Likewise.
33260         (class registered_function): Likewise.
33261         (class function_builder): Likewise.
33262         (class function_call_info): Likewise.
33263         (class function_resolver): Likewise.
33264         (class function_checker): Likewise.
33265         (class gimple_folder): Likewise.
33266         (class function_expander): Likewise.
33267         (get_mve_pred16_t): Likewise.
33268         (find_mode_suffix): New function.
33269         (class function_base): Likewise.
33270         (class function_shape): Likewise.
33271         (function_instance::operator==): New function.
33272         (function_instance::operator!=): Likewise.
33273         (function_instance::vectors_per_tuple): Likewise.
33274         (function_instance::mode_suffix): Likewise.
33275         (function_instance::type_suffix): Likewise.
33276         (function_instance::scalar_type): Likewise.
33277         (function_instance::vector_type): Likewise.
33278         (function_instance::tuple_type): Likewise.
33279         (function_instance::vector_mode): Likewise.
33280         (function_call_info::function_returns_void_p): Likewise.
33281         (function_base::call_properties): Likewise.
33282         * config/arm/arm-protos.h (enum arm_builtin_class): Add
33283         ARM_BUILTIN_MVE.
33284         (handle_arm_mve_h): New.
33285         (resolve_overloaded_builtin): New.
33286         (check_builtin_call): New.
33287         (gimple_fold_builtin): New.
33288         (expand_builtin): New.
33289         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
33290         arm_gimple_fold_builtin.
33291         (arm_gimple_fold_builtin): New function.
33292         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
33293         * config/arm/predicates.md (arm_any_register_operand): New predicate.
33294         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
33295         (arm-mve-builtins-shapes.o): New target.
33296         (arm-mve-builtins-base.o): New target.
33297         * config/arm/arm-mve-builtins-base.cc: New file.
33298         * config/arm/arm-mve-builtins-base.def: New file.
33299         * config/arm/arm-mve-builtins-base.h: New file.
33300         * config/arm/arm-mve-builtins-functions.h: New file.
33301         * config/arm/arm-mve-builtins-shapes.cc: New file.
33302         * config/arm/arm-mve-builtins-shapes.h: New file.
33304 2023-05-03  Murray Steele  <murray.steele@arm.com>
33305             Christophe Lyon  <christophe.lyon@arm.com>
33306             Christophe Lyon   <christophe.lyon@arm.com>
33308         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
33309         New function.
33310         (arm_init_builtin): Use arm_general_add_builtin_function instead
33311         of arm_add_builtin_function.
33312         (arm_init_acle_builtins): Likewise.
33313         (arm_init_mve_builtins): Likewise.
33314         (arm_init_crypto_builtins): Likewise.
33315         (arm_init_builtins): Likewise.
33316         (arm_general_builtin_decl): New function.
33317         (arm_builtin_decl): Defer to numberspace-specialized functions.
33318         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
33319         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
33320         (arm_general_expand_builtin_1): ... specialize for general builtins.
33321         (arm_expand_acle_builtin): Use arm_general_expand_builtin
33322         instead of arm_expand_builtin.
33323         (arm_expand_mve_builtin): Likewise.
33324         (arm_expand_neon_builtin): Likewise.
33325         (arm_expand_vfp_builtin): Likewise.
33326         (arm_general_expand_builtin): New function.
33327         (arm_expand_builtin): Specialize for general builtins.
33328         (arm_general_check_builtin_call): New function.
33329         (arm_check_builtin_call): Specialize for general builtins.
33330         (arm_describe_resolver): Validate numberspace.
33331         (arm_cde_end_args): Likewise.
33332         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
33333         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
33335 2023-05-03  Martin Liska  <mliska@suse.cz>
33337         PR target/109713
33338         * config/riscv/sync.md: Add gcc_unreachable to a switch.
33340 2023-05-03  Richard Biener  <rguenther@suse.de>
33342         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
33343         (patch_loop_exit): Likewise.
33344         (connect_loops): Likewise.
33345         (split_loop): Likewise.
33346         (control_dep_semi_invariant_p): Likewise.
33347         (do_split_loop_on_cond): Likewise.
33348         (split_loop_on_cond): Likewise.
33349         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
33350         Likewise.
33351         (simplify_loop_version): Likewise.
33352         (evaluate_bbs): Likewise.
33353         (find_loop_guard): Likewise.
33354         (clean_up_after_unswitching): Likewise.
33355         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
33356         Likewise.
33357         (optimize_spaceship): Take a gcond * argument, avoid
33358         last_stmt.
33359         (math_opts_dom_walker::after_dom_children): Adjust call to
33360         optimize_spaceship.
33361         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
33362         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
33363         Likewise.
33365 2023-05-03  Andreas Schwab  <schwab@suse.de>
33367         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
33369 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33371         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
33372         New function.
33373         (class vlseg): New class.
33374         (class vsseg): Ditto.
33375         (class vlsseg): Ditto.
33376         (class vssseg): Ditto.
33377         (class seg_indexed_load): Ditto.
33378         (class seg_indexed_store): Ditto.
33379         (class vlsegff): Ditto.
33380         (BASE): Ditto.
33381         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
33382         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
33383         Ditto.
33384         (vsseg): Ditto.
33385         (vlsseg): Ditto.
33386         (vssseg): Ditto.
33387         (vluxseg): Ditto.
33388         (vloxseg): Ditto.
33389         (vsuxseg): Ditto.
33390         (vsoxseg): Ditto.
33391         (vlsegff): Ditto.
33392         * config/riscv/riscv-vector-builtins-shapes.cc (struct
33393         seg_loadstore_def): Ditto.
33394         (struct seg_indexed_loadstore_def): Ditto.
33395         (struct seg_fault_load_def): Ditto.
33396         (SHAPE): Ditto.
33397         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
33398         * config/riscv/riscv-vector-builtins.cc
33399         (function_builder::append_nf): New function.
33400         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
33401         Change ptr from double into float.
33402         (vfloat32m1x3_t): Ditto.
33403         (vfloat32m1x4_t): Ditto.
33404         (vfloat32m1x5_t): Ditto.
33405         (vfloat32m1x6_t): Ditto.
33406         (vfloat32m1x7_t): Ditto.
33407         (vfloat32m1x8_t): Ditto.
33408         (vfloat32m2x2_t): Ditto.
33409         (vfloat32m2x3_t): Ditto.
33410         (vfloat32m2x4_t): Ditto.
33411         (vfloat32m4x2_t): Ditto.
33412         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
33413         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
33414         segment ff load.
33415         * config/riscv/riscv.md: Add segment instructions.
33416         * config/riscv/vector-iterators.md: Support segment intrinsics.
33417         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
33418         pattern.
33419         (@pred_unit_strided_store<mode>): Ditto.
33420         (@pred_strided_load<mode>): Ditto.
33421         (@pred_strided_store<mode>): Ditto.
33422         (@pred_fault_load<mode>): Ditto.
33423         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
33424         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
33425         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
33426         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
33427         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
33428         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
33429         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
33430         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
33431         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
33432         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
33433         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
33434         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
33435         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
33436         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
33438 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33440         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
33441         tuple type support.
33442         (inttype): Ditto.
33443         (floattype): Ditto.
33444         (main): Ditto.
33445         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
33446         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
33447         tuple type vset.
33448         (vget): Add tuple type vget.
33449         * config/riscv/riscv-vector-builtins-types.def
33450         (DEF_RVV_TUPLE_OPS): New macro.
33451         (vint8mf8x2_t): Ditto.
33452         (vuint8mf8x2_t): Ditto.
33453         (vint8mf8x3_t): Ditto.
33454         (vuint8mf8x3_t): Ditto.
33455         (vint8mf8x4_t): Ditto.
33456         (vuint8mf8x4_t): Ditto.
33457         (vint8mf8x5_t): Ditto.
33458         (vuint8mf8x5_t): Ditto.
33459         (vint8mf8x6_t): Ditto.
33460         (vuint8mf8x6_t): Ditto.
33461         (vint8mf8x7_t): Ditto.
33462         (vuint8mf8x7_t): Ditto.
33463         (vint8mf8x8_t): Ditto.
33464         (vuint8mf8x8_t): Ditto.
33465         (vint8mf4x2_t): Ditto.
33466         (vuint8mf4x2_t): Ditto.
33467         (vint8mf4x3_t): Ditto.
33468         (vuint8mf4x3_t): Ditto.
33469         (vint8mf4x4_t): Ditto.
33470         (vuint8mf4x4_t): Ditto.
33471         (vint8mf4x5_t): Ditto.
33472         (vuint8mf4x5_t): Ditto.
33473         (vint8mf4x6_t): Ditto.
33474         (vuint8mf4x6_t): Ditto.
33475         (vint8mf4x7_t): Ditto.
33476         (vuint8mf4x7_t): Ditto.
33477         (vint8mf4x8_t): Ditto.
33478         (vuint8mf4x8_t): Ditto.
33479         (vint8mf2x2_t): Ditto.
33480         (vuint8mf2x2_t): Ditto.
33481         (vint8mf2x3_t): Ditto.
33482         (vuint8mf2x3_t): Ditto.
33483         (vint8mf2x4_t): Ditto.
33484         (vuint8mf2x4_t): Ditto.
33485         (vint8mf2x5_t): Ditto.
33486         (vuint8mf2x5_t): Ditto.
33487         (vint8mf2x6_t): Ditto.
33488         (vuint8mf2x6_t): Ditto.
33489         (vint8mf2x7_t): Ditto.
33490         (vuint8mf2x7_t): Ditto.
33491         (vint8mf2x8_t): Ditto.
33492         (vuint8mf2x8_t): Ditto.
33493         (vint8m1x2_t): Ditto.
33494         (vuint8m1x2_t): Ditto.
33495         (vint8m1x3_t): Ditto.
33496         (vuint8m1x3_t): Ditto.
33497         (vint8m1x4_t): Ditto.
33498         (vuint8m1x4_t): Ditto.
33499         (vint8m1x5_t): Ditto.
33500         (vuint8m1x5_t): Ditto.
33501         (vint8m1x6_t): Ditto.
33502         (vuint8m1x6_t): Ditto.
33503         (vint8m1x7_t): Ditto.
33504         (vuint8m1x7_t): Ditto.
33505         (vint8m1x8_t): Ditto.
33506         (vuint8m1x8_t): Ditto.
33507         (vint8m2x2_t): Ditto.
33508         (vuint8m2x2_t): Ditto.
33509         (vint8m2x3_t): Ditto.
33510         (vuint8m2x3_t): Ditto.
33511         (vint8m2x4_t): Ditto.
33512         (vuint8m2x4_t): Ditto.
33513         (vint8m4x2_t): Ditto.
33514         (vuint8m4x2_t): Ditto.
33515         (vint16mf4x2_t): Ditto.
33516         (vuint16mf4x2_t): Ditto.
33517         (vint16mf4x3_t): Ditto.
33518         (vuint16mf4x3_t): Ditto.
33519         (vint16mf4x4_t): Ditto.
33520         (vuint16mf4x4_t): Ditto.
33521         (vint16mf4x5_t): Ditto.
33522         (vuint16mf4x5_t): Ditto.
33523         (vint16mf4x6_t): Ditto.
33524         (vuint16mf4x6_t): Ditto.
33525         (vint16mf4x7_t): Ditto.
33526         (vuint16mf4x7_t): Ditto.
33527         (vint16mf4x8_t): Ditto.
33528         (vuint16mf4x8_t): Ditto.
33529         (vint16mf2x2_t): Ditto.
33530         (vuint16mf2x2_t): Ditto.
33531         (vint16mf2x3_t): Ditto.
33532         (vuint16mf2x3_t): Ditto.
33533         (vint16mf2x4_t): Ditto.
33534         (vuint16mf2x4_t): Ditto.
33535         (vint16mf2x5_t): Ditto.
33536         (vuint16mf2x5_t): Ditto.
33537         (vint16mf2x6_t): Ditto.
33538         (vuint16mf2x6_t): Ditto.
33539         (vint16mf2x7_t): Ditto.
33540         (vuint16mf2x7_t): Ditto.
33541         (vint16mf2x8_t): Ditto.
33542         (vuint16mf2x8_t): Ditto.
33543         (vint16m1x2_t): Ditto.
33544         (vuint16m1x2_t): Ditto.
33545         (vint16m1x3_t): Ditto.
33546         (vuint16m1x3_t): Ditto.
33547         (vint16m1x4_t): Ditto.
33548         (vuint16m1x4_t): Ditto.
33549         (vint16m1x5_t): Ditto.
33550         (vuint16m1x5_t): Ditto.
33551         (vint16m1x6_t): Ditto.
33552         (vuint16m1x6_t): Ditto.
33553         (vint16m1x7_t): Ditto.
33554         (vuint16m1x7_t): Ditto.
33555         (vint16m1x8_t): Ditto.
33556         (vuint16m1x8_t): Ditto.
33557         (vint16m2x2_t): Ditto.
33558         (vuint16m2x2_t): Ditto.
33559         (vint16m2x3_t): Ditto.
33560         (vuint16m2x3_t): Ditto.
33561         (vint16m2x4_t): Ditto.
33562         (vuint16m2x4_t): Ditto.
33563         (vint16m4x2_t): Ditto.
33564         (vuint16m4x2_t): Ditto.
33565         (vint32mf2x2_t): Ditto.
33566         (vuint32mf2x2_t): Ditto.
33567         (vint32mf2x3_t): Ditto.
33568         (vuint32mf2x3_t): Ditto.
33569         (vint32mf2x4_t): Ditto.
33570         (vuint32mf2x4_t): Ditto.
33571         (vint32mf2x5_t): Ditto.
33572         (vuint32mf2x5_t): Ditto.
33573         (vint32mf2x6_t): Ditto.
33574         (vuint32mf2x6_t): Ditto.
33575         (vint32mf2x7_t): Ditto.
33576         (vuint32mf2x7_t): Ditto.
33577         (vint32mf2x8_t): Ditto.
33578         (vuint32mf2x8_t): Ditto.
33579         (vint32m1x2_t): Ditto.
33580         (vuint32m1x2_t): Ditto.
33581         (vint32m1x3_t): Ditto.
33582         (vuint32m1x3_t): Ditto.
33583         (vint32m1x4_t): Ditto.
33584         (vuint32m1x4_t): Ditto.
33585         (vint32m1x5_t): Ditto.
33586         (vuint32m1x5_t): Ditto.
33587         (vint32m1x6_t): Ditto.
33588         (vuint32m1x6_t): Ditto.
33589         (vint32m1x7_t): Ditto.
33590         (vuint32m1x7_t): Ditto.
33591         (vint32m1x8_t): Ditto.
33592         (vuint32m1x8_t): Ditto.
33593         (vint32m2x2_t): Ditto.
33594         (vuint32m2x2_t): Ditto.
33595         (vint32m2x3_t): Ditto.
33596         (vuint32m2x3_t): Ditto.
33597         (vint32m2x4_t): Ditto.
33598         (vuint32m2x4_t): Ditto.
33599         (vint32m4x2_t): Ditto.
33600         (vuint32m4x2_t): Ditto.
33601         (vint64m1x2_t): Ditto.
33602         (vuint64m1x2_t): Ditto.
33603         (vint64m1x3_t): Ditto.
33604         (vuint64m1x3_t): Ditto.
33605         (vint64m1x4_t): Ditto.
33606         (vuint64m1x4_t): Ditto.
33607         (vint64m1x5_t): Ditto.
33608         (vuint64m1x5_t): Ditto.
33609         (vint64m1x6_t): Ditto.
33610         (vuint64m1x6_t): Ditto.
33611         (vint64m1x7_t): Ditto.
33612         (vuint64m1x7_t): Ditto.
33613         (vint64m1x8_t): Ditto.
33614         (vuint64m1x8_t): Ditto.
33615         (vint64m2x2_t): Ditto.
33616         (vuint64m2x2_t): Ditto.
33617         (vint64m2x3_t): Ditto.
33618         (vuint64m2x3_t): Ditto.
33619         (vint64m2x4_t): Ditto.
33620         (vuint64m2x4_t): Ditto.
33621         (vint64m4x2_t): Ditto.
33622         (vuint64m4x2_t): Ditto.
33623         (vfloat32mf2x2_t): Ditto.
33624         (vfloat32mf2x3_t): Ditto.
33625         (vfloat32mf2x4_t): Ditto.
33626         (vfloat32mf2x5_t): Ditto.
33627         (vfloat32mf2x6_t): Ditto.
33628         (vfloat32mf2x7_t): Ditto.
33629         (vfloat32mf2x8_t): Ditto.
33630         (vfloat32m1x2_t): Ditto.
33631         (vfloat32m1x3_t): Ditto.
33632         (vfloat32m1x4_t): Ditto.
33633         (vfloat32m1x5_t): Ditto.
33634         (vfloat32m1x6_t): Ditto.
33635         (vfloat32m1x7_t): Ditto.
33636         (vfloat32m1x8_t): Ditto.
33637         (vfloat32m2x2_t): Ditto.
33638         (vfloat32m2x3_t): Ditto.
33639         (vfloat32m2x4_t): Ditto.
33640         (vfloat32m4x2_t): Ditto.
33641         (vfloat64m1x2_t): Ditto.
33642         (vfloat64m1x3_t): Ditto.
33643         (vfloat64m1x4_t): Ditto.
33644         (vfloat64m1x5_t): Ditto.
33645         (vfloat64m1x6_t): Ditto.
33646         (vfloat64m1x7_t): Ditto.
33647         (vfloat64m1x8_t): Ditto.
33648         (vfloat64m2x2_t): Ditto.
33649         (vfloat64m2x3_t): Ditto.
33650         (vfloat64m2x4_t): Ditto.
33651         (vfloat64m4x2_t): Ditto.
33652         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
33653         Ditto.
33654         (DEF_RVV_TYPE_INDEX): Ditto.
33655         (rvv_arg_type_info::get_tuple_subpart_type): New function.
33656         (DEF_RVV_TUPLE_TYPE): New macro.
33657         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
33658         Adapt for tuple vget/vset support.
33659         (vint8mf4_t): Ditto.
33660         (vuint8mf4_t): Ditto.
33661         (vint8mf2_t): Ditto.
33662         (vuint8mf2_t): Ditto.
33663         (vint8m1_t): Ditto.
33664         (vuint8m1_t): Ditto.
33665         (vint8m2_t): Ditto.
33666         (vuint8m2_t): Ditto.
33667         (vint8m4_t): Ditto.
33668         (vuint8m4_t): Ditto.
33669         (vint8m8_t): Ditto.
33670         (vuint8m8_t): Ditto.
33671         (vint16mf4_t): Ditto.
33672         (vuint16mf4_t): Ditto.
33673         (vint16mf2_t): Ditto.
33674         (vuint16mf2_t): Ditto.
33675         (vint16m1_t): Ditto.
33676         (vuint16m1_t): Ditto.
33677         (vint16m2_t): Ditto.
33678         (vuint16m2_t): Ditto.
33679         (vint16m4_t): Ditto.
33680         (vuint16m4_t): Ditto.
33681         (vint16m8_t): Ditto.
33682         (vuint16m8_t): Ditto.
33683         (vint32mf2_t): Ditto.
33684         (vuint32mf2_t): Ditto.
33685         (vint32m1_t): Ditto.
33686         (vuint32m1_t): Ditto.
33687         (vint32m2_t): Ditto.
33688         (vuint32m2_t): Ditto.
33689         (vint32m4_t): Ditto.
33690         (vuint32m4_t): Ditto.
33691         (vint32m8_t): Ditto.
33692         (vuint32m8_t): Ditto.
33693         (vint64m1_t): Ditto.
33694         (vuint64m1_t): Ditto.
33695         (vint64m2_t): Ditto.
33696         (vuint64m2_t): Ditto.
33697         (vint64m4_t): Ditto.
33698         (vuint64m4_t): Ditto.
33699         (vint64m8_t): Ditto.
33700         (vuint64m8_t): Ditto.
33701         (vfloat32mf2_t): Ditto.
33702         (vfloat32m1_t): Ditto.
33703         (vfloat32m2_t): Ditto.
33704         (vfloat32m4_t): Ditto.
33705         (vfloat32m8_t): Ditto.
33706         (vfloat64m1_t): Ditto.
33707         (vfloat64m2_t): Ditto.
33708         (vfloat64m4_t): Ditto.
33709         (vfloat64m8_t): Ditto.
33710         (tuple_subpart): Add tuple subpart base type.
33711         * config/riscv/riscv-vector-builtins.h (struct
33712         rvv_arg_type_info): Ditto.
33713         (tuple_type_field): New function.
33715 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33717         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
33718         (RVV_TUPLE_PARTIAL_MODES): Ditto.
33719         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
33720         function.
33721         (get_nf): Ditto.
33722         (get_subpart_mode): Ditto.
33723         (get_tuple_mode): Ditto.
33724         (expand_tuple_move): Ditto.
33725         * config/riscv/riscv-v.cc (ENTRY): New macro.
33726         (TUPLE_ENTRY): Ditto.
33727         (get_nf): New function.
33728         (get_subpart_mode): Ditto.
33729         (get_tuple_mode): Ditto.
33730         (expand_tuple_move): Ditto.
33731         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
33732         New macro.
33733         (register_tuple_type): New function
33734         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
33735         New macro.
33736         (vint8mf8x2_t): New macro.
33737         (vuint8mf8x2_t): Ditto.
33738         (vint8mf8x3_t): Ditto.
33739         (vuint8mf8x3_t): Ditto.
33740         (vint8mf8x4_t): Ditto.
33741         (vuint8mf8x4_t): Ditto.
33742         (vint8mf8x5_t): Ditto.
33743         (vuint8mf8x5_t): Ditto.
33744         (vint8mf8x6_t): Ditto.
33745         (vuint8mf8x6_t): Ditto.
33746         (vint8mf8x7_t): Ditto.
33747         (vuint8mf8x7_t): Ditto.
33748         (vint8mf8x8_t): Ditto.
33749         (vuint8mf8x8_t): Ditto.
33750         (vint8mf4x2_t): Ditto.
33751         (vuint8mf4x2_t): Ditto.
33752         (vint8mf4x3_t): Ditto.
33753         (vuint8mf4x3_t): Ditto.
33754         (vint8mf4x4_t): Ditto.
33755         (vuint8mf4x4_t): Ditto.
33756         (vint8mf4x5_t): Ditto.
33757         (vuint8mf4x5_t): Ditto.
33758         (vint8mf4x6_t): Ditto.
33759         (vuint8mf4x6_t): Ditto.
33760         (vint8mf4x7_t): Ditto.
33761         (vuint8mf4x7_t): Ditto.
33762         (vint8mf4x8_t): Ditto.
33763         (vuint8mf4x8_t): Ditto.
33764         (vint8mf2x2_t): Ditto.
33765         (vuint8mf2x2_t): Ditto.
33766         (vint8mf2x3_t): Ditto.
33767         (vuint8mf2x3_t): Ditto.
33768         (vint8mf2x4_t): Ditto.
33769         (vuint8mf2x4_t): Ditto.
33770         (vint8mf2x5_t): Ditto.
33771         (vuint8mf2x5_t): Ditto.
33772         (vint8mf2x6_t): Ditto.
33773         (vuint8mf2x6_t): Ditto.
33774         (vint8mf2x7_t): Ditto.
33775         (vuint8mf2x7_t): Ditto.
33776         (vint8mf2x8_t): Ditto.
33777         (vuint8mf2x8_t): Ditto.
33778         (vint8m1x2_t): Ditto.
33779         (vuint8m1x2_t): Ditto.
33780         (vint8m1x3_t): Ditto.
33781         (vuint8m1x3_t): Ditto.
33782         (vint8m1x4_t): Ditto.
33783         (vuint8m1x4_t): Ditto.
33784         (vint8m1x5_t): Ditto.
33785         (vuint8m1x5_t): Ditto.
33786         (vint8m1x6_t): Ditto.
33787         (vuint8m1x6_t): Ditto.
33788         (vint8m1x7_t): Ditto.
33789         (vuint8m1x7_t): Ditto.
33790         (vint8m1x8_t): Ditto.
33791         (vuint8m1x8_t): Ditto.
33792         (vint8m2x2_t): Ditto.
33793         (vuint8m2x2_t): Ditto.
33794         (vint8m2x3_t): Ditto.
33795         (vuint8m2x3_t): Ditto.
33796         (vint8m2x4_t): Ditto.
33797         (vuint8m2x4_t): Ditto.
33798         (vint8m4x2_t): Ditto.
33799         (vuint8m4x2_t): Ditto.
33800         (vint16mf4x2_t): Ditto.
33801         (vuint16mf4x2_t): Ditto.
33802         (vint16mf4x3_t): Ditto.
33803         (vuint16mf4x3_t): Ditto.
33804         (vint16mf4x4_t): Ditto.
33805         (vuint16mf4x4_t): Ditto.
33806         (vint16mf4x5_t): Ditto.
33807         (vuint16mf4x5_t): Ditto.
33808         (vint16mf4x6_t): Ditto.
33809         (vuint16mf4x6_t): Ditto.
33810         (vint16mf4x7_t): Ditto.
33811         (vuint16mf4x7_t): Ditto.
33812         (vint16mf4x8_t): Ditto.
33813         (vuint16mf4x8_t): Ditto.
33814         (vint16mf2x2_t): Ditto.
33815         (vuint16mf2x2_t): Ditto.
33816         (vint16mf2x3_t): Ditto.
33817         (vuint16mf2x3_t): Ditto.
33818         (vint16mf2x4_t): Ditto.
33819         (vuint16mf2x4_t): Ditto.
33820         (vint16mf2x5_t): Ditto.
33821         (vuint16mf2x5_t): Ditto.
33822         (vint16mf2x6_t): Ditto.
33823         (vuint16mf2x6_t): Ditto.
33824         (vint16mf2x7_t): Ditto.
33825         (vuint16mf2x7_t): Ditto.
33826         (vint16mf2x8_t): Ditto.
33827         (vuint16mf2x8_t): Ditto.
33828         (vint16m1x2_t): Ditto.
33829         (vuint16m1x2_t): Ditto.
33830         (vint16m1x3_t): Ditto.
33831         (vuint16m1x3_t): Ditto.
33832         (vint16m1x4_t): Ditto.
33833         (vuint16m1x4_t): Ditto.
33834         (vint16m1x5_t): Ditto.
33835         (vuint16m1x5_t): Ditto.
33836         (vint16m1x6_t): Ditto.
33837         (vuint16m1x6_t): Ditto.
33838         (vint16m1x7_t): Ditto.
33839         (vuint16m1x7_t): Ditto.
33840         (vint16m1x8_t): Ditto.
33841         (vuint16m1x8_t): Ditto.
33842         (vint16m2x2_t): Ditto.
33843         (vuint16m2x2_t): Ditto.
33844         (vint16m2x3_t): Ditto.
33845         (vuint16m2x3_t): Ditto.
33846         (vint16m2x4_t): Ditto.
33847         (vuint16m2x4_t): Ditto.
33848         (vint16m4x2_t): Ditto.
33849         (vuint16m4x2_t): Ditto.
33850         (vint32mf2x2_t): Ditto.
33851         (vuint32mf2x2_t): Ditto.
33852         (vint32mf2x3_t): Ditto.
33853         (vuint32mf2x3_t): Ditto.
33854         (vint32mf2x4_t): Ditto.
33855         (vuint32mf2x4_t): Ditto.
33856         (vint32mf2x5_t): Ditto.
33857         (vuint32mf2x5_t): Ditto.
33858         (vint32mf2x6_t): Ditto.
33859         (vuint32mf2x6_t): Ditto.
33860         (vint32mf2x7_t): Ditto.
33861         (vuint32mf2x7_t): Ditto.
33862         (vint32mf2x8_t): Ditto.
33863         (vuint32mf2x8_t): Ditto.
33864         (vint32m1x2_t): Ditto.
33865         (vuint32m1x2_t): Ditto.
33866         (vint32m1x3_t): Ditto.
33867         (vuint32m1x3_t): Ditto.
33868         (vint32m1x4_t): Ditto.
33869         (vuint32m1x4_t): Ditto.
33870         (vint32m1x5_t): Ditto.
33871         (vuint32m1x5_t): Ditto.
33872         (vint32m1x6_t): Ditto.
33873         (vuint32m1x6_t): Ditto.
33874         (vint32m1x7_t): Ditto.
33875         (vuint32m1x7_t): Ditto.
33876         (vint32m1x8_t): Ditto.
33877         (vuint32m1x8_t): Ditto.
33878         (vint32m2x2_t): Ditto.
33879         (vuint32m2x2_t): Ditto.
33880         (vint32m2x3_t): Ditto.
33881         (vuint32m2x3_t): Ditto.
33882         (vint32m2x4_t): Ditto.
33883         (vuint32m2x4_t): Ditto.
33884         (vint32m4x2_t): Ditto.
33885         (vuint32m4x2_t): Ditto.
33886         (vint64m1x2_t): Ditto.
33887         (vuint64m1x2_t): Ditto.
33888         (vint64m1x3_t): Ditto.
33889         (vuint64m1x3_t): Ditto.
33890         (vint64m1x4_t): Ditto.
33891         (vuint64m1x4_t): Ditto.
33892         (vint64m1x5_t): Ditto.
33893         (vuint64m1x5_t): Ditto.
33894         (vint64m1x6_t): Ditto.
33895         (vuint64m1x6_t): Ditto.
33896         (vint64m1x7_t): Ditto.
33897         (vuint64m1x7_t): Ditto.
33898         (vint64m1x8_t): Ditto.
33899         (vuint64m1x8_t): Ditto.
33900         (vint64m2x2_t): Ditto.
33901         (vuint64m2x2_t): Ditto.
33902         (vint64m2x3_t): Ditto.
33903         (vuint64m2x3_t): Ditto.
33904         (vint64m2x4_t): Ditto.
33905         (vuint64m2x4_t): Ditto.
33906         (vint64m4x2_t): Ditto.
33907         (vuint64m4x2_t): Ditto.
33908         (vfloat32mf2x2_t): Ditto.
33909         (vfloat32mf2x3_t): Ditto.
33910         (vfloat32mf2x4_t): Ditto.
33911         (vfloat32mf2x5_t): Ditto.
33912         (vfloat32mf2x6_t): Ditto.
33913         (vfloat32mf2x7_t): Ditto.
33914         (vfloat32mf2x8_t): Ditto.
33915         (vfloat32m1x2_t): Ditto.
33916         (vfloat32m1x3_t): Ditto.
33917         (vfloat32m1x4_t): Ditto.
33918         (vfloat32m1x5_t): Ditto.
33919         (vfloat32m1x6_t): Ditto.
33920         (vfloat32m1x7_t): Ditto.
33921         (vfloat32m1x8_t): Ditto.
33922         (vfloat32m2x2_t): Ditto.
33923         (vfloat32m2x3_t): Ditto.
33924         (vfloat32m2x4_t): Ditto.
33925         (vfloat32m4x2_t): Ditto.
33926         (vfloat64m1x2_t): Ditto.
33927         (vfloat64m1x3_t): Ditto.
33928         (vfloat64m1x4_t): Ditto.
33929         (vfloat64m1x5_t): Ditto.
33930         (vfloat64m1x6_t): Ditto.
33931         (vfloat64m1x7_t): Ditto.
33932         (vfloat64m1x8_t): Ditto.
33933         (vfloat64m2x2_t): Ditto.
33934         (vfloat64m2x3_t): Ditto.
33935         (vfloat64m2x4_t): Ditto.
33936         (vfloat64m4x2_t): Ditto.
33937         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
33938         Ditto.
33939         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
33940         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
33941         function.
33942         (TUPLE_ENTRY): Ditto.
33943         (riscv_v_ext_mode_p): New function.
33944         (riscv_v_adjust_nunits): Add tuple mode adjustment.
33945         (riscv_classify_address): Ditto.
33946         (riscv_binary_cost): Ditto.
33947         (riscv_rtx_costs): Ditto.
33948         (riscv_secondary_memory_needed): Ditto.
33949         (riscv_hard_regno_nregs): Ditto.
33950         (riscv_hard_regno_mode_ok): Ditto.
33951         (riscv_vector_mode_supported_p): Ditto.
33952         (riscv_regmode_natural_size): Ditto.
33953         (riscv_array_mode): New function.
33954         (TARGET_ARRAY_MODE): New target hook.
33955         * config/riscv/riscv.md: Add tuple modes.
33956         * config/riscv/vector-iterators.md: Ditto.
33957         * config/riscv/vector.md (mov<mode>): Add tuple modes data
33958         movement.
33959         (*mov<VT:mode>_<P:mode>): Ditto.
33961 2023-05-03  Richard Biener  <rguenther@suse.de>
33963         * cse.cc (cse_insn): Track an equivalence to the destination
33964         separately and delay using src_related for it.
33966 2023-05-03  Richard Biener  <rguenther@suse.de>
33968         * cse.cc (HASH): Turn into inline function and mix
33969         in another HASH_SHIFT bits.
33970         (SAFE_HASH): Likewise.
33972 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33974         PR target/99195
33975         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
33976         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
33978 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33980         PR target/99195
33981         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
33982         (add<mode>3<vczle><vczbe>): ... This.
33983         (sub<mode>3): Rename to...
33984         (sub<mode>3<vczle><vczbe>): ... This.
33985         (mul<mode>3): Rename to...
33986         (mul<mode>3<vczle><vczbe>): ... This.
33987         (*div<mode>3): Rename to...
33988         (*div<mode>3<vczle><vczbe>): ... This.
33989         (neg<mode>2): Rename to...
33990         (neg<mode>2<vczle><vczbe>): ... This.
33991         (abs<mode>2): Rename to...
33992         (abs<mode>2<vczle><vczbe>): ... This.
33993         (<frint_pattern><mode>2): Rename to...
33994         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
33995         (<fmaxmin><mode>3): Rename to...
33996         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
33997         (*sqrt<mode>2): Rename to...
33998         (*sqrt<mode>2<vczle><vczbe>): ... This.
34000 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
34002         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
34004 2023-05-03  Martin Liska  <mliska@suse.cz>
34006         PR tree-optimization/109693
34007         * value-range-storage.cc (vrange_allocator::vrange_allocator):
34008         Remove unused field.
34009         * value-range-storage.h: Likewise.
34011 2023-05-02  Andrew Pinski  <apinski@marvell.com>
34013         * tree-ssa-phiopt.cc (move_stmt): New function.
34014         (match_simplify_replacement): Use move_stmt instead
34015         of the inlined version.
34017 2023-05-02  Andrew Pinski  <apinski@marvell.com>
34019         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
34020         pattern.
34022 2023-05-02  Andrew Pinski  <apinski@marvell.com>
34024         PR tree-optimization/109702
34025         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
34026         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
34028 2023-05-02  Andrew Pinski  <apinski@marvell.com>
34030         PR target/109657
34031         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
34032         insn_and_split pattern.
34034 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34036         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
34037         load mapping.
34039 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34041         * config/riscv/sync.md (mem_thread_fence_1): Change fence
34042         depending on the given memory model.
34044 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34046         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
34047         riscv_union_memmodels function to sync.md.
34048         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
34049         get the union of two memmodels in sync.md.
34050         (riscv_print_operand): Add %I and %J flags that output the
34051         optimal LR/SC flag bits for a given memory model.
34052         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
34053         bits on SC op and replace with optimized %I, %J flags.
34055 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34057         * config/riscv/riscv.cc
34058         (riscv_memmodel_needs_amo_release): Change function name.
34059         (riscv_print_operand): Remove unneeded %F case.
34060         * config/riscv/sync.md: Remove unneeded fences.
34062 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34064         PR target/89835
34065         * config/riscv/sync.md (atomic_store<mode>): Use simple store
34066         instruction in combination with fence(s).
34068 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34070         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
34071         of %A to include release bits.
34073 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34075         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
34076         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
34077         pair.
34079 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34081         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
34082         sequentially consistent LR.aqrl/SC.rl pairs.
34084 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
34086         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
34087         sanitize memmodel input with memmodel_base.
34089 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
34090             Pan Li  <pan2.li@intel.com>
34092         PR target/109617
34093         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
34095 2023-05-02  Romain Naour  <romain.naour@gmail.com>
34097         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
34098         the namespace.
34100 2023-05-02  Martin Liska  <mliska@suse.cz>
34102         * doc/invoke.texi: Update documentation based on param.opt file.
34104 2023-05-02  Richard Biener  <rguenther@suse.de>
34106         PR tree-optimization/109672
34107         * tree-vect-stmts.cc (vectorizable_operation): For plus,
34108         minus and negate always check the vector mode is word mode.
34110 2023-05-01  Andrew Pinski  <apinski@marvell.com>
34112         * tree-ssa-phiopt.cc: Update comment about
34113         how the transformation are implemented.
34115 2023-05-01  Jeff Law  <jlaw@ventanamicro>
34117         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
34119 2023-05-01  Jeff Law  <jlaw@ventanamicro>
34121         * config/cris/cris.cc (TARGET_LRA_P): Remove.
34122         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
34123         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
34124         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
34125         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
34126         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
34128 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
34130         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
34131         * print-tree.cc (print_decl_identifier): Implement it.
34132         * toplev.cc (output_stack_usage_1): Use it.
34134 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34136         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
34137         friends.
34139 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34141         * value-range.h (irange::set_nonzero): Inline.
34143 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34145         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
34146         precision.
34147         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
34148         invalid_range, as it is an inverse range.
34149         * tree-vrp.cc (find_case_label_range): Avoid trees.
34150         * value-range.cc (irange::irange_set): Delete.
34151         (irange::irange_set_1bit_anti_range): Delete.
34152         (irange::irange_set_anti_range): Delete.
34153         (irange::set): Cleanup.
34154         * value-range.h (class irange): Remove irange_set,
34155         irange_set_anti_range, irange_set_1bit_anti_range.
34156         (irange::set_undefined): Remove set to m_type.
34158 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34160         * range-op.cc (update_known_bitmask): Adjust for irange containing
34161         wide_ints internally.
34162         * tree-ssanames.cc (set_nonzero_bits): Same.
34163         * tree-ssanames.h (set_nonzero_bits): Same.
34164         * value-range-storage.cc (irange_storage::set_irange): Same.
34165         (irange_storage::get_irange): Same.
34166         * value-range.cc (irange::operator=): Same.
34167         (irange::irange_set): Same.
34168         (irange::irange_set_1bit_anti_range): Same.
34169         (irange::irange_set_anti_range): Same.
34170         (irange::set): Same.
34171         (irange::verify_range): Same.
34172         (irange::contains_p): Same.
34173         (irange::irange_single_pair_union): Same.
34174         (irange::union_): Same.
34175         (irange::irange_contains_p): Same.
34176         (irange::intersect): Same.
34177         (irange::invert): Same.
34178         (irange::set_range_from_nonzero_bits): Same.
34179         (irange::set_nonzero_bits): Same.
34180         (mask_to_wi): Same.
34181         (irange::intersect_nonzero_bits): Same.
34182         (irange::union_nonzero_bits): Same.
34183         (gt_ggc_mx): Same.
34184         (gt_pch_nx): Same.
34185         (tree_range): Same.
34186         (range_tests_strict_enum): Same.
34187         (range_tests_misc): Same.
34188         (range_tests_nonzero_bits): Same.
34189         * value-range.h (irange::type): Same.
34190         (irange::varying_compatible_p): Same.
34191         (irange::irange): Same.
34192         (int_range::int_range): Same.
34193         (irange::set_undefined): Same.
34194         (irange::set_varying): Same.
34195         (irange::lower_bound): Same.
34196         (irange::upper_bound): Same.
34198 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34200         * gimple-range-fold.cc (tree_lower_bound): Delete.
34201         (tree_upper_bound): Delete.
34202         (vrp_val_max): Delete.
34203         (vrp_val_min): Delete.
34204         (fold_using_range::range_of_ssa_name_with_loop_info): Call
34205         range_of_var_in_loop.
34206         * vr-values.cc (valid_value_p): Delete.
34207         (fix_overflow): Delete.
34208         (get_scev_info): New.
34209         (bounds_of_var_in_loop): Refactor into...
34210         (induction_variable_may_overflow_p): ...this,
34211         (range_from_loop_direction): ...and this,
34212         (range_of_var_in_loop): ...and this.
34213         * vr-values.h (bounds_of_var_in_loop): Delete.
34214         (range_of_var_in_loop): New.
34216 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34218         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
34219         irange_val*.
34220         (vrp_val_max): New.
34221         (vrp_val_min): New.
34222         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
34223         * range-op.cc (max_limit): Same.
34224         (min_limit): Same.
34225         (plus_minus_ranges): Same.
34226         (operator_rshift::op1_range): Same.
34227         (operator_cast::inside_domain_p): Same.
34228         * value-range.cc (vrp_val_is_max): Delete.
34229         (vrp_val_is_min): Delete.
34230         (range_tests_misc): Use irange_val_*.
34231         * value-range.h (vrp_val_is_min): Delete.
34232         (vrp_val_is_max): Delete.
34233         (vrp_val_max): Delete.
34234         (irange_val_min): New.
34235         (vrp_val_min): Delete.
34236         (irange_val_max): New.
34237         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
34239 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34241         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
34242         * gimple-fold.cc (size_must_be_zero_p): Same.
34243         * gimple-loop-versioning.cc
34244         (loop_versioning::prune_loop_conditions): Same.
34245         * gimple-range-edge.cc (gcond_edge_range): Same.
34246         (gimple_outgoing_range::calc_switch_ranges): Same.
34247         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
34248         (adjust_realpart_expr): Same.
34249         (fold_using_range::range_of_address): Same.
34250         (fold_using_range::relation_fold_and_or): Same.
34251         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
34252         (range_is_either_true_or_false): Same.
34253         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
34254         (cfn_clz::fold_range): Same.
34255         (cfn_ctz::fold_range): Same.
34256         * gimple-range-tests.cc (class test_expr_eval): Same.
34257         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
34258         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
34259         (propagate_vr_across_jump_function): Same.
34260         (decide_whether_version_node): Same.
34261         * ipa-prop.cc (ipa_get_value_range): Same.
34262         * ipa-prop.h (ipa_range_set_and_normalize): Same.
34263         * range-op.cc (get_shift_range): Same.
34264         (value_range_from_overflowed_bounds): Same.
34265         (value_range_with_overflow): Same.
34266         (create_possibly_reversed_range): Same.
34267         (equal_op1_op2_relation): Same.
34268         (not_equal_op1_op2_relation): Same.
34269         (lt_op1_op2_relation): Same.
34270         (le_op1_op2_relation): Same.
34271         (gt_op1_op2_relation): Same.
34272         (ge_op1_op2_relation): Same.
34273         (operator_mult::op1_range): Same.
34274         (operator_exact_divide::op1_range): Same.
34275         (operator_lshift::op1_range): Same.
34276         (operator_rshift::op1_range): Same.
34277         (operator_cast::op1_range): Same.
34278         (operator_logical_and::fold_range): Same.
34279         (set_nonzero_range_from_mask): Same.
34280         (operator_bitwise_or::op1_range): Same.
34281         (operator_bitwise_xor::op1_range): Same.
34282         (operator_addr_expr::fold_range): Same.
34283         (pointer_plus_operator::wi_fold): Same.
34284         (pointer_or_operator::op1_range): Same.
34285         (INT): Same.
34286         (UINT): Same.
34287         (INT16): Same.
34288         (UINT16): Same.
34289         (SCHAR): Same.
34290         (UCHAR): Same.
34291         (range_op_cast_tests): Same.
34292         (range_op_lshift_tests): Same.
34293         (range_op_rshift_tests): Same.
34294         (range_op_bitwise_and_tests): Same.
34295         (range_relational_tests): Same.
34296         * range.cc (range_zero): Same.
34297         (range_nonzero): Same.
34298         * range.h (range_true): Same.
34299         (range_false): Same.
34300         (range_true_and_false): Same.
34301         * tree-data-ref.cc (split_constant_offset_1): Same.
34302         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
34303         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
34304         (find_unswitching_predicates_for_bb): Same.
34305         * tree-ssa-phiopt.cc (value_replacement): Same.
34306         * tree-ssa-threadbackward.cc
34307         (back_threader::find_taken_edge_cond): Same.
34308         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
34309         * tree-vrp.cc (find_case_label_range): Same.
34310         * value-query.cc (range_query::get_tree_range): Same.
34311         * value-range.cc (irange::set_nonnegative): Same.
34312         (frange::contains_p): Same.
34313         (frange::singleton_p): Same.
34314         (frange::internal_singleton_p): Same.
34315         (irange::irange_set): Same.
34316         (irange::irange_set_1bit_anti_range): Same.
34317         (irange::irange_set_anti_range): Same.
34318         (irange::set): Same.
34319         (irange::operator==): Same.
34320         (irange::singleton_p): Same.
34321         (irange::contains_p): Same.
34322         (irange::set_range_from_nonzero_bits): Same.
34323         (DEFINE_INT_RANGE_INSTANCE): Same.
34324         (INT): Same.
34325         (UINT): Same.
34326         (SCHAR): Same.
34327         (UINT128): Same.
34328         (UCHAR): Same.
34329         (range): New.
34330         (tree_range): New.
34331         (range_int): New.
34332         (range_uint): New.
34333         (range_uint128): New.
34334         (range_uchar): New.
34335         (range_char): New.
34336         (build_range3): Convert to irange wide_int API.
34337         (range_tests_irange3): Same.
34338         (range_tests_int_range_max): Same.
34339         (range_tests_strict_enum): Same.
34340         (range_tests_misc): Same.
34341         (range_tests_nonzero_bits): Same.
34342         (range_tests_nan): Same.
34343         (range_tests_signed_zeros): Same.
34344         * value-range.h (Value_Range::Value_Range): Same.
34345         (irange::set): Same.
34346         (irange::nonzero_p): Same.
34347         (irange::contains_p): Same.
34348         (range_includes_zero_p): Same.
34349         (irange::set_nonzero): Same.
34350         (irange::set_zero): Same.
34351         (contains_zero_p): Same.
34352         (frange::contains_p): Same.
34353         * vr-values.cc
34354         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
34355         (bounds_of_var_in_loop): Same.
34356         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
34358 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34360         * value-range.cc (irange::irange_union): Rename to...
34361         (irange::union_): ...this.
34362         (irange::irange_intersect): Rename to...
34363         (irange::intersect): ...this.
34364         * value-range.h (irange::union_): Delete.
34365         (irange::intersect): Delete.
34367 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34369         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
34371 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34373         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
34374         ranger API.
34375         (compare_ranges): Delete.
34376         (compare_range_with_value): Delete.
34377         (bounds_of_var_in_loop): Tidy up by using ranger API.
34378         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
34379         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
34380         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
34381         strict_overflow_p and only_ranges.
34382         (simplify_using_ranges::legacy_fold_cond): Adjust call to
34383         legacy_fold_cond_overflow.
34384         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
34385         rename.
34386         (range_fits_type_p): Rename value_range to irange.
34387         * vr-values.h (range_fits_type_p): Adjust prototype.
34389 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34391         * value-range.cc (irange::irange_set_anti_range): Remove uses of
34392         tree_lower_bound and tree_upper_bound.
34393         (irange::verify_range): Same.
34394         (irange::operator==): Same.
34395         (irange::singleton_p): Same.
34396         * value-range.h (irange::tree_lower_bound): Delete.
34397         (irange::tree_upper_bound): Delete.
34398         (irange::lower_bound): Delete.
34399         (irange::upper_bound): Delete.
34400         (irange::zero_p): Remove uses of tree_lower_bound and
34401         tree_upper_bound.
34403 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34405         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
34406         kind() call.
34407         (determine_value_range): Same.
34408         (record_nonwrapping_iv): Same.
34409         (infer_loop_bounds_from_signedness): Same.
34410         (scev_var_range_cant_overflow): Same.
34411         * tree-vrp.cc (operand_less_p): Delete.
34412         * tree-vrp.h (operand_less_p): Delete.
34413         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
34414         (irange::value_inside_range): Delete.
34415         * value-range.h (vrange::kind): Delete.
34416         (irange::num_pairs): Remove check of m_kind.
34417         (irange::min): Delete.
34418         (irange::max): Delete.
34420 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
34422         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
34423         for vrange_storage.
34424         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
34425         (sbr_vector::grow): Same.
34426         (sbr_vector::set_bb_range): Same.
34427         (sbr_vector::get_bb_range): Same.
34428         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
34429         (sbr_sparse_bitmap::set_bb_range): Same.
34430         (sbr_sparse_bitmap::get_bb_range): Same.
34431         (block_range_cache::block_range_cache): Same.
34432         (ssa_global_cache::ssa_global_cache): Same.
34433         (ssa_global_cache::get_global_range): Same.
34434         (ssa_global_cache::set_global_range): Same.
34435         * gimple-range-cache.h: Same.
34436         * gimple-range-edge.cc
34437         (gimple_outgoing_range::gimple_outgoing_range): Same.
34438         (gimple_outgoing_range::switch_edge_range): Same.
34439         (gimple_outgoing_range::calc_switch_ranges): Same.
34440         * gimple-range-edge.h: Same.
34441         * gimple-range-infer.cc
34442         (infer_range_manager::infer_range_manager): Same.
34443         (infer_range_manager::get_nonzero): Same.
34444         (infer_range_manager::maybe_adjust_range): Same.
34445         (infer_range_manager::add_range): Same.
34446         * gimple-range-infer.h: Rename obstack_vrange_allocator to
34447         vrange_allocator.
34448         * tree-core.h (struct irange_storage_slot): Remove.
34449         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
34450         range_info a pointer to vrange_storage.
34451         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
34452         (range_info_alloc): Same.
34453         (range_info_free): Same.
34454         (range_info_get_range): Same.
34455         (range_info_set_range): Same.
34456         (get_nonzero_bits): Same.
34457         * value-query.cc (get_ssa_name_range_info): Same.
34458         * value-range-storage.cc (class vrange_internal_alloc): New.
34459         (class vrange_obstack_alloc): New.
34460         (class vrange_ggc_alloc): New.
34461         (vrange_allocator::vrange_allocator): New.
34462         (vrange_allocator::~vrange_allocator): New.
34463         (vrange_storage::alloc_slot): New.
34464         (vrange_allocator::alloc): New.
34465         (vrange_allocator::free): New.
34466         (vrange_allocator::clone): New.
34467         (vrange_allocator::clone_varying): New.
34468         (vrange_allocator::clone_undefined): New.
34469         (vrange_storage::alloc): New.
34470         (vrange_storage::set_vrange): Remove slot argument.
34471         (vrange_storage::get_vrange): Same.
34472         (vrange_storage::fits_p): Same.
34473         (vrange_storage::equal_p): New.
34474         (irange_storage::write_lengths_address): New.
34475         (irange_storage::lengths_address): New.
34476         (irange_storage_slot::alloc_slot): Remove.
34477         (irange_storage::alloc): New.
34478         (irange_storage_slot::irange_storage_slot): Remove.
34479         (irange_storage::irange_storage): New.
34480         (write_wide_int): New.
34481         (irange_storage_slot::set_irange): Remove.
34482         (irange_storage::set_irange): New.
34483         (read_wide_int): New.
34484         (irange_storage_slot::get_irange): Remove.
34485         (irange_storage::get_irange): New.
34486         (irange_storage_slot::size): Remove.
34487         (irange_storage::equal_p): New.
34488         (irange_storage_slot::num_wide_ints_needed): Remove.
34489         (irange_storage::size): New.
34490         (irange_storage_slot::fits_p): Remove.
34491         (irange_storage::fits_p): New.
34492         (irange_storage_slot::dump): Remove.
34493         (irange_storage::dump): New.
34494         (frange_storage_slot::alloc_slot): Remove.
34495         (frange_storage::alloc): New.
34496         (frange_storage_slot::set_frange): Remove.
34497         (frange_storage::set_frange): New.
34498         (frange_storage_slot::get_frange): Remove.
34499         (frange_storage::get_frange): New.
34500         (frange_storage_slot::fits_p): Remove.
34501         (frange_storage::equal_p): New.
34502         (frange_storage::fits_p): New.
34503         (ggc_vrange_allocator): New.
34504         (ggc_alloc_vrange_storage): New.
34505         * value-range-storage.h (class vrange_storage): Rewrite.
34506         (class irange_storage): Rewrite.
34507         (class frange_storage): Rewrite.
34508         (class obstack_vrange_allocator): Remove.
34509         (class ggc_vrange_allocator): Remove.
34510         (vrange_allocator::alloc_vrange): Remove.
34511         (vrange_allocator::alloc_irange): Remove.
34512         (vrange_allocator::alloc_frange): Remove.
34513         (ggc_alloc_vrange_storage): New.
34514         * value-range.h (class irange): Rename vrange_allocator to
34515         irange_storage.
34516         (class frange): Same.
34518 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
34520         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
34521         inc to avoid clobbering the carry flag.
34523 2023-04-30  Andrew Pinski  <apinski@marvell.com>
34525         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
34526         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
34528 2023-04-30  Andrew Pinski  <apinski@marvell.com>
34530         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
34531         Allow some builtin/internal function calls which
34532         are known not to trap/throw.
34533         (phiopt_worker::match_simplify_replacement):
34534         Use name instead of getting the lhs again.
34536 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
34538         * configure: Regenerate.
34539         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
34541 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
34543         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
34544         emit_insn_if_valid_for_reload.
34545         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
34546         to be recognized, also try emitting a parallel that clobbers
34547         TARGET_FLAGS_REGNUM, as applicable.
34549 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
34551         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
34552         to a define_insn.
34553         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
34554         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
34556 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
34558         * config/stormy16/stormy16.md (any_lshift): New code iterator.
34559         (any_or_plus): Likewise.
34560         (any_rotate): Likewise.
34561         (*<any_lshift>_and_internal): New define_insn_and_split to
34562         recognize a logical shift followed by an AND, and split it
34563         again after reload.
34564         (*swpn): New define_insn matching xstormy16's swpn.
34565         (*swpn_zext): New define_insn recognizing swpn followed by
34566         zero_extendqihi2, i.e. with the high byte set to zero.
34567         (*swpn_sext): Likewise, for swpn followed by cbw.
34568         (*swpn_sext_2): Likewise, for an alternate RTL form.
34569         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
34570         sequence is split in the correct place to recognize the *swpn_zext
34571         followed by any_or_plus (ior, xor or plus) instruction.
34573 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
34575         PR target/105525
34576         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
34577         (lm32-*-uclinux*): Likewise.
34579 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
34581         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
34582         for riscv_use_save_libcall.
34583         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
34584         (riscv_compute_frame_info): restructure to decouple stack allocation
34585         for rv32e w/o save-restore.
34587 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
34589         * doc/install.texi: Fix documentation typo
34591 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
34593         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
34594         (u): Add div/udiv cases.
34595         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
34596         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
34597         divmod expansion.
34598         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
34599         (thead_c906_tune_info): Likewise.
34600         (optimize_size_tune_info): Likewise.
34601         (riscv_use_divmod_expander): New function.
34602         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
34604 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
34606         * config/riscv/bitmanip.md: Added clmulr instruction.
34607         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
34608         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
34609         (type): Add clmul
34610         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
34611         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
34612         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
34613         functions to riscv-cmo.def.
34614         * config/riscv/generic.md: Add clmul to list of instructions
34615         using the generic_imul reservation.
34617 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
34619         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
34621 2023-04-28  Andrew Pinski  <apinski@marvell.com>
34623         PR tree-optimization/100958
34624         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
34625         (pass_phiopt::execute): Don't call two_value_replacement.
34626         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
34627         handle what two_value_replacement did.
34629 2023-04-28  Andrew Pinski  <apinski@marvell.com>
34631         * match.pd: Add patterns for
34632         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
34634 2023-04-28  Andrew Pinski  <apinski@marvell.com>
34636         * match.pd: Factor out the deciding the min/max from
34637         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
34638         pattern to ...
34639         * fold-const.cc (minmax_from_comparison): this new function.
34640         * fold-const.h (minmax_from_comparison): New prototype.
34642 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
34644         PR rtl-optimization/109476
34645         * lower-subreg.cc: Include explow.h for force_reg.
34646         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
34647         If decomposing a suitable LSHIFTRT and we're not splitting
34648         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
34649         instead of setting a high part SUBREG to zero, which helps combine.
34650         (decompose_multiword_subregs): Update call to resolve_shift_zext.
34652 2023-04-28  Richard Biener  <rguenther@suse.de>
34654         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
34655         consider scatters.
34656         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
34657         gather-scatter info and cost emulated scatters accordingly.
34658         (get_load_store_type): Support emulated scatters.
34659         (vectorizable_store): Likewise.  Emulate them by extracting
34660         scalar offsets and data, doing scalar stores.
34662 2023-04-28  Richard Biener  <rguenther@suse.de>
34664         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
34665         Tame down element extracts and scalar loads for gather/scatter
34666         similar to elementwise strided accesses.
34668 2023-04-28  Pan Li  <pan2.li@intel.com>
34669             kito-cheng  <kito.cheng@sifive.com>
34671         * config/riscv/vector.md: Add new define split to perform
34672         the simplification.
34674 2023-04-28  Richard Biener  <rguenther@suse.de>
34676         PR ipa/109652
34677         * ipa-param-manipulation.cc
34678         (ipa_param_body_adjustments::modify_expression): Allow
34679         conversion of a register to a non-register type.  Elide
34680         conversions inside BIT_FIELD_REFs.
34682 2023-04-28  Richard Biener  <rguenther@suse.de>
34684         PR tree-optimization/109644
34685         * tree-cfg.cc (verify_types_in_gimple_reference): Check
34686         register constraints on the outermost VIEW_CONVERT_EXPR
34687         only.  Do not allow register or invariant bases on
34688         multi-level or possibly variable index handled components.
34690 2023-04-28  Richard Biener  <rguenther@suse.de>
34692         * gimplify.cc (gimplify_compound_lval): When there's a
34693         non-register type produced by one of the handled component
34694         operations make sure we get a non-register base.
34696 2023-04-28  Richard Biener  <rguenther@suse.de>
34698         PR tree-optimization/108752
34699         * tree-vect-generic.cc (build_replicated_const): Rename
34700         to build_replicated_int_cst and move to tree.{h,cc}.
34701         (do_plus_minus): Adjust.
34702         (do_negate): Likewise.
34703         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
34704         arithmetic vector operations in lowered form.
34705         * tree.h (build_replicated_int_cst): Declare.
34706         * tree.cc (build_replicated_int_cst): Moved from
34707         tree-vect-generic.cc build_replicated_const.
34709 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34711         PR target/99195
34712         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
34713         (aarch64_rbit<mode><vczle><vczbe>): ... This.
34714         (neg<mode>2): Rename to...
34715         (neg<mode>2<vczle><vczbe>): ... This.
34716         (abs<mode>2): Rename to...
34717         (abs<mode>2<vczle><vczbe>): ... This.
34718         (aarch64_abs<mode>): Rename to...
34719         (aarch64_abs<mode><vczle><vczbe>): ... This.
34720         (one_cmpl<mode>2): Rename to...
34721         (one_cmpl<mode>2<vczle><vczbe>): ... This.
34722         (clrsb<mode>2): Rename to...
34723         (clrsb<mode>2<vczle><vczbe>): ... This.
34724         (clz<mode>2): Rename to...
34725         (clz<mode>2<vczle><vczbe>): ... This.
34726         (popcount<mode>2): Rename to...
34727         (popcount<mode>2<vczle><vczbe>): ... This.
34729 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
34731         * gimple-range-op.cc (class cfn_sqrt): New type.
34732         (op_cfn_sqrt): New variable.
34733         (gimple_range_op_handler::maybe_builtin_call): Handle
34734         CASE_CFN_SQRT{,_FN}.
34736 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
34737             Jakub Jelinek  <jakub@redhat.com>
34739         * value-range.h (frange_nextafter): Declare.
34740         * gimple-range-op.cc (class cfn_sincos): New.
34741         (op_cfn_sin, op_cfn_cos): New variables.
34742         (gimple_range_op_handler::maybe_builtin_call): Handle
34743         CASE_CFN_{SIN,COS}{,_FN}.
34745 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
34747         * target.def (libm_function_max_error): New target hook.
34748         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
34749         * doc/tm.texi: Regenerated.
34750         * targhooks.h (default_libm_function_max_error,
34751         glibc_linux_libm_function_max_error): Declare.
34752         * targhooks.cc: Include case-cfn-macros.h.
34753         (default_libm_function_max_error,
34754         glibc_linux_libm_function_max_error): New functions.
34755         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34756         * config/linux-protos.h (linux_libm_function_max_error): Declare.
34757         * config/linux.cc: Include target.h and targhooks.h.
34758         (linux_libm_function_max_error): New function.
34759         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
34760         (arc_libm_function_max_error): New function.
34761         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34762         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
34763         (ix86_libm_function_max_error): New function.
34764         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34765         * config/rs6000/rs6000-protos.h
34766         (rs6000_linux_libm_function_max_error): Declare.
34767         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
34768         and case-cfn-macros.h.
34769         (rs6000_linux_libm_function_max_error): New function.
34770         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34771         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34772         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
34773         (or1k_libm_function_max_error): New function.
34774         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
34776 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
34778         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
34779         Move detach value calls...
34780         (pass_harden_conditional_branches::execute): ... here.
34781         (pass_harden_compares::execute): Detach values before
34782         compares.
34784 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
34786         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
34787         (cml<addsub_as><mode>4): Likewise.
34788         (vec_addsub<mode>3): Likewise.
34789         (cadd<rot><mode>3): Likewise.
34790         (vec_fmaddsub<mode>4): Likewise.
34791         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
34793 2023-04-27  Andrew Pinski  <apinski@marvell.com>
34795         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
34796         up to 2 min/max expressions in the sequence/match code.
34798 2023-04-27  Andrew Pinski  <apinski@marvell.com>
34800         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
34801         COMPARISON.
34802         * tree-eh.cc (operation_could_trap_helper_p): Treate
34803         MIN_EXPR/MAX_EXPR similar as other comparisons.
34805 2023-04-27  Andrew Pinski  <apinski@marvell.com>
34807         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
34808         prototype.
34809         (cond_if_else_store_replacement): Likewise.
34810         (get_non_trapping): Likewise.
34811         (store_elim_worker): Move into ...
34812         (pass_cselim::execute): This.
34814 2023-04-27  Andrew Pinski  <apinski@marvell.com>
34816         * tree-ssa-phiopt.cc (two_value_replacement): Remove
34817         prototype.
34818         (match_simplify_replacement): Likewise.
34819         (factor_out_conditional_conversion): Likewise.
34820         (value_replacement): Likewise.
34821         (minmax_replacement): Likewise.
34822         (spaceship_replacement): Likewise.
34823         (cond_removal_in_builtin_zero_pattern): Likewise.
34824         (hoist_adjacent_loads): Likewise.
34825         (tree_ssa_phiopt_worker): Move into ...
34826         (pass_phiopt::execute): this.
34828 2023-04-27  Andrew Pinski  <apinski@marvell.com>
34830         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
34831         do_store_elim argument and split that part out to ...
34832         (store_elim_worker): This new function.
34833         (pass_cselim::execute): Call store_elim_worker.
34834         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
34836 2023-04-27  Jan Hubicka  <jh@suse.cz>
34838         * cfgloopmanip.h (unloop_loops): Export.
34839         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
34840         that no longer loop.
34841         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
34842         vectors of loops to unloop.
34843         (canonicalize_induction_variables): Free vectors here.
34844         (tree_unroll_loops_completely): Free vectors here.
34846 2023-04-27  Richard Biener  <rguenther@suse.de>
34848         PR tree-optimization/109170
34849         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
34850         Handle __builtin_expect and similar via cfn_pass_through_arg1
34851         and inspecting the calls fnspec.
34852         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
34853         and BUILT_IN_EXPECT_WITH_PROBABILITY.
34855 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
34857         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
34859 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
34861         PR tree-optimization/109639
34862         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
34863         (propagate_vr_across_jump_function): Same.
34864         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
34865         * ipa-prop.h (ipa_range_set_and_normalize): New.
34866         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
34868 2023-04-27  Richard Biener  <rguenther@suse.de>
34870         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
34871         create a CTOR operand in the result when simplifying GIMPLE.
34873 2023-04-27  Richard Biener  <rguenther@suse.de>
34875         * gimplify.cc (gimplify_compound_lval): When the base
34876         gimplified to a register make sure to split up chains
34877         of operations.
34879 2023-04-27  Richard Biener  <rguenther@suse.de>
34881         PR ipa/109607
34882         * ipa-param-manipulation.h
34883         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
34884         argument.
34885         * ipa-param-manipulation.cc
34886         (ipa_param_body_adjustments::modify_expression): Likewise.
34887         When we need a conversion and the replacement is a register
34888         split the conversion out.
34889         (ipa_param_body_adjustments::modify_assignment): Pass
34890         extra_stmts to RHS modify_expression.
34892 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
34894         * doc/extend.texi (Zero Length): Describe example.
34896 2023-04-27  Richard Biener  <rguenther@suse.de>
34898         PR tree-optimization/109594
34899         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
34900         what we rewrite to a register based on the above.
34902 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
34904         * config/riscv/riscv.cc: Fix whitespace.
34905         * config/riscv/sync.md: Fix whitespace.
34907 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
34909         PR tree-optimization/108697
34910         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
34911         not clear the vector on an out of range query.
34912         (ssa_cache::dump): Use dump_range_query instead of get_range.
34913         (ssa_cache::dump_range_query): New.
34914         (ssa_lazy_cache::dump_range_query): New.
34915         (ssa_lazy_cache::set_range): New.
34916         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
34917         (class ssa_lazy_cache): New.
34918         (ssa_lazy_cache::ssa_lazy_cache): New.
34919         (ssa_lazy_cache::~ssa_lazy_cache): New.
34920         (ssa_lazy_cache::get_range): New.
34921         (ssa_lazy_cache::clear_range): New.
34922         (ssa_lazy_cache::clear): New.
34923         (ssa_lazy_cache::dump): New.
34924         * gimple-range-path.cc (path_range_query::path_range_query): Do
34925         not allocate a ssa_cache object nor has_cache bitmap.
34926         (path_range_query::~path_range_query): Do not free objects.
34927         (path_range_query::clear_cache): Remove.
34928         (path_range_query::get_cache): Adjust.
34929         (path_range_query::set_cache): Remove.
34930         (path_range_query::dump): Don't call through a pointer.
34931         (path_range_query::internal_range_of_expr): Set cache directly.
34932         (path_range_query::reset_path): Clear cache directly.
34933         (path_range_query::ssa_range_in_phi): Fold with globals only.
34934         (path_range_query::compute_ranges_in_phis): Simply set range.
34935         (path_range_query::compute_ranges_in_block): Call cache directly.
34936         * gimple-range-path.h (class path_range_query): Replace bitmap
34937         and cache pointer with lazy cache object.
34938         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
34940 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
34942         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
34943         (ssa_cache::~ssa_cache): Rename.
34944         (ssa_cache::has_range): New.
34945         (ssa_cache::get_range): Rename.
34946         (ssa_cache::set_range): Rename.
34947         (ssa_cache::clear_range): Rename.
34948         (ssa_cache::clear): Rename.
34949         (ssa_cache::dump): Rename and use get_range.
34950         (ranger_cache::get_global_range): Use get_range and set_range.
34951         (ranger_cache::range_of_def): Use get_range.
34952         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
34953         (class ranger_cache): Use ssa_cache.
34954         * gimple-range-path.cc (path_range_query::path_range_query): Use
34955         ssa_cache.
34956         (path_range_query::get_cache): Use get_range.
34957         (path_range_query::set_cache): Use set_range.
34958         * gimple-range-path.h (class path_range_query): Use ssa_cache.
34959         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
34960         (assume_query::range_of_expr): Use get_range.
34961         (assume_query::assume_query): Use set_range.
34962         (assume_query::calculate_op): Use get_range and set_range.
34963         * gimple-range.h (class assume_query): Use ssa_cache.
34965 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
34967         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
34968         and local to optionally zero memory.
34969         (br_vector::grow): Only zero memory if flag is set.
34970         (class sbr_lazy_vector): New.
34971         (sbr_lazy_vector::sbr_lazy_vector): New.
34972         (sbr_lazy_vector::set_bb_range): New.
34973         (sbr_lazy_vector::get_bb_range): New.
34974         (sbr_lazy_vector::bb_range_p): New.
34975         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
34976         * gimple-range-gori.cc (gori_map::calculate_gori): Use
34977         param_vrp_switch_limit.
34978         (gori_compute::gori_compute): Use param_vrp_switch_limit.
34979         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
34980         (vrp_switch_limit): Rename from evrp_switch_limit.
34981         (vrp_vector_threshold): New.
34983 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
34985         * value-relation.cc (dom_oracle::query_relation): Check early for lack
34986         of any relation.
34987         * value-relation.h (equiv_oracle::has_equiv_p): New.
34989 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
34991         PR tree-optimization/109417
34992         * gimple-range-gori.cc (range_def_chain::register_dependency):
34993         Save the ssa version number, not the pointer.
34994         (gori_compute::may_recompute_p): No need to check if a dependency
34995         is in the free list.
34996         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
34997         fields to be unsigned int instead of trees.
34998         (ange_def_chain::depend1): Adjust.
34999         (ange_def_chain::depend2): Adjust.
35000         * gimple-range.h: Include "ssa.h" to inline ssa_name().
35002 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
35004         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
35005         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
35006         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
35008 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
35010         PR target/104338
35011         * config/riscv/riscv-protos.h: Add helper function stubs.
35012         * config/riscv/riscv.cc: Add helper functions for subword masking.
35013         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
35014         -mno-inline-atomics.
35015         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
35016         fetch_and_nand, CAS, and exchange ops.
35017         * doc/invoke.texi: Add blurb regarding new command-line flags
35018         -minline-atomics and -mno-inline-atomics.
35020 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35022         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
35023         Reimplement using standard RTL codes instead of unspec.
35024         (aarch64_rshrn2<mode>_insn_be): Likewise.
35025         (aarch64_rshrn2<mode>): Adjust for the above.
35026         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
35028 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35030         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
35031         with standard RTL codes instead of an UNSPEC.
35032         (aarch64_rshrn<mode>_insn_be): Likewise.
35033         (aarch64_rshrn<mode>): Adjust for the above.
35034         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
35036 2023-04-26  Pan Li  <pan2.li@intel.com>
35037             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35039         * config/riscv/riscv.cc (riscv_classify_address): Allow
35040         const0_rtx for the RVV load/store.
35042 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35044         * range-op.cc (range_op_cast_tests): Remove legacy support.
35045         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
35046         * value-range.cc (irange::operator=): Same.
35047         (get_legacy_range): Same.
35048         (irange::copy_legacy_to_multi_range): Delete.
35049         (irange::copy_to_legacy): Delete.
35050         (irange::irange_set_anti_range): Delete.
35051         (irange::set): Remove legacy support.
35052         (irange::verify_range): Same.
35053         (irange::legacy_lower_bound): Delete.
35054         (irange::legacy_upper_bound): Delete.
35055         (irange::legacy_equal_p): Delete.
35056         (irange::operator==): Remove legacy support.
35057         (irange::singleton_p): Same.
35058         (irange::value_inside_range): Same.
35059         (irange::contains_p): Same.
35060         (intersect_ranges): Delete.
35061         (irange::legacy_intersect): Delete.
35062         (union_ranges): Delete.
35063         (irange::legacy_union): Delete.
35064         (irange::legacy_verbose_union_): Delete.
35065         (irange::legacy_verbose_intersect): Delete.
35066         (irange::irange_union): Remove legacy support.
35067         (irange::irange_intersect): Same.
35068         (irange::intersect): Same.
35069         (irange::invert): Same.
35070         (ranges_from_anti_range): Delete.
35071         (gt_pch_nx): Adjust for legacy removal.
35072         (gt_ggc_mx): Same.
35073         (range_tests_legacy): Delete.
35074         (range_tests_misc): Adjust for legacy removal.
35075         (range_tests): Same.
35076         * value-range.h (class irange): Same.
35077         (irange::legacy_mode_p): Delete.
35078         (ranges_from_anti_range): Delete.
35079         (irange::nonzero_p): Adjust for legacy removal.
35080         (irange::lower_bound): Same.
35081         (irange::upper_bound): Same.
35082         (irange::union_): Same.
35083         (irange::intersect): Same.
35084         (irange::set_nonzero): Same.
35085         (irange::set_zero): Same.
35086         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
35088 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35090         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
35091         of range_has_numeric_bounds_p with irange API.
35092         (range_has_numeric_bounds_p): Delete.
35093         * value-range.h (range_has_numeric_bounds_p): Delete.
35095 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35097         * tree-data-ref.cc (compute_distributive_range): Replace uses of
35098         range_int_cst_p with irange API.
35099         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
35100         * tree-vrp.h (range_int_cst_p): Delete.
35101         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
35102         range_int_cst_p with irange API.
35103         (vr_set_zero_nonzero_bits): Same.
35104         (range_fits_type_p): Same.
35105         (simplify_using_ranges::simplify_casted_cond): Same.
35106         * tree-vrp.cc (range_int_cst_p): Remove.
35108 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35110         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
35112 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35114         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
35115         API uses to new API.
35116         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
35117         * internal-fn.cc (get_min_precision): Same.
35118         * match.pd: Same.
35119         * tree-affine.cc (expr_to_aff_combination): Same.
35120         * tree-data-ref.cc (dr_step_indicator): Same.
35121         * tree-dfa.cc (get_ref_base_and_extent): Same.
35122         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
35123         * tree-ssa-phiopt.cc (two_value_replacement): Same.
35124         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
35125         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
35126         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
35127         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
35128         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
35129         * tree.cc (get_range_pos_neg): Same.
35131 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35133         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
35134         vrange::dump instead of ad-hoc dumper.
35135         * tree-ssa-strlen.cc (dump_strlen_info): Same.
35136         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
35137         dump_generic_node.
35139 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35141         * range-op.cc (operator_cast::op1_range): Use
35142         create_possibly_reversed_range.
35143         (operator_bitwise_and::simple_op1_range_solver): Same.
35144         * value-range.cc (swap_out_of_order_endpoints): Delete.
35145         (irange::set): Remove call to swap_out_of_order_endpoints.
35147 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35149         * builtins.cc (determine_block_size): Convert use of legacy API to
35150         get_legacy_range.
35151         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
35152         (array_bounds_checker::check_array_ref): Same.
35153         * gimple-ssa-warn-restrict.cc
35154         (builtin_memref::extend_offset_range): Same.
35155         * ipa-cp.cc (ipcp_store_vr_results): Same.
35156         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
35157         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
35158         (ipa_write_jump_function): Same.
35159         * pointer-query.cc (get_size_range): Same.
35160         * tree-data-ref.cc (split_constant_offset): Same.
35161         * tree-ssa-strlen.cc (get_range): Same.
35162         (maybe_diag_stxncpy_trunc): Same.
35163         (strlen_pass::get_len_or_size): Same.
35164         (strlen_pass::count_nonzero_bytes_addr): Same.
35165         * tree-vect-patterns.cc (vect_get_range_info): Same.
35166         * value-range.cc (irange::maybe_anti_range): Remove.
35167         (get_legacy_range): New.
35168         (irange::copy_to_legacy): Use get_legacy_range.
35169         (ranges_from_anti_range): Same.
35170         * value-range.h (class irange): Remove maybe_anti_range.
35171         (get_legacy_range): New.
35172         * vr-values.cc (check_for_binary_op_overflow): Convert use of
35173         legacy API to get_legacy_range.
35174         (compare_ranges): Same.
35175         (compare_range_with_value): Same.
35176         (bounds_of_var_in_loop): Same.
35177         (find_case_label_ranges): Same.
35178         (simplify_using_ranges::simplify_switch_using_ranges): Same.
35180 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35182         * value-range-pretty-print.cc (vrange_printer::visit): Remove
35183         constant_p use.
35184         * value-range.cc (irange::constant_p): Remove.
35185         (irange::get_nonzero_bits_from_range): Remove constant_p use.
35186         * value-range.h (class irange): Remove constant_p.
35187         (irange::num_pairs): Remove constant_p use.
35189 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35191         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
35192         symbolics support.
35193         (irange::set): Same.
35194         (irange::legacy_lower_bound): Same.
35195         (irange::legacy_upper_bound): Same.
35196         (irange::contains_p): Same.
35197         (range_tests_legacy): Same.
35198         (irange::normalize_addresses): Remove.
35199         (irange::normalize_symbolics): Remove.
35200         (irange::symbolic_p): Remove.
35201         * value-range.h (class irange): Remove symbolic_p,
35202         normalize_symbolics, and normalize_addresses.
35203         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
35204         Remove symbolics support.
35206 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35208         * value-range.cc (irange::may_contain_p): Remove.
35209         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
35210         usage with contains_p.
35211         * vr-values.cc (compare_range_with_value): Same.
35213 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35215         * tree-vrp.cc (supported_types_p): Remove.
35216         (defined_ranges_p): Remove.
35217         (range_fold_binary_expr): Remove.
35218         (range_fold_unary_expr): Remove.
35219         * tree-vrp.h (range_fold_unary_expr): Remove.
35220         (range_fold_binary_expr): Remove.
35222 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35224         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
35225         (ipa_value_range_from_jfunc): Same.
35226         (propagate_vr_across_jump_function): Same.
35227         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
35228         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
35229         * vr-values.cc (bounds_of_var_in_loop): Same.
35231 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35233         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
35234         Add irange argument.
35235         (check_out_of_bounds_and_warn): Remove check for vr.
35236         (array_bounds_checker::check_array_ref): Remove pointer qualifier
35237         for vr and adjust accordingly.
35238         * gimple-array-bounds.h (get_value_range): Add irange argument.
35239         * value-query.cc (class equiv_allocator): Delete.
35240         (range_query::get_value_range): Delete.
35241         (range_query::range_query): Remove allocator access.
35242         (range_query::~range_query): Same.
35243         * value-query.h (get_value_range): Delete.
35244         * vr-values.cc
35245         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
35246         call to get_value_range.
35247         (check_for_binary_op_overflow): Same.
35248         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
35249         (simplify_using_ranges::simplify_abs_using_ranges): Same.
35250         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
35251         (simplify_using_ranges::simplify_casted_cond): Same.
35252         (simplify_using_ranges::simplify_switch_using_ranges): Same.
35253         (simplify_using_ranges::two_valued_val_range_p): Same.
35255 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35257         * vr-values.cc
35258         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
35259         Rename to...
35260         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
35261         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
35262         (simplify_using_ranges::legacy_fold_cond): ...this.
35263         (simplify_using_ranges::fold_cond): Rename
35264         vrp_evaluate_conditional_warnv_with_ops to
35265         legacy_fold_cond_overflow.
35266         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
35267         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
35268         legacy_fold_cond_overflow respectively.
35270 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
35272         * vr-values.cc (get_vr_for_comparison): Remove.
35273         (compare_name_with_value): Same.
35274         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
35275         compare_name_with_value.
35276         * vr-values.h: Remove compare_name_with_value.
35277         Remove get_vr_for_comparison.
35279 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
35281         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
35282         (bswapsi2): New define_insn.
35283         (swaphi): New define_insn to exchange two registers (swpw).
35284         (define_peephole2): Recognize exchange of registers as swaphi.
35286 2023-04-26  Richard Biener  <rguenther@suse.de>
35288         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
35289         Avoid last_stmt.
35290         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
35291         * predict.cc (apply_return_prediction): Likewise.
35292         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
35293         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
35294         (make_edges_bb): Likewise.
35295         (make_cond_expr_edges): Likewise.
35296         (end_recording_case_labels): Likewise.
35297         (make_gimple_asm_edges): Likewise.
35298         (cleanup_dead_labels): Likewise.
35299         (group_case_labels): Likewise.
35300         (gimple_can_merge_blocks_p): Likewise.
35301         (gimple_merge_blocks): Likewise.
35302         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
35303         (gimple_duplicate_sese_tail): Avoid last_stmt.
35304         (find_loop_dist_alias): Likewise.
35305         (gimple_block_ends_with_condjump_p): Likewise.
35306         (gimple_purge_dead_eh_edges): Likewise.
35307         (gimple_purge_dead_abnormal_call_edges): Likewise.
35308         (pass_warn_function_return::execute): Likewise.
35309         (execute_fixup_cfg): Likewise.
35310         * tree-eh.cc (redirect_eh_edge_1): Likewise.
35311         (pass_lower_resx::execute): Likewise.
35312         (pass_lower_eh_dispatch::execute): Likewise.
35313         (cleanup_empty_eh): Likewise.
35314         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
35315         (predicate_bbs): Likewise.
35316         (ifcvt_split_critical_edges): Likewise.
35317         * tree-loop-distribution.cc (create_edge_for_control_dependence):
35318         Likewise.
35319         (loop_distribution::transform_reduction_loop): Likewise.
35320         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
35321         (try_transform_to_exit_first_loop_alt): Likewise.
35322         (transform_to_exit_first_loop): Likewise.
35323         (create_parallel_loop): Likewise.
35324         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
35325         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
35326         (eliminate_unnecessary_stmts): Likewise.
35327         * tree-ssa-dom.cc
35328         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
35329         Likewise.
35330         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
35331         (pass_tree_ifcombine::execute): Likewise.
35332         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
35333         (should_duplicate_loop_header_p): Likewise.
35334         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
35335         (tree_estimate_loop_size): Likewise.
35336         (try_unroll_loop_completely): Likewise.
35337         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
35338         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
35339         (canonicalize_loop_ivs): Likewise.
35340         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
35341         (bound_difference): Likewise.
35342         (number_of_iterations_popcount): Likewise.
35343         (number_of_iterations_cltz): Likewise.
35344         (number_of_iterations_cltz_complement): Likewise.
35345         (simplify_using_initial_conditions): Likewise.
35346         (number_of_iterations_exit_assumptions): Likewise.
35347         (loop_niter_by_eval): Likewise.
35348         (estimate_numbers_of_iterations): Likewise.
35350 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35352         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
35354 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
35356         PR target/108758
35357         * config/rs6000/rs6000-builtins.def
35358         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
35359         __builtin_vsx_scalar_cmp_exp_qp_lt,
35360         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
35361         to power9-vector.
35363 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
35365         PR target/109069
35366         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
35367         easy_vector_constant with const_vector_each_byte_same, add
35368         handlings in preparation for !easy_vector_constant, and update
35369         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
35370         * config/rs6000/predicates.md (const_vector_each_byte_same): New
35371         predicate.
35373 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35375         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
35376         (*pred_ltge<mode>_merge_tie_mask): Ditto.
35377         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
35378         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
35379         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
35380         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
35381         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
35383 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35385         * config/riscv/vector.md: Fix redundant vmv1r.v.
35387 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35389         * config/riscv/vector.md: Fix RA constraint.
35391 2023-04-26  Pan Li  <pan2.li@intel.com>
35393         PR target/109272
35394         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
35395         check for vn_reference equal.
35397 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35399         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
35400         auto-vectorization preference.
35401         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
35402         auto-vectorization.
35403         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
35405 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
35407         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
35408         and bclridisi_nottwobits patterns.
35409         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
35410         predicate to avoid splitting arith constants.
35411         (const_nottwobits_not_arith_operand): New predicate.
35413 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
35415         * recog.cc (peep2_attempt, peep2_update_life): Correct
35416         head-comment description of parameter match_len.
35418 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
35420         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
35421         riscv_split_symbol() drop in_splitter arg.
35422         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
35423         riscv_split_symbol() drop in_splitter arg.
35424         riscv_force_temporary() drop in_splitter arg.
35425         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
35426         riscv_split_symbol() drop in_splitter arg.
35428 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
35430         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
35431         superfluous debug temporaries for single GIMPLE assignments.
35433 2023-04-25  Richard Biener  <rguenther@suse.de>
35435         PR tree-optimization/109609
35436         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
35437         Clarify semantics.
35438         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
35439         the size given by arg_max_access_size_given_by_arg_p as
35440         maximum, not exact, size.
35442 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35444         PR target/99195
35445         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
35446         (orn<mode>3<vczle><vczbe>): ... This.
35447         (bic<mode>3): Rename to...
35448         (bic<mode>3<vczle><vczbe>): ... This.
35449         (<su><maxmin><mode>3): Rename to...
35450         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
35452 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35454         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
35455         * config/aarch64/iterators.md (VQDIV): New mode iterator.
35456         (vnx2di): New mode attribute.
35458 2023-04-25  Richard Biener  <rguenther@suse.de>
35460         PR rtl-optimization/109585
35461         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
35463 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
35465         PR target/109566
35466         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
35467         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
35468         is larger than signed int maximum.
35470 2023-04-25  Martin Liska  <mliska@suse.cz>
35472         * doc/gcov.texi: Document the new "calls" field and document
35473         the API bump. Mention also "block_ids" for lines.
35474         * gcov.cc (output_intermediate_json_line): Output info about
35475         calls and extend branches as well.
35476         (generate_results): Bump version to 2.
35477         (output_line_details): Use block ID instead of a non-sensual
35478         index.
35480 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
35482         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
35483         length attribute for the first (memory operand) alternative.
35485 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
35487         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
35488         * config/aarch64/constraints.md: Make "Umn" relaxed memory
35489         constraint.
35490         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
35492 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
35494         * value-range.cc (frange::set): Adjust constructor.
35495         * value-range.h (nan_state::nan_state): Replace default
35496         constructor with one taking an argument.
35498 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
35500         * ipa-cp.cc (ipa_range_contains_p): New.
35501         (decide_whether_version_node): Use it.
35503 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
35505         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
35506         simplify two successive VEC_PERM_EXPRs with same VLA mask,
35507         where mask chooses elements in reverse order.
35509 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35511         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
35512         and support diamond shaped basic block form.
35513         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
35515 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35517         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
35518         Instead of calling last_and_only_stmt, look for the last statement
35519         manually.
35521 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35523         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
35524         New function.
35525         (match_simplify_replacement): Call
35526         empty_bb_or_one_feeding_into_p instead of doing it inline.
35528 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35530         PR tree-optimization/68894
35531         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
35532         continue for the do_hoist_loads diamond case.
35534 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35536         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
35537         code for better code readability.
35539 2023-04-24  Andrew Pinski  <apinski@marvell.com>
35541         PR tree-optimization/109604
35542         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
35543         diamond form check from ...
35544         (minmax_replacement): Here.
35546 2023-04-24  Patrick Palka  <ppalka@redhat.com>
35548         * tree.cc (strip_array_types): Don't define here.
35549         (is_typedef_decl): Don't define here.
35550         (typedef_variant_p): Don't define here.
35551         * tree.h (strip_array_types): Define here.
35552         (is_typedef_decl): Define here.
35553         (typedef_variant_p): Define here.
35555 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
35557         * doc/generic.texi (OpenMP): Add != to allowed
35558         conditions and state that vars can be unsigned.
35559         * tree.def (OMP_FOR): Likewise.
35561 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35563         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
35565 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
35567         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
35568         Remove explicit Solaris 11 references.
35569         Markup fixes.
35570         (Options specification, --with-gnu-as): as and gas always differ
35571         on Solaris.
35572         Remove /usr/ccs/bin reference.
35573         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
35574         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
35575         (*-*-solaris2*): ... here.
35576         Update bundled GCC versions.
35577         Don't refer to pre-built binaries.
35578         Remove /bin/sh warning.
35579         Update assembler, linker recommendations.
35580         Document GNAT bootstrap compiler.
35581         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
35582         (sparc64-*-solaris2*): Move content...
35583         (sparcv9-*-solaris2*): ...here.
35584         Add GDC for 64-bit bootstrap compilers.
35586 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35588         PR target/109406
35589         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
35590         case.
35591         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
35592         pattern.
35594 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35596         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
35597         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
35598         (aarch64_<su>abal2<mode>): New define_expand.
35599         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
35600         (aarch64_rtx_costs): Handle ABD rtxes.
35601         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
35602         * config/aarch64/iterators.md (ABAL2): Delete.
35603         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
35605 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35607         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
35608         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
35609         (<sur>sadv16qi): Rename to...
35610         (<su>sadv16qi): ... This.  Adjust for the above.
35611         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
35612         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
35613         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
35614         * config/aarch64/iterators.md (ABAL): Delete.
35615         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
35617 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35619         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
35620         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
35621         (aarch64_<su>abdl2<mode>): New define_expand.
35622         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
35623         * config/aarch64/iterators.md (ABDL2): Delete.
35624         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
35626 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35628         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
35629         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
35630         unspec.
35631         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
35632         * config/aarch64/iterators.md (ABDL): Delete.
35633         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
35635 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35637         * config/aarch64/aarch64-simd.md
35638         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
35640 2023-04-24  Richard Biener  <rguenther@suse.de>
35642         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
35643         last_stmt.
35644         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
35645         Likewise.
35646         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
35647         (set_switch_stmt_execution_predicate): Likewise.
35648         (phi_result_unknown_predicate): Likewise.
35649         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
35650         (ipa_analyze_indirect_call_uses): Likewise.
35651         * predict.cc (predict_iv_comparison): Likewise.
35652         (predict_extra_loop_exits): Likewise.
35653         (predict_loops): Likewise.
35654         (tree_predict_by_opcode): Likewise.
35655         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
35656         Likewise.
35657         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
35658         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
35659         (replace_phi_edge_with_variable): Likewise.
35660         (two_value_replacement): Likewise.
35661         (value_replacement): Likewise.
35662         (minmax_replacement): Likewise.
35663         (spaceship_replacement): Likewise.
35664         (cond_removal_in_builtin_zero_pattern): Likewise.
35665         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
35666         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
35667         (vn_phi_lookup): Likewise.
35668         (vn_phi_insert): Likewise.
35669         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
35670         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
35671         Likewise.
35672         (back_threader_profitability::possibly_profitable_path_p):
35673         Likewise.
35674         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
35675         Likewise.
35676         * tree-switch-conversion.cc (pass_convert_switch::execute):
35677         Likewise.
35678         (pass_lower_switch<O0>::execute): Likewise.
35679         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
35680         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
35681         * tree-vect-slp.cc (vect_slp_function): Likewise.
35682         * tree-vect-stmts.cc (cfun_returns): Likewise.
35683         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
35684         (vect_loop_dist_alias_call): Likewise.
35686 2023-04-24  Richard Biener  <rguenther@suse.de>
35688         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
35690 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35692         * config/riscv/riscv-vsetvl.cc
35693         (vector_infos_manager::all_avail_in_compatible_p): New function.
35694         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
35695         * config/riscv/riscv-vsetvl.h: New function.
35697 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35699         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
35700         comment for cleanup_insns.
35702 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35704         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
35705         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
35706         with the fault first load property.
35708 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35710         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
35711         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
35713 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35715         PR target/99195
35716         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
35717         (aarch64_addp<mode><vczle><vczbe>): ... This.
35719 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
35721         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
35722         provide reasonable values for common arithmetic operations and
35723         immediate operands (in several machine modes).
35725 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
35727         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
35728         format specifier to output high_part register name of SImode reg.
35729         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
35730         (zero_extendqihi2): Fix lengths, consistent formatting and add
35731         "and Rx,#255" alternative, for documentation purposes.
35732         (zero_extendhisi2): New define_insn.
35734 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
35736         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
35737         SImode shifts by two by performing a single bit SImode shift twice.
35739 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
35741         PR tree-optimization/109593
35742         * value-range.cc (frange::operator==): Handle NANs.
35744 2023-04-23  liuhongt  <hongtao.liu@intel.com>
35746         PR rtl-optimization/108707
35747         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
35748         GENERAL_REGS when preferred reg_class is not known.
35750 2023-04-22  Andrew Pinski  <apinski@marvell.com>
35752         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
35753         Change the code around slightly to move diamond
35754         handling for do_store_elim/do_hoist_loads out of
35755         the big if/else.
35757 2023-04-22  Andrew Pinski  <apinski@marvell.com>
35759         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
35760         Remove check on empty_block_p.
35762 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
35764         PR bootstrap/109589
35765         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
35766         * realmpfr.h (class auto_mpfr): Likewise.
35768 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
35770         PR tree-optimization/109583
35771         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
35772         if vec_mode is not VECTOR_MODE_P.
35774 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
35775             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
35777         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
35778         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
35779         loop profile and bounds after header duplication.
35780         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
35781         Break out from try_peel_loop; fix handling of 0 iterations.
35782         (try_peel_loop): Use adjust_loop_info_after_peeling.
35784 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
35786         PR tree-optimization/109546
35787         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
35788         not fold conditions with ADDR_EXPR early.
35790 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35792         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
35793         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
35794         for umax.
35795         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
35796         (*aarch64_<optab><mode>3_zero): Define.
35797         (*aarch64_<optab><mode>3_cssc): Likewise.
35798         * config/aarch64/iterators.md (maxminand): New code attribute.
35800 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35802         PR target/108779
35803         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
35804         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
35805         Define prototype.
35806         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
35807         (aarch64_override_options_internal): Handle the above.
35808         (aarch64_output_load_tp): New function.
35809         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
35810         aarch64_output_load_tp.
35811         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
35812         (mtp=): New option.
35813         * doc/invoke.texi (AArch64 Options): Document -mtp=.
35815 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35817         PR target/99195
35818         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
35819         (add_vec_concat_subst_be): Likewise.
35820         (vczle): Likewise.
35821         (vczbe): Likewise.
35822         (add<mode>3): Rename to...
35823         (add<mode>3<vczle><vczbe>): ... This.
35824         (sub<mode>3): Rename to...
35825         (sub<mode>3<vczle><vczbe>): ... This.
35826         (mul<mode>3): Rename to...
35827         (mul<mode>3<vczle><vczbe>): ... This.
35828         (and<mode>3): Rename to...
35829         (and<mode>3<vczle><vczbe>): ... This.
35830         (ior<mode>3): Rename to...
35831         (ior<mode>3<vczle><vczbe>): ... This.
35832         (xor<mode>3): Rename to...
35833         (xor<mode>3<vczle><vczbe>): ... This.
35834         * config/aarch64/iterators.md (VDZ): Define.
35836 2023-04-21  Patrick Palka  <ppalka@redhat.com>
35838         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
35839         and type_p.
35841 2023-04-21  Jan Hubicka  <jh@suse.cz>
35843         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
35844         commit.
35846 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
35848         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
35849         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
35851 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
35853         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
35854         force_reg instead of copy_to_mode_reg.
35855         (aarch64_expand_vector_init): Likewise.
35857 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
35859         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
35860         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
35861         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
35862         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
35863         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
35864         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
35865         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
35866         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
35867         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
35868         * config/i386/predicates.md (index_register_operand):
35869         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
35870         * config/i386/i386.cc (ix86_legitimate_address_p): Use
35871         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
35872         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
35874 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
35875             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
35877         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
35878         latch.
35880 2023-04-21  Richard Biener  <rguenther@suse.de>
35882         * is-a.h (safe_is_a): New.
35884 2023-04-21  Richard Biener  <rguenther@suse.de>
35886         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
35887         (gphi_iterator::operator*): Likewise.
35889 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
35890             Michal Jires  <michal@jires.eu>
35892         * ipa-inline.cc (class inline_badness): New class.
35893         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
35894         of sreal.
35895         (update_edge_key): Update.
35896         (lookup_recursive_calls): Likewise.
35897         (recursive_inlining): Likewise.
35898         (add_new_edges_to_heap): Likewise.
35899         (inline_small_functions): Likewise.
35901 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
35903         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
35905 2023-04-21  Richard Biener  <rguenther@suse.de>
35907         PR tree-optimization/109573
35908         * tree-vect-loop.cc (vectorizable_live_operation): Allow
35909         unhandled SSA copy as well.  Demote assert to checking only.
35911 2023-04-21  Richard Biener  <rguenther@suse.de>
35913         * df-core.cc (df_analyze): Compute RPO on the reverse graph
35914         for DF_BACKWARD problems.
35915         (loop_post_order_compute): Rename to ...
35916         (loop_rev_post_order_compute): ... this, compute a RPO.
35917         (loop_inverted_post_order_compute): Rename to ...
35918         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
35919         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
35920         problems, RPO on the inverted graph for DF_BACKWARD.
35922 2023-04-21  Richard Biener  <rguenther@suse.de>
35924         * cfganal.h (inverted_rev_post_order_compute): Rename
35925         from ...
35926         (inverted_post_order_compute): ... this.  Add struct function
35927         argument, change allocation to a C array.
35928         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
35929         * lcm.cc (compute_antinout_edge): Adjust.
35930         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
35931         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
35932         * tree-ssa-pre.cc (compute_antic): Likewise.
35934 2023-04-21  Richard Biener  <rguenther@suse.de>
35936         * df.h (df_d::postorder_inverted): Change back to int *,
35937         clarify comments.
35938         * df-core.cc (rest_of_handle_df_finish): Adjust.
35939         (df_analyze_1): Likewise.
35940         (df_analyze): For DF_FORWARD problems use RPO on the forward
35941         graph.  Adjust.
35942         (loop_inverted_post_order_compute): Adjust API.
35943         (df_analyze_loop): Adjust.
35944         (df_get_n_blocks): Likewise.
35945         (df_get_postorder): Likewise.
35947 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35949         PR target/108270
35950         * config/riscv/riscv-vsetvl.cc
35951         (vector_infos_manager::all_empty_predecessor_p): New function.
35952         (pass_vsetvl::backward_demand_fusion): Ditto.
35953         * config/riscv/riscv-vsetvl.h: Ditto.
35955 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
35957         PR target/109582
35958         * config/riscv/generic.md: Change standard names to insn names.
35960 2023-04-21  Richard Biener  <rguenther@suse.de>
35962         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
35963         (compute_laterin): Use RPO.
35964         (compute_available): Likewise.
35966 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
35968         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
35970 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35972         PR target/109547
35973         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
35974         (vector_insn_info::skip_avl_compatible_p): Ditto.
35975         (vector_insn_info::merge): Remove default value.
35976         (pass_vsetvl::compute_local_backward_infos): Ditto.
35977         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
35978         * config/riscv/riscv-vsetvl.h: Ditto.
35980 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
35982         * doc/extend.texi (Common Function Attributes): Remove duplicate
35983         word.
35985 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
35987         PR tree-optimization/109564
35988         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
35989         UNDEFINED range names when deciding if all PHI arguments are the same,
35991 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
35993         PR tree-optimization/109011
35994         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
35995         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
35996         .CTZ (X) = PREC - .POPCOUNT (X | -X).
35998 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
36000         * lra-constraints.cc (match_reload): Exclude some hard regs for
36001         multi-reg inout reload pseudos used in asm in different mode.
36003 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
36005         * config/arm/arm.cc (thumb1_legitimate_address_p):
36006         Use VIRTUAL_REGISTER_P predicate.
36007         (arm_eliminable_register): Ditto.
36008         * config/avr/avr.md (push<mode>_1): Ditto.
36009         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
36010         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
36011         * config/i386/predicates.md (register_no_elim_operand): Ditto.
36012         * config/iq2000/predicates.md (call_insn_operand): Ditto.
36013         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
36015 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
36017         PR target/78952
36018         * config/i386/predicates.md (extract_operator): New predicate.
36019         * config/i386/i386.md (any_extract): Remove code iterator.
36020         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
36021         (*cmpqi_ext<mode>_1): Ditto.
36022         (*cmpqi_ext<mode>_2): Ditto.
36023         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
36024         (*cmpqi_ext<mode>_3): Ditto.
36025         (*cmpqi_ext<mode>_4): Ditto.
36026         (*extzvqi_mem_rex64): Ditto.
36027         (*extzvqi): Ditto.
36028         (*insvqi_2): Ditto.
36029         (*extendqi<SWI24:mode>_ext_1): Ditto.
36030         (*addqi_ext<mode>_0): Ditto.
36031         (*addqi_ext<mode>_1): Ditto.
36032         (*addqi_ext<mode>_2): Ditto.
36033         (*subqi_ext<mode>_0): Ditto.
36034         (*subqi_ext<mode>_2): Ditto.
36035         (*testqi_ext<mode>_1): Ditto.
36036         (*testqi_ext<mode>_2): Ditto.
36037         (*andqi_ext<mode>_0): Ditto.
36038         (*andqi_ext<mode>_1): Ditto.
36039         (*andqi_ext<mode>_1_cc): Ditto.
36040         (*andqi_ext<mode>_2): Ditto.
36041         (*<any_or:code>qi_ext<mode>_0): Ditto.
36042         (*<any_or:code>qi_ext<mode>_1): Ditto.
36043         (*<any_or:code>qi_ext<mode>_2): Ditto.
36044         (*xorqi_ext<mode>_1_cc): Ditto.
36045         (*negqi_ext<mode>_2): Ditto.
36046         (*ashlqi_ext<mode>_2): Ditto.
36047         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
36049 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
36051         PR target/108248
36052         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
36053         <bitmanip_insn> as the type to allow for fine grained control of
36054         scheduling these insns.
36055         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
36056         min, max.
36057         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
36058         pcnt, signed and unsigned min/max.
36060 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36061             kito-cheng  <kito.cheng@sifive.com>
36063         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
36065 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36066             kito-cheng  <kito.cheng@sifive.com>
36068         PR target/109535
36069         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
36070         (pass_vsetvl::cleanup_insns): Fix bug.
36072 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
36074         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
36075         (ldexp<mode>3): Delete.
36076         (ldexp<mode>3<exec>): Change "B" to "A".
36078 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
36079             Jonathan Wakely  <jwakely@redhat.com>
36081         * tree.h (built_in_function_equal_p): New helper function.
36082         (fndecl_built_in_p): Turn into variadic template to support
36083         1 or more built_in_function arguments.
36084         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
36085         * gimplify.cc (goa_stabilize_expr): Likewise.
36086         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
36087         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
36088         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
36089         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
36090         cgraph_update_edges_for_call_stmt_node,
36091         cgraph_edge::verify_corresponds_to_fndecl,
36092         cgraph_node::verify_node): Likewise.
36093         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
36094         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
36095         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
36097 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
36099         PR tree-optimization/109011
36100         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
36101         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
36102         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
36103         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
36104         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
36105         case.
36106         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
36108 2023-04-20  Richard Biener  <rguenther@suse.de>
36110         * df-core.cc (rest_of_handle_df_initialize): Remove
36111         computation of df->postorder, df->postorder_inverted and
36112         df->n_blocks.
36114 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36116         * common/config/i386/i386-common.cc
36117         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
36118         (ix86_handle_option): Set AVX flag for VAES.
36119         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
36120         Add OPTION_MASK_ISA2_VAES_UNSET.
36121         (def_builtin): Share builtin between AES and VAES.
36122         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
36123         Ditto.
36124         * config/i386/i386.md (aes): New isa attribute.
36125         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
36126         (aesenclast): Ditto.
36127         (aesdec): Ditto.
36128         (aesdeclast): Ditto.
36129         * config/i386/vaesintrin.h: Remove redundant avx target push.
36130         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
36131         (_mm_aesdeclast_si128): Ditto.
36132         (_mm_aesenc_si128): Ditto.
36133         (_mm_aesenclast_si128): Ditto.
36135 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
36137         * config/i386/avx2intrin.h
36138         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
36139         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
36140         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
36141         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
36142         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
36143         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
36144         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
36145         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
36146         (_mm_reduce_add_epi16): New instrinsics.
36147         (_mm_reduce_mul_epi16): Ditto.
36148         (_mm_reduce_and_epi16): Ditto.
36149         (_mm_reduce_or_epi16): Ditto.
36150         (_mm_reduce_max_epi16): Ditto.
36151         (_mm_reduce_max_epu16): Ditto.
36152         (_mm_reduce_min_epi16): Ditto.
36153         (_mm_reduce_min_epu16): Ditto.
36154         (_mm256_reduce_add_epi16): Ditto.
36155         (_mm256_reduce_mul_epi16): Ditto.
36156         (_mm256_reduce_and_epi16): Ditto.
36157         (_mm256_reduce_or_epi16): Ditto.
36158         (_mm256_reduce_max_epi16): Ditto.
36159         (_mm256_reduce_max_epu16): Ditto.
36160         (_mm256_reduce_min_epi16): Ditto.
36161         (_mm256_reduce_min_epu16): Ditto.
36162         (_mm_reduce_add_epi8): Ditto.
36163         (_mm_reduce_mul_epi8): Ditto.
36164         (_mm_reduce_and_epi8): Ditto.
36165         (_mm_reduce_or_epi8): Ditto.
36166         (_mm_reduce_max_epi8): Ditto.
36167         (_mm_reduce_max_epu8): Ditto.
36168         (_mm_reduce_min_epi8): Ditto.
36169         (_mm_reduce_min_epu8): Ditto.
36170         (_mm256_reduce_add_epi8): Ditto.
36171         (_mm256_reduce_mul_epi8): Ditto.
36172         (_mm256_reduce_and_epi8): Ditto.
36173         (_mm256_reduce_or_epi8): Ditto.
36174         (_mm256_reduce_max_epi8): Ditto.
36175         (_mm256_reduce_max_epu8): Ditto.
36176         (_mm256_reduce_min_epi8): Ditto.
36177         (_mm256_reduce_min_epu8): Ditto.
36178         * config/i386/avx512vlbwintrin.h:
36179         (_mm_mask_reduce_add_epi16): Ditto.
36180         (_mm_mask_reduce_mul_epi16): Ditto.
36181         (_mm_mask_reduce_and_epi16): Ditto.
36182         (_mm_mask_reduce_or_epi16): Ditto.
36183         (_mm_mask_reduce_max_epi16): Ditto.
36184         (_mm_mask_reduce_max_epu16): Ditto.
36185         (_mm_mask_reduce_min_epi16): Ditto.
36186         (_mm_mask_reduce_min_epu16): Ditto.
36187         (_mm256_mask_reduce_add_epi16): Ditto.
36188         (_mm256_mask_reduce_mul_epi16): Ditto.
36189         (_mm256_mask_reduce_and_epi16): Ditto.
36190         (_mm256_mask_reduce_or_epi16): Ditto.
36191         (_mm256_mask_reduce_max_epi16): Ditto.
36192         (_mm256_mask_reduce_max_epu16): Ditto.
36193         (_mm256_mask_reduce_min_epi16): Ditto.
36194         (_mm256_mask_reduce_min_epu16): Ditto.
36195         (_mm_mask_reduce_add_epi8): Ditto.
36196         (_mm_mask_reduce_mul_epi8): Ditto.
36197         (_mm_mask_reduce_and_epi8): Ditto.
36198         (_mm_mask_reduce_or_epi8): Ditto.
36199         (_mm_mask_reduce_max_epi8): Ditto.
36200         (_mm_mask_reduce_max_epu8): Ditto.
36201         (_mm_mask_reduce_min_epi8): Ditto.
36202         (_mm_mask_reduce_min_epu8): Ditto.
36203         (_mm256_mask_reduce_add_epi8): Ditto.
36204         (_mm256_mask_reduce_mul_epi8): Ditto.
36205         (_mm256_mask_reduce_and_epi8): Ditto.
36206         (_mm256_mask_reduce_or_epi8): Ditto.
36207         (_mm256_mask_reduce_max_epi8): Ditto.
36208         (_mm256_mask_reduce_max_epu8): Ditto.
36209         (_mm256_mask_reduce_min_epi8): Ditto.
36210         (_mm256_mask_reduce_min_epu8): Ditto.
36212 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36214         * common/config/i386/i386-common.cc
36215         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
36216         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
36217         (OPTION_MASK_ISA_AVX_UNSET):
36218         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
36219         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
36220         * config/i386/i386.md (vpclmulqdqvl): New.
36221         * config/i386/sse.md (pclmulqdq): Add evex encoding.
36222         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
36223         push.
36225 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36227         * config/i386/avx512vlbwintrin.h
36228         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
36229         (_mm_mask_blend_epi8): Ditto.
36230         (_mm256_mask_blend_epi16): Ditto.
36231         (_mm256_mask_blend_epi8): Ditto.
36232         * config/i386/avx512vlintrin.h
36233         (_mm256_mask_blend_pd): Ditto.
36234         (_mm256_mask_blend_ps): Ditto.
36235         (_mm256_mask_blend_epi64): Ditto.
36236         (_mm256_mask_blend_epi32): Ditto.
36237         (_mm_mask_blend_pd): Ditto.
36238         (_mm_mask_blend_ps): Ditto.
36239         (_mm_mask_blend_epi64): Ditto.
36240         (_mm_mask_blend_epi32): Ditto.
36241         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
36242         (VF_AVX512HFBFVL): Move it before the first usage.
36243         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
36244         to VF_AVX512HFBFVL.
36246 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36248         * common/config/i386/i386-common.cc
36249         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
36250         to OPTION_MASK_ISA_AVX512BW_SET.
36251         (OPTION_MASK_ISA_AVX512F_UNSET):
36252         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
36253         (OPTION_MASK_ISA_AVX512BW_UNSET):
36254         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
36255         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
36256         * config/i386/avx512vbmi2vlintrin.h: Ditto.
36257         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
36258         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
36259         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
36260         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
36261         VI12_AVX512VL.
36262         (compressstore<mode>_mask): Ditto.
36263         (expand<mode>_mask): Ditto.
36264         (expand<mode>_maskz): Ditto.
36265         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
36266         VI12_VI48F_AVX512VL.
36268 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36270         * common/config/i386/i386-common.cc
36271         (OPTION_MASK_ISA_AVX512BITALG_SET):
36272         Change OPTION_MASK_ISA_AVX512F_SET
36273         to OPTION_MASK_ISA_AVX512BW_SET.
36274         (OPTION_MASK_ISA_AVX512F_UNSET):
36275         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
36276         (OPTION_MASK_ISA_AVX512BW_UNSET):
36277         Add OPTION_MASK_ISA_AVX512BITALG_SET.
36278         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
36279         * config/i386/i386-builtin.def:
36280         Remove redundant OPTION_MASK_ISA_AVX512BW.
36281         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
36282         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
36283         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
36285 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
36287         * config/i386/i386-expand.cc
36288         (ix86_check_builtin_isa_match): Correct wrong comments.
36289         Add a new macro SHARE_BUILTIN and refactor the current if
36290         clauses to macro.
36292 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
36294         * config/i386/cpuid.h: Open a new section for Extended Features
36295         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
36296         %ecx == 1).
36298 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
36300         * config/i386/sse.md: Modify insn vperm{i,f}
36301         and vshuf{i,f}.
36303 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
36305         * config/xtensa/xtensa-opts.h: New header.
36306         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
36307         xtensa_strict_align.
36308         * config/xtensa/xtensa.cc (xtensa_option_override): When
36309         -m[no-]strict-align is not specified in the command line set
36310         xtensa_strict_align to 0 if the hardware supports both unaligned
36311         loads and stores or to 1 otherwise.
36312         * config/xtensa/xtensa.opt (mstrict-align): New option.
36313         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
36315 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
36317         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
36318         function.
36320 2023-04-19  Andrew Pinski  <apinski@marvell.com>
36322         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
36324 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36326         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
36327         (VECTOR_BOOL_MODE): Ditto.
36328         (ADJUST_NUNITS): Ditto.
36329         (ADJUST_ALIGNMENT): Ditto.
36330         (ADJUST_BYTESIZE): Ditto.
36331         (ADJUST_PRECISION): Ditto.
36332         (RVV_MODES): Ditto.
36333         (VECTOR_MODE_WITH_PREFIX): Ditto.
36334         * config/riscv/riscv-v.cc (ENTRY): Ditto.
36335         (get_vlmul): Ditto.
36336         (get_ratio): Ditto.
36337         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
36338         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
36339         (vbool64_t): Ditto.
36340         (vbool32_t): Ditto.
36341         (vbool16_t): Ditto.
36342         (vbool8_t): Ditto.
36343         (vbool4_t): Ditto.
36344         (vbool2_t): Ditto.
36345         (vbool1_t): Ditto.
36346         (vint8mf8_t): Ditto.
36347         (vuint8mf8_t): Ditto.
36348         (vint8mf4_t): Ditto.
36349         (vuint8mf4_t): Ditto.
36350         (vint8mf2_t): Ditto.
36351         (vuint8mf2_t): Ditto.
36352         (vint8m1_t): Ditto.
36353         (vuint8m1_t): Ditto.
36354         (vint8m2_t): Ditto.
36355         (vuint8m2_t): Ditto.
36356         (vint8m4_t): Ditto.
36357         (vuint8m4_t): Ditto.
36358         (vint8m8_t): Ditto.
36359         (vuint8m8_t): Ditto.
36360         (vint16mf4_t): Ditto.
36361         (vuint16mf4_t): Ditto.
36362         (vint16mf2_t): Ditto.
36363         (vuint16mf2_t): Ditto.
36364         (vint16m1_t): Ditto.
36365         (vuint16m1_t): Ditto.
36366         (vint16m2_t): Ditto.
36367         (vuint16m2_t): Ditto.
36368         (vint16m4_t): Ditto.
36369         (vuint16m4_t): Ditto.
36370         (vint16m8_t): Ditto.
36371         (vuint16m8_t): Ditto.
36372         (vint32mf2_t): Ditto.
36373         (vuint32mf2_t): Ditto.
36374         (vint32m1_t): Ditto.
36375         (vuint32m1_t): Ditto.
36376         (vint32m2_t): Ditto.
36377         (vuint32m2_t): Ditto.
36378         (vint32m4_t): Ditto.
36379         (vuint32m4_t): Ditto.
36380         (vint32m8_t): Ditto.
36381         (vuint32m8_t): Ditto.
36382         (vint64m1_t): Ditto.
36383         (vuint64m1_t): Ditto.
36384         (vint64m2_t): Ditto.
36385         (vuint64m2_t): Ditto.
36386         (vint64m4_t): Ditto.
36387         (vuint64m4_t): Ditto.
36388         (vint64m8_t): Ditto.
36389         (vuint64m8_t): Ditto.
36390         (vfloat32mf2_t): Ditto.
36391         (vfloat32m1_t): Ditto.
36392         (vfloat32m2_t): Ditto.
36393         (vfloat32m4_t): Ditto.
36394         (vfloat32m8_t): Ditto.
36395         (vfloat64m1_t): Ditto.
36396         (vfloat64m2_t): Ditto.
36397         (vfloat64m4_t): Ditto.
36398         (vfloat64m8_t): Ditto.
36399         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
36400         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
36401         (riscv_convert_vector_bits): Ditto.
36402         * config/riscv/riscv.md:
36403         * config/riscv/vector-iterators.md:
36404         * config/riscv/vector.md
36405         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
36406         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
36407         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
36408         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
36409         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
36410         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
36411         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
36412         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
36413         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
36415 2023-04-19  Pan Li  <pan2.li@intel.com>
36417         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
36418         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
36420 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
36422         PR target/78904
36423         PR target/78952
36424         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
36425         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
36426         for operand 0. Use any_extract code iterator.
36427         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
36428         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
36429         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
36430         (*cmpqi_ext<mode>_1): Use general_operand predicate
36431         for operand 1. Use any_extract code iterator.
36432         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
36433         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
36435 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36437         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
36438         (aarch64_uaddw2<mode>): Delete.
36439         (aarch64_ssubw2<mode>): Delete.
36440         (aarch64_usubw2<mode>): Delete.
36441         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
36443 2023-04-19  Richard Biener  <rguenther@suse.de>
36445         * tree-ssa-structalias.cc (do_ds_constraint): Use
36446         solve_add_graph_edge.
36448 2023-04-19  Richard Biener  <rguenther@suse.de>
36450         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
36451         split out from ...
36452         (do_sd_constraint): ... here.
36454 2023-04-19  Richard Biener  <rguenther@suse.de>
36456         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
36457         rejecting the merge when A contains only a non-local label.
36459 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
36461         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
36462         (VIRTUAL_REGISTER_NUM_P): Ditto.
36463         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
36464         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
36465         * function.cc (instantiate_decl_rtl): Ditto.
36466         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
36467         (nonzero_address_p): Ditto.
36468         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
36470 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
36472         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
36474 2023-04-19  Richard Biener  <rguenther@suse.de>
36476         * system.h (auto_mpz::operator->()): New.
36477         * realmpfr.h (auto_mpfr::operator->()): New.
36478         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
36479         * real.cc (real_from_string): Likewise.
36480         (dconst_e_ptr): Likewise.
36481         (dconst_sqrt2_ptr): Likewise.
36482         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
36483         Use auto_mpz.
36484         (bound_difference_of_offsetted_base): Likewise.
36485         (number_of_iterations_ne): Likewise.
36486         (number_of_iterations_lt_to_ne): Likewise.
36487         * ubsan.cc: Include realmpfr.h.
36488         (ubsan_instrument_float_cast): Use auto_mpfr.
36490 2023-04-19  Richard Biener  <rguenther@suse.de>
36492         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
36493         edges, remove edges from escaped after special-casing them.
36495 2023-04-19  Richard Biener  <rguenther@suse.de>
36497         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
36498         special casing.
36500 2023-04-19  Richard Biener  <rguenther@suse.de>
36502         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
36503         to the LHS varinfo solution member.
36505 2023-04-19  Richard Biener  <rguenther@suse.de>
36507         * tree-ssa-structalias.cc (topo_visit): Look at the real
36508         destination of edges.
36510 2023-04-19  Richard Biener  <rguenther@suse.de>
36512         PR tree-optimization/44794
36513         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
36514         If an epilogue loop is required set its iteration upper bound.
36516 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
36518         PR target/109465
36519         * config/loongarch/loongarch-protos.h
36520         (loongarch_expand_block_move): Add a parameter as alignment RTX.
36521         * config/loongarch/loongarch.h:
36522         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
36523         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
36524         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
36525         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
36526         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
36527         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
36528         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
36529         Take the alignment from the parameter, but set it to
36530         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
36531         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
36532         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
36533         (loongarch_block_move_straight): When there are left-over bytes,
36534         half the mode size instead of falling back to byte mode at once.
36535         (loongarch_block_move_loop): Limit the length of loop body with
36536         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
36537         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
36538         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
36539         to loongarch_expand_block_move.
36541 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
36543         * config/loongarch/loongarch.cc
36544         (loongarch_setup_incoming_varargs): Don't save more GARs than
36545         cfun->va_list_gpr_size / UNITS_PER_WORD.
36547 2023-04-19  Richard Biener  <rguenther@suse.de>
36549         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
36550         no epilogue condition.
36552 2023-04-19  Richard Biener  <rguenther@suse.de>
36554         * gimple.h (gimple_assign_load): Outline...
36555         * gimple.cc (gimple_assign_load): ... here.  Avoid
36556         get_base_address and instead just strip the outermost
36557         handled component, treating a remaining handled component
36558         as load.
36560 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36562         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
36563         definition.
36564         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
36566 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
36568         PR tree-optimization/109011
36569         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
36570         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
36571         CLZ, CTZ and FFS.  Remove vargs variable, use
36572         gimple_build_call_internal rather than gimple_build_call_internal_vec.
36573         (vect_vect_recog_func_ptrs): Adjust popcount entry.
36575 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
36577         PR target/109040
36578         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
36579         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
36580         a new REG rather than the SUBREG.
36582 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36584         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
36585         New pattern.
36587 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36589         PR target/108840
36590         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
36591         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
36593 2023-04-19  Richard Biener  <rguenther@suse.de>
36595         PR rtl-optimization/109237
36596         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
36597         TREE_VISITED on INSN_VAR_LOCATION_DECL.
36598         (delete_trivially_dead_insns): Maintain TREE_VISITED on
36599         active debug bind INSN_VAR_LOCATION_DECL.
36601 2023-04-19  Richard Biener  <rguenther@suse.de>
36603         PR rtl-optimization/109237
36604         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
36606 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
36608         * doc/install.texi (enable-decimal-float): Add AArch64.
36610 2023-04-19  liuhongt  <hongtao.liu@intel.com>
36612         PR rtl-optimization/109351
36613         * ira.cc (setup_class_subset_and_memory_move_costs): Check
36614         hard_regno_mode_ok before setting lowest memory move cost for
36615         the mode with different reg classes.
36617 2023-04-18  Jason Merrill  <jason@redhat.com>
36619         * doc/invoke.texi: Remove stray @gol.
36621 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
36623         * ifcvt.cc (cond_move_process_if_block): Consider the result of
36624         targetm.noce_conversion_profitable_p() when replacing the original
36625         sequence with the converted one.
36627 2023-04-18  Mark Harmstone  <mark@harmstone.com>
36629         * common.opt (gcodeview): Add new option.
36630         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
36631         * opts.cc (command_handle_option): Similarly.
36632         * doc/invoke.texi: Add documentation for -gcodeview.
36634 2023-04-18  Andrew Pinski  <apinski@marvell.com>
36636         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
36637         (make_pass_phiopt): Make execute out of line.
36638         (tree_ssa_cs_elim): Move code into ...
36639         (pass_cselim::execute): here.
36641 2023-04-18  Sam James  <sam@gentoo.org>
36643         * system.h: Drop unused INCLUDE_PTHREAD_H.
36645 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
36647         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
36648         condition.
36650 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
36652         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
36653         (bswapdi2, bswapsi2): Similarly.
36655 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
36657         PR target/94908
36658         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
36659         Use CODE_FOR_sse4_1_insertps_v4sf.
36660         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
36661         (expand_vec_perm_1): Call expand_vec_per_insertps.
36662         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
36663         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
36664         (@sse4_1_insertps_<mode>): New insn pattern.
36665         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
36666         pattern from sse4_1_insertps using VI4F_128 mode iterator.
36668 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36670         * value-range.cc (gt_ggc_mx): New.
36671         (gt_pch_nx): New.
36672         * value-range.h (class vrange): Add GTY marker.
36673         (class frange): Same.
36674         (gt_ggc_mx): Remove.
36675         (gt_pch_nx): Remove.
36677 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
36679         * lra-constraints.cc (constraint_unique): New.
36680         (process_address_1): Apply constraint_unique test.
36681         * recog.cc (constrain_operands): Allow relaxed memory
36682         constaints.
36684 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
36686         * doc/extend.texi (Target Builtins): Add RISC-V Vector
36687         Intrinsics.
36688         (RISC-V Vector Intrinsics): Document GCC implemented which
36689         version of RISC-V vector intrinsics and its reference.
36691 2023-04-18  Richard Biener  <rguenther@suse.de>
36693         PR middle-end/108786
36694         * bitmap.h (bitmap_clear_first_set_bit): New.
36695         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
36696         bitmap_first_set_bit and add optional clearing of the bit.
36697         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
36698         (bitmap_clear_first_set_bit): Likewise.
36699         * df-core.cc (df_worklist_dataflow_doublequeue): Use
36700         bitmap_clear_first_set_bit.
36701         * graphite-scop-detection.cc (scop_detection::merge_sese):
36702         Likewise.
36703         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
36704         (sanitize_asan_mark_poison): Likewise.
36705         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
36706         * tree-into-ssa.cc (rewrite_blocks): Likewise.
36707         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
36708         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
36710 2023-04-18  Richard Biener  <rguenther@suse.de>
36712         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
36713         (dump_sa_points_to_info): ... this function.
36714         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
36715         and call dump_sa_stats guarded with TDF_STATS.
36716         (ipa_pta_execute): Likewise.
36717         (compute_may_aliases): Guard dump_alias_info with
36718         TDF_DETAILS|TDF_ALIAS.
36720 2023-04-18  Andrew Pinski  <apinski@marvell.com>
36722         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
36723         the expression that is being tried when TDF_FOLDING
36724         is true.
36725         (phiopt_worker::match_simplify_replacement): Dump
36726         the sequence which was created by gimple_simplify_phiopt
36727         when TDF_FOLDING is true.
36729 2023-04-18  Andrew Pinski  <apinski@marvell.com>
36731         * tree-ssa-phiopt.cc (match_simplify_replacement):
36732         Simplify code that does the movement slightly.
36734 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36736         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
36737         define_expand.
36738         (rev16<mode>2): Rename to...
36739         (aarch64_rev16<mode>2_alt1): ... This.
36740         (rev16<mode>2_alt): Rename to...
36741         (*aarch64_rev16<mode>2_alt2): ... This.
36743 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36745         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
36746         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
36747         declaration.
36748         * range-op-float.cc (zero_range): Use dconstm0.
36749         (zero_to_inf_range): Same.
36750         * real.h (dconstm0): New.
36751         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
36752         (frange::set_zero): Do not declare dconstm0.
36754 2023-04-18  Richard Biener  <rguenther@suse.de>
36756         * system.h (class auto_mpz): New,
36757         * realmpfr.h (class auto_mpfr): Likewise.
36758         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
36759         (do_mpfr_arg2): Likewise.
36760         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
36762 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36764         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
36765         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
36767 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36769         * value-range.cc (frange::operator==): Adjust for NAN.
36770         (range_tests_nan): Remove some NAN tests.
36772 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36774         * inchash.cc (hash::add_real_value): New.
36775         * inchash.h (class hash): Add add_real_value.
36776         * value-range.cc (add_vrange): New.
36777         * value-range.h (inchash::add_vrange): New.
36779 2023-04-18  Richard Biener  <rguenther@suse.de>
36781         PR tree-optimization/109539
36782         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
36783         Re-implement pointer relatedness for PHIs.
36785 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
36787         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
36788         (SV_FP): New iterator.
36789         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
36790         (recip<mode>2): Unify the two patterns using SV_FP.
36791         (div_scale<mode><exec_vcc>): New insn.
36792         (div_fmas<mode><exec>): New insn.
36793         (div_fixup<mode><exec>): New insn.
36794         (div<mode>3): Unify the two expanders and rewrite using hardfp.
36795         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
36796         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
36797         and UNSPEC_DIV_FIXUP.
36798         (vccwait): New attribute.
36800 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36802         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
36803         if the argument matches that.
36805 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36807         * config/aarch64/atomics.md
36808         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
36809         Use SD_HSDI for destination mode iterator.
36811 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
36813         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
36814         of z-extensions and s-extensions.
36815         (riscv_subset_list::parse): Likewise.
36817 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
36819         PR tree-optimization/109240
36820         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
36821         first vec_perm operand and minus as second using fneg/fadd and
36822         minus as first vec_perm operand and plus as second using fneg/fsub.
36824 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36826         * data-streamer.cc (bp_pack_real_value): New.
36827         (bp_unpack_real_value): New.
36828         * data-streamer.h (bp_pack_real_value):  New.
36829         (bp_unpack_real_value): New.
36830         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
36831         bp_unpack_real_value.
36832         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
36833         bp_pack_real_value.
36835 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36837         * wide-int.h (WIDE_INT_MAX_HWIS): New.
36838         (class fixed_wide_int_storage): Use it.
36839         (trailing_wide_ints <N>::set_precision): Use it.
36840         (trailing_wide_ints <N>::extra_size): Use it.
36842 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
36844         * config/loongarch/loongarch-protos.h
36845         (loongarch_addu16i_imm12_operand_p): New function prototype.
36846         (loongarch_split_plus_constant): Likewise.
36847         * config/loongarch/loongarch.cc
36848         (loongarch_addu16i_imm12_operand_p): New function.
36849         (loongarch_split_plus_constant): Likewise.
36850         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
36851         (DUAL_IMM12_OPERAND): Likewise.
36852         (DUAL_ADDU16I_OPERAND): Likewise.
36853         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
36854         constraint.
36855         * config/loongarch/predicates.md (const_dual_imm12_operand): New
36856         predicate.
36857         (const_addu16i_operand): Likewise.
36858         (const_addu16i_imm12_di_operand): Likewise.
36859         (const_addu16i_imm12_si_operand): Likewise.
36860         (plus_di_operand): Likewise.
36861         (plus_si_operand): Likewise.
36862         (plus_si_extend_operand): Likewise.
36863         * config/loongarch/loongarch.md (add<mode>3): Convert to
36864         define_insn_and_split.  Use plus_<mode>_operand predicate
36865         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
36866         and Le constraints.
36867         (*addsi3_extended): Convert to define_insn_and_split.  Use
36868         plus_si_extend_operand instead of arith_operand.  Add
36869         alternatives for La and Le alternatives.
36871 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36873         * value-range.h (Value_Range::Value_Range): New.
36874         (Value_Range::contains_p): New.
36876 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
36878         * value-range.h (class vrange): Make m_discriminator const.
36879         (class irange): Make m_max_ranges const.  Adjust constructors
36880         accordingly.
36881         (class unsupported_range): Construct vrange appropriately.
36882         (class frange): Same.
36884 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
36886         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
36887         definition.
36889 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
36891         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
36893 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
36895         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
36896         readable.
36897         (riscv_expand_epilogue): Likewise.
36899 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
36901         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
36902         stack allocation.
36903         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
36905 2023-04-17  Andrew Pinski  <apinski@marvell.com>
36907         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
36908         prototype.
36910 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
36912         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
36913         global ranges.
36915 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
36917         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
36918         parameter remaining_size.
36919         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
36920         (riscv_expand_prologue): Likewise.
36921         (riscv_expand_epilogue): Likewise.
36923 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
36925         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
36926         roriw for constant counts.
36927         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
36928         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
36929         (simplify_context::simplify_binary_operation_1): Use it.
36930         * expmed.cc (expand_shift_1): Likewise.
36932 2023-04-17  Martin Jambor  <mjambor@suse.cz>
36934         PR ipa/107769
36935         PR ipa/109318
36936         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
36937         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
36938         (ipa_zap_jf_refdesc): New function.
36939         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
36940         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
36941         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
36942         the new parameter of find_reference.
36943         (adjust_references_in_caller): Likewise. Make sure the constant jump
36944         function is not used to decrement a refdec counter again.  Only
36945         decrement refdesc counters when the pass_through jump function allows
36946         it.  Added a detailed dump when decrementing refdesc counters.
36947         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
36948         (ipa_set_jf_simple_pass_through): Initialize the new flag.
36949         (ipa_set_jf_unary_pass_through): Likewise.
36950         (ipa_set_jf_arith_pass_through): Likewise.
36951         (remove_described_reference): Provide a value for the new parameter of
36952         find_reference.
36953         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
36954         the previous pass_through had a flag mandating that we do so.
36955         (propagate_controlled_uses): Likewise.  Only decrement refdesc
36956         counters when the pass_through jump function allows it.
36957         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
36958         parameter of find_reference.
36959         (ipa_write_jump_function): Assert the new flag does not have to be
36960         streamed.
36961         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
36962         it in searching.
36964 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
36965             Di Zhao  <di.zhao@amperecomputing.com>
36967         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
36968         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
36969         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
36970         Check for the above tuning option when processing loads.
36972 2023-04-17  Richard Biener  <rguenther@suse.de>
36974         PR tree-optimization/109524
36975         * tree-vrp.cc (remove_unreachable::m_list): Change to a
36976         vector of pairs of block indices.
36977         (remove_unreachable::maybe_register_block): Adjust.
36978         (remove_unreachable::remove_and_update_globals): Likewise.
36979         Deal with removed blocks.
36981 2023-04-16  Jeff Law  <jlaw@ventanamicro>
36983         PR target/109508
36984         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
36985         TARGET_SFB_ALU, force the true arm into a register.
36987 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
36989         PR target/104989
36990         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
36991         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
36992         size is zero.
36993         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
36994         (pa_function_arg_size): Change return type to int.  Return zero
36995         for arguments larger than 1 GB.  Update comments.
36997 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
36999         PR tree-optimization/109154
37000         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
37001         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
37003 2023-04-15  Jason Merrill  <jason@redhat.com>
37005         PR c++/109514
37006         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
37007         Overhaul lhs_ref.ref analysis.
37009 2023-04-14  Richard Biener  <rguenther@suse.de>
37011         PR tree-optimization/109502
37012         * tree-vect-stmts.cc (vectorizable_assignment): Fix
37013         check for conversion between mask and non-mask types.
37015 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
37016             Jakub Jelinek  <jakub@redhat.com>
37018         PR target/108947
37019         PR target/109040
37020         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
37021         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
37022         smaller than word_mode.
37023         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
37024         <case AND>: Likewise.
37026 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
37028         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
37029         of GEN_INT.
37031 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
37033         PR tree-optimization/108139
37034         PR tree-optimization/109462
37035         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
37036         equivalency check for PHI nodes.
37037         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
37038         does not dominate single-arg equivalency edges.
37040 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
37042         PR target/108910
37043         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
37044         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
37046 2023-04-13  Richard Biener  <rguenther@suse.de>
37048         PR tree-optimization/109491
37049         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
37050         NULL operands test.
37052 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37054         PR target/109479
37055         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
37056         (vint16mf4_t): Ditto.
37057         (vint32mf2_t): Ditto.
37058         (vint64m1_t): Ditto.
37059         (vint64m2_t): Ditto.
37060         (vint64m4_t): Ditto.
37061         (vint64m8_t): Ditto.
37062         (vuint8mf8_t): Ditto.
37063         (vuint16mf4_t): Ditto.
37064         (vuint32mf2_t): Ditto.
37065         (vuint64m1_t): Ditto.
37066         (vuint64m2_t): Ditto.
37067         (vuint64m4_t): Ditto.
37068         (vuint64m8_t): Ditto.
37069         (vfloat32mf2_t): Ditto.
37070         (vbool64_t): Ditto.
37071         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
37072         (register_vector_type): Ditto.
37073         (check_required_extensions): Fix condition.
37074         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
37075         (RVV_REQUIRE_ELEN_64): New define.
37076         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
37077         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
37078         (TARGET_VECTOR_FP64): Ditto.
37079         (ENTRY): Fix predicate.
37080         * config/riscv/vector-iterators.md: Fix predicate.
37082 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
37084         PR tree-optimization/109410
37085         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
37086         block if first statement of the function is a call to returns_twice
37087         function.
37089 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
37091         PR target/109458
37092         * config/i386/i386.cc: Include rtl-error.h.
37093         (ix86_print_operand): For z modifier warning, use warning_for_asm
37094         if this_is_asm_operands.  For Z modifier errors, use %c and code
37095         instead of hardcoded Z.
37097 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
37099         * config/i386/x-mingw32-utf8: Remove extrataneous $@
37101 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
37103         PR tree-optimization/109462
37104         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
37105         check for equivalences if NAME is a phi node.
37107 2023-04-12  Richard Biener  <rguenther@suse.de>
37109         PR tree-optimization/109473
37110         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
37111         Convert scalar result to the computation type before performing
37112         the reduction adjustment.
37114 2023-04-12  Richard Biener  <rguenther@suse.de>
37116         PR tree-optimization/109469
37117         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
37118         a returns-twice call.
37120 2023-04-12  Richard Biener  <rguenther@suse.de>
37122         PR tree-optimization/109434
37123         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
37124         handle possibly throwing calls when processing the LHS
37125         and may-defs are not OK.
37127 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
37129         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
37130         predicate to avoid splitting arith constants.
37132 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
37133             Pan Li  <pan2.li@intel.com>
37134             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37135             Kito Cheng  <kito.cheng@sifive.com>
37137         PR target/109104
37138         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
37139         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
37140         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
37141         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
37142         (riscv_zero_call_used_regs): New.
37143         (TARGET_ZERO_CALL_USED_REGS): New.
37145 2023-04-11  Martin Liska  <mliska@suse.cz>
37147         PR driver/108241
37148         * opts.cc (finish_options): Drop also
37149         x_flag_var_tracking_assignments.
37151 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
37153         PR tree-optimization/108888
37154         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
37156 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
37158         PR target/108812
37159         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
37160         (vsx_sign_extend_v16qi_<mode>): ... this.
37161         (vsx_sign_extend_hi_<mode>): Rename to...
37162         (vsx_sign_extend_v8hi_<mode>): ... this.
37163         (vsx_sign_extend_si_v2di): Rename to...
37164         (vsx_sign_extend_v4si_v2di): ... this.
37165         (vsignextend_qi_<mode>): Remove.
37166         (vsignextend_hi_<mode>): Remove.
37167         (vsignextend_si_v2di): Remove.
37168         (vsignextend_v2di_v1ti): Remove.
37169         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
37170         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
37171         with gen_vsx_sign_extend_v16qi_v4si.
37172         * config/rs6000/rs6000.md (split for DI constant generation):
37173         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
37174         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
37175         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
37176         with gen_vsx_sign_extend_v16qi_si.
37177         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
37178         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
37179         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
37180         vsx_sign_extend_v16qi_v4si.
37181         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
37182         vsx_sign_extend_v8hi_v2di.
37183         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
37184         vsx_sign_extend_v8hi_v4si.
37185         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
37186         vsx_sign_extend_si_v2di.
37187         (__builtin_altivec_vsignext): Set bif-pattern to
37188         vsx_sign_extend_v2di_v1ti.
37189         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
37190         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
37191         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
37192         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
37194 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
37196         PR target/70243
37197         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
37198         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
37200 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
37202         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
37204 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
37206         * common/config/i386/cpuinfo.h (get_available_features):
37207         Detect AMX-COMPLEX.
37208         * common/config/i386/i386-common.cc
37209         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
37210         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
37211         (ix86_handle_option): Handle -mamx-complex.
37212         * common/config/i386/i386-cpuinfo.h (enum processor_features):
37213         Add FEATURE_AMX_COMPLEX.
37214         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
37215         amx-complex.
37216         * config.gcc: Add amxcomplexintrin.h.
37217         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
37218         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
37219         __AMX_COMPLEX__.
37220         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
37221         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
37222         Handle amx-complex.
37223         * config/i386/i386.opt: Add option -mamx-complex.
37224         * config/i386/immintrin.h: Include amxcomplexintrin.h.
37225         * doc/extend.texi: Document amx-complex.
37226         * doc/invoke.texi: Document -mamx-complex.
37227         * doc/sourcebuild.texi: Document target amx-complex.
37228         * config/i386/amxcomplexintrin.h: New file.
37230 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
37232         PR tree-optimization/109392
37233         * tree-vect-generic.cc (tree_vec_extract): Handle failure
37234         of maybe_push_res_to_seq better.
37236 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
37238         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
37239         poly-int-types.h.
37240         (SYSTEM_H): Depend on $(HASHTAB_H).
37241         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
37242         dependency on $(RTL_BASE_H), remove redundant dependency on
37243         insn-modes.h.
37245 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
37247         PR target/107674
37248         * config/arm/arm.cc (arm_effective_regno): New function.
37249         (mve_vector_mem_operand): Use it.
37251 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
37253         PR tree-optimization/109417
37254         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
37255         dependency is in SSA_NAME_FREE_LIST.
37257 2023-04-06  Andrew Pinski  <apinski@marvell.com>
37259         PR tree-optimization/109427
37260         * params.opt (-param=vect-induction-float=):
37261         Fix option attribute typo for IntegerRange.
37263 2023-04-05  Jeff Law  <jlaw@ventanamicro>
37265         PR target/108892
37266         * combine.cc (combine_instructions): Force re-recognition when
37267         after restoring the body of an insn to its original form.
37269 2023-04-05  Martin Jambor  <mjambor@suse.cz>
37271         PR ipa/108959
37272         * ipa-sra.cc (zap_useless_ipcp_results): New function.
37273         (process_isra_node_results): Call it.
37275 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37277         * config/riscv/vector.md: Fix incorrect operand order.
37279 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37281         * config/riscv/riscv-vsetvl.cc
37282         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
37283         demand fusion.
37285 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
37287         * config/riscv/riscv-vector-builtins.def: Fix typo.
37288         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
37289         * config/riscv/vector-iterators.md: Ditto.
37291 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
37293         * doc/md.texi (Including Patterns): Fix page break.
37295 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
37297         PR tree-optimization/109386
37298         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
37299         foperator_le::op1_range, foperator_le::op2_range,
37300         foperator_gt::op1_range, foperator_gt::op2_range,
37301         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
37302         BRS_FALSE case even if the other op is maybe_isnan, not just
37303         known_isnan.
37304         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
37305         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
37306         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
37307         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
37308         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
37309         not just known_isnan.
37311 2023-04-04  Marek Polacek  <polacek@redhat.com>
37313         PR sanitizer/109107
37314         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
37315         when associating.
37316         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
37318 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
37320         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
37321         (mve_vcreateq_f<mode>): Swap operands.
37323 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
37325         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
37327 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
37329         PR target/109384
37330         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
37331         Reword diagnostics about zfinx conflict with f, formatting fixes.
37333 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
37335         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
37337 2023-04-04  Richard Biener  <rguenther@suse.de>
37339         PR tree-optimization/109304
37340         * tree-profile.cc (tree_profiling): Use symtab node
37341         availability to decide whether to skip adjusting calls.
37342         Do not adjust calls to internal functions.
37344 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
37346         PR target/108807
37347         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
37348         function for permutation control vector by considering big endianness.
37350 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
37352         PR target/108699
37353         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
37354         (rs6000_vprtyb<mode>2): ... this.
37355         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
37356         rs6000_vprtybv2di2.
37357         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
37358         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
37359         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
37360         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
37362 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
37363             Sandra Loosemore  <sandra@codesourcery.com>
37365         * doc/md.texi (Insn Splitting): Tweak wording for readability.
37367 2023-04-03  Martin Jambor  <mjambor@suse.cz>
37369         PR ipa/109303
37370         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
37371         offset + size will be representable in unsigned int.
37373 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
37375         * configure.ac (ZSTD_LIB): Move before zstd.h check.
37376         Unset gcc_cv_header_zstd_h without libzstd.
37377         * configure: Regenerate.
37379 2023-04-03  Martin Liska  <mliska@suse.cz>
37381         * doc/invoke.texi: Document new param.
37383 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
37385         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
37386         new check_effective_target function.
37388 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
37390         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
37391         (vfloat32m8_t): Likewise
37393 2023-04-03  liuhongt  <hongtao.liu@intel.com>
37395         * doc/md.texi: Document signbitm2.
37397 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37398             kito-cheng  <kito.cheng@sifive.com>
37400         * config/riscv/vector.md: Fix RA constraint.
37402 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37404         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
37405         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
37406         * config/riscv/vector.md: Fix scalar move bug.
37408 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
37410         * range-op-float.cc (foperator_equal::fold_range): If at least
37411         one of the op ranges is not singleton and neither is NaN and all
37412         4 bounds are zero, return [1, 1].
37413         (foperator_not_equal::fold_range): In the same case return [0, 0].
37415 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
37417         * range-op-float.cc (foperator_equal::fold_range): Perform the
37418         non-singleton handling regardless of maybe_isnan (op1, op2).
37419         (foperator_not_equal::fold_range): Likewise.
37420         (foperator_lt::fold_range, foperator_le::fold_range,
37421         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
37422         real_* comparison check which results in range_false (type)
37423         even if maybe_isnan (op1, op2).  Simplify.
37424         (foperator_ltgt): New class.
37425         (fop_ltgt): New variable.
37426         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
37427         fop_ltgt.
37429 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
37431         PR target/109254
37432         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
37433         returns VOIDmode, handle it like if the register isn't used for
37434         passing arguments at all.
37435         (apply_result_size): If targetm.calls.get_raw_result_mode returns
37436         VOIDmode, handle it like if the register isn't used for returning
37437         results at all.
37438         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
37439         means to return VOIDmode.
37440         * doc/tm.texi: Regenerated.
37441         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
37442         TARGET_SVE for P0_REGNUM.
37443         (aarch64_function_arg_regno_p): Also return true for p0-p3.
37444         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
37446 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
37448         * lra-constraints.cc: (combine_reload_insn): New function.
37450 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
37452         PR tree-optimization/91645
37453         * range-op-float.cc (foperator_unordered_lt::fold_range,
37454         foperator_unordered_le::fold_range,
37455         foperator_unordered_gt::fold_range,
37456         foperator_unordered_ge::fold_range,
37457         foperator_unordered_equal::fold_range): Call the ordered
37458         fold_range on ranges with cleared NaNs.
37459         * value-query.cc (range_query::get_tree_range): Handle also
37460         COMPARISON_CLASS_P trees.
37462 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
37463             Andrew Pinski  <pinskia@gmail.com>
37465         PR target/109328
37466         * config/riscv/t-riscv: Add missing dependencies.
37468 2023-03-31  liuhongt  <hongtao.liu@intel.com>
37470         * config/i386/i386.cc (inline_memory_move_cost): Return 100
37471         for MASK_REGS when MODE_SIZE > 8.
37473 2023-03-31  liuhongt  <hongtao.liu@intel.com>
37475         PR target/85048
37476         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
37477         ufloat/ufix to floatuns/fixuns.
37478         * config/i386/i386-expand.cc
37479         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
37480         * config/i386/sse.md
37481         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
37482         Renamed to ..
37483         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
37484         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
37485         Renamed to ..
37486         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
37487         .. this.
37488         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
37489         Renamed to ..
37490         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
37491         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
37492         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
37493         (ufloatv2siv2df2<mask_name>): Renamed to ..
37494         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
37495         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
37496         Renamed to ..
37497         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
37498         .. this.
37499         (ufix_notruncv2dfv2si2): Renamed to ..
37500         (fixuns_notruncv2dfv2si2):.. this.
37501         (ufix_notruncv2dfv2si2_mask): Renamed to ..
37502         (fixuns_notruncv2dfv2si2_mask): .. this.
37503         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
37504         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
37505         (ufix_truncv2dfv2si2): Renamed to ..
37506         (*fixuns_truncv2dfv2si2): .. this.
37507         (ufix_truncv2dfv2si2_mask): Renamed to ..
37508         (fixuns_truncv2dfv2si2_mask): .. this.
37509         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
37510         (*fixuns_truncv2dfv2si2_mask_1): .. this.
37511         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
37512         (fixuns_truncv4dfv4si2<mask_name>): .. this.
37513         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
37514         Renamed to ..
37515         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
37516         .. this.
37517         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
37518         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
37519         .. this.
37521 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
37523         PR tree-optimization/109154
37524         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
37525         * gimple-range-gori.h (may_recompute_p): Add depth param.
37526         * params.opt (ranger-recompute-depth): New param.
37528 2023-03-30  Jason Merrill  <jason@redhat.com>
37530         PR c++/107897
37531         PR c++/108887
37532         * cgraph.h: Move reset() from cgraph_node to symtab_node.
37533         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
37534         remove_from_same_comdat_group.
37536 2023-03-30  Richard Biener  <rguenther@suse.de>
37538         PR tree-optimization/107561
37539         * gimple-ssa-warn-access.cc (get_size_range): Add flags
37540         argument and pass it on.
37541         (check_access): When querying for the size range pass
37542         SR_ALLOW_ZERO when the known destination size is zero.
37544 2023-03-30  Richard Biener  <rguenther@suse.de>
37546         PR tree-optimization/109342
37547         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
37548         overload for edge.  When that edge is a backedge use
37549         dominated_by_p directly.
37551 2023-03-30  liuhongt  <hongtao.liu@intel.com>
37553         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
37554         vpblendd instead of vpblendw for V4SI under avx2.
37556 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
37558         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
37559         for many quick operands, for register-sized modes.
37561 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
37563         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
37564         New check.
37566 2023-03-29  Martin Liska  <mliska@suse.cz>
37568         PR bootstrap/109310
37569         * configure.ac: Emit a warning for deprecated option
37570         --enable-link-mutex.
37571         * configure: Regenerate.
37573 2023-03-29  Richard Biener  <rguenther@suse.de>
37575         PR tree-optimization/109331
37576         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
37577         discover a taken edge make sure to cleanup the CFG.
37579 2023-03-29  Richard Biener  <rguenther@suse.de>
37581         PR tree-optimization/109327
37582         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
37583         already removed stmts when draining to_remove.
37585 2023-03-29  Richard Biener  <rguenther@suse.de>
37587         PR ipa/106124
37588         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
37589         so we can re-create the DIE for the type if required.
37591 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
37592             Richard Biener  <rguenther@suse.de>
37594         PR tree-optimization/109301
37595         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
37596         properties_provided from PROP_gimple_opt_math to 0.
37597         (pass_data_expand_powcabs): Change properties_provided from 0 to
37598         PROP_gimple_opt_math.
37600 2023-03-29  Richard Biener  <rguenther@suse.de>
37602         PR tree-optimization/109154
37603         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
37604         inverted condition specially by inverting at the caller.
37605         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
37607 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
37609         PR c/107002
37610         * diagnostic-show-locus.cc (column_range::column_range): Factor
37611         out assertion conditional into...
37612         (column_range::valid_p): ...this new function.
37613         (line_corrections::add_hint): Don't attempt to consolidate hints
37614         if it would lead to invalid column_range instances.
37616 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
37618         PR target/109312
37619         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
37620         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
37621         minor refactor.
37623 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
37625         PR rtl-optimization/109187
37626         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
37627         subtraction in three-way comparison.
37629 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
37631         PR tree-optimization/109265
37632         PR tree-optimization/109274
37633         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
37634         not create a relation record is op1 and op2 are the same symbol.
37635         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
37636         handler for this stmt, but create a new record only if this statement
37637         generates a relation based on the ranges.
37638         (gori_compute::compute_operand2_range): Ditto.
37639         * value-relation.h (value_relation::set_relation): Always create the
37640         record that is requested.
37642 2023-03-28  Richard Biener  <rguenther@suse.de>
37644         PR tree-optimization/107087
37645         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
37646         executable regions to avoid useless work and to better
37647         propagate degenerate PHIs.
37649 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
37651         * config/i386/x-mingw32-utf8: update comments.
37653 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
37655         PR target/109072
37656         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
37657         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
37658         variable.
37659         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
37660         New function.
37661         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
37662         after inlining.  Record which decls are loaded from.  Fix handling
37663         of vops for loads and stores.
37664         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
37665         (aarch64_accesses_vector_load_decl_p): Likewise.
37666         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
37667         variable.
37668         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
37669         that loads from a decl, treat vector stores to those decls as
37670         zero cost.
37671         (aarch64_vector_costs::finish_cost): ...and in that case,
37672         if the vector code does nothing more than a store, give the
37673         prologue a zero cost as well.
37675 2023-03-28  Richard Biener  <rguenther@suse.de>
37677         PR bootstrap/84402
37678         PR tree-optimization/108129
37679         * genmatch.cc (lower_for): For (match ...) delay
37680         substituting into the match operator if possible.
37681         (dt_operand::gen_gimple_expr): For user_id look at the
37682         first substitute for determining how to access operands.
37683         (dt_operand::gen_generic_expr): Likewise.
37684         (dt_node::gen_kids): Properly sort user_ids according
37685         to their substitutes.
37686         (dt_node::gen_kids_1): Code-generate user_id matching.
37688 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
37689             Jonathan Wakely  <jwakely@redhat.com>
37691         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
37692         Use subcommand rather than sub-command in function comments.
37694 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
37696         PR tree-optimization/109154
37697         * value-range.h (frange::flush_denormals_to_zero): Make it public
37698         rather than private.
37699         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
37700         here.
37701         * range-op-float.cc (range_operator_float::fold_range): Call
37702         flush_denormals_to_zero.
37704 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
37706         PR middle-end/106190
37707         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
37708         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
37710 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
37712         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
37713         as 4th argument to set to avoid clear_nan and union_ calls.
37715 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
37717         PR target/109276
37718         * config/i386/i386.cc (assign_386_stack_local): For DImode
37719         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
37720         align 32 rather than 0 to assign_stack_local.
37722 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
37724         PR target/109140
37725         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
37726         on operand #3 to get the final condition code.  Use std::swap.
37727         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
37728         (fucmp<gcond:code>8<P:mode>_vis): Move around.
37729         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
37730         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
37732 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
37734         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
37735         top-level sections.
37737 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
37739         * config.host: Pull in i386/x-mingw32-utf8 Makefile
37740         fragment and reference utf8rc-mingw32.o explicitly
37741         for mingw hosts.
37742         * config/i386/sym-mingw32.cc: prevent name mangling of
37743         stub symbol.
37744         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
37745         depend on manifest file explicitly.
37747 2023-03-28  Richard Biener  <rguenther@suse.de>
37749         Revert:
37750         2023-03-27  Richard Biener  <rguenther@suse.de>
37752         PR rtl-optimization/109237
37753         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
37755 2023-03-28  Richard Biener  <rguenther@suse.de>
37757         * common.opt (gdwarf): Remove Negative(gdwarf-).
37759 2023-03-28  Richard Biener  <rguenther@suse.de>
37761         * common.opt (gdwarf): Add RejectNegative.
37762         (gdwarf-): Likewise.
37763         (ggdb): Likewise.
37764         (gvms): Likewise.
37766 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
37768         * config/cris/constraints.md ("T"): Correct to
37769         define_memory_constraint.
37771 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
37773         * config/cris/cris.md (BW2): New mode-iterator.
37774         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
37775         peephole2s.
37777 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
37779         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
37780         for possible eliminable compares.
37782 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
37784         * config/cris/constraints.md ("R"): Remove unused constraint.
37786 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
37788         PR gcov-profile/109297
37789         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
37790         (merge_stream_usage): Likewise.
37791         (overlap_usage): Likewise.
37793 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
37795         PR target/109296
37796         * config/riscv/thead.md: Add missing mode specifiers.
37798 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
37799             Jiangning Liu  <jiangning.liu@amperecomputing.com>
37800             Manolis Tsamis  <manolis.tsamis@vrull.eu>
37802         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
37804 2023-03-27  Richard Biener  <rguenther@suse.de>
37806         PR rtl-optimization/109237
37807         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
37809 2023-03-27  Richard Biener  <rguenther@suse.de>
37811         PR lto/109263
37812         * lto-wrapper.cc (run_gcc): Parse alternate debug options
37813         as well, they always enable debug.
37815 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
37817         PR target/109167
37818         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
37819         from ...
37820         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
37822 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
37824         PR target/109082
37825         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
37826         than zero when calling vec_sld.
37827         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
37828         zero when calling vec_sld.
37829         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
37830         than zero when calling vec_sld.
37832 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
37834         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
37835         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
37836         loops are represented and which fields are vectors.  Add
37837         documentation for OMP_FOR_PRE_BODY field.  Document internal
37838         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
37839         * tree.def (OMP_FOR): Make documentation consistent with the
37840         Texinfo manual, to fill some gaps and correct errors.
37842 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
37844         PR target/106282
37845         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
37846         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
37847         (handle_move_double): Call it before handle_movsi.
37848         * config/m68k/m68k-protos.h: Declare it.
37850 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
37852         PR tree-optimization/109230
37853         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
37855 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
37857         PR ipa/105685
37858         * predict.cc (compute_function_frequency): Don't call
37859         warn_function_cold if function already has cold attribute.
37861 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
37863         * doc/install.texi: Remove anachronistic note
37864         related to languages built and separate source tarballs.
37866 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
37868         PR analyzer/109098
37869         * diagnostic-format-sarif.cc (read_until_eof): Delete.
37870         (maybe_read_file): Delete.
37871         (sarif_builder::maybe_make_artifact_content_object): Use
37872         get_source_file_content rather than maybe_read_file.
37873         Reject it if it's not valid UTF-8.
37874         * input.cc (file_cache_slot::get_full_file_content): New.
37875         (get_source_file_content): New.
37876         (selftest::check_cpp_valid_utf8_p): New.
37877         (selftest::test_cpp_valid_utf8_p): New.
37878         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
37879         * input.h (get_source_file_content): New prototype.
37881 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
37883         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
37884         debugging options.
37885         (Special Functions for Debugging the Analyzer): Convert to a
37886         table, and rewrite in places.
37887         (Other Debugging Techniques): Add notes on how to compare two
37888         different exploded graphs.
37890 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
37892         PR other/109163
37893         * json.cc: Update comments to indicate that we now preserve
37894         insertion order of keys within objects.
37895         (object::print): Traverse keys in insertion order.
37896         (object::set): Preserve insertion order of keys.
37897         (selftest::test_writing_objects): Add an additional key to verify
37898         that we preserve insertion order.
37899         * json.h (object::m_keys): New field.
37901 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
37903         PR tree-optimization/109238
37904         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
37905         predecessors which this block dominates.
37907 2023-03-24  Richard Biener  <rguenther@suse.de>
37909         PR tree-optimization/106912
37910         * tree-profile.cc (tree_profiling): Update stmts only when
37911         profiling or testing coverage.  Make sure to update calls
37912         fntype, stripping 'const' there.
37914 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
37916         PR middle-end/109258
37917         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
37918         if target == const0_rtx.
37920 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
37922         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
37923         Document options and effective targets.
37925 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
37927         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
37928         optional.
37930 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
37932         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
37933         non-earlyclobber alternative.
37935 2023-03-23  Andrew Pinski  <apinski@marvell.com>
37937         PR c/84900
37938         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
37939         as a lvalue.
37941 2023-03-23  Richard Biener  <rguenther@suse.de>
37943         PR tree-optimization/107569
37944         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
37945         Do not push SSA names with zero uses as available leader.
37946         (process_bb): Likewise.
37948 2023-03-23  Richard Biener  <rguenther@suse.de>
37950         PR tree-optimization/109262
37951         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
37952         combining a piecewise complex load avoid touching loads
37953         that throw internally.  Use fun, not cfun throughout.
37955 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
37957         * value-range.cc (irange::irange_union, irange::intersect): Fix
37958         comment spelling bugs.
37959         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
37960         * gimple-range-trace.h: Likewise.
37961         * gimple-range-edge.cc: Likewise.
37962         (gimple_outgoing_range_stmt_p,
37963         gimple_outgoing_range::switch_edge_range,
37964         gimple_outgoing_range::edge_range_p): Likewise.
37965         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
37966         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
37967         assume_query::assume_query, assume_query::calculate_phi): Likewise.
37968         * gimple-range-edge.h: Likewise.
37969         * value-range.h (Value_Range::set, Value_Range::lower_bound,
37970         Value_Range::upper_bound, frange::set_undefined): Likewise.
37971         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
37972         gori_compute): Likewise.
37973         * gimple-range-fold.h (fold_using_range): Likewise.
37974         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
37975         Likewise.
37976         * gimple-range-gori.cc (range_def_chain::in_chain_p,
37977         range_def_chain::dump, gori_map::calculate_gori,
37978         gori_compute::compute_operand_range_switch,
37979         gori_compute::logical_combine, gori_compute::refine_using_relation,
37980         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
37981         Likewise.
37982         * gimple-range.h: Likewise.
37983         (enable_ranger): Likewise.
37984         * range-op.h (empty_range_varying): Likewise.
37985         * value-query.h (value_query): Likewise.
37986         * gimple-range-cache.cc (block_range_cache::set_bb_range,
37987         block_range_cache::dump, ssa_global_cache::clear_global_range,
37988         temporal_cache::temporal_value, temporal_cache::current_p,
37989         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
37990         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
37991         Likewise.
37992         * gimple-range-fold.cc (fur_edge::get_phi_operand,
37993         fur_stmt::get_operand, gimple_range_adjustment,
37994         fold_using_range::range_of_phi,
37995         fold_using_range::relation_fold_and_or): Likewise.
37996         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
37997         * value-query.cc (range_query::value_of_expr,
37998         range_query::value_on_edge, range_query::query_relation): Likewise.
37999         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
38000         intersect_range_with_nonzero_bits): Likewise.
38001         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
38002         exit_range): Likewise.
38003         * value-relation.h: Likewise.
38004         (equiv_oracle, relation_trio::relation_trio, value_relation,
38005         value_relation::value_relation, pe_min): Likewise.
38006         * range-op-float.cc (range_operator_float::rv_fold,
38007         frange_arithmetic, foperator_unordered_equal::op1_range,
38008         foperator_div::rv_fold): Likewise.
38009         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
38010         * value-relation.cc (equiv_oracle::query_relation,
38011         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
38012         value_relation::apply_transitive, relation_chain_head::find_relation,
38013         dom_oracle::query_relation, dom_oracle::find_relation_block,
38014         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
38015         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
38016         create_possibly_reversed_range, adjust_op1_for_overflow,
38017         operator_mult::wi_fold, operator_exact_divide::op1_range,
38018         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
38019         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
38020         range_op_lshift_tests): Likewise.
38022 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
38024         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
38025         (move_callee_saved_registers): Detect the bug condition early.
38027 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
38029         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
38030         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
38031         (V_2REG_ALT): New.
38032         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
38033         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
38034         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
38035         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
38036         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
38038 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
38040         PR tree-optimization/109176
38041         * tree-vect-generic.cc (expand_vector_condition): If a has
38042         vector boolean type and is a comparison, also check if both
38043         the comparison and VEC_COND_EXPR could be successfully expanded
38044         individually.
38046 2023-03-23  Pan Li  <pan2.li@intel.com>
38047             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38049         PR target/108654
38050         PR target/108185
38051         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
38052         for vector mask modes.
38053         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
38054         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
38056 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
38058         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
38060 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38062         PR target/109244
38063         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
38064         (emit_vlmax_op): Ditto.
38065         * config/riscv/riscv-v.cc (get_sew): New function.
38066         (emit_vlmax_vsetvl): Adapt function.
38067         (emit_pred_op): Ditto.
38068         (emit_vlmax_op): Ditto.
38069         (emit_nonvlmax_op): Ditto.
38070         (legitimize_move): Fix LRA ICE.
38071         (gen_no_side_effects_vsetvl_rtx): Adapt function.
38072         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
38073         (@mov<VB:mode><P:mode>_lra): Ditto.
38074         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
38075         (*mov<VB:mode><P:mode>_lra): Ditto.
38077 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38079         PR target/109228
38080         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
38081         __riscv_vlenb support.
38082         (BASE): Ditto.
38083         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38084         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
38085         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
38086         (SHAPE): Ditto.
38087         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38088         * config/riscv/riscv-vector-builtins.cc: Ditto.
38090 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38091             kito-cheng  <kito.cheng@sifive.com>
38093         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
38094         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
38095         (pass_vsetvl::need_vsetvl): Fix bugs.
38096         (pass_vsetvl::backward_demand_fusion): Fix bugs.
38097         (pass_vsetvl::demand_fusion): Fix bugs.
38098         (eliminate_insn): Fix bugs.
38099         (insert_vsetvl): Ditto.
38100         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
38101         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
38102         * config/riscv/vector.md: Ditto.
38104 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38105             kito-cheng  <kito.cheng@sifive.com>
38107         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
38108         * config/riscv/vector-iterators.md (nmsac): Ditto.
38109         (nmsub): Ditto.
38110         (msac): Ditto.
38111         (msub): Ditto.
38112         (nmadd): Ditto.
38113         (nmacc): Ditto.
38114         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
38115         (@pred_mul_plus<mode>): Ditto.
38116         (*pred_madd<mode>): Ditto.
38117         (*pred_macc<mode>): Ditto.
38118         (*pred_mul_plus<mode>): Ditto.
38119         (@pred_mul_plus<mode>_scalar): Ditto.
38120         (*pred_madd<mode>_scalar): Ditto.
38121         (*pred_macc<mode>_scalar): Ditto.
38122         (*pred_mul_plus<mode>_scalar): Ditto.
38123         (*pred_madd<mode>_extended_scalar): Ditto.
38124         (*pred_macc<mode>_extended_scalar): Ditto.
38125         (*pred_mul_plus<mode>_extended_scalar): Ditto.
38126         (@pred_minus_mul<mode>): Ditto.
38127         (*pred_<madd_nmsub><mode>): Ditto.
38128         (*pred_nmsub<mode>): Ditto.
38129         (*pred_<macc_nmsac><mode>): Ditto.
38130         (*pred_nmsac<mode>): Ditto.
38131         (*pred_mul_<optab><mode>): Ditto.
38132         (*pred_minus_mul<mode>): Ditto.
38133         (@pred_mul_<optab><mode>_scalar): Ditto.
38134         (@pred_minus_mul<mode>_scalar): Ditto.
38135         (*pred_<madd_nmsub><mode>_scalar): Ditto.
38136         (*pred_nmsub<mode>_scalar): Ditto.
38137         (*pred_<macc_nmsac><mode>_scalar): Ditto.
38138         (*pred_nmsac<mode>_scalar): Ditto.
38139         (*pred_mul_<optab><mode>_scalar): Ditto.
38140         (*pred_minus_mul<mode>_scalar): Ditto.
38141         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
38142         (*pred_nmsub<mode>_extended_scalar): Ditto.
38143         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
38144         (*pred_nmsac<mode>_extended_scalar): Ditto.
38145         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
38146         (*pred_minus_mul<mode>_extended_scalar): Ditto.
38147         (*pred_<madd_msub><mode>): Ditto.
38148         (*pred_<macc_msac><mode>): Ditto.
38149         (*pred_<madd_msub><mode>_scalar): Ditto.
38150         (*pred_<macc_msac><mode>_scalar): Ditto.
38151         (@pred_neg_mul_<optab><mode>): Ditto.
38152         (@pred_mul_neg_<optab><mode>): Ditto.
38153         (*pred_<nmadd_msub><mode>): Ditto.
38154         (*pred_<nmsub_nmadd><mode>): Ditto.
38155         (*pred_<nmacc_msac><mode>): Ditto.
38156         (*pred_<nmsac_nmacc><mode>): Ditto.
38157         (*pred_neg_mul_<optab><mode>): Ditto.
38158         (*pred_mul_neg_<optab><mode>): Ditto.
38159         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
38160         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
38161         (*pred_<nmadd_msub><mode>_scalar): Ditto.
38162         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
38163         (*pred_<nmacc_msac><mode>_scalar): Ditto.
38164         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
38165         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
38166         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
38167         (@pred_widen_neg_mul_<optab><mode>): Ditto.
38168         (@pred_widen_mul_neg_<optab><mode>): Ditto.
38169         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
38170         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
38172 2023-03-23  liuhongt  <hongtao.liu@intel.com>
38174         * builtins.cc (builtin_memset_read_str): Replace
38175         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
38176         (builtin_memset_gen_str): Ditto.
38177         * config/i386/i386-expand.cc
38178         (ix86_convert_const_wide_int_to_broadcast): Replace
38179         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
38180         (ix86_expand_vector_move): Ditto.
38181         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
38182         Removed.
38183         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
38184         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
38185         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
38186         * doc/tm.texi.in: Ditto.
38187         * target.def: Ditto.
38189 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
38191         * lra.cc (lra): Do not repeat inheritance and live range splitting
38192         when asm error is found.
38194 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
38196         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
38197         (gcn_expand_dpp_distribute_even_insn)
38198         (gcn_expand_dpp_distribute_odd_insn): Declare.
38199         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
38200         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
38201         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
38202         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
38203         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
38204         (fms<mode>4_negop2): New patterns.
38205         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
38206         (gcn_expand_dpp_distribute_even_insn)
38207         (gcn_expand_dpp_distribute_odd_insn): New functions.
38208         * config/gcn/gcn.md: Add entries to unspec enum.
38210 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
38212         PR tree-optimization/109008
38213         * value-range.cc (frange::set): Add nan_state argument.
38214         * value-range.h (class nan_state): New.
38215         (frange::get_nan_state): New.
38217 2023-03-22  Martin Liska  <mliska@suse.cz>
38219         * configure: Regenerate.
38221 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
38223         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
38224         to variants.
38226 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
38228         PR tree-optimization/109192
38229         * gimple-range-gori.cc (gori_compute::compute_operand_range):
38230         Terminate gori calculations if a relation is not relevant.
38231         * value-relation.h (value_relation::set_relation): Allow
38232         equality between op1 and op2 if they are the same.
38234 2023-03-21  Richard Biener  <rguenther@suse.de>
38236         PR tree-optimization/109219
38237         * tree-vect-loop.cc (vectorizable_reduction): Check
38238         slp_node, not STMT_SLP_TYPE.
38239         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
38240         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
38241         Remove assertion on STMT_SLP_TYPE.
38243 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
38245         PR tree-optimization/109215
38246         * tree.h (enum special_array_member): Adjust comments for int_0
38247         and trail_0.
38248         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
38249         has zero sized element type and the array has variable number of
38250         elements or constant one or more elements.
38251         (component_ref_size): Adjust comments, formatting fix.
38253 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38255         * configure.ac: Add check for the Texinfo 6.8
38256         CONTENTS_OUTPUT_LOCATION customization variable and set it if
38257         supported.
38258         * configure: Regenerate.
38259         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
38260         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
38261         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
38262         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
38264 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38266         * doc/extend.texi: Associate use_hazard_barrier_return index
38267         entry with its attribute.
38268         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
38269         its attribute
38271 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38273         * doc/implement-c.texi: Remove usage of @gol.
38274         * doc/invoke.texi: Ditto.
38275         * doc/sourcebuild.texi: Ditto.
38276         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
38277         texinfo.tex versions, the bug it was working around appears to
38278         be gone.
38280 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38282         * doc/include/texinfo.tex: Update to 2023-01-17.19.
38284 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38286         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
38287         @enddefbuiltin for defining built-in functions.
38288         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
38289         places where it should be used.
38291 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38293         * doc/extend.texi (Formatted Output Function Checking): New
38294         subsection for  grouping together printf et al.
38295         (Exception handling) Fix missing @ sign before copyright
38296         header, which lead to the copyright line leaking into
38297         '(gcc)Exception handling'.
38298         * doc/gcc.texi: Set document language to en_US.
38299         (@copying): Wrap front cover texts in quotations, move in manual
38300         description text.
38302 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
38304         * doc/gcc.texi: Add the Indices appendix, to make texinfo
38305         generate nice indices overview page.
38307 2023-03-21  Richard Biener  <rguenther@suse.de>
38309         PR tree-optimization/109170
38310         * gimple-range-op.cc (cfn_pass_through_arg1): New.
38311         (gimple_range_op_handler::maybe_builtin_call): Handle
38312         __builtin_expect via cfn_pass_through_arg1.
38314 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
38316         PR target/109067
38317         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
38318         (init_float128_ieee): Delete code to switch complex multiply and divide
38319         for long double.
38320         (complex_multiply_builtin_code): New helper function.
38321         (complex_divide_builtin_code): Likewise.
38322         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
38323         of complex 128-bit multiply and divide built-in functions.
38325 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
38327         PR target/109178
38328         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
38330 2023-03-19  Jonny Grant  <jg@jguk.org>
38332         * doc/extend.texi (Common Function Attributes) <nonnull>:
38333         Correct typo.
38335 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
38337         PR rtl-optimization/109179
38338         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
38339         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
38341 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
38343         PR target/105554
38344         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
38345         to false.
38346         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
38347         to allocate_struct_function instead of false.
38348         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
38349         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
38350         push_struct_function.  Call targetm.target_option.relayout_function
38351         after it.
38352         (tree_function_versioning): Formatting fix.
38354 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
38356         * lra-constraints.cc: Include hooks.h.
38357         (combine_reload_insn): New function.
38358         (lra_constraints): Call it.
38360 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38361             kito-cheng  <kito.cheng@sifive.com>
38363         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
38364         as legitimate value.
38365         * config/riscv/riscv-vector-builtins.cc
38366         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
38367         (function_expander::use_widen_ternop_insn): Ditto.
38368         * config/riscv/vector.md (@vundefined<mode>): New pattern.
38369         (pred_mul_<optab><mode>_undef_merge): Remove.
38370         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
38371         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
38372         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
38373         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
38375 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38377         PR target/109092
38378         * config/riscv/riscv.md: Fix subreg bug.
38380 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
38382         PR middle-end/108685
38383         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
38384         use its loop_father rather than BODY_BB's loop_father.
38385         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
38386         If broken_loop with ordered > collapse and at least one of those
38387         extra loops aren't guaranteed to have at least one iteration, change
38388         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
38389         loop_father to l0_bb's loop_father rather than l1_bb's.
38391 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
38393         PR plugins/108634
38394         * gdbhooks.py (TreePrinter.to_string): Wrap
38395         gdb.parse_and_eval('tree_code_type') in a try block, parse
38396         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
38397         raises exception.  Update comments for the recent tree_code_type
38398         changes.
38400 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
38402         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
38403         issues.  Add more line breaks to example so it doesn't overflow
38404         the margins.
38406 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
38408         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
38409         line breaks in examples.
38410         <malloc>: Fix bad line breaks in running text, also copy-edit
38411         for consistency.
38412         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
38413         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
38414         @gol.
38415         (C++ Dialect Options) <-fcontracts>: Add line break in example.
38416         <-Wctad-maybe-unsupported>: Likewise.
38417         <-Winvalid-constexpr>: Likewise.
38418         (Warning Options) <-Wdangling-pointer>: Likewise.
38419         <-Winterference-size>: Likewise.
38420         <-Wvla-parameter>: Likewise.
38421         (Static Analyzer Options): Fix bad line breaks in running text,
38422         plus add some missing markup.
38423         (Optimize Options) <openacc-privatization>: Fix more bad line
38424         breaks in running text.
38426 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
38428         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
38429         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
38430         (expand_vec_perm_2perm_pblendv): Ditto.
38432 2023-03-16  Martin Liska  <mliska@suse.cz>
38434         PR middle-end/106133
38435         * gcc.cc (driver_handle_option): Use x_main_input_basename
38436         if x_dump_base_name is null.
38437         * opts.cc (common_handle_option): Likewise.
38439 2023-03-16  Richard Biener  <rguenther@suse.de>
38441         PR tree-optimization/109123
38442         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
38443         Do not emit -Wuse-after-free late.
38444         (pass_waccess::check_call): Always check call pointer uses.
38446 2023-03-16  Richard Biener  <rguenther@suse.de>
38448         PR tree-optimization/109141
38449         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
38450         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
38451         out from ...
38452         (renumber_gimple_stmt_uids): ... here and
38453         (renumber_gimple_stmt_uids_in_blocks): ... here.
38454         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
38455         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
38456         to PHIs.
38457         (pass_waccess::check_pointer_uses): Process all PHIs.
38459 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
38461         PR analyzer/109097
38462         * diagnostic-format-sarif.cc (class sarif_invocation): New.
38463         (class sarif_ice_notification): New.
38464         (sarif_builder::m_invocation_obj): New field.
38465         (sarif_invocation::add_notification_for_ice): New.
38466         (sarif_invocation::prepare_to_flush): New.
38467         (sarif_ice_notification::sarif_ice_notification): New.
38468         (sarif_builder::sarif_builder): Add m_invocation_obj.
38469         (sarif_builder::end_diagnostic): Special-case DK_ICE and
38470         DK_ICE_NOBT.
38471         (sarif_builder::flush_to_file): Call prepare_to_flush on
38472         m_invocation_obj.  Pass the latter to make_top_level_object.
38473         (sarif_builder::make_result_object): Move creation of "locations"
38474         array to...
38475         (sarif_builder::make_locations_arr): ...this new function.
38476         (sarif_builder::make_top_level_object): Add "invocation_obj" param
38477         and pass it to make_run_object.
38478         (sarif_builder::make_run_object): Add "invocation_obj" param and
38479         use it.
38480         (sarif_ice_handler): New callback.
38481         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
38482         * diagnostic.cc (diagnostic_initialize): Initialize new field
38483         "ice_handler_cb".
38484         (diagnostic_action_after_output): If it is set, make one attempt
38485         to call ice_handler_cb.
38486         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
38488 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
38490         * config/i386/i386-expand.cc (expand_vec_perm_blend):
38491         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
38492         and fix V2HImode handling.
38493         (expand_vec_perm_1): Try to emit BLEND instruction
38494         before MOVSS/MOVSD.
38495         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
38497 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
38499         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
38501 2023-03-15  Richard Biener  <rguenther@suse.de>
38503         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
38504         Do not diagnose clobbers.
38506 2023-03-15  Richard Biener  <rguenther@suse.de>
38508         PR tree-optimization/109139
38509         * tree-ssa-live.cc (remove_unused_locals): Look at the
38510         base address for unused decls on the LHS of .DEFERRED_INIT.
38512 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
38514         PR other/109086
38515         * builtins.cc (inline_string_cmp): Force the character
38516         difference into "result" pseudo-register, instead of reassign
38517         the pseudo-register.
38519 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38521         * config.gcc: Add thead.o to RISC-V extra_objs.
38522         * config/riscv/peephole.md: Add mempair peephole passes.
38523         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
38524         prototype.
38525         (th_mempair_operands_p): Likewise.
38526         (th_mempair_order_operands): Likewise.
38527         (th_mempair_prepare_save_restore_operands): Likewise.
38528         (th_mempair_save_restore_regs): Likewise.
38529         (th_mempair_output_move): Likewise.
38530         * config/riscv/riscv.cc (riscv_save_reg): Move code.
38531         (riscv_restore_reg): Move code.
38532         (riscv_for_each_saved_reg): Add code to emit mempair insns.
38533         * config/riscv/t-riscv: Add thead.cc.
38534         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
38535         New insn.
38536         (*th_mempair_store_<GPR:mode>2): Likewise.
38537         (*th_mempair_load_extendsidi2): Likewise.
38538         (*th_mempair_load_zero_extendsidi2): Likewise.
38539         * config/riscv/thead.cc: New file.
38541 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38543         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
38544         New constraint "th_f_fmv".
38545         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
38546         "th_r_fmv".
38547         * config/riscv/riscv.cc (riscv_split_doubleword_move):
38548         Add split code for XTheadFmv.
38549         (riscv_secondary_memory_needed): XTheadFmv does not need
38550         secondary memory.
38551         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
38552         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
38553         movdf_hardfloat_rv32.
38554         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
38555         (th_fmv_x_w): New INSN.
38556         (th_fmv_x_hw): New INSN.
38558 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38560         * config/riscv/riscv.md (maddhisi4): New expand.
38561         (msubhisi4): New expand.
38562         * config/riscv/thead.md (*th_mula<mode>): New pattern.
38563         (*th_mulawsi): New pattern.
38564         (*th_mulawsi2): New pattern.
38565         (*th_maddhisi4): New pattern.
38566         (*th_sextw_maddhisi4): New pattern.
38567         (*th_muls<mode>): New pattern.
38568         (*th_mulswsi): New pattern.
38569         (*th_mulswsi2): New pattern.
38570         (*th_msubhisi4): New pattern.
38571         (*th_sextw_msubhisi4): New pattern.
38573 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38575         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
38576         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
38577         Add prototype.
38578         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
38579         XTheadCondMov.
38580         (riscv_expand_conditional_move): New function.
38581         (riscv_expand_conditional_move_onesided): New function.
38582         * config/riscv/riscv.md: Add support for XTheadCondMov.
38583         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
38584         support for XTheadCondMov.
38585         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
38587 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38589         * config/riscv/bitmanip.md (clzdi2): New expand.
38590         (clzsi2): New expand.
38591         (ctz<mode>2): New expand.
38592         (popcount<mode>2): New expand.
38593         (<bitmanip_optab>si2): Rename INSN.
38594         (*<bitmanip_optab>si2): Hide INSN name.
38595         (<bitmanip_optab>di2): Rename INSN.
38596         (*<bitmanip_optab>di2): Hide INSN name.
38597         (rotrsi3): Remove INSN.
38598         (rotr<mode>3): Add expand.
38599         (*rotrsi3): New INSN.
38600         (rotrdi3): Rename INSN.
38601         (*rotrdi3): Hide INSN name.
38602         (rotrsi3_sext): Rename INSN.
38603         (*rotrsi3_sext): Hide INSN name.
38604         (bswap<mode>2): Remove INSN.
38605         (bswapdi2): Add expand.
38606         (bswapsi2): Add expand.
38607         (*bswap<mode>2): Hide INSN name.
38608         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
38609         extraction.
38610         * config/riscv/riscv.md (extv<mode>): New expand.
38611         (extzv<mode>): New expand.
38612         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
38613         (*th_ext<mode>): New INSN.
38614         (*th_extu<mode>): New INSN.
38615         (*th_clz<mode>2): New INSN.
38616         (*th_rev<mode>2): New INSN.
38618 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38620         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
38621         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
38623 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38625         * config/riscv/riscv.md: Include thead.md
38626         * config/riscv/thead.md: New file.
38628 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38630         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
38632 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
38634         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
38635         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
38636         (MASK_XTHEADBB): New.
38637         (MASK_XTHEADBS): New.
38638         (MASK_XTHEADCMO): New.
38639         (MASK_XTHEADCONDMOV): New.
38640         (MASK_XTHEADFMEMIDX): New.
38641         (MASK_XTHEADFMV): New.
38642         (MASK_XTHEADINT): New.
38643         (MASK_XTHEADMAC): New.
38644         (MASK_XTHEADMEMIDX): New.
38645         (MASK_XTHEADMEMPAIR): New.
38646         (MASK_XTHEADSYNC): New.
38647         (TARGET_XTHEADBA): New.
38648         (TARGET_XTHEADBB): New.
38649         (TARGET_XTHEADBS): New.
38650         (TARGET_XTHEADCMO): New.
38651         (TARGET_XTHEADCONDMOV): New.
38652         (TARGET_XTHEADFMEMIDX): New.
38653         (TARGET_XTHEADFMV): New.
38654         (TARGET_XTHEADINT): New.
38655         (TARGET_XTHEADMAC): New.
38656         (TARGET_XTHEADMEMIDX): New.
38657         (TARGET_XTHEADMEMPAIR): new.
38658         (TARGET_XTHEADSYNC): New.
38659         * config/riscv/riscv.opt: Add riscv_xthead_subext.
38661 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
38663         PR target/109117
38664         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
38665         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
38666         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
38668 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
38670         PR target/109109
38671         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
38672         when lo is equal to dhi and hi is a MEM which uses dlo register.
38674 2023-03-14  Martin Jambor  <mjambor@suse.cz>
38676         PR ipa/107925
38677         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
38678         global0 instead of zeroing when it does not have as many counts as
38679         it should.
38681 2023-03-14  Martin Jambor  <mjambor@suse.cz>
38683         PR ipa/107925
38684         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
38685         ipa count, remove assert, lenient_count_portion_handling, dump
38686         also orig_node_count.
38688 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
38690         * config/i386/i386-expand.cc (expand_vec_perm_movs):
38691         Handle V2SImode for TARGET_MMX_WITH_SSE.
38692         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
38693         using V2FI mode iterator to handle both V2SI and V2SF modes.
38695 2023-03-14  Sam James  <sam@gentoo.org>
38697         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
38698         including <sstream> earlier.
38699         * system.h: Add INCLUDE_SSTREAM.
38701 2023-03-14  Richard Biener  <rguenther@suse.de>
38703         * tree-ssa-live.cc (remove_unused_locals): Do not treat
38704         the .DEFERRED_INIT of a variable as use, instead remove
38705         that if it is the only use.
38707 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
38709         PR rtl-optimization/107762
38710         * expr.cc (emit_group_store): Revert latest change.
38712 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
38714         PR tree-optimization/109005
38715         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
38716         aggregate type check.
38718 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
38720         PR tree-optimization/109115
38721         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
38722         r.upper_bound () on r.undefined_p () range.
38724 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
38726         PR tree-optimization/106896
38727         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
38728         implementatoin with probability_in; avoid some asserts.
38730 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
38732         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
38734 2023-03-13  Sean Bright  <sean@seanbright.com>
38736         * doc/invoke.texi (Warning Options): Remove errant 'See'
38737         before @xref.
38739 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
38741         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
38742         REG_OK_FOR_BASE_P): Remove.
38744 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38746         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
38747         (=vd,vd,vr,vr): Ditto.
38748         * config/riscv/vector.md: Ditto.
38750 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38752         * config/riscv/riscv-vector-builtins.cc
38753         (function_expander::use_compare_insn): Add operand predicate check.
38755 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38757         * config/riscv/vector.md: Fine tune RA constraints.
38759 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
38761         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
38762         hsaco assemble/link.
38764 2023-03-13  Richard Biener  <rguenther@suse.de>
38766         PR tree-optimization/109046
38767         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
38768         piecewise complex loads.
38770 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
38772         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
38773         (aarch64_bf16_ptr_type_node): Adjust comment.
38774         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
38775         bfloat16_type_node rather than aarch64_bf16_type_node.
38776         (aarch64_libgcc_floating_mode_supported_p,
38777         aarch64_scalar_mode_supported_p): Also support BFmode.
38778         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
38779         (aarch64_invalid_binary_op): Remove BFmode related rejections.
38780         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
38781         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
38782         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
38783         aarch64_bf16_type_node.
38784         (aarch64_init_simd_builtin_types): Likewise.
38785         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
38786         which is created in tree.cc already.
38787         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
38789 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
38791         PR middle-end/109031
38792         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
38793         ensure that the type of x is as wide or wider than the type of a.
38795 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
38797         PR target/108583
38798         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
38799         (*bitmask_shift_plus<mode>): New.
38800         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
38801         (@aarch64_bitmask_udiv<mode>3): Remove.
38802         * config/aarch64/aarch64.cc
38803         (aarch64_vectorize_can_special_div_by_constant,
38804         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
38805         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
38806         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
38808 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
38810         PR target/108583
38811         * target.def (preferred_div_as_shifts_over_mult): New.
38812         * doc/tm.texi.in: Document it.
38813         * doc/tm.texi: Regenerate.
38814         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
38815         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
38816         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
38818 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
38819             Richard Sandiford  <richard.sandiford@arm.com>
38821         PR target/108583
38822         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
38823         single use.
38825 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
38826             Andrew MacLeod  <amacleod@redhat.com>
38828         PR target/108583
38829         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
38830         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
38831         Use it.
38832         (gimple_range_op_handler::maybe_non_standard): New.
38833         * range-op.cc (class operator_widen_plus_signed,
38834         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
38835         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
38836         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
38837         operator_widen_mult_unsigned::wi_fold,
38838         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
38839         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
38840         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
38841         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
38843 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
38845         PR target/108583
38846         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
38847         * doc/tm.texi.in: Likewise.
38848         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
38849         * expmed.cc (expand_divmod): Likewise.
38850         * expmed.h (expand_divmod): Likewise.
38851         * expr.cc (force_operand, expand_expr_divmod): Likewise.
38852         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
38853         * target.def (can_special_div_by_const): Remove.
38854         * target.h: Remove tree-core.h include
38855         * targhooks.cc (default_can_special_div_by_const): Remove.
38856         * targhooks.h (default_can_special_div_by_const): Remove.
38857         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
38858         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
38859         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
38861 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
38863         * doc/install.texi2html: Fix issue number typo in comment.
38865 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
38867         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
38868         bool.
38870 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
38872         * doc/invoke.texi (Optimize Options):  Add markup to
38873         description of asan-kernel-mem-intrinsic-prefix, and clarify
38874         wording slightly.
38876 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
38878         * doc/extend.texi (Named Address Spaces): Drop a redundant link
38879         to AVR-LibC.
38881 2023-03-11  Jeff Law  <jlaw@ventanamicro>
38883         PR web/88860
38884         * doc/extend.texi: Clarify Attribute Syntax a bit.
38886 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
38888         * doc/install.texi (Prerequisites): Suggest using newer versions
38889         of Texinfo.
38890         (Final install): Clean up and modernize discussion of how to
38891         build or obtain the GCC manuals.
38892         * doc/install.texi2html: Update comment to point to the PR instead
38893         of "makeinfo 4.7 brokenness" (it's not specific to that version).
38895 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38897         PR target/107703
38898         * optabs.cc (expand_fix): For conversions from BFmode to integral,
38899         use shifts to convert it to SFmode first and then convert SFmode
38900         to integral.
38902 2023-03-10  Andrew Pinski  <apinski@marvell.com>
38904         * config/aarch64/aarch64.md: Add a new define_split
38905         to help combine.
38907 2023-03-10  Richard Biener  <rguenther@suse.de>
38909         * tree-ssa-structalias.cc (solve_graph): Immediately
38910         iterate self-cycles.
38912 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38914         PR tree-optimization/109008
38915         * range-op-float.cc (float_widen_lhs_range): If not
38916         -frounding-math and not IBM double double format, extend lhs
38917         range just by 0.5ulp rather than 1ulp in each direction.
38919 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38921         PR target/107998
38922         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
38923         $tmake_file.
38924         * config/i386/t-cygwin-w64: Remove.
38926 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38928         PR plugins/108634
38929         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
38930         C++14, don't declare as extern const arrays.
38931         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
38932         static constexpr member arrays for C++11 or C++14.
38933         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
38934         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
38935         (TREE_CODE_LENGTH): For C++11 or C++14 use
38936         tree_code_length_tmpl <0>::tree_code_length instead of
38937         tree_code_length.
38938         * tree.cc (tree_code_type, tree_code_length): Remove.
38940 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38942         PR other/108464
38943         * common.opt (fcanon-prefix-map): New option.
38944         * opts.cc: Include file-prefix-map.h.
38945         (flag_canon_prefix_map): New variable.
38946         (common_handle_option): Handle OPT_fcanon_prefix_map.
38947         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
38948         * file-prefix-map.h (flag_canon_prefix_map): Declare.
38949         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
38950         member.
38951         (add_prefix_map): Initialize canonicalize member from
38952         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
38953         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
38954         use lrealpath result only for map->canonicalize map entries.
38955         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
38956         * opts-global.cc (handle_common_deferred_options): Clear
38957         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
38958         * doc/invoke.texi (-fcanon-prefix-map): Document.
38959         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
38960         see also for -fcanon-prefix-map.
38961         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
38963 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38965         PR c/108079
38966         * cgraphunit.cc (check_global_declaration): Don't warn for unused
38967         variables which have OPT_Wunused_variable warning suppressed.
38969 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
38971         PR tree-optimization/109008
38972         * range-op-float.cc (float_widen_lhs_range): If lb is
38973         minimum representable finite number or ub is maximum
38974         representable finite number, instead of widening it to
38975         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
38976         Temporarily clear flag_finite_math_only when canonicalizing
38977         the widened range.
38979 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38981         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
38982         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
38983         (gimple_fold_builtin):  Ditto.
38984         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
38985         (class vleff): Ditto.
38986         (BASE): Ditto.
38987         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38988         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
38989         (vleff): Ditto.
38990         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
38991         (struct fault_load_def): Ditto.
38992         (SHAPE): Ditto.
38993         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38994         * config/riscv/riscv-vector-builtins.cc
38995         (rvv_arg_type_info::get_tree_type): Add size_ptr.
38996         (gimple_folder::gimple_folder): New class.
38997         (gimple_folder::fold): Ditto.
38998         (gimple_fold_builtin): New function.
38999         (get_read_vl_instance): Ditto.
39000         (get_read_vl_decl): Ditto.
39001         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
39002         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
39003         (get_read_vl_instance): New function.
39004         (get_read_vl_decl):  Ditto.
39005         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
39006         (read_vl_insn_p): Ditto.
39007         (available_occurrence_p): Ditto.
39008         (backward_propagate_worthwhile_p): Ditto.
39009         (gen_vsetvl_pat): Adapt for vleff support.
39010         (get_forward_read_vl_insn): New function.
39011         (get_backward_fault_first_load_insn): Ditto.
39012         (source_equal_p): Adapt for vleff support.
39013         (first_ratio_invalid_for_second_sew_p): Remove.
39014         (first_ratio_invalid_for_second_lmul_p): Ditto.
39015         (first_lmul_less_than_second_lmul_p): Ditto.
39016         (first_ratio_less_than_second_ratio_p): Ditto.
39017         (support_relaxed_compatible_p): New function.
39018         (vector_insn_info::operator>): Remove.
39019         (vector_insn_info::operator>=): Refine.
39020         (vector_insn_info::parse_insn): Adapt for vleff support.
39021         (vector_insn_info::compatible_p): Ditto.
39022         (vector_insn_info::update_fault_first_load_avl): New function.
39023         (pass_vsetvl::transfer_after): Adapt for vleff support.
39024         (pass_vsetvl::demand_fusion): Ditto.
39025         (pass_vsetvl::cleanup_insns): Ditto.
39026         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
39027         redundant condtions.
39028         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
39029         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
39030         * config/riscv/riscv.md: Adapt for vleff support.
39031         * config/riscv/t-riscv: Ditto.
39032         * config/riscv/vector-iterators.md: New iterator.
39033         * config/riscv/vector.md (read_vlsi): New pattern.
39034         (read_vldi_zero_extend): Ditto.
39035         (@pred_fault_load<mode>): Ditto.
39037 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39039         * config/riscv/riscv-vector-builtins.cc
39040         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
39041         (function_expander::use_widen_ternop_insn): Ditto.
39042         * optabs.cc (maybe_gen_insn): Extend nops handling.
39044 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39046         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
39047         patterns according to RVV ISA.
39048         * config/riscv/vector-iterators.md: New iterators.
39049         * config/riscv/vector.md
39050         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
39051         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
39052         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
39053         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
39054         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
39055         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
39056         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
39057         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
39058         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
39059         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
39060         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
39061         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
39062         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
39063         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
39065 2023-03-10  Michael Collison  <collison@rivosinc.com>
39067         * tree-vect-loop-manip.cc (vect_do_peeling): Use
39068         result of constant_lower_bound instead of vf for the lower
39069         bound of the epilog loop trip count.
39071 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
39073         * passes.cc (emergency_dump_function): Finish graph generation.
39075 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
39077         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
39078         and bottom bit only.
39080 2023-03-09  Andrew Pinski  <apinski@marvell.com>
39082         PR tree-optimization/108980
39083         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
39084         Reorgnize the call to warning for not strict flexible arrays
39085         to be before the check of warned.
39087 2023-03-09  Jason Merrill  <jason@redhat.com>
39089         * doc/extend.texi: Comment out __is_deducible docs.
39091 2023-03-09  Jason Merrill  <jason@redhat.com>
39093         PR c++/105841
39094         * doc/extend.texi (Type Traits):: Document __is_deducible.
39096 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
39098         PR driver/108865
39099         * config.host: add object for x86_64-*-mingw*.
39100         * config/i386/sym-mingw32.cc: dummy file to attach
39101         symbol.
39102         * config/i386/utf8-mingw32.rc: windres resource file.
39103         * config/i386/winnt-utf8.manifest: XML manifest to
39104         enable UTF-8.
39105         * config/i386/x-mingw32: reference to x-mingw32-utf8.
39106         * config/i386/x-mingw32-utf8: Makefile fragment to
39107         embed UTF-8 manifest.
39109 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
39111         * lra-constraints.cc (process_alt_operands): Use operand modes for
39112         clobbered regs instead of the biggest access mode.
39114 2023-03-09  Richard Biener  <rguenther@suse.de>
39116         PR middle-end/108995
39117         * fold-const.cc (extract_muldiv_1): Avoid folding
39118         (CST * b) / CST2 when sanitizing overflow and we rely on
39119         overflow being undefined.
39121 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
39122             Richard Biener  <rguenther@suse.de>
39124         PR tree-optimization/109008
39125         * range-op-float.cc (float_widen_lhs_range): New function.
39126         (foperator_plus::op1_range, foperator_minus::op1_range,
39127         foperator_minus::op2_range, foperator_mult::op1_range,
39128         foperator_div::op1_range, foperator_div::op2_range): Use it.
39130 2023-03-07  Jonathan Grant  <jg@jguk.org>
39132         PR sanitizer/81649
39133         * doc/invoke.texi (Instrumentation Options):  Clarify
39134         LeakSanitizer behavior.
39136 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
39138         * doc/install.texi (Prerequisites): Add link to gmplib.org.
39140 2023-03-07  Pan Li  <pan2.li@intel.com>
39141             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39143         PR target/108185
39144         PR target/108654
39145         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
39146         modes.
39147         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
39148         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
39149         * genmodes.cc (adj_precision): New.
39150         (ADJUST_PRECISION): New.
39151         (emit_mode_adjustments): Handle ADJUST_PRECISION.
39153 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
39155         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
39157 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
39159         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
39160         {s|u}{max|min} in QI, HI and DI modes.
39161         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
39162         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
39163         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
39164         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
39165         saved in SGPRs.
39167 2023-03-06  Richard Biener  <rguenther@suse.de>
39169         PR tree-optimization/109025
39170         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
39171         the inner LC PHI use is the inner loop PHI latch definition
39172         before classifying an outer PHI as double reduction.
39174 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
39176         PR target/108429
39177         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
39178         generic.
39179         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
39180         (X86_TUNE_USE_SCATTER): Likewise.
39182 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
39184         PR target/109000
39185         * config/loongarch/loongarch.h (FP_RETURN): Use
39186         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
39187         (UNITS_PER_FP_ARG): Likewise.
39189 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39191         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
39192         (pass_vsetvl::backward_demand_fusion): Ditto.
39194 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
39195             SiYu Wu  <siyu@isrc.iscas.ac.cn>
39197         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
39198         instructions.
39199         (riscv_sm3p1_<mode>): New.
39200         (riscv_sm4ed_<mode>): New.
39201         (riscv_sm4ks_<mode>): New.
39202         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
39203         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
39204         ZKSH's built-in functions.
39206 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
39207             SiYu Wu  <siyu@isrc.iscas.ac.cn>
39209         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
39210         (riscv_sha256sig1_<mode>): New.
39211         (riscv_sha256sum0_<mode>): New.
39212         (riscv_sha256sum1_<mode>): New.
39213         (riscv_sha512sig0h): New.
39214         (riscv_sha512sig0l): New.
39215         (riscv_sha512sig1h): New.
39216         (riscv_sha512sig1l): New.
39217         (riscv_sha512sum0r): New.
39218         (riscv_sha512sum1r): New.
39219         (riscv_sha512sig0): New.
39220         (riscv_sha512sig1): New.
39221         (riscv_sha512sum0): New.
39222         (riscv_sha512sum1): New.
39223         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
39224         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
39225         built-in functions.
39226         (DIRECT_BUILTIN): Add new.
39228 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
39229             SiYu Wu  <siyu@isrc.iscas.ac.cn>
39231         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
39232         (DsA): New.
39233         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
39234         (riscv_aes32dsmi): New.
39235         (riscv_aes64ds): New.
39236         (riscv_aes64dsm): New.
39237         (riscv_aes64im): New.
39238         (riscv_aes64ks1i): New.
39239         (riscv_aes64ks2): New.
39240         (riscv_aes32esi): New.
39241         (riscv_aes32esmi): New.
39242         (riscv_aes64es): New.
39243         (riscv_aes64esm): New.
39244         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
39245         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
39246         ZKNE's built-in functions.
39248 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
39249             SiYu Wu  <siyu@isrc.iscas.ac.cn>
39251         * config/riscv/bitmanip.md: Add ZBKB's instructions.
39252         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
39253         * config/riscv/riscv.md: Add new type for crypto instructions.
39254         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
39255         description file.
39256         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
39257         extension's built-in function file.
39259 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
39260             SiYu Wu  <siyu@isrc.iscas.ac.cn>
39262         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
39263         (RISCV_FTYPE_NAME3): New.
39264         (RISCV_ATYPE_QI): New.
39265         (RISCV_ATYPE_HI): New.
39266         (RISCV_FTYPE_ATYPES2): New.
39267         (RISCV_FTYPE_ATYPES3): New.
39268         * config/riscv/riscv-ftypes.def (2): New.
39269         (3): New.
39271 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
39273         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
39274         use exact_log2().
39276 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39277             kito-cheng  <kito.cheng@sifive.com>
39279         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
39280         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
39281         (riscv_register_pragmas): Add builtin function check call.
39282         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
39283         (check_builtin_call): New function.
39284         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
39285         (class vreinterpret): Ditto.
39286         (class vlmul_ext): Ditto.
39287         (class vlmul_trunc): Ditto.
39288         (class vset): Ditto.
39289         (class vget): Ditto.
39290         (BASE): Ditto.
39291         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39292         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
39293         (vluxei16): Ditto.
39294         (vluxei32): Ditto.
39295         (vluxei64): Ditto.
39296         (vloxei8): Ditto.
39297         (vloxei16): Ditto.
39298         (vloxei32): Ditto.
39299         (vloxei64): Ditto.
39300         (vsuxei8): Ditto.
39301         (vsuxei16): Ditto.
39302         (vsuxei32): Ditto.
39303         (vsuxei64): Ditto.
39304         (vsoxei8): Ditto.
39305         (vsoxei16): Ditto.
39306         (vsoxei32): Ditto.
39307         (vsoxei64): Ditto.
39308         (vundefined): Add new intrinsic.
39309         (vreinterpret): Ditto.
39310         (vlmul_ext): Ditto.
39311         (vlmul_trunc): Ditto.
39312         (vset): Ditto.
39313         (vget): Ditto.
39314         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
39315         (struct narrow_alu_def): Ditto.
39316         (struct reduc_alu_def): Ditto.
39317         (struct vundefined_def): Ditto.
39318         (struct misc_def): Ditto.
39319         (struct vset_def): Ditto.
39320         (struct vget_def): Ditto.
39321         (SHAPE): Ditto.
39322         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
39323         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
39324         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
39325         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
39326         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
39327         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
39328         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
39329         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
39330         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
39331         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
39332         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
39333         (DEF_RVV_LMUL1_OPS): Ditto.
39334         (DEF_RVV_LMUL2_OPS): Ditto.
39335         (DEF_RVV_LMUL4_OPS): Ditto.
39336         (vint16mf4_t): Ditto.
39337         (vint16mf2_t): Ditto.
39338         (vint16m1_t): Ditto.
39339         (vint16m2_t): Ditto.
39340         (vint16m4_t): Ditto.
39341         (vint16m8_t): Ditto.
39342         (vint32mf2_t): Ditto.
39343         (vint32m1_t): Ditto.
39344         (vint32m2_t): Ditto.
39345         (vint32m4_t): Ditto.
39346         (vint32m8_t): Ditto.
39347         (vint64m1_t): Ditto.
39348         (vint64m2_t): Ditto.
39349         (vint64m4_t): Ditto.
39350         (vint64m8_t): Ditto.
39351         (vuint16mf4_t): Ditto.
39352         (vuint16mf2_t): Ditto.
39353         (vuint16m1_t): Ditto.
39354         (vuint16m2_t): Ditto.
39355         (vuint16m4_t): Ditto.
39356         (vuint16m8_t): Ditto.
39357         (vuint32mf2_t): Ditto.
39358         (vuint32m1_t): Ditto.
39359         (vuint32m2_t): Ditto.
39360         (vuint32m4_t): Ditto.
39361         (vuint32m8_t): Ditto.
39362         (vuint64m1_t): Ditto.
39363         (vuint64m2_t): Ditto.
39364         (vuint64m4_t): Ditto.
39365         (vuint64m8_t): Ditto.
39366         (vint8mf4_t): Ditto.
39367         (vint8mf2_t): Ditto.
39368         (vint8m1_t): Ditto.
39369         (vint8m2_t): Ditto.
39370         (vint8m4_t): Ditto.
39371         (vint8m8_t): Ditto.
39372         (vuint8mf4_t): Ditto.
39373         (vuint8mf2_t): Ditto.
39374         (vuint8m1_t): Ditto.
39375         (vuint8m2_t): Ditto.
39376         (vuint8m4_t): Ditto.
39377         (vuint8m8_t): Ditto.
39378         (vint8mf8_t): Ditto.
39379         (vuint8mf8_t): Ditto.
39380         (vfloat32mf2_t): Ditto.
39381         (vfloat32m1_t): Ditto.
39382         (vfloat32m2_t): Ditto.
39383         (vfloat32m4_t): Ditto.
39384         (vfloat64m1_t): Ditto.
39385         (vfloat64m2_t): Ditto.
39386         (vfloat64m4_t): Ditto.
39387         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
39388         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
39389         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
39390         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
39391         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
39392         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
39393         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
39394         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
39395         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
39396         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
39397         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
39398         (DEF_RVV_LMUL1_OPS): Ditto.
39399         (DEF_RVV_LMUL2_OPS): Ditto.
39400         (DEF_RVV_LMUL4_OPS): Ditto.
39401         (DEF_RVV_TYPE_INDEX): Ditto.
39402         (required_extensions_p): Adapt for new intrinsic support/
39403         (get_required_extensions): New function.
39404         (check_required_extensions): Ditto.
39405         (unsigned_base_type_p): Remove.
39406         (rvv_arg_type_info::get_scalar_ptr_type): New function.
39407         (get_mode_for_bitsize): Remove.
39408         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
39409         (rvv_arg_type_info::get_base_vector_type): Ditto.
39410         (rvv_arg_type_info::get_function_type_index): Ditto.
39411         (DEF_RVV_BASE_TYPE): New def.
39412         (function_builder::apply_predication): New class.
39413         (function_expander::mask_mode): Ditto.
39414         (function_checker::function_checker): Ditto.
39415         (function_checker::report_non_ice): Ditto.
39416         (function_checker::report_out_of_range): Ditto.
39417         (function_checker::require_immediate): Ditto.
39418         (function_checker::require_immediate_range): Ditto.
39419         (function_checker::check): Ditto.
39420         (check_builtin_call): Ditto.
39421         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
39422         (DEF_RVV_BASE_TYPE): Ditto.
39423         (DEF_RVV_TYPE_INDEX): Ditto.
39424         (vbool64_t): Ditto.
39425         (vbool32_t): Ditto.
39426         (vbool16_t): Ditto.
39427         (vbool8_t): Ditto.
39428         (vbool4_t): Ditto.
39429         (vbool2_t): Ditto.
39430         (vbool1_t): Ditto.
39431         (vuint8mf8_t): Ditto.
39432         (vuint8mf4_t): Ditto.
39433         (vuint8mf2_t): Ditto.
39434         (vuint8m1_t): Ditto.
39435         (vuint8m2_t): Ditto.
39436         (vint8m4_t): Ditto.
39437         (vuint8m4_t): Ditto.
39438         (vint8m8_t): Ditto.
39439         (vuint8m8_t): Ditto.
39440         (vint16mf4_t): Ditto.
39441         (vuint16mf2_t): Ditto.
39442         (vuint16m1_t): Ditto.
39443         (vuint16m2_t): Ditto.
39444         (vuint16m4_t): Ditto.
39445         (vuint16m8_t): Ditto.
39446         (vint32mf2_t): Ditto.
39447         (vuint32m1_t): Ditto.
39448         (vuint32m2_t): Ditto.
39449         (vuint32m4_t): Ditto.
39450         (vuint32m8_t): Ditto.
39451         (vuint64m1_t): Ditto.
39452         (vuint64m2_t): Ditto.
39453         (vuint64m4_t): Ditto.
39454         (vuint64m8_t): Ditto.
39455         (vfloat32mf2_t): Ditto.
39456         (vfloat32m1_t): Ditto.
39457         (vfloat32m2_t): Ditto.
39458         (vfloat32m4_t): Ditto.
39459         (vfloat32m8_t): Ditto.
39460         (vfloat64m1_t): Ditto.
39461         (vfloat64m4_t): Ditto.
39462         (vector): Move it def.
39463         (scalar): Ditto.
39464         (mask): Ditto.
39465         (signed_vector): Ditto.
39466         (unsigned_vector): Ditto.
39467         (unsigned_scalar): Ditto.
39468         (vector_ptr): Ditto.
39469         (scalar_ptr): Ditto.
39470         (scalar_const_ptr): Ditto.
39471         (void): Ditto.
39472         (size): Ditto.
39473         (ptrdiff): Ditto.
39474         (unsigned_long): Ditto.
39475         (long): Ditto.
39476         (eew8_index): Ditto.
39477         (eew16_index): Ditto.
39478         (eew32_index): Ditto.
39479         (eew64_index): Ditto.
39480         (shift_vector): Ditto.
39481         (double_trunc_vector): Ditto.
39482         (quad_trunc_vector): Ditto.
39483         (oct_trunc_vector): Ditto.
39484         (double_trunc_scalar): Ditto.
39485         (double_trunc_signed_vector): Ditto.
39486         (double_trunc_unsigned_vector): Ditto.
39487         (double_trunc_unsigned_scalar): Ditto.
39488         (double_trunc_float_vector): Ditto.
39489         (float_vector): Ditto.
39490         (lmul1_vector): Ditto.
39491         (widen_lmul1_vector): Ditto.
39492         (eew8_interpret): Ditto.
39493         (eew16_interpret): Ditto.
39494         (eew32_interpret): Ditto.
39495         (eew64_interpret): Ditto.
39496         (vlmul_ext_x2): Ditto.
39497         (vlmul_ext_x4): Ditto.
39498         (vlmul_ext_x8): Ditto.
39499         (vlmul_ext_x16): Ditto.
39500         (vlmul_ext_x32): Ditto.
39501         (vlmul_ext_x64): Ditto.
39502         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
39503         (struct function_type_info): New function.
39504         (struct rvv_arg_type_info): Ditto.
39505         (class function_checker): New class.
39506         (rvv_arg_type_info::get_scalar_type): New function.
39507         (rvv_arg_type_info::get_vector_type): Ditto.
39508         (function_expander::ret_mode): New function.
39509         (function_checker::arg_mode): Ditto.
39510         (function_checker::ret_mode): Ditto.
39511         * config/riscv/t-riscv: Add generator.
39512         * config/riscv/vector-iterators.md: New iterators.
39513         * config/riscv/vector.md (vundefined<mode>): New pattern.
39514         (@vundefined<mode>): Ditto.
39515         (@vreinterpret<mode>): Ditto.
39516         (@vlmul_extx2<mode>): Ditto.
39517         (@vlmul_extx4<mode>): Ditto.
39518         (@vlmul_extx8<mode>): Ditto.
39519         (@vlmul_extx16<mode>): Ditto.
39520         (@vlmul_extx32<mode>): Ditto.
39521         (@vlmul_extx64<mode>): Ditto.
39522         (*vlmul_extx2<mode>): Ditto.
39523         (*vlmul_extx4<mode>): Ditto.
39524         (*vlmul_extx8<mode>): Ditto.
39525         (*vlmul_extx16<mode>): Ditto.
39526         (*vlmul_extx32<mode>): Ditto.
39527         (*vlmul_extx64<mode>): Ditto.
39528         * config/riscv/genrvv-type-indexer.cc: New file.
39530 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39532         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
39533         (slide1_sew64_helper): New function.
39534         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
39535         (get_unknown_min_value): Ditto.
39536         (force_vector_length_operand): Ditto.
39537         (gen_no_side_effects_vsetvl_rtx): Ditto.
39538         (get_vl_x2_rtx): Ditto.
39539         (slide1_sew64_helper): Ditto.
39540         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
39541         (class vrgather): Ditto.
39542         (class vrgatherei16): Ditto.
39543         (class vcompress): Ditto.
39544         (BASE): Ditto.
39545         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39546         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
39547         (vslidedown): Ditto.
39548         (vslide1up): Ditto.
39549         (vslide1down): Ditto.
39550         (vfslide1up): Ditto.
39551         (vfslide1down): Ditto.
39552         (vrgather): Ditto.
39553         (vrgatherei16): Ditto.
39554         (vcompress): Ditto.
39555         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
39556         (vint8mf8_t): Ditto.
39557         (vint8mf4_t): Ditto.
39558         (vint8mf2_t): Ditto.
39559         (vint8m1_t): Ditto.
39560         (vint8m2_t): Ditto.
39561         (vint8m4_t): Ditto.
39562         (vint16mf4_t): Ditto.
39563         (vint16mf2_t): Ditto.
39564         (vint16m1_t): Ditto.
39565         (vint16m2_t): Ditto.
39566         (vint16m4_t): Ditto.
39567         (vint16m8_t): Ditto.
39568         (vint32mf2_t): Ditto.
39569         (vint32m1_t): Ditto.
39570         (vint32m2_t): Ditto.
39571         (vint32m4_t): Ditto.
39572         (vint32m8_t): Ditto.
39573         (vint64m1_t): Ditto.
39574         (vint64m2_t): Ditto.
39575         (vint64m4_t): Ditto.
39576         (vint64m8_t): Ditto.
39577         (vuint8mf8_t): Ditto.
39578         (vuint8mf4_t): Ditto.
39579         (vuint8mf2_t): Ditto.
39580         (vuint8m1_t): Ditto.
39581         (vuint8m2_t): Ditto.
39582         (vuint8m4_t): Ditto.
39583         (vuint16mf4_t): Ditto.
39584         (vuint16mf2_t): Ditto.
39585         (vuint16m1_t): Ditto.
39586         (vuint16m2_t): Ditto.
39587         (vuint16m4_t): Ditto.
39588         (vuint16m8_t): Ditto.
39589         (vuint32mf2_t): Ditto.
39590         (vuint32m1_t): Ditto.
39591         (vuint32m2_t): Ditto.
39592         (vuint32m4_t): Ditto.
39593         (vuint32m8_t): Ditto.
39594         (vuint64m1_t): Ditto.
39595         (vuint64m2_t): Ditto.
39596         (vuint64m4_t): Ditto.
39597         (vuint64m8_t): Ditto.
39598         (vfloat32mf2_t): Ditto.
39599         (vfloat32m1_t): Ditto.
39600         (vfloat32m2_t): Ditto.
39601         (vfloat32m4_t): Ditto.
39602         (vfloat32m8_t): Ditto.
39603         (vfloat64m1_t): Ditto.
39604         (vfloat64m2_t): Ditto.
39605         (vfloat64m4_t): Ditto.
39606         (vfloat64m8_t): Ditto.
39607         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
39608         * config/riscv/riscv.md: Adjust RVV instruction types.
39609         * config/riscv/vector-iterators.md (down): New iterator.
39610         (=vd,vr): New attribute.
39611         (UNSPEC_VSLIDE1UP): New unspec.
39612         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
39613         (*pred_slide<ud><mode>): Ditto.
39614         (*pred_slide<ud><mode>_extended): Ditto.
39615         (@pred_gather<mode>): Ditto.
39616         (@pred_gather<mode>_scalar): Ditto.
39617         (@pred_gatherei16<mode>): Ditto.
39618         (@pred_compress<mode>): Ditto.
39620 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39622         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
39624 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39626         * config/riscv/constraints.md (Wb1): New constraint.
39627         * config/riscv/predicates.md
39628         (vector_least_significant_set_mask_operand): New predicate.
39629         (vector_broadcast_mask_operand): Ditto.
39630         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
39631         (gen_scalar_move_mask): New function.
39632         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
39633         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
39634         (class vmv_s): Ditto.
39635         (BASE): Ditto.
39636         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39637         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
39638         (vmv_s): Ditto.
39639         (vfmv_f): Ditto.
39640         (vfmv_s): Ditto.
39641         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
39642         (SHAPE): Ditto.
39643         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
39644         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
39645         (function_expander::use_exact_insn): New function.
39646         (function_expander::use_contiguous_load_insn): New function.
39647         (function_expander::use_contiguous_store_insn): New function.
39648         (function_expander::use_ternop_insn): New function.
39649         (function_expander::use_widen_ternop_insn): New function.
39650         (function_expander::use_scalar_move_insn): New function.
39651         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
39652         * config/riscv/riscv-vector-builtins.h
39653         (function_expander::add_scalar_move_mask_operand): New class.
39654         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
39655         (scalar_move_insn_p): Ditto.
39656         (has_vsetvl_killed_avl_p): Ditto.
39657         (anticipatable_occurrence_p): Ditto.
39658         (insert_vsetvl): Ditto.
39659         (get_vl_vtype_info): Ditto.
39660         (calculate_sew): Ditto.
39661         (calculate_vlmul): Ditto.
39662         (incompatible_avl_p): Ditto.
39663         (different_sew_p): Ditto.
39664         (different_lmul_p): Ditto.
39665         (different_ratio_p): Ditto.
39666         (different_tail_policy_p): Ditto.
39667         (different_mask_policy_p): Ditto.
39668         (possible_zero_avl_p): Ditto.
39669         (first_ratio_invalid_for_second_sew_p): Ditto.
39670         (first_ratio_invalid_for_second_lmul_p): Ditto.
39671         (second_ratio_invalid_for_first_sew_p): Ditto.
39672         (second_ratio_invalid_for_first_lmul_p): Ditto.
39673         (second_sew_less_than_first_sew_p): Ditto.
39674         (first_sew_less_than_second_sew_p): Ditto.
39675         (compare_lmul): Ditto.
39676         (second_lmul_less_than_first_lmul_p): Ditto.
39677         (first_lmul_less_than_second_lmul_p): Ditto.
39678         (first_ratio_less_than_second_ratio_p): Ditto.
39679         (second_ratio_less_than_first_ratio_p): Ditto.
39680         (DEF_INCOMPATIBLE_COND): Ditto.
39681         (greatest_sew): Ditto.
39682         (first_sew): Ditto.
39683         (second_sew): Ditto.
39684         (first_vlmul): Ditto.
39685         (second_vlmul): Ditto.
39686         (first_ratio): Ditto.
39687         (second_ratio): Ditto.
39688         (vlmul_for_first_sew_second_ratio): Ditto.
39689         (ratio_for_second_sew_first_vlmul): Ditto.
39690         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
39691         (always_unavailable): Ditto.
39692         (avl_unavailable_p): Ditto.
39693         (sew_unavailable_p): Ditto.
39694         (lmul_unavailable_p): Ditto.
39695         (ge_sew_unavailable_p): Ditto.
39696         (ge_sew_lmul_unavailable_p): Ditto.
39697         (ge_sew_ratio_unavailable_p): Ditto.
39698         (DEF_UNAVAILABLE_COND): Ditto.
39699         (same_sew_lmul_demand_p): Ditto.
39700         (propagate_avl_across_demands_p): Ditto.
39701         (reg_available_p): Ditto.
39702         (avl_info::has_non_zero_avl): Ditto.
39703         (vl_vtype_info::has_non_zero_avl): Ditto.
39704         (vector_insn_info::operator>=): Refactor.
39705         (vector_insn_info::parse_insn): Adjust for scalar move.
39706         (vector_insn_info::demand_vl_vtype): Remove.
39707         (vector_insn_info::compatible_p): New function.
39708         (vector_insn_info::compatible_avl_p): Ditto.
39709         (vector_insn_info::compatible_vtype_p): Ditto.
39710         (vector_insn_info::available_p): Ditto.
39711         (vector_insn_info::merge): Ditto.
39712         (vector_insn_info::fuse_avl): Ditto.
39713         (vector_insn_info::fuse_sew_lmul): Ditto.
39714         (vector_insn_info::fuse_tail_policy): Ditto.
39715         (vector_insn_info::fuse_mask_policy): Ditto.
39716         (vector_insn_info::dump): Ditto.
39717         (vector_infos_manager::release): Ditto.
39718         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
39719         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
39720         (pass_vsetvl::hard_empty_block_p): Ditto.
39721         (pass_vsetvl::backward_demand_fusion): Ditto.
39722         (pass_vsetvl::forward_demand_fusion): Ditto.
39723         (pass_vsetvl::refine_vsetvls): Ditto.
39724         (pass_vsetvl::cleanup_vsetvls): Ditto.
39725         (pass_vsetvl::commit_vsetvls): Ditto.
39726         (pass_vsetvl::propagate_avl): Ditto.
39727         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
39728         (struct demands_pair): Ditto.
39729         (struct demands_cond): Ditto.
39730         (struct demands_fuse_rule): Ditto.
39731         * config/riscv/vector-iterators.md: New iterator.
39732         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
39733         (*pred_broadcast<mode>): Ditto.
39734         (*pred_broadcast<mode>_extended_scalar): Ditto.
39735         (@pred_extract_first<mode>): Ditto.
39736         (*pred_extract_first<mode>): Ditto.
39737         (@pred_extract_first_trunc<mode>): Ditto.
39738         * config/riscv/riscv-vsetvl.def: New file.
39740 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
39742         * config/riscv/bitmanip.md: allow 0 constant in max/min
39743         pattern.
39745 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
39747         * config/riscv/bitmanip.md: Fix wrong index in the check.
39749 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
39751         PR middle-end/109006
39752         * vec.cc (test_auto_alias): Adjust comment for removal of
39753         m_vecdata.
39754         * read-rtl-function.cc (function_reader::parse_block): Likewise.
39755         * gdbhooks.py: Likewise.
39757 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
39759         PR testsuite/108973
39760         * selftest-diagnostic.cc
39761         (test_diagnostic_context::test_diagnostic_context): Set
39762         caret_max_width to 80.
39764 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
39766         * gimple-ssa-warn-access.cc
39767         (pass_waccess::check_dangling_stores): Skip non-stores.
39769 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
39771         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
39772         after vmsr and vmrs, and lower the case of P0.
39774 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
39776         PR middle-end/109006
39777         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
39779 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
39781         PR middle-end/109006
39782         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
39784 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
39786         PR c/108986
39787         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
39788         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
39789         suppressed on stmt.  For [static %E] warning, print access_nelts
39790         rather than access_size.  Fix up comment wording.
39792 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
39794         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
39795         arch14 instead of z16.
39797 2023-03-03  Anthony Green  <green@moxielogic.com>
39799         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
39801 2023-03-03  Anthony Green  <green@moxielogic.com>
39803         * config/moxie/constraints.md (A, B, W): Change
39804         define_constraint to define_memory_constraint.
39806 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
39808         * toplev.cc (process_options): Fix the spelling of
39809         "-fstack-clash-protection".
39811 2023-03-03  Richard Biener  <rguenther@suse.de>
39813         PR tree-optimization/109002
39814         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
39815         PHI-translate ANTIC_IN.
39817 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
39819         PR tree-optimization/108988
39820         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
39821         size_type_node before passing it as argument to fwrite.  Formatting
39822         fixes.
39824 2023-03-03  Richard Biener  <rguenther@suse.de>
39826         PR target/108738
39827         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
39828         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
39829         * config/i386/i386-features.h (scalar_chain::max_visits): New.
39830         (scalar_chain::build): Add bitmap parameter, return boolean.
39831         (scalar_chain::add_insn): Likewise.
39832         (scalar_chain::analyze_register_chain): Likewise.
39833         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
39834         Initialize max_visits.
39835         (scalar_chain::analyze_register_chain): When we exhaust
39836         max_visits, abort.  Also abort when running into any
39837         disallowed insn.
39838         (scalar_chain::add_insn): Propagate abort.
39839         (scalar_chain::build): Likewise.  When aborting amend
39840         the set of disallowed insn with the insns set.
39841         (convert_scalars_to_vector): Adjust.  Do not convert aborted
39842         chains.
39844 2023-03-03  Richard Biener  <rguenther@suse.de>
39846         PR debug/108772
39847         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
39848         generate a DIE for a function scope static.
39850 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
39852         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
39854 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
39856         PR target/108883
39857         * target.h (emit_support_tinfos_callback): New typedef.
39858         * targhooks.h (default_emit_support_tinfos): Declare.
39859         * targhooks.cc (default_emit_support_tinfos): New function.
39860         * target.def (emit_support_tinfos): New target hook.
39861         * doc/tm.texi.in (emit_support_tinfos): Document it.
39862         * doc/tm.texi: Regenerated.
39863         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
39864         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
39866 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
39868         * ira-costs.cc: Include print-rtl.h.
39869         (record_reg_classes, scan_one_insn): Add code to print debug info.
39870         (record_operand_costs): Find and use smaller cost for hard reg
39871         move.
39873 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
39874             Paul-Antoine Arras  <pa@codesourcery.com>
39876         * builtins.cc (mathfn_built_in_explicit): New.
39877         * config/gcn/gcn.cc: Include case-cfn-macros.h.
39878         (mathfn_built_in_explicit): Add prototype.
39879         (gcn_vectorize_builtin_vectorized_function): New.
39880         (gcn_libc_has_function): New.
39881         (TARGET_LIBC_HAS_FUNCTION): Define.
39882         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
39884 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
39886         PR tree-optimization/108979
39887         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
39888         operations on invariants.
39890 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
39892         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
39893         * config/s390/s390.cc (s390_option_override_internal): Make
39894         partial vector usage the default from z13 on.
39895         * config/s390/vector.md (len_load_v16qi): Add.
39896         (len_store_v16qi): Add.
39898 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39900         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
39901         of constant 0 offset.
39903 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
39905         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
39906         instead of long.
39907         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
39909 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
39911         * config.gcc: add -with-{no-}msa build option.
39912         * config/mips/mips.h: Likewise.
39913         * doc/install.texi: Likewise.
39915 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
39917         PR tree-optimization/108603
39918         * explow.cc (convert_memory_address_addr_space_1): Only wrap
39919         the result of a recursive call in a CONST if no instructions
39920         were emitted.
39922 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
39924         PR tree-optimization/108430
39925         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
39926         of inverted condition.
39928 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
39930         PR c++/108934
39931         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
39932         comparison copy the bytes from ptr to a temporary buffer and clearing
39933         padding bits in there.
39935 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
39937         PR middle-end/108545
39938         * gimplify.cc (struct tree_operand_hash_no_se): New.
39939         (omp_index_mapping_groups_1, omp_index_mapping_groups,
39940         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
39941         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
39942         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
39943         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
39944         of tree_operand_hash.
39946 2023-03-01  LIU Hao  <lh_mouse@126.com>
39948         PR pch/14940
39949         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
39950         Remove the size limit `pch_VA_max_size`
39952 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
39954         PR middle-end/108546
39955         * omp-low.cc (lower_omp_target): Remove optional handling
39956         on the receiver side, i.e. inside target (data), for
39957         use_device_ptr.
39959 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
39961         PR debug/108967
39962         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
39963         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
39965 2023-03-01  Richard Biener  <rguenther@suse.de>
39967         PR tree-optimization/108970
39968         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
39969         Check we can copy the BBs.
39970         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
39971         check.
39972         (vect_do_peeling): Streamline error handling.
39974 2023-03-01  Richard Biener  <rguenther@suse.de>
39976         PR tree-optimization/108950
39977         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
39978         Check oprnd0 is defined in the loop.
39979         * tree-vect-loop.cc (vectorizable_reduction): Record all
39980         operands vector types, compute that of invariants and
39981         properly update their SLP nodes.
39983 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
39985         PR target/108240
39986         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
39987         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
39989 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
39991         PR middle-end/107411
39992         PR middle-end/107411
39993         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
39994         xasprintf.
39995         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
39996         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
39998 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
40000         PR sanitizer/108894
40001         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
40002         comparison rather than index > bound.
40003         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
40004         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
40005         * doc/invoke.texi (-fsanitize=bounds): Document that whether
40006         flexible array member-like arrays are instrumented or not depends
40007         on -fstrict-flex-arrays* options of strict_flex_array attributes.
40008         (-fsanitize=bounds-strict): Document that flexible array members
40009         are not instrumented.
40011 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
40013         PR target/108922
40014         Revert:
40015         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
40016         (fmod<mode>3): Ditto.
40017         (fpremxf4_i387): Ditto.
40018         (reminderxf3): Ditto.
40019         (reminder<mode>3): Ditto.
40020         (fprem1xf4_i387): Ditto.
40022 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
40024         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
40025         generating FFS with mismatched operand and result modes, by using
40026         an explicit SIGN_EXTEND/ZERO_EXTEND.
40027         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
40028         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
40030 2023-02-27  Patrick Palka  <ppalka@redhat.com>
40032         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
40033         * lra-int.h (lra_change_class): Likewise.
40034         * recog.h (which_op_alt): Likewise.
40035         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
40036         instead of static.
40038 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40040         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
40041         New prototype.
40042         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
40043         New function.
40044         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
40045         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
40047 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
40049         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
40050         (xtensa_get_config_v3): New functions.
40052 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40054         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
40056 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
40058         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
40059         the macro to 0x1000000000.
40061 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
40063         PR modula2/108261
40064         * doc/gm2.texi (-fm2-pathname): New option documented.
40065         (-fm2-pathnameI): New option documented.
40066         (-fm2-prefix=): New option documented.
40067         (-fruntime-modules=): Update default module list.
40069 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
40071         PR target/108919
40072         * config/xtensa/xtensa-protos.h
40073         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
40074         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
40075         to xtensa_expand_call.
40076         (xtensa_expand_call): Emit the call and add a clobber expression
40077         for the static chain to it in case of windowed ABI.
40078         * config/xtensa/xtensa.md (call, call_value, sibcall)
40079         (sibcall_value): Call xtensa_expand_call and complete expansion
40080         right after that call.
40082 2023-02-24  Richard Biener  <rguenther@suse.de>
40084         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
40085         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
40086         changing alignment of vec<T, A, vl_embed> and simplifying
40087         address.
40088         (vec<T, A, vl_embed>::address): Compute as this + 1.
40089         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
40090         vector instead of the offset of the m_vecdata member.
40091         (auto_vec<T, N>::m_data): Turn storage into
40092         uninitialized unsigned char.
40093         (auto_vec<T, N>::auto_vec): Allow allocation of one
40094         stack member.  Initialize m_vec in a special way to
40095         avoid later stringop overflow diagnostics.
40096         * vec.cc (test_auto_alias): New.
40097         (vec_cc_tests): Call it.
40099 2023-02-24  Richard Biener  <rguenther@suse.de>
40101         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
40102         take a const reference to the object, use address to
40103         access data.
40104         (vec<T, A, vl_embed>::contains): Use address to access data.
40105         (vec<T, A, vl_embed>::operator[]): Use address instead of
40106         m_vecdata to access data.
40107         (vec<T, A, vl_embed>::iterate): Likewise.
40108         (vec<T, A, vl_embed>::copy): Likewise.
40109         (vec<T, A, vl_embed>::quick_push): Likewise.
40110         (vec<T, A, vl_embed>::pop): Likewise.
40111         (vec<T, A, vl_embed>::quick_insert): Likewise.
40112         (vec<T, A, vl_embed>::ordered_remove): Likewise.
40113         (vec<T, A, vl_embed>::unordered_remove): Likewise.
40114         (vec<T, A, vl_embed>::block_remove): Likewise.
40115         (vec<T, A, vl_heap>::address): Likewise.
40117 2023-02-24  Martin Liska  <mliska@suse.cz>
40119         PR sanitizer/108834
40120         * asan.cc (asan_add_global): Use proper TU name for normal
40121         global variables (and aux_base_name for the artificial one).
40123 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
40125         * config/i386/i386-builtin.def: Update description of BDESC
40126         and BDESC_FIRST in file comment to include mask2.
40128 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40130         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
40132 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
40134         PR middle-end/108854
40135         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
40136         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
40137         nodes and adjust their DECL_CONTEXT.
40139 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
40141         PR target/108881
40142         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
40143         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
40144         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
40145         __builtin_ia32_cvtne2ps2bf16_v8bf,
40146         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
40147         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
40148         __builtin_ia32_cvtneps2bf16_v8sf_mask,
40149         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
40150         __builtin_ia32_cvtneps2bf16_v4sf_mask,
40151         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
40152         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
40153         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
40154         __builtin_ia32_dpbf16ps_v4sf_mask,
40155         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
40156         OPTION_MASK_ISA_AVX512VL.
40158 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
40160         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
40161         Add non-compact 32-bit multilibs.
40163 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
40165         * config/mips/mips.md (*clo<mode>2): New pattern.
40167 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
40169         * config/mips/mips.h (machine_function): New variable
40170         use_hazard_barrier_return_p.
40171         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
40172         (mips_hb_return_internal): New insn pattern.
40173         * config/mips/mips.cc (mips_attribute_table): Add attribute
40174         use_hazard_barrier_return.
40175         (mips_use_hazard_barrier_return_p): New static function.
40176         (mips_function_attr_inlinable_p): Likewise.
40177         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
40178         Emit error for unsupported architecture choice.
40179         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
40180         Return false for use_hazard_barrier_return.
40181         (mips_expand_epilogue): Emit hazard barrier return.
40182         * doc/extend.texi: Document use_hazard_barrier_return.
40184 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
40186         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
40187         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
40188         for the gcc-internal headers.
40190 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
40192         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
40193         and $(POSTCOMPILE) instead of manual dependency listing.
40194         * config/xtensa/xtensa-dynconfig.c: Rename to ...
40195         * config/xtensa/xtensa-dynconfig.cc: ... this.
40197 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
40199         * doc/cfg.texi: Reorder index entries around @items.
40200         * doc/cpp.texi: Ditto.
40201         * doc/cppenv.texi: Ditto.
40202         * doc/cppopts.texi: Ditto.
40203         * doc/generic.texi: Ditto.
40204         * doc/install.texi: Ditto.
40205         * doc/extend.texi: Ditto.
40206         * doc/invoke.texi: Ditto.
40207         * doc/md.texi: Ditto.
40208         * doc/rtl.texi: Ditto.
40209         * doc/tm.texi.in: Ditto.
40210         * doc/trouble.texi: Ditto.
40211         * doc/tm.texi: Regenerate.
40213 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40215         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
40216         the occurrence of general-purpose register used only once and for
40217         transferring intermediate value.
40219 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40221         * config/xtensa/xtensa.cc (machine_function): Add new member
40222         'eliminated_callee_saved_bmp'.
40223         (xtensa_can_eliminate_callee_saved_reg_p): New function to
40224         determine whether the register can be eliminated or not.
40225         (xtensa_expand_prologue): Add invoking the above function and
40226         elimination the use of callee-saved register by using its stack
40227         slot through the stack pointer (or the frame pointer if needed)
40228         directly.
40229         (xtensa_expand_prologue): Modify to not emit register restoration
40230         insn from its stack slot if the register is already eliminated.
40232 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
40234         PR translation/108890
40235         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
40236         around fatal_error format strings.
40238 2023-02-23  Richard Biener  <rguenther@suse.de>
40240         * tree-ssa-structalias.cc (handle_lhs_call): Do not
40241         re-create rhsc, only truncate it.
40243 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
40245         PR middle-end/106258
40246         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
40247         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
40249 2023-02-23  Richard Biener  <rguenther@suse.de>
40251         * tree-if-conv.cc (tree_if_conversion): Properly manage
40252         memory of refs and the contained data references.
40254 2023-02-23  Richard Biener  <rguenther@suse.de>
40256         PR tree-optimization/108888
40257         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
40258         calls to predicate.
40259         (predicate_statements): Only predicate calls with PLF_2.
40261 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40263         * config/xtensa/xtensa.md
40264         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
40265         Add missing "SI:" to PLUS RTXes.
40267 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
40269         PR target/108876
40270         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
40271         Emit (use (reg:SI A0_REG)) at the end in the sibling call
40272         (i.e. the same place as (return) in the normal call).
40274 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
40276         Revert:
40277         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
40279         PR target/108876
40280         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
40281         for A0_REG.
40282         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
40283         (sibcall_value, sibcall_value_internal): Add 'use' expression
40284         for A0_REG.
40286 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
40288         * doc/cppdiropts.texi: Reorder @opindex commands to precede
40289         @items they relate to.
40290         * doc/cppopts.texi: Ditto.
40291         * doc/cppwarnopts.texi: Ditto.
40292         * doc/invoke.texi: Ditto.
40293         * doc/lto.texi: Ditto.
40295 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
40297         * internal-fn.cc (expand_MASK_CALL): New.
40298         * internal-fn.def (MASK_CALL): New.
40299         * internal-fn.h (expand_MASK_CALL): New prototype.
40300         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
40301         for mask arguments also.
40302         * tree-if-conv.cc: Include cgraph.h.
40303         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
40304         (predicate_statements): Convert functions to IFN_MASK_CALL.
40305         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
40306         IFN_MASK_CALL as a SIMD function call.
40307         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
40308         IFN_MASK_CALL as an inbranch SIMD function call.
40309         Generate the mask vector arguments.
40311 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40313         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
40314         (class widen_reducop): Ditto.
40315         (class freducop): Ditto.
40316         (class widen_freducop): Ditto.
40317         (BASE): Ditto.
40318         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
40319         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
40320         (vredmaxu): Ditto.
40321         (vredmax): Ditto.
40322         (vredminu): Ditto.
40323         (vredmin): Ditto.
40324         (vredand): Ditto.
40325         (vredor): Ditto.
40326         (vredxor): Ditto.
40327         (vwredsum): Ditto.
40328         (vwredsumu): Ditto.
40329         (vfredusum): Ditto.
40330         (vfredosum): Ditto.
40331         (vfredmax): Ditto.
40332         (vfredmin): Ditto.
40333         (vfwredosum): Ditto.
40334         (vfwredusum): Ditto.
40335         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
40336         (SHAPE): Ditto.
40337         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
40338         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
40339         (DEF_RVV_WU_OPS): Ditto.
40340         (DEF_RVV_WF_OPS): Ditto.
40341         (vint8mf8_t): Ditto.
40342         (vint8mf4_t): Ditto.
40343         (vint8mf2_t): Ditto.
40344         (vint8m1_t): Ditto.
40345         (vint8m2_t): Ditto.
40346         (vint8m4_t): Ditto.
40347         (vint8m8_t): Ditto.
40348         (vint16mf4_t): Ditto.
40349         (vint16mf2_t): Ditto.
40350         (vint16m1_t): Ditto.
40351         (vint16m2_t): Ditto.
40352         (vint16m4_t): Ditto.
40353         (vint16m8_t): Ditto.
40354         (vint32mf2_t): Ditto.
40355         (vint32m1_t): Ditto.
40356         (vint32m2_t): Ditto.
40357         (vint32m4_t): Ditto.
40358         (vint32m8_t): Ditto.
40359         (vuint8mf8_t): Ditto.
40360         (vuint8mf4_t): Ditto.
40361         (vuint8mf2_t): Ditto.
40362         (vuint8m1_t): Ditto.
40363         (vuint8m2_t): Ditto.
40364         (vuint8m4_t): Ditto.
40365         (vuint8m8_t): Ditto.
40366         (vuint16mf4_t): Ditto.
40367         (vuint16mf2_t): Ditto.
40368         (vuint16m1_t): Ditto.
40369         (vuint16m2_t): Ditto.
40370         (vuint16m4_t): Ditto.
40371         (vuint16m8_t): Ditto.
40372         (vuint32mf2_t): Ditto.
40373         (vuint32m1_t): Ditto.
40374         (vuint32m2_t): Ditto.
40375         (vuint32m4_t): Ditto.
40376         (vuint32m8_t): Ditto.
40377         (vfloat32mf2_t): Ditto.
40378         (vfloat32m1_t): Ditto.
40379         (vfloat32m2_t): Ditto.
40380         (vfloat32m4_t): Ditto.
40381         (vfloat32m8_t): Ditto.
40382         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
40383         (DEF_RVV_WU_OPS): Ditto.
40384         (DEF_RVV_WF_OPS): Ditto.
40385         (required_extensions_p): Add reduction support.
40386         (rvv_arg_type_info::get_base_vector_type): Ditto.
40387         (rvv_arg_type_info::get_tree_type): Ditto.
40388         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
40389         * config/riscv/riscv.md: Ditto.
40390         * config/riscv/vector-iterators.md (minu): Ditto.
40391         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
40392         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
40393         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
40394         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
40395         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
40396         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
40397         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
40399 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40401         * config/riscv/iterators.md: New iterator.
40402         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
40403         (enum ternop_type): New enum.
40404         (class vmacc): New class.
40405         (class imac): Ditto.
40406         (class vnmsac): Ditto.
40407         (enum widen_ternop_type): New enum.
40408         (class vmadd): Ditto.
40409         (class vnmsub): Ditto.
40410         (class iwmac): Ditto.
40411         (class vwmacc): Ditto.
40412         (class vwmaccu): Ditto.
40413         (class vwmaccsu): Ditto.
40414         (class vwmaccus): Ditto.
40415         (class reverse_binop): Ditto.
40416         (class vfmacc): Ditto.
40417         (class vfnmsac): Ditto.
40418         (class vfmadd): Ditto.
40419         (class vfnmsub): Ditto.
40420         (class vfnmacc): Ditto.
40421         (class vfmsac): Ditto.
40422         (class vfnmadd): Ditto.
40423         (class vfmsub): Ditto.
40424         (class vfwmacc): Ditto.
40425         (class vfwnmacc): Ditto.
40426         (class vfwmsac): Ditto.
40427         (class vfwnmsac): Ditto.
40428         (class float_misc): Ditto.
40429         (class fcmp): Ditto.
40430         (class vfclass): Ditto.
40431         (class vfcvt_x): Ditto.
40432         (class vfcvt_rtz_x): Ditto.
40433         (class vfcvt_f): Ditto.
40434         (class vfwcvt_x): Ditto.
40435         (class vfwcvt_rtz_x): Ditto.
40436         (class vfwcvt_f): Ditto.
40437         (class vfncvt_x): Ditto.
40438         (class vfncvt_rtz_x): Ditto.
40439         (class vfncvt_f): Ditto.
40440         (class vfncvt_rod_f): Ditto.
40441         (BASE): Ditto.
40442         * config/riscv/riscv-vector-builtins-bases.h:
40443         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
40444         (vsext): Ditto.
40445         (vfadd): Ditto.
40446         (vfsub): Ditto.
40447         (vfrsub): Ditto.
40448         (vfwadd): Ditto.
40449         (vfwsub): Ditto.
40450         (vfmul): Ditto.
40451         (vfdiv): Ditto.
40452         (vfrdiv): Ditto.
40453         (vfwmul): Ditto.
40454         (vfmacc): Ditto.
40455         (vfnmsac): Ditto.
40456         (vfmadd): Ditto.
40457         (vfnmsub): Ditto.
40458         (vfnmacc): Ditto.
40459         (vfmsac): Ditto.
40460         (vfnmadd): Ditto.
40461         (vfmsub): Ditto.
40462         (vfwmacc): Ditto.
40463         (vfwnmacc): Ditto.
40464         (vfwmsac): Ditto.
40465         (vfwnmsac): Ditto.
40466         (vfsqrt): Ditto.
40467         (vfrsqrt7): Ditto.
40468         (vfrec7): Ditto.
40469         (vfmin): Ditto.
40470         (vfmax): Ditto.
40471         (vfsgnj): Ditto.
40472         (vfsgnjn): Ditto.
40473         (vfsgnjx): Ditto.
40474         (vfneg): Ditto.
40475         (vfabs): Ditto.
40476         (vmfeq): Ditto.
40477         (vmfne): Ditto.
40478         (vmflt): Ditto.
40479         (vmfle): Ditto.
40480         (vmfgt): Ditto.
40481         (vmfge): Ditto.
40482         (vfclass): Ditto.
40483         (vfmerge): Ditto.
40484         (vfmv_v): Ditto.
40485         (vfcvt_x): Ditto.
40486         (vfcvt_xu): Ditto.
40487         (vfcvt_rtz_x): Ditto.
40488         (vfcvt_rtz_xu): Ditto.
40489         (vfcvt_f): Ditto.
40490         (vfwcvt_x): Ditto.
40491         (vfwcvt_xu): Ditto.
40492         (vfwcvt_rtz_x): Ditto.
40493         (vfwcvt_rtz_xu): Ditto.
40494         (vfwcvt_f): Ditto.
40495         (vfncvt_x): Ditto.
40496         (vfncvt_xu): Ditto.
40497         (vfncvt_rtz_x): Ditto.
40498         (vfncvt_rtz_xu): Ditto.
40499         (vfncvt_f): Ditto.
40500         (vfncvt_rod_f): Ditto.
40501         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
40502         (struct move_def): Ditto.
40503         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
40504         (DEF_RVV_CONVERT_I_OPS): Ditto.
40505         (DEF_RVV_CONVERT_U_OPS): Ditto.
40506         (DEF_RVV_WCONVERT_I_OPS): Ditto.
40507         (DEF_RVV_WCONVERT_U_OPS): Ditto.
40508         (DEF_RVV_WCONVERT_F_OPS): Ditto.
40509         (vfloat64m1_t): Ditto.
40510         (vfloat64m2_t): Ditto.
40511         (vfloat64m4_t): Ditto.
40512         (vfloat64m8_t): Ditto.
40513         (vint32mf2_t): Ditto.
40514         (vint32m1_t): Ditto.
40515         (vint32m2_t): Ditto.
40516         (vint32m4_t): Ditto.
40517         (vint32m8_t): Ditto.
40518         (vint64m1_t): Ditto.
40519         (vint64m2_t): Ditto.
40520         (vint64m4_t): Ditto.
40521         (vint64m8_t): Ditto.
40522         (vuint32mf2_t): Ditto.
40523         (vuint32m1_t): Ditto.
40524         (vuint32m2_t): Ditto.
40525         (vuint32m4_t): Ditto.
40526         (vuint32m8_t): Ditto.
40527         (vuint64m1_t): Ditto.
40528         (vuint64m2_t): Ditto.
40529         (vuint64m4_t): Ditto.
40530         (vuint64m8_t): Ditto.
40531         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
40532         (DEF_RVV_CONVERT_U_OPS): Ditto.
40533         (DEF_RVV_WCONVERT_I_OPS): Ditto.
40534         (DEF_RVV_WCONVERT_U_OPS): Ditto.
40535         (DEF_RVV_WCONVERT_F_OPS): Ditto.
40536         (DEF_RVV_F_OPS): Ditto.
40537         (DEF_RVV_WEXTF_OPS): Ditto.
40538         (required_extensions_p): Adjust for floating-point support.
40539         (check_required_extensions): Ditto.
40540         (unsigned_base_type_p): Ditto.
40541         (get_mode_for_bitsize): Ditto.
40542         (rvv_arg_type_info::get_base_vector_type): Ditto.
40543         (rvv_arg_type_info::get_tree_type): Ditto.
40544         * config/riscv/riscv-vector-builtins.def (v_f): New define.
40545         (f): New define.
40546         (f_v): New define.
40547         (xu_v): New define.
40548         (f_w): New define.
40549         (xu_w): New define.
40550         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
40551         (function_expander::arg_mode): New function.
40552         * config/riscv/vector-iterators.md (sof): New iterator.
40553         (vfrecp): Ditto.
40554         (copysign): Ditto.
40555         (n): Ditto.
40556         (msac): Ditto.
40557         (msub): Ditto.
40558         (fixuns_trunc): Ditto.
40559         (floatuns): Ditto.
40560         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
40561         (@pred_<optab><mode>): Ditto.
40562         (@pred_<optab><mode>_scalar): Ditto.
40563         (@pred_<optab><mode>_reverse_scalar): Ditto.
40564         (@pred_<copysign><mode>): Ditto.
40565         (@pred_<copysign><mode>_scalar): Ditto.
40566         (@pred_mul_<optab><mode>): Ditto.
40567         (pred_mul_<optab><mode>_undef_merge): Ditto.
40568         (*pred_<madd_nmsub><mode>): Ditto.
40569         (*pred_<macc_nmsac><mode>): Ditto.
40570         (*pred_mul_<optab><mode>): Ditto.
40571         (@pred_mul_<optab><mode>_scalar): Ditto.
40572         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
40573         (*pred_<madd_nmsub><mode>_scalar): Ditto.
40574         (*pred_<macc_nmsac><mode>_scalar): Ditto.
40575         (*pred_mul_<optab><mode>_scalar): Ditto.
40576         (@pred_neg_mul_<optab><mode>): Ditto.
40577         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
40578         (*pred_<nmadd_msub><mode>): Ditto.
40579         (*pred_<nmacc_msac><mode>): Ditto.
40580         (*pred_neg_mul_<optab><mode>): Ditto.
40581         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
40582         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
40583         (*pred_<nmadd_msub><mode>_scalar): Ditto.
40584         (*pred_<nmacc_msac><mode>_scalar): Ditto.
40585         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
40586         (@pred_<misc_op><mode>): Ditto.
40587         (@pred_class<mode>): Ditto.
40588         (@pred_dual_widen_<optab><mode>): Ditto.
40589         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
40590         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
40591         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
40592         (@pred_widen_mul_<optab><mode>): Ditto.
40593         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
40594         (@pred_widen_neg_mul_<optab><mode>): Ditto.
40595         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
40596         (@pred_cmp<mode>): Ditto.
40597         (*pred_cmp<mode>): Ditto.
40598         (*pred_cmp<mode>_narrow): Ditto.
40599         (@pred_cmp<mode>_scalar): Ditto.
40600         (*pred_cmp<mode>_scalar): Ditto.
40601         (*pred_cmp<mode>_scalar_narrow): Ditto.
40602         (@pred_eqne<mode>_scalar): Ditto.
40603         (*pred_eqne<mode>_scalar): Ditto.
40604         (*pred_eqne<mode>_scalar_narrow): Ditto.
40605         (@pred_merge<mode>_scalar): Ditto.
40606         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
40607         (@pred_<fix_cvt><mode>): Ditto.
40608         (@pred_<float_cvt><mode>): Ditto.
40609         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
40610         (@pred_widen_<fix_cvt><mode>): Ditto.
40611         (@pred_widen_<float_cvt><mode>): Ditto.
40612         (@pred_extend<mode>): Ditto.
40613         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
40614         (@pred_narrow_<fix_cvt><mode>): Ditto.
40615         (@pred_narrow_<float_cvt><mode>): Ditto.
40616         (@pred_trunc<mode>): Ditto.
40617         (@pred_rod_trunc<mode>): Ditto.
40619 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
40621         PR middle-end/106258
40622         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
40623         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
40624         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
40625         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
40627 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
40629         * common.opt (-Wcomplain-wrong-lang): New.
40630         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
40631         * opts-common.cc (prune_options): Handle it.
40632         * opts-global.cc (complain_wrong_lang): Use it.
40634 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
40636         PR analyzer/108830
40637         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
40639 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
40641         PR target/108876
40642         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
40643         for A0_REG.
40644         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
40645         (sibcall_value, sibcall_value_internal): Add 'use' expression
40646         for A0_REG.
40648 2023-02-21  Richard Biener  <rguenther@suse.de>
40650         PR tree-optimization/108691
40651         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
40652         assert about calls_setjmp not becoming true when it was false.
40654 2023-02-21  Richard Biener  <rguenther@suse.de>
40656         PR tree-optimization/108793
40657         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
40658         Use convert operands to niter_type when computing num.
40660 2023-02-21  Richard Biener  <rguenther@suse.de>
40662         Revert:
40663         2023-02-13  Richard Biener  <rguenther@suse.de>
40665         PR tree-optimization/108691
40666         * tree-cfg.cc (notice_special_calls): When the CFG is built
40667         honor gimple_call_ctrl_altering_p.
40668         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
40669         temporarily if the call is not control-altering.
40670         * calls.cc (emit_call_1): Do not add REG_SETJMP if
40671         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
40673 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40675         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
40676         true if register A0 (return address register) when -Og is specified.
40678 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
40680         * config/i386/predicates.md
40681         (general_x64constmem_operand): New predicate.
40682         * config/i386/i386.md (*cmpqi_ext<mode>_1):
40683         Use nonimm_x64constmem_operand.
40684         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
40685         (*addqi_ext<mode>_1): Ditto.
40686         (*testqi_ext<mode>_1): Ditto.
40687         (*andqi_ext<mode>_1): Ditto.
40688         (*andqi_ext<mode>_1_cc): Ditto.
40689         (*<any_or:code>qi_ext<mode>_1): Ditto.
40690         (*xorqi_ext<mode>_1_cc): Ditto.
40692 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
40694         PR target/108862
40695         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
40696         gen_umadddi4_highpart{,_le}.
40698 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
40700         * config/riscv/riscv.md (prefetch): Use r instead of p for the
40701         address operand.
40702         (riscv_prefetchi_<mode>): Ditto.
40704 2023-02-20  Richard Biener  <rguenther@suse.de>
40706         PR tree-optimization/108816
40707         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
40708         versioning condition split prerequesite, assert required
40709         invariant.
40711 2023-02-20  Richard Biener  <rguenther@suse.de>
40713         PR tree-optimization/108825
40714         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
40715         loop-local verfication only verify there's no pending SSA
40716         update.
40718 2023-02-20  Richard Biener  <rguenther@suse.de>
40720         PR tree-optimization/108819
40721         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
40722         we have an SSA name as iv_2 as expected.
40724 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
40726         PR tree-optimization/108819
40727         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
40729 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
40731         PR target/108832
40732         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
40733         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
40734         function.
40735         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
40736         with ix86_replace_reg_with_reg.
40738 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
40740         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
40742 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
40744         * config.gcc (triplet_abi): Set its value based on $with_abi,
40745         instead of $target.
40746         (la_canonical_triplet): Set it after $triplet_abi is set
40747         correctly.
40748         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
40749         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
40750         "f64" suffix).
40752 2023-02-18  Andrew Pinski  <apinski@marvell.com>
40754         * match.pd: Remove #if GIMPLE around the
40755         "1 - a" pattern
40757 2023-02-18  Andrew Pinski  <apinski@marvell.com>
40759         * value-query.h (get_range_query): Return the global ranges
40760         for a nullptr func.
40762 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
40764         * doc/invoke.texi (@item -Wall): Fix typo in
40765         -Wuse-after-free.
40767 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
40769         PR target/108831
40770         * config/i386/predicates.md
40771         (nonimm_x64constmem_operand): New predicate.
40772         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
40773         (*subqi_ext<mode>_0): Ditto.
40774         (*andqi_ext<mode>_0): Ditto.
40775         (*<any_or:code>qi_ext<mode>_0): Ditto.
40777 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
40779         PR target/108805
40780         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
40781         int_outermode instead of GET_MODE (tem) to prevent
40782         VOIDmode from entering simplify_gen_subreg.
40784 2023-02-17  Richard Biener  <rguenther@suse.de>
40786         PR tree-optimization/108821
40787         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
40788         move volatile accesses.
40790 2023-02-17  Richard Biener  <rguenther@suse.de>
40792         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
40793         called on virtual operands.
40794         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
40795         ssa_undefined_value_p calls.
40796         (vn_phi_insert): Likewise.
40797         (set_ssa_val_to): Likewise.
40798         (visit_phi): Avoid extra work with equivalences for
40799         virtual operand PHIs.
40801 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40803         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
40804         class.
40805         (class mask_nlogic): Ditto.
40806         (class mask_notlogic): Ditto.
40807         (class vmmv): Ditto.
40808         (class vmclr): Ditto.
40809         (class vmset): Ditto.
40810         (class vmnot): Ditto.
40811         (class vcpop): Ditto.
40812         (class vfirst): Ditto.
40813         (class mask_misc): Ditto.
40814         (class viota): Ditto.
40815         (class vid): Ditto.
40816         (BASE): Ditto.
40817         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
40818         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
40819         (vmnand): Ditto.
40820         (vmandn): Ditto.
40821         (vmxor): Ditto.
40822         (vmor): Ditto.
40823         (vmnor): Ditto.
40824         (vmorn): Ditto.
40825         (vmxnor): Ditto.
40826         (vmmv): Ditto.
40827         (vmclr): Ditto.
40828         (vmset): Ditto.
40829         (vmnot): Ditto.
40830         (vcpop): Ditto.
40831         (vfirst): Ditto.
40832         (vmsbf): Ditto.
40833         (vmsif): Ditto.
40834         (vmsof): Ditto.
40835         (viota): Ditto.
40836         (vid): Ditto.
40837         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
40838         (struct mask_alu_def): Ditto.
40839         (SHAPE): Ditto.
40840         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
40841         * config/riscv/riscv-vector-builtins.cc: Ditto.
40842         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
40843         for dest it scalar RVV intrinsics.
40844         * config/riscv/vector-iterators.md (sof): New iterator.
40845         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
40846         (@pred_<optab>not<mode>): New pattern.
40847         (@pred_popcount<VB:mode><P:mode>): New pattern.
40848         (@pred_ffs<VB:mode><P:mode>): New pattern.
40849         (@pred_<misc_op><mode>): New pattern.
40850         (@pred_iota<mode>): New pattern.
40851         (@pred_series<mode>): New pattern.
40853 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40855         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
40856         (vsbc): Ditto.
40857         (vmerge): Ditto.
40858         (vmv_v): Ditto.
40859         * config/riscv/riscv-vector-builtins.cc: Ditto.
40861 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40862             kito-cheng  <kito.cheng@sifive.com>
40864         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
40865         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
40866         (sew64_scalar_helper): New function.
40867         * config/riscv/vector.md: Normalization.
40869 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40871         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
40872         (vsm): Ditto.
40873         (vsse): Ditto.
40874         (vsoxei64): Ditto.
40875         (vsub): Ditto.
40876         (vand): Ditto.
40877         (vor): Ditto.
40878         (vxor): Ditto.
40879         (vsll): Ditto.
40880         (vsra): Ditto.
40881         (vsrl): Ditto.
40882         (vmin): Ditto.
40883         (vmax): Ditto.
40884         (vminu): Ditto.
40885         (vmaxu): Ditto.
40886         (vmul): Ditto.
40887         (vmulh): Ditto.
40888         (vmulhu): Ditto.
40889         (vmulhsu): Ditto.
40890         (vdiv): Ditto.
40891         (vrem): Ditto.
40892         (vdivu): Ditto.
40893         (vremu): Ditto.
40894         (vnot): Ditto.
40895         (vsext): Ditto.
40896         (vzext): Ditto.
40897         (vwadd): Ditto.
40898         (vwsub): Ditto.
40899         (vwmul): Ditto.
40900         (vwmulu): Ditto.
40901         (vwmulsu): Ditto.
40902         (vwaddu): Ditto.
40903         (vwsubu): Ditto.
40904         (vsbc): Ditto.
40905         (vmsbc): Ditto.
40906         (vnsra): Ditto.
40907         (vmerge): Ditto.
40908         (vmv_v): Ditto.
40909         (vmsne): Ditto.
40910         (vmslt): Ditto.
40911         (vmsgt): Ditto.
40912         (vmsle): Ditto.
40913         (vmsge): Ditto.
40914         (vmsltu): Ditto.
40915         (vmsgtu): Ditto.
40916         (vmsleu): Ditto.
40917         (vmsgeu): Ditto.
40918         (vnmsac): Ditto.
40919         (vmadd): Ditto.
40920         (vnmsub): Ditto.
40921         (vwmacc): Ditto.
40922         (vsadd): Ditto.
40923         (vssub): Ditto.
40924         (vssubu): Ditto.
40925         (vaadd): Ditto.
40926         (vasub): Ditto.
40927         (vasubu): Ditto.
40928         (vsmul): Ditto.
40929         (vssra): Ditto.
40930         (vssrl): Ditto.
40931         (vnclip): Ditto.
40933 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40935         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
40936         (@pred_<optab><mode>_scalar): Ditto.
40937         (*pred_<optab><mode>_scalar): Ditto.
40938         (*pred_<optab><mode>_extended_scalar): Ditto.
40940 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40942         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
40943         (init_builtins): Ditto.
40944         (mangle_builtin_type): Ditto.
40945         (verify_type_context): Ditto.
40946         (handle_pragma_vector):  Ditto.
40947         (builtin_decl): Ditto.
40948         (expand_builtin): Ditto.
40949         (const_vec_all_same_in_range_p): Ditto.
40950         (legitimize_move): Ditto.
40951         (emit_vlmax_op): Ditto.
40952         (emit_nonvlmax_op): Ditto.
40953         (get_vlmul): Ditto.
40954         (get_ratio): Ditto.
40955         (get_ta): Ditto.
40956         (get_ma): Ditto.
40957         (get_avl_type): Ditto.
40958         (calculate_ratio): Ditto.
40959         (enum vlmul_type): Ditto.
40960         (simm5_p): Ditto.
40961         (neg_simm5_p): Ditto.
40962         (has_vi_variant_p): Ditto.
40964 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40966         * config/riscv/riscv-protos.h (simm32_p): Remove.
40967         * config/riscv/riscv-v.cc (simm32_p): Ditto.
40968         * config/riscv/vector.md: Use immediate_operand
40969         instead of riscv_vector::simm32_p.
40971 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
40973         * doc/invoke.texi (Optimize Options): Reword the explanation
40974         getting minimal, maximal and default values of a parameter.
40976 2023-02-16  Patrick Palka  <ppalka@redhat.com>
40978         * addresses.h: Mechanically drop 'static' from 'static inline'
40979         functions via s/^static inline/inline/g.
40980         * asan.h: Likewise.
40981         * attribs.h: Likewise.
40982         * basic-block.h: Likewise.
40983         * bitmap.h: Likewise.
40984         * cfghooks.h: Likewise.
40985         * cfgloop.h: Likewise.
40986         * cgraph.h: Likewise.
40987         * cselib.h: Likewise.
40988         * data-streamer.h: Likewise.
40989         * debug.h: Likewise.
40990         * df.h: Likewise.
40991         * diagnostic.h: Likewise.
40992         * dominance.h: Likewise.
40993         * dumpfile.h: Likewise.
40994         * emit-rtl.h: Likewise.
40995         * except.h: Likewise.
40996         * expmed.h: Likewise.
40997         * expr.h: Likewise.
40998         * fixed-value.h: Likewise.
40999         * gengtype.h: Likewise.
41000         * gimple-expr.h: Likewise.
41001         * gimple-iterator.h: Likewise.
41002         * gimple-predict.h: Likewise.
41003         * gimple-range-fold.h: Likewise.
41004         * gimple-ssa.h: Likewise.
41005         * gimple.h: Likewise.
41006         * graphite.h: Likewise.
41007         * hard-reg-set.h: Likewise.
41008         * hash-map.h: Likewise.
41009         * hash-set.h: Likewise.
41010         * hash-table.h: Likewise.
41011         * hwint.h: Likewise.
41012         * input.h: Likewise.
41013         * insn-addr.h: Likewise.
41014         * internal-fn.h: Likewise.
41015         * ipa-fnsummary.h: Likewise.
41016         * ipa-icf-gimple.h: Likewise.
41017         * ipa-inline.h: Likewise.
41018         * ipa-modref.h: Likewise.
41019         * ipa-prop.h: Likewise.
41020         * ira-int.h: Likewise.
41021         * ira.h: Likewise.
41022         * lra-int.h: Likewise.
41023         * lra.h: Likewise.
41024         * lto-streamer.h: Likewise.
41025         * memmodel.h: Likewise.
41026         * omp-general.h: Likewise.
41027         * optabs-query.h: Likewise.
41028         * optabs.h: Likewise.
41029         * plugin.h: Likewise.
41030         * pretty-print.h: Likewise.
41031         * range.h: Likewise.
41032         * read-md.h: Likewise.
41033         * recog.h: Likewise.
41034         * regs.h: Likewise.
41035         * rtl-iter.h: Likewise.
41036         * rtl.h: Likewise.
41037         * sbitmap.h: Likewise.
41038         * sched-int.h: Likewise.
41039         * sel-sched-ir.h: Likewise.
41040         * sese.h: Likewise.
41041         * sparseset.h: Likewise.
41042         * ssa-iterators.h: Likewise.
41043         * system.h: Likewise.
41044         * target-globals.h: Likewise.
41045         * target.h: Likewise.
41046         * timevar.h: Likewise.
41047         * tree-chrec.h: Likewise.
41048         * tree-data-ref.h: Likewise.
41049         * tree-iterator.h: Likewise.
41050         * tree-outof-ssa.h: Likewise.
41051         * tree-phinodes.h: Likewise.
41052         * tree-scalar-evolution.h: Likewise.
41053         * tree-sra.h: Likewise.
41054         * tree-ssa-alias.h: Likewise.
41055         * tree-ssa-live.h: Likewise.
41056         * tree-ssa-loop-manip.h: Likewise.
41057         * tree-ssa-loop.h: Likewise.
41058         * tree-ssa-operands.h: Likewise.
41059         * tree-ssa-propagate.h: Likewise.
41060         * tree-ssa-sccvn.h: Likewise.
41061         * tree-ssa.h: Likewise.
41062         * tree-ssanames.h: Likewise.
41063         * tree-streamer.h: Likewise.
41064         * tree-switch-conversion.h: Likewise.
41065         * tree-vectorizer.h: Likewise.
41066         * tree.h: Likewise.
41067         * wide-int.h: Likewise.
41069 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
41071         PR tree-optimization/108657
41072         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
41073         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
41074         is a call to internal or builtin function.
41076 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
41078         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
41079         using-declaration to unhide functions.
41081 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
41083         PR tree-optimization/108783
41084         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
41085         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
41086         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
41087         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
41089 2023-02-16  Richard Biener  <rguenther@suse.de>
41091         PR tree-optimization/108791
41092         * tree-ssa-forwprop.cc (optimize_vector_load): Build
41093         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
41094         type.
41096 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
41098         PR target/90458
41099         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
41100         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
41101         (ix86_expand_prologue): Likewise.
41103 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
41105         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
41107 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
41109         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
41110         int248_register_operand predicate in zero_extract sub-RTX.
41111         (*cmpqi_ext<mode>_2): Ditto.
41112         (*cmpqi_ext<mode>_3): Ditto.
41113         (*cmpqi_ext<mode>_4): Ditto.
41114         (*extzvqi_mem_rex64): Ditto.
41115         (*extzvqi): Ditto.
41116         (*insvqi_1_mem_rex64): Ditto.
41117         (@insv<mode>_1): Ditto.
41118         (*insvqi_1): Ditto.
41119         (*insvqi_2): Ditto.
41120         (*insvqi_3): Ditto.
41121         (*extendqi<SWI24:mode>_ext_1): Ditto.
41122         (*addqi_ext<mode>_1): Ditto.
41123         (*addqi_ext<mode>_2): Ditto.
41124         (*subqi_ext<mode>_2): Ditto.
41125         (*testqi_ext<mode>_1): Ditto.
41126         (*testqi_ext<mode>_2): Ditto.
41127         (*andqi_ext<mode>_1): Ditto.
41128         (*andqi_ext<mode>_1_cc): Ditto.
41129         (*andqi_ext<mode>_2): Ditto.
41130         (*<any_or:code>qi_ext<mode>_1): Ditto.
41131         (*<any_or:code>qi_ext<mode>_2): Ditto.
41132         (*xorqi_ext<mode>_1_cc): Ditto.
41133         (*negqi_ext<mode>_2): Ditto.
41134         (*ashlqi_ext<mode>_2): Ditto.
41135         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
41137 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
41139         * config/i386/predicates.md (int248_register_operand):
41140         Rename from extr_register_operand.
41141         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
41142         (*extzx<mode>): Ditto.
41143         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
41144         (*ashl<mode>3_mask): Ditto.
41145         (*<any_shiftrt:insn><mode>3_mask): Ditto.
41146         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
41147         (*<any_rotate:insn><mode>3_mask): Ditto.
41148         (*<btsc><mode>_mask): Ditto.
41149         (*btr<mode>_mask): Ditto.
41150         (*jcc_bt<mode>_mask_1): Ditto.
41152 2023-02-15  Richard Biener  <rguenther@suse.de>
41154         PR middle-end/26854
41155         * df-core.cc (df_worklist_propagate_forward): Put later
41156         blocks on worklist and only earlier blocks on pending.
41157         (df_worklist_propagate_backward): Likewise.
41158         (df_worklist_dataflow_doublequeue): Change the iteration
41159         to process new blocks in the same iteration if that
41160         maintains the iteration order.
41162 2023-02-15  Marek Polacek  <polacek@redhat.com>
41164         PR middle-end/106080
41165         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
41166         instead.
41168 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41170         * config/riscv/predicates.md: Refine codes.
41171         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
41172         * config/riscv/riscv-v.cc: Refine codes.
41173         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
41174         enum.
41175         (class imac): New class.
41176         (enum widen_ternop_type): New enum.
41177         (class iwmac): New class.
41178         (BASE): New class.
41179         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41180         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
41181         (vnmsac): Ditto.
41182         (vmadd): Ditto.
41183         (vnmsub): Ditto.
41184         (vwmacc): Ditto.
41185         (vwmaccu): Ditto.
41186         (vwmaccsu): Ditto.
41187         (vwmaccus): Ditto.
41188         * config/riscv/riscv-vector-builtins.cc
41189         (function_builder::apply_predication): Adjust for multiply-add support.
41190         (function_expander::add_vundef_operand): Refine codes.
41191         (function_expander::use_ternop_insn): New function.
41192         (function_expander::use_widen_ternop_insn): Ditto.
41193         * config/riscv/riscv-vector-builtins.h: New function.
41194         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
41195         (pred_mul_<optab><mode>_undef_merge): Ditto.
41196         (*pred_<madd_nmsub><mode>): Ditto.
41197         (*pred_<macc_nmsac><mode>): Ditto.
41198         (*pred_mul_<optab><mode>): Ditto.
41199         (@pred_mul_<optab><mode>_scalar): Ditto.
41200         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
41201         (*pred_<madd_nmsub><mode>_scalar): Ditto.
41202         (*pred_<macc_nmsac><mode>_scalar): Ditto.
41203         (*pred_mul_<optab><mode>_scalar): Ditto.
41204         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
41205         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
41206         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
41207         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
41208         (@pred_widen_mul_plus<su><mode>): Ditto.
41209         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
41210         (@pred_widen_mul_plussu<mode>): Ditto.
41211         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
41212         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
41214 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41216         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
41217         (vector_all_trues_mask_operand): New predicate.
41218         (vector_undef_operand): New predicate.
41219         (ltge_operator): New predicate.
41220         (comparison_except_ltge_operator): New predicate.
41221         (comparison_except_eqge_operator): New predicate.
41222         (ge_operator): New predicate.
41223         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
41224         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
41225         (BASE): Ditto.
41226         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41227         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
41228         (vmsne): Ditto.
41229         (vmslt): Ditto.
41230         (vmsgt): Ditto.
41231         (vmsle): Ditto.
41232         (vmsge): Ditto.
41233         (vmsltu): Ditto.
41234         (vmsgtu): Ditto.
41235         (vmsleu): Ditto.
41236         (vmsgeu): Ditto.
41237         * config/riscv/riscv-vector-builtins-shapes.cc
41238         (struct return_mask_def): Adjust for compare support.
41239         * config/riscv/riscv-vector-builtins.cc
41240         (function_expander::use_compare_insn): New function.
41241         * config/riscv/riscv-vector-builtins.h
41242         (function_expander::add_integer_operand): Ditto.
41243         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
41244         * config/riscv/riscv.md: Add vector min/max attributes.
41245         * config/riscv/vector-iterators.md (xnor): New iterator.
41246         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
41247         (*pred_cmp<mode>): Ditto.
41248         (*pred_cmp<mode>_narrow): Ditto.
41249         (@pred_ltge<mode>): Ditto.
41250         (*pred_ltge<mode>): Ditto.
41251         (*pred_ltge<mode>_narrow): Ditto.
41252         (@pred_cmp<mode>_scalar): Ditto.
41253         (*pred_cmp<mode>_scalar): Ditto.
41254         (*pred_cmp<mode>_scalar_narrow): Ditto.
41255         (@pred_eqne<mode>_scalar): Ditto.
41256         (*pred_eqne<mode>_scalar): Ditto.
41257         (*pred_eqne<mode>_scalar_narrow): Ditto.
41258         (*pred_cmp<mode>_extended_scalar): Ditto.
41259         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
41260         (*pred_eqne<mode>_extended_scalar): Ditto.
41261         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
41262         (@pred_ge<mode>_scalar): Ditto.
41263         (@pred_<optab><mode>): Ditto.
41264         (@pred_n<optab><mode>): Ditto.
41265         (@pred_<optab>n<mode>): Ditto.
41266         (@pred_not<mode>): Ditto.
41268 2023-02-15  Martin Jambor  <mjambor@suse.cz>
41270         PR ipa/108679
41271         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
41272         creation of non-scalar replacements even if IPA-CP knows their
41273         contents.
41275 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
41277         PR target/108787
41278         PR target/103109
41279         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
41280         expander, change operand 3 to be TImode, emit maddlddi4 and
41281         umadddi4_highpart{,_le} with its low half and finally add the high
41282         half to the result.
41284 2023-02-15  Martin Liska  <mliska@suse.cz>
41286         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
41288 2023-02-15  Richard Biener  <rguenther@suse.de>
41290         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
41291         for with_poison and alias worklist to it.
41292         (sanitize_asan_mark_poison): Likewise.
41294 2023-02-15  Richard Biener  <rguenther@suse.de>
41296         PR target/108738
41297         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
41298         Combine bitmap test and set.
41299         (scalar_chain::add_insn): Likewise.
41300         (scalar_chain::analyze_register_chain): Remove redundant
41301         attempt to add to queue and instead strengthen assert.
41302         Sink common attempts to mark the def dual-mode.
41303         (scalar_chain::add_to_queue): Remove redundant insn bitmap
41304         check.
41306 2023-02-15  Richard Biener  <rguenther@suse.de>
41308         PR target/108738
41309         * config/i386/i386-features.cc (convert_scalars_to_vector):
41310         Switch candidates bitmaps to tree view before building the chains.
41312 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
41314         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
41315         "failure trying to reload" call.
41317 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
41319         * gdbinit.in (phrs): New command.
41320         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
41321         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
41323 2023-02-14  David Faust  <david.faust@oracle.com>
41325         PR target/108790
41326         * config/bpf/constraints.md (q): New memory constraint.
41327         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
41328         (zero_extendqidi2): Likewise.
41329         (zero_extendsidi2): Likewise.
41330         (*mov<MM:mode>): Likewise.
41332 2023-02-14  Andrew Pinski  <apinski@marvell.com>
41334         PR tree-optimization/108355
41335         PR tree-optimization/96921
41336         * match.pd: Add pattern for "1 - bool_val".
41338 2023-02-14  Richard Biener  <rguenther@suse.de>
41340         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
41341         basic block index hashing on the availability of ->cclhs.
41342         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
41343         rely on ->cclhs availability.
41344         (vn_phi_lookup): Set ->cclhs only when we are eventually
41345         going to CSE the PHI.
41346         (vn_phi_insert): Likewise.
41348 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
41350         * gimplify.cc (gimplify_save_expr): Add missing guard.
41352 2023-02-14  Richard Biener  <rguenther@suse.de>
41354         PR tree-optimization/108782
41355         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
41356         Make sure we're not vectorizing an inner loop.
41358 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
41360         PR sanitizer/108777
41361         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
41362         * asan.h (asan_memfn_rtl): Declare.
41363         * asan.cc (asan_memfn_rtls): New variable.
41364         (asan_memfn_rtl): New function.
41365         * builtins.cc (expand_builtin): If
41366         param_asan_kernel_mem_intrinsic_prefix and function is
41367         kernel-{,hw}address sanitized, emit calls to
41368         __{,hw}asan_{memcpy,memmove,memset} rather than
41369         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
41370         instead of flag_sanitize & SANITIZE_ADDRESS to check if
41371         asan_intercepted_p functions shouldn't be expanded inline.
41373 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
41375         PR tree-optimization/96373
41376         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
41377         operations on the loop mask.  Reject partial vectors if this isn't
41378         possible.
41380 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
41382         PR rtl-optimization/108681
41383         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
41384         code to handle bare uses and clobbers.
41386 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
41388         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
41389         caller_save_p flag when clearing defined_p flag.
41390         (setup_reg_equiv): Ditto.
41391         * lra-constraints.cc (lra_constraints): Ditto.
41393 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
41395         PR target/108516
41396         * config/i386/predicates.md (extr_register_operand):
41397         New special predicate.
41398         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
41399         as operand 1 predicate.
41400         (*exzv<mode>): Ditto.
41401         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
41403 2023-02-13  Richard Biener  <rguenther@suse.de>
41405         PR tree-optimization/28614
41406         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
41407         walking all edges in most cases.
41408         (vn_nary_op_insert_pieces_predicated): Avoid repeated
41409         calls to can_track_predicate_on_edge unless checking is
41410         enabled.
41411         (process_bb): Instead call it once here for each edge
41412         we register possibly multiple predicates on.
41414 2023-02-13  Richard Biener  <rguenther@suse.de>
41416         PR tree-optimization/108691
41417         * tree-cfg.cc (notice_special_calls): When the CFG is built
41418         honor gimple_call_ctrl_altering_p.
41419         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
41420         temporarily if the call is not control-altering.
41421         * calls.cc (emit_call_1): Do not add REG_SETJMP if
41422         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
41424 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
41426         PR target/108102
41427         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
41428         (struct s390_sched_state): Initialise to zero.
41429         (s390_sched_variable_issue): For better debuggability also emit
41430         the current side.
41431         (s390_sched_init): Unconditionally reset scheduler state.
41433 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
41435         * ifcvt.h (noce_if_info::cond_inverted): New field.
41436         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
41437         values when cond_inverted is true.
41438         (noce_find_if_block): Allow the condition to be inverted when
41439         handling conditional moves.
41441 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
41443         * config/s390/predicates.md (execute_operation): Use
41444         constrain_operands instead of extract_constrain_insn in order to
41445         determine wheter there exists a valid alternative.
41447 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
41449         * common/config/arc/arc-common.cc (arc_option_optimization_table):
41450         Remove millicode from list.
41452 2023-02-13  Martin Liska  <mliska@suse.cz>
41454         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
41456 2023-02-13  Richard Biener  <rguenther@suse.de>
41458         PR tree-optimization/106722
41459         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
41460         whether we marked a stmt.
41461         (mark_control_dependent_edges_necessary): When
41462         mark_last_stmt_necessary didn't mark any stmt make sure
41463         to mark its control dependent edges.
41464         (propagate_necessity): Likewise.
41466 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
41468         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
41469         (DWARF_FRAME_REGISTERS): New.
41470         (DWARF_REG_TO_UNWIND_COLUMN): New.
41472 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
41474         * doc/sourcebuild.texi: Remove (broken) direct reference to
41475         "The GNU configure and build system".
41477 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
41479         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
41480         gen_add3_insn to gen_rtx_SET.
41481         (riscv_adjust_libcall_cfi_epilogue): Likewise.
41483 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41485         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
41486         (class vnclip): Ditto.
41487         (BASE): Ditto.
41488         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41489         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
41490         (vasub): Ditto.
41491         (vaaddu): Ditto.
41492         (vasubu): Ditto.
41493         (vsmul): Ditto.
41494         (vssra): Ditto.
41495         (vssrl): Ditto.
41496         (vnclipu): Ditto.
41497         (vnclip): Ditto.
41498         * config/riscv/vector-iterators.md (su): Add instruction.
41499         (aadd): Ditto.
41500         (vaalu): Ditto.
41501         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
41502         (@pred_<sat_op><mode>_scalar): Ditto.
41503         (*pred_<sat_op><mode>_scalar): Ditto.
41504         (*pred_<sat_op><mode>_extended_scalar): Ditto.
41505         (@pred_narrow_clip<v_su><mode>): Ditto.
41506         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
41508 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41510         * config/riscv/constraints.md (Wbr): Remove unused constraint.
41511         * config/riscv/predicates.md: Fix move operand predicate.
41512         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
41513         (class vncvt_x): Ditto.
41514         (class vmerge): Ditto.
41515         (class vmv_v): Ditto.
41516         (BASE): Ditto.
41517         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41518         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
41519         (vsrl): Ditto.
41520         (vnsrl): Ditto.
41521         (vnsra): Ditto.
41522         (vncvt_x): Ditto.
41523         (vmerge): Ditto.
41524         (vmv_v): Ditto.
41525         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
41526         (struct move_def): Ditto.
41527         (SHAPE): Ditto.
41528         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
41529         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
41530         (DEF_RVV_WEXTU_OPS): Ditto
41531         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
41532         (v_v): Ditto.
41533         (v_x): Ditto.
41534         (x_w): Ditto.
41535         (x): Ditto.
41536         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
41537         * config/riscv/vector-iterators.md (nmsac):New iterator.
41538         (nmsub): New iterator.
41539         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
41540         (@pred_merge<mode>_scalar): New pattern.
41541         (*pred_merge<mode>_scalar): New pattern.
41542         (*pred_merge<mode>_extended_scalar): New pattern.
41543         (@pred_narrow_<optab><mode>): New pattern.
41544         (@pred_narrow_<optab><mode>_scalar): New pattern.
41545         (@pred_trunc<mode>): New pattern.
41547 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41549         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
41550         (class vmsbc): Ditto.
41551         (BASE): Define new class.
41552         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41553         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
41554         (vmsbc): Ditto.
41555         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
41556         New class.
41557         (SHAPE): Ditto.
41558         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
41559         * config/riscv/riscv-vector-builtins.cc
41560         (function_expander::use_exact_insn): Adjust for new support
41561         * config/riscv/riscv-vector-builtins.h
41562         (function_base::has_merge_operand_p): New function.
41563         * config/riscv/vector-iterators.md: New iterator.
41564         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
41565         (@pred_msbc<mode>): Ditto.
41566         (@pred_madc<mode>_scalar): Ditto.
41567         (@pred_msbc<mode>_scalar): Ditto.
41568         (*pred_madc<mode>_scalar): Ditto.
41569         (*pred_madc<mode>_extended_scalar): Ditto.
41570         (*pred_msbc<mode>_scalar): Ditto.
41571         (*pred_msbc<mode>_extended_scalar): Ditto.
41572         (@pred_madc<mode>_overflow): Ditto.
41573         (@pred_msbc<mode>_overflow): Ditto.
41574         (@pred_madc<mode>_overflow_scalar): Ditto.
41575         (@pred_msbc<mode>_overflow_scalar): Ditto.
41576         (*pred_madc<mode>_overflow_scalar): Ditto.
41577         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
41578         (*pred_msbc<mode>_overflow_scalar): Ditto.
41579         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
41581 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41583         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
41584         * config/riscv/riscv-v.cc (simm32_p): Ditto.
41585         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
41586         (class vsbc): Ditto.
41587         (BASE): Ditto.
41588         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41589         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
41590         (vsbc): Ditto.
41591         * config/riscv/riscv-vector-builtins-shapes.cc
41592         (struct no_mask_policy_def): Ditto.
41593         (SHAPE): Ditto.
41594         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
41595         * config/riscv/riscv-vector-builtins.cc
41596         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
41597         (rvv_arg_type_info::get_tree_type): Ditto.
41598         (function_expander::use_exact_insn): Ditto.
41599         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
41600         (function_base::use_mask_predication_p): New function.
41601         * config/riscv/vector-iterators.md: New iterator.
41602         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
41603         (@pred_sbc<mode>): Ditto.
41604         (@pred_adc<mode>_scalar): Ditto.
41605         (@pred_sbc<mode>_scalar): Ditto.
41606         (*pred_adc<mode>_scalar): Ditto.
41607         (*pred_adc<mode>_extended_scalar): Ditto.
41608         (*pred_sbc<mode>_scalar): Ditto.
41609         (*pred_sbc<mode>_extended_scalar): Ditto.
41611 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41613         * config/riscv/vector.md: use "zero" reg.
41615 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41617         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
41618         class.
41619         (class vwmulsu): Ditto.
41620         (class vwcvt): Ditto.
41621         (BASE): Add integer widening support.
41622         * config/riscv/riscv-vector-builtins-bases.h: Ditto
41623         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
41624         (vwsub): New class.
41625         (vwmul): New class.
41626         (vwmulu): New class.
41627         (vwmulsu): New class.
41628         (vwaddu): New class.
41629         (vwsubu): New class.
41630         (vwcvt_x): New class.
41631         (vwcvtu_x): New class.
41632         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
41633         class.
41634         (struct widen_alu_def): New class.
41635         (SHAPE): New class.
41636         * config/riscv/riscv-vector-builtins-shapes.h: New class.
41637         * config/riscv/riscv-vector-builtins.cc
41638         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
41639         (rvv_arg_type_info::get_tree_type): Ditto.
41640         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
41641         (x_v): Ditto.
41642         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
41643         widening support.
41644         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
41645         * config/riscv/riscv.h (X0_REGNUM): New constant.
41646         * config/riscv/vector-iterators.md: New iterators.
41647         * config/riscv/vector.md
41648         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
41649         pattern.
41650         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
41651         Ditto.
41652         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
41653         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
41654         Ditto.
41655         (@pred_widen_mulsu<mode>): Ditto.
41656         (@pred_widen_mulsu<mode>_scalar): Ditto.
41657         (@pred_<optab><mode>): Ditto.
41659 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41660             kito-cheng  <kito.cheng@sifive.com>
41662         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
41663         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
41664         (BASE): Ditto.
41665         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41666         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
41667         API support.
41668         (vmulhu): Ditto.
41669         (vmulhsu): Ditto.
41670         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
41671         New macro.
41672         (DEF_RVV_FULL_V_U_OPS): Ditto.
41673         (vint8mf8_t): Ditto.
41674         (vint8mf4_t): Ditto.
41675         (vint8mf2_t): Ditto.
41676         (vint8m1_t): Ditto.
41677         (vint8m2_t): Ditto.
41678         (vint8m4_t): Ditto.
41679         (vint8m8_t): Ditto.
41680         (vint16mf4_t): Ditto.
41681         (vint16mf2_t): Ditto.
41682         (vint16m1_t): Ditto.
41683         (vint16m2_t): Ditto.
41684         (vint16m4_t): Ditto.
41685         (vint16m8_t): Ditto.
41686         (vint32mf2_t): Ditto.
41687         (vint32m1_t): Ditto.
41688         (vint32m2_t): Ditto.
41689         (vint32m4_t): Ditto.
41690         (vint32m8_t): Ditto.
41691         (vint64m1_t): Ditto.
41692         (vint64m2_t): Ditto.
41693         (vint64m4_t): Ditto.
41694         (vint64m8_t): Ditto.
41695         (vuint8mf8_t): Ditto.
41696         (vuint8mf4_t): Ditto.
41697         (vuint8mf2_t): Ditto.
41698         (vuint8m1_t): Ditto.
41699         (vuint8m2_t): Ditto.
41700         (vuint8m4_t): Ditto.
41701         (vuint8m8_t): Ditto.
41702         (vuint16mf4_t): Ditto.
41703         (vuint16mf2_t): Ditto.
41704         (vuint16m1_t): Ditto.
41705         (vuint16m2_t): Ditto.
41706         (vuint16m4_t): Ditto.
41707         (vuint16m8_t): Ditto.
41708         (vuint32mf2_t): Ditto.
41709         (vuint32m1_t): Ditto.
41710         (vuint32m2_t): Ditto.
41711         (vuint32m4_t): Ditto.
41712         (vuint32m8_t): Ditto.
41713         (vuint64m1_t): Ditto.
41714         (vuint64m2_t): Ditto.
41715         (vuint64m4_t): Ditto.
41716         (vuint64m8_t): Ditto.
41717         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
41718         (DEF_RVV_FULL_V_U_OPS): Ditto.
41719         (check_required_extensions): Add vmulh support.
41720         (rvv_arg_type_info::get_tree_type): Ditto.
41721         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
41722         (enum rvv_base_type): Ditto.
41723         * config/riscv/riscv.opt: Add 'V' extension flag.
41724         * config/riscv/vector-iterators.md (su): New iterator.
41725         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
41726         (@pred_mulh<v_su><mode>_scalar): Ditto.
41727         (*pred_mulh<v_su><mode>_scalar): Ditto.
41728         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
41730 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41732         * config/riscv/iterators.md: Add sign_extend/zero_extend.
41733         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
41734         (BASE): Ditto.
41735         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
41736         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
41737         define.
41738         (vzext): Ditto.
41739         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
41740         for vsext/vzext support.
41741         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
41742         macro define.
41743         (DEF_RVV_QEXTI_OPS): Ditto.
41744         (DEF_RVV_OEXTI_OPS): Ditto.
41745         (DEF_RVV_WEXTU_OPS): Ditto.
41746         (DEF_RVV_QEXTU_OPS): Ditto.
41747         (DEF_RVV_OEXTU_OPS): Ditto.
41748         (vint16mf4_t): Ditto.
41749         (vint16mf2_t): Ditto.
41750         (vint16m1_t): Ditto.
41751         (vint16m2_t): Ditto.
41752         (vint16m4_t): Ditto.
41753         (vint16m8_t): Ditto.
41754         (vint32mf2_t): Ditto.
41755         (vint32m1_t): Ditto.
41756         (vint32m2_t): Ditto.
41757         (vint32m4_t): Ditto.
41758         (vint32m8_t): Ditto.
41759         (vint64m1_t): Ditto.
41760         (vint64m2_t): Ditto.
41761         (vint64m4_t): Ditto.
41762         (vint64m8_t): Ditto.
41763         (vuint16mf4_t): Ditto.
41764         (vuint16mf2_t): Ditto.
41765         (vuint16m1_t): Ditto.
41766         (vuint16m2_t): Ditto.
41767         (vuint16m4_t): Ditto.
41768         (vuint16m8_t): Ditto.
41769         (vuint32mf2_t): Ditto.
41770         (vuint32m1_t): Ditto.
41771         (vuint32m2_t): Ditto.
41772         (vuint32m4_t): Ditto.
41773         (vuint32m8_t): Ditto.
41774         (vuint64m1_t): Ditto.
41775         (vuint64m2_t): Ditto.
41776         (vuint64m4_t): Ditto.
41777         (vuint64m8_t): Ditto.
41778         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
41779         (DEF_RVV_QEXTI_OPS): Ditto.
41780         (DEF_RVV_OEXTI_OPS): Ditto.
41781         (DEF_RVV_WEXTU_OPS): Ditto.
41782         (DEF_RVV_QEXTU_OPS): Ditto.
41783         (DEF_RVV_OEXTU_OPS): Ditto.
41784         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
41785         support.
41786         (rvv_arg_type_info::get_tree_type): Ditto.
41787         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
41788         * config/riscv/vector-iterators.md (z): New attribute.
41789         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
41790         (@pred_<optab><mode>_vf4): Ditto.
41791         (@pred_<optab><mode>_vf8): Ditto.
41793 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41795         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
41796         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
41797         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
41798         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41799         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
41800         (vssub): Ditto.
41801         (vsaddu): Ditto.
41802         (vssubu): Ditto.
41803         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
41804         support.
41805         (sll.vv): Ditto.
41806         (%3,%v4): Ditto.
41807         (%3,%4): Ditto.
41808         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
41809         (@pred_<optab><mode>_scalar): New pattern.
41810         (*pred_<optab><mode>_scalar): New pattern.
41811         (*pred_<optab><mode>_extended_scalar): New pattern.
41813 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41815         * config/riscv/iterators.md: Add neg and not.
41816         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
41817         (BASE): Ditto.
41818         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41819         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
41820         into alu.
41821         (vsub): Ditto.
41822         (vand): Ditto.
41823         (vor): Ditto.
41824         (vxor): Ditto.
41825         (vsll): Ditto.
41826         (vsra): Ditto.
41827         (vsrl): Ditto.
41828         (vmin): Ditto.
41829         (vmax): Ditto.
41830         (vminu): Ditto.
41831         (vmaxu): Ditto.
41832         (vmul): Ditto.
41833         (vdiv): Ditto.
41834         (vrem): Ditto.
41835         (vdivu): Ditto.
41836         (vremu): Ditto.
41837         (vrsub): Ditto.
41838         (vneg): Ditto.
41839         (vnot): Ditto.
41840         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
41841         (struct alu_def): Ditto.
41842         (SHAPE): Ditto.
41843         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
41844         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
41845         * config/riscv/vector-iterators.md: New iterator.
41846         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
41848 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41850         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
41852 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
41854         PR ipa/108605
41855         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
41856         item->offset bit position is too large to be representable as
41857         unsigned int byte position.
41859 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
41861         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
41863 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
41865         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
41866         valid_combine only when ira_use_lra_p is true.
41868 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
41870         * params.opt (ira-simple-lra-insn-threshold): Add new param.
41871         * ira.cc (ira): Use the param to switch on simple LRA.
41873 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
41875         PR tree-optimization/108687
41876         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
41877         back to RFD_NONE mode for calculations.
41878         (ranger_cache::propagate_cache): Call the internal edge range API
41879         with RFD_READ_ONLY instead of changing the external routine.
41881 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
41883         PR tree-optimization/108520
41884         * gimple-range-infer.cc (check_assume_func): Invoke
41885         gimple_range_global directly instead using global_range_query.
41886         * value-query.cc (get_range_global): Add function context and
41887         avoid calling nonnull_arg_p if not cfun.
41888         (gimple_range_global): Add function context pointer.
41889         * value-query.h (imple_range_global): Add function context.
41891 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41893         * config/riscv/constraints.md (Wdm): Adjust constraint.
41894         (Wbr): New constraint.
41895         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
41896         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
41897         (emit_vlmax_op): New function.
41898         (emit_nonvlmax_op): Ditto.
41899         (simm32_p): Ditto.
41900         (neg_simm5_p): Ditto.
41901         (has_vi_variant_p): Ditto.
41902         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
41903         (emit_vlmax_op): New function.
41904         (emit_nonvlmax_op): Ditto.
41905         (expand_const_vector): Adjust function.
41906         (legitimize_move): Ditto.
41907         (simm32_p): New function.
41908         (simm5_p): Ditto.
41909         (neg_simm5_p): Ditto.
41910         (has_vi_variant_p): Ditto.
41911         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
41912         (BASE): Ditto.
41913         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
41914         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
41915         unsigned cases.
41916         (vmax): Ditto.
41917         (vminu): Remove signed cases.
41918         (vmaxu): Ditto.
41919         (vdiv): Remove unsigned cases.
41920         (vrem): Ditto.
41921         (vdivu): Remove signed cases.
41922         (vremu): Ditto.
41923         (vadd): Adjust.
41924         (vsub): Ditto.
41925         (vrsub): New class.
41926         (vand): Adjust.
41927         (vor): Ditto.
41928         (vxor): Ditto.
41929         (vmul): Ditto.
41930         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
41931         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
41932         * config/riscv/vector-iterators.md: New iterators.
41933         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
41934         support.
41935         (@pred_<optab><mode>_scalar): New pattern.
41936         (@pred_sub<mode>_reverse_scalar): Ditto.
41937         (*pred_<optab><mode>_scalar): Ditto.
41938         (*pred_<optab><mode>_extended_scalar): Ditto.
41939         (*pred_sub<mode>_reverse_scalar): Ditto.
41940         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
41942 2023-02-10  Richard Biener  <rguenther@suse.de>
41944         PR tree-optimization/108724
41945         * tree-vect-stmts.cc (vectorizable_operation): Avoid
41946         using word_mode vectors when vector lowering will
41947         decompose them to elementwise operations.
41949 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
41951         Revert:
41952         2023-02-09  Martin Liska  <mliska@suse.cz>
41954         PR target/100758
41955         * doc/extend.texi: Document that the function
41956         does not work correctly for old VIA processors.
41958 2023-02-10  Andrew Pinski  <apinski@marvell.com>
41959             Andrew Macleod   <amacleod@redhat.com>
41961         PR tree-optimization/108684
41962         * tree-ssa-dce.cc (simple_dce_from_worklist):
41963         Check all ssa names and not just non-vdef ones
41964         before accepting the inline-asm.
41965         Call unlink_stmt_vdef on the statement before
41966         removing it.
41968 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
41970         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
41971         * ira.cc (validate_equiv_mem): Check memref address variance.
41972         (no_equiv): Clear caller_save_p flag.
41973         (update_equiv_regs): Define caller save equivalence for
41974         valid_combine.
41975         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
41976         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
41977         call_save_p.  Use caller save equivalence depending on the arg.
41978         (split_reg): Adjust the call.
41980 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
41982         PR target/100758
41983         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
41984         (cpu_indicator_init): Call get_available_features for all CPUs with
41985         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
41986         fixes.
41988 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
41990         PR tree-optimization/108688
41991         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
41992         of BIT_INSERT_EXPR extracting exactly all inserted bits even
41993         when without mode precision.  Formatting fixes.
41995 2023-02-09  Andrew Pinski  <apinski@marvell.com>
41997         PR tree-optimization/108688
41998         * match.pd (bit_field_ref [bit_insert]): Avoid generating
41999         BIT_FIELD_REFs of non-mode-precision integral operands.
42001 2023-02-09  Martin Liska  <mliska@suse.cz>
42003         PR target/100758
42004         * doc/extend.texi: Document that the function
42005         does not work correctly for old VIA processors.
42007 2023-02-09  Andreas Schwab  <schwab@suse.de>
42009         * lto-wrapper.cc (merge_and_complain): Handle
42010         -funwind-tables and -fasynchronous-unwind-tables.
42011         (append_compiler_options): Likewise.
42013 2023-02-09  Richard Biener  <rguenther@suse.de>
42015         PR tree-optimization/26854
42016         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
42017         view around insert_updated_phi_nodes_for.
42018         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
42019         in tree view.
42020         (walk_aliased_vdefs_1): Likewise.
42022 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
42024         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
42026 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
42028         PR target/108505
42029         * config.gcc (tm_mlib_file): Define new variable.
42031 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
42033         PR tree-optimization/108692
42034         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
42035         widened_code which is different from code, don't call
42036         vect_look_through_possible_promotion but instead just check op is
42037         SSA_NAME with integral type for which vect_is_simple_use is true
42038         and call set_op on this_unprom.
42040 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
42042         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
42043         declaration.
42044         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
42045         definition.
42046         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
42047         to 'aarch_ra_sign_key'.
42048         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
42049         declaration.
42050         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
42051         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
42052         * config/arm/arm.opt: Define.
42054 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
42056         PR tree-optimization/108316
42057         * tree-vect-stmts.cc (get_load_store_type): When using
42058         internal functions for gather/scatter, make sure that the type
42059         of the offset argument is consistent with the offset vector type.
42061 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
42063         Revert:
42064         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
42066         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
42067         * ira.cc (validate_equiv_mem): Check memref address variance.
42068         (update_equiv_regs): Define caller save equivalence for
42069         valid_combine.
42070         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
42071         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
42072         call_save_p.  Use caller save equivalence depending on the arg.
42073         (split_reg): Adjust the call.
42075 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
42077         * tree.def (SAD_EXPR): Remove outdated comment about missing
42078         WIDEN_MINUS_EXPR.
42080 2023-02-07  Marek Polacek  <polacek@redhat.com>
42082         * doc/invoke.texi: Update -fchar8_t documentation.
42084 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
42086         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
42087         * ira.cc (validate_equiv_mem): Check memref address variance.
42088         (update_equiv_regs): Define caller save equivalence for
42089         valid_combine.
42090         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
42091         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
42092         call_save_p.  Use caller save equivalence depending on the arg.
42093         (split_reg): Adjust the call.
42095 2023-02-07  Richard Biener  <rguenther@suse.de>
42097         PR tree-optimization/26854
42098         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
42099         instead of immediate uses.
42101 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
42103         PR tree-optimization/106923
42104         * ipa-split.cc (execute_split_functions): Don't split returns_twice
42105         functions.
42107 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
42109         PR tree-optimization/106433
42110         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
42111         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
42113 2023-02-07  Jan Hubicka  <jh@suse.cz>
42115         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
42116         for znver4.
42118 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
42120         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
42121         (process_asm): Create a constructor for GCN_STACK_SIZE.
42122         (main): Parse the -mstack-size option.
42124 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
42126         PR target/104921
42127         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
42128         Use correct constraint for operand 3.
42130 2023-02-06  Martin Jambor  <mjambor@suse.cz>
42132         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
42134 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
42136         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
42137         New define_int_iterator.
42138         (bytepick_d_ashift_amount): Likewise.
42139         (bytepick_imm): New define_int_attr.
42140         (bytepick_w_lshiftrt_amount): Likewise.
42141         (bytepick_d_lshiftrt_amount): Likewise.
42142         (bytepick_w_<bytepick_imm>): New define_insn template.
42143         (bytepick_w_<bytepick_imm>_extend): Likewise.
42144         (bytepick_d_<bytepick_imm>): Likewise.
42145         (bytepick_w): Remove unused define_insn.
42146         (bytepick_d): Likewise.
42147         (UNSPEC_BYTEPICK_W): Remove unused unspec.
42148         (UNSPEC_BYTEPICK_D): Likewise.
42149         * config/loongarch/predicates.md (const_0_to_3_operand):
42150         Remove unused define_predicate.
42151         (const_0_to_7_operand): Likewise.
42153 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
42155         PR tree-optimization/108655
42156         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
42157         or -fsanitize=unreachable -fsanitize-trap=unreachable return
42158         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
42160 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
42162         * doc/install.texi (Specific): Remove PW32.
42164 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
42166         PR tree-optimization/108647
42167         * range-op.cc (operator_equal::op1_range,
42168         operator_not_equal::op1_range): Don't test op2 bound
42169         equality if op2.undefined_p (), instead set_varying.
42170         (operator_lt::op1_range, operator_le::op1_range,
42171         operator_gt::op1_range, operator_ge::op1_range): Return false if
42172         op2.undefined_p ().
42173         (operator_lt::op2_range, operator_le::op2_range,
42174         operator_gt::op2_range, operator_ge::op2_range): Return false if
42175         op1.undefined_p ().
42177 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
42179         PR tree-optimization/108639
42180         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
42181         widest_int.
42182         (irange::operator==): Same.
42184 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
42186         PR tree-optimization/108647
42187         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
42188         (foperator_lt::op2_range): Same.
42189         (foperator_le::op1_range): Same.
42190         (foperator_le::op2_range): Same.
42191         (foperator_gt::op1_range): Same.
42192         (foperator_gt::op2_range): Same.
42193         (foperator_ge::op1_range): Same.
42194         (foperator_ge::op2_range): Same.
42195         (foperator_unordered_lt::op1_range): Same.
42196         (foperator_unordered_lt::op2_range): Same.
42197         (foperator_unordered_le::op1_range): Same.
42198         (foperator_unordered_le::op2_range): Same.
42199         (foperator_unordered_gt::op1_range): Same.
42200         (foperator_unordered_gt::op2_range): Same.
42201         (foperator_unordered_ge::op1_range): Same.
42202         (foperator_unordered_ge::op2_range): Same.
42204 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
42206         PR tree-optimization/107570
42207         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
42209 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
42211         * doc/gm2.texi (Internals): Remove from menu.
42212         (Using): Comment out ifnohtml conditional.
42213         (Documentation): Use gcc url.
42214         (License): Node simplified.
42215         (Copying): New node.  Include gpl_v3_without_node.
42216         (Contributing): Node simplified.
42217         (Internals): Commented out.
42218         (Libraries): Node simplified.
42219         (Indices): Ditto.
42220         (Contents): Ditto.
42221         (Functions): Ditto.
42223 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
42225         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
42226         attribute.
42227         (mve_vqshluq_m_n_s<mode>): Likewise.
42228         (mve_vshlq_m_<supf><mode>): Likewise.
42229         (mve_vsriq_m_n_<supf><mode>): Likewise.
42230         (mve_vsubq_m_<supf><mode>): Likewise.
42232 2023-02-03  Martin Jambor  <mjambor@suse.cz>
42234         PR ipa/108384
42235         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
42236         when comparing to an IPA-CP value.
42237         (dump_list_of_param_indices): New function.
42238         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
42239         Dump removed candidates using dump_list_of_param_indices.
42240         * ipa-param-manipulation.cc
42241         (ipa_param_body_adjustments::modify_expression): Add assert checking
42242         sizes of a VIEW_CONVERT_EXPR will match.
42243         (ipa_param_body_adjustments::modify_assignment): Likewise.
42245 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
42247         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
42248         * config/riscv/riscv.cc: Ditto.
42250 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42252         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
42253         (sll.vv): Ditto.
42254         (%3,%4): Ditto.
42255         (%3,%v4): Ditto.
42256         * config/riscv/vector.md: Ditto.
42258 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42260         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
42261         * config/riscv/riscv-vector-builtins-bases.cc: New class.
42262         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
42263         (vsra): Ditto.
42264         (vsrl): Ditto.
42265         * config/riscv/riscv-vector-builtins.cc: Ditto.
42266         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
42268 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
42270         * toplev.cc (toplev::main): Only print the version information header
42271         from toplevel main().
42273 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
42275         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
42276         cond_{ashl|ashr|lshr}
42278 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
42280         PR rtl-optimization/108086
42281         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
42282         Adjust size-related commentary accordingly.
42284 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
42286         PR rtl-optimization/108508
42287         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
42288         the splay tree search gives the first clobber in the second group,
42289         make sure that the root of the first clobber group is updated
42290         correctly.  Enter the new clobber group into the definition splay
42291         tree.
42293 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
42295         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
42296         Fix finding best match score.
42298 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
42300         PR debug/106746
42301         PR rtl-optimization/108463
42302         PR target/108484
42303         * cselib.cc (cselib_current_insn): Move declaration earlier.
42304         (cselib_hasher::equal): For debug only locs, temporarily override
42305         cselib_current_insn to their l->setting_insn for the
42306         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
42307         promote some debug locs.
42308         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
42309         when using cselib call cselib_lookup_from_insn on the address but
42310         don't substitute it.
42312 2023-02-02  Richard Biener  <rguenther@suse.de>
42314         PR middle-end/108625
42315         * genmatch.cc (expr::gen_transform): Also disallow resimplification
42316         from pushing to lseq with force_leaf.
42317         (dt_simplify::gen_1): Likewise.
42319 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
42321         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
42322         (struct kernargs): Replace the common content with kernargs_abi.
42323         (struct heap): Delete.
42324         (main): Read GCN_STACK_SIZE envvar.
42325         Allocate space for the device stacks.
42326         Write the new kernargs fields.
42327         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
42328         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
42329         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
42330         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
42331         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
42332         Set up the stacks from the values in the kernargs, not private.
42333         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
42334         (gcn_hsa_declare_function_name): Turn off the private segment.
42335         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
42336         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
42337         * config/gcn/gcn.opt (mstack-size): Change the description.
42339 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
42341         PR target/108443
42342         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
42343         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
42344         addressing MVE predicate modes.
42345         (mve_bool_vec_to_const): Change to represent correct MVE predicate
42346         format.
42347         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
42348         modes.
42349         (arm_vector_mode_supported_p): Likewise.
42350         (arm_mode_to_pred_mode): Add V2QI.
42351         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
42352         qualifier.
42353         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
42354         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
42355         (v2qi_UP): New macro.
42356         (v4bi_UP): New macro.
42357         (v8bi_UP): New macro.
42358         (v16bi_UP): New macro.
42359         (arm_expand_builtin_args): Make it able to expand the new predicate
42360         modes.
42361         * config/arm/arm-modes.def (V2QI): New mode.
42362         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
42363         Pred4x4_t): Remove unused predicate builtin types.
42364         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
42365         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
42366         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
42367         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
42368         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
42369         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
42370         of MODE_VECTOR_BOOL.
42371         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
42372         (MVE_VPRED): Likewise.
42373         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
42374         (MVE_vctp): New mode attribute.
42375         (mode1): Remove.
42376         (VCTPQ): Remove.
42377         (VCTPQ_M): Remove.
42378         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
42379         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
42380         attributes.
42381         (mve_vpnothi): Rename this...
42382         (mve_vpnotv16bi): ... to this.
42383         (mve_vctp<mode1>q_mhi): Rename this...
42384         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
42385         (mve_vldrdq_gather_base_z_<supf>v2di,
42386         mve_vldrdq_gather_offset_z_<supf>v2di,
42387         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
42388         mve_vstrdq_scatter_base_p_<supf>v2di,
42389         mve_vstrdq_scatter_offset_p_<supf>v2di,
42390         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
42391         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
42392         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
42393         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
42394         mve_vldrdq_gather_base_wb_z_<supf>v2di,
42395         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
42396         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
42397         predicates.
42398         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
42399         these...
42400         (VCTP): ... with this.
42401         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
42402         (VCTP_M): ... with this.
42403         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
42404         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
42406 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
42408         PR target/107674
42409         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
42410         (arm_modes_tieable_p): Make MVE predicate modes tieable.
42411         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
42412         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
42413         simplify_subreg to simplify subregs where the outermode is not scalar.
42415 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
42417         PR target/107674
42418         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
42419         new qualifiers parameter and use unsigned short type for MVE predicate.
42420         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
42421         parameter.
42422         (arm_init_crypto_builtins): Likewise.
42424 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
42426         PR ipa/107300
42427         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
42428         * internal-fn.def (TRAP): Remove.
42429         * internal-fn.cc (expand_TRAP): Remove.
42430         * tree.cc (build_common_builtin_nodes): Define
42431         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
42432         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
42433         instead of BUILT_IN_TRAP.
42434         * gimple.cc (gimple_build_builtin_unreachable): Remove
42435         emitting internal function for BUILT_IN_TRAP.
42436         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
42437         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
42438         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
42439         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
42440         BUILT_IN_UNREACHABLE_TRAP.
42441         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
42442         * tree-cfg.cc (verify_gimple_call,
42443         pass_warn_function_return::execute): Likewise.
42444         * attribs.cc (decl_attributes): Don't report exclusions on
42445         BUILT_IN_UNREACHABLE_TRAP either.
42447 2023-02-02  liuhongt  <hongtao.liu@intel.com>
42449         PR tree-optimization/108601
42450         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
42451         * tree-vect-loop.cc
42452         (vectorizable_nonlinear_induction): Remove
42453         vect_can_peel_nonlinear_iv_p.
42454         (vect_can_peel_nonlinear_iv_p): Don't peel
42455         nonlinear iv(mult or shift) for epilog when vf is not
42456         constant and moved the defination to ..
42457         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
42458         .. Here.
42460 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
42462         PR middle-end/108435
42463         * tree-nested.cc (convert_nonlocal_omp_clauses)
42464         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
42465         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
42466         before calling declare_vars.
42467         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
42468         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
42469         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
42470         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
42472 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
42474         * common/config/aarch64/aarch64-common.cc
42475         (struct aarch64_option_extension): Add native_detect and document struct
42476         a bit more.
42477         (all_extensions): Set new field native_detect.
42478         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
42479         unused struct.
42481 2023-02-01  Martin Liska  <mliska@suse.cz>
42483         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
42484         value if set.
42486 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
42488         PR tree-optimization/108356
42489         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
42490         do a search of the DOM tree for a range.
42492 2023-02-01  Martin Liska  <mliska@suse.cz>
42494         PR ipa/108509
42495         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
42496         ony non-null values.
42497         * ipa.cc (walk_polymorphic_call_targets): Likewise.
42499 2023-02-01  Martin Liska  <mliska@suse.cz>
42501         PR driver/108572
42502         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
42503         -gz=zstd.
42505 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
42507         PR debug/108573
42508         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
42509         subregs in DEBUG_INSNs.
42511 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
42513         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
42515 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
42517         * config/s390/s390.cc (s390_restore_gpr_p): New function.
42518         (s390_preserve_gpr_arg_in_range_p): New function.
42519         (s390_preserve_gpr_arg_p): New function.
42520         (s390_preserve_fpr_arg_p): New function.
42521         (s390_register_info_stdarg_fpr): Rename to ...
42522         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
42523         (s390_register_info_stdarg_gpr): Rename to ...
42524         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
42525         (s390_register_info): Use the renamed functions above.
42526         (s390_optimize_register_info): Likewise.
42527         (save_fpr): Generate CFI for -mpreserve-args.
42528         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
42529         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
42530         (s390_optimize_prologue): Likewise.
42531         * config/s390/s390.opt: New option -mpreserve-args
42533 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
42535         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
42536         (restore_gprs): Likewise.
42537         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
42538         frame pointer if a frame-pointer is used.
42539         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
42540         * config/s390/s390.md (stack_tie): Add a register operand and
42541         rename to ...
42542         (@stack_tie<mode>): ... this.
42544 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
42546         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
42547         EMIT_CFI parameter.
42548         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
42549         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
42551 2023-02-01  Richard Biener  <rguenther@suse.de>
42553         PR middle-end/108500
42554         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
42555         with tree traversal algorithm.
42557 2023-02-01  Jason Merrill  <jason@redhat.com>
42559         * doc/invoke.texi: Document -Wno-changes-meaning.
42561 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
42563         * doc/invoke.texi (Static Analyzer Options): Add notes about
42564         limitations of -fanalyzer.
42566 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42568         * config/riscv/constraints.md (vj): New.
42569         (vk): Ditto
42570         * config/riscv/iterators.md: Add more opcode.
42571         * config/riscv/predicates.md (vector_arith_operand): New.
42572         (vector_neg_arith_operand): New.
42573         (vector_shift_operand): New.
42574         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
42575         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
42576         (vsub): Ditto.
42577         (vand): Ditto.
42578         (vor): Ditto.
42579         (vxor): Ditto.
42580         (vsll): Ditto.
42581         (vsra): Ditto.
42582         (vsrl): Ditto.
42583         (vmin): Ditto.
42584         (vmax): Ditto.
42585         (vminu): Ditto.
42586         (vmaxu): Ditto.
42587         (vmul): Ditto.
42588         (vdiv): Ditto.
42589         (vrem): Ditto.
42590         (vdivu): Ditto.
42591         (vremu): Ditto.
42592         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
42593         (vsub): Ditto.
42594         (vand): Ditto.
42595         (vor): Ditto.
42596         (vxor): Ditto.
42597         (vsll): Ditto.
42598         (vsra): Ditto.
42599         (vsrl): Ditto.
42600         (vmin): Ditto.
42601         (vmax): Ditto.
42602         (vminu): Ditto.
42603         (vmaxu): Ditto.
42604         (vmul): Ditto.
42605         (vdiv): Ditto.
42606         (vrem): Ditto.
42607         (vdivu): Ditto.
42608         (vremu): Ditto.
42609         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
42610         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
42611         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
42612         (DEF_RVV_U_OPS): New.
42613         (rvv_arg_type_info::get_base_vector_type): Handle
42614         RVV_BASE_shift_vector.
42615         (rvv_arg_type_info::get_tree_type): Ditto.
42616         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
42617         RVV_BASE_shift_vector.
42618         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
42619         * config/riscv/vector-iterators.md: Handle more opcode.
42620         * config/riscv/vector.md (@pred_<optab><mode>): New.
42622 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
42624         PR target/108589
42625         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
42626         REG_P on SET_DEST.
42628 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
42630         PR tree-optimization/108608
42631         * tree-vect-loop.cc (vect_transform_reduction): Handle single
42632         def-use cycles that involve function calls rather than tree codes.
42634 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
42636         PR tree-optimization/108385
42637         * gimple-range-gori.cc (gori_compute::compute_operand_range):
42638         Allow VARYING computations to continue if there is a relation.
42639         * range-op.cc (pointer_plus_operator::op2_range): New.
42641 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
42643         PR tree-optimization/108359
42644         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
42645         (range_operator::fold_range): If op1 is equivalent to op2 then
42646         invoke new fold_in_parts_equiv to operate on sub-components.
42647         * range-op.h (wi_fold_in_parts_equiv): New prototype.
42649 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
42651         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
42652         not abort calculations if there is a valid relation available.
42653         (gori_compute::refine_using_relation): Pass correct relation trio.
42654         (gori_compute::compute_operand1_range): Create trio and use it.
42655         (gori_compute::compute_operand2_range): Ditto.
42656         * range-op.cc (operator_plus::op1_range): Use correct trio member.
42657         (operator_minus::op1_range): Use correct trio member.
42658         * value-relation.cc (value_relation::create_trio): New.
42659         * value-relation.h (value_relation::create_trio): New prototype.
42661 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
42663         PR target/108599
42664         * config/i386/i386-expand.cc
42665         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
42666         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
42667         equal to bitsize of mode.
42669 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
42671         PR rtl-optimization/108596
42672         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
42673         ends with asm goto and has a crossing fallthrough edge to the same bb
42674         that contains at least one of its labels by restoring EDGE_CROSSING
42675         flag even on possible edge from cur_bb to new_bb successor.
42677 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
42679         PR c++/105593
42680         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
42681         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
42682         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
42683         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
42684         uninitialized automatic variable __W.
42686 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
42688         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
42690 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42692         * config/riscv/riscv-protos.h (get_vector_mode): New function.
42693         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
42694         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
42695         (class loadstore): Adjust for indexed loads/stores support.
42696         (BASE): Ditto.
42697         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
42698         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
42699         (vluxei16): Ditto.
42700         (vluxei32): Ditto.
42701         (vluxei64): Ditto.
42702         (vloxei8): Ditto.
42703         (vloxei16): Ditto.
42704         (vloxei32): Ditto.
42705         (vloxei64): Ditto.
42706         (vsuxei8): Ditto.
42707         (vsuxei16): Ditto.
42708         (vsuxei32): Ditto.
42709         (vsuxei64): Ditto.
42710         (vsoxei8): Ditto.
42711         (vsoxei16): Ditto.
42712         (vsoxei32): Ditto.
42713         (vsoxei64): Ditto.
42714         * config/riscv/riscv-vector-builtins-shapes.cc
42715         (struct indexed_loadstore_def): New class.
42716         (SHAPE): Ditto.
42717         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
42718         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
42719         for indexed loads/stores support.
42720         (check_required_extensions): Ditto.
42721         (rvv_arg_type_info::get_base_vector_type): New function.
42722         (rvv_arg_type_info::get_tree_type): Ditto.
42723         (function_builder::add_unique_function): Adjust for indexed loads/stores
42724         support.
42725         (function_expander::use_exact_insn): New function.
42726         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
42727         indexed loads/stores support.
42728         (struct rvv_arg_type_info): Ditto.
42729         (function_expander::index_mode): New function.
42730         (function_base::apply_tail_policy_p): Ditto.
42731         (function_base::apply_mask_policy_p): Ditto.
42732         * config/riscv/vector-iterators.md (unspec): New unspec.
42733         * config/riscv/vector.md (unspec): Ditto.
42734         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
42735         pattern.
42736         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
42737         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
42738         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
42739         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
42740         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
42741         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
42742         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
42743         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
42744         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
42745         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
42746         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
42747         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
42748         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
42750 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
42752         * config.gcc: Recognize x86_64-*-gnu* targets and include
42753         i386/gnu64.h.
42754         * config/i386/gnu64.h: Define configuration for new target
42755         including ld.so location.
42757 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
42759         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
42760         ampere1a to include SM4.
42762 2023-01-30  Andrew Pinski  <apinski@marvell.com>
42764         PR tree-optimization/108582
42765         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
42766         for middlebb to have no phi nodes.
42768 2023-01-30  Richard Biener  <rguenther@suse.de>
42770         PR tree-optimization/108574
42771         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
42772         sameval and def, ignore the equivalence if there's the
42773         danger of oscillating between two values.
42775 2023-01-30  Andreas Schwab  <schwab@suse.de>
42777         * common/config/riscv/riscv-common.cc
42778         (riscv_option_optimization_table)
42779         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
42780         -fasynchronous-unwind-tables and -funwind-tables.
42781         * config.gcc (riscv*-*-linux*): Define
42782         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
42784 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
42786         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
42787         value of includedir.
42789 2023-01-30  Richard Biener  <rguenther@suse.de>
42791         PR ipa/108511
42792         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
42793         assert.
42795 2023-01-30  liuhongt  <hongtao.liu@intel.com>
42797         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
42798         * doc/invoke.texi: Ditto.
42800 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
42802         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
42803         (stmt_may_terminate_function_p): If assuming return or EH
42804         volatile asm is safe.
42805         (find_always_executed_bbs): Fix handling of terminating BBS and
42806         infinite loops; add debug output.
42807         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
42809 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
42811         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
42812         off-by-one in checking the permissible shift-amount.
42814 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
42816         * doc/extend.texi (Named Address Spaces): Update link to the
42817         AVR-Libc manual.
42819 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
42821         * doc/standards.texi (Standards): Fix markup.
42823 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
42825         * doc/standards.texi (Standards): Update link to Objective-C book.
42827 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
42829         * doc/invoke.texi (Instrumentation Options): Update reference to
42830         AddressSanitizer.
42832 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
42834         * doc/standards.texi: Update Go1 link.
42836 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42838         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
42839         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
42840         Support vlse/vsse.
42841         (BASE): Ditto.
42842         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
42843         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
42844         (vsse): New class.
42845         * config/riscv/riscv-vector-builtins.cc
42846         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
42847         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
42848         (@pred_strided_store<mode>): Ditto.
42850 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42852         * config/riscv/vector.md (tail_policy_op_idx): Remove.
42853         (mask_policy_op_idx): Remove.
42854         (avl_type_op_idx): Remove.
42856 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
42858         PR tree-optimization/96373
42859         * tree.h (sign_mask_for): Declare.
42860         * tree.cc (sign_mask_for): New function.
42861         (signed_or_unsigned_type_for): For vector types, try to use the
42862         related_int_vector_mode.
42863         * genmatch.cc (commutative_op): Handle conditional internal functions.
42864         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
42866 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
42868         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
42869         Use the likely minimum VF when bounding the denominators to
42870         the estimated number of iterations.
42872 2023-01-27  Richard Biener  <rguenther@suse.de>
42874         PR target/55522
42875         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
42876         and -Ofast FP environment side-effects.
42878 2023-01-27  Richard Biener  <rguenther@suse.de>
42880         PR target/55522
42881         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
42882         Don't add crtfastmath.o for -shared.
42884 2023-01-27  Richard Biener  <rguenther@suse.de>
42886         PR target/55522
42887         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
42888         for -shared.
42890 2023-01-27  Richard Biener  <rguenther@suse.de>
42892         PR target/55522
42893         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
42894         crtfastmath.o for -shared.
42896 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
42898         PR tree-optimization/108306
42899         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
42900         varying for shifts that are always out of void range.
42901         (operator_rshift::fold_range): Return [0, 0] not
42902         varying for shifts that are always out of void range.
42904 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
42906         PR tree-optimization/108447
42907         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
42908         Do not attempt to fold HONOR_NAN types.
42910 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42912         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
42913         Remove _m suffix for "vop_m" C++ overloaded API name.
42915 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42917         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
42918         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
42919         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
42920         (vsm): Ditto.
42921         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
42922         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
42923         (vbool64_t): Ditto.
42924         (vbool32_t): Ditto.
42925         (vbool16_t): Ditto.
42926         (vbool8_t): Ditto.
42927         (vbool4_t): Ditto.
42928         (vbool2_t): Ditto.
42929         (vbool1_t): Ditto.
42930         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
42931         (rvv_arg_type_info::get_tree_type): Ditto.
42932         (function_expander::use_contiguous_load_insn): Ditto.
42933         * config/riscv/vector.md (@pred_store<mode>): Ditto.
42935 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42937         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
42938         (vsetvl_discard_result_insn_p): New function.
42939         (reg_killed_by_bb_p): rename to find_reg_killed_by.
42940         (find_reg_killed_by): New name.
42941         (get_vl): allow it to be called by more functions.
42942         (has_vsetvl_killed_avl_p): Add condition.
42943         (get_avl): allow it to be called by more functions.
42944         (insn_should_be_added_p): New function.
42945         (get_all_nonphi_defs): Refine function.
42946         (get_all_sets): Ditto.
42947         (get_same_bb_set): New function.
42948         (any_insn_in_bb_p): Ditto.
42949         (any_set_in_bb_p): Ditto.
42950         (get_vl_vtype_info): Add VLMAX forward optimization.
42951         (source_equal_p): Fix issues.
42952         (extract_single_source): Refine.
42953         (avl_info::multiple_source_equal_p): New function.
42954         (avl_info::operator==): Adjust for final version.
42955         (vl_vtype_info::operator==): Ditto.
42956         (vl_vtype_info::same_avl_p): Ditto.
42957         (vector_insn_info::parse_insn): Ditto.
42958         (vector_insn_info::available_p): New function.
42959         (vector_insn_info::merge): Adjust for final version.
42960         (vector_insn_info::dump): Add hard_empty.
42961         (pass_vsetvl::hard_empty_block_p): New function.
42962         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
42963         (pass_vsetvl::forward_demand_fusion): Ditto.
42964         (pass_vsetvl::demand_fusion): Ditto.
42965         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
42966         (pass_vsetvl::compute_local_properties): Adjust for final version.
42967         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
42968         (pass_vsetvl::refine_vsetvls): Ditto.
42969         (pass_vsetvl::commit_vsetvls): Ditto.
42970         (pass_vsetvl::propagate_avl): New function.
42971         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
42972         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
42974 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
42976         PR other/108560
42977         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
42978         from size_t to int.
42980 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
42982         PR ipa/106061
42983         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
42984         redirection of calls to __builtin_trap in addition to redirection
42985         to __builtin_unreachable.
42987 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42989         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
42991 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42993         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
42994         (emit_vsetvl_insn): Ditto.
42996 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42998         * config/riscv/vector.md: Fix constraints.
43000 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43002         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
43004 2023-01-27  Patrick Palka  <ppalka@redhat.com>
43005             Jakub Jelinek  <jakub@redhat.com>
43007         * tree-core.h (tree_code_type, tree_code_length): For
43008         C++17 and later, add inline keyword, otherwise don't define
43009         the arrays, but declare extern arrays.
43010         * tree.cc (tree_code_type, tree_code_length): Define these
43011         arrays for C++14 and older.
43013 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43015         * config/riscv/riscv-vsetvl.h: Change it into public.
43017 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43019         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
43020         pass.
43022 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43024         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
43026 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43028         * config/riscv/vector.md: Fix incorrect attributes.
43030 2023-01-27  Richard Biener  <rguenther@suse.de>
43032         PR target/55522
43033         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
43034         Don't add crtfastmath.o for -shared.
43036 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
43038         * doc/options.texi (option, RejectNegative): Mention that
43039         -g-started options are also implicitly negatable.
43041 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
43043         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
43044         Use get_typenode_from_name to get fixed-width integer type
43045         nodes.
43046         * config/riscv/riscv-vector-builtins.def: Update define with
43047         fixed-width integer type nodes.
43049 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43051         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
43052         (real_insn_and_same_bb_p): New function.
43053         (same_bb_and_after_or_equal_p): Remove it.
43054         (before_p): New function.
43055         (reg_killed_by_bb_p): Ditto.
43056         (has_vsetvl_killed_avl_p): Ditto.
43057         (get_vl): Move location so that we can call it.
43058         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
43059         (available_occurrence_p): Ditto.
43060         (dominate_probability_p): Remove it.
43061         (can_backward_propagate_p): Remove it.
43062         (get_all_nonphi_defs): New function.
43063         (get_all_predecessors): Ditto.
43064         (any_insn_in_bb_p): Ditto.
43065         (insert_vsetvl): Adjust AVL REG.
43066         (source_equal_p): New function.
43067         (extract_single_source): Ditto.
43068         (avl_info::single_source_equal_p): Ditto.
43069         (avl_info::operator==): Adjust for AVL=REG.
43070         (vl_vtype_info::same_avl_p): Ditto.
43071         (vector_insn_info::set_demand_info): Remove it.
43072         (vector_insn_info::compatible_p): Adjust for AVL=REG.
43073         (vector_insn_info::compatible_avl_p): New function.
43074         (vector_insn_info::merge): Adjust AVL=REG.
43075         (vector_insn_info::dump): Ditto.
43076         (pass_vsetvl::merge_successors): Remove it.
43077         (enum fusion_type): New enum.
43078         (pass_vsetvl::get_backward_fusion_type): New function.
43079         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
43080         (pass_vsetvl::forward_demand_fusion): Ditto.
43081         (pass_vsetvl::demand_fusion): Ditto.
43082         (pass_vsetvl::prune_expressions): Ditto.
43083         (pass_vsetvl::compute_local_properties): Ditto.
43084         (pass_vsetvl::cleanup_vsetvls): Ditto.
43085         (pass_vsetvl::commit_vsetvls): Ditto.
43086         (pass_vsetvl::init): Ditto.
43087         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
43088         (enum merge_type): New enum.
43090 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43092         * config/riscv/riscv-vsetvl.cc
43093         (vector_infos_manager::vector_infos_manager): Add probability.
43094         (vector_infos_manager::dump): Ditto.
43095         (pass_vsetvl::compute_probabilities): Ditto.
43096         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
43098 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43100         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
43101         (vector_insn_info::merge): Ditto.
43102         (vector_insn_info::dump): Ditto.
43103         (pass_vsetvl::merge_successors): Ditto.
43104         (pass_vsetvl::backward_demand_fusion): Ditto.
43105         (pass_vsetvl::forward_demand_fusion): Ditto.
43106         (pass_vsetvl::commit_vsetvls): Ditto.
43107         * config/riscv/riscv-vsetvl.h: Ditto.
43109 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43111         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
43112         rinsn.
43114 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43116         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
43118 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43120         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
43121         Add pre-check for redundant flow.
43123 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43125         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
43126         (vector_infos_manager::free_bitmap_vectors): Ditto.
43127         (pass_vsetvl::pre_vsetvl): Adjust codes.
43128         * config/riscv/riscv-vsetvl.h: New function declaration.
43130 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43132         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
43133         (vector_insn_info::set_demand_info): New function.
43134         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
43135         (pass_vsetvl::merge_successors): Ditto.
43136         (pass_vsetvl::compute_global_backward_infos): Ditto.
43137         (pass_vsetvl::backward_demand_fusion): Ditto.
43138         (pass_vsetvl::forward_demand_fusion): Ditto.
43139         (pass_vsetvl::demand_fusion): New function.
43140         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
43141         * config/riscv/riscv-vsetvl.h: New function declaration.
43143 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43145         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
43147 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43149         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
43150         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
43152 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43154         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
43155         (backward_propagate_worthwhile_p): Fix non-worthwhile.
43157 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43159         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
43161 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43163         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
43164         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
43165         (pass_vsetvl::commit_vsetvls): Ditto.
43166         * config/riscv/riscv-vsetvl.h: New function declaration.
43168 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43170         * config/riscv/vector.md:
43172 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43174         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
43175         pred_store for vse.
43176         * config/riscv/riscv-vector-builtins.cc
43177         (function_expander::add_mem_operand): Refine function.
43178         (function_expander::use_contiguous_load_insn): Adjust new
43179         implementation.
43180         (function_expander::use_contiguous_store_insn): Ditto.
43181         * config/riscv/riscv-vector-builtins.h: Refine function.
43182         * config/riscv/vector.md (@pred_store<mode>): New pattern.
43184 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43186         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
43188 2023-01-26  Marek Polacek  <polacek@redhat.com>
43190         PR middle-end/108543
43191         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
43192         if it was previously set.
43194 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
43196         PR tree-optimization/108540
43197         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
43198         are singletons, use range_true even if op1 != op2
43199         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
43200         even if intersection of the ranges is empty and one has
43201         zero low bound and another zero high bound, use range_true_and_false
43202         rather than range_false.
43203         (foperator_not_equal::fold_range): If both op1 and op2
43204         are singletons, use range_false even if op1 != op2
43205         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
43206         even if intersection of the ranges is empty and one has
43207         zero low bound and another zero high bound, use range_true_and_false
43208         rather than range_true.
43210 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
43212         * value-relation.cc (kind_string): Add const.
43213         (rr_negate_table, rr_swap_table, rr_intersect_table,
43214         rr_union_table, rr_transitive_table): Add static const, change
43215         element type from relation_kind to unsigned char.
43216         (relation_negate, relation_swap, relation_intersect, relation_union,
43217         relation_transitive): Cast rr_*_table element to relation_kind.
43218         (relation_to_code): Add static const.
43219         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
43221 2023-01-26  Richard Biener  <rguenther@suse.de>
43223         PR tree-optimization/108547
43224         * gimple-predicate-analysis.cc (value_sat_pred_p):
43225         Use widest_int.
43227 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
43229         PR tree-optimization/108522
43230         * tree-object-size.cc (compute_object_offset): Make EXPR
43231         argument non-const.  Call component_ref_field_offset.
43233 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43235         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
43236         FEATURE_STRING field.
43238 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
43240         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
43242 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
43244         PR modula2/102343
43245         PR modula2/108182
43246         * gcc.cc: Provide default specs for Modula-2 so that when the
43247         language is not built-in better diagnostics are emitted for
43248         attempts to use .mod or .m2i file extensions.
43250 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
43252         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
43254 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
43256         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
43258 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
43260         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
43261         Fix spacing.
43263 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
43265         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
43267 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
43269         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
43271 2023-01-25  Richard Biener  <rguenther@suse.de>
43273         PR tree-optimization/108523
43274         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
43275         backedge value for the result when using predication to
43276         prove equivalence.
43278 2023-01-25  Richard Biener  <rguenther@suse.de>
43280         * doc/lto.texi (Command line options): Reword and update reference
43281         to removed lto_read_all_file_options.
43283 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
43285         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
43286         tests.
43288 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
43290         * doc/contrib.texi: Add Jose E. Marchesi.
43292 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
43294         PR tree-optimization/108498
43295         * gimple-ssa-store-merging.cc (class store_operand_info):
43296         End coment with full stop rather than comma.
43297         (split_group): Likewise.
43298         (merged_store_group::apply_stores): Clear string_concatenation if
43299         start or end aren't on a byte boundary.
43301 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
43302             Jakub Jelinek  <jakub@redhat.com>
43304         PR tree-optimization/108522
43305         * tree-object-size.cc (compute_object_offset): Use
43306         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
43308 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
43310         * config/xtensa/xtensa.md:
43311         Fix exit from loops detecting references before overwriting in the
43312         split pattern.
43314 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
43316         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
43317         do elimination but only for hard register.
43318         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
43319         calls of get_hard_regno.
43321 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
43323         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
43324         of CPU version.
43326 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
43328         PR target/108177
43329         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
43330         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
43331         as input operand.
43333 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
43335         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
43336         and only include 'csky/t-csky-linux' when enable multilib.
43337         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
43338         define it when disable multilib.
43340 2023-01-24  Richard Biener  <rguenther@suse.de>
43342         PR tree-optimization/108500
43343         * dominance.h (calculate_dominance_info): Add parameter
43344         to indicate fast-query compute, defaulted to true.
43345         * dominance.cc (calculate_dominance_info): Honor
43346         fast-query compute parameter.
43347         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
43348         not compute the dominator fast-query DFS numbers.
43350 2023-01-24  Eric Biggers  <ebiggers@google.com>
43352         PR bootstrap/90543
43353         * optc-save-gen.awk: Fix copy-and-paste error.
43355 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
43357         PR c++/108474
43358         * cgraphbuild.cc: Include gimplify.h.
43359         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
43360         their corresponding DECL_VALUE_EXPR expressions after unsharing.
43362 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43364         PR target/108505
43365         * config.gcc (tm_file): Move the variable out of loop.
43367 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
43368             Yang Yujie  <yangyujie@loongson.cn>
43370         PR target/107731
43371         * config/loongarch/loongarch.cc (loongarch_classify_address):
43372         Add precessint for CONST_INT.
43373         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
43374         (loongarch_print_operand): Increase the processing of '%c'.
43375         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
43376         And port the public operand modifiers information to this document.
43378 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43380         * doc/invoke.texi (-mbranch-protection): Update documentation.
43382 2023-01-23  Richard Biener  <rguenther@suse.de>
43384         PR target/55522
43385         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
43386         for -shared.
43387         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
43388         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
43389         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
43390         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
43392 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43394         * config/arm/aout.h (ra_auth_code): Add entry in enum.
43395         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
43396         to dwarf frame expression.
43397         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
43398         (arm_expand_prologue): Update frame related information and reg notes
43399         for pac/pacbit insn.
43400         (arm_regno_class): Check for pac pseudo reigster.
43401         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
43402         (arm_init_machine_status): Set pacspval_needed to zero.
43403         (arm_debugger_regno): Check for PAC register.
43404         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
43405         register.
43406         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
43407         (arm_unwind_emit): Update REG_CFA_REGISTER case._
43408         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
43409         (DWARF_PAC_REGNUM): Define.
43410         (IS_PAC_REGNUM): Likewise.
43411         (enum reg_class): Add PAC_REG entry.
43412         (machine_function): Add pacbti_needed state to structure.
43413         * config/arm/arm.md (RA_AUTH_CODE): Define.
43415 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43417         * config.gcc ($tm_file): Update variable.
43418         * config/arm/arm-mlib.h: Create new header file.
43419         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
43420         multilib arch directory.
43421         (MULTILIB_REUSE): Add multilib reuse rules.
43422         (MULTILIB_MATCHES): Add multilib match rules.
43424 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43426         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
43427         * config/arm/arm-tables.opt: Regenerate.
43428         * config/arm/arm-tune.md: Likewise.
43429         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
43430         * (-mfix-cmse-cve-2021-35465): Likewise.
43432 2023-01-23  Richard Biener  <rguenther@suse.de>
43434         PR tree-optimization/108482
43435         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
43436         .LOOP_DIST_ALIAS calls.
43438 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43440         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
43441         * config/arm/arm-protos.h: Update.
43442         * config/arm/aarch-common-protos.h: Declare
43443         'aarch_bti_arch_check'.
43444         * config/arm/arm.cc (aarch_bti_enabled) Update.
43445         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
43446         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
43447         * config/arm/arm.md (bti_nop): New insn.
43448         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
43449         (aarch-bti-insert.o): New target.
43450         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
43451         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
43452         compatibility.
43453         (gate): Make use of 'aarch_bti_arch_check'.
43454         * config/arm/arm-passes.def: New file.
43455         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
43457 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43459         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
43460         'aarch-bti-insert.o'.
43461         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
43462         proto.
43463         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
43464         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
43465         (aarch64_output_mi_thunk)
43466         (aarch64_print_patchable_function_entry)
43467         (aarch64_file_end_indicate_exec_stack): Update renamed function
43468         calls to renamed functions.
43469         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
43470         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
43471         target.
43472         * config/aarch64/aarch64-bti-insert.cc: Delete.
43473         * config/arm/aarch-bti-insert.cc: New file including and
43474         generalizing code from aarch64-bti-insert.cc.
43475         * config/arm/aarch-common-protos.h: Update.
43477 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43479         * config/arm/arm.h (arm_arch8m_main): Declare it.
43480         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
43481         Declare it.
43482         * config/arm/arm.cc (arm_arch8m_main): Define it.
43483         (arm_option_reconfigure_globals): Set arm_arch8m_main.
43484         (arm_compute_frame_layout, arm_expand_prologue)
43485         (thumb2_expand_return, arm_expand_epilogue)
43486         (arm_conditional_register_usage): Update for pac codegen.
43487         (arm_current_function_pac_enabled_p): New function.
43488         (aarch_bti_enabled) New function.
43489         (use_return_insn): Return zero when pac is enabled.
43490         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
43491         Add new patterns.
43492         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
43493         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
43495 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43497         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
43498         mbranch-protection.
43500 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43501             Tejas Belagod   <tbelagod@arm.com>
43503         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
43504         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
43506 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43507             Tejas Belagod   <tbelagod@arm.com>
43508             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43510         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
43511         new pseudo register class _UVRSC_PAC.
43513 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43514             Tejas Belagod   <tbelagod@arm.com>
43516         * config/arm/arm-c.cc (arm_cpu_builtins): Define
43517         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
43518         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
43520 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43521             Tejas Belagod   <tbelagod@arm.com>
43523         * doc/sourcebuild.texi: Document arm_pacbti_hw.
43525 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43526             Tejas Belagod   <tbelagod@arm.com>
43527             Richard Earnshaw  <Richard.Earnshaw@arm.com>
43529         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
43530         -mbranch-protection option and initialize appropriate data structures.
43531         * config/arm/arm.opt (-mbranch-protection): New option.
43532         * doc/invoke.texi (Arm Options): Document it.
43534 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43535             Tejas Belagod   <tbelagod@arm.com>
43537         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
43538         * config/arm/arm-cpus.in (pacbti): New feature.
43539         * doc/invoke.texi (Arm Options): Document it.
43541 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
43542             Tejas Belagod   <tbelagod@arm.com>
43544         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
43545         (all_architectures): Fix comment.
43546         (aarch64_parse_extension): Rename return type, enum value names.
43547         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
43548         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
43549         Also rename corresponding enum values.
43550         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
43551         out aarch64_function_type and move it to common code as
43552         aarch_function_type in aarch-common.h.
43553         * config/aarch64/aarch64-protos.h: Include common types header,
43554         move out types aarch64_parse_opt_result and aarch64_key_type to
43555         aarch-common.h
43556         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
43557         and functions out into aarch-common.h and aarch-common.cc.  Fix up
43558         all the name changes resulting from the move.
43559         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
43560         and enum value.
43561         * config/aarch64/aarch64.opt: Include aarch-common.h to import
43562         type move.  Fix up name changes from factoring out common code and
43563         data.
43564         * config/arm/aarch-common-protos.h: Export factored out routines to both
43565         backends.
43566         * config/arm/aarch-common.cc: Include newly factored out types.
43567         Move all mbranch-protection code and data structures from
43568         aarch64.cc.
43569         * config/arm/aarch-common.h: New header that declares types shared
43570         between aarch32 and aarch64 backends.
43571         * config/arm/arm-protos.h: Declare types and variables that are
43572         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
43573         aarch_ra_sign_scope and aarch_enable_bti.
43574         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
43575         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
43576         * config/arm/arm.cc: Add missing includes.
43578 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
43580         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
43582 2023-01-23  Richard Biener  <rguenther@suse.de>
43584         PR tree-optimization/108449
43585         * cgraphunit.cc (check_global_declaration): Do not turn
43586         undefined statics into externs.
43588 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
43590         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
43591         and HI input modes.
43592         * config/pru/pru.md (clz): Fix generated code for QI and HI
43593         input modes.
43595 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
43597         * config/v850/v850.cc (v850_select_section): Put const volatile
43598         objects into read-only sections.
43600 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
43602         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
43603         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
43604         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
43606 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
43608         PR tree-optimization/108457
43609         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
43610         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
43611         argument instead of a temporary.  Formatting fixes.
43613 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
43615         PR tree-optimization/108447
43616         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
43617         (relation_tests): Add self-tests for relation_{intersect,union}
43618         commutativity.
43619         * selftest.h (relation_tests): Declare.
43620         * function-tests.cc (test_ranges): Call it.
43622 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
43624         PR target/108436
43625         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
43626         invalid third argument to __builtin_ia32_prefetch.
43628 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
43630         PR middle-end/108459
43631         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
43632         than fold_unary for NEGATE_EXPR.
43634 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
43636         PR target/108411
43637         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
43638         comment. Move assert about alignment a bit later.
43640 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
43642         PR tree-optimization/108440
43643         * tree-ssa-forwprop.cc: Include gimple-range.h.
43644         (simplify_rotate): For the forms with T2 wider than T and shift counts of
43645         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
43646         to B.  For the forms with T2 wider than T and shift counts of
43647         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
43648         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
43649         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
43650         pass specific ranger instead of get_global_range_query.
43651         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
43652         been created.
43654 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
43656         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
43657         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
43658         the pattern.
43659         (aarch64_simd_vec_copy_lane<mode>): Likewise.
43660         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
43662 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
43664         PR debug/106746
43665         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
43666         within debug insns.
43668 2023-01-18  Martin Jambor  <mjambor@suse.cz>
43670         PR ipa/107944
43671         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
43672         lcone_of chain also do not need the body.
43674 2023-01-18  Richard Biener  <rguenther@suse.de>
43676         Revert:
43677         2022-12-16  Richard Biener  <rguenther@suse.de>
43679         PR middle-end/108086
43680         * tree-inline.cc (remap_ssa_name): Do not unshare the
43681         result from the decl_map.
43683 2023-01-18  Murray Steele  <murray.steele@arm.com>
43685         PR target/108442
43686         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
43687         function.
43688         (__arm_vst1q_p_s8): Likewise.
43689         (__arm_vld1q_z_u8): Likewise.
43690         (__arm_vld1q_z_s8): Likewise.
43691         (__arm_vst1q_p_u16): Likewise.
43692         (__arm_vst1q_p_s16): Likewise.
43693         (__arm_vld1q_z_u16): Likewise.
43694         (__arm_vld1q_z_s16): Likewise.
43695         (__arm_vst1q_p_u32): Likewise.
43696         (__arm_vst1q_p_s32): Likewise.
43697         (__arm_vld1q_z_u32): Likewise.
43698         (__arm_vld1q_z_s32): Likewise.
43699         (__arm_vld1q_z_f16): Likewise.
43700         (__arm_vst1q_p_f16): Likewise.
43701         (__arm_vld1q_z_f32): Likewise.
43702         (__arm_vst1q_p_f32): Likewise.
43704 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
43706         * config/xtensa/xtensa.md (xorsi3_internal):
43707         Rename from the original of "xorsi3".
43708         (xorsi3): New expansion pattern that emits addition rather than
43709         bitwise-XOR when the second source is a constant of -2147483648
43710         if TARGET_DENSITY.
43712 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
43713             Andrew Pinski  <apinski@marvell.com>
43715         PR target/108396
43716         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
43717         vec_vsubcuqP with vec_vsubcuq.
43719 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
43721         PR target/108348
43722         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
43723         support for invalid uses of MMA opaque type in function arguments.
43725 2023-01-18  liuhongt  <hongtao.liu@intel.com>
43727         PR target/55522
43728         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
43729         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
43730         -share or -mno-daz-ftz is specified.
43731         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
43732         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
43734 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
43736         * config/bpf/bpf.cc (bpf_option_override): Disable
43737         -fstack-protector.
43739 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
43741         PR tree-optimization/106523
43742         * tree-ssa-forwprop.cc (simplify_rotate): For the
43743         patterns with (-Y) & (B - 1) in one operand's shift
43744         count and Y in another, if T2 has wider precision than T,
43745         punt if Y could have a value in [B, B2 - 1] range.
43747 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
43749         PR target/105980
43750         * config/i386/i386.cc (x86_output_mi_thunk): Disable
43751         -mforce-indirect-call for PIC in 32-bit mode.
43753 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
43755         PR ipa/106077
43756         * ipa-modref.cc (modref_access_analysis::analyze): Use
43757         find_always_executed_bbs.
43758         * ipa-sra.cc (process_scan_results): Likewise.
43759         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
43760         (find_always_executed_bbs): New function.
43761         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
43762         (find_always_executed_bbs): Declare.
43764 2023-01-16  Jan Hubicka  <jh@suse.cz>
43766         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
43767         by TARGET_USE_SCATTER.
43768         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
43769         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
43770         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
43771         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
43772         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
43773         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
43775 2023-01-16  Richard Biener  <rguenther@suse.de>
43777         PR target/55522
43778         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
43780 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
43782         PR target/96795
43783         PR target/107515
43784         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
43785         (__ARM_mve_coerce3): Likewise.
43787 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
43789         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
43791 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
43793         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
43794         (number_of_iterations_bitcount): Add call to the above.
43795         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
43796         c[lt]z idiom recognition.
43798 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
43800         * doc/sourcebuild.texi: Add missing target attributes.
43802 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
43804         PR tree-optimization/94793
43805         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
43806         for c[lt]z optabs.
43807         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
43808         (number_of_iterations_cltz_complement): New.
43809         (number_of_iterations_bitcount): Add call to the above.
43811 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
43813         * doc/extend.texi (Common Function Attributes): Fix grammar.
43815 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
43817         PR other/108413
43818         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
43819         * config/riscv/riscv-vsetvl.cc: Likewise.
43821 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
43823         PR c++/105593
43824         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
43825         disable -Winit-self using pragma GCC diagnostic ignored.
43826         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
43827         Likewise.
43828         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
43829         _mm256_undefined_si256): Likewise.
43830         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
43831         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
43832         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
43833         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
43835 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
43837         PR target/108272
43838         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
43839         support for invalid uses in inline asm, factor out the checking and
43840         erroring to lambda function check_and_error_invalid_use.
43842 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
43844         PR tree-optimization/107608
43845         * range-op-float.cc (range_operator_float::fold_range): Avoid
43846         folding into INF when flag_trapping_math.
43847         * value-range.h (frange::known_isinf): Return false for possible NANs.
43849 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
43851         * config.gcc (csky-*-*): Support --with-float=softfp.
43853 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
43855         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
43856         Rename to xtensa_adjust_reg_alloc_order.
43857         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
43858         Ditto.  And also remove code to reorder register numbers for
43859         leaf functions, rename the tables, and adjust the allocation
43860         order for the call0 ABI to use register A0 more.
43861         (xtensa_leaf_regs): Remove.
43862         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
43863         (order_regs_for_local_alloc): Rename as the above.
43864         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
43866 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
43868         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
43869         Change to define_insn_and_split to fold ldr+dup to ld1rq.
43870         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
43872 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
43874         * hash-table.h (is_deleted): Precheck !is_empty.
43875         (mark_deleted): Postcheck !is_empty.
43876         (copy constructor): Test is_empty before is_deleted.
43878 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
43880         PR target/40457
43881         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
43882         moves.
43884 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
43886         PR rtl-optimization/108274
43887         * function.cc (thread_prologue_and_epilogue_insns): Also update the
43888         DF information for calls in a few more cases.
43890 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
43892         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
43893         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
43894         define.
43895         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
43896         (MAX_SYNC_LIBFUNC_SIZE): Define.
43897         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
43898         enabled.
43899         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
43900         libcall when sync libcalls are disabled.
43901         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
43902         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
43903         are disabled on 32-bit target.
43904         * config/pa/pa.opt (matomic-libcalls): New option.
43905         * doc/invoke.texi (HPPA Options): Update.
43907 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
43909         PR rtl-optimization/108117
43910         PR rtl-optimization/108132
43911         * sched-deps.cc (deps_analyze_insn): Do not schedule across
43912         calls before reload.
43914 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
43916         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
43917         options for -mlibarch.
43918         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
43919         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
43921 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
43923         * attribs.cc (strict_flex_array_level_of): Move this function to ...
43924         * attribs.h (strict_flex_array_level_of): Remove the declaration.
43925         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
43926         replace the referece to strict_flex_array_level_of with
43927         DECL_NOT_FLEXARRAY.
43928         * tree.cc (component_ref_size): Likewise.
43930 2023-01-13  Richard Biener  <rguenther@suse.de>
43932         PR target/55522
43933         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
43934         crtfastmath.o for -shared.
43935         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
43937 2023-01-13  Richard Biener  <rguenther@suse.de>
43939         PR target/55522
43940         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
43941         crtfastmath.o for -shared.
43942         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
43943         Likewise.
43944         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
43945         Likewise.
43947 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
43949         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
43950         function.
43951         (TARGET_DWARF_FRAME_REG_MODE): Define.
43953 2023-01-13  Richard Biener  <rguenther@suse.de>
43955         PR target/107209
43956         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
43957         update EH info on the fly.
43959 2023-01-13  Richard Biener  <rguenther@suse.de>
43961         PR tree-optimization/108387
43962         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
43963         value before inserting expression into the tables.
43965 2023-01-12  Andrew Pinski  <apinski@marvell.com>
43966             Roger Sayle  <roger@nextmovesoftware.com>
43968         PR tree-optimization/92342
43969         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
43970         Use tcc_comparison and :c for the multiply.
43971         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
43973 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
43974             Richard Sandiford  <richard.sandiford@arm.com>
43976         PR target/105549
43977         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
43978         Check DECL_PACKED for bitfield.
43979         (aarch64_layout_arg): Warn when parameter passing ABI changes.
43980         (aarch64_function_arg_boundary): Do not warn here.
43981         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
43982         changes.
43984 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
43985             Richard Sandiford  <richard.sandiford@arm.com>
43987         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
43988         comment.
43989         (aarch64_layout_arg): Factorize warning conditions.
43990         (aarch64_function_arg_boundary): Fix typo.
43991         * function.cc (currently_expanding_function_start): New variable.
43992         (expand_function_start): Handle
43993         currently_expanding_function_start.
43994         * function.h (currently_expanding_function_start): Declare.
43996 2023-01-12  Richard Biener  <rguenther@suse.de>
43998         PR tree-optimization/99412
43999         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
44000         (swap_ops_for_binary_stmt): Remove reduction handling.
44001         (rewrite_expr_tree_parallel): Adjust.
44002         (reassociate_bb): Likewise.
44003         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
44005 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44007         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
44008         Rearrange the emitting codes.
44010 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44012         * config/xtensa/xtensa.md (*btrue):
44013         Correct value of the attribute "length" that depends on
44014         TARGET_DENSITY and operands, and add '?' character to the register
44015         constraint of the compared operand.
44017 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
44019         * hash-table.h (expand): Check elements and deleted counts.
44020         (verify): Likewise.
44022 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
44024         PR tree-optimization/71343
44025         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
44026         the value number of the expression X << C the same as the value
44027         number for the multiplication X * (1<<C).
44029 2023-01-11  David Faust  <david.faust@oracle.com>
44031         PR target/108293
44032         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
44033         floating point modes.
44035 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
44037         PR tree-optimization/108199
44038         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
44039         for bit-field references.
44041 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
44043         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
44044         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
44045         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
44046         OPTION_MASK_P10_FUSION.
44048 2023-01-11  Richard Biener  <rguenther@suse.de>
44050         PR tree-optimization/107767
44051         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
44052         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
44053         * tree-switch-conversion.cc (switch_conversion::collect):
44054         Count unique non-default targets accounting for later
44055         merging opportunities.
44057 2023-01-11  Martin Liska  <mliska@suse.cz>
44059         PR middle-end/107976
44060         * params.opt: Limit JT params.
44061         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
44063 2023-01-11  Richard Biener  <rguenther@suse.de>
44065         PR tree-optimization/108352
44066         * tree-ssa-threadbackward.cc
44067         (back_threader_profitability::profitable_path_p): Adjust
44068         heuristic that allows non-multi-way branch threads creating
44069         irreducible loops.
44070         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
44071         (--param fsm-scale-path-stmts): Adjust.
44072         * params.opt (--param=fsm-scale-path-blocks=): Remove.
44073         (-param=fsm-scale-path-stmts=): Adjust description.
44075 2023-01-11  Richard Biener  <rguenther@suse.de>
44077         PR tree-optimization/108353
44078         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
44079         Remove.
44080         (add_ssa_edge): Simplify.
44081         (add_control_edge): Likewise.
44082         (ssa_prop_init): Likewise.
44083         (ssa_prop_fini): Likewise.
44084         (ssa_propagation_engine::ssa_propagate): Likewise.
44086 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
44088         * config/s390/s390.md (*not<mode>): New pattern.
44090 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44092         * config/xtensa/xtensa.cc (xtensa_insn_cost):
44093         Let insn cost for size be obtained by applying COSTS_N_INSNS()
44094         to instruction length and then dividing by 3.
44096 2023-01-10  Richard Biener  <rguenther@suse.de>
44098         PR tree-optimization/106293
44099         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
44100         process degenerate PHI defs.
44102 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
44104         PR rtl-optimization/106421
44105         * cprop.cc (bypass_block): Check that DEST is local to this
44106         function (non-NULL) before calling find_edge.
44108 2023-01-10  Martin Jambor  <mjambor@suse.cz>
44110         PR ipa/108110
44111         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
44112         sort_replacements, lookup_first_base_replacement and
44113         m_sorted_replacements_p.
44114         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
44115         (ipa_param_body_adjustments::register_replacement): Set
44116         m_sorted_replacements_p to false.
44117         (compare_param_body_replacement): New function.
44118         (ipa_param_body_adjustments::sort_replacements): Likewise.
44119         (ipa_param_body_adjustments::common_initialization): Call
44120         sort_replacements.
44121         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
44122         m_sorted_replacements_p.
44123         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
44124         std::lower_bound.
44125         (ipa_param_body_adjustments::lookup_first_base_replacement): New
44126         function.
44127         (ipa_param_body_adjustments::modify_call_stmt): Use
44128         lookup_first_base_replacement.
44129         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
44130         adjustments->sort_replacements.
44132 2023-01-10  Richard Biener  <rguenther@suse.de>
44134         PR tree-optimization/108314
44135         * tree-vect-stmts.cc (vectorizable_condition): Do not
44136         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
44138 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
44140         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
44142 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
44144         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
44146 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
44148         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
44149         defines for soft float abi.
44151 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
44153         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
44154         (smart_bclri): Likewise.
44155         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
44156         (fast_bclri): Likewise.
44157         (fast_cmpnesi_i): Likewise.
44158         (*fast_cmpltsi_i): Likewise.
44159         (*fast_cmpgeusi_i): Likewise.
44161 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
44163         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
44164         flag_fp_int_builtin_inexact || !flag_trapping_math.
44165         (<frm_pattern><mode>2): Likewise.
44167 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
44169         * config/s390/s390.cc (s390_register_info): Check call_used_regs
44170         instead of hard-coding the register numbers for call saved
44171         registers.
44172         (s390_optimize_register_info): Likewise.
44174 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
44176         * doc/gm2.texi (Overview): Fix @node markers.
44177         (Using): Likewise.  Remove subsections that were moved to Overview
44178         from the menu and move others around.
44180 2023-01-09  Richard Biener  <rguenther@suse.de>
44182         PR middle-end/108209
44183         * genmatch.cc (commutative_op): Fix return value for
44184         user-id with non-commutative first replacement.
44186 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
44188         PR target/107453
44189         * calls.cc (expand_call): For calls with
44190         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
44191         Formatting fix.
44193 2023-01-09  Richard Biener  <rguenther@suse.de>
44195         PR middle-end/69482
44196         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
44197         qualified accesses also force objects to memory.
44199 2023-01-09  Martin Liska  <mliska@suse.cz>
44201         PR lto/108330
44202         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
44203         NULL (deleleted value) to a hash_set.
44205 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44207         * config/xtensa/xtensa.md (*splice_bits):
44208         New insn_and_split pattern.
44210 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44212         * config/xtensa/xtensa.cc
44213         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
44214         New helper functions.
44215         (xtensa_set_return_address, xtensa_output_mi_thunk):
44216         Change to use the helper function.
44217         (xtensa_emit_adjust_stack_ptr): Ditto.
44218         And also change to try reusing the content of scratch register
44219         A9 if the register is not modified in the function body.
44221 2023-01-07  LIU Hao  <lh_mouse@126.com>
44223         PR middle-end/108300
44224         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
44225         before <windows.h>.
44226         * diagnostic-color.cc: Likewise.
44227         * plugin.cc: Likewise.
44228         * prefix.cc: Likewise.
44230 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
44232         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
44233         for handling real integer types.
44235 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
44237         Revert:
44238         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
44240         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
44241         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
44242         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
44243         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
44244         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
44245         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
44246         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
44247         (aarch64_simd_dupv2hf): New.
44248         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
44249         Add E_V2HFmode.
44250         * config/aarch64/iterators.md (VHSDF_P): New.
44251         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
44252         Vel, q, vp): Add V2HF.
44253         * config/arm/types.md (neon_fp_reduc_add_h): New.
44255 2023-01-06  Martin Liska  <mliska@suse.cz>
44257         PR middle-end/107966
44258         * doc/options.texi: Fix Var documentation in internal manual.
44260 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
44262         Revert:
44263         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
44265         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
44266         RTL expansion to allow condition (mask) to be shared/reused,
44267         by avoiding overwriting pseudos and adding REG_EQUAL notes.
44269 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
44271         * common.opt: Add -static-libgm2.
44272         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
44273         * doc/gm2.texi: Document static-libgm2.
44274         * gcc.cc (driver_handle_option): Allow static-libgm2.
44276 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
44278         * common/config/i386/i386-common.cc (processor_alias_table):
44279         Use CPU_ZNVER4 for znver4.
44280         * config/i386/i386.md: Add znver4.md.
44281         * config/i386/znver4.md: New.
44283 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
44285         PR tree-optimization/108253
44286         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
44287         types.
44289 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
44291         PR middle-end/108237
44292         * generic-match-head.cc: Include tree-pass.h.
44293         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
44294         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
44295         resp. PROP_gimple_lvec property set.
44297 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
44299         PR sanitizer/108256
44300         * convert.cc (do_narrow): Punt for MULT_EXPR if original
44301         type doesn't wrap around and -fsanitize=signed-integer-overflow
44302         is on.
44303         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
44305 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
44307         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
44308         * common/config/i386/i386-common.cc: Add Emeraldrapids.
44310 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
44312         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
44313         for meteorlake.
44315 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
44317         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
44318         default constructor to initialize it.
44319         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
44320         for last and iterate to handle recursive calls.  Delete leftover
44321         candidates at the end.
44322         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
44323         on local clones.
44324         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
44325         gc_candidate bit when a clone is used.
44327 2023-01-03  Florian Weimer  <fweimer@redhat.com>
44329         Revert:
44330         2023-01-02  Florian Weimer  <fweimer@redhat.com>
44332         * dwarf2cfi.cc (init_return_column_size): Remove.
44333         (init_one_dwarf_reg_size): Adjust.
44334         (generate_dwarf_reg_sizes): New function.  Extracted
44335         from expand_builtin_init_dwarf_reg_sizes.
44336         (expand_builtin_init_dwarf_reg_sizes): Call
44337         generate_dwarf_reg_sizes.
44338         * target.def (init_dwarf_reg_sizes_extra): Adjust
44339         hook signature.
44340         * config/msp430/msp430.cc
44341         (msp430_init_dwarf_reg_sizes_extra): Adjust.
44342         * config/rs6000/rs6000.cc
44343         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
44344         * doc/tm.texi: Update.
44346 2023-01-03  Florian Weimer  <fweimer@redhat.com>
44348         Revert:
44349         2023-01-02  Florian Weimer  <fweimer@redhat.com>
44351         * debug.h (dwarf_reg_sizes_constant): Declare.
44352         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
44354 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
44356         PR tree-optimization/105043
44357         * doc/extend.texi (Object Size Checking): Split out into two
44358         subsections and mention _FORTIFY_SOURCE.
44360 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
44362         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
44363         RTL expansion to allow condition (mask) to be shared/reused,
44364         by avoiding overwriting pseudos and adding REG_EQUAL notes.
44366 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
44368         PR target/108229
44369         * config/i386/i386-features.cc
44370         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
44371         the gain/cost of converting a MEM operand.
44373 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
44375         PR middle-end/108264
44376         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
44377         from source which doesn't have scalar integral mode first convert
44378         it to outer_mode.
44380 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
44382         PR rtl-optimization/108263
44383         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
44384         asm goto to EXIT.
44386 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
44388         PR target/87832
44389         * config/i386/lujiazui.md (lujiazui_div): New automaton.
44390         (lua_div): New unit.
44391         (lua_idiv_qi): Correct unit in the reservation.
44392         (lua_idiv_qi_load): Ditto.
44393         (lua_idiv_hi): Ditto.
44394         (lua_idiv_hi_load): Ditto.
44395         (lua_idiv_si): Ditto.
44396         (lua_idiv_si_load): Ditto.
44397         (lua_idiv_di): Ditto.
44398         (lua_idiv_di_load): Ditto.
44399         (lua_fdiv_SF): Ditto.
44400         (lua_fdiv_SF_load): Ditto.
44401         (lua_fdiv_DF): Ditto.
44402         (lua_fdiv_DF_load): Ditto.
44403         (lua_fdiv_XF): Ditto.
44404         (lua_fdiv_XF_load): Ditto.
44405         (lua_ssediv_SF): Ditto.
44406         (lua_ssediv_load_SF): Ditto.
44407         (lua_ssediv_V4SF): Ditto.
44408         (lua_ssediv_load_V4SF): Ditto.
44409         (lua_ssediv_V8SF): Ditto.
44410         (lua_ssediv_load_V8SF): Ditto.
44411         (lua_ssediv_SD): Ditto.
44412         (lua_ssediv_load_SD): Ditto.
44413         (lua_ssediv_V2DF): Ditto.
44414         (lua_ssediv_load_V2DF): Ditto.
44415         (lua_ssediv_V4DF): Ditto.
44416         (lua_ssediv_load_V4DF): Ditto.
44418 2023-01-02  Florian Weimer  <fweimer@redhat.com>
44420         * debug.h (dwarf_reg_sizes_constant): Declare.
44421         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
44423 2023-01-02  Florian Weimer  <fweimer@redhat.com>
44425         * dwarf2cfi.cc (init_return_column_size): Remove.
44426         (init_one_dwarf_reg_size): Adjust.
44427         (generate_dwarf_reg_sizes): New function.  Extracted
44428         from expand_builtin_init_dwarf_reg_sizes.
44429         (expand_builtin_init_dwarf_reg_sizes): Call
44430         generate_dwarf_reg_sizes.
44431         * target.def (init_dwarf_reg_sizes_extra): Adjust
44432         hook signature.
44433         * config/msp430/msp430.cc
44434         (msp430_init_dwarf_reg_sizes_extra): Adjust.
44435         * config/rs6000/rs6000.cc
44436         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
44437         * doc/tm.texi: Update.
44439 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
44441         * gcc.cc (process_command): Update copyright notice dates.
44442         * gcov-dump.cc (print_version): Ditto.
44443         * gcov.cc (print_version): Ditto.
44444         * gcov-tool.cc (print_version): Ditto.
44445         * gengtype.cc (create_file): Ditto.
44446         * doc/cpp.texi: Bump @copying's copyright year.
44447         * doc/cppinternals.texi: Ditto.
44448         * doc/gcc.texi: Ditto.
44449         * doc/gccint.texi: Ditto.
44450         * doc/gcov.texi: Ditto.
44451         * doc/install.texi: Ditto.
44452         * doc/invoke.texi: Ditto.
44454 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
44455             Uroš Bizjak  <ubizjak@gmail.com>
44457         * config/i386/i386.md (extendditi2): New define_insn.
44458         (define_split): Use DWIH mode iterator to treat new extendditi2
44459         identically to existing extendsidi2_1.
44460         (define_peephole2): Likewise.
44461         (define_peephole2): Likewise.
44462         (define_Split): Likewise.
44465 Copyright (C) 2023 Free Software Foundation, Inc.
44467 Copying and distribution of this file, with or without modification,
44468 are permitted in any medium without royalty provided the copyright
44469 notice and this notice are preserved.