]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-11-06 John David Anglin <danglin@gcc.gnu.org>
2
3 * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo.
4
5 2023-11-06 John David Anglin <danglin@gcc.gnu.org>
6
7 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 1.
8
9 2023-11-06 David Malcolm <dmalcolm@redhat.com>
10
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.
38
39 2023-11-06 David Malcolm <dmalcolm@redhat.com>
40
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.
73
74 2023-11-06 David Malcolm <dmalcolm@redhat.com>
75
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.
82
83 2023-11-06 David Malcolm <dmalcolm@redhat.com>
84
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.
97
98 2023-11-06 Christophe Lyon <christophe.lyon@linaro.org>
99
100 * doc/sourcebuild.texi (Other attributes): Document thread_fence
101 effective-target.
102
103 2023-11-06 Uros Bizjak <ubizjak@gmail.com>
104
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.
146
147 2023-11-06 Joseph Myers <joseph@codesourcery.com>
148
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.
159
160 2023-11-06 Thomas Schwinge <thomas@codesourcery.com>
161
162 * config/nvptx/nvptx.h (MAKE_DECL_ONE_ONLY): Define.
163
164 2023-11-06 Richard Biener <rguenther@suse.de>
165
166 PR tree-optimization/112405
167 * tree-vect-stmts.cc (vectorizable_simd_clone_call):
168 Properly handle invariant and/or loop mask passing.
169
170 2023-11-06 Pan Li <pan2.li@intel.com>
171
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.
175
176 2023-11-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
177
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.
183
184 2023-11-06 Richard Biener <rguenther@suse.de>
185
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.
196
197 2023-11-06 Richard Biener <rguenther@suse.de>
198
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.
209
210 2023-11-06 Robin Dapp <rdapp@ventanamicro.com>
211
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.
230
231 2023-11-06 Richard Sandiford <richard.sandiford@arm.com>
232
233 * explow.cc (align_dynamic_address): Do nothing if the required
234 alignment is a byte.
235
236 2023-11-06 Richard Sandiford <richard.sandiford@arm.com>
237
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.
244
245 2023-11-06 liuhongt <hongtao.liu@intel.com>
246
247 PR target/112393
248 * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2):
249 Avoid generating RTL code when d->testing_p.
250
251 2023-11-06 Richard Biener <rguenther@suse.de>
252
253 PR tree-optimization/112369
254 * tree.cc (strip_float_extensions): Use element_precision.
255
256 2023-11-06 Richard Biener <rguenther@suse.de>
257
258 PR middle-end/112296
259 * doc/extend.texi (__builtin_constant_p): Clarify that
260 side-effects are discarded.
261
262 2023-11-06 Kewen Lin <linkw@linux.ibm.com>
263
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.
270
271 2023-11-06 xuli <xuli1@eswincomputing.com>
272 Pan Li <pan2.li@intel.com>
273
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.
292
293 2023-11-06 Haochen Jiang <haochen.jiang@intel.com>
294
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.
313
314 2023-11-06 Haochen Jiang <haochen.jiang@intel.com>
315
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.
365
366 2023-11-06 Haochen Jiang <haochen.jiang@intel.com>
367
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.
382
383 2023-11-06 Haochen Jiang <haochen.jiang@intel.com>
384
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.
405
406 2023-11-05 Uros Bizjak <ubizjak@gmail.com>
407
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.
413
414 2023-11-05 Richard Sandiford <richard.sandiford@arm.com>
415
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.
420
421 2023-11-05 Richard Sandiford <richard.sandiford@arm.com>
422
423 * read-rtl.cc (read_rtx_operand): Avoid spinning endlessly for
424 invalid [...] operands.
425
426 2023-11-05 Richard Sandiford <richard.sandiford@arm.com>
427
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.
438
439 2023-11-05 Pan Li <pan2.li@intel.com>
440
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.
449
450 2023-11-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
451
452 * config/riscv/vector.md: Fix bug.
453
454 2023-11-04 Sergei Trofimovich <siarheit@google.com>
455
456 PR bootstrap/112379
457 * gcc-urlifier.cc (get_url_suffix_for_quoted_text): Mark as
458 ATTRIBUTE_UNUSED.
459
460 2023-11-04 Pan Li <pan2.li@intel.com>
461
462 * config/riscv/vector-iterators.md: Remove HF modes.
463
464 2023-11-04 David Malcolm <dmalcolm@redhat.com>
465
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.
493
494 2023-11-04 David Malcolm <dmalcolm@redhat.com>
495
496 * Makefile.in (GCC_OBJS): Add gcc-urlifier.o.
497 (OBJS): Likewise.
498
499 2023-11-04 David Malcolm <dmalcolm@redhat.com>
500
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.
808
809 2023-11-03 Martin Uecker <uecker@tugraz.at>
810
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'.
815
816 2023-11-03 Andre Vieira <andre.simoesdiasvieira@arm.com>
817
818 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow unmasked
819 calls to use masked simdclones.
820
821 2023-11-03 David Malcolm <dmalcolm@redhat.com>
822
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.
843
844 2023-11-03 Andrew MacLeod <amacleod@redhat.com>
845
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.
851
852 2023-11-03 Andrew MacLeod <amacleod@redhat.com>
853
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.
857
858 2023-11-03 Uros Bizjak <ubizjak@gmail.com>
859
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.
876
877 2023-11-03 Richard Biener <rguenther@suse.de>
878
879 * tree-vect-loop.cc (vectorizable_live_operation): Simplify
880 LC PHI replacement.
881
882 2023-11-03 Roger Sayle <roger@nextmovesoftware.com>
883
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.
892
893 2023-11-03 Richard Sandiford <richard.sandiford@arm.com>
894
895 * config/aarch64/aarch64.md (*cmov_uxtw_insn_insv): Remove
896 can_create_pseudo_p condition.
897
898 2023-11-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
899
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.
902
903 2023-11-03 Richard Biener <rguenther@suse.de>
904
905 PR tree-optimization/112366
906 * tree-vect-loop.cc (vectorizable_live_operation): Remove
907 assert.
908
909 2023-11-03 Richard Biener <rguenther@suse.de>
910
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.
915
916 2023-11-03 Pan Li <pan2.li@intel.com>
917
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.
934
935 2023-11-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
936
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.
946
947 2023-11-03 Pan Li <pan2.li@intel.com>
948
949 Revert:
950 2023-11-02 Pan Li <pan2.li@intel.com>
951
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.
968
969 2023-11-02 Edwin Lu <ewlu@rivosinc.com>
970
971 * config/riscv/riscv.cc (riscv_sched_variable_issue): add disabled assert
972
973 2023-11-02 Jeff Law <jlaw@ventanamicro.com>
974
975 * config/h8300/combiner.md: Add new patterns for single bit
976 sign extractions.
977
978 2023-11-02 Pan Li <pan2.li@intel.com>
979
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.
996
997 2023-11-02 Sam James <sam@gentoo.org>
998
999 * doc/passes.texi (Dead code elimination): Explicitly say 'lifetime'
1000 as this has become the standard term for what we're doing here.
1001
1002 2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1003
1004 * config/riscv/riscv-avlprop.cc
1005 (pass_avlprop::get_vlmax_ta_preferred_avl): Don't allow
1006 non-real insn AVL propation.
1007
1008 2023-11-02 Robin Dapp <rdapp@ventanamicro.com>
1009
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.
1026
1027 2023-11-02 Richard Biener <rguenther@suse.de>
1028
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.
1040
1041 2023-11-02 Uros Bizjak <ubizjak@gmail.com>
1042
1043 * config/i386/i386.md: Move stack protector patterns
1044 above mov $0,%reg -> xor %reg,%reg peephole2 pattern.
1045
1046 2023-11-02 liuhongt <hongtao.liu@intel.com>
1047
1048 * config/i386/mmx.md (cmlav4hf4): New expander.
1049 (cmla_conjv4hf4): Ditto.
1050 (cmulv4hf3): Ditto.
1051 (cmul_conjv4hf3): Ditto.
1052
1053 2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1054
1055 * config/riscv/vector.md: Fix redundant codes in attributes.
1056
1057 2023-11-02 xuli <xuli1@eswincomputing.com>
1058
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.
1063
1064 2023-11-02 Pan Li <pan2.li@intel.com>
1065
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.
1069
1070 2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1071
1072 PR target/112327
1073 * config/riscv/vector.md: Add '0'.
1074
1075 2023-11-01 Roger Sayle <roger@nextmovesoftware.com>
1076
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.
1082
1083 2023-11-01 Patrick O'Neill <patrick@rivosinc.com>
1084
1085 * config/riscv/sync.md: Use riscv_subword_address function to
1086 calculate the address and shift in atomic_test_and_set.
1087
1088 2023-11-01 Vineet Gupta <vineetg@rivosinc.com>
1089
1090 * config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode
1091 returned for libcall case.
1092
1093 2023-11-01 Martin Uecker <uecker@tugraz.at>
1094
1095 PR c/71219
1096 * doc/invoke.texi: Document -Walloc-size option.
1097
1098 2023-11-01 Edwin Lu <ewlu@rivosinc.com>
1099
1100 * genautomata.cc (write_automata): move endif
1101
1102 2023-11-01 Andre Vieira <andre.simoesdiasvieira@arm.com>
1103
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.
1113
1114 2023-11-01 Uros Bizjak <ubizjak@gmail.com>
1115
1116 PR target/112332
1117 * config/i386/i386.md (stack_protexct_set_2 peephole2):
1118 Use general_gr_operand as operand 4 predicate.
1119
1120 2023-11-01 Uros Bizjak <ubizjak@gmail.com>
1121
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.
1145
1146 2023-11-01 xuli <xuli1@eswincomputing.com>
1147
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.
1152
1153 2023-11-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1154
1155 * tree-vect-slp.cc (vect_build_slp_tree_1): Fix whitespace.
1156
1157 2023-10-31 David Malcolm <dmalcolm@redhat.com>
1158
1159 * Makefile.in (ANALYZER_OBJS): Add analyzer/record-layout.o.
1160
1161 2023-10-31 David Malcolm <dmalcolm@redhat.com>
1162
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.
1167
1168 2023-10-31 David Malcolm <dmalcolm@redhat.com>
1169
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.
1173
1174 2023-10-31 David Malcolm <dmalcolm@redhat.com>
1175
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.
1183
1184 2023-10-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1185
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.
1189
1190 2023-10-31 Cupertino Miranda <cupertino.miranda@oracle.com>
1191
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.
1226
1227 2023-10-31 Neal Frager <neal.frager@amd.com>
1228
1229 * config/microblaze/microblaze.cc: Fix mcpu version check.
1230
1231 2023-10-31 Patrick O'Neill <patrick@rivosinc.com>
1232
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.
1240
1241 2023-10-31 Christoph Müllner <christoph.muellner@vrull.eu>
1242
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.
1261
1262 2023-10-31 Christoph Müllner <christoph.muellner@vrull.eu>
1263
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.
1327
1328 2023-10-31 Carl Love <cel@us.ibm.com>
1329
1330 * doc/extend.texi (__builtin_bcdsub_le, __builtin_bcdsub_ge): Add
1331 documentation for the builti-ins.
1332
1333 2023-10-31 Vladimir N. Makarov <vmakarov@redhat.com>
1334
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.
1338
1339 2023-10-31 Robin Dapp <rdapp@ventanamicro.com>
1340
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.
1353
1354 2023-10-31 Robin Dapp <rdapp@ventanamicro.com>
1355
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.
1384
1385 2023-10-31 Alexandre Oliva <oliva@adacore.com>
1386
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.
1395
1396 2023-10-31 Richard Biener <rguenther@suse.de>
1397
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.
1405
1406 2023-10-31 Xi Ruoyao <xry111@xry111.site>
1407
1408 PR target/112299
1409 * config/loongarch/loongarch-opts.h (HAVE_AS_TLS): Define to 0
1410 if not defined yet.
1411
1412 2023-10-31 Lehua Ding <lehua.ding@rivai.ai>
1413
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
1418
1419 2023-10-31 Haochen Jiang <haochen.jiang@intel.com>
1420
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.
1427
1428 2023-10-31 Lehua Ding <lehua.ding@rivai.ai>
1429
1430 * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
1431 Change to define_expand.
1432
1433 2023-10-31 liuhongt <hongtao.liu@intel.com>
1434
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.
1446
1447 2023-10-31 Andrew Pinski <pinskia@gmail.com>
1448
1449 * match.pd (`a == 1 ? b : a OP b`): New pattern.
1450 (`a == -1 ? b : a & b`): New pattern.
1451
1452 2023-10-31 Andrew Pinski <pinskia@gmail.com>
1453
1454 * match.pd: (`a == 0 ? b : b + a`,
1455 `a == 0 ? b : b - a`): New patterns.
1456
1457 2023-10-31 Neal Frager <neal.frager@amd.com>
1458
1459 * config/microblaze/microblaze.cc: Fix mcpu version check.
1460
1461 2023-10-30 Mayshao <mayshao-oc@zhaoxin.com>
1462
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.
1520
1521 2023-10-30 Martin Jambor <mjambor@suse.cz>
1522
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.
1542
1543 2023-10-30 Martin Jambor <mjambor@suse.cz>
1544
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.
1550
1551 2023-10-30 Roger Sayle <roger@nextmovesoftware.com>
1552
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.
1557
1558 2023-10-30 Roger Sayle <roger@nextmovesoftware.com>
1559
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.
1571
1572 2023-10-30 Roger Sayle <roger@nextmovesoftware.com>
1573
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.
1585
1586 2023-10-30 Richard Ball <richard.ball@arm.com>
1587
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.
1601
1602 2023-10-30 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
1603
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.
1607
1608 2023-10-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1609
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.
1613
1614 2023-10-30 liuhongt <hongtao.liu@intel.com>
1615
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.
1622
1623 2023-10-30 Haochen Gui <guihaoc@gcc.gnu.org>
1624
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.
1632
1633 2023-10-29 Martin Uecker <uecker@tugraz.at>
1634
1635 PR tree-optimization/109334
1636 * tree-object-size.cc (parm_object_size): Allow size
1637 computation for implicit access attributes.
1638
1639 2023-10-29 Max Filippov <jcmvbkbc@gmail.com>
1640
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).
1645
1646 2023-10-29 Pan Li <pan2.li@intel.com>
1647
1648 * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Use
1649 reference type to prevent copying.
1650
1651 2023-10-27 Vladimir N. Makarov <vmakarov@redhat.com>
1652
1653 PR rtl-optimization/112107
1654 * ira-costs.cc: (calculate_equiv_gains): Use NONDEBUG_INSN_P
1655 instead of INSN_P.
1656
1657 2023-10-27 Andrew Stubbs <ams@codesourcery.com>
1658
1659 PR target/112088
1660 * config/gcn/gcn.cc (gcn_expand_epilogue): Fix kernel epilogue register
1661 conflict.
1662
1663 2023-10-27 Andrew Stubbs <ams@codesourcery.com>
1664
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.
1670
1671 2023-10-27 Richard Sandiford <richard.sandiford@arm.com>
1672
1673 * recog.cc (insn_propagation::apply_to_pattern_1): Handle shared
1674 ASM_OPERANDS.
1675
1676 2023-10-27 Yangyu Chen <chenyangyu@isrc.iscas.ac.cn>
1677
1678 * config/riscv/riscv.cc (rocket_tune_info): Fix int_div cost.
1679 (sifive_7_tune_info, thead_c906_tune_info): Likewise.
1680
1681 2023-10-27 Robin Dapp <rdapp@ventanamicro.com>
1682
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.
1693
1694 2023-10-27 Vladimir N. Makarov <vmakarov@redhat.com>
1695
1696 * ira-costs.cc: (get_equiv_regno, calculate_equiv_gains):
1697 Process reg equivalence invariants.
1698
1699 2023-10-27 Uros Bizjak <ubizjak@gmail.com>
1700
1701 * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
1702 i386: Fiy typo in "partial_memory_read_stall" tune option.
1703
1704 2023-10-27 Victor Do Nascimento <victor.donascimento@arm.com>
1705
1706 * config/aarch64/aarch64.cc (aarch64_print_operand): Add
1707 support for CONST_STRING.
1708
1709 2023-10-27 Roger Sayle <roger@nextmovesoftware.com>
1710
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.
1730
1731 2023-10-27 Lewis Hyatt <lhyatt@gmail.com>
1732
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.
1742
1743 2023-10-27 Andrew Pinski <apinski@marvell.com>
1744
1745 PR tree-optimization/101590
1746 PR tree-optimization/94884
1747 * match.pd (`(X BIT_OP Y) CMP X`): New pattern.
1748
1749 2023-10-27 liuhongt <hongtao.liu@intel.com>
1750
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.
1772
1773 2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1774
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.
1779
1780 2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1781
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.
1789
1790 2023-10-26 David Malcolm <dmalcolm@redhat.com>
1791
1792 * doc/extend.texi (Common Function Attributes): Add
1793 null_terminated_string_arg.
1794
1795 2023-10-26 Andrew Pinski <pinskia@gmail.com>
1796
1797 PR tree-optimization/111957
1798 * match.pd (`a != C1 ? abs(a) : C2`): New pattern.
1799
1800 2023-10-26 Aldy Hernandez <aldyh@redhat.com>
1801
1802 * range-op-float.cc (range_operator::fold_range): Delete unused
1803 variable.
1804
1805 2023-10-26 Aldy Hernandez <aldyh@redhat.com>
1806
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.
1817
1818 2023-10-26 Aldy Hernandez <aldyh@redhat.com>
1819
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.
1829
1830 2023-10-26 Richard Ball <richard.ball@arm.com>
1831
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.
1845
1846 2023-10-26 Iain Sandoe <iain@sandoe.co.uk>
1847
1848 * config/darwin.h
1849 (darwin_label_is_anonymous_local_objc_name): Make metadata names
1850 linker-visibile for GNU objective C.
1851
1852 2023-10-26 Vladimir N. Makarov <vmakarov@redhat.com>
1853
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.
1863
1864 2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1865
1866 * doc/md.texi: Adapt COND_LEN pseudo code.
1867
1868 2023-10-26 Roger Sayle <roger@nextmovesoftware.com>
1869 Richard Biener <rguenther@suse.de>
1870
1871 PR rtl-optimization/91865
1872 * combine.cc (make_compound_operation): Avoid creating a
1873 ZERO_EXTEND of a ZERO_EXTEND.
1874
1875 2023-10-26 Jiahao Xu <xujiahao@loongson.cn>
1876
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.
1881
1882 2023-10-26 Thomas Schwinge <thomas@codesourcery.com>
1883
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);'.
1899
1900 2023-10-26 Alexandre Oliva <oliva@adacore.com>
1901
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.
1906
1907 2023-10-26 Alexandre Oliva <oliva@adacore.com>
1908
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.
1916
1917 2023-10-25 Iain Sandoe <iain@sandoe.co.uk>
1918
1919 * config/darwin.cc (darwin_override_options): Handle fPIE.
1920
1921 2023-10-25 Iain Sandoe <iain@sandoe.co.uk>
1922
1923 * config.gcc: Use -E to to sed to indicate that we are using
1924 extended REs.
1925
1926 2023-10-25 Jason Merrill <jason@redhat.com>
1927
1928 * tree-core.h (struct tree_base): Update address_space comment.
1929
1930 2023-10-25 Wilco Dijkstra <wilco.dijkstra@arm.com>
1931
1932 * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
1933 Add support for immediates using MOV/EOR bitmask.
1934
1935 2023-10-25 Uros Bizjak <ubizjak@gmail.com>
1936
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.
1944
1945 2023-10-25 Andrew MacLeod <amacleod@redhat.com>
1946
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.
1950
1951 2023-10-25 Chenghui Pan <panchenghui@loongson.cn>
1952
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.
1971
1972 2023-10-25 chenxiaolong <chenxiaolong@loongson.cn>
1973
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.
1979
1980 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
1981
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.
1992
1993 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
1994
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.
2001
2002 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2003
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.
2007
2008 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2009
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.
2024
2025 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2026
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.
2035
2036 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2037
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.
2043
2044 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2045
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.
2049
2050 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2051
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.
2055
2056 2023-10-25 Richard Sandiford <richard.sandiford@arm.com>
2057
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.
2061
2062 2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
2063
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'.
2068
2069 2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
2070
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.
2076
2077 2023-10-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2078
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.
2105
2106 2023-10-25 Chung-Lin Tang <cltang@codesourcery.com>
2107
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.
2120
2121 2023-10-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2122
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.
2127
2128 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2129
2130 * recog.cc (constrain_operands): Remove UNARY_P handling.
2131 * reload.cc (find_reloads): Likewise.
2132
2133 2023-10-24 Jose E. Marchesi <jose.marchesi@oracle.com>
2134
2135 * gcov-io.h: Fix record length encoding in comment.
2136
2137 2023-10-24 Roger Sayle <roger@nextmovesoftware.com>
2138
2139 * config/i386/i386-features.cc (compute_convert_gain): Provide
2140 more accurate values (sizes) for inter-unit moves with -Os.
2141
2142 2023-10-24 Roger Sayle <roger@nextmovesoftware.com>
2143 Claudiu Zissulescu <claziss@gmail.com>
2144
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.
2182
2183 2023-10-24 Claudiu Zissulescu <claziss@gmail.com>
2184
2185 * config/arc/arc.md (mulsi3_700): Update pattern.
2186 (mulsi3_v2): Likewise.
2187 * config/arc/predicates.md (mpy_dest_reg_operand): Remove it.
2188
2189 2023-10-24 Andrew Pinski <pinskia@gmail.com>
2190
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.
2196
2197 2023-10-24 Andrew Pinski <pinskia@gmail.com>
2198
2199 PR tree-optimization/111913
2200 * match.pd (`popcount(X&Y) + popcount(X|Y)`): Add the resulting
2201 type for popcount.
2202
2203 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2204
2205 * rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check
2206 whether the requested phi already exists.
2207
2208 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2209
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.
2213
2214 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2215
2216 * rtl-ssa/changes.cc (function_info::perform_pending_updates): Check
2217 whether an insn has been replaced by a note.
2218
2219 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2220
2221 * rtl-ssa/member-fns.inl (first_any_insn_use): Handle null
2222 m_first_use.
2223
2224 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2225
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.
2232
2233 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2234
2235 * config/i386/predicates.md (aeswidekl_operation): Protect
2236 REGNO check with REG_P.
2237
2238 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2239
2240 * config/aarch64/aarch64.cc (aarch64_insn_cost): New function.
2241 (TARGET_INSN_COST): Define.
2242
2243 2023-10-24 Richard Sandiford <richard.sandiford@arm.com>
2244
2245 * config/aarch64/atomics.md (aarch64_atomic_exchange<mode>): Require
2246 !TARGET_LSE.
2247
2248 2023-10-24 xuli <xuli1@eswincomputing.com>
2249
2250 PR target/111935
2251 * config/riscv/riscv-vector-builtins-bases.cc: fix bug.
2252
2253 2023-10-24 Mark Harmstone <mark@harmstone.com>
2254
2255 * opts.cc (debug_type_names): Remove stabs and xcoff.
2256 (df_set_names): Adjust.
2257
2258 2023-10-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2259
2260 PR target/111947
2261 * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Add REGNO check.
2262
2263 2023-10-23 Lewis Hyatt <lhyatt@gmail.com>
2264
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.
2276
2277 2023-10-23 Robin Dapp <rdapp@ventanamicro.com>
2278
2279 PR tree-optimization/111794
2280 * tree-vect-stmts.cc (vectorizable_assignment): Add
2281 same-precision exception for dest and source.
2282
2283 2023-10-23 Robin Dapp <rdapp@ventanamicro.com>
2284
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.
2289
2290 2023-10-23 Richard Biener <rguenther@suse.de>
2291
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.
2295
2296 2023-10-23 Richard Biener <rguenther@suse.de>
2297
2298 PR tree-optimization/111915
2299 * tree-vect-slp.cc (vect_build_slp_tree_1): Check all
2300 accesses are either grouped or not.
2301
2302 2023-10-23 Richard Biener <rguenther@suse.de>
2303
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.
2309
2310 2023-10-23 Oleg Endo <olegendo@gcc.gnu.org>
2311
2312 PR target/111001
2313 * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
2314 Skip over nop move insns.
2315
2316 2023-10-23 Tamar Christina <tamar.christina@arm.com>
2317
2318 PR tree-optimization/111860
2319 * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
2320 Drop .MEM nodes only.
2321
2322 2023-10-23 Andrew Pinski <apinski@marvell.com>
2323
2324 * match.pd (`(A - B) CMP 0 ? (A - B) : (B - A)`):
2325 New patterns.
2326
2327 2023-10-23 Andrew Pinski <pinskia@gmail.com>
2328
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.
2334
2335 2023-10-23 Andrew Pinski <pinskia@gmail.com>
2336
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.
2341
2342 2023-10-23 Richard Biener <rguenther@suse.de>
2343
2344 PR tree-optimization/111917
2345 * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert
2346 new conditional after last stmt.
2347
2348 2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2349
2350 PR target/111927
2351 * config/riscv/riscv-vsetvl.cc: Fix bug.
2352
2353 2023-10-23 Pan Li <pan2.li@intel.com>
2354
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.
2358
2359 2023-10-23 Xi Ruoyao <xry111@xry111.site>
2360
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.
2368
2369 2023-10-23 Xi Ruoyao <xry111@xry111.site>
2370
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.
2376
2377 2023-10-23 Xi Ruoyao <xry111@xry111.site>
2378
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.
2386
2387 2023-10-23 Xi Ruoyao <xry111@xry111.site>
2388
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.
2406
2407 2023-10-23 Xi Ruoyao <xry111@xry111.site>
2408
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.
2434
2435 2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2436
2437 * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Fix typo.
2438 (pre_vsetvl::pre_global_vsetvl_info): Ditto.
2439
2440 2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2441
2442 * config/riscv/vector.md: Fix avl_type attribute of tuple mov<mode>.
2443
2444 2023-10-23 Kewen Lin <linkw@linux.ibm.com>
2445
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.
2453
2454 2023-10-23 Haochen Jiang <haochen.jiang@intel.com>
2455
2456 PR target/111753
2457 * config/i386/i386.cc (ix86_standard_x87sse_constant_load_p):
2458 Do not split to xmm16+ when !TARGET_AVX512VL.
2459
2460 2023-10-23 Pan Li <pan2.li@intel.com>
2461
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.
2472
2473 2023-10-23 Lulu Cheng <chenglulu@loongson.cn>
2474
2475 * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition.
2476
2477 2023-10-23 Haochen Gui <guihaoc@gcc.gnu.org>
2478
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.
2510
2511 2023-10-23 liuhongt <hongtao.liu@intel.com>
2512
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.
2526
2527 2023-10-23 liuhongt <hongtao.liu@intel.com>
2528
2529 * config/i386/mmx.md (mmx_pinsrw): Remove.
2530
2531 2023-10-22 Andrew Pinski <pinskia@gmail.com>
2532
2533 PR target/110986
2534 * config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern.
2535 (*cmov_uxtw_insn_insv): Likewise.
2536
2537 2023-10-22 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2538
2539 * doc/invoke.texi: Document the new -nodefaultrpaths option.
2540 * doc/install.texi: Document the new --with-darwin-extra-rpath
2541 option.
2542
2543 2023-10-22 Iain Sandoe <iain@sandoe.co.uk>
2544
2545 * Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp.
2546
2547 2023-10-22 Iain Sandoe <iain@sandoe.co.uk>
2548
2549 * configure.ac: Add --with-darwin-extra-rpath option.
2550 * config/darwin.h: Handle DARWIN_EXTRA_RPATH.
2551 * config.in: Regenerate.
2552 * configure: Regenerate.
2553
2554 2023-10-22 Iain Sandoe <iain@sandoe.co.uk>
2555
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.
2562
2563 2023-10-22 Iain Sandoe <iain@sandoe.co.uk>
2564
2565 * gcc.cc (RUNPATH_OPTION): New.
2566 (do_spec_1): Provide '%P' as a spec to insert rpaths for
2567 each compiler startfile path.
2568
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>
2573
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.
2578
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>
2583
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.
2597
2598 2023-10-22 Tsukasa OI <research_trasio@irq.a4lg.com>
2599
2600 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
2601 Prohibit 'E' and 'H' combinations.
2602
2603 2023-10-22 Tsukasa OI <research_trasio@irq.a4lg.com>
2604
2605 * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
2606 Change version number of the 'Zfa' extension to 1.0.
2607
2608 2023-10-21 Pan Li <pan2.li@intel.com>
2609
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.
2619
2620 2023-10-20 Roger Sayle <roger@nextmovesoftware.com>
2621 Uros Bizjak <ubizjak@gmail.com>
2622
2623 PR middle-end/101955
2624 PR tree-optimization/106245
2625 * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split.
2626
2627 2023-10-20 David Edelsohn <dje.gcc@gmail.com>
2628
2629 * gimple-harden-control-flow.cc: Include memmodel.h.
2630
2631 2023-10-20 David Edelsohn <dje.gcc@gmail.com>
2632
2633 * gimple-harden-control-flow.cc: Include tm_p.h.
2634
2635 2023-10-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
2636
2637 PR tree-optimization/111882
2638 * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
2639 with non-constant offsets.
2640
2641 2023-10-20 Tamar Christina <tamar.christina@arm.com>
2642
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.
2646
2647 2023-10-20 Richard Biener <rguenther@suse.de>
2648
2649 PR tree-optimization/111445
2650 * tree-scalar-evolution.cc (simple_iv_with_niters):
2651 Add missing check for a sign-conversion.
2652
2653 2023-10-20 Richard Biener <rguenther@suse.de>
2654
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.
2660
2661 2023-10-20 Richard Biener <rguenther@suse.de>
2662
2663 PR tree-optimization/111891
2664 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix
2665 assert.
2666
2667 2023-10-20 Andrew Stubbs <ams@codesourcery.com>
2668
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.
2713
2714 2023-10-20 Richard Biener <rguenther@suse.de>
2715
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.
2721
2722 2023-10-20 Alexandre Oliva <oliva@adacore.com>
2723
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.
2755
2756 2023-10-20 Alex Coplan <alex.coplan@arm.com>
2757
2758 * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call
2759 ::remove_insn on deleted insns.
2760
2761 2023-10-20 Richard Biener <rguenther@suse.de>
2762
2763 * doc/generic.texi ({L,R}ROTATE_EXPR): Document.
2764
2765 2023-10-20 Oleg Endo <olegendo@gcc.gnu.org>
2766
2767 PR target/101177
2768 * config/sh/sh.md (unnamed split pattern): Fix comparison of
2769 find_regno_note result.
2770
2771 2023-10-20 Richard Biener <rguenther@suse.de>
2772
2773 * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite
2774 both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER
2775 stmt refs.
2776
2777 2023-10-20 Richard Biener <rguenther@suse.de>
2778
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.
2786
2787 2023-10-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2788
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.
2792
2793 2023-10-20 Tamar Christina <tamar.christina@arm.com>
2794 Andre Vieira <andre.simoesdiasvieira@arm.com>
2795
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.
2801
2802 2023-10-20 Tamar Christina <tamar.christina@arm.com>
2803 Andre Vieira <andre.simoesdiasvieira@arm.com>
2804
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.
2808
2809 2023-10-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2810
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.
2814
2815 2023-10-20 Lehua Ding <lehua.ding@rivai.ai>
2816
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.
3018
3019 2023-10-20 Alexandre Oliva <oliva@adacore.com>
3020
3021 * tree-eh.cc (make_eh_edges): Return the new edge.
3022 * tree-eh.h (make_eh_edges): Likewise.
3023
3024 2023-10-19 Marek Polacek <polacek@redhat.com>
3025
3026 * doc/contrib.texi: Add entry for Patrick Palka.
3027
3028 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3029
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.
3036
3037 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3038
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.
3042
3043 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3044
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.
3048
3049 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3050
3051 * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept
3052 poly NIT and ALT_BOUND.
3053
3054 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3055
3056 * tree-parloops.cc (create_loop_fn): Copy specific target and
3057 optimization options to clone.
3058
3059 2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
3060
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.
3067
3068 2023-10-19 Jason Merrill <jason@redhat.com>
3069
3070 * ABOUT-GCC-NLS: Add usage guidance.
3071
3072 2023-10-19 Jason Merrill <jason@redhat.com>
3073
3074 * diagnostic-core.h (permerror): Rename new overloads...
3075 (permerror_opt): To this.
3076 * diagnostic.cc: Likewise.
3077
3078 2023-10-19 Tamar Christina <tamar.christina@arm.com>
3079
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.
3083
3084 2023-10-19 Richard Biener <rguenther@suse.de>
3085
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.
3095
3096 2023-10-19 Richard Biener <rguenther@suse.de>
3097
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.
3104
3105 2023-10-19 Alex Coplan <alex.coplan@arm.com>
3106
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.
3112
3113 2023-10-19 Alex Coplan <alex.coplan@arm.com>
3114
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.
3121
3122 2023-10-19 Alex Coplan <alex.coplan@arm.com>
3123
3124 * rtl-ssa/accesses.cc (function_info::reparent_use): New.
3125 * rtl-ssa/functions.h (function_info): Declare new member
3126 function reparent_use.
3127
3128 2023-10-19 Alex Coplan <alex.coplan@arm.com>
3129
3130 * rtl-ssa/access-utils.h (drop_memory_access): New.
3131
3132 2023-10-19 Alex Coplan <alex.coplan@arm.com>
3133
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 ().
3137
3138 2023-10-19 Haochen Jiang <haochen.jiang@intel.com>
3139
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.
3146
3147 2023-10-19 Andrew Stubbs <ams@codesourcery.com>
3148
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.
3154
3155 2023-10-19 Jiahao Xu <xujiahao@loongson.cn>
3156
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.
3173
3174 2023-10-19 Jiahao Xu <xujiahao@loongson.cn>
3175
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.
3190
3191 2023-10-19 Jiahao Xu <xujiahao@loongson.cn>
3192
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.
3207
3208 2023-10-18 Andrew Pinski <pinskia@gmail.com>
3209
3210 PR middle-end/111863
3211 * expr.cc (do_store_flag): Don't over write arg0
3212 when stripping off `& POW2`.
3213
3214 2023-10-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3215
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.
3223
3224 2023-10-18 Dimitar Dimitrov <dimitar@dinux.eu>
3225
3226 * config/pru/pru.cc (pru_insn_cost): New function.
3227 (TARGET_INSN_COST): Define for PRU.
3228
3229 2023-10-18 Andrew Carlotti <andrew.carlotti@arm.com>
3230
3231 * config/aarch64/aarch64.cc (aarch64_test_fractional_cost):
3232 Test <= instead of testing < twice.
3233
3234 2023-10-18 Jakub Jelinek <jakub@redhat.com>
3235
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.
3240
3241 2023-10-18 Jason Merrill <jason@redhat.com>
3242
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.
3250
3251 2023-10-18 Tobias Burnus <tobias@codesourcery.com>
3252
3253 * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute
3254 to avoid that auxillary statement list reaches LTO.
3255
3256 2023-10-18 Jakub Jelinek <jakub@redhat.com>
3257
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].
3263
3264 2023-10-18 Tobias Burnus <tobias@codesourcery.com>
3265
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.
3269
3270 2023-10-18 Iain Sandoe <iain@sandoe.co.uk>
3271
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.
3280
3281 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3282
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.
3289
3290 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3291
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.
3297
3298 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3299
3300 PR tree-optimization/109154
3301 * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN.
3302
3303 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3304
3305 PR tree-optimization/109154
3306 * match.pd: Add new cond_op rule.
3307
3308 2023-10-18 Xi Ruoyao <xry111@xry111.site>
3309
3310 * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for
3311 zeroing a fcc.
3312
3313 2023-10-18 Richard Biener <rguenther@suse.de>
3314
3315 * tree-vect-stmts.cc (vectorizable_simd_clone_call):
3316 Relax check to again allow passing integer mode masks
3317 as traditional vectors.
3318
3319 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3320
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.
3333
3334 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3335
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.
3348
3349 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3350
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.
3388
3389 2023-10-18 Tamar Christina <tamar.christina@arm.com>
3390
3391 * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body
3392 to ...
3393 (vectorizable_comparison_1): ...This.
3394
3395 2023-10-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3396
3397 * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function.
3398 (expand_vec_perm_const_1): Add consecutive pattern recognition.
3399
3400 2023-10-18 Haochen Jiang <haochen.jiang@intel.com>
3401
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.
3420
3421 2023-10-18 Haochen Jiang <haochen.jiang@intel.com>
3422
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.
3426
3427 2023-10-18 Haochen Jiang <haochen.jiang@intel.com>
3428
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.
3446
3447 2023-10-18 liuhongt <hongtao.liu@intel.com>
3448
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.
3455
3456 2023-10-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3457
3458 PR target/111832
3459 * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function.
3460
3461 2023-10-17 Richard Sandiford <richard.sandiford@arm.com>
3462
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.
3466
3467 2023-10-17 Richard Sandiford <richard.sandiford@arm.com>
3468
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.
3483
3484 2023-10-17 Richard Sandiford <richard.sandiford@arm.com>
3485
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.
3493
3494 2023-10-17 Andrew Pinski <apinski@marvell.com>
3495
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.
3499
3500 2023-10-17 Andrew Pinski <pinskia@gmail.com>
3501
3502 PR tree-optimization/111432
3503 * match.pd (`a & (x | CST)`): New pattern.
3504
3505 2023-10-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
3506
3507 * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for
3508 new basic block.
3509
3510 2023-10-17 Richard Biener <rguenther@suse.de>
3511
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.
3521
3522 2023-10-17 Jakub Jelinek <jakub@redhat.com>
3523
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.
3537
3538 2023-10-17 Richard Biener <rguenther@suse.de>
3539
3540 PR middle-end/111818
3541 * tree-ssa.cc (maybe_optimize_var): When clearing
3542 DECL_NOT_GIMPLE_REG_P always rewrite into SSA.
3543
3544 2023-10-17 Richard Biener <rguenther@suse.de>
3545
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.
3549
3550 2023-10-17 Vineet Gupta <vineetg@rivosinc.com>
3551
3552 PR target/111466
3553 * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P.
3554
3555 2023-10-17 Chenghui Pan <panchenghui@loongson.cn>
3556
3557 * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init):
3558 fix impl related to vec_initv32qiv16qi template to avoid ICE.
3559
3560 2023-10-17 Lulu Cheng <chenglulu@loongson.cn>
3561 Chenghua Xu <xuchenghua@loongson.cn>
3562
3563 * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP):
3564 Delete.
3565
3566 2023-10-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3567
3568 * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue.
3569 (get_store_value): New function.
3570
3571 2023-10-16 Jeff Law <jlaw@ventanamicro.com>
3572
3573 * explow.cc (probe_stack_range): Handle case when expand_binop
3574 does not construct its result in the expected location.
3575
3576 2023-10-16 David Malcolm <dmalcolm@redhat.com>
3577
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.
3581
3582 2023-10-16 David Malcolm <dmalcolm@redhat.com>
3583
3584 * diagnostic.cc (diagnostic_initialize): Ensure
3585 context->extra_output_kind is initialized.
3586
3587 2023-10-16 Uros Bizjak <ubizjak@gmail.com>
3588
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=.
3595
3596 2023-10-16 Christoph Müllner <christoph.muellner@vrull.eu>
3597
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.
3608
3609 2023-10-16 Manolis Tsamis <manolis.tsamis@vrull.eu>
3610
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.
3617
3618 2023-10-16 Andrew Pinski <pinskia@gmail.com>
3619
3620 PR tree-optimization/101541
3621 * match.pd (A CMP 0 ? A : -A): Improve
3622 using bitwise_equal_p.
3623
3624 2023-10-16 Andrew Pinski <pinskia@gmail.com>
3625
3626 PR tree-optimization/31531
3627 * match.pd (~X op ~Y): Allow for an optional nop convert.
3628 (~X op C): Likewise.
3629
3630 2023-10-16 Roger Sayle <roger@nextmovesoftware.com>
3631
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.
3634
3635 2023-10-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3636
3637 * config/s390/vector.md (popcountv8hi2_vx): Sign extend each
3638 unsigned vector element.
3639
3640 2023-10-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3641
3642 * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes.
3643
3644 2023-10-16 Jiufu Guo <guojiufu@linux.ibm.com>
3645
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.
3652
3653 2023-10-16 liuhongt <hongtao.liu@intel.com>
3654
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.
3669
3670 2023-10-16 liuhongt <hongtao.liu@intel.com>
3671
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.
3696
3697 2023-10-15 Tobias Burnus <tobias@codesourcery.com>
3698
3699 * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not
3700 @code; document more completely the supported Fortran sentinels.
3701
3702 2023-10-15 Roger Sayle <roger@nextmovesoftware.com>
3703
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.
3708
3709 2023-10-15 Jakub Jelinek <jakub@redhat.com>
3710
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.
3725
3726 2023-10-15 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3727
3728 * combine.cc (simplify_compare_const): Fix handling of unsigned
3729 constants.
3730
3731 2023-10-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3732
3733 * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI.
3734
3735 2023-10-14 Tobias Burnus <tobias@codesourcery.com>
3736
3737 * gimplify.cc (gimplify_bind_expr): Handle Fortran's
3738 'omp allocate' for stack variables.
3739
3740 2023-10-14 Jakub Jelinek <jakub@redhat.com>
3741
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 *.
3786
3787 2023-10-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3788
3789 * config/riscv/vector-iterators.md: Remove redundant iterators.
3790
3791 2023-10-13 Andrew MacLeod <amacleod@redhat.com>
3792
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.
3796
3797 2023-10-13 Richard Biener <rguenther@suse.de>
3798
3799 PR tree-optimization/111795
3800 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
3801 integer mode mask arguments.
3802
3803 2023-10-13 Richard Biener <rguenther@suse.de>
3804
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.
3810
3811 2023-10-13 Richard Biener <rguenther@suse.de>
3812
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.
3818
3819 2023-10-13 Richard Biener <rguenther@suse.de>
3820
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.
3824
3825 2023-10-13 Kito Cheng <kito.cheng@sifive.com>
3826
3827 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump
3828 max_power to 64.
3829 * config/riscv/riscv.h (MAX_POLY_VARIANT): New.
3830
3831 2023-10-13 Pan Li <pan2.li@intel.com>
3832
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.
3839
3840 2023-10-13 Pan Li <pan2.li@intel.com>
3841
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.
3848
3849 2023-10-12 Michael Meissner <meissner@linux.ibm.com>
3850
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.
3857
3858 2023-10-12 Alex Coplan <alex.coplan@arm.com>
3859
3860 * reg-notes.def (NOALIAS): Correct comment.
3861
3862 2023-10-12 Jakub Jelinek <jakub@redhat.com>
3863
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.
3877
3878 2023-10-12 Mary Bennett <mary.bennett@embecosm.com>
3879
3880 PR middle-end/111777
3881 * doc/extend.texi: Change subsubsection to subsection for
3882 CORE-V built-ins.
3883
3884 2023-10-12 Tamar Christina <tamar.christina@arm.com>
3885
3886 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef.
3887
3888 2023-10-12 Jakub Jelinek <jakub@redhat.com>
3889
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.
3895
3896 2023-10-12 Jakub Jelinek <jakub@redhat.com>
3897
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.
4118
4119 2023-10-12 Pan Li <pan2.li@intel.com>
4120
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.
4127
4128 2023-10-12 Jakub Jelinek <jakub@redhat.com>
4129
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.
4148
4149 2023-10-12 Richard Biener <rguenther@suse.de>
4150
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.
4154
4155 2023-10-12 Hu, Lin1 <lin1.hu@intel.com>
4156
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.
4188
4189 2023-10-12 Yang Yujie <yangyujie@loongson.cn>
4190
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.
4195
4196 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4197
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.
4207
4208 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4209
4210 * tree-vect-stmts.cc (vectorizable_store): Consider generated
4211 VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as
4212 vec_perm.
4213
4214 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4215
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}.
4219
4220 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4221
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.
4227
4228 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4229
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.
4235
4236 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4237
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.
4243
4244 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4245
4246 * tree-vect-stmts.cc (vectorizable_store): Adjust costing on
4247 vectorizable_scan_store without calling vect_model_store_cost
4248 any more.
4249
4250 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4251
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.
4259
4260 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4261
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.
4266
4267 2023-10-12 Kewen Lin <linkw@linux.ibm.com>
4268
4269 * tree-vect-stmts.cc (vectorizable_store): Ensure the generated
4270 vector store for some case of VMAT_ELEMENTWISE is supported.
4271
4272 2023-10-12 Mo, Zewei <zewei.mo@intel.com>
4273 Hu Lin1 <lin1.hu@intel.com>
4274 Hongyu Wang <hongyu.wang@intel.com>
4275
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.
4291
4292 2023-10-12 Pan Li <pan2.li@intel.com>
4293
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.
4297
4298 2023-10-11 Kito Cheng <kito.cheng@sifive.com>
4299
4300 * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New.
4301
4302 2023-10-11 Jeff Law <jlaw@ventanamicro.com>
4303
4304 * config/riscv/riscv.md (jump): Adjust sequence to use a "jump"
4305 pseudo op instead of a "call" pseudo op.
4306
4307 2023-10-11 Kito Cheng <kito.cheng@sifive.com>
4308
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.
4323
4324 2023-10-11 Kito Cheng <kito.cheng@sifive.com>
4325
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.
4332
4333 2023-10-11 Kito Cheng <kito.cheng@sifive.com>
4334
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.
4341
4342 2023-10-11 Andrew Pinski <pinskia@gmail.com>
4343
4344 PR tree-optimization/111282
4345 * match.pd (`a & ~(a ^ b)`, `a & (a == b)`,
4346 `a & ((~a) ^ b)`): New patterns.
4347
4348 2023-10-11 Mary Bennett <mary.bennett@embecosm.com>
4349
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.
4365
4366 2023-10-11 Mary Bennett <mary.bennett@embecosm.com>
4367
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.
4377
4378 2023-10-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4379
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.
4384
4385 2023-10-11 Pan Li <pan2.li@intel.com>
4386
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.
4395
4396 2023-10-11 Richard Biener <rguenther@suse.de>
4397 Jakub Jelinek <jakub@redhat.com>
4398
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.
4409
4410 2023-10-11 Roger Sayle <roger@nextmovesoftware.com>
4411
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).
4416
4417 2023-10-11 liuhongt <hongtao.liu@intel.com>
4418
4419 PR target/111745
4420 * config/i386/mmx.md (divv4hf3): Refine predicate of
4421 operands[2] with register_operand.
4422
4423 2023-10-10 Andrew Waterman <andrew@sifive.com>
4424 Philipp Tomsich <philipp.tomsich@vrull.eu>
4425 Jeff Law <jlaw@ventanamicro.com>
4426
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.
4449
4450 2023-10-10 Andrew Pinski <pinskia@gmail.com>
4451
4452 PR tree-optimization/111679
4453 * match.pd (`a | ((~a) ^ b)`): New pattern.
4454
4455 2023-10-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4456
4457 PR target/111751
4458 * config/riscv/autovec.md: Add VLS BOOL modes.
4459
4460 2023-10-10 Richard Biener <rguenther@suse.de>
4461
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.
4468
4469 2023-10-10 Richard Biener <rguenther@suse.de>
4470
4471 PR tree-optimization/111751
4472 * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt
4473 BLKmode result from the padding bits check.
4474
4475 2023-10-10 Claudiu Zissulescu <claziss@gmail.com>
4476
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.
4482
4483 2023-10-09 Eugene Rozenfeld <erozen@microsoft.com>
4484
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
4488
4489 2023-10-09 Andrew MacLeod <amacleod@redhat.com>
4490
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.
4496
4497 2023-10-09 Andrew MacLeod <amacleod@redhat.com>
4498
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.
4504
4505 2023-10-09 Robin Dapp <rdapp@ventanamicro.com>
4506
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.
4517
4518 2023-10-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4519
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.
4523
4524 2023-10-09 Xianmiao Qu <cooper.qu@linux.alibaba.com>
4525
4526 * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI
4527 directives for store-pair instruction.
4528
4529 2023-10-09 Richard Biener <rguenther@suse.de>
4530
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.
4535
4536 2023-10-09 Pan Li <pan2.li@intel.com>
4537
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.
4541
4542 2023-10-09 Roger Sayle <roger@nextmovesoftware.com>
4543
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.
4558
4559 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4560
4561 * config/i386/i386.opt: Allow -mno-evex512.
4562
4563 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4564 Hu, Lin1 <lin1.hu@intel.com>
4565
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.
4582
4583 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4584 Hu, Lin1 <lin1.hu@intel.com>
4585
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.
4607
4608 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4609
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.
4690
4691 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4692
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.
4706
4707 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4708
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.
4918
4919 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4920
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.
4942
4943 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4944
4945 * config/i386/i386-builtin.def (BDESC): Add
4946 OPTION_MASK_ISA2_EVEX512.
4947
4948 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4949
4950 * config/i386/i386-builtin.def (BDESC): Add
4951 OPTION_MASK_ISA2_EVEX512.
4952
4953 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4954
4955 * config/i386/i386-builtin.def (BDESC): Add
4956 OPTION_MASK_ISA2_EVEX512.
4957
4958 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4959
4960 * config/i386/i386-builtin.def (BDESC): Add
4961 OPTION_MASK_ISA2_EVEX512.
4962
4963 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4964
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.
4969
4970 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4971 Hu, Lin1 <lin1.hu@intel.com>
4972
4973 * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit
4974 intrins.
4975
4976 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
4977
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.
4999
5000 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
5001
5002 * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit
5003 intrins.
5004
5005 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
5006
5007 * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit
5008 intrins.
5009
5010 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
5011
5012 * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins.
5013
5014 2023-10-09 Haochen Jiang <haochen.jiang@intel.com>
5015
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.
5029
5030 2023-10-09 Haochen Gui <guihaoc@gcc.gnu.org>
5031
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.
5036
5037 2023-10-09 Haochen Gui <guihaoc@gcc.gnu.org>
5038
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".
5045
5046 2023-10-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5047
5048 * config/s390/s390.md: Make use of new copysign RTL.
5049
5050 2023-10-09 Hongyu Wang <hongyu.wang@intel.com>
5051
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.
5056
5057 2023-10-08 David Malcolm <dmalcolm@redhat.com>
5058
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.
5069
5070 2023-10-08 David Malcolm <dmalcolm@redhat.com>
5071
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.
5086
5087 2023-10-08 David Malcolm <dmalcolm@redhat.com>
5088
5089 * input.cc (make_location): Move implementation to
5090 line_maps::make_location.
5091
5092 2023-10-08 David Malcolm <dmalcolm@redhat.com>
5093
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.
5100
5101 2023-10-08 liuhongt <hongtao.liu@intel.com>
5102
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.
5115
5116 2023-10-08 liuhongt <hongtao.liu@intel.com>
5117
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.
5125
5126 2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com>
5127
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.
5130
5131 2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com>
5132
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.
5138
5139 2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com>
5140
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.
5146
5147 2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com>
5148
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.
5151
5152 2023-10-08 Yanzhang Wang <yanzhang.wang@intel.com>
5153
5154 * config/riscv/linux.h: Pass the static-pie specific options to
5155 the linker.
5156
5157 2023-10-07 Saurabh Jha <saurabh.jha@arm.com>
5158
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.
5163
5164 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5165 Hongyu Wang <hongyu.wang@intel.com>
5166 Hongtao Liu <hongtao.liu@intel.com>
5167
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.
5236
5237 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5238 Hongyu Wang <hongyu.wang@intel.com>
5239 Hongtao Liu <hongtao.liu@intel.com>
5240
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.
5316
5317 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5318 Hongyu Wang <hongyu.wang@intel.com>
5319 Hongtao Liu <hongtao.liu@intel.com>
5320
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.
5342
5343 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5344 Hongyu Wang <hongyu.wang@intel.com>
5345 Hongtao Liu <hongtao.liu@intel.com>
5346
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.
5372
5373 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5374 Hongyu Wang <hongyu.wang@intel.com>
5375 Hongtao Liu <hongtao.liu@intel.com>
5376
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.
5384
5385 2023-10-07 Hongyu Wang <hongyu.wang@intel.com>
5386 Kong Lingling <lingling.kong@intel.com>
5387 Hongtao Liu <hongtao.liu@intel.com>
5388
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.
5395
5396 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5397 Hongyu Wang <hongyu.wang@intel.com>
5398 Hongtao Liu <hongtao.liu@intel.com>
5399
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.
5404
5405 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5406 Hongyu Wang <hongyu.wang@intel.com>
5407 Hongtao Liu <hongtao.liu@intel.com>
5408
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.
5424
5425 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5426 Hongyu Wang <hongyu.wang@intel.com>
5427 Hongtao Liu <hongtao.liu@intel.com>
5428
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.
5442
5443 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5444 Hongyu Wang <hongyu.wang@intel.com>
5445 Hongtao Liu <hongtao.liu@intel.com>
5446
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.
5481
5482 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5483 Hongyu Wang <hongyu.wang@intel.com>
5484 Hongtao Liu <hongtao.liu@intel.com>
5485
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.
5515
5516 2023-10-07 Hongyu Wang <hongyu.wang@intel.com>
5517 Kong Lingling <lingling.kong@intel.com>
5518 Hongtao Liu <hongtao.liu@intel.com>
5519
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.
5529
5530 2023-10-07 Kong Lingling <lingling.kong@intel.com>
5531 Hongyu Wang <hongyu.wang@intel.com>
5532 Hongtao Liu <hongtao.liu@intel.com>
5533
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.
5550
5551 2023-10-07 Jiufu Guo <guojiufu@linux.ibm.com>
5552
5553 PR target/108338
5554 * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
5555 for P9.
5556
5557 2023-10-07 Jiufu Guo <guojiufu@linux.ibm.com>
5558
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.
5565
5566 2023-10-07 Pan Li <pan2.li@intel.com>
5567
5568 PR target/111634
5569 * config/riscv/riscv.cc (riscv_legitimize_address): Ensure
5570 object is a REG before extracting its' REGNO.
5571
5572 2023-10-06 Roger Sayle <roger@nextmovesoftware.com>
5573
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.
5578
5579 2023-10-06 Roger Sayle <roger@nextmovesoftware.com>
5580 Uros Bizjak <ubizjak@gmail.com>
5581
5582 * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used
5583 to perform left shifts into shorter instructions with -Oz.
5584
5585 2023-10-06 Vineet Gupta <vineetg@rivosinc.com>
5586
5587 * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress.
5588
5589 2023-10-06 Sandra Loosemore <sandra@codesourcery.com>
5590
5591 * doc/extend.texi (Function Attributes): Mention standard attribute
5592 syntax.
5593 (Variable Attributes): Likewise.
5594 (Type Attributes): Likewise.
5595 (Attribute Syntax): Likewise.
5596
5597 2023-10-06 Andrew Stubbs <ams@codesourcery.com>
5598
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.
5604
5605 2023-10-06 Andrew Stubbs <ams@codesourcery.com>
5606
5607 * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning.
5608
5609 2023-10-06 Andrew Pinski <pinskia@gmail.com>
5610
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.
5614
5615 2023-10-06 Jakub Jelinek <jakub@redhat.com>
5616
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.
5655
5656 2023-10-06 Pan Li <pan2.li@intel.com>
5657
5658 * config/riscv/autovec.md: Update comments.
5659
5660 2023-10-05 John David Anglin <danglin@gcc.gnu.org>
5661
5662 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete.
5663
5664 2023-10-05 Andrew MacLeod <amacleod@redhat.com>
5665
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.
5682
5683 2023-10-05 Andrew MacLeod <amacleod@redhat.com>
5684
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.
5696
5697 2023-10-05 Andrew MacLeod <amacleod@redhat.com>
5698
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.
5706
5707 2023-10-05 Sergei Trofimovich <siarheit@google.com>
5708
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.
5714
5715 2023-10-05 Uros Bizjak <ubizjak@gmail.com>
5716
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.
5722
5723 2023-10-05 Jakub Jelinek <jakub@redhat.com>
5724
5725 * sreal.cc (verify_aritmetics): Rename to ...
5726 (verify_arithmetics): ... this.
5727 (sreal_verify_arithmetics): Adjust caller.
5728
5729 2023-10-05 Martin Jambor <mjambor@suse.cz>
5730
5731 Revert:
5732 2023-10-03 Martin Jambor <mjambor@suse.cz>
5733
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.
5750
5751 2023-10-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5752
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.
5757
5758 2023-10-05 Claudiu Zissulescu <claziss@gmail.com>
5759
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.
5792
5793 2023-10-05 Claudiu Zissulescu <claziss@gmail.com>
5794
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 '%&'.
5798
5799 2023-10-05 Claudiu Zissulescu <claziss@gmail.com>
5800
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.
5816
5817 2023-10-05 Richard Biener <rguenther@suse.de>
5818
5819 * tree-vect-slp.cc (vect_build_slp_tree_1): Do not
5820 ask for internal_fn_p (CFN_LAST).
5821
5822 2023-10-05 Richard Biener <rguenther@suse.de>
5823
5824 * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not
5825 visited value numbers are available itself.
5826
5827 2023-10-05 Richard Biener <rguenther@suse.de>
5828
5829 PR ipa/111643
5830 * doc/extend.texi (attribute flatten): Clarify.
5831
5832 2023-10-04 Roger Sayle <roger@nextmovesoftware.com>
5833
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.
5854
5855 2023-10-04 Roger Sayle <roger@nextmovesoftware.com>
5856
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].
5864
5865 2023-10-04 Roger Sayle <roger@nextmovesoftware.com>
5866
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.
5872
5873 2023-10-04 Kito Cheng <kito.cheng@sifive.com>
5874
5875 PR bootstrap/111664
5876 * opt-read.awk: Drop multidimensional arrays.
5877 * opth-gen.awk: Ditto.
5878
5879 2023-10-04 Xi Ruoyao <xry111@xry111.site>
5880
5881 * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
5882 (copysign<mode>3): Use copysign RTL instead of UNSPEC.
5883
5884 2023-10-04 Jakub Jelinek <jakub@redhat.com>
5885
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.
5893
5894 2023-10-04 Jakub Jelinek <jakub@redhat.com>
5895
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.
5901
5902 2023-10-03 Andrew MacLeod <amacleod@redhat.com>
5903
5904 * tree-ssanames.cc (set_range_info): Use get_ptr_info for
5905 pointers rather than range_info_get_range.
5906
5907 2023-10-03 Martin Jambor <mjambor@suse.cz>
5908
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.
5912
5913 2023-10-03 Martin Jambor <mjambor@suse.cz>
5914
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.
5941
5942 2023-10-03 Martin Jambor <mjambor@suse.cz>
5943
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.
5960
5961 2023-10-03 Andrew MacLeod <amacleod@redhat.com>
5962
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.
5972
5973 2023-10-03 Andrew MacLeod <amacleod@redhat.com>
5974
5975 * tree-ssanames.cc (set_range_info): Return true only if the
5976 current value changes.
5977
5978 2023-10-03 David Malcolm <dmalcolm@redhat.com>
5979
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.
6004
6005 2023-10-03 Roger Sayle <roger@nextmovesoftware.com>
6006
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.
6010
6011 2023-10-03 Andrea Corallo <andrea.corallo@arm.com>
6012
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.
6195
6196 2023-10-03 Andrea Corallo <andrea.corallo@arm.com>
6197
6198 * gensupport.cc (convert_syntax): Skip spaces before "cons:"
6199 in new compact pattern syntax.
6200
6201 2023-10-03 Richard Sandiford <richard.sandiford@arm.com>
6202
6203 * gensupport.cc (convert_syntax): Updated to support unordered
6204 constraints in compact syntax.
6205
6206 2023-10-02 Michael Meissner <meissner@linux.ibm.com>
6207
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.
6216
6217 2023-10-02 David Malcolm <dmalcolm@redhat.com>
6218
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.
6331
6332 2023-10-02 David Malcolm <dmalcolm@redhat.com>
6333
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.
6361
6362 2023-10-02 David Malcolm <dmalcolm@redhat.com>
6363
6364 * diagnostic.cc (diagnostic_initialize): Initialize
6365 set_locations_cb to nullptr.
6366
6367 2023-10-02 Wilco Dijkstra <wilco.dijkstra@arm.com>
6368
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.
6388
6389 2023-10-02 Tamar Christina <tamar.christina@arm.com>
6390
6391 Revert:
6392 2023-10-02 Tamar Christina <tamar.christina@arm.com>
6393
6394 PR tree-optimization/109154
6395 * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
6396 (cmp_arg_entry): New.
6397 (predicate_scalar_phi): Use it.
6398
6399 2023-10-02 Tamar Christina <tamar.christina@arm.com>
6400
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.
6406
6407 2023-10-02 Tamar Christina <tamar.christina@arm.com>
6408
6409 * emit-rtl.cc (validate_subreg): Relax subreg rule.
6410
6411 2023-10-02 Tamar Christina <tamar.christina@arm.com>
6412
6413 PR tree-optimization/109154
6414 * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
6415 (cmp_arg_entry): New.
6416 (predicate_scalar_phi): Use it.
6417
6418 2023-10-02 Richard Sandiford <richard.sandiford@arm.com>
6419
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.
6424
6425 2023-10-02 Joern Rennecke <joern.rennecke@embecosm.com>
6426 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6427
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.
6435
6436 2023-10-01 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
6437
6438 * combine.cc (simplify_compare_const): Properly handle unsigned
6439 constants while narrowing comparison of memory and constants.
6440
6441 2023-10-01 Feng Wang <wangfeng@eswincomputing.com>
6442
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.
6626
6627 2023-10-01 Joern Rennecke <joern.rennecke@embecosm.com>
6628 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6629 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6630
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.
6638
6639 2023-09-30 Jakub Jelinek <jakub@redhat.com>
6640
6641 PR target/111649
6642 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager):
6643 Replace safe_grow with safe_grow_cleared.
6644
6645 2023-09-30 Jakub Jelinek <jakub@redhat.com>
6646
6647 * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto
6648 in function comment.
6649
6650 2023-09-30 Jakub Jelinek <jakub@redhat.com>
6651
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.
6658
6659 2023-09-30 Jakub Jelinek <jakub@redhat.com>
6660
6661 * vec.h (quick_grow): Uncomment static_assert.
6662
6663 2023-09-30 Jivan Hakobyan <jivanhakobyan9@gmail.com>
6664
6665 * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute
6666
6667 2023-09-29 Xiao Zeng <zengxiao@eswincomputing.com>
6668
6669 * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing
6670 SETs when the outer code is INSN.
6671
6672 2023-09-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
6673
6674 * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split
6675 pattern.
6676
6677 2023-09-29 Richard Sandiford <richard.sandiford@arm.com>
6678
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.
6753
6754 2023-09-29 John David Anglin <danglin@gcc.gnu.org>
6755
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.
6759
6760 2023-09-29 Jakub Jelinek <jakub@redhat.com>
6761
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.
6769
6770 2023-09-29 Manos Anagnostakis <manos.anagnostakis@vrull.eu>
6771
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.
6787
6788 2023-09-29 Richard Biener <rguenther@suse.de>
6789
6790 PR tree-optimization/111583
6791 * tree-loop-distribution.cc (find_single_drs): Ensure the
6792 load/store are always executed.
6793
6794 2023-09-29 Jakub Jelinek <jakub@redhat.com>
6795
6796 * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use
6797 quick_grow_cleared method on unprom rather than quick_grow.
6798
6799 2023-09-29 Sergei Trofimovich <siarheit@google.com>
6800
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.
6804
6805 2023-09-29 Richard Sandiford <richard.sandiford@arm.com>
6806
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.
6816
6817 2023-09-29 Jakub Jelinek <jakub@redhat.com>
6818
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.
6827
6828 2023-09-28 Vladimir N. Makarov <vmakarov@redhat.com>
6829
6830 Revert:
6831 2023-09-14 Vladimir N. Makarov <vmakarov@redhat.com>
6832
6833 * ira-costs.cc (find_costs_and_classes): Decrease memory cost
6834 by equiv savings.
6835
6836 2023-09-28 Wilco Dijkstra <wilco.dijkstra@arm.com>
6837
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.
6845
6846 2023-09-28 Pan Li <pan2.li@intel.com>
6847
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.
6852
6853 2023-09-28 Vladimir N. Makarov <vmakarov@redhat.com>
6854
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.
6862
6863 2023-09-28 Richard Biener <rguenther@suse.de>
6864
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.
6869
6870 2023-09-28 Jakub Jelinek <jakub@redhat.com>
6871 Jonathan Wakely <jwakely@redhat.com>
6872
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.
6904
6905 2023-09-28 Richard Sandiford <richard.sandiford@arm.com>
6906
6907 * dwarf2out.cc (mem_loc_descriptor): Remove unused variables.
6908 * tree-affine.cc (expr_to_aff_combination): Likewise.
6909
6910 2023-09-28 Richard Biener <rguenther@suse.de>
6911
6912 PR tree-optimization/111614
6913 * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly
6914 convert the first vector when required.
6915
6916 2023-09-28 xuli <xuli1@eswincomputing.com>
6917
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.
6921
6922 2023-09-27 Sandra Loosemore <sandra@codesourcery.com>
6923
6924 * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK.
6925
6926 2023-09-27 Iain Sandoe <iain@sandoe.co.uk>
6927
6928 PR target/111610
6929 * configure: Regenerate.
6930 * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN".
6931
6932 2023-09-27 Manos Anagnostakis <manos.anagnostakis@vrull.eu>
6933 Philipp Tomsich <philipp.tomsich@vrull.eu>
6934 Manolis Tsamis <manolis.tsamis@vrull.eu>
6935
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.
6959
6960 2023-09-27 Andre Vieira <andre.simoesdiasvieira@arm.com>
6961
6962 * tree-data-ref.cc (include calls.h): Add new include.
6963 (get_references_in_stmt): Correctly handle IFN_MASK_CALL.
6964
6965 2023-09-27 Richard Biener <rguenther@suse.de>
6966
6967 * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern.
6968
6969 2023-09-27 Jakub Jelinek <jakub@redhat.com>
6970
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.
6976
6977 2023-09-27 Pan Li <pan2.li@intel.com>
6978
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.
6984
6985 2023-09-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6986
6987 PR target/111590
6988 * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.
6989
6990 2023-09-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6991
6992 * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments.
6993
6994 2023-09-27 Pan Li <pan2.li@intel.com>
6995
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.
7000
7001 2023-09-26 Hans-Peter Nilsson <hp@axis.com>
7002
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.
7012
7013 2023-09-26 Andrew MacLeod <amacleod@redhat.com>
7014
7015 PR tree-optimization/111599
7016 * value-relation.cc (relation_oracle::valid_equivs): Ensure
7017 ssa_name is valid.
7018
7019 2023-09-26 Andrew Pinski <apinski@marvell.com>
7020
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.
7026
7027 2023-09-26 Andrew Pinski <apinski@marvell.com>
7028
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.
7033
7034 2023-09-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7035
7036 * match.pd: Optimize COND_ADD reduction pattern.
7037
7038 2023-09-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7039
7040 PR tree-optimization/111594
7041 PR tree-optimization/110660
7042 * match.pd: Optimize COND_LEN_ADD reduction.
7043
7044 2023-09-26 Pan Li <pan2.li@intel.com>
7045
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.
7051
7052 2023-09-26 Iain Sandoe <iain@sandoe.co.uk>
7053
7054 * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib.
7055
7056 2023-09-26 Tobias Burnus <tobias@codesourcery.com>
7057
7058 PR middle-end/111547
7059 * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax.
7060 (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic.
7061
7062 2023-09-26 Pan Li <pan2.li@intel.com>
7063
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.
7067
7068 2023-09-26 Pan Li <pan2.li@intel.com>
7069
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.
7074
7075 2023-09-26 Pan Li <pan2.li@intel.com>
7076
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.
7082
7083 2023-09-25 Vladimir N. Makarov <vmakarov@redhat.com>
7084
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.
7089
7090 2023-09-25 Eric Botcazou <ebotcazou@adacore.com>
7091
7092 * gimple-range-gori.cc (gori_compute::logical_combine): Add missing
7093 return statement in the varying case.
7094
7095 2023-09-25 Xi Ruoyao <xry111@xry111.site>
7096
7097 * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160.
7098
7099 2023-09-25 Andrew Pinski <apinski@marvell.com>
7100
7101 PR tree-optimization/110386
7102 * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR.
7103
7104 2023-09-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7105
7106 PR target/111548
7107 * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix
7108
7109 2023-09-25 Kewen Lin <linkw@linux.ibm.com>
7110
7111 PR target/111366
7112 * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip
7113 empty inline asm.
7114
7115 2023-09-25 Kewen Lin <linkw@linux.ibm.com>
7116
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.
7121
7122 2023-09-25 Guo Jie <guojie@loongson.cn>
7123
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.
7138
7139 2023-09-24 Pan Li <pan2.li@intel.com>
7140
7141 PR target/111546
7142 * config/riscv/riscv-v.cc
7143 (expand_vector_init_merge_repeating_sequence): Bugfix
7144
7145 2023-09-24 Andrew Pinski <apinski@marvell.com>
7146
7147 PR tree-optimization/111543
7148 * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns.
7149
7150 2023-09-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7151
7152 * config/riscv/autovec-opt.md: Extend VLS modes
7153 * config/riscv/vector-iterators.md: Ditto.
7154
7155 2023-09-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7156
7157 * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT.
7158
7159 2023-09-23 Pan Li <pan2.li@intel.com>
7160
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.
7167
7168 2023-09-22 Pan Li <pan2.li@intel.com>
7169
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.
7178
7179 2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7180
7181 * config/riscv/vector-iterators.md: Extend VLS modes.
7182
7183 2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7184
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.
7188
7189 2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7190
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.
7198
7199 2023-09-22 xuli <xuli1@eswincomputing.com>
7200
7201 PR target/111451
7202 * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv
7203 into vrgatherei16.vv.
7204
7205 2023-09-22 Lehua Ding <lehua.ding@rivai.ai>
7206
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.
7210
7211 2023-09-22 Lehua Ding <lehua.ding@rivai.ai>
7212
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.
7215
7216 2023-09-22 Pan Li <pan2.li@intel.com>
7217
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.
7227
7228 2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7229
7230 * config/riscv/autovec.md: Extend VLS modes.
7231
7232 2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7233
7234 * config/riscv/vector-iterators.md: Extend VLS modes.
7235
7236 2023-09-21 Lehua Ding <lehua.ding@rivai.ai>
7237 Robin Dapp <rdapp.gcc@gmail.com>
7238
7239 * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments.
7240 (emit_nonvlmax_insn): Adjust comments.
7241 (emit_vlmax_insn_lra): Adjust comments.
7242
7243 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7244
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.
7249
7250 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7251
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.
7256
7257 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7258
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.
7263
7264 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7265
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.
7270
7271 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7272
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.
7277
7278 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7279
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.
7284
7285 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7286
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.
7291
7292 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7293
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.
7298
7299 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7300
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.
7305
7306 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7307
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.
7312
7313 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7314
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.
7318
7319 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7320
7321 * doc/tm.texi: Regenerate.
7322 * doc/tm.texi.in: Document TARGET_RUST_OS_INFO.
7323
7324 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7325
7326 * doc/tm.texi: Regenerate.
7327 * doc/tm.texi.in: Add @node for Rust language and ABI, and document
7328 TARGET_RUST_CPU_INFO.
7329
7330 2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org>
7331
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.
7349
7350 2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7351
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.
7361
7362 2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7363
7364 PR target/111486
7365 * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug.
7366
7367 2023-09-21 Jiufu Guo <guojiufu@linux.ibm.com>
7368
7369 PR tree-optimization/111355
7370 * match.pd ((X + C) / N): Update pattern.
7371
7372 2023-09-21 Jiufu Guo <guojiufu@linux.ibm.com>
7373
7374 * match.pd ((t * 2) / 2): Update to use overflow_free_p.
7375
7376 2023-09-21 xuli <xuli1@eswincomputing.com>
7377
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.
7389
7390 2023-09-21 Lehua Ding <lehua.ding@rivai.ai>
7391
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.
7397
7398 2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7399
7400 * config/riscv/autovec.md: Extend VLS modes.
7401 * config/riscv/vector-iterators.md: Ditto.
7402 * config/riscv/vector.md: Ditto.
7403
7404 2023-09-20 Andrew MacLeod <amacleod@redhat.com>
7405
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.
7411
7412 2023-09-20 Aldy Hernandez <aldyh@redhat.com>
7413
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.
7419
7420 2023-09-20 Jakub Jelinek <jakub@redhat.com>
7421
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.
7426
7427 2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7428
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.
7435
7436 2023-09-20 Tobias Burnus <tobias@codesourcery.com>
7437
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
7444
7445 2023-09-20 Yanzhang Wang <yanzhang.wang@intel.com>
7446
7447 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
7448 support simplifying vector int not only scalar int.
7449
7450 2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7451
7452 * config/riscv/vector-iterators.md: Extend VLS floating-point.
7453
7454 2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7455
7456 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug.
7457
7458 2023-09-20 Iain Sandoe <iain@sandoe.co.uk>
7459
7460 * config/darwin.h:
7461 (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same
7462 specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'.
7463
7464 2023-09-20 Richard Biener <rguenther@suse.de>
7465
7466 PR tree-optimization/111489
7467 * params.opt (-param uninit-max-chain-len=): Raise default to 8.
7468
7469 2023-09-20 Richard Biener <rguenther@suse.de>
7470
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.
7483
7484 2023-09-20 Jakub Jelinek <jakub@redhat.com>
7485
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.
7493
7494 2023-09-20 Lehua Ding <lehua.ding@rivai.ai>
7495
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.
7524
7525 2023-09-20 Jakub Jelinek <jakub@redhat.com>
7526
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.
7530
7531 2023-09-20 Lehua Ding <lehua.ding@rivai.ai>
7532
7533 PR target/111488
7534 * config/riscv/autovec-opt.md: Add missed operand.
7535
7536 2023-09-20 Omar Sandoval <osandov@osandov.com>
7537
7538 PR debug/111409
7539 * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
7540 dwarf_split_debug_info.
7541
7542 2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7543
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.
7547
7548 2023-09-20 Surya Kumari Jangala <jskumari@linux.ibm.com>
7549
7550 PR rtl-optimization/110071
7551 * ira-color.cc (improve_allocation): Consider cost of callee
7552 save registers.
7553
7554 2023-09-20 mengqinggang <mengqinggang@loongson.cn>
7555 Xi Ruoyao <xry111@xry111.site>
7556
7557 * configure: Regenerate.
7558 * configure.ac: Checking assembler for -mno-relax support.
7559 Disable relaxation when probing leb128 support.
7560
7561 2023-09-20 Lulu Cheng <chenglulu@loongson.cn>
7562
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.
7575
7576 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
7577
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`.
7584
7585 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
7586 Jason Merrill <jason@redhat.com>
7587
7588 * gcc.cc (join_spec_func): Add a spec function to join all
7589 arguments.
7590
7591 2023-09-19 Patrick O'Neill <patrick@rivosinc.com>
7592
7593 * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate
7594 src_op_0 var to avoid rtl check error.
7595
7596 2023-09-19 Aldy Hernandez <aldyh@redhat.com>
7597
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.
7604
7605 2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com>
7606
7607 * doc/extend.texi: Document attributes hot, cold on C++ types.
7608
7609 2023-09-19 Pat Haugen <pthaugen@linux.ibm.com>
7610
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.
7619
7620 2023-09-19 Gaius Mulley <gaiusmod2@gmail.com>
7621
7622 * doc/gm2.texi (fdebug-builtins): Correct description.
7623
7624 2023-09-19 Jeff Law <jlaw@ventanamicro.com>
7625
7626 * config/iq2000/predicates.md (uns_arith_constant): New predicate.
7627 * config/iq2000/iq2000.md (rotrsi3): Use it.
7628
7629 2023-09-19 Aldy Hernandez <aldyh@redhat.com>
7630
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.
7647
7648 2023-09-19 Aldy Hernandez <aldyh@redhat.com>
7649
7650 * value-range.h (frange::update_nan): New.
7651
7652 2023-09-19 Aldy Hernandez <aldyh@redhat.com>
7653
7654 * range-op-float.cc (operator_not_equal::op2_range): New.
7655 * range-op-mixed.h: Add operator_not_equal::op2_range.
7656
7657 2023-09-19 Andrew MacLeod <amacleod@redhat.com>
7658
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.
7672
7673 2023-09-19 Richard Biener <rguenther@suse.de>
7674
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.
7683
7684 2023-09-19 Thomas Schwinge <thomas@codesourcery.com>
7685 Pan Li <pan2.li@intel.com>
7686
7687 * tree-streamer.h (bp_unpack_machine_mode): If
7688 'ib->file_data->mode_table' not available, apply 1-to-1 mapping.
7689
7690 2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7691
7692 * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes.
7693
7694 2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7695
7696 * config/riscv/autovec.md: Extend VLS modes.
7697 * config/riscv/vector.md: Ditto.
7698
7699 2023-09-19 Richard Biener <rguenther@suse.de>
7700
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.
7704
7705 2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7706
7707 * config/riscv/autovec.md: Extend VLS floating-point modes.
7708 * config/riscv/vector.md: Ditto.
7709
7710 2023-09-19 Jakub Jelinek <jakub@redhat.com>
7711
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.
7718
7719 2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7720
7721 * config/riscv/autovec.md: Add VLS modes.
7722 * config/riscv/vector.md: Ditto.
7723
7724 2023-09-19 Jakub Jelinek <jakub@redhat.com>
7725
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).
7730
7731 2023-09-19 Lehua Ding <lehua.ding@rivai.ai>
7732
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.
7788
7789 2023-09-19 Tsukasa OI <research_trasio@irq.a4lg.com>
7790
7791 * config/riscv/riscv-vector-builtins.cc
7792 (builtin_decl, expand_builtin): Replace SVE with RVV.
7793
7794 2023-09-19 Tsukasa OI <research_trasio@irq.a4lg.com>
7795
7796 * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc,
7797 riscv-cmo.def and riscv-scalar-crypto.def.
7798
7799 2023-09-18 Pan Li <pan2.li@intel.com>
7800
7801 * config/riscv/autovec.md: Extend to vls mode.
7802
7803 2023-09-18 Pan Li <pan2.li@intel.com>
7804
7805 * config/riscv/autovec.md: Bugfix.
7806 * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum.
7807
7808 2023-09-18 Andrew Pinski <apinski@marvell.com>
7809
7810 PR tree-optimization/111442
7811 * match.pd (zero_one_valued_p): Have the bit_and match not be
7812 recursive.
7813
7814 2023-09-18 Andrew Pinski <apinski@marvell.com>
7815
7816 PR tree-optimization/111435
7817 * match.pd (zero_one_valued_p): Don't do recursion
7818 on converts.
7819
7820 2023-09-18 Iain Sandoe <iain@sandoe.co.uk>
7821
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.
7826
7827 2023-09-18 Iain Sandoe <iain@sandoe.co.uk>
7828
7829 * configure: Regenerate.
7830 * configure.ac: Handle explict disable of stdlib option, set
7831 defaults for Darwin.
7832
7833 2023-09-18 Andrew Pinski <apinski@marvell.com>
7834
7835 PR tree-optimization/111431
7836 * match.pd (`(a == CST) & a`): New pattern.
7837
7838 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7839
7840 * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests.
7841 * config/riscv/vector.md (@vec_duplicate<mode>): Remove.
7842
7843 2023-09-18 Wilco Dijkstra <wilco.dijkstra@arm.com>
7844
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.
7851
7852 2023-09-18 Wilco Dijkstra <wilco.dijkstra@arm.com>
7853
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.
7858
7859 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7860
7861 * config/riscv/autovec.md: Add VLS modes.
7862 * config/riscv/vector-iterators.md: Ditto.
7863 * config/riscv/vector.md: Ditto.
7864
7865 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7866
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.
7869
7870 2023-09-18 Richard Biener <rguenther@suse.de>
7871
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.
7879
7880 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7881
7882 * config/riscv/autovec.md: Extend VLS modes.
7883 * config/riscv/vector.md: Ditto.
7884
7885 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7886
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.
7896
7897 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7898
7899 PR target/111153
7900 * config/riscv/autovec.md: Add VLS modes.
7901
7902 2023-09-18 Jason Merrill <jason@redhat.com>
7903
7904 * doc/gty.texi: Add discussion of cache vs. deletable.
7905
7906 2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7907
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.
7913
7914 2023-09-18 Jiufu Guo <guojiufu@linux.ibm.com>
7915
7916 PR middle-end/111303
7917 * match.pd ((t * 2) / 2): Update pattern.
7918
7919 2023-09-17 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
7920
7921 * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn.
7922
7923 2023-09-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7924
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.
7931
7932 2023-09-16 Tsukasa OI <research_trasio@irq.a4lg.com>
7933
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.
7956
7957 2023-09-16 Tsukasa OI <research_trasio@irq.a4lg.com>
7958
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.
7970
7971 2023-09-16 Pan Li <pan2.li@intel.com>
7972
7973 * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern.
7974
7975 2023-09-15 Fei Gao <gaofei@eswincomputing.com>
7976
7977 * config/riscv/predicates.md: Restrict predicate
7978 to allow 'reg' only.
7979
7980 2023-09-15 Andrew Pinski <apinski@marvell.com>
7981
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.
7984
7985 2023-09-15 Andrew Pinski <apinski@marvell.com>
7986
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).
7990
7991 2023-09-15 Andrew MacLeod <amacleod@redhat.com>
7992
7993 * gimple-range-fold.cc (fold_using_range::range_of_phi): Always
7994 run phi analysis, and do it before loop analysis.
7995
7996 2023-09-15 Andrew MacLeod <amacleod@redhat.com>
7997
7998 * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix
7999 indentation.
8000
8001 2023-09-15 Qing Zhao <qing.zhao@oracle.com>
8002
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.
8006
8007 2023-09-15 Lehua Ding <lehua.ding@rivai.ai>
8008
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.
8015
8016 2023-09-15 Lehua Ding <lehua.ding@rivai.ai>
8017
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.
8024
8025 2023-09-15 Richard Sandiford <richard.sandiford@arm.com>
8026
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.
8030
8031 2023-09-15 Yang Yujie <yangyujie@loongson.cn>
8032
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.
8043
8044 2023-09-15 Lehua Ding <lehua.ding@rivai.ai>
8045
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.
8059
8060 2023-09-14 David Malcolm <dmalcolm@redhat.com>
8061
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.
8128
8129 2023-09-14 David Malcolm <dmalcolm@redhat.com>
8130
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.
8139
8140 2023-09-14 Max Filippov <jcmvbkbc@gmail.com>
8141
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.
8149
8150 2023-09-14 Vladimir N. Makarov <vmakarov@redhat.com>
8151
8152 * ira-costs.cc (find_costs_and_classes): Decrease memory cost
8153 by equiv savings.
8154
8155 2023-09-14 Lehua Ding <lehua.ding@rivai.ai>
8156
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.
8169
8170 2023-09-14 Lehua Ding <lehua.ding@rivai.ai>
8171
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.
8195
8196 2023-09-14 Richard Sandiford <richard.sandiford@arm.com>
8197
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.
8202
8203 2023-09-14 Andrew Pinski <apinski@marvell.com>
8204
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.
8208
8209 2023-09-14 Andrew Pinski <apinski@marvell.com>
8210
8211 * genmatch.cc (parser::parse_result): For an else clause
8212 of an if statement inside a switch, error out explictly.
8213
8214 2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8215
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.
8220
8221 2023-09-14 Richard Biener <rguenther@suse.de>
8222
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.
8227
8228 2023-09-14 Richard Sandiford <richard.sandiford@arm.com>
8229
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.
8235
8236 2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8237
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.
8242
8243 2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8244
8245 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it.
8246
8247 2023-09-14 Lulu Cheng <chenglulu@loongson.cn>
8248
8249 * config/loongarch/loongarch-def.c: Modify the default value of
8250 branch_cost.
8251
8252 2023-09-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8253
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.
8259
8260 2023-09-14 Lulu Cheng <chenglulu@loongson.cn>
8261
8262 PR target/111334
8263 * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'.
8264
8265 2023-09-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8266
8267 * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes.
8268 (@vec_extract<mode><vel>): Ditto.
8269 * config/riscv/vector.md: Ditto
8270
8271 2023-09-13 Andrew Pinski <apinski@marvell.com>
8272
8273 * match.pd (`X <= MAX(X, Y)`):
8274 Move before `MIN (X, C1) < C2` pattern.
8275
8276 2023-09-13 Andrew Pinski <apinski@marvell.com>
8277
8278 PR tree-optimization/111364
8279 * match.pd (`MIN (X, Y) == X`): Extend
8280 to min/lt, min/ge, max/gt, max/le.
8281
8282 2023-09-13 Andrew Pinski <apinski@marvell.com>
8283
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.
8289
8290 2023-09-13 Richard Biener <rguenther@suse.de>
8291
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.
8297
8298 2023-09-13 Lehua Ding <lehua.ding@rivai.ai>
8299
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.
8307
8308 2023-09-13 Lehua Ding <lehua.ding@rivai.ai>
8309
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.
8313
8314 2023-09-13 Lehua Ding <lehua.ding@rivai.ai>
8315
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.
8319
8320 2023-09-13 Richard Biener <rguenther@suse.de>
8321
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.
8332
8333 2023-09-13 Pan Li <pan2.li@intel.com>
8334
8335 PR target/111362
8336 * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix.
8337
8338 2023-09-13 Jiufu Guo <guojiufu@linux.ibm.com>
8339
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.
8344
8345 2023-09-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8346
8347 PR target/111337
8348 * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern.
8349
8350 2023-09-12 Martin Jambor <mjambor@suse.cz>
8351
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.
8355
8356 2023-09-12 Edwin Lu <ewlu@rivosinc.com>
8357
8358 * config/riscv/autovec-opt.md: Update type
8359 * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert
8360
8361 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8362
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.
8369
8370 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8371
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.
8375
8376 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8377
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.
8387
8388 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8389
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.
8393
8394 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8395
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.
8401
8402 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8403
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).
8407
8408 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8409
8410 * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak
8411 calculation of initial_adjust for frames in which all saves
8412 are SVE saves.
8413
8414 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8415
8416 * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify
8417 the allocation of the top of the frame.
8418
8419 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8420
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.
8431
8432 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8433
8434 * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment.
8435
8436 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8437
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.
8444
8445 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8446
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.
8451
8452 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8453
8454 * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the
8455 calculation of chain_offset into the emit_frame_chain block.
8456
8457 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8458
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.
8467
8468 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8469
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.
8475
8476 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8477
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.
8485
8486 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8487
8488 * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly
8489 allocate the frame in one go if there are no saved registers.
8490
8491 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8492
8493 * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use
8494 chain_offset rather than callee_offset.
8495
8496 2023-09-12 Richard Sandiford <richard.sandiford@arm.com>
8497
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.
8505
8506 2023-09-12 Andrew Pinski <apinski@marvell.com>
8507
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.
8511
8512 2023-09-12 Pan Li <pan2.li@intel.com>
8513
8514 * config/riscv/riscv-vector-costs.h (struct range): Removed.
8515
8516 2023-09-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8517
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.
8529
8530 2023-09-12 Jakub Jelinek <jakub@redhat.com>
8531
8532 * fold-const.cc (range_check_type): Handle BITINT_TYPE like
8533 OFFSET_TYPE.
8534
8535 2023-09-12 Jakub Jelinek <jakub@redhat.com>
8536
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.
8544
8545 2023-09-12 Gaius Mulley <gaiusmod2@gmail.com>
8546
8547 * doc/gm2.texi (Compiler options): Document new option
8548 -Wcase-enum.
8549
8550 2023-09-12 Thomas Schwinge <thomas@codesourcery.com>
8551
8552 * doc/sourcebuild.texi (stack_size): Update.
8553
8554 2023-09-12 Christoph Müllner <christoph.muellner@vrull.eu>
8555
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'.
8581
8582 2023-09-12 Christoph Müllner <christoph.muellner@vrull.eu>
8583
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.
8600
8601 2023-09-12 Thomas Schwinge <thomas@codesourcery.com>
8602
8603 * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P)
8604 (TARGET_SUPPORTS_ALIASES): Define.
8605
8606 2023-09-12 Thomas Schwinge <thomas@codesourcery.com>
8607
8608 * doc/sourcebuild.texi (check-function-bodies): Update.
8609
8610 2023-09-12 Tobias Burnus <tobias@codesourcery.com>
8611
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.
8615
8616 2023-09-12 xuli <xuli1@eswincomputing.com>
8617
8618 * config/riscv/riscv-vector-builtins-bases.cc: remove unused
8619 parameter e and replace NULL_RTX with gcc_unreachable.
8620
8621 2023-09-12 xuli <xuli1@eswincomputing.com>
8622
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.
8631
8632 2023-09-12 Fei Gao <gaofei@eswincomputing.com>
8633
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
8640
8641 2023-09-12 Fei Gao <gaofei@eswincomputing.com>
8642
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
8648
8649 2023-09-11 Andrew Pinski <apinski@marvell.com>
8650
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.
8654
8655 2023-09-11 Uros Bizjak <ubizjak@gmail.com>
8656
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.
8660
8661 2023-09-11 Edwin Lu <ewlu@rivosinc.com>
8662
8663 * config/riscv/thead.md: Update types
8664
8665 2023-09-11 Edwin Lu <ewlu@rivosinc.com>
8666
8667 * config/riscv/riscv.md: Update types
8668
8669 2023-09-11 Edwin Lu <ewlu@rivosinc.com>
8670
8671 * config/riscv/riscv.md: Add "zicond" type
8672 * config/riscv/zicond.md: Update types
8673
8674 2023-09-11 Edwin Lu <ewlu@rivosinc.com>
8675
8676 * config/riscv/riscv.md: Add "pushpop" and "mvpair" types
8677 * config/riscv/zc.md: Update types
8678
8679 2023-09-11 Edwin Lu <ewlu@rivosinc.com>
8680
8681 * config/riscv/autovec-opt.md: Update types
8682 * config/riscv/autovec.md: likewise
8683
8684 2023-09-11 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
8685
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.
8696
8697 2023-09-11 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
8698
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.
8719
8720 2023-09-11 Andrew Pinski <apinski@marvell.com>
8721
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.
8725
8726 2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8727
8728 PR target/111311
8729 * config/riscv/riscv.opt: Set default as scalable vectorization.
8730
8731 2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8732
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.
8737
8738 2023-09-11 Jakub Jelinek <jakub@redhat.com>
8739
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.
8747
8748 2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8749
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.
8754
8755 2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8756
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.
8767
8768 2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8769
8770 * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern.
8771 * config/riscv/vector-iterators.md: New iterator
8772
8773 2023-09-11 Andrew Pinski <apinski@marvell.com>
8774
8775 PR tree-optimization/111346
8776 * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part
8777 of the pattern
8778
8779 2023-09-11 liuhongt <hongtao.liu@intel.com>
8780
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.
8790
8791 2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8792
8793 * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand
8794 fixed-vlmax/vls vector permutation.
8795
8796 2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8797
8798 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
8799
8800 2023-09-10 Andrew Pinski <apinski@marvell.com>
8801
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.
8808
8809 2023-09-10 Iain Sandoe <iain@sandoe.co.uk>
8810
8811 * config/darwin.cc (darwin_function_section): Place unlikely
8812 executed global init code into the standard cold section.
8813
8814 2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8815
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.
8821
8822 2023-09-09 Lulu Cheng <chenglulu@loongson.cn>
8823
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.
8833
8834 2023-09-09 Xi Ruoyao <xry111@xry111.site>
8835
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.
8839
8840 2023-09-09 Xi Ruoyao <xry111@xry111.site>
8841
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.
8851
8852 2023-09-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8853
8854 * config/riscv/vector-iterators.md: Fix floating-point operations predicate.
8855
8856 2023-09-09 Lehua Ding <lehua.ding@rivai.ai>
8857
8858 * fold-const.cc (can_min_p): New function.
8859 (poly_int_binop): Try fold MIN_EXPR.
8860
8861 2023-09-08 Aldy Hernandez <aldyh@redhat.com>
8862
8863 * range-op-float.cc (foperator_ltgt::fold_range): Do not special
8864 case VREL_EQ nor call frelop_early_resolve.
8865
8866 2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu>
8867
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.
8872
8873 2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu>
8874
8875 * config/riscv/thead.md: Use more appropriate mode attributes
8876 for extensions.
8877
8878 2023-09-08 Guo Jie <guojie@loongson.cn>
8879
8880 * common/config/loongarch/loongarch-common.cc:
8881 (default_options loongarch_option_optimization_table):
8882 Default to -fsched-pressure.
8883
8884 2023-09-08 Yang Yujie <yangyujie@loongson.cn>
8885
8886 * config.gcc: remove non-POSIX syntax "<<<".
8887
8888 2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu>
8889
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.
8894
8895 2023-09-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8896
8897 * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type.
8898
8899 2023-09-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8900
8901 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug.
8902
8903 2023-09-07 liuhongt <hongtao.liu@intel.com>
8904
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.
8909
8910 2023-09-07 Aldy Hernandez <aldyh@redhat.com>
8911
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.
8930
8931 2023-09-07 Andrew MacLeod <amacleod@redhat.com>
8932
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.
8936
8937 2023-09-07 Vladimir N. Makarov <vmakarov@redhat.com>
8938
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.
8944
8945 2023-09-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8946
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.
8951
8952 2023-09-07 David Malcolm <dmalcolm@redhat.com>
8953
8954 * diagnostic-core.h (error_meta): New decl.
8955 * diagnostic.cc (error_meta): New.
8956
8957 2023-09-07 Jakub Jelinek <jakub@redhat.com>
8958
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.
8969
8970 2023-09-07 Xi Ruoyao <xry111@xry111.site>
8971
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.
8986
8987 2023-09-07 Richard Sandiford <richard.sandiford@arm.com>
8988
8989 * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary
8990 rather than gen_rtx_PLUS.
8991
8992 2023-09-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8993
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.
8997
8998 2023-09-07 Tsukasa OI <research_trasio@irq.a4lg.com>
8999
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.
9020
9021 2023-09-06 Ian Lance Taylor <iant@golang.org>
9022
9023 PR go/111310
9024 * godump.cc (go_format_type): Handle BITINT_TYPE.
9025
9026 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9027
9028 PR c/102989
9029 * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE
9030 like INTEGER_TYPE.
9031
9032 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9033
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.
9038
9039 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9040
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.
9048
9049 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9050
9051 PR c/102989
9052 * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is
9053 predefined.
9054
9055 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9056
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.
9076
9077 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9078
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.
9083
9084 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9085
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.
9109
9110 2023-09-06 Jakub Jelinek <jakub@redhat.com>
9111
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.
9200
9201 2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9202
9203 PR target/111296
9204 * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode
9205 tieable for RVV modes.
9206
9207 2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9208
9209 PR target/111295
9210 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix.
9211
9212 2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9213
9214 * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT
9215
9216 2023-09-06 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
9217
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.
9223
9224 2023-09-06 Lehua Ding <lehua.ding@rivai.ai>
9225
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.
9248
9249 2023-09-06 Lehua Ding <lehua.ding@rivai.ai>
9250
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.
9263
9264 2023-09-06 Lehua Ding <lehua.ding@rivai.ai>
9265
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.
9285
9286 2023-09-06 Lehua Ding <lehua.ding@rivai.ai>
9287
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.
9310
9311 2023-09-06 Lehua Ding <lehua.ding@rivai.ai>
9312
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.
9317
9318 2023-09-06 Jason Merrill <jason@redhat.com>
9319
9320 * common.opt: Update -fabi-version=19.
9321
9322 2023-09-06 Tsukasa OI <research_trasio@irq.a4lg.com>
9323
9324 * config/riscv/zicond.md: Add closing parent to a comment.
9325
9326 2023-09-06 Tsukasa OI <research_trasio@irq.a4lg.com>
9327
9328 * config/riscv/riscv.cc (riscv_expand_conditional_move): Force
9329 large constant cons/alt into a register.
9330
9331 2023-09-05 Christoph Müllner <christoph.muellner@vrull.eu>
9332
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.
9335
9336 2023-09-05 Jeff Law <jlaw@ventanamicro.com>
9337
9338 * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT.
9339
9340 2023-09-05 Andrew Pinski <apinski@marvell.com>
9341
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.
9345
9346 2023-09-05 Andrew Pinski <apinski@marvell.com>
9347
9348 PR tree-optimization/103536
9349 * match.pd (`(x | y) & (x & z)`,
9350 `(x & y) | (x | z)`): New patterns.
9351
9352 2023-09-05 Andrew Pinski <apinski@marvell.com>
9353
9354 PR tree-optimization/107137
9355 * match.pd (`(nop_convert)-(convert)a`): New pattern.
9356
9357 2023-09-05 Andrew Pinski <apinski@marvell.com>
9358
9359 PR tree-optimization/96694
9360 * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns.
9361
9362 2023-09-05 Andrew Pinski <apinski@marvell.com>
9363
9364 PR tree-optimization/105832
9365 * match.pd (`(1 >> X) != 0`): New pattern
9366
9367 2023-09-05 Edwin Lu <ewlu@rivosinc.com>
9368
9369 * config/riscv/riscv.md: Update/Add types
9370
9371 2023-09-05 Edwin Lu <ewlu@rivosinc.com>
9372
9373 * config/riscv/pic.md: Update types
9374
9375 2023-09-05 Christoph Müllner <christoph.muellner@vrull.eu>
9376
9377 * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant
9378 synthesis with rotate-right for XTheadBb.
9379
9380 2023-09-05 Vineet Gupta <vineetg@rivosinc.com>
9381
9382 * config/riscv/zicond.md: Fix op2 pattern.
9383
9384 2023-09-05 Szabolcs Nagy <szabolcs.nagy@arm.com>
9385
9386 * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup.
9387
9388 2023-09-05 Xi Ruoyao <xry111@xry111.site>
9389
9390 * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
9391 Define to 0 if not defined yet.
9392
9393 2023-09-05 Kito Cheng <kito.cheng@sifive.com>
9394
9395 * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ...
9396 * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here.
9397
9398 2023-09-05 Pan Li <pan2.li@intel.com>
9399
9400 * config/riscv/autovec-vls.md (copysign<mode>3): New pattern.
9401 * config/riscv/vector.md: Extend iterator for VLS.
9402
9403 2023-09-05 Lulu Cheng <chenglulu@loongson.cn>
9404
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.
9685
9686 2023-09-05 Lulu Cheng <chenglulu@loongson.cn>
9687
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.
9765
9766 2023-09-05 Lulu Cheng <chenglulu@loongson.cn>
9767
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.
10083
10084 2023-09-05 Lulu Cheng <chenglulu@loongson.cn>
10085
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.
10367
10368 2023-09-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10369
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.
10377
10378 2023-09-05 Claudiu Zissulescu <claziss@gmail.com>
10379
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.
10399
10400 2023-09-05 Claudiu Zissulescu <claziss@gmail.com>
10401
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.
10409
10410 2023-09-05 Jakub Jelinek <jakub@redhat.com>
10411
10412 * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo:
10413 avreage -> average.
10414
10415 2023-09-05 Yang Yujie <yangyujie@loongson.cn>
10416
10417 * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized
10418 options passed from driver to gnat1 as explicit for multilib.
10419
10420 2023-09-05 Yang Yujie <yangyujie@loongson.cn>
10421
10422 * config.gcc: add loongarch*-elf target.
10423 * config/loongarch/elf.h: New file.
10424 Link against newlib by default.
10425
10426 2023-09-05 Yang Yujie <yangyujie@loongson.cn>
10427
10428 * config.gcc: use -mstrict-align for building libraries
10429 if --with-strict-align-lib is given.
10430 * doc/install.texi: likewise.
10431
10432 2023-09-05 Yang Yujie <yangyujie@loongson.cn>
10433
10434 * config/loongarch/loongarch-c.cc: Export macros
10435 "__loongarch_{arch,tune}" in the preprocessor.
10436
10437 2023-09-05 Yang Yujie <yangyujie@loongson.cn>
10438
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.
10462
10463 2023-09-05 liuhongt <hongtao.liu@intel.com>
10464
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.
10476
10477 2023-09-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10478
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.
10483
10484 2023-09-04 Iain Sandoe <iain@sandoe.co.uk>
10485
10486 * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for
10487 all 32b Darwin PowerPC cases.
10488
10489 2023-09-04 Iain Sandoe <iain@sandoe.co.uk>
10490
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.
10495
10496 2023-09-04 Iain Sandoe <iain@sandoe.co.uk>
10497
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.
10504
10505 2023-09-04 Iain Sandoe <iain@sandoe.co.uk>
10506
10507 * config/darwin.cc (dump_machopic_symref_flags): New.
10508 (debug_machopic_symref_flags): New.
10509
10510 2023-09-04 Pan Li <pan2.li@intel.com>
10511
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.
10519
10520 2023-09-04 Jiufu Guo <guojiufu@linux.ibm.com>
10521
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.
10526
10527 2023-09-04 Guo Jie <guojie@loongson.cn>
10528
10529 * config/loongarch/loongarch.md: Support 'G' -> 'k' in
10530 movsf_hardfloat and movdf_hardfloat.
10531
10532 2023-09-04 Lulu Cheng <chenglulu@loongson.cn>
10533
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.
10539
10540 2023-09-04 Lulu Cheng <chenglulu@loongson.cn>
10541
10542 * config/loongarch/loongarch.md: Allows fixed-point values to be loaded
10543 from memory into floating-point registers.
10544
10545 2023-09-03 Pan Li <pan2.li@intel.com>
10546
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.
10550
10551 2023-09-02 Mikael Morin <mikael@gcc.gnu.org>
10552
10553 * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated
10554 pointer before overwriting it.
10555
10556 2023-09-02 chenxiaolong <chenxiaolong@loongson.cn>
10557
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.
10566
10567 2023-09-01 Jakub Jelinek <jakub@redhat.com>
10568
10569 PR c++/111069
10570 * common.opt (fabi-version=): Document version 19.
10571 * doc/invoke.texi (-fabi-version=): Likewise.
10572
10573 2023-09-01 Lehua Ding <lehua.ding@rivai.ai>
10574
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.
10589
10590 2023-09-01 Lehua Ding <lehua.ding@rivai.ai>
10591
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.
10597
10598 2023-09-01 Lehua Ding <lehua.ding@rivai.ai>
10599
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.
10607
10608 2023-09-01 Lehua Ding <lehua.ding@rivai.ai>
10609
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.
10618
10619 2023-09-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10620
10621 * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable
10622 VECT_COMPARE_COSTS by default.
10623
10624 2023-09-01 Robin Dapp <rdapp@ventanamicro.com>
10625
10626 * config/riscv/autovec.md (vec_extract<mode>qi): New expander.
10627
10628 2023-09-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10629
10630 * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add
10631 dynamic enum.
10632 * config/riscv/riscv.opt: Add dynamic compile option.
10633
10634 2023-09-01 Pan Li <pan2.li@intel.com>
10635
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.
10641
10642 2023-09-01 Andrew Pinski <apinski@marvell.com>
10643
10644 PR tree-optimization/19832
10645 * match.pd: Add pattern to optimize
10646 `(a != b) ? a OP b : c`.
10647
10648 2023-09-01 Lulu Cheng <chenglulu@loongson.cn>
10649 Guo Jie <guojie@loongson.cn>
10650
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.
10654
10655 2023-08-31 Andrew Pinski <apinski@marvell.com>
10656
10657 PR tree-optimization/110915
10658 * match.pd (min_value, max_value): Extend to vector constants.
10659
10660 2023-08-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
10661
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.
10674
10675 2023-08-31 Pan Li <pan2.li@intel.com>
10676
10677 * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc.
10678 * config/riscv/autovec.md: Ditto.
10679
10680 2023-08-31 Pan Li <pan2.li@intel.com>
10681
10682 * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
10683 * config/riscv/autovec.md: Ditto.
10684
10685 2023-08-31 Richard Sandiford <richard.sandiford@arm.com>
10686
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.
10690
10691 2023-08-31 Pan Li <pan2.li@intel.com>
10692
10693 * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub
10694 * config/riscv/autovec.md: Ditto.
10695
10696 2023-08-31 Pan Li <pan2.li@intel.com>
10697 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10698
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.
10702
10703 2023-08-31 Palmer Dabbelt <palmer@rivosinc.com>
10704
10705 * config/riscv/autovec.md (shifts): Use
10706 vector_scalar_shift_operand.
10707 * config/riscv/predicates.md (vector_scalar_shift_operand): New
10708 predicate.
10709
10710 2023-08-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10711
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.
10718
10719 2023-08-31 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
10720
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.
10727
10728 2023-08-31 Lehua Ding <lehua.ding@rivai.ai>
10729
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.
10736
10737 2023-08-31 Lehua Ding <lehua.ding@rivai.ai>
10738
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.
10816
10817 2023-08-31 Haochen Gui <guihaoc@gcc.gnu.org>
10818
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.
10822
10823 2023-08-31 Claudiu Zissulescu <claziss@gmail.com>
10824
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.
10828
10829 2023-08-31 Stamatis Markianos-Wright <stam.markianos-wright@arm.com>
10830
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.
10844
10845 2023-08-31 liuhongt <hongtao.liu@intel.com>
10846
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.
10878
10879 2023-08-31 Lehua Ding <lehua.ding@rivai.ai>
10880
10881 PR target/111234
10882 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition.
10883
10884 2023-08-31 Jiufu Guo <guojiufu@linux.ibm.com>
10885
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.
10900
10901 2023-08-30 Dimitar Dimitrov <dimitar@dinux.eu>
10902
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.
10908
10909 2023-08-30 Richard Biener <rguenther@suse.de>
10910
10911 PR tree-optimization/111228
10912 * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)):
10913 New simplifications.
10914
10915 2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10916
10917 * config/riscv/autovec.md (movmisalign<mode>): Delete.
10918
10919 2023-08-30 Die Li <lidie@eswincomputing.com>
10920 Fei Gao <gaofei@eswincomputing.com>
10921
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.
10928
10929 2023-08-30 Fei Gao <gaofei@eswincomputing.com>
10930
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
10949
10950 2023-08-30 Fei Gao <gaofei@eswincomputing.com>
10951
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
11034
11035 2023-08-30 Jakub Jelinek <jakub@redhat.com>
11036
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.
11040
11041 2023-08-30 Jakub Jelinek <jakub@redhat.com>
11042
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.
11048
11049 2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11050
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.
11055
11056 2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11057
11058 * config/riscv/riscv-vsetvl.cc
11059 (vector_insn_info::get_avl_or_vl_reg): Fix bug.
11060
11061 2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11062
11063 * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern.
11064 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support
11065 VLS misalign.
11066
11067 2023-08-29 Philipp Tomsich <philipp.tomsich@vrull.eu>
11068
11069 * config/riscv/zicond.md: New splitters to rewrite single bit
11070 sign extension as the condition to a czero in the desired form.
11071
11072 2023-08-29 David Malcolm <dmalcolm@redhat.com>
11073
11074 PR analyzer/99860
11075 * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.
11076
11077 2023-08-29 David Malcolm <dmalcolm@redhat.com>
11078
11079 PR analyzer/99860
11080 * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.
11081
11082 2023-08-29 Jin Ma <jinma@linux.alibaba.com>
11083
11084 * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli):
11085 zvfh can generate zfa extended instruction fli.h, just like zfh.
11086
11087 2023-08-29 Edwin Lu <ewlu@rivosinc.com>
11088 Vineet Gupta <vineetg@rivosinc.com>
11089
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
11098
11099 2023-08-29 Edwin Lu <ewlu@rivosinc.com>
11100
11101 * config/riscv/autovec-vls.md: Update types
11102 * config/riscv/riscv.md: Add vector placeholder type
11103 * config/riscv/vector.md: Update types
11104
11105 2023-08-29 Carl Love <cel@us.ibm.com>
11106
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.
11115
11116 2023-08-29 Pan Li <pan2.li@intel.com>
11117 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11118
11119 * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration.
11120 (riscv_legitimize_const_move): Handle ref plus const poly.
11121
11122 2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com>
11123
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'.
11128
11129 2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com>
11130
11131 * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
11132 Add stub support for all vendor extensions supported by Binutils.
11133
11134 2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com>
11135
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.
11140
11141 2023-08-29 Lehua Ding <lehua.ding@rivai.ai>
11142
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.
11155
11156 2023-08-29 Jakub Jelinek <jakub@redhat.com>
11157
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.
11164
11165 2023-08-29 Andrew Pinski <apinski@marvell.com>
11166
11167 PR tree-optimization/111147
11168 * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p
11169 instead of matching bit_not.
11170
11171 2023-08-29 Christophe Lyon <christophe.lyon@linaro.org>
11172
11173 * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing
11174 initializer.
11175
11176 2023-08-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11177
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.
11182
11183 2023-08-29 Lehua Ding <lehua.ding@rivai.ai>
11184
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.
11193
11194 2023-08-29 Lulu Cheng <chenglulu@loongson.cn>
11195
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.
11201
11202 2023-08-28 Tsukasa OI <research_trasio@irq.a4lg.com>
11203
11204 * doc/extend.texi: Fix the description of __builtin_riscv_pause.
11205
11206 2023-08-28 Tsukasa OI <research_trasio@irq.a4lg.com>
11207
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.
11217
11218 2023-08-28 Andrew Pinski <apinski@marvell.com>
11219
11220 * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p
11221 instead of specifically checking for ~X.
11222
11223 2023-08-28 Andrew Pinski <apinski@marvell.com>
11224
11225 PR tree-optimization/111146
11226 * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove
11227 redundant pattern.
11228
11229 2023-08-28 Andrew Pinski <apinski@marvell.com>
11230
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.
11235
11236 2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11237
11238 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip
11239 never probability.
11240 (pass_vsetvl::compute_probabilities): Fix unitialized probability.
11241
11242 2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11243
11244 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug.
11245
11246 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11247
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.
11290
11291 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11292
11293 * config/arm/arm-mve-builtins-functions.h (class
11294 unspec_mve_function_exact_insn_vmull_poly): New.
11295
11296 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11297
11298 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New.
11299 * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New.
11300
11301 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11302
11303 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add
11304 support for 'U' and 'p' format specifiers.
11305
11306 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11307
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.
11317
11318 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11319
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.
11410
11411 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11412
11413 * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New.
11414 * config/arm/arm-mve-builtins-shapes.h (binary_widen): New.
11415
11416 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11417
11418 * config/arm/arm-mve-builtins-functions.h (class
11419 unspec_mve_function_exact_insn_vmull): New.
11420
11421 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11422
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.
11439
11440 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11441
11442 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type):
11443 Remove dead check.
11444
11445 2023-08-28 Christophe Lyon <christophe.lyon@linaro.org>
11446
11447 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound.
11448 (binary_acca_int64): Likewise.
11449
11450 2023-08-28 Aldy Hernandez <aldyh@redhat.com>
11451
11452 * range-op-float.cc (fold_range): Handle relations.
11453
11454 2023-08-28 Lulu Cheng <chenglulu@loongson.cn>
11455
11456 * config/loongarch/loongarch.cc (loongarch_expand_conditional_move):
11457 Optimize the function implementation.
11458
11459 2023-08-28 liuhongt <hongtao.liu@intel.com>
11460
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.
11472
11473 2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11474
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.
11514
11515 2023-08-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11516
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.
11525
11526 2023-08-25 Edwin Lu <ewlu@rivosinc.com>
11527
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
11532
11533 2023-08-25 Jin Ma <jinma@linux.alibaba.com>
11534
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.
11562
11563 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
11564
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.
11571
11572 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
11573
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.
11606
11607 2023-08-25 Vineet Gupta <vineetg@rivosinc.com>
11608
11609 * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
11610 cost. Add some comments about different constants handling.
11611
11612 2023-08-25 Andrew Pinski <apinski@marvell.com>
11613
11614 * match.pd (`a ? one_zero : one_zero`): Move
11615 below detection of minmax.
11616
11617 2023-08-25 Andrew Pinski <apinski@marvell.com>
11618
11619 * match.pd (`a | C -> C`): New pattern.
11620
11621 2023-08-25 Uros Bizjak <ubizjak@gmail.com>
11622
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.
11663
11664 2023-08-25 Richard Biener <rguenther@suse.de>
11665
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.
11669
11670 2023-08-25 Richard Biener <rguenther@suse.de>
11671
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.
11680
11681 2023-08-25 Aldy Hernandez <aldyh@redhat.com>
11682
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.
11693
11694 2023-08-25 Richard Biener <rguenther@suse.de>
11695
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.
11700
11701 2023-08-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11702
11703 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
11704 Add early continue.
11705
11706 2023-08-25 liuhongt <hongtao.liu@intel.com>
11707
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.
11719
11720 2023-08-25 Hongyu Wang <hongyu.wang@intel.com>
11721
11722 PR target/111127
11723 * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
11724 Adjust paramter order.
11725
11726 2023-08-24 Uros Bizjak <ubizjak@gmail.com>
11727
11728 PR target/94866
11729 * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
11730
11731 2023-08-24 David Malcolm <dmalcolm@redhat.com>
11732
11733 PR analyzer/105899
11734 * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
11735 list of functions known to the analyzer.
11736
11737 2023-08-24 Richard Biener <rguenther@suse.de>
11738
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.
11744
11745 2023-08-24 Jan Hubicka <jh@suse.cz>
11746
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.
11758
11759 2023-08-24 Richard Biener <rguenther@suse.de>
11760
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.
11764
11765 2023-08-24 Jan Hubicka <jh@suse.cz>
11766
11767 * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
11768 of newly build trap bb.
11769
11770 2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11771
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.
11775
11776 2023-08-24 Robin Dapp <rdapp.gcc@gmail.com>
11777
11778 * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
11779 * config/riscv/riscv.cc (riscv_option_override): Set sched
11780 pressure algorithm.
11781
11782 2023-08-24 Robin Dapp <rdapp@ventanamicro.com>
11783
11784 * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
11785
11786 2023-08-24 Richard Biener <rguenther@suse.de>
11787
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.
11791
11792 2023-08-24 Richard Sandiford <richard.sandiford@arm.com>
11793
11794 * doc/extend.texi: Document the C [[__extension__ ...]] construct.
11795
11796 2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11797
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.
11811
11812 2023-08-24 Richard Biener <rguenther@suse.de>
11813
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.
11830
11831 2023-08-24 Richard Biener <rguenther@suse.de>
11832
11833 PR tree-optimization/111125
11834 * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
11835 for the remain_defs processing.
11836
11837 2023-08-24 Richard Sandiford <richard.sandiford@arm.com>
11838
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.
11844
11845 2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11846
11847 * tree-vect-loop.cc (vectorizable_reduction): Apply
11848 LEN_FOLD_EXTRACT_LAST.
11849 * tree-vect-stmts.cc (vectorizable_condition): Ditto.
11850
11851 2023-08-24 Richard Biener <rguenther@suse.de>
11852
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.
11857
11858 2023-08-24 Pan Li <pan2.li@intel.com>
11859
11860 * config/riscv/autovec.md: Fix typo.
11861
11862 2023-08-24 Pan Li <pan2.li@intel.com>
11863
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.
11900
11901 2023-08-24 Andrew Pinski <apinski@marvell.com>
11902
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.
11906
11907 2023-08-24 Andrew Pinski <apinski@marvell.com>
11908
11909 PR tree-optimization/95929
11910 * match.pd (convert?(-a)): New pattern
11911 for 1bit integer types.
11912
11913 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
11914
11915 Revert:
11916 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
11917
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.
11962
11963 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
11964
11965 Revert:
11966 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
11967
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.
11979
11980 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
11981
11982 Revert:
11983 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
11984
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.
11992
11993 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
11994
11995 Revert:
11996 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
11997
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.
12039
12040 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
12041
12042 Revert:
12043 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12044
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.
12084
12085 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
12086
12087 Revert:
12088 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12089
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.
12118
12119 2023-08-24 Haochen Jiang <haochen.jiang@intel.com>
12120
12121 Revert:
12122 2023-08-18 Haochen Jiang <haochen.jiang@intel.com>
12123
12124 PR target/111051
12125 * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
12126 disabled.
12127
12128 2023-08-24 Richard Biener <rguenther@suse.de>
12129
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.
12135
12136 2023-08-24 liuhongt <hongtao.liu@intel.com>
12137
12138 * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
12139 V13 to GCC 13.1.
12140
12141 2023-08-24 liuhongt <hongtao.liu@intel.com>
12142
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
12160
12161 2023-08-23 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12162
12163 * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
12164 to help simplify code further.
12165
12166 2023-08-23 Andrew MacLeod <amacleod@redhat.com>
12167
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.
12185
12186 2023-08-23 Andrew MacLeod <amacleod@redhat.com>
12187
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.
12191
12192 2023-08-23 Richard Earnshaw <rearnsha@arm.com>
12193
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.
12199
12200 2023-08-23 Richard Earnshaw <rearnsha@arm.com>
12201
12202 * coretypes.h (rtx_code): Add forward declaration.
12203 * rtl.h (rtx_code): Make compatible with forward declaration.
12204
12205 2023-08-23 Uros Bizjak <ubizjak@gmail.com>
12206
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.
12214
12215 2023-08-23 Zhangjin Liao <liaozhangjin@eswincomputing.com>
12216
12217 * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
12218 appropriate type attribute.
12219
12220 2023-08-23 Lehua Ding <lehua.ding@rivai.ai>
12221
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.
12232
12233 2023-08-23 Jan Hubicka <jh@suse.cz>
12234
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.
12238
12239 2023-08-23 Kewen Lin <linkw@linux.ibm.com>
12240
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.
12244
12245 2023-08-23 Kewen Lin <linkw@linux.ibm.com>
12246
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.
12250
12251 2023-08-23 Kewen Lin <linkw@linux.ibm.com>
12252
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.
12256
12257 2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12258
12259 * config/riscv/riscv-vsetvl.cc
12260 (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
12261
12262 2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12263
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.
12267
12268 2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12269
12270 * config/riscv/vector.md: Add attribute.
12271
12272 2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12273
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.
12283
12284 2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12285
12286 * config/riscv/t-riscv: Add riscv-vsetvl.def
12287
12288 2023-08-22 Vineet Gupta <vineetg@rivosinc.com>
12289
12290 * config/riscv/riscv.opt: Add --param names
12291 riscv-autovec-preference and riscv-autovec-lmul
12292
12293 2023-08-22 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
12294
12295 * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
12296
12297 2023-08-22 Tobias Burnus <tobias@codesourcery.com>
12298
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.
12303
12304 2023-08-22 Jakub Jelinek <jakub@redhat.com>
12305
12306 PR c++/106652
12307 * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
12308 types aren't supported in C++.
12309
12310 2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12311
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.
12318
12319 2023-08-22 Richard Biener <rguenther@suse.de>
12320
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.
12325
12326 2023-08-22 Richard Biener <rguenther@suse.de>
12327
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.
12333
12334 2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12335 Kewen.Lin <linkw@linux.ibm.com>
12336
12337 * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
12338 (vectorizable_live_operation): Add live vectorization for length loop
12339 control.
12340
12341 2023-08-22 David Malcolm <dmalcolm@redhat.com>
12342
12343 PR analyzer/105899
12344 * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
12345
12346 2023-08-22 Pan Li <pan2.li@intel.com>
12347
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.
12354
12355 2023-08-21 David Faust <david.faust@oracle.com>
12356
12357 * config/bpf/bpf.md (neg): Second operand must be a register.
12358
12359 2023-08-21 Edwin Lu <ewlu@rivosinc.com>
12360
12361 * config/riscv/bitmanip.md: Added bitmanip type to insns
12362 that are missing types.
12363
12364 2023-08-21 Jeff Law <jlaw@ventanamicro.com>
12365
12366 * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
12367 newline.
12368
12369 2023-08-21 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
12370
12371 * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
12372 Fix format specifier.
12373
12374 2023-08-21 Aldy Hernandez <aldyh@redhat.com>
12375
12376 * value-range.cc (frange::union_nans): Return false if nothing
12377 changed.
12378 (range_tests_floats): New test.
12379
12380 2023-08-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12381
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.
12388
12389 2023-08-21 Richard Biener <rguenther@suse.de>
12390
12391 PR tree-optimization/111082
12392 * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
12393 pun operations that can overflow.
12394
12395 2023-08-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12396
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.
12402
12403 2023-08-21 Richard Biener <rguenther@suse.de>
12404
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.
12408
12409 2023-08-21 Andrew Pinski <apinski@marvell.com>
12410
12411 PR tree-optimization/111002
12412 * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
12413
12414 2023-08-21 liuhongt <hongtao.liu@intel.com>
12415
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.
12420
12421 2023-08-20 Uros Bizjak <ubizjak@gmail.com>
12422
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.
12429
12430 2023-08-20 Andrew Pinski <apinski@marvell.com>
12431
12432 PR tree-optimization/111006
12433 PR tree-optimization/110986
12434 * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
12435
12436 2023-08-20 Eric Gallager <egallager@gcc.gnu.org>
12437
12438 PR target/90835
12439 * Makefile.in: improve error message when /usr/include is
12440 missing
12441
12442 2023-08-19 Tobias Burnus <tobias@codesourcery.com>
12443
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.
12448
12449 2023-08-19 Guo Jie <guojie@loongson.cn>
12450 Lulu Cheng <chenglulu@loongson.cn>
12451
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.
12455
12456 2023-08-18 Uros Bizjak <ubizjak@gmail.com>
12457
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.
12470
12471 2023-08-18 Aldy Hernandez <aldyh@redhat.com>
12472
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.
12478
12479 2023-08-18 Richard Biener <rguenther@suse.de>
12480
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.
12484
12485 2023-08-18 Jose E. Marchesi <jose.marchesi@oracle.com>
12486
12487 * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
12488
12489 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
12490
12491 PR bootstrap/111021
12492 * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
12493
12494 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
12495
12496 * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
12497 out from ...
12498 (vectorizable_store): ... here.
12499
12500 2023-08-18 Richard Biener <rguenther@suse.de>
12501
12502 PR tree-optimization/111048
12503 * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
12504 vectors first.
12505
12506 2023-08-18 Haochen Jiang <haochen.jiang@intel.com>
12507
12508 PR target/111051
12509 * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
12510 disabled.
12511
12512 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
12513
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.
12517
12518 2023-08-18 Andrew Pinski <apinski@marvell.com>
12519
12520 * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
12521 cond_len_neg and cond_len_one_cmpl.
12522
12523 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
12524
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.
12534
12535 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
12536 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12537
12538 * config/riscv/predicates.md (vector_const_0_operand): New.
12539 * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
12540
12541 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
12542
12543 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
12544 Forbidden.
12545
12546 2023-08-17 Andrew MacLeod <amacleod@redhat.com>
12547
12548 PR tree-optimization/111009
12549 * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
12550
12551 2023-08-17 Vladimir N. Makarov <vmakarov@redhat.com>
12552
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.
12558
12559 2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com>
12560
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.
12565
12566 2023-08-17 Jan-Benedict Glaw <jbglaw@lug-owl.de>
12567
12568 * recog.cc (memory_address_addr_space_p): Mark possibly unused
12569 argument as unused.
12570
12571 2023-08-17 Richard Biener <rguenther@suse.de>
12572
12573 PR tree-optimization/111039
12574 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
12575 SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
12576
12577 2023-08-17 Alex Coplan <alex.coplan@arm.com>
12578
12579 * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
12580
12581 2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com>
12582
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.
12592
12593 2023-08-17 Richard Biener <rguenther@suse.de>
12594
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.
12600
12601 2023-08-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12602
12603 * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
12604 output.
12605 * configure: Regenerate.
12606
12607 2023-08-17 Pan Li <pan2.li@intel.com>
12608
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.
12616
12617 2023-08-17 Pan Li <pan2.li@intel.com>
12618
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.
12625
12626 2023-08-17 Pan Li <pan2.li@intel.com>
12627
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.
12639
12640 2023-08-17 Pan Li <pan2.li@intel.com>
12641
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.
12649
12650 2023-08-17 Pan Li <pan2.li@intel.com>
12651
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.
12658
12659 2023-08-17 Pan Li <pan2.li@intel.com>
12660
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.
12671
12672 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12673
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.
12702
12703 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12704
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.
12744
12745 2023-08-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12746
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.
12751
12752 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12753
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.
12795
12796 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12797
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.
12805
12806 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12807
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.
12819
12820 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
12821
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.
12866
12867 2023-08-17 Sergei Trofimovich <siarheit@google.com>
12868
12869 * flag-types.h (vrp_mode): Remove unused.
12870
12871 2023-08-17 Yanzhang Wang <yanzhang.wang@intel.com>
12872
12873 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
12874 CONSTM1_RTX.
12875
12876 2023-08-17 Andrew Pinski <apinski@marvell.com>
12877
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.
12885
12886 2023-08-16 Surya Kumari Jangala <jskumari@linux.ibm.com>
12887
12888 PR rtl-optimization/110254
12889 * ira-color.cc (improve_allocation): Update array
12890 allocated_hard_reg_p.
12891
12892 2023-08-16 Vladimir N. Makarov <vmakarov@redhat.com>
12893
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.
12900
12901 2023-08-16 Richard Ball <richard.ball@arm.com>
12902
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.
12906
12907 2023-08-16 Robin Dapp <rdapp@ventanamicro.com>
12908
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.
12914
12915 2023-08-16 Robin Dapp <rdapp@ventanamicro.com>
12916
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.
12922
12923 2023-08-16 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12924 Richard Sandiford <richard.sandiford@arm.com>
12925
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.
12945
12946 2023-08-16 Pan Li <pan2.li@intel.com>
12947
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.
12953
12954 2023-08-16 Pan Li <pan2.li@intel.com>
12955
12956 * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
12957
12958 2023-08-16 Pan Li <pan2.li@intel.com>
12959
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.
12965
12966 2023-08-16 Pan Li <pan2.li@intel.com>
12967
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.
12972
12973 2023-08-16 Pan Li <pan2.li@intel.com>
12974
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..
12980
12981 2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org>
12982
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.
12987
12988 2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org>
12989
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.
13002
13003 2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13004
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.
13012
13013 2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13014
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.
13031
13032 2023-08-16 Pan Li <pan2.li@intel.com>
13033
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.
13040
13041 2023-08-16 liuhongt <hongtao.liu@intel.com>
13042
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.
13059
13060 2023-08-16 liuhongt <hongtao.liu@intel.com>
13061
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.
13067
13068 2023-08-16 liuhongt <hongtao.liu@intel.com>
13069
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.
13076
13077 2023-08-15 David Faust <david.faust@oracle.com>
13078
13079 * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
13080
13081 2023-08-15 David Faust <david.faust@oracle.com>
13082
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.
13086
13087 2023-08-15 Martin Jambor <mjambor@suse.cz>
13088
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.
13098
13099 2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
13100 Thomas Schwinge <thomas@codesourcery.com>
13101
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.
13108
13109 2023-08-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13110
13111 PR target/110989
13112 * config/riscv/predicates.md: Fix predicate.
13113
13114 2023-08-15 Richard Biener <rguenther@suse.de>
13115
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.
13125
13126 2023-08-15 Richard Biener <rguenther@suse.de>
13127
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.
13145
13146 2023-08-15 Richard Biener <rguenther@suse.de>
13147
13148 * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
13149 (canonicalize_loop_induction_variables): Use find_loop_location.
13150
13151 2023-08-15 Hans-Peter Nilsson <hp@axis.com>
13152
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.
13160
13161 2023-08-15 Richard Biener <rguenther@suse.de>
13162
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.
13167
13168 2023-08-15 Richard Biener <rguenther@suse.de>
13169
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.
13174
13175 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
13176
13177 PR bootstrap/111021
13178 * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
13179
13180 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
13181
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.
13185
13186 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
13187
13188 * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
13189 on VMAT_INVARIANT.
13190
13191 2023-08-15 Pan Li <pan2.li@intel.com>
13192
13193 * mode-switching.cc (create_pre_exit): Add SET insn check.
13194
13195 2023-08-15 Pan Li <pan2.li@intel.com>
13196
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.
13213
13214 2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com>
13215
13216 * lra-constraints.cc (curr_insn_transform): Process output stack
13217 pointer reloads before emitting reload insns.
13218
13219 2023-08-14 benjamin priour <vultkayn@gcc.gnu.org>
13220
13221 PR analyzer/110543
13222 * doc/invoke.texi: Add documentation of
13223 fanalyzer-show-events-in-system-headers
13224
13225 2023-08-14 Jan Hubicka <jh@suse.cz>
13226
13227 PR gcov-profile/110988
13228 * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
13229
13230 2023-08-14 Jiawei <jiawei@iscas.ac.cn>
13231
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.
13244
13245 2023-08-14 Jiawei <jiawei@iscas.ac.cn>
13246
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.
13263
13264 2023-08-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13265
13266 Revert:
13267 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
13268
13269 * genrecog.cc (print_nonbool_test): Fix type error of
13270 switch (SUBREG_BYTE (op))'.
13271
13272 2023-08-14 Richard Biener <rguenther@suse.de>
13273
13274 * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
13275
13276 2023-08-14 Pan Li <pan2.li@intel.com>
13277
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.
13285
13286 2023-08-14 Pan Li <pan2.li@intel.com>
13287
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.
13295
13296 2023-08-14 Pan Li <pan2.li@intel.com>
13297
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.
13305
13306 2023-08-14 Pan Li <pan2.li@intel.com>
13307
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.
13315
13316 2023-08-14 Cui, Lili <lili.cui@intel.com>
13317
13318 * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
13319 to Raptorlake.
13320
13321 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
13322
13323 * config/mmix/predicates.md (mmix_address_operand): Use
13324 lra_in_progress, not reload_in_progress.
13325
13326 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
13327
13328 * config/mmix/mmix.cc: Re-enable LRA.
13329
13330 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
13331
13332 * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
13333 when lra_in_progress.
13334
13335 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
13336
13337 * config/mmix/mmix.cc: Disable LRA for MMIX.
13338
13339 2023-08-14 Pan Li <pan2.li@intel.com>
13340
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.
13350
13351 2023-08-14 Pan Li <pan2.li@intel.com>
13352
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.
13360
13361 2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com>
13362
13363 * lra-constraints.cc (curr_insn_transform): Set done_p up and
13364 check it on true after processing output stack pointer reload.
13365
13366 2023-08-12 Jakub Jelinek <jakub@redhat.com>
13367
13368 * Makefile.in (USER_H): Add stdckdint.h.
13369 * ginclude/stdckdint.h: New file.
13370
13371 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13372
13373 PR target/110994
13374 * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
13375
13376 2023-08-12 Patrick Palka <ppalka@redhat.com>
13377
13378 * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
13379 Delimit output with braces.
13380
13381 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13382
13383 PR target/110985
13384 * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
13385
13386 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13387
13388 * config/riscv/autovec.md: Add VLS CONST_VECTOR.
13389 * config/riscv/riscv.cc (riscv_const_insns): Ditto.
13390 * config/riscv/vector.md: Ditto.
13391
13392 2023-08-11 David Malcolm <dmalcolm@redhat.com>
13393
13394 PR analyzer/105899
13395 * doc/analyzer.texi (__analyzer_get_strlen): New.
13396 * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
13397
13398 2023-08-11 Jeff Law <jlaw@ventanamicro.com>
13399
13400 * config/rx/rx.md (subdi3): Fix test for borrow.
13401
13402 2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13403
13404 PR middle-end/110989
13405 * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
13406 (vectorizable_load): Ditto.
13407
13408 2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com>
13409
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.
13422
13423 2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com>
13424
13425 * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
13426 about too many arguments if function is always inlined.
13427
13428 2023-08-11 Patrick Palka <ppalka@redhat.com>
13429
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.
13432
13433 2023-08-11 John David Anglin <danglin@gcc.gnu.org>
13434
13435 PR bootstrap/110646
13436 * gensupport.cc(class conlist): Use strtol instead of std::stoi.
13437
13438 2023-08-11 Vladimir N. Makarov <vmakarov@redhat.com>
13439
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.
13444
13445 2023-08-11 Joseph Myers <joseph@codesourcery.com>
13446
13447 * configure: Regenerate.
13448
13449 2023-08-11 Richard Biener <rguenther@suse.de>
13450
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.
13455
13456 2023-08-11 Richard Biener <rguenther@suse.de>
13457
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.
13461
13462 2023-08-11 Pan Li <pan2.li@intel.com>
13463
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.
13471
13472 2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13473
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.
13480
13481 2023-08-11 Pan Li <pan2.li@intel.com>
13482
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.
13490
13491 2023-08-11 Drew Ross <drross@redhat.com>
13492 Jakub Jelinek <jakub@redhat.com>
13493
13494 PR tree-optimization/109938
13495 * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
13496
13497 2023-08-11 Pan Li <pan2.li@intel.com>
13498
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.
13506
13507 2023-08-11 Pan Li <pan2.li@intel.com>
13508
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.
13516
13517 2023-08-11 Jakub Jelinek <jakub@redhat.com>
13518
13519 * doc/extend.texi (Typeof): Document typeof_unqual
13520 and __typeof_unqual__.
13521
13522 2023-08-11 Andrew Pinski <apinski@marvell.com>
13523
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.
13536
13537 2023-08-11 Martin Uecker <uecker@tugraz.at>
13538
13539 PR c/84510
13540 * doc/invoke.texi: Update.
13541
13542 2023-08-11 Pan Li <pan2.li@intel.com>
13543
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
13551
13552 2023-08-10 Jan Hubicka <jh@suse.cz>
13553
13554 PR middle-end/110923
13555 * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
13556
13557 2023-08-10 Patrick O'Neill <patrick@rivosinc.com>
13558
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.
13577
13578 2023-08-10 Jan Hubicka <jh@suse.cz>
13579
13580 * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
13581 0 iteration count.
13582
13583 2023-08-10 Jan Hubicka <jh@suse.cz>
13584
13585 * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
13586
13587 2023-08-10 Jan Hubicka <jh@suse.cz>
13588
13589 * profile-count.cc (profile_count::differs_from_p): Fix overflow and
13590 handling of undefined values.
13591
13592 2023-08-10 Jakub Jelinek <jakub@redhat.com>
13593
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.
13598
13599 2023-08-10 Richard Biener <rguenther@suse.de>
13600
13601 * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
13602 VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
13603
13604 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13605
13606 PR target/110962
13607 * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
13608
13609 2023-08-10 Pan Li <pan2.li@intel.com>
13610
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.
13618
13619 2023-08-10 Pan Li <pan2.li@intel.com>
13620
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.
13628
13629 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13630
13631 PR target/110964
13632 * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
13633
13634 2023-08-10 Richard Biener <rguenther@suse.de>
13635
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.
13647
13648 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13649
13650 * config/riscv/vector-iterators.md: Add missing modes.
13651
13652 2023-08-10 Jakub Jelinek <jakub@redhat.com>
13653
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.
13657
13658 2023-08-10 Jakub Jelinek <jakub@redhat.com>
13659
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.
13664
13665 2023-08-10 liuhongt <hongtao.liu@intel.com>
13666
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.
13677
13678 2023-08-10 Pan Li <pan2.li@intel.com>
13679 Kito Cheng <kito.cheng@sifive.com>
13680
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.
13699
13700 2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13701
13702 * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
13703 incorrect anticipate info.
13704
13705 2023-08-09 Tsukasa OI <research_trasio@irq.a4lg.com>
13706
13707 * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
13708 Remove 'Zve32d' from the version list.
13709
13710 2023-08-09 Jin Ma <jinma@linux.alibaba.com>
13711
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>
13716
13717 2023-08-09 Jivan Hakobyan <jivanhakobyan9@gmail.com>
13718
13719 * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
13720 (mem_shadd_or_shadd_rtx_p): New function.
13721
13722 2023-08-09 Andrew Pinski <apinski@marvell.com>
13723
13724 PR tree-optimization/110937
13725 PR tree-optimization/100798
13726 * match.pd (`a ? ~b : b`): Handle this
13727 case.
13728
13729 2023-08-09 Uros Bizjak <ubizjak@gmail.com>
13730
13731 * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
13732
13733 2023-08-09 Richard Ball <richard.ball@arm.com>
13734
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.
13738
13739 2023-08-09 Carl Love <cel@us.ibm.com>
13740
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.
13745
13746 2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13747
13748 PR target/110950
13749 * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
13750 stepped vector support.
13751
13752 2023-08-09 liuhongt <hongtao.liu@intel.com>
13753
13754 * common/config/i386/cpuinfo.h (get_available_features):
13755 Rename local variable subleaf_level to max_subleaf_level.
13756
13757 2023-08-09 Richard Biener <rguenther@suse.de>
13758
13759 PR rtl-optimization/110587
13760 * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
13761
13762 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
13763
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.
13768
13769 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
13770
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.
13793
13794 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
13795
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.
13891
13892 2023-08-09 liuhongt <hongtao.liu@intel.com>
13893
13894 * common/config/i386/cpuinfo.h (get_available_features): Check
13895 EAX for valid subleaf before use CPUID.
13896
13897 2023-08-08 Jeff Law <jlaw@ventanamicro.com>
13898
13899 * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
13900 for the temporary when canonicalizing the condition.
13901
13902 2023-08-08 Cupertino Miranda <cupertino.miranda@oracle.com>
13903
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.
13914
13915 2023-08-08 Uros Bizjak <ubizjak@gmail.com>
13916
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.
13950
13951 2023-08-08 Andrew Pinski <apinski@marvell.com>
13952
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.
13968
13969 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
13970
13971 * genmatch.cc: Log line numbers indirectly.
13972
13973 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
13974
13975 * genmatch.cc: Make sinfo map ordered.
13976 * Makefile.in: Require the ordered map header for genmatch.o.
13977
13978 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
13979
13980 * ordered-hash-map.h: Add get_or_insert.
13981 * ordered-hash-map-tests.cc: Use get_or_insert in tests.
13982
13983 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13984
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.
14008
14009 2023-08-08 Richard Biener <rguenther@suse.de>
14010
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.
14020
14021 2023-08-08 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14022
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.
14028
14029 2023-08-08 Richard Biener <rguenther@suse.de>
14030
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.
14036
14037 2023-08-08 yulong <shiyulong@iscas.ac.cn>
14038
14039 * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
14040
14041 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14042
14043 * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
14044 * config/riscv/vector.md: Ditto.
14045
14046 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14047
14048 * config/riscv/autovec.md: Add VLS shift.
14049
14050 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14051
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.
14055
14056 2023-08-07 Jonathan Wakely <jwakely@redhat.com>
14057
14058 * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
14059
14060 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
14061
14062 * configure: Regenerate.
14063
14064 2023-08-07 John Ericson <git@JohnEricson.me>
14065
14066 * configure: Regenerate.
14067
14068 2023-08-07 Alan Modra <amodra@gmail.com>
14069
14070 * configure: Regenerate.
14071
14072 2023-08-07 Alexander von Gluck IV <kallisti5@unixzen.com>
14073
14074 * configure: Regenerate.
14075
14076 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
14077
14078 * configure: Regenerate.
14079
14080 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
14081
14082 * configure: Regenerate.
14083
14084 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
14085
14086 * configure: Regenerate.
14087
14088 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
14089
14090 * configure: Regenerate.
14091
14092 2023-08-07 Jeff Law <jlaw@ventanamicro.com>
14093
14094 * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
14095 VOIDmode operands to conditional before canonicalization.
14096
14097 2023-08-07 Manolis Tsamis <manolis.tsamis@vrull.eu>
14098
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.
14102
14103 2023-08-07 Martin Jambor <mjambor@suse.cz>
14104
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.
14117
14118 2023-08-07 Raphael Zinsly <rzinsly@ventanamicro.com>
14119
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>
14127
14128 2023-08-07 Andrew Pinski <apinski@marvell.com>
14129
14130 PR tree-optimization/109959
14131 * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
14132 New patterns.
14133
14134 2023-08-07 Richard Biener <rguenther@suse.de>
14135
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.
14139
14140 2023-08-07 liuhongt <hongtao.liu@intel.com>
14141
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.
14152
14153 2023-08-07 Richard Biener <rguenther@suse.de>
14154
14155 * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
14156 around dumping code.
14157
14158 2023-08-07 liuhongt <hongtao.liu@intel.com>
14159
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.
14179
14180 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14181
14182 * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
14183
14184 2023-08-07 Jan Beulich <jbeulich@suse.com>
14185
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.
14224
14225 2023-08-07 Jan Beulich <jbeulich@suse.com>
14226
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.
14231
14232 2023-08-07 Jan Beulich <jbeulich@suse.com>
14233
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.
14239
14240 2023-08-07 Jan Beulich <jbeulich@suse.com>
14241
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.
14260
14261 2023-08-07 Jan Beulich <jbeulich@suse.com>
14262
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".
14285
14286 2023-08-07 Jan Beulich <jbeulich@suse.com>
14287
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.
14300
14301 2023-08-07 Jan Beulich <jbeulich@suse.com>
14302
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.
14307
14308 2023-08-07 Jan Beulich <jbeulich@suse.com>
14309
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.
14370
14371 2023-08-07 Jan Beulich <jbeulich@suse.com>
14372
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.
14389
14390 2023-08-07 Jan Beulich <jbeulich@suse.com>
14391
14392 * config/i386/i386.md (prefix_extra): Correct comment. Fold
14393 cases yielding 2 into ones yielding 1.
14394
14395 2023-08-07 Jan Hubicka <jh@suse.cz>
14396
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.
14400
14401 2023-08-07 Andrew Pinski <apinski@marvell.com>
14402
14403 PR tree-optimization/96695
14404 * match.pd (min_value, max_value): Extend to
14405 pointer types too.
14406
14407 2023-08-06 Jan Hubicka <jh@suse.cz>
14408
14409 * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
14410 __builtin_expect that CPU likely supports cpuid.
14411
14412 2023-08-06 Jan Hubicka <jh@suse.cz>
14413
14414 * tree-loop-distribution.cc (loop_distribution::execute): Disable
14415 distribution for loops with estimated iterations 0.
14416
14417 2023-08-06 Jan Hubicka <jh@suse.cz>
14418
14419 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
14420
14421 2023-08-04 Xiao Zeng <zengxiao@eswincomputing.com>
14422
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>
14427
14428 2023-08-04 Yan Simonaytes <simonaytes.yan@ispras.ru>
14429
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.
14438
14439 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
14440
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.
14449
14450 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
14451
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.
14456
14457 2023-08-04 Qing Zhao <qing.zhao@oracle.com>
14458
14459 * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
14460 new option.
14461
14462 2023-08-04 Vladimir N. Makarov <vmakarov@redhat.com>
14463
14464 * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
14465 against early clobber hard regs.
14466
14467 2023-08-04 Tamar Christina <tamar.christina@arm.com>
14468
14469 * doc/extend.texi: Document it.
14470
14471 2023-08-04 Tamar Christina <tamar.christina@arm.com>
14472
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.
14484
14485 2023-08-04 Tamar Christina <tamar.christina@arm.com>
14486
14487 * gensupport.cc (conlist): Support length 0 attribute.
14488
14489 2023-08-04 Tamar Christina <tamar.christina@arm.com>
14490
14491 * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
14492 (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
14493
14494 2023-08-04 Tamar Christina <tamar.christina@arm.com>
14495
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.
14502
14503 2023-08-04 Richard Biener <rguenther@suse.de>
14504
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.
14510
14511 2023-08-04 Matthew Malcomson <matthew.malcomson@arm.com>
14512
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.
14529
14530 2023-08-04 Richard Biener <rguenther@suse.de>
14531
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.
14535
14536 2023-08-04 Pan Li <pan2.li@intel.com>
14537
14538 Revert:
14539 2023-08-04 Pan Li <pan2.li@intel.com>
14540
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.
14551
14552 2023-08-04 Pan Li <pan2.li@intel.com>
14553
14554 Revert:
14555 2023-08-04 Pan Li <pan2.li@intel.com>
14556
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.
14564
14565 2023-08-04 Pan Li <pan2.li@intel.com>
14566
14567 Revert:
14568 2023-08-04 Pan Li <pan2.li@intel.com>
14569
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.
14577
14578 2023-08-04 Pan Li <pan2.li@intel.com>
14579
14580 Revert:
14581 2023-08-04 Pan Li <pan2.li@intel.com>
14582
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.
14590
14591 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
14592
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.
14600
14601 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
14602
14603 * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
14604 and PM_OFFSET entries.
14605
14606 2023-08-04 Andrew Pinski <apinski@marvell.com>
14607
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.
14615
14616 2023-08-04 Drew Ross <drross@redhat.com>
14617
14618 PR middle-end/101955
14619 * match.pd ((signed x << c) >> c): New canonicalization.
14620
14621 2023-08-04 Pan Li <pan2.li@intel.com>
14622
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.
14630
14631 2023-08-04 Pan Li <pan2.li@intel.com>
14632
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.
14640
14641 2023-08-04 Pan Li <pan2.li@intel.com>
14642
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.
14650
14651 2023-08-04 Hao Liu <hliu@os.amperecomputing.com>
14652
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.
14656
14657 2023-08-04 Pan Li <pan2.li@intel.com>
14658
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.
14669
14670 2023-08-04 Pan Li <pan2.li@intel.com>
14671
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.
14680
14681 2023-08-04 Pan Li <pan2.li@intel.com>
14682
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.
14694
14695 2023-08-03 Jan Hubicka <jh@suse.cz>
14696
14697 * tree-cfg.cc (print_loop_info): Print entry count.
14698
14699 2023-08-03 Jan Hubicka <jh@suse.cz>
14700
14701 * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
14702
14703 2023-08-03 Jan Hubicka <jh@suse.cz>
14704
14705 PR bootstrap/110857
14706 * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
14707 unadjusted_exit_count.
14708
14709 2023-08-03 Aldy Hernandez <aldyh@redhat.com>
14710
14711 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
14712 value/mask.
14713
14714 2023-08-03 Xiao Zeng <zengxiao@eswincomputing.com>
14715
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>
14721
14722 2023-08-03 Cupertino Miranda <cupertino.miranda@oracle.com>
14723
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.
14767
14768 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
14769
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.
14802
14803 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
14804
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.
14810
14811 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
14812
14813 * value-range.h (Value_Range::set_varying): Set the type.
14814 (Value_Range::set_zero): Ditto.
14815 (Value_Range::set_nonzero): Ditto.
14816
14817 2023-08-03 Jeff Law <jeffreyalaw@gmail.com>
14818
14819 * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
14820 recent commit.
14821
14822 2023-08-03 Pan Li <pan2.li@intel.com>
14823
14824 * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
14825
14826 2023-08-03 Richard Sandiford <richard.sandiford@arm.com>
14827
14828 * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
14829
14830 2023-08-03 Richard Biener <rguenther@suse.de>
14831
14832 PR tree-optimization/110838
14833 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
14834 Adjust the shift operand of RSHIFT_EXPRs.
14835
14836 2023-08-03 Richard Biener <rguenther@suse.de>
14837
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.
14842
14843 2023-08-03 Richard Biener <rguenther@suse.de>
14844
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.
14852
14853 2023-08-03 Richard Biener <rguenther@suse.de>
14854
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.
14859
14860 2023-08-03 Richard Biener <rguenther@suse.de>
14861
14862 * passes.def: Exchange loop splitting and final value
14863 replacement passes.
14864
14865 2023-08-03 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
14866
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.
14873
14874 2023-08-03 Alexandre Oliva <oliva@adacore.com>
14875
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.
14881
14882 2023-08-03 Yanzhang Wang <yanzhang.wang@intel.com>
14883
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.
14890
14891 2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
14892
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.
14900
14901 2023-08-03 Pan Li <pan2.li@intel.com>
14902
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.
14910
14911 2023-08-03 Andrew Pinski <apinski@marvell.com>
14912
14913 * match.pd (`~X & X`): Check that the types match.
14914 (`~x | x`, `~x ^ x`): Likewise.
14915
14916 2023-08-03 Pan Li <pan2.li@intel.com>
14917
14918 * config/riscv/riscv-vector-builtins-bases.h: Remove
14919 redudant declaration.
14920
14921 2023-08-03 Pan Li <pan2.li@intel.com>
14922
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.
14928
14929 2023-08-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
14930
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.
14934
14935 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
14936
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.
14940
14941 2023-08-02 Richard Biener <rguenther@suse.de>
14942
14943 * tree-phinodes.h (add_phi_node_to_bb): Remove.
14944 * tree-phinodes.cc (add_phi_node_to_bb): Make static.
14945
14946 2023-08-02 Jan Beulich <jbeulich@suse.com>
14947
14948 * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
14949 two of the alternatives.
14950
14951 2023-08-02 Richard Biener <rguenther@suse.de>
14952
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.
14957
14958 2023-08-02 Andrew Pinski <apinski@marvell.com>
14959
14960 * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
14961 the comparison operands before comparing them.
14962
14963 2023-08-02 Andrew Pinski <apinski@marvell.com>
14964
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.
14970
14971 2023-08-02 Andrew Pinski <apinski@marvell.com>
14972
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.
14977
14978 2023-08-02 Pan Li <pan2.li@intel.com>
14979
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.
14994
14995 2023-08-02 Jan Hubicka <jh@suse.cz>
14996
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.
15002
15003 2023-08-02 Jan Hubicka <jh@suse.cz>
15004
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.
15008
15009 2023-08-02 Richard Biener <rguenther@suse.de>
15010
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.
15016
15017 2023-08-02 liuhongt <hongtao.liu@intel.com>
15018
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.
15027
15028 2023-08-02 liuhongt <hongtao.liu@intel.com>
15029
15030 * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
15031 pre_reload define_insn_and_split.
15032
15033 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
15034
15035 * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
15036 using Zicond to implement some conditional moves.
15037
15038 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
15039
15040 * config/riscv/zicond.md: Use the X iterator instead of ANYI
15041 on the comparison input operands.
15042
15043 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
15044
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>
15050
15051 2023-08-02 Hu, Lin1 <lin1.hu@intel.com>
15052
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.
15060
15061 2023-08-01 Andreas Krebbel <krebbel@linux.ibm.com>
15062
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.
15067
15068 2023-08-01 Richard Ball <richard.ball@arm.com>
15069
15070 * gimple-fold.cc (fold_ctor_reference):
15071 Add support for poly_int.
15072
15073 2023-08-01 Georg-Johann Lay <avr@gjlay.de>
15074
15075 PR target/110220
15076 * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
15077 LABEL_NUSES of new conditional branch instruction.
15078
15079 2023-08-01 Jan Hubicka <jh@suse.cz>
15080
15081 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
15082 constant prologue peeling.
15083
15084 2023-08-01 Christophe Lyon <christophe.lyon@linaro.org>
15085
15086 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
15087
15088 2023-08-01 Pan Li <pan2.li@intel.com>
15089 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15090
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.
15107
15108 2023-08-01 Pan Li <pan2.li@intel.com>
15109
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.
15120
15121 2023-08-01 Andrew Pinski <apinski@marvell.com>
15122
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.
15126
15127 2023-07-31 Hamza Mahfooz <someguy@effective-light.com>
15128
15129 PR c/65213
15130 * doc/invoke.texi (-Wmissing-variable-declarations): Document
15131 new option.
15132
15133 2023-07-31 Andrew Pinski <apinski@marvell.com>
15134
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.
15139
15140 2023-07-31 Andrew Pinski <apinski@marvell.com>
15141
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)`.
15145
15146 2023-07-31 Andrew Pinski <apinski@marvell.com>
15147
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.
15154
15155 2023-07-31 Costas Argyris <costas.argyris@gmail.com>
15156
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.
15161
15162 2023-07-31 Andrew MacLeod <amacleod@redhat.com>
15163
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.
15167
15168 2023-07-31 David Malcolm <dmalcolm@redhat.com>
15169
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.
15205
15206 2023-07-31 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
15207
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.
15212
15213 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
15214
15215 * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
15216 variable.
15217 (expand_vector_init_insert_elems): Ditto.
15218
15219 2023-07-31 Hao Liu <hliu@os.amperecomputing.com>
15220
15221 PR target/110625
15222 * config/aarch64/aarch64.cc (count_ops): Only '* count' for
15223 single_defuse_cycle while counting reduction_latency.
15224
15225 2023-07-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15226
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.
15289
15290 2023-07-31 Roger Sayle <roger@nextmovesoftware.com>
15291
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.
15297
15298 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
15299
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.
15336
15337 2023-07-31 Pan Li <pan2.li@intel.com>
15338
15339 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
15340 Move rm suffix before mask.
15341
15342 2023-07-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15343
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.
15347
15348 2023-07-29 Roger Sayle <roger@nextmovesoftware.com>
15349
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.
15378
15379 2023-07-29 Jan Hubicka <jh@suse.cz>
15380
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.
15386
15387 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
15388
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.
15394
15395 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
15396
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.
15407
15408 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
15409
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.
15416
15417 2023-07-28 Jose E. Marchesi <jose.marchesi@oracle.com>
15418
15419 * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
15420 optimizations in BPF target.
15421
15422 2023-07-28 Honza <jh@ryzen4.suse.cz>
15423
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.
15438
15439 2023-07-28 Jan Hubicka <jh@suse.cz>
15440
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.
15446
15447 2023-07-28 Roger Sayle <roger@nextmovesoftware.com>
15448 Richard Biener <rguenther@suse.de>
15449
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.
15455
15456 2023-07-28 Jan Hubicka <jh@suse.cz>
15457
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.
15467
15468 2023-07-28 xuli <xuli1@eswincomputing.com>
15469
15470 * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
15471 vsadd[u] and vssub[u].
15472 * config/riscv/vector.md: Ditto.
15473
15474 2023-07-28 Jan Hubicka <jh@suse.cz>
15475
15476 * tree-ssa-loop-split.cc (split_loop): Also support NE driven
15477 loops when IV test is not overflowing.
15478
15479 2023-07-28 liuhongt <hongtao.liu@intel.com>
15480
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.
15485
15486 2023-07-27 David Faust <david.faust@oracle.com>
15487
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.
15501
15502 2023-07-27 David Faust <david.faust@oracle.com>
15503
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.
15509
15510 2023-07-27 David Faust <david.faust@oracle.com>
15511
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.
15515
15516 2023-07-27 Jan Hubicka <jh@suse.cz>
15517
15518 * tree-vect-loop.cc (optimize_mask_stores): Make store
15519 likely.
15520
15521 2023-07-27 Jan Hubicka <jh@suse.cz>
15522
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;
15531
15532 2023-07-27 Jan Hubicka <jh@suse.cz>
15533
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.
15548
15549 2023-07-27 Jan Hubicka <jh@suse.cz>
15550
15551 * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
15552 to guessed; fix count of new_bb.
15553
15554 2023-07-27 Jan Hubicka <jh@suse.cz>
15555
15556 * profile-count.h (profile_count::apply_probability): Fix
15557 handling of uninitialized probabilities, optimize scaling
15558 by probability 1.
15559
15560 2023-07-27 Richard Biener <rguenther@suse.de>
15561
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.
15566
15567 2023-07-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15568
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.
15595
15596 2023-07-27 Pan Li <pan2.li@intel.com>
15597
15598 * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
15599 (vread_csr): Ditto.
15600 (vwrite_csr): Ditto.
15601
15602 2023-07-27 demin.han <demin.han@starfivetech.com>
15603
15604 * config/riscv/autovec.md: Delete which_alternative use in split
15605
15606 2023-07-27 Richard Biener <rguenther@suse.de>
15607
15608 * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
15609 use a worklist ...
15610 (pass_sink_code::execute): ... in the caller.
15611
15612 2023-07-27 Kewen Lin <linkw@linux.ibm.com>
15613 Richard Biener <rguenther@suse.de>
15614
15615 PR tree-optimization/110776
15616 * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
15617 as scalar load.
15618
15619 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
15620
15621 * config/riscv/riscv.md: Include zicond.md
15622 * config/riscv/zicond.md: New file.
15623
15624 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
15625
15626 * common/config/riscv/riscv-common.cc: New extension.
15627 * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
15628 (TARGET_ZICOND): New target.
15629
15630 2023-07-26 Carl Love <cel@us.ibm.com>
15631
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.
15636
15637 2023-07-26 David Faust <david.faust@oracle.com>
15638
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.
15660
15661 2023-07-26 Matthew Malcomson <matthew.malcomson@arm.com>
15662
15663 * tree-vect-stmts.cc (get_group_load_store_type): Reformat
15664 comment.
15665
15666 2023-07-26 Carl Love <cel@us.ibm.com>
15667
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.
15696
15697 2023-07-26 David Malcolm <dmalcolm@redhat.com>
15698
15699 PR analyzer/104940
15700 * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
15701
15702 2023-07-26 Richard Biener <rguenther@suse.de>
15703
15704 PR tree-optimization/106081
15705 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
15706 Assign layout -1 to splats.
15707
15708 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15709
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.
15713
15714 2023-07-26 Li Xu <xuli1@eswincomputing.com>
15715
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.
15744
15745 2023-07-26 Uros Bizjak <ubizjak@gmail.com>
15746
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.
15804
15805 2023-07-26 Jose E. Marchesi <jose.marchesi@oracle.com>
15806
15807 * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
15808
15809 2023-07-26 Richard Biener <rguenther@suse.de>
15810
15811 PR tree-optimization/110799
15812 * tree-ssa-pre.cc (compute_avail): More thoroughly match
15813 up TBAA behavior of redundant loads.
15814
15815 2023-07-26 Jakub Jelinek <jakub@redhat.com>
15816
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.
15821
15822 2023-07-26 Kewen Lin <linkw@linux.ibm.com>
15823
15824 PR target/110741
15825 * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
15826 operands output with "x".
15827
15828 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15829
15830 * range-op.cc (class operator_absu): Add update_bitmask.
15831 (operator_absu::update_bitmask): New.
15832
15833 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15834
15835 * range-op-mixed.h (class operator_abs): Add update_bitmask.
15836 * range-op.cc (operator_abs::update_bitmask): New.
15837
15838 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15839
15840 * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
15841 * range-op.cc (operator_bitwise_not::update_bitmask): New.
15842
15843 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15844
15845 * range-op.cc (update_known_bitmask): Handle unary operators.
15846
15847 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
15848
15849 * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
15850
15851 2023-07-26 Jin Ma <jinma@linux.alibaba.com>
15852
15853 * config/riscv/riscv.md: Likewise.
15854
15855 2023-07-26 Jan Hubicka <jh@suse.cz>
15856
15857 * profile-count.cc (profile_count::to_sreal_scale): Value is not know
15858 if we divide by zero.
15859
15860 2023-07-25 David Faust <david.faust@oracle.com>
15861
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.
15869
15870 2023-07-25 Aldy Hernandez <aldyh@redhat.com>
15871
15872 * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
15873 (bit_value_mult_const): Same.
15874 (get_individual_bits): Same.
15875
15876 2023-07-25 Haochen Gui <guihaoc@gcc.gnu.org>
15877
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.
15888
15889 2023-07-24 David Faust <david.faust@oracle.com>
15890
15891 * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
15892
15893 2023-07-24 Drew Ross <drross@redhat.com>
15894 Jakub Jelinek <jakub@redhat.com>
15895
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.
15902
15903 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
15904
15905 * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
15906 single quote rather than backquote in diagnostic.
15907
15908 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
15909
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.
15916
15917 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
15918
15919 * config/riscv/riscv.cc (riscv_option_override): Spell out
15920 greater than and use cannot in diagnostic string.
15921
15922 2023-07-24 Richard Biener <rguenther@suse.de>
15923
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.
15957
15958 2023-07-24 Richard Biener <rguenther@suse.de>
15959
15960 * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
15961
15962 2023-07-24 Richard Biener <rguenther@suse.de>
15963
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.
15968
15969 2023-07-24 Robin Dapp <rdapp@ventanamicro.com>
15970
15971 * tree-vect-stmts.cc (vectorizable_conversion): Handle
15972 more demotion/promotion for modifier == NONE.
15973
15974 2023-07-24 Roger Sayle <roger@nextmovesoftware.com>
15975
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.
16006
16007 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
16008
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.
16013
16014 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
16015
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.
16024
16025 2023-07-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16026
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.
16034
16035 2023-07-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16036
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.
16041
16042 2023-07-24 Richard Biener <rguenther@suse.de>
16043
16044 PR tree-optimization/110777
16045 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
16046 Avoid propagating abnormals.
16047
16048 2023-07-24 Richard Biener <rguenther@suse.de>
16049
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.
16054
16055 2023-07-24 Kewen Lin <linkw@linux.ibm.com>
16056
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.
16060
16061 2023-07-24 Pan Li <pan2.li@intel.com>
16062
16063 * config/riscv/riscv-vector-builtins-shapes.cc
16064 (struct alu_frm_def): Take range check.
16065
16066 2023-07-22 Vineet Gupta <vineetg@rivosinc.com>
16067
16068 PR target/110748
16069 * config/riscv/predicates.md (const_0_operand): Add back
16070 const_double.
16071
16072 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
16073
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).
16077
16078 2023-07-22 Andrew Pinski <apinski@marvell.com>
16079
16080 PR target/110778
16081 * rtl.h (extended_count): Change last argument type
16082 to bool.
16083
16084 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
16085
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.
16113
16114 2023-07-22 Jeff Law <jlaw@ventanamicro.com>
16115
16116 * config/bfin/bfin.md (ones): Fix length computation.
16117
16118 2023-07-22 Vladimir N. Makarov <vmakarov@redhat.com>
16119
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.
16123
16124 2023-07-21 Roger Sayle <roger@nextmovesoftware.com>
16125 Richard Biener <rguenther@suse.de>
16126
16127 PR c/110699
16128 * gimplify.cc (gimplify_compound_lval): If the array's type
16129 is error_mark_node then return GS_ERROR.
16130
16131 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
16132
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.
16143
16144 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
16145
16146 * config/bpf/bpf.md: fixed template for neg instruction.
16147
16148 2023-07-21 Jan Hubicka <jh@suse.cz>
16149
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.
16154
16155 2023-07-21 Jan Hubicka <jh@suse.cz>
16156
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.
16160
16161 2023-07-21 Jan Hubicka <jh@suse.cz>
16162
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
16168
16169 2023-07-21 Iain Sandoe <iain@sandoe.co.uk>
16170
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'.
16176
16177 2023-07-21 Jan Hubicka <jh@suse.cz>
16178
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
16185
16186 2023-07-21 Jan Hubicka <jh@suse.cz>
16187
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.
16197
16198 2023-07-21 Jan Hubicka <jh@suse.cz>
16199
16200 * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
16201 tests first; update finite_p flag.
16202
16203 2023-07-21 Jan Hubicka <jh@suse.cz>
16204
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.
16210
16211 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16212
16213 * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
16214
16215 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16216
16217 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
16218 (vectorizable_operation): Ditto.
16219
16220 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16221
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.
16237
16238 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16239
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.
16323
16324 2023-07-21 Haochen Jiang <haochen.jiang@intel.com>
16325
16326 * config/i386/i386.opt: Fix a typo.
16327
16328 2023-07-21 Richard Biener <rguenther@suse.de>
16329
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.
16334
16335 2023-07-21 Andrew Pinski <apinski@marvell.com>
16336
16337 * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
16338 transformation.
16339
16340 2023-07-21 Richard Biener <rguenther@suse.de>
16341
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.
16348
16349 2023-07-21 Jan Hubicka <jh@suse.cz>
16350
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
16363
16364 2023-07-21 Kewen Lin <linkw@linux.ibm.com>
16365
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.
16369
16370 2023-07-21 liuhongt <hongtao.liu@intel.com>
16371
16372 PR target/89701
16373 * common.opt: (fcf-protection=): Add EnumSet attribute to
16374 support combination of params.
16375
16376 2023-07-21 David Malcolm <dmalcolm@redhat.com>
16377
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".
16386
16387 2023-07-20 Uros Bizjak <ubizjak@gmail.com>
16388
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.
16400
16401 2023-07-20 Vladimir N. Makarov <vmakarov@redhat.com>
16402
16403 * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
16404 simplification.
16405
16406 2023-07-20 Andrew Pinski <apinski@marvell.com>
16407
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.
16421
16422 2023-07-20 Jan Hubicka <jh@suse.cz>
16423
16424 * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
16425 logical ops.
16426
16427 2023-07-20 Martin Jambor <mjambor@suse.cz>
16428
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.
16433
16434 2023-07-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16435
16436 * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
16437 Refine code structure.
16438
16439 2023-07-20 Jan Hubicka <jh@suse.cz>
16440
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.
16451
16452 2023-07-20 Richard Biener <rguenther@suse.de>
16453
16454 PR tree-optimization/110204
16455 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
16456 Look through copies generated by PRE.
16457
16458 2023-07-20 Matthew Malcomson <matthew.malcomson@arm.com>
16459
16460 * tree-vect-stmts.cc (get_group_load_store_type): Account for
16461 `gap` when checking if need to peel twice.
16462
16463 2023-07-20 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
16464
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.
16471
16472 2023-07-20 Pan Li <pan2.li@intel.com>
16473
16474 * config/riscv/vector.md: Fix incorrect match_operand.
16475
16476 2023-07-20 Roger Sayle <roger@nextmovesoftware.com>
16477
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.
16487
16488 2023-07-20 Richard Biener <rguenther@suse.de>
16489
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.
16498
16499 2023-07-20 Pan Li <pan2.li@intel.com>
16500
16501 * config/riscv/vector.md: Align pattern format.
16502
16503 2023-07-20 Haochen Jiang <haochen.jiang@intel.com>
16504
16505 * doc/invoke.texi: Remove AVX512VP2INTERSECT in
16506 Granite Rapids{, D} from documentation.
16507
16508 2023-07-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16509
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.
16662
16663 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
16664
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.
16677
16678 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
16679
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.
16686
16687 2023-07-19 Andrew Pinski <apinski@marvell.com>
16688
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.
16696
16697 2023-07-19 Andrew Pinski <apinski@marvell.com>
16698
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.
16710
16711 2023-07-19 Andrew Pinski <apinski@marvell.com>
16712
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.
16717
16718 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16719
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.
16726
16727 2023-07-19 Jakub Jelinek <jakub@redhat.com>
16728
16729 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
16730
16731 2023-07-19 Jakub Jelinek <jakub@redhat.com>
16732
16733 PR tree-optimization/110731
16734 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
16735 divisor as UNSIGNED regardless of sgn.
16736
16737 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
16738
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.
16745
16746 2023-07-19 Jan Beulich <jbeulich@suse.com>
16747
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.
16754
16755 2023-07-19 Jan Beulich <jbeulich@suse.com>
16756
16757 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
16758 alternative. Move AVX512VL part of condition to new "enabled"
16759 attribute.
16760
16761 2023-07-19 liuhongt <hongtao.liu@intel.com>
16762
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.
16786
16787 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
16788
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.
16817
16818 2023-07-18 Jan Hubicka <jh@suse.cz>
16819
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.
16832
16833 2023-07-18 Jason Merrill <jason@redhat.com>
16834
16835 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
16836
16837 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
16838
16839 * doc/gm2.texi (Semantic checking): Change example testwithptr
16840 to testnew6.
16841
16842 2023-07-18 Richard Biener <rguenther@suse.de>
16843
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.
16848
16849 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16850
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.
16854
16855 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16856
16857 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
16858 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
16859
16860 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
16861
16862 * config/s390/vx-builtins.md: New vsel pattern.
16863
16864 2023-07-18 liuhongt <hongtao.liu@intel.com>
16865
16866 PR target/110438
16867 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
16868 Remove # from assemble output.
16869
16870 2023-07-18 liuhongt <hongtao.liu@intel.com>
16871
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.
16876
16877 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16878
16879 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
16880
16881 2023-07-18 Pan Li <pan2.li@intel.com>
16882 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16883
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.
16899
16900 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
16901
16902 * doc/extend.texi: Add @cindex on __auto_type.
16903
16904 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
16905
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.
16909
16910 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
16911
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.
16963
16964 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
16965
16966 PR plugins/110610
16967 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
16968
16969 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
16970
16971 * ira.cc (setup_reg_class_relations): Continue
16972 if regclass cl3 is hard_reg_set_empty_p.
16973
16974 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16975
16976 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
16977
16978 2023-07-17 Martin Jambor <mjambor@suse.cz>
16979
16980 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
16981 entry_count.
16982
16983 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
16984
16985 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
16986
16987 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
16988
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.
16995
16996 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16997
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.
17019
17020 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
17021
17022 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
17023
17024 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
17025
17026 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
17027 Remove parameter name from declaration of unused parameter.
17028
17029 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
17030
17031 PR tree-optimization/110652
17032 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
17033 NULL_TREE.
17034
17035 2023-07-17 Richard Biener <rguenther@suse.de>
17036
17037 PR tree-optimization/110669
17038 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
17039 Check we matched a header PHI.
17040
17041 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
17042
17043 * tree-ssanames.cc (set_bitmask): New.
17044 * tree-ssanames.h (set_bitmask): New.
17045
17046 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
17047
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.
17052
17053 2023-07-17 Andrew Pinski <apinski@marvell.com>
17054
17055 PR tree-optimization/95923
17056 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
17057
17058 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
17059
17060 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
17061 to the std::sort comparison lambda function const.
17062
17063 2023-07-17 Andrew Pinski <apinski@marvell.com>
17064
17065 PR tree-optimization/110666
17066 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
17067
17068 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
17069
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.
17090
17091 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
17092
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.
17098
17099 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
17100
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.
17127
17128 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
17129
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.
17161
17162 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
17163
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.
17195
17196 2023-07-17 Kong Lingling <lingling.kong@intel.com>
17197 Haochen Jiang <haochen.jiang@intel.com>
17198
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.
17225
17226 2023-07-16 Jan Hubicka <jh@suse.cz>
17227
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.
17232
17233 2023-07-16 Jan Hubicka <jh@suse.cz>
17234
17235 PR tree-optimization/110649
17236 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
17237 probability of the if-then-else construct.
17238
17239 2023-07-16 Jan Hubicka <jh@suse.cz>
17240
17241 PR middle-end/110649
17242 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
17243
17244 2023-07-15 Andrew Pinski <apinski@marvell.com>
17245
17246 * doc/contrib.texi: Update my entry.
17247
17248 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
17249
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.
17263
17264 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17265
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.
17323
17324 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17325
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.
17340
17341 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17342
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.
17421
17422 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17423
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>.
17439
17440 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17441
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.
17606
17607 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
17608
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.
17643
17644 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
17645
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.
17651
17652 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
17653
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.
17658
17659 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
17660
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.
17667
17668 2023-07-14 Jan Hubicka <jh@suse.cz>
17669
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.
17686
17687 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17688
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.
17694
17695 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
17696
17697 PR target/110657
17698 * config/bpf/bpf.md: Enable instruction scheduling.
17699
17700 2023-07-14 Tamar Christina <tamar.christina@arm.com>
17701
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.
17712
17713 2023-07-14 Tamar Christina <tamar.christina@arm.com>
17714
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.
17719
17720 2023-07-14 Richard Biener <rguenther@suse.de>
17721
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.
17730
17731 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
17732
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.
17739
17740 2023-07-14 Die Li <lidie@eswincomputing.com>
17741
17742 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
17743
17744 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
17745
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.
17749
17750 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
17751
17752 PR target/107841
17753 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
17754 deallocate alloca-only frame.
17755
17756 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
17757
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.
17762
17763 2023-07-13 Carl Love <cel@us.ibm.com>
17764
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.
17774
17775 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
17776
17777 PR target/106966
17778 * config/alpha/alpha.cc (alpha_emit_set_long_const):
17779 Always use DImode when constructing long const.
17780
17781 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
17782
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.
17788
17789 2023-07-13 Andrew Pinski <apinski@marvell.com>
17790
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.
17797
17798 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
17799
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.
17808
17809 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17810
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.
17821
17822 2023-07-13 Pan Li <pan2.li@intel.com>
17823
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.
17834
17835 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17836
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.
17840
17841 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17842
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.
17848
17849 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17850
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.
17855
17856 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17857
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.
17862
17863 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17864
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.
17870
17871 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17872
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.
17878
17879 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17880
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.
17886
17887 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17888
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.
17894
17895 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17896
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.
17900
17901 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
17902
17903 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
17904
17905 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17906
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.
17948
17949 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17950
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.
17960
17961 2023-07-12 Jan Hubicka <jh@suse.cz>
17962
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.
17970
17971 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
17972
17973 PR tree-optimization/107043
17974 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
17975
17976 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
17977
17978 PR tree-optimization/107053
17979 * gimple-range-op.cc (cfn_popcount): Use known set bits.
17980
17981 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
17982
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.
17988
17989 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
17990
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.
17994
17995 2023-07-12 Jan Hubicka <jh@suse.cz>
17996
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.
18005
18006 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
18007
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.
18056
18057 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18058
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.
18065
18066 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
18067
18068 PR target/91681
18069 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
18070
18071 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
18072
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.
18077
18078 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
18079
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.
18084
18085 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
18086
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.
18091
18092 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
18093
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.
18100
18101 2023-07-12 Richard Biener <rguenther@suse.de>
18102
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.
18107
18108 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18109
18110 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
18111 (umul<mode>3_highpart): Ditto.
18112
18113 2023-07-12 Jan Beulich <jbeulich@suse.com>
18114
18115 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
18116 alternative. Adjust original last alternative's "prefix"
18117 attribute to maybe_evex.
18118
18119 2023-07-12 Jan Beulich <jbeulich@suse.com>
18120
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.
18125
18126 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18127
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.
18131
18132 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18133
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().
18143
18144 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18145
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.
18152
18153 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18154
18155 * config/riscv/riscv.h (Xmode): New macro.
18156
18157 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18158
18159 * config/riscv/riscv.cc (riscv_print_operand_address): Use
18160 output_addr_const rather than riscv_print_operand.
18161
18162 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18163
18164 * config/riscv/thead.md: Adjust constraints of th_addsl.
18165
18166 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18167
18168 * config/riscv/thead.cc (th_mempair_operands_p):
18169 Fix documentation of th_mempair_order_operands().
18170
18171 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18172
18173 * config/riscv/thead.cc (th_mempair_save_regs):
18174 Emit REG_FRAME_RELATED_EXPR notes in prologue.
18175
18176 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
18177
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.
18183
18184 2023-07-12 liuhongt <hongtao.liu@intel.com>
18185
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.
18204
18205 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
18206
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.
18219
18220 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
18221
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.
18226
18227 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18228
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.
18233
18234 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
18235
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.
18264
18265 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
18266
18267 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
18268
18269 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18270
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.
18302
18303 2023-07-11 Richard Biener <rguenther@suse.de>
18304
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.
18308
18309 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
18310
18311 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
18312 MEM_P usage.
18313 (vsx_quad_dform_memory_operand): Likewise.
18314
18315 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
18316
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.
18347
18348 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
18349
18350 * doc/extend.texi (RISC-V Operand Modifiers): New.
18351
18352 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18353
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.
18359
18360 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
18361
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.
18370
18371 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
18372
18373 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
18374
18375 2023-07-10 Xi Ruoyao <xry111@xry111.site>
18376
18377 PR tree-optimization/110557
18378 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
18379 Ensure the output sign-extended if necessary.
18380
18381 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
18382
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.
18387
18388 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
18389
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.
18394
18395 2023-07-10 liuhongt <hongtao.liu@intel.com>
18396
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.
18401
18402 2023-07-09 Jan Hubicka <jh@suse.cz>
18403
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.
18409
18410 2023-07-08 Jan Hubicka <jh@suse.cz>
18411
18412 PR tree-optimization/110600
18413 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
18414
18415 2023-07-08 Jan Hubicka <jh@suse.cz>
18416
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.
18422
18423 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
18424
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.
18440
18441 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
18442
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.
18478
18479 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
18480
18481 PR c++/110595
18482 PR c++/110596
18483 * doc/invoke.texi (Warning Options): Fix typos.
18484
18485 2023-07-07 Jan Hubicka <jh@suse.cz>
18486
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.
18492
18493 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
18494
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.
18501
18502 2023-07-07 Jan Hubicka <jh@suse.cz>
18503
18504 * predict.cc (force_edge_cold): Use
18505 set_edge_probability_and_rescale_others; improve dumps.
18506
18507 2023-07-07 Jan Hubicka <jh@suse.cz>
18508
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.
18513
18514 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
18515
18516 * config/s390/s390.cc (vec_init): Fix default case
18517
18518 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
18519
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.
18529
18530 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
18531
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.
18536
18537 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
18538
18539 * value-range.cc (irange::intersect): Leave normalization to
18540 caller.
18541
18542 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
18543
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.
18596
18597 2023-07-07 Jan Beulich <jbeulich@suse.com>
18598
18599 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
18600
18601 2023-07-07 Jan Beulich <jbeulich@suse.com>
18602
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.
18607
18608 2023-07-07 Pan Li <pan2.li@intel.com>
18609 Robin Dapp <rdapp@ventanamicro.com>
18610
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.
18617
18618 2023-07-07 Pan Li <pan2.li@intel.com>
18619
18620 * config/riscv/vector.md: Fix typo.
18621
18622 2023-07-06 Jan Hubicka <jh@suse.cz>
18623
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.
18628
18629 2023-07-06 Jan Hubicka <jh@suse.cz>
18630
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.
18637
18638 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
18639
18640 PR tree-optimization/110449
18641 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
18642 vec_loop for the unrolled loop.
18643
18644 2023-07-06 Jan Hubicka <jh@suse.cz>
18645
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.
18650
18651 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
18652
18653 * doc/extend.texi (ARC Built-in Functions): Update documentation
18654 with missing builtins.
18655
18656 2023-07-06 Richard Biener <rguenther@suse.de>
18657
18658 PR tree-optimization/110556
18659 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
18660 assign code and all operands of non-stores.
18661
18662 2023-07-06 Richard Biener <rguenther@suse.de>
18663
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.
18672
18673 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18674
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'.
18678
18679 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18680
18681 * gengtype-parse.cc: Clean up obsolete parametrized structs
18682 remnants.
18683 * gengtype.cc: Likewise.
18684 * gengtype.h: Likewise.
18685
18686 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18687
18688 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
18689 Adjust all users.
18690
18691 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18692
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'.
18696
18697 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18698
18699 * doc/gty.texi (GTY Options) <string_length>: Enhance.
18700
18701 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18702
18703 * gengtype.cc (write_root, write_roots): Explicitly reject
18704 'string_length' option.
18705 * doc/gty.texi (GTY Options) <string_length>: Document.
18706
18707 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
18708
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.
18713
18714 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
18715
18716 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
18717
18718 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
18719
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.
18723
18724 2023-07-06 Richard Biener <rguenther@suse.de>
18725
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.
18730
18731 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18732
18733 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
18734
18735 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
18736
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.
18742
18743 2023-07-06 liuhongt <hongtao.liu@intel.com>
18744
18745 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
18746 DF/SFmode AND/IOR/XOR/ANDN operations.
18747
18748 2023-07-06 Andrew Pinski <apinski@marvell.com>
18749
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.
18755
18756 2023-07-06 liuhongt <hongtao.liu@intel.com>
18757
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 '?'.
18762
18763 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
18764
18765 PR target/106907
18766 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
18767 initialization of new_addr.
18768
18769 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
18770
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.
18774
18775 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
18776
18777 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
18778 call.
18779
18780 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
18781
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.
18788
18789 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
18790
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.
18797
18798 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
18799
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.
18803
18804 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
18805
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.
18810
18811 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
18812
18813 * doc/contrib.texi (Contributors): Update my entry.
18814
18815 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
18816
18817 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
18818 prob calculation.
18819
18820 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
18821
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.
18854
18855 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
18856
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.
18869
18870 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
18871
18872 * config/riscv/autovec.md: Add gen_lowpart.
18873
18874 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
18875
18876 * config/riscv/autovec.md: Allow register index operand.
18877
18878 2023-07-05 Pan Li <pan2.li@intel.com>
18879
18880 * config/riscv/riscv-vector-builtins.cc
18881 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
18882
18883 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
18884
18885 * config/riscv/autovec.md: Use float_truncate.
18886
18887 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18888
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.
18900
18901 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
18902 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18903
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.
18910
18911 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
18912
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.
18917
18918 2023-07-05 Jan Beulich <jbeulich@suse.com>
18919
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.
18925
18926 2023-07-05 Jan Beulich <jbeulich@suse.com>
18927
18928 PR target/100711
18929 * config/i386/sse.md: New splitters to simplify
18930 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
18931
18932 2023-07-05 Jan Beulich <jbeulich@suse.com>
18933
18934 PR target/100711
18935 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
18936 form of splitter for PR target/100711.
18937
18938 2023-07-05 Richard Biener <rguenther@suse.de>
18939
18940 PR middle-end/110541
18941 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
18942 reality.
18943
18944 2023-07-05 Jan Beulich <jbeulich@suse.com>
18945
18946 PR target/93768
18947 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
18948 for memory form operand 1.
18949
18950 2023-07-05 Jan Beulich <jbeulich@suse.com>
18951
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.
18961
18962 2023-07-05 Richard Biener <rguenther@suse.de>
18963
18964 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
18965
18966 2023-07-05 yulong <shiyulong@iscas.ac.cn>
18967
18968 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
18969
18970 2023-07-05 yulong <shiyulong@iscas.ac.cn>
18971
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.
19031
19032 2023-07-04 Andrew Pinski <apinski@marvell.com>
19033
19034 PR tree-optimization/110487
19035 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
19036 build a nonstandard integer and use that.
19037
19038 2023-07-04 Andrew Pinski <apinski@marvell.com>
19039
19040 * match.pd (a?-1:0): Cast type an integer type
19041 rather the type before the negative.
19042 (a?0:-1): Likewise.
19043
19044 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19045
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.
19051
19052 2023-07-04 Richard Biener <rguenther@suse.de>
19053
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.
19058
19059 2023-07-04 Pan Li <pan2.li@intel.com>
19060 Thomas Schwinge <thomas@codesourcery.com>
19061
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'.
19073
19074 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
19075
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.
19091
19092 2023-07-04 Richard Biener <rguenther@suse.de>
19093
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.
19098
19099 2023-07-04 Richard Biener <rguenther@suse.de>
19100
19101 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
19102 check guarding scalar_niter underflow.
19103
19104 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
19105
19106 PR tree-optimization/110531
19107 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
19108 slp_done_for_suggested_uf to false.
19109
19110 2023-07-04 Richard Biener <rguenther@suse.de>
19111
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.
19116
19117 2023-07-04 Richard Biener <rguenther@suse.de>
19118
19119 PR tree-optimization/110436
19120 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
19121 force live but not relevant pattern stmts relevant.
19122
19123 2023-07-04 Lili Cui <lili.cui@intel.com>
19124
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.
19127
19128 2023-07-04 Richard Biener <rguenther@suse.de>
19129
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.
19136
19137 2023-07-04 Richard Biener <rguenther@suse.de>
19138
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.
19150
19151 2023-07-04 Pan Li <pan2.li@intel.com>
19152
19153 Revert:
19154 2023-07-03 Pan Li <pan2.li@intel.com>
19155
19156 * config/riscv/vector.md: Fix typo.
19157
19158 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19159
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.
19172
19173 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19174
19175 * config/riscv/riscv-vsetvl.cc
19176 (vector_insn_info::parse_insn): Add early break.
19177
19178 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
19179
19180 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
19181 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
19182
19183 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
19184
19185 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
19186
19187 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
19188
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.
19225
19226 2023-07-03 Andrew Pinski <apinski@marvell.com>
19227
19228 PR middle-end/110510
19229 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
19230
19231 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
19232
19233 * config/darwin.h: Avoid duplicate multiply_defined specs on
19234 earlier Darwin versions with shared libgcc.
19235
19236 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
19237
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.
19255
19256 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19257
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.
19279
19280 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
19281
19282 PR modula2/110125
19283 * doc/gm2.texi (Semantic checking): Include examples using
19284 -Wuninit-variable-checking.
19285
19286 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19287
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.
19294
19295 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19296
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.
19301
19302 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
19303
19304 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
19305 the index to be 0 or 1.
19306
19307 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
19308
19309 Revert:
19310 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19311
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.
19318
19319 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19320
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.
19327
19328 2023-07-03 Pan Li <pan2.li@intel.com>
19329
19330 * config/riscv/vector.md: Fix typo.
19331
19332 2023-07-03 Richard Biener <rguenther@suse.de>
19333
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.
19337
19338 2023-07-03 Richard Biener <rguenther@suse.de>
19339
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.
19343
19344 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19345
19346 * config/mips/mips.md(*and<mode>3_mips16): Generates
19347 ZEB/ZEH instructions.
19348
19349 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19350
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.
19359
19360 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19361
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.
19366
19367 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19368
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`.
19378
19379 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19380
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
19386
19387 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19388
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.
19408
19409 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19410
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`.
19420
19421 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19422
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.
19429
19430 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
19431
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..
19441
19442 2023-07-02 Jakub Jelinek <jakub@redhat.com>
19443
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.
19447
19448 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19449
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.
19454
19455 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19456
19457 * config/xtensa/xtensa.md (*eqne_INT_MIN):
19458 Add missing ":SI" to the match_operator.
19459
19460 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
19461
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.
19469
19470 2023-07-01 Jan Hubicka <jh@suse.cz>
19471
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.
19478
19479 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
19480
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.
19493
19494 2023-07-01 Jan Hubicka <jh@suse.cz>
19495
19496 PR tree-optimization/103680
19497 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
19498 make message clearer.
19499
19500 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
19501
19502 PR tree-optimization/101832
19503 * tree-object-size.cc (addr_object_size): Handle structure/union type
19504 when it has flexible size.
19505
19506 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
19507
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.
19513
19514 2023-06-30 Jan Hubicka <jh@suse.cz>
19515
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.
19524
19525 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
19526
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.
19555
19556 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
19557
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.
19564
19565 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
19566
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.
19582
19583 2023-06-30 Pan Li <pan2.li@intel.com>
19584
19585 * config/riscv/vector.md: Refactor the common condition.
19586
19587 2023-06-30 Richard Biener <rguenther@suse.de>
19588
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.
19592
19593 2023-06-30 Richard Biener <rguenther@suse.de>
19594
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.
19600
19601 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
19602 Thomas Schwinge <thomas@codesourcery.com>
19603
19604 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
19605
19606 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
19607
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.
19614
19615 2023-06-29 Jan Hubicka <jh@suse.cz>
19616
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.
19622
19623 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
19624
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.
19628
19629 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
19630
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.
19639
19640 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
19641
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.
19645
19646 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
19647
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.
19664
19665 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
19666
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.
19690
19691 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
19692
19693 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
19694 element_precision.
19695
19696 2023-06-29 Richard Biener <rguenther@suse.de>
19697
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.
19701
19702 2023-06-29 Lili Cui <lili.cui@intel.com>
19703
19704 PR tree-optimization/110148
19705 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
19706 ops in this function.
19707
19708 2023-06-29 Richard Biener <rguenther@suse.de>
19709
19710 PR middle-end/110452
19711 * expr.cc (store_constructor): Handle uniform boolean
19712 vectors with integer mode specially.
19713
19714 2023-06-29 Richard Biener <rguenther@suse.de>
19715
19716 PR middle-end/110461
19717 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
19718 for VECTOR_TYPE_P.
19719
19720 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
19721
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.
19725
19726 2023-06-29 Pan Li <pan2.li@intel.com>
19727
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.
19740
19741 2023-06-29 Pan Li <pan2.li@intel.com>
19742
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.
19761
19762 2023-06-29 Cui, Lili <lili.cui@intel.com>
19763
19764 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
19765 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
19766
19767 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
19768
19769 PR target/110144
19770 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
19771 to insn before validating it.
19772
19773 2023-06-28 Jan Hubicka <jh@suse.cz>
19774
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.
19786
19787 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
19788
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.
19809
19810 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
19811
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.
19817
19818 2023-06-28 Richard Biener <rguenther@suse.de>
19819
19820 PR tree-optimization/110434
19821 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
19822 VAR we replace with <retval>.
19823
19824 2023-06-28 Richard Biener <rguenther@suse.de>
19825
19826 PR tree-optimization/110451
19827 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
19828 tcc_comparison are expensive.
19829
19830 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
19831
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.
19841
19842 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
19843
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.
19848
19849 2023-06-28 Richard Biener <rguenther@suse.de>
19850
19851 PR tree-optimization/110443
19852 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
19853 gather loads.
19854
19855 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
19856
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.
19863
19864 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19865
19866 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
19867 (*single_widen_fma<mode>): Ditto.
19868
19869 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
19870
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.
19887
19888 2023-06-28 Jan Hubicka <jh@suse.cz>
19889
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.
19894
19895 2023-06-28 Richard Biener <rguenther@suse.de>
19896
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.
19907
19908 2023-06-28 Alexandre Oliva <oliva@adacore.com>
19909
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.
19917
19918 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19919
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.
19925
19926 2023-06-28 liuhongt <hongtao.liu@intel.com>
19927
19928 * config/i386/i386.cc (ix86_invalid_conversion): New function.
19929 (TARGET_INVALID_CONVERSION): Define as
19930 ix86_invalid_conversion.
19931
19932 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19933
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.
19940
19941 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19942
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.
19950
19951 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19952
19953 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
19954 expander.
19955
19956 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19957
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.
19968
19969 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19970
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.
19976
19977 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
19978
19979 * match.pd: Use element_mode and check if target supports
19980 operation with new type.
19981
19982 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19983
19984 * config/aarch64/aarch64-sve-builtins-base.cc
19985 (svdupq_impl::fold_nonconst_dupq): New method.
19986 (svdupq_impl::fold): Call fold_nonconst_dupq.
19987
19988 2023-06-27 Andrew Pinski <apinski@marvell.com>
19989
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.
19994
19995 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
19996
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.
20002
20003 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
20004
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.
20013
20014 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
20015
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.
20024
20025 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
20026
20027 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
20028 as a probable initializer rather than a probable complete statement.
20029
20030 2023-06-27 Richard Biener <rguenther@suse.de>
20031
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.
20043
20044 2023-06-27 liuhongt <hongtao.liu@intel.com>
20045
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.
20052
20053 2023-06-27 liuhongt <hongtao.liu@intel.com>
20054
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.
20061
20062 2023-06-27 liuhongt <hongtao.liu@intel.com>
20063
20064 PR target/82735
20065 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
20066 vzeroupper for vzeroupper call_insn.
20067
20068 2023-06-27 Andrew Pinski <apinski@marvell.com>
20069
20070 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
20071 defbuiltin usage.
20072
20073 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20074
20075 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
20076 with base != 0.
20077
20078 2023-06-26 Andrew Pinski <apinski@marvell.com>
20079
20080 * doc/extend.texi (access attribute): Add
20081 cindex for it.
20082 (interrupt/interrupt_handler attribute):
20083 Likewise.
20084
20085 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20086
20087 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
20088 Use <DWI> instead of <V2XWIDE>.
20089 (aarch64_sqrshrun_n<mode>): Likewise.
20090
20091 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20092
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.
20113
20114 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
20115
20116 * config/s390/s390.cc (s390_encode_section_info): Set
20117 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
20118 misaligned.
20119
20120 2023-06-26 Jan Hubicka <jh@suse.cz>
20121
20122 PR tree-optimization/109849
20123 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
20124 count of newly constructed forwarder block.
20125
20126 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
20127
20128 * doc/optinfo.texi: Fix "steam" -> "stream".
20129
20130 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20131
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.
20135
20136 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20137
20138 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
20139 fold of LOAD/STORE with length.
20140
20141 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
20142
20143 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
20144 Check for interdependence between operands 1 and 2.
20145
20146 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
20147
20148 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
20149 into account when costing non-widening/truncating conversions.
20150
20151 2023-06-26 Richard Biener <rguenther@suse.de>
20152
20153 PR tree-optimization/110381
20154 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
20155 Materialize permutes before fold-left reductions.
20156
20157 2023-06-26 Pan Li <pan2.li@intel.com>
20158
20159 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
20160
20161 2023-06-26 Richard Biener <rguenther@suse.de>
20162
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.
20166
20167 2023-06-26 Richard Biener <rguenther@suse.de>
20168
20169 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
20170 Use element_precision.
20171
20172 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20173
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.
20179
20180 2023-06-26 Richard Biener <rguenther@suse.de>
20181
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.
20185
20186 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20187
20188 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
20189 "length".
20190
20191 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
20192
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.
20199
20200 2023-06-26 liuhongt <hongtao.liu@intel.com>
20201
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.
20207
20208 2023-06-26 liuhongt <hongtao.liu@intel.com>
20209
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.
20214
20215 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
20216
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.
20220
20221 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20222
20223 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
20224 AVL propagation.
20225 * config/riscv/riscv-vsetvl.h: New function.
20226
20227 2023-06-25 Li Xu <xuli1@eswincomputing.com>
20228
20229 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
20230 emit_move_insn
20231
20232 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20233
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.
20248
20249 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20250
20251 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
20252 argument index.
20253
20254 2023-06-25 Pan Li <pan2.li@intel.com>
20255
20256 * config/riscv/vector.md: Revert.
20257
20258 2023-06-25 Pan Li <pan2.li@intel.com>
20259
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.
20318
20319 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20320
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.
20325
20326 2023-06-25 liuhongt <hongtao.liu@intel.com>
20327
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.
20335
20336 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20337
20338 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
20339
20340 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20341
20342 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
20343 LEN_MASK_{LOAD,STORE}
20344
20345 2023-06-25 yulong <shiyulong@iscas.ac.cn>
20346
20347 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
20348
20349 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
20350
20351 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
20352
20353 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20354
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.
20359
20360 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20361
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.
20374
20375 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20376
20377 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
20378 Apply LEN_MASK_{LOAD,STORE}.
20379
20380 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20381
20382 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
20383 Add LEN_MASK_{LOAD,STORE}.
20384
20385 2023-06-24 David Malcolm <dmalcolm@redhat.com>
20386
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>.
20403
20404 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20405
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.
20420
20421 2023-06-23 Marek Polacek <polacek@redhat.com>
20422
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.
20428
20429 2023-06-23 Jan Hubicka <jh@suse.cz>
20430
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.
20436
20437 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
20438 Aaron Sawdey <acsawdey@linux.ibm.com>
20439
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.
20448
20449 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
20450
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.
20457
20458 2023-06-23 Richard Biener <rguenther@suse.de>
20459
20460 * varasm.cc (initializer_constant_valid_p_1): Only
20461 allow conversions between scalar floating point types.
20462
20463 2023-06-23 Richard Biener <rguenther@suse.de>
20464
20465 * tree-vect-stmts.cc (vectorizable_assignment):
20466 Properly handle non-integral operands when analyzing
20467 conversions.
20468
20469 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20470
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.
20475
20476 2023-06-23 Richard Biener <rguenther@suse.de>
20477
20478 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
20479 the truth_value_p case with !VECTOR_TYPE_P.
20480
20481 2023-06-23 Richard Biener <rguenther@suse.de>
20482
20483 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
20484 Exit early when the type isn't scalar integral.
20485
20486 2023-06-23 Richard Biener <rguenther@suse.de>
20487
20488 * match.pd ((outertype)((innertype0)a+(innertype1)b)
20489 -> ((newtype)a+(newtype)b)): Use element_precision
20490 where appropriate.
20491
20492 2023-06-23 Richard Biener <rguenther@suse.de>
20493
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.
20498
20499 2023-06-23 Richard Biener <rguenther@suse.de>
20500
20501 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
20502 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
20503
20504 2023-06-23 Richard Biener <rguenther@suse.de>
20505
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.
20509
20510 2023-06-22 Marek Polacek <polacek@redhat.com>
20511
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.
20516
20517 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
20518
20519 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
20520
20521 2023-06-22 Richard Biener <rguenther@suse.de>
20522
20523 PR tree-optimization/110332
20524 * tree-ssa-phiprop.cc (propagate_with_phi): Always
20525 check aliasing with edge inserted loads.
20526
20527 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
20528 Uros Bizjak <ubizjak@gmail.com>
20529
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.
20540
20541 2023-06-22 David Malcolm <dmalcolm@redhat.com>
20542
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.
20548
20549 2023-06-22 David Malcolm <dmalcolm@redhat.com>
20550
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.
20636
20637 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
20638
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.
20657
20658 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
20659
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.
20664
20665 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20666
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.
20698
20699 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20700
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.
20732
20733 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20734
20735 Revert:
20736 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20737
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.
20769
20770 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20771
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
20781
20782 2023-06-21 Richard Biener <rguenther@suse.de>
20783
20784 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
20785 split_constant_offset for the POINTER_PLUS_EXPR case.
20786
20787 2023-06-21 Richard Biener <rguenther@suse.de>
20788
20789 * tree-ssa-loop-ivopts.cc (record_group_use): Use
20790 split_constant_offset.
20791
20792 2023-06-21 Richard Biener <rguenther@suse.de>
20793
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.
20798
20799 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20800
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.
20832
20833 2023-06-21 Tamar Christina <tamar.christina@arm.com>
20834
20835 PR other/110329
20836 * doc/md.texi: Replace backslashchar.
20837
20838 2023-06-21 Richard Biener <rguenther@suse.de>
20839
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.
20843
20844 2023-06-21 Jan Beulich <jbeulich@suse.com>
20845
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.
20856
20857 2023-06-21 liuhongt <hongtao.liu@intel.com>
20858
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.
20863
20864 2023-06-20 Tamar Christina <tamar.christina@arm.com>
20865
20866 PR bootstrap/110324
20867 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
20868
20869 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
20870
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.
20878
20879 2023-06-20 Jakub Jelinek <jakub@redhat.com>
20880
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.
20885
20886 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
20887
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.
20910
20911 2023-06-20 Martin Jambor <mjambor@suse.cz>
20912
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.
20917
20918 2023-06-20 Martin Jambor <mjambor@suse.cz>
20919
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.
20932
20933 2023-06-20 Carl Love <cel@us.ibm.com>
20934
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.
20964
20965 2023-06-20 Li Xu <xuli1@eswincomputing.com>
20966
20967 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
20968 size of vector mask mode to one rvv register.
20969
20970 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20971
20972 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
20973
20974 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
20975
20976 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
20977 switch handler.
20978
20979 2023-06-20 Richard Biener <rguenther@suse.de>
20980
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.
20984
20985 2023-06-20 Richard Biener <rguenther@suse.de>
20986
20987 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
20988 keep the virtual SSA form up-to-date.
20989
20990 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20991
20992 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
20993 New define_insn_and_split.
20994
20995 2023-06-20 Tamar Christina <tamar.christina@arm.com>
20996
20997 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
20998
20999 2023-06-20 Jan Beulich <jbeulich@suse.com>
21000
21001 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
21002 constraint. Add new AVX512F alternative.
21003
21004 2023-06-20 Richard Biener <rguenther@suse.de>
21005
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.
21010
21011 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
21012
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.
21016
21017 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
21018
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.
21023
21024 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
21025
21026 PR rtl-optimization/110305
21027 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
21028 Handle HONOR_SNANS for x + 0.0.
21029
21030 2023-06-19 Jan Hubicka <jh@suse.cz>
21031
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.
21036
21037 2023-06-19 Tamar Christina <tamar.christina@arm.com>
21038
21039 * config/aarch64/aarch64.md (arches): Add nosimd.
21040 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
21041 compact syntax.
21042
21043 2023-06-19 Tamar Christina <tamar.christina@arm.com>
21044 Omar Tahir <Omar.Tahir2@arm.com>
21045
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.
21056
21057 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
21058
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.
21101
21102 2023-06-19 Li Xu <xuli1@eswincomputing.com>
21103
21104 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
21105 Zve32f extension.
21106
21107 2023-06-19 Pan Li <pan2.li@intel.com>
21108
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.
21126
21127 2023-06-19 Pan Li <pan2.li@intel.com>
21128
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.
21146
21147 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
21148
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.
21153
21154 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
21155
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.
21160
21161 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
21162
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.
21199
21200 2023-06-19 Richard Biener <rguenther@suse.de>
21201
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.
21205
21206 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21207
21208 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
21209 Simplify vec_concat of lowpart subreg and high part vec_select.
21210
21211 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
21212
21213 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
21214
21215 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
21216
21217 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
21218 Handle null niters_skip.
21219
21220 2023-06-19 Richard Biener <rguenther@suse.de>
21221
21222 * config/aarch64/aarch64.cc
21223 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
21224 to LOOP_VINFO_MASKS.
21225
21226 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
21227
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.
21236
21237 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21238 Robin Dapp <rdapp.gcc@gmail.com>
21239
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.
21255
21256 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
21257
21258 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
21259
21260 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
21261
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.
21275
21276 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
21277
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.
21283
21284 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
21285
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.
21297
21298 2023-06-19 Richard Biener <rguenther@suse.de>
21299
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.
21331
21332 2023-06-19 Richard Biener <rguenther@suse.de>
21333
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.
21345
21346 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
21347
21348 PR target/110086
21349 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
21350 Add Optimization option property.
21351
21352 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21353
21354 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
21355 Add new pattern for the abovementioned case.
21356
21357 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21358
21359 * config/xtensa/xtensa.cc
21360 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
21361
21362 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
21363
21364 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
21365
21366 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
21367
21368 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
21369
21370 2023-06-19 liuhongt <hongtao.liu@intel.com>
21371
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.
21382
21383 2023-06-19 liuhongt <hongtao.liu@intel.com>
21384
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.
21401
21402 2023-06-18 Pan Li <pan2.li@intel.com>
21403
21404 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
21405
21406 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
21407
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.
21417
21418 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
21419
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.
21423
21424 2023-06-18 Honza <jh@ryzen3.suse.cz>
21425
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.
21446
21447 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
21448
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.
21455
21456 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
21457
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.
21465
21466 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
21467
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.
21485
21486 2023-06-18 yulong <shiyulong@iscas.ac.cn>
21487
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.
21547
21548 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
21549
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.
21554
21555 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
21556
21557 * gcc-ar.cc (main): Refactor to slightly reduce code
21558 duplication. Avoid unnecessary elements in nargv.
21559
21560 2023-06-16 Pan Li <pan2.li@intel.com>
21561
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.
21575
21576 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21577
21578 PR target/110264
21579 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
21580
21581 2023-06-16 Jakub Jelinek <jakub@redhat.com>
21582
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.
21593
21594 2023-06-16 Jakub Jelinek <jakub@redhat.com>
21595
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.
21600
21601 2023-06-16 Martin Jambor <mjambor@suse.cz>
21602
21603 * configure: Regenerate.
21604
21605 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
21606 Uros Bizjak <ubizjak@gmail.com>
21607
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.
21612
21613 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
21614
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.
21618
21619 2023-06-16 Alex Coplan <alex.coplan@arm.com>
21620
21621 * doc/invoke.texi: Document -Welaborated-enum-base.
21622
21623 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21624
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.
21653
21654 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21655
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.
21700
21701 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21702
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.
21709
21710 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21711
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.
21722
21723 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21724
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.
21762
21763 2023-06-16 Pan Li <pan2.li@intel.com>
21764
21765 * config/riscv/riscv-vsetvl.cc
21766 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
21767
21768 2023-06-16 Richard Biener <rguenther@suse.de>
21769
21770 PR tree-optimization/110278
21771 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
21772 (x != (typeof x)(x == 0) -> true): Likewise.
21773
21774 2023-06-16 Pali Rohár <pali@kernel.org>
21775
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.
21783
21784 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
21785
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.
21792
21793 2023-06-16 Richard Biener <rguenther@suse.de>
21794
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.
21800
21801 2023-06-15 Marek Polacek <polacek@redhat.com>
21802
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.
21811
21812 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
21813
21814 * regcprop.cc (maybe_mode_change): Enable stack pointer
21815 propagation.
21816
21817 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
21818
21819 PR tree-optimization/110266
21820 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
21821 complex type.
21822 (adjust_realpart_expr): Ditto.
21823
21824 2023-06-15 Jan Beulich <jbeulich@suse.com>
21825
21826 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
21827 vmovddup.
21828
21829 2023-06-15 Jan Beulich <jbeulich@suse.com>
21830
21831 * config/i386/constraints.md: Mention k and r for B.
21832
21833 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
21834 Andrew Pinski <apinski@marvell.com>
21835
21836 PR target/110136
21837 * config/loongarch/loongarch.md: Modify the register constraints for template
21838 "jumptable" and "indirect_jump" from "r" to "e".
21839
21840 2023-06-15 Xi Ruoyao <xry111@xry111.site>
21841
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=.
21852
21853 2023-06-15 Jakub Jelinek <jakub@redhat.com>
21854
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.
21877
21878 2023-06-15 Jakub Jelinek <jakub@redhat.com>
21879
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.
21885
21886 2023-06-15 Jakub Jelinek <jakub@redhat.com>
21887
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.
21893
21894 2023-06-15 Jakub Jelinek <jakub@redhat.com>
21895
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.
21900
21901 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
21902
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.
21907
21908 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
21909
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.
21920
21921 2023-06-15 chenxiaolong <chenxl04200420@163.com>
21922
21923 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
21924 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
21925
21926 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
21927
21928 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
21929 (expand_vec_perm_const_1): Add merge optmization.
21930
21931 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
21932
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
21936
21937 2023-06-15 Pan Li <pan2.li@intel.com>
21938
21939 * config/riscv/autovec-opt.md: Align the predictor sytle.
21940 * config/riscv/autovec.md: Ditto.
21941
21942 2023-06-15 Pan Li <pan2.li@intel.com>
21943
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.
21948
21949 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
21950
21951 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
21952
21953 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21954
21955 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
21956 Fix signed comparison warning in loop from npats to enelts.
21957
21958 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
21959
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.
21965
21966 2023-06-14 liuhongt <hongtao.liu@intel.com>
21967
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.
21972
21973 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
21974
21975 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
21976
21977 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
21978
21979 * config/sh/divtab.cc: Remove.
21980
21981 2023-06-13 Jakub Jelinek <jakub@redhat.com>
21982
21983 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
21984 superfluous spaces around \t for vpcmpeqd.
21985
21986 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
21987
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.
21991
21992 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
21993
21994 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
21995 #include.
21996 (ENTRY): Undef.
21997 (TUPLE_ENTRY): Undef.
21998
21999 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22000
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.
22004
22005 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22006
22007 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
22008 (shuffle_decompress_patterns): Ditto.
22009
22010 2023-06-13 Richard Biener <rguenther@suse.de>
22011
22012 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
22013
22014 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
22015 Kito Cheng <kito.cheng@sifive.com>
22016
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.
22028
22029 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22030
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.
22044
22045 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22046
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.
22054
22055 2023-06-13 Alexandre Oliva <oliva@adacore.com>
22056
22057 * range-op-float.cc (frange_nextafter): Drop inline.
22058 (frelop_early_resolve): Add static.
22059 (frange_float): Likewise.
22060
22061 2023-06-13 Richard Biener <rguenther@suse.de>
22062
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.
22066
22067 2023-06-13 Richard Biener <rguenther@suse.de>
22068
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.
22071
22072 2023-06-13 Tejas Belagod <tbelagod@arm.com>
22073
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.
22080
22081 2023-06-13 Andi Kleen <ak@linux.intel.com>
22082
22083 * config/i386/gcc-auto-profile: Regenerate.
22084
22085 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22086
22087 * config/riscv/vector-iterators.md: Fix requirement.
22088
22089 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22090
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.
22094
22095 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
22096
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.
22101
22102 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22103
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.
22107
22108 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
22109
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.
22118
22119 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22120
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.
22129
22130 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22131
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.
22154
22155 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22156
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.
22169
22170 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22171
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.
22178
22179 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22180
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.
22212
22213 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22214
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.
22224
22225 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22226
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.
22232
22233 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22234
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.
22240
22241 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22242
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.
22248
22249 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22250
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.
22268
22269 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22270
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.
22277
22278 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22279
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.
22284
22285 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22286
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.
22291
22292 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22293
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.
22299
22300 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22301
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.
22307
22308 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22309
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.
22315
22316 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
22317
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.
22323
22324 2023-06-12 Pan Li <pan2.li@intel.com>
22325
22326 * config/riscv/riscv-vector-builtins-types.def
22327 (vfloat16m1_t): Add type to lmul1 ops.
22328 (vfloat16m2_t): Likewise.
22329 (vfloat16m4_t): Likewise.
22330
22331 2023-06-12 Richard Biener <rguenther@suse.de>
22332
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.
22336
22337 2023-06-12 Tamar Christina <tamar.christina@arm.com>
22338
22339 * config.in: Regenerate.
22340 * configure: Regenerate.
22341 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
22342
22343 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22344
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.
22352
22353 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22354
22355 * simplify-rtx.cc (simplify_const_unary_operation):
22356 Handle US_TRUNCATE, SS_TRUNCATE.
22357
22358 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
22359
22360 PR modula2/109952
22361 * doc/gm2.texi (Standard procedures): Fix Next link.
22362
22363 2023-06-12 Tamar Christina <tamar.christina@arm.com>
22364
22365 * config.in: Regenerate.
22366
22367 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
22368
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.
22376
22377 2023-06-12 liuhongt <hongtao.liu@intel.com>
22378
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.
22395
22396 2023-06-12 Richard Biener <rguenther@suse.de>
22397
22398 PR middle-end/110200
22399 * genmatch.cc (expr::gen_transform): Put braces around
22400 the if arm for the (convert ...) short-cut.
22401
22402 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
22403
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.
22407
22408 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
22409
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.
22413
22414 2023-06-12 Pan Li <pan2.li@intel.com>
22415
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.
22422
22423 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
22424
22425 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
22426 Do not require a stack frame when debugging is enabled for AIX.
22427
22428 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
22429
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.
22442
22443 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
22444
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.
22469
22470 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22471
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.
22484
22485 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
22486
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.
22504
22505 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
22506
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.
22546
22547 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22548
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.
22552
22553 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22554
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.
22575
22576 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22577
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.
22590
22591 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22592
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.
22607
22608 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22609
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.
22622
22623 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22624
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.
22639
22640 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22641
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.
22649
22650 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22651
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.
22659
22660 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22661
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.
22674
22675 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22676
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.
22692
22693 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22694
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.
22710
22711 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22712
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.
22728
22729 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22730
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.
22746
22747 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22748
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.
22764
22765 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22766
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.
22782
22783 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
22784
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.
22808
22809 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22810 Richard Sandiford <richard.sandiford@arm.com>
22811 Richard Biener <rguenther@suse.de>
22812
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.
22822
22823 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
22824
22825 PR ipa/109886
22826 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
22827 type as well.
22828
22829 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
22830
22831 * range-op.cc (range_cast): Move to...
22832 * range-op.h (range_cast): Here and add generic a version.
22833
22834 2023-06-09 Marek Polacek <polacek@redhat.com>
22835
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.
22840
22841 2023-06-09 Andrew Pinski <apinski@marvell.com>
22842
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.
22847
22848 2023-06-09 Andrew Pinski <apinski@marvell.com>
22849
22850 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
22851 multiply rather than negation/bit_and.
22852
22853 2023-06-09 Andrew Pinski <apinski@marvell.com>
22854
22855 * match.pd (`X & -Y -> X * Y`): Allow for truncation
22856 and the same type for unsigned types.
22857
22858 2023-06-09 Andrew Pinski <apinski@marvell.com>
22859
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.
22864
22865 2023-06-09 Richard Biener <rguenther@suse.de>
22866
22867 * match.pd (two conversions in a row): Use element_precision
22868 to DTRT for VECTOR_TYPE.
22869
22870 2023-06-09 Pan Li <pan2.li@intel.com>
22871
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.
22876
22877 2023-06-09 Pan Li <pan2.li@intel.com>
22878
22879 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
22880 literal to int.
22881
22882 2023-06-09 liuhongt <hongtao.liu@intel.com>
22883
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.
22888
22889 2023-06-09 liuhongt <hongtao.liu@intel.com>
22890
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}.
22898
22899 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
22900
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.
22929
22930 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
22931
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.
22960
22961 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
22962
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.
22999
23000 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
23001
23002 * range-op-float.cc (range_operator_float::fold_range): Return
23003 NAN of the result type.
23004
23005 2023-06-08 Jakub Jelinek <jakub@redhat.com>
23006
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.
23013
23014 2023-06-08 Jakub Jelinek <jakub@redhat.com>
23015
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.
23019
23020 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
23021
23022 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
23023 avoid sign extension/undefined behaviour when setting each bit.
23024
23025 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
23026 Uros Bizjak <ubizjak@gmail.com>
23027
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.
23045
23046 2023-06-07 Andrew Pinski <apinski@marvell.com>
23047
23048 * match.pd: Fix comment for the
23049 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
23050
23051 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
23052 Jeff Law <jlaw@ventanamicro.com>
23053
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.
23070
23071 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
23072
23073 PR target/109725
23074 * config/riscv/riscv.cc (riscv_print_operand): Calculate
23075 memmodel only when it is valid.
23076
23077 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
23078
23079 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
23080 for constant element of a vector.
23081
23082 2023-06-07 Jakub Jelinek <jakub@redhat.com>
23083
23084 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
23085 instead compare tree_nonzero_bits <= 1U rather than just == 1.
23086
23087 2023-06-07 Alex Coplan <alex.coplan@arm.com>
23088
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.
23100
23101 2023-06-07 Alex Coplan <alex.coplan@arm.com>
23102
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.
23108
23109 2023-06-07 Alex Coplan <alex.coplan@arm.com>
23110
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.
23120
23121 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
23122
23123 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
23124 offset table pseudo to a general reg subset.
23125
23126 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23127
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.
23141
23142 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23143
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.
23149
23150 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23151
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.
23170
23171 2023-06-07 Andrew Pinski <apinski@marvell.com>
23172
23173 PR middle-end/110117
23174 * expr.cc (expand_single_bit_test): Handle
23175 const_int from expand_expr.
23176
23177 2023-06-07 Andrew Pinski <apinski@marvell.com>
23178
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`.
23182
23183 2023-06-07 Andrew Pinski <apinski@marvell.com>
23184
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.
23189
23190 2023-06-07 Andrew Pinski <apinski@marvell.com>
23191
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.
23198
23199 2023-06-07 Andrew Pinski <apinski@marvell.com>
23200
23201 * match.pd (zero_one_valued_p): Match 0 integer constant
23202 too.
23203
23204 2023-06-07 Pan Li <pan2.li@intel.com>
23205
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.
23234
23235 2023-06-07 Jason Merrill <jason@redhat.com>
23236
23237 PR c++/58487
23238 * doc/invoke.texi: Document it.
23239
23240 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
23241
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.
23260
23261 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
23262
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.
23266
23267 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23268
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.
23275
23276 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
23277 Tobias Burnus <tobias@codesourcery.com>
23278
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.
23296
23297 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
23298
23299 * config/rs6000/genfusion.pl: Delete some dead code.
23300
23301 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
23302
23303 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
23304 split out from...
23305 (gen_ld_cmpi_p10): ... this.
23306
23307 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
23308
23309 PR target/106907
23310 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
23311 duplicate expression.
23312
23313 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23314
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.
23322
23323 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23324
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.
23328
23329 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23330
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.
23340
23341 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23342
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.
23359
23360 2023-06-06 Richard Biener <rguenther@suse.de>
23361
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.
23366
23367 2023-06-06 Richard Biener <rguenther@suse.de>
23368
23369 PR tree-optimization/109143
23370 * tree-ssa-structalias.cc (solution_set_expand): Avoid
23371 one bitmap iteration and optimize bit range setting.
23372
23373 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
23374
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.
23378
23379 2023-06-06 Pan Li <pan2.li@intel.com>
23380
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.
23390
23391 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
23392
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
23396
23397 2023-06-06 Li Xu <xuli1@eswincomputing.com>
23398
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.
23404
23405 2023-06-06 Pan Li <pan2.li@intel.com>
23406
23407 * config/riscv/vector-iterators.md: Fix typo in mode attr.
23408
23409 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
23410 Joel Hutton <joel.hutton@arm.com>
23411
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.
23436
23437 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
23438 Joel Hutton <joel.hutton@arm.com>
23439 Tamar Christina <tamar.christina@arm.com>
23440
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.
23479
23480 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
23481 Joel Hutton <joel.hutton@arm.com>
23482
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.
23502
23503 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
23504
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.
23510
23511 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
23512
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.
23527
23528 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
23529
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.
23534
23535 2023-06-05 Pan Li <pan2.li@intel.com>
23536
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.
23567
23568 2023-06-05 Andrew Pinski <apinski@marvell.com>
23569
23570 PR bootstrap/110085
23571 * Makefile.in (clean): Remove the removing of
23572 MULTILIB_DIR/MULTILIB_OPTIONS directories.
23573
23574 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
23575
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.
23584
23585 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23586
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.
23598
23599 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23600
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.
23604
23605 2023-06-04 Andrew Pinski <apinski@marvell.com>
23606
23607 * expr.cc (do_store_flag): Improve for single bit testing
23608 not against zero but against that single bit.
23609
23610 2023-06-04 Andrew Pinski <apinski@marvell.com>
23611
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.
23615
23616 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
23617
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.
23622
23623 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23624
23625 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
23626 New insn_and_split patterns.
23627
23628 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23629
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.
23644
23645 2023-06-04 Pan Li <pan2.li@intel.com>
23646
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.
23656
23657 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23658
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.
23664
23665 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
23666
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.
23671
23672 2023-06-04 Jason Merrill <jason@redhat.com>
23673
23674 PR c++/97720
23675 * tree-eh.cc (lower_resx): Pass the exception pointer to the
23676 failure_decl.
23677 * except.h: Tweak comment.
23678
23679 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
23680
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.
23684
23685 2023-06-04 Pan Li <pan2.li@intel.com>
23686
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.
23699
23700 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
23701
23702 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
23703 correct offset.
23704
23705 2023-06-03 Die Li <lidie@eswincomputing.com>
23706
23707 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
23708
23709 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23710
23711 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
23712
23713 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23714
23715 * config/riscv/vector.md: Add vector-opt.md.
23716 * config/riscv/autovec-opt.md: New file.
23717
23718 2023-06-03 liuhongt <hongtao.liu@intel.com>
23719
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.
23723
23724 2023-06-03 liuhongt <hongtao.liu@intel.com>
23725
23726 PR target/92658
23727 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
23728 (truncv2si<mode>2): Ditto.
23729
23730 2023-06-02 Andrew Pinski <apinski@marvell.com>
23731
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.
23736
23737 2023-06-02 Andrew Pinski <apinski@marvell.com>
23738
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.
23742
23743 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
23744
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.
23749
23750 2023-06-02 David Faust <david.faust@oracle.com>
23751
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.
23756
23757 2023-06-02 Alex Coplan <alex.coplan@arm.com>
23758
23759 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
23760 (btf_asm_datasec_type): Likewise.
23761
23762 2023-06-02 Carl Love <cel@us.ibm.com>
23763
23764 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
23765 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
23766
23767 2023-06-02 Jason Merrill <jason@redhat.com>
23768
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.
23776
23777 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
23778
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.
23798
23799 2023-06-02 Jason Merrill <jason@redhat.com>
23800
23801 PR c++/95226
23802 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
23803 (initializer_constant_valid_p_1): Compare float precision.
23804
23805 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
23806
23807 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
23808 semantics.
23809
23810 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23811
23812 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
23813 (vect_set_loop_condition_partial_vectors): Ditto.
23814
23815 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
23816
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.
23821
23822 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
23823
23824 PR testsuite/66005
23825 * doc/install.texi: Document (optional) Perl usage for parallel
23826 testing of libgomp.
23827
23828 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
23829
23830 PR bootstrap/82856
23831 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
23832 later)".
23833
23834 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23835 KuanLin Chen <best124612@gmail.com>
23836
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.
23839
23840 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23841
23842 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
23843
23844 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23845
23846 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
23847
23848 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23849
23850 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
23851 __RISCV_ prefix.
23852 (DEF_RVV_FRM_ENUM): Ditto.
23853
23854 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23855
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.
23862
23863 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23864
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.
23874
23875 2023-06-01 Jason Merrill <jason@redhat.com>
23876
23877 * doc/invoke.texi (-Wpedantic): Improve clarity.
23878
23879 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
23880
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.
23892
23893 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23894
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).
23898
23899 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
23900 Uros Bizjak <ubizjak@gmail.com>
23901
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.
23927
23928 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
23929
23930 PR target/109954
23931 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
23932
23933 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23934
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.
23939
23940 2023-06-01 Pan Li <pan2.li@intel.com>
23941
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.
23960
23961 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23962
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.
23972
23973 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
23974 Richard Sandiford <richard.sandiford@arm.com>
23975
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.
23989
23990 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23991
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.
24004
24005 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24006
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.
24022
24023 2023-05-31 David Faust <david.faust@oracle.com>
24024
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.
24050
24051 2023-05-31 David Faust <david.faust@oracle.com>
24052
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.
24055
24056 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
24057
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.
24072
24073 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
24074
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.
24115
24116 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24117
24118 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
24119 expand into define_insn_and_split.
24120
24121 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24122
24123 * config/riscv/vector.md: Remove FRM.
24124
24125 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24126
24127 * config/riscv/vector.md: Remove FRM.
24128
24129 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24130
24131 * config/riscv/vector.md: Remove FRM.
24132
24133 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
24134
24135 PR target/110039
24136 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
24137 pattern.
24138
24139 2023-05-31 Richard Biener <rguenther@suse.de>
24140
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.
24150
24151 2023-05-31 Richard Biener <rguenther@suse.de>
24152
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.
24159
24160 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24161
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.
24168
24169 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24170
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.
24181
24182 2023-05-31 Cui, Lili <lili.cui@intel.com>
24183
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.
24188
24189 2023-05-31 Pan Li <pan2.li@intel.com>
24190
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.
24197
24198 2023-05-30 liuhongt <hongtao.liu@intel.com>
24199
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.
24207
24208 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
24209
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.
24216
24217 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
24218
24219 PR target/110041
24220 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
24221 Fix misleading identation.
24222
24223 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
24224
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.
24256
24257 2023-05-30 Andrew Pinski <apinski@marvell.com>
24258
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.
24263
24264 2023-05-30 Andrew Pinski <apinski@marvell.com>
24265
24266 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
24267 pattern.
24268
24269 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
24270
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.
24275
24276 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
24277
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.
24282
24283 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
24284
24285 * config/riscv/riscv.cc (riscv_const_insns): Allow
24286 const_vec_duplicates.
24287
24288 2023-05-30 liuhongt <hongtao.liu@intel.com>
24289
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.
24301
24302 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24303
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.
24313
24314 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24315
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.
24329
24330 2023-05-30 Andreas Schwab <schwab@suse.de>
24331
24332 PR target/110036
24333 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
24334 match libsanitizer.
24335
24336 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24337
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.
24373
24374 2023-05-30 Lili Cui <lili.cui@intel.com>
24375
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.
24381
24382 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
24383
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.
24442
24443 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24444
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.
24448
24449 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
24450
24451 * config/riscv/riscv.md: Fix signed and unsigned comparison
24452 warning.
24453
24454 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24455
24456 * config/riscv/autovec.md (fnma<mode>4): New pattern.
24457 (*fnma<mode>): Ditto.
24458
24459 2023-05-29 Die Li <lidie@eswincomputing.com>
24460
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
24465
24466 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
24467
24468 PR target/110021
24469 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
24470 TARGET_AVX512BW to generate truncv16hiv16qi2.
24471
24472 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
24473
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.
24478
24479 2023-05-29 Pan Li <pan2.li@intel.com>
24480
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.
24488
24489 2023-05-29 Pan Li <pan2.li@intel.com>
24490
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.
24498
24499 2023-05-29 Pan Li <pan2.li@intel.com>
24500
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.
24520
24521 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
24522
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.
24525
24526 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
24527
24528 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
24529 on constants.
24530
24531 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24532
24533 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
24534
24535 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24536
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.
24542
24543 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24544
24545 * config/riscv/vector.md: Fix vimuladd instruction bug.
24546
24547 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24548
24549 * config/riscv/riscv.cc (global_state_unknown_p): New function.
24550 (riscv_mode_after): Fix incorrect VXM.
24551
24552 2023-05-29 Pan Li <pan2.li@intel.com>
24553
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.
24562
24563 2023-05-27 liuhongt <hongtao.liu@intel.com>
24564
24565 PR target/100711
24566 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
24567 to VI_AVX2 to cover more modes.
24568
24569 2023-05-27 liuhongt <hongtao.liu@intel.com>
24570
24571 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
24572 Remove ATOM and ICELAKE(and later) core processors.
24573
24574 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
24575
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.
24582
24583 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
24584 Juzhe Zhong <juzhe.zhong@rivai.ai>
24585
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.
24605
24606 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
24607 Tobias Burnus <tobias@codesourcery.com>
24608
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.
24627
24628 2023-05-26 Andrew Pinski <apinski@marvell.com>
24629
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.
24634
24635 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24636
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().
24649
24650 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24651
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.
24660
24661 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24662
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.
24667
24668 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
24669
24670 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
24671 Do not disable call to ix86_expand_vecop_qihi2.
24672
24673 2023-05-26 liuhongt <hongtao.liu@intel.com>
24674
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.
24680
24681 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24682
24683 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
24684 explict VL and drop VL in ops.
24685
24686 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
24687
24688 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
24689 in different BB blocks.
24690
24691 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
24692
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.
24706
24707 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
24708
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.
24712
24713 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
24714
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.
24720
24721 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
24722
24723 * config/arm/iterators.md (MVE_6): Remove.
24724 * config/arm/mve.md: Replace MVE_6 with MVE_5.
24725
24726 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24727 Richard Sandiford <richard.sandiford@arm.com>
24728
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.
24737
24738 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24739
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.
24754
24755 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
24756
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.
24768
24769 2023-05-25 Alex Coplan <alex.coplan@arm.com>
24770
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.
24777
24778 2023-05-25 Richard Biener <rguenther@suse.de>
24779
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.
24784
24785 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
24786
24787 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
24788 TLS Local Dynamic.
24789
24790 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
24791
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.
24795
24796 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24797
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.
24822
24823 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
24824
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.
24889
24890 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24891
24892 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
24893 instructions.
24894
24895 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
24896
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.
24900
24901 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
24902
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.
24906
24907 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
24908
24909 * value-range.cc (add_vrange): Handle known NANs.
24910
24911 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
24912
24913 * value-range.h (frange::set_nan): New.
24914
24915 2023-05-25 Alexandre Oliva <oliva@adacore.com>
24916
24917 PR target/100106
24918 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
24919 requires stricter alignment than MEM's.
24920
24921 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
24922
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.
24933
24934 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
24935
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.
24945
24946 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
24947
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.
24953
24954 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
24955
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.
24964
24965 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
24966
24967 * value-range.h (vrange::kind): Remove.
24968
24969 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
24970
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.
24978
24979 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
24980
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.
24994
24995 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
24996
24997 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
24998 silence overflow warnings later on.
24999
25000 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
25001
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.
25008
25009 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
25010
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.
25030
25031 2023-05-24 Richard Biener <rguenther@suse.de>
25032
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.
25038
25039 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
25040
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.
25048
25049 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
25050
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.
25060
25061 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
25062
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.
25066
25067 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25068
25069 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
25070 prefix.
25071
25072 2023-05-24 Richard Biener <rguenther@suse.de>
25073
25074 PR tree-optimization/109849
25075 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
25076 expressions but take the first sets.
25077
25078 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
25079
25080 PR modula2/109952
25081 * doc/gm2.texi (High procedure function): New node.
25082 (Using): New menu entry for High procedure function.
25083
25084 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
25085
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.
25095
25096 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
25097
25098 PR target/109939
25099 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
25100 qualifier_none for the return operand.
25101
25102 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25103
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.
25110
25111 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
25112
25113 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
25114 calculation on n_perms by considering nvectors_per_build.
25115
25116 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25117 Richard Sandiford <richard.sandiford@arm.com>
25118
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.
25138
25139 2023-05-24 Pan Li <pan2.li@intel.com>
25140
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.
25168
25169 2023-05-24 Pan Li <pan2.li@intel.com>
25170
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.
25200
25201 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25202
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.
25211
25212 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25213
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.
25221
25222 2023-05-24 liuhongt <hongtao.liu@intel.com>
25223
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.
25231
25232 2023-05-23 Martin Uecker <uecker@tugraz.at>
25233
25234 PR c/109450
25235 * function.cc (gimplify_parm_type): Remove function.
25236 (gimplify_parameters): Call gimplify_type_sizes.
25237
25238 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25239
25240 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
25241 and change to also accept '*subx' pattern.
25242 (*subx): Remove.
25243
25244 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25245
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.
25253
25254 2023-05-23 Richard Biener <rguenther@suse.de>
25255
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.
25259
25260 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
25261
25262 * config/avr/avr.cc (avr_insn_cost): New static function.
25263 (TARGET_INSN_COST): Define to that function.
25264
25265 2023-05-23 Richard Biener <rguenther@suse.de>
25266
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.
25272
25273 2023-05-23 Richard Biener <rguenther@suse.de>
25274
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.
25280
25281 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
25282
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.
25290
25291 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25292
25293 * config/riscv/vector.md: Add mode.
25294
25295 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
25296
25297 PR tree-optimization/109934
25298 * value-range.cc (irange::invert): Remove buggy special case.
25299
25300 2023-05-23 Richard Biener <rguenther@suse.de>
25301
25302 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
25303 ANTIC_OUT.
25304
25305 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
25306
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.
25315
25316 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
25317
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.
25325
25326 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25327
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.
25358
25359 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
25360
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.
25365
25366 2023-05-23 Richard Biener <rguenther@suse.de>
25367
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.
25371
25372 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
25373
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.
25378
25379 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
25380
25381 PR tree-optimization/109920
25382 * value-range.h (RESIZABLE>::~int_range): Use delete[].
25383
25384 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
25385
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.
25392
25393 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
25394
25395 * value-range.h (class Value_Range): Implement set_zero,
25396 set_nonzero, and nonzero_p.
25397
25398 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
25399
25400 * config/i386/i386.cc (ix86_multiplication_cost): Add
25401 the cost of a memory read to the cost of V?QImode sequences.
25402
25403 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25404
25405 * config/riscv/riscv-v.cc: Add "m_" prefix.
25406
25407 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25408
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.
25414
25415 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
25416
25417 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
25418 codes.
25419
25420 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
25421
25422 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
25423 handling for the case index == count.
25424
25425 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
25426
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.
25431
25432 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
25433
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}.
25443
25444 2023-05-21 Jakub Jelinek <jakub@redhat.com>
25445
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.
25452
25453 2023-05-21 Andrew Pinski <apinski@marvell.com>
25454
25455 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
25456
25457 2023-05-21 Pan Li <pan2.li@intel.com>
25458
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.
25493
25494 2023-05-21 Andrew Pinski <apinski@marvell.com>
25495
25496 PR middle-end/109919
25497 * expr.cc (expand_single_bit_test): Don't use the
25498 target for expand_expr.
25499
25500 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
25501
25502 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
25503 section.
25504
25505 2023-05-20 Pan Li <pan2.li@intel.com>
25506
25507 * mode-switching.cc (entity_map): Initialize the array to zero.
25508 (bb_info): Ditto.
25509
25510 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
25511
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.
25517
25518 2023-05-20 Andrew Pinski <apinski@marvell.com>
25519
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.
25523
25524 2023-05-20 Andrew Pinski <apinski@marvell.com>
25525
25526 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
25527 instead of shift/and.
25528
25529 2023-05-20 Andrew Pinski <apinski@marvell.com>
25530
25531 * expr.cc (fold_single_bit_test): Add an assert
25532 and simplify based on code being NE_EXPR or EQ_EXPR.
25533
25534 2023-05-20 Andrew Pinski <apinski@marvell.com>
25535
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.
25541
25542 2023-05-20 Andrew Pinski <apinski@marvell.com>
25543
25544 * expr.cc (fold_single_bit_test): Use get_def_for_expr
25545 instead of checking the inner's code.
25546
25547 2023-05-20 Andrew Pinski <apinski@marvell.com>
25548
25549 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
25550 (fold_single_bit_test): This and simplify.
25551
25552 2023-05-20 Andrew Pinski <apinski@marvell.com>
25553
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.
25560
25561 2023-05-20 Die Li <lidie@eswincomputing.com>
25562
25563 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
25564 checking.
25565
25566 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
25567
25568 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
25569
25570 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
25571
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.
25577
25578 2023-05-19 Nathan Sidwell <nathan@acm.org>
25579
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.
25586
25587 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
25588
25589 * config/riscv/constraints.md (DsS, DsD): Restore agreement
25590 with shiftm1 mode attribute.
25591
25592 2023-05-19 Andrew Pinski <apinski@marvell.com>
25593
25594 PR driver/33980
25595 * gcc.cc (default_compilers["@c-header"]): Add %w
25596 after the --output-pch.
25597
25598 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
25599
25600 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
25601 to hival, ASHIFT the corresponding regs.
25602
25603 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
25604
25605 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
25606
25607 2023-05-19 Jakub Jelinek <jakub@redhat.com>
25608
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.
25615
25616 2023-05-19 Jakub Jelinek <jakub@redhat.com>
25617
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.
25622
25623 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
25624
25625 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
25626 of tree_to_shwi on array indices. Minor tweaks.
25627
25628 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
25629
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.
25736
25737 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
25738
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.
25747
25748 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
25749
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.
25758
25759 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
25760
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.
25867
25868 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
25869
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.
25880
25881 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
25882
25883 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
25884
25885 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
25886
25887 PR bootstrap/105831
25888 * config.gcc: Use = operator instead of ==.
25889
25890 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
25891
25892 PR bootstrap/105831
25893 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
25894 * configure.ac: Likewise.
25895 * configure: Regenerate.
25896
25897 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
25898
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.
25984
25985 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
25986
25987 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
25988 scalar constant.
25989
25990 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
25991
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.
26001
26002 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
26003
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.
26041
26042 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
26043
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.
26058
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>
26064
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.
26092
26093 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
26094
26095 * genrecog.cc (print_nonbool_test): Fix type error of
26096 switch (SUBREG_BYTE (op))'.
26097
26098 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
26099
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.
26105
26106 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
26107
26108 * config/pa/pa.md (clear_cache): New.
26109
26110 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
26111
26112 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
26113 parenthesis. Fix misnamed index entry.
26114 <concept>: Fix misnamed index entry.
26115
26116 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
26117
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.
26132
26133 2023-05-17 Jakub Jelinek <jakub@redhat.com>
26134
26135 PR c++/109884
26136 * config/i386/i386-builtin-types.def (FLOAT128): Use
26137 float128t_type_node rather than float128_type_node.
26138
26139 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
26140
26141 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
26142 FP_CONTRACT_FAST (no functional change).
26143
26144 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
26145
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.
26150
26151 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26152
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.
26171
26172 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26173
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.
26181
26182 2023-05-17 Andrew Pinski <apinski@marvell.com>
26183
26184 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
26185 against 0 instead of calling integer_zerop.
26186
26187 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26188
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.
26197
26198 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
26199
26200 * value-range.h (Value_Range::operator=): New.
26201
26202 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
26203
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.
26208
26209 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
26210
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.
26217
26218 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
26219
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.
26224
26225 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
26226
26227 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
26228 special case.
26229
26230 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26231
26232 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
26233 New.
26234 (s390_atomic_align_for_mode): New.
26235
26236 2023-05-17 Jakub Jelinek <jakub@redhat.com>
26237
26238 * wide-int.cc (wi::from_array): Add missing closing paren in function
26239 comment.
26240
26241 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
26242
26243 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
26244 suggested unroll factor once the previous analysis fails.
26245
26246 2023-05-17 Pan Li <pan2.li@intel.com>
26247
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.
26270
26271 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
26272
26273 PR target/106708
26274 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
26275 constants through "lis; xoris".
26276
26277 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
26278
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
26282
26283 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
26284
26285 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
26286 Fix wrong select_kind...
26287
26288 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26289
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.
26296
26297 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26298
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.
26304
26305 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26306
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.
26315
26316 2023-05-16 Andrew Pinski <apinski@marvell.com>
26317
26318 PR tree-optimization/109424
26319 * match.pd: Add patterns for min/max of zero_one_valued
26320 values to `&`/`|`.
26321
26322 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26323
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.
26338
26339 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
26340
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.
26351
26352 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
26353
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.
26358
26359 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26360
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
26372
26373 2023-05-15 Pan Li <pan2.li@intel.com>
26374
26375 * optabs.cc (maybe_gen_insn): Add case to generate instruction
26376 that has 11 operands.
26377
26378 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26379
26380 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
26381 logic for vector modes.
26382
26383 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26384
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.
26396
26397 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26398
26399 PR target/99195
26400 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
26401 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
26402
26403 2023-05-15 Pan Li <pan2.li@intel.com>
26404 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26405 kito-cheng <kito.cheng@sifive.com>
26406
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.
26410
26411 2023-05-15 Richard Biener <rguenther@suse.de>
26412
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.
26417
26418 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26419
26420 * config/riscv/riscv.cc
26421 (riscv_vectorize_preferred_vector_alignment): New function.
26422 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
26423
26424 2023-05-14 Andrew Pinski <apinski@marvell.com>
26425
26426 PR tree-optimization/109829
26427 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
26428
26429 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
26430
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.
26435
26436 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
26437
26438 * config/i386/i386.cc (x86_function_profiler): Take
26439 ix86_direct_extern_access into account when generating calls
26440 to __fentry__()
26441
26442 2023-05-14 Pan Li <pan2.li@intel.com>
26443
26444 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
26445 Refactor the or pattern to switch cases.
26446
26447 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
26448
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.
26455
26456 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
26457
26458 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
26459 Pull out function call from the gcc_assert.
26460
26461 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
26462
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.
26466
26467 2023-05-13 Andrew Pinski <apinski@marvell.com>
26468
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.
26472
26473 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
26474
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.
26481
26482 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
26483
26484 PR target/109797
26485 * config/i386/mmx.md (mulv2si3): Remove expander.
26486 (mulv2si3): Rename insn pattern from *mulv2si.
26487
26488 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
26489
26490 PR libstdc++/109816
26491 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
26492 '!lto_stream_offload_p'.
26493
26494 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
26495 Juzhe-Zhong <juzhe.zhong@rivai.ai>
26496
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.
26504
26505 2023-05-12 Richard Biener <rguenther@suse.de>
26506
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.
26511
26512 2023-05-12 Richard Biener <rguenther@suse.de>
26513
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.
26519
26520 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26521
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.
26555
26556 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26557
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.
26563
26564 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26565
26566 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
26567 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
26568
26569 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26570
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.
26604
26605 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26606
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.
26612
26613 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26614
26615 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
26616 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
26617
26618 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26619
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.
26645
26646 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26647
26648 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
26649 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
26650
26651 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26652
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.
26661
26662 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26663
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.
26714
26715 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26716
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>.
26731
26732 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26733
26734 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
26735 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
26736
26737 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26738
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.
26810
26811 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26812
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.
26820
26821 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26822
26823 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
26824 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
26825
26826 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26827
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.
26885
26886 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26887
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.
26898
26899 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26900
26901 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
26902 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
26903
26904 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26905
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.
26925
26926 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26927
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.
26935
26936 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26937
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.
26942
26943 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26944
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.
26989
26990 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
26991
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.
27007
27008 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
27009
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.
27054
27055 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
27056
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.
27073
27074 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
27075
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.
27078
27079 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
27080
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.
27086
27087 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
27088
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.
27097
27098 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
27099
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.
27111
27112 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
27113
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.
27119
27120 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
27121
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.
27131
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>
27136
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.
27159
27160 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
27161
27162 * match.pd: simplify vector shift + bit_and + multiply.
27163
27164 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27165
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.
27295
27296 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27297
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.
27308
27309 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27310
27311 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
27312 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
27313
27314 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27315
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.
27457
27458 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27459
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.
27471
27472 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27473
27474 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
27475 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
27476
27477 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27478
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.
27541
27542 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27543
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.
27557
27558 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27559
27560 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
27561 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
27562
27563 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27564
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.
27610
27611 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27612
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.
27626
27627 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27628
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.
27691
27692 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27693
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.
27706
27707 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27708
27709 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
27710 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
27711
27712 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27713
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.
27745
27746 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27747
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,.
27753
27754 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27755
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.
27838
27839 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27840
27841 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
27842 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
27843
27844 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27845
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.
27928
27929 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27930
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.
27954
27955 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27956
27957 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
27958 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
27959
27960 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27961
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.
27977
27978 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27979
27980 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
27981 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
27982
27983 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
27984
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.
27990
27991 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
27992
27993 PR target/109807
27994 * config/i386/i386.cc (ix86_widen_mult_cost):
27995 Handle V4HImode and V2SImode.
27996
27997 2023-05-11 Andrew Pinski <apinski@marvell.com>
27998
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.
28002
28003 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
28004
28005 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
28006 vector constants.
28007
28008 2023-05-11 Pan Li <pan2.li@intel.com>
28009
28010 * config/riscv/vector.md: Add comments for simplifying to vmset.
28011
28012 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
28013
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.
28018
28019 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
28020
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.
28041
28042 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
28043 Michael Collison <collison@rivosinc.com>
28044
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.
28051
28052 2023-05-11 Pan Li <pan2.li@intel.com>
28053
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.
28070
28071 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28072
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.
28136
28137 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28138
28139 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
28140 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
28141
28142 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28143
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.
28155
28156 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28157
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.
28175
28176 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28177
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.
28183
28184 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28185
28186 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
28187 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
28188
28189 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28190
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.
28222
28223 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28224
28225 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
28226 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
28227
28228 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28229
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.
28235
28236 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28237
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.
28269
28270 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28271
28272 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
28273 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
28274
28275 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28276
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.
28284
28285 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28286
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.
28343
28344 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28345
28346 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
28347 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
28348
28349 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28350
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.
28362
28363 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28364
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.
28479
28480 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28481
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>.
28503
28504 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28505
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.
28885
28886 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28887
28888 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
28889 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
28890
28891 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
28892
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.
28919
28920 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
28921
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.
28926
28927 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
28928
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).
28933
28934 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
28935
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.
28943
28944 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
28945
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.
28954
28955 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
28956
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.
28963
28964 2023-05-10 Jeff Law <jlaw@ventanamicro>
28965
28966 * config/h8300/constraints.md (Q): Make this a special memory
28967 constraint.
28968 (Zz): Similarly.
28969
28970 2023-05-10 Jakub Jelinek <jakub@redhat.com>
28971
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.
28975
28976 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28977
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.
28982
28983 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28984
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.
28991
28992 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28993
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.
29000
29001 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29002
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.
29008
29009 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29010
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.
29021
29022 2023-05-10 Li Xu <xuli1@eswincomputing.com>
29023
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).
29026
29027 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
29028
29029 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
29030 incorrect codes.
29031
29032 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
29033
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.
29037
29038 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
29039
29040 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
29041 of modeadjusted_dccr.
29042
29043 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29044
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.
29083
29084 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29085
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.
29095
29096 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29097
29098 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
29099 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
29100
29101 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29102
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.
29133
29134 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29135
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.
29144
29145 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29146
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.
29203
29204 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29205
29206 * config/arm/arm-mve-builtins-functions.h
29207 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
29208
29209 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29210
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.
29220
29221 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29222
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.
29262
29263 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29264
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.
29274
29275 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29276
29277 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
29278 (smax<mode>3): Likewise.
29279
29280 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29281
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.
29377
29378 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29379
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.
29389
29390 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29391
29392 * config/arm/arm-mve-builtins-functions.h (class
29393 unspec_mve_function_exact_insn_pred_p): New.
29394
29395 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29396
29397 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
29398 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
29399
29400 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29401
29402 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
29403 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
29404
29405 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
29406
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.
29415
29416 2023-05-09 Jeff Law <jlaw@ventanamicro>
29417
29418 * config/h8300/testcompare.md: Add peephole2 which uses a memory
29419 load to set flags, thus eliminating a compare against zero.
29420
29421 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29422
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.
29486
29487 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29488
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.
29500
29501 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29502
29503 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
29504 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
29505
29506 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29507
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.
29621
29622 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29623
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.
29639
29640 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29641
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.
29646
29647 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29648
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.
29763
29764 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29765
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.
29942
29943 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29944
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.
29970
29971 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
29972
29973 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
29974 * config/arm/arm-mve-builtins-shapes.h (unary): New.
29975
29976 2023-05-09 Jakub Jelinek <jakub@redhat.com>
29977
29978 * mux-utils.h: Fix comment typo, avoides -> avoids.
29979
29980 2023-05-09 Jakub Jelinek <jakub@redhat.com>
29981
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.
29988
29989 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
29990
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.
29995
29996 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
29997
29998 * genmatch.cc (showUsage): Reimplement as ...
29999 (usage): ...this. Adjust all uses.
30000 (main): Print usage when no arguments. Add missing 'return 1'.
30001
30002 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
30003
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.
30011
30012 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
30013
30014 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
30015 earlyclobbers.
30016
30017 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
30018 Uros Bizjak <ubizjak@gmail.com>
30019
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.
30023
30024 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
30025
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.
30029
30030 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
30031
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.
30045
30046 2023-05-08 Jeff Law <jlaw@ventanamicro>
30047
30048 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
30049
30050 2023-05-08 Richard Biener <rguenther@suse.de>
30051 Michael Meissner <meissner@linux.ibm.com>
30052
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.
30056
30057 2023-05-08 Andrew Pinski <apinski@marvell.com>
30058
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.
30066
30067 2023-05-08 Andrew Pinski <apinski@marvell.com>
30068
30069 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
30070 over factor_out_conditional_conversion.
30071
30072 2023-05-08 Andrew Pinski <apinski@marvell.com>
30073
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.
30078
30079 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
30080
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.
30098
30099 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
30100
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.
30109
30110 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
30111
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.
30117
30118 2023-05-08 Andrew Pinski <apinski@marvell.com>
30119
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.
30138
30139 2023-05-07 Andrew Pinski <apinski@marvell.com>
30140
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.
30147
30148 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
30149
30150 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
30151 more parallel code if can_create_pseudo_p.
30152
30153 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
30154
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.
30158
30159 2023-05-06 Jeff Law <jlaw@ventanamicro>
30160
30161 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
30162
30163 2023-05-06 Michael Collison <collison@rivosinc.com>
30164
30165 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
30166 Check that GET_MODE_NUNITS is a multiple of 2.
30167
30168 2023-05-06 Michael Collison <collison@rivosinc.com>
30169
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.
30186
30187 2023-05-06 Jeff Law <jlaw@ventanamicro>
30188
30189 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
30190 duplicate definition.
30191
30192 2023-05-06 Michael Collison <collison@rivosinc.com>
30193
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.
30200
30201 2023-05-06 Michael Collison <collison@rivosinc.com>
30202
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.
30209
30210 2023-05-06 Michael Collison <collison@rivosinc.com>
30211
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.
30216
30217 2023-05-06 Xi Ruoyao <xry111@xry111.site>
30218
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.
30238
30239 2023-05-06 Xi Ruoyao <xry111@xry111.site>
30240
30241 PR other/109522
30242 * Makefile.in (s-macro_list): Pass -nostdinc to
30243 $(GCC_FOR_TARGET).
30244
30245 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
30246
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.
30256
30257 2023-05-06 Jakub Jelinek <jakub@redhat.com>
30258
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.
30268
30269 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
30270
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.
30277
30278 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
30279
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.
30283
30284 2023-05-06 liuhongt <hongtao.liu@intel.com>
30285
30286 * combine.cc (maybe_swap_commutative_operands): Canonicalize
30287 vec_merge when mask is constant.
30288 * doc/md.texi: Document vec_merge canonicalization.
30289
30290 2023-05-06 Jakub Jelinek <jakub@redhat.com>
30291
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.
30299
30300 2023-05-06 Jakub Jelinek <jakub@redhat.com>
30301
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).
30307
30308 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
30309
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.
30313
30314 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
30315
30316 * config/cris/cris.md (movandsplit1): New define_peephole2.
30317
30318 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
30319
30320 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
30321
30322 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
30323
30324 * doc/md.texi (define_peephole2): Document order of scanning.
30325
30326 2023-05-05 Pan Li <pan2.li@intel.com>
30327 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30328
30329 * config/riscv/vector.md: Allow const as the operand of RVV
30330 indexed load/store.
30331
30332 2023-05-05 Pan Li <pan2.li@intel.com>
30333
30334 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
30335 consumed by simplify_rtx.
30336
30337 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30338
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.
30426
30427 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30428
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.
30437
30438 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30439
30440 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
30441 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
30442
30443 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30444
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.
30502
30503 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30504
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.
30519
30520 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30521
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.
30526
30527 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30528
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.
30701
30702 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30703
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.
30720
30721 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30722
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.
30726
30727 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30728
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.
30817
30818 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30819
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.
30826
30827 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
30828
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.
31029
31030 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31031
31032 * config/arm/arm-mve-builtins-functions.h (class
31033 unspec_mve_function_exact_insn_vshl): New.
31034
31035 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31036
31037 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
31038 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
31039
31040 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31041
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.
31045
31046 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31047
31048 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
31049 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
31050
31051 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31052
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.
31111
31112 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31113
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.
31120
31121 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31122
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.
31154
31155 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31156
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.
31175
31176 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31177
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.
31305
31306 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31307
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.
31316
31317 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
31318
31319 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
31320 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
31321
31322 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
31323
31324 PR target/109615
31325 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
31326 denegrate PHI optmization.
31327
31328 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
31329
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.
31334
31335 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31336
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.
31346
31347 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31348
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.
31357
31358 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31359
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.
31374
31375 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31376
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.
31381
31382 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31383
31384 PR bootstrap/84402
31385 * genmatch.cc (output_line_directive): Only emit commented directive
31386 when -vv.
31387
31388 2023-05-05 Tamar Christina <tamar.christina@arm.com>
31389
31390 PR bootstrap/84402
31391 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
31392
31393 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
31394
31395 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
31396 unused in_mode/in_n variables.
31397
31398 2023-05-05 Richard Biener <rguenther@suse.de>
31399
31400 PR tree-optimization/109735
31401 * tree-vect-stmts.cc (vectorizable_operation): Perform
31402 conversion for POINTER_DIFF_EXPR unconditionally.
31403
31404 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
31405
31406 * config/i386/mmx.md (mulv2si3): New expander.
31407 (*mulv2si3): New insn pattern.
31408
31409 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
31410 Thomas Schwinge <thomas@codesourcery.com>
31411
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.
31416
31417 2023-05-05 Jakub Jelinek <jakub@redhat.com>
31418
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.
31422
31423 2023-05-05 Andrew Pinski <apinski@marvell.com>
31424
31425 PR tree-optimization/109732
31426 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
31427 of the argtrue/argfalse.
31428
31429 2023-05-05 Andrew Pinski <apinski@marvell.com>
31430
31431 PR tree-optimization/109722
31432 * match.pd: Extend the `ABS<a> == 0` pattern
31433 to cover `ABSU<a> == 0` too.
31434
31435 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
31436
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.
31441
31442 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31443
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.
31460
31461 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31462
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.
31473
31474 2023-05-04 Andrew Pinski <apinski@marvell.com>
31475
31476 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
31477 diamond form bb with forwarder only empty blocks better.
31478
31479 2023-05-04 Andrew Pinski <apinski@marvell.com>
31480
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.
31487
31488 2023-05-04 Andrew Pinski <apinski@marvell.com>
31489
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.
31494
31495 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
31496
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.
31503
31504 2023-05-04 Richard Biener <rguenther@suse.de>
31505
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.
31509
31510 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31511
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.
31551
31552 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31553
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.
31563
31564 2023-05-04 Martin Liska <mliska@suse.cz>
31565
31566 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
31567 (print_version): Use it.
31568 (generate_results): Likewise.
31569
31570 2023-05-04 Richard Biener <rguenther@suse.de>
31571
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.
31629
31630 2023-05-04 Jakub Jelinek <jakub@redhat.com>
31631
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.
31637
31638 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
31639
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.
31645
31646 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
31647
31648 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
31649 to ALL_REGS.
31650
31651 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
31652
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.
31657
31658 2023-05-03 Andrew Pinski <apinski@marvell.com>
31659
31660 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
31661 stats on removed number of statements and phis.
31662
31663 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
31664
31665 PR tree-optimization/109711
31666 * value-range.cc (irange::verify_range): Allow types of
31667 error_mark_node.
31668
31669 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
31670
31671 PR sanitizer/90746
31672 * calls.cc (can_implement_as_sibling_call_p): Reject calls
31673 to __sanitizer_cov_trace_pc.
31674
31675 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
31676
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.
31686
31687 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
31688
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.
31694
31695 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
31696
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.
32119
32120 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32121
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.
32138
32139 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32140
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.
32154
32155 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32156
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.
32166
32167 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32168
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.
32203
32204 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32205
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.
32229
32230 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32231
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.
32238
32239 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32240
32241 * config/arm/arm-mve-builtins-shapes.cc (create): New.
32242 * config/arm/arm-mve-builtins-shapes.h: (create): New.
32243
32244 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32245
32246 * config/arm/arm-mve-builtins-functions.h (class
32247 unspec_mve_function_exact_insn): New.
32248
32249 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32250
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.
32329
32330 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32331
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.
32336
32337 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32338
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.
32450
32451 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32452
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.
32471
32472 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32473
32474 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
32475 * config/arm/arm-mve-builtins-shapes.h (binary): New.
32476
32477 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32478
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.
32795
32796 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32797
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.
32827
32828 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32829
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.
32833
32834 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
32835
32836 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
32837 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
32838
32839 2023-05-03 Murray Steele <murray.steele@arm.com>
32840 Christophe Lyon <christophe.lyon@arm.com>
32841
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.
32862
32863 2023-05-03 Murray Steele <murray.steele@arm.com>
32864 Christophe Lyon <christophe.lyon@arm.com>
32865
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.
33099
33100 2023-05-03 Murray Steele <murray.steele@arm.com>
33101 Christophe Lyon <christophe.lyon@arm.com>
33102 Christophe Lyon <christophe.lyon@arm.com
33103
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.
33303
33304 2023-05-03 Murray Steele <murray.steele@arm.com>
33305 Christophe Lyon <christophe.lyon@arm.com>
33306 Christophe Lyon <christophe.lyon@arm.com>
33307
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.
33334
33335 2023-05-03 Martin Liska <mliska@suse.cz>
33336
33337 PR target/109713
33338 * config/riscv/sync.md: Add gcc_unreachable to a switch.
33339
33340 2023-05-03 Richard Biener <rguenther@suse.de>
33341
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.
33364
33365 2023-05-03 Andreas Schwab <schwab@suse.de>
33366
33367 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
33368
33369 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
33370
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.
33437
33438 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
33439
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.
33714
33715 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
33716
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.
33960
33961 2023-05-03 Richard Biener <rguenther@suse.de>
33962
33963 * cse.cc (cse_insn): Track an equivalence to the destination
33964 separately and delay using src_related for it.
33965
33966 2023-05-03 Richard Biener <rguenther@suse.de>
33967
33968 * cse.cc (HASH): Turn into inline function and mix
33969 in another HASH_SHIFT bits.
33970 (SAFE_HASH): Likewise.
33971
33972 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
33973
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.
33977
33978 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
33979
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.
33999
34000 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
34001
34002 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
34003
34004 2023-05-03 Martin Liska <mliska@suse.cz>
34005
34006 PR tree-optimization/109693
34007 * value-range-storage.cc (vrange_allocator::vrange_allocator):
34008 Remove unused field.
34009 * value-range-storage.h: Likewise.
34010
34011 2023-05-02 Andrew Pinski <apinski@marvell.com>
34012
34013 * tree-ssa-phiopt.cc (move_stmt): New function.
34014 (match_simplify_replacement): Use move_stmt instead
34015 of the inlined version.
34016
34017 2023-05-02 Andrew Pinski <apinski@marvell.com>
34018
34019 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
34020 pattern.
34021
34022 2023-05-02 Andrew Pinski <apinski@marvell.com>
34023
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.
34027
34028 2023-05-02 Andrew Pinski <apinski@marvell.com>
34029
34030 PR target/109657
34031 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
34032 insn_and_split pattern.
34033
34034 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34035
34036 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
34037 load mapping.
34038
34039 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34040
34041 * config/riscv/sync.md (mem_thread_fence_1): Change fence
34042 depending on the given memory model.
34043
34044 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34045
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.
34054
34055 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34056
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.
34061
34062 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34063
34064 PR target/89835
34065 * config/riscv/sync.md (atomic_store<mode>): Use simple store
34066 instruction in combination with fence(s).
34067
34068 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34069
34070 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
34071 of %A to include release bits.
34072
34073 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34074
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.
34078
34079 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34080
34081 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
34082 sequentially consistent LR.aqrl/SC.rl pairs.
34083
34084 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
34085
34086 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
34087 sanitize memmodel input with memmodel_base.
34088
34089 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
34090 Pan Li <pan2.li@intel.com>
34091
34092 PR target/109617
34093 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
34094
34095 2023-05-02 Romain Naour <romain.naour@gmail.com>
34096
34097 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
34098 the namespace.
34099
34100 2023-05-02 Martin Liska <mliska@suse.cz>
34101
34102 * doc/invoke.texi: Update documentation based on param.opt file.
34103
34104 2023-05-02 Richard Biener <rguenther@suse.de>
34105
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.
34109
34110 2023-05-01 Andrew Pinski <apinski@marvell.com>
34111
34112 * tree-ssa-phiopt.cc: Update comment about
34113 how the transformation are implemented.
34114
34115 2023-05-01 Jeff Law <jlaw@ventanamicro>
34116
34117 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
34118
34119 2023-05-01 Jeff Law <jlaw@ventanamicro>
34120
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.
34127
34128 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
34129
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.
34133
34134 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34135
34136 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
34137 friends.
34138
34139 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34140
34141 * value-range.h (irange::set_nonzero): Inline.
34142
34143 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34144
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.
34157
34158 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34159
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.
34197
34198 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34199
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.
34215
34216 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34217
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_*.
34238
34239 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34240
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.
34357
34358 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34359
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.
34366
34367 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34368
34369 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
34370
34371 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34372
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.
34388
34389 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34390
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.
34402
34403 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34404
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.
34419
34420 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
34421
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.
34517
34518 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
34519
34520 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
34521 inc to avoid clobbering the carry flag.
34522
34523 2023-04-30 Andrew Pinski <apinski@marvell.com>
34524
34525 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
34526 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
34527
34528 2023-04-30 Andrew Pinski <apinski@marvell.com>
34529
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.
34535
34536 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
34537
34538 * configure: Regenerate.
34539 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
34540
34541 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
34542
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.
34548
34549 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
34550
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.
34555
34556 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
34557
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.
34572
34573 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
34574
34575 PR target/105525
34576 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
34577 (lm32-*-uclinux*): Likewise.
34578
34579 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
34580
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.
34586
34587 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
34588
34589 * doc/install.texi: Fix documentation typo
34590
34591 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
34592
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.
34603
34604 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
34605
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.
34616
34617 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
34618
34619 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
34620
34621 2023-04-28 Andrew Pinski <apinski@marvell.com>
34622
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.
34628
34629 2023-04-28 Andrew Pinski <apinski@marvell.com>
34630
34631 * match.pd: Add patterns for
34632 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
34633
34634 2023-04-28 Andrew Pinski <apinski@marvell.com>
34635
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.
34641
34642 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
34643
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.
34651
34652 2023-04-28 Richard Biener <rguenther@suse.de>
34653
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.
34661
34662 2023-04-28 Richard Biener <rguenther@suse.de>
34663
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.
34667
34668 2023-04-28 Pan Li <pan2.li@intel.com>
34669 kito-cheng <kito.cheng@sifive.com>
34670
34671 * config/riscv/vector.md: Add new define split to perform
34672 the simplification.
34673
34674 2023-04-28 Richard Biener <rguenther@suse.de>
34675
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.
34681
34682 2023-04-28 Richard Biener <rguenther@suse.de>
34683
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.
34689
34690 2023-04-28 Richard Biener <rguenther@suse.de>
34691
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.
34695
34696 2023-04-28 Richard Biener <rguenther@suse.de>
34697
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.
34708
34709 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
34710
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.
34728
34729 2023-04-28 Jakub Jelinek <jakub@redhat.com>
34730
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}.
34735
34736 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
34737 Jakub Jelinek <jakub@redhat.com>
34738
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}.
34744
34745 2023-04-28 Jakub Jelinek <jakub@redhat.com>
34746
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.
34775
34776 2023-04-28 Alexandre Oliva <oliva@adacore.com>
34777
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.
34783
34784 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
34785
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.
34792
34793 2023-04-27 Andrew Pinski <apinski@marvell.com>
34794
34795 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
34796 up to 2 min/max expressions in the sequence/match code.
34797
34798 2023-04-27 Andrew Pinski <apinski@marvell.com>
34799
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.
34804
34805 2023-04-27 Andrew Pinski <apinski@marvell.com>
34806
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.
34813
34814 2023-04-27 Andrew Pinski <apinski@marvell.com>
34815
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.
34827
34828 2023-04-27 Andrew Pinski <apinski@marvell.com>
34829
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.
34835
34836 2023-04-27 Jan Hubicka <jh@suse.cz>
34837
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.
34845
34846 2023-04-27 Richard Biener <rguenther@suse.de>
34847
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.
34854
34855 2023-04-27 Alexandre Oliva <oliva@adacore.com>
34856
34857 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
34858
34859 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
34860
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.
34867
34868 2023-04-27 Richard Biener <rguenther@suse.de>
34869
34870 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
34871 create a CTOR operand in the result when simplifying GIMPLE.
34872
34873 2023-04-27 Richard Biener <rguenther@suse.de>
34874
34875 * gimplify.cc (gimplify_compound_lval): When the base
34876 gimplified to a register make sure to split up chains
34877 of operations.
34878
34879 2023-04-27 Richard Biener <rguenther@suse.de>
34880
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.
34891
34892 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
34893
34894 * doc/extend.texi (Zero Length): Describe example.
34895
34896 2023-04-27 Richard Biener <rguenther@suse.de>
34897
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.
34901
34902 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
34903
34904 * config/riscv/riscv.cc: Fix whitespace.
34905 * config/riscv/sync.md: Fix whitespace.
34906
34907 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
34908
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.
34939
34940 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
34941
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.
34964
34965 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
34966
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.
34982
34983 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
34984
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.
34988
34989 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
34990
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().
35001
35002 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
35003
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.
35007
35008 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
35009
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.
35019
35020 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35021
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.
35027
35028 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35029
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.
35035
35036 2023-04-26 Pan Li <pan2.li@intel.com>
35037 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
35038
35039 * config/riscv/riscv.cc (riscv_classify_address): Allow
35040 const0_rtx for the RVV load/store.
35041
35042 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35043
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.
35087
35088 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35089
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.
35094
35095 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35096
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.
35107
35108 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35109
35110 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
35111
35112 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35113
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.
35130
35131 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35132
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.
35138
35139 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35140
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.
35146
35147 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35148
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.
35179
35180 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35181
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.
35188
35189 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35190
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.
35205
35206 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35207
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.
35212
35213 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35214
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.
35221
35222 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35223
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.
35230
35231 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35232
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.
35254
35255 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35256
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.
35269
35270 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
35271
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.
35278
35279 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
35280
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.
35285
35286 2023-04-26 Richard Biener <rguenther@suse.de>
35287
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.
35349
35350 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
35351
35352 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
35353
35354 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
35355
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.
35362
35363 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
35364
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.
35372
35373 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35374
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.
35382
35383 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
35384
35385 * config/riscv/vector.md: Fix redundant vmv1r.v.
35386
35387 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
35388
35389 * config/riscv/vector.md: Fix RA constraint.
35390
35391 2023-04-26 Pan Li <pan2.li@intel.com>
35392
35393 PR target/109272
35394 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
35395 check for vn_reference equal.
35396
35397 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
35398
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.
35404
35405 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
35406
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.
35412
35413 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
35414
35415 * recog.cc (peep2_attempt, peep2_update_life): Correct
35416 head-comment description of parameter match_len.
35417
35418 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
35419
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.
35427
35428 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
35429
35430 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
35431 superfluous debug temporaries for single GIMPLE assignments.
35432
35433 2023-04-25 Richard Biener <rguenther@suse.de>
35434
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.
35441
35442 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35443
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.
35451
35452 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35453
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.
35457
35458 2023-04-25 Richard Biener <rguenther@suse.de>
35459
35460 PR rtl-optimization/109585
35461 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
35462
35463 2023-04-25 Jakub Jelinek <jakub@redhat.com>
35464
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.
35469
35470 2023-04-25 Martin Liska <mliska@suse.cz>
35471
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.
35479
35480 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
35481
35482 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
35483 length attribute for the first (memory operand) alternative.
35484
35485 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
35486
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.
35491
35492 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
35493
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.
35497
35498 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
35499
35500 * ipa-cp.cc (ipa_range_contains_p): New.
35501 (decide_whether_version_node): Use it.
35502
35503 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
35504
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.
35508
35509 2023-04-24 Andrew Pinski <apinski@marvell.com>
35510
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
35514
35515 2023-04-24 Andrew Pinski <apinski@marvell.com>
35516
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.
35520
35521 2023-04-24 Andrew Pinski <apinski@marvell.com>
35522
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.
35527
35528 2023-04-24 Andrew Pinski <apinski@marvell.com>
35529
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.
35533
35534 2023-04-24 Andrew Pinski <apinski@marvell.com>
35535
35536 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
35537 code for better code readability.
35538
35539 2023-04-24 Andrew Pinski <apinski@marvell.com>
35540
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.
35545
35546 2023-04-24 Patrick Palka <ppalka@redhat.com>
35547
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.
35554
35555 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
35556
35557 * doc/generic.texi (OpenMP): Add != to allowed
35558 conditions and state that vars can be unsigned.
35559 * tree.def (OMP_FOR): Likewise.
35560
35561 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35562
35563 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
35564
35565 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
35566
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.
35585
35586 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35587
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.
35593
35594 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35595
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.
35604
35605 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35606
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.
35616
35617 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35618
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.
35625
35626 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35627
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.
35634
35635 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35636
35637 * config/aarch64/aarch64-simd.md
35638 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
35639
35640 2023-04-24 Richard Biener <rguenther@suse.de>
35641
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.
35685
35686 2023-04-24 Richard Biener <rguenther@suse.de>
35687
35688 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
35689
35690 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35691
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.
35696
35697 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35698
35699 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
35700 comment for cleanup_insns.
35701
35702 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35703
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.
35707
35708 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35709
35710 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
35711 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
35712
35713 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35714
35715 PR target/99195
35716 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
35717 (aarch64_addp<mode><vczle><vczbe>): ... This.
35718
35719 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
35720
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).
35724
35725 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
35726
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.
35733
35734 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
35735
35736 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
35737 SImode shifts by two by performing a single bit SImode shift twice.
35738
35739 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
35740
35741 PR tree-optimization/109593
35742 * value-range.cc (frange::operator==): Handle NANs.
35743
35744 2023-04-23 liuhongt <hongtao.liu@intel.com>
35745
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.
35749
35750 2023-04-22 Andrew Pinski <apinski@marvell.com>
35751
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.
35756
35757 2023-04-22 Andrew Pinski <apinski@marvell.com>
35758
35759 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
35760 Remove check on empty_block_p.
35761
35762 2023-04-22 Jakub Jelinek <jakub@redhat.com>
35763
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.
35767
35768 2023-04-22 Jakub Jelinek <jakub@redhat.com>
35769
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.
35773
35774 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
35775 Ondrej Kubanek <kubanek0ondrej@gmail.com>
35776
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.
35783
35784 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
35785
35786 PR tree-optimization/109546
35787 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
35788 not fold conditions with ADDR_EXPR early.
35789
35790 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35791
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.
35799
35800 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35801
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=.
35814
35815 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
35816
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.
35835
35836 2023-04-21 Patrick Palka <ppalka@redhat.com>
35837
35838 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
35839 and type_p.
35840
35841 2023-04-21 Jan Hubicka <jh@suse.cz>
35842
35843 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
35844 commit.
35845
35846 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
35847
35848 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
35849 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
35850
35851 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
35852
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.
35856
35857 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
35858
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.
35873
35874 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
35875 Ondrej Kubanek <kubanek0ondrej@gmail.com>
35876
35877 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
35878 latch.
35879
35880 2023-04-21 Richard Biener <rguenther@suse.de>
35881
35882 * is-a.h (safe_is_a): New.
35883
35884 2023-04-21 Richard Biener <rguenther@suse.de>
35885
35886 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
35887 (gphi_iterator::operator*): Likewise.
35888
35889 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
35890 Michal Jires <michal@jires.eu>
35891
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.
35900
35901 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
35902
35903 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
35904
35905 2023-04-21 Richard Biener <rguenther@suse.de>
35906
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.
35910
35911 2023-04-21 Richard Biener <rguenther@suse.de>
35912
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.
35921
35922 2023-04-21 Richard Biener <rguenther@suse.de>
35923
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.
35933
35934 2023-04-21 Richard Biener <rguenther@suse.de>
35935
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.
35946
35947 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35948
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.
35954
35955 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
35956
35957 PR target/109582
35958 * config/riscv/generic.md: Change standard names to insn names.
35959
35960 2023-04-21 Richard Biener <rguenther@suse.de>
35961
35962 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
35963 (compute_laterin): Use RPO.
35964 (compute_available): Likewise.
35965
35966 2023-04-21 Peng Fan <fanpeng@loongson.cn>
35967
35968 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
35969
35970 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
35971
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.
35979
35980 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
35981
35982 * doc/extend.texi (Common Function Attributes): Remove duplicate
35983 word.
35984
35985 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
35986
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,
35990
35991 2023-04-20 Jakub Jelinek <jakub@redhat.com>
35992
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).
35997
35998 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
35999
36000 * lra-constraints.cc (match_reload): Exclude some hard regs for
36001 multi-reg inout reload pseudos used in asm in different mode.
36002
36003 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
36004
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.
36014
36015 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
36016
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.
36048
36049 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
36050
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.
36059
36060 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
36061 kito-cheng <kito.cheng@sifive.com>
36062
36063 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
36064
36065 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
36066 kito-cheng <kito.cheng@sifive.com>
36067
36068 PR target/109535
36069 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
36070 (pass_vsetvl::cleanup_insns): Fix bug.
36071
36072 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
36073
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".
36077
36078 2023-04-20 Jakub Jelinek <jakub@redhat.com>
36079 Jonathan Wakely <jwakely@redhat.com>
36080
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.
36096
36097 2023-04-20 Jakub Jelinek <jakub@redhat.com>
36098
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.
36107
36108 2023-04-20 Richard Biener <rguenther@suse.de>
36109
36110 * df-core.cc (rest_of_handle_df_initialize): Remove
36111 computation of df->postorder, df->postorder_inverted and
36112 df->n_blocks.
36113
36114 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36115
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.
36134
36135 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
36136
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.
36211
36212 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36213
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.
36224
36225 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36226
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.
36245
36246 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36247
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.
36267
36268 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36269
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.
36284
36285 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
36286
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.
36291
36292 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
36293
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).
36297
36298 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
36299
36300 * config/i386/sse.md: Modify insn vperm{i,f}
36301 and vshuf{i,f}.
36302
36303 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
36304
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.
36314
36315 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
36316
36317 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
36318 function.
36319
36320 2023-04-19 Andrew Pinski <apinski@marvell.com>
36321
36322 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
36323
36324 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
36325
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.
36414
36415 2023-04-19 Pan Li <pan2.li@intel.com>
36416
36417 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
36418 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
36419
36420 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
36421
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.
36434
36435 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36436
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.
36442
36443 2023-04-19 Richard Biener <rguenther@suse.de>
36444
36445 * tree-ssa-structalias.cc (do_ds_constraint): Use
36446 solve_add_graph_edge.
36447
36448 2023-04-19 Richard Biener <rguenther@suse.de>
36449
36450 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
36451 split out from ...
36452 (do_sd_constraint): ... here.
36453
36454 2023-04-19 Richard Biener <rguenther@suse.de>
36455
36456 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
36457 rejecting the merge when A contains only a non-local label.
36458
36459 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
36460
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.
36469
36470 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
36471
36472 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
36473
36474 2023-04-19 Richard Biener <rguenther@suse.de>
36475
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.
36489
36490 2023-04-19 Richard Biener <rguenther@suse.de>
36491
36492 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
36493 edges, remove edges from escaped after special-casing them.
36494
36495 2023-04-19 Richard Biener <rguenther@suse.de>
36496
36497 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
36498 special casing.
36499
36500 2023-04-19 Richard Biener <rguenther@suse.de>
36501
36502 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
36503 to the LHS varinfo solution member.
36504
36505 2023-04-19 Richard Biener <rguenther@suse.de>
36506
36507 * tree-ssa-structalias.cc (topo_visit): Look at the real
36508 destination of edges.
36509
36510 2023-04-19 Richard Biener <rguenther@suse.de>
36511
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.
36515
36516 2023-04-19 Xi Ruoyao <xry111@xry111.site>
36517
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.
36540
36541 2023-04-19 Xi Ruoyao <xry111@xry111.site>
36542
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.
36546
36547 2023-04-19 Richard Biener <rguenther@suse.de>
36548
36549 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
36550 no epilogue condition.
36551
36552 2023-04-19 Richard Biener <rguenther@suse.de>
36553
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.
36559
36560 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36561
36562 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
36563 definition.
36564 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
36565
36566 2023-04-19 Jakub Jelinek <jakub@redhat.com>
36567
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.
36574
36575 2023-04-19 Jakub Jelinek <jakub@redhat.com>
36576
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.
36581
36582 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
36583
36584 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
36585 New pattern.
36586
36587 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36588
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.
36592
36593 2023-04-19 Richard Biener <rguenther@suse.de>
36594
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.
36600
36601 2023-04-19 Richard Biener <rguenther@suse.de>
36602
36603 PR rtl-optimization/109237
36604 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
36605
36606 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
36607
36608 * doc/install.texi (enable-decimal-float): Add AArch64.
36609
36610 2023-04-19 liuhongt <hongtao.liu@intel.com>
36611
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.
36616
36617 2023-04-18 Jason Merrill <jason@redhat.com>
36618
36619 * doc/invoke.texi: Remove stray @gol.
36620
36621 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
36622
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.
36626
36627 2023-04-18 Mark Harmstone <mark@harmstone.com>
36628
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.
36633
36634 2023-04-18 Andrew Pinski <apinski@marvell.com>
36635
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.
36640
36641 2023-04-18 Sam James <sam@gentoo.org>
36642
36643 * system.h: Drop unused INCLUDE_PTHREAD_H.
36644
36645 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
36646
36647 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
36648 condition.
36649
36650 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
36651
36652 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
36653 (bswapdi2, bswapsi2): Similarly.
36654
36655 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
36656
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.
36667
36668 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36669
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.
36676
36677 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
36678
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.
36683
36684 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
36685
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.
36690
36691 2023-04-18 Richard Biener <rguenther@suse.de>
36692
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.
36709
36710 2023-04-18 Richard Biener <rguenther@suse.de>
36711
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.
36719
36720 2023-04-18 Andrew Pinski <apinski@marvell.com>
36721
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.
36728
36729 2023-04-18 Andrew Pinski <apinski@marvell.com>
36730
36731 * tree-ssa-phiopt.cc (match_simplify_replacement):
36732 Simplify code that does the movement slightly.
36733
36734 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36735
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.
36742
36743 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36744
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.
36753
36754 2023-04-18 Richard Biener <rguenther@suse.de>
36755
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;
36761
36762 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36763
36764 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
36765 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
36766
36767 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36768
36769 * value-range.cc (frange::operator==): Adjust for NAN.
36770 (range_tests_nan): Remove some NAN tests.
36771
36772 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36773
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.
36778
36779 2023-04-18 Richard Biener <rguenther@suse.de>
36780
36781 PR tree-optimization/109539
36782 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
36783 Re-implement pointer relatedness for PHIs.
36784
36785 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
36786
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.
36799
36800 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36801
36802 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
36803 if the argument matches that.
36804
36805 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
36806
36807 * config/aarch64/atomics.md
36808 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
36809 Use SD_HSDI for destination mode iterator.
36810
36811 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
36812
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.
36816
36817 2023-04-18 Jakub Jelinek <jakub@redhat.com>
36818
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.
36823
36824 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36825
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.
36834
36835 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36836
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.
36841
36842 2023-04-18 Xi Ruoyao <xry111@xry111.site>
36843
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.
36870
36871 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36872
36873 * value-range.h (Value_Range::Value_Range): New.
36874 (Value_Range::contains_p): New.
36875
36876 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
36877
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.
36883
36884 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
36885
36886 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
36887 definition.
36888
36889 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
36890
36891 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
36892
36893 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
36894
36895 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
36896 readable.
36897 (riscv_expand_epilogue): Likewise.
36898
36899 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
36900
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.
36904
36905 2023-04-17 Andrew Pinski <apinski@marvell.com>
36906
36907 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
36908 prototype.
36909
36910 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
36911
36912 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
36913 global ranges.
36914
36915 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
36916
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.
36922
36923 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
36924
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.
36931
36932 2023-04-17 Martin Jambor <mjambor@suse.cz>
36933
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.
36963
36964 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
36965 Di Zhao <di.zhao@amperecomputing.com>
36966
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.
36971
36972 2023-04-17 Richard Biener <rguenther@suse.de>
36973
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.
36980
36981 2023-04-16 Jeff Law <jlaw@ventanamicro>
36982
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.
36986
36987 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
36988
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.
36996
36997 2023-04-15 Jakub Jelinek <jakub@redhat.com>
36998
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.
37002
37003 2023-04-15 Jason Merrill <jason@redhat.com>
37004
37005 PR c++/109514
37006 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
37007 Overhaul lhs_ref.ref analysis.
37008
37009 2023-04-14 Richard Biener <rguenther@suse.de>
37010
37011 PR tree-optimization/109502
37012 * tree-vect-stmts.cc (vectorizable_assignment): Fix
37013 check for conversion between mask and non-mask types.
37014
37015 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
37016 Jakub Jelinek <jakub@redhat.com>
37017
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.
37025
37026 2023-04-14 Jakub Jelinek <jakub@redhat.com>
37027
37028 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
37029 of GEN_INT.
37030
37031 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
37032
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.
37039
37040 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
37041
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.
37045
37046 2023-04-13 Richard Biener <rguenther@suse.de>
37047
37048 PR tree-optimization/109491
37049 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
37050 NULL operands test.
37051
37052 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
37053
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.
37081
37082 2023-04-12 Jakub Jelinek <jakub@redhat.com>
37083
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.
37088
37089 2023-04-12 Jakub Jelinek <jakub@redhat.com>
37090
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.
37096
37097 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
37098
37099 * config/i386/x-mingw32-utf8: Remove extrataneous $@
37100
37101 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
37102
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.
37106
37107 2023-04-12 Richard Biener <rguenther@suse.de>
37108
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.
37113
37114 2023-04-12 Richard Biener <rguenther@suse.de>
37115
37116 PR tree-optimization/109469
37117 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
37118 a returns-twice call.
37119
37120 2023-04-12 Richard Biener <rguenther@suse.de>
37121
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.
37126
37127 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
37128
37129 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
37130 predicate to avoid splitting arith constants.
37131
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>
37136
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.
37144
37145 2023-04-11 Martin Liska <mliska@suse.cz>
37146
37147 PR driver/108241
37148 * opts.cc (finish_options): Drop also
37149 x_flag_var_tracking_assignments.
37150
37151 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
37152
37153 PR tree-optimization/108888
37154 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
37155
37156 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
37157
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.
37193
37194 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
37195
37196 PR target/70243
37197 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
37198 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
37199
37200 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
37201
37202 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
37203
37204 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
37205
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.
37229
37230 2023-04-08 Jakub Jelinek <jakub@redhat.com>
37231
37232 PR tree-optimization/109392
37233 * tree-vect-generic.cc (tree_vec_extract): Handle failure
37234 of maybe_push_res_to_seq better.
37235
37236 2023-04-08 Jakub Jelinek <jakub@redhat.com>
37237
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.
37244
37245 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
37246
37247 PR target/107674
37248 * config/arm/arm.cc (arm_effective_regno): New function.
37249 (mve_vector_mem_operand): Use it.
37250
37251 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
37252
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.
37256
37257 2023-04-06 Andrew Pinski <apinski@marvell.com>
37258
37259 PR tree-optimization/109427
37260 * params.opt (-param=vect-induction-float=):
37261 Fix option attribute typo for IntegerRange.
37262
37263 2023-04-05 Jeff Law <jlaw@ventanamicro>
37264
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.
37268
37269 2023-04-05 Martin Jambor <mjambor@suse.cz>
37270
37271 PR ipa/108959
37272 * ipa-sra.cc (zap_useless_ipcp_results): New function.
37273 (process_isra_node_results): Call it.
37274
37275 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
37276
37277 * config/riscv/vector.md: Fix incorrect operand order.
37278
37279 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
37280
37281 * config/riscv/riscv-vsetvl.cc
37282 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
37283 demand fusion.
37284
37285 2023-04-05 Li Xu <xuli1@eswincomputing.com>
37286
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.
37290
37291 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
37292
37293 * doc/md.texi (Including Patterns): Fix page break.
37294
37295 2023-04-04 Jakub Jelinek <jakub@redhat.com>
37296
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.
37310
37311 2023-04-04 Marek Polacek <polacek@redhat.com>
37312
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.
37317
37318 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
37319
37320 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
37321 (mve_vcreateq_f<mode>): Swap operands.
37322
37323 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
37324
37325 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
37326
37327 2023-04-04 Jakub Jelinek <jakub@redhat.com>
37328
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.
37332
37333 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
37334
37335 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
37336
37337 2023-04-04 Richard Biener <rguenther@suse.de>
37338
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.
37343
37344 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
37345
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.
37349
37350 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
37351
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.
37361
37362 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
37363 Sandra Loosemore <sandra@codesourcery.com>
37364
37365 * doc/md.texi (Insn Splitting): Tweak wording for readability.
37366
37367 2023-04-03 Martin Jambor <mjambor@suse.cz>
37368
37369 PR ipa/109303
37370 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
37371 offset + size will be representable in unsigned int.
37372
37373 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
37374
37375 * configure.ac (ZSTD_LIB): Move before zstd.h check.
37376 Unset gcc_cv_header_zstd_h without libzstd.
37377 * configure: Regenerate.
37378
37379 2023-04-03 Martin Liska <mliska@suse.cz>
37380
37381 * doc/invoke.texi: Document new param.
37382
37383 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
37384
37385 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
37386 new check_effective_target function.
37387
37388 2023-04-03 Li Xu <xuli1@eswincomputing.com>
37389
37390 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
37391 (vfloat32m8_t): Likewise
37392
37393 2023-04-03 liuhongt <hongtao.liu@intel.com>
37394
37395 * doc/md.texi: Document signbitm2.
37396
37397 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
37398 kito-cheng <kito.cheng@sifive.com>
37399
37400 * config/riscv/vector.md: Fix RA constraint.
37401
37402 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
37403
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.
37407
37408 2023-04-01 Jakub Jelinek <jakub@redhat.com>
37409
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].
37414
37415 2023-04-01 Jakub Jelinek <jakub@redhat.com>
37416
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.
37428
37429 2023-04-01 Jakub Jelinek <jakub@redhat.com>
37430
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.
37445
37446 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
37447
37448 * lra-constraints.cc: (combine_reload_insn): New function.
37449
37450 2023-03-31 Jakub Jelinek <jakub@redhat.com>
37451
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.
37461
37462 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
37463 Andrew Pinski <pinskia@gmail.com>
37464
37465 PR target/109328
37466 * config/riscv/t-riscv: Add missing dependencies.
37467
37468 2023-03-31 liuhongt <hongtao.liu@intel.com>
37469
37470 * config/i386/i386.cc (inline_memory_move_cost): Return 100
37471 for MASK_REGS when MODE_SIZE > 8.
37472
37473 2023-03-31 liuhongt <hongtao.liu@intel.com>
37474
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.
37520
37521 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
37522
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.
37527
37528 2023-03-30 Jason Merrill <jason@redhat.com>
37529
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.
37535
37536 2023-03-30 Richard Biener <rguenther@suse.de>
37537
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.
37543
37544 2023-03-30 Richard Biener <rguenther@suse.de>
37545
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.
37550
37551 2023-03-30 liuhongt <hongtao.liu@intel.com>
37552
37553 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
37554 vpblendd instead of vpblendw for V4SI under avx2.
37555
37556 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
37557
37558 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
37559 for many quick operands, for register-sized modes.
37560
37561 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
37562
37563 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
37564 New check.
37565
37566 2023-03-29 Martin Liska <mliska@suse.cz>
37567
37568 PR bootstrap/109310
37569 * configure.ac: Emit a warning for deprecated option
37570 --enable-link-mutex.
37571 * configure: Regenerate.
37572
37573 2023-03-29 Richard Biener <rguenther@suse.de>
37574
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.
37578
37579 2023-03-29 Richard Biener <rguenther@suse.de>
37580
37581 PR tree-optimization/109327
37582 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
37583 already removed stmts when draining to_remove.
37584
37585 2023-03-29 Richard Biener <rguenther@suse.de>
37586
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.
37590
37591 2023-03-29 Jakub Jelinek <jakub@redhat.com>
37592 Richard Biener <rguenther@suse.de>
37593
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.
37599
37600 2023-03-29 Richard Biener <rguenther@suse.de>
37601
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.
37606
37607 2023-03-28 David Malcolm <dmalcolm@redhat.com>
37608
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.
37615
37616 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
37617
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.
37622
37623 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
37624
37625 PR rtl-optimization/109187
37626 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
37627 subtraction in three-way comparison.
37628
37629 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
37630
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.
37641
37642 2023-03-28 Richard Biener <rguenther@suse.de>
37643
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.
37648
37649 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
37650
37651 * config/i386/x-mingw32-utf8: update comments.
37652
37653 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
37654
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.
37674
37675 2023-03-28 Richard Biener <rguenther@suse.de>
37676
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.
37687
37688 2023-03-28 Jakub Jelinek <jakub@redhat.com>
37689 Jonathan Wakely <jwakely@redhat.com>
37690
37691 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
37692 Use subcommand rather than sub-command in function comments.
37693
37694 2023-03-28 Jakub Jelinek <jakub@redhat.com>
37695
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.
37703
37704 2023-03-28 Jakub Jelinek <jakub@redhat.com>
37705
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.
37709
37710 2023-03-28 Jakub Jelinek <jakub@redhat.com>
37711
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.
37714
37715 2023-03-28 Jakub Jelinek <jakub@redhat.com>
37716
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.
37721
37722 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
37723
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.
37731
37732 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
37733
37734 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
37735 top-level sections.
37736
37737 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
37738
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.
37746
37747 2023-03-28 Richard Biener <rguenther@suse.de>
37748
37749 Revert:
37750 2023-03-27 Richard Biener <rguenther@suse.de>
37751
37752 PR rtl-optimization/109237
37753 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
37754
37755 2023-03-28 Richard Biener <rguenther@suse.de>
37756
37757 * common.opt (gdwarf): Remove Negative(gdwarf-).
37758
37759 2023-03-28 Richard Biener <rguenther@suse.de>
37760
37761 * common.opt (gdwarf): Add RejectNegative.
37762 (gdwarf-): Likewise.
37763 (ggdb): Likewise.
37764 (gvms): Likewise.
37765
37766 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
37767
37768 * config/cris/constraints.md ("T"): Correct to
37769 define_memory_constraint.
37770
37771 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
37772
37773 * config/cris/cris.md (BW2): New mode-iterator.
37774 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
37775 peephole2s.
37776
37777 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
37778
37779 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
37780 for possible eliminable compares.
37781
37782 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
37783
37784 * config/cris/constraints.md ("R"): Remove unused constraint.
37785
37786 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
37787
37788 PR gcov-profile/109297
37789 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
37790 (merge_stream_usage): Likewise.
37791 (overlap_usage): Likewise.
37792
37793 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
37794
37795 PR target/109296
37796 * config/riscv/thead.md: Add missing mode specifiers.
37797
37798 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
37799 Jiangning Liu <jiangning.liu@amperecomputing.com>
37800 Manolis Tsamis <manolis.tsamis@vrull.eu>
37801
37802 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
37803
37804 2023-03-27 Richard Biener <rguenther@suse.de>
37805
37806 PR rtl-optimization/109237
37807 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
37808
37809 2023-03-27 Richard Biener <rguenther@suse.de>
37810
37811 PR lto/109263
37812 * lto-wrapper.cc (run_gcc): Parse alternate debug options
37813 as well, they always enable debug.
37814
37815 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
37816
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.
37821
37822 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
37823
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.
37831
37832 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
37833
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.
37841
37842 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
37843
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.
37849
37850 2023-03-26 Jakub Jelinek <jakub@redhat.com>
37851
37852 PR tree-optimization/109230
37853 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
37854
37855 2023-03-26 Jakub Jelinek <jakub@redhat.com>
37856
37857 PR ipa/105685
37858 * predict.cc (compute_function_frequency): Don't call
37859 warn_function_cold if function already has cold attribute.
37860
37861 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
37862
37863 * doc/install.texi: Remove anachronistic note
37864 related to languages built and separate source tarballs.
37865
37866 2023-03-25 David Malcolm <dmalcolm@redhat.com>
37867
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.
37880
37881 2023-03-24 David Malcolm <dmalcolm@redhat.com>
37882
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.
37889
37890 2023-03-24 David Malcolm <dmalcolm@redhat.com>
37891
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.
37900
37901 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
37902
37903 PR tree-optimization/109238
37904 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
37905 predecessors which this block dominates.
37906
37907 2023-03-24 Richard Biener <rguenther@suse.de>
37908
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.
37913
37914 2023-03-24 Jakub Jelinek <jakub@redhat.com>
37915
37916 PR middle-end/109258
37917 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
37918 if target == const0_rtx.
37919
37920 2023-03-24 Alexandre Oliva <oliva@adacore.com>
37921
37922 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
37923 Document options and effective targets.
37924
37925 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
37926
37927 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
37928 optional.
37929
37930 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
37931
37932 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
37933 non-earlyclobber alternative.
37934
37935 2023-03-23 Andrew Pinski <apinski@marvell.com>
37936
37937 PR c/84900
37938 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
37939 as a lvalue.
37940
37941 2023-03-23 Richard Biener <rguenther@suse.de>
37942
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.
37947
37948 2023-03-23 Richard Biener <rguenther@suse.de>
37949
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.
37954
37955 2023-03-23 Jakub Jelinek <jakub@redhat.com>
37956
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.
38021
38022 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
38023
38024 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
38025 (move_callee_saved_registers): Detect the bug condition early.
38026
38027 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
38028
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.
38037
38038 2023-03-23 Jakub Jelinek <jakub@redhat.com>
38039
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.
38045
38046 2023-03-23 Pan Li <pan2.li@intel.com>
38047 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38048
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.
38055
38056 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
38057
38058 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
38059
38060 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38061
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.
38076
38077 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38078
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.
38089
38090 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38091 kito-cheng <kito.cheng@sifive.com>
38092
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.
38103
38104 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38105 kito-cheng <kito.cheng@sifive.com>
38106
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.
38171
38172 2023-03-23 liuhongt <hongtao.liu@intel.com>
38173
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.
38188
38189 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
38190
38191 * lra.cc (lra): Do not repeat inheritance and live range splitting
38192 when asm error is found.
38193
38194 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
38195
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.
38209
38210 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
38211
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.
38216
38217 2023-03-22 Martin Liska <mliska@suse.cz>
38218
38219 * configure: Regenerate.
38220
38221 2023-03-21 Joseph Myers <joseph@codesourcery.com>
38222
38223 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
38224 to variants.
38225
38226 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
38227
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.
38233
38234 2023-03-21 Richard Biener <rguenther@suse.de>
38235
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.
38242
38243 2023-03-21 Jakub Jelinek <jakub@redhat.com>
38244
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.
38252
38253 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38254
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.
38263
38264 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38265
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
38270
38271 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38272
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.
38279
38280 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38281
38282 * doc/include/texinfo.tex: Update to 2023-01-17.19.
38283
38284 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38285
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.
38290
38291 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38292
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.
38301
38302 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
38303
38304 * doc/gcc.texi: Add the Indices appendix, to make texinfo
38305 generate nice indices overview page.
38306
38307 2023-03-21 Richard Biener <rguenther@suse.de>
38308
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.
38313
38314 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
38315
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.
38324
38325 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
38326
38327 PR target/109178
38328 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
38329
38330 2023-03-19 Jonny Grant <jg@jguk.org>
38331
38332 * doc/extend.texi (Common Function Attributes) <nonnull>:
38333 Correct typo.
38334
38335 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
38336
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.
38340
38341 2023-03-17 Jakub Jelinek <jakub@redhat.com>
38342
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.
38353
38354 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
38355
38356 * lra-constraints.cc: Include hooks.h.
38357 (combine_reload_insn): New function.
38358 (lra_constraints): Call it.
38359
38360 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38361 kito-cheng <kito.cheng@sifive.com>
38362
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.
38374
38375 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38376
38377 PR target/109092
38378 * config/riscv/riscv.md: Fix subreg bug.
38379
38380 2023-03-17 Jakub Jelinek <jakub@redhat.com>
38381
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.
38390
38391 2023-03-17 Jakub Jelinek <jakub@redhat.com>
38392
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.
38399
38400 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
38401
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.
38405
38406 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
38407
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.
38425
38426 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
38427
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.
38431
38432 2023-03-16 Martin Liska <mliska@suse.cz>
38433
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.
38438
38439 2023-03-16 Richard Biener <rguenther@suse.de>
38440
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.
38445
38446 2023-03-16 Richard Biener <rguenther@suse.de>
38447
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.
38458
38459 2023-03-15 David Malcolm <dmalcolm@redhat.com>
38460
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.
38487
38488 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
38489
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.
38496
38497 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
38498
38499 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
38500
38501 2023-03-15 Richard Biener <rguenther@suse.de>
38502
38503 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
38504 Do not diagnose clobbers.
38505
38506 2023-03-15 Richard Biener <rguenther@suse.de>
38507
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.
38511
38512 2023-03-15 Xi Ruoyao <xry111@xry111.site>
38513
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.
38518
38519 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38520
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.
38540
38541 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38542
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.
38557
38558 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38559
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.
38572
38573 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38574
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.
38586
38587 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38588
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.
38617
38618 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38619
38620 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
38621 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
38622
38623 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38624
38625 * config/riscv/riscv.md: Include thead.md
38626 * config/riscv/thead.md: New file.
38627
38628 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38629
38630 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
38631
38632 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
38633
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.
38660
38661 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
38662
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.
38667
38668 2023-03-14 Jakub Jelinek <jakub@redhat.com>
38669
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.
38673
38674 2023-03-14 Martin Jambor <mjambor@suse.cz>
38675
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.
38680
38681 2023-03-14 Martin Jambor <mjambor@suse.cz>
38682
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.
38687
38688 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
38689
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.
38694
38695 2023-03-14 Sam James <sam@gentoo.org>
38696
38697 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
38698 including <sstream> earlier.
38699 * system.h: Add INCLUDE_SSTREAM.
38700
38701 2023-03-14 Richard Biener <rguenther@suse.de>
38702
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.
38706
38707 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
38708
38709 PR rtl-optimization/107762
38710 * expr.cc (emit_group_store): Revert latest change.
38711
38712 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
38713
38714 PR tree-optimization/109005
38715 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
38716 aggregate type check.
38717
38718 2023-03-14 Jakub Jelinek <jakub@redhat.com>
38719
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.
38723
38724 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
38725
38726 PR tree-optimization/106896
38727 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
38728 implementatoin with probability_in; avoid some asserts.
38729
38730 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
38731
38732 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
38733
38734 2023-03-13 Sean Bright <sean@seanbright.com>
38735
38736 * doc/invoke.texi (Warning Options): Remove errant 'See'
38737 before @xref.
38738
38739 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
38740
38741 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
38742 REG_OK_FOR_BASE_P): Remove.
38743
38744 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38745
38746 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
38747 (=vd,vd,vr,vr): Ditto.
38748 * config/riscv/vector.md: Ditto.
38749
38750 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38751
38752 * config/riscv/riscv-vector-builtins.cc
38753 (function_expander::use_compare_insn): Add operand predicate check.
38754
38755 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38756
38757 * config/riscv/vector.md: Fine tune RA constraints.
38758
38759 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
38760
38761 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
38762 hsaco assemble/link.
38763
38764 2023-03-13 Richard Biener <rguenther@suse.de>
38765
38766 PR tree-optimization/109046
38767 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
38768 piecewise complex loads.
38769
38770 2023-03-12 Jakub Jelinek <jakub@redhat.com>
38771
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.
38788
38789 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
38790
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.
38794
38795 2023-03-12 Tamar Christina <tamar.christina@arm.com>
38796
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.
38807
38808 2023-03-12 Tamar Christina <tamar.christina@arm.com>
38809
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.
38817
38818 2023-03-12 Tamar Christina <tamar.christina@arm.com>
38819 Richard Sandiford <richard.sandiford@arm.com>
38820
38821 PR target/108583
38822 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
38823 single use.
38824
38825 2023-03-12 Tamar Christina <tamar.christina@arm.com>
38826 Andrew MacLeod <amacleod@redhat.com>
38827
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
38842
38843 2023-03-12 Tamar Christina <tamar.christina@arm.com>
38844
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.
38860
38861 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
38862
38863 * doc/install.texi2html: Fix issue number typo in comment.
38864
38865 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
38866
38867 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
38868 bool.
38869
38870 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
38871
38872 * doc/invoke.texi (Optimize Options): Add markup to
38873 description of asan-kernel-mem-intrinsic-prefix, and clarify
38874 wording slightly.
38875
38876 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
38877
38878 * doc/extend.texi (Named Address Spaces): Drop a redundant link
38879 to AVR-LibC.
38880
38881 2023-03-11 Jeff Law <jlaw@ventanamicro>
38882
38883 PR web/88860
38884 * doc/extend.texi: Clarify Attribute Syntax a bit.
38885
38886 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
38887
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).
38894
38895 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38896
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.
38901
38902 2023-03-10 Andrew Pinski <apinski@marvell.com>
38903
38904 * config/aarch64/aarch64.md: Add a new define_split
38905 to help combine.
38906
38907 2023-03-10 Richard Biener <rguenther@suse.de>
38908
38909 * tree-ssa-structalias.cc (solve_graph): Immediately
38910 iterate self-cycles.
38911
38912 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38913
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.
38918
38919 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38920
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.
38925
38926 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38927
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.
38939
38940 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38941
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.
38962
38963 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38964
38965 PR c/108079
38966 * cgraphunit.cc (check_global_declaration): Don't warn for unused
38967 variables which have OPT_Wunused_variable warning suppressed.
38968
38969 2023-03-10 Jakub Jelinek <jakub@redhat.com>
38970
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.
38978
38979 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
38980
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.
39036
39037 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39038
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.
39043
39044 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39045
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.
39064
39065 2023-03-10 Michael Collison <collison@rivosinc.com>
39066
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.
39070
39071 2023-03-09 Tamar Christina <tamar.christina@arm.com>
39072
39073 * passes.cc (emergency_dump_function): Finish graph generation.
39074
39075 2023-03-09 Tamar Christina <tamar.christina@arm.com>
39076
39077 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
39078 and bottom bit only.
39079
39080 2023-03-09 Andrew Pinski <apinski@marvell.com>
39081
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.
39086
39087 2023-03-09 Jason Merrill <jason@redhat.com>
39088
39089 * doc/extend.texi: Comment out __is_deducible docs.
39090
39091 2023-03-09 Jason Merrill <jason@redhat.com>
39092
39093 PR c++/105841
39094 * doc/extend.texi (Type Traits):: Document __is_deducible.
39095
39096 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
39097
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.
39108
39109 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
39110
39111 * lra-constraints.cc (process_alt_operands): Use operand modes for
39112 clobbered regs instead of the biggest access mode.
39113
39114 2023-03-09 Richard Biener <rguenther@suse.de>
39115
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.
39120
39121 2023-03-09 Jakub Jelinek <jakub@redhat.com>
39122 Richard Biener <rguenther@suse.de>
39123
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.
39129
39130 2023-03-07 Jonathan Grant <jg@jguk.org>
39131
39132 PR sanitizer/81649
39133 * doc/invoke.texi (Instrumentation Options): Clarify
39134 LeakSanitizer behavior.
39135
39136 2023-03-07 Benson Muite <benson_muite@emailplus.org>
39137
39138 * doc/install.texi (Prerequisites): Add link to gmplib.org.
39139
39140 2023-03-07 Pan Li <pan2.li@intel.com>
39141 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39142
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.
39152
39153 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
39154
39155 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
39156
39157 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
39158
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.
39166
39167 2023-03-06 Richard Biener <rguenther@suse.de>
39168
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.
39173
39174 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
39175
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.
39181
39182 2023-03-06 Xi Ruoyao <xry111@xry111.site>
39183
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.
39188
39189 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39190
39191 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
39192 (pass_vsetvl::backward_demand_fusion): Ditto.
39193
39194 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
39195 SiYu Wu <siyu@isrc.iscas.ac.cn>
39196
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.
39205
39206 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
39207 SiYu Wu <siyu@isrc.iscas.ac.cn>
39208
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.
39227
39228 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
39229 SiYu Wu <siyu@isrc.iscas.ac.cn>
39230
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.
39247
39248 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
39249 SiYu Wu <siyu@isrc.iscas.ac.cn>
39250
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.
39258
39259 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
39260 SiYu Wu <siyu@isrc.iscas.ac.cn>
39261
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.
39270
39271 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
39272
39273 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
39274 use exact_log2().
39275
39276 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39277 kito-cheng <kito.cheng@sifive.com>
39278
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.
39529
39530 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39531
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.
39619
39620 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39621
39622 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
39623
39624 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
39625
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.
39739
39740 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
39741
39742 * config/riscv/bitmanip.md: allow 0 constant in max/min
39743 pattern.
39744
39745 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
39746
39747 * config/riscv/bitmanip.md: Fix wrong index in the check.
39748
39749 2023-03-04 Jakub Jelinek <jakub@redhat.com>
39750
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.
39756
39757 2023-03-04 Jakub Jelinek <jakub@redhat.com>
39758
39759 PR testsuite/108973
39760 * selftest-diagnostic.cc
39761 (test_diagnostic_context::test_diagnostic_context): Set
39762 caret_max_width to 80.
39763
39764 2023-03-03 Alexandre Oliva <oliva@adacore.com>
39765
39766 * gimple-ssa-warn-access.cc
39767 (pass_waccess::check_dangling_stores): Skip non-stores.
39768
39769 2023-03-03 Alexandre Oliva <oliva@adacore.com>
39770
39771 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
39772 after vmsr and vmrs, and lower the case of P0.
39773
39774 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
39775
39776 PR middle-end/109006
39777 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
39778
39779 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
39780
39781 PR middle-end/109006
39782 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
39783
39784 2023-03-03 Jakub Jelinek <jakub@redhat.com>
39785
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.
39791
39792 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
39793
39794 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
39795 arch14 instead of z16.
39796
39797 2023-03-03 Anthony Green <green@moxielogic.com>
39798
39799 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
39800
39801 2023-03-03 Anthony Green <green@moxielogic.com>
39802
39803 * config/moxie/constraints.md (A, B, W): Change
39804 define_constraint to define_memory_constraint.
39805
39806 2023-03-03 Xi Ruoyao <xry111@xry111.site>
39807
39808 * toplev.cc (process_options): Fix the spelling of
39809 "-fstack-clash-protection".
39810
39811 2023-03-03 Richard Biener <rguenther@suse.de>
39812
39813 PR tree-optimization/109002
39814 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
39815 PHI-translate ANTIC_IN.
39816
39817 2023-03-03 Jakub Jelinek <jakub@redhat.com>
39818
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.
39823
39824 2023-03-03 Richard Biener <rguenther@suse.de>
39825
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.
39843
39844 2023-03-03 Richard Biener <rguenther@suse.de>
39845
39846 PR debug/108772
39847 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
39848 generate a DIE for a function scope static.
39849
39850 2023-03-03 Alexandre Oliva <oliva@adacore.com>
39851
39852 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
39853
39854 2023-03-02 Jakub Jelinek <jakub@redhat.com>
39855
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.
39865
39866 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
39867
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.
39872
39873 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
39874 Paul-Antoine Arras <pa@codesourcery.com>
39875
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.
39883
39884 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
39885
39886 PR tree-optimization/108979
39887 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
39888 operations on invariants.
39889
39890 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
39891
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.
39897
39898 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
39899
39900 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
39901 of constant 0 offset.
39902
39903 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
39904
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.
39908
39909 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
39910
39911 * config.gcc: add -with-{no-}msa build option.
39912 * config/mips/mips.h: Likewise.
39913 * doc/install.texi: Likewise.
39914
39915 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
39916
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.
39921
39922 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
39923
39924 PR tree-optimization/108430
39925 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
39926 of inverted condition.
39927
39928 2023-03-02 Jakub Jelinek <jakub@redhat.com>
39929
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.
39934
39935 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
39936
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.
39945
39946 2023-03-01 LIU Hao <lh_mouse@126.com>
39947
39948 PR pch/14940
39949 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
39950 Remove the size limit `pch_VA_max_size`
39951
39952 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
39953
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.
39958
39959 2023-03-01 Jakub Jelinek <jakub@redhat.com>
39960
39961 PR debug/108967
39962 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
39963 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
39964
39965 2023-03-01 Richard Biener <rguenther@suse.de>
39966
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.
39973
39974 2023-03-01 Richard Biener <rguenther@suse.de>
39975
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.
39982
39983 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
39984
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.
39988
39989 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
39990
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.
39997
39998 2023-02-28 Jakub Jelinek <jakub@redhat.com>
39999
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.
40010
40011 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
40012
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.
40021
40022 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
40023
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.
40029
40030 2023-02-27 Patrick Palka <ppalka@redhat.com>
40031
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.
40037
40038 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
40039
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.
40046
40047 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
40048
40049 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
40050 (xtensa_get_config_v3): New functions.
40051
40052 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
40053
40054 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
40055
40056 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
40057
40058 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
40059 the macro to 0x1000000000.
40060
40061 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
40062
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.
40068
40069 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
40070
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.
40081
40082 2023-02-24 Richard Biener <rguenther@suse.de>
40083
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.
40098
40099 2023-02-24 Richard Biener <rguenther@suse.de>
40100
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.
40116
40117 2023-02-24 Martin Liska <mliska@suse.cz>
40118
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).
40122
40123 2023-02-24 Jakub Jelinek <jakub@redhat.com>
40124
40125 * config/i386/i386-builtin.def: Update description of BDESC
40126 and BDESC_FIRST in file comment to include mask2.
40127
40128 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
40129
40130 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
40131
40132 2023-02-24 Jakub Jelinek <jakub@redhat.com>
40133
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.
40138
40139 2023-02-24 Jakub Jelinek <jakub@redhat.com>
40140
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.
40157
40158 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
40159
40160 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
40161 Add non-compact 32-bit multilibs.
40162
40163 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
40164
40165 * config/mips/mips.md (*clo<mode>2): New pattern.
40166
40167 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
40168
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.
40183
40184 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
40185
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.
40189
40190 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
40191
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.
40196
40197 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
40198
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.
40212
40213 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
40214
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.
40218
40219 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
40220
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.
40231
40232 2023-02-23 Jakub Jelinek <jakub@redhat.com>
40233
40234 PR translation/108890
40235 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
40236 around fatal_error format strings.
40237
40238 2023-02-23 Richard Biener <rguenther@suse.de>
40239
40240 * tree-ssa-structalias.cc (handle_lhs_call): Do not
40241 re-create rhsc, only truncate it.
40242
40243 2023-02-23 Jakub Jelinek <jakub@redhat.com>
40244
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.
40248
40249 2023-02-23 Richard Biener <rguenther@suse.de>
40250
40251 * tree-if-conv.cc (tree_if_conversion): Properly manage
40252 memory of refs and the contained data references.
40253
40254 2023-02-23 Richard Biener <rguenther@suse.de>
40255
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.
40260
40261 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
40262
40263 * config/xtensa/xtensa.md
40264 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
40265 Add missing "SI:" to PLUS RTXes.
40266
40267 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
40268
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).
40273
40274 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
40275
40276 Revert:
40277 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
40278
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.
40285
40286 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
40287
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.
40294
40295 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
40296
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.
40310
40311 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40312
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.
40398
40399 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40400
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.
40618
40619 2023-02-22 Jakub Jelinek <jakub@redhat.com>
40620
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.
40626
40627 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
40628
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.
40633
40634 2023-02-21 David Malcolm <dmalcolm@redhat.com>
40635
40636 PR analyzer/108830
40637 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
40638
40639 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
40640
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.
40647
40648 2023-02-21 Richard Biener <rguenther@suse.de>
40649
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.
40653
40654 2023-02-21 Richard Biener <rguenther@suse.de>
40655
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.
40659
40660 2023-02-21 Richard Biener <rguenther@suse.de>
40661
40662 Revert:
40663 2023-02-13 Richard Biener <rguenther@suse.de>
40664
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.
40672
40673 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
40674
40675 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
40676 true if register A0 (return address register) when -Og is specified.
40677
40678 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
40679
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.
40691
40692 2023-02-20 Jakub Jelinek <jakub2redhat.com>
40693
40694 PR target/108862
40695 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
40696 gen_umadddi4_highpart{,_le}.
40697
40698 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
40699
40700 * config/riscv/riscv.md (prefetch): Use r instead of p for the
40701 address operand.
40702 (riscv_prefetchi_<mode>): Ditto.
40703
40704 2023-02-20 Richard Biener <rguenther@suse.de>
40705
40706 PR tree-optimization/108816
40707 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
40708 versioning condition split prerequesite, assert required
40709 invariant.
40710
40711 2023-02-20 Richard Biener <rguenther@suse.de>
40712
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.
40717
40718 2023-02-20 Richard Biener <rguenther@suse.de>
40719
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.
40723
40724 2023-02-18 Jakub Jelinek <jakub@redhat.com>
40725
40726 PR tree-optimization/108819
40727 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
40728
40729 2023-02-18 Jakub Jelinek <jakub@redhat.com>
40730
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.
40737
40738 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
40739
40740 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
40741
40742 2023-02-18 Xi Ruoyao <xry111@xry111.site>
40743
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).
40751
40752 2023-02-18 Andrew Pinski <apinski@marvell.com>
40753
40754 * match.pd: Remove #if GIMPLE around the
40755 "1 - a" pattern
40756
40757 2023-02-18 Andrew Pinski <apinski@marvell.com>
40758
40759 * value-query.h (get_range_query): Return the global ranges
40760 for a nullptr func.
40761
40762 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
40763
40764 * doc/invoke.texi (@item -Wall): Fix typo in
40765 -Wuse-after-free.
40766
40767 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
40768
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.
40776
40777 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
40778
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.
40783
40784 2023-02-17 Richard Biener <rguenther@suse.de>
40785
40786 PR tree-optimization/108821
40787 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
40788 move volatile accesses.
40789
40790 2023-02-17 Richard Biener <rguenther@suse.de>
40791
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.
40800
40801 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40802
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.
40852
40853 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40854
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.
40860
40861 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40862 kito-cheng <kito.cheng@sifive.com>
40863
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.
40868
40869 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40870
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.
40932
40933 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40934
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.
40939
40940 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40941
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.
40963
40964 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
40965
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.
40970
40971 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
40972
40973 * doc/invoke.texi (Optimize Options): Reword the explanation
40974 getting minimal, maximal and default values of a parameter.
40975
40976 2023-02-16 Patrick Palka <ppalka@redhat.com>
40977
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.
41068
41069 2023-02-16 Jakub Jelinek <jakub@redhat.com>
41070
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.
41075
41076 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
41077
41078 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
41079 using-declaration to unhide functions.
41080
41081 2023-02-16 Jakub Jelinek <jakub@redhat.com>
41082
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.
41088
41089 2023-02-16 Richard Biener <rguenther@suse.de>
41090
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.
41095
41096 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
41097
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.
41102
41103 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
41104
41105 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
41106
41107 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
41108
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.
41136
41137 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
41138
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.
41151
41152 2023-02-15 Richard Biener <rguenther@suse.de>
41153
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.
41161
41162 2023-02-15 Marek Polacek <polacek@redhat.com>
41163
41164 PR middle-end/106080
41165 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
41166 instead.
41167
41168 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41169
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.
41213
41214 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41215
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.
41267
41268 2023-02-15 Martin Jambor <mjambor@suse.cz>
41269
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.
41274
41275 2023-02-15 Jakub Jelinek <jakub@redhat.com>
41276
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.
41283
41284 2023-02-15 Martin Liska <mliska@suse.cz>
41285
41286 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
41287
41288 2023-02-15 Richard Biener <rguenther@suse.de>
41289
41290 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
41291 for with_poison and alias worklist to it.
41292 (sanitize_asan_mark_poison): Likewise.
41293
41294 2023-02-15 Richard Biener <rguenther@suse.de>
41295
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.
41305
41306 2023-02-15 Richard Biener <rguenther@suse.de>
41307
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.
41311
41312 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
41313
41314 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
41315 "failure trying to reload" call.
41316
41317 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
41318
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.
41322
41323 2023-02-14 David Faust <david.faust@oracle.com>
41324
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.
41331
41332 2023-02-14 Andrew Pinski <apinski@marvell.com>
41333
41334 PR tree-optimization/108355
41335 PR tree-optimization/96921
41336 * match.pd: Add pattern for "1 - bool_val".
41337
41338 2023-02-14 Richard Biener <rguenther@suse.de>
41339
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.
41347
41348 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
41349
41350 * gimplify.cc (gimplify_save_expr): Add missing guard.
41351
41352 2023-02-14 Richard Biener <rguenther@suse.de>
41353
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.
41357
41358 2023-02-14 Jakub Jelinek <jakub@redhat.com>
41359
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.
41372
41373 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
41374
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.
41379
41380 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
41381
41382 PR rtl-optimization/108681
41383 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
41384 code to handle bare uses and clobbers.
41385
41386 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
41387
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.
41392
41393 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
41394
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.
41402
41403 2023-02-13 Richard Biener <rguenther@suse.de>
41404
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.
41413
41414 2023-02-13 Richard Biener <rguenther@suse.de>
41415
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.
41423
41424 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
41425
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.
41432
41433 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
41434
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.
41440
41441 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
41442
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.
41446
41447 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
41448
41449 * common/config/arc/arc-common.cc (arc_option_optimization_table):
41450 Remove millicode from list.
41451
41452 2023-02-13 Martin Liska <mliska@suse.cz>
41453
41454 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
41455
41456 2023-02-13 Richard Biener <rguenther@suse.de>
41457
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.
41465
41466 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
41467
41468 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
41469 (DWARF_FRAME_REGISTERS): New.
41470 (DWARF_REG_TO_UNWIND_COLUMN): New.
41471
41472 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
41473
41474 * doc/sourcebuild.texi: Remove (broken) direct reference to
41475 "The GNU configure and build system".
41476
41477 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
41478
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.
41482
41483 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41484
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.
41507
41508 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41509
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.
41546
41547 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41548
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.
41580
41581 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41582
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.
41610
41611 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41612
41613 * config/riscv/vector.md: use "zero" reg.
41614
41615 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41616
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.
41658
41659 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41660 kito-cheng <kito.cheng@sifive.com>
41661
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.
41729
41730 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41731
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.
41792
41793 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41794
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.
41812
41813 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41814
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
41847
41848 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41849
41850 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
41851
41852 2023-02-11 Jakub Jelinek <jakub@redhat.com>
41853
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.
41858
41859 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
41860
41861 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
41862
41863 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
41864
41865 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
41866 valid_combine only when ira_use_lra_p is true.
41867
41868 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
41869
41870 * params.opt (ira-simple-lra-insn-threshold): Add new param.
41871 * ira.cc (ira): Use the param to switch on simple LRA.
41872
41873 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
41874
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.
41880
41881 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
41882
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.
41890
41891 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
41892
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.
41941
41942 2023-02-10 Richard Biener <rguenther@suse.de>
41943
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.
41948
41949 2023-02-10 Jakub Jelinek <jakub@redhat.com>
41950
41951 Revert:
41952 2023-02-09 Martin Liska <mliska@suse.cz>
41953
41954 PR target/100758
41955 * doc/extend.texi: Document that the function
41956 does not work correctly for old VIA processors.
41957
41958 2023-02-10 Andrew Pinski <apinski@marvell.com>
41959 Andrew Macleod <amacleod@redhat.com>
41960
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.
41967
41968 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
41969
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.
41979
41980 2023-02-09 Jakub Jelinek <jakub@redhat.com>
41981
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.
41987
41988 2023-02-09 Jakub Jelinek <jakub@redhat.com>
41989
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.
41994
41995 2023-02-09 Andrew Pinski <apinski@marvell.com>
41996
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.
42000
42001 2023-02-09 Martin Liska <mliska@suse.cz>
42002
42003 PR target/100758
42004 * doc/extend.texi: Document that the function
42005 does not work correctly for old VIA processors.
42006
42007 2023-02-09 Andreas Schwab <schwab@suse.de>
42008
42009 * lto-wrapper.cc (merge_and_complain): Handle
42010 -funwind-tables and -fasynchronous-unwind-tables.
42011 (append_compiler_options): Likewise.
42012
42013 2023-02-09 Richard Biener <rguenther@suse.de>
42014
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.
42021
42022 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
42023
42024 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
42025
42026 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
42027
42028 PR target/108505
42029 * config.gcc (tm_mlib_file): Define new variable.
42030
42031 2023-02-08 Jakub Jelinek <jakub@redhat.com>
42032
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.
42039
42040 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
42041
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.
42053
42054 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
42055
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.
42060
42061 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
42062
42063 Revert:
42064 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
42065
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.
42074
42075 2023-02-08 Jakub Jelinek <jakub@redhat.com>
42076
42077 * tree.def (SAD_EXPR): Remove outdated comment about missing
42078 WIDEN_MINUS_EXPR.
42079
42080 2023-02-07 Marek Polacek <polacek@redhat.com>
42081
42082 * doc/invoke.texi: Update -fchar8_t documentation.
42083
42084 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
42085
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.
42094
42095 2023-02-07 Richard Biener <rguenther@suse.de>
42096
42097 PR tree-optimization/26854
42098 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
42099 instead of immediate uses.
42100
42101 2023-02-07 Jakub Jelinek <jakub@redhat.com>
42102
42103 PR tree-optimization/106923
42104 * ipa-split.cc (execute_split_functions): Don't split returns_twice
42105 functions.
42106
42107 2023-02-07 Jakub Jelinek <jakub@redhat.com>
42108
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.
42112
42113 2023-02-07 Jan Hubicka <jh@suse.cz>
42114
42115 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
42116 for znver4.
42117
42118 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
42119
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.
42123
42124 2023-02-06 Alex Coplan <alex.coplan@arm.com>
42125
42126 PR target/104921
42127 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
42128 Use correct constraint for operand 3.
42129
42130 2023-02-06 Martin Jambor <mjambor@suse.cz>
42131
42132 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
42133
42134 2023-02-06 Xi Ruoyao <xry111@xry111.site>
42135
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.
42152
42153 2023-02-06 Jakub Jelinek <jakub@redhat.com>
42154
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.
42159
42160 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
42161
42162 * doc/install.texi (Specific): Remove PW32.
42163
42164 2023-02-03 Jakub Jelinek <jakub@redhat.com>
42165
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 ().
42176
42177 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
42178
42179 PR tree-optimization/108639
42180 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
42181 widest_int.
42182 (irange::operator==): Same.
42183
42184 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
42185
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.
42203
42204 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
42205
42206 PR tree-optimization/107570
42207 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
42208
42209 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
42210
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.
42222
42223 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
42224
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.
42231
42232 2023-02-03 Martin Jambor <mjambor@suse.cz>
42233
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.
42244
42245 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
42246
42247 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
42248 * config/riscv/riscv.cc: Ditto.
42249
42250 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42251
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.
42257
42258 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42259
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.
42267
42268 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
42269
42270 * toplev.cc (toplev::main): Only print the version information header
42271 from toplevel main().
42272
42273 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
42274
42275 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
42276 cond_{ashl|ashr|lshr}
42277
42278 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
42279
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.
42283
42284 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
42285
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.
42292
42293 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
42294
42295 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
42296 Fix finding best match score.
42297
42298 2023-02-02 Jakub Jelinek <jakub@redhat.com>
42299
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.
42311
42312 2023-02-02 Richard Biener <rguenther@suse.de>
42313
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.
42318
42319 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
42320
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.
42338
42339 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
42340
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.
42405
42406 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
42407
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.
42414
42415 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
42416
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.
42423
42424 2023-02-02 Jakub Jelinek <jakub@redhat.com>
42425
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.
42446
42447 2023-02-02 liuhongt <hongtao.liu@intel.com>
42448
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.
42459
42460 2023-02-02 Jakub Jelinek <jakub@redhat.com>
42461
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).
42471
42472 2023-02-01 Tamar Christina <tamar.christina@arm.com>
42473
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.
42480
42481 2023-02-01 Martin Liska <mliska@suse.cz>
42482
42483 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
42484 value if set.
42485
42486 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
42487
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.
42491
42492 2023-02-01 Martin Liska <mliska@suse.cz>
42493
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.
42498
42499 2023-02-01 Martin Liska <mliska@suse.cz>
42500
42501 PR driver/108572
42502 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
42503 -gz=zstd.
42504
42505 2023-02-01 Jakub Jelinek <jakub@redhat.com>
42506
42507 PR debug/108573
42508 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
42509 subregs in DEBUG_INSNs.
42510
42511 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
42512
42513 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
42514
42515 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
42516
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
42532
42533 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
42534
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.
42543
42544 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
42545
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.
42550
42551 2023-02-01 Richard Biener <rguenther@suse.de>
42552
42553 PR middle-end/108500
42554 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
42555 with tree traversal algorithm.
42556
42557 2023-02-01 Jason Merrill <jason@redhat.com>
42558
42559 * doc/invoke.texi: Document -Wno-changes-meaning.
42560
42561 2023-02-01 David Malcolm <dmalcolm@redhat.com>
42562
42563 * doc/invoke.texi (Static Analyzer Options): Add notes about
42564 limitations of -fanalyzer.
42565
42566 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42567
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.
42621
42622 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
42623
42624 PR target/108589
42625 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
42626 REG_P on SET_DEST.
42627
42628 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
42629
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.
42633
42634 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
42635
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.
42640
42641 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
42642
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.
42648
42649 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
42650
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.
42660
42661 2023-01-31 Jakub Jelinek <jakub@redhat.com>
42662
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.
42668
42669 2023-01-31 Jakub Jelinek <jakub@redhat.com>
42670
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.
42676
42677 2023-01-31 Jakub Jelinek <jakub@redhat.com>
42678
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.
42685
42686 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
42687
42688 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
42689
42690 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42691
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.
42749
42750 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
42751
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.
42756
42757 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
42758
42759 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
42760 ampere1a to include SM4.
42761
42762 2023-01-30 Andrew Pinski <apinski@marvell.com>
42763
42764 PR tree-optimization/108582
42765 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
42766 for middlebb to have no phi nodes.
42767
42768 2023-01-30 Richard Biener <rguenther@suse.de>
42769
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.
42774
42775 2023-01-30 Andreas Schwab <schwab@suse.de>
42776
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.
42783
42784 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
42785
42786 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
42787 value of includedir.
42788
42789 2023-01-30 Richard Biener <rguenther@suse.de>
42790
42791 PR ipa/108511
42792 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
42793 assert.
42794
42795 2023-01-30 liuhongt <hongtao.liu@intel.com>
42796
42797 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
42798 * doc/invoke.texi: Ditto.
42799
42800 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
42801
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
42808
42809 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
42810
42811 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
42812 off-by-one in checking the permissible shift-amount.
42813
42814 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
42815
42816 * doc/extend.texi (Named Address Spaces): Update link to the
42817 AVR-Libc manual.
42818
42819 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
42820
42821 * doc/standards.texi (Standards): Fix markup.
42822
42823 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
42824
42825 * doc/standards.texi (Standards): Update link to Objective-C book.
42826
42827 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
42828
42829 * doc/invoke.texi (Instrumentation Options): Update reference to
42830 AddressSanitizer.
42831
42832 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
42833
42834 * doc/standards.texi: Update Go1 link.
42835
42836 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42837
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.
42849
42850 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42851
42852 * config/riscv/vector.md (tail_policy_op_idx): Remove.
42853 (mask_policy_op_idx): Remove.
42854 (avl_type_op_idx): Remove.
42855
42856 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
42857
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.
42865
42866 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
42867
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.
42871
42872 2023-01-27 Richard Biener <rguenther@suse.de>
42873
42874 PR target/55522
42875 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
42876 and -Ofast FP environment side-effects.
42877
42878 2023-01-27 Richard Biener <rguenther@suse.de>
42879
42880 PR target/55522
42881 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
42882 Don't add crtfastmath.o for -shared.
42883
42884 2023-01-27 Richard Biener <rguenther@suse.de>
42885
42886 PR target/55522
42887 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
42888 for -shared.
42889
42890 2023-01-27 Richard Biener <rguenther@suse.de>
42891
42892 PR target/55522
42893 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
42894 crtfastmath.o for -shared.
42895
42896 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
42897
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.
42903
42904 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
42905
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.
42909
42910 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42911
42912 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
42913 Remove _m suffix for "vop_m" C++ overloaded API name.
42914
42915 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42916
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.
42934
42935 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42936
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.
42973
42974 2023-01-27 Jakub Jelinek <jakub@redhat.com>
42975
42976 PR other/108560
42977 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
42978 from size_t to int.
42979
42980 2023-01-27 Jakub Jelinek <jakub@redhat.com>
42981
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.
42986
42987 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42988
42989 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
42990
42991 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42992
42993 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
42994 (emit_vsetvl_insn): Ditto.
42995
42996 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
42997
42998 * config/riscv/vector.md: Fix constraints.
42999
43000 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43001
43002 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
43003
43004 2023-01-27 Patrick Palka <ppalka@redhat.com>
43005 Jakub Jelinek <jakub@redhat.com>
43006
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.
43012
43013 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43014
43015 * config/riscv/riscv-vsetvl.h: Change it into public.
43016
43017 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43018
43019 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
43020 pass.
43021
43022 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43023
43024 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
43025
43026 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43027
43028 * config/riscv/vector.md: Fix incorrect attributes.
43029
43030 2023-01-27 Richard Biener <rguenther@suse.de>
43031
43032 PR target/55522
43033 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
43034 Don't add crtfastmath.o for -shared.
43035
43036 2023-01-27 Alexandre Oliva <oliva@gnu.org>
43037
43038 * doc/options.texi (option, RejectNegative): Mention that
43039 -g-started options are also implicitly negatable.
43040
43041 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
43042
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.
43048
43049 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43050
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.
43089
43090 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43091
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.
43097
43098 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43099
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.
43108
43109 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43110
43111 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
43112 rinsn.
43113
43114 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43115
43116 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
43117
43118 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43119
43120 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
43121 Add pre-check for redundant flow.
43122
43123 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43124
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.
43129
43130 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43131
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.
43142
43143 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43144
43145 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
43146
43147 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43148
43149 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
43150 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
43151
43152 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43153
43154 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
43155 (backward_propagate_worthwhile_p): Fix non-worthwhile.
43156
43157 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43158
43159 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
43160
43161 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43162
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.
43167
43168 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43169
43170 * config/riscv/vector.md:
43171
43172 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43173
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.
43183
43184 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
43185
43186 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
43187
43188 2023-01-26 Marek Polacek <polacek@redhat.com>
43189
43190 PR middle-end/108543
43191 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
43192 if it was previously set.
43193
43194 2023-01-26 Jakub Jelinek <jakub@redhat.com>
43195
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.
43209
43210 2023-01-26 Jakub Jelinek <jakub@redhat.com>
43211
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.
43220
43221 2023-01-26 Richard Biener <rguenther@suse.de>
43222
43223 PR tree-optimization/108547
43224 * gimple-predicate-analysis.cc (value_sat_pred_p):
43225 Use widest_int.
43226
43227 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
43228
43229 PR tree-optimization/108522
43230 * tree-object-size.cc (compute_object_offset): Make EXPR
43231 argument non-const. Call component_ref_field_offset.
43232
43233 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
43234
43235 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
43236 FEATURE_STRING field.
43237
43238 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
43239
43240 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
43241
43242 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
43243
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.
43249
43250 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
43251
43252 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
43253
43254 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
43255
43256 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
43257
43258 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
43259
43260 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
43261 Fix spacing.
43262
43263 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
43264
43265 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
43266
43267 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
43268
43269 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
43270
43271 2023-01-25 Richard Biener <rguenther@suse.de>
43272
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.
43277
43278 2023-01-25 Richard Biener <rguenther@suse.de>
43279
43280 * doc/lto.texi (Command line options): Reword and update reference
43281 to removed lto_read_all_file_options.
43282
43283 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
43284
43285 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
43286 tests.
43287
43288 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
43289
43290 * doc/contrib.texi: Add Jose E. Marchesi.
43291
43292 2023-01-25 Jakub Jelinek <jakub@redhat.com>
43293
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.
43300
43301 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
43302 Jakub Jelinek <jakub@redhat.com>
43303
43304 PR tree-optimization/108522
43305 * tree-object-size.cc (compute_object_offset): Use
43306 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
43307
43308 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
43309
43310 * config/xtensa/xtensa.md:
43311 Fix exit from loops detecting references before overwriting in the
43312 split pattern.
43313
43314 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
43315
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.
43320
43321 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
43322
43323 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
43324 of CPU version.
43325
43326 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
43327
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.
43332
43333 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
43334
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.
43339
43340 2023-01-24 Richard Biener <rguenther@suse.de>
43341
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.
43349
43350 2023-01-24 Eric Biggers <ebiggers@google.com>
43351
43352 PR bootstrap/90543
43353 * optc-save-gen.awk: Fix copy-and-paste error.
43354
43355 2023-01-24 Jakub Jelinek <jakub@redhat.com>
43356
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.
43361
43362 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43363
43364 PR target/108505
43365 * config.gcc (tm_file): Move the variable out of loop.
43366
43367 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
43368 Yang Yujie <yangyujie@loongson.cn>
43369
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.
43377
43378 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43379
43380 * doc/invoke.texi (-mbranch-protection): Update documentation.
43381
43382 2023-01-23 Richard Biener <rguenther@suse.de>
43383
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.
43391
43392 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43393
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.
43414
43415 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43416
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.
43423
43424 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43425
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.
43431
43432 2023-01-23 Richard Biener <rguenther@suse.de>
43433
43434 PR tree-optimization/108482
43435 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
43436 .LOOP_DIST_ALIAS calls.
43437
43438 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43439
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.
43456
43457 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43458
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.
43476
43477 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43478
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.
43494
43495 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43496
43497 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
43498 mbranch-protection.
43499
43500 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43501 Tejas Belagod <tbelagod@arm.com>
43502
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.
43505
43506 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43507 Tejas Belagod <tbelagod@arm.com>
43508 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43509
43510 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
43511 new pseudo register class _UVRSC_PAC.
43512
43513 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43514 Tejas Belagod <tbelagod@arm.com>
43515
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.
43519
43520 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43521 Tejas Belagod <tbelagod@arm.com>
43522
43523 * doc/sourcebuild.texi: Document arm_pacbti_hw.
43524
43525 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43526 Tejas Belagod <tbelagod@arm.com>
43527 Richard Earnshaw <Richard.Earnshaw@arm.com>
43528
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.
43533
43534 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43535 Tejas Belagod <tbelagod@arm.com>
43536
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.
43540
43541 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
43542 Tejas Belagod <tbelagod@arm.com>
43543
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.
43577
43578 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
43579
43580 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
43581
43582 2023-01-23 Richard Biener <rguenther@suse.de>
43583
43584 PR tree-optimization/108449
43585 * cgraphunit.cc (check_global_declaration): Do not turn
43586 undefined statics into externs.
43587
43588 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
43589
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.
43594
43595 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
43596
43597 * config/v850/v850.cc (v850_select_section): Put const volatile
43598 objects into read-only sections.
43599
43600 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
43601
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".
43605
43606 2023-01-20 Jakub Jelinek <jakub@redhat.com>
43607
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.
43612
43613 2023-01-19 Jakub Jelinek <jakub@redhat.com>
43614
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.
43621
43622 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
43623
43624 PR target/108436
43625 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
43626 invalid third argument to __builtin_ia32_prefetch.
43627
43628 2023-01-19 Jakub Jelinek <jakub@redhat.com>
43629
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.
43633
43634 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
43635
43636 PR target/108411
43637 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
43638 comment. Move assert about alignment a bit later.
43639
43640 2023-01-19 Jakub Jelinek <jakub@redhat.com>
43641
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.
43653
43654 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
43655
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.
43661
43662 2023-01-19 Alexandre Oliva <oliva@adacore.com>
43663
43664 PR debug/106746
43665 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
43666 within debug insns.
43667
43668 2023-01-18 Martin Jambor <mjambor@suse.cz>
43669
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.
43673
43674 2023-01-18 Richard Biener <rguenther@suse.de>
43675
43676 Revert:
43677 2022-12-16 Richard Biener <rguenther@suse.de>
43678
43679 PR middle-end/108086
43680 * tree-inline.cc (remap_ssa_name): Do not unshare the
43681 result from the decl_map.
43682
43683 2023-01-18 Murray Steele <murray.steele@arm.com>
43684
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.
43703
43704 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
43705
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.
43711
43712 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
43713 Andrew Pinski <apinski@marvell.com>
43714
43715 PR target/108396
43716 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
43717 vec_vsubcuqP with vec_vsubcuq.
43718
43719 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
43720
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.
43724
43725 2023-01-18 liuhongt <hongtao.liu@intel.com>
43726
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.
43733
43734 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
43735
43736 * config/bpf/bpf.cc (bpf_option_override): Disable
43737 -fstack-protector.
43738
43739 2023-01-17 Jakub Jelinek <jakub@redhat.com>
43740
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.
43746
43747 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
43748
43749 PR target/105980
43750 * config/i386/i386.cc (x86_output_mi_thunk): Disable
43751 -mforce-indirect-call for PIC in 32-bit mode.
43752
43753 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
43754
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.
43763
43764 2023-01-16 Jan Hubicka <jh@suse.cz>
43765
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.
43774
43775 2023-01-16 Richard Biener <rguenther@suse.de>
43776
43777 PR target/55522
43778 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
43779
43780 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
43781
43782 PR target/96795
43783 PR target/107515
43784 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
43785 (__ARM_mve_coerce3): Likewise.
43786
43787 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
43788
43789 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
43790
43791 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
43792
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.
43797
43798 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
43799
43800 * doc/sourcebuild.texi: Add missing target attributes.
43801
43802 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
43803
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.
43810
43811 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
43812
43813 * doc/extend.texi (Common Function Attributes): Fix grammar.
43814
43815 2023-01-16 Jakub Jelinek <jakub@redhat.com>
43816
43817 PR other/108413
43818 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
43819 * config/riscv/riscv-vsetvl.cc: Likewise.
43820
43821 2023-01-16 Jakub Jelinek <jakub@redhat.com>
43822
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.
43834
43835 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
43836
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.
43841
43842 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
43843
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.
43848
43849 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
43850
43851 * config.gcc (csky-*-*): Support --with-float=softfp.
43852
43853 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
43854
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.
43865
43866 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
43867
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.
43871
43872 2023-01-14 Alexandre Oliva <oliva@adacore.com>
43873
43874 * hash-table.h (is_deleted): Precheck !is_empty.
43875 (mark_deleted): Postcheck !is_empty.
43876 (copy constructor): Test is_empty before is_deleted.
43877
43878 2023-01-14 Alexandre Oliva <oliva@adacore.com>
43879
43880 PR target/40457
43881 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
43882 moves.
43883
43884 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
43885
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.
43889
43890 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
43891
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.
43906
43907 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
43908
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.
43913
43914 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
43915
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.
43920
43921 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
43922
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.
43929
43930 2023-01-13 Richard Biener <rguenther@suse.de>
43931
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.
43936
43937 2023-01-13 Richard Biener <rguenther@suse.de>
43938
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.
43946
43947 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
43948
43949 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
43950 function.
43951 (TARGET_DWARF_FRAME_REG_MODE): Define.
43952
43953 2023-01-13 Richard Biener <rguenther@suse.de>
43954
43955 PR target/107209
43956 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
43957 update EH info on the fly.
43958
43959 2023-01-13 Richard Biener <rguenther@suse.de>
43960
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.
43964
43965 2023-01-12 Andrew Pinski <apinski@marvell.com>
43966 Roger Sayle <roger@nextmovesoftware.com>
43967
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.
43972
43973 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
43974 Richard Sandiford <richard.sandiford@arm.com>
43975
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.
43983
43984 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
43985 Richard Sandiford <richard.sandiford@arm.com>
43986
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.
43995
43996 2023-01-12 Richard Biener <rguenther@suse.de>
43997
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.
44004
44005 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
44006
44007 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
44008 Rearrange the emitting codes.
44009
44010 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
44011
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.
44016
44017 2023-01-12 Alexandre Oliva <oliva@adacore.com>
44018
44019 * hash-table.h (expand): Check elements and deleted counts.
44020 (verify): Likewise.
44021
44022 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
44023
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).
44028
44029 2023-01-11 David Faust <david.faust@oracle.com>
44030
44031 PR target/108293
44032 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
44033 floating point modes.
44034
44035 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
44036
44037 PR tree-optimization/108199
44038 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
44039 for bit-field references.
44040
44041 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
44042
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.
44047
44048 2023-01-11 Richard Biener <rguenther@suse.de>
44049
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.
44056
44057 2023-01-11 Martin Liska <mliska@suse.cz>
44058
44059 PR middle-end/107976
44060 * params.opt: Limit JT params.
44061 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
44062
44063 2023-01-11 Richard Biener <rguenther@suse.de>
44064
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.
44074
44075 2023-01-11 Richard Biener <rguenther@suse.de>
44076
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.
44085
44086 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
44087
44088 * config/s390/s390.md (*not<mode>): New pattern.
44089
44090 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
44091
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.
44095
44096 2023-01-10 Richard Biener <rguenther@suse.de>
44097
44098 PR tree-optimization/106293
44099 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
44100 process degenerate PHI defs.
44101
44102 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
44103
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.
44107
44108 2023-01-10 Martin Jambor <mjambor@suse.cz>
44109
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.
44131
44132 2023-01-10 Richard Biener <rguenther@suse.de>
44133
44134 PR tree-optimization/108314
44135 * tree-vect-stmts.cc (vectorizable_condition): Do not
44136 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
44137
44138 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
44139
44140 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
44141
44142 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
44143
44144 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
44145
44146 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
44147
44148 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
44149 defines for soft float abi.
44150
44151 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
44152
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.
44160
44161 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
44162
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.
44166
44167 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
44168
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.
44173
44174 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
44175
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.
44179
44180 2023-01-09 Richard Biener <rguenther@suse.de>
44181
44182 PR middle-end/108209
44183 * genmatch.cc (commutative_op): Fix return value for
44184 user-id with non-commutative first replacement.
44185
44186 2023-01-09 Jakub Jelinek <jakub@redhat.com>
44187
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.
44192
44193 2023-01-09 Richard Biener <rguenther@suse.de>
44194
44195 PR middle-end/69482
44196 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
44197 qualified accesses also force objects to memory.
44198
44199 2023-01-09 Martin Liska <mliska@suse.cz>
44200
44201 PR lto/108330
44202 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
44203 NULL (deleleted value) to a hash_set.
44204
44205 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
44206
44207 * config/xtensa/xtensa.md (*splice_bits):
44208 New insn_and_split pattern.
44209
44210 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
44211
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.
44220
44221 2023-01-07 LIU Hao <lh_mouse@126.com>
44222
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.
44229
44230 2023-01-06 Joseph Myers <joseph@codesourcery.com>
44231
44232 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
44233 for handling real integer types.
44234
44235 2023-01-06 Tamar Christina <tamar.christina@arm.com>
44236
44237 Revert:
44238 2022-12-12 Tamar Christina <tamar.christina@arm.com>
44239
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.
44254
44255 2023-01-06 Martin Liska <mliska@suse.cz>
44256
44257 PR middle-end/107966
44258 * doc/options.texi: Fix Var documentation in internal manual.
44259
44260 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
44261
44262 Revert:
44263 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
44264
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.
44268
44269 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
44270
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.
44275
44276 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
44277
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.
44282
44283 2023-01-04 Jakub Jelinek <jakub@redhat.com>
44284
44285 PR tree-optimization/108253
44286 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
44287 types.
44288
44289 2023-01-04 Jakub Jelinek <jakub@redhat.com>
44290
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.
44296
44297 2023-01-04 Jakub Jelinek <jakub@redhat.com>
44298
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.
44304
44305 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
44306
44307 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
44308 * common/config/i386/i386-common.cc: Add Emeraldrapids.
44309
44310 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
44311
44312 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
44313 for meteorlake.
44314
44315 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
44316
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.
44326
44327 2023-01-03 Florian Weimer <fweimer@redhat.com>
44328
44329 Revert:
44330 2023-01-02 Florian Weimer <fweimer@redhat.com>
44331
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.
44345
44346 2023-01-03 Florian Weimer <fweimer@redhat.com>
44347
44348 Revert:
44349 2023-01-02 Florian Weimer <fweimer@redhat.com>
44350
44351 * debug.h (dwarf_reg_sizes_constant): Declare.
44352 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
44353
44354 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
44355
44356 PR tree-optimization/105043
44357 * doc/extend.texi (Object Size Checking): Split out into two
44358 subsections and mention _FORTIFY_SOURCE.
44359
44360 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
44361
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.
44365
44366 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
44367
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.
44372
44373 2023-01-03 Jakub Jelinek <jakub@redhat.com>
44374
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.
44379
44380 2023-01-03 Jakub Jelinek <jakub@redhat.com>
44381
44382 PR rtl-optimization/108263
44383 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
44384 asm goto to EXIT.
44385
44386 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
44387
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.
44417
44418 2023-01-02 Florian Weimer <fweimer@redhat.com>
44419
44420 * debug.h (dwarf_reg_sizes_constant): Declare.
44421 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
44422
44423 2023-01-02 Florian Weimer <fweimer@redhat.com>
44424
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.
44438
44439 2023-01-02 Jakub Jelinek <jakub@redhat.com>
44440
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.
44453
44454 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
44455 Uroš Bizjak <ubizjak@gmail.com>
44456
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.
44463
44464 \f
44465 Copyright (C) 2023 Free Software Foundation, Inc.
44466
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.